summaryrefslogtreecommitdiffstats
path: root/oox/source/drawingml
diff options
context:
space:
mode:
Diffstat (limited to 'oox/source/drawingml')
-rw-r--r--oox/source/drawingml/ThemeOverrideFragmentHandler.cxx47
-rw-r--r--oox/source/drawingml/chart/axiscontext.cxx298
-rw-r--r--oox/source/drawingml/chart/axisconverter.cxx437
-rw-r--r--oox/source/drawingml/chart/axismodel.cxx63
-rw-r--r--oox/source/drawingml/chart/chartcontextbase.cxx107
-rw-r--r--oox/source/drawingml/chart/chartconverter.cxx157
-rw-r--r--oox/source/drawingml/chart/chartdrawingfragment.cxx244
-rw-r--r--oox/source/drawingml/chart/chartspaceconverter.cxx308
-rw-r--r--oox/source/drawingml/chart/chartspacefragment.cxx124
-rw-r--r--oox/source/drawingml/chart/chartspacemodel.cxx41
-rw-r--r--oox/source/drawingml/chart/converterbase.cxx446
-rw-r--r--oox/source/drawingml/chart/datasourcecontext.cxx335
-rw-r--r--oox/source/drawingml/chart/datasourceconverter.cxx106
-rw-r--r--oox/source/drawingml/chart/datasourcemodel.cxx46
-rw-r--r--oox/source/drawingml/chart/datatablecontext.cxx68
-rw-r--r--oox/source/drawingml/chart/datatableconverter.cxx50
-rw-r--r--oox/source/drawingml/chart/modelbase.cxx54
-rw-r--r--oox/source/drawingml/chart/objectformatter.cxx1151
-rw-r--r--oox/source/drawingml/chart/plotareacontext.cxx175
-rw-r--r--oox/source/drawingml/chart/plotareaconverter.cxx481
-rw-r--r--oox/source/drawingml/chart/plotareamodel.cxx52
-rw-r--r--oox/source/drawingml/chart/seriescontext.cxx749
-rw-r--r--oox/source/drawingml/chart/seriesconverter.cxx920
-rw-r--r--oox/source/drawingml/chart/seriesmodel.cxx127
-rw-r--r--oox/source/drawingml/chart/titlecontext.cxx176
-rw-r--r--oox/source/drawingml/chart/titleconverter.cxx363
-rw-r--r--oox/source/drawingml/chart/titlemodel.cxx61
-rw-r--r--oox/source/drawingml/chart/typegroupcontext.cxx371
-rw-r--r--oox/source/drawingml/chart/typegroupconverter.cxx605
-rw-r--r--oox/source/drawingml/chart/typegroupmodel.cxx67
-rw-r--r--oox/source/drawingml/clrscheme.cxx125
-rw-r--r--oox/source/drawingml/clrschemecontext.cxx102
-rw-r--r--oox/source/drawingml/color.cxx873
-rw-r--r--oox/source/drawingml/colorchoicecontext.cxx178
-rw-r--r--oox/source/drawingml/connectorshapecontext.cxx128
-rw-r--r--oox/source/drawingml/customshapegeometry.cxx1296
-rw-r--r--oox/source/drawingml/customshapepresetdata.cxx974
-rw-r--r--oox/source/drawingml/customshapeproperties.cxx364
-rw-r--r--oox/source/drawingml/customshapes/README.md19
-rw-r--r--oox/source/drawingml/customshapes/cshape.pptxbin0 -> 48204 bytes
-rwxr-xr-xoox/source/drawingml/customshapes/generate.sh38
-rwxr-xr-xoox/source/drawingml/customshapes/generatePresetsData.pl74
-rwxr-xr-xoox/source/drawingml/customshapes/generatePresetsPPTXs.pl193
-rw-r--r--oox/source/drawingml/customshapes/oox-drawingml-cs-presets3179
-rw-r--r--oox/source/drawingml/customshapes/presetShapeDefinitions.xml19898
-rw-r--r--oox/source/drawingml/diagram/constraintlistcontext.cxx78
-rw-r--r--oox/source/drawingml/diagram/constraintlistcontext.hxx43
-rw-r--r--oox/source/drawingml/diagram/datamodel.cxx468
-rw-r--r--oox/source/drawingml/diagram/datamodel.hxx80
-rw-r--r--oox/source/drawingml/diagram/datamodelcontext.cxx385
-rw-r--r--oox/source/drawingml/diagram/datamodelcontext.hxx45
-rw-r--r--oox/source/drawingml/diagram/diagram.cxx444
-rw-r--r--oox/source/drawingml/diagram/diagram.hxx171
-rw-r--r--oox/source/drawingml/diagram/diagramdefinitioncontext.cxx99
-rw-r--r--oox/source/drawingml/diagram/diagramdefinitioncontext.hxx44
-rw-r--r--oox/source/drawingml/diagram/diagramfragmenthandler.cxx234
-rw-r--r--oox/source/drawingml/diagram/diagramfragmenthandler.hxx103
-rw-r--r--oox/source/drawingml/diagram/diagramhelper.cxx269
-rw-r--r--oox/source/drawingml/diagram/diagramhelper.hxx94
-rw-r--r--oox/source/drawingml/diagram/diagramlayoutatoms.cxx2047
-rw-r--r--oox/source/drawingml/diagram/diagramlayoutatoms.hxx372
-rw-r--r--oox/source/drawingml/diagram/layoutatomvisitorbase.cxx176
-rw-r--r--oox/source/drawingml/diagram/layoutatomvisitorbase.hxx98
-rw-r--r--oox/source/drawingml/diagram/layoutatomvisitors.cxx269
-rw-r--r--oox/source/drawingml/diagram/layoutatomvisitors.hxx96
-rw-r--r--oox/source/drawingml/diagram/layoutnodecontext.cxx309
-rw-r--r--oox/source/drawingml/diagram/layoutnodecontext.hxx43
-rw-r--r--oox/source/drawingml/diagram/rulelistcontext.cxx58
-rw-r--r--oox/source/drawingml/diagram/rulelistcontext.hxx42
-rw-r--r--oox/source/drawingml/drawingmltypes.cxx419
-rw-r--r--oox/source/drawingml/effectproperties.cxx132
-rw-r--r--oox/source/drawingml/effectproperties.hxx88
-rw-r--r--oox/source/drawingml/effectpropertiescontext.cxx133
-rw-r--r--oox/source/drawingml/embeddedwavaudiofile.cxx37
-rw-r--r--oox/source/drawingml/fillproperties.cxx1257
-rw-r--r--oox/source/drawingml/graphicshapecontext.cxx341
-rw-r--r--oox/source/drawingml/guidcontext.cxx40
-rw-r--r--oox/source/drawingml/hyperlinkcontext.cxx166
-rw-r--r--oox/source/drawingml/hyperlinkcontext.hxx48
-rw-r--r--oox/source/drawingml/lineproperties.cxx538
-rw-r--r--oox/source/drawingml/linepropertiescontext.cxx137
-rw-r--r--oox/source/drawingml/misccontexts.cxx386
-rw-r--r--oox/source/drawingml/objectdefaultcontext.cxx53
-rw-r--r--oox/source/drawingml/presetgeometrynames.cxx114
-rw-r--r--oox/source/drawingml/scene3dcontext.cxx189
-rw-r--r--oox/source/drawingml/shape.cxx2368
-rw-r--r--oox/source/drawingml/shape3dproperties.cxx392
-rw-r--r--oox/source/drawingml/shapecontext.cxx134
-rw-r--r--oox/source/drawingml/shapegroupcontext.cxx117
-rw-r--r--oox/source/drawingml/shapepropertiescontext.cxx103
-rw-r--r--oox/source/drawingml/shapepropertymap.cxx238
-rw-r--r--oox/source/drawingml/shapestylecontext.cxx70
-rw-r--r--oox/source/drawingml/spdefcontext.cxx62
-rw-r--r--oox/source/drawingml/table/predefined-table-styles.cxx975
-rw-r--r--oox/source/drawingml/table/tablebackgroundstylecontext.cxx74
-rw-r--r--oox/source/drawingml/table/tablecell.cxx578
-rw-r--r--oox/source/drawingml/table/tablecellcontext.cxx103
-rw-r--r--oox/source/drawingml/table/tablecontext.cxx98
-rw-r--r--oox/source/drawingml/table/tablepartstylecontext.cxx60
-rw-r--r--oox/source/drawingml/table/tableproperties.cxx216
-rw-r--r--oox/source/drawingml/table/tablerow.cxx35
-rw-r--r--oox/source/drawingml/table/tablerowcontext.cxx65
-rw-r--r--oox/source/drawingml/table/tablestyle.cxx27
-rw-r--r--oox/source/drawingml/table/tablestylecellstylecontext.cxx110
-rw-r--r--oox/source/drawingml/table/tablestylecontext.cxx89
-rw-r--r--oox/source/drawingml/table/tablestylelist.cxx30
-rw-r--r--oox/source/drawingml/table/tablestylelistfragmenthandler.cxx63
-rw-r--r--oox/source/drawingml/table/tablestylepart.cxx33
-rw-r--r--oox/source/drawingml/table/tablestyletextstylecontext.cxx98
-rw-r--r--oox/source/drawingml/textbody.cxx158
-rw-r--r--oox/source/drawingml/textbodycontext.cxx221
-rw-r--r--oox/source/drawingml/textbodyproperties.cxx190
-rw-r--r--oox/source/drawingml/textbodypropertiescontext.cxx220
-rw-r--r--oox/source/drawingml/textcharacterproperties.cxx248
-rw-r--r--oox/source/drawingml/textcharacterpropertiescontext.cxx334
-rw-r--r--oox/source/drawingml/texteffectscontext.cxx318
-rw-r--r--oox/source/drawingml/textfield.cxx274
-rw-r--r--oox/source/drawingml/textfieldcontext.cxx78
-rw-r--r--oox/source/drawingml/textfont.cxx96
-rw-r--r--oox/source/drawingml/textliststyle.cxx81
-rw-r--r--oox/source/drawingml/textliststylecontext.cxx78
-rw-r--r--oox/source/drawingml/textparagraph.cxx220
-rw-r--r--oox/source/drawingml/textparagraphproperties.cxx553
-rw-r--r--oox/source/drawingml/textparagraphpropertiescontext.cxx375
-rw-r--r--oox/source/drawingml/textrun.cxx190
-rw-r--r--oox/source/drawingml/textspacingcontext.cxx63
-rw-r--r--oox/source/drawingml/textspacingcontext.hxx44
-rw-r--r--oox/source/drawingml/texttabstoplistcontext.cxx73
-rw-r--r--oox/source/drawingml/texttabstoplistcontext.hxx48
-rw-r--r--oox/source/drawingml/theme.cxx122
-rw-r--r--oox/source/drawingml/themeelementscontext.cxx243
-rw-r--r--oox/source/drawingml/themefragmenthandler.cxx78
-rw-r--r--oox/source/drawingml/transform2dcontext.cxx129
133 files changed, 56387 insertions, 0 deletions
diff --git a/oox/source/drawingml/ThemeOverrideFragmentHandler.cxx b/oox/source/drawingml/ThemeOverrideFragmentHandler.cxx
new file mode 100644
index 000000000..1be56980c
--- /dev/null
+++ b/oox/source/drawingml/ThemeOverrideFragmentHandler.cxx
@@ -0,0 +1,47 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ */
+
+#include <drawingml/ThemeOverrideFragmentHandler.hxx>
+#include <oox/drawingml/theme.hxx>
+#include <oox/token/namespaces.hxx>
+#include <drawingml/themeelementscontext.hxx>
+
+using namespace ::oox::core;
+
+namespace oox::drawingml {
+
+ThemeOverrideFragmentHandler::ThemeOverrideFragmentHandler( XmlFilterBase& rFilter, const OUString& rFragmentPath, Theme& rTheme ) :
+ FragmentHandler2( rFilter, rFragmentPath ),
+ mrTheme( rTheme )
+{
+}
+
+ThemeOverrideFragmentHandler::~ThemeOverrideFragmentHandler()
+{
+}
+
+ContextHandlerRef ThemeOverrideFragmentHandler::onCreateContext( sal_Int32 nElement, const AttributeList& )
+{
+ // CT_OfficeStyleSheet
+ switch( getCurrentElement() )
+ {
+ case XML_ROOT_CONTEXT:
+ switch( nElement )
+ {
+ case A_TOKEN( themeOverride ): // CT_BaseStylesOverride
+ return new ThemeElementsContext( *this, mrTheme );
+ }
+ break;
+ }
+ return nullptr;
+}
+
+} // namespace oox::drawingml
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/oox/source/drawingml/chart/axiscontext.cxx b/oox/source/drawingml/chart/axiscontext.cxx
new file mode 100644
index 000000000..b90857785
--- /dev/null
+++ b/oox/source/drawingml/chart/axiscontext.cxx
@@ -0,0 +1,298 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ *
+ * This file incorporates work covered by the following license notice:
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed
+ * with this work for additional information regarding copyright
+ * ownership. The ASF licenses this file to you under the Apache
+ * License, Version 2.0 (the "License"); you may not use this file
+ * except in compliance with the License. You may obtain a copy of
+ * the License at http://www.apache.org/licenses/LICENSE-2.0 .
+ */
+
+#include <drawingml/chart/axiscontext.hxx>
+
+#include <drawingml/shapepropertiescontext.hxx>
+#include <drawingml/textbodycontext.hxx>
+#include <drawingml/chart/axismodel.hxx>
+#include <drawingml/chart/titlecontext.hxx>
+#include <oox/core/xmlfilterbase.hxx>
+#include <oox/helper/attributelist.hxx>
+#include <oox/token/namespaces.hxx>
+#include <oox/token/tokens.hxx>
+
+namespace oox::drawingml::chart {
+
+using ::oox::core::ContextHandlerRef;
+using ::oox::core::ContextHandler2Helper;
+
+AxisDispUnitsContext::AxisDispUnitsContext( ContextHandler2Helper& rParent, AxisDispUnitsModel& rModel ) :
+ ContextBase< AxisDispUnitsModel >( rParent, rModel )
+{
+}
+
+AxisDispUnitsContext::~AxisDispUnitsContext()
+{
+}
+
+ContextHandlerRef AxisDispUnitsContext::onCreateContext( sal_Int32 nElement, const AttributeList& rAttribs )
+{
+ switch( getCurrentElement() )
+ {
+ case C_TOKEN( dispUnits ):
+ switch( nElement )
+ {
+ case C_TOKEN( builtInUnit ):
+ mrModel.mnBuiltInUnit = rAttribs.getString( XML_val, "thousands" );
+ return nullptr;
+ case C_TOKEN( custUnit ):
+ mrModel.mfCustomUnit = rAttribs.getDouble( XML_val, 0.0 );
+ return nullptr;
+ case C_TOKEN( dispUnitsLbl ):
+ return this;
+ }
+ break;
+
+ case C_TOKEN( dispUnitsLbl ):
+ switch( nElement )
+ {
+ case C_TOKEN( layout ):
+ return new LayoutContext( *this, mrModel.mxLayout.create() );
+ case C_TOKEN( spPr ):
+ return new ShapePropertiesContext( *this, mrModel.mxShapeProp.create() );
+ case C_TOKEN( tx ):
+ return new TextContext( *this, mrModel.mxText.create() );
+ case C_TOKEN( txPr ):
+ return new TextBodyContext( *this, mrModel.mxTextProp.create() );
+ }
+ break;
+ }
+ return nullptr;
+}
+
+AxisContextBase::AxisContextBase( ContextHandler2Helper& rParent, AxisModel& rModel ) :
+ ContextBase< AxisModel >( rParent, rModel )
+{
+}
+
+AxisContextBase::~AxisContextBase()
+{
+}
+
+ContextHandlerRef AxisContextBase::onCreateContext( sal_Int32 nElement, const AttributeList& rAttribs )
+{
+ bool bMSO2007Doc = getFilter().isMSO2007Document();
+ switch( getCurrentElement() )
+ {
+ case C_TOKEN( catAx ):
+ case C_TOKEN( dateAx ):
+ case C_TOKEN( serAx ):
+ case C_TOKEN( valAx ):
+ switch( nElement )
+ {
+ case C_TOKEN( axId ):
+ mrModel.mnAxisId = rAttribs.getInteger( XML_val, -1 );
+ return nullptr;
+ case C_TOKEN( crossAx ):
+ mrModel.mnCrossAxisId = rAttribs.getInteger( XML_val, -1 );
+ return nullptr;
+ case C_TOKEN( crosses ):
+ mrModel.mnCrossMode = rAttribs.getToken( XML_val, XML_autoZero );
+ return nullptr;
+ case C_TOKEN( crossesAt ):
+ mrModel.mofCrossesAt = rAttribs.getDouble( XML_val, 0.0 );
+ return nullptr;
+ case C_TOKEN( delete ):
+ mrModel.mbDeleted = rAttribs.getBool( XML_val, !bMSO2007Doc );
+ return nullptr;
+ case C_TOKEN( majorGridlines ):
+ return new ShapePrWrapperContext( *this, mrModel.mxMajorGridLines.create() );
+ case C_TOKEN( majorTickMark ):
+ mrModel.mnMajorTickMark = rAttribs.getToken( XML_val, bMSO2007Doc ? XML_out : XML_cross );
+ return nullptr;
+ case C_TOKEN(axPos):
+ mrModel.mnAxisPos = rAttribs.getToken( XML_val, XML_TOKEN_INVALID );
+ return nullptr;
+ case C_TOKEN( minorGridlines ):
+ return new ShapePrWrapperContext( *this, mrModel.mxMinorGridLines.create() );
+ case C_TOKEN( minorTickMark ):
+ mrModel.mnMinorTickMark = rAttribs.getToken( XML_val, bMSO2007Doc ? XML_none : XML_cross );
+ return nullptr;
+ case C_TOKEN( numFmt ):
+ mrModel.maNumberFormat.setAttributes( rAttribs );
+ return nullptr;
+ case C_TOKEN( scaling ):
+ return this;
+ case C_TOKEN( spPr ):
+ return new ShapePropertiesContext( *this, mrModel.mxShapeProp.create() );
+ case C_TOKEN( tickLblPos ):
+ mrModel.mnTickLabelPos = rAttribs.getToken( XML_val, XML_nextTo );
+ return nullptr;
+ case C_TOKEN( title ):
+ {
+ bool bVerticalDefault = mrModel.mnAxisPos == XML_l || mrModel.mnAxisPos == XML_r;
+ sal_Int32 nDefaultRotation = bVerticalDefault ? -5400000 : 0;
+ return new TitleContext( *this, mrModel.mxTitle.create(nDefaultRotation) );
+ }
+ case C_TOKEN( txPr ):
+ return new TextBodyContext( *this, mrModel.mxTextProp.create() );
+ }
+ break;
+
+ case C_TOKEN( scaling ):
+ switch( nElement )
+ {
+ case C_TOKEN( logBase ):
+ mrModel.mofLogBase = rAttribs.getDouble( XML_val, 0.0 );
+ return nullptr;
+ case C_TOKEN( max ):
+ mrModel.mofMax = rAttribs.getDouble( XML_val, 0.0 );
+ return nullptr;
+ case C_TOKEN( min ):
+ mrModel.mofMin = rAttribs.getDouble( XML_val, 0.0 );
+ return nullptr;
+ case C_TOKEN( orientation ):
+ mrModel.mnOrientation = rAttribs.getToken( XML_val, XML_minMax );
+ return nullptr;
+ }
+ break;
+ }
+ return nullptr;
+}
+
+CatAxisContext::CatAxisContext( ContextHandler2Helper& rParent, AxisModel& rModel ) :
+ AxisContextBase( rParent, rModel )
+{
+}
+
+CatAxisContext::~CatAxisContext()
+{
+}
+
+ContextHandlerRef CatAxisContext::onCreateContext( sal_Int32 nElement, const AttributeList& rAttribs )
+{
+ bool bMSO2007Doc = getFilter().isMSO2007Document();
+ if( isRootElement() ) switch( nElement )
+ {
+ case C_TOKEN( auto ):
+ mrModel.mbAuto = rAttribs.getBool( XML_val, !bMSO2007Doc );
+ return nullptr;
+ case C_TOKEN( lblAlgn ):
+ mrModel.mnLabelAlign = rAttribs.getToken( XML_val, XML_ctr );
+ return nullptr;
+ case C_TOKEN( lblOffset ):
+ mrModel.mnLabelOffset = rAttribs.getInteger( XML_val, 100 );
+ return nullptr;
+ case C_TOKEN( noMultiLvlLbl ):
+ mrModel.mbNoMultiLevel = rAttribs.getBool( XML_val, !bMSO2007Doc );
+ return nullptr;
+ case C_TOKEN( tickLblSkip ):
+ mrModel.mnTickLabelSkip = rAttribs.getInteger( XML_val, 0 );
+ return nullptr;
+ case C_TOKEN( tickMarkSkip ):
+ mrModel.mnTickMarkSkip = rAttribs.getInteger( XML_val, 0 );
+ return nullptr;
+ }
+ return AxisContextBase::onCreateContext( nElement, rAttribs );
+}
+
+DateAxisContext::DateAxisContext( ContextHandler2Helper& rParent, AxisModel& rModel ) :
+ AxisContextBase( rParent, rModel )
+{
+}
+
+DateAxisContext::~DateAxisContext()
+{
+}
+
+ContextHandlerRef DateAxisContext::onCreateContext( sal_Int32 nElement, const AttributeList& rAttribs )
+{
+ bool bMSO2007Doc = getFilter().isMSO2007Document();
+ if( isRootElement() ) switch( nElement )
+ {
+ case C_TOKEN( auto ):
+ mrModel.mbAuto = rAttribs.getBool( XML_val, !bMSO2007Doc );
+ return nullptr;
+ case C_TOKEN( baseTimeUnit ):
+ mrModel.monBaseTimeUnit = rAttribs.getToken( XML_val, XML_days );
+ return nullptr;
+ case C_TOKEN( lblOffset ):
+ mrModel.mnLabelOffset = rAttribs.getInteger( XML_val, 100 );
+ return nullptr;
+ case C_TOKEN( majorTimeUnit ):
+ mrModel.mnMajorTimeUnit = rAttribs.getToken( XML_val, XML_days );
+ return nullptr;
+ case C_TOKEN( majorUnit ):
+ mrModel.mofMajorUnit = rAttribs.getDouble( XML_val, 0.0 );
+ return nullptr;
+ case C_TOKEN( minorTimeUnit ):
+ mrModel.mnMinorTimeUnit = rAttribs.getToken( XML_val, XML_days );
+ return nullptr;
+ case C_TOKEN( minorUnit ):
+ mrModel.mofMinorUnit = rAttribs.getDouble( XML_val, 0.0 );
+ return nullptr;
+ }
+ return AxisContextBase::onCreateContext( nElement, rAttribs );
+}
+
+SerAxisContext::SerAxisContext( ContextHandler2Helper& rParent, AxisModel& rModel ) :
+ AxisContextBase( rParent, rModel )
+{
+}
+
+SerAxisContext::~SerAxisContext()
+{
+}
+
+ContextHandlerRef SerAxisContext::onCreateContext( sal_Int32 nElement, const AttributeList& rAttribs )
+{
+ if( isRootElement() ) switch( nElement )
+ {
+ case C_TOKEN( tickLblSkip ):
+ mrModel.mnTickLabelSkip = rAttribs.getInteger( XML_val, 0 );
+ return nullptr;
+ case C_TOKEN( tickMarkSkip ):
+ mrModel.mnTickMarkSkip = rAttribs.getInteger( XML_val, 0 );
+ return nullptr;
+ }
+ return AxisContextBase::onCreateContext( nElement, rAttribs );
+}
+
+ValAxisContext::ValAxisContext( ContextHandler2Helper& rParent, AxisModel& rModel ) :
+ AxisContextBase( rParent, rModel )
+{
+}
+
+ValAxisContext::~ValAxisContext()
+{
+}
+
+ContextHandlerRef ValAxisContext::onCreateContext( sal_Int32 nElement, const AttributeList& rAttribs )
+{
+ if( isRootElement() ) switch( nElement )
+ {
+ case C_TOKEN( crossBetween ):
+ mrModel.mnCrossBetween = rAttribs.getToken( XML_val, -1 );
+ return nullptr;
+ case C_TOKEN( dispUnits ):
+ return new AxisDispUnitsContext( *this, mrModel.mxDispUnits.create() );
+ case C_TOKEN( majorUnit ):
+ mrModel.mofMajorUnit = rAttribs.getDouble( XML_val, 0.0 );
+ return nullptr;
+ case C_TOKEN( minorUnit ):
+ mrModel.mofMinorUnit = rAttribs.getDouble( XML_val, 0.0 );
+ return nullptr;
+ }
+ return AxisContextBase::onCreateContext( nElement, rAttribs );
+}
+
+} // namespace oox::drawingml::chart
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/oox/source/drawingml/chart/axisconverter.cxx b/oox/source/drawingml/chart/axisconverter.cxx
new file mode 100644
index 000000000..a8ccc6cdf
--- /dev/null
+++ b/oox/source/drawingml/chart/axisconverter.cxx
@@ -0,0 +1,437 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ *
+ * This file incorporates work covered by the following license notice:
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed
+ * with this work for additional information regarding copyright
+ * ownership. The ASF licenses this file to you under the Apache
+ * License, Version 2.0 (the "License"); you may not use this file
+ * except in compliance with the License. You may obtain a copy of
+ * the License at http://www.apache.org/licenses/LICENSE-2.0 .
+ */
+
+#include <drawingml/chart/axisconverter.hxx>
+#include <ooxresid.hxx>
+#include <strings.hrc>
+
+#include <com/sun/star/chart/ChartAxisArrangeOrderType.hpp>
+#include <com/sun/star/chart/ChartAxisLabelPosition.hpp>
+#include <com/sun/star/chart/ChartAxisMarkPosition.hpp>
+#include <com/sun/star/chart/ChartAxisPosition.hpp>
+#include <com/sun/star/chart/TimeInterval.hpp>
+#include <com/sun/star/chart/TimeUnit.hpp>
+#include <com/sun/star/chart2/AxisType.hpp>
+#include <com/sun/star/chart2/TickmarkStyle.hpp>
+#include <com/sun/star/chart2/LinearScaling.hpp>
+#include <com/sun/star/chart2/LogarithmicScaling.hpp>
+#include <com/sun/star/chart2/XAxis.hpp>
+#include <com/sun/star/chart2/XCoordinateSystem.hpp>
+#include <com/sun/star/chart2/XTitled.hpp>
+#include <drawingml/chart/axismodel.hxx>
+#include <drawingml/chart/titleconverter.hxx>
+#include <drawingml/chart/typegroupconverter.hxx>
+#include <drawingml/lineproperties.hxx>
+#include <drawingml/textbody.hxx>
+#include <oox/token/namespaces.hxx>
+#include <oox/token/properties.hxx>
+#include <oox/token/tokens.hxx>
+#include <comphelper/processfactory.hxx>
+#include <osl/diagnose.h>
+
+namespace oox::drawingml::chart {
+
+using namespace ::com::sun::star::beans;
+using namespace ::com::sun::star::chart2;
+using namespace ::com::sun::star::uno;
+
+namespace {
+
+void lclSetValueOrClearAny( Any& orAny, const OptValue< double >& rofValue )
+{
+ if( rofValue.has() ) orAny <<= rofValue.get(); else orAny.clear();
+}
+
+bool lclIsLogarithmicScale( const AxisModel& rAxisModel )
+{
+ return rAxisModel.mofLogBase.has() && (2.0 <= rAxisModel.mofLogBase.get()) && (rAxisModel.mofLogBase.get() <= 1000.0);
+}
+
+sal_Int32 lclGetApiTimeUnit( sal_Int32 nTimeUnit )
+{
+ using namespace ::com::sun::star::chart;
+ switch( nTimeUnit )
+ {
+ case XML_days: return TimeUnit::DAY;
+ case XML_months: return TimeUnit::MONTH;
+ case XML_years: return TimeUnit::YEAR;
+ default: OSL_ENSURE( false, "lclGetApiTimeUnit - unexpected time unit" );
+ }
+ return TimeUnit::DAY;
+}
+
+void lclConvertTimeInterval( Any& orInterval, const OptValue< double >& rofUnit, sal_Int32 nTimeUnit )
+{
+ if( rofUnit.has() && (1.0 <= rofUnit.get()) && (rofUnit.get() <= SAL_MAX_INT32) )
+ orInterval <<= css::chart::TimeInterval( static_cast< sal_Int32 >( rofUnit.get() ), lclGetApiTimeUnit( nTimeUnit ) );
+ else
+ orInterval.clear();
+}
+
+css::chart::ChartAxisLabelPosition lclGetLabelPosition( sal_Int32 nToken )
+{
+ using namespace ::com::sun::star::chart;
+ switch( nToken )
+ {
+ case XML_high: return ChartAxisLabelPosition_OUTSIDE_END;
+ case XML_low: return ChartAxisLabelPosition_OUTSIDE_START;
+ case XML_nextTo: return ChartAxisLabelPosition_NEAR_AXIS;
+ }
+ return ChartAxisLabelPosition_NEAR_AXIS;
+}
+
+sal_Int32 lclGetTickMark( sal_Int32 nToken )
+{
+ using namespace ::com::sun::star::chart2::TickmarkStyle;
+ switch( nToken )
+ {
+ case XML_in: return INNER;
+ case XML_out: return OUTER;
+ case XML_cross: return INNER | OUTER;
+ }
+ return css::chart2::TickmarkStyle::NONE;
+}
+
+/**
+ * The groups is of percent type only when all of its members are of percent
+ * type.
+ */
+bool isPercent( const RefVector<TypeGroupConverter>& rTypeGroups )
+{
+ if (rTypeGroups.empty())
+ return false;
+
+ for (auto const& typeGroup : rTypeGroups)
+ {
+ TypeGroupConverter& rConv = *typeGroup;
+ if (!rConv.isPercent())
+ return false;
+ }
+
+ return true;
+}
+
+} // namespace
+
+AxisConverter::AxisConverter( const ConverterRoot& rParent, AxisModel& rModel ) :
+ ConverterBase< AxisModel >( rParent, rModel )
+{
+}
+
+AxisConverter::~AxisConverter()
+{
+}
+
+void AxisConverter::convertFromModel(const Reference<XCoordinateSystem>& rxCoordSystem,
+ RefVector<TypeGroupConverter>& rTypeGroups,
+ const AxisModel* pCrossingAxis, sal_Int32 nAxesSetIdx,
+ sal_Int32 nAxisIdx, bool bUseFixedInnerSize)
+{
+ if (rTypeGroups.empty())
+ return;
+
+ Reference< XAxis > xAxis;
+ try
+ {
+ namespace cssc = ::com::sun::star::chart;
+ namespace cssc2 = ::com::sun::star::chart2;
+
+ const TypeGroupInfo& rTypeInfo = rTypeGroups.front()->getTypeInfo();
+ ObjectFormatter& rFormatter = getFormatter();
+
+ // create the axis object (always)
+ xAxis.set( createInstance( "com.sun.star.chart2.Axis" ), UNO_QUERY_THROW );
+ PropertySet aAxisProp( xAxis );
+ // #i58688# axis enabled
+ aAxisProp.setProperty( PROP_Show, !mrModel.mbDeleted );
+
+ // axis line, tick, and gridline properties ---------------------------
+
+ // show axis labels
+ aAxisProp.setProperty( PROP_DisplayLabels, mrModel.mnTickLabelPos != XML_none );
+ aAxisProp.setProperty( PROP_LabelPosition, lclGetLabelPosition( mrModel.mnTickLabelPos ) );
+ // no X axis line in radar charts
+ if( (nAxisIdx == API_X_AXIS) && (rTypeInfo.meTypeCategory == TYPECATEGORY_RADAR) )
+ mrModel.mxShapeProp.getOrCreate().getLineProperties().maLineFill.moFillType = XML_noFill;
+ // axis line and tick label formatting
+ rFormatter.convertFormatting( aAxisProp, mrModel.mxShapeProp, mrModel.mxTextProp, OBJECTTYPE_AXIS );
+ // tick label rotation
+ ObjectFormatter::convertTextRotation( aAxisProp, mrModel.mxTextProp, true );
+
+ // tick mark style
+ aAxisProp.setProperty( PROP_MajorTickmarks, lclGetTickMark( mrModel.mnMajorTickMark ) );
+ aAxisProp.setProperty( PROP_MinorTickmarks, lclGetTickMark( mrModel.mnMinorTickMark ) );
+ aAxisProp.setProperty( PROP_MarkPosition, cssc::ChartAxisMarkPosition_AT_AXIS );
+
+ // main grid
+ PropertySet aGridProp( xAxis->getGridProperties() );
+ aGridProp.setProperty( PROP_Show, mrModel.mxMajorGridLines.is() );
+ if( mrModel.mxMajorGridLines.is() )
+ rFormatter.convertFrameFormatting( aGridProp, mrModel.mxMajorGridLines, OBJECTTYPE_MAJORGRIDLINE );
+
+ // sub grid
+ Sequence< Reference< XPropertySet > > aSubGridPropSeq = xAxis->getSubGridProperties();
+ if( aSubGridPropSeq.hasElements() )
+ {
+ PropertySet aSubGridProp( aSubGridPropSeq[ 0 ] );
+ aSubGridProp.setProperty( PROP_Show, mrModel.mxMinorGridLines.is() );
+ if( mrModel.mxMinorGridLines.is() )
+ rFormatter.convertFrameFormatting( aSubGridProp, mrModel.mxMinorGridLines, OBJECTTYPE_MINORGRIDLINE );
+ }
+
+ // axis type and X axis categories ------------------------------------
+
+ ScaleData aScaleData = xAxis->getScaleData();
+ // set axis type
+ switch( nAxisIdx )
+ {
+ case API_X_AXIS:
+ if( rTypeInfo.mbCategoryAxis )
+ {
+ OSL_ENSURE( (mrModel.mnTypeId == C_TOKEN( catAx )) || (mrModel.mnTypeId == C_TOKEN( dateAx )),
+ "AxisConverter::convertFromModel - unexpected axis model type (must: c:catAx or c:dateAx)" );
+ bool bDateAxis = mrModel.mnTypeId == C_TOKEN( dateAx );
+ // tdf#132076: set axis type to date, if it is a date axis!
+ aScaleData.AxisType = bDateAxis ? cssc2::AxisType::DATE : cssc2::AxisType::CATEGORY;
+ aScaleData.AutoDateAxis = mrModel.mbAuto;
+ /* TODO: create main category axis labels once, while InternalDataProvider
+ can not handle different category names on the primary and secondary category axis. */
+ if( nAxesSetIdx == 0 )
+ aScaleData.Categories = rTypeGroups.front()->createCategorySequence();
+ /* set default ShiftedCategoryPosition values for some charttype,
+ because the XML can contain wrong CrossBetween value, if came from MSO */
+ if( rTypeGroups.front()->is3dChart() && (rTypeInfo.meTypeId == TYPEID_BAR || rTypeInfo.meTypeId == TYPEID_HORBAR || rTypeInfo.meTypeId == TYPEID_STOCK) )
+ aScaleData.ShiftedCategoryPosition = true;
+ else if( rTypeInfo.meTypeId == TYPEID_RADARLINE || rTypeInfo.meTypeId == TYPEID_RADARAREA )
+ aScaleData.ShiftedCategoryPosition = false;
+ else if( pCrossingAxis->mnCrossBetween != -1 ) /*because of backwards compatibility*/
+ aScaleData.ShiftedCategoryPosition = pCrossingAxis->mnCrossBetween == XML_between;
+ else if( rTypeInfo.meTypeCategory == TYPECATEGORY_BAR || rTypeInfo.meTypeId == TYPEID_LINE || rTypeInfo.meTypeId == TYPEID_STOCK )
+ aScaleData.ShiftedCategoryPosition = true;
+ }
+ else
+ {
+ OSL_ENSURE( mrModel.mnTypeId == C_TOKEN( valAx ), "AxisConverter::convertFromModel - unexpected axis model type (must: c:valAx)" );
+ aScaleData.AxisType = cssc2::AxisType::REALNUMBER;
+ }
+ break;
+ case API_Y_AXIS:
+ OSL_ENSURE( mrModel.mnTypeId == C_TOKEN( valAx ), "AxisConverter::convertFromModel - unexpected axis model type (must: c:valAx)" );
+ aScaleData.AxisType = isPercent(rTypeGroups) ? cssc2::AxisType::PERCENT : cssc2::AxisType::REALNUMBER;
+ break;
+ case API_Z_AXIS:
+ OSL_ENSURE( mrModel.mnTypeId == C_TOKEN( serAx ), "AxisConverter::convertFromModel - unexpected axis model type (must: c:serAx)" );
+ OSL_ENSURE( rTypeGroups.front()->isDeep3dChart(), "AxisConverter::convertFromModel - series axis not supported by this chart type" );
+ aScaleData.AxisType = cssc2::AxisType::SERIES;
+ break;
+ }
+
+ // axis scaling and increment -----------------------------------------
+
+ switch( aScaleData.AxisType )
+ {
+ case cssc2::AxisType::CATEGORY:
+ case cssc2::AxisType::SERIES:
+ case cssc2::AxisType::DATE:
+ {
+ /* Determine date axis type from XML type identifier, and not
+ via aScaleData.AxisType, as this value sticks to CATEGORY
+ for automatic category/date axes). */
+ if( mrModel.mnTypeId == C_TOKEN( dateAx ) )
+ {
+ // scaling algorithm
+ aScaleData.Scaling = LinearScaling::create( comphelper::getProcessComponentContext() );
+ // min/max
+ lclSetValueOrClearAny( aScaleData.Minimum, mrModel.mofMin );
+ lclSetValueOrClearAny( aScaleData.Maximum, mrModel.mofMax );
+ // major/minor increment
+ lclConvertTimeInterval( aScaleData.TimeIncrement.MajorTimeInterval, mrModel.mofMajorUnit, mrModel.mnMajorTimeUnit );
+ lclConvertTimeInterval( aScaleData.TimeIncrement.MinorTimeInterval, mrModel.mofMinorUnit, mrModel.mnMinorTimeUnit );
+ // base time unit
+ if( mrModel.monBaseTimeUnit.has() )
+ aScaleData.TimeIncrement.TimeResolution <<= lclGetApiTimeUnit( mrModel.monBaseTimeUnit.get() );
+ else
+ aScaleData.TimeIncrement.TimeResolution.clear();
+ }
+ else
+ {
+ // do not overlap text unless the rotation is 0 in xml
+ bool bTextOverlap = false;
+ if (mrModel.mxTextProp.is()
+ && mrModel.mxTextProp->getTextProperties().moRotation.has())
+ bTextOverlap
+ = mrModel.mxTextProp->getTextProperties().moRotation.get() == 0;
+ aAxisProp.setProperty(PROP_TextOverlap, bTextOverlap);
+ /* do not break text into several lines unless the rotation is 0 degree,
+ or the rotation is 90 degree and the inner size of the chart is not fixed,
+ or the rotation is 270 degree and the inner size of the chart is not fixed */
+ bool bTextBreak = true;
+ double fRotationAngle = 0.0;
+ if (aAxisProp.getProperty(fRotationAngle, PROP_TextRotation)
+ && fRotationAngle != 0.0)
+ bTextBreak = !bUseFixedInnerSize
+ && (fRotationAngle == 90.0 || fRotationAngle == 270.0);
+ aAxisProp.setProperty(PROP_TextBreak, bTextBreak);
+ // do not stagger labels in two lines
+ aAxisProp.setProperty( PROP_ArrangeOrder, cssc::ChartAxisArrangeOrderType_SIDE_BY_SIDE );
+ //! TODO #i58731# show n-th category
+ }
+ }
+ break;
+ case cssc2::AxisType::REALNUMBER:
+ case cssc2::AxisType::PERCENT:
+ {
+ // scaling algorithm
+ const bool bLogScale = lclIsLogarithmicScale( mrModel );
+ if( bLogScale )
+ aScaleData.Scaling = LogarithmicScaling::create( comphelper::getProcessComponentContext() );
+ else
+ aScaleData.Scaling = LinearScaling::create( comphelper::getProcessComponentContext() );
+ // min/max
+ lclSetValueOrClearAny( aScaleData.Minimum, mrModel.mofMin );
+ lclSetValueOrClearAny( aScaleData.Maximum, mrModel.mofMax );
+ // major increment
+ IncrementData& rIncrementData = aScaleData.IncrementData;
+ if( mrModel.mofMajorUnit.has() && aScaleData.Scaling.is() )
+ rIncrementData.Distance <<= aScaleData.Scaling->doScaling( mrModel.mofMajorUnit.get() );
+ else
+ lclSetValueOrClearAny( rIncrementData.Distance, mrModel.mofMajorUnit );
+ // minor increment
+ Sequence< SubIncrement >& rSubIncrementSeq = rIncrementData.SubIncrements;
+ rSubIncrementSeq.realloc( 1 );
+ Any& rIntervalCount = rSubIncrementSeq.getArray()[ 0 ].IntervalCount;
+ rIntervalCount.clear();
+ if( bLogScale )
+ {
+ if( mrModel.mofMinorUnit.has() )
+ rIntervalCount <<= sal_Int32( 9 );
+ }
+ else if( mrModel.mofMajorUnit.has() && mrModel.mofMinorUnit.has() && (0.0 < mrModel.mofMinorUnit.get()) && (mrModel.mofMinorUnit.get() <= mrModel.mofMajorUnit.get()) )
+ {
+ double fCount = mrModel.mofMajorUnit.get() / mrModel.mofMinorUnit.get() + 0.5;
+ if( (1.0 <= fCount) && (fCount < 1001.0) )
+ rIntervalCount <<= static_cast< sal_Int32 >( fCount );
+ }
+ else if( !mrModel.mofMinorUnit.has() )
+ {
+ // tdf#114168 If minor unit is not set then set interval to 5, as MS Excel do.
+ rIntervalCount <<= static_cast< sal_Int32 >( 5 );
+ }
+ }
+ break;
+ default:
+ OSL_FAIL( "AxisConverter::convertFromModel - unknown axis type" );
+ }
+
+ /* Do not set a value to the Origin member anymore (already done via
+ new axis properties 'CrossoverPosition' and 'CrossoverValue'). */
+ aScaleData.Origin.clear();
+
+ // axis orientation ---------------------------------------------------
+
+ // #i85167# pie/donut charts need opposite direction at Y axis
+ // #i87747# radar charts need opposite direction at X axis
+ bool bMirrorDirection =
+ ((nAxisIdx == API_Y_AXIS) && (rTypeInfo.meTypeCategory == TYPECATEGORY_PIE)) ||
+ ((nAxisIdx == API_X_AXIS) && (rTypeInfo.meTypeCategory == TYPECATEGORY_RADAR));
+ bool bReverse = (mrModel.mnOrientation == XML_maxMin) != bMirrorDirection;
+ aScaleData.Orientation = bReverse ? cssc2::AxisOrientation_REVERSE : cssc2::AxisOrientation_MATHEMATICAL;
+
+ // write back scaling data
+ xAxis->setScaleData( aScaleData );
+
+ // number format ------------------------------------------------------
+ if( !mrModel.mbDeleted && aScaleData.AxisType != cssc2::AxisType::SERIES )
+ {
+ getFormatter().convertNumberFormat(aAxisProp, mrModel.maNumberFormat, true);
+ }
+
+ // position of crossing axis ------------------------------------------
+
+ bool bManualCrossing = mrModel.mofCrossesAt.has();
+ cssc::ChartAxisPosition eAxisPos = cssc::ChartAxisPosition_VALUE;
+ if( !bManualCrossing ) switch( mrModel.mnCrossMode )
+ {
+ case XML_min: eAxisPos = cssc::ChartAxisPosition_START; break;
+ case XML_max: eAxisPos = cssc::ChartAxisPosition_END; break;
+ case XML_autoZero: eAxisPos = cssc::ChartAxisPosition_ZERO; break;
+ }
+
+ aAxisProp.setProperty( PROP_CrossoverPosition, eAxisPos );
+
+ // calculate automatic origin depending on scaling mode of crossing axis
+ bool bCrossingLogScale = pCrossingAxis && lclIsLogarithmicScale( *pCrossingAxis );
+ double fCrossingPos = bManualCrossing ? mrModel.mofCrossesAt.get() : (bCrossingLogScale ? 1.0 : 0.0);
+ aAxisProp.setProperty( PROP_CrossoverValue, fCrossingPos );
+
+ // axis title ---------------------------------------------------------
+
+ // in radar charts, title objects may exist, but are not shown
+ if( mrModel.mxTitle.is() && (rTypeGroups.front()->getTypeInfo().meTypeCategory != TYPECATEGORY_RADAR) )
+ {
+ Reference< XTitled > xTitled( xAxis, UNO_QUERY_THROW );
+ if (((nAxisIdx == API_X_AXIS && rTypeInfo.meTypeId != TYPEID_HORBAR)
+ || (nAxisIdx == API_Y_AXIS && rTypeInfo.meTypeId == TYPEID_HORBAR))
+ && (mrModel.mnAxisPos == XML_l || mrModel.mnAxisPos == XML_r))
+ mrModel.mxTitle->mnDefaultRotation = 0;
+ TitleConverter aTitleConv( *this, *mrModel.mxTitle );
+ aTitleConv.convertFromModel( xTitled, OoxResId(STR_DIAGRAM_AXISTITLE), OBJECTTYPE_AXISTITLE, nAxesSetIdx, nAxisIdx );
+ }
+
+ // axis data unit label -----------------------------------------------
+ AxisDispUnitsConverter axisDispUnitsConverter (*this, mrModel.mxDispUnits.getOrCreate());
+ axisDispUnitsConverter.convertFromModel(xAxis);
+ }
+ catch( Exception& )
+ {
+ }
+
+ if( xAxis.is() && rxCoordSystem.is() ) try
+ {
+ // insert axis into coordinate system
+ rxCoordSystem->setAxisByDimension( nAxisIdx, xAxis, nAxesSetIdx );
+ }
+ catch( Exception& )
+ {
+ OSL_FAIL( "AxisConverter::convertFromModel - cannot insert axis into coordinate system" );
+ }
+}
+
+AxisDispUnitsConverter::AxisDispUnitsConverter( const ConverterRoot& rParent, AxisDispUnitsModel& rModel ) :
+ ConverterBase< AxisDispUnitsModel >( rParent, rModel )
+{
+}
+
+AxisDispUnitsConverter::~AxisDispUnitsConverter()
+{
+}
+
+void AxisDispUnitsConverter::convertFromModel( const Reference< XAxis >& rxAxis )
+{
+ PropertySet aPropSet( rxAxis );
+ if (!mrModel.mnBuiltInUnit.isEmpty() )
+ {
+ aPropSet.setProperty(PROP_DisplayUnits, true);
+ aPropSet.setProperty( PROP_BuiltInUnit, mrModel.mnBuiltInUnit );
+ }
+}
+
+} // namespace oox::drawingml::chart
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/oox/source/drawingml/chart/axismodel.cxx b/oox/source/drawingml/chart/axismodel.cxx
new file mode 100644
index 000000000..0159810df
--- /dev/null
+++ b/oox/source/drawingml/chart/axismodel.cxx
@@ -0,0 +1,63 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ *
+ * This file incorporates work covered by the following license notice:
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed
+ * with this work for additional information regarding copyright
+ * ownership. The ASF licenses this file to you under the Apache
+ * License, Version 2.0 (the "License"); you may not use this file
+ * except in compliance with the License. You may obtain a copy of
+ * the License at http://www.apache.org/licenses/LICENSE-2.0 .
+ */
+
+#include <drawingml/chart/axismodel.hxx>
+#include <oox/token/tokens.hxx>
+
+namespace oox::drawingml::chart {
+
+AxisDispUnitsModel::AxisDispUnitsModel() :
+ mfCustomUnit( 0.0 )
+{
+}
+
+AxisDispUnitsModel::~AxisDispUnitsModel()
+{
+}
+
+AxisModel::AxisModel( sal_Int32 nTypeId, bool bMSO2007Doc ) :
+ mnAxisId( -1 ),
+ mnAxisPos( XML_TOKEN_INVALID ),
+ mnCrossAxisId( -1 ),
+ mnCrossBetween( -1 ),
+ mnCrossMode( XML_autoZero ),
+ mnLabelAlign( XML_ctr ),
+ mnLabelOffset( 100 ),
+ mnMajorTickMark( bMSO2007Doc ? XML_out : XML_cross ),
+ mnMajorTimeUnit( XML_days ),
+ mnMinorTickMark( bMSO2007Doc ? XML_none : XML_cross ),
+ mnMinorTimeUnit( XML_days ),
+ mnOrientation( XML_minMax ),
+ mnTickLabelPos( XML_nextTo ),
+ mnTickLabelSkip( 0 ),
+ mnTickMarkSkip( 0 ),
+ mnTypeId( nTypeId ),
+ mbAuto( false ),
+ mbDeleted( false ),
+ mbNoMultiLevel( false )
+{
+}
+
+AxisModel::~AxisModel()
+{
+}
+
+} // namespace oox::drawingml::chart
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/oox/source/drawingml/chart/chartcontextbase.cxx b/oox/source/drawingml/chart/chartcontextbase.cxx
new file mode 100644
index 000000000..5423c52b3
--- /dev/null
+++ b/oox/source/drawingml/chart/chartcontextbase.cxx
@@ -0,0 +1,107 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ *
+ * This file incorporates work covered by the following license notice:
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed
+ * with this work for additional information regarding copyright
+ * ownership. The ASF licenses this file to you under the Apache
+ * License, Version 2.0 (the "License"); you may not use this file
+ * except in compliance with the License. You may obtain a copy of
+ * the License at http://www.apache.org/licenses/LICENSE-2.0 .
+ */
+
+#include <drawingml/chart/chartcontextbase.hxx>
+
+#include <oox/drawingml/chart/modelbase.hxx>
+#include <oox/helper/attributelist.hxx>
+#include <oox/token/namespaces.hxx>
+#include <oox/token/tokens.hxx>
+#include <drawingml/shapepropertiescontext.hxx>
+
+namespace oox::drawingml::chart {
+
+using ::oox::core::ContextHandler2Helper;
+using ::oox::core::ContextHandlerRef;
+
+ShapePrWrapperContext::ShapePrWrapperContext( ContextHandler2Helper& rParent, Shape& rModel ) :
+ ContextBase< Shape >( rParent, rModel )
+{
+}
+
+ShapePrWrapperContext::~ShapePrWrapperContext()
+{
+}
+
+ContextHandlerRef ShapePrWrapperContext::onCreateContext( sal_Int32 nElement, const AttributeList& )
+{
+ return (isRootElement() && (nElement == C_TOKEN( spPr ))) ? new ShapePropertiesContext( *this, mrModel ) : nullptr;
+}
+
+LayoutContext::LayoutContext( ContextHandler2Helper& rParent, LayoutModel& rModel ) :
+ ContextBase< LayoutModel >( rParent, rModel )
+{
+}
+
+LayoutContext::~LayoutContext()
+{
+}
+
+ContextHandlerRef LayoutContext::onCreateContext( sal_Int32 nElement, const AttributeList& rAttribs )
+{
+ switch( getCurrentElement() )
+ {
+ case C_TOKEN( layout ):
+ switch( nElement )
+ {
+ case C_TOKEN( manualLayout ):
+ mrModel.mbAutoLayout = false;
+ return this;
+ }
+ break;
+
+ case C_TOKEN( manualLayout ):
+ switch( nElement )
+ {
+ case C_TOKEN( x ):
+ mrModel.mfX = rAttribs.getDouble( XML_val, 0.0 );
+ return nullptr;
+ case C_TOKEN( y ):
+ mrModel.mfY = rAttribs.getDouble( XML_val, 0.0 );
+ return nullptr;
+ case C_TOKEN( w ):
+ mrModel.mfW = rAttribs.getDouble( XML_val, 0.0 );
+ return nullptr;
+ case C_TOKEN( h ):
+ mrModel.mfH = rAttribs.getDouble( XML_val, 0.0 );
+ return nullptr;
+ case C_TOKEN( xMode ):
+ mrModel.mnXMode = rAttribs.getToken( XML_val, XML_factor );
+ return nullptr;
+ case C_TOKEN( yMode ):
+ mrModel.mnYMode = rAttribs.getToken( XML_val, XML_factor );
+ return nullptr;
+ case C_TOKEN( wMode ):
+ mrModel.mnWMode = rAttribs.getToken( XML_val, XML_factor );
+ return nullptr;
+ case C_TOKEN( hMode ):
+ mrModel.mnHMode = rAttribs.getToken( XML_val, XML_factor );
+ return nullptr;
+ case C_TOKEN( layoutTarget ):
+ mrModel.mnTarget = rAttribs.getToken( XML_val, XML_outer );
+ return nullptr;
+ }
+ break;
+ }
+ return nullptr;
+}
+
+} // namespace oox::drawingml::chart
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/oox/source/drawingml/chart/chartconverter.cxx b/oox/source/drawingml/chart/chartconverter.cxx
new file mode 100644
index 000000000..e3b2abe6b
--- /dev/null
+++ b/oox/source/drawingml/chart/chartconverter.cxx
@@ -0,0 +1,157 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ *
+ * This file incorporates work covered by the following license notice:
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed
+ * with this work for additional information regarding copyright
+ * ownership. The ASF licenses this file to you under the Apache
+ * License, Version 2.0 (the "License"); you may not use this file
+ * except in compliance with the License. You may obtain a copy of
+ * the License at http://www.apache.org/licenses/LICENSE-2.0 .
+ */
+
+#include <oox/drawingml/chart/chartconverter.hxx>
+
+#include <com/sun/star/chart2/XChartDocument.hpp>
+#include <com/sun/star/chart2/data/XDataReceiver.hpp>
+#include <com/sun/star/util/XNumberFormatsSupplier.hpp>
+#include <drawingml/chart/chartspaceconverter.hxx>
+#include <drawingml/chart/chartspacemodel.hxx>
+#include <oox/helper/containerhelper.hxx>
+#include <oox/core/xmlfilterbase.hxx>
+#include <osl/diagnose.h>
+
+using ::oox::drawingml::chart::DataSequenceModel;
+using ::com::sun::star::uno::Any;
+namespace oox::drawingml::chart {
+
+using namespace ::com::sun::star;
+using namespace ::com::sun::star::chart2;
+using namespace ::com::sun::star::chart2::data;
+using namespace ::com::sun::star::drawing;
+using namespace ::com::sun::star::uno;
+
+using ::oox::core::XmlFilterBase;
+
+const sal_Unicode API_TOKEN_ARRAY_OPEN = '{';
+const sal_Unicode API_TOKEN_ARRAY_CLOSE = '}';
+const sal_Unicode API_TOKEN_ARRAY_COLSEP = ';';
+
+// Code similar to oox/source/xls/formulabase.cxx
+static OUString lclGenerateApiString( const OUString& rString )
+{
+ OUString aRetString = rString;
+ sal_Int32 nQuotePos = aRetString.getLength();
+ while( (nQuotePos = aRetString.lastIndexOf( '"', nQuotePos )) >= 0 )
+ aRetString = aRetString.replaceAt( nQuotePos, 1, u"\"\"" );
+ return "\"" + aRetString + "\"";
+}
+
+static OUString lclGenerateApiArray(const std::vector<Any>& rRow, sal_Int32 nStart, sal_Int32 nCount)
+{
+ OSL_ENSURE( !rRow.empty(), "ChartConverter::lclGenerateApiArray - missing matrix values" );
+ OUStringBuffer aBuffer;
+ aBuffer.append( API_TOKEN_ARRAY_OPEN );
+ for (auto aBeg = rRow.begin() + nStart, aIt = aBeg, aEnd = aBeg + nCount; aIt != aEnd; ++aIt)
+ {
+ double fValue = 0.0;
+ OUString aString;
+ if( aIt != aBeg )
+ aBuffer.append( API_TOKEN_ARRAY_COLSEP );
+ if( *aIt >>= fValue )
+ aBuffer.append( fValue );
+ else if( *aIt >>= aString )
+ aBuffer.append( lclGenerateApiString( aString ) );
+ else
+ aBuffer.append( "\"\"" );
+ }
+ aBuffer.append( API_TOKEN_ARRAY_CLOSE );
+ return aBuffer.makeStringAndClear();
+}
+
+ChartConverter::ChartConverter()
+{
+}
+
+ChartConverter::~ChartConverter()
+{
+}
+
+void ChartConverter::convertFromModel( XmlFilterBase& rFilter,
+ ChartSpaceModel& rChartModel, const Reference< XChartDocument >& rxChartDoc,
+ const Reference< XShapes >& rxExternalPage, const awt::Point& rChartPos, const awt::Size& rChartSize )
+{
+ OSL_ENSURE( rxChartDoc.is(), "ChartConverter::convertFromModel - missing chart document" );
+ if( rxChartDoc.is() )
+ {
+ Reference< data::XDataReceiver > xDataReceiver( rxChartDoc, uno::UNO_QUERY_THROW );
+ Reference< util::XNumberFormatsSupplier > xNumberFormatsSupplier( rFilter.getModel(), uno::UNO_QUERY );
+ if (xNumberFormatsSupplier.is())
+ xDataReceiver->attachNumberFormatsSupplier( xNumberFormatsSupplier );
+
+ ConverterRoot aConvBase( rFilter, *this, rChartModel, rxChartDoc, rChartSize );
+ ChartSpaceConverter aSpaceConv( aConvBase, rChartModel );
+ aSpaceConv.convertFromModel( rxExternalPage, rChartPos );
+ }
+}
+
+void ChartConverter::createDataProvider( const Reference< XChartDocument >& rxChartDoc )
+{
+ try
+ {
+ if( !rxChartDoc->hasInternalDataProvider() )
+ rxChartDoc->createInternalDataProvider( false );
+ }
+ catch( Exception& )
+ {
+ }
+}
+
+Reference< XDataSequence > ChartConverter::createDataSequence(
+ const Reference< XDataProvider >& rxDataProvider, const DataSequenceModel& rDataSeq,
+ const OUString& rRole, const OUString& rRoleQualifier )
+{
+ Reference< XDataSequence > xDataSeq;
+ if( rxDataProvider.is() )
+ {
+ OUString aRangeRep;
+ if( !rDataSeq.maData.empty() || (rRole == "values-y" && rDataSeq.mnPointCount > 0) ) try
+ {
+ // create a single-row array from constant source data
+ // (multiple levels in the case of complex categories)
+ std::vector<Any> aRow(rDataSeq.mnLevelCount * rDataSeq.mnPointCount);
+ for (auto const& elem : rDataSeq.maData)
+ aRow.at(elem.first) = elem.second;
+
+ for (sal_Int32 i = rDataSeq.mnLevelCount-1; i >= 0; i--)
+ {
+ aRangeRep = lclGenerateApiArray( aRow, i * rDataSeq.mnPointCount, rDataSeq.mnPointCount);
+
+ if (!aRangeRep.isEmpty())
+ {
+ // create or add a new level to the data sequence
+ xDataSeq = rxDataProvider->createDataSequenceByValueArray(rRole, aRangeRep, rRoleQualifier);
+ if (i == 0)
+ return xDataSeq;
+ }
+ }
+ }
+ catch( Exception& )
+ {
+ OSL_FAIL( "ChartConverter::createDataSequence - cannot create data sequence" );
+ }
+ }
+
+ return nullptr;
+}
+
+} // namespace oox::drawingml::chart
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/oox/source/drawingml/chart/chartdrawingfragment.cxx b/oox/source/drawingml/chart/chartdrawingfragment.cxx
new file mode 100644
index 000000000..b9977c933
--- /dev/null
+++ b/oox/source/drawingml/chart/chartdrawingfragment.cxx
@@ -0,0 +1,244 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ *
+ * This file incorporates work covered by the following license notice:
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed
+ * with this work for additional information regarding copyright
+ * ownership. The ASF licenses this file to you under the Apache
+ * License, Version 2.0 (the "License"); you may not use this file
+ * except in compliance with the License. You may obtain a copy of
+ * the License at http://www.apache.org/licenses/LICENSE-2.0 .
+ */
+
+#include <drawingml/chart/chartdrawingfragment.hxx>
+
+#include <osl/diagnose.h>
+
+#include <basegfx/matrix/b2dhommatrix.hxx>
+#include <com/sun/star/awt/Rectangle.hpp>
+#include <oox/core/xmlfilterbase.hxx>
+#include <oox/drawingml/connectorshapecontext.hxx>
+#include <oox/drawingml/graphicshapecontext.hxx>
+#include <oox/drawingml/shapecontext.hxx>
+#include <oox/drawingml/shapegroupcontext.hxx>
+#include <oox/helper/attributelist.hxx>
+#include <oox/token/namespaces.hxx>
+#include <oox/token/tokens.hxx>
+#include <o3tl/string_view.hxx>
+
+namespace oox::drawingml::chart {
+
+using namespace ::com::sun::star;
+using namespace ::com::sun::star::drawing;
+using namespace ::com::sun::star::uno;
+using namespace ::oox::core;
+
+ShapeAnchor::ShapeAnchor( bool bRelSize ) :
+ mbRelSize( bRelSize )
+{
+}
+
+void ShapeAnchor::importExt( const AttributeList& rAttribs )
+{
+ OSL_ENSURE( !mbRelSize, "ShapeAnchor::importExt - unexpected 'cdr:ext' element" );
+ maSize.Width = rAttribs.getHyper( XML_cx, 0 );
+ maSize.Height = rAttribs.getHyper( XML_cy, 0 );
+}
+
+void ShapeAnchor::setPos( sal_Int32 nElement, sal_Int32 nParentContext, std::u16string_view rValue )
+{
+ AnchorPosModel* pAnchorPos = nullptr;
+ switch( nParentContext )
+ {
+ case CDR_TOKEN( from ):
+ pAnchorPos = &maFrom;
+ break;
+ case CDR_TOKEN( to ):
+ OSL_ENSURE( mbRelSize, "ShapeAnchor::setPos - unexpected 'cdr:to' element" );
+ pAnchorPos = &maTo;
+ break;
+ default:
+ OSL_FAIL( "ShapeAnchor::setPos - unexpected parent element" );
+ }
+ if( pAnchorPos ) switch( nElement )
+ {
+ case CDR_TOKEN( x ): pAnchorPos->mfX = o3tl::toDouble(rValue); break;
+ case CDR_TOKEN( y ): pAnchorPos->mfY = o3tl::toDouble(rValue); break;
+ default: OSL_FAIL( "ShapeAnchor::setPos - unexpected element" );
+ }
+}
+
+EmuRectangle ShapeAnchor::calcAnchorRectEmu( const EmuRectangle& rChartRect ) const
+{
+ EmuRectangle aAnchorRect( -1, -1, -1, -1 );
+
+ OSL_ENSURE( maFrom.isValid(), "ShapeAnchor::calcAnchorRectEmu - invalid from position" );
+ OSL_ENSURE( mbRelSize ? maTo.isValid() : maSize.isValid(), "ShapeAnchor::calcAnchorRectEmu - invalid to/size" );
+ if( maFrom.isValid() && (mbRelSize ? maTo.isValid() : maSize.isValid()) )
+ {
+ // calculate shape position
+ aAnchorRect.X = static_cast< sal_Int64 >( maFrom.mfX * rChartRect.Width + 0.5 );
+ aAnchorRect.Y = static_cast< sal_Int64 >( maFrom.mfY * rChartRect.Height + 0.5 );
+
+ // calculate shape size
+ if( mbRelSize )
+ {
+ aAnchorRect.Width = static_cast< sal_Int64 >( maTo.mfX * rChartRect.Width + 0.5 ) - aAnchorRect.X;
+ if( aAnchorRect.Width < 0 )
+ {
+ aAnchorRect.X += aAnchorRect.Width;
+ aAnchorRect.Width *= -1;
+ }
+ aAnchorRect.Height = static_cast< sal_Int64 >( maTo.mfY * rChartRect.Height + 0.5 ) - aAnchorRect.Y;
+ if( aAnchorRect.Height < 0 )
+ {
+ aAnchorRect.Y += aAnchorRect.Height;
+ aAnchorRect.Height *= -1;
+ }
+ }
+ else
+ {
+ aAnchorRect.setSize( maSize );
+ }
+ }
+
+ return aAnchorRect;
+}
+
+ChartDrawingFragment::ChartDrawingFragment( XmlFilterBase& rFilter,
+ const OUString& rFragmentPath, const Reference< XShapes >& rxDrawPage,
+ const awt::Size& rChartSize, const awt::Point& rShapesOffset, bool bOleSupport ) :
+ FragmentHandler2( rFilter, rFragmentPath ),
+ mxDrawPage( rxDrawPage ),
+ mbOleSupport( bOleSupport )
+{
+ maChartRectEmu.X = convertHmmToEmu( rShapesOffset.X );
+ maChartRectEmu.Y = convertHmmToEmu( rShapesOffset.Y );
+ maChartRectEmu.Width = convertHmmToEmu( rChartSize.Width );
+ maChartRectEmu.Height = convertHmmToEmu( rChartSize.Height );
+}
+
+ChartDrawingFragment::~ChartDrawingFragment()
+{
+}
+
+ContextHandlerRef ChartDrawingFragment::onCreateContext( sal_Int32 nElement, const AttributeList& rAttribs )
+{
+ switch( getCurrentElement() )
+ {
+ case XML_ROOT_CONTEXT:
+ if( nElement == C_TOKEN( userShapes ) ) return this;
+ break;
+
+ case C_TOKEN( userShapes ):
+ switch( nElement )
+ {
+ case CDR_TOKEN( absSizeAnchor ):
+ mxAnchor = std::make_shared<ShapeAnchor>( false );
+ return this;
+ case CDR_TOKEN( relSizeAnchor ):
+ mxAnchor = std::make_shared<ShapeAnchor>( true );
+ return this;
+ }
+ break;
+
+ case CDR_TOKEN( absSizeAnchor ):
+ case CDR_TOKEN( relSizeAnchor ):
+ switch( nElement )
+ {
+ case CDR_TOKEN( sp ):
+ mxShape = std::make_shared<Shape>( "com.sun.star.drawing.CustomShape" );
+ return new ShapeContext( *this, ShapePtr(), mxShape );
+ case CDR_TOKEN( cxnSp ):
+ mxShape = std::make_shared<Shape>( "com.sun.star.drawing.ConnectorShape" );
+ return new ConnectorShapeContext(*this, ShapePtr(), mxShape,
+ mxShape->getConnectorShapeProperties());
+ case CDR_TOKEN( pic ):
+ mxShape = std::make_shared<Shape>( "com.sun.star.drawing.GraphicObjectShape" );
+ return new GraphicShapeContext( *this, ShapePtr(), mxShape );
+ case CDR_TOKEN( graphicFrame ):
+ if( !mbOleSupport )
+ return nullptr;
+ mxShape = std::make_shared<Shape>( "com.sun.star.drawing.GraphicObjectShape" );
+ return new GraphicalObjectFrameContext( *this, ShapePtr(), mxShape, true );
+ case CDR_TOKEN( grpSp ):
+ mxShape = std::make_shared<Shape>( "com.sun.star.drawing.GroupShape" );
+ return new ShapeGroupContext( *this, ShapePtr(), mxShape );
+
+ case CDR_TOKEN( from ):
+ case CDR_TOKEN( to ):
+ return this;
+
+ case CDR_TOKEN( ext ):
+ if( mxAnchor ) mxAnchor->importExt( rAttribs );
+ return nullptr;
+ }
+ break;
+
+ case CDR_TOKEN( from ):
+ case CDR_TOKEN( to ):
+ switch( nElement )
+ {
+ case CDR_TOKEN( x ):
+ case CDR_TOKEN( y ):
+ return this; // collect value in onEndElement()
+ }
+ break;
+ }
+ return nullptr;
+}
+
+void ChartDrawingFragment::onCharacters( const OUString& rChars )
+{
+ if( isCurrentElement( CDR_TOKEN( x ), CDR_TOKEN( y ) ) && mxAnchor )
+ mxAnchor->setPos( getCurrentElement(), getParentElement(), rChars );
+}
+
+void ChartDrawingFragment::onEndElement()
+{
+ if( !isCurrentElement( CDR_TOKEN( absSizeAnchor ), CDR_TOKEN( relSizeAnchor ) ) )
+ return;
+
+ if( mxDrawPage.is() && mxShape && mxAnchor )
+ {
+ EmuRectangle aShapeRectEmu = mxAnchor->calcAnchorRectEmu( maChartRectEmu );
+ if( (aShapeRectEmu.X >= 0) && (aShapeRectEmu.Y >= 0) && (aShapeRectEmu.Width >= 0) && (aShapeRectEmu.Height >= 0) )
+ {
+ const sal_Int32 aRotation = mxShape->getRotation();
+ if( (aRotation >= 45 * PER_DEGREE && aRotation < 135 * PER_DEGREE) || (aRotation >= 225 * PER_DEGREE && aRotation < 315 * PER_DEGREE) )
+ {
+ sal_Int64 nHalfWidth = aShapeRectEmu.Width / 2;
+ sal_Int64 nHalfHeight = aShapeRectEmu.Height / 2;
+ aShapeRectEmu.X = aShapeRectEmu.X + nHalfWidth - nHalfHeight;
+ aShapeRectEmu.Y = aShapeRectEmu.Y + nHalfHeight - nHalfWidth;
+ std::swap(aShapeRectEmu.Width, aShapeRectEmu.Height);
+ }
+ // TODO: DrawingML implementation expects 32-bit coordinates for EMU rectangles (change that to EmuRectangle)
+ awt::Rectangle aShapeRectEmu32(
+ getLimitedValue< sal_Int32, sal_Int64 >( aShapeRectEmu.X, 0, SAL_MAX_INT32 ),
+ getLimitedValue< sal_Int32, sal_Int64 >( aShapeRectEmu.Y, 0, SAL_MAX_INT32 ),
+ getLimitedValue< sal_Int32, sal_Int64 >( aShapeRectEmu.Width, 0, SAL_MAX_INT32 ),
+ getLimitedValue< sal_Int32, sal_Int64 >( aShapeRectEmu.Height, 0, SAL_MAX_INT32 ) );
+
+ // Set the position and size before calling addShape().
+ mxShape->setPosition(awt::Point(aShapeRectEmu32.X, aShapeRectEmu32.Y));
+ mxShape->setSize(awt::Size(aShapeRectEmu32.Width, aShapeRectEmu32.Height));
+
+ basegfx::B2DHomMatrix aMatrix;
+ mxShape->addShape( getFilter(), getFilter().getCurrentTheme(), mxDrawPage, aMatrix, mxShape->getFillProperties() );
+ }
+ }
+ mxShape.reset();
+ mxAnchor.reset();
+}
+
+} // namespace oox::drawingml::chart
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/oox/source/drawingml/chart/chartspaceconverter.cxx b/oox/source/drawingml/chart/chartspaceconverter.cxx
new file mode 100644
index 000000000..774d784a6
--- /dev/null
+++ b/oox/source/drawingml/chart/chartspaceconverter.cxx
@@ -0,0 +1,308 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ *
+ * This file incorporates work covered by the following license notice:
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed
+ * with this work for additional information regarding copyright
+ * ownership. The ASF licenses this file to you under the Apache
+ * License, Version 2.0 (the "License"); you may not use this file
+ * except in compliance with the License. You may obtain a copy of
+ * the License at http://www.apache.org/licenses/LICENSE-2.0 .
+ */
+
+#include <drawingml/chart/chartspaceconverter.hxx>
+
+#include <com/sun/star/chart/MissingValueTreatment.hpp>
+#include <com/sun/star/chart/XChartDocument.hpp>
+#include <com/sun/star/chart2/XChartDocument.hpp>
+#include <com/sun/star/chart2/XChartType.hpp>
+#include <com/sun/star/chart2/XChartTypeContainer.hpp>
+#include <com/sun/star/chart2/XCoordinateSystemContainer.hpp>
+#include <com/sun/star/chart2/XDataSeriesContainer.hpp>
+#include <com/sun/star/chart2/XTitled.hpp>
+#include <com/sun/star/drawing/XDrawPageSupplier.hpp>
+#include <oox/core/xmlfilterbase.hxx>
+#include <oox/drawingml/chart/chartconverter.hxx>
+#include <oox/token/properties.hxx>
+#include <oox/token/tokens.hxx>
+#include <drawingml/chart/chartdrawingfragment.hxx>
+#include <drawingml/chart/chartspacemodel.hxx>
+#include <drawingml/chart/plotareaconverter.hxx>
+#include <drawingml/chart/titleconverter.hxx>
+#include <ooxresid.hxx>
+#include <strings.hrc>
+
+using namespace ::com::sun::star;
+using ::com::sun::star::uno::Reference;
+using ::com::sun::star::uno::Exception;
+using ::com::sun::star::uno::UNO_QUERY;
+using ::com::sun::star::uno::UNO_QUERY_THROW;
+using ::com::sun::star::uno::Any;
+using ::com::sun::star::drawing::XDrawPageSupplier;
+using ::com::sun::star::drawing::XShapes;
+using ::com::sun::star::chart2::XDiagram;
+using ::com::sun::star::chart2::XTitled;
+
+namespace oox::drawingml::chart {
+
+using namespace ::com::sun::star::awt;
+using namespace ::com::sun::star::chart2;
+using namespace ::com::sun::star::chart2::data;
+using namespace ::com::sun::star::drawing;
+using namespace ::com::sun::star::uno;
+using namespace ::com::sun::star::util;
+
+ChartSpaceConverter::ChartSpaceConverter( const ConverterRoot& rParent, ChartSpaceModel& rModel ) :
+ ConverterBase< ChartSpaceModel >( rParent, rModel )
+{
+}
+
+ChartSpaceConverter::~ChartSpaceConverter()
+{
+}
+
+// Formulas with no numeric values and strings are zeroes in OOXML line charts also in the mode DispBlanksAs=gap,
+// unlike in OpenDocument LEAVE_GAP mode. As a workaround, we will use the OpenDocument mode USE_ZERO, if the OOXML
+// line chart has got formulas with no numeric values and strings, but it doesn't have empty cells, showing the
+// same chart as in MSO. (Empty cells need gaps, so in that case, we cannot use this workaround).
+static bool lcl_useWorkaroundForNoGapInOOXML( Reference< chart2::XChartDocument > const & xChartDoc)
+{
+ Reference <chart2::XDiagram > xDiagram = xChartDoc->getFirstDiagram();
+ if ( !xDiagram.is() )
+ return false;
+
+ Reference< chart2::XCoordinateSystemContainer > xCooSysContainer( xDiagram, UNO_QUERY_THROW );
+
+ Sequence< Reference< chart2::XCoordinateSystem > > xCooSysSequence( xCooSysContainer->getCoordinateSystems());
+ if ( !xCooSysSequence.hasElements() )
+ return false;
+
+ Reference< chart2::XChartTypeContainer > xChartTypeContainer( xCooSysSequence[0], UNO_QUERY_THROW );
+
+ Sequence< Reference< chart2::XChartType > > xChartTypeSequence( xChartTypeContainer->getChartTypes() );
+ if ( !xChartTypeSequence.hasElements() )
+ return false;
+
+ const Reference<chart2::XChartType>& xCT = xChartTypeSequence[0];
+
+ if ( xCT->getChartType() != "com.sun.star.chart2.LineChartType" )
+ return false;
+
+ Reference<chart2::XDataSeriesContainer> xDSCont(xCT, uno::UNO_QUERY);
+
+ if (!xDSCont.is())
+ return false;
+
+ const Sequence<uno::Reference<chart2::XDataSeries> > aDataSeriesSeq = xDSCont->getDataSeries();
+
+ bool bHasNoGapBlankValue = false;
+ bool bHasEmptyCell = false;
+
+ for (const auto& rDataSeries : aDataSeriesSeq)
+ {
+ uno::Reference<chart2::data::XDataSource> xDSrc(rDataSeries, uno::UNO_QUERY);
+ if (!xDSrc.is())
+ return false;
+
+ const uno::Sequence<Reference<chart2::data::XLabeledDataSequence> > aDataSeqs = xDSrc->getDataSequences();
+ for (const auto& rDataSeq : aDataSeqs)
+ {
+ Reference<chart2::data::XDataSequence> xValues = rDataSeq->getValues();
+ if(!xValues.is())
+ return false;
+ Reference<beans::XPropertySet> xPropSet(xValues, uno::UNO_QUERY);
+ if (!xPropSet.is())
+ continue;
+
+ OUString aRoleName;
+ xPropSet->getPropertyValue("Role") >>= aRoleName;
+ if (aRoleName == "values-y")
+ {
+ const uno::Sequence<uno::Any> aData = xValues->getData();
+ for (const auto& rVal : aData)
+ {
+ double fVal;
+ OUString sStr;
+ if (rVal >>= fVal)
+ continue;
+ else if (rVal >>= sStr)
+ bHasNoGapBlankValue = true;
+ else
+ bHasEmptyCell = true;
+ }
+ }
+ }
+ }
+
+ return bHasNoGapBlankValue && !bHasEmptyCell;
+}
+
+void ChartSpaceConverter::convertFromModel( const Reference< XShapes >& rxExternalPage, const awt::Point& rChartPos )
+{
+ /* create data provider (virtual function in the ChartConverter class,
+ derived converters may create an external data provider) */
+ getChartConverter().createDataProvider( getChartDocument() );
+
+ // formatting of the chart background. The default fill style varies with applications.
+ PropertySet aBackPropSet( getChartDocument()->getPageBackground() );
+ getFormatter().convertFrameFormatting( aBackPropSet, mrModel.mxShapeProp, OBJECTTYPE_CHARTSPACE );
+
+ bool bMSO2007Doc = getFilter().isMSO2007Document();
+ // convert plot area (container of all chart type groups)
+ PlotAreaConverter aPlotAreaConv( *this, mrModel.mxPlotArea.getOrCreate() );
+ aPlotAreaConv.convertFromModel( mrModel.mxView3D.getOrCreate(bMSO2007Doc) );
+
+ // plot area converter has created the diagram object
+ Reference< XDiagram > xDiagram = getChartDocument()->getFirstDiagram();
+
+ // convert wall and floor formatting in 3D charts
+ if( xDiagram.is() && aPlotAreaConv.isWall3dChart() )
+ {
+ WallFloorConverter aFloorConv( *this, mrModel.mxFloor.getOrCreate() );
+ aFloorConv.convertFromModel( xDiagram, OBJECTTYPE_FLOOR );
+
+ WallFloorConverter aWallConv( *this, mrModel.mxBackWall.getOrCreate() );
+ aWallConv.convertFromModel( xDiagram, OBJECTTYPE_WALL );
+ }
+
+ // chart title
+ /* tdf#119138 autoTitleDeleted might be omitted by generators other than Excel
+ while providing custom title. mbAutoTitleDel is set only based on the attribute value
+ and the default also varies on whether MSO 2007 or newer is the generator, see tdf#78080 */
+ if( !mrModel.mbAutoTitleDel || mrModel.mxTitle.is() ) try
+ {
+ /* If the title model is missing, but the chart shows exactly one
+ series, the series title is shown as chart title. */
+ OUString aAutoTitle = aPlotAreaConv.getAutomaticTitle();
+ if( mrModel.mxTitle.is() || !aAutoTitle.isEmpty() )
+ {
+ if( aAutoTitle.isEmpty() )
+ aAutoTitle = OoxResId(STR_DIAGRAM_TITLE);
+ Reference< XTitled > xTitled( getChartDocument(), UNO_QUERY_THROW );
+ TitleConverter aTitleConv( *this, mrModel.mxTitle.getOrCreate() );
+ aTitleConv.convertFromModel( xTitled, aAutoTitle, OBJECTTYPE_CHARTTITLE );
+ }
+ }
+ catch( Exception& )
+ {
+ }
+
+ // legend
+ if( xDiagram.is() && mrModel.mxLegend.is() )
+ {
+ LegendConverter aLegendConv( *this, *mrModel.mxLegend );
+ aLegendConv.convertFromModel( xDiagram );
+ }
+
+ // treatment of missing values
+ if( xDiagram.is() )
+ {
+ using namespace ::com::sun::star::chart::MissingValueTreatment;
+ sal_Int32 nMissingValues = LEAVE_GAP;
+
+ // tdf#134118 leave gap if the time unit is month
+ bool bIsMonthBasedTimeUnit = false;
+ if( mrModel.mxPlotArea.is() && mrModel.mxPlotArea->maAxes.size() > 0 &&
+ mrModel.mxPlotArea->maAxes[0]->monBaseTimeUnit.has() )
+ {
+ bIsMonthBasedTimeUnit = mrModel.mxPlotArea->maAxes[0]->monBaseTimeUnit.get() == XML_months;
+ }
+
+ if (!bIsMonthBasedTimeUnit) switch( mrModel.mnDispBlanksAs )
+ {
+ case XML_gap: nMissingValues = LEAVE_GAP; break;
+ case XML_zero: nMissingValues = USE_ZERO; break;
+ case XML_span: nMissingValues = CONTINUE; break;
+ }
+
+ // use a workaround, if it's possible for the difference of OOXML and OpenDocument
+ if ( nMissingValues == LEAVE_GAP && lcl_useWorkaroundForNoGapInOOXML(getChartDocument()) )
+ nMissingValues = USE_ZERO;
+
+ PropertySet aDiaProp( xDiagram );
+ aDiaProp.setProperty( PROP_MissingValueTreatment, nMissingValues );
+ }
+
+ /* Following all conversions needing the old Chart1 API that involves full
+ initialization of the chart view. */
+ namespace cssc = ::com::sun::star::chart;
+ Reference< cssc::XChartDocument > xChart1Doc( getChartDocument(), UNO_QUERY );
+ if( xChart1Doc.is() )
+ {
+ /* Set the IncludeHiddenCells property via the old API as only this
+ ensures that the data provider and all created sequences get this
+ flag correctly. */
+ PropertySet aDiaProp( xChart1Doc->getDiagram() );
+ aDiaProp.setProperty( PROP_IncludeHiddenCells, !mrModel.mbPlotVisOnly );
+
+ // plot area position and size
+ aPlotAreaConv.convertPositionFromModel();
+
+ // positions of main title and all axis titles
+ convertTitlePositions();
+ }
+
+ // embedded drawing shapes
+ if( !mrModel.maDrawingPath.isEmpty() ) try
+ {
+ /* Get the internal draw page of the chart document, if no external
+ drawing page has been passed. */
+ Reference< XShapes > xShapes;
+ awt::Point aShapesOffset( 0, 0 );
+ if( rxExternalPage.is() )
+ {
+ xShapes = rxExternalPage;
+ // offset for embedded shapes to move them inside the chart area
+ aShapesOffset = rChartPos;
+ }
+ else
+ {
+ Reference< XDrawPageSupplier > xDrawPageSupp( getChartDocument(), UNO_QUERY_THROW );
+ xShapes.set( xDrawPageSupp->getDrawPage(), UNO_QUERY_THROW );
+ }
+
+ /* If an external drawing page is passed, all embedded shapes will be
+ inserted there (used e.g. with 'chart sheets' in spreadsheet
+ documents). In this case, all types of shapes including OLE objects
+ are supported. If the shapes are inserted into the internal chart
+ drawing page instead, it is not possible to embed OLE objects. */
+ bool bOleSupport = rxExternalPage.is();
+
+ awt::Size aChartSize = getChartSize();
+ if( aChartSize.Width <= 0 || aChartSize.Height <= 0 )
+ aChartSize = getDefaultPageSize();
+
+ // now, xShapes is not null anymore
+ getFilter().importFragment( new ChartDrawingFragment(
+ getFilter(), mrModel.maDrawingPath, xShapes, aChartSize, aShapesOffset, bOleSupport ) );
+ }
+ catch( Exception& )
+ {
+ }
+
+ // pivot chart
+ if ( mrModel.mbPivotChart )
+ {
+ PropertySet aProps( getChartDocument() );
+ aProps.setProperty( PROP_DisableDataTableDialog , true );
+ aProps.setProperty( PROP_DisableComplexChartTypes , true );
+ }
+
+ if(!mrModel.maSheetPath.isEmpty() )
+ {
+ Reference< css::chart::XChartDocument > xChartDoc( getChartDocument(), UNO_QUERY );
+ PropertySet aProps( xChartDoc->getDiagram() );
+ aProps.setProperty( PROP_ExternalData , uno::Any(mrModel.maSheetPath) );
+ }
+}
+
+} // namespace oox::drawingml::chart
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/oox/source/drawingml/chart/chartspacefragment.cxx b/oox/source/drawingml/chart/chartspacefragment.cxx
new file mode 100644
index 000000000..aa045d4a5
--- /dev/null
+++ b/oox/source/drawingml/chart/chartspacefragment.cxx
@@ -0,0 +1,124 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ *
+ * This file incorporates work covered by the following license notice:
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed
+ * with this work for additional information regarding copyright
+ * ownership. The ASF licenses this file to you under the Apache
+ * License, Version 2.0 (the "License"); you may not use this file
+ * except in compliance with the License. You may obtain a copy of
+ * the License at http://www.apache.org/licenses/LICENSE-2.0 .
+ */
+
+#include <drawingml/chart/chartspacefragment.hxx>
+
+#include <drawingml/shapepropertiescontext.hxx>
+#include <drawingml/textbodycontext.hxx>
+#include <drawingml/chart/chartspacemodel.hxx>
+#include <drawingml/chart/plotareacontext.hxx>
+#include <drawingml/chart/titlecontext.hxx>
+#include <oox/core/xmlfilterbase.hxx>
+#include <oox/helper/attributelist.hxx>
+#include <oox/token/namespaces.hxx>
+
+namespace oox::drawingml::chart {
+
+using namespace ::oox::core;
+
+ChartSpaceFragment::ChartSpaceFragment( XmlFilterBase& rFilter, const OUString& rFragmentPath, ChartSpaceModel& rModel ) :
+ FragmentBase< ChartSpaceModel >( rFilter, rFragmentPath, rModel )
+{
+}
+
+ChartSpaceFragment::~ChartSpaceFragment()
+{
+}
+
+ContextHandlerRef ChartSpaceFragment::onCreateContext( sal_Int32 nElement, const AttributeList& rAttribs )
+{
+ bool bMSO2007Document = getFilter().isMSO2007Document();
+ switch( getCurrentElement() )
+ {
+ case XML_ROOT_CONTEXT:
+ switch( nElement )
+ {
+ case C_TOKEN( chartSpace ):
+ return this;
+ }
+ break;
+
+ case C_TOKEN( chartSpace ):
+ switch( nElement )
+ {
+ case C_TOKEN( chart ):
+ return this;
+ case C_TOKEN( spPr ):
+ return new ShapePropertiesContext( *this, mrModel.mxShapeProp.create() );
+ case C_TOKEN( style ):
+ mrModel.mnStyle = rAttribs.getInteger( XML_val, 2 );
+ return nullptr;
+ case C_TOKEN( txPr ):
+ return new TextBodyContext( *this, mrModel.mxTextProp.create() );
+ case C_TOKEN( userShapes ):
+ mrModel.maDrawingPath = getFragmentPathFromRelId( rAttribs.getString( R_TOKEN( id ), OUString() ) );
+ return nullptr;
+ case C_TOKEN( pivotSource ):
+ mrModel.mbPivotChart = true;
+ return nullptr;
+ case C_TOKEN (externalData):
+ mrModel.maSheetPath = getFragmentPathFromRelId(rAttribs.getString(R_TOKEN(id),OUString()));
+ return nullptr;
+ }
+ break;
+
+ case C_TOKEN( chart ):
+ switch( nElement )
+ {
+ case C_TOKEN( autoTitleDeleted ):
+ {
+
+ mrModel.mbAutoTitleDel = rAttribs.getBool( XML_val, !bMSO2007Document );
+ return nullptr;
+ }
+ case C_TOKEN( backWall ):
+ return new WallFloorContext( *this, mrModel.mxBackWall.create() );
+ case C_TOKEN( dispBlanksAs ):
+ {
+ // default value is XML_gap for MSO 2007 and XML_zero in OOXML
+ mrModel.mnDispBlanksAs = rAttribs.getToken( XML_val, bMSO2007Document ? XML_gap : XML_zero );
+ return nullptr;
+ }
+ case C_TOKEN( floor ):
+ return new WallFloorContext( *this, mrModel.mxFloor.create() );
+ case C_TOKEN( legend ):
+ return new LegendContext( *this, mrModel.mxLegend.create() );
+ case C_TOKEN( plotArea ):
+ return new PlotAreaContext( *this, mrModel.mxPlotArea.create() );
+ case C_TOKEN( plotVisOnly ):
+ mrModel.mbPlotVisOnly = rAttribs.getBool( XML_val, !bMSO2007Document );
+ return nullptr;
+ case C_TOKEN( showDLblsOverMax ):
+ mrModel.mbShowLabelsOverMax = rAttribs.getBool( XML_val, !bMSO2007Document );
+ return nullptr;
+ case C_TOKEN( sideWall ):
+ return new WallFloorContext( *this, mrModel.mxSideWall.create() );
+ case C_TOKEN( title ):
+ return new TitleContext( *this, mrModel.mxTitle.create() );
+ case C_TOKEN( view3D ):
+ return new View3DContext( *this, mrModel.mxView3D.create(bMSO2007Document) );
+ }
+ break;
+ }
+ return nullptr;
+}
+
+} // namespace oox::drawingml::chart
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/oox/source/drawingml/chart/chartspacemodel.cxx b/oox/source/drawingml/chart/chartspacemodel.cxx
new file mode 100644
index 000000000..3aa7366ff
--- /dev/null
+++ b/oox/source/drawingml/chart/chartspacemodel.cxx
@@ -0,0 +1,41 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ *
+ * This file incorporates work covered by the following license notice:
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed
+ * with this work for additional information regarding copyright
+ * ownership. The ASF licenses this file to you under the Apache
+ * License, Version 2.0 (the "License"); you may not use this file
+ * except in compliance with the License. You may obtain a copy of
+ * the License at http://www.apache.org/licenses/LICENSE-2.0 .
+ */
+
+#include <drawingml/chart/chartspacemodel.hxx>
+#include <oox/token/tokens.hxx>
+
+namespace oox::drawingml::chart {
+
+ChartSpaceModel::ChartSpaceModel(bool bMSO2007Doc) :
+ mnDispBlanksAs( bMSO2007Doc ? XML_gap : XML_zero ), // difference between OOXML spec and MSO 2007
+ mnStyle( 2 ),
+ mbAutoTitleDel( !bMSO2007Doc ), // difference between OOXML spec and MSO 2007
+ mbPlotVisOnly( !bMSO2007Doc ),
+ mbShowLabelsOverMax( !bMSO2007Doc ),
+ mbPivotChart( false )
+{
+}
+
+ChartSpaceModel::~ChartSpaceModel()
+{
+}
+
+} // namespace oox::drawingml::chart
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/oox/source/drawingml/chart/converterbase.cxx b/oox/source/drawingml/chart/converterbase.cxx
new file mode 100644
index 000000000..d7130ec97
--- /dev/null
+++ b/oox/source/drawingml/chart/converterbase.cxx
@@ -0,0 +1,446 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ *
+ * This file incorporates work covered by the following license notice:
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed
+ * with this work for additional information regarding copyright
+ * ownership. The ASF licenses this file to you under the Apache
+ * License, Version 2.0 (the "License"); you may not use this file
+ * except in compliance with the License. You may obtain a copy of
+ * the License at http://www.apache.org/licenses/LICENSE-2.0 .
+ */
+
+#include <drawingml/chart/converterbase.hxx>
+
+#include <com/sun/star/chart/XAxisXSupplier.hpp>
+#include <com/sun/star/chart/XAxisYSupplier.hpp>
+#include <com/sun/star/chart/XAxisZSupplier.hpp>
+#include <com/sun/star/chart/XChartDocument.hpp>
+#include <com/sun/star/chart/XSecondAxisTitleSupplier.hpp>
+#include <com/sun/star/chart2/XChartDocument.hpp>
+#include <com/sun/star/chart2/RelativePosition.hpp>
+#include <com/sun/star/chart2/RelativeSize.hpp>
+#include <com/sun/star/chart2/XTitle.hpp>
+#include <com/sun/star/lang/XMultiServiceFactory.hpp>
+#include <com/sun/star/uno/XComponentContext.hpp>
+#include <osl/diagnose.h>
+#include <sal/log.hxx>
+#include <basegfx/numeric/ftools.hxx>
+#include <oox/core/xmlfilterbase.hxx>
+#include <oox/helper/helper.hxx>
+#include <oox/token/properties.hxx>
+#include <oox/token/tokens.hxx>
+
+
+namespace oox::drawingml::chart {
+
+namespace cssc = ::com::sun::star::chart;
+
+using namespace ::com::sun::star;
+using namespace ::com::sun::star::chart2;
+using namespace ::com::sun::star::drawing;
+using namespace ::com::sun::star::lang;
+using namespace ::com::sun::star::uno;
+
+using ::oox::core::XmlFilterBase;
+
+namespace {
+
+struct TitleKey : public ::std::pair< ObjectType, ::std::pair< sal_Int32, sal_Int32 > >
+{
+ explicit TitleKey( ObjectType eObjType, sal_Int32 nMainIdx = -1, sal_Int32 nSubIdx = -1 )
+ { first = eObjType; second.first = nMainIdx; second.second = nSubIdx; }
+};
+
+/** A helper structure to store all data related to title objects. Needed for
+ the conversion of manual title positions that needs the old Chart1 API.
+ */
+struct TitleLayoutInfo
+{
+ typedef Reference< XShape > (*GetShapeFunc)( const Reference< cssc::XChartDocument >& );
+
+ Reference< XTitle > mxTitle; /// The API title object.
+ ModelRef< LayoutModel > mxLayout; /// The layout model, if existing.
+ GetShapeFunc mpGetShape; /// Helper function to receive the title shape.
+
+ explicit TitleLayoutInfo() : mpGetShape( nullptr ) {}
+
+ void convertTitlePos(
+ ConverterRoot const & rRoot,
+ const Reference< cssc::XChartDocument >& rxChart1Doc );
+};
+
+void TitleLayoutInfo::convertTitlePos( ConverterRoot const & rRoot, const Reference< cssc::XChartDocument >& rxChart1Doc )
+{
+ if( !(mxTitle.is() && mpGetShape) )
+ return;
+
+ try
+ {
+ // try to get the title shape
+ Reference< XShape > xTitleShape = mpGetShape( rxChart1Doc );
+ if (!xTitleShape)
+ {
+ SAL_WARN("oox", "failed to get a TitleShape");
+ return;
+ }
+ // get title rotation angle, needed for correction of position of top-left edge
+ double fAngle = 0.0;
+ PropertySet aTitleProp( mxTitle );
+ aTitleProp.getProperty( fAngle, PROP_TextRotation );
+ // convert the position
+ LayoutModel& rLayout = mxLayout.getOrCreate();
+ LayoutConverter aLayoutConv( rRoot, rLayout );
+ aLayoutConv.convertFromModel( xTitleShape, fAngle );
+ }
+ catch( Exception& )
+ {
+ }
+}
+
+/* The following local functions implement getting the XShape interface of all
+ supported title objects (chart and axes). This needs some effort due to the
+ design of the old Chart1 API used to access these objects. */
+
+/** A code fragment that returns a shape object from the passed shape supplier
+ using the specified interface function. Checks a boolean property first. */
+#define OOX_FRAGMENT_GETTITLESHAPE( shape_supplier, supplier_func, property_name ) \
+ PropertySet aPropSet( shape_supplier ); \
+ if( shape_supplier.is() && aPropSet.getBoolProperty( PROP_##property_name ) ) \
+ return shape_supplier->supplier_func(); \
+ return Reference< XShape >(); \
+
+/** Implements a function returning the drawing shape of an axis title, if
+ existing, using the specified API interface and its function. */
+#define OOX_DEFINEFUNC_GETAXISTITLESHAPE( func_name, interface_type, supplier_func, property_name ) \
+Reference< XShape > func_name( const Reference< cssc::XChartDocument >& rxChart1Doc ) \
+{ \
+ Reference< cssc::interface_type > xAxisSupp( rxChart1Doc->getDiagram(), UNO_QUERY ); \
+ OOX_FRAGMENT_GETTITLESHAPE( xAxisSupp, supplier_func, property_name ) \
+}
+
+/** Returns the drawing shape of the main title, if existing. */
+Reference< XShape > lclGetMainTitleShape( const Reference< cssc::XChartDocument >& rxChart1Doc )
+{
+ OOX_FRAGMENT_GETTITLESHAPE( rxChart1Doc, getTitle, HasMainTitle )
+}
+
+OOX_DEFINEFUNC_GETAXISTITLESHAPE( lclGetXAxisTitleShape, XAxisXSupplier, getXAxisTitle, HasXAxisTitle )
+OOX_DEFINEFUNC_GETAXISTITLESHAPE( lclGetYAxisTitleShape, XAxisYSupplier, getYAxisTitle, HasYAxisTitle )
+OOX_DEFINEFUNC_GETAXISTITLESHAPE( lclGetZAxisTitleShape, XAxisZSupplier, getZAxisTitle, HasZAxisTitle )
+OOX_DEFINEFUNC_GETAXISTITLESHAPE( lclGetSecXAxisTitleShape, XSecondAxisTitleSupplier, getSecondXAxisTitle, HasSecondaryXAxisTitle )
+OOX_DEFINEFUNC_GETAXISTITLESHAPE( lclGetSecYAxisTitleShape, XSecondAxisTitleSupplier, getSecondYAxisTitle, HasSecondaryYAxisTitle )
+
+#undef OOX_DEFINEFUNC_GETAXISTITLESHAPE
+#undef OOX_IMPLEMENT_GETTITLESHAPE
+
+} // namespace
+
+struct ConverterData
+{
+ ObjectFormatter maFormatter;
+ std::map< TitleKey, TitleLayoutInfo >
+ maTitles;
+ XmlFilterBase& mrFilter;
+ ChartConverter& mrConverter;
+ Reference< XChartDocument > mxDoc;
+ awt::Size maSize;
+
+ explicit ConverterData(
+ XmlFilterBase& rFilter,
+ ChartConverter& rChartConverter,
+ const ChartSpaceModel& rChartModel,
+ const Reference< XChartDocument >& rxChartDoc,
+ const awt::Size& rChartSize );
+ ~ConverterData();
+};
+
+ConverterData::ConverterData(
+ XmlFilterBase& rFilter,
+ ChartConverter& rChartConverter,
+ const ChartSpaceModel& rChartModel,
+ const Reference< XChartDocument >& rxChartDoc,
+ const awt::Size& rChartSize ) :
+ maFormatter( rFilter, rxChartDoc, rChartModel ),
+ mrFilter( rFilter ),
+ mrConverter( rChartConverter ),
+ mxDoc( rxChartDoc ),
+ maSize( rChartSize )
+{
+ OSL_ENSURE( mxDoc.is(), "ConverterData::ConverterData - missing chart document" );
+ // lock the model to suppress internal updates during conversion
+ try
+ {
+ mxDoc->lockControllers();
+ }
+ catch( Exception& )
+ {
+ }
+
+ // prepare conversion of title positions
+ maTitles[ TitleKey( OBJECTTYPE_CHARTTITLE ) ].mpGetShape = lclGetMainTitleShape;
+ maTitles[ TitleKey( OBJECTTYPE_AXISTITLE, API_PRIM_AXESSET, API_X_AXIS ) ].mpGetShape = lclGetXAxisTitleShape;
+ maTitles[ TitleKey( OBJECTTYPE_AXISTITLE, API_PRIM_AXESSET, API_Y_AXIS ) ].mpGetShape = lclGetYAxisTitleShape;
+ maTitles[ TitleKey( OBJECTTYPE_AXISTITLE, API_PRIM_AXESSET, API_Z_AXIS ) ].mpGetShape = lclGetZAxisTitleShape;
+ maTitles[ TitleKey( OBJECTTYPE_AXISTITLE, API_SECN_AXESSET, API_X_AXIS ) ].mpGetShape = lclGetSecXAxisTitleShape;
+ maTitles[ TitleKey( OBJECTTYPE_AXISTITLE, API_SECN_AXESSET, API_Y_AXIS ) ].mpGetShape = lclGetSecYAxisTitleShape;
+}
+
+ConverterData::~ConverterData()
+{
+ // unlock the model
+ try
+ {
+ mxDoc->unlockControllers();
+ }
+ catch( Exception& )
+ {
+ }
+}
+
+ConverterRoot::ConverterRoot(
+ XmlFilterBase& rFilter,
+ ChartConverter& rChartConverter,
+ const ChartSpaceModel& rChartModel,
+ const Reference< XChartDocument >& rxChartDoc,
+ const awt::Size& rChartSize ) :
+ mxData( std::make_shared<ConverterData>( rFilter, rChartConverter, rChartModel, rxChartDoc, rChartSize ) )
+{
+}
+
+ConverterRoot::~ConverterRoot()
+{
+}
+
+Reference< XInterface > ConverterRoot::createInstance( const OUString& rServiceName ) const
+{
+ Reference< XInterface > xInt;
+ try
+ {
+ Reference<XMultiServiceFactory> xMSF(getComponentContext()->getServiceManager(), uno::UNO_QUERY_THROW);
+
+ xInt = xMSF->createInstance( rServiceName );
+ }
+ catch( Exception& )
+ {
+ }
+ OSL_ENSURE( xInt.is(), "ConverterRoot::createInstance - cannot create instance" );
+ return xInt;
+}
+
+Reference< XComponentContext > const & ConverterRoot::getComponentContext() const
+{
+ return mxData->mrFilter.getComponentContext();
+}
+
+XmlFilterBase& ConverterRoot::getFilter() const
+{
+ return mxData->mrFilter;
+}
+
+ChartConverter& ConverterRoot::getChartConverter() const
+{
+ return mxData->mrConverter;
+}
+
+Reference< XChartDocument > const & ConverterRoot::getChartDocument() const
+{
+ return mxData->mxDoc;
+}
+
+const awt::Size& ConverterRoot::getChartSize() const
+{
+ return mxData->maSize;
+}
+
+ObjectFormatter& ConverterRoot::getFormatter() const
+{
+ return mxData->maFormatter;
+}
+
+void ConverterRoot::registerTitleLayout( const Reference< XTitle >& rxTitle,
+ const ModelRef< LayoutModel >& rxLayout, ObjectType eObjType, sal_Int32 nMainIdx, sal_Int32 nSubIdx )
+{
+ OSL_ENSURE( rxTitle.is(), "ConverterRoot::registerTitleLayout - missing title object" );
+ TitleLayoutInfo& rTitleInfo = mxData->maTitles[ TitleKey( eObjType, nMainIdx, nSubIdx ) ];
+ OSL_ENSURE( rTitleInfo.mpGetShape, "ConverterRoot::registerTitleLayout - invalid title key" );
+ rTitleInfo.mxTitle = rxTitle;
+ rTitleInfo.mxLayout = rxLayout;
+}
+
+void ConverterRoot::convertTitlePositions()
+{
+ try
+ {
+ Reference< cssc::XChartDocument > xChart1Doc( mxData->mxDoc, UNO_QUERY_THROW );
+ for (auto & title : mxData->maTitles)
+ title.second.convertTitlePos( *this, xChart1Doc );
+ }
+ catch( Exception& )
+ {
+ }
+}
+
+namespace {
+
+/** Returns a position value in the chart area in 1/100 mm. */
+sal_Int32 lclCalcPosition( sal_Int32 nChartSize, double fPos, sal_Int32 nPosMode )
+{
+ switch( nPosMode )
+ {
+ case XML_edge: // absolute start position as factor of chart size
+ return getLimitedValue< sal_Int32, double >( nChartSize * fPos + 0.5, 0, nChartSize );
+ case XML_factor: // position relative to object default position
+ OSL_FAIL( "lclCalcPosition - relative positioning not supported" );
+ return -1;
+ };
+
+ OSL_FAIL( "lclCalcPosition - unknown positioning mode" );
+ return -1;
+}
+
+/** Returns a size value in the chart area in 1/100 mm. */
+sal_Int32 lclCalcSize( sal_Int32 nPos, sal_Int32 nChartSize, double fSize, sal_Int32 nSizeMode )
+{
+ sal_Int32 nValue = getLimitedValue< sal_Int32, double >( nChartSize * fSize + 0.5, 0, nChartSize );
+ switch( nSizeMode )
+ {
+ case XML_factor: // passed value is width/height
+ return nValue;
+ case XML_edge: // passed value is right/bottom position
+ return nValue - nPos + 1;
+ };
+
+ OSL_FAIL( "lclCalcSize - unknown size mode" );
+ return -1;
+}
+
+/** Returns a relative size value in the chart area. */
+double lclCalcRelSize( double fPos, double fSize, sal_Int32 nSizeMode )
+{
+ switch( nSizeMode )
+ {
+ case XML_factor: // passed value is width/height
+ break;
+ case XML_edge: // passed value is right/bottom position
+ fSize -= fPos;
+ break;
+ default:
+ OSL_ENSURE( false, "lclCalcRelSize - unknown size mode" );
+ fSize = 0.0;
+ };
+ return getLimitedValue< double, double >( fSize, 0.0, 1.0 - fPos );
+}
+
+} // namespace
+
+LayoutConverter::LayoutConverter( const ConverterRoot& rParent, LayoutModel& rModel ) :
+ ConverterBase< LayoutModel >( rParent, rModel )
+{
+}
+
+LayoutConverter::~LayoutConverter()
+{
+}
+
+bool LayoutConverter::calcAbsRectangle( awt::Rectangle& orRect ) const
+{
+ if( !mrModel.mbAutoLayout )
+ {
+ awt::Size aChartSize = getChartSize();
+ if( aChartSize.Width <= 0 || aChartSize.Height <= 0 )
+ {
+ aChartSize = getDefaultPageSize();
+ }
+ orRect.X = lclCalcPosition( aChartSize.Width, mrModel.mfX, mrModel.mnXMode );
+ orRect.Y = lclCalcPosition( aChartSize.Height, mrModel.mfY, mrModel.mnYMode );
+ if( (orRect.X >= 0) && (orRect.Y >= 0) )
+ {
+ orRect.Width = lclCalcSize( orRect.X, aChartSize.Width, mrModel.mfW, mrModel.mnWMode );
+ orRect.Height = lclCalcSize( orRect.Y, aChartSize.Height, mrModel.mfH, mrModel.mnHMode );
+ return (orRect.Width > 0) && (orRect.Height > 0);
+ }
+ }
+ return false;
+}
+
+bool LayoutConverter::convertFromModel( PropertySet& rPropSet )
+{
+ if( !mrModel.mbAutoLayout &&
+ (mrModel.mnXMode == XML_edge) && (mrModel.mfX >= 0.0) &&
+ (mrModel.mnYMode == XML_edge) && (mrModel.mfY >= 0.0) )
+ {
+ RelativePosition aPos(
+ getLimitedValue< double, double >( mrModel.mfX, 0.0, 1.0 ),
+ getLimitedValue< double, double >( mrModel.mfY, 0.0, 1.0 ),
+ Alignment_TOP_LEFT );
+ rPropSet.setProperty( PROP_RelativePosition, aPos );
+
+ RelativeSize aSize(
+ lclCalcRelSize( aPos.Primary, mrModel.mfW, mrModel.mnWMode ),
+ lclCalcRelSize( aPos.Secondary, mrModel.mfH, mrModel.mnHMode ) );
+ if( (aSize.Primary > 0.0) && (aSize.Secondary > 0.0) )
+ {
+ rPropSet.setProperty( PROP_RelativeSize, aSize );
+ return true;
+ }
+ }
+ return false;
+}
+
+void LayoutConverter::convertFromModel( const Reference< XShape >& rxShape, double fRotationAngle )
+{
+ if( mrModel.mbAutoLayout )
+ return;
+
+ awt::Size aChartSize = getChartSize();
+ if( aChartSize.Width <= 0 || aChartSize.Height <= 0 )
+ {
+ aChartSize = getDefaultPageSize();
+ }
+ awt::Point aShapePos(
+ lclCalcPosition( aChartSize.Width, mrModel.mfX, mrModel.mnXMode ),
+ lclCalcPosition( aChartSize.Height, mrModel.mfY, mrModel.mnYMode ) );
+ if( (aShapePos.X < 0) || (aShapePos.Y < 0) )
+ return;
+
+ bool bPropSet = false;
+ // the call to XShape.getSize() may recalc the chart view
+ awt::Size aShapeSize = rxShape->getSize();
+ // rotated shapes need special handling...
+ if( aShapeSize.Height > 0 || aShapeSize.Width > 0 )
+ {
+ double fSin = fabs(sin(basegfx::deg2rad(fRotationAngle)));
+ // add part of height to X direction, if title is rotated down
+ if( fRotationAngle > 180.0 )
+ aShapePos.X += static_cast<sal_Int32>(fSin * aShapeSize.Height + 0.5);
+ // add part of width to Y direction, if title is rotated up
+ else if( fRotationAngle > 0.0 )
+ aShapePos.Y += static_cast<sal_Int32>(fSin * aShapeSize.Width + 0.5);
+ }
+ else if( fRotationAngle == 90.0 || fRotationAngle == 270.0 )
+ {
+ PropertySet aShapeProp( rxShape );
+ RelativePosition aPos(
+ getLimitedValue< double, double >(mrModel.mfX, 0.0, 1.0),
+ getLimitedValue< double, double >(mrModel.mfY, 0.0, 1.0),
+ fRotationAngle == 90.0 ? Alignment_TOP_RIGHT : Alignment_BOTTOM_LEFT );
+ // set the resulting position at the shape
+ if( aShapeProp.setProperty(PROP_RelativePosition, aPos) )
+ bPropSet = true;
+ }
+ // set the resulting position at the shape
+ if( !bPropSet )
+ rxShape->setPosition( aShapePos );
+}
+
+} // namespace oox
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/oox/source/drawingml/chart/datasourcecontext.cxx b/oox/source/drawingml/chart/datasourcecontext.cxx
new file mode 100644
index 000000000..f4660f5db
--- /dev/null
+++ b/oox/source/drawingml/chart/datasourcecontext.cxx
@@ -0,0 +1,335 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ *
+ * This file incorporates work covered by the following license notice:
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed
+ * with this work for additional information regarding copyright
+ * ownership. The ASF licenses this file to you under the Apache
+ * License, Version 2.0 (the "License"); you may not use this file
+ * except in compliance with the License. You may obtain a copy of
+ * the License at http://www.apache.org/licenses/LICENSE-2.0 .
+ */
+
+#include <drawingml/chart/datasourcecontext.hxx>
+
+#include <oox/drawingml/chart/datasourcemodel.hxx>
+
+#include <oox/core/xmlfilterbase.hxx>
+#include <oox/helper/attributelist.hxx>
+#include <oox/token/namespaces.hxx>
+#include <oox/token/tokens.hxx>
+#include <svl/numformat.hxx>
+#include <svl/zforlist.hxx>
+#include <osl/diagnose.h>
+
+namespace oox::drawingml::chart {
+
+using ::oox::core::ContextHandler2Helper;
+using ::oox::core::ContextHandlerRef;
+
+using namespace ::com::sun::star;
+
+DoubleSequenceContext::DoubleSequenceContext( ContextHandler2Helper& rParent, DataSequenceModel& rModel ) :
+ DataSequenceContextBase( rParent, rModel ),
+ mnPtIndex( -1 )
+{
+}
+
+DoubleSequenceContext::~DoubleSequenceContext()
+{
+}
+
+ContextHandlerRef DoubleSequenceContext::onCreateContext( sal_Int32 nElement, const AttributeList& rAttribs )
+{
+ switch( getCurrentElement() )
+ {
+ case C_TOKEN( numRef ):
+ switch( nElement )
+ {
+ case C_TOKEN( f ):
+ case C_TOKEN( numCache ):
+ return this;
+ }
+ break;
+
+ case C_TOKEN( numCache ):
+ case C_TOKEN( numLit ):
+ switch( nElement )
+ {
+ case C_TOKEN( formatCode ):
+ return this;
+ case C_TOKEN( ptCount ):
+ mrModel.mnPointCount = rAttribs.getInteger( XML_val, -1 );
+ return nullptr;
+ case C_TOKEN( pt ):
+ mnPtIndex = rAttribs.getInteger( XML_idx, -1 );
+ return this;
+ }
+ break;
+
+ case C_TOKEN( pt ):
+ switch( nElement )
+ {
+ case C_TOKEN( v ):
+ return this;
+ }
+ break;
+ }
+ return nullptr;
+}
+
+void DoubleSequenceContext::onCharacters( const OUString& rChars )
+{
+ switch( getCurrentElement() )
+ {
+ case C_TOKEN( f ):
+ mrModel.maFormula = rChars;
+ break;
+ case C_TOKEN( formatCode ):
+ mrModel.maFormatCode = rChars;
+ break;
+ case C_TOKEN( v ):
+ if( mnPtIndex >= 0 )
+ {
+ /* Import categories as String even though it could
+ * be values except when the format code indicates that they are dates.
+ * n#810508: xVal needs to be imported as double
+ * TODO: NumberFormat conversion, remove the check then.
+ */
+ if( isParentElement( C_TOKEN( cat ), 4 ) )
+ {
+ // workaround for bug n#889755
+ SvNumberFormatter* pNumFrmt = getNumberFormatter();
+ if( pNumFrmt )
+ {
+ sal_uInt32 nKey = pNumFrmt->GetEntryKey( mrModel.maFormatCode );
+ bool bNoKey = ( nKey == NUMBERFORMAT_ENTRY_NOT_FOUND );
+ if( bNoKey )
+ {
+ OUString aFormatCode = mrModel.maFormatCode;
+ sal_Int32 nCheckPos = 0;
+ SvNumFormatType nType;
+ pNumFrmt->PutEntry( aFormatCode, nCheckPos, nType, nKey );
+ bNoKey = (nCheckPos != 0);
+ if (!bNoKey)
+ mrModel.meFormatType = nType;
+ }
+ if( bNoKey )
+ {
+ mrModel.maData[ mnPtIndex ] <<= rChars;
+ }
+ else
+ {
+ double fValue = rChars.toDouble();
+ if (mrModel.meFormatType == SvNumFormatType::DATE)
+ mrModel.maData[ mnPtIndex ] <<= fValue;
+ else
+ {
+ const ::Color* pColor = nullptr;
+ OUString aFormattedValue;
+ // tdf#91250: use UNLIMITED_PRECISION in case of GENERAL Number Format of category axis labels
+ if( pNumFrmt->GetStandardPrec() != SvNumberFormatter::UNLIMITED_PRECISION )
+ pNumFrmt->ChangeStandardPrec(SvNumberFormatter::UNLIMITED_PRECISION);
+ pNumFrmt->GetOutputString( fValue, nKey, aFormattedValue, &pColor );
+ mrModel.maData[ mnPtIndex ] <<= aFormattedValue;
+ }
+ }
+ }
+ else
+ {
+ mrModel.maData[ mnPtIndex ] <<= rChars;
+ }
+ }
+ else
+ {
+ mrModel.maData[ mnPtIndex ] <<= rChars.toDouble();
+ }
+ }
+ break;
+ }
+}
+
+
+SvNumberFormatter* DoubleSequenceContext::getNumberFormatter()
+{
+ if( mpNumberFormatter == nullptr )
+ {
+ uno::Reference<uno::XComponentContext> rContext =
+ getFilter().getComponentContext();
+ mpNumberFormatter.reset(
+ new SvNumberFormatter(rContext, LANGUAGE_SYSTEM) );
+ }
+ return mpNumberFormatter.get();
+}
+
+
+StringSequenceContext::StringSequenceContext( ContextHandler2Helper& rParent, DataSequenceModel& rModel )
+ : DataSequenceContextBase( rParent, rModel )
+ , mnPtIndex(-1)
+ , mbReadC15(false)
+{
+}
+
+StringSequenceContext::~StringSequenceContext()
+{
+}
+
+ContextHandlerRef StringSequenceContext::onCreateContext( sal_Int32 nElement, const AttributeList& rAttribs )
+{
+ switch( getCurrentElement() )
+ {
+ case C_TOKEN( multiLvlStrRef ):
+ switch( nElement )
+ {
+ case C_TOKEN( f ):
+ case C_TOKEN( multiLvlStrCache ):
+ return this;
+ }
+ break;
+
+ case C15_TOKEN( datalabelsRange ):
+ mbReadC15 = true;
+ switch( nElement )
+ {
+ case C15_TOKEN( f ):
+ case C15_TOKEN( dlblRangeCache ):
+ return this;
+ }
+ break;
+
+ case C_TOKEN( strRef ):
+ switch( nElement )
+ {
+ case C_TOKEN( f ):
+ case C_TOKEN( strCache ):
+ return this;
+ }
+ break;
+
+ case C_TOKEN( strCache ):
+ case C_TOKEN( strLit ):
+ case C15_TOKEN( dlblRangeCache ):
+ if (nElement == C15_TOKEN( dlblRangeCache ) && !mbReadC15)
+ break;
+
+ switch( nElement )
+ {
+ case C_TOKEN( ptCount ):
+ mrModel.mnPointCount = rAttribs.getInteger( XML_val, -1 );
+ return nullptr;
+ case C_TOKEN( pt ):
+ mnPtIndex = rAttribs.getInteger( XML_idx, -1 );
+ return this;
+ }
+ break;
+
+ case C_TOKEN( multiLvlStrCache ):
+ switch (nElement)
+ {
+ case C_TOKEN( ptCount ):
+ mrModel.mnPointCount = rAttribs.getInteger(XML_val, -1);
+ mrModel.mnLevelCount--; // normalize level count
+ return nullptr;
+ case C_TOKEN( lvl ):
+ mrModel.mnLevelCount++;
+ return this;
+ }
+ break;
+
+ case C_TOKEN( lvl ):
+ switch (nElement)
+ {
+ case C_TOKEN(pt):
+ mnPtIndex = rAttribs.getInteger(XML_idx, -1);
+ return this;
+ }
+ break;
+
+ case C_TOKEN( pt ):
+ switch( nElement )
+ {
+ case C_TOKEN( v ):
+ return this;
+ }
+ break;
+ }
+ return nullptr;
+}
+
+void StringSequenceContext::onCharacters( const OUString& rChars )
+{
+ switch( getCurrentElement() )
+ {
+ case C_TOKEN( f ):
+ mrModel.maFormula = rChars;
+ break;
+ case C15_TOKEN( f ):
+ if (mbReadC15)
+ mrModel.maFormula = rChars;
+ break;
+ case C_TOKEN( v ):
+ if( mnPtIndex >= 0 )
+ mrModel.maData[ (mrModel.mnLevelCount-1) * mrModel.mnPointCount + mnPtIndex ] <<= rChars;
+ break;
+ }
+}
+
+DataSourceContext::DataSourceContext( ContextHandler2Helper& rParent, DataSourceModel& rModel ) :
+ ContextBase< DataSourceModel >( rParent, rModel )
+{
+}
+
+DataSourceContext::~DataSourceContext()
+{
+}
+
+ContextHandlerRef DataSourceContext::onCreateContext( sal_Int32 nElement, const AttributeList& )
+{
+ switch( getCurrentElement() )
+ {
+ case C_TOKEN( cat ):
+ case C_TOKEN( xVal ):
+ case C_TOKEN( ext ):
+ switch( nElement )
+ {
+ case C_TOKEN( multiLvlStrRef ):
+ case C_TOKEN( strLit ):
+ case C_TOKEN( strRef ):
+ case C15_TOKEN( datalabelsRange ):
+ OSL_ENSURE( !mrModel.mxDataSeq, "DataSourceContext::onCreateContext - multiple data sequences" );
+ return new StringSequenceContext( *this, mrModel.mxDataSeq.create() );
+
+ case C_TOKEN( numLit ):
+ case C_TOKEN( numRef ):
+ OSL_ENSURE( !mrModel.mxDataSeq, "DataSourceContext::onCreateContext - multiple data sequences" );
+ return new DoubleSequenceContext( *this, mrModel.mxDataSeq.create() );
+ }
+ break;
+
+ case C_TOKEN( plus ):
+ case C_TOKEN( minus ):
+ case C_TOKEN( val ):
+ case C_TOKEN( yVal ):
+ case C_TOKEN( bubbleSize ):
+ switch( nElement )
+ {
+ case C_TOKEN( numLit ):
+ case C_TOKEN( numRef ):
+ OSL_ENSURE( !mrModel.mxDataSeq, "DataSourceContext::onCreateContext - multiple data sequences" );
+ return new DoubleSequenceContext( *this, mrModel.mxDataSeq.create() );
+ }
+ break;
+ }
+ return nullptr;
+}
+
+} // namespace oox::drawingml::chart
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/oox/source/drawingml/chart/datasourceconverter.cxx b/oox/source/drawingml/chart/datasourceconverter.cxx
new file mode 100644
index 000000000..92cacb428
--- /dev/null
+++ b/oox/source/drawingml/chart/datasourceconverter.cxx
@@ -0,0 +1,106 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ *
+ * This file incorporates work covered by the following license notice:
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed
+ * with this work for additional information regarding copyright
+ * ownership. The ASF licenses this file to you under the Apache
+ * License, Version 2.0 (the "License"); you may not use this file
+ * except in compliance with the License. You may obtain a copy of
+ * the License at http://www.apache.org/licenses/LICENSE-2.0 .
+ */
+
+#include <drawingml/chart/datasourceconverter.hxx>
+
+#include <com/sun/star/chart2/XChartDocument.hpp>
+#include <oox/drawingml/chart/chartconverter.hxx>
+#include <oox/drawingml/chart/datasourcemodel.hxx>
+#include <oox/token/properties.hxx>
+#include <svl/zforlist.hxx>
+
+namespace oox::drawingml::chart {
+
+using namespace ::com::sun::star::chart2::data;
+using namespace ::com::sun::star::uno;
+
+DataSequenceConverter::DataSequenceConverter( const ConverterRoot& rParent, DataSequenceModel& rModel ) :
+ ConverterBase< DataSequenceModel >( rParent, rModel )
+{
+}
+
+DataSequenceConverter::~DataSequenceConverter()
+{
+}
+
+Reference< XDataSequence > DataSequenceConverter::createDataSequence( const OUString& rRole )
+{
+ // create data sequence from data source model (virtual call at chart converter)
+ Reference< XDataSequence > xDataSeq;
+ // the internal data table does not support complex labels
+ // this is only supported in Calc!!!
+ // merge the labels into a single one
+ if(rRole == "label")
+ {
+ mrModel.mnPointCount = std::min<sal_Int32>(mrModel.mnPointCount, 1);
+ OUStringBuffer aTitle;
+ bool bFirst = true;
+ for (auto const& elem : mrModel.maData)
+ {
+ Any aAny = elem.second;
+ if(aAny.has<OUString>())
+ {
+ if(!bFirst)
+ aTitle.append(" ");
+
+ aTitle.append(aAny.get<OUString>());
+ bFirst = false;
+ }
+ }
+
+ if(!bFirst)
+ {
+ mrModel.maData.clear();
+ mrModel.maData.insert(std::make_pair<sal_Int32, Any>(0, Any(aTitle.makeStringAndClear())));
+ }
+ }
+
+ bool bDateCategories = (mrModel.meFormatType == SvNumFormatType::DATE) && (rRole == "categories");
+ xDataSeq = getChartConverter().createDataSequence(getChartDocument()->getDataProvider(), mrModel,
+ rRole, bDateCategories ? OUString("date") : OUString(""));
+
+ // set sequence role
+ PropertySet aSeqProp( xDataSeq );
+ aSeqProp.setProperty( PROP_Role, rRole );
+ return xDataSeq;
+}
+
+DataSourceConverter::DataSourceConverter( const ConverterRoot& rParent, DataSourceModel& rModel ) :
+ ConverterBase< DataSourceModel >( rParent, rModel )
+{
+}
+
+DataSourceConverter::~DataSourceConverter()
+{
+}
+
+Reference< XDataSequence > DataSourceConverter::createDataSequence( const OUString& rRole )
+{
+ Reference< XDataSequence > xDataSeq;
+ if( mrModel.mxDataSeq.is() )
+ {
+ DataSequenceConverter aDataSeqConv( *this, *mrModel.mxDataSeq );
+ xDataSeq = aDataSeqConv.createDataSequence( rRole );
+ }
+ return xDataSeq;
+}
+
+} // namespace oox::drawingml::chart
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/oox/source/drawingml/chart/datasourcemodel.cxx b/oox/source/drawingml/chart/datasourcemodel.cxx
new file mode 100644
index 000000000..51514437d
--- /dev/null
+++ b/oox/source/drawingml/chart/datasourcemodel.cxx
@@ -0,0 +1,46 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ *
+ * This file incorporates work covered by the following license notice:
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed
+ * with this work for additional information regarding copyright
+ * ownership. The ASF licenses this file to you under the Apache
+ * License, Version 2.0 (the "License"); you may not use this file
+ * except in compliance with the License. You may obtain a copy of
+ * the License at http://www.apache.org/licenses/LICENSE-2.0 .
+ */
+
+#include <oox/drawingml/chart/datasourcemodel.hxx>
+#include <svl/zforlist.hxx>
+
+namespace oox::drawingml::chart {
+
+DataSequenceModel::DataSequenceModel() :
+ mnPointCount( -1 ),
+ mnLevelCount( 1 ),
+ meFormatType( SvNumFormatType::UNDEFINED )
+{
+}
+
+DataSequenceModel::~DataSequenceModel()
+{
+}
+
+DataSourceModel::DataSourceModel()
+{
+}
+
+DataSourceModel::~DataSourceModel()
+{
+}
+
+} // namespace oox::drawingml::chart
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/oox/source/drawingml/chart/datatablecontext.cxx b/oox/source/drawingml/chart/datatablecontext.cxx
new file mode 100644
index 000000000..0813a6424
--- /dev/null
+++ b/oox/source/drawingml/chart/datatablecontext.cxx
@@ -0,0 +1,68 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ *
+ * This file incorporates work covered by the following license notice:
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed
+ * with this work for additional information regarding copyright
+ * ownership. The ASF licenses this file to you under the Apache
+ * License, Version 2.0 (the "License"); you may not use this file
+ * except in compliance with the License. You may obtain a copy of
+ * the License at http://www.apache.org/licenses/LICENSE-2.0 .
+ */
+
+#include <drawingml/chart/datatablecontext.hxx>
+
+#include <drawingml/chart/plotareamodel.hxx>
+#include <oox/core/xmlfilterbase.hxx>
+#include <oox/helper/attributelist.hxx>
+#include <oox/token/namespaces.hxx>
+#include <oox/token/tokens.hxx>
+
+namespace oox::drawingml::chart
+{
+using ::oox::core::ContextHandler2Helper;
+using ::oox::core::ContextHandlerRef;
+
+DataTableContext::DataTableContext(ContextHandler2Helper& rParent, DataTableModel& rModel)
+ : ContextBase<DataTableModel>(rParent, rModel)
+{
+}
+
+DataTableContext::~DataTableContext() {}
+
+ContextHandlerRef DataTableContext::onCreateContext(sal_Int32 nElement,
+ const AttributeList& rAttribs)
+{
+ switch (getCurrentElement())
+ {
+ case C_TOKEN(dTable):
+ switch (nElement)
+ {
+ case C_TOKEN(showHorzBorder):
+ mrModel.mbShowHBorder = rAttribs.getBool(XML_val, false);
+ break;
+ case C_TOKEN(showVertBorder):
+ mrModel.mbShowVBorder = rAttribs.getBool(XML_val, false);
+ break;
+ case C_TOKEN(showOutline):
+ mrModel.mbShowOutline = rAttribs.getBool(XML_val, false);
+ break;
+ case C_TOKEN(showKeys):
+ mrModel.mbShowKeys = rAttribs.getBool(XML_val, false);
+ break;
+ }
+ break;
+ }
+ return nullptr;
+}
+
+} // namespace oox::drawingml::chart
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/oox/source/drawingml/chart/datatableconverter.cxx b/oox/source/drawingml/chart/datatableconverter.cxx
new file mode 100644
index 000000000..802edc946
--- /dev/null
+++ b/oox/source/drawingml/chart/datatableconverter.cxx
@@ -0,0 +1,50 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ *
+ * This file incorporates work covered by the following license notice:
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed
+ * with this work for additional information regarding copyright
+ * ownership. The ASF licenses this file to you under the Apache
+ * License, Version 2.0 (the "License"); you may not use this file
+ * except in compliance with the License. You may obtain a copy of
+ * the License at http://www.apache.org/licenses/LICENSE-2.0 .
+ */
+
+#include <drawingml/chart/datatableconverter.hxx>
+
+#include <com/sun/star/chart2/XDiagram.hpp>
+#include <drawingml/chart/plotareamodel.hxx>
+#include <oox/token/properties.hxx>
+
+using namespace css;
+
+namespace oox::drawingml::chart
+{
+DataTableConverter::DataTableConverter(const ConverterRoot& rParent, DataTableModel& rModel)
+ : ConverterBase<DataTableModel>(rParent, rModel)
+{
+}
+
+DataTableConverter::~DataTableConverter() = default;
+
+void DataTableConverter::convertFromModel(uno::Reference<chart2::XDiagram> const& rxDiagram)
+{
+ PropertySet aPropSet(rxDiagram);
+ if (mrModel.mbShowHBorder)
+ aPropSet.setProperty(PROP_DataTableHBorder, mrModel.mbShowHBorder);
+ if (mrModel.mbShowVBorder)
+ aPropSet.setProperty(PROP_DataTableVBorder, mrModel.mbShowVBorder);
+ if (mrModel.mbShowOutline)
+ aPropSet.setProperty(PROP_DataTableOutline, mrModel.mbShowOutline);
+}
+
+} // namespace oox
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/oox/source/drawingml/chart/modelbase.cxx b/oox/source/drawingml/chart/modelbase.cxx
new file mode 100644
index 000000000..b897d9306
--- /dev/null
+++ b/oox/source/drawingml/chart/modelbase.cxx
@@ -0,0 +1,54 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ *
+ * This file incorporates work covered by the following license notice:
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed
+ * with this work for additional information regarding copyright
+ * ownership. The ASF licenses this file to you under the Apache
+ * License, Version 2.0 (the "License"); you may not use this file
+ * except in compliance with the License. You may obtain a copy of
+ * the License at http://www.apache.org/licenses/LICENSE-2.0 .
+ */
+
+#include <oox/drawingml/chart/modelbase.hxx>
+
+#include <oox/helper/attributelist.hxx>
+#include <oox/token/tokens.hxx>
+
+namespace oox::drawingml::chart {
+
+NumberFormat::NumberFormat() :
+ mbSourceLinked( true )
+{
+}
+
+void NumberFormat::setAttributes( const AttributeList& rAttribs )
+{
+ mbSourceLinked = rAttribs.getBool( XML_sourceLinked, true);
+ maFormatCode = rAttribs.getString( XML_formatCode, OUString() );
+}
+
+LayoutModel::LayoutModel() :
+ mfX( 0.0 ),
+ mfY( 0.0 ),
+ mfW( 0.0 ),
+ mfH( 0.0 ),
+ mnXMode( XML_factor ),
+ mnYMode( XML_factor ),
+ mnWMode( XML_factor ),
+ mnHMode( XML_factor ),
+ mnTarget( XML_outer ),
+ mbAutoLayout( true )
+{
+}
+
+} // namespace oox::drawingml::chart
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/oox/source/drawingml/chart/objectformatter.cxx b/oox/source/drawingml/chart/objectformatter.cxx
new file mode 100644
index 000000000..1df1c48a0
--- /dev/null
+++ b/oox/source/drawingml/chart/objectformatter.cxx
@@ -0,0 +1,1151 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ *
+ * This file incorporates work covered by the following license notice:
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed
+ * with this work for additional information regarding copyright
+ * ownership. The ASF licenses this file to you under the Apache
+ * License, Version 2.0 (the "License"); you may not use this file
+ * except in compliance with the License. You may obtain a copy of
+ * the License at http://www.apache.org/licenses/LICENSE-2.0 .
+ */
+
+#include <drawingml/chart/objectformatter.hxx>
+
+#include <com/sun/star/chart2/XChartDocument.hpp>
+#include <com/sun/star/lang/XMultiServiceFactory.hpp>
+#include <com/sun/star/util/XNumberFormatsSupplier.hpp>
+#include <com/sun/star/util/XNumberFormatTypes.hpp>
+#include <osl/thread.h>
+#include <osl/diagnose.h>
+#include <rtl/strbuf.hxx>
+#include <oox/core/xmlfilterbase.hxx>
+#include <drawingml/fillproperties.hxx>
+#include <drawingml/lineproperties.hxx>
+#include <oox/drawingml/shapepropertymap.hxx>
+#include <drawingml/textbody.hxx>
+#include <drawingml/textparagraph.hxx>
+#include <oox/drawingml/theme.hxx>
+#include <drawingml/chart/chartspacemodel.hxx>
+#include <oox/helper/modelobjecthelper.hxx>
+#include <oox/helper/graphichelper.hxx>
+#include <oox/token/properties.hxx>
+#include <oox/token/tokens.hxx>
+
+#include <unotools/mediadescriptor.hxx>
+
+namespace oox::drawingml::chart {
+
+using namespace ::com::sun::star::chart2;
+using namespace ::com::sun::star::graphic;
+using namespace ::com::sun::star::lang;
+using namespace ::com::sun::star::uno;
+using namespace ::com::sun::star::util;
+
+using ::oox::core::XmlFilterBase;
+
+namespace {
+
+struct AutoFormatPatternEntry
+{
+ sal_Int32 mnColorToken; /// Theme color token.
+ sal_Int32 mnModToken; /// Color modification token.
+ sal_Int32 mnModValue; /// Color modification value.
+};
+
+#define AUTOFORMAT_PATTERN_COLOR( color_token ) \
+ { color_token, XML_TOKEN_INVALID, 0 }
+
+#define AUTOFORMAT_PATTERN_COLORMOD( color_token, mod_token, mod_value ) \
+ { color_token, mod_token, mod_value }
+
+#define AUTOFORMAT_PATTERN_END() \
+ AUTOFORMAT_PATTERN_COLOR( XML_TOKEN_INVALID )
+
+const AutoFormatPatternEntry spAutoFormatPattern1[] =
+{
+ AUTOFORMAT_PATTERN_COLORMOD( XML_dk1, XML_tint, 88500 ),
+ AUTOFORMAT_PATTERN_COLORMOD( XML_dk1, XML_tint, 55000 ),
+ AUTOFORMAT_PATTERN_COLORMOD( XML_dk1, XML_tint, 78000 ),
+ AUTOFORMAT_PATTERN_COLORMOD( XML_dk1, XML_tint, 92500 ),
+ AUTOFORMAT_PATTERN_COLORMOD( XML_dk1, XML_tint, 70000 ),
+ AUTOFORMAT_PATTERN_COLORMOD( XML_dk1, XML_tint, 30000 ),
+ AUTOFORMAT_PATTERN_END()
+};
+
+const AutoFormatPatternEntry spAutoFormatPattern2[] =
+{
+ AUTOFORMAT_PATTERN_COLOR( XML_accent1 ),
+ AUTOFORMAT_PATTERN_COLOR( XML_accent2 ),
+ AUTOFORMAT_PATTERN_COLOR( XML_accent3 ),
+ AUTOFORMAT_PATTERN_COLOR( XML_accent4 ),
+ AUTOFORMAT_PATTERN_COLOR( XML_accent5 ),
+ AUTOFORMAT_PATTERN_COLOR( XML_accent6 ),
+ AUTOFORMAT_PATTERN_END()
+};
+
+const AutoFormatPatternEntry spAutoFormatPattern3[] =
+{
+ AUTOFORMAT_PATTERN_COLORMOD( XML_accent1, XML_shade, 50000 ),
+ AUTOFORMAT_PATTERN_COLORMOD( XML_accent2, XML_shade, 50000 ),
+ AUTOFORMAT_PATTERN_COLORMOD( XML_accent3, XML_shade, 50000 ),
+ AUTOFORMAT_PATTERN_COLORMOD( XML_accent4, XML_shade, 50000 ),
+ AUTOFORMAT_PATTERN_COLORMOD( XML_accent5, XML_shade, 50000 ),
+ AUTOFORMAT_PATTERN_COLORMOD( XML_accent6, XML_shade, 50000 ),
+ AUTOFORMAT_PATTERN_END()
+};
+
+const AutoFormatPatternEntry spAutoFormatPattern4[] =
+{
+ AUTOFORMAT_PATTERN_COLORMOD( XML_dk1, XML_tint, 5000 ),
+ AUTOFORMAT_PATTERN_COLORMOD( XML_dk1, XML_tint, 55000 ),
+ AUTOFORMAT_PATTERN_COLORMOD( XML_dk1, XML_tint, 78000 ),
+ AUTOFORMAT_PATTERN_COLORMOD( XML_dk1, XML_tint, 15000 ),
+ AUTOFORMAT_PATTERN_COLORMOD( XML_dk1, XML_tint, 70000 ),
+ AUTOFORMAT_PATTERN_COLORMOD( XML_dk1, XML_tint, 30000 ),
+ AUTOFORMAT_PATTERN_END()
+};
+
+#undef AUTOFORMAT_PATTERN_COLOR
+#undef AUTOFORMAT_PATTERN_COLORMOD
+#undef AUTOFORMAT_PATTERN_END
+
+struct AutoFormatEntry
+{
+ sal_Int32 mnFirstStyleIdx; /// First chart style index.
+ sal_Int32 mnLastStyleIdx; /// Last chart style index.
+ sal_Int32 mnThemedIdx; /// Themed style index.
+ sal_Int32 mnColorToken; /// Theme color token.
+ sal_Int32 mnModToken; /// Color modification token.
+ sal_Int32 mnModValue; /// Color modification value.
+ sal_Int32 mnRelLineWidth; /// Relative line width (percent).
+ const AutoFormatPatternEntry* mpPattern;/// Color cycling pattern for data series.
+ bool mbFadedColor; /// True = Faded color for data series.
+};
+
+#define AUTOFORMAT_COLOR( first, last, themed_style, color_token ) \
+ { first, last, themed_style, color_token, XML_TOKEN_INVALID, 0, 100, nullptr, false }
+
+#define AUTOFORMAT_COLORMOD( first, last, themed_style, color_token, mod_token, mod_value ) \
+ { first, last, themed_style, color_token, mod_token, mod_value, 100, nullptr, false }
+
+#define AUTOFORMAT_ACCENTSMOD( first, themed_style, mod_token, mod_value ) \
+ AUTOFORMAT_COLORMOD( first, first, themed_style, XML_accent1, mod_token, mod_value ), \
+ AUTOFORMAT_COLORMOD( first + 1, first + 1, themed_style, XML_accent2, mod_token, mod_value ), \
+ AUTOFORMAT_COLORMOD( first + 2, first + 2, themed_style, XML_accent3, mod_token, mod_value ), \
+ AUTOFORMAT_COLORMOD( first + 3, first + 3, themed_style, XML_accent4, mod_token, mod_value ), \
+ AUTOFORMAT_COLORMOD( first + 4, first + 4, themed_style, XML_accent5, mod_token, mod_value ), \
+ AUTOFORMAT_COLORMOD( first + 5, first + 5, themed_style, XML_accent6, mod_token, mod_value )
+
+#define AUTOFORMAT_PATTERN( first, last, themed_style, line_width, pattern ) \
+ { first, last, themed_style, XML_TOKEN_INVALID, XML_TOKEN_INVALID, 0, line_width, pattern, false }
+
+#define AUTOFORMAT_FADED( first, last, themed_style, color_token, line_width ) \
+ { first, last, themed_style, color_token, XML_TOKEN_INVALID, 0, line_width, nullptr, true }
+
+#define AUTOFORMAT_FADEDACCENTS( first, themed_style, line_width ) \
+ AUTOFORMAT_FADED( first, first, themed_style, XML_accent1, line_width ), \
+ AUTOFORMAT_FADED( first + 1, first + 1, themed_style, XML_accent2, line_width ), \
+ AUTOFORMAT_FADED( first + 2, first + 2, themed_style, XML_accent3, line_width ), \
+ AUTOFORMAT_FADED( first + 3, first + 3, themed_style, XML_accent4, line_width ), \
+ AUTOFORMAT_FADED( first + 4, first + 4, themed_style, XML_accent5, line_width ), \
+ AUTOFORMAT_FADED( first + 5, first + 5, themed_style, XML_accent6, line_width )
+
+#define AUTOFORMAT_INVISIBLE( first, last ) \
+ AUTOFORMAT_COLOR( first, last, -1, XML_TOKEN_INVALID )
+
+#define AUTOFORMAT_END() \
+ AUTOFORMAT_INVISIBLE( -1, -1 )
+
+const AutoFormatEntry spNoFormats[] =
+{
+ AUTOFORMAT_INVISIBLE( 1, 48 ),
+ AUTOFORMAT_END()
+};
+
+const AutoFormatEntry spChartSpaceFill[] =
+{
+ AUTOFORMAT_COLOR( 1, 32, THEMED_STYLE_SUBTLE, XML_bg1 ),
+ AUTOFORMAT_COLOR( 33, 40, THEMED_STYLE_SUBTLE, XML_lt1 ),
+ AUTOFORMAT_COLOR( 41, 48, THEMED_STYLE_SUBTLE, XML_dk1 ),
+ AUTOFORMAT_END()
+};
+
+const AutoFormatEntry spDataTableLines[] =
+{
+ AUTOFORMAT_COLORMOD( 1, 32, THEMED_STYLE_SUBTLE, XML_tx1, XML_tint, 75000 ),
+ AUTOFORMAT_COLORMOD( 33, 40, THEMED_STYLE_SUBTLE, XML_dk1, XML_tint, 75000 ),
+ // 41...48: no line, same as Chart2
+ AUTOFORMAT_END()
+};
+
+const AutoFormatEntry spPlotArea2dFills[] =
+{
+ AUTOFORMAT_COLOR( 1, 32, THEMED_STYLE_SUBTLE, XML_bg1 ),
+ AUTOFORMAT_COLORMOD( 33, 34, THEMED_STYLE_SUBTLE, XML_dk1, XML_tint, 20000 ),
+ AUTOFORMAT_ACCENTSMOD( 35, THEMED_STYLE_SUBTLE, XML_tint, 20000 ), // tint not documented!?
+ AUTOFORMAT_COLORMOD( 41, 48, THEMED_STYLE_SUBTLE, XML_dk1, XML_tint, 95000 ),
+ AUTOFORMAT_END()
+};
+
+const AutoFormatEntry spWallFloorLines[] =
+{
+ AUTOFORMAT_COLORMOD( 1, 32, THEMED_STYLE_SUBTLE, XML_tx1, XML_tint, 75000 ),
+ AUTOFORMAT_COLORMOD( 33, 40, THEMED_STYLE_SUBTLE, XML_dk1, XML_tint, 75000 ),
+ // 41...48: no line, same as Chart2
+ AUTOFORMAT_END()
+};
+
+const AutoFormatEntry spWallFloorFills[] =
+{
+ AUTOFORMAT_INVISIBLE( 1, 32 ),
+ AUTOFORMAT_COLORMOD( 33, 34, THEMED_STYLE_SUBTLE, XML_dk1, XML_tint, 20000 ),
+ AUTOFORMAT_ACCENTSMOD( 35, THEMED_STYLE_SUBTLE, XML_tint, 20000 ), // tint not documented!?
+ AUTOFORMAT_COLORMOD( 41, 48, THEMED_STYLE_SUBTLE, XML_dk1, XML_tint, 95000 ),
+ AUTOFORMAT_END()
+};
+
+const AutoFormatEntry spAxisLines[] =
+{
+ AUTOFORMAT_COLORMOD( 1, 32, THEMED_STYLE_SUBTLE, XML_tx1, XML_tint, 75000 ), // tint not documented!?
+ AUTOFORMAT_COLORMOD( 33, 48, THEMED_STYLE_SUBTLE, XML_dk1, XML_tint, 75000 ), // tint not documented!?
+ AUTOFORMAT_END()
+};
+
+const AutoFormatEntry spMajorGridLines[] =
+{
+ AUTOFORMAT_COLORMOD( 1, 32, THEMED_STYLE_SUBTLE, XML_tx1, XML_tint, 75000 ), // tint not documented!?
+ AUTOFORMAT_COLORMOD( 33, 48, THEMED_STYLE_SUBTLE, XML_dk1, XML_tint, 75000 ), // tint not documented!?
+ AUTOFORMAT_END()
+};
+
+const AutoFormatEntry spMinorGridLines[] =
+{
+ AUTOFORMAT_COLORMOD( 1, 40, THEMED_STYLE_SUBTLE, XML_tx1, XML_tint, 50000 ),
+ AUTOFORMAT_COLORMOD( 41, 48, THEMED_STYLE_SUBTLE, XML_tx1, XML_tint, 90000 ),
+ AUTOFORMAT_END()
+};
+
+const AutoFormatEntry spOtherLines[] =
+{
+ AUTOFORMAT_COLOR( 1, 32, THEMED_STYLE_SUBTLE, XML_tx1 ),
+ AUTOFORMAT_COLOR( 33, 34, THEMED_STYLE_SUBTLE, XML_dk1 ),
+ AUTOFORMAT_COLORMOD( 35, 40, THEMED_STYLE_SUBTLE, XML_dk1, XML_shade, 25000 ),
+ AUTOFORMAT_COLOR( 41, 48, THEMED_STYLE_SUBTLE, XML_lt1 ),
+ AUTOFORMAT_END()
+};
+
+const AutoFormatEntry spLinearSeriesLines[] =
+{
+ AUTOFORMAT_PATTERN( 1, 1, THEMED_STYLE_SUBTLE, 300, spAutoFormatPattern1 ),
+ AUTOFORMAT_PATTERN( 2, 2, THEMED_STYLE_SUBTLE, 300, spAutoFormatPattern2 ),
+ AUTOFORMAT_FADEDACCENTS( 3, THEMED_STYLE_SUBTLE, 300 ),
+ AUTOFORMAT_PATTERN( 9, 9, THEMED_STYLE_SUBTLE, 500, spAutoFormatPattern1 ),
+ AUTOFORMAT_PATTERN( 10, 10, THEMED_STYLE_SUBTLE, 500, spAutoFormatPattern2 ),
+ AUTOFORMAT_FADEDACCENTS( 11, THEMED_STYLE_SUBTLE, 500 ),
+ AUTOFORMAT_PATTERN( 17, 17, THEMED_STYLE_SUBTLE, 500, spAutoFormatPattern1 ),
+ AUTOFORMAT_PATTERN( 18, 18, THEMED_STYLE_SUBTLE, 500, spAutoFormatPattern2 ),
+ AUTOFORMAT_FADEDACCENTS( 19, THEMED_STYLE_SUBTLE, 500 ),
+ AUTOFORMAT_PATTERN( 25, 25, THEMED_STYLE_SUBTLE, 700, spAutoFormatPattern1 ),
+ AUTOFORMAT_PATTERN( 26, 26, THEMED_STYLE_SUBTLE, 700, spAutoFormatPattern2 ),
+ AUTOFORMAT_FADEDACCENTS( 27, THEMED_STYLE_SUBTLE, 700 ),
+ AUTOFORMAT_PATTERN( 33, 33, THEMED_STYLE_SUBTLE, 500, spAutoFormatPattern1 ),
+ AUTOFORMAT_PATTERN( 34, 34, THEMED_STYLE_SUBTLE, 500, spAutoFormatPattern2 ),
+ AUTOFORMAT_FADEDACCENTS( 35, THEMED_STYLE_SUBTLE, 500 ),
+ AUTOFORMAT_PATTERN( 41, 42, THEMED_STYLE_SUBTLE, 500, spAutoFormatPattern4 ),
+ AUTOFORMAT_PATTERN( 42, 42, THEMED_STYLE_SUBTLE, 500, spAutoFormatPattern2 ),
+ AUTOFORMAT_FADEDACCENTS( 43, THEMED_STYLE_SUBTLE, 500 ),
+ AUTOFORMAT_END()
+};
+
+const AutoFormatEntry spFilledSeriesLines[] =
+{
+ AUTOFORMAT_INVISIBLE( 1, 8 ),
+ AUTOFORMAT_COLOR( 9, 16, THEMED_STYLE_SUBTLE, XML_lt1 ),
+ AUTOFORMAT_INVISIBLE( 17, 32 ),
+ AUTOFORMAT_COLORMOD( 33, 33, THEMED_STYLE_SUBTLE, XML_dk1, XML_shade, 50000 ),
+ AUTOFORMAT_PATTERN( 34, 34, THEMED_STYLE_SUBTLE, 100, spAutoFormatPattern3 ),
+ AUTOFORMAT_ACCENTSMOD( 35, THEMED_STYLE_SUBTLE, XML_shade, 50000 ),
+ AUTOFORMAT_INVISIBLE( 41, 48 ),
+ AUTOFORMAT_END()
+};
+
+const AutoFormatEntry spFilledSeries2dFills[] =
+{
+ AUTOFORMAT_PATTERN( 1, 1, THEMED_STYLE_SUBTLE, 100, spAutoFormatPattern1 ),
+ AUTOFORMAT_PATTERN( 2, 2, THEMED_STYLE_SUBTLE, 100, spAutoFormatPattern2 ),
+ AUTOFORMAT_FADEDACCENTS( 3, THEMED_STYLE_SUBTLE, 100 ),
+ AUTOFORMAT_PATTERN( 9, 9, THEMED_STYLE_SUBTLE, 100, spAutoFormatPattern1 ),
+ AUTOFORMAT_PATTERN( 10, 10, THEMED_STYLE_SUBTLE, 100, spAutoFormatPattern2 ),
+ AUTOFORMAT_FADEDACCENTS( 11, THEMED_STYLE_SUBTLE, 100 ),
+ AUTOFORMAT_PATTERN( 17, 17, THEMED_STYLE_INTENSE, 100, spAutoFormatPattern1 ),
+ AUTOFORMAT_PATTERN( 18, 18, THEMED_STYLE_INTENSE, 100, spAutoFormatPattern2 ),
+ AUTOFORMAT_FADEDACCENTS( 19, THEMED_STYLE_INTENSE, 100 ),
+ AUTOFORMAT_PATTERN( 25, 25, THEMED_STYLE_INTENSE, 100, spAutoFormatPattern1 ),
+ AUTOFORMAT_PATTERN( 26, 26, THEMED_STYLE_INTENSE, 100, spAutoFormatPattern2 ),
+ AUTOFORMAT_FADEDACCENTS( 27, THEMED_STYLE_INTENSE, 100 ),
+ AUTOFORMAT_PATTERN( 33, 33, THEMED_STYLE_SUBTLE, 100, spAutoFormatPattern1 ),
+ AUTOFORMAT_PATTERN( 34, 34, THEMED_STYLE_SUBTLE, 100, spAutoFormatPattern2 ),
+ AUTOFORMAT_FADEDACCENTS( 35, THEMED_STYLE_SUBTLE, 100 ),
+ AUTOFORMAT_PATTERN( 41, 42, THEMED_STYLE_INTENSE, 100, spAutoFormatPattern4 ),
+ AUTOFORMAT_PATTERN( 42, 42, THEMED_STYLE_INTENSE, 100, spAutoFormatPattern2 ),
+ AUTOFORMAT_FADEDACCENTS( 43, THEMED_STYLE_INTENSE, 100 ),
+ AUTOFORMAT_END()
+};
+
+const AutoFormatEntry spFilledSeries3dFills[] =
+{
+ AUTOFORMAT_PATTERN( 1, 1, THEMED_STYLE_SUBTLE, 100, spAutoFormatPattern1 ),
+ AUTOFORMAT_PATTERN( 2, 2, THEMED_STYLE_SUBTLE, 100, spAutoFormatPattern2 ),
+ AUTOFORMAT_FADEDACCENTS( 3, THEMED_STYLE_SUBTLE, 100 ),
+ AUTOFORMAT_PATTERN( 9, 9, THEMED_STYLE_SUBTLE, 100, spAutoFormatPattern1 ),
+ AUTOFORMAT_PATTERN( 10, 10, THEMED_STYLE_SUBTLE, 100, spAutoFormatPattern2 ),
+ AUTOFORMAT_FADEDACCENTS( 11, THEMED_STYLE_SUBTLE, 100 ),
+ AUTOFORMAT_PATTERN( 17, 17, THEMED_STYLE_SUBTLE, 100, spAutoFormatPattern1 ),
+ AUTOFORMAT_PATTERN( 18, 18, THEMED_STYLE_INTENSE, 100, spAutoFormatPattern2 ),
+ AUTOFORMAT_FADEDACCENTS( 19, THEMED_STYLE_SUBTLE, 100 ),
+ AUTOFORMAT_PATTERN( 25, 25, THEMED_STYLE_SUBTLE, 100, spAutoFormatPattern1 ),
+ AUTOFORMAT_PATTERN( 26, 26, THEMED_STYLE_INTENSE, 100, spAutoFormatPattern2 ),
+ AUTOFORMAT_FADEDACCENTS( 27, THEMED_STYLE_SUBTLE, 100 ),
+ AUTOFORMAT_PATTERN( 33, 33, THEMED_STYLE_SUBTLE, 100, spAutoFormatPattern1 ),
+ AUTOFORMAT_PATTERN( 34, 34, THEMED_STYLE_SUBTLE, 100, spAutoFormatPattern2 ),
+ AUTOFORMAT_FADEDACCENTS( 35, THEMED_STYLE_SUBTLE, 100 ),
+ AUTOFORMAT_PATTERN( 41, 42, THEMED_STYLE_SUBTLE, 100, spAutoFormatPattern4 ),
+ AUTOFORMAT_PATTERN( 42, 42, THEMED_STYLE_INTENSE, 100, spAutoFormatPattern2 ),
+ AUTOFORMAT_FADEDACCENTS( 43, THEMED_STYLE_SUBTLE, 100 ),
+ AUTOFORMAT_END()
+};
+
+const AutoFormatEntry spUpDownBarLines[] =
+{
+ AUTOFORMAT_COLOR( 1, 16, THEMED_STYLE_SUBTLE, XML_tx1 ),
+ AUTOFORMAT_INVISIBLE( 17, 32 ),
+ AUTOFORMAT_COLOR( 33, 34, THEMED_STYLE_SUBTLE, XML_dk1 ),
+ AUTOFORMAT_ACCENTSMOD( 35, THEMED_STYLE_SUBTLE, XML_shade, 25000 ),
+ AUTOFORMAT_INVISIBLE( 41, 48 ),
+ AUTOFORMAT_END()
+};
+
+const AutoFormatEntry spUpBarFills[] =
+{
+ AUTOFORMAT_COLORMOD( 1, 1, THEMED_STYLE_SUBTLE, XML_dk1, XML_tint, 25000 ),
+ AUTOFORMAT_COLORMOD( 2, 2, THEMED_STYLE_SUBTLE, XML_dk1, XML_tint, 5000 ),
+ AUTOFORMAT_ACCENTSMOD( 3, THEMED_STYLE_SUBTLE, XML_tint, 25000 ),
+ AUTOFORMAT_COLORMOD( 9, 9, THEMED_STYLE_SUBTLE, XML_dk1, XML_tint, 25000 ),
+ AUTOFORMAT_COLORMOD( 10, 10, THEMED_STYLE_SUBTLE, XML_dk1, XML_tint, 5000 ),
+ AUTOFORMAT_ACCENTSMOD( 11, THEMED_STYLE_SUBTLE, XML_tint, 25000 ),
+ AUTOFORMAT_COLORMOD( 17, 17, THEMED_STYLE_INTENSE, XML_dk1, XML_tint, 25000 ),
+ AUTOFORMAT_COLORMOD( 18, 18, THEMED_STYLE_INTENSE, XML_dk1, XML_tint, 5000 ),
+ AUTOFORMAT_ACCENTSMOD( 19, THEMED_STYLE_INTENSE, XML_tint, 25000 ),
+ AUTOFORMAT_COLORMOD( 25, 25, THEMED_STYLE_INTENSE, XML_dk1, XML_tint, 25000 ),
+ AUTOFORMAT_COLORMOD( 26, 26, THEMED_STYLE_INTENSE, XML_dk1, XML_tint, 5000 ),
+ AUTOFORMAT_ACCENTSMOD( 27, THEMED_STYLE_INTENSE, XML_tint, 25000 ),
+ AUTOFORMAT_COLOR( 33, 40, THEMED_STYLE_SUBTLE, XML_lt1 ),
+ AUTOFORMAT_COLORMOD( 41, 41, THEMED_STYLE_INTENSE, XML_dk1, XML_tint, 25000 ),
+ AUTOFORMAT_COLOR( 42, 42, THEMED_STYLE_INTENSE, XML_lt1 ),
+ AUTOFORMAT_ACCENTSMOD( 43, THEMED_STYLE_INTENSE, XML_tint, 25000 ),
+ AUTOFORMAT_END()
+};
+
+const AutoFormatEntry spDownBarFills[] =
+{
+ AUTOFORMAT_COLORMOD( 1, 1, THEMED_STYLE_SUBTLE, XML_dk1, XML_tint, 85000 ),
+ AUTOFORMAT_COLORMOD( 2, 2, THEMED_STYLE_SUBTLE, XML_dk1, XML_tint, 95000 ),
+ AUTOFORMAT_ACCENTSMOD( 3, THEMED_STYLE_SUBTLE, XML_shade, 25000 ),
+ AUTOFORMAT_COLORMOD( 9, 9, THEMED_STYLE_SUBTLE, XML_dk1, XML_tint, 85000 ),
+ AUTOFORMAT_COLORMOD( 10, 10, THEMED_STYLE_SUBTLE, XML_dk1, XML_tint, 95000 ),
+ AUTOFORMAT_ACCENTSMOD( 11, THEMED_STYLE_SUBTLE, XML_shade, 25000 ),
+ AUTOFORMAT_COLORMOD( 17, 17, THEMED_STYLE_INTENSE, XML_dk1, XML_tint, 85000 ),
+ AUTOFORMAT_COLORMOD( 18, 18, THEMED_STYLE_INTENSE, XML_dk1, XML_tint, 95000 ),
+ AUTOFORMAT_ACCENTSMOD( 19, THEMED_STYLE_INTENSE, XML_shade, 25000 ),
+ AUTOFORMAT_COLORMOD( 25, 25, THEMED_STYLE_INTENSE, XML_dk1, XML_tint, 85000 ),
+ AUTOFORMAT_COLORMOD( 26, 26, THEMED_STYLE_INTENSE, XML_dk1, XML_tint, 95000 ),
+ AUTOFORMAT_ACCENTSMOD( 27, THEMED_STYLE_INTENSE, XML_shade, 25000 ),
+ AUTOFORMAT_COLORMOD( 33, 33, THEMED_STYLE_SUBTLE, XML_dk1, XML_tint, 85000 ),
+ AUTOFORMAT_COLORMOD( 34, 34, THEMED_STYLE_SUBTLE, XML_dk1, XML_tint, 95000 ),
+ AUTOFORMAT_ACCENTSMOD( 35, THEMED_STYLE_SUBTLE, XML_shade, 25000 ),
+ AUTOFORMAT_COLORMOD( 41, 41, THEMED_STYLE_INTENSE, XML_dk1, XML_tint, 85000 ),
+ AUTOFORMAT_COLOR( 42, 42, THEMED_STYLE_INTENSE, XML_dk1 ),
+ AUTOFORMAT_ACCENTSMOD( 43, THEMED_STYLE_INTENSE, XML_shade, 25000 ),
+ AUTOFORMAT_END()
+};
+
+#undef AUTOFORMAT_COLOR
+#undef AUTOFORMAT_COLORMOD
+#undef AUTOFORMAT_ACCENTSMOD
+#undef AUTOFORMAT_PATTERN
+#undef AUTOFORMAT_FADED
+#undef AUTOFORMAT_FADEDACCENTS
+#undef AUTOFORMAT_INVISIBLE
+#undef AUTOFORMAT_END
+
+const AutoFormatEntry* lclGetAutoFormatEntry( const AutoFormatEntry* pEntries, sal_Int32 nStyle )
+{
+ for( ; pEntries && (pEntries->mnFirstStyleIdx >= 0); ++pEntries )
+ if( (pEntries->mnFirstStyleIdx <= nStyle) && (nStyle <= pEntries->mnLastStyleIdx) )
+ return pEntries;
+ return nullptr;
+}
+
+struct AutoTextEntry
+{
+ sal_Int32 mnFirstStyleIdx; /// First chart style index.
+ sal_Int32 mnLastStyleIdx; /// Last chart style index.
+ sal_Int32 mnThemedFont; /// Themed font (minor/major).
+ sal_Int32 mnColorToken; /// Theme color token.
+ sal_Int32 mnDefFontSize; /// Default font size (1/100 points).
+ sal_Int32 mnRelFontSize; /// Font size relative to chart global font (percent).
+ bool mbBold; /// True = bold font.
+};
+
+#define AUTOTEXT_COLOR( first, last, themed_font, color_token, def_font_size, rel_font_size, bold ) \
+ { first, last, themed_font, color_token, def_font_size, rel_font_size, bold }
+
+#define AUTOTEXT_END() \
+ AUTOTEXT_COLOR( -1, -1, XML_none, XML_TOKEN_INVALID, 1000, 100, false )
+
+const AutoTextEntry spChartTitleTexts[] =
+{
+ AUTOTEXT_COLOR( 1, 40, XML_minor, XML_tx1, 1800, 120, true ),
+ AUTOTEXT_COLOR( 41, 48, XML_minor, XML_lt1, 1800, 120, true ),
+ AUTOTEXT_END()
+};
+
+const AutoTextEntry spAxisTitleTexts[] =
+{
+ AUTOTEXT_COLOR( 1, 40, XML_minor, XML_tx1, 1000, 100, true ),
+ AUTOTEXT_COLOR( 41, 48, XML_minor, XML_lt1, 1000, 100, true ),
+ AUTOTEXT_END()
+};
+
+const AutoTextEntry spOtherTexts[] =
+{
+ AUTOTEXT_COLOR( 1, 40, XML_minor, XML_tx1, 1000, 100, false ),
+ AUTOTEXT_COLOR( 41, 48, XML_minor, XML_lt1, 1000, 100, false ),
+ AUTOTEXT_END()
+};
+
+#undef AUTOTEXT_COLOR
+#undef AUTOTEXT_END
+
+const AutoTextEntry* lclGetAutoTextEntry( const AutoTextEntry* pEntries, sal_Int32 nStyle )
+{
+ for( ; pEntries && (pEntries->mnFirstStyleIdx >= 0); ++pEntries )
+ if( (pEntries->mnFirstStyleIdx <= nStyle) && (nStyle <= pEntries->mnLastStyleIdx) )
+ return pEntries;
+ return nullptr;
+}
+
+// These PropIds arrays will be indexed into using a ShapeProperty enum
+
+const ShapePropertyIds spnCommonPropIds =
+{
+ PROP_LineStyle, PROP_LineWidth, PROP_LineColor, PROP_LineTransparence, PROP_LineDashName,
+ PROP_LineCap, PROP_INVALID, PROP_INVALID, PROP_INVALID, PROP_INVALID, PROP_INVALID, PROP_INVALID, PROP_INVALID,
+ PROP_FillStyle, PROP_FillColor, PROP_FillTransparence, PROP_FillTransparenceGradientName, PROP_FillGradientName,
+ PROP_FillBitmapName, PROP_FillBitmapMode, PROP_FillBitmapSizeX, PROP_FillBitmapSizeY,
+ PROP_FillBitmapPositionOffsetX, PROP_FillBitmapPositionOffsetY, PROP_FillBitmapRectanglePoint,
+ PROP_FillHatchName, PROP_FillBackground
+};
+
+const ShapePropertyIds spnLinearPropIds =
+{
+ PROP_LineStyle, PROP_LineWidth, PROP_Color, PROP_Transparency, PROP_LineDashName,
+ PROP_LineCap, PROP_INVALID, PROP_INVALID, PROP_INVALID, PROP_INVALID, PROP_INVALID, PROP_INVALID, PROP_INVALID,
+ PROP_INVALID, PROP_INVALID, PROP_INVALID, PROP_INVALID, PROP_INVALID,
+ PROP_INVALID, PROP_INVALID, PROP_INVALID, PROP_INVALID,
+ PROP_INVALID, PROP_INVALID, PROP_INVALID,
+ PROP_INVALID, PROP_INVALID
+};
+
+const ShapePropertyIds spnFilledPropIds =
+{
+ PROP_BorderStyle,
+ PROP_BorderWidth,
+ PROP_BorderColor,
+ PROP_BorderTransparency,
+ PROP_BorderDashName,
+ PROP_LineCap,
+ PROP_INVALID,
+ PROP_INVALID,
+ PROP_INVALID,
+ PROP_INVALID,
+ PROP_INVALID,
+ PROP_INVALID,
+ PROP_INVALID,
+ PROP_FillStyle,
+ PROP_Color,
+ PROP_Transparency,
+ PROP_FillTransparenceGradientName,
+ PROP_GradientName,
+ PROP_FillBitmapName,
+ PROP_FillBitmapMode,
+ PROP_FillBitmapSizeX,
+ PROP_FillBitmapSizeY,
+ PROP_FillBitmapPositionOffsetX,
+ PROP_FillBitmapPositionOffsetY,
+ PROP_FillBitmapRectanglePoint,
+ PROP_HatchName,
+ PROP_FillBackground
+};
+
+/** Property info for common chart objects, to be used in ShapePropertyMap. */
+const ShapePropertyInfo saCommonPropInfo( spnCommonPropIds, false, true, true, true, true );
+/** Property info for linear data series, to be used in ShapePropertyMap. */
+const ShapePropertyInfo saLinearPropInfo( spnLinearPropIds, false, true, true, true, true );
+/** Property info for filled data series, to be used in ShapePropertyMap. */
+const ShapePropertyInfo saFilledPropInfo( spnFilledPropIds, false, true, true, true, true );
+
+/** Contains information about formatting of a specific chart object type. */
+struct ObjectTypeFormatEntry
+{
+ ObjectType meObjType; /// Object type for automatic format.
+ const ShapePropertyInfo& mrPropInfo; /// Property info for the ShapePropertyMap class.
+ const AutoFormatEntry* mpAutoLines; /// Automatic line formatting for all chart styles.
+ const AutoFormatEntry* mpAutoFills; /// Automatic fill formatting for all chart styles.
+ const AutoTextEntry* mpAutoTexts; /// Automatic text attributes for all chart styles.
+ bool mbIsFrame; /// True = object is a frame, false = object is a line.
+ ObjectTypeFormatEntry(ObjectType eObjType, const ShapePropertyInfo& rPropInfo,
+ const AutoFormatEntry* pAutoLines,
+ const AutoFormatEntry* pAutoFills,
+ const AutoTextEntry* pAutoTexts,
+ bool bIsFrame)
+ :meObjType(eObjType), mrPropInfo(rPropInfo), mpAutoLines(pAutoLines)
+ ,mpAutoFills(pAutoFills), mpAutoTexts(pAutoTexts), mbIsFrame(bIsFrame)
+ {} // prevent creation of implicit default ctor which fails in MSVC
+};
+
+#define TYPEFORMAT_FRAME( obj_type, prop_type, auto_texts, auto_lines, auto_fills ) \
+ { obj_type, prop_type, auto_lines, auto_fills, auto_texts, true }
+
+#define TYPEFORMAT_LINE( obj_type, prop_type, auto_texts, auto_lines ) \
+ { obj_type, prop_type, auto_lines, nullptr, auto_texts, false }
+
+const ObjectTypeFormatEntry spObjTypeFormatEntries[] =
+{
+ // object type property info auto text auto line auto fill
+ TYPEFORMAT_FRAME( OBJECTTYPE_CHARTSPACE, saCommonPropInfo, nullptr, spNoFormats, spChartSpaceFill ),
+ TYPEFORMAT_FRAME( OBJECTTYPE_CHARTTITLE, saCommonPropInfo, spChartTitleTexts, nullptr /* eq to Ch2 */, nullptr /* eq to Ch2 */),
+ TYPEFORMAT_FRAME( OBJECTTYPE_LEGEND, saCommonPropInfo, spOtherTexts, spNoFormats, spNoFormats ),
+ TYPEFORMAT_FRAME( OBJECTTYPE_PLOTAREA2D, saCommonPropInfo, nullptr, nullptr /* eq to Ch2 */, spPlotArea2dFills ),
+ TYPEFORMAT_FRAME( OBJECTTYPE_PLOTAREA3D, saCommonPropInfo, nullptr, nullptr /* eq to Ch2 */, nullptr /* eq to Ch2 */ ),
+ TYPEFORMAT_FRAME( OBJECTTYPE_WALL, saCommonPropInfo, nullptr, spWallFloorLines, spWallFloorFills ),
+ TYPEFORMAT_FRAME( OBJECTTYPE_FLOOR, saCommonPropInfo, nullptr, spWallFloorLines, spWallFloorFills ),
+ TYPEFORMAT_LINE( OBJECTTYPE_AXIS, saCommonPropInfo, spOtherTexts, spAxisLines ),
+ TYPEFORMAT_FRAME( OBJECTTYPE_AXISTITLE, saCommonPropInfo, spAxisTitleTexts, nullptr /* eq to Ch2 */, nullptr /* eq to Ch2 */ ),
+ TYPEFORMAT_FRAME( OBJECTTYPE_AXISUNIT, saCommonPropInfo, spAxisTitleTexts, nullptr /* eq in Ch2 */, nullptr /* eq in Ch2 */ ),
+ TYPEFORMAT_LINE( OBJECTTYPE_MAJORGRIDLINE, saCommonPropInfo, nullptr, spMajorGridLines ),
+ TYPEFORMAT_LINE( OBJECTTYPE_MINORGRIDLINE, saCommonPropInfo, nullptr, spMinorGridLines ),
+ TYPEFORMAT_LINE( OBJECTTYPE_LINEARSERIES2D, saLinearPropInfo, nullptr, spLinearSeriesLines ),
+ TYPEFORMAT_FRAME( OBJECTTYPE_FILLEDSERIES2D, saFilledPropInfo, nullptr, spFilledSeriesLines, spFilledSeries2dFills ),
+ TYPEFORMAT_FRAME( OBJECTTYPE_FILLEDSERIES3D, saFilledPropInfo, nullptr, spFilledSeriesLines, spFilledSeries3dFills ),
+ TYPEFORMAT_FRAME( OBJECTTYPE_DATALABEL, saCommonPropInfo, spOtherTexts, nullptr /* eq to Ch2 */, nullptr /* eq to Ch2 */ ),
+ TYPEFORMAT_LINE( OBJECTTYPE_TRENDLINE, saCommonPropInfo, nullptr, spOtherLines ),
+ TYPEFORMAT_FRAME( OBJECTTYPE_TRENDLINELABEL, saCommonPropInfo, spOtherTexts, nullptr /* eq to Ch2 */, nullptr /* eq to Ch2 */ ),
+ TYPEFORMAT_LINE( OBJECTTYPE_ERRORBAR, saCommonPropInfo, nullptr, spOtherLines ),
+ TYPEFORMAT_LINE( OBJECTTYPE_SERLINE, saCommonPropInfo, nullptr, spOtherLines ),
+ TYPEFORMAT_LINE( OBJECTTYPE_LEADERLINE, saCommonPropInfo, nullptr, spOtherLines ),
+ TYPEFORMAT_LINE( OBJECTTYPE_DROPLINE, saCommonPropInfo, nullptr, spOtherLines ),
+ TYPEFORMAT_LINE( OBJECTTYPE_HILOLINE, saLinearPropInfo, nullptr, spOtherLines ),
+ TYPEFORMAT_FRAME( OBJECTTYPE_UPBAR, saCommonPropInfo, nullptr, spUpDownBarLines, spUpBarFills ),
+ TYPEFORMAT_FRAME( OBJECTTYPE_DOWNBAR, saCommonPropInfo, nullptr, spUpDownBarLines, spDownBarFills ),
+ TYPEFORMAT_LINE( OBJECTTYPE_DATATABLE, saCommonPropInfo, spOtherTexts, spDataTableLines )
+};
+
+#undef TYPEFORMAT_FRAME
+#undef TYPEFORMAT_LINE
+
+void lclConvertPictureOptions( FillProperties& orFillProps, const PictureOptionsModel& rPicOptions )
+{
+ bool bStacked = (rPicOptions.mnPictureFormat == XML_stack) || (rPicOptions.mnPictureFormat == XML_stackScale);
+ orFillProps.maBlipProps.moBitmapMode = bStacked ? XML_tile : XML_stretch;
+}
+
+} // namespace
+
+struct ObjectFormatterData;
+
+namespace {
+
+class DetailFormatterBase
+{
+public:
+ explicit DetailFormatterBase(
+ ObjectFormatterData& rData,
+ const AutoFormatEntry* pAutoFormatEntry );
+ explicit DetailFormatterBase(
+ ObjectFormatterData& rData,
+ const AutoTextEntry* pAutoTextEntry );
+
+protected:
+ /** Returns the placeholder color which may depend on the passed series index. */
+ ::Color getPhColor( sal_Int32 nSeriesIdx ) const;
+
+private:
+ /** Resolves and returns the scheme color with the passed transformation. */
+ ::Color getSchemeColor( sal_Int32 nColorToken, sal_Int32 nModToken, sal_Int32 nModValue ) const;
+
+protected:
+ typedef ::std::vector< ::Color > ColorPatternVec;
+
+ ObjectFormatterData& mrData; /// Shared formatter data.
+ ::Color mnPhClr; /// RGB placeholder color for themed style.
+ ColorPatternVec maColorPattern; /// Different cycling colors for data series.
+};
+
+class LineFormatter : public DetailFormatterBase
+{
+public:
+ explicit LineFormatter(
+ ObjectFormatterData& rData,
+ const AutoFormatEntry* pAutoFormatEntry,
+ const ObjectType eObjType );
+
+ /** Converts line formatting to the passed property set. */
+ void convertFormatting(
+ ShapePropertyMap& rPropMap,
+ const ModelRef< Shape >& rxShapeProp,
+ sal_Int32 nSeriesIdx );
+
+private:
+ LinePropertiesPtr mxAutoLine; /// Automatic line properties.
+};
+
+class FillFormatter : public DetailFormatterBase
+{
+public:
+ explicit FillFormatter(
+ ObjectFormatterData& rData,
+ const AutoFormatEntry* pAutoFormatEntry,
+ const ObjectType eObjType );
+
+ /** Converts area formatting to the passed property set. */
+ void convertFormatting(
+ ShapePropertyMap& rPropMap,
+ const ModelRef< Shape >& rxShapeProp,
+ const PictureOptionsModel* pPicOptions,
+ sal_Int32 nSeriesIdx );
+
+private:
+ FillPropertiesPtr mxAutoFill; /// Automatic fill properties.
+};
+
+class TextFormatter : public DetailFormatterBase
+{
+public:
+ explicit TextFormatter(
+ ObjectFormatterData& rData,
+ const AutoTextEntry* pAutoTextEntry,
+ const ModelRef< TextBody >& rxGlobalTextProp );
+
+ /** Converts text formatting to the passed property set. */
+ void convertFormatting(
+ PropertySet& rPropSet,
+ const TextCharacterProperties* pTextProps );
+ /** Converts text formatting to the passed property set. */
+ void convertFormatting(
+ PropertySet& rPropSet,
+ const ModelRef< TextBody >& rxTextProp );
+
+private:
+ TextCharacterPropertiesPtr mxAutoText; /// Automatic text properties.
+};
+
+/** Formatter for a specific object type. */
+class ObjectTypeFormatter
+{
+public:
+ explicit ObjectTypeFormatter(
+ ObjectFormatterData& rData,
+ const ObjectTypeFormatEntry& rEntry,
+ const ChartSpaceModel& rChartSpace,
+ const ObjectType eObjType );
+
+ /** Sets frame formatting properties to the passed property set. */
+ void convertFrameFormatting(
+ PropertySet& rPropSet,
+ const ModelRef< Shape >& rxShapeProp,
+ const PictureOptionsModel* pPicOptions,
+ sal_Int32 nSeriesIdx );
+
+ /** Sets text formatting properties to the passed property set. */
+ void convertTextFormatting(
+ PropertySet& rPropSet,
+ const ModelRef< TextBody >& rxTextProp );
+
+ /** Sets frame/text formatting properties to the passed property set. */
+ void convertFormatting(
+ PropertySet& rPropSet,
+ const ModelRef< Shape >& rxShapeProp,
+ const ModelRef< TextBody >& rxTextProp );
+
+ /** Sets text formatting properties to the passed property set. */
+ void convertTextFormatting(
+ PropertySet& rPropSet,
+ const TextCharacterProperties& rTextProps );
+
+ /** Sets automatic fill properties to the passed property set. */
+ void convertAutomaticFill(
+ PropertySet& rPropSet,
+ sal_Int32 nSeriesIdx );
+
+private:
+ LineFormatter maLineFormatter; /// Converter for line formatting.
+ FillFormatter maFillFormatter; /// Converter for fill formatting.
+ TextFormatter maTextFormatter; /// Converter for text formatting.
+ ModelObjectHelper& mrModelObjHelper; /// Helper for named drawing formatting.
+ const ObjectTypeFormatEntry& mrEntry; /// Additional settings.
+};
+
+}
+
+struct ObjectFormatterData
+{
+ typedef RefMap< ObjectType, ObjectTypeFormatter > ObjectTypeFormatterMap;
+
+ const XmlFilterBase& mrFilter; /// Base filter object.
+ ObjectTypeFormatterMap maTypeFormatters; /// Formatters for all types of objects in a chart.
+ ModelObjectHelper maModelObjHelper; /// Helper for named drawing formatting (dashes, gradients, bitmaps).
+ Reference< XNumberFormats > mxNumFmts; /// Number formats collection of container document.
+ Reference< XNumberFormatTypes > mxNumTypes; /// Number format types collection of container document.
+ Locale maEnUsLocale; /// Locale struct containing en-US.
+ Locale maFromLocale; /// Empty locale struct.
+ sal_Int32 mnMaxSeriesIdx; /// Maximum series index used for color cycling/fading.
+
+ explicit ObjectFormatterData(
+ const XmlFilterBase& rFilter,
+ const Reference< XChartDocument >& rxChartDoc,
+ const ChartSpaceModel& rChartSpace );
+
+ ObjectTypeFormatter* getTypeFormatter( ObjectType eObjType );
+};
+
+DetailFormatterBase::DetailFormatterBase( ObjectFormatterData& rData, const AutoFormatEntry* pAutoFormatEntry ) :
+ mrData( rData ),
+ mnPhClr( ColorTransparency, 0xffffffff )
+{
+ if( !pAutoFormatEntry )
+ return;
+
+ if( pAutoFormatEntry->mpPattern )
+ {
+ // prepare multi-color pattern
+ for( const AutoFormatPatternEntry* pPatternEntry = pAutoFormatEntry->mpPattern; pPatternEntry->mnColorToken != XML_TOKEN_INVALID; ++pPatternEntry )
+ maColorPattern.push_back( getSchemeColor( pPatternEntry->mnColorToken, pPatternEntry->mnModToken, pPatternEntry->mnModValue ) );
+ }
+ else if( pAutoFormatEntry->mnColorToken != XML_TOKEN_INVALID )
+ {
+ // prepare color or single-color pattern (color fading)
+ mnPhClr = getSchemeColor( pAutoFormatEntry->mnColorToken, pAutoFormatEntry->mnModToken, pAutoFormatEntry->mnModValue );
+ if( pAutoFormatEntry->mbFadedColor )
+ maColorPattern.push_back( mnPhClr );
+ }
+}
+
+DetailFormatterBase::DetailFormatterBase( ObjectFormatterData& rData, const AutoTextEntry* pAutoTextEntry ) :
+ mrData( rData ),
+ mnPhClr( ColorTransparency, 0xffffffff )
+{
+ if( pAutoTextEntry && (pAutoTextEntry->mnColorToken != XML_TOKEN_INVALID) )
+ mnPhClr = getSchemeColor( pAutoTextEntry->mnColorToken, XML_TOKEN_INVALID, 0 );
+}
+
+::Color DetailFormatterBase::getPhColor( sal_Int32 nSeriesIdx ) const
+{
+ if( maColorPattern.empty() || (mrData.mnMaxSeriesIdx < 0) || (nSeriesIdx < 0) )
+ return mnPhClr;
+
+ /* Apply tint/shade depending on the cycle index. The colors of leading
+ series are darkened (color shade), the colors of trailing series are
+ lightened (color tint). Shade/tint is applied in an exclusive range of
+ -70% to 70%.
+
+ Example 1: 3 data series using single-color shading with accent color 1
+ (e.g. automatic chart style #3). Shade/tint is applied per series.
+ Shade/tint changes in steps of 140%/(<series_count+1) = 140%/4 = 35%,
+ starting at -70%:
+ Step 1: -70% -> Not used.
+ Step 2: -35% -> Series 1 has 35% shade of accent color 1.
+ Step 3: 0% -> Series 2 has pure accent color 1.
+ Step 4: 35% -> Series 3 has 35% tint of accent color 1.
+ Step 5: 70% -> Not used.
+
+ Example 2: 20 data series using accent color pattern (e.g. automatic
+ chart style #2). Each color cycle has a size of 6 series (accent colors
+ 1 to 6). Shade/tint is applied per color cycle.
+ Cycle #1: Series 1...6 are based on accent colors 1 to 6.
+ Cycle #2: Series 7...12 are based on accent colors 1 to 6.
+ Cycle #3: Series 13...18 are based on accent colors 1 to 6.
+ Cycle #4: Series 19...20 are based on accent colors 1 to 2.
+ Shade/tint changes in steps of 140%/(cycle_count+1) = 140%/5 = 28%,
+ starting at -70%:
+ Step 1: -70% -> Not used.
+ Step 2: -42% -> Cycle #1 has 42% shade of accent colors 1...6
+ step 3: -14% -> Cycle #2 has 14% shade of accent colors 1...6
+ step 4: 14% -> Cycle #3 has 14% tint of accent colors 1...6
+ step 5: 42% -> Cycle #4 has 42% tint of accent colors 1...6
+ step 6: 70% -> Not used.
+ */
+ ::Color nPhClr = maColorPattern[ static_cast< size_t >( nSeriesIdx % maColorPattern.size() ) ];
+ size_t nCycleIdx = static_cast< size_t >( nSeriesIdx / maColorPattern.size() );
+ size_t nMaxCycleIdx = static_cast< size_t >( mrData.mnMaxSeriesIdx / maColorPattern.size() );
+ double fShadeTint = static_cast< double >( nCycleIdx + 1 ) / (nMaxCycleIdx + 2) * 1.4 - 0.7;
+ if( fShadeTint != 0.0 )
+ {
+ Color aColor;
+ aColor.setSrgbClr( nPhClr );
+ aColor.addChartTintTransformation( fShadeTint );
+ nPhClr = aColor.getColor( mrData.mrFilter.getGraphicHelper() );
+ }
+
+ return nPhClr;
+}
+
+::Color DetailFormatterBase::getSchemeColor( sal_Int32 nColorToken, sal_Int32 nModToken, sal_Int32 nModValue ) const
+{
+ Color aColor;
+ aColor.setSchemeClr( nColorToken );
+ if( nModToken != XML_TOKEN_INVALID )
+ aColor.addTransformation( nModToken, nModValue );
+ return aColor.getColor( mrData.mrFilter.getGraphicHelper() );
+}
+
+LineFormatter::LineFormatter( ObjectFormatterData& rData, const AutoFormatEntry* pAutoFormatEntry, const ObjectType eObjType ) :
+ DetailFormatterBase(rData, pAutoFormatEntry)
+{
+ if( !pAutoFormatEntry )
+ return;
+
+ mxAutoLine = std::make_shared<LineProperties>();
+ mxAutoLine->maLineFill.moFillType = XML_noFill;
+ if( const Theme* pTheme = mrData.mrFilter.getCurrentTheme() )
+ if( const LineProperties* pLineProps = pTheme->getLineStyle( pAutoFormatEntry->mnThemedIdx ) )
+ *mxAutoLine = *pLineProps;
+ // set automatic border property for chartarea, because of tdf#81437 and tdf#82217, except for Impress (tdf#150176)
+ if ( eObjType == OBJECTTYPE_CHARTSPACE )
+ {
+ OUString aFilterName;
+ rData.mrFilter.getMediaDescriptor()[utl::MediaDescriptor::PROP_FILTERNAME] >>= aFilterName;
+ if (!aFilterName.startsWithIgnoreAsciiCase("Impress"))
+ {
+ mxAutoLine->maLineFill.moFillType = oox::GraphicHelper::getDefaultChartAreaLineStyle();
+ mxAutoLine->moLineWidth = oox::GraphicHelper::getDefaultChartAreaLineWidth();
+ // this value is what MSO 2016 use as a default color for chartspace border
+ mxAutoLine->maLineFill.maFillColor.setSrgbClr(0xD9D9D9);
+ }
+ }
+ // change line width according to chart auto style
+ if( mxAutoLine->moLineWidth.has() )
+ mxAutoLine->moLineWidth = mxAutoLine->moLineWidth.get() * pAutoFormatEntry->mnRelLineWidth / 100;
+}
+
+void LineFormatter::convertFormatting( ShapePropertyMap& rPropMap, const ModelRef< Shape >& rxShapeProp, sal_Int32 nSeriesIdx )
+{
+ LineProperties aLineProps;
+ if( mxAutoLine )
+ aLineProps.assignUsed( *mxAutoLine );
+ if( rxShapeProp.is() )
+ aLineProps.assignUsed( rxShapeProp->getLineProperties() );
+ aLineProps.pushToPropMap( rPropMap, mrData.mrFilter.getGraphicHelper(), getPhColor( nSeriesIdx ) );
+}
+
+FillFormatter::FillFormatter( ObjectFormatterData& rData, const AutoFormatEntry* pAutoFormatEntry, const ObjectType eObjType ) :
+ DetailFormatterBase( rData, pAutoFormatEntry )
+{
+ if( !pAutoFormatEntry )
+ return;
+
+ mxAutoFill = std::make_shared<FillProperties>();
+ if( eObjType != OBJECTTYPE_CHARTSPACE )
+ mxAutoFill->moFillType = XML_noFill;
+ if( const Theme* pTheme = mrData.mrFilter.getCurrentTheme() )
+ if( const FillProperties* pFillProps = pTheme->getFillStyle( pAutoFormatEntry->mnThemedIdx ) )
+ *mxAutoFill = *pFillProps;
+
+ if (eObjType == OBJECTTYPE_CHARTSPACE)
+ {
+ mxAutoFill->moFillType = rData.mrFilter.getGraphicHelper().getDefaultChartAreaFillStyle();
+ }
+}
+
+void FillFormatter::convertFormatting( ShapePropertyMap& rPropMap, const ModelRef< Shape >& rxShapeProp, const PictureOptionsModel* pPicOptions, sal_Int32 nSeriesIdx )
+{
+ FillProperties aFillProps;
+ if( mxAutoFill )
+ aFillProps.assignUsed( *mxAutoFill );
+ if (rxShapeProp)
+ aFillProps.assignUsed( rxShapeProp->getFillProperties() );
+ if( pPicOptions )
+ lclConvertPictureOptions( aFillProps, *pPicOptions );
+ aFillProps.pushToPropMap( rPropMap, mrData.mrFilter.getGraphicHelper(), 0, getPhColor( nSeriesIdx ) );
+}
+
+namespace {
+
+const TextCharacterProperties* lclGetTextProperties( const ModelRef< TextBody >& rxTextProp )
+{
+ return (rxTextProp.is() && !rxTextProp->getParagraphs().empty()) ?
+ &rxTextProp->getParagraphs().front()->getProperties().getTextCharacterProperties() : nullptr;
+}
+
+} // namespace
+
+TextFormatter::TextFormatter( ObjectFormatterData& rData, const AutoTextEntry* pAutoTextEntry, const ModelRef< TextBody >& rxGlobalTextProp ) :
+ DetailFormatterBase( rData, pAutoTextEntry )
+{
+ if( !pAutoTextEntry )
+ return;
+
+ mxAutoText = std::make_shared<TextCharacterProperties>();
+ if( const Theme* pTheme = mrData.mrFilter.getCurrentTheme() )
+ if( const TextCharacterProperties* pTextProps = pTheme->getFontStyle( pAutoTextEntry->mnThemedFont ) )
+ *mxAutoText = *pTextProps;
+ ::Color nTextColor = getPhColor( -1 );
+ if( sal_Int32(nTextColor) >= 0 ) {
+ mxAutoText->maFillProperties.maFillColor.setSrgbClr( nTextColor );
+ mxAutoText->maFillProperties.moFillType.set(XML_solidFill);
+ }
+ mxAutoText->moHeight = pAutoTextEntry->mnDefFontSize;
+ mxAutoText->moBold = pAutoTextEntry->mbBold;
+
+ if( const TextCharacterProperties* pTextProps = lclGetTextProperties( rxGlobalTextProp ) )
+ {
+ mxAutoText->assignUsed( *pTextProps );
+ if( pTextProps->moHeight.has() )
+ mxAutoText->moHeight = pTextProps->moHeight.get() * pAutoTextEntry->mnRelFontSize / 100;
+ }
+}
+
+void TextFormatter::convertFormatting( PropertySet& rPropSet, const TextCharacterProperties* pTextProps )
+{
+ TextCharacterProperties aTextProps;
+ if( mxAutoText )
+ aTextProps.assignUsed( *mxAutoText );
+ if( pTextProps )
+ aTextProps.assignUsed( *pTextProps );
+ aTextProps.pushToPropSet( rPropSet, mrData.mrFilter );
+}
+
+void TextFormatter::convertFormatting( PropertySet& rPropSet, const ModelRef< TextBody >& rxTextProp )
+{
+ convertFormatting( rPropSet, lclGetTextProperties( rxTextProp ) );
+}
+
+ObjectTypeFormatter::ObjectTypeFormatter( ObjectFormatterData& rData, const ObjectTypeFormatEntry& rEntry, const ChartSpaceModel& rChartSpace, const ObjectType eObjType ) :
+ maLineFormatter( rData, lclGetAutoFormatEntry( rEntry.mpAutoLines, rChartSpace.mnStyle ), eObjType ),
+ maFillFormatter( rData, lclGetAutoFormatEntry( rEntry.mpAutoFills, rChartSpace.mnStyle ), eObjType ),
+ maTextFormatter( rData, lclGetAutoTextEntry( rEntry.mpAutoTexts, rChartSpace.mnStyle ), rChartSpace.mxTextProp ),
+ mrModelObjHelper( rData.maModelObjHelper ),
+ mrEntry( rEntry )
+{
+}
+
+void ObjectTypeFormatter::convertFrameFormatting( PropertySet& rPropSet, const ModelRef< Shape >& rxShapeProp, const PictureOptionsModel* pPicOptions, sal_Int32 nSeriesIdx )
+{
+ ShapePropertyMap aPropMap( mrModelObjHelper, mrEntry.mrPropInfo );
+ maLineFormatter.convertFormatting( aPropMap, rxShapeProp, nSeriesIdx );
+ if( mrEntry.mbIsFrame )
+ maFillFormatter.convertFormatting( aPropMap, rxShapeProp, pPicOptions, nSeriesIdx );
+ rPropSet.setProperties( aPropMap );
+}
+
+void ObjectTypeFormatter::convertTextFormatting( PropertySet& rPropSet, const ModelRef< TextBody >& rxTextProp )
+{
+ maTextFormatter.convertFormatting( rPropSet, rxTextProp );
+}
+
+void ObjectTypeFormatter::convertFormatting( PropertySet& rPropSet, const ModelRef< Shape >& rxShapeProp, const ModelRef< TextBody >& rxTextProp )
+{
+ convertFrameFormatting( rPropSet, rxShapeProp, nullptr, -1 );
+ convertTextFormatting( rPropSet, rxTextProp );
+}
+
+void ObjectTypeFormatter::convertTextFormatting( PropertySet& rPropSet, const TextCharacterProperties& rTextProps )
+{
+ maTextFormatter.convertFormatting( rPropSet, &rTextProps );
+}
+
+void ObjectTypeFormatter::convertAutomaticFill( PropertySet& rPropSet, sal_Int32 nSeriesIdx )
+{
+ ShapePropertyMap aPropMap( mrModelObjHelper, mrEntry.mrPropInfo );
+ ModelRef< Shape > xShapeProp;
+ maFillFormatter.convertFormatting( aPropMap, xShapeProp, nullptr, nSeriesIdx );
+ rPropSet.setProperties( aPropMap );
+}
+
+ObjectFormatterData::ObjectFormatterData( const XmlFilterBase& rFilter, const Reference< XChartDocument >& rxChartDoc, const ChartSpaceModel& rChartSpace ) :
+ mrFilter( rFilter ),
+ maModelObjHelper( Reference< XMultiServiceFactory >( rxChartDoc, UNO_QUERY ) ),
+ maEnUsLocale( "en", "US", OUString() ),
+ mnMaxSeriesIdx( -1 )
+{
+ for(auto const &rEntry : spObjTypeFormatEntries)
+ maTypeFormatters[ rEntry.meObjType ] = std::make_shared<ObjectTypeFormatter>( *this, rEntry, rChartSpace, rEntry.meObjType );
+
+ try
+ {
+ Reference< XNumberFormatsSupplier > xNumFmtsSupp( rxChartDoc, UNO_QUERY_THROW );
+ mxNumFmts = xNumFmtsSupp->getNumberFormats();
+ mxNumTypes.set( mxNumFmts, UNO_QUERY );
+ }
+ catch( Exception& )
+ {
+ }
+ OSL_ENSURE( mxNumFmts.is() && mxNumTypes.is(), "ObjectFormatterData::ObjectFormatterData - cannot get number formats" );
+}
+
+ObjectTypeFormatter* ObjectFormatterData::getTypeFormatter( ObjectType eObjType )
+{
+ OSL_ENSURE( maTypeFormatters.has( eObjType ), "ObjectFormatterData::getTypeFormatter - unknown object type" );
+ return maTypeFormatters.get( eObjType ).get();
+}
+
+ObjectFormatter::ObjectFormatter( const XmlFilterBase& rFilter, const Reference< XChartDocument >& rxChartDoc, const ChartSpaceModel& rChartSpace ) :
+ mxData( std::make_shared<ObjectFormatterData>( rFilter, rxChartDoc, rChartSpace ) )
+{
+}
+
+ObjectFormatter::~ObjectFormatter()
+{
+}
+
+void ObjectFormatter::setMaxSeriesIndex( sal_Int32 nMaxSeriesIdx )
+{
+ mxData->mnMaxSeriesIdx = nMaxSeriesIdx;
+}
+
+sal_Int32 ObjectFormatter::getMaxSeriesIndex() const
+{
+ return mxData->mnMaxSeriesIdx;
+}
+
+void ObjectFormatter::convertFrameFormatting( PropertySet& rPropSet, const ModelRef< Shape >& rxShapeProp, ObjectType eObjType, sal_Int32 nSeriesIdx )
+{
+ if( ObjectTypeFormatter* pFormat = mxData->getTypeFormatter( eObjType ) )
+ pFormat->convertFrameFormatting( rPropSet, rxShapeProp, nullptr, nSeriesIdx );
+}
+
+void ObjectFormatter::convertFrameFormatting( PropertySet& rPropSet, const ModelRef< Shape >& rxShapeProp, const PictureOptionsModel& rPicOptions, ObjectType eObjType, sal_Int32 nSeriesIdx )
+{
+ if( ObjectTypeFormatter* pFormat = mxData->getTypeFormatter( eObjType ) )
+ pFormat->convertFrameFormatting( rPropSet, rxShapeProp, &rPicOptions, nSeriesIdx );
+}
+
+void ObjectFormatter::convertTextFormatting( PropertySet& rPropSet, const ModelRef< TextBody >& rxTextProp, ObjectType eObjType )
+{
+ if( ObjectTypeFormatter* pFormat = mxData->getTypeFormatter( eObjType ) )
+ pFormat->convertTextFormatting( rPropSet, rxTextProp );
+}
+
+void ObjectFormatter::convertFormatting( PropertySet& rPropSet, const ModelRef< Shape >& rxShapeProp, const ModelRef< TextBody >& rxTextProp, ObjectType eObjType )
+{
+ if( ObjectTypeFormatter* pFormat = mxData->getTypeFormatter( eObjType ) )
+ pFormat->convertFormatting( rPropSet, rxShapeProp, rxTextProp );
+}
+
+void ObjectFormatter::convertTextFormatting( PropertySet& rPropSet, const TextCharacterProperties& rTextProps, ObjectType eObjType )
+{
+ if( ObjectTypeFormatter* pFormat = mxData->getTypeFormatter( eObjType ) )
+ pFormat->convertTextFormatting( rPropSet, rTextProps );
+}
+
+void ObjectFormatter::convertTextRotation( PropertySet& rPropSet, const ModelRef< TextBody >& rxTextProp, bool bSupportsStacked, sal_Int32 nDefaultRotation )
+{
+ if( !rxTextProp.is() )
+ return;
+
+ bool bStacked = false;
+ if( bSupportsStacked )
+ {
+ sal_Int32 nVert = rxTextProp->getTextProperties().moVert.get( XML_horz );
+ bStacked = (nVert == XML_wordArtVert) || (nVert == XML_wordArtVertRtl);
+ rPropSet.setProperty( PROP_StackCharacters, bStacked );
+ }
+
+ /* Chart2 expects rotation angle as double value in range of [0,360).
+ OOXML counts clockwise, Chart2 counts counterclockwise. */
+ double fAngle = static_cast< double >( bStacked ? 0 : rxTextProp->getTextProperties().moRotation.get( nDefaultRotation ) );
+ // MS Office UI allows values only in range of [-90,90].
+ if ( fAngle < -5400000.0 || fAngle > 5400000.0 )
+ {
+ fAngle = 0.0;
+ }
+ fAngle = getDoubleIntervalValue< double >( -fAngle / 60000.0, 0.0, 360.0 );
+ rPropSet.setProperty( PROP_TextRotation, fAngle );
+}
+
+void ObjectFormatter::convertTextWrap( PropertySet& rPropSet, const ModelRef< TextBody >& rxTextProp )
+{
+ if( !rxTextProp.is() )
+ {
+ // set default value (in OOXML the default value is true)
+ rPropSet.setProperty( PROP_TextWordWrap, true );
+ return;
+ }
+
+ PropertyMap& aPropMap = rxTextProp->getTextProperties().maPropertyMap;
+ if( aPropMap.hasProperty(PROP_TextWordWrap) )
+ {
+ Any aValue = aPropMap.getProperty( PROP_TextWordWrap );
+ if( aValue.hasValue() )
+ {
+ bool bValue = false;
+ aValue >>= bValue;
+ rPropSet.setProperty( PROP_TextWordWrap, bValue );
+ }
+ }
+}
+
+void ObjectFormatter::convertNumberFormat( PropertySet& rPropSet, const NumberFormat& rNumberFormat, bool bAxis, bool bShowPercent )
+{
+ if( !mxData->mxNumFmts.is() )
+ return;
+
+ const bool bGeneral = rNumberFormat.maFormatCode.equalsIgnoreAsciiCase("general");
+ const bool bPercent = !bAxis && bShowPercent && !rNumberFormat.mbSourceLinked;
+ sal_Int32 nPropId = bPercent ? PROP_PercentageNumberFormat : PROP_NumberFormat;
+ OUString sFormatCode(rNumberFormat.maFormatCode);
+ if (bPercent && bGeneral)
+ sFormatCode = "0%";
+ try
+ {
+ sal_Int32 nIndex = bGeneral && !bPercent ?
+ mxData->mxNumTypes->getStandardIndex( mxData->maFromLocale ) :
+ mxData->mxNumFmts->addNewConverted( sFormatCode, mxData->maEnUsLocale, mxData->maFromLocale );
+ if( nIndex >= 0 )
+ rPropSet.setProperty( nPropId, nIndex );
+ }
+ catch( Exception& )
+ {
+ OSL_FAIL( OStringBuffer( "ObjectFormatter::convertNumberFormat - cannot create number format '" +
+ OUStringToOString( rNumberFormat.maFormatCode, osl_getThreadTextEncoding() ) + "'" ).getStr() );
+ }
+
+ // Setting "LinkNumberFormatToSource" does not really work, at least not for axis :-/
+ if (!bAxis)
+ rPropSet.setProperty(PROP_LinkNumberFormatToSource, Any(rNumberFormat.mbSourceLinked));
+ else
+ rPropSet.setProperty(PROP_LinkNumberFormatToSource, Any(rNumberFormat.maFormatCode.isEmpty()));
+}
+
+void ObjectFormatter::convertAutomaticFill( PropertySet& rPropSet, ObjectType eObjType, sal_Int32 nSeriesIdx )
+{
+ if( ObjectTypeFormatter* pFormat = mxData->getTypeFormatter( eObjType ) )
+ pFormat->convertAutomaticFill( rPropSet, nSeriesIdx );
+}
+
+bool ObjectFormatter::isAutomaticFill( const ModelRef< Shape >& rxShapeProp )
+{
+ return !rxShapeProp || !rxShapeProp->getFillProperties().moFillType.has();
+}
+
+} // namespace oox
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/oox/source/drawingml/chart/plotareacontext.cxx b/oox/source/drawingml/chart/plotareacontext.cxx
new file mode 100644
index 000000000..4afddee47
--- /dev/null
+++ b/oox/source/drawingml/chart/plotareacontext.cxx
@@ -0,0 +1,175 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ *
+ * This file incorporates work covered by the following license notice:
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed
+ * with this work for additional information regarding copyright
+ * ownership. The ASF licenses this file to you under the Apache
+ * License, Version 2.0 (the "License"); you may not use this file
+ * except in compliance with the License. You may obtain a copy of
+ * the License at http://www.apache.org/licenses/LICENSE-2.0 .
+ */
+
+#include <drawingml/chart/plotareacontext.hxx>
+
+#include <drawingml/shapepropertiescontext.hxx>
+#include <drawingml/chart/axiscontext.hxx>
+#include <drawingml/chart/plotareamodel.hxx>
+#include <drawingml/chart/seriescontext.hxx>
+#include <drawingml/chart/typegroupcontext.hxx>
+#include <drawingml/chart/datatablecontext.hxx>
+#include <oox/core/xmlfilterbase.hxx>
+#include <oox/helper/attributelist.hxx>
+#include <oox/token/namespaces.hxx>
+#include <oox/token/tokens.hxx>
+
+namespace oox::drawingml::chart {
+
+using ::oox::core::ContextHandler2Helper;
+using ::oox::core::ContextHandlerRef;
+
+View3DContext::View3DContext( ContextHandler2Helper& rParent, View3DModel& rModel ) :
+ ContextBase< View3DModel >( rParent, rModel )
+{
+}
+
+View3DContext::~View3DContext()
+{
+}
+
+ContextHandlerRef View3DContext::onCreateContext( sal_Int32 nElement, const AttributeList& rAttribs )
+{
+ bool bMSO2007Doc = getFilter().isMSO2007Document();
+ switch( getCurrentElement() )
+ {
+ case C_TOKEN( view3D ):
+ switch( nElement )
+ {
+ case C_TOKEN( depthPercent ):
+ mrModel.mnDepthPercent = rAttribs.getInteger( XML_val, 100 );
+ return nullptr;
+ case C_TOKEN( hPercent ):
+ mrModel.monHeightPercent = rAttribs.getInteger( XML_val, 100 );
+ return nullptr;
+ case C_TOKEN( perspective ):
+ mrModel.mnPerspective = rAttribs.getInteger( XML_val, 30 );
+ return nullptr;
+ case C_TOKEN( rAngAx ):
+ mrModel.mbRightAngled = rAttribs.getBool( XML_val, !bMSO2007Doc );
+ return nullptr;
+ case C_TOKEN( rotX ):
+ // default value dependent on chart type
+ mrModel.monRotationX = rAttribs.getInteger( XML_val );
+ return nullptr;
+ case C_TOKEN( rotY ):
+ // default value dependent on chart type
+ mrModel.monRotationY = rAttribs.getInteger( XML_val );
+ return nullptr;
+ }
+ break;
+ }
+ return nullptr;
+}
+
+WallFloorContext::WallFloorContext( ContextHandler2Helper& rParent, WallFloorModel& rModel ) :
+ ContextBase< WallFloorModel >( rParent, rModel )
+{
+}
+
+WallFloorContext::~WallFloorContext()
+{
+}
+
+ContextHandlerRef WallFloorContext::onCreateContext( sal_Int32 nElement, const AttributeList& )
+{
+ bool bMSO2007Doc = getFilter().isMSO2007Document();
+ switch( getCurrentElement() )
+ {
+ case C_TOKEN( backWall ):
+ case C_TOKEN( floor ):
+ case C_TOKEN( sideWall ):
+ switch( nElement )
+ {
+ case C_TOKEN( pictureOptions ):
+ return new PictureOptionsContext( *this, mrModel.mxPicOptions.create(bMSO2007Doc) );
+ case C_TOKEN( spPr ):
+ return new ShapePropertiesContext( *this, mrModel.mxShapeProp.create() );
+ }
+ break;
+ }
+ return nullptr;
+}
+
+PlotAreaContext::PlotAreaContext( ContextHandler2Helper& rParent, PlotAreaModel& rModel ) :
+ ContextBase< PlotAreaModel >( rParent, rModel )
+{
+}
+
+PlotAreaContext::~PlotAreaContext()
+{
+}
+
+ContextHandlerRef PlotAreaContext::onCreateContext( sal_Int32 nElement, const AttributeList& )
+{
+ bool bMSO2007Doc = getFilter().isMSO2007Document();
+ switch( getCurrentElement() )
+ {
+ case C_TOKEN( plotArea ):
+ switch( nElement )
+ {
+ case C_TOKEN( area3DChart ):
+ case C_TOKEN( areaChart ):
+ return new AreaTypeGroupContext( *this, mrModel.maTypeGroups.create( nElement, bMSO2007Doc ) );
+ case C_TOKEN( bar3DChart ):
+ case C_TOKEN( barChart ):
+ return new BarTypeGroupContext( *this, mrModel.maTypeGroups.create( nElement, bMSO2007Doc ) );
+ case C_TOKEN( bubbleChart ):
+ return new BubbleTypeGroupContext( *this, mrModel.maTypeGroups.create( nElement, bMSO2007Doc ) );
+ case C_TOKEN( line3DChart ):
+ case C_TOKEN( lineChart ):
+ case C_TOKEN( stockChart ):
+ return new LineTypeGroupContext( *this, mrModel.maTypeGroups.create( nElement, bMSO2007Doc ) );
+ case C_TOKEN( doughnutChart ):
+ case C_TOKEN( ofPieChart ):
+ case C_TOKEN( pie3DChart ):
+ case C_TOKEN( pieChart ):
+ return new PieTypeGroupContext( *this, mrModel.maTypeGroups.create( nElement, bMSO2007Doc ) );
+ case C_TOKEN( radarChart ):
+ return new RadarTypeGroupContext( *this, mrModel.maTypeGroups.create( nElement, bMSO2007Doc ) );
+ case C_TOKEN( scatterChart ):
+ return new ScatterTypeGroupContext( *this, mrModel.maTypeGroups.create( nElement, bMSO2007Doc ) );
+ case C_TOKEN( surface3DChart ):
+ case C_TOKEN( surfaceChart ):
+ return new SurfaceTypeGroupContext( *this, mrModel.maTypeGroups.create( nElement, bMSO2007Doc ) );
+
+ case C_TOKEN( catAx ):
+ return new CatAxisContext( *this, mrModel.maAxes.create( nElement, bMSO2007Doc ) );
+ case C_TOKEN( dateAx ):
+ return new DateAxisContext( *this, mrModel.maAxes.create( nElement, bMSO2007Doc ) );
+ case C_TOKEN( serAx ):
+ return new SerAxisContext( *this, mrModel.maAxes.create( nElement, bMSO2007Doc ) );
+ case C_TOKEN( valAx ):
+ return new ValAxisContext( *this, mrModel.maAxes.create( nElement, bMSO2007Doc ) );
+
+ case C_TOKEN( layout ):
+ return new LayoutContext( *this, mrModel.mxLayout.create() );
+ case C_TOKEN( spPr ):
+ return new ShapePropertiesContext( *this, mrModel.mxShapeProp.getOrCreate() );
+ case C_TOKEN(dTable):
+ return new DataTableContext( *this, mrModel.mxDataTable.create() );
+ }
+ break;
+ }
+ return nullptr;
+}
+
+} // namespace oox::drawingml::chart
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/oox/source/drawingml/chart/plotareaconverter.cxx b/oox/source/drawingml/chart/plotareaconverter.cxx
new file mode 100644
index 000000000..afbb28ade
--- /dev/null
+++ b/oox/source/drawingml/chart/plotareaconverter.cxx
@@ -0,0 +1,481 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ *
+ * This file incorporates work covered by the following license notice:
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed
+ * with this work for additional information regarding copyright
+ * ownership. The ASF licenses this file to you under the Apache
+ * License, Version 2.0 (the "License"); you may not use this file
+ * except in compliance with the License. You may obtain a copy of
+ * the License at http://www.apache.org/licenses/LICENSE-2.0 .
+ */
+
+#include <drawingml/chart/plotareaconverter.hxx>
+
+#include <com/sun/star/chart/XChartDocument.hpp>
+#include <com/sun/star/chart/XDiagramPositioning.hpp>
+#include <com/sun/star/chart2/XChartDocument.hpp>
+#include <com/sun/star/chart2/XCoordinateSystemContainer.hpp>
+#include <com/sun/star/chart2/XDiagram.hpp>
+#include <com/sun/star/drawing/Direction3D.hpp>
+#include <com/sun/star/drawing/ProjectionMode.hpp>
+#include <com/sun/star/drawing/ShadeMode.hpp>
+#include <osl/diagnose.h>
+#include <drawingml/chart/datatableconverter.hxx>
+#include <drawingml/chart/axisconverter.hxx>
+#include <drawingml/chart/plotareamodel.hxx>
+#include <drawingml/chart/typegroupconverter.hxx>
+#include <oox/core/xmlfilterbase.hxx>
+#include <oox/token/namespaces.hxx>
+#include <oox/token/properties.hxx>
+#include <oox/token/tokens.hxx>
+#include <tools/helpers.hxx>
+
+namespace oox::drawingml::chart {
+
+using namespace ::com::sun::star;
+using namespace ::com::sun::star::chart2;
+using namespace ::com::sun::star::uno;
+
+namespace {
+
+/** Axes set model. This is a helper for the plot area converter collecting all
+ type groups and axes of the primary or secondary axes set. */
+struct AxesSetModel
+{
+ typedef ModelVector< TypeGroupModel > TypeGroupVector;
+ typedef ModelMap< sal_Int32, AxisModel > AxisMap;
+
+ TypeGroupVector maTypeGroups; /// All type groups containing data series.
+ AxisMap maAxes; /// All axes mapped by API axis type.
+
+ explicit AxesSetModel() {}
+};
+
+/** Axes set converter. This is a helper class for the plot area converter. */
+class AxesSetConverter : public ConverterBase< AxesSetModel >
+{
+public:
+ explicit AxesSetConverter( const ConverterRoot& rParent, AxesSetModel& rModel );
+
+ /** Converts the axes set model to a chart2 diagram. Returns an automatic
+ chart title from a single series title, if possible. */
+ void convertFromModel(
+ const Reference< XDiagram >& rxDiagram,
+ View3DModel& rView3DModel,
+ sal_Int32 nAxesSetIdx,
+ bool bSupportsVaryColorsByPoint,
+ bool bUseFixedInnerSize );
+
+ /** Returns the automatic chart title if the axes set contains only one series. */
+ const OUString& getAutomaticTitle() const { return maAutoTitle; }
+ /** Returns true, if the chart is three-dimensional. */
+ bool is3dChart() const { return mb3dChart; }
+ /** Returns true, if chart type supports wall and floor format in 3D mode. */
+ bool isWall3dChart() const { return mbWall3dChart; }
+ /** Returns true, if chart is a pie chart or doughnut chart. */
+ bool isPieChart() const { return mbPieChart; }
+
+private:
+ OUString maAutoTitle;
+ bool mb3dChart;
+ bool mbWall3dChart;
+ bool mbPieChart;
+};
+
+AxesSetConverter::AxesSetConverter( const ConverterRoot& rParent, AxesSetModel& rModel ) :
+ ConverterBase< AxesSetModel >( rParent, rModel ),
+ mb3dChart( false ),
+ mbWall3dChart( false ),
+ mbPieChart( false )
+{
+}
+
+ModelRef< AxisModel > lclGetOrCreateAxis( const AxesSetModel::AxisMap& rFromAxes, sal_Int32 nAxisIdx, sal_Int32 nDefTypeId, bool bMSO2007Doc )
+{
+ ModelRef< AxisModel > xAxis = rFromAxes.get( nAxisIdx );
+ if( !xAxis )
+ xAxis.create( nDefTypeId, bMSO2007Doc ).mbDeleted = true; // missing axis is invisible
+ return xAxis;
+}
+
+void AxesSetConverter::convertFromModel( const Reference< XDiagram >& rxDiagram,
+ View3DModel& rView3DModel, sal_Int32 nAxesSetIdx,
+ bool bSupportsVaryColorsByPoint, bool bUseFixedInnerSize)
+{
+ // create type group converter objects for all type groups
+ typedef RefVector< TypeGroupConverter > TypeGroupConvVector;
+ TypeGroupConvVector aTypeGroups;
+ for (auto const& typeGroup : mrModel.maTypeGroups)
+ aTypeGroups.push_back( std::make_shared<TypeGroupConverter>( *this, *typeGroup ) );
+
+ OSL_ENSURE( !aTypeGroups.empty(), "AxesSetConverter::convertFromModel - no type groups in axes set" );
+ if( aTypeGroups.empty() )
+ return;
+
+ try
+ {
+ // first type group needed for coordinate system and axis conversion
+ TypeGroupConverter& rFirstTypeGroup = *aTypeGroups.front();
+
+ // get automatic chart title, if there is only one type group
+ if( aTypeGroups.size() == 1 )
+ maAutoTitle = rFirstTypeGroup.getSingleSeriesTitle();
+
+ /* Create a coordinate system. For now, all type groups from all axes sets
+ have to be inserted into one coordinate system. Later, chart2 should
+ support using one coordinate system for each axes set. */
+ Reference< XCoordinateSystem > xCoordSystem;
+ Reference< XCoordinateSystemContainer > xCoordSystemCont( rxDiagram, UNO_QUERY_THROW );
+ Sequence< Reference< XCoordinateSystem > > aCoordSystems = xCoordSystemCont->getCoordinateSystems();
+ if( aCoordSystems.hasElements() )
+ {
+ OSL_ENSURE( aCoordSystems.getLength() == 1, "AxesSetConverter::convertFromModel - too many coordinate systems" );
+ xCoordSystem = aCoordSystems[ 0 ];
+ OSL_ENSURE( xCoordSystem.is(), "AxesSetConverter::convertFromModel - invalid coordinate system" );
+ }
+ else
+ {
+ xCoordSystem = rFirstTypeGroup.createCoordinateSystem();
+ if( xCoordSystem.is() )
+ xCoordSystemCont->addCoordinateSystem( xCoordSystem );
+ }
+
+ // 3D view settings
+ mb3dChart = rFirstTypeGroup.is3dChart();
+ mbWall3dChart = rFirstTypeGroup.isWall3dChart();
+ mbPieChart = rFirstTypeGroup.getTypeInfo().meTypeCategory == TYPECATEGORY_PIE;
+ if( mb3dChart )
+ {
+ View3DConverter aView3DConv( *this, rView3DModel );
+ aView3DConv.convertFromModel( rxDiagram, rFirstTypeGroup );
+ }
+
+ /* Convert all chart type groups. Each type group will add its series
+ to the data provider attached to the chart document. */
+ if( xCoordSystem.is() )
+ {
+ bool bMSO2007Doc = getFilter().isMSO2007Document();
+ // convert all axes (create missing axis models)
+ ModelRef< AxisModel > xXAxis = lclGetOrCreateAxis( mrModel.maAxes, API_X_AXIS, rFirstTypeGroup.getTypeInfo().mbCategoryAxis ? C_TOKEN( catAx ) : C_TOKEN( valAx ), bMSO2007Doc );
+ ModelRef< AxisModel > xYAxis = lclGetOrCreateAxis( mrModel.maAxes, API_Y_AXIS, C_TOKEN( valAx ), bMSO2007Doc );
+
+ AxisConverter aXAxisConv( *this, *xXAxis );
+ aXAxisConv.convertFromModel(xCoordSystem, aTypeGroups, xYAxis.get(), nAxesSetIdx,
+ API_X_AXIS, bUseFixedInnerSize);
+ AxisConverter aYAxisConv( *this, *xYAxis );
+ aYAxisConv.convertFromModel(xCoordSystem, aTypeGroups, xXAxis.get(), nAxesSetIdx,
+ API_Y_AXIS, bUseFixedInnerSize);
+
+ if( rFirstTypeGroup.isDeep3dChart() )
+ {
+ ModelRef< AxisModel > xZAxis = lclGetOrCreateAxis( mrModel.maAxes, API_Z_AXIS, C_TOKEN( serAx ), bMSO2007Doc );
+ AxisConverter aZAxisConv( *this, *xZAxis );
+ aZAxisConv.convertFromModel(xCoordSystem, aTypeGroups, nullptr, nAxesSetIdx,
+ API_Z_AXIS, bUseFixedInnerSize);
+ }
+
+ // convert all chart type groups, this converts all series data and formatting
+ for (auto const& typeGroup : aTypeGroups)
+ typeGroup->convertFromModel( rxDiagram, xCoordSystem, nAxesSetIdx, bSupportsVaryColorsByPoint );
+ }
+ }
+ catch( Exception& )
+ {
+ }
+}
+
+} // namespace
+
+View3DConverter::View3DConverter( const ConverterRoot& rParent, View3DModel& rModel ) :
+ ConverterBase< View3DModel >( rParent, rModel )
+{
+}
+
+View3DConverter::~View3DConverter()
+{
+}
+
+void View3DConverter::convertFromModel( const Reference< XDiagram >& rxDiagram, TypeGroupConverter const & rTypeGroup )
+{
+ namespace cssd = ::com::sun::star::drawing;
+ PropertySet aPropSet( rxDiagram );
+
+ sal_Int32 nRotationY = 0;
+ sal_Int32 nRotationX = 0;
+ bool bRightAngled = false;
+ sal_Int32 nAmbientColor = 0;
+ sal_Int32 nLightColor = 0;
+
+ if( rTypeGroup.getTypeInfo().meTypeCategory == TYPECATEGORY_PIE )
+ {
+ // Y rotation used as 'first pie slice angle' in 3D pie charts
+ rTypeGroup.convertPieRotation( aPropSet, mrModel.monRotationY.get( 0 ) );
+ // X rotation a.k.a. elevation (map OOXML [0..90] to Chart2 [-90,0])
+ nRotationX = getLimitedValue< sal_Int32, sal_Int32 >( mrModel.monRotationX.get( 15 ), 0, 90 ) - 90;
+ // no right-angled axes in pie charts
+ bRightAngled = false;
+ // ambient color (Gray 30%)
+ nAmbientColor = 0xB3B3B3;
+ // light color (Gray 70%)
+ nLightColor = 0x4C4C4C;
+ }
+ else // 3D bar/area/line charts
+ {
+ // Y rotation (OOXML [0..359], Chart2 [-179,180])
+ nRotationY = mrModel.monRotationY.get( 20 );
+ // X rotation a.k.a. elevation (OOXML [-90..90], Chart2 [-179,180])
+ nRotationX = getLimitedValue< sal_Int32, sal_Int32 >( mrModel.monRotationX.get( 15 ), -90, 90 );
+ // right-angled axes
+ bRightAngled = mrModel.mbRightAngled;
+ // ambient color (Gray 20%)
+ nAmbientColor = 0xCCCCCC;
+ // light color (Gray 60%)
+ nLightColor = 0x666666;
+ }
+
+ // Y rotation (map OOXML [0..359] to Chart2 [-179,180])
+ nRotationY = NormAngle180(nRotationY);
+ /* Perspective (map OOXML [0..200] to Chart2 [0,100]). Seems that MSO 2007 is
+ buggy here, the XML plugin of MSO 2003 writes the correct perspective in
+ the range from 0 to 100. We will emulate the wrong behaviour of MSO 2007. */
+ sal_Int32 nPerspective = getLimitedValue< sal_Int32, sal_Int32 >( mrModel.mnPerspective / 2, 0, 100 );
+ // projection mode (parallel axes, if right-angled, #i90360# or if perspective is at 0%)
+ bool bParallel = bRightAngled || (nPerspective == 0);
+ cssd::ProjectionMode eProjMode = bParallel ? cssd::ProjectionMode_PARALLEL : cssd::ProjectionMode_PERSPECTIVE;
+
+ // set rotation properties
+ aPropSet.setProperty( PROP_RightAngledAxes, bRightAngled );
+ aPropSet.setProperty( PROP_RotationVertical, nRotationY );
+ aPropSet.setProperty( PROP_RotationHorizontal, nRotationX );
+ aPropSet.setProperty( PROP_Perspective, nPerspective );
+ aPropSet.setProperty( PROP_D3DScenePerspective, eProjMode );
+
+ // set light settings
+ aPropSet.setProperty( PROP_D3DSceneShadeMode, cssd::ShadeMode_FLAT );
+ aPropSet.setProperty( PROP_D3DSceneAmbientColor, nAmbientColor );
+ aPropSet.setProperty( PROP_D3DSceneLightOn1, false );
+ aPropSet.setProperty( PROP_D3DSceneLightOn2, true );
+ aPropSet.setProperty( PROP_D3DSceneLightColor2, nLightColor );
+ aPropSet.setProperty( PROP_D3DSceneLightDirection2, cssd::Direction3D( 0.2, 0.4, 1.0 ) );
+}
+
+WallFloorConverter::WallFloorConverter( const ConverterRoot& rParent, WallFloorModel& rModel ) :
+ ConverterBase< WallFloorModel >( rParent, rModel )
+{
+}
+
+WallFloorConverter::~WallFloorConverter()
+{
+}
+
+void WallFloorConverter::convertFromModel( const Reference< XDiagram >& rxDiagram, ObjectType eObjType )
+{
+ bool bMSO2007Doc = getFilter().isMSO2007Document();
+ if( rxDiagram.is() )
+ {
+ PropertySet aPropSet;
+ switch( eObjType )
+ {
+ case OBJECTTYPE_FLOOR: aPropSet.set( rxDiagram->getFloor() ); break;
+ case OBJECTTYPE_WALL: aPropSet.set( rxDiagram->getWall() ); break;
+ default: OSL_FAIL( "WallFloorConverter::convertFromModel - invalid object type" );
+ }
+ if( aPropSet.is() )
+ getFormatter().convertFrameFormatting( aPropSet, mrModel.mxShapeProp, mrModel.mxPicOptions.getOrCreate(bMSO2007Doc), eObjType );
+ }
+}
+
+PlotAreaConverter::PlotAreaConverter( const ConverterRoot& rParent, PlotAreaModel& rModel ) :
+ ConverterBase< PlotAreaModel >( rParent, rModel ),
+ mb3dChart( false ),
+ mbWall3dChart( false ),
+ mbPieChart( false )
+{
+}
+
+PlotAreaConverter::~PlotAreaConverter()
+{
+}
+
+void PlotAreaConverter::convertFromModel( View3DModel& rView3DModel )
+{
+ /* Create the diagram object and attach it to the chart document. One
+ diagram is used to carry all coordinate systems and data series. */
+ Reference< XDiagram > xDiagram;
+ try
+ {
+ xDiagram.set( createInstance( "com.sun.star.chart2.Diagram" ), UNO_QUERY_THROW );
+ getChartDocument()->setFirstDiagram( xDiagram );
+ }
+ catch( Exception& )
+ {
+ }
+
+ // store all axis models in a map, keyed by axis identifier
+ typedef ModelMap< sal_Int32, AxisModel > AxisMap;
+ AxisMap aAxisMap;
+ std::vector<sal_Int32>rValAxisIds;
+ std::vector<sal_Int32>rRealValAxisIds;
+
+ for (auto const& atypeGroup : mrModel.maTypeGroups)
+ {
+ if (atypeGroup->maAxisIds.size() > 1)
+ {
+ // let's collect which axId belongs to the Y Axis according to maTypeGroups
+ rRealValAxisIds.push_back(atypeGroup->maAxisIds[1]);
+ }
+ }
+
+ for (auto const& axis : mrModel.maAxes)
+ {
+ OSL_ENSURE( axis->mnAxisId >= 0, "PlotAreaConverter::convertFromModel - invalid axis identifier" );
+ OSL_ENSURE( !aAxisMap.has( axis->mnAxisId ), "PlotAreaConverter::convertFromModel - axis identifiers not unique" );
+ if( axis->mnAxisId != -1 )
+ aAxisMap[ axis->mnAxisId ] = axis;
+
+ if ( axis->mnAxisId != -1 && axis->mnTypeId == C_TOKEN(valAx) )
+ {
+ for (size_t i = 0; i < rRealValAxisIds.size(); i++)
+ {
+ if (axis->mnAxisId == rRealValAxisIds[i])
+ {
+ // let's collect which axId belongs to the Y Axis according to maAxes
+ rValAxisIds.push_back(axis->mnAxisId);
+ }
+ }
+ }
+ }
+
+ // group the type group models into different axes sets
+ typedef ModelVector< AxesSetModel > AxesSetVector;
+ AxesSetVector aAxesSets;
+ sal_Int32 nMaxSeriesIdx = -1;
+ for (auto const& typeGroup : mrModel.maTypeGroups)
+ {
+ if( !typeGroup->maSeries.empty() )
+ {
+ // try to find a compatible axes set for the type group
+ AxesSetModel* pAxesSet = nullptr;
+ for (auto const& axesSet : aAxesSets)
+ {
+ if( axesSet->maTypeGroups.front()->maAxisIds == typeGroup->maAxisIds )
+ {
+ pAxesSet = axesSet.get();
+ if (pAxesSet)
+ break;
+ }
+ }
+
+ // not possible to insert into an existing axes set -> start a new axes set
+ if( !pAxesSet )
+ {
+ pAxesSet = &aAxesSets.create();
+ // find axis models used by the type group
+ const std::vector<sal_Int32>& rAxisIds = typeGroup->maAxisIds;
+ if( !rAxisIds.empty() )
+ pAxesSet->maAxes[ API_X_AXIS ] = aAxisMap.get( rAxisIds[ 0 ] );
+ if( rAxisIds.size() >= 2 )
+ pAxesSet->maAxes[ API_Y_AXIS ] = aAxisMap.get( rAxisIds[ 1 ] );
+ if( rAxisIds.size() >= 3 )
+ pAxesSet->maAxes[ API_Z_AXIS ] = aAxisMap.get( rAxisIds[ 2 ] );
+ }
+
+ // insert the type group model
+ pAxesSet->maTypeGroups.push_back( typeGroup );
+
+ // collect the maximum series index for automatic series formatting
+ for (auto const& elemSeries : typeGroup->maSeries)
+ nMaxSeriesIdx = ::std::max( nMaxSeriesIdx, elemSeries->mnIndex );
+ }
+ }
+ getFormatter().setMaxSeriesIndex( nMaxSeriesIdx );
+
+ // varying point colors only for single series in single chart type
+ bool bSupportsVaryColorsByPoint = mrModel.maTypeGroups.size() == 1;
+
+ bool bIsCombinedChart = mrModel.maTypeGroups.size() == 2 &&
+ mrModel.maTypeGroups[0]->mnTypeId != mrModel.maTypeGroups[1]->mnTypeId;
+
+ // convert all axes sets, and check which axis is attached to the first maTypeGroups
+ sal_Int32 nStartAxesSetIdx = bIsCombinedChart ? ((rValAxisIds.size() > 1 && aAxesSets.size() > 0 && aAxesSets[0]->maAxes.count( API_Y_AXIS )
+ && aAxesSets[0]->maAxes[ API_Y_AXIS ]->mnAxisId != rValAxisIds[0] ) ? 1 : 0)
+ : 0;
+ sal_Int32 nAxesSetIdx = nStartAxesSetIdx;
+
+ bool bUseFixedInnerSize = false;
+ if (mrModel.mxLayout && !mrModel.mxLayout->mbAutoLayout)
+ bUseFixedInnerSize = mrModel.mxLayout->mnTarget == XML_inner;
+
+ for (auto const& axesSet : aAxesSets)
+ {
+ AxesSetConverter aAxesSetConv(*this, *axesSet);
+ aAxesSetConv.convertFromModel(xDiagram, rView3DModel, nAxesSetIdx,
+ bSupportsVaryColorsByPoint, bUseFixedInnerSize);
+ if(nAxesSetIdx == nStartAxesSetIdx)
+ {
+ maAutoTitle = aAxesSetConv.getAutomaticTitle();
+ mb3dChart = aAxesSetConv.is3dChart();
+ mbWall3dChart = aAxesSetConv.isWall3dChart();
+ mbPieChart = aAxesSetConv.isPieChart();
+ }
+ else
+ {
+ maAutoTitle.clear();
+ }
+ nAxesSetIdx = 1 - nAxesSetIdx;
+ }
+
+ DataTableConverter dataTableConverter (*this, mrModel.mxDataTable.getOrCreate());
+ dataTableConverter.convertFromModel(xDiagram);
+
+ // plot area formatting
+ if( xDiagram.is() && !mb3dChart )
+ {
+ PropertySet aPropSet( xDiagram->getWall() );
+ getFormatter().convertFrameFormatting( aPropSet, mrModel.mxShapeProp, OBJECTTYPE_PLOTAREA2D );
+ }
+}
+
+void PlotAreaConverter::convertPositionFromModel()
+{
+ LayoutModel& rLayout = mrModel.mxLayout.getOrCreate();
+ LayoutConverter aLayoutConv( *this, rLayout );
+ awt::Rectangle aDiagramRect;
+ if( !aLayoutConv.calcAbsRectangle( aDiagramRect ) )
+ return;
+
+ try
+ {
+ namespace cssc = ::com::sun::star::chart;
+ Reference< cssc::XChartDocument > xChart1Doc( getChartDocument(), UNO_QUERY_THROW );
+ Reference< cssc::XDiagramPositioning > xPositioning( xChart1Doc->getDiagram(), UNO_QUERY_THROW );
+ // for pie charts, always set inner plot area size to exclude the data labels as Excel does
+ sal_Int32 nTarget = (mbPieChart && (rLayout.mnTarget == XML_outer)) ? XML_inner : rLayout.mnTarget;
+ switch( nTarget )
+ {
+ case XML_inner:
+ xPositioning->setDiagramPositionExcludingAxes( aDiagramRect );
+ break;
+ case XML_outer:
+ xPositioning->setDiagramPositionIncludingAxes( aDiagramRect );
+ break;
+ default:
+ OSL_FAIL( "PlotAreaConverter::convertPositionFromModel - unknown positioning target" );
+ }
+ }
+ catch( Exception& )
+ {
+ }
+}
+
+} // namespace oox
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/oox/source/drawingml/chart/plotareamodel.cxx b/oox/source/drawingml/chart/plotareamodel.cxx
new file mode 100644
index 000000000..cb4f6383d
--- /dev/null
+++ b/oox/source/drawingml/chart/plotareamodel.cxx
@@ -0,0 +1,52 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ *
+ * This file incorporates work covered by the following license notice:
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed
+ * with this work for additional information regarding copyright
+ * ownership. The ASF licenses this file to you under the Apache
+ * License, Version 2.0 (the "License"); you may not use this file
+ * except in compliance with the License. You may obtain a copy of
+ * the License at http://www.apache.org/licenses/LICENSE-2.0 .
+ */
+
+#include <drawingml/chart/plotareamodel.hxx>
+#include <drawingml/fillproperties.hxx>
+#include <oox/token/tokens.hxx>
+
+namespace oox::drawingml::chart {
+
+View3DModel::View3DModel(bool bMSO2007Doc) :
+ mnDepthPercent( 100 ),
+ mnPerspective( 30 ),
+ mbRightAngled( !bMSO2007Doc )
+{
+}
+
+WallFloorModel::WallFloorModel()
+{
+}
+
+WallFloorModel::~WallFloorModel()
+{
+}
+
+PlotAreaModel::PlotAreaModel()
+{
+ mxShapeProp.create().getFillProperties().moFillType = XML_noFill;
+}
+
+PlotAreaModel::~PlotAreaModel()
+{
+}
+
+} // namespace oox::drawingml::chart
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/oox/source/drawingml/chart/seriescontext.cxx b/oox/source/drawingml/chart/seriescontext.cxx
new file mode 100644
index 000000000..5afc32c14
--- /dev/null
+++ b/oox/source/drawingml/chart/seriescontext.cxx
@@ -0,0 +1,749 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ *
+ * This file incorporates work covered by the following license notice:
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed
+ * with this work for additional information regarding copyright
+ * ownership. The ASF licenses this file to you under the Apache
+ * License, Version 2.0 (the "License"); you may not use this file
+ * except in compliance with the License. You may obtain a copy of
+ * the License at http://www.apache.org/licenses/LICENSE-2.0 .
+ */
+
+#include <drawingml/chart/seriescontext.hxx>
+
+#include <drawingml/shapepropertiescontext.hxx>
+#include <drawingml/textbodycontext.hxx>
+#include <drawingml/chart/datasourcecontext.hxx>
+#include <drawingml/chart/seriesmodel.hxx>
+#include <drawingml/chart/titlecontext.hxx>
+#include <oox/core/xmlfilterbase.hxx>
+#include <oox/helper/attributelist.hxx>
+#include <oox/token/namespaces.hxx>
+#include <oox/token/tokens.hxx>
+
+namespace oox::drawingml::chart {
+
+using ::oox::core::ContextHandler2;
+using ::oox::core::ContextHandler2Helper;
+using ::oox::core::ContextHandlerRef;
+
+namespace {
+
+ContextHandlerRef lclDataLabelSharedCreateContext( ContextHandler2& rContext,
+ sal_Int32 nElement, const AttributeList& rAttribs, DataLabelModelBase& orModel, bool bMSO2007 )
+{
+ if( rContext.isRootElement() ) switch( nElement )
+ {
+ case C_TOKEN( delete ):
+ orModel.mbDeleted = rAttribs.getBool( XML_val, !bMSO2007 );
+ return nullptr;
+ case C_TOKEN( dLblPos ):
+ orModel.monLabelPos = rAttribs.getToken( XML_val, XML_TOKEN_INVALID );
+ return nullptr;
+ case C_TOKEN( numFmt ):
+ orModel.maNumberFormat.setAttributes( rAttribs );
+ return nullptr;
+ case C_TOKEN( showBubbleSize ):
+ orModel.mobShowBubbleSize = rAttribs.getBool( XML_val );
+ return nullptr;
+ case C_TOKEN( showCatName ):
+ orModel.mobShowCatName = rAttribs.getBool( XML_val );
+ return nullptr;
+ case C_TOKEN( showLegendKey ):
+ orModel.mobShowLegendKey = rAttribs.getBool( XML_val );
+ return nullptr;
+ case C_TOKEN( showPercent ):
+ orModel.mobShowPercent = rAttribs.getBool( XML_val );
+ return nullptr;
+ case C_TOKEN( showSerName ):
+ orModel.mobShowSerName = rAttribs.getBool( XML_val );
+ return nullptr;
+ case C_TOKEN( showVal ):
+ orModel.mobShowVal = rAttribs.getBool( XML_val );
+ return nullptr;
+ case C_TOKEN( separator ):
+ // collect separator text in onCharacters()
+ return &rContext;
+ case C_TOKEN( spPr ):
+ return new ShapePropertiesContext( rContext, orModel.mxShapeProp.create() );
+ case C_TOKEN( txPr ):
+ return new TextBodyContext( rContext, orModel.mxTextProp.create() );
+ }
+ return nullptr;
+}
+
+void lclDataLabelSharedCharacters( ContextHandler2 const & rContext, const OUString& rChars, DataLabelModelBase& orModel )
+{
+ if( rContext.isCurrentElement( C_TOKEN( separator ) ) )
+ orModel.moaSeparator = rChars;
+}
+
+} // namespace
+
+DataLabelContext::DataLabelContext( ContextHandler2Helper& rParent, DataLabelModel& rModel ) :
+ ContextBase< DataLabelModel >( rParent, rModel )
+{
+ mrModel.mbDeleted = false;
+}
+
+DataLabelContext::~DataLabelContext()
+{
+}
+
+ContextHandlerRef DataLabelContext::onCreateContext( sal_Int32 nElement, const AttributeList& rAttribs )
+{
+ if( isRootElement() )
+ {
+ switch( nElement )
+ {
+ case C_TOKEN( idx ):
+ mrModel.mnIndex = rAttribs.getInteger( XML_val, -1 );
+ return nullptr;
+ case C_TOKEN( layout ):
+ return new LayoutContext( *this, mrModel.mxLayout.create() );
+ case C_TOKEN( tx ):
+ return new TextContext( *this, mrModel.mxText.create() );
+ case C_TOKEN( extLst ):
+ return this;
+ }
+ }
+ else
+ {
+ switch( getCurrentElement() )
+ {
+ case C_TOKEN( extLst ):
+ if ( nElement == C_TOKEN( ext ) )
+ return this;
+ break;
+ case C_TOKEN( ext ):
+ if ( nElement == C15_TOKEN( showDataLabelsRange ) )
+ {
+ mrModel.mobShowDataLabelsRange = rAttribs.getBool( XML_val );
+ return nullptr;
+ }
+ break;
+ }
+ }
+ bool bMSO2007 = getFilter().isMSO2007Document();
+ return lclDataLabelSharedCreateContext( *this, nElement, rAttribs, mrModel, bMSO2007 );
+}
+
+void DataLabelContext::onCharacters( const OUString& rChars )
+{
+ lclDataLabelSharedCharacters( *this, rChars, mrModel );
+}
+
+DataLabelsContext::DataLabelsContext( ContextHandler2Helper& rParent, DataLabelsModel& rModel ) :
+ ContextBase< DataLabelsModel >( rParent, rModel )
+{
+ mrModel.mbDeleted = false;
+}
+
+DataLabelsContext::~DataLabelsContext()
+{
+}
+
+ContextHandlerRef DataLabelsContext::onCreateContext( sal_Int32 nElement, const AttributeList& rAttribs )
+{
+ bool bMSO2007Doc = getFilter().isMSO2007Document();
+ if( isRootElement() ) switch( nElement )
+ {
+ case C_TOKEN( dLbl ):
+ return new DataLabelContext( *this, mrModel.maPointLabels.create(mrModel, bMSO2007Doc) );
+ case C_TOKEN( leaderLines ):
+ return new ShapePrWrapperContext( *this, mrModel.mxLeaderLines.create() );
+ case C_TOKEN( showLeaderLines ):
+ case C15_TOKEN( showLeaderLines ):
+ mrModel.mbShowLeaderLines = rAttribs.getBool( XML_val, true );
+ return nullptr;
+ case C_TOKEN( extLst ):
+ case C_TOKEN( ext ):
+ return new DataLabelsContext( *this, mrModel );
+ }
+ return lclDataLabelSharedCreateContext( *this, nElement, rAttribs, mrModel, bMSO2007Doc );
+}
+
+void DataLabelsContext::onCharacters( const OUString& rChars )
+{
+ lclDataLabelSharedCharacters( *this, rChars, mrModel );
+}
+
+PictureOptionsContext::PictureOptionsContext( ContextHandler2Helper& rParent, PictureOptionsModel& rModel ) :
+ ContextBase< PictureOptionsModel >( rParent, rModel )
+{
+}
+
+PictureOptionsContext::~PictureOptionsContext()
+{
+}
+
+ContextHandlerRef PictureOptionsContext::onCreateContext( sal_Int32 nElement, const AttributeList& rAttribs )
+{
+ bool bMSO2007Doc = getFilter().isMSO2007Document();
+ if( isRootElement() ) switch( nElement )
+ {
+ case C_TOKEN( applyToEnd ):
+ mrModel.mbApplyToEnd = rAttribs.getBool( XML_val, !bMSO2007Doc );
+ return nullptr;
+ case C_TOKEN( applyToFront ):
+ mrModel.mbApplyToFront = rAttribs.getBool( XML_val, !bMSO2007Doc );
+ return nullptr;
+ case C_TOKEN( applyToSides ):
+ mrModel.mbApplyToSides = rAttribs.getBool( XML_val, !bMSO2007Doc );
+ return nullptr;
+ case C_TOKEN( pictureFormat ):
+ mrModel.mnPictureFormat = rAttribs.getToken( XML_val, XML_stretch );
+ return nullptr;
+ case C_TOKEN( pictureStackUnit ):
+ mrModel.mfStackUnit = rAttribs.getDouble( XML_val, 1.0 );
+ return nullptr;
+ }
+ return nullptr;
+}
+
+ErrorBarContext::ErrorBarContext( ContextHandler2Helper& rParent, ErrorBarModel& rModel ) :
+ ContextBase< ErrorBarModel >( rParent, rModel )
+{
+}
+
+ErrorBarContext::~ErrorBarContext()
+{
+}
+
+ContextHandlerRef ErrorBarContext::onCreateContext( sal_Int32 nElement, const AttributeList& rAttribs )
+{
+ bool bMSO2007Doc = getFilter().isMSO2007Document();
+ if( isRootElement() ) switch( nElement )
+ {
+ case C_TOKEN( errBarType ):
+ mrModel.mnTypeId = rAttribs.getToken( XML_val, XML_both );
+ return nullptr;
+ case C_TOKEN( errDir ):
+ mrModel.mnDirection = rAttribs.getToken( XML_val, XML_TOKEN_INVALID );
+ return nullptr;
+ case C_TOKEN( errValType ):
+ mrModel.mnValueType = rAttribs.getToken( XML_val, XML_fixedVal );
+ return nullptr;
+ case C_TOKEN( minus ):
+ return new DataSourceContext( *this, mrModel.maSources.create( ErrorBarModel::MINUS ) );
+ case C_TOKEN( noEndCap ):
+ mrModel.mbNoEndCap = rAttribs.getBool( XML_val, !bMSO2007Doc );
+ return nullptr;
+ case C_TOKEN( plus ):
+ return new DataSourceContext( *this, mrModel.maSources.create( ErrorBarModel::PLUS ) );
+ case C_TOKEN( spPr ):
+ return new ShapePropertiesContext( *this, mrModel.mxShapeProp.create() );
+ case C_TOKEN( val ):
+ mrModel.mfValue = rAttribs.getDouble( XML_val, 0.0 );
+ return nullptr;
+ }
+ return nullptr;
+}
+
+TrendlineLabelContext::TrendlineLabelContext( ContextHandler2Helper& rParent, TrendlineLabelModel& rModel ) :
+ ContextBase< TrendlineLabelModel >( rParent, rModel )
+{
+}
+
+TrendlineLabelContext::~TrendlineLabelContext()
+{
+}
+
+ContextHandlerRef TrendlineLabelContext::onCreateContext( sal_Int32 nElement, const AttributeList& rAttribs )
+{
+ if( isRootElement() ) switch( nElement )
+ {
+ case C_TOKEN( layout ):
+ return new LayoutContext( *this, mrModel.mxLayout.create() );
+ case C_TOKEN( numFmt ):
+ mrModel.maNumberFormat.setAttributes( rAttribs );
+ return nullptr;
+ case C_TOKEN( spPr ):
+ return new ShapePropertiesContext( *this, mrModel.mxShapeProp.create() );
+ case C_TOKEN( tx ):
+ return new TextContext( *this, mrModel.mxText.create() );
+ case C_TOKEN( txPr ):
+ return new TextBodyContext( *this, mrModel.mxTextProp.create() );
+ }
+ return nullptr;
+}
+
+TrendlineContext::TrendlineContext( ContextHandler2Helper& rParent, TrendlineModel& rModel ) :
+ ContextBase< TrendlineModel >( rParent, rModel )
+{
+}
+
+TrendlineContext::~TrendlineContext()
+{
+}
+
+ContextHandlerRef TrendlineContext::onCreateContext( sal_Int32 nElement, const AttributeList& rAttribs )
+{
+ bool bMSO2007Doc = getFilter().isMSO2007Document();
+ if( isRootElement() ) switch( nElement )
+ {
+ case C_TOKEN( backward ):
+ mrModel.mfBackward = rAttribs.getDouble( XML_val, 0.0 );
+ return nullptr;
+ case C_TOKEN( dispEq ):
+ mrModel.mbDispEquation = rAttribs.getBool( XML_val, !bMSO2007Doc );
+ return nullptr;
+ case C_TOKEN( dispRSqr ):
+ mrModel.mbDispRSquared = rAttribs.getBool( XML_val, !bMSO2007Doc );
+ return nullptr;
+ case C_TOKEN( forward ):
+ mrModel.mfForward = rAttribs.getDouble( XML_val, 0.0 );
+ return nullptr;
+ case C_TOKEN( intercept ):
+ mrModel.mfIntercept = rAttribs.getDouble( XML_val, 0.0 );
+ return nullptr;
+ case C_TOKEN( name ):
+ return this; // collect name in onCharacters()
+ case C_TOKEN( order ):
+ mrModel.mnOrder = rAttribs.getInteger( XML_val, 2 );
+ return nullptr;
+ case C_TOKEN( period ):
+ mrModel.mnPeriod = rAttribs.getInteger( XML_val, 2 );
+ return nullptr;
+ case C_TOKEN( spPr ):
+ return new ShapePropertiesContext( *this, mrModel.mxShapeProp.create() );
+ case C_TOKEN( trendlineLbl ):
+ return new TrendlineLabelContext( *this, mrModel.mxLabel.create() );
+ case C_TOKEN( trendlineType ):
+ mrModel.mnTypeId = rAttribs.getToken( XML_val, XML_linear );
+ return nullptr;
+ }
+ return nullptr;
+}
+
+void TrendlineContext::onCharacters( const OUString& rChars )
+{
+ if( isCurrentElement( C_TOKEN( name ) ) )
+ mrModel.maName = rChars;
+}
+
+DataPointContext::DataPointContext( ContextHandler2Helper& rParent, DataPointModel& rModel ) :
+ ContextBase< DataPointModel >( rParent, rModel )
+{
+}
+
+DataPointContext::~DataPointContext()
+{
+}
+
+ContextHandlerRef DataPointContext::onCreateContext( sal_Int32 nElement, const AttributeList& rAttribs )
+{
+ bool bMSO2007Doc = getFilter().isMSO2007Document();
+ switch( getCurrentElement() )
+ {
+ case C_TOKEN( dPt ):
+ switch( nElement )
+ {
+ case C_TOKEN( bubble3D ):
+ mrModel.mobBubble3d = rAttribs.getBool( XML_val );
+ return nullptr;
+ case C_TOKEN( explosion ):
+ // if the 'val' attribute is missing, series explosion remains unchanged
+ mrModel.monExplosion = rAttribs.getInteger( XML_val );
+ return nullptr;
+ case C_TOKEN( idx ):
+ mrModel.mnIndex = rAttribs.getInteger( XML_val, -1 );
+ return nullptr;
+ case C_TOKEN( invertIfNegative ):
+ mrModel.mbInvertNeg = rAttribs.getBool( XML_val, !bMSO2007Doc );
+ return nullptr;
+ case C_TOKEN( marker ):
+ return this;
+ case C_TOKEN( pictureOptions ):
+ return new PictureOptionsContext( *this, mrModel.mxPicOptions.create(bMSO2007Doc) );
+ case C_TOKEN( spPr ):
+ return new ShapePropertiesContext( *this, mrModel.mxShapeProp.create() );
+ }
+ break;
+
+ case C_TOKEN( marker ):
+ switch( nElement )
+ {
+ case C_TOKEN( size ):
+ mrModel.monMarkerSize = rAttribs.getInteger( XML_val, 5 );
+ return nullptr;
+ case C_TOKEN( spPr ):
+ return new ShapePropertiesContext( *this, mrModel.mxMarkerProp.create() );
+ case C_TOKEN( symbol ):
+ mrModel.monMarkerSymbol = rAttribs.getToken( XML_val, XML_none );
+ return nullptr;
+ }
+ break;
+ }
+ return nullptr;
+}
+
+SeriesContextBase::SeriesContextBase( ContextHandler2Helper& rParent, SeriesModel& rModel ) :
+ ContextBase< SeriesModel >( rParent, rModel )
+{
+}
+
+SeriesContextBase::~SeriesContextBase()
+{
+}
+
+ContextHandlerRef SeriesContextBase::onCreateContext( sal_Int32 nElement, const AttributeList& rAttribs )
+{
+ switch( getCurrentElement() )
+ {
+ case C_TOKEN( ser ):
+ switch( nElement )
+ {
+ case C_TOKEN( idx ):
+ mrModel.mnIndex = rAttribs.getInteger( XML_val, -1 );
+ return nullptr;
+ case C_TOKEN( order ):
+ mrModel.mnOrder = rAttribs.getInteger( XML_val, -1 );
+ return nullptr;
+ case C_TOKEN( spPr ):
+ return new ShapePropertiesContext( *this, mrModel.mxShapeProp.create() );
+ case C_TOKEN( tx ):
+ return new TextContext( *this, mrModel.mxText.create() );
+ case C_TOKEN( extLst ):
+ return this;
+ }
+ break;
+
+ case C_TOKEN( marker ):
+ switch( nElement )
+ {
+ case C_TOKEN( size ):
+ mrModel.mnMarkerSize = rAttribs.getInteger( XML_val, 5 );
+ return nullptr;
+ case C_TOKEN( spPr ):
+ return new ShapePropertiesContext( *this, mrModel.mxMarkerProp.create() );
+ case C_TOKEN( symbol ):
+ mrModel.mnMarkerSymbol = rAttribs.getToken( XML_val, XML_none );
+ return nullptr;
+ }
+ break;
+
+ case C_TOKEN( extLst ):
+ switch( nElement )
+ {
+ case C_TOKEN( ext ):
+ if (mrModel.maSources.has( SeriesModel::DATALABELS ))
+ break;
+
+ DataSourceModel& rLabelsSource = mrModel.maSources.create( SeriesModel::DATALABELS );
+ if (mrModel.mxLabels.is())
+ mrModel.mxLabels->mpLabelsSource = &rLabelsSource;
+ return new DataSourceContext( *this, rLabelsSource );
+ }
+ }
+ return nullptr;
+}
+
+AreaSeriesContext::AreaSeriesContext( ContextHandler2Helper& rParent, SeriesModel& rModel ) :
+ SeriesContextBase( rParent, rModel )
+{
+}
+
+AreaSeriesContext::~AreaSeriesContext()
+{
+}
+
+ContextHandlerRef AreaSeriesContext::onCreateContext( sal_Int32 nElement, const AttributeList& rAttribs )
+{
+ bool bMSO2007Doc = getFilter().isMSO2007Document();
+ switch( getCurrentElement() )
+ {
+ case C_TOKEN( ser ):
+ switch( nElement )
+ {
+ case C_TOKEN( cat ):
+ return new DataSourceContext( *this, mrModel.maSources.create( SeriesModel::CATEGORIES ) );
+ case C_TOKEN( errBars ):
+ return new ErrorBarContext( *this, mrModel.maErrorBars.create(bMSO2007Doc) );
+ case C_TOKEN( dLbls ):
+ return new DataLabelsContext( *this, mrModel.mxLabels.create(bMSO2007Doc) );
+ case C_TOKEN( dPt ):
+ return new DataPointContext( *this, mrModel.maPoints.create(bMSO2007Doc) );
+ case C_TOKEN( trendline ):
+ return new TrendlineContext( *this, mrModel.maTrendlines.create(bMSO2007Doc) );
+ case C_TOKEN( val ):
+ return new DataSourceContext( *this, mrModel.maSources.create( SeriesModel::VALUES ) );
+ }
+ break;
+ }
+ return SeriesContextBase::onCreateContext( nElement, rAttribs );
+}
+
+BarSeriesContext::BarSeriesContext( ContextHandler2Helper& rParent, SeriesModel& rModel ) :
+ SeriesContextBase( rParent, rModel )
+{
+}
+
+BarSeriesContext::~BarSeriesContext()
+{
+}
+
+ContextHandlerRef BarSeriesContext::onCreateContext( sal_Int32 nElement, const AttributeList& rAttribs )
+{
+ bool bMSO2007Doc = getFilter().isMSO2007Document();
+ switch( getCurrentElement() )
+ {
+ case C_TOKEN( ser ):
+ switch( nElement )
+ {
+ case C_TOKEN( cat ):
+ return new DataSourceContext( *this, mrModel.maSources.create( SeriesModel::CATEGORIES ) );
+ case C_TOKEN( dLbls ):
+ return new DataLabelsContext( *this, mrModel.mxLabels.create(bMSO2007Doc) );
+ case C_TOKEN( dPt ):
+ return new DataPointContext( *this, mrModel.maPoints.create(bMSO2007Doc) );
+ case C_TOKEN( errBars ):
+ return new ErrorBarContext( *this, mrModel.maErrorBars.create(bMSO2007Doc) );
+ case C_TOKEN( invertIfNegative ):
+ mrModel.mbInvertNeg = rAttribs.getBool( XML_val, !bMSO2007Doc );
+ return nullptr;
+ case C_TOKEN( pictureOptions ):
+ return new PictureOptionsContext( *this, mrModel.mxPicOptions.create(bMSO2007Doc) );
+ case C_TOKEN( shape ):
+ mrModel.monShape = rAttribs.getToken(XML_val);
+ return nullptr;
+ case C_TOKEN( trendline ):
+ return new TrendlineContext( *this, mrModel.maTrendlines.create(bMSO2007Doc) );
+ case C_TOKEN( val ):
+ return new DataSourceContext( *this, mrModel.maSources.create( SeriesModel::VALUES ) );
+ }
+ break;
+ }
+ return SeriesContextBase::onCreateContext( nElement, rAttribs );
+}
+
+BubbleSeriesContext::BubbleSeriesContext( ContextHandler2Helper& rParent, SeriesModel& rModel ) :
+ SeriesContextBase( rParent, rModel )
+{
+}
+
+BubbleSeriesContext::~BubbleSeriesContext()
+{
+}
+
+ContextHandlerRef BubbleSeriesContext::onCreateContext( sal_Int32 nElement, const AttributeList& rAttribs )
+{
+ bool bMSO2007Doc = getFilter().isMSO2007Document();
+ switch( getCurrentElement() )
+ {
+ case C_TOKEN( ser ):
+ switch( nElement )
+ {
+ case C_TOKEN( bubble3D ):
+ mrModel.mbBubble3d = rAttribs.getBool( XML_val, !bMSO2007Doc );
+ return nullptr;
+ case C_TOKEN( bubbleSize ):
+ return new DataSourceContext( *this, mrModel.maSources.create( SeriesModel::POINTS ) );
+ case C_TOKEN( dLbls ):
+ return new DataLabelsContext( *this, mrModel.mxLabels.create(bMSO2007Doc) );
+ case C_TOKEN( dPt ):
+ return new DataPointContext( *this, mrModel.maPoints.create(bMSO2007Doc) );
+ case C_TOKEN( errBars ):
+ return new ErrorBarContext( *this, mrModel.maErrorBars.create(bMSO2007Doc) );
+ case C_TOKEN( invertIfNegative ):
+ mrModel.mbInvertNeg = rAttribs.getBool( XML_val, !bMSO2007Doc );
+ return nullptr;
+ case C_TOKEN( trendline ):
+ return new TrendlineContext( *this, mrModel.maTrendlines.create(bMSO2007Doc) );
+ case C_TOKEN( xVal ):
+ return new DataSourceContext( *this, mrModel.maSources.create( SeriesModel::CATEGORIES ) );
+ case C_TOKEN( yVal ):
+ return new DataSourceContext( *this, mrModel.maSources.create( SeriesModel::VALUES ) );
+ }
+ break;
+ }
+ return SeriesContextBase::onCreateContext( nElement, rAttribs );
+}
+
+LineSeriesContext::LineSeriesContext( ContextHandler2Helper& rParent, SeriesModel& rModel ) :
+ SeriesContextBase( rParent, rModel )
+{
+}
+
+LineSeriesContext::~LineSeriesContext()
+{
+}
+
+ContextHandlerRef LineSeriesContext::onCreateContext( sal_Int32 nElement, const AttributeList& rAttribs )
+{
+ bool bMSO2007Doc = getFilter().isMSO2007Document();
+ switch( getCurrentElement() )
+ {
+ case C_TOKEN( ser ):
+ switch( nElement )
+ {
+ case C_TOKEN( cat ):
+ return new DataSourceContext( *this, mrModel.maSources.create( SeriesModel::CATEGORIES ) );
+ case C_TOKEN( dLbls ):
+ return new DataLabelsContext( *this, mrModel.mxLabels.create(bMSO2007Doc) );
+ case C_TOKEN( dPt ):
+ return new DataPointContext( *this, mrModel.maPoints.create(bMSO2007Doc) );
+ case C_TOKEN( errBars ):
+ return new ErrorBarContext( *this, mrModel.maErrorBars.create(bMSO2007Doc) );
+ case C_TOKEN( marker ):
+ return this;
+ case C_TOKEN( smooth ):
+ mrModel.mbSmooth = rAttribs.getBool( XML_val, !bMSO2007Doc );
+ return nullptr;
+ case C_TOKEN( trendline ):
+ return new TrendlineContext( *this, mrModel.maTrendlines.create(bMSO2007Doc) );
+ case C_TOKEN( val ):
+ return new DataSourceContext( *this, mrModel.maSources.create( SeriesModel::VALUES ) );
+ }
+ break;
+ }
+ return SeriesContextBase::onCreateContext( nElement, rAttribs );
+}
+
+PieSeriesContext::PieSeriesContext( ContextHandler2Helper& rParent, SeriesModel& rModel ) :
+ SeriesContextBase( rParent, rModel )
+{
+}
+
+PieSeriesContext::~PieSeriesContext()
+{
+}
+
+ContextHandlerRef PieSeriesContext::onCreateContext( sal_Int32 nElement, const AttributeList& rAttribs )
+{
+ bool bMSO2007Doc = getFilter().isMSO2007Document();
+ switch( getCurrentElement() )
+ {
+ case C_TOKEN( ser ):
+ switch( nElement )
+ {
+ case C_TOKEN( cat ):
+ return new DataSourceContext( *this, mrModel.maSources.create( SeriesModel::CATEGORIES ) );
+ case C_TOKEN( dLbls ):
+ return new DataLabelsContext( *this, mrModel.mxLabels.create(bMSO2007Doc) );
+ case C_TOKEN( dPt ):
+ return new DataPointContext( *this, mrModel.maPoints.create(bMSO2007Doc) );
+ case C_TOKEN( explosion ):
+ mrModel.mnExplosion = rAttribs.getInteger( XML_val, 0 );
+ return nullptr;
+ case C_TOKEN( val ):
+ return new DataSourceContext( *this, mrModel.maSources.create( SeriesModel::VALUES ) );
+ }
+ break;
+ }
+ return SeriesContextBase::onCreateContext( nElement, rAttribs );
+}
+
+RadarSeriesContext::RadarSeriesContext( ContextHandler2Helper& rParent, SeriesModel& rModel ) :
+ SeriesContextBase( rParent, rModel )
+{
+}
+
+RadarSeriesContext::~RadarSeriesContext()
+{
+}
+
+ContextHandlerRef RadarSeriesContext::onCreateContext( sal_Int32 nElement, const AttributeList& rAttribs )
+{
+ bool bMSO2007Doc = getFilter().isMSO2007Document();
+ switch( getCurrentElement() )
+ {
+ case C_TOKEN( ser ):
+ switch( nElement )
+ {
+ case C_TOKEN( cat ):
+ return new DataSourceContext( *this, mrModel.maSources.create( SeriesModel::CATEGORIES ) );
+ case C_TOKEN( dLbls ):
+ return new DataLabelsContext( *this, mrModel.mxLabels.create(bMSO2007Doc) );
+ case C_TOKEN( dPt ):
+ return new DataPointContext( *this, mrModel.maPoints.create(bMSO2007Doc) );
+ case C_TOKEN( marker ):
+ return this;
+ case C_TOKEN( smooth ):
+ mrModel.mbSmooth = rAttribs.getBool( XML_val, bMSO2007Doc );
+ return nullptr;
+ case C_TOKEN( val ):
+ return new DataSourceContext( *this, mrModel.maSources.create( SeriesModel::VALUES ) );
+ }
+ break;
+ }
+ return SeriesContextBase::onCreateContext( nElement, rAttribs );
+}
+
+ScatterSeriesContext::ScatterSeriesContext( ContextHandler2Helper& rParent, SeriesModel& rModel ) :
+ SeriesContextBase( rParent, rModel )
+{
+}
+
+ScatterSeriesContext::~ScatterSeriesContext()
+{
+}
+
+ContextHandlerRef ScatterSeriesContext::onCreateContext( sal_Int32 nElement, const AttributeList& rAttribs )
+{
+ bool bMSO2007Doc = getFilter().isMSO2007Document();
+ switch( getCurrentElement() )
+ {
+ case C_TOKEN( ser ):
+ switch( nElement )
+ {
+ case C_TOKEN( dLbls ):
+ return new DataLabelsContext( *this, mrModel.mxLabels.create(bMSO2007Doc) );
+ case C_TOKEN( dPt ):
+ return new DataPointContext( *this, mrModel.maPoints.create(bMSO2007Doc) );
+ case C_TOKEN( errBars ):
+ return new ErrorBarContext( *this, mrModel.maErrorBars.create(bMSO2007Doc) );
+ case C_TOKEN( marker ):
+ return this;
+ case C_TOKEN( smooth ):
+ mrModel.mbSmooth = rAttribs.getBool( XML_val, !bMSO2007Doc );
+ return nullptr;
+ case C_TOKEN( trendline ):
+ return new TrendlineContext( *this, mrModel.maTrendlines.create(bMSO2007Doc) );
+ case C_TOKEN( xVal ):
+ return new DataSourceContext( *this, mrModel.maSources.create( SeriesModel::CATEGORIES ) );
+ case C_TOKEN( yVal ):
+ return new DataSourceContext( *this, mrModel.maSources.create( SeriesModel::VALUES ) );
+ }
+ break;
+ }
+ return SeriesContextBase::onCreateContext( nElement, rAttribs );
+}
+
+SurfaceSeriesContext::SurfaceSeriesContext( ContextHandler2Helper& rParent, SeriesModel& rModel ) :
+ SeriesContextBase( rParent, rModel )
+{
+}
+
+SurfaceSeriesContext::~SurfaceSeriesContext()
+{
+}
+
+ContextHandlerRef SurfaceSeriesContext::onCreateContext( sal_Int32 nElement, const AttributeList& rAttribs )
+{
+ switch( getCurrentElement() )
+ {
+ case C_TOKEN( ser ):
+ switch( nElement )
+ {
+ case C_TOKEN( cat ):
+ return new DataSourceContext( *this, mrModel.maSources.create( SeriesModel::CATEGORIES ) );
+ case C_TOKEN( val ):
+ return new DataSourceContext( *this, mrModel.maSources.create( SeriesModel::VALUES ) );
+ }
+ break;
+ }
+ return SeriesContextBase::onCreateContext( nElement, rAttribs );
+}
+
+} // namespace oox
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/oox/source/drawingml/chart/seriesconverter.cxx b/oox/source/drawingml/chart/seriesconverter.cxx
new file mode 100644
index 000000000..3ace8e9a7
--- /dev/null
+++ b/oox/source/drawingml/chart/seriesconverter.cxx
@@ -0,0 +1,920 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ *
+ * This file incorporates work covered by the following license notice:
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed
+ * with this work for additional information regarding copyright
+ * ownership. The ASF licenses this file to you under the Apache
+ * License, Version 2.0 (the "License"); you may not use this file
+ * except in compliance with the License. You may obtain a copy of
+ * the License at http://www.apache.org/licenses/LICENSE-2.0 .
+ */
+
+#include <drawingml/chart/seriesconverter.hxx>
+
+#include <com/sun/star/chart/DataLabelPlacement.hpp>
+#include <com/sun/star/chart2/RelativePosition.hpp>
+#include <com/sun/star/chart/ErrorBarStyle.hpp>
+#include <com/sun/star/chart2/DataPointLabel.hpp>
+#include <com/sun/star/drawing/Hatch.hpp>
+#include <com/sun/star/chart2/XChartDocument.hpp>
+#include <com/sun/star/chart2/XDataPointCustomLabelField.hpp>
+#include <com/sun/star/chart2/DataPointCustomLabelField.hpp>
+#include <com/sun/star/chart2/DataPointCustomLabelFieldType.hpp>
+#include <com/sun/star/chart2/XDataSeries.hpp>
+#include <com/sun/star/chart2/XRegressionCurve.hpp>
+#include <com/sun/star/chart2/XRegressionCurveContainer.hpp>
+#include <com/sun/star/chart2/data/XDataSink.hpp>
+#include <com/sun/star/chart2/data/LabeledDataSequence.hpp>
+#include <com/sun/star/lang/XMultiServiceFactory.hpp>
+#include <com/sun/star/drawing/FillStyle.hpp>
+
+#include <comphelper/sequence.hxx>
+#include <osl/diagnose.h>
+#include <drawingml/chart/datasourceconverter.hxx>
+#include <drawingml/chart/seriesmodel.hxx>
+#include <drawingml/chart/titleconverter.hxx>
+#include <drawingml/chart/typegroupconverter.hxx>
+#include <drawingml/chart/typegroupmodel.hxx>
+#include <drawingml/fillproperties.hxx>
+#include <oox/core/xmlfilterbase.hxx>
+#include <oox/helper/modelobjecthelper.hxx>
+#include <oox/token/properties.hxx>
+#include <oox/token/tokens.hxx>
+#include <drawingml/lineproperties.hxx>
+#include <drawingml/textparagraph.hxx>
+#include <drawingml/textrun.hxx>
+#include <drawingml/textfield.hxx>
+#include <drawingml/textbody.hxx>
+#include <drawingml/hatchmap.hxx>
+
+namespace oox::drawingml::chart {
+
+using namespace com::sun::star;
+using namespace ::com::sun::star::beans;
+using namespace ::com::sun::star::chart2;
+using namespace ::com::sun::star::chart2::data;
+using namespace ::com::sun::star::uno;
+
+namespace {
+
+Reference< XLabeledDataSequence > lclCreateLabeledDataSequence(
+ const ConverterRoot& rParent,
+ DataSourceModel* pValues, const OUString& rRole,
+ TextModel* pTitle = nullptr )
+{
+ // create data sequence for values
+ Reference< XDataSequence > xValueSeq;
+ if( pValues )
+ {
+ DataSourceConverter aSourceConv( rParent, *pValues );
+ xValueSeq = aSourceConv.createDataSequence( rRole );
+ }
+
+ // create data sequence for title
+ Reference< XDataSequence > xTitleSeq;
+ if( pTitle )
+ {
+ TextConverter aTextConv( rParent, *pTitle );
+ xTitleSeq = aTextConv.createDataSequence( "label" );
+ }
+
+ // create the labeled data sequence, if values or title are present
+ Reference< XLabeledDataSequence > xLabeledSeq;
+ if( xValueSeq.is() || xTitleSeq.is() )
+ {
+ xLabeledSeq = LabeledDataSequence::create(rParent.getComponentContext());
+ if( xLabeledSeq.is() )
+ {
+ xLabeledSeq->setValues( xValueSeq );
+ xLabeledSeq->setLabel( xTitleSeq );
+ }
+ }
+ return xLabeledSeq;
+}
+
+void convertTextProperty(PropertySet& rPropSet, ObjectFormatter& rFormatter,
+ DataLabelModelBase::TextBodyRef xTextProps)
+{
+ rFormatter.convertTextFormatting( rPropSet, xTextProps, OBJECTTYPE_DATALABEL );
+ ObjectFormatter::convertTextRotation( rPropSet, xTextProps, false );
+ ObjectFormatter::convertTextWrap( rPropSet, xTextProps );
+}
+
+void lclConvertLabelFormatting( PropertySet& rPropSet, ObjectFormatter& rFormatter,
+ DataLabelModelBase& rDataLabel, const TypeGroupConverter& rTypeGroup,
+ bool bDataSeriesLabel, bool bCustomLabelField, bool bHasInternalData, bool bMSO2007Doc )
+{
+ const TypeGroupInfo& rTypeInfo = rTypeGroup.getTypeInfo();
+
+ /* Excel 2007 does not change the series setting for a single data point,
+ if none of some specific elements occur. But only one existing element
+ in a data point will reset most other of these elements from the series
+ (e.g.: series has <c:showVal>, data point has <c:showCatName>, this
+ will reset <c:showVal> for this point, unless <c:showVal> is repeated
+ in the data point). The elements <c:layout>, <c:numberFormat>,
+ <c:spPr>, <c:tx>, and <c:txPr> are not affected at all. */
+ bool bHasAnyElement = true;
+ if (bMSO2007Doc)
+ {
+ bHasAnyElement = rDataLabel.moaSeparator.has() || rDataLabel.monLabelPos.has() ||
+ rDataLabel.mobShowCatName.has() || rDataLabel.mobShowLegendKey.has() ||
+ rDataLabel.mobShowPercent.has() || rDataLabel.mobShowSerName.has() ||
+ rDataLabel.mobShowVal.has();
+ }
+
+ bool bShowValue = !rDataLabel.mbDeleted && rDataLabel.mobShowVal.get( !bMSO2007Doc );
+ bool bShowPercent = !rDataLabel.mbDeleted && rDataLabel.mobShowPercent.get( !bMSO2007Doc ) && (rTypeInfo.meTypeCategory == TYPECATEGORY_PIE);
+ bool bShowCateg = !rDataLabel.mbDeleted && rDataLabel.mobShowCatName.get( !bMSO2007Doc );
+ bool bShowSerName = !rDataLabel.mbDeleted && rDataLabel.mobShowSerName.get( !bMSO2007Doc );
+ bool bShowSymbol = !rDataLabel.mbDeleted && rDataLabel.mobShowLegendKey.get( !bMSO2007Doc );
+
+ // tdf#132174, tdf#136650: the inner data table has no own cell number format.
+ if( bHasInternalData && bShowValue && !bShowPercent )
+ rDataLabel.maNumberFormat.mbSourceLinked = false;
+
+ // type of attached label
+ if( bHasAnyElement || rDataLabel.mbDeleted )
+ {
+ DataPointLabel aPointLabel( bShowValue, bShowPercent, bShowCateg, bShowSymbol, bCustomLabelField, bShowSerName );
+ rPropSet.setProperty( PROP_Label, aPointLabel );
+ }
+
+ if( rDataLabel.mbDeleted )
+ return;
+
+ // data label number format (percentage format wins over value format)
+ rFormatter.convertNumberFormat( rPropSet, rDataLabel.maNumberFormat, false, bShowPercent );
+
+ // data label text formatting (frame formatting not supported by Chart2)
+ if( bDataSeriesLabel || (rDataLabel.mxTextProp.is() && !rDataLabel.mxTextProp->getParagraphs().empty()) )
+ convertTextProperty(rPropSet, rFormatter, rDataLabel.mxTextProp);
+
+ // data label separator (do not overwrite series separator, if no explicit point separator is present)
+ // Set the data label separator to "new line" if the value is shown as percentage with a category name,
+ // just like in MS-Office. In any other case the default separator will be a semicolon.
+ if( bShowPercent && !bShowValue && ( bDataSeriesLabel || rDataLabel.moaSeparator.has() ) )
+ rPropSet.setProperty( PROP_LabelSeparator, rDataLabel.moaSeparator.get( "\n" ) );
+ else if( bDataSeriesLabel || rDataLabel.moaSeparator.has() )
+ rPropSet.setProperty( PROP_LabelSeparator, rDataLabel.moaSeparator.get( "; " ) );
+
+ // data label placement (do not overwrite series placement, if no explicit point placement is present)
+ if( !(bDataSeriesLabel || rDataLabel.monLabelPos.has()) )
+ return;
+
+ namespace csscd = ::com::sun::star::chart::DataLabelPlacement;
+ sal_Int32 nPlacement = -1;
+ switch( rDataLabel.monLabelPos.get( XML_TOKEN_INVALID ) )
+ {
+ case XML_outEnd: nPlacement = csscd::OUTSIDE; break;
+ case XML_inEnd: nPlacement = csscd::INSIDE; break;
+ case XML_ctr: nPlacement = csscd::CENTER; break;
+ case XML_inBase: nPlacement = csscd::NEAR_ORIGIN; break;
+ case XML_t: nPlacement = csscd::TOP; break;
+ case XML_b: nPlacement = csscd::BOTTOM; break;
+ case XML_l: nPlacement = csscd::LEFT; break;
+ case XML_r: nPlacement = csscd::RIGHT; break;
+ case XML_bestFit: nPlacement = csscd::AVOID_OVERLAP; break;
+ }
+
+ if( !bDataSeriesLabel && nPlacement == -1 )
+ return;
+
+ if( nPlacement == -1 )
+ nPlacement = rTypeInfo.mnDefLabelPos;
+
+ rPropSet.setProperty( PROP_LabelPlacement, nPlacement );
+}
+
+void importBorderProperties( PropertySet& rPropSet, Shape& rShape, const GraphicHelper& rGraphicHelper )
+{
+ LineProperties& rLP = rShape.getLineProperties();
+ // no fill has the same effect as no border so skip it
+ if (rLP.maLineFill.moFillType.get() == XML_noFill)
+ return;
+
+ if (rLP.moLineWidth.has())
+ {
+ sal_Int32 nWidth = convertEmuToHmm(rLP.moLineWidth.get());
+ rPropSet.setProperty(PROP_LabelBorderWidth, uno::Any(nWidth));
+ rPropSet.setProperty(PROP_LabelBorderStyle, uno::Any(drawing::LineStyle_SOLID));
+ }
+ const Color& aColor = rLP.maLineFill.maFillColor;
+ ::Color nColor = aColor.getColor(rGraphicHelper);
+ rPropSet.setProperty(PROP_LabelBorderColor, uno::Any(nColor));
+}
+
+void importFillProperties( PropertySet& rPropSet, Shape& rShape, const GraphicHelper& rGraphicHelper, ModelObjectHelper& rModelObjHelper )
+{
+ FillProperties& rFP = rShape.getFillProperties();
+
+ if (rFP.moFillType.has() && rFP.moFillType.get() == XML_solidFill)
+ {
+ rPropSet.setProperty(PROP_LabelFillStyle, drawing::FillStyle_SOLID);
+
+ const Color& aColor = rFP.maFillColor;
+ ::Color nColor = aColor.getColor(rGraphicHelper);
+ rPropSet.setProperty(PROP_LabelFillColor, uno::Any(nColor));
+ }
+ else if(rFP.moFillType.has() && rFP.moFillType.get() == XML_pattFill)
+ {
+ rPropSet.setProperty(PROP_LabelFillStyle, drawing::FillStyle_HATCH);
+ rPropSet.setProperty(PROP_LabelFillBackground, true);
+
+ Color aHatchColor( rFP.maPatternProps.maPattFgColor );
+ drawing::Hatch aHatch = createHatch(rFP.maPatternProps.moPattPreset.get(), aHatchColor.getColor(rGraphicHelper, 0));
+
+ OUString sHatchName = rModelObjHelper.insertFillHatch(aHatch);
+ rPropSet.setProperty(PROP_LabelFillHatchName, sHatchName);
+
+ const Color& aColor = rFP.maPatternProps.maPattBgColor;
+ ::Color nColor = aColor.getColor(rGraphicHelper);
+ rPropSet.setProperty(PROP_LabelFillColor, uno::Any(nColor));
+ }
+
+}
+
+DataPointCustomLabelFieldType lcl_ConvertFieldNameToFieldEnum( std::u16string_view rField )
+{
+ if (rField == u"VALUE")
+ return DataPointCustomLabelFieldType::DataPointCustomLabelFieldType_VALUE;
+ else if (rField == u"SERIESNAME")
+ return DataPointCustomLabelFieldType::DataPointCustomLabelFieldType_SERIESNAME;
+ else if (rField == u"CATEGORYNAME")
+ return DataPointCustomLabelFieldType::DataPointCustomLabelFieldType_CATEGORYNAME;
+ else if (rField == u"CELLREF")
+ return DataPointCustomLabelFieldType::DataPointCustomLabelFieldType_CELLREF;
+ else if (rField == u"CELLRANGE")
+ return DataPointCustomLabelFieldType::DataPointCustomLabelFieldType_CELLRANGE;
+ else if (rField == u"PERCENTAGE")
+ return DataPointCustomLabelFieldType::DataPointCustomLabelFieldType_PERCENTAGE;
+ else
+ return DataPointCustomLabelFieldType::DataPointCustomLabelFieldType_TEXT;
+}
+
+} // namespace
+
+DataLabelConverter::DataLabelConverter( const ConverterRoot& rParent, DataLabelModel& rModel ) :
+ ConverterBase< DataLabelModel >( rParent, rModel )
+{
+}
+
+DataLabelConverter::~DataLabelConverter()
+{
+}
+
+void DataLabelConverter::convertFromModel( const Reference< XDataSeries >& rxDataSeries, const TypeGroupConverter& rTypeGroup )
+{
+ if (!rxDataSeries.is())
+ return;
+
+ try
+ {
+ bool bMSO2007Doc = getFilter().isMSO2007Document();
+ bool bHasInternalData = getChartDocument()->hasInternalDataProvider();
+ bool bCustomLabelField = mrModel.mxText && mrModel.mxText->mxTextBody && !mrModel.mxText->mxTextBody->getParagraphs().empty();
+ PropertySet aPropSet( rxDataSeries->getDataPointByIndex( mrModel.mnIndex ) );
+
+ lclConvertLabelFormatting( aPropSet, getFormatter(), mrModel, rTypeGroup, false, bCustomLabelField, bHasInternalData, bMSO2007Doc );
+
+ const TypeGroupInfo& rTypeInfo = rTypeGroup.getTypeInfo();
+ bool bIsPie = rTypeInfo.meTypeCategory == TYPECATEGORY_PIE;
+
+ if( mrModel.mxLayout && !mrModel.mxLayout->mbAutoLayout )
+ {
+ RelativePosition aPos(mrModel.mxLayout->mfX, mrModel.mxLayout->mfY, css::drawing::Alignment_TOP_LEFT);
+ aPropSet.setProperty(PROP_CustomLabelPosition, aPos);
+ sal_Int32 nPlacement = -1;
+ if (bIsPie && aPropSet.getProperty(nPlacement, PROP_LabelPlacement)
+ && nPlacement == css::chart::DataLabelPlacement::AVOID_OVERLAP)
+ aPropSet.setProperty(PROP_LabelPlacement, css::chart::DataLabelPlacement::CUSTOM);
+ }
+
+ if (mrModel.mxShapeProp)
+ {
+ importBorderProperties(aPropSet, *mrModel.mxShapeProp, getFilter().getGraphicHelper());
+ uno::Reference<lang::XMultiServiceFactory> xFactory(getChartDocument(), uno::UNO_QUERY);
+ ModelObjectHelper& rHelper = getFilter().getModelObjectHelperForModel(xFactory);
+ importFillProperties(aPropSet, *mrModel.mxShapeProp, getFilter().getGraphicHelper(),
+ rHelper);
+ }
+ if( bCustomLabelField )
+ {
+ css::uno::Reference< XComponentContext > xContext = getComponentContext();
+
+ auto& rParagraphs = mrModel.mxText->mxTextBody->getParagraphs();
+
+ int nSequenceSize = 0;
+ for( auto& pParagraph : rParagraphs )
+ nSequenceSize += pParagraph->getRuns().size();
+
+ int nParagraphs = rParagraphs.size();
+ if( nParagraphs > 1 )
+ nSequenceSize += nParagraphs - 1;
+
+ OptValue< OUString > oaLabelText;
+ OptValue< OUString > oaCellRange;
+ if (mrModel.mobShowDataLabelsRange.get(false))
+ {
+ const DataSourceModel* pLabelSource = mrModel.mrParent.mpLabelsSource;
+ if (pLabelSource && pLabelSource->mxDataSeq.is())
+ {
+ oaCellRange = pLabelSource->mxDataSeq->maFormula;
+ const auto& rLabelMap = pLabelSource->mxDataSeq->maData;
+ const auto& rKV = rLabelMap.find(mrModel.mnIndex);
+ if (rKV != rLabelMap.end())
+ rKV->second >>= oaLabelText.use();
+ }
+ }
+
+ uno::Sequence< css::uno::Reference< XDataPointCustomLabelField > > aSequence( nSequenceSize );
+ auto aSequenceRange = asNonConstRange(aSequence);
+
+ int nPos = 0;
+
+ for( auto& pParagraph : rParagraphs )
+ {
+ for( auto& pRun : pParagraph->getRuns() )
+ {
+ css::uno::Reference< XDataPointCustomLabelField > xCustomLabel = DataPointCustomLabelField::create( xContext );
+
+ // Store properties
+ oox::PropertySet aPropertySet( xCustomLabel );
+ convertTextProperty( aPropertySet, getFormatter(), mrModel.mxText->mxTextBody );
+ pRun->getTextCharacterProperties().pushToPropSet( aPropertySet, getFilter() );
+
+ TextField* pField = nullptr;
+ if( ( pField = dynamic_cast< TextField* >( pRun.get() ) ) )
+ {
+ DataPointCustomLabelFieldType eType = lcl_ConvertFieldNameToFieldEnum( pField->getType() );
+
+ if (eType == DataPointCustomLabelFieldType::DataPointCustomLabelFieldType_CELLRANGE && oaCellRange.has())
+ {
+ xCustomLabel->setCellRange( oaCellRange.get() );
+ xCustomLabel->setString( oaLabelText.get() );
+ xCustomLabel->setDataLabelsRange( true );
+ }
+ else
+ xCustomLabel->setString( pField->getText() );
+
+ xCustomLabel->setFieldType( eType );
+ xCustomLabel->setGuid( pField->getUuid() );
+ }
+ else if( pRun )
+ {
+ xCustomLabel->setString( pRun->getText() );
+ xCustomLabel->setFieldType( DataPointCustomLabelFieldType::DataPointCustomLabelFieldType_TEXT );
+ }
+ aSequenceRange[ nPos++ ] = xCustomLabel;
+ }
+
+ if( nParagraphs > 1 && nPos < nSequenceSize )
+ {
+ css::uno::Reference< XDataPointCustomLabelField > xCustomLabel = DataPointCustomLabelField::create( xContext );
+ xCustomLabel->setFieldType( DataPointCustomLabelFieldType::DataPointCustomLabelFieldType_NEWLINE );
+ xCustomLabel->setString("\n");
+ aSequenceRange[ nPos++ ] = xCustomLabel;
+ }
+ }
+
+ aPropSet.setProperty( PROP_CustomLabelFields, Any( aSequence ) );
+ convertTextProperty(aPropSet, getFormatter(), mrModel.mxText->mxTextBody);
+ }
+ }
+ catch( Exception& )
+ {
+ }
+}
+
+DataLabelsConverter::DataLabelsConverter( const ConverterRoot& rParent, DataLabelsModel& rModel ) :
+ ConverterBase< DataLabelsModel >( rParent, rModel )
+{
+}
+
+DataLabelsConverter::~DataLabelsConverter()
+{
+}
+
+namespace
+{
+/// Inherit <c:dLbl> text props (if not set) from <c:dLbls> text props (if set).
+void InheritFromDataLabelsTextProps(const DataLabelsModel& rLabels, const DataLabelModel& rLabel)
+{
+ // See if <c:dLbls> contains text properties to inherit.
+ if (!rLabels.mxTextProp.is() || rLabels.mxTextProp->getParagraphs().empty())
+ {
+ return;
+ }
+
+ const std::shared_ptr<TextParagraph>& rLabelsParagraph = rLabels.mxTextProp->getParagraphs()[0];
+
+ // See if <c:dLbl> lacks text properties.
+ if (rLabel.mxTextProp.is())
+ {
+ return;
+ }
+
+ if (!rLabel.mxText || !rLabel.mxText->mxTextBody
+ || rLabel.mxText->mxTextBody->getParagraphs().empty())
+ {
+ return;
+ }
+
+ const std::shared_ptr<TextParagraph>& rLabelParagraph
+ = rLabel.mxText->mxTextBody->getParagraphs()[0];
+
+ // Inherit rLabel.mxText's char props from rLabels.mxTextProp's char props.
+ TextCharacterProperties aCharProps;
+ aCharProps.assignUsed(rLabelsParagraph->getProperties().getTextCharacterProperties());
+ aCharProps.assignUsed(rLabelParagraph->getProperties().getTextCharacterProperties());
+ rLabelParagraph->getProperties().getTextCharacterProperties().assignUsed(aCharProps);
+}
+}
+
+void DataLabelsConverter::convertFromModel( const Reference< XDataSeries >& rxDataSeries, const TypeGroupConverter& rTypeGroup )
+{
+ PropertySet aPropSet( rxDataSeries );
+ if( !mrModel.mbDeleted )
+ {
+ bool bMSO2007Doc = getFilter().isMSO2007Document();
+ bool bHasInternalData = getChartDocument()->hasInternalDataProvider();
+
+ lclConvertLabelFormatting( aPropSet, getFormatter(), mrModel, rTypeGroup, true, false, bHasInternalData, bMSO2007Doc );
+
+ if (mrModel.mxShapeProp)
+ {
+ // Import baseline border properties for these data labels.
+ importBorderProperties(aPropSet, *mrModel.mxShapeProp, getFilter().getGraphicHelper());
+ uno::Reference<lang::XMultiServiceFactory> xFactory(getChartDocument(), uno::UNO_QUERY);
+ ModelObjectHelper& rHelper = getFilter().getModelObjectHelperForModel(xFactory);
+ importFillProperties(aPropSet, *mrModel.mxShapeProp, getFilter().getGraphicHelper(),
+ rHelper);
+ }
+ }
+ // import leaderline of data labels
+ if( !mrModel.mbShowLeaderLines )
+ aPropSet.setProperty( PROP_ShowCustomLeaderLines, false );
+
+ // data point label settings
+ for (auto const& pointLabel : mrModel.maPointLabels)
+ {
+ if (pointLabel->maNumberFormat.maFormatCode.isEmpty())
+ pointLabel->maNumberFormat = mrModel.maNumberFormat;
+ InheritFromDataLabelsTextProps(mrModel, *pointLabel);
+
+ DataLabelConverter aLabelConv(*this, *pointLabel);
+ aLabelConv.convertFromModel( rxDataSeries, rTypeGroup );
+ }
+}
+
+ErrorBarConverter::ErrorBarConverter( const ConverterRoot& rParent, ErrorBarModel& rModel ) :
+ ConverterBase< ErrorBarModel >( rParent, rModel )
+{
+}
+
+ErrorBarConverter::~ErrorBarConverter()
+{
+}
+
+void ErrorBarConverter::convertFromModel( const Reference< XDataSeries >& rxDataSeries )
+{
+ bool bShowPos = (mrModel.mnTypeId == XML_plus) || (mrModel.mnTypeId == XML_both);
+ bool bShowNeg = (mrModel.mnTypeId == XML_minus) || (mrModel.mnTypeId == XML_both);
+ if( !(bShowPos || bShowNeg) )
+ return;
+
+ try
+ {
+ Reference< XPropertySet > xErrorBar( createInstance( "com.sun.star.chart2.ErrorBar" ), UNO_QUERY_THROW );
+ PropertySet aBarProp( xErrorBar );
+
+ // plus/minus bars
+ aBarProp.setProperty( PROP_ShowPositiveError, bShowPos );
+ aBarProp.setProperty( PROP_ShowNegativeError, bShowNeg );
+
+ // type of displayed error
+ namespace cssc = ::com::sun::star::chart;
+ switch( mrModel.mnValueType )
+ {
+ case XML_cust:
+ {
+ // #i87806# manual error bars
+ aBarProp.setProperty( PROP_ErrorBarStyle, cssc::ErrorBarStyle::FROM_DATA );
+ // attach data sequences to error bar
+ Reference< XDataSink > xDataSink( xErrorBar, UNO_QUERY );
+ if( xDataSink.is() )
+ {
+ // create vector of all value sequences
+ ::std::vector< Reference< XLabeledDataSequence > > aLabeledSeqVec;
+ // add positive values
+ if( bShowPos )
+ {
+ Reference< XLabeledDataSequence > xValueSeq = createLabeledDataSequence( ErrorBarModel::PLUS );
+ if( xValueSeq.is() )
+ aLabeledSeqVec.push_back( xValueSeq );
+ }
+ // add negative values
+ if( bShowNeg )
+ {
+ Reference< XLabeledDataSequence > xValueSeq = createLabeledDataSequence( ErrorBarModel::MINUS );
+ if( xValueSeq.is() )
+ aLabeledSeqVec.push_back( xValueSeq );
+ }
+ // attach labeled data sequences to series
+ if( aLabeledSeqVec.empty() )
+ xErrorBar.clear();
+ else
+ xDataSink->setData( comphelper::containerToSequence( aLabeledSeqVec ) );
+ }
+ }
+ break;
+ case XML_fixedVal:
+ aBarProp.setProperty( PROP_ErrorBarStyle, cssc::ErrorBarStyle::ABSOLUTE );
+ aBarProp.setProperty( PROP_PositiveError, mrModel.mfValue );
+ aBarProp.setProperty( PROP_NegativeError, mrModel.mfValue );
+ break;
+ case XML_percentage:
+ aBarProp.setProperty( PROP_ErrorBarStyle, cssc::ErrorBarStyle::RELATIVE );
+ aBarProp.setProperty( PROP_PositiveError, mrModel.mfValue );
+ aBarProp.setProperty( PROP_NegativeError, mrModel.mfValue );
+ break;
+ case XML_stdDev:
+ aBarProp.setProperty( PROP_ErrorBarStyle, cssc::ErrorBarStyle::STANDARD_DEVIATION );
+ aBarProp.setProperty( PROP_Weight, mrModel.mfValue );
+ break;
+ case XML_stdErr:
+ aBarProp.setProperty( PROP_ErrorBarStyle, cssc::ErrorBarStyle::STANDARD_ERROR );
+ break;
+ default:
+ OSL_FAIL( "ErrorBarConverter::convertFromModel - unknown error bar type" );
+ xErrorBar.clear();
+ }
+
+ // error bar formatting
+ getFormatter().convertFrameFormatting( aBarProp, mrModel.mxShapeProp, OBJECTTYPE_ERRORBAR );
+
+ if( xErrorBar.is() )
+ {
+ PropertySet aSeriesProp( rxDataSeries );
+ switch( mrModel.mnDirection )
+ {
+ case XML_x: aSeriesProp.setProperty( PROP_ErrorBarX, xErrorBar ); break;
+ case XML_y: aSeriesProp.setProperty( PROP_ErrorBarY, xErrorBar ); break;
+ default: OSL_FAIL( "ErrorBarConverter::convertFromModel - invalid error bar direction" );
+ }
+ }
+ }
+ catch( Exception& )
+ {
+ OSL_FAIL( "ErrorBarConverter::convertFromModel - error while creating error bars" );
+ }
+}
+
+Reference< XLabeledDataSequence > ErrorBarConverter::createLabeledDataSequence( ErrorBarModel::SourceType eSourceType )
+{
+ OUString aRole;
+ switch( eSourceType )
+ {
+ case ErrorBarModel::PLUS:
+ switch( mrModel.mnDirection )
+ {
+ case XML_x: aRole = "error-bars-x-positive"; break;
+ case XML_y: aRole = "error-bars-y-positive"; break;
+ }
+ break;
+ case ErrorBarModel::MINUS:
+ switch( mrModel.mnDirection )
+ {
+ case XML_x: aRole = "error-bars-x-negative"; break;
+ case XML_y: aRole = "error-bars-y-negative"; break;
+ }
+ break;
+ }
+ OSL_ENSURE( !aRole.isEmpty(), "ErrorBarConverter::createLabeledDataSequence - invalid error bar direction" );
+ return lclCreateLabeledDataSequence( *this, mrModel.maSources.get( eSourceType ).get(), aRole );
+}
+
+TrendlineLabelConverter::TrendlineLabelConverter( const ConverterRoot& rParent, TrendlineLabelModel& rModel ) :
+ ConverterBase< TrendlineLabelModel >( rParent, rModel )
+{
+}
+
+TrendlineLabelConverter::~TrendlineLabelConverter()
+{
+}
+
+void TrendlineLabelConverter::convertFromModel( PropertySet& rPropSet )
+{
+ // formatting
+ getFormatter().convertFormatting( rPropSet, mrModel.mxShapeProp, mrModel.mxTextProp, OBJECTTYPE_TRENDLINELABEL );
+}
+
+TrendlineConverter::TrendlineConverter( const ConverterRoot& rParent, TrendlineModel& rModel ) :
+ ConverterBase< TrendlineModel >( rParent, rModel )
+{
+}
+
+TrendlineConverter::~TrendlineConverter()
+{
+}
+
+void TrendlineConverter::convertFromModel( const Reference< XDataSeries >& rxDataSeries )
+{
+ try
+ {
+ // trend line type
+ OUString aServiceName;
+ switch( mrModel.mnTypeId )
+ {
+ case XML_exp:
+ aServiceName = "com.sun.star.chart2.ExponentialRegressionCurve";
+ break;
+ case XML_linear:
+ aServiceName = "com.sun.star.chart2.LinearRegressionCurve";
+ break;
+ case XML_log:
+ aServiceName = "com.sun.star.chart2.LogarithmicRegressionCurve";
+ break;
+ case XML_movingAvg:
+ aServiceName = "com.sun.star.chart2.MovingAverageRegressionCurve";
+ break;
+ case XML_poly:
+ aServiceName = "com.sun.star.chart2.PolynomialRegressionCurve";
+ break;
+ case XML_power:
+ aServiceName = "com.sun.star.chart2.PotentialRegressionCurve";
+ break;
+ default:
+ OSL_FAIL( "TrendlineConverter::convertFromModel - unknown trendline type" );
+ }
+ if( !aServiceName.isEmpty() )
+ {
+ Reference< XRegressionCurve > xRegCurve( createInstance( aServiceName ), UNO_QUERY_THROW );
+ PropertySet aPropSet( xRegCurve );
+
+ // Name
+ aPropSet.setProperty( PROP_CurveName, mrModel.maName );
+ aPropSet.setProperty( PROP_PolynomialDegree, mrModel.mnOrder );
+ aPropSet.setProperty( PROP_MovingAveragePeriod, mrModel.mnPeriod );
+
+ // Intercept
+ bool hasIntercept = mrModel.mfIntercept.has();
+ aPropSet.setProperty( PROP_ForceIntercept, hasIntercept);
+ if (hasIntercept)
+ aPropSet.setProperty( PROP_InterceptValue, mrModel.mfIntercept.get());
+
+ // Extrapolation
+ if (mrModel.mfForward.has())
+ aPropSet.setProperty( PROP_ExtrapolateForward, mrModel.mfForward.get() );
+ if (mrModel.mfBackward.has())
+ aPropSet.setProperty( PROP_ExtrapolateBackward, mrModel.mfBackward.get() );
+
+ // trendline formatting
+ getFormatter().convertFrameFormatting( aPropSet, mrModel.mxShapeProp, OBJECTTYPE_TRENDLINE );
+
+ // #i83100# show equation and correlation coefficient
+ PropertySet aLabelProp( xRegCurve->getEquationProperties() );
+ aLabelProp.setProperty( PROP_ShowEquation, mrModel.mbDispEquation );
+ aLabelProp.setProperty( PROP_ShowCorrelationCoefficient, mrModel.mbDispRSquared );
+
+ // #i83100# formatting of the equation text box
+ if( mrModel.mbDispEquation || mrModel.mbDispRSquared )
+ {
+ TrendlineLabelConverter aLabelConv( *this, mrModel.mxLabel.getOrCreate() );
+ aLabelConv.convertFromModel( aLabelProp );
+ }
+
+ // unsupported: #i5085# manual trendline size
+ // unsupported: #i34093# manual crossing point
+
+ Reference< XRegressionCurveContainer > xRegCurveCont( rxDataSeries, UNO_QUERY_THROW );
+ xRegCurveCont->addRegressionCurve( xRegCurve );
+ }
+ }
+ catch( Exception& )
+ {
+ OSL_FAIL( "TrendlineConverter::convertFromModel - error while creating trendline" );
+ }
+}
+
+DataPointConverter::DataPointConverter( const ConverterRoot& rParent, DataPointModel& rModel ) :
+ ConverterBase< DataPointModel >( rParent, rModel )
+{
+}
+
+DataPointConverter::~DataPointConverter()
+{
+}
+
+void DataPointConverter::convertFromModel( const Reference< XDataSeries >& rxDataSeries,
+ const TypeGroupConverter& rTypeGroup, const SeriesModel& rSeries )
+{
+ bool bMSO2007Doc = getFilter().isMSO2007Document();
+ try
+ {
+ PropertySet aPropSet( rxDataSeries->getDataPointByIndex( mrModel.mnIndex ) );
+
+ // data point marker
+ if( mrModel.monMarkerSymbol.differsFrom( rSeries.mnMarkerSymbol ) || mrModel.monMarkerSize.differsFrom( rSeries.mnMarkerSize ) )
+ rTypeGroup.convertMarker( aPropSet, mrModel.monMarkerSymbol.get( rSeries.mnMarkerSymbol ),
+ mrModel.monMarkerSize.get( rSeries.mnMarkerSize ), mrModel.mxMarkerProp );
+
+ // data point pie explosion
+ if( mrModel.monExplosion.differsFrom( rSeries.mnExplosion ) )
+ rTypeGroup.convertPieExplosion( aPropSet, mrModel.monExplosion.get() );
+
+ // point formatting
+ if( mrModel.mxShapeProp.is() )
+ {
+ if( rTypeGroup.getTypeInfo().mbPictureOptions )
+ getFormatter().convertFrameFormatting( aPropSet, mrModel.mxShapeProp, mrModel.mxPicOptions.getOrCreate(bMSO2007Doc), rTypeGroup.getSeriesObjectType(), rSeries.mnIndex );
+ else
+ getFormatter().convertFrameFormatting( aPropSet, mrModel.mxShapeProp, rTypeGroup.getSeriesObjectType(), rSeries.mnIndex );
+ }
+ else if (rSeries.mxShapeProp.is())
+ {
+ getFormatter().convertFrameFormatting( aPropSet, rSeries.mxShapeProp, rTypeGroup.getSeriesObjectType(), rSeries.mnIndex );
+ }
+ }
+ catch( Exception& )
+ {
+ }
+}
+
+SeriesConverter::SeriesConverter( const ConverterRoot& rParent, SeriesModel& rModel ) :
+ ConverterBase< SeriesModel >( rParent, rModel )
+{
+}
+
+SeriesConverter::~SeriesConverter()
+{
+}
+
+Reference< XLabeledDataSequence > SeriesConverter::createCategorySequence( const OUString& rRole )
+{
+ return createLabeledDataSequence(SeriesModel::CATEGORIES, rRole, false);
+}
+
+Reference< XLabeledDataSequence > SeriesConverter::createValueSequence( const OUString& rRole )
+{
+ return createLabeledDataSequence( SeriesModel::VALUES, rRole, true );
+}
+
+Reference< XDataSeries > SeriesConverter::createDataSeries( const TypeGroupConverter& rTypeGroup, bool bVaryColorsByPoint )
+{
+ const TypeGroupInfo& rTypeInfo = rTypeGroup.getTypeInfo();
+
+ // create the data series object
+ Reference< XDataSeries > xDataSeries( createInstance( "com.sun.star.chart2.DataSeries" ), UNO_QUERY );
+ PropertySet aSeriesProp( xDataSeries );
+
+ // attach data and title sequences to series
+ sal_Int32 nDataPointCount = 0;
+ Reference< XDataSink > xDataSink( xDataSeries, UNO_QUERY );
+ if( xDataSink.is() )
+ {
+ // create vector of all value sequences
+ ::std::vector< Reference< XLabeledDataSequence > > aLabeledSeqVec;
+ // add Y values
+ Reference< XLabeledDataSequence > xYValueSeq = createValueSequence( "values-y" );
+ if( xYValueSeq.is() )
+ {
+ aLabeledSeqVec.push_back( xYValueSeq );
+ Reference< XDataSequence > xValues = xYValueSeq->getValues();
+ if( xValues.is() )
+ nDataPointCount = xValues->getData().getLength();
+
+ if (!nDataPointCount)
+ // No values present. Don't create a data series.
+ return Reference<XDataSeries>();
+ }
+ // add X values of scatter and bubble charts
+ if( !rTypeInfo.mbCategoryAxis )
+ {
+ Reference< XLabeledDataSequence > xXValueSeq = createCategorySequence( "values-x" );
+ if( xXValueSeq.is() )
+ aLabeledSeqVec.push_back( xXValueSeq );
+ // add size values of bubble charts
+ if( rTypeInfo.meTypeId == TYPEID_BUBBLE )
+ {
+ Reference< XLabeledDataSequence > xSizeValueSeq = createLabeledDataSequence( SeriesModel::POINTS, "values-size", true );
+ if( xSizeValueSeq.is() )
+ aLabeledSeqVec.push_back( xSizeValueSeq );
+ }
+ }
+ // attach labeled data sequences to series
+ if( !aLabeledSeqVec.empty() )
+ xDataSink->setData( comphelper::containerToSequence( aLabeledSeqVec ) );
+ }
+
+ // error bars
+ for (auto const& errorBar : mrModel.maErrorBars)
+ {
+ ErrorBarConverter aErrorBarConv(*this, *errorBar);
+ aErrorBarConv.convertFromModel( xDataSeries );
+ }
+
+ // trendlines
+ for (auto const& trendLine : mrModel.maTrendlines)
+ {
+ TrendlineConverter aTrendlineConv(*this, *trendLine);
+ aTrendlineConv.convertFromModel( xDataSeries );
+ }
+
+ // data point markers
+ rTypeGroup.convertMarker( aSeriesProp, mrModel.mnMarkerSymbol, mrModel.mnMarkerSize, mrModel.mxMarkerProp );
+#if OOX_CHART_SMOOTHED_PER_SERIES
+ // #i66858# smoothed series lines
+ rTypeGroup.convertLineSmooth( aSeriesProp, mrModel.mbSmooth );
+#endif
+ // 3D bar style (not possible to set at chart type -> set at all series)
+ rTypeGroup.convertBarGeometry( aSeriesProp, mrModel.monShape.get( rTypeGroup.getModel().mnShape ) );
+ // pie explosion (restricted to [0%,100%] in Chart2)
+ rTypeGroup.convertPieExplosion( aSeriesProp, mrModel.mnExplosion );
+
+ // series formatting
+ ObjectFormatter& rFormatter = getFormatter();
+ ObjectType eObjType = rTypeGroup.getSeriesObjectType();
+ bool bMSO2007Doc = getFilter().isMSO2007Document();
+ if( rTypeInfo.mbPictureOptions )
+ rFormatter.convertFrameFormatting( aSeriesProp, mrModel.mxShapeProp, mrModel.mxPicOptions.getOrCreate(bMSO2007Doc), eObjType, mrModel.mnIndex );
+ else
+ rFormatter.convertFrameFormatting( aSeriesProp, mrModel.mxShapeProp, eObjType, mrModel.mnIndex );
+
+ // set the (unused) property default value used by the Chart2 templates (true for pie/doughnut charts)
+ bool bIsPie = rTypeInfo.meTypeCategory == TYPECATEGORY_PIE;
+ aSeriesProp.setProperty( PROP_VaryColorsByPoint, bVaryColorsByPoint );
+
+ // own area formatting for every data point (TODO: varying line color not supported)
+ // #i91271# always set area formatting for every point in pie/doughnut charts to override their automatic point formatting
+ if( bIsPie || (bVaryColorsByPoint && rTypeGroup.isSeriesFrameFormat() && ObjectFormatter::isAutomaticFill( mrModel.mxShapeProp )) )
+ {
+ /* Set the series point number as color cycle size at the object
+ formatter to get correct start-shade/end-tint. TODO: in doughnut
+ charts, the sizes of the series may vary, need to use the maximum
+ point count of all series. */
+ sal_Int32 nOldMax = rFormatter.getMaxSeriesIndex();
+ if( bVaryColorsByPoint )
+ rFormatter.setMaxSeriesIndex( nDataPointCount - 1 );
+ for( sal_Int32 nIndex = 0; nIndex < nDataPointCount; ++nIndex )
+ {
+ try
+ {
+ PropertySet aPointProp( xDataSeries->getDataPointByIndex( nIndex ) );
+ rFormatter.convertAutomaticFill( aPointProp, eObjType, bVaryColorsByPoint ? nIndex : mrModel.mnIndex );
+ }
+ catch( Exception& )
+ {
+ }
+ }
+ rFormatter.setMaxSeriesIndex( nOldMax );
+ }
+
+ // data point settings
+ for (auto const& point : mrModel.maPoints)
+ {
+ DataPointConverter aPointConv(*this, *point);
+ aPointConv.convertFromModel( xDataSeries, rTypeGroup, mrModel );
+ }
+
+ /* Series data label settings. If and only if the series does not contain
+ a c:dLbls element, then the c:dLbls element of the parent chart type is
+ used (data label settings of the parent chart type are *not* merged
+ into own existing data label settings). */
+ ModelRef< DataLabelsModel > xLabels = mrModel.mxLabels.is() ? mrModel.mxLabels : rTypeGroup.getModel().mxLabels;
+ if( xLabels.is() )
+ {
+ if( xLabels->maNumberFormat.maFormatCode.isEmpty() )
+ {
+ // Use number format code from Value series
+ DataSourceModel* pValues = mrModel.maSources.get( SeriesModel::VALUES ).get();
+ if( pValues )
+ xLabels->maNumberFormat.maFormatCode = pValues->mxDataSeq->maFormatCode;
+ }
+ DataLabelsConverter aLabelsConv( *this, *xLabels );
+ aLabelsConv.convertFromModel( xDataSeries, rTypeGroup );
+ }
+
+ return xDataSeries;
+}
+
+// private --------------------------------------------------------------------
+
+Reference< XLabeledDataSequence > SeriesConverter::createLabeledDataSequence(
+ SeriesModel::SourceType eSourceType, const OUString& rRole, bool bUseTextLabel )
+{
+ DataSourceModel* pValues = mrModel.maSources.get( eSourceType ).get();
+ TextModel* pTitle = bUseTextLabel ? mrModel.mxText.get() : nullptr;
+ return lclCreateLabeledDataSequence( *this, pValues, rRole, pTitle );
+}
+
+} // namespace oox
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/oox/source/drawingml/chart/seriesmodel.cxx b/oox/source/drawingml/chart/seriesmodel.cxx
new file mode 100644
index 000000000..95b0deb22
--- /dev/null
+++ b/oox/source/drawingml/chart/seriesmodel.cxx
@@ -0,0 +1,127 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ *
+ * This file incorporates work covered by the following license notice:
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed
+ * with this work for additional information regarding copyright
+ * ownership. The ASF licenses this file to you under the Apache
+ * License, Version 2.0 (the "License"); you may not use this file
+ * except in compliance with the License. You may obtain a copy of
+ * the License at http://www.apache.org/licenses/LICENSE-2.0 .
+ */
+
+#include <drawingml/chart/seriesmodel.hxx>
+#include <oox/token/tokens.hxx>
+
+namespace oox::drawingml::chart {
+
+DataLabelModelBase::DataLabelModelBase(bool bMSO2007Doc) :
+ mbDeleted( !bMSO2007Doc )
+{
+}
+
+DataLabelModelBase::~DataLabelModelBase()
+{
+}
+
+DataLabelModel::DataLabelModel(const DataLabelsModel& rParent, bool bMSO2007Doc) :
+ DataLabelModelBase(bMSO2007Doc),
+ mrParent( rParent ),
+ mnIndex( -1 )
+{
+}
+
+DataLabelModel::~DataLabelModel()
+{
+}
+
+DataLabelsModel::DataLabelsModel(bool bMSO2007Doc) :
+ DataLabelModelBase(bMSO2007Doc),
+ mpLabelsSource( nullptr ),
+ mbShowLeaderLines( !bMSO2007Doc )
+{
+}
+
+DataLabelsModel::~DataLabelsModel()
+{
+}
+
+PictureOptionsModel::PictureOptionsModel(bool bMSO2007Doc) :
+ mfStackUnit( 1.0 ),
+ mnPictureFormat( XML_stretch ),
+ mbApplyToFront( !bMSO2007Doc ),
+ mbApplyToSides( !bMSO2007Doc ),
+ mbApplyToEnd( !bMSO2007Doc )
+{
+}
+
+ErrorBarModel::ErrorBarModel(bool bMSO2007Doc) :
+ mfValue( 0.0 ),
+ mnDirection( XML_y ),
+ mnTypeId( XML_both ),
+ mnValueType( XML_fixedVal ),
+ mbNoEndCap( !bMSO2007Doc )
+{
+}
+
+ErrorBarModel::~ErrorBarModel()
+{
+}
+
+TrendlineLabelModel::TrendlineLabelModel()
+{
+}
+
+TrendlineLabelModel::~TrendlineLabelModel()
+{
+}
+
+TrendlineModel::TrendlineModel(bool bMSO2007Doc) :
+ mnOrder( 2 ),
+ mnPeriod( 2 ),
+ mnTypeId( XML_linear ),
+ mbDispEquation( !bMSO2007Doc ),
+ mbDispRSquared( !bMSO2007Doc )
+{
+}
+
+TrendlineModel::~TrendlineModel()
+{
+}
+
+DataPointModel::DataPointModel(bool bMSO2007Doc) :
+ mnIndex( -1 ),
+ mbInvertNeg( !bMSO2007Doc )
+{
+}
+
+DataPointModel::~DataPointModel()
+{
+}
+
+SeriesModel::SeriesModel(bool bMSO2007Doc) :
+ mnExplosion( 0 ),
+ mnIndex( -1 ),
+ mnMarkerSize( 5 ),
+ mnMarkerSymbol( XML_auto ),
+ mnOrder( -1 ),
+ mbBubble3d( !bMSO2007Doc ),
+ mbInvertNeg( !bMSO2007Doc ),
+ mbSmooth( !bMSO2007Doc )
+{
+}
+
+SeriesModel::~SeriesModel()
+{
+}
+
+} // namespace oox::drawingml::chart
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/oox/source/drawingml/chart/titlecontext.cxx b/oox/source/drawingml/chart/titlecontext.cxx
new file mode 100644
index 000000000..04a4ea706
--- /dev/null
+++ b/oox/source/drawingml/chart/titlecontext.cxx
@@ -0,0 +1,176 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ *
+ * This file incorporates work covered by the following license notice:
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed
+ * with this work for additional information regarding copyright
+ * ownership. The ASF licenses this file to you under the Apache
+ * License, Version 2.0 (the "License"); you may not use this file
+ * except in compliance with the License. You may obtain a copy of
+ * the License at http://www.apache.org/licenses/LICENSE-2.0 .
+ */
+
+#include <drawingml/chart/titlecontext.hxx>
+
+#include <drawingml/shapepropertiescontext.hxx>
+#include <drawingml/textbodycontext.hxx>
+#include <drawingml/chart/datasourcecontext.hxx>
+#include <drawingml/chart/titlemodel.hxx>
+#include <oox/helper/attributelist.hxx>
+#include <oox/token/namespaces.hxx>
+#include <oox/token/tokens.hxx>
+
+#include <osl/diagnose.h>
+
+
+namespace oox::drawingml::chart {
+
+using ::oox::core::ContextHandler2Helper;
+using ::oox::core::ContextHandlerRef;
+
+TextContext::TextContext( ContextHandler2Helper& rParent, TextModel& rModel ) :
+ ContextBase< TextModel >( rParent, rModel )
+{
+}
+
+TextContext::~TextContext()
+{
+}
+
+ContextHandlerRef TextContext::onCreateContext( sal_Int32 nElement, const AttributeList& )
+{
+ // this context handler is used for <c:tx> and embedded <c:v> elements
+ if( isCurrentElement( C_TOKEN( tx ) ) ) switch( nElement )
+ {
+ case C_TOKEN( rich ):
+ return new TextBodyContext( *this, mrModel.mxTextBody.create() );
+
+ case C_TOKEN( strRef ):
+ OSL_ENSURE( !mrModel.mxDataSeq, "TextContext::onCreateContext - multiple data sequences" );
+ return new StringSequenceContext( *this, mrModel.mxDataSeq.create() );
+
+ case C_TOKEN( v ):
+ OSL_ENSURE( !mrModel.mxDataSeq, "TextContext::onCreateContext - multiple data sequences" );
+ return this; // collect value in onCharacters()
+ }
+ return nullptr;
+}
+
+void TextContext::onCharacters( const OUString& rChars )
+{
+ if( isCurrentElement( C_TOKEN( v ) ) )
+ {
+ // Static text is stored as a single string formula token for Excel document.
+ mrModel.mxDataSeq.create().maFormula = "\"" + rChars + "\"";
+
+ // Also store it as a single element type for non-Excel document.
+ mrModel.mxDataSeq->maData[0] <<= rChars;
+ mrModel.mxDataSeq->mnPointCount = 1;
+ }
+}
+
+TitleContext::TitleContext( ContextHandler2Helper& rParent, TitleModel& rModel ) :
+ ContextBase< TitleModel >( rParent, rModel )
+{
+}
+
+TitleContext::~TitleContext()
+{
+}
+
+ContextHandlerRef TitleContext::onCreateContext( sal_Int32 nElement, const AttributeList& rAttribs )
+{
+ // this context handler is used for <c:title> only
+ switch( nElement )
+ {
+ case C_TOKEN( layout ):
+ return new LayoutContext( *this, mrModel.mxLayout.create() );
+
+ case C_TOKEN( overlay ):
+ mrModel.mbOverlay = rAttribs.getBool( XML_val, true );
+ return nullptr;
+
+ case C_TOKEN( spPr ):
+ return new ShapePropertiesContext( *this, mrModel.mxShapeProp.create() );
+
+ case C_TOKEN( tx ):
+ return new TextContext( *this, mrModel.mxText.create() );
+
+ case C_TOKEN( txPr ):
+ return new TextBodyContext( *this, mrModel.mxTextProp.create() );
+ }
+ return nullptr;
+}
+
+LegendEntryContext::LegendEntryContext( ContextHandler2Helper& rParent, LegendEntryModel& rModel ) :
+ ContextBase< LegendEntryModel >( rParent, rModel )
+{
+}
+
+LegendEntryContext::~LegendEntryContext()
+{
+}
+
+ContextHandlerRef LegendEntryContext::onCreateContext( sal_Int32 nElement, const AttributeList& rAttribs )
+{
+ // this context handler is used for <c:legendEntry> only
+ switch( nElement )
+ {
+ case C_TOKEN( idx ):
+ mrModel.mnLegendEntryIdx = rAttribs.getInteger( XML_val, -1 );
+ return nullptr;
+
+ case C_TOKEN( delete ):
+ mrModel.mbLabelDeleted = rAttribs.getBool( XML_val, true );
+ return nullptr;
+ }
+ return nullptr;
+}
+
+LegendContext::LegendContext( ContextHandler2Helper& rParent, LegendModel& rModel ) :
+ ContextBase< LegendModel >( rParent, rModel )
+{
+}
+
+LegendContext::~LegendContext()
+{
+}
+
+ContextHandlerRef LegendContext::onCreateContext( sal_Int32 nElement, const AttributeList& rAttribs )
+{
+ // this context handler is used for <c:legend> only
+ switch( nElement )
+ {
+ case C_TOKEN( layout ):
+ return new LayoutContext( *this, mrModel.mxLayout.create() );
+
+ case C_TOKEN( legendPos ):
+ mrModel.mnPosition = rAttribs.getToken( XML_val, XML_r );
+ return nullptr;
+
+ case C_TOKEN( legendEntry ):
+ return new LegendEntryContext( *this, mrModel.maLegendEntries.create() );
+
+ case C_TOKEN( overlay ):
+ mrModel.mbOverlay = rAttribs.getBool( XML_val, true );
+ return nullptr;
+
+ case C_TOKEN( spPr ):
+ return new ShapePropertiesContext( *this, mrModel.mxShapeProp.create() );
+
+ case C_TOKEN( txPr ):
+ return new TextBodyContext( *this, mrModel.mxTextProp.create() );
+ }
+ return nullptr;
+}
+
+} // namespace oox::drawingml::chart
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/oox/source/drawingml/chart/titleconverter.cxx b/oox/source/drawingml/chart/titleconverter.cxx
new file mode 100644
index 000000000..91684393c
--- /dev/null
+++ b/oox/source/drawingml/chart/titleconverter.cxx
@@ -0,0 +1,363 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ *
+ * This file incorporates work covered by the following license notice:
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed
+ * with this work for additional information regarding copyright
+ * ownership. The ASF licenses this file to you under the Apache
+ * License, Version 2.0 (the "License"); you may not use this file
+ * except in compliance with the License. You may obtain a copy of
+ * the License at http://www.apache.org/licenses/LICENSE-2.0 .
+ */
+
+#include <drawingml/chart/titleconverter.hxx>
+
+#include <com/sun/star/chart/ChartLegendExpansion.hpp>
+#include <com/sun/star/chart2/FormattedString.hpp>
+#include <com/sun/star/chart2/LegendPosition.hpp>
+#include <com/sun/star/chart2/XDiagram.hpp>
+#include <com/sun/star/chart2/XLegend.hpp>
+#include <com/sun/star/chart2/XTitle.hpp>
+#include <com/sun/star/chart2/XTitled.hpp>
+#include <com/sun/star/chart2/XChartTypeContainer.hpp>
+#include <com/sun/star/chart2/XCoordinateSystemContainer.hpp>
+#include <com/sun/star/chart2/XDataSeriesContainer.hpp>
+
+#include <comphelper/sequence.hxx>
+#include <osl/diagnose.h>
+#include <drawingml/textbody.hxx>
+#include <drawingml/textparagraph.hxx>
+#include <drawingml/chart/datasourceconverter.hxx>
+#include <drawingml/chart/titlemodel.hxx>
+#include <oox/token/properties.hxx>
+#include <oox/token/tokens.hxx>
+#include <com/sun/star/chart2/RelativePosition.hpp>
+#include <com/sun/star/drawing/Alignment.hpp>
+
+#include <oox/drawingml/chart/modelbase.hxx>
+namespace oox::drawingml::chart {
+
+using namespace ::com::sun::star::awt;
+using namespace ::com::sun::star::chart2;
+using namespace ::com::sun::star::chart2::data;
+using namespace ::com::sun::star::drawing;
+using namespace ::com::sun::star::uno;
+
+
+TextConverter::TextConverter( const ConverterRoot& rParent, TextModel& rModel ) :
+ ConverterBase< TextModel >( rParent, rModel )
+{
+}
+
+TextConverter::~TextConverter()
+{
+}
+
+Reference< XDataSequence > TextConverter::createDataSequence( const OUString& rRole )
+{
+ Reference< XDataSequence > xDataSeq;
+ if( mrModel.mxDataSeq.is() )
+ {
+ DataSequenceConverter aDataSeqConv( *this, *mrModel.mxDataSeq );
+ xDataSeq = aDataSeqConv.createDataSequence( rRole );
+ }
+ return xDataSeq;
+}
+
+Sequence< Reference< XFormattedString > > TextConverter::createStringSequence(
+ const OUString& rDefaultText, const ModelRef< TextBody >& rxTextProp, ObjectType eObjType )
+{
+ OSL_ENSURE( !mrModel.mxDataSeq || !mrModel.mxTextBody, "TextConverter::createStringSequence - linked string and rich text found" );
+ ::std::vector< Reference< XFormattedString > > aStringVec;
+ if( mrModel.mxTextBody.is() )
+ {
+ // rich-formatted text objects can be created, but currently Chart2 is not able to show them
+ const TextParagraphVector& rTextParas = mrModel.mxTextBody->getParagraphs();
+ for( TextParagraphVector::const_iterator aPIt = rTextParas.begin(), aPEnd = rTextParas.end(); aPIt != aPEnd; ++aPIt )
+ {
+ const TextParagraph& rTextPara = **aPIt;
+ const TextCharacterProperties& rParaProps = rTextPara.getProperties().getTextCharacterProperties();
+ for( TextRunVector::const_iterator aRIt = rTextPara.getRuns().begin(), aREnd = rTextPara.getRuns().end(); aRIt != aREnd; ++aRIt )
+ {
+ const TextRun& rTextRun = **aRIt;
+ bool bAddNewLine = ((aRIt + 1 == aREnd) && (aPIt + 1 != aPEnd)) || rTextRun.isLineBreak();
+ Reference< XFormattedString > xFmtStr = appendFormattedString( aStringVec, rTextRun.getText(), bAddNewLine );
+ PropertySet aPropSet( xFmtStr );
+ TextCharacterProperties aRunProps( rParaProps );
+ aRunProps.assignUsed( rTextRun.getTextCharacterProperties() );
+ getFormatter().convertTextFormatting( aPropSet, aRunProps, eObjType );
+ }
+ }
+ }
+ else
+ {
+ OUString aString;
+ // try to create string from linked data
+ if( mrModel.mxDataSeq.is() && !mrModel.mxDataSeq->maData.empty() )
+ mrModel.mxDataSeq->maData.begin()->second >>= aString;
+ // no linked string -> fall back to default string
+ if( aString.isEmpty() )
+ aString = rDefaultText;
+
+ // create formatted string object
+ if( !aString.isEmpty() )
+ {
+ Reference< XFormattedString > xFmtStr = appendFormattedString( aStringVec, aString, false );
+ PropertySet aPropSet( xFmtStr );
+ getFormatter().convertTextFormatting( aPropSet, rxTextProp, eObjType );
+ }
+ }
+
+ return comphelper::containerToSequence( aStringVec );
+}
+
+Reference< XFormattedString > TextConverter::appendFormattedString(
+ ::std::vector< Reference< XFormattedString > >& orStringVec, const OUString& rString, bool bAddNewLine ) const
+{
+ Reference< XFormattedString2 > xFmtStr;
+ try
+ {
+ xFmtStr = FormattedString::create( ConverterRoot::getComponentContext() );
+ xFmtStr->setString( bAddNewLine ? (rString + "\n") : rString );
+ orStringVec.emplace_back(xFmtStr );
+ }
+ catch( Exception& )
+ {
+ }
+ return xFmtStr;
+}
+
+TitleConverter::TitleConverter( const ConverterRoot& rParent, TitleModel& rModel ) :
+ ConverterBase< TitleModel >( rParent, rModel )
+{
+}
+
+TitleConverter::~TitleConverter()
+{
+}
+
+void TitleConverter::convertFromModel( const Reference< XTitled >& rxTitled, const OUString& rAutoTitle, ObjectType eObjType, sal_Int32 nMainIdx, sal_Int32 nSubIdx )
+{
+ if( !rxTitled.is() )
+ return;
+
+ // create the formatted strings
+ TextModel& rText = mrModel.mxText.getOrCreate();
+ TextConverter aTextConv( *this, rText );
+ Sequence< Reference< XFormattedString > > aStringSeq = aTextConv.createStringSequence( rAutoTitle, mrModel.mxTextProp, eObjType );
+ if( !aStringSeq.hasElements() )
+ return;
+
+ try
+ {
+ // create the title object and set the string data
+ Reference< XTitle > xTitle( createInstance( "com.sun.star.chart2.Title" ), UNO_QUERY_THROW );
+ xTitle->setText( aStringSeq );
+ rxTitled->setTitleObject( xTitle );
+
+ // frame formatting (text formatting already done in TextConverter::createStringSequence())
+ PropertySet aPropSet( xTitle );
+ getFormatter().convertFrameFormatting( aPropSet, mrModel.mxShapeProp, eObjType );
+
+ // frame rotation
+ OSL_ENSURE( !mrModel.mxTextProp || !rText.mxTextBody, "TitleConverter::convertFromModel - multiple text properties" );
+ ModelRef< TextBody > xTextProp = mrModel.mxTextProp.is() ? mrModel.mxTextProp : rText.mxTextBody;
+ ObjectFormatter::convertTextRotation( aPropSet, xTextProp, true, mrModel.mnDefaultRotation );
+
+ // register the title and layout data for conversion of position
+ registerTitleLayout( xTitle, mrModel.mxLayout, eObjType, nMainIdx, nSubIdx );
+ }
+ catch( Exception& )
+ {
+ }
+}
+
+LegendConverter::LegendConverter( const ConverterRoot& rParent, LegendModel& rModel ) :
+ ConverterBase< LegendModel >( rParent, rModel )
+{
+}
+
+LegendConverter::~LegendConverter()
+{
+}
+
+void LegendConverter::convertFromModel( const Reference< XDiagram >& rxDiagram )
+{
+ if( !rxDiagram.is() )
+ return;
+
+ try
+ {
+ namespace cssc = ::com::sun::star::chart;
+ namespace cssc2 = ::com::sun::star::chart2;
+
+ // create the legend
+ Reference< XLegend > xLegend( createInstance( "com.sun.star.chart2.Legend" ), UNO_QUERY_THROW );
+ rxDiagram->setLegend( xLegend );
+ PropertySet aPropSet( xLegend );
+ aPropSet.setProperty( PROP_Show, true );
+
+ // legend formatting
+ getFormatter().convertFormatting( aPropSet, mrModel.mxShapeProp, mrModel.mxTextProp, OBJECTTYPE_LEGEND );
+
+ // predefined legend position and expansion
+ cssc2::LegendPosition eLegendPos = cssc2::LegendPosition_LINE_END;
+ cssc::ChartLegendExpansion eLegendExpand = cssc::ChartLegendExpansion_CUSTOM;
+ RelativePosition eRelPos;
+ bool bTopRight=false;
+ switch( mrModel.mnPosition )
+ {
+ case XML_l:
+ eLegendPos = cssc2::LegendPosition_LINE_START;
+ eLegendExpand = cssc::ChartLegendExpansion_HIGH;
+ break;
+ case XML_r:
+ eLegendPos = cssc2::LegendPosition_LINE_END;
+ eLegendExpand = cssc::ChartLegendExpansion_HIGH;
+ break;
+ case XML_tr: // top-right not supported
+ eRelPos.Primary = 1;
+ eRelPos.Secondary =0;
+ eRelPos.Anchor = Alignment_TOP_RIGHT;
+ bTopRight=true;
+ break;
+ case XML_t:
+ eLegendPos = cssc2::LegendPosition_PAGE_START;
+ eLegendExpand = cssc::ChartLegendExpansion_WIDE;
+ break;
+ case XML_b:
+ eLegendPos = cssc2::LegendPosition_PAGE_END;
+ eLegendExpand = cssc::ChartLegendExpansion_WIDE;
+ break;
+ }
+ bool bManualLayout=false;
+ // manual positioning and size
+ if( mrModel.mxLayout )
+ {
+ LayoutConverter aLayoutConv( *this, *mrModel.mxLayout );
+ // manual size needs ChartLegendExpansion_CUSTOM
+ if( aLayoutConv.convertFromModel( aPropSet ) )
+ {
+ eLegendExpand = cssc::ChartLegendExpansion_CUSTOM;
+ }
+ bManualLayout = !aLayoutConv.getAutoLayout();
+ }
+
+ // set position and expansion properties
+ aPropSet.setProperty( PROP_AnchorPosition, eLegendPos );
+ aPropSet.setProperty( PROP_Expansion, eLegendExpand );
+
+ if (bTopRight && !bManualLayout)
+ aPropSet.setProperty( PROP_RelativePosition , Any(eRelPos));
+
+ aPropSet.setProperty(PROP_Overlay, mrModel.mbOverlay);
+
+ if (mrModel.maLegendEntries.size() > 0)
+ legendEntriesFormatting(rxDiagram);
+ }
+ catch( Exception& )
+ {
+ }
+}
+
+void LegendConverter::legendEntriesFormatting(const Reference<XDiagram>& rxDiagram)
+{
+ Reference<XCoordinateSystemContainer> xCooSysContainer(rxDiagram, UNO_QUERY_THROW);
+ const Sequence<Reference<XCoordinateSystem>> xCooSysSequence(xCooSysContainer->getCoordinateSystems());
+ if (!xCooSysSequence.hasElements())
+ return;
+
+ sal_Int32 nIndex = 0;
+ for (const auto& rCooSys : xCooSysSequence)
+ {
+ PropertySet aCooSysProp(rCooSys);
+ bool bSwapXAndY = aCooSysProp.getBoolProperty(PROP_SwapXAndYAxis);
+
+ Reference<XChartTypeContainer> xChartTypeContainer(rCooSys, UNO_QUERY_THROW);
+ const Sequence<Reference<XChartType>> xChartTypeSequence(xChartTypeContainer->getChartTypes());
+ if (!xChartTypeSequence.hasElements())
+ continue;
+
+ for (const auto& rCT : xChartTypeSequence)
+ {
+ Reference<XDataSeriesContainer> xDSCont(rCT, UNO_QUERY);
+ if (!xDSCont.is())
+ continue;
+
+ bool bIsPie
+ = rCT->getChartType().equalsIgnoreAsciiCase("com.sun.star.chart2.PieChartType");
+ if (bIsPie)
+ {
+ PropertySet xChartTypeProp(rCT);
+ bIsPie = !xChartTypeProp.getBoolProperty(PROP_UseRings);
+ }
+ const Sequence<Reference<XDataSeries>> aDataSeriesSeq = xDSCont->getDataSeries();
+ if (bSwapXAndY)
+ nIndex += aDataSeriesSeq.getLength() - 1;
+ for (const auto& rDataSeries : aDataSeriesSeq)
+ {
+ PropertySet aSeriesProp(rDataSeries);
+ bool bVaryColorsByPoint = aSeriesProp.getBoolProperty(PROP_VaryColorsByPoint);
+
+ if (bVaryColorsByPoint || bIsPie)
+ {
+ Reference<XDataSource> xDSrc(rDataSeries, UNO_QUERY);
+ if (!xDSrc.is())
+ continue;
+
+ const Sequence<Reference<XLabeledDataSequence> > aDataSeqs = xDSrc->getDataSequences();
+ std::vector<sal_Int32> deletedLegendEntries;
+ sal_Int32 j = 0;
+ for (const auto& rDataSeq : aDataSeqs)
+ {
+ Reference<XDataSequence> xValues = rDataSeq->getValues();
+ if (!xValues.is())
+ continue;
+
+ sal_Int32 nDataSeqSize = xValues->getData().getLength();
+ for (sal_Int32 i = 0; i < nDataSeqSize; ++i)
+ {
+ for (const auto& rLegendEntry : mrModel.maLegendEntries)
+ {
+ if (nIndex == rLegendEntry->mnLegendEntryIdx && rLegendEntry->mbLabelDeleted)
+ {
+ deletedLegendEntries.push_back(j + i);
+ break;
+ }
+ }
+ nIndex++;
+ }
+ j += nDataSeqSize;
+ }
+ if (deletedLegendEntries.size() > 0)
+ aSeriesProp.setProperty(PROP_DeletedLegendEntries, comphelper::containerToSequence(deletedLegendEntries));
+ }
+ else
+ {
+ for (const auto& rLegendEntry : mrModel.maLegendEntries)
+ {
+ if (nIndex == rLegendEntry->mnLegendEntryIdx)
+ {
+ aSeriesProp.setProperty(PROP_ShowLegendEntry, !rLegendEntry->mbLabelDeleted);
+ break;
+ }
+ }
+ bSwapXAndY ? nIndex-- : nIndex++;
+ }
+ }
+ if (bSwapXAndY)
+ nIndex += aDataSeriesSeq.getLength() + 1;
+ }
+ }
+}
+
+} // namespace oox::drawingml::chart
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/oox/source/drawingml/chart/titlemodel.cxx b/oox/source/drawingml/chart/titlemodel.cxx
new file mode 100644
index 000000000..0bbaa7ee6
--- /dev/null
+++ b/oox/source/drawingml/chart/titlemodel.cxx
@@ -0,0 +1,61 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ *
+ * This file incorporates work covered by the following license notice:
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed
+ * with this work for additional information regarding copyright
+ * ownership. The ASF licenses this file to you under the Apache
+ * License, Version 2.0 (the "License"); you may not use this file
+ * except in compliance with the License. You may obtain a copy of
+ * the License at http://www.apache.org/licenses/LICENSE-2.0 .
+ */
+
+#include <drawingml/chart/titlemodel.hxx>
+#include <oox/token/tokens.hxx>
+
+namespace oox::drawingml::chart {
+
+TextModel::TextModel()
+{
+}
+
+TextModel::~TextModel()
+{
+}
+
+TitleModel::TitleModel(sal_Int32 nDefaultRotation) :
+ mbOverlay( false ),
+ mnDefaultRotation(nDefaultRotation)
+{
+}
+
+TitleModel::~TitleModel()
+{
+}
+
+LegendEntryModel::LegendEntryModel() :
+ mnLegendEntryIdx( -1 ),
+ mbLabelDeleted( false )
+{
+}
+
+LegendModel::LegendModel() :
+ mnPosition( XML_r ),
+ mbOverlay( false )
+{
+}
+
+LegendModel::~LegendModel()
+{
+}
+
+} // namespace oox::drawingml::chart
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/oox/source/drawingml/chart/typegroupcontext.cxx b/oox/source/drawingml/chart/typegroupcontext.cxx
new file mode 100644
index 000000000..96c4d6fc2
--- /dev/null
+++ b/oox/source/drawingml/chart/typegroupcontext.cxx
@@ -0,0 +1,371 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ *
+ * This file incorporates work covered by the following license notice:
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed
+ * with this work for additional information regarding copyright
+ * ownership. The ASF licenses this file to you under the Apache
+ * License, Version 2.0 (the "License"); you may not use this file
+ * except in compliance with the License. You may obtain a copy of
+ * the License at http://www.apache.org/licenses/LICENSE-2.0 .
+ */
+
+#include <drawingml/chart/typegroupcontext.hxx>
+
+#include <drawingml/chart/seriescontext.hxx>
+#include <drawingml/chart/typegroupmodel.hxx>
+#include <oox/core/xmlfilterbase.hxx>
+#include <oox/helper/attributelist.hxx>
+#include <oox/token/namespaces.hxx>
+#include <oox/token/tokens.hxx>
+
+namespace oox::drawingml::chart {
+
+using ::oox::core::ContextHandler2Helper;
+using ::oox::core::ContextHandlerRef;
+
+UpDownBarsContext::UpDownBarsContext( ContextHandler2Helper& rParent, UpDownBarsModel& rModel ) :
+ ContextBase< UpDownBarsModel >( rParent, rModel )
+{
+}
+
+UpDownBarsContext::~UpDownBarsContext()
+{
+}
+
+ContextHandlerRef UpDownBarsContext::onCreateContext( sal_Int32 nElement, const AttributeList& rAttribs )
+{
+ switch( getCurrentElement() )
+ {
+ case C_TOKEN( upDownBars ):
+ switch( nElement )
+ {
+ case C_TOKEN( downBars ):
+ return new ShapePrWrapperContext( *this, mrModel.mxDownBars.create() );
+ case C_TOKEN( gapWidth ):
+ mrModel.mnGapWidth = rAttribs.getInteger( XML_val, 150 );
+ return nullptr;
+ case C_TOKEN( upBars ):
+ return new ShapePrWrapperContext( *this, mrModel.mxUpBars.create() );
+ }
+ break;
+ }
+ return nullptr;
+}
+
+AreaTypeGroupContext::AreaTypeGroupContext( ContextHandler2Helper& rParent, TypeGroupModel& rModel ) :
+ TypeGroupContextBase( rParent, rModel )
+{
+}
+
+AreaTypeGroupContext::~AreaTypeGroupContext()
+{
+}
+
+ContextHandlerRef AreaTypeGroupContext::onCreateContext( sal_Int32 nElement, const AttributeList& rAttribs )
+{
+ bool bMSO2007Doc = getFilter().isMSO2007Document();
+ if( isRootElement() ) switch( nElement )
+ {
+ case C_TOKEN( axId ):
+ mrModel.maAxisIds.push_back( rAttribs.getInteger( XML_val, -1 ) );
+ return nullptr;
+ case C_TOKEN( dLbls ):
+ return new DataLabelsContext( *this, mrModel.mxLabels.create(bMSO2007Doc) );
+ case C_TOKEN( dropLines ):
+ return new ShapePrWrapperContext( *this, mrModel.mxDropLines.create() );
+ case C_TOKEN( gapDepth ):
+ mrModel.mnGapDepth = rAttribs.getInteger( XML_val, 150 );
+ return nullptr;
+ case C_TOKEN( grouping ):
+ mrModel.mnGrouping = rAttribs.getToken( XML_val, bMSO2007Doc ? XML_standard : XML_clustered );
+ return nullptr;
+ case C_TOKEN( ser ):
+ return new AreaSeriesContext( *this, mrModel.maSeries.create(bMSO2007Doc) );
+ case C_TOKEN( varyColors ):
+ mrModel.mbVaryColors = rAttribs.getBool( XML_val, !bMSO2007Doc );
+ return nullptr;
+ }
+ return nullptr;
+}
+
+BarTypeGroupContext::BarTypeGroupContext( ContextHandler2Helper& rParent, TypeGroupModel& rModel ) :
+ TypeGroupContextBase( rParent, rModel )
+{
+}
+
+BarTypeGroupContext::~BarTypeGroupContext()
+{
+}
+
+ContextHandlerRef BarTypeGroupContext::onCreateContext( sal_Int32 nElement, const AttributeList& rAttribs )
+{
+ bool bMSO2007Doc = getFilter().isMSO2007Document();
+ if( isRootElement() ) switch( nElement )
+ {
+ case C_TOKEN( axId ):
+ mrModel.maAxisIds.push_back( rAttribs.getInteger( XML_val, -1 ) );
+ return nullptr;
+ case C_TOKEN( barDir ):
+ mrModel.mnBarDir = rAttribs.getToken( XML_val, XML_col );
+ return nullptr;
+ case C_TOKEN( dLbls ):
+ return new DataLabelsContext( *this, mrModel.mxLabels.create(bMSO2007Doc) );
+ case C_TOKEN( gapDepth ):
+ mrModel.mnGapDepth = rAttribs.getInteger( XML_val, 150 );
+ return nullptr;
+ case C_TOKEN( gapWidth ):
+ mrModel.mnGapWidth = rAttribs.getInteger( XML_val, 150 );
+ return nullptr;
+ case C_TOKEN( grouping ):
+ mrModel.mnGrouping = rAttribs.getToken( XML_val, bMSO2007Doc ? XML_standard : XML_clustered );
+ return nullptr;
+ case C_TOKEN( overlap ):
+ mrModel.mnOverlap = rAttribs.getInteger( XML_val, 0 );
+ return nullptr;
+ case C_TOKEN( ser ):
+ return new BarSeriesContext( *this, mrModel.maSeries.create(bMSO2007Doc) );
+ case C_TOKEN( serLines ):
+ return new ShapePrWrapperContext( *this, mrModel.mxSerLines.create() );
+ case C_TOKEN( shape ):
+ mrModel.mnShape = rAttribs.getToken( XML_val, XML_box );
+ return nullptr;
+ case C_TOKEN( varyColors ):
+ mrModel.mbVaryColors = rAttribs.getBool( XML_val, !bMSO2007Doc );
+ return nullptr;
+ }
+ return nullptr;
+}
+
+BubbleTypeGroupContext::BubbleTypeGroupContext( ContextHandler2Helper& rParent, TypeGroupModel& rModel ) :
+ TypeGroupContextBase( rParent, rModel )
+{
+}
+
+BubbleTypeGroupContext::~BubbleTypeGroupContext()
+{
+}
+
+ContextHandlerRef BubbleTypeGroupContext::onCreateContext( sal_Int32 nElement, const AttributeList& rAttribs )
+{
+ bool bMSO2007Doc = getFilter().isMSO2007Document();
+ if( isRootElement() ) switch( nElement )
+ {
+ case C_TOKEN( axId ):
+ mrModel.maAxisIds.push_back( rAttribs.getInteger( XML_val, -1 ) );
+ return nullptr;
+ case C_TOKEN( bubble3D ):
+ mrModel.mbBubble3d = rAttribs.getBool( XML_val, !bMSO2007Doc );
+ return nullptr;
+ case C_TOKEN( bubbleScale ):
+ mrModel.mnBubbleScale = rAttribs.getInteger( XML_val, 100 );
+ return nullptr;
+ case C_TOKEN( dLbls ):
+ return new DataLabelsContext( *this, mrModel.mxLabels.create(bMSO2007Doc) );
+ case C_TOKEN( ser ):
+ return new BubbleSeriesContext( *this, mrModel.maSeries.create(bMSO2007Doc) );
+ case C_TOKEN( showNegBubbles ):
+ mrModel.mbShowNegBubbles = rAttribs.getBool( XML_val, !bMSO2007Doc );
+ return nullptr;
+ case C_TOKEN( sizeRepresents ):
+ mrModel.mnSizeRepresents = rAttribs.getToken( XML_val, XML_area );
+ return nullptr;
+ case C_TOKEN( varyColors ):
+ mrModel.mbVaryColors = rAttribs.getBool( XML_val, !bMSO2007Doc );
+ return nullptr;
+ }
+ return nullptr;
+}
+
+LineTypeGroupContext::LineTypeGroupContext( ContextHandler2Helper& rParent, TypeGroupModel& rModel ) :
+ TypeGroupContextBase( rParent, rModel )
+{
+}
+
+LineTypeGroupContext::~LineTypeGroupContext()
+{
+}
+
+ContextHandlerRef LineTypeGroupContext::onCreateContext( sal_Int32 nElement, const AttributeList& rAttribs )
+{
+ bool bMSO2007Doc = getFilter().isMSO2007Document();
+ if( isRootElement() ) switch( nElement )
+ {
+ case C_TOKEN( axId ):
+ mrModel.maAxisIds.push_back( rAttribs.getInteger( XML_val, -1 ) );
+ return nullptr;
+ case C_TOKEN( dLbls ):
+ return new DataLabelsContext( *this, mrModel.mxLabels.create(bMSO2007Doc) );
+ case C_TOKEN( dropLines ):
+ return new ShapePrWrapperContext( *this, mrModel.mxDropLines.create() );
+ case C_TOKEN( gapDepth ):
+ mrModel.mnGapDepth = rAttribs.getInteger( XML_val, 150 );
+ return nullptr;
+ case C_TOKEN( grouping ):
+ mrModel.mnGrouping = rAttribs.getToken( XML_val, bMSO2007Doc ? XML_standard : XML_clustered );
+ return nullptr;
+ case C_TOKEN( hiLowLines ):
+ return new ShapePrWrapperContext( *this, mrModel.mxHiLowLines.create() );
+ case C_TOKEN( marker ):
+ mrModel.mbShowMarker = rAttribs.getBool( XML_val, !bMSO2007Doc );
+ return nullptr;
+ case C_TOKEN( ser ):
+ return new LineSeriesContext( *this, mrModel.maSeries.create(bMSO2007Doc) );
+ case C_TOKEN( smooth ):
+ mrModel.mbSmooth = rAttribs.getBool( XML_val, !bMSO2007Doc );
+ return nullptr;
+ case C_TOKEN( upDownBars ):
+ return new UpDownBarsContext( *this, mrModel.mxUpDownBars.create() );
+ case C_TOKEN( varyColors ):
+ mrModel.mbVaryColors = rAttribs.getBool( XML_val, !bMSO2007Doc );
+ return nullptr;
+ }
+ return nullptr;
+}
+
+PieTypeGroupContext::PieTypeGroupContext( ContextHandler2Helper& rParent, TypeGroupModel& rModel ) :
+ TypeGroupContextBase( rParent, rModel )
+{
+}
+
+PieTypeGroupContext::~PieTypeGroupContext()
+{
+}
+
+ContextHandlerRef PieTypeGroupContext::onCreateContext( sal_Int32 nElement, const AttributeList& rAttribs )
+{
+ bool bMSO2007Doc = getFilter().isMSO2007Document();
+ if( isRootElement() ) switch( nElement )
+ {
+ case C_TOKEN( dLbls ):
+ return new DataLabelsContext( *this, mrModel.mxLabels.create(bMSO2007Doc) );
+ case C_TOKEN( firstSliceAng ):
+ mrModel.mnFirstAngle = rAttribs.getInteger( XML_val, 0 );
+ return nullptr;
+ case C_TOKEN( gapWidth ):
+ mrModel.mnGapWidth = rAttribs.getInteger( XML_val, 150 );
+ return nullptr;
+ case C_TOKEN( holeSize ):
+ mrModel.mnHoleSize = rAttribs.getInteger( XML_val, 10 );
+ return nullptr;
+ case C_TOKEN( ofPieType ):
+ mrModel.mnOfPieType = rAttribs.getToken( XML_val, XML_pie );
+ return nullptr;
+ case C_TOKEN( secondPieSize ):
+ mrModel.mnSecondPieSize = rAttribs.getInteger( XML_val, 75 );
+ return nullptr;
+ case C_TOKEN( ser ):
+ return new PieSeriesContext( *this, mrModel.maSeries.create(bMSO2007Doc) );
+ case C_TOKEN( serLines ):
+ return new ShapePrWrapperContext( *this, mrModel.mxSerLines.create() );
+ case C_TOKEN( splitPos ):
+ mrModel.mfSplitPos = rAttribs.getDouble( XML_val, 0.0 );
+ return nullptr;
+ case C_TOKEN( splitType ):
+ mrModel.mnSplitType = rAttribs.getToken( XML_val, XML_auto );
+ return nullptr;
+ case C_TOKEN( varyColors ):
+ mrModel.mbVaryColors = rAttribs.getBool( XML_val, !bMSO2007Doc );
+ return nullptr;
+ }
+ return nullptr;
+}
+
+RadarTypeGroupContext::RadarTypeGroupContext( ContextHandler2Helper& rParent, TypeGroupModel& rModel ) :
+ TypeGroupContextBase( rParent, rModel )
+{
+}
+
+RadarTypeGroupContext::~RadarTypeGroupContext()
+{
+}
+
+ContextHandlerRef RadarTypeGroupContext::onCreateContext( sal_Int32 nElement, const AttributeList& rAttribs )
+{
+ bool bMSO2007Doc = getFilter().isMSO2007Document();
+ if( isRootElement() ) switch( nElement )
+ {
+ case C_TOKEN( axId ):
+ mrModel.maAxisIds.push_back( rAttribs.getInteger( XML_val, -1 ) );
+ return nullptr;
+ case C_TOKEN( dLbls ):
+ return new DataLabelsContext( *this, mrModel.mxLabels.create(bMSO2007Doc) );
+ case C_TOKEN( radarStyle ):
+ mrModel.mnRadarStyle = rAttribs.getToken( XML_val, XML_standard );
+ return nullptr;
+ case C_TOKEN( ser ):
+ return new RadarSeriesContext( *this, mrModel.maSeries.create(bMSO2007Doc) );
+ case C_TOKEN( varyColors ):
+ mrModel.mbVaryColors = rAttribs.getBool( XML_val, !bMSO2007Doc );
+ return nullptr;
+ }
+ return nullptr;
+}
+
+ScatterTypeGroupContext::ScatterTypeGroupContext( ContextHandler2Helper& rParent, TypeGroupModel& rModel ) :
+ TypeGroupContextBase( rParent, rModel )
+{
+}
+
+ScatterTypeGroupContext::~ScatterTypeGroupContext()
+{
+}
+
+ContextHandlerRef ScatterTypeGroupContext::onCreateContext( sal_Int32 nElement, const AttributeList& rAttribs )
+{
+ bool bMSO2007Doc = getFilter().isMSO2007Document();
+ if( isRootElement() ) switch( nElement )
+ {
+ case C_TOKEN( axId ):
+ mrModel.maAxisIds.push_back( rAttribs.getInteger( XML_val, -1 ) );
+ return nullptr;
+ case C_TOKEN( dLbls ):
+ return new DataLabelsContext( *this, mrModel.mxLabels.create(bMSO2007Doc) );
+ case C_TOKEN( scatterStyle ):
+ mrModel.mnScatterStyle = rAttribs.getInteger( XML_val, XML_marker );
+ return nullptr;
+ case C_TOKEN( ser ):
+ return new ScatterSeriesContext( *this, mrModel.maSeries.create(bMSO2007Doc) );
+ case C_TOKEN( varyColors ):
+ mrModel.mbVaryColors = rAttribs.getBool( XML_val, !bMSO2007Doc );
+ return nullptr;
+ }
+ return nullptr;
+}
+
+SurfaceTypeGroupContext::SurfaceTypeGroupContext( ContextHandler2Helper& rParent, TypeGroupModel& rModel ) :
+ TypeGroupContextBase( rParent, rModel )
+{
+}
+
+SurfaceTypeGroupContext::~SurfaceTypeGroupContext()
+{
+}
+
+ContextHandlerRef SurfaceTypeGroupContext::onCreateContext( sal_Int32 nElement, const AttributeList& rAttribs )
+{
+ bool bMSO2007Doc = getFilter().isMSO2007Document();
+ if( isRootElement() ) switch( nElement )
+ {
+ case C_TOKEN( axId ):
+ mrModel.maAxisIds.push_back( rAttribs.getInteger( XML_val, -1 ) );
+ return nullptr;
+ case C_TOKEN( ser ):
+ return new SurfaceSeriesContext( *this, mrModel.maSeries.create(bMSO2007Doc) );
+ case C_TOKEN( wireframe ):
+ mrModel.mbWireframe = rAttribs.getBool( XML_val, !bMSO2007Doc );
+ return nullptr;
+ }
+ return nullptr;
+}
+
+} // namespace oox::drawingml::chart
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/oox/source/drawingml/chart/typegroupconverter.cxx b/oox/source/drawingml/chart/typegroupconverter.cxx
new file mode 100644
index 000000000..e8d8bb47b
--- /dev/null
+++ b/oox/source/drawingml/chart/typegroupconverter.cxx
@@ -0,0 +1,605 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ *
+ * This file incorporates work covered by the following license notice:
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed
+ * with this work for additional information regarding copyright
+ * ownership. The ASF licenses this file to you under the Apache
+ * License, Version 2.0 (the "License"); you may not use this file
+ * except in compliance with the License. You may obtain a copy of
+ * the License at http://www.apache.org/licenses/LICENSE-2.0 .
+ */
+
+#include <drawingml/chart/typegroupconverter.hxx>
+
+#include <com/sun/star/chart/DataLabelPlacement.hpp>
+#include <com/sun/star/chart2/CartesianCoordinateSystem2d.hpp>
+#include <com/sun/star/chart2/CartesianCoordinateSystem3d.hpp>
+#include <com/sun/star/chart2/PolarCoordinateSystem2d.hpp>
+#include <com/sun/star/chart2/PolarCoordinateSystem3d.hpp>
+#include <com/sun/star/chart2/CurveStyle.hpp>
+#include <com/sun/star/chart2/DataPointGeometry3D.hpp>
+#include <com/sun/star/chart2/StackingDirection.hpp>
+#include <com/sun/star/chart2/Symbol.hpp>
+#include <com/sun/star/chart2/XChartTypeContainer.hpp>
+#include <com/sun/star/chart2/XCoordinateSystem.hpp>
+#include <com/sun/star/chart2/XDataSeriesContainer.hpp>
+#include <com/sun/star/chart2/XDiagram.hpp>
+#include <com/sun/star/chart2/data/XDataSink.hpp>
+#include <com/sun/star/drawing/LineStyle.hpp>
+
+#include <comphelper/sequence.hxx>
+#include <osl/diagnose.h>
+#include <drawingml/lineproperties.hxx>
+#include <drawingml/chart/seriesconverter.hxx>
+#include <drawingml/chart/typegroupmodel.hxx>
+#include <oox/core/xmlfilterbase.hxx>
+#include <oox/token/namespaces.hxx>
+#include <oox/token/properties.hxx>
+#include <oox/token/tokens.hxx>
+#include <tools/UnitConversion.hxx>
+
+namespace oox::drawingml::chart {
+
+using namespace ::com::sun::star::beans;
+using namespace ::com::sun::star::chart2;
+using namespace ::com::sun::star::chart2::data;
+using namespace ::com::sun::star::uno;
+
+namespace {
+
+// chart type service names
+const char SERVICE_CHART2_AREA[] = "com.sun.star.chart2.AreaChartType";
+const char SERVICE_CHART2_CANDLE[] = "com.sun.star.chart2.CandleStickChartType";
+const char SERVICE_CHART2_COLUMN[] = "com.sun.star.chart2.ColumnChartType";
+const char SERVICE_CHART2_LINE[] = "com.sun.star.chart2.LineChartType";
+const char SERVICE_CHART2_NET[] = "com.sun.star.chart2.NetChartType";
+const char SERVICE_CHART2_FILLEDNET[] = "com.sun.star.chart2.FilledNetChartType";
+const char SERVICE_CHART2_PIE[] = "com.sun.star.chart2.PieChartType";
+const char SERVICE_CHART2_SCATTER[] = "com.sun.star.chart2.ScatterChartType";
+const char SERVICE_CHART2_BUBBLE[] = "com.sun.star.chart2.BubbleChartType";
+const char SERVICE_CHART2_SURFACE[] = "com.sun.star.chart2.ColumnChartType"; // Todo
+
+namespace csscd = ::com::sun::star::chart::DataLabelPlacement;
+
+const TypeGroupInfo spTypeInfos[] =
+{
+ // type-id type-category service varied-point-color default label pos polar area2d 1stvis xcateg swap stack picopt
+ { TYPEID_BAR, TYPECATEGORY_BAR, SERVICE_CHART2_COLUMN, VARPOINTMODE_SINGLE, csscd::OUTSIDE, false, true, false, true, false, true, true },
+ { TYPEID_HORBAR, TYPECATEGORY_BAR, SERVICE_CHART2_COLUMN, VARPOINTMODE_SINGLE, csscd::OUTSIDE, false, true, false, true, true, true, true },
+ { TYPEID_LINE, TYPECATEGORY_LINE, SERVICE_CHART2_LINE, VARPOINTMODE_SINGLE, csscd::RIGHT, false, false, false, true, false, true, false },
+ { TYPEID_AREA, TYPECATEGORY_LINE, SERVICE_CHART2_AREA, VARPOINTMODE_NONE, csscd::CENTER, false, true, false, true, false, true, false },
+ { TYPEID_STOCK, TYPECATEGORY_LINE, SERVICE_CHART2_CANDLE, VARPOINTMODE_NONE, csscd::RIGHT, false, false, false, true, false, true, false },
+ { TYPEID_RADARLINE, TYPECATEGORY_RADAR, SERVICE_CHART2_NET, VARPOINTMODE_SINGLE, csscd::OUTSIDE, true, false, false, true, false, false, false },
+ { TYPEID_RADARAREA, TYPECATEGORY_RADAR, SERVICE_CHART2_FILLEDNET, VARPOINTMODE_NONE, csscd::OUTSIDE, true, true, false, true, false, false, false },
+ { TYPEID_PIE, TYPECATEGORY_PIE, SERVICE_CHART2_PIE, VARPOINTMODE_MULTI, csscd::AVOID_OVERLAP, true, true, true, true, false, false, false },
+ { TYPEID_DOUGHNUT, TYPECATEGORY_PIE, SERVICE_CHART2_PIE, VARPOINTMODE_MULTI, csscd::AVOID_OVERLAP, true, true, false, true, false, false, false },
+ { TYPEID_OFPIE, TYPECATEGORY_PIE, SERVICE_CHART2_PIE, VARPOINTMODE_MULTI, csscd::AVOID_OVERLAP, true, true, true, true, false, false, false },
+ { TYPEID_SCATTER, TYPECATEGORY_SCATTER, SERVICE_CHART2_SCATTER, VARPOINTMODE_SINGLE, csscd::RIGHT, false, false, false, false, false, false, false },
+ { TYPEID_BUBBLE, TYPECATEGORY_SCATTER, SERVICE_CHART2_BUBBLE, VARPOINTMODE_SINGLE, csscd::RIGHT, false, true, false, false, false, false, false },
+ { TYPEID_SURFACE, TYPECATEGORY_SURFACE, SERVICE_CHART2_SURFACE, VARPOINTMODE_NONE, csscd::RIGHT, false, true, false, true, false, false, false }
+};
+
+const TypeGroupInfo saUnknownTypeInfo =
+ { TYPEID_UNKNOWN, TYPECATEGORY_BAR, SERVICE_CHART2_COLUMN, VARPOINTMODE_SINGLE, csscd::OUTSIDE, false, true, false, true, false, true, true };
+
+const TypeGroupInfo& lclGetTypeInfoFromTypeId( TypeId eTypeId )
+{
+ for( auto const &rIt : spTypeInfos)
+ {
+ if( rIt.meTypeId == eTypeId )
+ return rIt;
+ }
+ OSL_ENSURE( eTypeId == TYPEID_UNKNOWN, "lclGetTypeInfoFromTypeId - unexpected chart type identifier" );
+ return saUnknownTypeInfo;
+}
+
+} // namespace
+
+const TypeGroupInfo& GetTypeGroupInfo( TypeId eType )
+{
+ return lclGetTypeInfoFromTypeId(eType);
+}
+
+UpDownBarsConverter::UpDownBarsConverter( const ConverterRoot& rParent, UpDownBarsModel& rModel ) :
+ ConverterBase< UpDownBarsModel >( rParent, rModel )
+{
+}
+
+UpDownBarsConverter::~UpDownBarsConverter()
+{
+}
+
+void UpDownBarsConverter::convertFromModel( const Reference< XChartType >& rxChartType )
+{
+ PropertySet aTypeProp( rxChartType );
+
+ // upbar format
+ Reference< XPropertySet > xWhitePropSet;
+ if( aTypeProp.getProperty( xWhitePropSet, PROP_WhiteDay ) )
+ {
+ PropertySet aPropSet( xWhitePropSet );
+ getFormatter().convertFrameFormatting( aPropSet, mrModel.mxUpBars, OBJECTTYPE_UPBAR );
+ }
+
+ // downbar format
+ Reference< XPropertySet > xBlackPropSet;
+ if( aTypeProp.getProperty( xBlackPropSet, PROP_BlackDay ) )
+ {
+ PropertySet aPropSet( xBlackPropSet );
+ getFormatter().convertFrameFormatting( aPropSet, mrModel.mxDownBars, OBJECTTYPE_DOWNBAR );
+ }
+}
+
+TypeGroupConverter::TypeGroupConverter( const ConverterRoot& rParent, TypeGroupModel& rModel ) :
+ ConverterBase< TypeGroupModel >( rParent, rModel ),
+ mb3dChart( false )
+{
+ TypeId eTypeId = TYPEID_UNKNOWN;
+ switch( mrModel.mnTypeId )
+ {
+#define ENSURE_AXESCOUNT( min, max ) OSL_ENSURE( (min <= static_cast<int>(mrModel.maAxisIds.size())) && (static_cast<int>(mrModel.maAxisIds.size()) <= max), "TypeGroupConverter::TypeGroupConverter - invalid axes count" )
+ case C_TOKEN( area3DChart ): ENSURE_AXESCOUNT( 2, 3 ); eTypeId = TYPEID_AREA; mb3dChart = true; break;
+ case C_TOKEN( areaChart ): ENSURE_AXESCOUNT( 2, 2 ); eTypeId = TYPEID_AREA; mb3dChart = false; break;
+ case C_TOKEN( bar3DChart ): ENSURE_AXESCOUNT( 2, 3 ); eTypeId = TYPEID_BAR; mb3dChart = true; break;
+ case C_TOKEN( barChart ): ENSURE_AXESCOUNT( 2, 2 ); eTypeId = TYPEID_BAR; mb3dChart = false; break;
+ case C_TOKEN( bubbleChart ): ENSURE_AXESCOUNT( 2, 2 ); eTypeId = TYPEID_BUBBLE; mb3dChart = false; break;
+ case C_TOKEN( doughnutChart ): ENSURE_AXESCOUNT( 0, 0 ); eTypeId = TYPEID_DOUGHNUT; mb3dChart = false; break;
+ case C_TOKEN( line3DChart ): ENSURE_AXESCOUNT( 3, 3 ); eTypeId = TYPEID_LINE; mb3dChart = true; break;
+ case C_TOKEN( lineChart ): ENSURE_AXESCOUNT( 2, 2 ); eTypeId = TYPEID_LINE; mb3dChart = false; break;
+ case C_TOKEN( ofPieChart ): ENSURE_AXESCOUNT( 0, 0 ); eTypeId = TYPEID_OFPIE; mb3dChart = false; break;
+ case C_TOKEN( pie3DChart ): ENSURE_AXESCOUNT( 0, 0 ); eTypeId = TYPEID_PIE; mb3dChart = true; break;
+ case C_TOKEN( pieChart ): ENSURE_AXESCOUNT( 0, 0 ); eTypeId = TYPEID_PIE; mb3dChart = false; break;
+ case C_TOKEN( radarChart ): ENSURE_AXESCOUNT( 2, 2 ); eTypeId = TYPEID_RADARLINE; mb3dChart = false; break;
+ case C_TOKEN( scatterChart ): ENSURE_AXESCOUNT( 2, 2 ); eTypeId = TYPEID_SCATTER; mb3dChart = false; break;
+ case C_TOKEN( stockChart ): ENSURE_AXESCOUNT( 2, 2 ); eTypeId = TYPEID_STOCK; mb3dChart = false; break;
+ case C_TOKEN( surface3DChart ): ENSURE_AXESCOUNT( 3, 3 ); eTypeId = TYPEID_SURFACE; mb3dChart = true; break;
+ case C_TOKEN( surfaceChart ): ENSURE_AXESCOUNT( 2, 3 ); eTypeId = TYPEID_SURFACE; mb3dChart = true; break; // 3D bar chart from all surface charts
+ default: OSL_FAIL( "TypeGroupConverter::TypeGroupConverter - unknown chart type" );
+#undef ENSURE_AXESCOUNT
+ }
+
+ // special handling for some chart types
+ switch( eTypeId )
+ {
+ case TYPEID_BAR:
+ if( mrModel.mnBarDir == XML_bar )
+ eTypeId = TYPEID_HORBAR;
+ break;
+ case TYPEID_RADARLINE:
+ if( mrModel.mnRadarStyle == XML_filled )
+ eTypeId = TYPEID_RADARAREA;
+ break;
+ case TYPEID_SURFACE:
+ // create a deep 3D bar chart from surface charts
+ mrModel.mnGrouping = XML_standard;
+ break;
+ default:;
+ }
+
+ // set the chart type info struct for the current chart type
+ maTypeInfo = lclGetTypeInfoFromTypeId( eTypeId );
+}
+
+TypeGroupConverter::~TypeGroupConverter()
+{
+}
+
+bool TypeGroupConverter::isStacked() const
+{
+ return maTypeInfo.mbSupportsStacking && (mrModel.mnGrouping == XML_stacked);
+}
+
+bool TypeGroupConverter::isPercent() const
+{
+ return maTypeInfo.mbSupportsStacking && (mrModel.mnGrouping == XML_percentStacked);
+}
+
+bool TypeGroupConverter::isWall3dChart() const
+{
+ return mb3dChart && (maTypeInfo.meTypeCategory != TYPECATEGORY_PIE);
+}
+
+bool TypeGroupConverter::isDeep3dChart() const
+{
+ return isWall3dChart() && (mrModel.mnGrouping == XML_standard);
+}
+
+bool TypeGroupConverter::isSeriesFrameFormat() const
+{
+ return mb3dChart || maTypeInfo.mbSeriesIsFrame2d;
+}
+
+ObjectType TypeGroupConverter::getSeriesObjectType() const
+{
+ return mb3dChart ? OBJECTTYPE_FILLEDSERIES3D :
+ (maTypeInfo.mbSeriesIsFrame2d ? OBJECTTYPE_FILLEDSERIES2D : OBJECTTYPE_LINEARSERIES2D);
+}
+
+OUString TypeGroupConverter::getSingleSeriesTitle() const
+{
+ OUString aSeriesTitle;
+ if( !mrModel.maSeries.empty() && (maTypeInfo.mbSingleSeriesVis || (mrModel.maSeries.size() == 1)) )
+ if( const TextModel* pText = mrModel.maSeries.front()->mxText.get() )
+ if( const DataSequenceModel* pDataSeq = pText->mxDataSeq.get() )
+ if( !pDataSeq->maData.empty() )
+ pDataSeq->maData.begin()->second >>= aSeriesTitle;
+ return aSeriesTitle;
+}
+
+Reference< XCoordinateSystem > TypeGroupConverter::createCoordinateSystem()
+{
+ // create the coordinate system object
+ Reference< css::uno::XComponentContext > xContext = getComponentContext();
+ Reference< XCoordinateSystem > xCoordSystem;
+ if( maTypeInfo.mbPolarCoordSystem )
+ {
+ if( mb3dChart )
+ xCoordSystem = css::chart2::PolarCoordinateSystem3d::create(xContext);
+ else
+ xCoordSystem = css::chart2::PolarCoordinateSystem2d::create(xContext);
+ }
+ else
+ {
+ if( mb3dChart )
+ xCoordSystem = css::chart2::CartesianCoordinateSystem3d::create(xContext);
+ else
+ xCoordSystem = css::chart2::CartesianCoordinateSystem2d::create(xContext);
+ }
+
+ // swap X and Y axis
+ if( maTypeInfo.mbSwappedAxesSet )
+ {
+ PropertySet aPropSet( xCoordSystem );
+ aPropSet.setProperty( PROP_SwapXAndYAxis, true );
+ }
+
+ return xCoordSystem;
+}
+
+Reference< XLabeledDataSequence > TypeGroupConverter::createCategorySequence()
+{
+ sal_Int32 nMaxValues = 0;
+ Reference< XLabeledDataSequence > xLabeledSeq;
+ /* Find first existing category sequence. The behaviour of Excel 2007 is
+ different to Excel 2003, which always used the category sequence of the
+ first series, even if it was empty. */
+ for (auto const& elem : mrModel.maSeries)
+ {
+ if( elem->maSources.has( SeriesModel::CATEGORIES ) )
+ {
+ SeriesConverter aSeriesConv(*this, *elem);
+ xLabeledSeq = aSeriesConv.createCategorySequence( "categories" );
+ if (xLabeledSeq.is())
+ break;
+ }
+ else if( nMaxValues <= 0 && elem->maSources.has( SeriesModel::VALUES ) )
+ {
+ DataSourceModel *pValues = elem->maSources.get( SeriesModel::VALUES ).get();
+ if( pValues->mxDataSeq.is() )
+ nMaxValues = pValues->mxDataSeq->maData.size();
+ }
+ }
+ /* n#839727 Create Category Sequence when none are found */
+ if( !xLabeledSeq.is() && !mrModel.maSeries.empty() ) {
+ if( nMaxValues < 0 )
+ nMaxValues = 2;
+ SeriesModel &aModel = *mrModel.maSeries.get(0);
+ if (!aModel.maSources.has(SeriesModel::CATEGORIES))
+ {
+ DataSourceModel &aSrc = aModel.maSources.create( SeriesModel::CATEGORIES );
+ DataSequenceModel &aSeq = aSrc.mxDataSeq.create();
+ aSeq.mnPointCount = nMaxValues;
+ for( sal_Int32 i = 0; i < nMaxValues; i++ )
+ aSeq.maData[ i ] <<= OUString::number( i + 1 );
+ }
+ SeriesConverter aSeriesConv( *this, aModel );
+ xLabeledSeq = aSeriesConv.createCategorySequence( "categories" );
+ }
+ return xLabeledSeq;
+}
+
+void TypeGroupConverter::convertFromModel( const Reference< XDiagram >& rxDiagram,
+ const Reference< XCoordinateSystem >& rxCoordSystem,
+ sal_Int32 nAxesSetIdx, bool bSupportsVaryColorsByPoint )
+{
+ try
+ {
+ // create the chart type object
+ OUString aService = OUString::createFromAscii( maTypeInfo.mpcServiceName );
+ Reference< XChartType > xChartType( createInstance( aService ), UNO_QUERY_THROW );
+
+ Reference< XChartTypeContainer > xChartTypeContOld( rxCoordSystem, UNO_QUERY_THROW );
+ Sequence< Reference< XChartType > > xOldChartTypes( xChartTypeContOld->getChartTypes() );
+ sal_Int32 nOldChartTypeIdx = -1;
+
+ // additional properties
+ PropertySet aDiaProp( rxDiagram );
+ PropertySet aTypeProp( xChartType );
+ switch( maTypeInfo.meTypeCategory )
+ {
+ case TYPECATEGORY_BAR:
+ {
+ Sequence< sal_Int32 > aInt32Seq{ mrModel.mnOverlap, mrModel.mnOverlap };
+ aTypeProp.setProperty( PROP_OverlapSequence, aInt32Seq );
+ aInt32Seq = { mrModel.mnGapWidth, mrModel.mnGapWidth };
+ aTypeProp.setProperty( PROP_GapwidthSequence, aInt32Seq );
+ }
+ break;
+ case TYPECATEGORY_PIE:
+ {
+ aTypeProp.setProperty( PROP_UseRings, maTypeInfo.meTypeId == TYPEID_DOUGHNUT );
+ /* #i85166# starting angle of first pie slice. 3D pie charts
+ use Y rotation setting in view3D element. Of-pie charts do
+ not support pie rotation. */
+ if( !is3dChart() && (maTypeInfo.meTypeId != TYPEID_OFPIE) )
+ convertPieRotation( aDiaProp, mrModel.mnFirstAngle );
+ }
+ break;
+ default:;
+ }
+
+ // create converter objects for all series models
+ typedef RefVector< SeriesConverter > SeriesConvVector;
+ SeriesConvVector aSeries;
+ for (auto const& elemSeries : mrModel.maSeries)
+ aSeries.push_back( std::make_shared<SeriesConverter>(*this, *elemSeries) );
+
+ // decide whether to use varying colors for each data point
+ bool bVaryColorsByPoint = bSupportsVaryColorsByPoint && mrModel.mbVaryColors;
+ switch( maTypeInfo.meVarPointMode )
+ {
+ case VARPOINTMODE_NONE: bVaryColorsByPoint = false; break;
+ case VARPOINTMODE_SINGLE: bVaryColorsByPoint &= (mrModel.maSeries.size() == 1); break;
+ case VARPOINTMODE_MULTI: break;
+ }
+
+ /* Stock chart needs special processing. Create one 'big' series with
+ data sequences of different roles. */
+ if( maTypeInfo.meTypeId == TYPEID_STOCK )
+ {
+ // create the data series object
+ Reference< XDataSeries > xDataSeries( createInstance( "com.sun.star.chart2.DataSeries" ), UNO_QUERY );
+ Reference< XDataSink > xDataSink( xDataSeries, UNO_QUERY );
+ if( xDataSink.is() )
+ {
+ // create a list of data sequences from all series
+ ::std::vector< Reference< XLabeledDataSequence > > aLabeledSeqVec;
+ OSL_ENSURE( aSeries.size() >= 3, "TypeGroupConverter::convertFromModel - too few stock chart series" );
+ int nRoleIdx = (aSeries.size() == 3) ? 1 : 0;
+ for( auto& rxSeriesConv : aSeries )
+ {
+ // create a data sequence with a specific role
+ OUString aRole;
+ switch( nRoleIdx )
+ {
+ case 0: aRole = "values-first"; break;
+ case 1: aRole = "values-max"; break;
+ case 2: aRole = "values-min"; break;
+ case 3: aRole = "values-last"; break;
+ }
+ Reference< XLabeledDataSequence > xDataSeq = rxSeriesConv->createValueSequence( aRole );
+ if( xDataSeq.is() )
+ aLabeledSeqVec.push_back( xDataSeq );
+
+ ++nRoleIdx;
+ if (nRoleIdx >= 4)
+ break;
+ }
+
+ // attach labeled data sequences to series and insert series into chart type
+ xDataSink->setData( comphelper::containerToSequence( aLabeledSeqVec ) );
+
+ // formatting of high/low lines
+ aTypeProp.setProperty( PROP_ShowHighLow, true );
+ PropertySet aSeriesProp( xDataSeries );
+ if( mrModel.mxHiLowLines.is() )
+ getFormatter().convertFrameFormatting( aSeriesProp, mrModel.mxHiLowLines, OBJECTTYPE_HILOLINE );
+ else
+ // hi/low-lines cannot be switched off via "ShowHighLow" property (?)
+ aSeriesProp.setProperty( PROP_LineStyle, css::drawing::LineStyle_NONE );
+
+ // formatting of up/down bars
+ bool bUpDownBars = mrModel.mxUpDownBars.is();
+ aTypeProp.setProperty( PROP_Japanese, bUpDownBars );
+ aTypeProp.setProperty( PROP_ShowFirst, bUpDownBars );
+ if( bUpDownBars )
+ {
+ UpDownBarsConverter aUpDownConv( *this, *mrModel.mxUpDownBars );
+ aUpDownConv.convertFromModel( xChartType );
+ }
+
+ // insert the series into the chart type object
+ insertDataSeries( xChartType, xDataSeries, nAxesSetIdx );
+ }
+ }
+ else
+ {
+ for( sal_Int32 nCTIdx=0; nCTIdx<xOldChartTypes.getLength(); ++nCTIdx )
+ {
+ if ( xChartType->getChartType() == xOldChartTypes[nCTIdx]->getChartType() )
+ {
+ nOldChartTypeIdx = nCTIdx;
+ }
+ }
+
+ for (auto const& elem : aSeries)
+ {
+ SeriesConverter& rSeriesConv = *elem;
+ Reference< XDataSeries > xDataSeries = rSeriesConv.createDataSeries( *this, bVaryColorsByPoint );
+ insertDataSeries( nOldChartTypeIdx == -1 ? xChartType : xOldChartTypes[nOldChartTypeIdx], xDataSeries, nAxesSetIdx );
+
+ /* Excel does not use the value of the c:smooth element of the
+ chart type to set a default line smoothing for the data
+ series. Line smoothing is always controlled by the c:smooth
+ element of the respective data series. If the element in the
+ data series is missing, line smoothing is off, regardless of
+ the c:smooth element of the chart type. */
+#if !OOX_CHART_SMOOTHED_PER_SERIES
+ if( rSeriesConv.getModel().mbSmooth )
+ convertLineSmooth( aTypeProp, true );
+#endif
+ }
+ }
+
+ // add chart type object to coordinate system
+ Reference< XChartTypeContainer > xChartTypeCont( rxCoordSystem, UNO_QUERY_THROW );
+ if (nOldChartTypeIdx == -1)
+ {
+ xChartTypeCont->addChartType(xChartType);
+ }
+
+ // set existence of bar connector lines at diagram (only in stacked 2D bar charts)
+ if( mrModel.mxSerLines.is() && !mb3dChart && (maTypeInfo.meTypeCategory == TYPECATEGORY_BAR) && (isStacked() || isPercent()) )
+ aDiaProp.setProperty( PROP_ConnectBars, true );
+ }
+ catch( Exception& )
+ {
+ OSL_FAIL( "TypeGroupConverter::convertFromModel - cannot add chart type" );
+ }
+}
+
+void TypeGroupConverter::convertMarker( PropertySet& rPropSet, sal_Int32 nOoxSymbol, sal_Int32 nOoxSize,
+ const ModelRef< Shape >& xShapeProps ) const
+{
+ if( isSeriesFrameFormat() )
+ return;
+
+ namespace cssc = ::com::sun::star::chart2;
+
+ // symbol style
+ cssc::Symbol aSymbol;
+ aSymbol.Style = cssc::SymbolStyle_STANDARD;
+ switch( nOoxSymbol ) // compare with XclChPropSetHelper::WriteMarkerProperties in xlchart.cxx
+ {
+ case XML_auto: aSymbol.Style = cssc::SymbolStyle_AUTO; break;
+ case XML_none: aSymbol.Style = cssc::SymbolStyle_NONE; break;
+ case XML_square: aSymbol.StandardSymbol = 0; break; // square
+ case XML_diamond: aSymbol.StandardSymbol = 1; break; // diamond
+ case XML_triangle: aSymbol.StandardSymbol = 3; break; // arrow up
+ case XML_x: aSymbol.StandardSymbol = 10; break; // X, legacy bow tie
+ case XML_star: aSymbol.StandardSymbol = 12; break; // asterisk, legacy sand glass
+ case XML_dot: aSymbol.StandardSymbol = 4; break; // arrow right
+ case XML_dash: aSymbol.StandardSymbol = 13; break; // horizontal bar, legacy arrow down
+ case XML_circle: aSymbol.StandardSymbol = 8; break; // circle, legacy arrow right
+ case XML_plus: aSymbol.StandardSymbol = 11; break; // plus, legacy arrow left
+ }
+
+ // symbol size (points in OOXML, 1/100 mm in Chart2)
+ sal_Int32 nSize = convertPointToMm100(nOoxSize);
+ aSymbol.Size.Width = aSymbol.Size.Height = nSize;
+
+ if(xShapeProps.is())
+ {
+ Color aFillColor = xShapeProps->getFillProperties().maFillColor;
+ aSymbol.FillColor = sal_Int32(aFillColor.getColor(getFilter().getGraphicHelper()));
+ // tdf#124817: if there is no fill color, use line color of the symbol
+ if( aSymbol.FillColor < 0 )
+ {
+ Color aLineColor = xShapeProps->getLineProperties().maLineFill.maFillColor;
+ aSymbol.BorderColor = sal_Int32(aLineColor.getColor(getFilter().getGraphicHelper()));
+ rPropSet.setProperty(PROP_Color, aSymbol.BorderColor);
+ }
+ else
+ rPropSet.setProperty(PROP_Color, aSymbol.FillColor);
+ }
+
+ // set the property
+ rPropSet.setProperty( PROP_Symbol, aSymbol );
+}
+
+void TypeGroupConverter::convertLineSmooth( PropertySet& rPropSet, bool bOoxSmooth ) const
+{
+ if( !isSeriesFrameFormat() && (maTypeInfo.meTypeCategory != TYPECATEGORY_RADAR) )
+ {
+ namespace cssc = ::com::sun::star::chart2;
+ cssc::CurveStyle eCurveStyle = bOoxSmooth ? cssc::CurveStyle_CUBIC_SPLINES : cssc::CurveStyle_LINES;
+ rPropSet.setProperty( PROP_CurveStyle, eCurveStyle );
+ }
+}
+
+void TypeGroupConverter::convertBarGeometry( PropertySet& rPropSet, sal_Int32 nOoxShape ) const
+{
+ if( !(mb3dChart && (maTypeInfo.meTypeCategory == TYPECATEGORY_BAR)) )
+ return;
+
+ namespace cssc = ::com::sun::star::chart2;
+
+ sal_Int32 nGeom3d = cssc::DataPointGeometry3D::CUBOID;
+ switch( nOoxShape )
+ {
+ case XML_box: nGeom3d = cssc::DataPointGeometry3D::CUBOID; break;
+ case XML_cone: nGeom3d = cssc::DataPointGeometry3D::CONE; break;
+ case XML_coneToMax: nGeom3d = cssc::DataPointGeometry3D::CONE; break;
+ case XML_cylinder: nGeom3d = cssc::DataPointGeometry3D::CYLINDER; break;
+ case XML_pyramid: nGeom3d = cssc::DataPointGeometry3D::PYRAMID; break;
+ case XML_pyramidToMax: nGeom3d = cssc::DataPointGeometry3D::PYRAMID; break;
+ default: OSL_FAIL( "TypeGroupConverter::convertBarGeometry - unknown 3D bar shape type" );
+ }
+ rPropSet.setProperty( PROP_Geometry3D, nGeom3d );
+}
+
+void TypeGroupConverter::convertPieRotation( PropertySet& rPropSet, sal_Int32 nOoxAngle ) const
+{
+ if( maTypeInfo.meTypeCategory == TYPECATEGORY_PIE )
+ {
+ // map OOXML [0,360] clockwise (0deg top) to Chart2 counterclockwise (0deg left)
+ sal_Int32 nAngle = (450 - nOoxAngle) % 360;
+ rPropSet.setProperty( PROP_StartingAngle, nAngle );
+ }
+}
+
+void TypeGroupConverter::convertPieExplosion( PropertySet& rPropSet, sal_Int32 nOoxExplosion ) const
+{
+ if( maTypeInfo.meTypeCategory == TYPECATEGORY_PIE )
+ {
+ // pie explosion restricted to 100% in Chart2, set as double in range [0,1]
+ double fOffset = getLimitedValue< double >( nOoxExplosion / 100.0, 0.0, 1.0 );
+ rPropSet.setProperty( PROP_Offset, fOffset );
+ }
+}
+
+// private --------------------------------------------------------------------
+
+void TypeGroupConverter::insertDataSeries( const Reference< XChartType >& rxChartType, const Reference< XDataSeries >& rxSeries, sal_Int32 nAxesSetIdx )
+{
+ if( !rxSeries.is() )
+ return;
+
+ PropertySet aSeriesProp( rxSeries );
+
+ // series stacking mode
+ namespace cssc = ::com::sun::star::chart2;
+ cssc::StackingDirection eStacking = cssc::StackingDirection_NO_STACKING;
+ // stacked overrides deep-3d
+ if( isStacked() || isPercent() )
+ eStacking = cssc::StackingDirection_Y_STACKING;
+ else if( isDeep3dChart() )
+ eStacking = cssc::StackingDirection_Z_STACKING;
+ aSeriesProp.setProperty( PROP_StackingDirection, eStacking );
+
+ // additional series properties
+ aSeriesProp.setProperty( PROP_AttachedAxisIndex, nAxesSetIdx );
+
+ // insert series into container
+ try
+ {
+ Reference< XDataSeriesContainer > xSeriesCont( rxChartType, UNO_QUERY_THROW );
+ xSeriesCont->addDataSeries( rxSeries );
+ }
+ catch( Exception& )
+ {
+ OSL_FAIL( "TypeGroupConverter::insertDataSeries - cannot add data series" );
+ }
+}
+
+} // namespace oox
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/oox/source/drawingml/chart/typegroupmodel.cxx b/oox/source/drawingml/chart/typegroupmodel.cxx
new file mode 100644
index 000000000..9479f93c4
--- /dev/null
+++ b/oox/source/drawingml/chart/typegroupmodel.cxx
@@ -0,0 +1,67 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ *
+ * This file incorporates work covered by the following license notice:
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed
+ * with this work for additional information regarding copyright
+ * ownership. The ASF licenses this file to you under the Apache
+ * License, Version 2.0 (the "License"); you may not use this file
+ * except in compliance with the License. You may obtain a copy of
+ * the License at http://www.apache.org/licenses/LICENSE-2.0 .
+ */
+
+#include <drawingml/chart/typegroupmodel.hxx>
+#include <oox/token/tokens.hxx>
+
+namespace oox::drawingml::chart {
+
+UpDownBarsModel::UpDownBarsModel() :
+ mnGapWidth( 150 )
+{
+}
+
+UpDownBarsModel::~UpDownBarsModel()
+{
+}
+
+TypeGroupModel::TypeGroupModel( sal_Int32 nTypeId, bool bMSO2007Doc ) :
+ mfSplitPos( 0.0 ),
+ mnBarDir( XML_col ),
+ mnBubbleScale( 100 ),
+ mnFirstAngle( 0 ),
+ mnGapDepth( 150 ),
+ mnGapWidth( 150 ),
+ mnGrouping( bMSO2007Doc ? XML_standard : XML_clustered ),
+ mnHoleSize( 10 ),
+ mnOfPieType( XML_pie ),
+ mnOverlap( 0 ),
+ mnRadarStyle( XML_standard ),
+ mnScatterStyle( XML_marker ),
+ mnSecondPieSize( 75 ),
+ mnShape( XML_box ),
+ mnSizeRepresents( XML_area ),
+ mnSplitType( XML_auto ),
+ mnTypeId( nTypeId ),
+ mbBubble3d( !bMSO2007Doc ),
+ mbShowMarker( !bMSO2007Doc ),
+ mbShowNegBubbles( !bMSO2007Doc ),
+ mbSmooth( !bMSO2007Doc ),
+ mbVaryColors( false ),
+ mbWireframe( !bMSO2007Doc )
+{
+}
+
+TypeGroupModel::~TypeGroupModel()
+{
+}
+
+} // namespace oox::drawingml::chart
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/oox/source/drawingml/clrscheme.cxx b/oox/source/drawingml/clrscheme.cxx
new file mode 100644
index 000000000..19c0afd44
--- /dev/null
+++ b/oox/source/drawingml/clrscheme.cxx
@@ -0,0 +1,125 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ *
+ * This file incorporates work covered by the following license notice:
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed
+ * with this work for additional information regarding copyright
+ * ownership. The ASF licenses this file to you under the Apache
+ * License, Version 2.0 (the "License"); you may not use this file
+ * except in compliance with the License. You may obtain a copy of
+ * the License at http://www.apache.org/licenses/LICENSE-2.0 .
+ */
+
+#include <algorithm>
+
+#include <com/sun/star/uno/Sequence.hxx>
+#include <com/sun/star/util/Color.hpp>
+
+#include <osl/diagnose.h>
+#include <oox/drawingml/clrscheme.hxx>
+#include <oox/token/tokens.hxx>
+#include <comphelper/sequence.hxx>
+
+using namespace com::sun::star;
+
+namespace oox::drawingml {
+
+bool ClrMap::getColorMap( sal_Int32& nClrToken )
+{
+ sal_Int32 nMapped = 0;
+ std::map < sal_Int32, sal_Int32 >::const_iterator aIter( maClrMap.find( nClrToken ) );
+ if ( aIter != maClrMap.end() )
+ nMapped = (*aIter).second;
+ if ( nMapped )
+ {
+ nClrToken = nMapped;
+ return true;
+ }
+ else
+ return false;
+}
+
+void ClrMap::setColorMap( sal_Int32 nClrToken, sal_Int32 nMappedClrToken )
+{
+ maClrMap[ nClrToken ] = nMappedClrToken;
+}
+
+namespace {
+
+struct find_by_token
+{
+ explicit find_by_token(sal_Int32 token):
+ m_token(token)
+ {
+ }
+
+ bool operator()(const std::pair<sal_Int32, ::Color>& r)
+ {
+ return r.first == m_token;
+ }
+
+private:
+ sal_Int32 m_token;
+};
+
+}
+
+bool ClrScheme::getColor( sal_Int32 nSchemeClrToken, ::Color& rColor ) const
+{
+ OSL_ASSERT((nSchemeClrToken & sal_Int32(0xFFFF0000))==0);
+ switch( nSchemeClrToken )
+ {
+ case XML_bg1 : nSchemeClrToken = XML_lt1; break;
+ case XML_bg2 : nSchemeClrToken = XML_lt2; break;
+ case XML_tx1 : nSchemeClrToken = XML_dk1; break;
+ case XML_tx2 : nSchemeClrToken = XML_dk2; break;
+ }
+
+ auto aIter = std::find_if(maClrScheme.begin(), maClrScheme.end(), find_by_token(nSchemeClrToken) );
+
+ if ( aIter != maClrScheme.end() )
+ rColor = aIter->second;
+
+ return aIter != maClrScheme.end();
+}
+
+void ClrScheme::setColor( sal_Int32 nSchemeClrToken, ::Color nColor )
+{
+ const auto aIter = std::find_if(maClrScheme.begin(), maClrScheme.end(), find_by_token(nSchemeClrToken) );
+ if ( aIter != maClrScheme.end() )
+ aIter->second = nColor;
+ else
+ maClrScheme.emplace_back(nSchemeClrToken, nColor);
+}
+
+bool ClrScheme::getColorByIndex(size_t nIndex, ::Color& rColor) const
+{
+ if (nIndex >= maClrScheme.size())
+ return false;
+
+ rColor = maClrScheme[nIndex].second;
+ return true;
+}
+
+void ClrScheme::ToAny(css::uno::Any& rVal) const
+{
+ std::vector<util::Color> aRet;
+
+ for (const auto& rIndexAndColor : maClrScheme)
+ {
+ aRet.push_back(static_cast<sal_Int32>(rIndexAndColor.second));
+ }
+
+ rVal <<= comphelper::containerToSequence(aRet);
+}
+
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/oox/source/drawingml/clrschemecontext.cxx b/oox/source/drawingml/clrschemecontext.cxx
new file mode 100644
index 000000000..e8850974c
--- /dev/null
+++ b/oox/source/drawingml/clrschemecontext.cxx
@@ -0,0 +1,102 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ *
+ * This file incorporates work covered by the following license notice:
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed
+ * with this work for additional information regarding copyright
+ * ownership. The ASF licenses this file to you under the Apache
+ * License, Version 2.0 (the "License"); you may not use this file
+ * except in compliance with the License. You may obtain a copy of
+ * the License at http://www.apache.org/licenses/LICENSE-2.0 .
+ */
+
+#include <drawingml/clrschemecontext.hxx>
+#include <oox/core/xmlfilterbase.hxx>
+#include <oox/helper/attributelist.hxx>
+#include <oox/token/namespaces.hxx>
+#include <oox/token/tokens.hxx>
+
+using namespace ::oox::core;
+using namespace ::com::sun::star::uno;
+using namespace ::com::sun::star::xml::sax;
+
+namespace oox::drawingml {
+
+static void setClrMap( const ::oox::AttributeList& rAttributes,
+ ClrMap& rClrMap, sal_Int32 nToken )
+{
+ if ( rAttributes.hasAttribute( nToken ) )
+ {
+ sal_Int32 nMappedToken = rAttributes.getToken( nToken, 0 );
+ rClrMap.setColorMap( nToken, nMappedToken );
+ }
+}
+
+clrMapContext::clrMapContext( ContextHandler2Helper const & rParent,
+ const ::oox::AttributeList& rAttributes, ClrMap& rClrMap )
+: ContextHandler2( rParent )
+{
+ setClrMap( rAttributes, rClrMap, XML_bg1 );
+ setClrMap( rAttributes, rClrMap, XML_tx1 );
+ setClrMap( rAttributes, rClrMap, XML_bg2 );
+ setClrMap( rAttributes, rClrMap, XML_tx2 );
+ setClrMap( rAttributes, rClrMap, XML_accent1 );
+ setClrMap( rAttributes, rClrMap, XML_accent2 );
+ setClrMap( rAttributes, rClrMap, XML_accent3 );
+ setClrMap( rAttributes, rClrMap, XML_accent4 );
+ setClrMap( rAttributes, rClrMap, XML_accent5 );
+ setClrMap( rAttributes, rClrMap, XML_accent6 );
+ setClrMap( rAttributes, rClrMap, XML_hlink );
+ setClrMap( rAttributes, rClrMap, XML_folHlink );
+}
+
+clrSchemeColorContext::clrSchemeColorContext( ContextHandler2Helper const & rParent, ClrScheme& rClrScheme, sal_Int32 nColorToken ) :
+ ColorContext( rParent, *this ),
+ mrClrScheme( rClrScheme ),
+ mnColorToken( nColorToken )
+{
+}
+
+clrSchemeColorContext::~clrSchemeColorContext()
+{
+ mrClrScheme.setColor( mnColorToken, getColor( getFilter().getGraphicHelper() ) );
+}
+
+clrSchemeContext::clrSchemeContext( ContextHandler2Helper const & rParent, ClrScheme& rClrScheme ) :
+ ContextHandler2( rParent ),
+ mrClrScheme( rClrScheme )
+{
+}
+
+ContextHandlerRef clrSchemeContext::onCreateContext(
+ sal_Int32 nElement, const AttributeList& )
+{
+ switch( nElement )
+ {
+ case A_TOKEN( dk1 ):
+ case A_TOKEN( lt1 ):
+ case A_TOKEN( dk2 ):
+ case A_TOKEN( lt2 ):
+ case A_TOKEN( accent1 ):
+ case A_TOKEN( accent2 ):
+ case A_TOKEN( accent3 ):
+ case A_TOKEN( accent4 ):
+ case A_TOKEN( accent5 ):
+ case A_TOKEN( accent6 ):
+ case A_TOKEN( hlink ):
+ case A_TOKEN( folHlink ):
+ return new clrSchemeColorContext( *this, mrClrScheme, getBaseToken( nElement ) );
+ }
+ return nullptr;
+}
+
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/oox/source/drawingml/color.cxx b/oox/source/drawingml/color.cxx
new file mode 100644
index 000000000..f810deecf
--- /dev/null
+++ b/oox/source/drawingml/color.cxx
@@ -0,0 +1,873 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ *
+ * This file incorporates work covered by the following license notice:
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed
+ * with this work for additional information regarding copyright
+ * ownership. The ASF licenses this file to you under the Apache
+ * License, Version 2.0 (the "License"); you may not use this file
+ * except in compliance with the License. You may obtain a copy of
+ * the License at http://www.apache.org/licenses/LICENSE-2.0 .
+ */
+
+#include <oox/drawingml/color.hxx>
+#include <algorithm>
+#include <math.h>
+#include <osl/diagnose.h>
+#include <sal/log.hxx>
+#include <oox/helper/containerhelper.hxx>
+#include <oox/helper/graphichelper.hxx>
+#include <oox/drawingml/drawingmltypes.hxx>
+#include <oox/token/namespaces.hxx>
+#include <oox/token/tokens.hxx>
+
+namespace oox::drawingml {
+
+namespace {
+
+/** Global storage for predefined color values used in OOXML file formats. */
+struct PresetColorsPool
+{
+ typedef ::std::vector< ::Color > ColorVector;
+
+ ColorVector maDmlColors; /// Predefined colors in DrawingML, indexed by XML token.
+ ColorVector maVmlColors; /// Predefined colors in VML, indexed by XML token.
+ ColorVector maHighlightColors; /// Predefined colors in DrawingML for highlight, indexed by XML token.
+
+ explicit PresetColorsPool();
+};
+
+PresetColorsPool::PresetColorsPool() :
+ maDmlColors( static_cast< size_t >( XML_TOKEN_COUNT ), API_RGB_TRANSPARENT ),
+ maVmlColors( static_cast< size_t >( XML_TOKEN_COUNT ), API_RGB_TRANSPARENT ),
+ maHighlightColors( static_cast<size_t>(XML_TOKEN_COUNT), API_RGB_TRANSPARENT )
+{
+ // predefined colors in DrawingML (map XML token identifiers to RGB values)
+ static const std::pair<sal_Int32, ::Color> spnDmlColors[] =
+ {
+ {XML_aliceBlue, ::Color(0xF0F8FF)}, {XML_antiqueWhite, ::Color(0xFAEBD7)},
+ {XML_aqua, ::Color(0x00FFFF)}, {XML_aquamarine, ::Color(0x7FFFD4)},
+ {XML_azure, ::Color(0xF0FFFF)}, {XML_beige, ::Color(0xF5F5DC)},
+ {XML_bisque, ::Color(0xFFE4C4)}, {XML_black, ::Color(0x000000)},
+ {XML_blanchedAlmond, ::Color(0xFFEBCD)}, {XML_blue, ::Color(0x0000FF)},
+ {XML_blueViolet, ::Color(0x8A2BE2)}, {XML_brown, ::Color(0xA52A2A)},
+ {XML_burlyWood, ::Color(0xDEB887)}, {XML_cadetBlue, ::Color(0x5F9EA0)},
+ {XML_chartreuse, ::Color(0x7FFF00)}, {XML_chocolate, ::Color(0xD2691E)},
+ {XML_coral, ::Color(0xFF7F50)}, {XML_cornflowerBlue, ::Color(0x6495ED)},
+ {XML_cornsilk, ::Color(0xFFF8DC)}, {XML_crimson, ::Color(0xDC143C)},
+ {XML_cyan, ::Color(0x00FFFF)}, {XML_deepPink, ::Color(0xFF1493)},
+ {XML_deepSkyBlue, ::Color(0x00BFFF)}, {XML_dimGray, ::Color(0x696969)},
+ {XML_dkBlue, ::Color(0x00008B)}, {XML_dkCyan, ::Color(0x008B8B)},
+ {XML_dkGoldenrod, ::Color(0xB8860B)}, {XML_dkGray, ::Color(0xA9A9A9)},
+ {XML_dkGreen, ::Color(0x006400)}, {XML_dkKhaki, ::Color(0xBDB76B)},
+ {XML_dkMagenta, ::Color(0x8B008B)}, {XML_dkOliveGreen, ::Color(0x556B2F)},
+ {XML_dkOrange, ::Color(0xFF8C00)}, {XML_dkOrchid, ::Color(0x9932CC)},
+ {XML_dkRed, ::Color(0x8B0000)}, {XML_dkSalmon, ::Color(0xE9967A)},
+ {XML_dkSeaGreen, ::Color(0x8FBC8B)}, {XML_dkSlateBlue, ::Color(0x483D8B)},
+ {XML_dkSlateGray, ::Color(0x2F4F4F)}, {XML_dkTurquoise, ::Color(0x00CED1)},
+ {XML_dkViolet, ::Color(0x9400D3)}, {XML_dodgerBlue, ::Color(0x1E90FF)},
+ {XML_firebrick, ::Color(0xB22222)}, {XML_floralWhite, ::Color(0xFFFAF0)},
+ {XML_forestGreen, ::Color(0x228B22)}, {XML_fuchsia, ::Color(0xFF00FF)},
+ {XML_gainsboro, ::Color(0xDCDCDC)}, {XML_ghostWhite, ::Color(0xF8F8FF)},
+ {XML_gold, ::Color(0xFFD700)}, {XML_goldenrod, ::Color(0xDAA520)},
+ {XML_gray, ::Color(0x808080)}, {XML_green, ::Color(0x008000)},
+ {XML_greenYellow, ::Color(0xADFF2F)}, {XML_honeydew, ::Color(0xF0FFF0)},
+ {XML_hotPink, ::Color(0xFF69B4)}, {XML_indianRed, ::Color(0xCD5C5C)},
+ {XML_indigo, ::Color(0x4B0082)}, {XML_ivory, ::Color(0xFFFFF0)},
+ {XML_khaki, ::Color(0xF0E68C)}, {XML_lavender, ::Color(0xE6E6FA)},
+ {XML_lavenderBlush, ::Color(0xFFF0F5)}, {XML_lawnGreen, ::Color(0x7CFC00)},
+ {XML_lemonChiffon, ::Color(0xFFFACD)}, {XML_lime, ::Color(0x00FF00)},
+ {XML_limeGreen, ::Color(0x32CD32)}, {XML_linen, ::Color(0xFAF0E6)},
+ {XML_ltBlue, ::Color(0xADD8E6)}, {XML_ltCoral, ::Color(0xF08080)},
+ {XML_ltCyan, ::Color(0xE0FFFF)}, {XML_ltGoldenrodYellow, ::Color(0xFAFA78)},
+ {XML_ltGray, ::Color(0xD3D3D3)}, {XML_ltGreen, ::Color(0x90EE90)},
+ {XML_ltPink, ::Color(0xFFB6C1)}, {XML_ltSalmon, ::Color(0xFFA07A)},
+ {XML_ltSeaGreen, ::Color(0x20B2AA)}, {XML_ltSkyBlue, ::Color(0x87CEFA)},
+ {XML_ltSlateGray, ::Color(0x778899)}, {XML_ltSteelBlue, ::Color(0xB0C4DE)},
+ {XML_ltYellow, ::Color(0xFFFFE0)}, {XML_magenta, ::Color(0xFF00FF)},
+ {XML_maroon, ::Color(0x800000)}, {XML_medAquamarine, ::Color(0x66CDAA)},
+ {XML_medBlue, ::Color(0x0000CD)}, {XML_medOrchid, ::Color(0xBA55D3)},
+ {XML_medPurple, ::Color(0x9370DB)}, {XML_medSeaGreen, ::Color(0x3CB371)},
+ {XML_medSlateBlue, ::Color(0x7B68EE)}, {XML_medSpringGreen, ::Color(0x00FA9A)},
+ {XML_medTurquoise, ::Color(0x48D1CC)}, {XML_medVioletRed, ::Color(0xC71585)},
+ {XML_midnightBlue, ::Color(0x191970)}, {XML_mintCream, ::Color(0xF5FFFA)},
+ {XML_mistyRose, ::Color(0xFFE4E1)}, {XML_moccasin, ::Color(0xFFE4B5)},
+ {XML_navajoWhite, ::Color(0xFFDEAD)}, {XML_navy, ::Color(0x000080)},
+ {XML_oldLace, ::Color(0xFDF5E6)}, {XML_olive, ::Color(0x808000)},
+ {XML_oliveDrab, ::Color(0x6B8E23)}, {XML_orange, ::Color(0xFFA500)},
+ {XML_orangeRed, ::Color(0xFF4500)}, {XML_orchid, ::Color(0xDA70D6)},
+ {XML_paleGoldenrod, ::Color(0xEEE8AA)}, {XML_paleGreen, ::Color(0x98FB98)},
+ {XML_paleTurquoise, ::Color(0xAFEEEE)}, {XML_paleVioletRed, ::Color(0xDB7093)},
+ {XML_papayaWhip, ::Color(0xFFEFD5)}, {XML_peachPuff, ::Color(0xFFDAB9)},
+ {XML_peru, ::Color(0xCD853F)}, {XML_pink, ::Color(0xFFC0CB)},
+ {XML_plum, ::Color(0xDDA0DD)}, {XML_powderBlue, ::Color(0xB0E0E6)},
+ {XML_purple, ::Color(0x800080)}, {XML_red, ::Color(0xFF0000)},
+ {XML_rosyBrown, ::Color(0xBC8F8F)}, {XML_royalBlue, ::Color(0x4169E1)},
+ {XML_saddleBrown, ::Color(0x8B4513)}, {XML_salmon, ::Color(0xFA8072)},
+ {XML_sandyBrown, ::Color(0xF4A460)}, {XML_seaGreen, ::Color(0x2E8B57)},
+ {XML_seaShell, ::Color(0xFFF5EE)}, {XML_sienna, ::Color(0xA0522D)},
+ {XML_silver, ::Color(0xC0C0C0)}, {XML_skyBlue, ::Color(0x87CEEB)},
+ {XML_slateBlue, ::Color(0x6A5ACD)}, {XML_slateGray, ::Color(0x708090)},
+ {XML_snow, ::Color(0xFFFAFA)}, {XML_springGreen, ::Color(0x00FF7F)},
+ {XML_steelBlue, ::Color(0x4682B4)}, {XML_tan, ::Color(0xD2B48C)},
+ {XML_teal, ::Color(0x008080)}, {XML_thistle, ::Color(0xD8BFD8)},
+ {XML_tomato, ::Color(0xFF6347)}, {XML_turquoise, ::Color(0x40E0D0)},
+ {XML_violet, ::Color(0xEE82EE)}, {XML_wheat, ::Color(0xF5DEB3)},
+ {XML_white, ::Color(0xFFFFFF)}, {XML_whiteSmoke, ::Color(0xF5F5F5)},
+ {XML_yellow, ::Color(0xFFFF00)}, {XML_yellowGreen, ::Color(0x9ACD32)}
+ };
+ for(auto const& nEntry : spnDmlColors)
+ maDmlColors[ static_cast< size_t >(nEntry.first) ] = nEntry.second;
+
+ // predefined colors in VML (map XML token identifiers to RGB values)
+ static const std::pair<sal_Int32, ::Color> spnVmlColors[] =
+ {
+ {XML_aqua, ::Color(0x00FFFF)}, {XML_black, ::Color(0x000000)},
+ {XML_blue, ::Color(0x0000FF)}, {XML_fuchsia, ::Color(0xFF00FF)},
+ {XML_gray, ::Color(0x808080)}, {XML_green, ::Color(0x008000)},
+ {XML_lime, ::Color(0x00FF00)}, {XML_maroon, ::Color(0x800000)},
+ {XML_navy, ::Color(0x000080)}, {XML_olive, ::Color(0x808000)},
+ {XML_purple, ::Color(0x800080)}, {XML_red, ::Color(0xFF0000)},
+ {XML_silver, ::Color(0xC0C0C0)}, {XML_teal, ::Color(0x008080)},
+ {XML_white, ::Color(0xFFFFFF)}, {XML_yellow, ::Color(0xFFFF00)}
+ };
+ for(auto const& nEntry : spnVmlColors)
+ maVmlColors[ static_cast< size_t >(nEntry.first) ] = nEntry.second;
+
+ // predefined highlight colors in DML (map XML token identifiers to RGB values)
+ static const std::pair<sal_Int32, ::Color> spnHighlightColors[] =
+ {
+ // tdf#131841 Predefined color for OOXML highlight.
+ {XML_black, ::Color(0x000000)}, {XML_blue, ::Color(0x0000FF)},
+ {XML_cyan, ::Color(0x00FFFF)}, {XML_darkBlue, ::Color(0x00008B)},
+ {XML_darkCyan, ::Color(0x008B8B)}, {XML_darkGray, ::Color(0xA9A9A9)},
+ {XML_darkGreen, ::Color(0x006400)}, {XML_darkMagenta, ::Color(0x800080)},
+ {XML_darkRed, ::Color(0x8B0000)}, {XML_darkYellow, ::Color(0x808000)},
+ {XML_green, ::Color(0x00FF00)}, {XML_lightGray, ::Color(0xD3D3D3)},
+ {XML_magenta, ::Color(0xFF00FF)}, {XML_red, ::Color(0xFF0000)},
+ {XML_white, ::Color(0xFFFFFF)}, {XML_yellow, ::Color(0xFFFF00)}
+ };
+ for (auto const& nEntry : spnHighlightColors)
+ maHighlightColors[static_cast<size_t>(nEntry.first)] = nEntry.second;
+}
+
+struct StaticPresetColorsPool : public ::rtl::Static< PresetColorsPool, StaticPresetColorsPool > {};
+
+const double DEC_GAMMA = 2.3;
+const double INC_GAMMA = 1.0 / DEC_GAMMA;
+
+void lclRgbToRgbComponents( sal_Int32& ornR, sal_Int32& ornG, sal_Int32& ornB, ::Color nRgb )
+{
+ ornR = nRgb.GetRed();
+ ornG = nRgb.GetGreen();
+ ornB = nRgb.GetBlue();
+}
+
+sal_Int32 lclRgbComponentsToRgb( sal_Int32 nR, sal_Int32 nG, sal_Int32 nB )
+{
+ return static_cast< sal_Int32 >( (nR << 16) | (nG << 8) | nB );
+}
+
+sal_Int32 lclRgbCompToCrgbComp( sal_Int32 nRgbComp )
+{
+ return static_cast< sal_Int32 >( nRgbComp * MAX_PERCENT / 255 );
+}
+
+sal_Int32 lclCrgbCompToRgbComp( sal_Int32 nCrgbComp )
+{
+ return static_cast< sal_Int32 >( nCrgbComp * 255 / MAX_PERCENT );
+}
+
+sal_Int32 lclGamma( sal_Int32 nComp, double fGamma )
+{
+ return static_cast< sal_Int32 >( pow( static_cast< double >( nComp ) / MAX_PERCENT, fGamma ) * MAX_PERCENT + 0.5 );
+}
+
+void lclSetValue( sal_Int32& ornValue, sal_Int32 nNew, sal_Int32 nMax = MAX_PERCENT )
+{
+ OSL_ENSURE( (0 <= nNew) && (nNew <= nMax), "lclSetValue - invalid value" );
+ if( (0 <= nNew) && (nNew <= nMax) )
+ ornValue = nNew;
+}
+
+void lclModValue( sal_Int32& ornValue, sal_Int32 nMod, sal_Int32 nMax = MAX_PERCENT )
+{
+ OSL_ENSURE( (0 <= nMod), "lclModValue - invalid modificator" );
+ ornValue = getLimitedValue< sal_Int32, double >( static_cast< double >( ornValue ) * nMod / MAX_PERCENT, 0, nMax );
+}
+
+void lclOffValue( sal_Int32& ornValue, sal_Int32 nOff, sal_Int32 nMax = MAX_PERCENT )
+{
+ OSL_ENSURE( (-nMax <= nOff) && (nOff <= nMax), "lclOffValue - invalid offset" );
+ ornValue = getLimitedValue< sal_Int32, sal_Int32 >( ornValue + nOff, 0, nMax );
+}
+
+} // namespace
+
+Color::Color() :
+ meMode( COLOR_UNUSED ),
+ mnC1( 0 ),
+ mnC2( 0 ),
+ mnC3( 0 ),
+ mnAlpha( MAX_PERCENT )
+{
+}
+
+::Color Color::getDmlPresetColor( sal_Int32 nToken, ::Color nDefaultRgb )
+{
+ /* Do not pass nDefaultRgb to ContainerHelper::getVectorElement(), to be
+ able to catch the existing vector entries without corresponding XML
+ token identifier. */
+ ::Color nRgbValue = ContainerHelper::getVectorElement( StaticPresetColorsPool::get().maDmlColors, nToken, API_RGB_TRANSPARENT );
+ return (sal_Int32(nRgbValue) >= 0) ? nRgbValue : nDefaultRgb;
+}
+
+::Color Color::getVmlPresetColor( sal_Int32 nToken, ::Color nDefaultRgb )
+{
+ /* Do not pass nDefaultRgb to ContainerHelper::getVectorElement(), to be
+ able to catch the existing vector entries without corresponding XML
+ token identifier. */
+ ::Color nRgbValue = ContainerHelper::getVectorElement( StaticPresetColorsPool::get().maVmlColors, nToken, API_RGB_TRANSPARENT );
+ return (sal_Int32(nRgbValue) >= 0) ? nRgbValue : nDefaultRgb;
+}
+
+::Color Color::getHighlightColor(sal_Int32 nToken, ::Color nDefaultRgb)
+{
+ /* Do not pass nDefaultRgb to ContainerHelper::getVectorElement(), to be
+ able to catch the existing vector entries without corresponding XML
+ token identifier. */
+ ::Color nRgbValue = ContainerHelper::getVectorElement( StaticPresetColorsPool::get().maHighlightColors, nToken, API_RGB_TRANSPARENT );
+ return (sal_Int32(nRgbValue) >= 0) ? nRgbValue : nDefaultRgb;
+}
+
+void Color::setUnused()
+{
+ meMode = COLOR_UNUSED;
+}
+
+void Color::setSrgbClr( ::Color nRgb )
+{
+ setSrgbClr(sal_Int32(nRgb));
+}
+
+void Color::setSrgbClr( sal_Int32 nRgb )
+{
+ OSL_ENSURE( (0 <= nRgb) && (nRgb <= 0xFFFFFF), "Color::setSrgbClr - invalid RGB value" );
+ meMode = COLOR_RGB;
+ lclRgbToRgbComponents( mnC1, mnC2, mnC3, ::Color(ColorTransparency, nRgb) );
+}
+
+void Color::setScrgbClr( sal_Int32 nR, sal_Int32 nG, sal_Int32 nB )
+{
+ OSL_ENSURE( (0 <= nR) && (nR <= MAX_PERCENT), "Color::setScrgbClr - invalid red value" );
+ OSL_ENSURE( (0 <= nG) && (nG <= MAX_PERCENT), "Color::setScrgbClr - invalid green value" );
+ OSL_ENSURE( (0 <= nB) && (nB <= MAX_PERCENT), "Color::setScrgbClr - invalid blue value" );
+ meMode = COLOR_CRGB;
+ mnC1 = getLimitedValue< sal_Int32, sal_Int32 >( nR, 0, MAX_PERCENT );
+ mnC2 = getLimitedValue< sal_Int32, sal_Int32 >( nG, 0, MAX_PERCENT );
+ mnC3 = getLimitedValue< sal_Int32, sal_Int32 >( nB, 0, MAX_PERCENT );
+}
+
+void Color::setHslClr( sal_Int32 nHue, sal_Int32 nSat, sal_Int32 nLum )
+{
+ OSL_ENSURE( (0 <= nHue) && (nHue <= MAX_DEGREE), "Color::setHslClr - invalid hue value" );
+ OSL_ENSURE( (0 <= nSat) && (nSat <= MAX_PERCENT), "Color::setHslClr - invalid saturation value" );
+ OSL_ENSURE( (0 <= nLum) && (nLum <= MAX_PERCENT), "Color::setHslClr - invalid luminance value" );
+ meMode = COLOR_HSL;
+ mnC1 = getLimitedValue< sal_Int32, sal_Int32 >( nHue, 0, MAX_DEGREE );
+ mnC2 = getLimitedValue< sal_Int32, sal_Int32 >( nSat, 0, MAX_PERCENT );
+ mnC3 = getLimitedValue< sal_Int32, sal_Int32 >( nLum, 0, MAX_PERCENT );
+}
+
+void Color::setPrstClr( sal_Int32 nToken )
+{
+ ::Color nRgbValue = getDmlPresetColor( nToken, API_RGB_TRANSPARENT );
+ OSL_ENSURE( sal_Int32(nRgbValue) >= 0, "Color::setPrstClr - invalid preset color token" );
+ if( sal_Int32(nRgbValue) >= 0 )
+ setSrgbClr( nRgbValue );
+}
+
+void Color::setHighlight(sal_Int32 nToken)
+{
+ ::Color nRgbValue = getHighlightColor(nToken, API_RGB_TRANSPARENT);
+ OSL_ENSURE( sal_Int32(nRgbValue) >= 0, "Color::setPrstClr - invalid preset color token" );
+ if ( sal_Int32(nRgbValue) >= 0 )
+ setSrgbClr( nRgbValue );
+}
+
+void Color::setSchemeClr( sal_Int32 nToken )
+{
+ OSL_ENSURE( nToken != XML_TOKEN_INVALID, "Color::setSchemeClr - invalid color token" );
+ meMode = (nToken == XML_phClr) ? COLOR_PH : COLOR_SCHEME;
+ mnC1 = nToken;
+}
+
+void Color::setPaletteClr( sal_Int32 nPaletteIdx )
+{
+ OSL_ENSURE( nPaletteIdx >= 0, "Color::setPaletteClr - invalid palette index" );
+ meMode = COLOR_PALETTE;
+ mnC1 = nPaletteIdx;
+}
+
+void Color::setSysClr( sal_Int32 nToken, sal_Int32 nLastRgb )
+{
+ OSL_ENSURE( (-1 <= nLastRgb) && (nLastRgb <= 0xFFFFFF), "Color::setSysClr - invalid RGB value" );
+ meMode = COLOR_SYSTEM;
+ mnC1 = nToken;
+ mnC2 = nLastRgb;
+}
+
+void Color::addTransformation( sal_Int32 nElement, sal_Int32 nValue )
+{
+ /* Execute alpha transformations directly, store other transformations in
+ a vector, they may depend on a scheme base color which will be resolved
+ in Color::getColor(). */
+ sal_Int32 nToken = getBaseToken( nElement );
+ switch( nToken )
+ {
+ case XML_alpha: lclSetValue( mnAlpha, nValue ); break;
+ case XML_alphaMod: lclModValue( mnAlpha, nValue ); break;
+ case XML_alphaOff: lclOffValue( mnAlpha, nValue ); break;
+ default: maTransforms.emplace_back( nToken, nValue );
+ }
+ sal_Int32 nSize = maInteropTransformations.getLength();
+ maInteropTransformations.realloc(nSize + 1);
+ auto pInteropTransformations = maInteropTransformations.getArray();
+ pInteropTransformations[nSize].Name = getColorTransformationName( nToken );
+ pInteropTransformations[nSize].Value <<= nValue;
+}
+
+void Color::addChartTintTransformation( double fTint )
+{
+ sal_Int32 nValue = getLimitedValue< sal_Int32, double >( fTint * MAX_PERCENT + 0.5, -MAX_PERCENT, MAX_PERCENT );
+ if( nValue < 0 )
+ maTransforms.emplace_back( XML_shade, nValue + MAX_PERCENT );
+ else if( nValue > 0 )
+ maTransforms.emplace_back( XML_tint, MAX_PERCENT - nValue );
+}
+
+void Color::addExcelTintTransformation( double fTint )
+{
+ sal_Int32 nValue = getLimitedValue< sal_Int32, double >( fTint * MAX_PERCENT + 0.5, -MAX_PERCENT, MAX_PERCENT );
+ maTransforms.emplace_back( XLS_TOKEN( tint ), nValue );
+}
+
+void Color::clearTransformations()
+{
+ maTransforms.clear();
+ maInteropTransformations.realloc(0);
+ clearTransparence();
+}
+
+OUString Color::getColorTransformationName( sal_Int32 nElement )
+{
+ switch( nElement )
+ {
+ case XML_red: return "red";
+ case XML_redMod: return "redMod";
+ case XML_redOff: return "redOff";
+ case XML_green: return "green";
+ case XML_greenMod: return "greenMod";
+ case XML_greenOff: return "greenOff";
+ case XML_blue: return "blue";
+ case XML_blueMod: return "blueMod";
+ case XML_blueOff: return "blueOff";
+ case XML_alpha: return "alpha";
+ case XML_alphaMod: return "alphaMod";
+ case XML_alphaOff: return "alphaOff";
+ case XML_hue: return "hue";
+ case XML_hueMod: return "hueMod";
+ case XML_hueOff: return "hueOff";
+ case XML_sat: return "sat";
+ case XML_satMod: return "satMod";
+ case XML_satOff: return "satOff";
+ case XML_lum: return "lum";
+ case XML_lumMod: return "lumMod";
+ case XML_lumOff: return "lumOff";
+ case XML_shade: return "shade";
+ case XML_tint: return "tint";
+ case XML_gray: return "gray";
+ case XML_comp: return "comp";
+ case XML_inv: return "inv";
+ case XML_gamma: return "gamma";
+ case XML_invGamma: return "invGamma";
+ }
+ SAL_WARN( "oox.drawingml", "Color::getColorTransformationName - unexpected transformation type" );
+ return OUString();
+}
+
+sal_Int32 Color::getColorTransformationToken( std::u16string_view sName )
+{
+ if( sName == u"red" )
+ return XML_red;
+ else if( sName == u"redMod" )
+ return XML_redMod;
+ else if( sName == u"redOff" )
+ return XML_redOff;
+ else if( sName == u"green" )
+ return XML_green;
+ else if( sName == u"greenMod" )
+ return XML_greenMod;
+ else if( sName == u"greenOff" )
+ return XML_greenOff;
+ else if( sName == u"blue" )
+ return XML_blue;
+ else if( sName == u"blueMod" )
+ return XML_blueMod;
+ else if( sName == u"blueOff" )
+ return XML_blueOff;
+ else if( sName == u"alpha" )
+ return XML_alpha;
+ else if( sName == u"alphaMod" )
+ return XML_alphaMod;
+ else if( sName == u"alphaOff" )
+ return XML_alphaOff;
+ else if( sName == u"hue" )
+ return XML_hue;
+ else if( sName == u"hueMod" )
+ return XML_hueMod;
+ else if( sName == u"hueOff" )
+ return XML_hueOff;
+ else if( sName == u"sat" )
+ return XML_sat;
+ else if( sName == u"satMod" )
+ return XML_satMod;
+ else if( sName == u"satOff" )
+ return XML_satOff;
+ else if( sName == u"lum" )
+ return XML_lum;
+ else if( sName == u"lumMod" )
+ return XML_lumMod;
+ else if( sName == u"lumOff" )
+ return XML_lumOff;
+ else if( sName == u"shade" )
+ return XML_shade;
+ else if( sName == u"tint" )
+ return XML_tint;
+ else if( sName == u"gray" )
+ return XML_gray;
+ else if( sName == u"comp" )
+ return XML_comp;
+ else if( sName == u"inv" )
+ return XML_inv;
+ else if( sName == u"gamma" )
+ return XML_gamma;
+ else if( sName == u"invGamma" )
+ return XML_invGamma;
+
+ SAL_WARN( "oox.drawingml", "Color::getColorTransformationToken - unexpected transformation type" );
+ return XML_TOKEN_INVALID;
+}
+
+bool Color::equals(const Color& rOther, const GraphicHelper& rGraphicHelper, ::Color nPhClr) const
+{
+ if (getColor(rGraphicHelper, nPhClr) != rOther.getColor(rGraphicHelper, nPhClr))
+ return false;
+
+ return getTransparency() == rOther.getTransparency();
+}
+
+void Color::clearTransparence()
+{
+ mnAlpha = MAX_PERCENT;
+}
+
+sal_Int16 Color::getTintOrShade() const
+{
+ for(auto const& aTransform : maTransforms)
+ {
+ switch(aTransform.mnToken)
+ {
+ case XML_tint:
+ // from 1000th percent to 100th percent...
+ return aTransform.mnValue/10;
+ case XML_shade:
+ // from 1000th percent to 100th percent...
+ return -aTransform.mnValue/10;
+ }
+ }
+ return 0;
+}
+
+sal_Int16 Color::getLumMod() const
+{
+ for (const auto& rTransform : maTransforms)
+ {
+ if (rTransform.mnToken != XML_lumMod)
+ {
+ continue;
+ }
+
+ // From 1000th percent to 100th percent.
+ return rTransform.mnValue / 10;
+ }
+
+ return 10000;
+}
+
+sal_Int16 Color::getLumOff() const
+{
+ for (const auto& rTransform : maTransforms)
+ {
+ if (rTransform.mnToken != XML_lumOff)
+ {
+ continue;
+ }
+
+ // From 1000th percent to 100th percent.
+ return rTransform.mnValue / 10;
+ }
+
+ return 0;
+}
+
+::Color Color::getColor( const GraphicHelper& rGraphicHelper, ::Color nPhClr ) const
+{
+ const sal_Int32 nTempC1 = mnC1;
+ const sal_Int32 nTempC2 = mnC2;
+ const sal_Int32 nTempC3 = mnC3;
+ const ColorMode eTempMode = meMode;
+
+ switch( meMode )
+ {
+ case COLOR_UNUSED: mnC1 = sal_Int32(API_RGB_TRANSPARENT); break;
+
+ case COLOR_RGB: break; // nothing to do
+ case COLOR_CRGB: break; // nothing to do
+ case COLOR_HSL: break; // nothing to do
+
+ case COLOR_SCHEME: setResolvedRgb( rGraphicHelper.getSchemeColor( mnC1 ) ); break;
+ case COLOR_PALETTE: setResolvedRgb( rGraphicHelper.getPaletteColor( mnC1 ) ); break;
+ case COLOR_SYSTEM: setResolvedRgb( rGraphicHelper.getSystemColor( mnC1, ::Color(ColorTransparency, mnC2) ) ); break;
+ case COLOR_PH: setResolvedRgb( nPhClr ); break;
+
+ case COLOR_FINAL: return ::Color(ColorTransparency, mnC1);
+ }
+
+ // if color is UNUSED or turns to UNUSED in setResolvedRgb, do not perform transformations
+ if( meMode != COLOR_UNUSED )
+ {
+ for (auto const& transform : maTransforms)
+ {
+ switch( transform.mnToken )
+ {
+ case XML_red: toCrgb(); lclSetValue( mnC1, transform.mnValue ); break;
+ case XML_redMod: toCrgb(); lclModValue( mnC1, transform.mnValue ); break;
+ case XML_redOff: toCrgb(); lclOffValue( mnC1, transform.mnValue ); break;
+ case XML_green: toCrgb(); lclSetValue( mnC2, transform.mnValue ); break;
+ case XML_greenMod: toCrgb(); lclModValue( mnC2, transform.mnValue ); break;
+ case XML_greenOff: toCrgb(); lclOffValue( mnC2, transform.mnValue ); break;
+ case XML_blue: toCrgb(); lclSetValue( mnC3, transform.mnValue ); break;
+ case XML_blueMod: toCrgb(); lclModValue( mnC3, transform.mnValue ); break;
+ case XML_blueOff: toCrgb(); lclOffValue( mnC3, transform.mnValue ); break;
+
+ case XML_hue: toHsl(); lclSetValue( mnC1, transform.mnValue, MAX_DEGREE ); break;
+ case XML_hueMod: toHsl(); lclModValue( mnC1, transform.mnValue, MAX_DEGREE ); break;
+ case XML_hueOff: toHsl(); lclOffValue( mnC1, transform.mnValue, MAX_DEGREE ); break;
+ case XML_sat: toHsl(); lclSetValue( mnC2, transform.mnValue ); break;
+ case XML_satMod: toHsl(); lclModValue( mnC2, transform.mnValue ); break;
+ case XML_satOff: toHsl(); lclOffValue( mnC2, transform.mnValue ); break;
+
+ case XML_lum:
+ toHsl();
+ lclSetValue( mnC3, transform.mnValue );
+ // if color changes to black or white, it will stay gray if luminance changes again
+ if( (mnC3 == 0) || (mnC3 == MAX_PERCENT) ) mnC2 = 0;
+ break;
+ case XML_lumMod:
+ toHsl();
+ lclModValue( mnC3, transform.mnValue );
+ // if color changes to black or white, it will stay gray if luminance changes again
+ if( (mnC3 == 0) || (mnC3 == MAX_PERCENT) ) mnC2 = 0;
+ break;
+ case XML_lumOff:
+ toHsl();
+ lclOffValue( mnC3, transform.mnValue );
+ // if color changes to black or white, it will stay gray if luminance changes again
+ if( (mnC3 == 0) || (mnC3 == MAX_PERCENT) ) mnC2 = 0;
+ break;
+
+ case XML_shade:
+ // shade: 0% = black, 100% = original color
+ toCrgb();
+ OSL_ENSURE( (0 <= transform.mnValue) && (transform.mnValue <= MAX_PERCENT), "Color::getColor - invalid shade value" );
+ if( (0 <= transform.mnValue) && (transform.mnValue <= MAX_PERCENT) )
+ {
+ double fFactor = static_cast< double >( transform.mnValue ) / MAX_PERCENT;
+ mnC1 = static_cast< sal_Int32 >( mnC1 * fFactor );
+ mnC2 = static_cast< sal_Int32 >( mnC2 * fFactor );
+ mnC3 = static_cast< sal_Int32 >( mnC3 * fFactor );
+ }
+ break;
+ case XML_tint:
+ // tint: 0% = white, 100% = original color
+ toCrgb();
+ OSL_ENSURE( (0 <= transform.mnValue) && (transform.mnValue <= MAX_PERCENT), "Color::getColor - invalid tint value" );
+ if( (0 <= transform.mnValue) && (transform.mnValue <= MAX_PERCENT) )
+ {
+ double fFactor = static_cast< double >( transform.mnValue ) / MAX_PERCENT;
+ mnC1 = static_cast< sal_Int32 >( MAX_PERCENT - (MAX_PERCENT - mnC1) * fFactor );
+ mnC2 = static_cast< sal_Int32 >( MAX_PERCENT - (MAX_PERCENT - mnC2) * fFactor );
+ mnC3 = static_cast< sal_Int32 >( MAX_PERCENT - (MAX_PERCENT - mnC3) * fFactor );
+ }
+ break;
+ case XLS_TOKEN( tint ):
+ // Excel tint: move luminance relative to current value
+ toHsl();
+ OSL_ENSURE( (-MAX_PERCENT <= transform.mnValue) && (transform.mnValue <= MAX_PERCENT), "Color::getColor - invalid tint value" );
+ if( (-MAX_PERCENT <= transform.mnValue) && (transform.mnValue < 0) )
+ {
+ // negative: luminance towards 0% (black)
+ lclModValue( mnC3, transform.mnValue + MAX_PERCENT );
+ }
+ else if( (0 < transform.mnValue) && (transform.mnValue <= MAX_PERCENT) )
+ {
+ // positive: luminance towards 100% (white)
+ mnC3 = MAX_PERCENT - mnC3;
+ lclModValue( mnC3, MAX_PERCENT - transform.mnValue );
+ mnC3 = MAX_PERCENT - mnC3;
+ }
+ break;
+
+ case XML_gray:
+ // change color to gray, weighted RGB: 22% red, 72% green, 6% blue
+ toRgb();
+ mnC1 = mnC2 = mnC3 = (mnC1 * 22 + mnC2 * 72 + mnC3 * 6) / 100;
+ break;
+
+ case XML_comp:
+ // comp: rotate hue by 180 degrees, do not change lum/sat
+ toHsl();
+ mnC1 = (mnC1 + (180 * PER_DEGREE)) % MAX_DEGREE;
+ break;
+ case XML_inv:
+ // invert percentual RGB values
+ toCrgb();
+ mnC1 = MAX_PERCENT - mnC1;
+ mnC2 = MAX_PERCENT - mnC2;
+ mnC3 = MAX_PERCENT - mnC3;
+ break;
+
+ case XML_gamma:
+ // increase gamma of color
+ toCrgb();
+ mnC1 = lclGamma( mnC1, INC_GAMMA );
+ mnC2 = lclGamma( mnC2, INC_GAMMA );
+ mnC3 = lclGamma( mnC3, INC_GAMMA );
+ break;
+ case XML_invGamma:
+ // decrease gamma of color
+ toCrgb();
+ mnC1 = lclGamma( mnC1, DEC_GAMMA );
+ mnC2 = lclGamma( mnC2, DEC_GAMMA );
+ mnC3 = lclGamma( mnC3, DEC_GAMMA );
+ break;
+ }
+ }
+
+ // store resulting RGB value in mnC1
+ toRgb();
+ mnC1 = lclRgbComponentsToRgb( mnC1, mnC2, mnC3 );
+ }
+ else // if( meMode != COLOR_UNUSED )
+ {
+ mnC1 = sal_Int32(API_RGB_TRANSPARENT);
+ }
+
+ sal_Int32 nRet = mnC1;
+ // Restore the original values when the color depends on one of the input
+ // parameters (rGraphicHelper or nPhClr)
+ if( eTempMode >= COLOR_SCHEME && eTempMode <= COLOR_PH )
+ {
+ mnC1 = nTempC1;
+ mnC2 = nTempC2;
+ mnC3 = nTempC3;
+ meMode = eTempMode;
+ }
+ else
+ {
+ meMode = COLOR_FINAL;
+ }
+ if( meMode == COLOR_FINAL )
+ maTransforms.clear();
+ return ::Color(ColorTransparency, nRet);
+}
+
+bool Color::hasTransparency() const
+{
+ return mnAlpha < MAX_PERCENT;
+}
+
+sal_Int16 Color::getTransparency() const
+{
+ return sal_Int16(std::round( (1.0 * (MAX_PERCENT - mnAlpha)) / PER_PERCENT) );
+}
+
+sal_Int16 Color::getSchemeColorIndex() const
+{
+ static std::map<OUString, sal_Int32> const aSchemeColorNameToIndex{
+ { "dk1", 0 }, { "lt1", 1 }, { "dk2", 2 }, { "lt2", 3 },
+ { "accent1", 4 }, { "accent2", 5 }, { "accent3", 6 }, { "accent4", 7 },
+ { "accent5", 8 }, { "accent6", 9 }, { "hlink", 10 }, { "folHlink", 11 }
+ };
+
+ auto aIt = aSchemeColorNameToIndex.find(msSchemeName);
+ if( aIt == aSchemeColorNameToIndex.end() )
+ return -1;
+ else
+ return aIt->second;
+}
+
+// private --------------------------------------------------------------------
+
+void Color::setResolvedRgb( ::Color nRgb ) const
+{
+ meMode = (sal_Int32(nRgb) < 0) ? COLOR_UNUSED : COLOR_RGB;
+ lclRgbToRgbComponents( mnC1, mnC2, mnC3, nRgb );
+}
+
+void Color::toRgb() const
+{
+ switch( meMode )
+ {
+ case COLOR_RGB:
+ // nothing to do
+ break;
+ case COLOR_CRGB:
+ meMode = COLOR_RGB;
+ mnC1 = lclCrgbCompToRgbComp( lclGamma( mnC1, INC_GAMMA ) );
+ mnC2 = lclCrgbCompToRgbComp( lclGamma( mnC2, INC_GAMMA ) );
+ mnC3 = lclCrgbCompToRgbComp( lclGamma( mnC3, INC_GAMMA ) );
+ break;
+ case COLOR_HSL:
+ {
+ meMode = COLOR_RGB;
+ double fR = 0.0, fG = 0.0, fB = 0.0;
+ if( (mnC2 == 0) || (mnC3 == MAX_PERCENT) )
+ {
+ fR = fG = fB = static_cast< double >( mnC3 ) / MAX_PERCENT;
+ }
+ else if( mnC3 > 0 )
+ {
+ // base color from hue
+ double fHue = static_cast< double >( mnC1 ) / MAX_DEGREE * 6.0; // interval [0.0, 6.0)
+ if( fHue <= 1.0 ) { fR = 1.0; fG = fHue; } // red...yellow
+ else if( fHue <= 2.0 ) { fR = 2.0 - fHue; fG = 1.0; } // yellow...green
+ else if( fHue <= 3.0 ) { fG = 1.0; fB = fHue - 2.0; } // green...cyan
+ else if( fHue <= 4.0 ) { fG = 4.0 - fHue; fB = 1.0; } // cyan...blue
+ else if( fHue <= 5.0 ) { fR = fHue - 4.0; fB = 1.0; } // blue...magenta
+ else { fR = 1.0; fB = 6.0 - fHue; } // magenta...red
+
+ // apply saturation
+ double fSat = static_cast< double >( mnC2 ) / MAX_PERCENT;
+ fR = (fR - 0.5) * fSat + 0.5;
+ fG = (fG - 0.5) * fSat + 0.5;
+ fB = (fB - 0.5) * fSat + 0.5;
+
+ // apply luminance
+ double fLum = 2.0 * static_cast< double >( mnC3 ) / MAX_PERCENT - 1.0; // interval [-1.0, 1.0]
+ if( fLum < 0.0 )
+ {
+ double fShade = fLum + 1.0; // interval [0.0, 1.0] (black...full color)
+ fR *= fShade;
+ fG *= fShade;
+ fB *= fShade;
+ }
+ else if( fLum > 0.0 )
+ {
+ double fTint = 1.0 - fLum; // interval [0.0, 1.0] (white...full color)
+ fR = 1.0 - ((1.0 - fR) * fTint);
+ fG = 1.0 - ((1.0 - fG) * fTint);
+ fB = 1.0 - ((1.0 - fB) * fTint);
+ }
+ }
+ mnC1 = static_cast< sal_Int32 >( fR * 255.0 + 0.5 );
+ mnC2 = static_cast< sal_Int32 >( fG * 255.0 + 0.5 );
+ mnC3 = static_cast< sal_Int32 >( fB * 255.0 + 0.5 );
+ }
+ break;
+ default:
+ OSL_FAIL( "Color::toRgb - unexpected color mode" );
+ }
+}
+
+void Color::toCrgb() const
+{
+ switch( meMode )
+ {
+ case COLOR_HSL:
+ toRgb();
+ [[fallthrough]];
+ case COLOR_RGB:
+ meMode = COLOR_CRGB;
+ mnC1 = lclGamma( lclRgbCompToCrgbComp( mnC1 ), DEC_GAMMA );
+ mnC2 = lclGamma( lclRgbCompToCrgbComp( mnC2 ), DEC_GAMMA );
+ mnC3 = lclGamma( lclRgbCompToCrgbComp( mnC3 ), DEC_GAMMA );
+ break;
+ case COLOR_CRGB:
+ // nothing to do
+ break;
+ default:
+ OSL_FAIL( "Color::toCrgb - unexpected color mode" );
+ }
+}
+
+void Color::toHsl() const
+{
+ switch( meMode )
+ {
+ case COLOR_CRGB:
+ toRgb();
+ [[fallthrough]];
+ case COLOR_RGB:
+ {
+ meMode = COLOR_HSL;
+ double fR = static_cast< double >( mnC1 ) / 255.0; // red [0.0, 1.0]
+ double fG = static_cast< double >( mnC2 ) / 255.0; // green [0.0, 1.0]
+ double fB = static_cast< double >( mnC3 ) / 255.0; // blue [0.0, 1.0]
+ double fMin = ::std::min( ::std::min( fR, fG ), fB );
+ double fMax = ::std::max( ::std::max( fR, fG ), fB );
+ double fD = fMax - fMin;
+
+ using ::rtl::math::approxEqual;
+
+ // hue: 0deg = red, 120deg = green, 240deg = blue
+ if( fD == 0.0 ) // black/gray/white
+ mnC1 = 0;
+ else if( approxEqual(fMax, fR, 64) ) // magenta...red...yellow
+ mnC1 = static_cast< sal_Int32 >( ((fG - fB) / fD * 60.0 + 360.0) * PER_DEGREE + 0.5 ) % MAX_DEGREE;
+ else if( approxEqual(fMax, fG, 64) ) // yellow...green...cyan
+ mnC1 = static_cast< sal_Int32 >( ((fB - fR) / fD * 60.0 + 120.0) * PER_DEGREE + 0.5 );
+ else // cyan...blue...magenta
+ mnC1 = static_cast< sal_Int32 >( ((fR - fG) / fD * 60.0 + 240.0) * PER_DEGREE + 0.5 );
+
+ // luminance: 0% = black, 50% = full color, 100% = white
+ mnC3 = static_cast< sal_Int32 >( (fMin + fMax) / 2.0 * MAX_PERCENT + 0.5 );
+
+ // saturation: 0% = gray, 100% = full color
+ if( (mnC3 == 0) || (mnC3 == MAX_PERCENT) ) // black/white
+ mnC2 = 0;
+ else if( mnC3 <= 50 * PER_PERCENT ) // dark...full color
+ mnC2 = static_cast< sal_Int32 >( fD / (fMin + fMax) * MAX_PERCENT + 0.5 );
+ else // full color...light
+ mnC2 = static_cast< sal_Int32 >( fD / (2.0 - fMax - fMin) * MAX_PERCENT + 0.5 );
+ }
+ break;
+ case COLOR_HSL:
+ // nothing to do
+ break;
+ default:
+ OSL_FAIL( "Color::toHsl - unexpected color mode" );
+ }
+}
+
+} // namespace oox
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/oox/source/drawingml/colorchoicecontext.cxx b/oox/source/drawingml/colorchoicecontext.cxx
new file mode 100644
index 000000000..fc93b460a
--- /dev/null
+++ b/oox/source/drawingml/colorchoicecontext.cxx
@@ -0,0 +1,178 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ *
+ * This file incorporates work covered by the following license notice:
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed
+ * with this work for additional information regarding copyright
+ * ownership. The ASF licenses this file to you under the Apache
+ * License, Version 2.0 (the "License"); you may not use this file
+ * except in compliance with the License. You may obtain a copy of
+ * the License at http://www.apache.org/licenses/LICENSE-2.0 .
+ */
+
+#include <oox/drawingml/drawingmltypes.hxx>
+#include <drawingml/colorchoicecontext.hxx>
+#include <oox/helper/attributelist.hxx>
+#include <oox/drawingml/color.hxx>
+#include <oox/token/namespaces.hxx>
+#include <oox/token/tokens.hxx>
+
+namespace oox::drawingml {
+
+ColorValueContext::ColorValueContext( ContextHandler2Helper const & rParent, Color& rColor ) :
+ ContextHandler2( rParent ),
+ mrColor( rColor )
+{
+}
+
+void ColorValueContext::onStartElement( const AttributeList& rAttribs )
+{
+ switch( getCurrentElement() )
+ {
+ case A_TOKEN( scrgbClr ):
+ mrColor.setScrgbClr(
+ rAttribs.getInteger( XML_r, 0 ),
+ rAttribs.getInteger( XML_g, 0 ),
+ rAttribs.getInteger( XML_b, 0 ) );
+ break;
+
+ case A_TOKEN( srgbClr ):
+ mrColor.setSrgbClr( rAttribs.getIntegerHex( XML_val, 0 ) );
+ break;
+
+ case A_TOKEN( hslClr ):
+ mrColor.setHslClr(
+ rAttribs.getInteger( XML_hue, 0 ),
+ rAttribs.getInteger( XML_sat, 0 ),
+ rAttribs.getInteger( XML_lum, 0 ) );
+ break;
+
+ case A_TOKEN( sysClr ):
+ mrColor.setSysClr(
+ rAttribs.getToken( XML_val, XML_TOKEN_INVALID ),
+ rAttribs.getIntegerHex( XML_lastClr, -1 ) );
+ break;
+
+ case A_TOKEN( schemeClr ):
+ {
+ mrColor.setSchemeClr( rAttribs.getToken( XML_val, XML_TOKEN_INVALID ) );
+ oox::OptValue<OUString> sSchemeName = rAttribs.getString( XML_val );
+ if( sSchemeName.has() )
+ mrColor.setSchemeName( sSchemeName.use() );
+ }
+ break;
+
+ case A_TOKEN( prstClr ):
+ mrColor.setPrstClr( rAttribs.getToken( XML_val, XML_TOKEN_INVALID ) );
+ break;
+ }
+}
+
+::oox::core::ContextHandlerRef ColorValueContext::onCreateContext(
+ sal_Int32 nElement, const AttributeList& rAttribs )
+{
+ switch( nElement )
+ {
+ case A_TOKEN( alpha ):
+ case A_TOKEN( alphaMod ):
+ case A_TOKEN( alphaOff ):
+ case A_TOKEN( blue ):
+ case A_TOKEN( blueMod ):
+ case A_TOKEN( blueOff ):
+ case A_TOKEN( hue ):
+ case A_TOKEN( hueMod ):
+ case A_TOKEN( hueOff ):
+ case A_TOKEN( lum ):
+ case A_TOKEN( lumMod ):
+ case A_TOKEN( lumOff ):
+ case A_TOKEN( green ):
+ case A_TOKEN( greenMod ):
+ case A_TOKEN( greenOff ):
+ case A_TOKEN( red ):
+ case A_TOKEN( redMod ):
+ case A_TOKEN( redOff ):
+ case A_TOKEN( sat ):
+ case A_TOKEN( satMod ):
+ case A_TOKEN( satOff ):
+ case A_TOKEN( shade ):
+ case A_TOKEN( tint ):
+ {
+ OUString aValue = rAttribs.getString( XML_val, OUString() );
+ sal_Int32 nVal = 0;
+ if (aValue.endsWith("%"))
+ {
+ nVal = aValue.toDouble() * PER_PERCENT;
+ }
+ else
+ nVal = rAttribs.getInteger(XML_val, 0);
+ mrColor.addTransformation( nElement, nVal );
+ }
+ break;
+ case A_TOKEN( comp ):
+ case A_TOKEN( gamma ):
+ case A_TOKEN( gray ):
+ case A_TOKEN( inv ):
+ case A_TOKEN( invGamma ):
+ mrColor.addTransformation( nElement );
+ break;
+ }
+ return nullptr;
+}
+
+ColorContext::ColorContext( ContextHandler2Helper const & rParent, Color& rColor ) :
+ ContextHandler2( rParent ),
+ mrColor( rColor )
+{
+}
+
+::oox::core::ContextHandlerRef ColorContext::onCreateContext(
+ sal_Int32 nElement, const AttributeList& )
+{
+ switch( nElement )
+ {
+ case A_TOKEN( scrgbClr ):
+ case A_TOKEN( srgbClr ):
+ case A_TOKEN( hslClr ):
+ case A_TOKEN( sysClr ):
+ case A_TOKEN( schemeClr ):
+ case A_TOKEN( prstClr ):
+ return new ColorValueContext( *this, mrColor );
+ }
+ return nullptr;
+}
+
+ColorsContext::ColorsContext(ContextHandler2Helper const& rParent, std::vector<Color>& rColors)
+ : ContextHandler2(rParent)
+ , mrColors(rColors)
+{
+}
+
+::oox::core::ContextHandlerRef ColorsContext::onCreateContext(sal_Int32 nElement,
+ const AttributeList&)
+{
+ switch (nElement)
+ {
+ case A_TOKEN(scrgbClr):
+ case A_TOKEN(srgbClr):
+ case A_TOKEN(hslClr):
+ case A_TOKEN(sysClr):
+ case A_TOKEN(schemeClr):
+ case A_TOKEN(prstClr):
+ {
+ mrColors.emplace_back();
+ return new ColorValueContext(*this, mrColors.back());
+ }
+ }
+ return nullptr;
+}
+
+} // namespace oox::drawingml
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/oox/source/drawingml/connectorshapecontext.cxx b/oox/source/drawingml/connectorshapecontext.cxx
new file mode 100644
index 000000000..b1ea90c35
--- /dev/null
+++ b/oox/source/drawingml/connectorshapecontext.cxx
@@ -0,0 +1,128 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ *
+ * This file incorporates work covered by the following license notice:
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed
+ * with this work for additional information regarding copyright
+ * ownership. The ASF licenses this file to you under the Apache
+ * License, Version 2.0 (the "License"); you may not use this file
+ * except in compliance with the License. You may obtain a copy of
+ * the License at http://www.apache.org/licenses/LICENSE-2.0 .
+ */
+
+#include <com/sun/star/xml/sax/FastToken.hpp>
+#include <com/sun/star/beans/XMultiPropertySet.hpp>
+
+#include <oox/drawingml/connectorshapecontext.hxx>
+#include <oox/drawingml/drawingmltypes.hxx>
+#include <oox/drawingml/shape.hxx>
+#include <oox/helper/attributelist.hxx>
+#include <oox/token/namespaces.hxx>
+#include <oox/token/tokens.hxx>
+
+using namespace oox::core;
+using namespace ::com::sun::star;
+using namespace ::com::sun::star::uno;
+using namespace ::com::sun::star::drawing;
+using namespace ::com::sun::star::beans;
+using namespace ::com::sun::star::xml::sax;
+
+namespace oox::drawingml {
+
+namespace
+{
+class ConnectorShapePropertiesContext : public ::oox::core::ContextHandler2
+{
+ std::vector<ConnectorShapeProperties>& mrConnectorShapePropertiesList;
+ ShapePtr mpConnectorShapePtr;
+
+public:
+ ConnectorShapePropertiesContext(
+ ::oox::core::ContextHandler2Helper const& rParent, ShapePtr& pShapePtr,
+ std::vector<ConnectorShapeProperties>& rConnectorShapePropertiesList);
+
+ virtual ::oox::core::ContextHandlerRef onCreateContext(sal_Int32 aElementToken,
+ const AttributeList& rAttribs) override;
+};
+}
+
+ConnectorShapePropertiesContext::ConnectorShapePropertiesContext(
+ ContextHandler2Helper const& rParent, ShapePtr& pShapePtr,
+ std::vector<ConnectorShapeProperties>& rConnectorShapePropertiesList)
+ : ContextHandler2(rParent)
+ , mrConnectorShapePropertiesList(rConnectorShapePropertiesList)
+ , mpConnectorShapePtr(pShapePtr)
+{
+ mpConnectorShapePtr->setConnectorShape(true);
+}
+
+::oox::core::ContextHandlerRef
+ConnectorShapePropertiesContext::onCreateContext(sal_Int32 aElementToken,
+ const AttributeList& rAttribs)
+{
+ switch (getBaseToken(aElementToken))
+ {
+ case XML_cNvPr:
+ mpConnectorShapePtr->setId(rAttribs.getString(XML_id).get());
+ mpConnectorShapePtr->setName(rAttribs.getString(XML_name).get());
+ break;
+ case XML_stCxn:
+ {
+ ConnectorShapeProperties aConnectorShapeProps;
+ aConnectorShapeProps.mbStartShape = true;
+ aConnectorShapeProps.maDestShapeId = rAttribs.getString(XML_id).get();
+ aConnectorShapeProps.mnDestGlueId = rAttribs.getInteger(XML_idx).get();
+ mrConnectorShapePropertiesList.push_back(aConnectorShapeProps);
+ break;
+ }
+ case XML_endCxn:
+ {
+ ConnectorShapeProperties aConnectorShapeProps;
+ aConnectorShapeProps.mbStartShape = false;
+ aConnectorShapeProps.maDestShapeId = rAttribs.getString(XML_id).get();
+ aConnectorShapeProps.mnDestGlueId = rAttribs.getInteger(XML_idx).get();
+ mrConnectorShapePropertiesList.push_back(aConnectorShapeProps);
+ break;
+ }
+ default:
+ break;
+ }
+
+ return this;
+}
+
+ConnectorShapeContext::ConnectorShapeContext(
+ ContextHandler2Helper const& rParent, const ShapePtr& pMasterShapePtr,
+ const ShapePtr& pGroupShapePtr,
+ std::vector<ConnectorShapeProperties>& rConnectorShapePropertiesList)
+ : ShapeContext(rParent, pMasterShapePtr, pGroupShapePtr)
+ , mrConnectorShapePropertiesList(rConnectorShapePropertiesList)
+ , mpConnectorShapePtr(pGroupShapePtr)
+{
+}
+
+ConnectorShapeContext::~ConnectorShapeContext() {}
+
+ContextHandlerRef ConnectorShapeContext::onCreateContext(sal_Int32 aElementToken,
+ const AttributeList& rAttribs)
+{
+ switch (getBaseToken(aElementToken))
+ {
+ case XML_nvCxnSpPr:
+ return new ConnectorShapePropertiesContext(*this, mpConnectorShapePtr,
+ mrConnectorShapePropertiesList);
+ }
+
+ return ShapeContext::onCreateContext(aElementToken, rAttribs);
+}
+
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/oox/source/drawingml/customshapegeometry.cxx b/oox/source/drawingml/customshapegeometry.cxx
new file mode 100644
index 000000000..2f508382c
--- /dev/null
+++ b/oox/source/drawingml/customshapegeometry.cxx
@@ -0,0 +1,1296 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ *
+ * This file incorporates work covered by the following license notice:
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed
+ * with this work for additional information regarding copyright
+ * ownership. The ASF licenses this file to you under the Apache
+ * License, Version 2.0 (the "License"); you may not use this file
+ * except in compliance with the License. You may obtain a copy of
+ * the License at http://www.apache.org/licenses/LICENSE-2.0 .
+ */
+
+#include <drawingml/customshapegeometry.hxx>
+#include <drawingml/customshapeproperties.hxx>
+
+#include <com/sun/star/drawing/EnhancedCustomShapeParameterType.hpp>
+#include <com/sun/star/drawing/EnhancedCustomShapeSegmentCommand.hpp>
+#include <com/sun/star/xml/sax/FastToken.hpp>
+#include <osl/diagnose.h>
+#include <sal/log.hxx>
+#include <o3tl/string_view.hxx>
+#include <oox/helper/helper.hxx>
+#include <oox/helper/attributelist.hxx>
+#include <oox/token/namespaces.hxx>
+#include <oox/token/tokens.hxx>
+#include <unordered_map>
+
+using namespace ::oox::core;
+using namespace ::com::sun::star::uno;
+using namespace ::com::sun::star::drawing;
+using namespace ::com::sun::star::xml::sax;
+
+namespace oox::drawingml {
+
+namespace {
+
+enum FormulaCommand
+{
+ FC_MULDIV = 0,
+ FC_PLUSMINUS,
+ FC_PLUSDIV,
+ FC_IFELSE,
+ FC_IFELSE1,
+ FC_ABS,
+ FC_AT2,
+ FC_CAT2,
+ FC_COS,
+ FC_MAX,
+ FC_MIN,
+ FC_MOD,
+ FC_PIN,
+ FC_SAT2,
+ FC_SIN,
+ FC_SQRT,
+ FC_TAN,
+ FC_VAL
+};
+
+struct FormulaCommandNameTable
+{
+ const char* pS;
+ FormulaCommand pE;
+};
+
+}
+
+const FormulaCommandNameTable pFormulaCommandNameTable[] =
+{
+ { "*/", FC_MULDIV },
+ { "+-", FC_PLUSMINUS },
+ { "+/", FC_PLUSDIV },
+ { "ifelse", FC_IFELSE },
+ { "?:", FC_IFELSE1 },
+ { "abs", FC_ABS },
+ { "at2", FC_AT2 },
+ { "cat2", FC_CAT2 },
+ { "cos", FC_COS },
+ { "max", FC_MAX },
+ { "min", FC_MIN },
+ { "mod", FC_MOD },
+ { "pin", FC_PIN },
+ { "sat2", FC_SAT2 },
+ { "sin", FC_SIN },
+ { "sqrt", FC_SQRT },
+ { "tan", FC_TAN },
+ { "val", FC_VAL }
+
+};
+typedef std::unordered_map< OUString, FormulaCommand > FormulaCommandHMap;
+
+static const FormulaCommandHMap* pCommandHashMap;
+
+static OUString GetFormulaParameter( const EnhancedCustomShapeParameter& rParameter )
+{
+ OUString aRet;
+ switch( rParameter.Type )
+ {
+ case EnhancedCustomShapeParameterType::NORMAL :
+ {
+ if ( rParameter.Value.getValueTypeClass() == TypeClass_DOUBLE )
+ {
+ double fValue = 0.0;
+ if ( rParameter.Value >>= fValue )
+ aRet = OUString::number( fValue );
+ }
+ else
+ {
+ sal_Int32 nValue = 0;
+ if ( rParameter.Value >>= nValue )
+ aRet = OUString::number( nValue );
+ }
+ }
+ break;
+ case EnhancedCustomShapeParameterType::EQUATION :
+ {
+ if ( rParameter.Value.getValueTypeClass() == TypeClass_LONG )
+ {
+ sal_Int32 nFormulaIndex;
+ if ( rParameter.Value >>= nFormulaIndex )
+ {
+ aRet = "?"
+ + OUString::number( nFormulaIndex )
+ + " ";
+ }
+ }
+ else
+ {
+ // ups... we should have an index here and not the formula name
+ }
+ }
+ break;
+ case EnhancedCustomShapeParameterType::ADJUSTMENT :
+ {
+ if ( rParameter.Value.getValueTypeClass() == TypeClass_LONG )
+ {
+ sal_Int32 nAdjustmentIndex;
+ if ( rParameter.Value >>= nAdjustmentIndex )
+ {
+ aRet = "$"
+ + OUString::number( nAdjustmentIndex )
+ + " ";
+ }
+ }
+ else
+ {
+ // ups... we should have an index here and not the formula name
+ }
+ }
+ break;
+ case EnhancedCustomShapeParameterType::LEFT :
+ aRet = "left";
+ break;
+ case EnhancedCustomShapeParameterType::TOP :
+ aRet = "top";
+ break;
+ case EnhancedCustomShapeParameterType::RIGHT :
+ aRet = "right";
+ break;
+ case EnhancedCustomShapeParameterType::BOTTOM :
+ aRet = "bottom";
+ break;
+ case EnhancedCustomShapeParameterType::XSTRETCH :
+ aRet = "xstretch";
+ break;
+ case EnhancedCustomShapeParameterType::YSTRETCH :
+ aRet = "ystretch";
+ break;
+ case EnhancedCustomShapeParameterType::HASSTROKE :
+ aRet = "hasstroke";
+ break;
+ case EnhancedCustomShapeParameterType::HASFILL :
+ aRet = "hasfill";
+ break;
+ case EnhancedCustomShapeParameterType::WIDTH :
+ aRet = "width";
+ break;
+ case EnhancedCustomShapeParameterType::HEIGHT :
+ aRet = "height";
+ break;
+ case EnhancedCustomShapeParameterType::LOGWIDTH :
+ aRet = "logwidth";
+ break;
+ case EnhancedCustomShapeParameterType::LOGHEIGHT :
+ aRet = "logheight";
+ break;
+ }
+ return aRet;
+}
+
+static EnhancedCustomShapeParameter GetAdjCoordinate( CustomShapeProperties& rCustomShapeProperties, const OUString& rValue, bool bNoSymbols = true )
+{
+ css::drawing::EnhancedCustomShapeParameter aRet;
+ if ( !rValue.isEmpty() )
+ {
+ bool bConstant = true;
+ sal_Int32 nConstant = -1;
+ sal_Int32 nIntVal = 0;
+
+ // first check if it's a constant value
+ switch( AttributeConversion::decodeToken( rValue ) )
+ {
+ case XML_3cd4 : nConstant = 270 * 60000; break;
+ case XML_3cd8 : nConstant = 135 * 60000; break;
+ case XML_5cd8 : nConstant = 225 * 60000; break;
+ case XML_7cd8 : nConstant = 315 * 60000; break;
+ case XML_cd2 : nConstant = 180 * 60000; break;
+ case XML_cd3 : nConstant = 120 * 60000; break;
+ case XML_cd4 : nConstant = 90 * 60000; break;
+ case XML_cd8 : nConstant = 45 * 60000; break;
+
+ case XML_b : // variable height of the shape defined in spPr
+ case XML_h :
+ {
+ if ( bNoSymbols )
+ {
+ CustomShapeGuide aGuide;
+ aGuide.maName = rValue;
+ aGuide.maFormula = "logheight" ;
+
+ aRet.Value <<= CustomShapeProperties::SetCustomShapeGuideValue( rCustomShapeProperties.getGuideList(), aGuide );
+ aRet.Type = EnhancedCustomShapeParameterType::EQUATION;
+ }
+ else
+ aRet.Type = EnhancedCustomShapeParameterType::LOGHEIGHT; // TODO: HEIGHT needs to be implemented
+ }
+ break;
+
+ case XML_hd10 :
+ nIntVal += 2; // */ h 1.0 10.0
+ [[fallthrough]];
+ case XML_hd8 : // */ h 1.0 8.0
+ nIntVal += 2;
+ [[fallthrough]];
+ case XML_hd6 : // */ h 1.0 6.0
+ nIntVal++;
+ [[fallthrough]];
+ case XML_hd5 : // */ h 1.0 5.0
+ nIntVal++;
+ [[fallthrough]];
+ case XML_hd4 : // */ h 1.0 4.0
+ nIntVal++;
+ [[fallthrough]];
+ case XML_hd3 : // */ h 1.0 3.0
+ nIntVal++;
+ [[fallthrough]];
+ case XML_hd2 : // */ h 1.0 2.0
+ case XML_vc : // */ h 1.0 2.0
+ {
+ nIntVal += 2;
+
+ CustomShapeGuide aGuide;
+ aGuide.maName = rValue;
+ aGuide.maFormula = "logheight/" + OUString::number( nIntVal );
+
+ aRet.Value <<= CustomShapeProperties::SetCustomShapeGuideValue( rCustomShapeProperties.getGuideList(), aGuide );
+ aRet.Type = EnhancedCustomShapeParameterType::EQUATION;
+ }
+ break;
+
+ case XML_t :
+ case XML_l :
+ {
+ nConstant = 0;
+ aRet.Type = EnhancedCustomShapeParameterType::NORMAL;
+ }
+ break;
+
+ case XML_ls : // longest side: max w h
+ {
+ CustomShapeGuide aGuide;
+ aGuide.maName = rValue;
+ aGuide.maFormula = "max(logwidth,logheight)";
+
+ aRet.Value <<= CustomShapeProperties::SetCustomShapeGuideValue( rCustomShapeProperties.getGuideList(), aGuide );
+ aRet.Type = EnhancedCustomShapeParameterType::EQUATION;
+ }
+ break;
+ case XML_ss : // shortest side: min w h
+ {
+ CustomShapeGuide aGuide;
+ aGuide.maName = rValue;
+ aGuide.maFormula = "min(logwidth,logheight)";
+
+ aRet.Value <<= CustomShapeProperties::SetCustomShapeGuideValue( rCustomShapeProperties.getGuideList(), aGuide );
+ aRet.Type = EnhancedCustomShapeParameterType::EQUATION;
+ }
+ break;
+ case XML_ssd32 : // */ ss 1.0 32.0
+ nIntVal += 16;
+ [[fallthrough]];
+ case XML_ssd16 : // */ ss 1.0 16.0
+ nIntVal += 8;
+ [[fallthrough]];
+ case XML_ssd8 : // */ ss 1.0 8.0
+ nIntVal += 2;
+ [[fallthrough]];
+ case XML_ssd6 : // */ ss 1.0 6.0
+ nIntVal += 2;
+ [[fallthrough]];
+ case XML_ssd4 : // */ ss 1.0 4.0
+ nIntVal += 2;
+ [[fallthrough]];
+ case XML_ssd2 : // */ ss 1.0 2.0
+ {
+ nIntVal += 2;
+
+ CustomShapeGuide aGuide;
+ aGuide.maName = rValue;
+ aGuide.maFormula = "min(logwidth,logheight)/" + OUString::number( nIntVal );
+
+ aRet.Value <<= CustomShapeProperties::SetCustomShapeGuideValue( rCustomShapeProperties.getGuideList(), aGuide );
+ aRet.Type = EnhancedCustomShapeParameterType::EQUATION;
+ }
+ break;
+
+ case XML_r : // variable width of the shape defined in spPr
+ case XML_w :
+ {
+ if ( bNoSymbols )
+ {
+ CustomShapeGuide aGuide;
+ aGuide.maName = rValue;
+ aGuide.maFormula = "logwidth" ;
+
+ aRet.Value <<= CustomShapeProperties::SetCustomShapeGuideValue( rCustomShapeProperties.getGuideList(), aGuide );
+ aRet.Type = EnhancedCustomShapeParameterType::EQUATION;
+ }
+ else
+ aRet.Type = EnhancedCustomShapeParameterType::LOGWIDTH;
+ }
+ break;
+
+ case XML_wd32 : // */ w 1.0 32.0
+ nIntVal += 20;
+ [[fallthrough]];
+ case XML_wd12 : // */ w 1.0 12.0
+ nIntVal += 2;
+ [[fallthrough]];
+ case XML_wd10 : // */ w 1.0 10.0
+ nIntVal += 2;
+ [[fallthrough]];
+ case XML_wd8 : // */ w 1.0 8.0
+ nIntVal += 2;
+ [[fallthrough]];
+ case XML_wd6 : // */ w 1.0 6.0
+ nIntVal++;
+ [[fallthrough]];
+ case XML_wd5 : // */ w 1.0 5.0
+ nIntVal++;
+ [[fallthrough]];
+ case XML_wd4 : // */ w 1.0 4.0
+ nIntVal++;
+ [[fallthrough]];
+ case XML_wd3 : // */ w 1.0 3.0
+ nIntVal++;
+ [[fallthrough]];
+ case XML_hc : // */ w 1.0 2.0
+ case XML_wd2 : // */ w 1.0 2.0
+ {
+ nIntVal += 2;
+
+ CustomShapeGuide aGuide;
+ aGuide.maName = rValue;
+ aGuide.maFormula = "logwidth/" + OUString::number( nIntVal );
+
+ aRet.Value <<= CustomShapeProperties::SetCustomShapeGuideValue( rCustomShapeProperties.getGuideList(), aGuide );
+ aRet.Type = EnhancedCustomShapeParameterType::EQUATION;
+ }
+ break;
+
+ default:
+ bConstant = false;
+ break;
+ }
+ if ( bConstant )
+ {
+ if (nConstant != -1) {
+ aRet.Value <<= nConstant;
+ aRet.Type = EnhancedCustomShapeParameterType::NORMAL;
+ }
+ }
+ else
+ {
+ sal_Unicode n = rValue[ 0 ];
+ if ( ( n == '+' ) || ( n == '-' ) )
+ {
+ if ( rValue.getLength() > 1 )
+ n = rValue[ 1 ];
+ }
+ if ( ( n >= '0' ) && ( n <= '9' ) )
+ { // seems to be a ST_Coordinate
+ aRet.Value <<= rValue.toInt32();
+ aRet.Type = EnhancedCustomShapeParameterType::NORMAL;
+ }
+ else
+ {
+ sal_Int32 nGuideIndex = CustomShapeProperties::GetCustomShapeGuideValue( rCustomShapeProperties.getAdjustmentGuideList(), rValue );
+ if ( nGuideIndex >= 0 )
+ {
+ aRet.Value <<= nGuideIndex;
+ aRet.Type = EnhancedCustomShapeParameterType::ADJUSTMENT;
+ }
+ else
+ {
+ nGuideIndex = CustomShapeProperties::GetCustomShapeGuideValue( rCustomShapeProperties.getGuideList(), rValue );
+ if ( nGuideIndex >= 0 )
+ {
+ aRet.Value <<= nGuideIndex;
+ aRet.Type = EnhancedCustomShapeParameterType::EQUATION;
+ }
+ else
+ {
+ SAL_WARN("oox", "error: unhandled value " << rValue);
+ aRet.Value <<= rValue;
+ }
+ }
+ }
+ }
+ }
+ return aRet;
+}
+
+namespace {
+
+// CT_GeomGuideList
+class GeomGuideListContext : public ContextHandler2
+{
+public:
+ GeomGuideListContext( ContextHandler2Helper const & rParent, CustomShapeProperties& rCustomShapeProperties, std::vector< CustomShapeGuide >& rGuideList );
+ virtual ::oox::core::ContextHandlerRef onCreateContext( sal_Int32 aElementToken, const ::oox::AttributeList& rAttribs ) override;
+
+protected:
+ std::vector< CustomShapeGuide >& mrGuideList;
+ CustomShapeProperties& mrCustomShapeProperties;
+};
+
+}
+
+GeomGuideListContext::GeomGuideListContext( ContextHandler2Helper const & rParent, CustomShapeProperties& rCustomShapeProperties, std::vector< CustomShapeGuide >& rGuideList )
+: ContextHandler2( rParent )
+, mrGuideList( rGuideList )
+, mrCustomShapeProperties( rCustomShapeProperties )
+{
+}
+
+static OUString convertToOOEquation( CustomShapeProperties& rCustomShapeProperties, std::u16string_view rSource )
+{
+ if ( !pCommandHashMap )
+ {
+ FormulaCommandHMap* pHM = new FormulaCommandHMap;
+ for(const FormulaCommandNameTable& i : pFormulaCommandNameTable)
+ (*pHM)[ OUString::createFromAscii( i.pS ) ] = i.pE;
+ pCommandHashMap = pHM;
+ }
+
+ std::vector< OUString > aTokens;
+ sal_Int32 nIndex = 0;
+ do
+ {
+ OUString aToken( o3tl::getToken(rSource, 0, ' ', nIndex ) );
+ if ( !aToken.isEmpty() )
+ aTokens.push_back( aToken );
+ }
+ while ( nIndex >= 0 );
+
+ OUString aEquation;
+ if ( !aTokens.empty() )
+ {
+ sal_Int32 i, nParameters = aTokens.size() - 1;
+ if ( nParameters > 3 )
+ nParameters = 3;
+
+ OUString sParameters[ 3 ];
+
+ for ( i = 0; i < nParameters; i++ )
+ sParameters[ i ] = GetFormulaParameter( GetAdjCoordinate( rCustomShapeProperties, aTokens[ i + 1 ], false ) );
+
+ const FormulaCommandHMap::const_iterator aIter( pCommandHashMap->find( aTokens[ 0 ] ) );
+ if ( aIter != pCommandHashMap->end() )
+ {
+ switch( aIter->second )
+ {
+ case FC_MULDIV :
+ {
+ if ( nParameters == 3 )
+ aEquation = sParameters[ 0 ] + "*" + sParameters[ 1 ]
+ + "/" + sParameters[ 2 ];
+ }
+ break;
+ case FC_PLUSMINUS :
+ {
+ if ( nParameters == 3 )
+ aEquation = sParameters[ 0 ] + "+" + sParameters[ 1 ]
+ + "-" + sParameters[ 2 ];
+ }
+ break;
+ case FC_PLUSDIV :
+ {
+ if ( nParameters == 3 )
+ aEquation = "(" + sParameters[ 0 ] + "+"
+ + sParameters[ 1 ] + ")/" + sParameters[ 2 ];
+ }
+ break;
+ case FC_IFELSE :
+ case FC_IFELSE1 :
+ {
+ if ( nParameters == 3 )
+ aEquation = "if(" + sParameters[ 0 ] + ","
+ + sParameters[ 1 ] + "," + sParameters[ 2 ] + ")";
+ }
+ break;
+ case FC_ABS :
+ {
+ if ( nParameters == 1 )
+ aEquation = "abs(" + sParameters[ 0 ] + ")";
+ }
+ break;
+ case FC_AT2 :
+ {
+ if ( nParameters == 2 )
+ aEquation = "(10800000*atan2(" + sParameters[ 1 ] + ","
+ + sParameters[ 0 ] + "))/pi";
+ }
+ break;
+ case FC_CAT2 :
+ {
+ if ( nParameters == 3 )
+ aEquation = sParameters[ 0 ] + "*(cos(atan2(" +
+ sParameters[ 2 ] + "," + sParameters[ 1 ] + ")))";
+ }
+ break;
+ case FC_COS :
+ {
+ if ( nParameters == 2 )
+ aEquation = sParameters[ 0 ] + "*cos(pi*(" +
+ sParameters[ 1 ] + ")/10800000)";
+ }
+ break;
+ case FC_MAX :
+ {
+ if ( nParameters == 2 )
+ aEquation = "max(" + sParameters[ 0 ] + "," +
+ sParameters[ 1 ] + ")";
+ }
+ break;
+ case FC_MIN :
+ {
+ if ( nParameters == 2 )
+ aEquation = "min(" + sParameters[ 0 ] + "," +
+ sParameters[ 1 ] + ")";
+ }
+ break;
+ case FC_MOD :
+ {
+ if ( nParameters == 3 )
+ aEquation = "sqrt("
+ + sParameters[ 0 ] + "*" + sParameters[ 0 ] + "+"
+ + sParameters[ 1 ] + "*" + sParameters[ 1 ] + "+"
+ + sParameters[ 2 ] + "*" + sParameters[ 2 ] + ")";
+ }
+ break;
+ case FC_PIN :
+ {
+ if ( nParameters == 3 ) // if(x-y,x,if(y-z,z,y))
+ aEquation = "if(" + sParameters[ 0 ] + "-" + sParameters[ 1 ]
+ + "," + sParameters[ 0 ] + ",if(" + sParameters[ 2 ]
+ + "-" + sParameters[ 1 ] + "," + sParameters[ 1 ]
+ + "," + sParameters[ 2 ] + "))";
+ }
+ break;
+ case FC_SAT2 :
+ {
+ if ( nParameters == 3 )
+ aEquation = sParameters[ 0 ] + "*(sin(atan2(" +
+ sParameters[ 2 ] + "," + sParameters[ 1 ] + ")))";
+ }
+ break;
+ case FC_SIN :
+ {
+ if ( nParameters == 2 )
+ aEquation = sParameters[ 0 ] + "*sin(pi*(" +
+ sParameters[ 1 ] + ")/10800000)";
+ }
+ break;
+ case FC_SQRT :
+ {
+ if ( nParameters == 1 )
+ aEquation = "sqrt(" + sParameters[ 0 ] + ")";
+ }
+ break;
+ case FC_TAN :
+ {
+ if ( nParameters == 2 )
+ aEquation = sParameters[ 0 ] + "*tan(pi*(" +
+ sParameters[ 1 ] + ")/10800000)";
+ }
+ break;
+ case FC_VAL :
+ {
+ if ( nParameters == 1 )
+ aEquation = sParameters[ 0 ];
+ }
+ break;
+ default :
+ break;
+ }
+ }
+ }
+ return aEquation;
+}
+
+ContextHandlerRef GeomGuideListContext::onCreateContext( sal_Int32 aElementToken, const AttributeList& rAttribs )
+{
+ if ( aElementToken == A_TOKEN( gd ) ) // CT_GeomGuide
+ {
+ CustomShapeGuide aGuide;
+ aGuide.maName = rAttribs.getString( XML_name ).get();
+ aGuide.maFormula = convertToOOEquation( mrCustomShapeProperties, rAttribs.getString( XML_fmla ).get() );
+ mrGuideList.push_back( aGuide );
+ }
+ return this;
+}
+
+static const OUString& GetGeomGuideName( const OUString& rValue )
+{
+ return rValue;
+}
+
+namespace {
+
+// CT_AdjPoint2D
+class AdjPoint2DContext : public ContextHandler2
+{
+public:
+ AdjPoint2DContext( ContextHandler2Helper const & rParent, const AttributeList& rAttribs, CustomShapeProperties& rCustomShapeProperties, EnhancedCustomShapeParameterPair& rAdjPoint2D );
+};
+
+}
+
+AdjPoint2DContext::AdjPoint2DContext( ContextHandler2Helper const & rParent, const AttributeList& rAttribs, CustomShapeProperties& rCustomShapeProperties, EnhancedCustomShapeParameterPair& rAdjPoint2D )
+: ContextHandler2( rParent )
+{
+ rAdjPoint2D.First = GetAdjCoordinate( rCustomShapeProperties, rAttribs.getString( XML_x ).get() );
+ rAdjPoint2D.Second = GetAdjCoordinate( rCustomShapeProperties, rAttribs.getString( XML_y ).get() );
+}
+
+namespace {
+
+// CT_XYAdjustHandle
+class XYAdjustHandleContext : public ContextHandler2
+{
+public:
+ XYAdjustHandleContext( ContextHandler2Helper const & rParent, const AttributeList& rAttribs, CustomShapeProperties& rCustomShapeProperties, AdjustHandle& rAdjustHandle );
+ virtual ::oox::core::ContextHandlerRef onCreateContext( sal_Int32 aElementToken, const ::oox::AttributeList& rAttribs ) override;
+
+protected:
+ AdjustHandle& mrAdjustHandle;
+ CustomShapeProperties& mrCustomShapeProperties;
+};
+
+}
+
+XYAdjustHandleContext::XYAdjustHandleContext( ContextHandler2Helper const & rParent, const AttributeList& rAttribs, CustomShapeProperties& rCustomShapeProperties, AdjustHandle& rAdjustHandle )
+: ContextHandler2( rParent )
+, mrAdjustHandle( rAdjustHandle )
+, mrCustomShapeProperties( rCustomShapeProperties )
+{
+ if ( rAttribs.hasAttribute( XML_gdRefX ) )
+ {
+ mrAdjustHandle.gdRef1 = GetGeomGuideName( rAttribs.getString( XML_gdRefX, "" ) );
+ }
+ if ( rAttribs.hasAttribute( XML_minX ) )
+ {
+ mrAdjustHandle.min1 = GetAdjCoordinate( mrCustomShapeProperties, rAttribs.getString( XML_minX, "" ) );
+ }
+ if ( rAttribs.hasAttribute( XML_maxX ) )
+ {
+ mrAdjustHandle.max1 = GetAdjCoordinate( mrCustomShapeProperties, rAttribs.getString( XML_maxX, "" ) );
+ }
+ if ( rAttribs.hasAttribute( XML_gdRefY ) )
+ {
+ mrAdjustHandle.gdRef2 = GetGeomGuideName( rAttribs.getString( XML_gdRefY, "" ) );
+ }
+ if ( rAttribs.hasAttribute( XML_minY ) )
+ {
+ mrAdjustHandle.min2 = GetAdjCoordinate( mrCustomShapeProperties, rAttribs.getString( XML_minY, "" ) );
+ }
+ if ( rAttribs.hasAttribute( XML_maxY ) )
+ {
+ mrAdjustHandle.max2 = GetAdjCoordinate( mrCustomShapeProperties, rAttribs.getString( XML_maxY, "" ) );
+ }
+}
+
+ContextHandlerRef XYAdjustHandleContext::onCreateContext( sal_Int32 aElementToken, const AttributeList& rAttribs )
+{
+ if ( aElementToken == A_TOKEN( pos ) )
+ return new AdjPoint2DContext( *this, rAttribs, mrCustomShapeProperties, mrAdjustHandle.pos ); // CT_AdjPoint2D
+ return nullptr;
+}
+
+namespace {
+
+// CT_PolarAdjustHandle
+class PolarAdjustHandleContext : public ContextHandler2
+{
+public:
+ PolarAdjustHandleContext( ContextHandler2Helper const & rParent, const AttributeList& rAttribs, CustomShapeProperties& rCustomShapeProperties, AdjustHandle& rAdjustHandle );
+ virtual ::oox::core::ContextHandlerRef onCreateContext( sal_Int32 aElementToken, const ::oox::AttributeList& rAttribs ) override;
+
+protected:
+ AdjustHandle& mrAdjustHandle;
+ CustomShapeProperties& mrCustomShapeProperties;
+};
+
+}
+
+PolarAdjustHandleContext::PolarAdjustHandleContext( ContextHandler2Helper const & rParent, const AttributeList& rAttribs, CustomShapeProperties& rCustomShapeProperties, AdjustHandle& rAdjustHandle )
+: ContextHandler2( rParent )
+, mrAdjustHandle( rAdjustHandle )
+, mrCustomShapeProperties( rCustomShapeProperties )
+{
+ if ( rAttribs.hasAttribute( XML_gdRefR ) )
+ {
+ mrAdjustHandle.polar = true ;
+ mrAdjustHandle.gdRef1 = GetGeomGuideName( rAttribs.getString( XML_gdRefR, "" ) );
+ }
+ if ( rAttribs.hasAttribute( XML_minR ) )
+ {
+ mrAdjustHandle.min1 = GetAdjCoordinate( mrCustomShapeProperties, rAttribs.getString( XML_minR, "" ) );
+ }
+ if ( rAttribs.hasAttribute( XML_maxR ) )
+ {
+ mrAdjustHandle.max1 = GetAdjCoordinate( mrCustomShapeProperties, rAttribs.getString( XML_maxR, "" ) );
+ }
+ if ( rAttribs.hasAttribute( XML_gdRefAng ) )
+ {
+ mrAdjustHandle.polar = true ;
+ mrAdjustHandle.gdRef2 = GetGeomGuideName( rAttribs.getString( XML_gdRefAng, "" ) );
+ }
+ if ( rAttribs.hasAttribute( XML_minAng ) )
+ {
+ mrAdjustHandle.min2 = GetAdjCoordinate( mrCustomShapeProperties, rAttribs.getString( XML_minAng, "" ) );
+ }
+ if ( rAttribs.hasAttribute( XML_maxAng ) )
+ {
+ mrAdjustHandle.max2 = GetAdjCoordinate( mrCustomShapeProperties, rAttribs.getString( XML_maxAng, "" ) );
+ }
+}
+
+ContextHandlerRef PolarAdjustHandleContext::onCreateContext( sal_Int32 aElementToken, const AttributeList& rAttribs )
+{
+ // mrAdjustHandle.pos uses planar coordinates.
+ if ( aElementToken == A_TOKEN( pos ) )
+ return new AdjPoint2DContext( *this, rAttribs, mrCustomShapeProperties, mrAdjustHandle.pos ); // CT_AdjPoint2D
+ return nullptr;
+}
+
+namespace {
+
+// CT_AdjustHandleList
+class AdjustHandleListContext : public ContextHandler2
+{
+public:
+ AdjustHandleListContext( ContextHandler2Helper const & rParent, CustomShapeProperties& rCustomShapeProperties, std::vector< AdjustHandle >& rAdjustHandleList );
+ virtual ::oox::core::ContextHandlerRef onCreateContext( sal_Int32 aElementToken, const ::oox::AttributeList& rAttribs ) override;
+
+protected:
+ std::vector< AdjustHandle >& mrAdjustHandleList;
+ CustomShapeProperties& mrCustomShapeProperties;
+};
+
+}
+
+AdjustHandleListContext::AdjustHandleListContext( ContextHandler2Helper const & rParent, CustomShapeProperties& rCustomShapeProperties, std::vector< AdjustHandle >& rAdjustHandleList )
+: ContextHandler2( rParent )
+, mrAdjustHandleList( rAdjustHandleList )
+, mrCustomShapeProperties( rCustomShapeProperties )
+{
+}
+
+ContextHandlerRef AdjustHandleListContext::onCreateContext( sal_Int32 aElementToken, const AttributeList& rAttribs )
+{
+ if ( aElementToken == A_TOKEN( ahXY ) ) // CT_XYAdjustHandle
+ {
+ AdjustHandle aAdjustHandle( false );
+ mrAdjustHandleList.push_back( aAdjustHandle );
+ return new XYAdjustHandleContext( *this, rAttribs, mrCustomShapeProperties, mrAdjustHandleList.back() );
+ }
+ else if ( aElementToken == A_TOKEN( ahPolar ) ) // CT_PolarAdjustHandle
+ {
+ AdjustHandle aAdjustHandle( true );
+ mrAdjustHandleList.push_back( aAdjustHandle );
+ return new PolarAdjustHandleContext( *this, rAttribs, mrCustomShapeProperties, mrAdjustHandleList.back() );
+ }
+ return nullptr;
+}
+
+namespace {
+
+// CT_ConnectionSite
+class ConnectionSiteContext : public ContextHandler2
+{
+public:
+ ConnectionSiteContext( ContextHandler2Helper const & rParent, const AttributeList& rAttribs, CustomShapeProperties& rCustomShapeProperties, ConnectionSite& rConnectionSite );
+ virtual ::oox::core::ContextHandlerRef onCreateContext( sal_Int32 aElementToken, const ::oox::AttributeList& rAttribs ) override;
+
+protected:
+ ConnectionSite& mrConnectionSite;
+ CustomShapeProperties& mrCustomShapeProperties;
+};
+
+}
+
+ConnectionSiteContext::ConnectionSiteContext( ContextHandler2Helper const & rParent, const AttributeList& rAttribs, CustomShapeProperties& rCustomShapeProperties, ConnectionSite& rConnectionSite )
+: ContextHandler2( rParent )
+, mrConnectionSite( rConnectionSite )
+, mrCustomShapeProperties( rCustomShapeProperties )
+{
+ mrConnectionSite.ang = GetAdjCoordinate( mrCustomShapeProperties, rAttribs.getString( XML_ang ).get() );
+}
+
+ContextHandlerRef ConnectionSiteContext::onCreateContext( sal_Int32 aElementToken, const AttributeList& rAttribs )
+{
+ if ( aElementToken == A_TOKEN( pos ) )
+ return new AdjPoint2DContext( *this, rAttribs, mrCustomShapeProperties, mrConnectionSite.pos ); // CT_AdjPoint2D
+ return nullptr;
+}
+
+namespace {
+
+// CT_Path2DMoveTo
+class Path2DMoveToContext : public ContextHandler2
+{
+public:
+ Path2DMoveToContext( ContextHandler2Helper const & rParent, CustomShapeProperties& rCustomShapeProperties, EnhancedCustomShapeParameterPair& rAdjPoint2D );
+ virtual ::oox::core::ContextHandlerRef onCreateContext( sal_Int32 aElementToken, const ::oox::AttributeList& rAttribs ) override;
+
+protected:
+ EnhancedCustomShapeParameterPair& mrAdjPoint2D;
+ CustomShapeProperties& mrCustomShapeProperties;
+};
+
+}
+
+Path2DMoveToContext::Path2DMoveToContext( ContextHandler2Helper const & rParent, CustomShapeProperties& rCustomShapeProperties, EnhancedCustomShapeParameterPair& rAdjPoint2D )
+: ContextHandler2( rParent )
+, mrAdjPoint2D( rAdjPoint2D )
+, mrCustomShapeProperties( rCustomShapeProperties )
+{
+}
+
+ContextHandlerRef Path2DMoveToContext::onCreateContext( sal_Int32 aElementToken, const AttributeList& rAttribs )
+{
+ if ( aElementToken == A_TOKEN( pt ) )
+ return new AdjPoint2DContext( *this, rAttribs, mrCustomShapeProperties, mrAdjPoint2D ); // CT_AdjPoint2D
+ return nullptr;
+}
+
+namespace {
+
+// CT_Path2DLineTo
+class Path2DLineToContext : public ContextHandler2
+{
+public:
+ Path2DLineToContext( ContextHandler2Helper const & rParent, CustomShapeProperties& rCustomShapeProperties, EnhancedCustomShapeParameterPair& rAdjPoint2D );
+ virtual ::oox::core::ContextHandlerRef onCreateContext( sal_Int32 aElementToken, const ::oox::AttributeList& rAttribs ) override;
+
+protected:
+ EnhancedCustomShapeParameterPair& mrAdjPoint2D;
+ CustomShapeProperties& mrCustomShapeProperties;
+};
+
+}
+
+Path2DLineToContext::Path2DLineToContext( ContextHandler2Helper const & rParent, CustomShapeProperties& rCustomShapeProperties, EnhancedCustomShapeParameterPair& rAdjPoint2D )
+: ContextHandler2( rParent )
+, mrAdjPoint2D( rAdjPoint2D )
+, mrCustomShapeProperties( rCustomShapeProperties )
+{
+}
+
+ContextHandlerRef Path2DLineToContext::onCreateContext( sal_Int32 aElementToken, const AttributeList& rAttribs )
+{
+ if ( aElementToken == A_TOKEN( pt ) )
+ return new AdjPoint2DContext( *this, rAttribs, mrCustomShapeProperties, mrAdjPoint2D ); // CT_AdjPoint2D
+ return nullptr;
+}
+
+namespace {
+
+// CT_Path2DQuadBezierTo
+class Path2DQuadBezierToContext : public ContextHandler2
+{
+public:
+ Path2DQuadBezierToContext( ContextHandler2Helper const & rParent, CustomShapeProperties& rCustomShapeProperties, EnhancedCustomShapeParameterPair& rPt1, EnhancedCustomShapeParameterPair& rPt2 );
+ virtual ::oox::core::ContextHandlerRef onCreateContext( sal_Int32 aElementToken, const ::oox::AttributeList& rAttribs ) override;
+
+protected:
+ EnhancedCustomShapeParameterPair& mrPt1;
+ EnhancedCustomShapeParameterPair& mrPt2;
+ int nCount;
+ CustomShapeProperties& mrCustomShapeProperties;
+};
+
+}
+
+Path2DQuadBezierToContext::Path2DQuadBezierToContext( ContextHandler2Helper const & rParent,
+ CustomShapeProperties& rCustomShapeProperties,
+ EnhancedCustomShapeParameterPair& rPt1,
+ EnhancedCustomShapeParameterPair& rPt2 )
+: ContextHandler2( rParent )
+, mrPt1( rPt1 )
+, mrPt2( rPt2 )
+, nCount( 0 )
+, mrCustomShapeProperties( rCustomShapeProperties )
+{
+}
+
+ContextHandlerRef Path2DQuadBezierToContext::onCreateContext( sal_Int32 aElementToken, const AttributeList& rAttribs )
+{
+ if ( aElementToken == A_TOKEN( pt ) )
+ return new AdjPoint2DContext( *this, rAttribs, mrCustomShapeProperties, nCount++ ? mrPt2 : mrPt1 ); // CT_AdjPoint2D
+ return nullptr;
+}
+
+namespace {
+
+// CT_Path2DCubicBezierTo
+class Path2DCubicBezierToContext : public ContextHandler2
+{
+public:
+ Path2DCubicBezierToContext( ContextHandler2Helper const & rParent, CustomShapeProperties& rCustomShapeProperties,
+ EnhancedCustomShapeParameterPair&, EnhancedCustomShapeParameterPair&, EnhancedCustomShapeParameterPair& );
+ virtual ::oox::core::ContextHandlerRef onCreateContext( sal_Int32 aElementToken, const ::oox::AttributeList& rAttribs ) override;
+
+protected:
+ CustomShapeProperties& mrCustomShapeProperties;
+ EnhancedCustomShapeParameterPair& mrControlPt1;
+ EnhancedCustomShapeParameterPair& mrControlPt2;
+ EnhancedCustomShapeParameterPair& mrEndPt;
+ int nCount;
+};
+
+}
+
+Path2DCubicBezierToContext::Path2DCubicBezierToContext( ContextHandler2Helper const & rParent, CustomShapeProperties& rCustomShapeProperties,
+ EnhancedCustomShapeParameterPair& rControlPt1,
+ EnhancedCustomShapeParameterPair& rControlPt2,
+ EnhancedCustomShapeParameterPair& rEndPt )
+: ContextHandler2( rParent )
+, mrCustomShapeProperties( rCustomShapeProperties )
+, mrControlPt1( rControlPt1 )
+, mrControlPt2( rControlPt2 )
+, mrEndPt( rEndPt )
+, nCount( 0 )
+{
+}
+
+ContextHandlerRef Path2DCubicBezierToContext::onCreateContext( sal_Int32 aElementToken, const AttributeList& rAttribs )
+{
+ if ( aElementToken == A_TOKEN( pt ) )
+ return new AdjPoint2DContext( *this, rAttribs, mrCustomShapeProperties,
+ nCount++ ? nCount == 2 ? mrControlPt2 : mrEndPt : mrControlPt1 ); // CT_AdjPoint2D
+ return nullptr;
+}
+
+namespace {
+
+// CT_Path2DContext
+class Path2DContext : public ContextHandler2
+{
+public:
+ Path2DContext( ContextHandler2Helper const & rParent, const AttributeList& rAttribs, CustomShapeProperties& rCustomShapeProperties, std::vector< css::drawing::EnhancedCustomShapeSegment >& rSegments, Path2D& rPath2D );
+ virtual void onEndElement() override;
+ virtual ::oox::core::ContextHandlerRef
+ onCreateContext( sal_Int32 aElementToken, const ::oox::AttributeList& rAttribs ) override;
+
+protected:
+ Path2D& mrPath2D;
+ std::vector< css::drawing::EnhancedCustomShapeSegment >& mrSegments;
+ CustomShapeProperties& mrCustomShapeProperties;
+};
+
+}
+
+Path2DContext::Path2DContext( ContextHandler2Helper const & rParent, const AttributeList& rAttribs, CustomShapeProperties& rCustomShapeProperties, std::vector< css::drawing::EnhancedCustomShapeSegment >& rSegments, Path2D& rPath2D )
+: ContextHandler2( rParent )
+, mrPath2D( rPath2D )
+, mrSegments( rSegments )
+, mrCustomShapeProperties( rCustomShapeProperties )
+{
+ rPath2D.w = rAttribs.getString( XML_w, "" ).toInt64();
+ rPath2D.h = rAttribs.getString( XML_h, "" ).toInt64();
+ rPath2D.fill = rAttribs.getToken( XML_fill, XML_norm );
+ rPath2D.stroke = rAttribs.getBool( XML_stroke, true );
+ rPath2D.extrusionOk = rAttribs.getBool( XML_extrusionOk, true );
+}
+
+void Path2DContext::onEndElement()
+{
+ EnhancedCustomShapeSegment aNewSegment;
+ switch ( mrPath2D.fill )
+ {
+ case XML_none:
+ aNewSegment.Command = EnhancedCustomShapeSegmentCommand::NOFILL;
+ break;
+ case XML_darken:
+ aNewSegment.Command = EnhancedCustomShapeSegmentCommand::DARKEN;
+ break;
+ case XML_darkenLess:
+ aNewSegment.Command = EnhancedCustomShapeSegmentCommand::DARKENLESS;
+ break;
+ case XML_lighten:
+ aNewSegment.Command = EnhancedCustomShapeSegmentCommand::LIGHTEN;
+ break;
+ case XML_lightenLess:
+ aNewSegment.Command = EnhancedCustomShapeSegmentCommand::LIGHTENLESS;
+ break;
+ }
+ if (mrPath2D.fill != XML_norm) {
+ aNewSegment.Count = 0;
+ mrSegments.push_back( aNewSegment );
+ }
+ if ( !mrPath2D.stroke )
+ {
+ aNewSegment.Command = EnhancedCustomShapeSegmentCommand::NOSTROKE;
+ aNewSegment.Count = 0;
+ mrSegments.push_back( aNewSegment );
+ }
+ aNewSegment.Command = EnhancedCustomShapeSegmentCommand::ENDSUBPATH;
+ aNewSegment.Count = 0;
+ mrSegments.push_back( aNewSegment );
+}
+
+
+ContextHandlerRef Path2DContext::onCreateContext( sal_Int32 aElementToken,
+ const AttributeList& rAttribs )
+{
+ switch( aElementToken )
+ {
+ case A_TOKEN( close ) :
+ {
+ // ignore close after move to (ppt does seems to do the same, see accentCallout2 preset for example)
+ if ( mrSegments.empty() || ( mrSegments.back().Command != EnhancedCustomShapeSegmentCommand::MOVETO ) ) {
+ EnhancedCustomShapeSegment aNewSegment;
+ aNewSegment.Command = EnhancedCustomShapeSegmentCommand::CLOSESUBPATH;
+ aNewSegment.Count = 0;
+ mrSegments.push_back( aNewSegment );
+ }
+ }
+ break;
+ case A_TOKEN( moveTo ) :
+ {
+ EnhancedCustomShapeSegment aNewSegment;
+ aNewSegment.Command = EnhancedCustomShapeSegmentCommand::MOVETO;
+ aNewSegment.Count = 1;
+ mrSegments.push_back( aNewSegment );
+
+ EnhancedCustomShapeParameterPair aAdjPoint2D;
+ mrPath2D.parameter.push_back( aAdjPoint2D );
+ return new Path2DMoveToContext( *this, mrCustomShapeProperties, mrPath2D.parameter.back() );
+ }
+ break;
+ case A_TOKEN( lnTo ) :
+ {
+ if ( !mrSegments.empty() && ( mrSegments.back().Command == EnhancedCustomShapeSegmentCommand::LINETO ) )
+ mrSegments.back().Count++;
+ else
+ {
+ EnhancedCustomShapeSegment aSegment;
+ aSegment.Command = EnhancedCustomShapeSegmentCommand::LINETO;
+ aSegment.Count = 1;
+ mrSegments.push_back( aSegment );
+ }
+ EnhancedCustomShapeParameterPair aAdjPoint2D;
+ mrPath2D.parameter.push_back( aAdjPoint2D );
+ return new Path2DLineToContext( *this, mrCustomShapeProperties, mrPath2D.parameter.back() );
+ }
+ break;
+ case A_TOKEN( arcTo ) : // CT_Path2DArcTo
+ {
+ if ( !mrSegments.empty() && ( mrSegments.back().Command == EnhancedCustomShapeSegmentCommand::ARCANGLETO ) )
+ mrSegments.back().Count++;
+ else
+ {
+ EnhancedCustomShapeSegment aSegment;
+ aSegment.Command = EnhancedCustomShapeSegmentCommand::ARCANGLETO;
+ aSegment.Count = 1;
+ mrSegments.push_back( aSegment );
+ }
+
+ EnhancedCustomShapeParameterPair aScale;
+ EnhancedCustomShapeParameterPair aAngles;
+
+ aScale.First = GetAdjCoordinate( mrCustomShapeProperties, rAttribs.getString( XML_wR ).get() );
+ aScale.Second = GetAdjCoordinate( mrCustomShapeProperties, rAttribs.getString( XML_hR ).get() );
+
+ CustomShapeGuide aGuide;
+ sal_Int32 nArcNum = mrCustomShapeProperties.getArcNum();
+
+ // start angle
+ aGuide.maName = "arctosa" + OUString::number( nArcNum );
+ aGuide.maFormula = "("
+ + GetFormulaParameter( GetAdjCoordinate( mrCustomShapeProperties, rAttribs.getString( XML_stAng ).get() ) )
+ + ")/60000.0";
+ aAngles.First.Value <<= CustomShapeProperties::SetCustomShapeGuideValue( mrCustomShapeProperties.getGuideList(), aGuide );
+ aAngles.First.Type = EnhancedCustomShapeParameterType::EQUATION;
+
+ // swing angle
+ aGuide.maName = "arctosw" + OUString::number( nArcNum );
+ aGuide.maFormula = "("
+ + GetFormulaParameter( GetAdjCoordinate( mrCustomShapeProperties, rAttribs.getString( XML_swAng ).get() ) )
+ + ")/60000.0";
+ aAngles.Second.Value <<= CustomShapeProperties::SetCustomShapeGuideValue( mrCustomShapeProperties.getGuideList(), aGuide );
+ aAngles.Second.Type = EnhancedCustomShapeParameterType::EQUATION;
+
+ mrPath2D.parameter.push_back( aScale );
+ mrPath2D.parameter.push_back( aAngles );
+ }
+ break;
+ case A_TOKEN( quadBezTo ) :
+ {
+ if ( !mrSegments.empty() && ( mrSegments.back().Command == EnhancedCustomShapeSegmentCommand::QUADRATICCURVETO ) )
+ mrSegments.back().Count++;
+ else
+ {
+ EnhancedCustomShapeSegment aSegment;
+ aSegment.Command = EnhancedCustomShapeSegmentCommand::QUADRATICCURVETO;
+ aSegment.Count = 1;
+ mrSegments.push_back( aSegment );
+ }
+ EnhancedCustomShapeParameterPair aPt1;
+ EnhancedCustomShapeParameterPair aPt2;
+ mrPath2D.parameter.push_back( aPt1 );
+ mrPath2D.parameter.push_back( aPt2 );
+ return new Path2DQuadBezierToContext( *this, mrCustomShapeProperties,
+ mrPath2D.parameter[ mrPath2D.parameter.size() - 2 ],
+ mrPath2D.parameter.back() );
+ }
+ break;
+ case A_TOKEN( cubicBezTo ) :
+ {
+ if ( !mrSegments.empty() && ( mrSegments.back().Command == EnhancedCustomShapeSegmentCommand::CURVETO ) )
+ mrSegments.back().Count++;
+ else
+ {
+ EnhancedCustomShapeSegment aSegment;
+ aSegment.Command = EnhancedCustomShapeSegmentCommand::CURVETO;
+ aSegment.Count = 1;
+ mrSegments.push_back( aSegment );
+ }
+ EnhancedCustomShapeParameterPair aControlPt1;
+ EnhancedCustomShapeParameterPair aControlPt2;
+ EnhancedCustomShapeParameterPair aEndPt;
+ mrPath2D.parameter.push_back( aControlPt1 );
+ mrPath2D.parameter.push_back( aControlPt2 );
+ mrPath2D.parameter.push_back( aEndPt );
+ return new Path2DCubicBezierToContext( *this, mrCustomShapeProperties,
+ mrPath2D.parameter[ mrPath2D.parameter.size() - 3 ],
+ mrPath2D.parameter[ mrPath2D.parameter.size() - 2 ],
+ mrPath2D.parameter.back() );
+ }
+ break;
+ }
+ return nullptr;
+}
+
+namespace {
+
+// CT_Path2DList
+class Path2DListContext : public ContextHandler2
+{
+public:
+ Path2DListContext( ContextHandler2Helper const & rParent, CustomShapeProperties & rCustomShapeProperties, std::vector< EnhancedCustomShapeSegment >& rSegments,
+ std::vector< Path2D >& rPath2DList );
+
+ virtual ::oox::core::ContextHandlerRef onCreateContext( sal_Int32 aElementToken, const ::oox::AttributeList& rAttribs ) override;
+
+protected:
+
+ CustomShapeProperties& mrCustomShapeProperties;
+ std::vector< css::drawing::EnhancedCustomShapeSegment >& mrSegments;
+ std::vector< Path2D >& mrPath2DList;
+};
+
+}
+
+Path2DListContext:: Path2DListContext( ContextHandler2Helper const & rParent, CustomShapeProperties& rCustomShapeProperties, std::vector< EnhancedCustomShapeSegment >& rSegments,
+ std::vector< Path2D >& rPath2DList )
+: ContextHandler2( rParent )
+, mrCustomShapeProperties( rCustomShapeProperties )
+, mrSegments( rSegments )
+, mrPath2DList( rPath2DList )
+{
+}
+
+ContextHandlerRef Path2DListContext::onCreateContext( sal_Int32 aElementToken, const AttributeList& rAttribs )
+{
+ if ( aElementToken == A_TOKEN( path ) )
+ {
+ Path2D aPath2D;
+ mrPath2DList.push_back( aPath2D );
+ return new Path2DContext( *this, rAttribs, mrCustomShapeProperties, mrSegments, mrPath2DList.back() );
+ }
+ return nullptr;
+}
+
+// CT_CustomGeometry2D
+CustomShapeGeometryContext::CustomShapeGeometryContext( ContextHandler2Helper const & rParent, CustomShapeProperties& rCustomShapeProperties )
+: ContextHandler2( rParent )
+, mrCustomShapeProperties( rCustomShapeProperties )
+{
+}
+
+ContextHandlerRef CustomShapeGeometryContext::onCreateContext( sal_Int32 aElementToken, const AttributeList& rAttribs )
+{
+ switch( aElementToken )
+ {
+ case A_TOKEN( avLst ): // CT_GeomGuideList adjust value list
+ return new GeomGuideListContext( *this, mrCustomShapeProperties, mrCustomShapeProperties.getAdjustmentGuideList() );
+ case A_TOKEN( gdLst ): // CT_GeomGuideList guide list
+ return new GeomGuideListContext( *this, mrCustomShapeProperties, mrCustomShapeProperties.getGuideList() );
+ case A_TOKEN( ahLst ): // CT_AdjustHandleList adjust handle list
+ return new AdjustHandleListContext( *this, mrCustomShapeProperties, mrCustomShapeProperties.getAdjustHandleList() );
+ case A_TOKEN( cxnLst ): // CT_ConnectionSiteList connection site list
+ return this;
+ case A_TOKEN( rect ): // CT_GeomRectList geometry rect list
+ {
+ GeomRect aGeomRect;
+ aGeomRect.l = GetAdjCoordinate( mrCustomShapeProperties, rAttribs.getString( XML_l ).get() );
+ aGeomRect.t = GetAdjCoordinate( mrCustomShapeProperties, rAttribs.getString( XML_t ).get() );
+ aGeomRect.r = GetAdjCoordinate( mrCustomShapeProperties, rAttribs.getString( XML_r ).get() );
+ aGeomRect.b = GetAdjCoordinate( mrCustomShapeProperties, rAttribs.getString( XML_b ).get() );
+ mrCustomShapeProperties.getTextRect() = aGeomRect;
+ }
+ break;
+ case A_TOKEN( pathLst ): // CT_Path2DList 2d path list
+ return new Path2DListContext( *this, mrCustomShapeProperties, mrCustomShapeProperties.getSegments(), mrCustomShapeProperties.getPath2DList() );
+
+ // from cxnLst:
+ case A_TOKEN( cxn ): // CT_ConnectionSite
+ {
+ ConnectionSite aConnectionSite;
+ mrCustomShapeProperties.getConnectionSiteList().push_back( aConnectionSite );
+ return new ConnectionSiteContext( *this, rAttribs, mrCustomShapeProperties, mrCustomShapeProperties.getConnectionSiteList().back() );
+ }
+ }
+ return nullptr;
+}
+
+// CT_PresetGeometry2D
+PresetShapeGeometryContext::PresetShapeGeometryContext( ContextHandler2Helper const & rParent, const AttributeList& rAttribs, CustomShapeProperties& rCustomShapeProperties )
+: ContextHandler2( rParent )
+, mrCustomShapeProperties( rCustomShapeProperties )
+{
+ sal_Int32 nShapeType = rAttribs.getToken( XML_prst, FastToken::DONTKNOW );
+ OSL_ENSURE( nShapeType != FastToken::DONTKNOW, "oox::drawingml::CustomShapeCustomGeometryContext::CustomShapeCustomGeometryContext(), unknown shape type" );
+ mrCustomShapeProperties.setShapePresetType( nShapeType );
+}
+
+ContextHandlerRef PresetShapeGeometryContext::onCreateContext( sal_Int32 aElementToken, const AttributeList& )
+{
+ if ( aElementToken == A_TOKEN( avLst ) )
+ return new GeomGuideListContext( *this, mrCustomShapeProperties, mrCustomShapeProperties.getAdjustmentGuideList() );
+ else
+ return this;
+}
+
+// CT_PresetTextShape
+PresetTextShapeContext::PresetTextShapeContext( ContextHandler2Helper const & rParent, const AttributeList& rAttribs, CustomShapeProperties& rCustomShapeProperties )
+: ContextHandler2( rParent )
+, mrCustomShapeProperties( rCustomShapeProperties )
+{
+ sal_Int32 nShapeType = rAttribs.getToken( XML_prst, FastToken::DONTKNOW );
+ OSL_ENSURE( nShapeType != FastToken::DONTKNOW, "oox::drawingml::CustomShapeCustomGeometryContext::CustomShapeCustomGeometryContext(), unknown shape type" );
+ mrCustomShapeProperties.setShapePresetType( nShapeType );
+}
+
+ContextHandlerRef PresetTextShapeContext::onCreateContext( sal_Int32 aElementToken, const AttributeList& )
+{
+ if ( aElementToken == A_TOKEN( avLst ) )
+ return new GeomGuideListContext( *this, mrCustomShapeProperties, mrCustomShapeProperties.getAdjustmentGuideList() );
+ else
+ return this;
+}
+
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/oox/source/drawingml/customshapepresetdata.cxx b/oox/source/drawingml/customshapepresetdata.cxx
new file mode 100644
index 000000000..3215b9834
--- /dev/null
+++ b/oox/source/drawingml/customshapepresetdata.cxx
@@ -0,0 +1,974 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ */
+
+#include <config_folders.h>
+#include <rtl/bootstrap.hxx>
+#include <sal/log.hxx>
+#include <tools/stream.hxx>
+#include <comphelper/sequence.hxx>
+
+#include <drawingml/customshapeproperties.hxx>
+#include <oox/token/properties.hxx>
+#include <oox/token/tokenmap.hxx>
+#include <com/sun/star/awt/Rectangle.hpp>
+#include <com/sun/star/beans/PropertyValue.hpp>
+#include <com/sun/star/drawing/EnhancedCustomShapeTextFrame.hpp>
+#include <com/sun/star/drawing/EnhancedCustomShapeAdjustmentValue.hpp>
+#include <o3tl/string_view.hxx>
+
+using namespace ::com::sun::star;
+
+namespace
+{
+// Parses a string like: Value = (any) { (long) 19098 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE, Name = "adj"
+void lcl_parseAdjustmentValue(
+ std::vector<drawing::EnhancedCustomShapeAdjustmentValue>& rAdjustmentValues,
+ std::string_view rValue)
+{
+ sal_Int32 nIndex = 0;
+ drawing::EnhancedCustomShapeAdjustmentValue aAdjustmentValue;
+ do
+ {
+ OString aToken(o3tl::trim(o3tl::getToken(rValue, 0, ',', nIndex)));
+ static const char aNamePrefix[] = "Name = \"";
+ static const char aValuePrefix[] = "Value = (any) { (long) ";
+ if (o3tl::starts_with(aToken, aNamePrefix))
+ {
+ OString aName = aToken.copy(strlen(aNamePrefix),
+ aToken.getLength() - strlen(aNamePrefix) - strlen("\""));
+ aAdjustmentValue.Name = OUString::fromUtf8(aName);
+ }
+ else if (o3tl::starts_with(aToken, aValuePrefix))
+ {
+ OString aValue = aToken.copy(strlen(aValuePrefix),
+ aToken.getLength() - strlen(aValuePrefix) - strlen(" }"));
+ aAdjustmentValue.Value <<= aValue.toInt32();
+ }
+ else if (!o3tl::starts_with(aToken, "State = "))
+ SAL_WARN("oox", "lcl_parseAdjustmentValue: unexpected prefix: " << aToken);
+ } while (nIndex >= 0);
+ rAdjustmentValues.push_back(aAdjustmentValue);
+}
+
+// Parses a string like: { Value = (any) { (long) 19098 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE, Name = "adj" }, { Value = ..., State = ..., Name = ... }
+void lcl_parseAdjustmentValues(
+ std::vector<drawing::EnhancedCustomShapeAdjustmentValue>& rAdjustmentValues,
+ std::string_view rValue)
+{
+ sal_Int32 nLevel = 0;
+ sal_Int32 nStart = 0;
+ for (size_t i = 0; i < rValue.size(); ++i)
+ {
+ if (rValue[i] == '{')
+ {
+ if (!nLevel)
+ nStart = i;
+ nLevel++;
+ }
+ else if (rValue[i] == '}')
+ {
+ nLevel--;
+ if (!nLevel)
+ {
+ lcl_parseAdjustmentValue(
+ rAdjustmentValues,
+ rValue.substr(nStart + strlen("{ "), i - nStart - strlen(" },")));
+ }
+ }
+ }
+}
+
+drawing::EnhancedCustomShapeParameterPair
+lcl_parseEnhancedCustomShapeParameterPair(std::string_view rValue)
+{
+ drawing::EnhancedCustomShapeParameterPair aPair;
+ // We expect the following here: First.Value, First.Type, Second.Value, Second.Type
+ static const char aExpectedFVPrefix[]
+ = "First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) ";
+ assert(o3tl::starts_with(rValue, aExpectedFVPrefix));
+ sal_Int32 nIndex = strlen(aExpectedFVPrefix);
+ aPair.First.Value
+ <<= static_cast<sal_uInt32>(o3tl::toInt32(o3tl::getToken(rValue, 0, '}', nIndex)));
+
+ static const char aExpectedFTPrefix[] = ", Type = (short) ";
+ assert(nIndex >= 0 && o3tl::starts_with(rValue.substr(nIndex), aExpectedFTPrefix));
+ nIndex += strlen(aExpectedFTPrefix);
+ aPair.First.Type
+ = static_cast<sal_uInt16>(o3tl::toInt32(o3tl::getToken(rValue, 0, '}', nIndex)));
+
+ static const char aExpectedSVPrefix[] = ", Second = "
+ "(com.sun.star.drawing.EnhancedCustomShapeParameter) { "
+ "Value = (any) { (long) ";
+ assert(nIndex >= 0 && o3tl::starts_with(rValue.substr(nIndex), aExpectedSVPrefix));
+ nIndex += strlen(aExpectedSVPrefix);
+ aPair.Second.Value
+ <<= static_cast<sal_uInt32>(o3tl::toInt32(o3tl::getToken(rValue, 0, '}', nIndex)));
+
+ static const char aExpectedSTPrefix[] = ", Type = (short) ";
+ assert(nIndex >= 0 && o3tl::starts_with(rValue.substr(nIndex), aExpectedSTPrefix));
+ nIndex += strlen(aExpectedSTPrefix);
+ aPair.Second.Type
+ = static_cast<sal_uInt16>(o3tl::toInt32(o3tl::getToken(rValue, 0, '}', nIndex)));
+ return aPair;
+}
+
+drawing::EnhancedCustomShapeSegment lcl_parseEnhancedCustomShapeSegment(std::string_view rValue)
+{
+ drawing::EnhancedCustomShapeSegment aSegment;
+ // We expect the following here: Command, Count
+ static const char aExpectedCommandPrefix[] = "Command = (short) ";
+ assert(o3tl::starts_with(rValue, aExpectedCommandPrefix));
+ sal_Int32 nIndex = strlen(aExpectedCommandPrefix);
+ aSegment.Command
+ = static_cast<sal_Int16>(o3tl::toInt32(o3tl::getToken(rValue, 0, ',', nIndex)));
+
+ static const char aExpectedCountPrefix[] = " Count = (short) ";
+ assert(nIndex >= 0 && o3tl::starts_with(rValue.substr(nIndex), aExpectedCountPrefix));
+ nIndex += strlen(aExpectedCountPrefix);
+ aSegment.Count = static_cast<sal_Int16>(o3tl::toInt32(o3tl::getToken(rValue, 0, '}', nIndex)));
+ return aSegment;
+}
+
+awt::Rectangle lcl_parseRectangle(std::string_view rValue)
+{
+ awt::Rectangle aRectangle;
+ // We expect the following here: X, Y, Width, Height
+ static const char aExpectedXPrefix[] = "X = (long) ";
+ assert(o3tl::starts_with(rValue, aExpectedXPrefix));
+ sal_Int32 nIndex = strlen(aExpectedXPrefix);
+ aRectangle.X = o3tl::toInt32(o3tl::getToken(rValue, 0, ',', nIndex));
+
+ static const char aExpectedYPrefix[] = " Y = (long) ";
+ assert(nIndex >= 0 && o3tl::starts_with(rValue.substr(nIndex), aExpectedYPrefix));
+ nIndex += strlen(aExpectedYPrefix);
+ aRectangle.Y = o3tl::toInt32(o3tl::getToken(rValue, 0, ',', nIndex));
+
+ static const char aExpectedWidthPrefix[] = " Width = (long) ";
+ assert(nIndex >= 0 && o3tl::starts_with(rValue.substr(nIndex), aExpectedWidthPrefix));
+ nIndex += strlen(aExpectedWidthPrefix);
+ aRectangle.Width = o3tl::toInt32(o3tl::getToken(rValue, 0, ',', nIndex));
+
+ static const char aExpectedHeightPrefix[] = " Height = (long) ";
+ assert(nIndex >= 0 && o3tl::starts_with(rValue.substr(nIndex), aExpectedHeightPrefix));
+ nIndex += strlen(aExpectedHeightPrefix);
+ aRectangle.Height = o3tl::toInt32(rValue.substr(nIndex));
+
+ return aRectangle;
+}
+
+awt::Size lcl_parseSize(std::string_view rValue)
+{
+ awt::Size aSize;
+ // We expect the following here: Width, Height
+ static const char aExpectedWidthPrefix[] = "Width = (long) ";
+ assert(o3tl::starts_with(rValue, aExpectedWidthPrefix));
+ sal_Int32 nIndex = strlen(aExpectedWidthPrefix);
+ aSize.Width = o3tl::toInt32(o3tl::getToken(rValue, 0, ',', nIndex));
+
+ static const char aExpectedHeightPrefix[] = " Height = (long) ";
+ assert(nIndex >= 0 && o3tl::starts_with(rValue.substr(nIndex), aExpectedHeightPrefix));
+ nIndex += strlen(aExpectedHeightPrefix);
+ aSize.Height = o3tl::toInt32(rValue.substr(nIndex));
+
+ return aSize;
+}
+
+drawing::EnhancedCustomShapeTextFrame lcl_parseEnhancedCustomShapeTextFrame(std::string_view rValue)
+{
+ drawing::EnhancedCustomShapeTextFrame aTextFrame;
+ sal_Int32 nLevel = 0;
+ bool bIgnore = false;
+ sal_Int32 nStart = 0;
+ for (size_t i = 0; i < rValue.size(); ++i)
+ {
+ if (rValue[i] == '{')
+ {
+ if (!nLevel)
+ bIgnore = true;
+ nLevel++;
+ }
+ else if (rValue[i] == '}')
+ {
+ nLevel--;
+ if (!nLevel)
+ bIgnore = false;
+ }
+ else if (rValue[i] == ',' && !bIgnore)
+ {
+ std::string_view aToken = rValue.substr(nStart, i - nStart);
+ static const char aExpectedPrefix[]
+ = "TopLeft = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { ";
+ if (o3tl::starts_with(aToken, aExpectedPrefix))
+ {
+ aToken = aToken.substr(strlen(aExpectedPrefix),
+ aToken.size() - strlen(aExpectedPrefix) - strlen(" }"));
+ aTextFrame.TopLeft = lcl_parseEnhancedCustomShapeParameterPair(aToken);
+ }
+ else
+ SAL_WARN("oox",
+ "lcl_parseEnhancedCustomShapeTextFrame: unexpected token: " << aToken);
+ nStart = i + strlen(", ");
+ }
+ }
+
+ std::string_view aToken = rValue.substr(nStart);
+ static const char aExpectedPrefix[]
+ = "BottomRight = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { ";
+ if (o3tl::starts_with(aToken, aExpectedPrefix))
+ {
+ aToken = aToken.substr(strlen(aExpectedPrefix),
+ aToken.size() - strlen(aExpectedPrefix) - strlen(" }"));
+ aTextFrame.BottomRight = lcl_parseEnhancedCustomShapeParameterPair(aToken);
+ }
+ else
+ SAL_WARN("oox",
+ "lcl_parseEnhancedCustomShapeTextFrame: unexpected token at the end: " << aToken);
+
+ return aTextFrame;
+}
+
+// Parses a string like: Name = "Position", Handle = (long) 0, Value = (any) { ... }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE
+// where "{ ... }" may contain "," as well.
+void lcl_parseHandlePosition(std::vector<beans::PropertyValue>& rHandle, std::string_view rValue)
+{
+ sal_Int32 nLevel = 0;
+ bool bIgnore = false;
+ sal_Int32 nStart = 0;
+ for (size_t i = 0; i < rValue.size(); ++i)
+ {
+ if (rValue[i] == '{')
+ {
+ if (!nLevel)
+ bIgnore = true;
+ nLevel++;
+ }
+ else if (rValue[i] == '}')
+ {
+ nLevel--;
+ if (!nLevel)
+ bIgnore = false;
+ }
+ else if (rValue[i] == ',' && !bIgnore)
+ {
+ std::string_view aToken = rValue.substr(nStart, i - nStart);
+ static const char aExpectedPrefix[]
+ = "Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { ";
+ if (o3tl::starts_with(aToken, aExpectedPrefix))
+ {
+ aToken = aToken.substr(strlen(aExpectedPrefix),
+ aToken.size() - strlen(aExpectedPrefix) - strlen(" } }"));
+
+ beans::PropertyValue aPropertyValue;
+ aPropertyValue.Name = "Position";
+ aPropertyValue.Value <<= lcl_parseEnhancedCustomShapeParameterPair(aToken);
+ rHandle.push_back(aPropertyValue);
+ }
+ else if (!o3tl::starts_with(aToken, "Name =") && !o3tl::starts_with(aToken, "Handle ="))
+ SAL_WARN("oox", "lcl_parseHandlePosition: unexpected token: " << aToken);
+ nStart = i + strlen(", ");
+ }
+ }
+}
+
+// Parses a string like: Name = "RangeYMaximum", Handle = (long) 0, Value = (any) { ... }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE
+// where "{ ... }" may contain "," as well.
+void lcl_parseHandleRange(std::vector<beans::PropertyValue>& rHandle, std::string_view rValue,
+ const OUString& rName)
+{
+ sal_Int32 nLevel = 0;
+ bool bIgnore = false;
+ sal_Int32 nStart = 0;
+ for (size_t i = 0; i < rValue.size(); ++i)
+ {
+ if (rValue[i] == '{')
+ {
+ if (!nLevel)
+ bIgnore = true;
+ nLevel++;
+ }
+ else if (rValue[i] == '}')
+ {
+ nLevel--;
+ if (!nLevel)
+ bIgnore = false;
+ }
+ else if (rValue[i] == ',' && !bIgnore)
+ {
+ static const char aExpectedPrefix[]
+ = "Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { ";
+ if (o3tl::starts_with(rValue.substr(nStart), aExpectedPrefix))
+ {
+ drawing::EnhancedCustomShapeParameter aParameter;
+ sal_Int32 nIndex{ nStart + static_cast<sal_Int32>(strlen(aExpectedPrefix)) };
+ // We expect the following here: Value and Type
+ static const char aExpectedVPrefix[] = "Value = (any) { (long) ";
+ assert(o3tl::starts_with(rValue.substr(nIndex), aExpectedVPrefix));
+ nIndex += strlen(aExpectedVPrefix);
+ aParameter.Value <<= o3tl::toInt32(o3tl::getToken(rValue, 0, '}', nIndex));
+
+ static const char aExpectedTPrefix[] = ", Type = (short) ";
+ assert(nIndex >= 0 && o3tl::starts_with(rValue.substr(nIndex), aExpectedTPrefix));
+ nIndex += strlen(aExpectedTPrefix);
+ aParameter.Type
+ = static_cast<sal_Int16>(o3tl::toInt32(o3tl::getToken(rValue, 0, '}', nIndex)));
+
+ beans::PropertyValue aPropertyValue;
+ aPropertyValue.Name = rName;
+ aPropertyValue.Value <<= aParameter;
+ rHandle.push_back(aPropertyValue);
+ }
+ else if (!o3tl::starts_with(rValue.substr(nStart), "Name =")
+ && !o3tl::starts_with(rValue.substr(nStart), "Handle ="))
+ SAL_WARN("oox", "lcl_parseHandleRange: unexpected token: "
+ << rValue.substr(nStart, i - nStart));
+ nStart = i + strlen(", ");
+ }
+ }
+}
+
+// Parses a string like: Name = "RefY", Handle = (long) 0, Value = (any) { (long) 0 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE
+void lcl_parseHandleRef(std::vector<beans::PropertyValue>& rHandle, std::string_view rValue,
+ const OUString& rName)
+{
+ static constexpr std::string_view aPrefix = "\", Handle = (long) 0, Value = (any) { (long) ";
+ const sal_Int32 nStart = SAL_N_ELEMENTS("Name = \"") - 1 + rName.getLength();
+
+ if (rValue.substr(nStart, aPrefix.size()) == aPrefix)
+ {
+ sal_Int32 nIndex = nStart + aPrefix.size();
+ beans::PropertyValue aPropertyValue;
+ aPropertyValue.Name = rName;
+ // We only expect a Value here
+ aPropertyValue.Value <<= o3tl::toInt32(o3tl::getToken(rValue, 0, '}', nIndex));
+ rHandle.push_back(aPropertyValue);
+ }
+ else
+ SAL_WARN("oox", "lcl_parseHandleRef: unexpected value: " << rValue);
+}
+
+uno::Sequence<beans::PropertyValue> lcl_parseHandle(std::string_view rValue)
+{
+ std::vector<beans::PropertyValue> aRet;
+ sal_Int32 nLevel = 0;
+ sal_Int32 nStart = 0;
+ for (size_t i = 0; i < rValue.size(); ++i)
+ {
+ if (rValue[i] == '{')
+ {
+ if (!nLevel)
+ nStart = i;
+ nLevel++;
+ }
+ else if (rValue[i] == '}')
+ {
+ nLevel--;
+ if (!nLevel)
+ {
+ std::string_view aToken
+ = rValue.substr(nStart + strlen("{ "), i - nStart - strlen(" },"));
+ if (o3tl::starts_with(aToken, "Name = \"Position\""))
+ lcl_parseHandlePosition(aRet, aToken);
+ else if (o3tl::starts_with(aToken, "Name = \"RangeXMaximum\""))
+ lcl_parseHandleRange(aRet, aToken, "RangeXMaximum");
+ else if (o3tl::starts_with(aToken, "Name = \"RangeXMinimum\""))
+ lcl_parseHandleRange(aRet, aToken, "RangeXMinimum");
+ else if (o3tl::starts_with(aToken, "Name = \"RangeYMaximum\""))
+ lcl_parseHandleRange(aRet, aToken, "RangeYMaximum");
+ else if (o3tl::starts_with(aToken, "Name = \"RangeYMinimum\""))
+ lcl_parseHandleRange(aRet, aToken, "RangeYMinimum");
+ else if (o3tl::starts_with(aToken, "Name = \"RadiusRangeMaximum\""))
+ lcl_parseHandleRange(aRet, aToken, "RadiusRangeMaximum");
+ else if (o3tl::starts_with(aToken, "Name = \"RadiusRangeMinimum\""))
+ lcl_parseHandleRange(aRet, aToken, "RadiusRangeMinimum");
+ else if (o3tl::starts_with(aToken, "Name = \"RefX\""))
+ lcl_parseHandleRef(aRet, aToken, "RefX");
+ else if (o3tl::starts_with(aToken, "Name = \"RefY\""))
+ lcl_parseHandleRef(aRet, aToken, "RefY");
+ else if (o3tl::starts_with(aToken, "Name = \"RefR\""))
+ lcl_parseHandleRef(aRet, aToken, "RefR");
+ else if (o3tl::starts_with(aToken, "Name = \"RefAngle\""))
+ lcl_parseHandleRef(aRet, aToken, "RefAngle");
+ else
+ SAL_WARN("oox", "lcl_parseHandle: unexpected token: " << aToken);
+ }
+ }
+ }
+ return comphelper::containerToSequence(aRet);
+}
+
+void lcl_parseHandles(std::vector<uno::Sequence<beans::PropertyValue>>& rHandles,
+ std::string_view rValue)
+{
+ sal_Int32 nLevel = 0;
+ sal_Int32 nStart = 0;
+ for (size_t i = 0; i < rValue.size(); ++i)
+ {
+ if (rValue[i] == '{')
+ {
+ if (!nLevel)
+ nStart = i;
+ nLevel++;
+ }
+ else if (rValue[i] == '}')
+ {
+ nLevel--;
+ if (!nLevel)
+ {
+ uno::Sequence<beans::PropertyValue> aHandle = lcl_parseHandle(
+ rValue.substr(nStart + strlen("{ "), i - nStart - strlen(" },")));
+ rHandles.push_back(aHandle);
+ }
+ }
+ }
+}
+
+void lcl_parseEquations(std::vector<OUString>& rEquations, std::string_view rValue)
+{
+ bool bInString = false;
+ sal_Int32 nStart = 0;
+ for (size_t i = 0; i < rValue.size(); ++i)
+ {
+ if (rValue[i] == '"' && !bInString)
+ {
+ nStart = i;
+ bInString = true;
+ }
+ else if (rValue[i] == '"' && bInString)
+ {
+ bInString = false;
+ rEquations.push_back(OUString::fromUtf8(
+ rValue.substr(nStart + strlen("\""), i - nStart - strlen("\""))));
+ }
+ }
+}
+
+void lcl_parsePathCoordinateValues(std::vector<beans::PropertyValue>& rPath,
+ std::string_view rValue)
+{
+ std::vector<drawing::EnhancedCustomShapeParameterPair> aPairs;
+ sal_Int32 nLevel = 0;
+ sal_Int32 nStart = 0;
+ for (size_t i = 0; i < rValue.size(); ++i)
+ {
+ if (rValue[i] == '{')
+ {
+ if (!nLevel)
+ nStart = i;
+ nLevel++;
+ }
+ else if (rValue[i] == '}')
+ {
+ nLevel--;
+ if (!nLevel)
+ aPairs.push_back(lcl_parseEnhancedCustomShapeParameterPair(
+ rValue.substr(nStart + strlen("{ "), i - nStart - strlen(" },"))));
+ }
+ }
+
+ beans::PropertyValue aPropertyValue;
+ aPropertyValue.Name = "Coordinates";
+ aPropertyValue.Value <<= comphelper::containerToSequence(aPairs);
+ rPath.push_back(aPropertyValue);
+}
+
+// Parses a string like: Name = "Coordinates", Handle = (long) 0, Value = (any) { ... }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE
+// where "{ ... }" may contain "," as well.
+void lcl_parsePathCoordinates(std::vector<beans::PropertyValue>& rPath, std::string_view rValue)
+{
+ sal_Int32 nLevel = 0;
+ bool bIgnore = false;
+ sal_Int32 nStart = 0;
+ for (size_t i = 0; i < rValue.size(); ++i)
+ {
+ if (rValue[i] == '{')
+ {
+ if (!nLevel)
+ bIgnore = true;
+ nLevel++;
+ }
+ else if (rValue[i] == '}')
+ {
+ nLevel--;
+ if (!nLevel)
+ bIgnore = false;
+ }
+ else if (rValue[i] == ',' && !bIgnore)
+ {
+ std::string_view aToken = rValue.substr(nStart, i - nStart);
+ static const char aExpectedPrefix[]
+ = "Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeParameterPair) { ";
+ if (o3tl::starts_with(aToken, aExpectedPrefix))
+ {
+ aToken = aToken.substr(strlen(aExpectedPrefix),
+ aToken.size() - strlen(aExpectedPrefix) - strlen(" } }"));
+ lcl_parsePathCoordinateValues(rPath, aToken);
+ }
+ else if (!o3tl::starts_with(aToken, "Name =") && !o3tl::starts_with(aToken, "Handle ="))
+ SAL_WARN("oox", "lcl_parsePathCoordinates: unexpected token: " << aToken);
+ nStart = i + strlen(", ");
+ }
+ }
+}
+
+void lcl_parsePathGluePointsValues(std::vector<beans::PropertyValue>& rPath,
+ std::string_view rValue)
+{
+ std::vector<drawing::EnhancedCustomShapeParameterPair> aPairs;
+ sal_Int32 nLevel = 0;
+ sal_Int32 nStart = 0;
+ for (size_t i = 0; i < rValue.size(); ++i)
+ {
+ if (rValue[i] == '{')
+ {
+ if (!nLevel)
+ nStart = i;
+ nLevel++;
+ }
+ else if (rValue[i] == '}')
+ {
+ nLevel--;
+ if (!nLevel)
+ aPairs.push_back(lcl_parseEnhancedCustomShapeParameterPair(
+ rValue.substr(nStart + strlen("{ "), i - nStart - strlen(" },"))));
+ }
+ }
+
+ beans::PropertyValue aPropertyValue;
+ aPropertyValue.Name = "GluePoints";
+ aPropertyValue.Value <<= comphelper::containerToSequence(aPairs);
+ rPath.push_back(aPropertyValue);
+}
+
+void lcl_parsePathGluePoints(std::vector<beans::PropertyValue>& rPath, std::string_view rValue)
+{
+ sal_Int32 nLevel = 0;
+ bool bIgnore = false;
+ sal_Int32 nStart = 0;
+ for (size_t i = 0; i < rValue.size(); ++i)
+ {
+ if (rValue[i] == '{')
+ {
+ if (!nLevel)
+ bIgnore = true;
+ nLevel++;
+ }
+ else if (rValue[i] == '}')
+ {
+ nLevel--;
+ if (!nLevel)
+ bIgnore = false;
+ }
+ else if (rValue[i] == ',' && !bIgnore)
+ {
+ std::string_view aToken = rValue.substr(nStart, i - nStart);
+ static const char aExpectedPrefix[]
+ = "Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeParameterPair) { ";
+ if (o3tl::starts_with(aToken, aExpectedPrefix))
+ {
+ aToken = aToken.substr(strlen(aExpectedPrefix),
+ aToken.size() - strlen(aExpectedPrefix) - strlen(" } }"));
+ lcl_parsePathGluePointsValues(rPath, aToken);
+ }
+ else if (!o3tl::starts_with(aToken, "Name =") && !o3tl::starts_with(aToken, "Handle ="))
+ SAL_WARN("oox", "lcl_parsePathGluePoints: unexpected token: " << aToken);
+ nStart = i + strlen(", ");
+ }
+ }
+}
+
+void lcl_parsePathSegmentValues(std::vector<beans::PropertyValue>& rPath, std::string_view rValue)
+{
+ std::vector<drawing::EnhancedCustomShapeSegment> aSegments;
+ sal_Int32 nLevel = 0;
+ sal_Int32 nStart = 0;
+ for (size_t i = 0; i < rValue.size(); ++i)
+ {
+ if (rValue[i] == '{')
+ {
+ if (!nLevel)
+ nStart = i;
+ nLevel++;
+ }
+ else if (rValue[i] == '}')
+ {
+ nLevel--;
+ if (!nLevel)
+ aSegments.push_back(lcl_parseEnhancedCustomShapeSegment(
+ rValue.substr(nStart + strlen("{ "), i - nStart - strlen(" },"))));
+ }
+ }
+
+ beans::PropertyValue aPropertyValue;
+ aPropertyValue.Name = "Segments";
+ aPropertyValue.Value <<= comphelper::containerToSequence(aSegments);
+ rPath.push_back(aPropertyValue);
+}
+
+// Parses a string like: Name = "Segments", Handle = (long) 0, Value = (any) { ... }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE
+// where "{ ... }" may contain "," as well.
+void lcl_parsePathSegments(std::vector<beans::PropertyValue>& rPath, std::string_view rValue)
+{
+ sal_Int32 nLevel = 0;
+ bool bIgnore = false;
+ sal_Int32 nStart = 0;
+ for (size_t i = 0; i < rValue.size(); ++i)
+ {
+ if (rValue[i] == '{')
+ {
+ if (!nLevel)
+ bIgnore = true;
+ nLevel++;
+ }
+ else if (rValue[i] == '}')
+ {
+ nLevel--;
+ if (!nLevel)
+ bIgnore = false;
+ }
+ else if (rValue[i] == ',' && !bIgnore)
+ {
+ std::string_view aToken = rValue.substr(nStart, i - nStart);
+ static const char aExpectedPrefix[]
+ = "Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeSegment) { ";
+ if (o3tl::starts_with(aToken, aExpectedPrefix))
+ {
+ aToken = aToken.substr(strlen(aExpectedPrefix),
+ aToken.size() - strlen(aExpectedPrefix) - strlen(" } }"));
+ lcl_parsePathSegmentValues(rPath, aToken);
+ }
+ else if (!o3tl::starts_with(aToken, "Name =") && !o3tl::starts_with(aToken, "Handle ="))
+ SAL_WARN("oox", "lcl_parsePathSegments: unexpected token: " << aToken);
+ nStart = i + strlen(", ");
+ }
+ }
+}
+
+void lcl_parsePathTextFrameValues(std::vector<beans::PropertyValue>& rPath, std::string_view rValue)
+{
+ std::vector<drawing::EnhancedCustomShapeTextFrame> aTextFrames;
+ sal_Int32 nLevel = 0;
+ sal_Int32 nStart = 0;
+ for (size_t i = 0; i < rValue.size(); ++i)
+ {
+ if (rValue[i] == '{')
+ {
+ if (!nLevel)
+ nStart = i;
+ nLevel++;
+ }
+ else if (rValue[i] == '}')
+ {
+ nLevel--;
+ if (!nLevel)
+ aTextFrames.push_back(lcl_parseEnhancedCustomShapeTextFrame(
+ rValue.substr(nStart + strlen("{ "), i - nStart - strlen(" },"))));
+ }
+ }
+
+ beans::PropertyValue aPropertyValue;
+ aPropertyValue.Name = "TextFrames";
+ aPropertyValue.Value <<= comphelper::containerToSequence(aTextFrames);
+ rPath.push_back(aPropertyValue);
+}
+
+// Parses a string like: Name = "TextFrames", Handle = (long) 0, Value = (any) { ... }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE
+// where "{ ... }" may contain "," as well.
+void lcl_parsePathTextFrames(std::vector<beans::PropertyValue>& rPath, std::string_view rValue)
+{
+ sal_Int32 nLevel = 0;
+ bool bIgnore = false;
+ sal_Int32 nStart = 0;
+ for (size_t i = 0; i < rValue.size(); ++i)
+ {
+ if (rValue[i] == '{')
+ {
+ if (!nLevel)
+ bIgnore = true;
+ nLevel++;
+ }
+ else if (rValue[i] == '}')
+ {
+ nLevel--;
+ if (!nLevel)
+ bIgnore = false;
+ }
+ else if (rValue[i] == ',' && !bIgnore)
+ {
+ std::string_view aToken = rValue.substr(nStart, i - nStart);
+ static const char aExpectedPrefix[]
+ = "Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeTextFrame) { ";
+ if (o3tl::starts_with(aToken, aExpectedPrefix))
+ {
+ aToken = aToken.substr(strlen(aExpectedPrefix),
+ aToken.size() - strlen(aExpectedPrefix) - strlen(" } }"));
+ lcl_parsePathTextFrameValues(rPath, aToken);
+ }
+ else if (!o3tl::starts_with(aToken, "Name =") && !o3tl::starts_with(aToken, "Handle ="))
+ SAL_WARN("oox", "lcl_parsePathTextFrames: unexpected token: " << aToken);
+ nStart = i + strlen(", ");
+ }
+ }
+}
+
+void lcl_parsePathSubViewSizeValues(std::vector<beans::PropertyValue>& rPath,
+ std::string_view rValue)
+{
+ std::vector<awt::Size> aSizes;
+ sal_Int32 nLevel = 0;
+ sal_Int32 nStart = 0;
+ for (size_t i = 0; i < rValue.size(); ++i)
+ {
+ if (rValue[i] == '{')
+ {
+ if (!nLevel)
+ nStart = i;
+ nLevel++;
+ }
+ else if (rValue[i] == '}')
+ {
+ nLevel--;
+ if (!nLevel)
+ aSizes.push_back(lcl_parseSize(
+ rValue.substr(nStart + strlen("{ "), i - nStart - strlen(" },"))));
+ }
+ }
+
+ beans::PropertyValue aPropertyValue;
+ aPropertyValue.Name = "SubViewSize";
+ aPropertyValue.Value <<= comphelper::containerToSequence(aSizes);
+ rPath.push_back(aPropertyValue);
+}
+
+void lcl_parsePathSubViewSize(std::vector<beans::PropertyValue>& rPath, std::string_view rValue)
+{
+ sal_Int32 nLevel = 0;
+ bool bIgnore = false;
+ sal_Int32 nStart = 0;
+ for (size_t i = 0; i < rValue.size(); ++i)
+ {
+ if (rValue[i] == '{')
+ {
+ if (!nLevel)
+ bIgnore = true;
+ nLevel++;
+ }
+ else if (rValue[i] == '}')
+ {
+ nLevel--;
+ if (!nLevel)
+ bIgnore = false;
+ }
+ else if (rValue[i] == ',' && !bIgnore)
+ {
+ std::string_view aToken = rValue.substr(nStart, i - nStart);
+ static const char aExpectedPrefix[] = "Value = (any) { ([]com.sun.star.awt.Size) { ";
+ if (o3tl::starts_with(aToken, aExpectedPrefix))
+ {
+ aToken = aToken.substr(strlen(aExpectedPrefix),
+ aToken.size() - strlen(aExpectedPrefix) - strlen(" } }"));
+ lcl_parsePathSubViewSizeValues(rPath, aToken);
+ }
+ else if (!o3tl::starts_with(aToken, "Name =") && !o3tl::starts_with(aToken, "Handle ="))
+ SAL_WARN("oox", "lcl_parsePathSubViewSize: unexpected token: " << aToken);
+ nStart = i + strlen(", ");
+ }
+ }
+}
+
+void lcl_parsePath(std::vector<beans::PropertyValue>& rPath, std::string_view rValue)
+{
+ sal_Int32 nLevel = 0;
+ sal_Int32 nStart = 0;
+ for (size_t i = 0; i < rValue.size(); ++i)
+ {
+ if (rValue[i] == '{')
+ {
+ if (!nLevel)
+ nStart = i;
+ nLevel++;
+ }
+ else if (rValue[i] == '}')
+ {
+ nLevel--;
+ if (!nLevel)
+ {
+ std::string_view aToken
+ = rValue.substr(nStart + strlen("{ "), i - nStart - strlen(" },"));
+ if (o3tl::starts_with(aToken, "Name = \"Coordinates\""))
+ lcl_parsePathCoordinates(rPath, aToken);
+ else if (o3tl::starts_with(aToken, "Name = \"GluePoints\""))
+ lcl_parsePathGluePoints(rPath, aToken);
+ else if (o3tl::starts_with(aToken, "Name = \"Segments\""))
+ lcl_parsePathSegments(rPath, aToken);
+ else if (o3tl::starts_with(aToken, "Name = \"TextFrames\""))
+ lcl_parsePathTextFrames(rPath, aToken);
+ else if (o3tl::starts_with(aToken, "Name = \"SubViewSize\""))
+ lcl_parsePathSubViewSize(rPath, aToken);
+ else
+ SAL_WARN("oox", "lcl_parsePath: unexpected token: " << aToken);
+ }
+ }
+ }
+}
+}
+
+namespace oox::drawingml
+{
+void CustomShapeProperties::initializePresetDataMap()
+{
+ OUString aPath("$BRAND_BASE_DIR/" LIBO_SHARE_FOLDER "/filter/oox-drawingml-cs-presets");
+ rtl::Bootstrap::expandMacros(aPath);
+ SvFileStream aStream(aPath, StreamMode::READ);
+ if (aStream.GetError() != ERRCODE_NONE)
+ SAL_WARN("oox", "failed to open oox-drawingml-cs-presets");
+ OStringBuffer aLine;
+ OUString aName;
+ bool bNotDone = aStream.ReadLine(aLine);
+ PropertyMap aPropertyMap;
+ bool bFirst = true;
+ while (bNotDone)
+ {
+ static const char aCommentPrefix[] = "/* ";
+ if (o3tl::starts_with(aLine, aCommentPrefix))
+ {
+ if (bFirst)
+ bFirst = false;
+ else
+ maPresetDataMap[TokenMap::getTokenFromUnicode(aName)] = aPropertyMap;
+ aName = OUString::fromUtf8(std::string_view(aLine).substr(
+ strlen(aCommentPrefix),
+ aLine.getLength() - strlen(aCommentPrefix) - strlen(" */")));
+ }
+ else
+ {
+ if (std::string_view(aLine) == "AdjustmentValues")
+ {
+ aStream.ReadLine(aLine);
+ if (std::string_view(aLine)
+ != "([]com.sun.star.drawing.EnhancedCustomShapeAdjustmentValue) {}")
+ {
+ std::vector<drawing::EnhancedCustomShapeAdjustmentValue> aAdjustmentValues;
+ static constexpr std::string_view aExpectedPrefix(
+ "([]com.sun.star.drawing.EnhancedCustomShapeAdjustmentValue) { ");
+ assert(o3tl::starts_with(aLine, aExpectedPrefix));
+
+ std::string_view aValue = std::string_view(aLine).substr(
+ aExpectedPrefix.size(),
+ aLine.getLength() - aExpectedPrefix.size() - strlen(" }"));
+ lcl_parseAdjustmentValues(aAdjustmentValues, aValue);
+ aPropertyMap.setProperty(PROP_AdjustmentValues,
+ comphelper::containerToSequence(aAdjustmentValues));
+ }
+ else
+ aPropertyMap.setProperty(PROP_AdjustmentValues, uno::Sequence<OUString>(0));
+ }
+ else if (std::string_view(aLine) == "Equations")
+ {
+ aStream.ReadLine(aLine);
+ if (std::string_view(aLine) != "([]string) {}")
+ {
+ std::vector<OUString> aEquations;
+ static constexpr std::string_view aExpectedPrefix("([]string) { ");
+ assert(o3tl::starts_with(aLine, aExpectedPrefix));
+
+ std::string_view aValue = std::string_view(aLine).substr(
+ aExpectedPrefix.size(),
+ aLine.getLength() - aExpectedPrefix.size() - strlen(" }"));
+ lcl_parseEquations(aEquations, aValue);
+ aPropertyMap.setProperty(PROP_Equations,
+ comphelper::containerToSequence(aEquations));
+ }
+ else
+ aPropertyMap.setProperty(PROP_Equations, uno::Sequence<OUString>(0));
+ }
+ else if (std::string_view(aLine) == "Handles")
+ {
+ aStream.ReadLine(aLine);
+ if (std::string_view(aLine) != "([][]com.sun.star.beans.PropertyValue) {}")
+ {
+ std::vector<uno::Sequence<beans::PropertyValue>> aHandles;
+ static constexpr std::string_view aExpectedPrefix(
+ "([][]com.sun.star.beans.PropertyValue) { ");
+ assert(o3tl::starts_with(aLine, aExpectedPrefix));
+
+ std::string_view aValue = std::string_view(aLine).substr(
+ aExpectedPrefix.size(),
+ aLine.getLength() - aExpectedPrefix.size() - strlen(" }"));
+ lcl_parseHandles(aHandles, aValue);
+ aPropertyMap.setProperty(PROP_Handles,
+ comphelper::containerToSequence(aHandles));
+ }
+ else
+ aPropertyMap.setProperty(PROP_Handles, uno::Sequence<OUString>(0));
+ }
+ else if (std::string_view(aLine) == "MirroredX")
+ {
+ aStream.ReadLine(aLine);
+ if (std::string_view(aLine) == "true" || std::string_view(aLine) == "false")
+ {
+ aPropertyMap.setProperty(PROP_MirroredX, std::string_view(aLine) == "true");
+ }
+ else
+ SAL_WARN("oox", "CustomShapeProperties::initializePresetDataMap: unexpected "
+ "MirroredX parameter");
+ }
+ else if (std::string_view(aLine) == "MirroredY")
+ {
+ aStream.ReadLine(aLine);
+ if (std::string_view(aLine) == "true" || std::string_view(aLine) == "false")
+ {
+ aPropertyMap.setProperty(PROP_MirroredY, std::string_view(aLine) == "true");
+ }
+ else
+ SAL_WARN("oox", "CustomShapeProperties::initializePresetDataMap: unexpected "
+ "MirroredY parameter");
+ }
+ else if (std::string_view(aLine) == "Path")
+ {
+ aStream.ReadLine(aLine);
+ static constexpr std::string_view aExpectedPrefix(
+ "([]com.sun.star.beans.PropertyValue) { ");
+ assert(o3tl::starts_with(aLine, aExpectedPrefix));
+
+ std::vector<beans::PropertyValue> aPathValue;
+ std::string_view aValue = std::string_view(aLine).substr(
+ aExpectedPrefix.size(),
+ aLine.getLength() - aExpectedPrefix.size() - strlen(" }"));
+ lcl_parsePath(aPathValue, aValue);
+ aPropertyMap.setProperty(PROP_Path, comphelper::containerToSequence(aPathValue));
+ }
+ else if (std::string_view(aLine) == "Type")
+ {
+ // Just ignore the line here, we already know the correct type.
+ aStream.ReadLine(aLine);
+ aPropertyMap.setProperty(PROP_Type, "ooxml-" + aName);
+ }
+ else if (std::string_view(aLine) == "ViewBox")
+ {
+ aStream.ReadLine(aLine);
+ static constexpr std::string_view aExpectedPrefix(
+ "(com.sun.star.awt.Rectangle) { ");
+ assert(o3tl::starts_with(aLine, aExpectedPrefix));
+
+ std::string_view aValue = std::string_view(aLine).substr(
+ aExpectedPrefix.size(),
+ aLine.getLength() - aExpectedPrefix.size() - strlen(" }"));
+ aPropertyMap.setProperty(PROP_ViewBox, lcl_parseRectangle(aValue));
+ }
+ else
+ SAL_WARN("oox", "CustomShapeProperties::initializePresetDataMap: unhandled line: "
+ << std::string_view(aLine));
+ }
+ bNotDone = aStream.ReadLine(aLine);
+ }
+ maPresetDataMap[TokenMap::getTokenFromUnicode(aName)] = aPropertyMap;
+}
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/oox/source/drawingml/customshapeproperties.cxx b/oox/source/drawingml/customshapeproperties.cxx
new file mode 100644
index 000000000..f56b8bfb1
--- /dev/null
+++ b/oox/source/drawingml/customshapeproperties.cxx
@@ -0,0 +1,364 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ *
+ * This file incorporates work covered by the following license notice:
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed
+ * with this work for additional information regarding copyright
+ * ownership. The ASF licenses this file to you under the Apache
+ * License, Version 2.0 (the "License"); you may not use this file
+ * except in compliance with the License. You may obtain a copy of
+ * the License at http://www.apache.org/licenses/LICENSE-2.0 .
+ */
+
+#include <drawingml/customshapeproperties.hxx>
+#include <oox/helper/propertymap.hxx>
+#include <oox/helper/propertyset.hxx>
+#include <oox/token/properties.hxx>
+#include <oox/token/tokenmap.hxx>
+#include <com/sun/star/awt/Rectangle.hpp>
+#include <com/sun/star/awt/Size.hpp>
+#include <com/sun/star/beans/PropertyValues.hpp>
+#include <com/sun/star/beans/XPropertySet.hpp>
+#include <com/sun/star/drawing/EnhancedCustomShapeAdjustmentValue.hpp>
+#include <com/sun/star/drawing/EnhancedCustomShapeTextFrame.hpp>
+#include <com/sun/star/drawing/XEnhancedCustomShapeDefaulter.hpp>
+#include <com/sun/star/drawing/XShape.hpp>
+#include <comphelper/sequence.hxx>
+#include <o3tl/string_view.hxx>
+#include <sal/log.hxx>
+
+#include <algorithm>
+
+using namespace ::com::sun::star;
+using namespace ::com::sun::star::uno;
+using namespace ::com::sun::star::beans;
+using namespace ::com::sun::star::drawing;
+
+namespace oox::drawingml {
+
+CustomShapeProperties::CustomShapeProperties()
+: mnShapePresetType ( -1 )
+, mbShapeTypeOverride(false)
+, mbMirroredX ( false )
+, mbMirroredY ( false )
+, mnTextRotateAngle ( 0 )
+, mnTextCameraZRotateAngle ( 0 )
+, mnArcNum ( 0 )
+{
+}
+
+uno::Sequence< sal_Int8 > const & CustomShapeProperties::getShapePresetTypeName() const
+{
+ return StaticTokenMap().getUtf8TokenName( mnShapePresetType );
+}
+
+sal_Int32 CustomShapeProperties::SetCustomShapeGuideValue( std::vector< CustomShapeGuide >& rGuideList, const CustomShapeGuide& rGuide )
+{
+ std::vector<CustomShapeGuide>::size_type nIndex = 0;
+ for( ; nIndex < rGuideList.size(); nIndex++ )
+ {
+ if ( rGuideList[ nIndex ].maName == rGuide.maName )
+ break;
+ }
+ if ( nIndex == rGuideList.size() )
+ rGuideList.push_back( rGuide );
+ return static_cast< sal_Int32 >( nIndex );
+}
+
+// returns the index into the guidelist for a given formula name,
+// if the return value is < 0 then the guide value could not be found
+sal_Int32 CustomShapeProperties::GetCustomShapeGuideValue( const std::vector< CustomShapeGuide >& rGuideList, std::u16string_view rFormulaName )
+{
+ // traverse the list from the end, because guide names can be reused
+ // and current is the last one
+ // see a1 guide in gear6 custom shape preset as example
+ sal_Int32 nIndex = static_cast< sal_Int32 >( rGuideList.size() ) - 1;
+ for( ; nIndex >= 0; nIndex-- )
+ {
+ if ( rGuideList[ nIndex ].maName == rFormulaName )
+ break;
+ }
+
+ return nIndex;
+}
+
+bool CustomShapeProperties::representsDefaultShape() const
+{
+ return !((getShapePresetType() >= 0 || maPath2DList.size() > 0) &&
+ getShapePresetType() != XML_Rect &&
+ getShapePresetType() != XML_rect);
+}
+
+CustomShapeProperties::PresetDataMap CustomShapeProperties::maPresetDataMap;
+
+void CustomShapeProperties::pushToPropSet(
+ const Reference < XPropertySet >& xPropSet, const awt::Size &aSize )
+{
+ if ( mnShapePresetType >= 0 )
+ {
+ SAL_INFO("oox.drawingml", "preset: " << mnShapePresetType);
+
+ if (maPresetDataMap.empty())
+ initializePresetDataMap();
+
+ PropertyMap aPropertyMap;
+ PropertySet aPropSet( xPropSet );
+
+ if (maPresetDataMap.find(mnShapePresetType) != maPresetDataMap.end())
+ {
+ SAL_INFO(
+ "oox.drawingml",
+ "found property map for preset: " << mnShapePresetType);
+
+ aPropertyMap = maPresetDataMap[mnShapePresetType];
+#ifdef DEBUG
+ aPropertyMap.dumpCode( aPropertyMap.makePropertySet() );
+#endif
+ }
+
+ aPropertyMap.setProperty( PROP_MirroredX, mbMirroredX );
+ aPropertyMap.setProperty( PROP_MirroredY, mbMirroredY );
+ aPropertyMap.setProperty( PROP_TextPreRotateAngle, mnTextRotateAngle );
+ aPropertyMap.setProperty( PROP_TextCameraZRotateAngle, mnTextCameraZRotateAngle );
+ Sequence< PropertyValue > aSeq = aPropertyMap.makePropertyValueSequence();
+ aPropSet.setProperty( PROP_CustomShapeGeometry, aSeq );
+
+ if ( !maAdjustmentGuideList.empty() )
+ {
+ static const OUStringLiteral sCustomShapeGeometry(u"CustomShapeGeometry");
+ static const OUStringLiteral sAdjustmentValues(u"AdjustmentValues");
+ uno::Any aGeoPropSet = xPropSet->getPropertyValue( sCustomShapeGeometry );
+ uno::Sequence< beans::PropertyValue > aGeoPropSeq;
+ if ( aGeoPropSet >>= aGeoPropSeq )
+ {
+ for ( auto& rGeoProp : asNonConstRange(aGeoPropSeq) )
+ {
+ if ( rGeoProp.Name == sAdjustmentValues )
+ {
+ uno::Sequence< css::drawing::EnhancedCustomShapeAdjustmentValue > aAdjustmentSeq;
+ if ( rGeoProp.Value >>= aAdjustmentSeq )
+ {
+ auto aAdjustmentSeqRange = asNonConstRange(aAdjustmentSeq);
+ int nIndex=0;
+ for (auto const& adjustmentGuide : maAdjustmentGuideList)
+ {
+ if ( adjustmentGuide.maName.getLength() > 3 )
+ {
+ sal_Int32 nAdjustmentIndex = o3tl::toInt32(adjustmentGuide.maName.subView( 3 )) - 1;
+ if ( ( nAdjustmentIndex >= 0 ) && ( nAdjustmentIndex < aAdjustmentSeq.getLength() ) )
+ {
+ EnhancedCustomShapeAdjustmentValue aAdjustmentVal;
+ aAdjustmentVal.Value <<= adjustmentGuide.maFormula.toInt32();
+ aAdjustmentVal.State = PropertyState_DIRECT_VALUE;
+ aAdjustmentVal.Name = adjustmentGuide.maName;
+ aAdjustmentSeqRange[ nAdjustmentIndex ] = aAdjustmentVal;
+ }
+ } else if ( aAdjustmentSeq.hasElements() ) {
+ EnhancedCustomShapeAdjustmentValue aAdjustmentVal;
+ aAdjustmentVal.Value <<= adjustmentGuide.maFormula.toInt32();
+ aAdjustmentVal.State = PropertyState_DIRECT_VALUE;
+ aAdjustmentVal.Name = adjustmentGuide.maName;
+ if (nIndex < aAdjustmentSeq.getLength())
+ {
+ aAdjustmentSeqRange[nIndex] = aAdjustmentVal;
+ ++nIndex;
+ }
+ }
+ }
+ rGeoProp.Value <<= aAdjustmentSeq;
+ xPropSet->setPropertyValue( sCustomShapeGeometry, Any( aGeoPropSeq ) );
+ break;
+ }
+ }
+ }
+ }
+ }
+ }
+ else
+ {
+ PropertyMap aPropertyMap;
+ aPropertyMap.setProperty( PROP_Type, OUString( "ooxml-non-primitive" ));
+ aPropertyMap.setProperty( PROP_MirroredX, mbMirroredX );
+ aPropertyMap.setProperty( PROP_MirroredY, mbMirroredY );
+ if( mnTextRotateAngle )
+ aPropertyMap.setProperty( PROP_TextPreRotateAngle, mnTextRotateAngle );
+ // Note 1: If Equations are defined - they are processed using internal div by 360 coordinates
+ // while if they are not, standard ooxml coordinates are used.
+ // This size specifically affects scaling.
+ // Note 2: Width and Height are set to 0 to force scaling to 1.
+ awt::Rectangle aViewBox( 0, 0, aSize.Width, aSize.Height );
+ // tdf#113187 Each ArcTo introduces two additional equations for converting start and swing
+ // angles. They do not count for test for use of standard ooxml coordinates
+ if (maGuideList.size() - 2 * countArcTo() > 0)
+ aViewBox = awt::Rectangle( 0, 0, 0, 0 );
+ aPropertyMap.setProperty( PROP_ViewBox, aViewBox);
+
+ Sequence< EnhancedCustomShapeAdjustmentValue > aAdjustmentValues( maAdjustmentGuideList.size() );
+ auto aAdjustmentValuesRange = asNonConstRange(aAdjustmentValues);
+ for ( std::vector<CustomShapeGuide>::size_type i = 0; i < maAdjustmentGuideList.size(); i++ )
+ {
+ EnhancedCustomShapeAdjustmentValue aAdjustmentVal;
+ aAdjustmentVal.Value <<= maAdjustmentGuideList[ i ].maFormula.toInt32();
+ aAdjustmentVal.State = PropertyState_DIRECT_VALUE;
+ aAdjustmentVal.Name = maAdjustmentGuideList[ i ].maName;
+ aAdjustmentValuesRange[ i ] = aAdjustmentVal;
+ }
+ aPropertyMap.setProperty( PROP_AdjustmentValues, aAdjustmentValues);
+
+ PropertyMap aPath;
+
+ aPath.setProperty( PROP_Segments, comphelper::containerToSequence(maSegments) );
+
+ if ( maTextRect.has() ) {
+ Sequence< EnhancedCustomShapeTextFrame > aTextFrames{
+ { /* tl */ { maTextRect.get().l, maTextRect.get().t },
+ /* br */ { maTextRect.get().r, maTextRect.get().b } }
+ };
+ aPath.setProperty( PROP_TextFrames, aTextFrames);
+ }
+
+ sal_uInt32 nParameterPairs = 0;
+ for ( auto const & i: maPath2DList )
+ nParameterPairs += i.parameter.size();
+
+ Sequence< EnhancedCustomShapeParameterPair > aParameterPairs( nParameterPairs );
+ auto aParameterPairsRange = asNonConstRange(aParameterPairs);
+ sal_uInt32 k = 0;
+ for ( auto const & i: maPath2DList )
+ for ( auto const & j: i.parameter )
+ aParameterPairsRange[ k++ ] = j;
+ aPath.setProperty( PROP_Coordinates, aParameterPairs);
+
+ if ( !maPath2DList.empty() )
+ {
+ bool bAllZero = true;
+ for ( auto const & i: maPath2DList )
+ {
+ if ( i.w || i.h ) {
+ bAllZero = false;
+ break;
+ }
+ }
+
+ if ( !bAllZero ) {
+ Sequence< awt::Size > aSubViewSize( maPath2DList.size() );
+ std::transform(maPath2DList.begin(), maPath2DList.end(), aSubViewSize.getArray(),
+ [](const auto& p2d)
+ {
+ SAL_INFO("oox.cscode",
+ "set subpath; size: " << p2d.w << " x " << p2d.h);
+ return awt::Size(p2d.w, p2d.h);
+ });
+ aPath.setProperty( PROP_SubViewSize, aSubViewSize);
+ }
+ }
+
+ Sequence< PropertyValue > aPathSequence = aPath.makePropertyValueSequence();
+ aPropertyMap.setProperty( PROP_Path, aPathSequence);
+
+ Sequence< OUString > aEquations( maGuideList.size() );
+ std::transform(maGuideList.begin(), maGuideList.end(), aEquations.getArray(),
+ [](const auto& g) { return g.maFormula; });
+ aPropertyMap.setProperty( PROP_Equations, aEquations);
+
+ Sequence< PropertyValues > aHandles( maAdjustHandleList.size() );
+ auto aHandlesRange = asNonConstRange(aHandles);
+ for ( std::vector<AdjustHandle>::size_type i = 0; i < maAdjustHandleList.size(); i++ )
+ {
+ PropertyMap aHandle;
+ // maAdjustmentHandle[ i ].gdRef1 ... maAdjustmentHandle[ i ].gdRef2 ... :(
+ // gdRef1 && gdRef2 -> we do not offer such reference, so it is difficult
+ // to determine the correct adjustment handle that should be updated with the adjustment
+ // position. here is the solution: the adjustment value that is used within the position
+ // has to be updated, in case the position is a formula the first usage of a
+ // adjustment value is decisive
+ if ( maAdjustHandleList[ i ].polar )
+ {
+ // Polar handles in DrawingML
+ // 1. don't have reference center, so PROP_Polar isn't needed.
+ // 2. position always use planar coordinates.
+ // 3. use RefAngle and RefR to specify adjustment value to be updated.
+ // 4. The unit of angular adjustment values are 6000th degree.
+
+ aHandle.setProperty( PROP_Position, maAdjustHandleList[ i ].pos);
+ if ( maAdjustHandleList[ i ].gdRef1.has() )
+ {
+ sal_Int32 nIndex = GetCustomShapeGuideValue( maAdjustmentGuideList, maAdjustHandleList[ i ].gdRef1.get() );
+ if ( nIndex >= 0 )
+ aHandle.setProperty( PROP_RefR, nIndex);
+ }
+ if ( maAdjustHandleList[ i ].gdRef2.has() )
+ {
+ sal_Int32 nIndex = GetCustomShapeGuideValue( maAdjustmentGuideList, maAdjustHandleList[ i ].gdRef2.get() );
+ if ( nIndex >= 0 )
+ aHandle.setProperty( PROP_RefAngle, nIndex);
+ }
+ if ( maAdjustHandleList[ i ].min1.has() )
+ aHandle.setProperty( PROP_RadiusRangeMinimum, maAdjustHandleList[ i ].min1.get());
+ if ( maAdjustHandleList[ i ].max1.has() )
+ aHandle.setProperty( PROP_RadiusRangeMaximum, maAdjustHandleList[ i ].max1.get());
+
+ /* TODO: AngleMin & AngleMax
+ if ( maAdjustHandleList[ i ].min2.has() )
+ aHandle.setProperty( PROP_ ] = maAdjustHandleList[ i ].min2.get());
+ if ( maAdjustHandleList[ i ].max2.has() )
+ aHandle.setProperty( PROP_ ] = maAdjustHandleList[ i ].max2.get());
+ */
+ }
+ else
+ {
+ aHandle.setProperty( PROP_Position, maAdjustHandleList[ i ].pos);
+ if ( maAdjustHandleList[ i ].gdRef1.has() )
+ {
+ // TODO: PROP_RefX and PROP_RefY are not yet part of our file format,
+ // so the handles will not work after save/reload
+ sal_Int32 nIndex = GetCustomShapeGuideValue( maAdjustmentGuideList, maAdjustHandleList[ i ].gdRef1.get() );
+ if ( nIndex >= 0 )
+ aHandle.setProperty( PROP_RefX, nIndex);
+ }
+ if ( maAdjustHandleList[ i ].gdRef2.has() )
+ {
+ sal_Int32 nIndex = GetCustomShapeGuideValue( maAdjustmentGuideList, maAdjustHandleList[ i ].gdRef2.get() );
+ if ( nIndex >= 0 )
+ aHandle.setProperty( PROP_RefY, nIndex);
+ }
+ if ( maAdjustHandleList[ i ].min1.has() )
+ aHandle.setProperty( PROP_RangeXMinimum, maAdjustHandleList[ i ].min1.get());
+ if ( maAdjustHandleList[ i ].max1.has() )
+ aHandle.setProperty( PROP_RangeXMaximum, maAdjustHandleList[ i ].max1.get());
+ if ( maAdjustHandleList[ i ].min2.has() )
+ aHandle.setProperty( PROP_RangeYMinimum, maAdjustHandleList[ i ].min2.get());
+ if ( maAdjustHandleList[ i ].max2.has() )
+ aHandle.setProperty( PROP_RangeYMaximum, maAdjustHandleList[ i ].max2.get());
+ }
+ aHandlesRange[ i ] = aHandle.makePropertyValueSequence();
+ }
+ aPropertyMap.setProperty( PROP_Handles, aHandles);
+
+#ifdef DEBUG
+ // Note that the script oox/source/drawingml/customshapes/generatePresetsData.pl looks
+ // for these ==cscode== and ==csdata== markers, so don't "clean up" these SAL_INFOs.
+ SAL_INFO("oox.cscode", "==cscode== begin");
+ aPropertyMap.dumpCode( aPropertyMap.makePropertySet() );
+ SAL_INFO("oox.cscode", "==cscode== end");
+ SAL_INFO("oox.csdata", "==csdata== begin");
+ aPropertyMap.dumpData( aPropertyMap.makePropertySet() );
+ SAL_INFO("oox.csdata", "==csdata== end");
+#endif
+ // converting the vector to a sequence
+ Sequence< PropertyValue > aSeq = aPropertyMap.makePropertyValueSequence();
+ PropertySet aPropSet( xPropSet );
+ aPropSet.setProperty( PROP_CustomShapeGeometry, aSeq );
+ }
+}
+
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/oox/source/drawingml/customshapes/README.md b/oox/source/drawingml/customshapes/README.md
new file mode 100644
index 000000000..4b79fefc6
--- /dev/null
+++ b/oox/source/drawingml/customshapes/README.md
@@ -0,0 +1,19 @@
+# Generating Custom Shape Presets
+
+The Perl code (`generatePresetsData.pl` and `generatePresetsPPTXs.pl`) is used
+to generate the custom shape presets.
+
+The `generate.sh` script which invokes the above Perl files, should be invoked
+from the libreoffice core top-level source folder:
+```
+oox/source/drawingml/customshapes/generate.sh
+```
+The logs will be created in the file:
+```
+oox/source/drawingml/customshapes/custom-shapes.log
+```
+
+The output would be placed in this folder:
+```
+oox/source/drawingml/customshapes/pptx/
+``` \ No newline at end of file
diff --git a/oox/source/drawingml/customshapes/cshape.pptx b/oox/source/drawingml/customshapes/cshape.pptx
new file mode 100644
index 000000000..ec42eb93f
--- /dev/null
+++ b/oox/source/drawingml/customshapes/cshape.pptx
Binary files differ
diff --git a/oox/source/drawingml/customshapes/generate.sh b/oox/source/drawingml/customshapes/generate.sh
new file mode 100755
index 000000000..b0e661ec1
--- /dev/null
+++ b/oox/source/drawingml/customshapes/generate.sh
@@ -0,0 +1,38 @@
+#!/usr/bin/env bash
+
+# This script is used to generate the custom shape presets
+
+# We want to exit on errors...
+
+set -o errexit
+
+# oox needs to be build with dbglevel=2 so that DEBUG is defined.
+
+make oox.clean && make oox dbglevel=2
+
+# This reads the
+# oox/source/drawingml/customshapes/presetShapeDefinitions.xml file.
+# It will produce the file
+# oox/source/drawingml/customshapes/pptx/cshape-all.ppx and a whole
+# bunch of other files that aren't needed further.
+
+(cd oox/source/drawingml/customshapes && ./generatePresetsPPTXs.pl)
+
+
+# Then load it and store the debugging output.
+# We need only the SAL_INFO output with tag "oox.csdata", plus stderr
+# for PropertyMap::dumpData() output.
+
+SAL_LOG='+INFO.oox.csdata-WARN' instdir/program/soffice --headless --convert-to odp --outdir oox/source/drawingml/customshapes/ oox/source/drawingml/customshapes/pptx/cshape-all.pptx > oox/source/drawingml/customshapes/custom-shapes.log 2>&1
+
+
+# Now run a script that reads the above log file and generates the
+# oox-drawingml-cs-presets data:
+
+(cd oox/source/drawingml/customshapes && ./generatePresetsData.pl)
+
+
+echo
+echo "To see what has been done, run git diff --patience oox/source/drawingml"
+echo
+
diff --git a/oox/source/drawingml/customshapes/generatePresetsData.pl b/oox/source/drawingml/customshapes/generatePresetsData.pl
new file mode 100755
index 000000000..99b2ff153
--- /dev/null
+++ b/oox/source/drawingml/customshapes/generatePresetsData.pl
@@ -0,0 +1,74 @@
+#!/usr/bin/env perl
+#
+# This file is part of the LibreOffice project.
+#
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+
+sub loadData()
+{
+ open (IN, "<custom-shapes.log");
+
+ my %sources;
+
+ while (<IN>)
+ {
+ if (/==csdata== /)
+ {
+ if (/shape name: '/)
+ {
+ chop;
+ s/.*shape name: '([^']+)'.*/$1/;
+ $name = $_;
+ }
+ else
+ {
+ if (/==csdata== begin/)
+ {
+ $inside = true;
+ @code = ();
+ }
+ else
+ {
+ if (/==csdata== end/)
+ {
+ s/^ <\/([^>]+)>/$1/;
+ undef $inside;
+ $sources{$name} = [ @code ];
+ }
+ }
+ }
+ }
+ else
+ {
+ if ($inside)
+ {
+ push @code, $_;
+ }
+ }
+ }
+
+ close (IN);
+
+ return \%sources;
+}
+
+sub generateData
+{
+ my $sources = shift;
+ open (OUT, ">oox-drawingml-cs-presets");
+
+ foreach $shape (sort(keys %$sources))
+ {
+ printf OUT "/* %s */\n", $shape;
+ print OUT @{$sources->{$shape}};
+ }
+
+ close OUT;
+}
+
+generateData(loadData());
+
+# vim:set ft=perl shiftwidth=4 softtabstop=4 expandtab: #
diff --git a/oox/source/drawingml/customshapes/generatePresetsPPTXs.pl b/oox/source/drawingml/customshapes/generatePresetsPPTXs.pl
new file mode 100755
index 000000000..246bfddcd
--- /dev/null
+++ b/oox/source/drawingml/customshapes/generatePresetsPPTXs.pl
@@ -0,0 +1,193 @@
+#!/usr/bin/env perl
+#
+# This file is part of the LibreOffice project.
+#
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+
+use IO::Handle;
+
+$shapes = loadShapes ();
+
+generatePPTXs($shapes);
+exit;
+
+
+sub generatePPTXs
+{
+ $shapes = shift;
+
+ foreach $shape (keys %$shapes)
+ {
+ generatePPTX ($shapes, $shape);
+ }
+
+ generatePPTX ($shapes);
+}
+
+sub generatePPTX
+{
+ $shapes = shift;
+ $type = shift;
+
+ mkdir ("cshape");
+ mkdir ("pptx");
+ system ("unzip -qq -o -d cshape cshape.pptx");
+
+ # custom shape(s) slide with preset definition
+ generateSlide ($shapes, $type, ">cshape/ppt/slides/slide1.xml", 0);
+
+ $pptx = "../pptx/cshape-" . (defined $type ? $type : "all") . ".pptx";
+ system ("cd cshape\nrm -rf ". $pptx . "\nzip -q -r " . $pptx . " .\ncd ..");
+
+ # preset(s) slide, for testing
+ generateSlide ($shapes, $type, ">cshape/ppt/slides/slide1.xml", 1);
+
+ $pptx = "../pptx/preset-cshape-" . (defined $type ? $type : "all") . ".pptx";
+ system ("cd cshape\nrm -rf ". $pptx . "\nzip -q -r " . $pptx . " .\ncd ..");
+}
+
+sub loadShapes()
+{
+ open (IN, "<presetShapeDefinitions.xml");
+
+ $inside = false;
+ my %shapes;
+
+ while (<IN>)
+ {
+ if (/^ <[^\/]/)
+ {
+ $inside = true;
+ @definition = ();
+ }
+ else
+ {
+ if (/^ <\//)
+ {
+ chomp;
+ s/^ <\/([^>]+)>.*/$1/;
+ undef $inside;
+ $shapes{$_} = [ @definition ];
+ #print "added ", $_, "\n";
+ }
+ else
+ {
+ if ($inside)
+ {
+ push @definition, $_;
+ }
+ }
+ }
+ }
+
+ close (IN);
+
+ return \%shapes;
+}
+
+sub generateSlide
+{
+ $shapes = shift;
+ $type = shift;
+ $file = shift;
+ $preset = shift;
+
+ open (OUT, $file);
+
+ print OUT "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>
+<p:sld xmlns:a=\"http://schemas.openxmlformats.org/drawingml/2006/main\" xmlns:r=\"http://schemas.openxmlformats.org/officeDocument/2006/relationships\" xmlns:p=\"http://schemas.openxmlformats.org/presentationml/2006/main\">
+ <p:cSld>
+ <p:spTree>
+ <p:nvGrpSpPr>
+ <p:cNvPr id=\"1\" name=\"\"/>
+ <p:cNvGrpSpPr/>
+ <p:nvPr/>
+ </p:nvGrpSpPr>
+ <p:grpSpPr>
+ <a:xfrm>
+ <a:off x=\"0\" y=\"0\"/>
+ <a:ext cx=\"0\" cy=\"0\"/>
+ <a:chOff x=\"0\" y=\"0\"/>
+ <a:chExt cx=\"0\" cy=\"0\"/>
+ </a:xfrm>
+ </p:grpSpPr>
+";
+
+ $id = 16;
+ $col = 0;
+ $row = 0;
+ $size = 500000;
+ foreach $shape (keys %$shapes)
+ {
+ if (defined $type) {
+ if ($shape ne $type) { next; }
+# <a:ext cx=\"1050925\" cy=\"457200\"/>
+# <a:ext cx=\"1000000\" cy=\"1000000\"/>
+ $size *= 10;
+ $col = 0.5;
+ $row = 0.25;
+ }
+
+ if ($col > 15) {
+ $col = 0;
+ $row ++;
+ }
+
+ print OUT " <p:sp>
+ <p:nvSpPr>
+ <p:cNvPr id=\"", $id++, "\" name=\"", $shape, "\"/>
+ <p:cNvSpPr/>
+ <p:nvPr/>
+ </p:nvSpPr>
+ <p:spPr bwMode=\"auto\">
+ <a:xfrm>
+ <a:off x=\"" . (350000 + $col++*$size) . "\" y=\"" . (450000 + $row*$size) . "\"/>
+ <a:ext cx=\"" . (4*$size/5) . "\" cy=\"" . (4*$size/5) . "\"/>
+ </a:xfrm>
+";
+ if ($preset) {
+ print OUT " <a:prstGeom prst=\"" . $shape . "\"><a:avLst/></a:prstGeom>
+";
+ } else {
+ print OUT " <a:custGeom>
+";
+ print OUT @{$shapes->{$shape}};
+ print OUT " </a:custGeom>
+";
+ }
+ print OUT " <a:solidFill>
+ <a:srgbClr val=\"FFFF7F\"/>
+ </a:solidFill>
+ <a:ln w=\"19080\">
+ <a:solidFill>
+ <a:srgbClr val=\"A0A060\"/>
+ </a:solidFill>
+ <a:miter lim=\"800000\"/>
+ <a:headEnd/>
+ <a:tailEnd/>
+ </a:ln>
+ </p:spPr>
+ </p:sp>
+";
+ }
+
+ print OUT " </p:spTree>
+ </p:cSld>
+ <p:clrMapOvr>
+ <a:masterClrMapping/>
+ </p:clrMapOvr>
+ <p:timing>
+ <p:tnLst>
+ <p:par>
+ <p:cTn id=\"1\" dur=\"indefinite\" restart=\"never\" nodeType=\"tmRoot\"/>
+ </p:par>
+ </p:tnLst>
+ </p:timing>
+</p:sld>
+";
+
+ close (OUT);
+}
diff --git a/oox/source/drawingml/customshapes/oox-drawingml-cs-presets b/oox/source/drawingml/customshapes/oox-drawingml-cs-presets
new file mode 100644
index 000000000..a88d30040
--- /dev/null
+++ b/oox/source/drawingml/customshapes/oox-drawingml-cs-presets
@@ -0,0 +1,3179 @@
+/* accentBorderCallout1 */
+AdjustmentValues
+([]com.sun.star.drawing.EnhancedCustomShapeAdjustmentValue) { { Value = (any) { (long) 18750 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE, Name = "adj1" }, { Value = (any) { (long) -8333 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE, Name = "adj2" }, { Value = (any) { (long) 112500 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE, Name = "adj3" }, { Value = (any) { (long) -38333 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE, Name = "adj4" } }
+Equations
+([]string) { "logheight*$0 /100000", "logwidth*$1 /100000", "logheight*$2 /100000", "logwidth*$3 /100000", "logwidth", "logheight/2", "logwidth/2", "logheight" }
+Handles
+([][]com.sun.star.beans.PropertyValue) { { { Name = "Position", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 1 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeXMaximum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2147483647 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeXMinimum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) -2147483647 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeYMaximum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2147483647 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeYMinimum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) -2147483647 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RefX", Handle = (long) 0, Value = (any) { (long) 1 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RefY", Handle = (long) 0, Value = (any) { (long) 0 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }, { { Name = "Position", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeXMaximum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2147483647 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeXMinimum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) -2147483647 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeYMaximum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2147483647 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeYMinimum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) -2147483647 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RefX", Handle = (long) 0, Value = (any) { (long) 3 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RefY", Handle = (long) 0, Value = (any) { (long) 2 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } } }
+MirroredX
+false
+MirroredY
+false
+Path
+([]com.sun.star.beans.PropertyValue) { { Name = "Coordinates", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeParameterPair) { { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "Segments", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeSegment) { { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 3 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 }, { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 1 }, { Command = (short) 6, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 }, { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 1 }, { Command = (short) 6, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "TextFrames", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeTextFrame) { { TopLeft = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, BottomRight = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7 }, Type = (short) 1 } } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }
+Type
+"ooxml-non-primitive"
+ViewBox
+(com.sun.star.awt.Rectangle) { X = (long) 0, Y = (long) 0, Width = (long) 0, Height = (long) 0 }
+/* accentBorderCallout2 */
+AdjustmentValues
+([]com.sun.star.drawing.EnhancedCustomShapeAdjustmentValue) { { Value = (any) { (long) 18750 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE, Name = "adj1" }, { Value = (any) { (long) -8333 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE, Name = "adj2" }, { Value = (any) { (long) 18750 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE, Name = "adj3" }, { Value = (any) { (long) -16667 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE, Name = "adj4" }, { Value = (any) { (long) 112500 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE, Name = "adj5" }, { Value = (any) { (long) -46667 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE, Name = "adj6" } }
+Equations
+([]string) { "logheight*$0 /100000", "logwidth*$1 /100000", "logheight*$2 /100000", "logwidth*$3 /100000", "logheight*$4 /100000", "logwidth*$5 /100000", "logwidth", "logheight/2", "logwidth/2", "logheight" }
+Handles
+([][]com.sun.star.beans.PropertyValue) { { { Name = "Position", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 1 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeXMaximum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2147483647 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeXMinimum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) -2147483647 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeYMaximum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2147483647 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeYMinimum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) -2147483647 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RefX", Handle = (long) 0, Value = (any) { (long) 1 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RefY", Handle = (long) 0, Value = (any) { (long) 0 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }, { { Name = "Position", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeXMaximum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2147483647 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeXMinimum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) -2147483647 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeYMaximum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2147483647 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeYMinimum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) -2147483647 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RefX", Handle = (long) 0, Value = (any) { (long) 3 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RefY", Handle = (long) 0, Value = (any) { (long) 2 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }, { { Name = "Position", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeXMaximum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2147483647 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeXMinimum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) -2147483647 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeYMaximum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2147483647 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeYMinimum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) -2147483647 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RefX", Handle = (long) 0, Value = (any) { (long) 5 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RefY", Handle = (long) 0, Value = (any) { (long) 4 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } } }
+MirroredX
+false
+MirroredY
+false
+Path
+([]com.sun.star.beans.PropertyValue) { { Name = "Coordinates", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeParameterPair) { { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 6 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 6 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 9 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 9 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 9 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "Segments", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeSegment) { { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 3 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 }, { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 1 }, { Command = (short) 6, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 }, { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 2 }, { Command = (short) 6, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "TextFrames", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeTextFrame) { { TopLeft = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, BottomRight = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 6 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 9 }, Type = (short) 1 } } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }
+Type
+"ooxml-non-primitive"
+ViewBox
+(com.sun.star.awt.Rectangle) { X = (long) 0, Y = (long) 0, Width = (long) 0, Height = (long) 0 }
+/* accentBorderCallout3 */
+AdjustmentValues
+([]com.sun.star.drawing.EnhancedCustomShapeAdjustmentValue) { { Value = (any) { (long) 18750 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE, Name = "adj1" }, { Value = (any) { (long) -8333 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE, Name = "adj2" }, { Value = (any) { (long) 18750 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE, Name = "adj3" }, { Value = (any) { (long) -16667 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE, Name = "adj4" }, { Value = (any) { (long) 100000 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE, Name = "adj5" }, { Value = (any) { (long) -16667 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE, Name = "adj6" }, { Value = (any) { (long) 112963 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE, Name = "adj7" }, { Value = (any) { (long) -8333 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE, Name = "adj8" } }
+Equations
+([]string) { "logheight*$0 /100000", "logwidth*$1 /100000", "logheight*$2 /100000", "logwidth*$3 /100000", "logheight*$4 /100000", "logwidth*$5 /100000", "logheight*$6 /100000", "logwidth*$7 /100000", "logwidth", "logheight/2", "logwidth/2", "logheight" }
+Handles
+([][]com.sun.star.beans.PropertyValue) { { { Name = "Position", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 1 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeXMaximum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2147483647 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeXMinimum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) -2147483647 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeYMaximum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2147483647 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeYMinimum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) -2147483647 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RefX", Handle = (long) 0, Value = (any) { (long) 1 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RefY", Handle = (long) 0, Value = (any) { (long) 0 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }, { { Name = "Position", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeXMaximum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2147483647 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeXMinimum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) -2147483647 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeYMaximum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2147483647 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeYMinimum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) -2147483647 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RefX", Handle = (long) 0, Value = (any) { (long) 3 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RefY", Handle = (long) 0, Value = (any) { (long) 2 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }, { { Name = "Position", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeXMaximum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2147483647 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeXMinimum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) -2147483647 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeYMaximum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2147483647 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeYMinimum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) -2147483647 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RefX", Handle = (long) 0, Value = (any) { (long) 5 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RefY", Handle = (long) 0, Value = (any) { (long) 4 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }, { { Name = "Position", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 6 }, Type = (short) 1 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeXMaximum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2147483647 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeXMinimum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) -2147483647 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeYMaximum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2147483647 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeYMinimum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) -2147483647 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RefX", Handle = (long) 0, Value = (any) { (long) 7 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RefY", Handle = (long) 0, Value = (any) { (long) 6 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } } }
+MirroredX
+false
+MirroredY
+false
+Path
+([]com.sun.star.beans.PropertyValue) { { Name = "Coordinates", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeParameterPair) { { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 11 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 11 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 11 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 6 }, Type = (short) 1 } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "Segments", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeSegment) { { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 3 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 }, { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 1 }, { Command = (short) 6, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 }, { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 3 }, { Command = (short) 6, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "TextFrames", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeTextFrame) { { TopLeft = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, BottomRight = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 11 }, Type = (short) 1 } } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }
+Type
+"ooxml-non-primitive"
+ViewBox
+(com.sun.star.awt.Rectangle) { X = (long) 0, Y = (long) 0, Width = (long) 0, Height = (long) 0 }
+/* accentCallout1 */
+AdjustmentValues
+([]com.sun.star.drawing.EnhancedCustomShapeAdjustmentValue) { { Value = (any) { (long) 18750 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE, Name = "adj1" }, { Value = (any) { (long) -8333 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE, Name = "adj2" }, { Value = (any) { (long) 112500 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE, Name = "adj3" }, { Value = (any) { (long) -38333 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE, Name = "adj4" } }
+Equations
+([]string) { "logheight*$0 /100000", "logwidth*$1 /100000", "logheight*$2 /100000", "logwidth*$3 /100000", "logwidth", "logheight/2", "logwidth/2", "logheight" }
+Handles
+([][]com.sun.star.beans.PropertyValue) { { { Name = "Position", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 1 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeXMaximum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2147483647 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeXMinimum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) -2147483647 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeYMaximum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2147483647 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeYMinimum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) -2147483647 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RefX", Handle = (long) 0, Value = (any) { (long) 1 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RefY", Handle = (long) 0, Value = (any) { (long) 0 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }, { { Name = "Position", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeXMaximum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2147483647 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeXMinimum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) -2147483647 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeYMaximum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2147483647 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeYMinimum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) -2147483647 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RefX", Handle = (long) 0, Value = (any) { (long) 3 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RefY", Handle = (long) 0, Value = (any) { (long) 2 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } } }
+MirroredX
+false
+MirroredY
+false
+Path
+([]com.sun.star.beans.PropertyValue) { { Name = "Coordinates", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeParameterPair) { { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "Segments", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeSegment) { { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 3 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 7, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 }, { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 1 }, { Command = (short) 6, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 }, { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 1 }, { Command = (short) 6, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "TextFrames", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeTextFrame) { { TopLeft = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, BottomRight = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7 }, Type = (short) 1 } } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }
+Type
+"ooxml-non-primitive"
+ViewBox
+(com.sun.star.awt.Rectangle) { X = (long) 0, Y = (long) 0, Width = (long) 0, Height = (long) 0 }
+/* accentCallout2 */
+AdjustmentValues
+([]com.sun.star.drawing.EnhancedCustomShapeAdjustmentValue) { { Value = (any) { (long) 18750 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE, Name = "adj1" }, { Value = (any) { (long) -8333 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE, Name = "adj2" }, { Value = (any) { (long) 18750 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE, Name = "adj3" }, { Value = (any) { (long) -16667 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE, Name = "adj4" }, { Value = (any) { (long) 112500 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE, Name = "adj5" }, { Value = (any) { (long) -46667 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE, Name = "adj6" } }
+Equations
+([]string) { "logheight*$0 /100000", "logwidth*$1 /100000", "logheight*$2 /100000", "logwidth*$3 /100000", "logheight*$4 /100000", "logwidth*$5 /100000", "logwidth", "logheight/2", "logwidth/2", "logheight" }
+Handles
+([][]com.sun.star.beans.PropertyValue) { { { Name = "Position", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 1 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeXMaximum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2147483647 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeXMinimum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) -2147483647 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeYMaximum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2147483647 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeYMinimum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) -2147483647 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RefX", Handle = (long) 0, Value = (any) { (long) 1 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RefY", Handle = (long) 0, Value = (any) { (long) 0 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }, { { Name = "Position", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeXMaximum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2147483647 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeXMinimum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) -2147483647 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeYMaximum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2147483647 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeYMinimum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) -2147483647 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RefX", Handle = (long) 0, Value = (any) { (long) 3 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RefY", Handle = (long) 0, Value = (any) { (long) 2 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }, { { Name = "Position", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeXMaximum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2147483647 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeXMinimum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) -2147483647 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeYMaximum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2147483647 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeYMinimum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) -2147483647 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RefX", Handle = (long) 0, Value = (any) { (long) 5 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RefY", Handle = (long) 0, Value = (any) { (long) 4 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } } }
+MirroredX
+false
+MirroredY
+false
+Path
+([]com.sun.star.beans.PropertyValue) { { Name = "Coordinates", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeParameterPair) { { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 6 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 6 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 9 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 9 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 9 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "Segments", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeSegment) { { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 3 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 7, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 }, { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 1 }, { Command = (short) 6, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 }, { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 2 }, { Command = (short) 6, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "TextFrames", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeTextFrame) { { TopLeft = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, BottomRight = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 6 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 9 }, Type = (short) 1 } } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }
+Type
+"ooxml-non-primitive"
+ViewBox
+(com.sun.star.awt.Rectangle) { X = (long) 0, Y = (long) 0, Width = (long) 0, Height = (long) 0 }
+/* accentCallout3 */
+AdjustmentValues
+([]com.sun.star.drawing.EnhancedCustomShapeAdjustmentValue) { { Value = (any) { (long) 18750 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE, Name = "adj1" }, { Value = (any) { (long) -8333 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE, Name = "adj2" }, { Value = (any) { (long) 18750 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE, Name = "adj3" }, { Value = (any) { (long) -16667 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE, Name = "adj4" }, { Value = (any) { (long) 100000 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE, Name = "adj5" }, { Value = (any) { (long) -16667 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE, Name = "adj6" }, { Value = (any) { (long) 112963 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE, Name = "adj7" }, { Value = (any) { (long) -8333 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE, Name = "adj8" } }
+Equations
+([]string) { "logheight*$0 /100000", "logwidth*$1 /100000", "logheight*$2 /100000", "logwidth*$3 /100000", "logheight*$4 /100000", "logwidth*$5 /100000", "logheight*$6 /100000", "logwidth*$7 /100000", "logwidth", "logheight/2", "logwidth/2", "logheight" }
+Handles
+([][]com.sun.star.beans.PropertyValue) { { { Name = "Position", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 1 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeXMaximum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2147483647 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeXMinimum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) -2147483647 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeYMaximum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2147483647 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeYMinimum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) -2147483647 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RefX", Handle = (long) 0, Value = (any) { (long) 1 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RefY", Handle = (long) 0, Value = (any) { (long) 0 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }, { { Name = "Position", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeXMaximum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2147483647 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeXMinimum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) -2147483647 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeYMaximum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2147483647 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeYMinimum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) -2147483647 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RefX", Handle = (long) 0, Value = (any) { (long) 3 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RefY", Handle = (long) 0, Value = (any) { (long) 2 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }, { { Name = "Position", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeXMaximum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2147483647 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeXMinimum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) -2147483647 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeYMaximum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2147483647 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeYMinimum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) -2147483647 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RefX", Handle = (long) 0, Value = (any) { (long) 5 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RefY", Handle = (long) 0, Value = (any) { (long) 4 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }, { { Name = "Position", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 6 }, Type = (short) 1 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeXMaximum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2147483647 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeXMinimum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) -2147483647 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeYMaximum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2147483647 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeYMinimum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) -2147483647 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RefX", Handle = (long) 0, Value = (any) { (long) 7 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RefY", Handle = (long) 0, Value = (any) { (long) 6 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } } }
+MirroredX
+false
+MirroredY
+false
+Path
+([]com.sun.star.beans.PropertyValue) { { Name = "Coordinates", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeParameterPair) { { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 11 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 11 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 11 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 6 }, Type = (short) 1 } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "Segments", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeSegment) { { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 3 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 7, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 }, { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 1 }, { Command = (short) 6, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 }, { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 3 }, { Command = (short) 6, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "TextFrames", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeTextFrame) { { TopLeft = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, BottomRight = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 11 }, Type = (short) 1 } } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }
+Type
+"ooxml-non-primitive"
+ViewBox
+(com.sun.star.awt.Rectangle) { X = (long) 0, Y = (long) 0, Width = (long) 0, Height = (long) 0 }
+/* actionButtonBackPrevious */
+AdjustmentValues
+([]com.sun.star.drawing.EnhancedCustomShapeAdjustmentValue) {}
+Equations
+([]string) { "min(logwidth,logheight)", "?0 *3/8", "logheight/2", "?2 +0-?1 ", "?2 +?1 -0", "logwidth/2", "?5 +0-?1 ", "?5 +?1 -0", "logwidth", "logheight" }
+Handles
+([][]com.sun.star.beans.PropertyValue) {}
+MirroredX
+false
+MirroredY
+false
+Path
+([]com.sun.star.beans.PropertyValue) { { Name = "Coordinates", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeParameterPair) { { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 9 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 9 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 6 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 6 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 6 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 9 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 9 }, Type = (short) 1 } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "Segments", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeSegment) { { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 3 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 2 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 7, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 }, { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 2 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 18, Count = (short) 0 }, { Command = (short) 7, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 }, { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 2 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 6, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 }, { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 3 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 6, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "TextFrames", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeTextFrame) { { TopLeft = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, BottomRight = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 9 }, Type = (short) 1 } } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }
+Type
+"ooxml-non-primitive"
+ViewBox
+(com.sun.star.awt.Rectangle) { X = (long) 0, Y = (long) 0, Width = (long) 0, Height = (long) 0 }
+/* actionButtonBeginning */
+AdjustmentValues
+([]com.sun.star.drawing.EnhancedCustomShapeAdjustmentValue) {}
+Equations
+([]string) { "min(logwidth,logheight)", "?0 *3/8", "logheight/2", "?2 +0-?1 ", "?2 +?1 -0", "logwidth/2", "?5 +0-?1 ", "?5 +?1 -0", "?0 *3/4", "?8 *1/8", "?8 *1/4", "?6 +?9 -0", "?6 +?10 -0", "logwidth", "logheight" }
+Handles
+([][]com.sun.star.beans.PropertyValue) {}
+MirroredX
+false
+MirroredY
+false
+Path
+([]com.sun.star.beans.PropertyValue) { { Name = "Coordinates", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeParameterPair) { { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 13 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 13 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 14 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 14 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 12 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 11 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 6 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 6 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 11 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 12 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 11 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 6 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 6 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 11 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 12 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 11 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 11 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 6 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 6 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 13 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 13 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 14 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 14 }, Type = (short) 1 } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "Segments", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeSegment) { { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 3 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 2 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 3 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 7, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 }, { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 2 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 3 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 18, Count = (short) 0 }, { Command = (short) 7, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 }, { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 2 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 3 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 6, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 }, { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 3 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 6, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "TextFrames", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeTextFrame) { { TopLeft = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, BottomRight = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 13 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 14 }, Type = (short) 1 } } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }
+Type
+"ooxml-non-primitive"
+ViewBox
+(com.sun.star.awt.Rectangle) { X = (long) 0, Y = (long) 0, Width = (long) 0, Height = (long) 0 }
+/* actionButtonBlank */
+AdjustmentValues
+([]com.sun.star.drawing.EnhancedCustomShapeAdjustmentValue) {}
+Equations
+([]string) { "logwidth", "logheight/2", "logwidth/2", "logheight" }
+Handles
+([][]com.sun.star.beans.PropertyValue) {}
+MirroredX
+false
+MirroredY
+false
+Path
+([]com.sun.star.beans.PropertyValue) { { Name = "Coordinates", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeParameterPair) { { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "Segments", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeSegment) { { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 3 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "TextFrames", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeTextFrame) { { TopLeft = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, BottomRight = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 } } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }
+Type
+"ooxml-non-primitive"
+ViewBox
+(com.sun.star.awt.Rectangle) { X = (long) 0, Y = (long) 0, Width = (long) 0, Height = (long) 0 }
+/* actionButtonDocument */
+AdjustmentValues
+([]com.sun.star.drawing.EnhancedCustomShapeAdjustmentValue) {}
+Equations
+([]string) { "min(logwidth,logheight)", "?0 *3/8", "logheight/2", "?2 +0-?1 ", "?2 +?1 -0", "?0 *9/32", "logwidth/2", "?6 +0-?5 ", "?6 +?5 -0", "?0 *3/16", "?8 +0-?9 ", "?3 +?9 -0", "logwidth", "logheight" }
+Handles
+([][]com.sun.star.beans.PropertyValue) {}
+MirroredX
+false
+MirroredY
+false
+Path
+([]com.sun.star.beans.PropertyValue) { { Name = "Coordinates", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeParameterPair) { { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 12 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 12 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 13 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 13 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 10 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 11 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 10 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 10 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 11 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 11 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 10 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 10 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 11 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 11 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 10 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 11 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 11 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 10 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 11 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 10 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 12 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 12 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 13 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 13 }, Type = (short) 1 } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "Segments", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeSegment) { { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 3 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 4 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 7, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 }, { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 5 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 19, Count = (short) 0 }, { Command = (short) 7, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 }, { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 2 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 18, Count = (short) 0 }, { Command = (short) 7, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 }, { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 4 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 2 }, { Command = (short) 6, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 }, { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 3 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 6, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "TextFrames", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeTextFrame) { { TopLeft = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, BottomRight = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 12 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 13 }, Type = (short) 1 } } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }
+Type
+"ooxml-non-primitive"
+ViewBox
+(com.sun.star.awt.Rectangle) { X = (long) 0, Y = (long) 0, Width = (long) 0, Height = (long) 0 }
+/* actionButtonEnd */
+AdjustmentValues
+([]com.sun.star.drawing.EnhancedCustomShapeAdjustmentValue) {}
+Equations
+([]string) { "min(logwidth,logheight)", "?0 *3/8", "logheight/2", "?2 +0-?1 ", "?2 +?1 -0", "logwidth/2", "?5 +0-?1 ", "?5 +?1 -0", "?0 *3/4", "?8 *3/4", "?8 *7/8", "?6 +?9 -0", "?6 +?10 -0", "logwidth", "logheight" }
+Handles
+([][]com.sun.star.beans.PropertyValue) {}
+MirroredX
+false
+MirroredY
+false
+Path
+([]com.sun.star.beans.PropertyValue) { { Name = "Coordinates", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeParameterPair) { { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 13 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 13 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 14 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 14 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 11 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 6 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 6 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 12 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 12 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 11 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 6 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 6 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 12 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 12 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 11 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 6 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 6 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 12 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 12 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 13 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 13 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 14 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 14 }, Type = (short) 1 } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "Segments", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeSegment) { { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 3 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 2 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 3 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 7, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 }, { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 2 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 3 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 18, Count = (short) 0 }, { Command = (short) 7, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 }, { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 2 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 3 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 6, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 }, { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 3 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 6, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "TextFrames", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeTextFrame) { { TopLeft = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, BottomRight = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 13 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 14 }, Type = (short) 1 } } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }
+Type
+"ooxml-non-primitive"
+ViewBox
+(com.sun.star.awt.Rectangle) { X = (long) 0, Y = (long) 0, Width = (long) 0, Height = (long) 0 }
+/* actionButtonForwardNext */
+AdjustmentValues
+([]com.sun.star.drawing.EnhancedCustomShapeAdjustmentValue) {}
+Equations
+([]string) { "min(logwidth,logheight)", "?0 *3/8", "logheight/2", "?2 +0-?1 ", "?2 +?1 -0", "logwidth/2", "?5 +0-?1 ", "?5 +?1 -0", "logwidth", "logheight" }
+Handles
+([][]com.sun.star.beans.PropertyValue) {}
+MirroredX
+false
+MirroredY
+false
+Path
+([]com.sun.star.beans.PropertyValue) { { Name = "Coordinates", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeParameterPair) { { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 9 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 9 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 6 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 6 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 6 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 6 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 6 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 6 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 9 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 9 }, Type = (short) 1 } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "Segments", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeSegment) { { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 3 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 2 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 7, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 }, { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 2 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 18, Count = (short) 0 }, { Command = (short) 7, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 }, { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 2 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 6, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 }, { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 3 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 6, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "TextFrames", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeTextFrame) { { TopLeft = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, BottomRight = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 9 }, Type = (short) 1 } } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }
+Type
+"ooxml-non-primitive"
+ViewBox
+(com.sun.star.awt.Rectangle) { X = (long) 0, Y = (long) 0, Width = (long) 0, Height = (long) 0 }
+/* actionButtonHelp */
+AdjustmentValues
+([]com.sun.star.drawing.EnhancedCustomShapeAdjustmentValue) {}
+Equations
+([]string) { "min(logwidth,logheight)", "?0 *3/8", "logheight/2", "?2 +0-?1 ", "logwidth/2", "?4 +0-?1 ", "?0 *3/4", "?6 *1/7", "?6 *3/14", "?6 *2/7", "?6 *3/7", "?6 *4/7", "?6 *17/28", "?6 *21/28", "?6 *11/14", "?3 +?9 -0", "?3 +?12 -0", "?3 +?13 -0", "?3 +?14 -0", "?5 +?8 -0", "?5 +?10 -0", "?5 +?11 -0", "?6 *1/14", "?6 *3/28", "logwidth", "logheight", "(10800000)/60000.0", "(10800000)/60000.0", "(0)/60000.0", "(5400000)/60000.0", "(16200000)/60000.0", "(-5400000)/60000.0", "(10800000)/60000.0", "(5400000)/60000.0", "(5400000)/60000.0", "(-5400000)/60000.0", "(0)/60000.0", "(-10800000)/60000.0", "(16200000)/60000.0", "(21600000)/60000.0", "(10800000)/60000.0", "(10800000)/60000.0", "(0)/60000.0", "(5400000)/60000.0", "(16200000)/60000.0", "(-5400000)/60000.0", "(10800000)/60000.0", "(5400000)/60000.0", "(5400000)/60000.0", "(-5400000)/60000.0", "(0)/60000.0", "(-10800000)/60000.0", "(16200000)/60000.0", "(21600000)/60000.0", "(10800000)/60000.0", "(10800000)/60000.0", "(0)/60000.0", "(5400000)/60000.0", "(16200000)/60000.0", "(-5400000)/60000.0", "(10800000)/60000.0", "(5400000)/60000.0", "(5400000)/60000.0", "(-5400000)/60000.0", "(0)/60000.0", "(-10800000)/60000.0", "(16200000)/60000.0", "(21600000)/60000.0" }
+Handles
+([][]com.sun.star.beans.PropertyValue) {}
+MirroredX
+false
+MirroredY
+false
+Path
+([]com.sun.star.beans.PropertyValue) { { Name = "Coordinates", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeParameterPair) { { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 24 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 24 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 25 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 25 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 19 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 15 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 9 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 9 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 26 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 27 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 28 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 29 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 22 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 23 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 30 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 31 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 21 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 17 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 20 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 17 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 20 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 16 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 32 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 33 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 22 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 23 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 34 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 35 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 36 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 37 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 18 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 23 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 23 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 38 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 39 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 19 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 15 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 9 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 9 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 40 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 41 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 42 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 43 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 22 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 23 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 44 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 45 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 21 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 17 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 20 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 17 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 20 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 16 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 46 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 47 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 22 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 23 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 48 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 49 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 50 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 51 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 18 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 23 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 23 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 52 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 53 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 19 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 15 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 9 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 9 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 54 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 55 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 56 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 57 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 22 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 23 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 58 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 59 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 21 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 17 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 20 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 17 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 20 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 16 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 60 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 61 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 22 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 23 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 62 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 63 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 64 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 65 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 18 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 23 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 23 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 66 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 67 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 24 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 24 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 25 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 25 }, Type = (short) 1 } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "Segments", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeSegment) { { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 3 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 1, Count = (short) 1 }, { Command = (short) 17, Count = (short) 3 }, { Command = (short) 2, Count = (short) 3 }, { Command = (short) 17, Count = (short) 3 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 1, Count = (short) 1 }, { Command = (short) 17, Count = (short) 1 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 7, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 }, { Command = (short) 1, Count = (short) 1 }, { Command = (short) 17, Count = (short) 3 }, { Command = (short) 2, Count = (short) 3 }, { Command = (short) 17, Count = (short) 3 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 1, Count = (short) 1 }, { Command = (short) 17, Count = (short) 1 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 18, Count = (short) 0 }, { Command = (short) 7, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 }, { Command = (short) 1, Count = (short) 1 }, { Command = (short) 17, Count = (short) 3 }, { Command = (short) 2, Count = (short) 3 }, { Command = (short) 17, Count = (short) 3 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 1, Count = (short) 1 }, { Command = (short) 17, Count = (short) 1 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 6, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 }, { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 3 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 6, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "TextFrames", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeTextFrame) { { TopLeft = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, BottomRight = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 24 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 25 }, Type = (short) 1 } } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }
+Type
+"ooxml-non-primitive"
+ViewBox
+(com.sun.star.awt.Rectangle) { X = (long) 0, Y = (long) 0, Width = (long) 0, Height = (long) 0 }
+/* actionButtonHome */
+AdjustmentValues
+([]com.sun.star.drawing.EnhancedCustomShapeAdjustmentValue) {}
+Equations
+([]string) { "min(logwidth,logheight)", "?0 *3/8", "logheight/2", "?2 +0-?1 ", "?2 +?1 -0", "logwidth/2", "?5 +0-?1 ", "?5 +?1 -0", "?0 *3/4", "?8 *1/16", "?8 *1/8", "?8 *3/16", "?8 *5/16", "?8 *7/16", "?8 *9/16", "?8 *11/16", "?8 *3/4", "?8 *13/16", "?8 *7/8", "?3 +?9 -0", "?3 +?11 -0", "?3 +?12 -0", "?3 +?16 -0", "?6 +?10 -0", "?6 +?13 -0", "?6 +?14 -0", "?6 +?15 -0", "?6 +?17 -0", "?6 +?18 -0", "logwidth", "logheight" }
+Handles
+([][]com.sun.star.beans.PropertyValue) {}
+MirroredX
+false
+MirroredY
+false
+Path
+([]com.sun.star.beans.PropertyValue) { { Name = "Coordinates", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeParameterPair) { { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 29 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 29 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 30 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 30 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 6 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 23 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 23 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 28 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 28 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 27 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 21 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 27 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 19 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 26 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 19 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 26 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 20 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 27 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 21 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 27 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 19 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 26 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 19 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 26 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 20 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 23 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 23 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 24 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 24 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 22 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 25 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 22 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 25 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 28 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 28 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 6 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 24 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 22 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 25 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 22 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 25 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 24 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 26 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 20 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 26 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 19 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 27 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 19 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 27 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 21 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 28 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 28 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 23 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 23 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 6 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 26 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 20 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 27 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 21 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 28 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 23 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 24 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 24 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 22 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 25 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 22 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 25 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 29 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 29 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 30 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 30 }, Type = (short) 1 } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "Segments", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeSegment) { { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 3 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 10 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 7, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 }, { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 3 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 7 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 19, Count = (short) 0 }, { Command = (short) 7, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 }, { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 2 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 3 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 18, Count = (short) 0 }, { Command = (short) 7, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 }, { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 10 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 1 }, { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 1 }, { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 3 }, { Command = (short) 6, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 }, { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 3 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 6, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "TextFrames", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeTextFrame) { { TopLeft = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, BottomRight = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 29 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 30 }, Type = (short) 1 } } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }
+Type
+"ooxml-non-primitive"
+ViewBox
+(com.sun.star.awt.Rectangle) { X = (long) 0, Y = (long) 0, Width = (long) 0, Height = (long) 0 }
+/* actionButtonInformation */
+AdjustmentValues
+([]com.sun.star.drawing.EnhancedCustomShapeAdjustmentValue) {}
+Equations
+([]string) { "min(logwidth,logheight)", "?0 *3/8", "logheight/2", "?2 +0-?1 ", "logwidth/2", "?4 +0-?1 ", "?0 *3/4", "?6 *1/32", "?6 *5/16", "?6 *3/8", "?6 *13/32", "?6 *19/32", "?6 *11/16", "?6 *13/16", "?6 *7/8", "?3 +?7 -0", "?3 +?8 -0", "?3 +?9 -0", "?3 +?13 -0", "?3 +?14 -0", "?5 +?8 -0", "?5 +?10 -0", "?5 +?11 -0", "?5 +?12 -0", "?6 *3/32", "logwidth", "logheight", "(16200000)/60000.0", "(21600000)/60000.0", "(16200000)/60000.0", "(21600000)/60000.0", "(16200000)/60000.0", "(21600000)/60000.0", "(16200000)/60000.0", "(21600000)/60000.0", "(16200000)/60000.0", "(21600000)/60000.0", "(16200000)/60000.0", "(21600000)/60000.0" }
+Handles
+([][]com.sun.star.beans.PropertyValue) {}
+MirroredX
+false
+MirroredY
+false
+Path
+([]com.sun.star.beans.PropertyValue) { { Name = "Coordinates", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeParameterPair) { { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 25 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 25 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 26 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 26 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 27 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 28 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 29 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 30 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 15 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 24 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 24 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 31 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 32 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 20 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 16 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 20 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 17 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 21 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 17 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 21 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 18 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 20 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 18 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 20 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 19 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 23 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 19 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 23 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 18 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 22 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 18 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 22 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 16 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 15 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 24 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 24 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 33 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 34 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 20 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 16 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 22 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 16 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 22 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 18 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 23 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 18 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 23 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 19 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 20 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 19 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 20 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 18 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 21 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 18 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 21 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 17 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 20 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 17 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 35 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 36 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 15 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 24 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 24 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 37 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 38 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 20 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 16 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 22 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 16 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 22 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 18 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 23 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 18 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 23 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 19 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 20 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 19 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 20 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 18 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 21 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 18 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 21 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 17 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 20 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 17 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 25 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 25 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 26 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 26 }, Type = (short) 1 } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "Segments", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeSegment) { { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 3 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 1, Count = (short) 1 }, { Command = (short) 17, Count = (short) 1 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 7, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 }, { Command = (short) 1, Count = (short) 1 }, { Command = (short) 17, Count = (short) 1 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 1, Count = (short) 1 }, { Command = (short) 17, Count = (short) 1 }, { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 9 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 18, Count = (short) 0 }, { Command = (short) 7, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 }, { Command = (short) 1, Count = (short) 1 }, { Command = (short) 17, Count = (short) 1 }, { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 9 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 20, Count = (short) 0 }, { Command = (short) 7, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 }, { Command = (short) 1, Count = (short) 1 }, { Command = (short) 17, Count = (short) 1 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 1, Count = (short) 1 }, { Command = (short) 17, Count = (short) 1 }, { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 9 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 6, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 }, { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 3 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 6, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "TextFrames", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeTextFrame) { { TopLeft = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, BottomRight = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 25 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 26 }, Type = (short) 1 } } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }
+Type
+"ooxml-non-primitive"
+ViewBox
+(com.sun.star.awt.Rectangle) { X = (long) 0, Y = (long) 0, Width = (long) 0, Height = (long) 0 }
+/* actionButtonMovie */
+AdjustmentValues
+([]com.sun.star.drawing.EnhancedCustomShapeAdjustmentValue) {}
+Equations
+([]string) { "min(logwidth,logheight)", "?0 *3/8", "logheight/2", "?2 +0-?1 ", "?2 +?1 -0", "logwidth/2", "?5 +0-?1 ", "?5 +?1 -0", "?0 *3/4", "?8 *1455/21600", "?8 *1905/21600", "?8 *2325/21600", "?8 *16155/21600", "?8 *17010/21600", "?8 *19335/21600", "?8 *19725/21600", "?8 *20595/21600", "?8 *5280/21600", "?8 *5730/21600", "?8 *6630/21600", "?8 *7492/21600", "?8 *9067/21600", "?8 *9555/21600", "?8 *13342/21600", "?8 *14580/21600", "?8 *15592/21600", "?6 +?9 -0", "?6 +?10 -0", "?6 +?11 -0", "?6 +?12 -0", "?6 +?13 -0", "?6 +?14 -0", "?6 +?15 -0", "?6 +?16 -0", "?3 +?17 -0", "?3 +?18 -0", "?3 +?19 -0", "?3 +?20 -0", "?3 +?21 -0", "?3 +?22 -0", "?3 +?23 -0", "?3 +?24 -0", "?3 +?25 -0", "?3 +?26 -0", "logwidth", "logheight" }
+Handles
+([][]com.sun.star.beans.PropertyValue) {}
+MirroredX
+false
+MirroredY
+false
+Path
+([]com.sun.star.beans.PropertyValue) { { Name = "Coordinates", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeParameterPair) { { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 44 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 44 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 45 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 45 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 6 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 34 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 6 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 39 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 26 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 39 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 27 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 38 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 28 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 38 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 28 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 42 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 30 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 42 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 30 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 40 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 31 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 40 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 33 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 41 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 41 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 36 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 33 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 36 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 32 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 37 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 30 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 37 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 30 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 36 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 29 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 35 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 27 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 35 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 26 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 34 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 6 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 34 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 6 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 39 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 26 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 39 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 27 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 38 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 28 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 38 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 28 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 42 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 30 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 42 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 30 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 40 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 31 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 40 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 33 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 41 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 41 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 36 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 33 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 36 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 32 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 37 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 30 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 37 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 30 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 36 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 29 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 35 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 27 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 35 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 26 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 34 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 6 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 34 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 26 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 34 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 27 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 35 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 29 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 35 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 30 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 36 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 30 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 37 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 32 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 37 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 33 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 36 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 36 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 41 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 33 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 41 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 31 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 40 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 30 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 40 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 30 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 42 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 28 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 42 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 28 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 38 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 27 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 38 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 26 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 39 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 6 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 39 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 44 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 44 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 45 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 45 }, Type = (short) 1 } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "Segments", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeSegment) { { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 3 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 18 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 7, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 }, { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 18 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 18, Count = (short) 0 }, { Command = (short) 7, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 }, { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 18 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 6, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 }, { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 3 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 6, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "TextFrames", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeTextFrame) { { TopLeft = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, BottomRight = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 44 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 45 }, Type = (short) 1 } } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }
+Type
+"ooxml-non-primitive"
+ViewBox
+(com.sun.star.awt.Rectangle) { X = (long) 0, Y = (long) 0, Width = (long) 0, Height = (long) 0 }
+/* actionButtonReturn */
+AdjustmentValues
+([]com.sun.star.drawing.EnhancedCustomShapeAdjustmentValue) {}
+Equations
+([]string) { "min(logwidth,logheight)", "?0 *3/8", "logheight/2", "?2 +0-?1 ", "?2 +?1 -0", "logwidth/2", "?5 +0-?1 ", "?5 +?1 -0", "?0 *3/4", "?8 *7/8", "?8 *3/4", "?8 *5/8", "?8 *3/8", "?8 *1/4", "?3 +?10 -0", "?3 +?11 -0", "?3 +?13 -0", "?6 +?9 -0", "?6 +?10 -0", "?6 +?11 -0", "?6 +?12 -0", "?6 +?13 -0", "?8 *1/8", "logwidth", "logheight", "(0)/60000.0", "(5400000)/60000.0", "(5400000)/60000.0", "(5400000)/60000.0", "(10800000)/60000.0", "(-5400000)/60000.0", "(5400000)/60000.0", "(-5400000)/60000.0", "(0)/60000.0", "(5400000)/60000.0", "(5400000)/60000.0", "(5400000)/60000.0", "(10800000)/60000.0", "(-5400000)/60000.0", "(5400000)/60000.0", "(-5400000)/60000.0", "(0)/60000.0", "(5400000)/60000.0", "(5400000)/60000.0", "(5400000)/60000.0", "(10800000)/60000.0", "(-5400000)/60000.0", "(5400000)/60000.0", "(-5400000)/60000.0" }
+Handles
+([][]com.sun.star.beans.PropertyValue) {}
+MirroredX
+false
+MirroredY
+false
+Path
+([]com.sun.star.beans.PropertyValue) { { Name = "Coordinates", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeParameterPair) { { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 23 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 23 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 24 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 24 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 16 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 18 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 16 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 19 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 16 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 19 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 15 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 22 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 22 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 25 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 26 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 20 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 14 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 22 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 22 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 27 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 28 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 21 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 16 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 6 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 16 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 6 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 15 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 12 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 12 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 29 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 30 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 12 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 12 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 31 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 32 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 17 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 16 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 16 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 18 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 16 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 19 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 16 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 19 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 15 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 22 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 22 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 33 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 34 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 20 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 14 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 22 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 22 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 35 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 36 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 21 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 16 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 6 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 16 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 6 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 15 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 12 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 12 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 37 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 38 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 12 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 12 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 39 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 40 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 17 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 16 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 16 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 17 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 16 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 17 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 15 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 12 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 12 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 41 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 42 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 20 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 12 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 12 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 43 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 44 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 6 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 16 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 21 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 16 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 21 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 15 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 22 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 22 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 45 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 46 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 14 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 22 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 22 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 47 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 48 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 19 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 16 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 16 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 18 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 23 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 23 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 24 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 24 }, Type = (short) 1 } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "Segments", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeSegment) { { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 3 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 4 }, { Command = (short) 17, Count = (short) 1 }, { Command = (short) 2, Count = (short) 1 }, { Command = (short) 17, Count = (short) 1 }, { Command = (short) 2, Count = (short) 3 }, { Command = (short) 17, Count = (short) 1 }, { Command = (short) 2, Count = (short) 1 }, { Command = (short) 17, Count = (short) 1 }, { Command = (short) 2, Count = (short) 1 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 7, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 }, { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 4 }, { Command = (short) 17, Count = (short) 1 }, { Command = (short) 2, Count = (short) 1 }, { Command = (short) 17, Count = (short) 1 }, { Command = (short) 2, Count = (short) 3 }, { Command = (short) 17, Count = (short) 1 }, { Command = (short) 2, Count = (short) 1 }, { Command = (short) 17, Count = (short) 1 }, { Command = (short) 2, Count = (short) 1 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 18, Count = (short) 0 }, { Command = (short) 7, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 }, { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 2 }, { Command = (short) 17, Count = (short) 1 }, { Command = (short) 2, Count = (short) 1 }, { Command = (short) 17, Count = (short) 1 }, { Command = (short) 2, Count = (short) 3 }, { Command = (short) 17, Count = (short) 1 }, { Command = (short) 2, Count = (short) 1 }, { Command = (short) 17, Count = (short) 1 }, { Command = (short) 2, Count = (short) 3 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 6, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 }, { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 3 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 6, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "TextFrames", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeTextFrame) { { TopLeft = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, BottomRight = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 23 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 24 }, Type = (short) 1 } } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }
+Type
+"ooxml-non-primitive"
+ViewBox
+(com.sun.star.awt.Rectangle) { X = (long) 0, Y = (long) 0, Width = (long) 0, Height = (long) 0 }
+/* actionButtonSound */
+AdjustmentValues
+([]com.sun.star.drawing.EnhancedCustomShapeAdjustmentValue) {}
+Equations
+([]string) { "min(logwidth,logheight)", "?0 *3/8", "logheight/2", "?2 +0-?1 ", "?2 +?1 -0", "logwidth/2", "?5 +0-?1 ", "?5 +?1 -0", "?0 *3/4", "?8 *1/8", "?8 *5/16", "?8 *5/8", "?8 *11/16", "?8 *3/4", "?8 *7/8", "?3 +?9 -0", "?3 +?10 -0", "?3 +?12 -0", "?3 +?14 -0", "?6 +?10 -0", "?6 +?11 -0", "?6 +?13 -0", "logwidth", "logheight" }
+Handles
+([][]com.sun.star.beans.PropertyValue) {}
+MirroredX
+false
+MirroredY
+false
+Path
+([]com.sun.star.beans.PropertyValue) { { Name = "Coordinates", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeParameterPair) { { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 22 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 22 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 23 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 23 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 6 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 16 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 6 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 17 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 19 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 17 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 20 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 20 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 19 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 16 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 6 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 16 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 6 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 17 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 19 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 17 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 20 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 20 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 19 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 16 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 6 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 16 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 19 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 16 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 20 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 20 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 19 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 17 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 6 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 17 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 21 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 16 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 15 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 21 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 21 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 17 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 18 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 22 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 22 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 23 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 23 }, Type = (short) 1 } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "Segments", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeSegment) { { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 3 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 5 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 7, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 }, { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 5 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 18, Count = (short) 0 }, { Command = (short) 7, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 }, { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 5 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 1 }, { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 1 }, { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 1 }, { Command = (short) 6, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 }, { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 3 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 6, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "TextFrames", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeTextFrame) { { TopLeft = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, BottomRight = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 22 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 23 }, Type = (short) 1 } } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }
+Type
+"ooxml-non-primitive"
+ViewBox
+(com.sun.star.awt.Rectangle) { X = (long) 0, Y = (long) 0, Width = (long) 0, Height = (long) 0 }
+/* arc */
+AdjustmentValues
+([]com.sun.star.drawing.EnhancedCustomShapeAdjustmentValue) { { Value = (any) { (long) 16200000 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE, Name = "adj1" }, { Value = (any) { (long) 0 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE, Name = "adj2" } }
+Equations
+([]string) { "if(0-$0 ,0,if(21599999-$0 ,$0 ,21599999))", "if(0-$1 ,0,if(21599999-$1 ,$1 ,21599999))", "?1 +0-?0 ", "?2 +21600000-0", "if(?2 ,?2 ,?3 )", "logwidth/2", "?5 *sin(pi*(?0 )/10800000)", "logheight/2", "?7 *cos(pi*(?0 )/10800000)", "?5 *(cos(atan2(?6 ,?8 )))", "?7 *(sin(atan2(?6 ,?8 )))", "?5 *sin(pi*(?1 )/10800000)", "?7 *cos(pi*(?1 )/10800000)", "?5 *(cos(atan2(?11 ,?12 )))", "?7 *(sin(atan2(?11 ,?12 )))", "logwidth/2", "?15 +?9 -0", "logheight/2", "?17 +?10 -0", "?15 +?13 -0", "?17 +?14 -0", "21600000+0-?0 ", "?4 +0-?21 ", "max(?16 ,?19 )", "if(?22 ,logwidth,?23 )", "5400000+0-?0 ", "27000000+0-?0 ", "if(?25 ,?25 ,?26 )", "?4 +0-?27 ", "max(?18 ,?20 )", "if(?28 ,logheight,?29 )", "10800000+0-?0 ", "32400000+0-?0 ", "if(?31 ,?31 ,?32 )", "?4 +0-?33 ", "min(?16 ,?19 )", "if(?34 ,0,?35 )", "16200000+0-?0 ", "37800000+0-?0 ", "if(?37 ,?37 ,?38 )", "?4 +0-?39 ", "min(?18 ,?20 )", "if(?40 ,0,?41 )", "?0 +0-5400000", "?1 +5400000-0", "(?43 +?44 )/2", "(?0 )/60000.0", "(?4 )/60000.0", "(?0 )/60000.0", "(?4 )/60000.0" }
+Handles
+([][]com.sun.star.beans.PropertyValue) { { { Name = "Position", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 16 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 18 }, Type = (short) 1 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RefAngle", Handle = (long) 0, Value = (any) { (long) 0 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }, { { Name = "Position", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 19 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 20 }, Type = (short) 1 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RefAngle", Handle = (long) 0, Value = (any) { (long) 1 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } } }
+MirroredX
+false
+MirroredY
+false
+Path
+([]com.sun.star.beans.PropertyValue) { { Name = "Coordinates", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeParameterPair) { { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 16 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 18 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 46 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 47 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 15 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 17 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 16 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 18 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 48 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 49 }, Type = (short) 1 } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "Segments", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeSegment) { { Command = (short) 1, Count = (short) 1 }, { Command = (short) 17, Count = (short) 1 }, { Command = (short) 2, Count = (short) 1 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 7, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 }, { Command = (short) 1, Count = (short) 1 }, { Command = (short) 17, Count = (short) 1 }, { Command = (short) 6, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "TextFrames", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeTextFrame) { { TopLeft = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 36 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 42 }, Type = (short) 1 } }, BottomRight = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 24 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 30 }, Type = (short) 1 } } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }
+Type
+"ooxml-non-primitive"
+ViewBox
+(com.sun.star.awt.Rectangle) { X = (long) 0, Y = (long) 0, Width = (long) 0, Height = (long) 0 }
+/* bentArrow */
+AdjustmentValues
+([]com.sun.star.drawing.EnhancedCustomShapeAdjustmentValue) { { Value = (any) { (long) 25000 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE, Name = "adj1" }, { Value = (any) { (long) 25000 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE, Name = "adj2" }, { Value = (any) { (long) 25000 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE, Name = "adj3" }, { Value = (any) { (long) 43750 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE, Name = "adj4" } }
+Equations
+([]string) { "if(0-$1 ,0,if(50000-$1 ,$1 ,50000))", "?0 *2/1", "if(0-$0 ,0,if(?1 -$0 ,$0 ,?1 ))", "if(0-$2 ,0,if(50000-$2 ,$2 ,50000))", "min(logwidth,logheight)", "?4 *?2 /100000", "?4 *?0 /100000", "?5 *1/2", "?6 +0-?7 ", "?4 *?3 /100000", "logwidth+0-?9 ", "logheight+0-?8 ", "min(?10 ,?11 )", "100000*?12 /?4 ", "if(0-$3 ,0,if(?13 -$3 ,$3 ,?13 ))", "?4 *?14 /100000", "?15 +0-?5 ", "max(?16 ,0)", "?5 +?17 -0", "logwidth+0-?9 ", "?8 +?5 -0", "?20 +?8 -0", "?8 +?15 -0", "?20 +?17 -0", "logheight", "logwidth", "(10800000)/60000.0", "(5400000)/60000.0", "(16200000)/60000.0", "(-5400000)/60000.0" }
+Handles
+([][]com.sun.star.beans.PropertyValue) { { { Name = "Position", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 24 }, Type = (short) 1 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeXMaximum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 1 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeXMinimum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RefX", Handle = (long) 0, Value = (any) { (long) 0 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }, { { Name = "Position", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 25 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 21 }, Type = (short) 1 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeYMaximum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 50000 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeYMinimum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RefY", Handle = (long) 0, Value = (any) { (long) 1 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }, { { Name = "Position", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 19 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeXMaximum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 50000 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeXMinimum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RefX", Handle = (long) 0, Value = (any) { (long) 2 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }, { { Name = "Position", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 15 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeXMaximum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 13 }, Type = (short) 1 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeXMinimum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RefX", Handle = (long) 0, Value = (any) { (long) 3 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } } }
+MirroredX
+false
+MirroredY
+false
+Path
+([]com.sun.star.beans.PropertyValue) { { Name = "Coordinates", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeParameterPair) { { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 24 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 22 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 15 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 15 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 26 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 27 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 19 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 19 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 25 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 6 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 19 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 21 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 19 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 20 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 18 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 20 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 17 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 17 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 28 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 29 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 24 }, Type = (short) 1 } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "Segments", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeSegment) { { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 1 }, { Command = (short) 17, Count = (short) 1 }, { Command = (short) 2, Count = (short) 6 }, { Command = (short) 17, Count = (short) 1 }, { Command = (short) 2, Count = (short) 1 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "TextFrames", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeTextFrame) { { TopLeft = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, BottomRight = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 25 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 24 }, Type = (short) 1 } } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }
+Type
+"ooxml-non-primitive"
+ViewBox
+(com.sun.star.awt.Rectangle) { X = (long) 0, Y = (long) 0, Width = (long) 0, Height = (long) 0 }
+/* bentConnector2 */
+AdjustmentValues
+([]com.sun.star.drawing.EnhancedCustomShapeAdjustmentValue) {}
+Equations
+([]string) { "logwidth", "logheight" }
+Handles
+([][]com.sun.star.beans.PropertyValue) {}
+MirroredX
+false
+MirroredY
+false
+Path
+([]com.sun.star.beans.PropertyValue) { { Name = "Coordinates", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeParameterPair) { { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 1 } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "Segments", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeSegment) { { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 2 }, { Command = (short) 6, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "TextFrames", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeTextFrame) { { TopLeft = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, BottomRight = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 1 } } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }
+Type
+"ooxml-non-primitive"
+ViewBox
+(com.sun.star.awt.Rectangle) { X = (long) 0, Y = (long) 0, Width = (long) 0, Height = (long) 0 }
+/* bentConnector3 */
+AdjustmentValues
+([]com.sun.star.drawing.EnhancedCustomShapeAdjustmentValue) { { Value = (any) { (long) 50000 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE, Name = "adj1" } }
+Equations
+([]string) { "logwidth*$0 /100000", "logheight/2", "logwidth", "logheight" }
+Handles
+([][]com.sun.star.beans.PropertyValue) { { { Name = "Position", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 1 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeXMaximum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2147483647 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeXMinimum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) -2147483647 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RefX", Handle = (long) 0, Value = (any) { (long) 0 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } } }
+MirroredX
+false
+MirroredY
+false
+Path
+([]com.sun.star.beans.PropertyValue) { { Name = "Coordinates", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeParameterPair) { { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "Segments", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeSegment) { { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 3 }, { Command = (short) 6, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "TextFrames", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeTextFrame) { { TopLeft = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, BottomRight = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 } } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }
+Type
+"ooxml-non-primitive"
+ViewBox
+(com.sun.star.awt.Rectangle) { X = (long) 0, Y = (long) 0, Width = (long) 0, Height = (long) 0 }
+/* bentConnector4 */
+AdjustmentValues
+([]com.sun.star.drawing.EnhancedCustomShapeAdjustmentValue) { { Value = (any) { (long) 50000 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE, Name = "adj1" }, { Value = (any) { (long) 50000 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE, Name = "adj2" } }
+Equations
+([]string) { "logwidth*$0 /100000", "(?0 +logwidth)/2", "logheight*$1 /100000", "(0+?2 )/2", "logwidth", "logheight" }
+Handles
+([][]com.sun.star.beans.PropertyValue) { { { Name = "Position", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeXMaximum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2147483647 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeXMinimum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) -2147483647 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RefX", Handle = (long) 0, Value = (any) { (long) 0 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }, { { Name = "Position", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeYMaximum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2147483647 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeYMinimum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) -2147483647 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RefY", Handle = (long) 0, Value = (any) { (long) 1 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } } }
+MirroredX
+false
+MirroredY
+false
+Path
+([]com.sun.star.beans.PropertyValue) { { Name = "Coordinates", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeParameterPair) { { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 1 } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "Segments", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeSegment) { { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 4 }, { Command = (short) 6, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "TextFrames", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeTextFrame) { { TopLeft = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, BottomRight = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 1 } } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }
+Type
+"ooxml-non-primitive"
+ViewBox
+(com.sun.star.awt.Rectangle) { X = (long) 0, Y = (long) 0, Width = (long) 0, Height = (long) 0 }
+/* bentConnector5 */
+AdjustmentValues
+([]com.sun.star.drawing.EnhancedCustomShapeAdjustmentValue) { { Value = (any) { (long) 50000 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE, Name = "adj1" }, { Value = (any) { (long) 50000 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE, Name = "adj2" }, { Value = (any) { (long) 50000 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE, Name = "adj3" } }
+Equations
+([]string) { "logwidth*$0 /100000", "logwidth*$2 /100000", "(?0 +?1 )/2", "logheight*$1 /100000", "(0+?3 )/2", "(logheight+?3 )/2", "logwidth", "logheight" }
+Handles
+([][]com.sun.star.beans.PropertyValue) { { { Name = "Position", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeXMaximum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2147483647 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeXMinimum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) -2147483647 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RefX", Handle = (long) 0, Value = (any) { (long) 0 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }, { { Name = "Position", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeYMaximum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2147483647 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeYMinimum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) -2147483647 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RefY", Handle = (long) 0, Value = (any) { (long) 1 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }, { { Name = "Position", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 1 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeXMaximum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2147483647 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeXMinimum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) -2147483647 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RefX", Handle = (long) 0, Value = (any) { (long) 2 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } } }
+MirroredX
+false
+MirroredY
+false
+Path
+([]com.sun.star.beans.PropertyValue) { { Name = "Coordinates", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeParameterPair) { { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 6 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7 }, Type = (short) 1 } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "Segments", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeSegment) { { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 5 }, { Command = (short) 6, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "TextFrames", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeTextFrame) { { TopLeft = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, BottomRight = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 6 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7 }, Type = (short) 1 } } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }
+Type
+"ooxml-non-primitive"
+ViewBox
+(com.sun.star.awt.Rectangle) { X = (long) 0, Y = (long) 0, Width = (long) 0, Height = (long) 0 }
+/* bentUpArrow */
+AdjustmentValues
+([]com.sun.star.drawing.EnhancedCustomShapeAdjustmentValue) { { Value = (any) { (long) 25000 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE, Name = "adj1" }, { Value = (any) { (long) 25000 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE, Name = "adj2" }, { Value = (any) { (long) 25000 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE, Name = "adj3" } }
+Equations
+([]string) { "if(0-$0 ,0,if(50000-$0 ,$0 ,50000))", "if(0-$1 ,0,if(50000-$1 ,$1 ,50000))", "if(0-$2 ,0,if(50000-$2 ,$2 ,50000))", "min(logwidth,logheight)", "?3 *?2 /100000", "?3 *?1 /50000", "logwidth+0-?5 ", "?3 *?1 /100000", "logwidth+0-?7 ", "?3 *?0 /200000", "?8 +0-?9 ", "?8 +?9 -0", "?3 *?0 /100000", "logheight+0-?12 ", "?11 *1/2", "(?13 +logheight)/2", "(?4 +logheight)/2", "logheight", "logwidth" }
+Handles
+([][]com.sun.star.beans.PropertyValue) { { { Name = "Position", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 13 }, Type = (short) 1 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeYMaximum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 50000 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeYMinimum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RefY", Handle = (long) 0, Value = (any) { (long) 0 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }, { { Name = "Position", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 6 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeXMaximum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 50000 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeXMinimum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RefX", Handle = (long) 0, Value = (any) { (long) 1 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }, { { Name = "Position", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 10 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeYMaximum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 50000 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeYMinimum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RefY", Handle = (long) 0, Value = (any) { (long) 2 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } } }
+MirroredX
+false
+MirroredY
+false
+Path
+([]com.sun.star.beans.PropertyValue) { { Name = "Coordinates", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeParameterPair) { { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 13 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 10 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 13 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 10 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 6 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 18 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 11 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 11 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 17 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 17 }, Type = (short) 1 } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "Segments", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeSegment) { { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 8 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "TextFrames", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeTextFrame) { { TopLeft = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 13 }, Type = (short) 1 } }, BottomRight = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 11 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 17 }, Type = (short) 1 } } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }
+Type
+"ooxml-non-primitive"
+ViewBox
+(com.sun.star.awt.Rectangle) { X = (long) 0, Y = (long) 0, Width = (long) 0, Height = (long) 0 }
+/* bevel */
+AdjustmentValues
+([]com.sun.star.drawing.EnhancedCustomShapeAdjustmentValue) { { Value = (any) { (long) 12500 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE, Name = "adj" } }
+Equations
+([]string) { "if(0-$0 ,0,if(50000-$0 ,$0 ,50000))", "min(logwidth,logheight)", "?1 *?0 /100000", "logwidth+0-?2 ", "logheight+0-?2 ", "logwidth", "logheight/2", "logwidth/2", "logheight" }
+Handles
+([][]com.sun.star.beans.PropertyValue) { { { Name = "Position", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeXMaximum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 50000 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeXMinimum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RefX", Handle = (long) 0, Value = (any) { (long) 0 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } } }
+MirroredX
+false
+MirroredY
+false
+Path
+([]com.sun.star.beans.PropertyValue) { { Name = "Coordinates", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeParameterPair) { { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "Segments", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeSegment) { { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 3 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 7, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 }, { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 3 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 21, Count = (short) 0 }, { Command = (short) 7, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 }, { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 3 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 19, Count = (short) 0 }, { Command = (short) 7, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 }, { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 3 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 20, Count = (short) 0 }, { Command = (short) 7, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 }, { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 3 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 18, Count = (short) 0 }, { Command = (short) 7, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 }, { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 3 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 3 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 1 }, { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 1 }, { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 1 }, { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 1 }, { Command = (short) 6, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "TextFrames", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeTextFrame) { { TopLeft = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 } }, BottomRight = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 } } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }
+Type
+"ooxml-non-primitive"
+ViewBox
+(com.sun.star.awt.Rectangle) { X = (long) 0, Y = (long) 0, Width = (long) 0, Height = (long) 0 }
+/* blockArc */
+AdjustmentValues
+([]com.sun.star.drawing.EnhancedCustomShapeAdjustmentValue) { { Value = (any) { (long) 10800000 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE, Name = "adj1" }, { Value = (any) { (long) 0 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE, Name = "adj2" }, { Value = (any) { (long) 25000 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE, Name = "adj3" } }
+Equations
+([]string) { "if(0-$0 ,0,if(21599999-$0 ,$0 ,21599999))", "if(0-$1 ,0,if(21599999-$1 ,$1 ,21599999))", "if(0-$2 ,0,if(50000-$2 ,$2 ,50000))", "?1 +0-?0 ", "?3 +21600000-0", "if(?3 ,?3 ,?4 )", "0+0-?5 ", "logwidth/2", "?7 *sin(pi*(?0 )/10800000)", "logheight/2", "?9 *cos(pi*(?0 )/10800000)", "?7 *sin(pi*(?1 )/10800000)", "?9 *cos(pi*(?1 )/10800000)", "?7 *(cos(atan2(?8 ,?10 )))", "?9 *(sin(atan2(?8 ,?10 )))", "?7 *(cos(atan2(?11 ,?12 )))", "?9 *(sin(atan2(?11 ,?12 )))", "logwidth/2", "?17 +?13 -0", "logheight/2", "?19 +?14 -0", "?17 +?15 -0", "?19 +?16 -0", "min(logwidth,logheight)", "?23 *?2 /100000", "?7 +0-?24 ", "?9 +0-?24 ", "?25 *sin(pi*(?1 )/10800000)", "?26 *cos(pi*(?1 )/10800000)", "?25 *sin(pi*(?0 )/10800000)", "?26 *cos(pi*(?0 )/10800000)", "?25 *(cos(atan2(?27 ,?28 )))", "?26 *(sin(atan2(?27 ,?28 )))", "?25 *(cos(atan2(?29 ,?30 )))", "?26 *(sin(atan2(?29 ,?30 )))", "?17 +?31 -0", "?19 +?32 -0", "?17 +?33 -0", "?19 +?34 -0", "21600000+0-?0 ", "?5 +0-?39 ", "max(?18 ,?35 )", "max(?21 ,?37 )", "max(?41 ,?42 )", "if(?40 ,logwidth,?43 )", "5400000+0-?0 ", "27000000+0-?0 ", "if(?45 ,?45 ,?46 )", "?5 +0-?47 ", "max(?20 ,?36 )", "max(?22 ,?38 )", "max(?49 ,?50 )", "if(?48 ,logheight,?51 )", "10800000+0-?0 ", "32400000+0-?0 ", "if(?53 ,?53 ,?54 )", "?5 +0-?55 ", "min(?18 ,?35 )", "min(?21 ,?37 )", "min(?57 ,?58 )", "if(?56 ,0,?59 )", "16200000+0-?0 ", "37800000+0-?0 ", "if(?61 ,?61 ,?62 )", "?5 +0-?63 ", "min(?20 ,?36 )", "min(?22 ,?38 )", "min(?65 ,?66 )", "if(?64 ,0,?67 )", "(?18 +?37 )/2", "(?20 +?38 )/2", "(?21 +?35 )/2", "(?22 +?36 )/2", "?0 +0-5400000", "?1 +5400000-0", "(?73 +?74 )/2", "(?0 )/60000.0", "(?5 )/60000.0", "(?1 )/60000.0", "(?6 )/60000.0" }
+Handles
+([][]com.sun.star.beans.PropertyValue) { { { Name = "Position", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 18 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 20 }, Type = (short) 1 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RefAngle", Handle = (long) 0, Value = (any) { (long) 0 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }, { { Name = "Position", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 35 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 36 }, Type = (short) 1 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RadiusRangeMaximum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 50000 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RadiusRangeMinimum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RefAngle", Handle = (long) 0, Value = (any) { (long) 1 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RefR", Handle = (long) 0, Value = (any) { (long) 2 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } } }
+MirroredX
+false
+MirroredY
+false
+Path
+([]com.sun.star.beans.PropertyValue) { { Name = "Coordinates", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeParameterPair) { { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 18 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 20 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 9 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 76 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 77 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 35 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 36 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 25 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 26 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 78 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 79 }, Type = (short) 1 } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "Segments", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeSegment) { { Command = (short) 1, Count = (short) 1 }, { Command = (short) 17, Count = (short) 1 }, { Command = (short) 2, Count = (short) 1 }, { Command = (short) 17, Count = (short) 1 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "TextFrames", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeTextFrame) { { TopLeft = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 60 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 68 }, Type = (short) 1 } }, BottomRight = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 44 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 52 }, Type = (short) 1 } } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }
+Type
+"ooxml-non-primitive"
+ViewBox
+(com.sun.star.awt.Rectangle) { X = (long) 0, Y = (long) 0, Width = (long) 0, Height = (long) 0 }
+/* borderCallout1 */
+AdjustmentValues
+([]com.sun.star.drawing.EnhancedCustomShapeAdjustmentValue) { { Value = (any) { (long) 18750 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE, Name = "adj1" }, { Value = (any) { (long) -8333 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE, Name = "adj2" }, { Value = (any) { (long) 112500 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE, Name = "adj3" }, { Value = (any) { (long) -38333 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE, Name = "adj4" } }
+Equations
+([]string) { "logheight*$0 /100000", "logwidth*$1 /100000", "logheight*$2 /100000", "logwidth*$3 /100000", "logwidth", "logheight/2", "logwidth/2", "logheight" }
+Handles
+([][]com.sun.star.beans.PropertyValue) { { { Name = "Position", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 1 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeXMaximum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2147483647 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeXMinimum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) -2147483647 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeYMaximum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2147483647 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeYMinimum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) -2147483647 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RefX", Handle = (long) 0, Value = (any) { (long) 1 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RefY", Handle = (long) 0, Value = (any) { (long) 0 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }, { { Name = "Position", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeXMaximum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2147483647 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeXMinimum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) -2147483647 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeYMaximum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2147483647 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeYMinimum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) -2147483647 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RefX", Handle = (long) 0, Value = (any) { (long) 3 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RefY", Handle = (long) 0, Value = (any) { (long) 2 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } } }
+MirroredX
+false
+MirroredY
+false
+Path
+([]com.sun.star.beans.PropertyValue) { { Name = "Coordinates", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeParameterPair) { { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "Segments", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeSegment) { { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 3 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 }, { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 1 }, { Command = (short) 6, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "TextFrames", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeTextFrame) { { TopLeft = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, BottomRight = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7 }, Type = (short) 1 } } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }
+Type
+"ooxml-non-primitive"
+ViewBox
+(com.sun.star.awt.Rectangle) { X = (long) 0, Y = (long) 0, Width = (long) 0, Height = (long) 0 }
+/* borderCallout2 */
+AdjustmentValues
+([]com.sun.star.drawing.EnhancedCustomShapeAdjustmentValue) { { Value = (any) { (long) 18750 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE, Name = "adj1" }, { Value = (any) { (long) -8333 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE, Name = "adj2" }, { Value = (any) { (long) 18750 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE, Name = "adj3" }, { Value = (any) { (long) -16667 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE, Name = "adj4" }, { Value = (any) { (long) 112500 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE, Name = "adj5" }, { Value = (any) { (long) -46667 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE, Name = "adj6" } }
+Equations
+([]string) { "logheight*$0 /100000", "logwidth*$1 /100000", "logheight*$2 /100000", "logwidth*$3 /100000", "logheight*$4 /100000", "logwidth*$5 /100000", "logwidth", "logheight/2", "logwidth/2", "logheight" }
+Handles
+([][]com.sun.star.beans.PropertyValue) { { { Name = "Position", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 1 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeXMaximum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2147483647 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeXMinimum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) -2147483647 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeYMaximum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2147483647 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeYMinimum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) -2147483647 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RefX", Handle = (long) 0, Value = (any) { (long) 1 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RefY", Handle = (long) 0, Value = (any) { (long) 0 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }, { { Name = "Position", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeXMaximum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2147483647 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeXMinimum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) -2147483647 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeYMaximum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2147483647 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeYMinimum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) -2147483647 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RefX", Handle = (long) 0, Value = (any) { (long) 3 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RefY", Handle = (long) 0, Value = (any) { (long) 2 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }, { { Name = "Position", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeXMaximum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2147483647 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeXMinimum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) -2147483647 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeYMaximum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2147483647 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeYMinimum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) -2147483647 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RefX", Handle = (long) 0, Value = (any) { (long) 5 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RefY", Handle = (long) 0, Value = (any) { (long) 4 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } } }
+MirroredX
+false
+MirroredY
+false
+Path
+([]com.sun.star.beans.PropertyValue) { { Name = "Coordinates", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeParameterPair) { { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 6 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 6 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 9 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 9 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "Segments", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeSegment) { { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 3 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 }, { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 2 }, { Command = (short) 6, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "TextFrames", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeTextFrame) { { TopLeft = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, BottomRight = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 6 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 9 }, Type = (short) 1 } } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }
+Type
+"ooxml-non-primitive"
+ViewBox
+(com.sun.star.awt.Rectangle) { X = (long) 0, Y = (long) 0, Width = (long) 0, Height = (long) 0 }
+/* borderCallout3 */
+AdjustmentValues
+([]com.sun.star.drawing.EnhancedCustomShapeAdjustmentValue) { { Value = (any) { (long) 18750 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE, Name = "adj1" }, { Value = (any) { (long) -8333 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE, Name = "adj2" }, { Value = (any) { (long) 18750 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE, Name = "adj3" }, { Value = (any) { (long) -16667 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE, Name = "adj4" }, { Value = (any) { (long) 100000 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE, Name = "adj5" }, { Value = (any) { (long) -16667 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE, Name = "adj6" }, { Value = (any) { (long) 112963 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE, Name = "adj7" }, { Value = (any) { (long) -8333 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE, Name = "adj8" } }
+Equations
+([]string) { "logheight*$0 /100000", "logwidth*$1 /100000", "logheight*$2 /100000", "logwidth*$3 /100000", "logheight*$4 /100000", "logwidth*$5 /100000", "logheight*$6 /100000", "logwidth*$7 /100000", "logwidth", "logheight/2", "logwidth/2", "logheight" }
+Handles
+([][]com.sun.star.beans.PropertyValue) { { { Name = "Position", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 1 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeXMaximum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2147483647 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeXMinimum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) -2147483647 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeYMaximum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2147483647 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeYMinimum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) -2147483647 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RefX", Handle = (long) 0, Value = (any) { (long) 1 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RefY", Handle = (long) 0, Value = (any) { (long) 0 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }, { { Name = "Position", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeXMaximum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2147483647 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeXMinimum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) -2147483647 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeYMaximum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2147483647 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeYMinimum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) -2147483647 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RefX", Handle = (long) 0, Value = (any) { (long) 3 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RefY", Handle = (long) 0, Value = (any) { (long) 2 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }, { { Name = "Position", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeXMaximum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2147483647 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeXMinimum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) -2147483647 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeYMaximum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2147483647 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeYMinimum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) -2147483647 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RefX", Handle = (long) 0, Value = (any) { (long) 5 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RefY", Handle = (long) 0, Value = (any) { (long) 4 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }, { { Name = "Position", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 6 }, Type = (short) 1 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeXMaximum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2147483647 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeXMinimum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) -2147483647 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeYMaximum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2147483647 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeYMinimum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) -2147483647 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RefX", Handle = (long) 0, Value = (any) { (long) 7 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RefY", Handle = (long) 0, Value = (any) { (long) 6 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } } }
+MirroredX
+false
+MirroredY
+false
+Path
+([]com.sun.star.beans.PropertyValue) { { Name = "Coordinates", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeParameterPair) { { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 11 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 11 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 6 }, Type = (short) 1 } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "Segments", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeSegment) { { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 3 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 }, { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 3 }, { Command = (short) 6, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "TextFrames", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeTextFrame) { { TopLeft = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, BottomRight = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 11 }, Type = (short) 1 } } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }
+Type
+"ooxml-non-primitive"
+ViewBox
+(com.sun.star.awt.Rectangle) { X = (long) 0, Y = (long) 0, Width = (long) 0, Height = (long) 0 }
+/* bracePair */
+AdjustmentValues
+([]com.sun.star.drawing.EnhancedCustomShapeAdjustmentValue) { { Value = (any) { (long) 8333 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE, Name = "adj" } }
+Equations
+([]string) { "if(0-$0 ,0,if(25000-$0 ,$0 ,25000))", "min(logwidth,logheight)", "?1 *?0 /100000", "?1 *?0 /50000", "logwidth+0-?3 ", "logwidth+0-?2 ", "logheight/2", "?6 +0-?2 ", "?6 +?2 -0", "logheight+0-?2 ", "?2 *29289/100000", "?2 +?10 -0", "logwidth+0-?11 ", "logheight+0-?10 ", "logwidth/2", "logheight", "logwidth", "(5400000)/60000.0", "(5400000)/60000.0", "(0)/60000.0", "(-5400000)/60000.0", "(5400000)/60000.0", "(-5400000)/60000.0", "(10800000)/60000.0", "(5400000)/60000.0", "(16200000)/60000.0", "(5400000)/60000.0", "(10800000)/60000.0", "(-5400000)/60000.0", "(16200000)/60000.0", "(-5400000)/60000.0", "(0)/60000.0", "(5400000)/60000.0", "(5400000)/60000.0", "(5400000)/60000.0", "(0)/60000.0", "(-5400000)/60000.0", "(5400000)/60000.0", "(-5400000)/60000.0", "(10800000)/60000.0", "(5400000)/60000.0", "(16200000)/60000.0", "(5400000)/60000.0", "(10800000)/60000.0", "(-5400000)/60000.0", "(16200000)/60000.0", "(-5400000)/60000.0", "(0)/60000.0", "(5400000)/60000.0" }
+Handles
+([][]com.sun.star.beans.PropertyValue) { { { Name = "Position", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeYMaximum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 25000 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeYMinimum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RefY", Handle = (long) 0, Value = (any) { (long) 0 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } } }
+MirroredX
+false
+MirroredY
+false
+Path
+([]com.sun.star.beans.PropertyValue) { { Name = "Coordinates", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeParameterPair) { { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 15 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 17 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 18 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 19 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 20 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 21 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 22 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 23 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 24 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 25 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 26 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 27 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 28 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 29 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 30 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 9 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 31 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 32 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 15 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 33 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 34 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 35 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 36 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 37 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 38 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 39 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 40 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 41 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 42 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 43 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 44 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 45 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 46 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 9 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 47 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 48 }, Type = (short) 1 } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "Segments", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeSegment) { { Command = (short) 1, Count = (short) 1 }, { Command = (short) 17, Count = (short) 1 }, { Command = (short) 2, Count = (short) 1 }, { Command = (short) 17, Count = (short) 2 }, { Command = (short) 2, Count = (short) 1 }, { Command = (short) 17, Count = (short) 1 }, { Command = (short) 2, Count = (short) 1 }, { Command = (short) 17, Count = (short) 1 }, { Command = (short) 2, Count = (short) 1 }, { Command = (short) 17, Count = (short) 2 }, { Command = (short) 2, Count = (short) 1 }, { Command = (short) 17, Count = (short) 1 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 7, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 }, { Command = (short) 1, Count = (short) 1 }, { Command = (short) 17, Count = (short) 1 }, { Command = (short) 2, Count = (short) 1 }, { Command = (short) 17, Count = (short) 2 }, { Command = (short) 2, Count = (short) 1 }, { Command = (short) 17, Count = (short) 1 }, { Command = (short) 1, Count = (short) 1 }, { Command = (short) 17, Count = (short) 1 }, { Command = (short) 2, Count = (short) 1 }, { Command = (short) 17, Count = (short) 2 }, { Command = (short) 2, Count = (short) 1 }, { Command = (short) 17, Count = (short) 1 }, { Command = (short) 6, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "TextFrames", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeTextFrame) { { TopLeft = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 11 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 11 }, Type = (short) 1 } }, BottomRight = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 12 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 13 }, Type = (short) 1 } } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }
+Type
+"ooxml-non-primitive"
+ViewBox
+(com.sun.star.awt.Rectangle) { X = (long) 0, Y = (long) 0, Width = (long) 0, Height = (long) 0 }
+/* bracketPair */
+AdjustmentValues
+([]com.sun.star.drawing.EnhancedCustomShapeAdjustmentValue) { { Value = (any) { (long) 16667 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE, Name = "adj" } }
+Equations
+([]string) { "if(0-$0 ,0,if(50000-$0 ,$0 ,50000))", "min(logwidth,logheight)", "?1 *?0 /100000", "logwidth+0-?2 ", "logheight+0-?2 ", "?2 *29289/100000", "logwidth+0-?5 ", "logheight+0-?5 ", "logwidth/2", "logheight/2", "logheight", "logwidth", "(10800000)/60000.0", "(5400000)/60000.0", "(16200000)/60000.0", "(5400000)/60000.0", "(0)/60000.0", "(5400000)/60000.0", "(5400000)/60000.0", "(5400000)/60000.0", "(5400000)/60000.0", "(5400000)/60000.0", "(10800000)/60000.0", "(5400000)/60000.0", "(16200000)/60000.0", "(5400000)/60000.0", "(0)/60000.0", "(5400000)/60000.0" }
+Handles
+([][]com.sun.star.beans.PropertyValue) { { { Name = "Position", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeYMaximum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 50000 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeYMinimum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RefY", Handle = (long) 0, Value = (any) { (long) 0 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } } }
+MirroredX
+false
+MirroredY
+false
+Path
+([]com.sun.star.beans.PropertyValue) { { Name = "Coordinates", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeParameterPair) { { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 12 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 13 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 14 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 15 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 11 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 16 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 17 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 10 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 18 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 19 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 10 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 20 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 21 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 22 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 23 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 24 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 25 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 11 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 26 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 27 }, Type = (short) 1 } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "Segments", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeSegment) { { Command = (short) 1, Count = (short) 1 }, { Command = (short) 17, Count = (short) 1 }, { Command = (short) 2, Count = (short) 1 }, { Command = (short) 17, Count = (short) 1 }, { Command = (short) 2, Count = (short) 1 }, { Command = (short) 17, Count = (short) 1 }, { Command = (short) 2, Count = (short) 1 }, { Command = (short) 17, Count = (short) 1 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 7, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 }, { Command = (short) 1, Count = (short) 1 }, { Command = (short) 17, Count = (short) 1 }, { Command = (short) 2, Count = (short) 1 }, { Command = (short) 17, Count = (short) 1 }, { Command = (short) 1, Count = (short) 1 }, { Command = (short) 17, Count = (short) 1 }, { Command = (short) 2, Count = (short) 1 }, { Command = (short) 17, Count = (short) 1 }, { Command = (short) 6, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "TextFrames", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeTextFrame) { { TopLeft = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 1 } }, BottomRight = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 6 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7 }, Type = (short) 1 } } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }
+Type
+"ooxml-non-primitive"
+ViewBox
+(com.sun.star.awt.Rectangle) { X = (long) 0, Y = (long) 0, Width = (long) 0, Height = (long) 0 }
+/* callout1 */
+AdjustmentValues
+([]com.sun.star.drawing.EnhancedCustomShapeAdjustmentValue) { { Value = (any) { (long) 18750 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE, Name = "adj1" }, { Value = (any) { (long) -8333 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE, Name = "adj2" }, { Value = (any) { (long) 112500 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE, Name = "adj3" }, { Value = (any) { (long) -38333 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE, Name = "adj4" } }
+Equations
+([]string) { "logheight*$0 /100000", "logwidth*$1 /100000", "logheight*$2 /100000", "logwidth*$3 /100000", "logwidth", "logheight/2", "logwidth/2", "logheight" }
+Handles
+([][]com.sun.star.beans.PropertyValue) { { { Name = "Position", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 1 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeXMaximum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2147483647 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeXMinimum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) -2147483647 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeYMaximum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2147483647 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeYMinimum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) -2147483647 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RefX", Handle = (long) 0, Value = (any) { (long) 1 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RefY", Handle = (long) 0, Value = (any) { (long) 0 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }, { { Name = "Position", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeXMaximum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2147483647 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeXMinimum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) -2147483647 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeYMaximum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2147483647 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeYMinimum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) -2147483647 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RefX", Handle = (long) 0, Value = (any) { (long) 3 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RefY", Handle = (long) 0, Value = (any) { (long) 2 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } } }
+MirroredX
+false
+MirroredY
+false
+Path
+([]com.sun.star.beans.PropertyValue) { { Name = "Coordinates", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeParameterPair) { { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "Segments", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeSegment) { { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 3 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 7, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 }, { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 1 }, { Command = (short) 6, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "TextFrames", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeTextFrame) { { TopLeft = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, BottomRight = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7 }, Type = (short) 1 } } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }
+Type
+"ooxml-non-primitive"
+ViewBox
+(com.sun.star.awt.Rectangle) { X = (long) 0, Y = (long) 0, Width = (long) 0, Height = (long) 0 }
+/* callout2 */
+AdjustmentValues
+([]com.sun.star.drawing.EnhancedCustomShapeAdjustmentValue) { { Value = (any) { (long) 18750 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE, Name = "adj1" }, { Value = (any) { (long) -8333 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE, Name = "adj2" }, { Value = (any) { (long) 18750 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE, Name = "adj3" }, { Value = (any) { (long) -16667 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE, Name = "adj4" }, { Value = (any) { (long) 112500 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE, Name = "adj5" }, { Value = (any) { (long) -46667 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE, Name = "adj6" } }
+Equations
+([]string) { "logheight*$0 /100000", "logwidth*$1 /100000", "logheight*$2 /100000", "logwidth*$3 /100000", "logheight*$4 /100000", "logwidth*$5 /100000", "logwidth", "logheight/2", "logwidth/2", "logheight" }
+Handles
+([][]com.sun.star.beans.PropertyValue) { { { Name = "Position", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 1 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeXMaximum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2147483647 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeXMinimum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) -2147483647 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeYMaximum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2147483647 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeYMinimum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) -2147483647 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RefX", Handle = (long) 0, Value = (any) { (long) 1 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RefY", Handle = (long) 0, Value = (any) { (long) 0 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }, { { Name = "Position", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeXMaximum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2147483647 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeXMinimum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) -2147483647 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeYMaximum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2147483647 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeYMinimum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) -2147483647 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RefX", Handle = (long) 0, Value = (any) { (long) 3 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RefY", Handle = (long) 0, Value = (any) { (long) 2 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }, { { Name = "Position", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeXMaximum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2147483647 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeXMinimum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) -2147483647 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeYMaximum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2147483647 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeYMinimum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) -2147483647 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RefX", Handle = (long) 0, Value = (any) { (long) 5 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RefY", Handle = (long) 0, Value = (any) { (long) 4 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } } }
+MirroredX
+false
+MirroredY
+false
+Path
+([]com.sun.star.beans.PropertyValue) { { Name = "Coordinates", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeParameterPair) { { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 6 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 6 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 9 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 9 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "Segments", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeSegment) { { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 3 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 7, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 }, { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 2 }, { Command = (short) 6, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "TextFrames", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeTextFrame) { { TopLeft = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, BottomRight = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 6 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 9 }, Type = (short) 1 } } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }
+Type
+"ooxml-non-primitive"
+ViewBox
+(com.sun.star.awt.Rectangle) { X = (long) 0, Y = (long) 0, Width = (long) 0, Height = (long) 0 }
+/* callout3 */
+AdjustmentValues
+([]com.sun.star.drawing.EnhancedCustomShapeAdjustmentValue) { { Value = (any) { (long) 18750 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE, Name = "adj1" }, { Value = (any) { (long) -8333 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE, Name = "adj2" }, { Value = (any) { (long) 18750 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE, Name = "adj3" }, { Value = (any) { (long) -16667 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE, Name = "adj4" }, { Value = (any) { (long) 100000 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE, Name = "adj5" }, { Value = (any) { (long) -16667 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE, Name = "adj6" }, { Value = (any) { (long) 112963 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE, Name = "adj7" }, { Value = (any) { (long) -8333 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE, Name = "adj8" } }
+Equations
+([]string) { "logheight*$0 /100000", "logwidth*$1 /100000", "logheight*$2 /100000", "logwidth*$3 /100000", "logheight*$4 /100000", "logwidth*$5 /100000", "logheight*$6 /100000", "logwidth*$7 /100000", "logwidth", "logheight/2", "logwidth/2", "logheight" }
+Handles
+([][]com.sun.star.beans.PropertyValue) { { { Name = "Position", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 1 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeXMaximum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2147483647 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeXMinimum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) -2147483647 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeYMaximum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2147483647 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeYMinimum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) -2147483647 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RefX", Handle = (long) 0, Value = (any) { (long) 1 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RefY", Handle = (long) 0, Value = (any) { (long) 0 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }, { { Name = "Position", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeXMaximum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2147483647 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeXMinimum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) -2147483647 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeYMaximum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2147483647 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeYMinimum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) -2147483647 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RefX", Handle = (long) 0, Value = (any) { (long) 3 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RefY", Handle = (long) 0, Value = (any) { (long) 2 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }, { { Name = "Position", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeXMaximum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2147483647 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeXMinimum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) -2147483647 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeYMaximum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2147483647 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeYMinimum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) -2147483647 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RefX", Handle = (long) 0, Value = (any) { (long) 5 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RefY", Handle = (long) 0, Value = (any) { (long) 4 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }, { { Name = "Position", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 6 }, Type = (short) 1 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeXMaximum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2147483647 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeXMinimum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) -2147483647 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeYMaximum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2147483647 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeYMinimum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) -2147483647 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RefX", Handle = (long) 0, Value = (any) { (long) 7 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RefY", Handle = (long) 0, Value = (any) { (long) 6 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } } }
+MirroredX
+false
+MirroredY
+false
+Path
+([]com.sun.star.beans.PropertyValue) { { Name = "Coordinates", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeParameterPair) { { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 11 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 11 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 6 }, Type = (short) 1 } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "Segments", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeSegment) { { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 3 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 7, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 }, { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 3 }, { Command = (short) 6, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "TextFrames", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeTextFrame) { { TopLeft = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, BottomRight = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 11 }, Type = (short) 1 } } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }
+Type
+"ooxml-non-primitive"
+ViewBox
+(com.sun.star.awt.Rectangle) { X = (long) 0, Y = (long) 0, Width = (long) 0, Height = (long) 0 }
+/* can */
+AdjustmentValues
+([]com.sun.star.drawing.EnhancedCustomShapeAdjustmentValue) { { Value = (any) { (long) 25000 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE, Name = "adj" } }
+Equations
+([]string) { "min(logwidth,logheight)", "50000*logheight/?0 ", "if(0-$0 ,0,if(?1 -$0 ,$0 ,?1 ))", "?0 *?2 /200000", "?3 +?3 -0", "logheight+0-?3 ", "logwidth/2", "logheight/2", "logheight", "logwidth", "logwidth/2", "(10800000)/60000.0", "(-10800000)/60000.0", "(0)/60000.0", "(10800000)/60000.0", "(10800000)/60000.0", "(10800000)/60000.0", "(0)/60000.0", "(10800000)/60000.0", "(0)/60000.0", "(10800000)/60000.0", "(10800000)/60000.0", "(10800000)/60000.0", "(0)/60000.0", "(10800000)/60000.0" }
+Handles
+([][]com.sun.star.beans.PropertyValue) { { { Name = "Position", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 6 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeYMaximum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 1 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeYMinimum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RefY", Handle = (long) 0, Value = (any) { (long) 0 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } } }
+MirroredX
+false
+MirroredY
+false
+Path
+([]com.sun.star.beans.PropertyValue) { { Name = "Coordinates", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeParameterPair) { { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 10 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 11 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 12 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 9 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 10 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 13 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 14 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 10 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 15 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 16 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 10 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 17 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 18 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 9 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 10 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 19 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 20 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 10 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 21 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 22 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 9 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 10 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 23 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 24 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "Segments", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeSegment) { { Command = (short) 1, Count = (short) 1 }, { Command = (short) 17, Count = (short) 1 }, { Command = (short) 2, Count = (short) 1 }, { Command = (short) 17, Count = (short) 1 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 7, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 }, { Command = (short) 1, Count = (short) 1 }, { Command = (short) 17, Count = (short) 2 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 20, Count = (short) 0 }, { Command = (short) 7, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 }, { Command = (short) 1, Count = (short) 1 }, { Command = (short) 17, Count = (short) 2 }, { Command = (short) 2, Count = (short) 1 }, { Command = (short) 17, Count = (short) 1 }, { Command = (short) 2, Count = (short) 1 }, { Command = (short) 6, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "TextFrames", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeTextFrame) { { TopLeft = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 } }, BottomRight = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 9 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 1 } } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }
+Type
+"ooxml-non-primitive"
+ViewBox
+(com.sun.star.awt.Rectangle) { X = (long) 0, Y = (long) 0, Width = (long) 0, Height = (long) 0 }
+/* chartPlus */
+AdjustmentValues
+([]com.sun.star.drawing.EnhancedCustomShapeAdjustmentValue) {}
+Equations
+([]string) {}
+Handles
+([][]com.sun.star.beans.PropertyValue) {}
+MirroredX
+false
+MirroredY
+false
+Path
+([]com.sun.star.beans.PropertyValue) { { Name = "Coordinates", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeParameterPair) { { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 10 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 10 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 10 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 10 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 10 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 10 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "Segments", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeSegment) { { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 1 }, { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 1 }, { Command = (short) 6, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 }, { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 3 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 7, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "SubViewSize", Handle = (long) 0, Value = (any) { ([]com.sun.star.awt.Size) { { Width = (long) 10, Height = (long) 10 }, { Width = (long) 10, Height = (long) 10 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }
+Type
+"ooxml-non-primitive"
+ViewBox
+(com.sun.star.awt.Rectangle) { X = (long) 0, Y = (long) 0, Width = (long) 400000, Height = (long) 400000 }
+/* chartStar */
+AdjustmentValues
+([]com.sun.star.drawing.EnhancedCustomShapeAdjustmentValue) {}
+Equations
+([]string) {}
+Handles
+([][]com.sun.star.beans.PropertyValue) {}
+MirroredX
+false
+MirroredY
+false
+Path
+([]com.sun.star.beans.PropertyValue) { { Name = "Coordinates", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeParameterPair) { { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 10 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 10 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 10 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 10 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 10 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 10 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 10 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 10 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 10 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "Segments", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeSegment) { { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 1 }, { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 1 }, { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 1 }, { Command = (short) 6, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 }, { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 3 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 7, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "SubViewSize", Handle = (long) 0, Value = (any) { ([]com.sun.star.awt.Size) { { Width = (long) 10, Height = (long) 10 }, { Width = (long) 10, Height = (long) 10 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }
+Type
+"ooxml-non-primitive"
+ViewBox
+(com.sun.star.awt.Rectangle) { X = (long) 0, Y = (long) 0, Width = (long) 400000, Height = (long) 400000 }
+/* chartX */
+AdjustmentValues
+([]com.sun.star.drawing.EnhancedCustomShapeAdjustmentValue) {}
+Equations
+([]string) {}
+Handles
+([][]com.sun.star.beans.PropertyValue) {}
+MirroredX
+false
+MirroredY
+false
+Path
+([]com.sun.star.beans.PropertyValue) { { Name = "Coordinates", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeParameterPair) { { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 10 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 10 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 10 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 10 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 10 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 10 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 10 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 10 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "Segments", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeSegment) { { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 1 }, { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 1 }, { Command = (short) 6, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 }, { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 3 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 7, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "SubViewSize", Handle = (long) 0, Value = (any) { ([]com.sun.star.awt.Size) { { Width = (long) 10, Height = (long) 10 }, { Width = (long) 10, Height = (long) 10 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }
+Type
+"ooxml-non-primitive"
+ViewBox
+(com.sun.star.awt.Rectangle) { X = (long) 0, Y = (long) 0, Width = (long) 400000, Height = (long) 400000 }
+/* chevron */
+AdjustmentValues
+([]com.sun.star.drawing.EnhancedCustomShapeAdjustmentValue) { { Value = (any) { (long) 50000 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE, Name = "adj" } }
+Equations
+([]string) { "min(logwidth,logheight)", "100000*logwidth/?0 ", "if(0-$0 ,0,if(?1 -$0 ,$0 ,?1 ))", "?0 *?2 /100000", "logwidth+0-?3 ", "?4 *1/2", "?4 +0-?3 ", "if(?6 ,?3 ,0)", "if(?6 ,?4 ,logwidth)", "logheight/2", "logheight", "logwidth" }
+Handles
+([][]com.sun.star.beans.PropertyValue) { { { Name = "Position", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeXMaximum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 1 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeXMinimum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RefX", Handle = (long) 0, Value = (any) { (long) 0 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } } }
+MirroredX
+false
+MirroredY
+false
+Path
+([]com.sun.star.beans.PropertyValue) { { Name = "Coordinates", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeParameterPair) { { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 11 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 9 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 10 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 10 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 9 }, Type = (short) 1 } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "Segments", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeSegment) { { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 5 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "TextFrames", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeTextFrame) { { TopLeft = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, BottomRight = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 10 }, Type = (short) 1 } } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }
+Type
+"ooxml-non-primitive"
+ViewBox
+(com.sun.star.awt.Rectangle) { X = (long) 0, Y = (long) 0, Width = (long) 0, Height = (long) 0 }
+/* chord */
+AdjustmentValues
+([]com.sun.star.drawing.EnhancedCustomShapeAdjustmentValue) { { Value = (any) { (long) 2700000 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE, Name = "adj1" }, { Value = (any) { (long) 16200000 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE, Name = "adj2" } }
+Equations
+([]string) { "if(0-$0 ,0,if(21599999-$0 ,$0 ,21599999))", "if(0-$1 ,0,if(21599999-$1 ,$1 ,21599999))", "?1 +0-?0 ", "?2 +21600000-0", "if(?2 ,?2 ,?3 )", "logwidth/2", "?5 *sin(pi*(?0 )/10800000)", "logheight/2", "?7 *cos(pi*(?0 )/10800000)", "?5 *(cos(atan2(?6 ,?8 )))", "?7 *(sin(atan2(?6 ,?8 )))", "?5 *sin(pi*(?1 )/10800000)", "?7 *cos(pi*(?1 )/10800000)", "?5 *(cos(atan2(?11 ,?12 )))", "?7 *(sin(atan2(?11 ,?12 )))", "logwidth/2", "?15 +?9 -0", "logheight/2", "?17 +?10 -0", "?15 +?13 -0", "?17 +?14 -0", "(?16 +?19 )/2", "(?18 +?20 )/2", "?4 *1/2", "?0 +?23 -10800000", "?5 *cos(pi*(2700000)/10800000)", "?7 *sin(pi*(2700000)/10800000)", "?15 +0-?25 ", "?15 +?25 -0", "?17 +0-?26 ", "?17 +?26 -0", "(?0 )/60000.0", "(?4 )/60000.0" }
+Handles
+([][]com.sun.star.beans.PropertyValue) { { { Name = "Position", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 16 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 18 }, Type = (short) 1 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RefAngle", Handle = (long) 0, Value = (any) { (long) 0 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }, { { Name = "Position", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 19 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 20 }, Type = (short) 1 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RefAngle", Handle = (long) 0, Value = (any) { (long) 1 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } } }
+MirroredX
+false
+MirroredY
+false
+Path
+([]com.sun.star.beans.PropertyValue) { { Name = "Coordinates", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeParameterPair) { { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 16 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 18 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 31 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 32 }, Type = (short) 1 } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "Segments", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeSegment) { { Command = (short) 1, Count = (short) 1 }, { Command = (short) 17, Count = (short) 1 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "TextFrames", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeTextFrame) { { TopLeft = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 27 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 29 }, Type = (short) 1 } }, BottomRight = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 28 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 30 }, Type = (short) 1 } } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }
+Type
+"ooxml-non-primitive"
+ViewBox
+(com.sun.star.awt.Rectangle) { X = (long) 0, Y = (long) 0, Width = (long) 0, Height = (long) 0 }
+/* circularArrow */
+AdjustmentValues
+([]com.sun.star.drawing.EnhancedCustomShapeAdjustmentValue) { { Value = (any) { (long) 12500 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE, Name = "adj1" }, { Value = (any) { (long) 1142319 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE, Name = "adj2" }, { Value = (any) { (long) 20457681 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE, Name = "adj3" }, { Value = (any) { (long) 10800000 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE, Name = "adj4" }, { Value = (any) { (long) 12500 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE, Name = "adj5" } }
+Equations
+([]string) { "if(0-$4 ,0,if(25000-$4 ,$4 ,25000))", "?0 *2/1", "if(0-$0 ,0,if(?1 -$0 ,$0 ,?1 ))", "if(1-$2 ,1,if(21599999-$2 ,$2 ,21599999))", "if(0-$3 ,0,if(21599999-$3 ,$3 ,21599999))", "min(logwidth,logheight)", "?5 *?2 /100000", "?5 *?0 /100000", "?6 *1/2", "logwidth/2", "?9 +?8 -?7 ", "logheight/2", "?11 +?8 -?7 ", "?10 +0-?6 ", "?12 +0-?6 ", "?13 +?8 -0", "?14 +?8 -0", "?15 *sin(pi*(?3 )/10800000)", "?16 *cos(pi*(?3 )/10800000)", "?15 *(cos(atan2(?17 ,?18 )))", "?16 *(sin(atan2(?17 ,?18 )))", "logwidth/2", "?21 +?19 -0", "logheight/2", "?23 +?20 -0", "min(?13 ,?14 )", "?19 *?19 /1", "?20 *?20 /1", "?25 *?25 /1", "?26 +0-?28 ", "?27 +0-?28 ", "?29 *?30 /?26 ", "?31 *1/?27 ", "1+0-?32 ", "sqrt(?33 )", "?29 *1/?19 ", "?35 *1/?20 ", "(1+?34 )/?36 ", "(10800000*atan2(?37 ,1))/pi", "?38 +21600000-0", "if(?38 ,?38 ,?39 )", "?40 +0-?3 ", "?41 +21600000-0", "if(?41 ,?41 ,?42 )", "?43 +0-10800000", "?43 +0-21600000", "if(?44 ,?45 ,?43 )", "abs(?46 )", "if(0-$1 ,0,if(?47 -$1 ,$1 ,?47 ))", "?3 +?48 -0", "?15 *sin(pi*(?49 )/10800000)", "?16 *cos(pi*(?49 )/10800000)", "?15 *(cos(atan2(?50 ,?51 )))", "?16 *(sin(atan2(?50 ,?51 )))", "?21 +?52 -0", "?23 +?53 -0", "?10 *sin(pi*(?4 )/10800000)", "?12 *cos(pi*(?4 )/10800000)", "?10 *(cos(atan2(?56 ,?57 )))", "?12 *(sin(atan2(?56 ,?57 )))", "?21 +?58 -0", "?23 +?59 -0", "?7 *cos(pi*(?49 )/10800000)", "?7 *sin(pi*(?49 )/10800000)", "?22 +?62 -0", "?24 +?63 -0", "?7 *cos(pi*(?49 )/10800000)", "?7 *sin(pi*(?49 )/10800000)", "?22 +0-?66 ", "?24 +0-?67 ", "?68 +0-?21 ", "?69 +0-?23 ", "?64 +0-?21 ", "?65 +0-?23 ", "min(?10 ,?12 )", "?70 *?74 /?10 ", "?71 *?74 /?12 ", "?72 *?74 /?10 ", "?73 *?74 /?12 ", "?77 +0-?75 ", "?78 +0-?76 ", "sqrt(?79 *?79 +?80 *?80 +0*0)", "?75 *?78 /1", "?77 *?76 /1", "?82 +0-?83 ", "?74 *?74 /1", "?81 *?81 /1", "?85 *?86 /1", "?84 *?84 /1", "?87 +0-?88 ", "max(?89 ,0)", "sqrt(?90 )", "?80 *-1/1", "if(?92 ,-1,1)", "?93 *?79 /1", "?94 *?91 /1", "?84 *?80 /1", "(?96 +?95 )/?86 ", "?96 +0-?95 ", "?98 *1/?86 ", "abs(?80 )", "?100 *?91 /1", "?84 *?79 /-1", "(?102 +?101 )/?86 ", "?102 +0-?101 ", "?104 *1/?86 ", "?77 +0-?97 ", "?77 +0-?99 ", "?78 +0-?103 ", "?78 +0-?105 ", "sqrt(?106 *?106 +?108 *?108 +0*0)", "sqrt(?107 *?107 +?109 *?109 +0*0)", "?111 +0-?110 ", "if(?112 ,?97 ,?99 )", "if(?112 ,?103 ,?105 )", "?113 *?10 /?74 ", "?114 *?12 /?74 ", "?21 +?115 -0", "?23 +?116 -0", "?70 *?25 /?13 ", "?71 *?25 /?14 ", "?72 *?25 /?13 ", "?73 *?25 /?14 ", "?121 +0-?119 ", "?122 +0-?120 ", "sqrt(?123 *?123 +?124 *?124 +0*0)", "?119 *?122 /1", "?121 *?120 /1", "?126 +0-?127 ", "?25 *?25 /1", "?125 *?125 /1", "?129 *?130 /1", "?128 *?128 /1", "?131 +0-?132 ", "max(?133 ,0)", "sqrt(?134 )", "?93 *?123 /1", "?136 *?135 /1", "?128 *?124 /1", "(?138 +?137 )/?130 ", "?138 +0-?137 ", "?140 *1/?130 ", "abs(?124 )", "?142 *?135 /1", "?128 *?123 /-1", "(?144 +?143 )/?130 ", "?144 +0-?143 ", "?146 *1/?130 ", "?119 +0-?139 ", "?119 +0-?141 ", "?120 +0-?145 ", "?120 +0-?147 ", "sqrt(?148 *?148 +?150 *?150 +0*0)", "sqrt(?149 *?149 +?151 *?151 +0*0)", "?153 +0-?152 ", "if(?154 ,?139 ,?141 )", "if(?154 ,?145 ,?147 )", "?155 *?13 /?25 ", "?156 *?14 /?25 ", "?21 +?157 -0", "?23 +?158 -0", "(10800000*atan2(?158 ,?157 ))/pi", "?161 +21600000-0", "if(?161 ,?161 ,?162 )", "?4 +0-?163 ", "?164 +0-21600000", "if(?164 ,?165 ,?164 )", "?117 +0-?159 ", "?118 +0-?160 ", "sqrt(?167 *?167 +?168 *?168 +0*0)", "?169 *1/2", "?170 +0-?7 ", "if(?171 ,?117 ,?64 )", "if(?171 ,?118 ,?65 )", "if(?171 ,?159 ,?68 )", "if(?171 ,?160 ,?69 )", "(10800000*atan2(?116 ,?115 ))/pi", "?176 +21600000-0", "if(?176 ,?176 ,?177 )", "?178 +0-?4 ", "?179 +21600000-0", "if(?179 ,?179 ,?180 )", "?15 *sin(pi*(?4 )/10800000)", "?16 *cos(pi*(?4 )/10800000)", "?15 *(cos(atan2(?182 ,?183 )))", "?16 *(sin(atan2(?182 ,?183 )))", "?21 +?184 -0", "?23 +?185 -0", "?4 +0-5400000", "?49 +5400000-0", "?49 +10800000-0", "?10 *cos(pi*(2700000)/10800000)", "?12 *sin(pi*(2700000)/10800000)", "?21 +0-?191 ", "?21 +?191 -0", "?23 +0-?192 ", "?23 +?192 -0", "(?4 )/60000.0", "(?181 )/60000.0", "(?163 )/60000.0", "(?166 )/60000.0" }
+Handles
+([][]com.sun.star.beans.PropertyValue) { { { Name = "Position", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 54 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 55 }, Type = (short) 1 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RefAngle", Handle = (long) 0, Value = (any) { (long) 1 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }, { { Name = "Position", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 60 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 61 }, Type = (short) 1 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RefAngle", Handle = (long) 0, Value = (any) { (long) 3 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }, { { Name = "Position", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 117 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 118 }, Type = (short) 1 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RadiusRangeMaximum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 1 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RadiusRangeMinimum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RefAngle", Handle = (long) 0, Value = (any) { (long) 2 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RefR", Handle = (long) 0, Value = (any) { (long) 0 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }, { { Name = "Position", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 68 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 69 }, Type = (short) 1 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RadiusRangeMaximum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 25000 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RadiusRangeMinimum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RefR", Handle = (long) 0, Value = (any) { (long) 4 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } } }
+MirroredX
+false
+MirroredY
+false
+Path
+([]com.sun.star.beans.PropertyValue) { { Name = "Coordinates", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeParameterPair) { { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 60 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 61 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 10 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 12 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 197 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 198 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 172 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 173 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 54 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 55 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 174 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 175 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 159 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 160 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 13 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 14 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 199 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 200 }, Type = (short) 1 } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "Segments", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeSegment) { { Command = (short) 1, Count = (short) 1 }, { Command = (short) 17, Count = (short) 1 }, { Command = (short) 2, Count = (short) 4 }, { Command = (short) 17, Count = (short) 1 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "TextFrames", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeTextFrame) { { TopLeft = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 193 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 195 }, Type = (short) 1 } }, BottomRight = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 194 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 196 }, Type = (short) 1 } } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }
+Type
+"ooxml-non-primitive"
+ViewBox
+(com.sun.star.awt.Rectangle) { X = (long) 0, Y = (long) 0, Width = (long) 0, Height = (long) 0 }
+/* cloud */
+AdjustmentValues
+([]com.sun.star.drawing.EnhancedCustomShapeAdjustmentValue) {}
+Equations
+([]string) { "logwidth*2977/21600", "logheight*3262/21600", "logwidth*17087/21600", "logheight*17337/21600", "logwidth*67/21600", "logheight*21577/21600", "logwidth*21582/21600", "logheight*1235/21600", "logheight/2", "logwidth/2", "(-11429249)/60000.0", "(7426832)/60000.0", "(-8646143)/60000.0", "(5396714)/60000.0", "(-8748475)/60000.0", "(5983381)/60000.0", "(-7859164)/60000.0", "(7034504)/60000.0", "(-4722533)/60000.0", "(6541615)/60000.0", "(-2776035)/60000.0", "(7816140)/60000.0", "(37501)/60000.0", "(6842000)/60000.0", "(1347096)/60000.0", "(6910353)/60000.0", "(3974558)/60000.0", "(4542661)/60000.0", "(-16496525)/60000.0", "(8804134)/60000.0", "(-14809710)/60000.0", "(9151131)/60000.0", "(5204520)/60000.0", "(1585770)/60000.0", "(4416628)/60000.0", "(686848)/60000.0", "(8257449)/60000.0", "(844866)/60000.0", "(387196)/60000.0", "(959901)/60000.0", "(-4217541)/60000.0", "(4255042)/60000.0", "(1819082)/60000.0", "(1665090)/60000.0", "(-824660)/60000.0", "(891534)/60000.0", "(-8950887)/60000.0", "(1091722)/60000.0", "(-9809656)/60000.0", "(1061181)/60000.0", "(-4002417)/60000.0", "(739161)/60000.0", "(9459261)/60000.0", "(711490)/60000.0" }
+Handles
+([][]com.sun.star.beans.PropertyValue) {}
+MirroredX
+false
+MirroredY
+false
+Path
+([]com.sun.star.beans.PropertyValue) { { Name = "Coordinates", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeParameterPair) { { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3900 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 14370 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 6753 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 9190 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 10 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 11 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5333 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7267 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 12 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 13 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4365 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5945 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 14 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 15 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4857 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 6595 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 16 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 17 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5333 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7273 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 18 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 19 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 6775 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 9220 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 20 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 21 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5785 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7867 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 22 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 23 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 6752 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 9215 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 24 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 25 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7720 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 10543 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 26 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 27 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4360 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5918 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 28 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 29 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4345 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5945 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 30 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 31 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4693 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 26177 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4345 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5945 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 32 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 33 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 6928 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 34899 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4360 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5918 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 34 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 35 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 16478 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 39090 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 6752 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 9215 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 36 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 37 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 28827 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 34751 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 6752 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 9215 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 38 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 39 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 34129 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 22954 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5785 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7867 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 40 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 41 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 41798 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 15354 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5333 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7273 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 42 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 43 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 38324 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5426 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4857 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 6595 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 44 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 45 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 29078 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3952 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4857 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 6595 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 46 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 47 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 22141 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4720 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4365 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5945 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 48 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 49 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 14000 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5192 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 6753 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 9190 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 50 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 51 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4127 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 15789 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 6753 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 9190 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 52 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 53 }, Type = (short) 1 } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "Segments", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeSegment) { { Command = (short) 1, Count = (short) 1 }, { Command = (short) 17, Count = (short) 11 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 }, { Command = (short) 1, Count = (short) 1 }, { Command = (short) 17, Count = (short) 1 }, { Command = (short) 1, Count = (short) 1 }, { Command = (short) 17, Count = (short) 1 }, { Command = (short) 1, Count = (short) 1 }, { Command = (short) 17, Count = (short) 1 }, { Command = (short) 1, Count = (short) 1 }, { Command = (short) 17, Count = (short) 1 }, { Command = (short) 1, Count = (short) 1 }, { Command = (short) 17, Count = (short) 1 }, { Command = (short) 1, Count = (short) 1 }, { Command = (short) 17, Count = (short) 1 }, { Command = (short) 1, Count = (short) 1 }, { Command = (short) 17, Count = (short) 1 }, { Command = (short) 1, Count = (short) 1 }, { Command = (short) 17, Count = (short) 1 }, { Command = (short) 1, Count = (short) 1 }, { Command = (short) 17, Count = (short) 1 }, { Command = (short) 1, Count = (short) 1 }, { Command = (short) 17, Count = (short) 1 }, { Command = (short) 1, Count = (short) 1 }, { Command = (short) 17, Count = (short) 1 }, { Command = (short) 6, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "SubViewSize", Handle = (long) 0, Value = (any) { ([]com.sun.star.awt.Size) { { Width = (long) 43200, Height = (long) 43200 }, { Width = (long) 43200, Height = (long) 43200 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "TextFrames", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeTextFrame) { { TopLeft = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 1 } }, BottomRight = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 } } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }
+Type
+"ooxml-non-primitive"
+ViewBox
+(com.sun.star.awt.Rectangle) { X = (long) 0, Y = (long) 0, Width = (long) 0, Height = (long) 0 }
+/* cloudCallout */
+AdjustmentValues
+([]com.sun.star.drawing.EnhancedCustomShapeAdjustmentValue) { { Value = (any) { (long) -20833 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE, Name = "adj1" }, { Value = (any) { (long) 62500 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE, Name = "adj2" } }
+Equations
+([]string) { "logwidth*$0 /100000", "logheight*$1 /100000", "logwidth/2", "?2 +?0 -0", "logheight/2", "?4 +?1 -0", "logheight/2", "?6 *(cos(atan2(?1 ,?0 )))", "logwidth/2", "?8 *(sin(atan2(?1 ,?0 )))", "?8 *(cos(atan2(?9 ,?7 )))", "?6 *(sin(atan2(?9 ,?7 )))", "?2 +?10 -0", "?4 +?11 -0", "?12 +0-?3 ", "?13 +0-?5 ", "sqrt(?14 *?14 +?15 *?15 +0*0)", "min(logwidth,logheight)", "?17 *6600/21600", "?16 +0-?18 ", "?19 *1/3", "?17 *1800/21600", "?20 +?21 -0", "?22 *?14 /?16 ", "?22 *?15 /?16 ", "?23 +?3 -0", "?24 +?5 -0", "?17 *4800/21600", "?20 *2/1", "?27 +?28 -0", "?29 *?14 /?16 ", "?29 *?15 /?16 ", "?30 +?3 -0", "?31 +?5 -0", "?17 *1200/21600", "?17 *600/21600", "?3 +?35 -0", "?25 +?34 -0", "?32 +?21 -0", "logwidth*2977/21600", "logheight*3262/21600", "logwidth*17087/21600", "logheight*17337/21600", "logwidth*67/21600", "logheight*21577/21600", "logwidth*21582/21600", "logheight*1235/21600", "(10800000*atan2(?1 ,?0 ))/pi", "(-11429249)/60000.0", "(7426832)/60000.0", "(-8646143)/60000.0", "(5396714)/60000.0", "(-8748475)/60000.0", "(5983381)/60000.0", "(-7859164)/60000.0", "(7034504)/60000.0", "(-4722533)/60000.0", "(6541615)/60000.0", "(-2776035)/60000.0", "(7816140)/60000.0", "(37501)/60000.0", "(6842000)/60000.0", "(1347096)/60000.0", "(6910353)/60000.0", "(3974558)/60000.0", "(4542661)/60000.0", "(-16496525)/60000.0", "(8804134)/60000.0", "(-14809710)/60000.0", "(9151131)/60000.0", "(0)/60000.0", "(21600000)/60000.0", "(0)/60000.0", "(21600000)/60000.0", "(0)/60000.0", "(21600000)/60000.0", "(5204520)/60000.0", "(1585770)/60000.0", "(4416628)/60000.0", "(686848)/60000.0", "(8257449)/60000.0", "(844866)/60000.0", "(387196)/60000.0", "(959901)/60000.0", "(-4217541)/60000.0", "(4255042)/60000.0", "(1819082)/60000.0", "(1665090)/60000.0", "(-824660)/60000.0", "(891534)/60000.0", "(-8950887)/60000.0", "(1091722)/60000.0", "(-9809656)/60000.0", "(1061181)/60000.0", "(-4002417)/60000.0", "(739161)/60000.0", "(9459261)/60000.0", "(711490)/60000.0" }
+Handles
+([][]com.sun.star.beans.PropertyValue) { { { Name = "Position", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 1 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeXMaximum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2147483647 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeXMinimum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) -2147483647 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeYMaximum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2147483647 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeYMinimum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) -2147483647 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RefX", Handle = (long) 0, Value = (any) { (long) 0 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RefY", Handle = (long) 0, Value = (any) { (long) 1 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } } }
+MirroredX
+false
+MirroredY
+false
+Path
+([]com.sun.star.beans.PropertyValue) { { Name = "Coordinates", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeParameterPair) { { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3900 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 14370 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 6753 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 9190 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 48 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 49 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5333 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7267 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 50 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 51 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4365 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5945 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 52 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 53 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4857 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 6595 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 54 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 55 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5333 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7273 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 56 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 57 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 6775 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 9220 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 58 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 59 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5785 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7867 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 60 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 61 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 6752 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 9215 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 62 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 63 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7720 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 10543 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 64 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 65 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4360 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5918 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 66 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 67 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4345 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5945 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 68 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 69 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 36 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 35 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 35 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 70 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 71 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 37 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 26 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 34 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 34 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 72 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 73 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 38 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 33 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 21 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 21 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 74 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 75 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4693 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 26177 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4345 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5945 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 76 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 77 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 6928 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 34899 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4360 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5918 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 78 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 79 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 16478 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 39090 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 6752 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 9215 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 80 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 81 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 28827 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 34751 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 6752 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 9215 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 82 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 83 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 34129 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 22954 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5785 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7867 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 84 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 85 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 41798 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 15354 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5333 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7273 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 86 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 87 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 38324 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5426 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4857 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 6595 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 88 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 89 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 29078 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3952 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4857 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 6595 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 90 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 91 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 22141 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4720 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4365 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5945 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 92 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 93 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 14000 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5192 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 6753 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 9190 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 94 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 95 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4127 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 15789 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 6753 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 9190 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 96 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 97 }, Type = (short) 1 } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "Segments", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeSegment) { { Command = (short) 1, Count = (short) 1 }, { Command = (short) 17, Count = (short) 11 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 }, { Command = (short) 1, Count = (short) 1 }, { Command = (short) 17, Count = (short) 1 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 }, { Command = (short) 1, Count = (short) 1 }, { Command = (short) 17, Count = (short) 1 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 }, { Command = (short) 1, Count = (short) 1 }, { Command = (short) 17, Count = (short) 1 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 }, { Command = (short) 1, Count = (short) 1 }, { Command = (short) 17, Count = (short) 1 }, { Command = (short) 1, Count = (short) 1 }, { Command = (short) 17, Count = (short) 1 }, { Command = (short) 1, Count = (short) 1 }, { Command = (short) 17, Count = (short) 1 }, { Command = (short) 1, Count = (short) 1 }, { Command = (short) 17, Count = (short) 1 }, { Command = (short) 1, Count = (short) 1 }, { Command = (short) 17, Count = (short) 1 }, { Command = (short) 1, Count = (short) 1 }, { Command = (short) 17, Count = (short) 1 }, { Command = (short) 1, Count = (short) 1 }, { Command = (short) 17, Count = (short) 1 }, { Command = (short) 1, Count = (short) 1 }, { Command = (short) 17, Count = (short) 1 }, { Command = (short) 1, Count = (short) 1 }, { Command = (short) 17, Count = (short) 1 }, { Command = (short) 1, Count = (short) 1 }, { Command = (short) 17, Count = (short) 1 }, { Command = (short) 1, Count = (short) 1 }, { Command = (short) 17, Count = (short) 1 }, { Command = (short) 6, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "SubViewSize", Handle = (long) 0, Value = (any) { ([]com.sun.star.awt.Size) { { Width = (long) 43200, Height = (long) 43200 }, { Width = (long) 0, Height = (long) 0 }, { Width = (long) 0, Height = (long) 0 }, { Width = (long) 0, Height = (long) 0 }, { Width = (long) 43200, Height = (long) 43200 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "TextFrames", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeTextFrame) { { TopLeft = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 39 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 40 }, Type = (short) 1 } }, BottomRight = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 41 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 42 }, Type = (short) 1 } } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }
+Type
+"ooxml-non-primitive"
+ViewBox
+(com.sun.star.awt.Rectangle) { X = (long) 0, Y = (long) 0, Width = (long) 0, Height = (long) 0 }
+/* corner */
+AdjustmentValues
+([]com.sun.star.drawing.EnhancedCustomShapeAdjustmentValue) { { Value = (any) { (long) 50000 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE, Name = "adj1" }, { Value = (any) { (long) 50000 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE, Name = "adj2" } }
+Equations
+([]string) { "min(logwidth,logheight)", "100000*logheight/?0 ", "100000*logwidth/?0 ", "if(0-$0 ,0,if(?1 -$0 ,$0 ,?1 ))", "if(0-$1 ,0,if(?2 -$1 ,$1 ,?2 ))", "?0 *?4 /100000", "?0 *?3 /100000", "logheight+0-?6 ", "?5 *1/2", "(?7 +logheight)/2", "logwidth+0-logheight", "if(?10 ,?7 ,0)", "if(?10 ,logwidth,?5 )", "logwidth", "logwidth/2", "logheight", "logheight/2" }
+Handles
+([][]com.sun.star.beans.PropertyValue) { { { Name = "Position", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7 }, Type = (short) 1 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeYMaximum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 1 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeYMinimum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RefY", Handle = (long) 0, Value = (any) { (long) 0 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }, { { Name = "Position", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeXMaximum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeXMinimum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RefX", Handle = (long) 0, Value = (any) { (long) 1 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } } }
+MirroredX
+false
+MirroredY
+false
+Path
+([]com.sun.star.beans.PropertyValue) { { Name = "Coordinates", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeParameterPair) { { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 13 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 13 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 15 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 15 }, Type = (short) 1 } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "Segments", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeSegment) { { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 5 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "TextFrames", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeTextFrame) { { TopLeft = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 11 }, Type = (short) 1 } }, BottomRight = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 12 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 15 }, Type = (short) 1 } } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }
+Type
+"ooxml-non-primitive"
+ViewBox
+(com.sun.star.awt.Rectangle) { X = (long) 0, Y = (long) 0, Width = (long) 0, Height = (long) 0 }
+/* cornerTabs */
+AdjustmentValues
+([]com.sun.star.drawing.EnhancedCustomShapeAdjustmentValue) {}
+Equations
+([]string) { "sqrt(logwidth*logwidth+logheight*logheight+0*0)", "1*?0 /20", "0+logheight-?1 ", "0+logwidth-?1 ", "logheight", "logwidth" }
+Handles
+([][]com.sun.star.beans.PropertyValue) {}
+MirroredX
+false
+MirroredY
+false
+Path
+([]com.sun.star.beans.PropertyValue) { { Name = "Coordinates", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeParameterPair) { { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "Segments", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeSegment) { { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 2 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 }, { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 2 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 }, { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 2 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 }, { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 2 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "TextFrames", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeTextFrame) { { TopLeft = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 1 } }, BottomRight = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 } } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }
+Type
+"ooxml-non-primitive"
+ViewBox
+(com.sun.star.awt.Rectangle) { X = (long) 0, Y = (long) 0, Width = (long) 0, Height = (long) 0 }
+/* cube */
+AdjustmentValues
+([]com.sun.star.drawing.EnhancedCustomShapeAdjustmentValue) { { Value = (any) { (long) 25000 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE, Name = "adj" } }
+Equations
+([]string) { "if(0-$0 ,0,if(100000-$0 ,$0 ,100000))", "min(logwidth,logheight)", "?1 *?0 /100000", "logheight+0-?2 ", "?3 *1/2", "(?2 +logheight)/2", "logwidth+0-?2 ", "?6 *1/2", "(?2 +logwidth)/2", "logheight", "logwidth" }
+Handles
+([][]com.sun.star.beans.PropertyValue) { { { Name = "Position", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeYMaximum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 100000 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeYMinimum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RefY", Handle = (long) 0, Value = (any) { (long) 0 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } } }
+MirroredX
+false
+MirroredY
+false
+Path
+([]com.sun.star.beans.PropertyValue) { { Name = "Coordinates", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeParameterPair) { { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 6 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 6 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 9 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 9 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 6 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 10 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 10 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 6 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 9 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 10 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 6 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 10 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 10 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 6 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 9 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 9 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 6 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 10 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 6 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 6 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 9 }, Type = (short) 1 } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "Segments", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeSegment) { { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 3 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 7, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 }, { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 3 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 19, Count = (short) 0 }, { Command = (short) 7, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 }, { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 3 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 21, Count = (short) 0 }, { Command = (short) 7, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 }, { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 5 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 2 }, { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 1 }, { Command = (short) 6, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "TextFrames", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeTextFrame) { { TopLeft = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 } }, BottomRight = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 6 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 9 }, Type = (short) 1 } } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }
+Type
+"ooxml-non-primitive"
+ViewBox
+(com.sun.star.awt.Rectangle) { X = (long) 0, Y = (long) 0, Width = (long) 0, Height = (long) 0 }
+/* curvedConnector2 */
+AdjustmentValues
+([]com.sun.star.drawing.EnhancedCustomShapeAdjustmentValue) {}
+Equations
+([]string) { "logwidth", "logheight", "logwidth/2", "logheight/2" }
+Handles
+([][]com.sun.star.beans.PropertyValue) {}
+MirroredX
+false
+MirroredY
+false
+Path
+([]com.sun.star.beans.PropertyValue) { { Name = "Coordinates", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeParameterPair) { { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 1 } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "Segments", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeSegment) { { Command = (short) 1, Count = (short) 1 }, { Command = (short) 3, Count = (short) 1 }, { Command = (short) 6, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "TextFrames", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeTextFrame) { { TopLeft = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, BottomRight = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 1 } } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }
+Type
+"ooxml-non-primitive"
+ViewBox
+(com.sun.star.awt.Rectangle) { X = (long) 0, Y = (long) 0, Width = (long) 0, Height = (long) 0 }
+/* curvedConnector3 */
+AdjustmentValues
+([]com.sun.star.drawing.EnhancedCustomShapeAdjustmentValue) { { Value = (any) { (long) 50000 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE, Name = "adj1" } }
+Equations
+([]string) { "logwidth*$0 /100000", "(0+?0 )/2", "(logwidth+?0 )/2", "logheight*3/4", "logheight/2", "logwidth", "logheight", "logheight/4" }
+Handles
+([][]com.sun.star.beans.PropertyValue) { { { Name = "Position", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeXMaximum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2147483647 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeXMinimum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) -2147483647 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RefX", Handle = (long) 0, Value = (any) { (long) 0 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } } }
+MirroredX
+false
+MirroredY
+false
+Path
+([]com.sun.star.beans.PropertyValue) { { Name = "Coordinates", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeParameterPair) { { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 6 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 6 }, Type = (short) 1 } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "Segments", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeSegment) { { Command = (short) 1, Count = (short) 1 }, { Command = (short) 3, Count = (short) 2 }, { Command = (short) 6, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "TextFrames", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeTextFrame) { { TopLeft = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, BottomRight = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 6 }, Type = (short) 1 } } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }
+Type
+"ooxml-non-primitive"
+ViewBox
+(com.sun.star.awt.Rectangle) { X = (long) 0, Y = (long) 0, Width = (long) 0, Height = (long) 0 }
+/* curvedConnector4 */
+AdjustmentValues
+([]com.sun.star.drawing.EnhancedCustomShapeAdjustmentValue) { { Value = (any) { (long) 50000 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE, Name = "adj1" }, { Value = (any) { (long) 50000 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE, Name = "adj2" } }
+Equations
+([]string) { "logwidth*$0 /100000", "(0+?0 )/2", "(logwidth+?0 )/2", "(?0 +?2 )/2", "(?2 +logwidth)/2", "logheight*$1 /100000", "(0+?5 )/2", "(0+?6 )/2", "(?6 +?5 )/2", "(logheight+?5 )/2", "logwidth", "logheight" }
+Handles
+([][]com.sun.star.beans.PropertyValue) { { { Name = "Position", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 6 }, Type = (short) 1 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeXMaximum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2147483647 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeXMinimum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) -2147483647 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RefX", Handle = (long) 0, Value = (any) { (long) 0 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }, { { Name = "Position", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 1 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeYMaximum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2147483647 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeYMinimum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) -2147483647 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RefY", Handle = (long) 0, Value = (any) { (long) 1 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } } }
+MirroredX
+false
+MirroredY
+false
+Path
+([]com.sun.star.beans.PropertyValue) { { Name = "Coordinates", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeParameterPair) { { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 6 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 10 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 9 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 10 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 11 }, Type = (short) 1 } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "Segments", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeSegment) { { Command = (short) 1, Count = (short) 1 }, { Command = (short) 3, Count = (short) 3 }, { Command = (short) 6, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "TextFrames", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeTextFrame) { { TopLeft = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, BottomRight = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 10 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 11 }, Type = (short) 1 } } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }
+Type
+"ooxml-non-primitive"
+ViewBox
+(com.sun.star.awt.Rectangle) { X = (long) 0, Y = (long) 0, Width = (long) 0, Height = (long) 0 }
+/* curvedConnector5 */
+AdjustmentValues
+([]com.sun.star.drawing.EnhancedCustomShapeAdjustmentValue) { { Value = (any) { (long) 50000 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE, Name = "adj1" }, { Value = (any) { (long) 50000 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE, Name = "adj2" }, { Value = (any) { (long) 50000 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE, Name = "adj3" } }
+Equations
+([]string) { "logwidth*$0 /100000", "logwidth*$2 /100000", "(?0 +?1 )/2", "(0+?0 )/2", "(?0 +?2 )/2", "(?1 +?2 )/2", "(?1 +logwidth)/2", "logheight*$1 /100000", "(0+?7 )/2", "(0+?8 )/2", "(?8 +?7 )/2", "(logheight+?7 )/2", "(?11 +?7 )/2", "(?11 +logheight)/2", "logwidth", "logheight" }
+Handles
+([][]com.sun.star.beans.PropertyValue) { { { Name = "Position", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 1 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeXMaximum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2147483647 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeXMinimum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) -2147483647 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RefX", Handle = (long) 0, Value = (any) { (long) 0 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }, { { Name = "Position", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7 }, Type = (short) 1 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeYMaximum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2147483647 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeYMinimum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) -2147483647 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RefY", Handle = (long) 0, Value = (any) { (long) 1 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }, { { Name = "Position", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 11 }, Type = (short) 1 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeXMaximum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2147483647 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeXMinimum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) -2147483647 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RefX", Handle = (long) 0, Value = (any) { (long) 2 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } } }
+MirroredX
+false
+MirroredY
+false
+Path
+([]com.sun.star.beans.PropertyValue) { { Name = "Coordinates", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeParameterPair) { { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 9 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 10 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 12 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 11 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 13 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 6 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 15 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 14 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 15 }, Type = (short) 1 } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "Segments", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeSegment) { { Command = (short) 1, Count = (short) 1 }, { Command = (short) 3, Count = (short) 4 }, { Command = (short) 6, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "TextFrames", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeTextFrame) { { TopLeft = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, BottomRight = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 14 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 15 }, Type = (short) 1 } } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }
+Type
+"ooxml-non-primitive"
+ViewBox
+(com.sun.star.awt.Rectangle) { X = (long) 0, Y = (long) 0, Width = (long) 0, Height = (long) 0 }
+/* curvedDownArrow */
+AdjustmentValues
+([]com.sun.star.drawing.EnhancedCustomShapeAdjustmentValue) { { Value = (any) { (long) 25000 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE, Name = "adj1" }, { Value = (any) { (long) 50000 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE, Name = "adj2" }, { Value = (any) { (long) 25000 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE, Name = "adj3" } }
+Equations
+([]string) { "min(logwidth,logheight)", "50000*logwidth/?0 ", "if(0-$1 ,0,if(?1 -$1 ,$1 ,?1 ))", "if(0-$0 ,0,if(100000-$0 ,$0 ,100000))", "?0 *?3 /100000", "?0 *?2 /100000", "(?4 +?5 )/4", "logwidth/2", "?7 +0-?6 ", "?8 *2/1", "?9 *?9 /1", "?4 *?4 /1", "?10 +0-?11 ", "sqrt(?12 )", "?13 *logheight/?9 ", "100000*?14 /?0 ", "if(0-$2 ,0,if(?15 -$2 ,$2 ,?15 ))", "?0 *$2 /100000", "?8 +?4 -0", "logheight*logheight/1", "?17 *?17 /1", "?19 +0-?20 ", "sqrt(?21 )", "?22 *?8 /logheight", "?8 +?23 -0", "?18 +?23 -0", "?5 +0-?4 ", "?26 *1/2", "?24 +0-?27 ", "?25 +?27 -0", "?5 *1/2", "logwidth+0-?30 ", "logheight+0-?17 ", "(10800000*atan2(?23 ,?17 ))/pi", "0+0-?33 ", "logheight+0-?14 ", "(?8 +?18 )/2", "?4 *1/2", "(10800000*atan2(?37 ,?14 ))/pi", "16200000+?33 -0", "16200000+0-?38 ", "?38 +0-5400000", "5400000+?38 -0", "logheight", "logwidth", "logheight", "(?39 )/60000.0", "(?34 )/60000.0", "(16200000)/60000.0", "(?33 )/60000.0", "(?40 )/60000.0", "(?41 )/60000.0", "(10800000)/60000.0", "(?42 )/60000.0", "(?40 )/60000.0", "(?41 )/60000.0", "(10800000)/60000.0", "(5400000)/60000.0", "(16200000)/60000.0", "(?33 )/60000.0", "(?39 )/60000.0", "(?34 )/60000.0" }
+Handles
+([][]com.sun.star.beans.PropertyValue) { { { Name = "Position", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 25 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 32 }, Type = (short) 1 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeXMaximum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 2 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeXMinimum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RefX", Handle = (long) 0, Value = (any) { (long) 0 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }, { { Name = "Position", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 28 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 43 }, Type = (short) 1 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeXMaximum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 1 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeXMinimum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RefX", Handle = (long) 0, Value = (any) { (long) 1 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }, { { Name = "Position", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 44 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 32 }, Type = (short) 1 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeYMaximum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 15 }, Type = (short) 1 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeYMinimum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RefY", Handle = (long) 0, Value = (any) { (long) 2 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } } }
+MirroredX
+false
+MirroredY
+false
+Path
+([]com.sun.star.beans.PropertyValue) { { Name = "Coordinates", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeParameterPair) { { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 31 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 43 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 28 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 32 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 24 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 32 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 45 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 46 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 47 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 18 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 45 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 48 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 49 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 29 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 32 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 36 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 35 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 45 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 50 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 51 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 43 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 45 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 52 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 53 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 36 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 35 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 45 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 54 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 55 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 43 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 45 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 56 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 57 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 18 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 45 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 58 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 59 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 29 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 32 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 31 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 43 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 28 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 32 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 24 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 32 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 45 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 60 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 61 }, Type = (short) 1 } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "Segments", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeSegment) { { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 2 }, { Command = (short) 17, Count = (short) 1 }, { Command = (short) 2, Count = (short) 1 }, { Command = (short) 17, Count = (short) 1 }, { Command = (short) 2, Count = (short) 1 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 7, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 }, { Command = (short) 1, Count = (short) 1 }, { Command = (short) 17, Count = (short) 1 }, { Command = (short) 2, Count = (short) 1 }, { Command = (short) 17, Count = (short) 1 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 19, Count = (short) 0 }, { Command = (short) 7, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 }, { Command = (short) 1, Count = (short) 1 }, { Command = (short) 17, Count = (short) 1 }, { Command = (short) 2, Count = (short) 1 }, { Command = (short) 17, Count = (short) 1 }, { Command = (short) 2, Count = (short) 1 }, { Command = (short) 17, Count = (short) 1 }, { Command = (short) 2, Count = (short) 4 }, { Command = (short) 17, Count = (short) 1 }, { Command = (short) 6, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "TextFrames", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeTextFrame) { { TopLeft = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, BottomRight = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 44 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 43 }, Type = (short) 1 } } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }
+Type
+"ooxml-non-primitive"
+ViewBox
+(com.sun.star.awt.Rectangle) { X = (long) 0, Y = (long) 0, Width = (long) 0, Height = (long) 0 }
+/* curvedLeftArrow */
+AdjustmentValues
+([]com.sun.star.drawing.EnhancedCustomShapeAdjustmentValue) { { Value = (any) { (long) 25000 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE, Name = "adj1" }, { Value = (any) { (long) 50000 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE, Name = "adj2" }, { Value = (any) { (long) 25000 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE, Name = "adj3" } }
+Equations
+([]string) { "min(logwidth,logheight)", "50000*logheight/?0 ", "if(0-$1 ,0,if(?1 -$1 ,$1 ,?1 ))", "if(0-$0 ,0,if(?2 -$0 ,$0 ,?2 ))", "?0 *?3 /100000", "?0 *?2 /100000", "(?4 +?5 )/4", "logheight/2", "?7 +0-?6 ", "?8 *2/1", "?9 *?9 /1", "?4 *?4 /1", "?10 +0-?11 ", "sqrt(?12 )", "?13 *logwidth/?9 ", "100000*?14 /?0 ", "if(0-$2 ,0,if(?15 -$2 ,$2 ,?15 ))", "?0 *?16 /100000", "?8 +?4 -0", "logwidth*logwidth/1", "?17 *?17 /1", "?19 +0-?20 ", "sqrt(?21 )", "?22 *?8 /logwidth", "?8 +?23 -0", "?18 +?23 -0", "?5 +0-?4 ", "?26 *1/2", "?24 +0-?27 ", "?25 +?27 -0", "?5 *1/2", "logheight+0-?30 ", "0+?17 -0", "(10800000*atan2(?23 ,?17 ))/pi", "0+0-?33 ", "0+?14 -0", "(?8 +?18 )/2", "?4 *1/2", "(10800000*atan2(?37 ,?14 ))/pi", "?38 +0-?33 ", "?33 +?38 -0", "0+0-?38 ", "logwidth", "logheight", "logwidth", "(?33 )/60000.0", "(?39 )/60000.0", "(?41 )/60000.0", "(?40 )/60000.0", "(0)/60000.0", "(-5400000)/60000.0", "(16200000)/60000.0", "(5400000)/60000.0", "(0)/60000.0", "(-5400000)/60000.0", "(16200000)/60000.0", "(5400000)/60000.0", "(0)/60000.0", "(?33 )/60000.0", "(?33 )/60000.0", "(?39 )/60000.0" }
+Handles
+([][]com.sun.star.beans.PropertyValue) { { { Name = "Position", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 32 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 24 }, Type = (short) 1 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeYMaximum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeYMinimum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RefY", Handle = (long) 0, Value = (any) { (long) 0 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }, { { Name = "Position", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 42 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 28 }, Type = (short) 1 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeYMaximum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 1 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeYMinimum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RefY", Handle = (long) 0, Value = (any) { (long) 1 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }, { { Name = "Position", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 32 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 43 }, Type = (short) 1 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeXMaximum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 15 }, Type = (short) 1 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeXMinimum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RefX", Handle = (long) 0, Value = (any) { (long) 2 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } } }
+MirroredX
+false
+MirroredY
+false
+Path
+([]com.sun.star.beans.PropertyValue) { { Name = "Coordinates", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeParameterPair) { { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 31 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 32 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 28 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 32 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 24 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 44 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 45 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 46 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 44 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 47 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 48 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 32 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 29 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 42 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 18 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 44 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 49 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 50 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 44 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 51 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 52 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 42 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 18 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 44 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 53 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 54 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 44 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 55 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 56 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 42 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 18 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 44 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 57 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 58 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 32 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 29 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 31 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 32 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 28 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 32 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 24 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 44 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 59 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 60 }, Type = (short) 1 } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "Segments", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeSegment) { { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 2 }, { Command = (short) 17, Count = (short) 2 }, { Command = (short) 2, Count = (short) 1 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 7, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 }, { Command = (short) 1, Count = (short) 1 }, { Command = (short) 17, Count = (short) 1 }, { Command = (short) 2, Count = (short) 1 }, { Command = (short) 17, Count = (short) 1 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 19, Count = (short) 0 }, { Command = (short) 7, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 }, { Command = (short) 1, Count = (short) 1 }, { Command = (short) 17, Count = (short) 1 }, { Command = (short) 2, Count = (short) 1 }, { Command = (short) 17, Count = (short) 1 }, { Command = (short) 2, Count = (short) 1 }, { Command = (short) 17, Count = (short) 1 }, { Command = (short) 2, Count = (short) 4 }, { Command = (short) 17, Count = (short) 1 }, { Command = (short) 6, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "TextFrames", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeTextFrame) { { TopLeft = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, BottomRight = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 42 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 43 }, Type = (short) 1 } } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }
+Type
+"ooxml-non-primitive"
+ViewBox
+(com.sun.star.awt.Rectangle) { X = (long) 0, Y = (long) 0, Width = (long) 0, Height = (long) 0 }
+/* curvedRightArrow */
+AdjustmentValues
+([]com.sun.star.drawing.EnhancedCustomShapeAdjustmentValue) { { Value = (any) { (long) 25000 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE, Name = "adj1" }, { Value = (any) { (long) 50000 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE, Name = "adj2" }, { Value = (any) { (long) 25000 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE, Name = "adj3" } }
+Equations
+([]string) { "min(logwidth,logheight)", "50000*logheight/?0 ", "if(0-$1 ,0,if(?1 -$1 ,$1 ,?1 ))", "if(0-$0 ,0,if(?2 -$0 ,$0 ,?2 ))", "?0 *?3 /100000", "?0 *?2 /100000", "(?4 +?5 )/4", "logheight/2", "?7 +0-?6 ", "?8 *2/1", "?9 *?9 /1", "?4 *?4 /1", "?10 +0-?11 ", "sqrt(?12 )", "?13 *logwidth/?9 ", "100000*?14 /?0 ", "if(0-$2 ,0,if(?15 -$2 ,$2 ,?15 ))", "?0 *?16 /100000", "?8 +?4 -0", "logwidth*logwidth/1", "?17 *?17 /1", "?19 +0-?20 ", "sqrt(?21 )", "?22 *?8 /logwidth", "?8 +?23 -0", "?18 +?23 -0", "?5 +0-?4 ", "?26 *1/2", "?24 +0-?27 ", "?25 +?27 -0", "?5 *1/2", "logheight+0-?30 ", "logwidth+0-?17 ", "(10800000*atan2(?23 ,?17 ))/pi", "10800000+0-?33 ", "0+0-?33 ", "logwidth+0-?14 ", "(?8 +?18 )/2", "?4 *1/2", "(10800000*atan2(?38 ,?14 ))/pi", "?39 +0-5400000", "5400000+?39 -0", "10800000+0-?39 ", "logwidth", "logheight", "logwidth", "(10800000)/60000.0", "(?35 )/60000.0", "(?34 )/60000.0", "(?33 )/60000.0", "(16200000)/60000.0", "(?40 )/60000.0", "(?42 )/60000.0", "(?41 )/60000.0", "(10800000)/60000.0", "(?35 )/60000.0", "(?34 )/60000.0", "(?33 )/60000.0", "(10800000)/60000.0", "(5400000)/60000.0", "(16200000)/60000.0", "(?40 )/60000.0" }
+Handles
+([][]com.sun.star.beans.PropertyValue) { { { Name = "Position", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 32 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 24 }, Type = (short) 1 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeYMaximum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeYMinimum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RefY", Handle = (long) 0, Value = (any) { (long) 0 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }, { { Name = "Position", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 43 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 28 }, Type = (short) 1 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeYMaximum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 1 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeYMinimum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RefY", Handle = (long) 0, Value = (any) { (long) 1 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }, { { Name = "Position", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 32 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 44 }, Type = (short) 1 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeXMaximum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 15 }, Type = (short) 1 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeXMinimum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RefX", Handle = (long) 0, Value = (any) { (long) 2 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } } }
+MirroredX
+false
+MirroredY
+false
+Path
+([]com.sun.star.beans.PropertyValue) { { Name = "Coordinates", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeParameterPair) { { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 45 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 46 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 47 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 32 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 28 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 43 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 31 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 32 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 29 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 32 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 25 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 45 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 48 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 49 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 43 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 45 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 50 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 51 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 45 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 52 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 53 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 45 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 54 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 55 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 32 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 28 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 43 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 31 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 32 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 29 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 32 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 25 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 45 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 56 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 57 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 45 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 58 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 59 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 43 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 45 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 60 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 61 }, Type = (short) 1 } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "Segments", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeSegment) { { Command = (short) 1, Count = (short) 1 }, { Command = (short) 17, Count = (short) 1 }, { Command = (short) 2, Count = (short) 4 }, { Command = (short) 17, Count = (short) 1 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 7, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 }, { Command = (short) 1, Count = (short) 1 }, { Command = (short) 17, Count = (short) 2 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 19, Count = (short) 0 }, { Command = (short) 7, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 }, { Command = (short) 1, Count = (short) 1 }, { Command = (short) 17, Count = (short) 1 }, { Command = (short) 2, Count = (short) 4 }, { Command = (short) 17, Count = (short) 1 }, { Command = (short) 2, Count = (short) 1 }, { Command = (short) 17, Count = (short) 1 }, { Command = (short) 2, Count = (short) 1 }, { Command = (short) 17, Count = (short) 1 }, { Command = (short) 6, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "TextFrames", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeTextFrame) { { TopLeft = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, BottomRight = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 43 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 44 }, Type = (short) 1 } } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }
+Type
+"ooxml-non-primitive"
+ViewBox
+(com.sun.star.awt.Rectangle) { X = (long) 0, Y = (long) 0, Width = (long) 0, Height = (long) 0 }
+/* curvedUpArrow */
+AdjustmentValues
+([]com.sun.star.drawing.EnhancedCustomShapeAdjustmentValue) { { Value = (any) { (long) 25000 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE, Name = "adj1" }, { Value = (any) { (long) 50000 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE, Name = "adj2" }, { Value = (any) { (long) 25000 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE, Name = "adj3" } }
+Equations
+([]string) { "min(logwidth,logheight)", "50000*logwidth/?0 ", "if(0-$1 ,0,if(?1 -$1 ,$1 ,?1 ))", "if(0-$0 ,0,if(100000-$0 ,$0 ,100000))", "?0 *?3 /100000", "?0 *?2 /100000", "(?4 +?5 )/4", "logwidth/2", "?7 +0-?6 ", "?8 *2/1", "?9 *?9 /1", "?4 *?4 /1", "?10 +0-?11 ", "sqrt(?12 )", "?13 *logheight/?9 ", "100000*?14 /?0 ", "if(0-$2 ,0,if(?15 -$2 ,$2 ,?15 ))", "?0 *$2 /100000", "?8 +?4 -0", "logheight*logheight/1", "?17 *?17 /1", "?19 +0-?20 ", "sqrt(?21 )", "?22 *?8 /logheight", "?8 +?23 -0", "?18 +?23 -0", "?5 +0-?4 ", "?26 *1/2", "?24 +0-?27 ", "?25 +?27 -0", "?5 *1/2", "logwidth+0-?30 ", "0+?17 -0", "(10800000*atan2(?23 ,?17 ))/pi", "0+0-?33 ", "0+?14 -0", "(?8 +?18 )/2", "?4 *1/2", "(10800000*atan2(?37 ,?14 ))/pi", "?38 +0-?33 ", "0+0-?39 ", "5400000+0-?33 ", "?33 +?38 -0", "5400000+0-?38 ", "logwidth", "logheight", "logheight", "(?41 )/60000.0", "(?42 )/60000.0", "(?43 )/60000.0", "(?39 )/60000.0", "(5400000)/60000.0", "(5400000)/60000.0", "(10800000)/60000.0", "(-5400000)/60000.0", "(?43 )/60000.0", "(?39 )/60000.0", "(?41 )/60000.0", "(?33 )/60000.0", "(5400000)/60000.0", "(5400000)/60000.0", "(10800000)/60000.0", "(-5400000)/60000.0" }
+Handles
+([][]com.sun.star.beans.PropertyValue) { { { Name = "Position", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 25 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 32 }, Type = (short) 1 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeXMaximum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeXMinimum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RefX", Handle = (long) 0, Value = (any) { (long) 0 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }, { { Name = "Position", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 28 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeXMaximum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 1 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeXMinimum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RefX", Handle = (long) 0, Value = (any) { (long) 1 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }, { { Name = "Position", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 44 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 32 }, Type = (short) 1 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeYMaximum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 15 }, Type = (short) 1 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeYMinimum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RefY", Handle = (long) 0, Value = (any) { (long) 2 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } } }
+MirroredX
+false
+MirroredY
+false
+Path
+([]com.sun.star.beans.PropertyValue) { { Name = "Coordinates", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeParameterPair) { { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 31 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 29 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 32 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 25 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 32 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 46 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 47 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 48 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 46 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 49 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 50 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 28 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 32 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 45 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 46 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 51 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 52 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 46 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 53 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 54 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 36 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 35 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 46 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 55 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 56 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 28 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 32 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 31 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 29 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 32 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 25 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 32 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 46 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 57 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 58 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 45 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 46 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 59 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 60 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 46 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 61 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 62 }, Type = (short) 1 } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "Segments", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeSegment) { { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 2 }, { Command = (short) 17, Count = (short) 2 }, { Command = (short) 2, Count = (short) 1 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 7, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 }, { Command = (short) 1, Count = (short) 1 }, { Command = (short) 17, Count = (short) 1 }, { Command = (short) 2, Count = (short) 1 }, { Command = (short) 17, Count = (short) 1 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 19, Count = (short) 0 }, { Command = (short) 7, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 }, { Command = (short) 1, Count = (short) 1 }, { Command = (short) 17, Count = (short) 1 }, { Command = (short) 2, Count = (short) 4 }, { Command = (short) 17, Count = (short) 1 }, { Command = (short) 2, Count = (short) 1 }, { Command = (short) 17, Count = (short) 1 }, { Command = (short) 2, Count = (short) 1 }, { Command = (short) 17, Count = (short) 1 }, { Command = (short) 6, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "TextFrames", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeTextFrame) { { TopLeft = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, BottomRight = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 44 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 45 }, Type = (short) 1 } } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }
+Type
+"ooxml-non-primitive"
+ViewBox
+(com.sun.star.awt.Rectangle) { X = (long) 0, Y = (long) 0, Width = (long) 0, Height = (long) 0 }
+/* decagon */
+AdjustmentValues
+([]com.sun.star.drawing.EnhancedCustomShapeAdjustmentValue) { { Value = (any) { (long) 105146 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE, Name = "vf" } }
+Equations
+([]string) { "logheight/2", "?0 *$0 /100000", "logwidth/2", "?2 *cos(pi*(2160000)/10800000)", "?2 *cos(pi*(4320000)/10800000)", "logwidth/2", "?5 +0-?3 ", "?5 +0-?4 ", "?5 +?4 -0", "?5 +?3 -0", "?1 *sin(pi*(4320000)/10800000)", "?1 *sin(pi*(2160000)/10800000)", "logheight/2", "?12 +0-?10 ", "?12 +0-?11 ", "?12 +?11 -0", "?12 +?10 -0", "logwidth" }
+Handles
+([][]com.sun.star.beans.PropertyValue) {}
+MirroredX
+false
+MirroredY
+false
+Path
+([]com.sun.star.beans.PropertyValue) { { Name = "Coordinates", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeParameterPair) { { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 12 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 6 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 14 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 13 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 13 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 9 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 14 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 17 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 12 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 9 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 15 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 16 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 16 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 6 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 15 }, Type = (short) 1 } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "Segments", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeSegment) { { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 9 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "TextFrames", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeTextFrame) { { TopLeft = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 6 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 14 }, Type = (short) 1 } }, BottomRight = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 9 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 15 }, Type = (short) 1 } } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }
+Type
+"ooxml-non-primitive"
+ViewBox
+(com.sun.star.awt.Rectangle) { X = (long) 0, Y = (long) 0, Width = (long) 0, Height = (long) 0 }
+/* diagStripe */
+AdjustmentValues
+([]com.sun.star.drawing.EnhancedCustomShapeAdjustmentValue) { { Value = (any) { (long) 50000 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE, Name = "adj" } }
+Equations
+([]string) { "if(0-$0 ,0,if(100000-$0 ,$0 ,100000))", "logwidth*?0 /100000", "?1 *1/2", "(?1 +logwidth)/2", "logheight*?0 /100000", "?4 *1/2", "(?4 +logheight)/2", "logwidth/2", "logheight/2", "logwidth", "logheight" }
+Handles
+([][]com.sun.star.beans.PropertyValue) { { { Name = "Position", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeYMaximum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 100000 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeYMinimum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RefY", Handle = (long) 0, Value = (any) { (long) 0 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } } }
+MirroredX
+false
+MirroredY
+false
+Path
+([]com.sun.star.beans.PropertyValue) { { Name = "Coordinates", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeParameterPair) { { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 9 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 10 }, Type = (short) 1 } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "Segments", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeSegment) { { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 3 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "TextFrames", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeTextFrame) { { TopLeft = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, BottomRight = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 6 }, Type = (short) 1 } } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }
+Type
+"ooxml-non-primitive"
+ViewBox
+(com.sun.star.awt.Rectangle) { X = (long) 0, Y = (long) 0, Width = (long) 0, Height = (long) 0 }
+/* diamond */
+AdjustmentValues
+([]com.sun.star.drawing.EnhancedCustomShapeAdjustmentValue) {}
+Equations
+([]string) { "logwidth*3/4", "logheight*3/4", "logwidth/2", "logheight/2", "logheight", "logwidth", "logwidth/4", "logheight/4" }
+Handles
+([][]com.sun.star.beans.PropertyValue) {}
+MirroredX
+false
+MirroredY
+false
+Path
+([]com.sun.star.beans.PropertyValue) { { Name = "Coordinates", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeParameterPair) { { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "GluePoints", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeParameterPair) { { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "Segments", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeSegment) { { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 3 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "TextFrames", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeTextFrame) { { TopLeft = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 6 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7 }, Type = (short) 1 } }, BottomRight = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 1 } } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }
+Type
+"ooxml-non-primitive"
+ViewBox
+(com.sun.star.awt.Rectangle) { X = (long) 0, Y = (long) 0, Width = (long) 0, Height = (long) 0 }
+/* dodecagon */
+AdjustmentValues
+([]com.sun.star.drawing.EnhancedCustomShapeAdjustmentValue) {}
+Equations
+([]string) { "logwidth*2894/21600", "logwidth*7906/21600", "logwidth*13694/21600", "logwidth*18706/21600", "logheight*2894/21600", "logheight*7906/21600", "logheight*13694/21600", "logheight*18706/21600", "logwidth", "logheight" }
+Handles
+([][]com.sun.star.beans.PropertyValue) {}
+MirroredX
+false
+MirroredY
+false
+Path
+([]com.sun.star.beans.PropertyValue) { { Name = "Coordinates", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeParameterPair) { { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 6 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 9 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 9 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 6 }, Type = (short) 1 } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "Segments", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeSegment) { { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 11 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "TextFrames", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeTextFrame) { { TopLeft = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 } }, BottomRight = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7 }, Type = (short) 1 } } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }
+Type
+"ooxml-non-primitive"
+ViewBox
+(com.sun.star.awt.Rectangle) { X = (long) 0, Y = (long) 0, Width = (long) 0, Height = (long) 0 }
+/* donut */
+AdjustmentValues
+([]com.sun.star.drawing.EnhancedCustomShapeAdjustmentValue) { { Value = (any) { (long) 25000 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE, Name = "adj" } }
+Equations
+([]string) { "if(0-$0 ,0,if(50000-$0 ,$0 ,50000))", "min(logwidth,logheight)", "?1 *?0 /100000", "logwidth/2", "?3 +0-?2 ", "logheight/2", "?5 +0-?2 ", "?3 *cos(pi*(2700000)/10800000)", "?5 *sin(pi*(2700000)/10800000)", "logwidth/2", "?9 +0-?7 ", "?9 +?7 -0", "logheight/2", "?12 +0-?8 ", "?12 +?8 -0", "logheight", "logwidth", "(10800000)/60000.0", "(5400000)/60000.0", "(16200000)/60000.0", "(5400000)/60000.0", "(0)/60000.0", "(5400000)/60000.0", "(5400000)/60000.0", "(5400000)/60000.0", "(10800000)/60000.0", "(-5400000)/60000.0", "(5400000)/60000.0", "(-5400000)/60000.0", "(0)/60000.0", "(-5400000)/60000.0", "(16200000)/60000.0", "(-5400000)/60000.0" }
+Handles
+([][]com.sun.star.beans.PropertyValue) { { { Name = "Position", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 12 }, Type = (short) 1 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RadiusRangeMaximum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 50000 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RadiusRangeMinimum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RefR", Handle = (long) 0, Value = (any) { (long) 0 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } } }
+MirroredX
+false
+MirroredY
+false
+Path
+([]com.sun.star.beans.PropertyValue) { { Name = "Coordinates", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeParameterPair) { { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 12 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 17 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 18 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 19 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 20 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 21 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 22 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 23 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 24 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 12 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 6 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 25 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 26 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 6 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 27 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 28 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 6 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 29 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 30 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 6 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 31 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 32 }, Type = (short) 1 } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "Segments", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeSegment) { { Command = (short) 1, Count = (short) 1 }, { Command = (short) 17, Count = (short) 4 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 1, Count = (short) 1 }, { Command = (short) 17, Count = (short) 4 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "TextFrames", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeTextFrame) { { TopLeft = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 10 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 13 }, Type = (short) 1 } }, BottomRight = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 11 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 14 }, Type = (short) 1 } } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }
+Type
+"ooxml-non-primitive"
+ViewBox
+(com.sun.star.awt.Rectangle) { X = (long) 0, Y = (long) 0, Width = (long) 0, Height = (long) 0 }
+/* doubleWave */
+AdjustmentValues
+([]com.sun.star.drawing.EnhancedCustomShapeAdjustmentValue) { { Value = (any) { (long) 6250 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE, Name = "adj1" }, { Value = (any) { (long) 0 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE, Name = "adj2" } }
+Equations
+([]string) { "if(0-$0 ,0,if(12500-$0 ,$0 ,12500))", "if(-10000-$1 ,-10000,if(10000-$1 ,$1 ,10000))", "logheight*?0 /100000", "?2 *10/3", "?2 +0-?3 ", "?2 +?3 -0", "logheight+0-?2 ", "?6 +0-?3 ", "?6 +?3 -0", "logwidth*?1 /100000", "logwidth*?1 /50000", "abs(?9 )", "if(?10 ,0,?10 )", "0+0-?12 ", "if(?10 ,?10 ,0)", "logwidth+0-?14 ", "(?12 +?15 )/6", "?13 +?16 -0", "(?12 +?15 )/3", "?13 +?18 -0", "(?13 +?15 )/2", "?20 +?16 -0", "(?21 +?15 )/2", "0+?14 -0", "logwidth+?12 -0", "?23 +?16 -0", "?23 +?18 -0", "(?23 +?24 )/2", "?27 +?16 -0", "(?28 +?24 )/2", "logwidth+0-?11 ", "logwidth/2", "?31 +?9 -0", "max(?13 ,?23 )", "min(?15 ,?24 )", "logheight*?0 /50000", "logheight+0-?35 ", "logheight", "logheight/2" }
+Handles
+([][]com.sun.star.beans.PropertyValue) { { { Name = "Position", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeYMaximum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 12500 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeYMinimum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RefY", Handle = (long) 0, Value = (any) { (long) 0 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }, { { Name = "Position", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 32 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 37 }, Type = (short) 1 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeXMaximum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 10000 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeXMinimum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) -10000 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RefX", Handle = (long) 0, Value = (any) { (long) 1 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } } }
+MirroredX
+false
+MirroredY
+false
+Path
+([]com.sun.star.beans.PropertyValue) { { Name = "Coordinates", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeParameterPair) { { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 13 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 17 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 19 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 20 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 21 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 22 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 15 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 24 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 6 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 29 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 28 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 27 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 6 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 26 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 25 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 23 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 6 }, Type = (short) 1 } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "Segments", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeSegment) { { Command = (short) 1, Count = (short) 1 }, { Command = (short) 3, Count = (short) 2 }, { Command = (short) 2, Count = (short) 1 }, { Command = (short) 3, Count = (short) 2 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "TextFrames", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeTextFrame) { { TopLeft = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 33 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 35 }, Type = (short) 1 } }, BottomRight = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 34 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 36 }, Type = (short) 1 } } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }
+Type
+"ooxml-non-primitive"
+ViewBox
+(com.sun.star.awt.Rectangle) { X = (long) 0, Y = (long) 0, Width = (long) 0, Height = (long) 0 }
+/* downArrow */
+AdjustmentValues
+([]com.sun.star.drawing.EnhancedCustomShapeAdjustmentValue) { { Value = (any) { (long) 50000 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE, Name = "adj1" }, { Value = (any) { (long) 50000 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE, Name = "adj2" } }
+Equations
+([]string) { "min(logwidth,logheight)", "100000*logheight/?0 ", "if(0-$0 ,0,if(100000-$0 ,$0 ,100000))", "if(0-$1 ,0,if(?1 -$1 ,$1 ,?1 ))", "?0 *?3 /100000", "logheight+0-?4 ", "logwidth*?2 /200000", "logwidth/2", "?7 +0-?6 ", "?7 +?6 -0", "logwidth/2", "?8 *?4 /?10 ", "?5 +?11 -0", "logheight", "logwidth" }
+Handles
+([][]com.sun.star.beans.PropertyValue) { { { Name = "Position", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeXMaximum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 100000 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeXMinimum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RefX", Handle = (long) 0, Value = (any) { (long) 0 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }, { { Name = "Position", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 1 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeYMaximum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 1 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeYMinimum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RefY", Handle = (long) 0, Value = (any) { (long) 1 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } } }
+MirroredX
+false
+MirroredY
+false
+Path
+([]com.sun.star.beans.PropertyValue) { { Name = "Coordinates", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeParameterPair) { { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 9 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 9 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 14 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 13 }, Type = (short) 1 } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "Segments", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeSegment) { { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 6 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "TextFrames", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeTextFrame) { { TopLeft = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, BottomRight = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 9 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 12 }, Type = (short) 1 } } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }
+Type
+"ooxml-non-primitive"
+ViewBox
+(com.sun.star.awt.Rectangle) { X = (long) 0, Y = (long) 0, Width = (long) 0, Height = (long) 0 }
+/* downArrowCallout */
+AdjustmentValues
+([]com.sun.star.drawing.EnhancedCustomShapeAdjustmentValue) { { Value = (any) { (long) 25000 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE, Name = "adj1" }, { Value = (any) { (long) 25000 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE, Name = "adj2" }, { Value = (any) { (long) 25000 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE, Name = "adj3" }, { Value = (any) { (long) 64977 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE, Name = "adj4" } }
+Equations
+([]string) { "min(logwidth,logheight)", "50000*logwidth/?0 ", "if(0-$1 ,0,if(?1 -$1 ,$1 ,?1 ))", "?2 *2/1", "if(0-$0 ,0,if(?3 -$0 ,$0 ,?3 ))", "100000*logheight/?0 ", "if(0-$2 ,0,if(?5 -$2 ,$2 ,?5 ))", "?6 *?0 /logheight", "100000+0-?7 ", "if(0-$3 ,0,if(?8 -$3 ,$3 ,?8 ))", "?0 *?2 /100000", "?0 *?4 /200000", "logwidth/2", "?12 +0-?10 ", "?12 +0-?11 ", "?12 +?11 -0", "?12 +?10 -0", "?0 *?6 /100000", "logheight+0-?17 ", "logheight*?9 /100000", "?19 *1/2", "logheight", "logwidth" }
+Handles
+([][]com.sun.star.beans.PropertyValue) { { { Name = "Position", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 14 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 18 }, Type = (short) 1 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeXMaximum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeXMinimum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RefX", Handle = (long) 0, Value = (any) { (long) 0 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }, { { Name = "Position", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 13 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 21 }, Type = (short) 1 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeXMaximum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 1 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeXMinimum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RefX", Handle = (long) 0, Value = (any) { (long) 1 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }, { { Name = "Position", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 22 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 18 }, Type = (short) 1 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeYMaximum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 1 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeYMinimum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RefY", Handle = (long) 0, Value = (any) { (long) 2 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }, { { Name = "Position", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 19 }, Type = (short) 1 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeYMaximum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 1 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeYMinimum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RefY", Handle = (long) 0, Value = (any) { (long) 3 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } } }
+MirroredX
+false
+MirroredY
+false
+Path
+([]com.sun.star.beans.PropertyValue) { { Name = "Coordinates", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeParameterPair) { { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 22 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 22 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 19 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 15 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 19 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 15 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 18 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 16 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 18 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 12 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 21 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 13 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 18 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 14 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 18 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 14 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 19 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 19 }, Type = (short) 1 } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "Segments", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeSegment) { { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 10 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "TextFrames", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeTextFrame) { { TopLeft = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, BottomRight = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 22 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 19 }, Type = (short) 1 } } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }
+Type
+"ooxml-non-primitive"
+ViewBox
+(com.sun.star.awt.Rectangle) { X = (long) 0, Y = (long) 0, Width = (long) 0, Height = (long) 0 }
+/* ellipse */
+AdjustmentValues
+([]com.sun.star.drawing.EnhancedCustomShapeAdjustmentValue) {}
+Equations
+([]string) { "logwidth/2", "?0 *cos(pi*(2700000)/10800000)", "logheight/2", "?2 *sin(pi*(2700000)/10800000)", "logwidth/2", "?4 +0-?1 ", "?4 +?1 -0", "logheight/2", "?7 +0-?3 ", "?7 +?3 -0", "logheight", "logwidth", "(10800000)/60000.0", "(5400000)/60000.0", "(16200000)/60000.0", "(5400000)/60000.0", "(0)/60000.0", "(5400000)/60000.0", "(5400000)/60000.0", "(5400000)/60000.0" }
+Handles
+([][]com.sun.star.beans.PropertyValue) {}
+MirroredX
+false
+MirroredY
+false
+Path
+([]com.sun.star.beans.PropertyValue) { { Name = "Coordinates", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeParameterPair) { { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 12 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 13 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 14 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 15 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 16 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 17 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 18 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 19 }, Type = (short) 1 } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "GluePoints", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeParameterPair) { { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 9 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 11 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 6 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 9 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 11 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 6 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 1 } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "Segments", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeSegment) { { Command = (short) 1, Count = (short) 1 }, { Command = (short) 17, Count = (short) 4 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "TextFrames", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeTextFrame) { { TopLeft = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 1 } }, BottomRight = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 6 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 9 }, Type = (short) 1 } } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }
+Type
+"ooxml-non-primitive"
+ViewBox
+(com.sun.star.awt.Rectangle) { X = (long) 0, Y = (long) 0, Width = (long) 0, Height = (long) 0 }
+/* ellipseRibbon */
+AdjustmentValues
+([]com.sun.star.drawing.EnhancedCustomShapeAdjustmentValue) { { Value = (any) { (long) 25000 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE, Name = "adj1" }, { Value = (any) { (long) 50000 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE, Name = "adj2" }, { Value = (any) { (long) 12500 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE, Name = "adj3" } }
+Equations
+([]string) { "if(0-$0 ,0,if(100000-$0 ,$0 ,100000))", "if(25000-$1 ,25000,if(75000-$1 ,$1 ,75000))", "100000+0-?0 ", "?2 *1/2", "?0 +0-?3 ", "max(0,?4 )", "if(?5 -$2 ,?5 ,if(?0 -$2 ,$2 ,?0 ))", "logwidth*?1 /200000", "logwidth/2", "?8 +0-?7 ", "logwidth/8", "?9 +?10 -0", "logwidth+0-?11 ", "logwidth+0-?9 ", "logwidth+0-?10 ", "logheight*?6 /100000", "4*?15 /logwidth", "?11 *?11 /logwidth", "?11 +0-?17 ", "?16 *?18 /1", "?11 *1/2", "?16 *?20 /1", "logwidth+0-?20 ", "logheight*?0 /100000", "?23 +0-?15 ", "?9 *?9 /logwidth", "?9 +0-?25 ", "?16 *?26 /1", "?27 +?24 -0", "?15 +?24 -?28 ", "?29 +?15 -0", "?30 +?24 -0", "logheight+0-?23 ", "?15 *14/16", "(?33 +?32 )/2", "?27 +?32 -0", "?28 +?32 -0", "?9 *1/2", "?16 *?37 /1", "?38 +?32 -0", "logwidth+0-?37 ", "?31 +?32 -0", "?19 +?24 -0", "?23 +?23 -?42 ", "logheight+0-?15 ", "logheight", "logwidth" }
+Handles
+([][]com.sun.star.beans.PropertyValue) { { { Name = "Position", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 23 }, Type = (short) 1 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeYMaximum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 100000 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeYMinimum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RefY", Handle = (long) 0, Value = (any) { (long) 0 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }, { { Name = "Position", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 9 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 45 }, Type = (short) 1 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeXMaximum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 75000 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeXMinimum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 25000 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RefX", Handle = (long) 0, Value = (any) { (long) 1 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }, { { Name = "Position", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 44 }, Type = (short) 1 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeYMaximum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 1 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeYMinimum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 1 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RefY", Handle = (long) 0, Value = (any) { (long) 2 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } } }
+MirroredX
+false
+MirroredY
+false
+Path
+([]com.sun.star.beans.PropertyValue) { { Name = "Coordinates", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeParameterPair) { { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 20 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 21 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 11 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 19 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 9 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 28 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 31 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 13 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 28 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 12 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 19 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 22 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 21 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 46 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 14 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 34 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 46 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 32 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 40 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 39 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 13 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 35 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 13 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 36 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 41 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 9 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 36 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 9 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 35 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 37 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 39 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 32 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 10 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 34 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 11 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 42 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 11 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 19 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 9 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 28 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 31 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 13 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 28 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 12 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 19 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 12 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 42 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 43 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 11 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 42 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 20 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 21 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 11 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 19 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 9 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 28 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 31 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 13 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 28 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 12 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 19 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 22 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 21 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 46 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 14 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 34 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 46 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 32 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 40 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 39 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 13 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 35 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 13 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 36 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 41 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 9 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 36 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 9 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 35 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 37 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 39 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 32 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 10 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 34 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 9 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 35 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 9 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 28 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 13 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 28 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 13 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 35 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 11 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 19 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 11 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 42 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 12 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 42 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 12 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 19 }, Type = (short) 1 } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "Segments", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeSegment) { { Command = (short) 1, Count = (short) 1 }, { Command = (short) 16, Count = (short) 1 }, { Command = (short) 2, Count = (short) 1 }, { Command = (short) 16, Count = (short) 1 }, { Command = (short) 2, Count = (short) 1 }, { Command = (short) 16, Count = (short) 1 }, { Command = (short) 2, Count = (short) 2 }, { Command = (short) 16, Count = (short) 1 }, { Command = (short) 2, Count = (short) 1 }, { Command = (short) 16, Count = (short) 1 }, { Command = (short) 2, Count = (short) 1 }, { Command = (short) 16, Count = (short) 1 }, { Command = (short) 2, Count = (short) 1 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 7, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 }, { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 2 }, { Command = (short) 16, Count = (short) 1 }, { Command = (short) 2, Count = (short) 2 }, { Command = (short) 16, Count = (short) 1 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 19, Count = (short) 0 }, { Command = (short) 7, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 }, { Command = (short) 1, Count = (short) 1 }, { Command = (short) 16, Count = (short) 1 }, { Command = (short) 2, Count = (short) 1 }, { Command = (short) 16, Count = (short) 1 }, { Command = (short) 2, Count = (short) 1 }, { Command = (short) 16, Count = (short) 1 }, { Command = (short) 2, Count = (short) 2 }, { Command = (short) 16, Count = (short) 1 }, { Command = (short) 2, Count = (short) 1 }, { Command = (short) 16, Count = (short) 1 }, { Command = (short) 2, Count = (short) 1 }, { Command = (short) 16, Count = (short) 1 }, { Command = (short) 2, Count = (short) 1 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 1 }, { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 1 }, { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 1 }, { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 1 }, { Command = (short) 6, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "TextFrames", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeTextFrame) { { TopLeft = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 9 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 23 }, Type = (short) 1 } }, BottomRight = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 13 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 36 }, Type = (short) 1 } } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }
+Type
+"ooxml-non-primitive"
+ViewBox
+(com.sun.star.awt.Rectangle) { X = (long) 0, Y = (long) 0, Width = (long) 0, Height = (long) 0 }
+/* ellipseRibbon2 */
+AdjustmentValues
+([]com.sun.star.drawing.EnhancedCustomShapeAdjustmentValue) { { Value = (any) { (long) 25000 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE, Name = "adj1" }, { Value = (any) { (long) 50000 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE, Name = "adj2" }, { Value = (any) { (long) 12500 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE, Name = "adj3" } }
+Equations
+([]string) { "if(0-$0 ,0,if(100000-$0 ,$0 ,100000))", "if(25000-$1 ,25000,if(75000-$1 ,$1 ,75000))", "100000+0-?0 ", "?2 *1/2", "?0 +0-?3 ", "max(0,?4 )", "if(?5 -$2 ,?5 ,if(?0 -$2 ,$2 ,?0 ))", "logwidth*?1 /200000", "logwidth/2", "?8 +0-?7 ", "logwidth/8", "?9 +?10 -0", "logwidth+0-?11 ", "logwidth+0-?9 ", "logwidth+0-?10 ", "logheight*?6 /100000", "4*?15 /logwidth", "?11 *?11 /logwidth", "?11 +0-?17 ", "?16 *?18 /1", "logheight+0-?19 ", "?11 *1/2", "?16 *?21 /1", "logheight+0-?22 ", "logwidth+0-?21 ", "logheight*?0 /100000", "?25 +0-?15 ", "?9 *?9 /logwidth", "?9 +0-?27 ", "?16 *?28 /1", "?29 +?26 -0", "logheight+0-?30 ", "?15 +?26 -?30 ", "?32 +?15 -0", "?33 +?26 -0", "logheight+0-?34 ", "logheight+0-?25 ", "?15 *14/16", "(?37 +?36 )/2", "logheight+0-?38 ", "?29 +?36 -0", "logheight+0-?40 ", "?30 +?36 -0", "logheight+0-?42 ", "?9 *1/2", "?16 *?44 /1", "?45 +?36 -0", "logheight+0-?46 ", "logwidth+0-?44 ", "?34 +?36 -0", "logheight+0-?49 ", "?19 +?26 -0", "logheight+0-?51 ", "?25 +?25 -?51 ", "logheight+0-?53 ", "logheight", "logwidth" }
+Handles
+([][]com.sun.star.beans.PropertyValue) { { { Name = "Position", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 36 }, Type = (short) 1 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeYMaximum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 100000 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeYMinimum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RefY", Handle = (long) 0, Value = (any) { (long) 0 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }, { { Name = "Position", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 9 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeXMaximum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 100000 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeXMinimum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 25000 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RefX", Handle = (long) 0, Value = (any) { (long) 1 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }, { { Name = "Position", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 15 }, Type = (short) 1 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeYMaximum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 1 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeYMinimum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 1 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RefY", Handle = (long) 0, Value = (any) { (long) 2 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } } }
+MirroredX
+false
+MirroredY
+false
+Path
+([]com.sun.star.beans.PropertyValue) { { Name = "Coordinates", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeParameterPair) { { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 55 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 21 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 23 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 11 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 20 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 9 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 31 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 35 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 13 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 31 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 12 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 20 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 24 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 23 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 56 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 55 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 14 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 39 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 56 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 25 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 48 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 47 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 13 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 41 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 13 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 43 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 50 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 9 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 43 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 9 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 41 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 44 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 47 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 25 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 10 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 39 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 11 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 52 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 11 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 20 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 9 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 31 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 35 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 13 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 31 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 12 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 20 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 12 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 52 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 54 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 11 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 52 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 55 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 10 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 39 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 25 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 44 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 47 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 9 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 41 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 9 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 43 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 50 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 13 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 43 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 13 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 41 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 48 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 47 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 56 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 25 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 14 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 39 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 56 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 55 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 24 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 23 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 12 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 20 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 13 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 31 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 35 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 9 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 31 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 11 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 20 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 21 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 23 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 55 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 9 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 31 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 9 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 41 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 13 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 41 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 13 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 31 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 11 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 52 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 11 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 20 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 12 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 20 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 12 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 52 }, Type = (short) 1 } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "Segments", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeSegment) { { Command = (short) 1, Count = (short) 1 }, { Command = (short) 16, Count = (short) 1 }, { Command = (short) 2, Count = (short) 1 }, { Command = (short) 16, Count = (short) 1 }, { Command = (short) 2, Count = (short) 1 }, { Command = (short) 16, Count = (short) 1 }, { Command = (short) 2, Count = (short) 2 }, { Command = (short) 16, Count = (short) 1 }, { Command = (short) 2, Count = (short) 1 }, { Command = (short) 16, Count = (short) 1 }, { Command = (short) 2, Count = (short) 1 }, { Command = (short) 16, Count = (short) 1 }, { Command = (short) 2, Count = (short) 1 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 7, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 }, { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 2 }, { Command = (short) 16, Count = (short) 1 }, { Command = (short) 2, Count = (short) 2 }, { Command = (short) 16, Count = (short) 1 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 19, Count = (short) 0 }, { Command = (short) 7, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 }, { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 2 }, { Command = (short) 16, Count = (short) 1 }, { Command = (short) 2, Count = (short) 1 }, { Command = (short) 16, Count = (short) 1 }, { Command = (short) 2, Count = (short) 1 }, { Command = (short) 16, Count = (short) 1 }, { Command = (short) 2, Count = (short) 2 }, { Command = (short) 16, Count = (short) 1 }, { Command = (short) 2, Count = (short) 1 }, { Command = (short) 16, Count = (short) 1 }, { Command = (short) 2, Count = (short) 1 }, { Command = (short) 16, Count = (short) 1 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 1 }, { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 1 }, { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 1 }, { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 1 }, { Command = (short) 6, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "TextFrames", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeTextFrame) { { TopLeft = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 9 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 43 }, Type = (short) 1 } }, BottomRight = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 13 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 36 }, Type = (short) 1 } } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }
+Type
+"ooxml-non-primitive"
+ViewBox
+(com.sun.star.awt.Rectangle) { X = (long) 0, Y = (long) 0, Width = (long) 0, Height = (long) 0 }
+/* flowChartAlternateProcess */
+AdjustmentValues
+([]com.sun.star.drawing.EnhancedCustomShapeAdjustmentValue) {}
+Equations
+([]string) { "min(logwidth,logheight)/6", "logwidth+0-?0 ", "logheight+0-?0 ", "?0 *29289/100000", "logwidth+0-?3 ", "logheight+0-?3 ", "logwidth/2", "logheight/2", "logheight", "logwidth", "(10800000)/60000.0", "(5400000)/60000.0", "(16200000)/60000.0", "(5400000)/60000.0", "(0)/60000.0", "(5400000)/60000.0", "(5400000)/60000.0", "(5400000)/60000.0" }
+Handles
+([][]com.sun.star.beans.PropertyValue) {}
+MirroredX
+false
+MirroredY
+false
+Path
+([]com.sun.star.beans.PropertyValue) { { Name = "Coordinates", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeParameterPair) { { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 10 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 11 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 12 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 13 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 9 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 14 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 15 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 16 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 17 }, Type = (short) 1 } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "Segments", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeSegment) { { Command = (short) 1, Count = (short) 1 }, { Command = (short) 17, Count = (short) 1 }, { Command = (short) 2, Count = (short) 1 }, { Command = (short) 17, Count = (short) 1 }, { Command = (short) 2, Count = (short) 1 }, { Command = (short) 17, Count = (short) 1 }, { Command = (short) 2, Count = (short) 1 }, { Command = (short) 17, Count = (short) 1 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "TextFrames", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeTextFrame) { { TopLeft = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 } }, BottomRight = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 1 } } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }
+Type
+"ooxml-non-primitive"
+ViewBox
+(com.sun.star.awt.Rectangle) { X = (long) 0, Y = (long) 0, Width = (long) 0, Height = (long) 0 }
+/* flowChartCollate */
+AdjustmentValues
+([]com.sun.star.drawing.EnhancedCustomShapeAdjustmentValue) {}
+Equations
+([]string) { "logwidth*3/4", "logheight*3/4", "logwidth/2", "logheight/2", "logheight", "logwidth/4", "logheight/4" }
+Handles
+([][]com.sun.star.beans.PropertyValue) {}
+MirroredX
+false
+MirroredY
+false
+Path
+([]com.sun.star.beans.PropertyValue) { { Name = "Coordinates", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeParameterPair) { { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 0 } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "Segments", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeSegment) { { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 5 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "SubViewSize", Handle = (long) 0, Value = (any) { ([]com.sun.star.awt.Size) { { Width = (long) 2, Height = (long) 2 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "TextFrames", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeTextFrame) { { TopLeft = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 6 }, Type = (short) 1 } }, BottomRight = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 1 } } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }
+Type
+"ooxml-non-primitive"
+ViewBox
+(com.sun.star.awt.Rectangle) { X = (long) 0, Y = (long) 0, Width = (long) 0, Height = (long) 0 }
+/* flowChartConnector */
+AdjustmentValues
+([]com.sun.star.drawing.EnhancedCustomShapeAdjustmentValue) {}
+Equations
+([]string) { "logwidth/2", "?0 *cos(pi*(2700000)/10800000)", "logheight/2", "?2 *sin(pi*(2700000)/10800000)", "logwidth/2", "?4 +0-?1 ", "?4 +?1 -0", "logheight/2", "?7 +0-?3 ", "?7 +?3 -0", "logheight", "logwidth", "(10800000)/60000.0", "(5400000)/60000.0", "(16200000)/60000.0", "(5400000)/60000.0", "(0)/60000.0", "(5400000)/60000.0", "(5400000)/60000.0", "(5400000)/60000.0" }
+Handles
+([][]com.sun.star.beans.PropertyValue) {}
+MirroredX
+false
+MirroredY
+false
+Path
+([]com.sun.star.beans.PropertyValue) { { Name = "Coordinates", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeParameterPair) { { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 12 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 13 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 14 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 15 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 16 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 17 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 18 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 19 }, Type = (short) 1 } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "Segments", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeSegment) { { Command = (short) 1, Count = (short) 1 }, { Command = (short) 17, Count = (short) 4 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "TextFrames", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeTextFrame) { { TopLeft = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 1 } }, BottomRight = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 6 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 9 }, Type = (short) 1 } } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }
+Type
+"ooxml-non-primitive"
+ViewBox
+(com.sun.star.awt.Rectangle) { X = (long) 0, Y = (long) 0, Width = (long) 0, Height = (long) 0 }
+/* flowChartDecision */
+AdjustmentValues
+([]com.sun.star.drawing.EnhancedCustomShapeAdjustmentValue) {}
+Equations
+([]string) { "logwidth*3/4", "logheight*3/4", "logwidth/2", "logheight/2", "logheight", "logwidth", "logwidth/4", "logheight/4" }
+Handles
+([][]com.sun.star.beans.PropertyValue) {}
+MirroredX
+false
+MirroredY
+false
+Path
+([]com.sun.star.beans.PropertyValue) { { Name = "Coordinates", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeParameterPair) { { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 0 } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "Segments", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeSegment) { { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 3 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "SubViewSize", Handle = (long) 0, Value = (any) { ([]com.sun.star.awt.Size) { { Width = (long) 2, Height = (long) 2 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "TextFrames", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeTextFrame) { { TopLeft = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 6 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7 }, Type = (short) 1 } }, BottomRight = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 1 } } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }
+Type
+"ooxml-non-primitive"
+ViewBox
+(com.sun.star.awt.Rectangle) { X = (long) 0, Y = (long) 0, Width = (long) 0, Height = (long) 0 }
+/* flowChartDelay */
+AdjustmentValues
+([]com.sun.star.drawing.EnhancedCustomShapeAdjustmentValue) {}
+Equations
+([]string) { "logwidth/2", "?0 *cos(pi*(2700000)/10800000)", "logheight/2", "?2 *sin(pi*(2700000)/10800000)", "logwidth/2", "?4 +?1 -0", "logheight/2", "?6 +0-?3 ", "?6 +?3 -0", "logheight", "logwidth", "(16200000)/60000.0", "(10800000)/60000.0" }
+Handles
+([][]com.sun.star.beans.PropertyValue) {}
+MirroredX
+false
+MirroredY
+false
+Path
+([]com.sun.star.beans.PropertyValue) { { Name = "Coordinates", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeParameterPair) { { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 11 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 12 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 9 }, Type = (short) 1 } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "Segments", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeSegment) { { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 1 }, { Command = (short) 17, Count = (short) 1 }, { Command = (short) 2, Count = (short) 1 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "TextFrames", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeTextFrame) { { TopLeft = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7 }, Type = (short) 1 } }, BottomRight = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 1 } } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }
+Type
+"ooxml-non-primitive"
+ViewBox
+(com.sun.star.awt.Rectangle) { X = (long) 0, Y = (long) 0, Width = (long) 0, Height = (long) 0 }
+/* flowChartDisplay */
+AdjustmentValues
+([]com.sun.star.drawing.EnhancedCustomShapeAdjustmentValue) {}
+Equations
+([]string) { "logwidth*5/6", "logwidth/2", "logheight/2", "logheight", "logwidth", "logwidth/6", "(16200000)/60000.0", "(10800000)/60000.0" }
+Handles
+([][]com.sun.star.beans.PropertyValue) {}
+MirroredX
+false
+MirroredY
+false
+Path
+([]com.sun.star.beans.PropertyValue) { { Name = "Coordinates", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeParameterPair) { { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 6 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 6 }, Type = (short) 0 } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "Segments", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeSegment) { { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 2 }, { Command = (short) 17, Count = (short) 1 }, { Command = (short) 2, Count = (short) 1 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "SubViewSize", Handle = (long) 0, Value = (any) { ([]com.sun.star.awt.Size) { { Width = (long) 6, Height = (long) 6 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "TextFrames", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeTextFrame) { { TopLeft = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, BottomRight = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 } } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }
+Type
+"ooxml-non-primitive"
+ViewBox
+(com.sun.star.awt.Rectangle) { X = (long) 0, Y = (long) 0, Width = (long) 0, Height = (long) 0 }
+/* flowChartDocument */
+AdjustmentValues
+([]com.sun.star.drawing.EnhancedCustomShapeAdjustmentValue) {}
+Equations
+([]string) { "logheight*17322/21600", "logheight*20172/21600", "logwidth/2", "logheight/2", "logwidth" }
+Handles
+([][]com.sun.star.beans.PropertyValue) {}
+MirroredX
+false
+MirroredY
+false
+Path
+([]com.sun.star.beans.PropertyValue) { { Name = "Coordinates", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeParameterPair) { { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 21600 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 21600 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 17322 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 10800 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 17322 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 10800 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 23922 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 20172 }, Type = (short) 0 } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "Segments", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeSegment) { { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 2 }, { Command = (short) 3, Count = (short) 1 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "SubViewSize", Handle = (long) 0, Value = (any) { ([]com.sun.star.awt.Size) { { Width = (long) 21600, Height = (long) 21600 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "TextFrames", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeTextFrame) { { TopLeft = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, BottomRight = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 1 } } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }
+Type
+"ooxml-non-primitive"
+ViewBox
+(com.sun.star.awt.Rectangle) { X = (long) 0, Y = (long) 0, Width = (long) 0, Height = (long) 0 }
+/* flowChartExtract */
+AdjustmentValues
+([]com.sun.star.drawing.EnhancedCustomShapeAdjustmentValue) {}
+Equations
+([]string) { "logwidth*3/4", "logwidth/2", "logwidth/4", "logheight/2", "logheight" }
+Handles
+([][]com.sun.star.beans.PropertyValue) {}
+MirroredX
+false
+MirroredY
+false
+Path
+([]com.sun.star.beans.PropertyValue) { { Name = "Coordinates", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeParameterPair) { { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 0 } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "Segments", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeSegment) { { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 2 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "SubViewSize", Handle = (long) 0, Value = (any) { ([]com.sun.star.awt.Size) { { Width = (long) 2, Height = (long) 2 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "TextFrames", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeTextFrame) { { TopLeft = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 } }, BottomRight = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 } } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }
+Type
+"ooxml-non-primitive"
+ViewBox
+(com.sun.star.awt.Rectangle) { X = (long) 0, Y = (long) 0, Width = (long) 0, Height = (long) 0 }
+/* flowChartInputOutput */
+AdjustmentValues
+([]com.sun.star.drawing.EnhancedCustomShapeAdjustmentValue) {}
+Equations
+([]string) { "logwidth*2/5", "logwidth*3/5", "logwidth*4/5", "logwidth*9/10", "logwidth/2", "logwidth/10", "logheight/2", "logheight", "logwidth/5" }
+Handles
+([][]com.sun.star.beans.PropertyValue) {}
+MirroredX
+false
+MirroredY
+false
+Path
+([]com.sun.star.beans.PropertyValue) { { Name = "Coordinates", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeParameterPair) { { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 0 } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "Segments", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeSegment) { { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 3 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "SubViewSize", Handle = (long) 0, Value = (any) { ([]com.sun.star.awt.Size) { { Width = (long) 5, Height = (long) 5 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "TextFrames", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeTextFrame) { { TopLeft = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, BottomRight = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7 }, Type = (short) 1 } } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }
+Type
+"ooxml-non-primitive"
+ViewBox
+(com.sun.star.awt.Rectangle) { X = (long) 0, Y = (long) 0, Width = (long) 0, Height = (long) 0 }
+/* flowChartInternalStorage */
+AdjustmentValues
+([]com.sun.star.drawing.EnhancedCustomShapeAdjustmentValue) {}
+Equations
+([]string) { "logwidth/2", "logheight/2", "logheight", "logwidth", "logwidth/8", "logheight/8" }
+Handles
+([][]com.sun.star.beans.PropertyValue) {}
+MirroredX
+false
+MirroredY
+false
+Path
+([]com.sun.star.beans.PropertyValue) { { Name = "Coordinates", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeParameterPair) { { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 0 } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "Segments", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeSegment) { { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 3 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 7, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 }, { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 1 }, { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 1 }, { Command = (short) 6, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 }, { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 3 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 6, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "SubViewSize", Handle = (long) 0, Value = (any) { ([]com.sun.star.awt.Size) { { Width = (long) 1, Height = (long) 1 }, { Width = (long) 8, Height = (long) 8 }, { Width = (long) 1, Height = (long) 1 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "TextFrames", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeTextFrame) { { TopLeft = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 1 } }, BottomRight = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 } } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }
+Type
+"ooxml-non-primitive"
+ViewBox
+(com.sun.star.awt.Rectangle) { X = (long) 0, Y = (long) 0, Width = (long) 0, Height = (long) 0 }
+/* flowChartMagneticDisk */
+AdjustmentValues
+([]com.sun.star.drawing.EnhancedCustomShapeAdjustmentValue) {}
+Equations
+([]string) { "logheight*5/6", "logwidth/2", "logheight/3", "logheight/2", "logheight", "logwidth", "(10800000)/60000.0", "(10800000)/60000.0", "(0)/60000.0", "(10800000)/60000.0", "(0)/60000.0", "(10800000)/60000.0", "(10800000)/60000.0", "(10800000)/60000.0", "(0)/60000.0", "(10800000)/60000.0" }
+Handles
+([][]com.sun.star.beans.PropertyValue) {}
+MirroredX
+false
+MirroredY
+false
+Path
+([]com.sun.star.beans.PropertyValue) { { Name = "Coordinates", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeParameterPair) { { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 6 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 6 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 9 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 6 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 10 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 11 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 12 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 13 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 6 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 14 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 15 }, Type = (short) 1 } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "Segments", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeSegment) { { Command = (short) 1, Count = (short) 1 }, { Command = (short) 17, Count = (short) 1 }, { Command = (short) 2, Count = (short) 1 }, { Command = (short) 17, Count = (short) 1 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 7, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 }, { Command = (short) 1, Count = (short) 1 }, { Command = (short) 17, Count = (short) 1 }, { Command = (short) 6, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 }, { Command = (short) 1, Count = (short) 1 }, { Command = (short) 17, Count = (short) 1 }, { Command = (short) 2, Count = (short) 1 }, { Command = (short) 17, Count = (short) 1 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 6, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "SubViewSize", Handle = (long) 0, Value = (any) { ([]com.sun.star.awt.Size) { { Width = (long) 6, Height = (long) 6 }, { Width = (long) 6, Height = (long) 6 }, { Width = (long) 6, Height = (long) 6 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "TextFrames", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeTextFrame) { { TopLeft = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 } }, BottomRight = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 1 } } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }
+Type
+"ooxml-non-primitive"
+ViewBox
+(com.sun.star.awt.Rectangle) { X = (long) 0, Y = (long) 0, Width = (long) 0, Height = (long) 0 }
+/* flowChartMagneticDrum */
+AdjustmentValues
+([]com.sun.star.drawing.EnhancedCustomShapeAdjustmentValue) {}
+Equations
+([]string) { "logwidth*2/3", "logwidth/2", "logheight/2", "logheight", "logwidth", "logwidth/6", "(16200000)/60000.0", "(10800000)/60000.0", "(5400000)/60000.0", "(10800000)/60000.0", "(5400000)/60000.0", "(10800000)/60000.0", "(16200000)/60000.0", "(10800000)/60000.0", "(5400000)/60000.0", "(10800000)/60000.0" }
+Handles
+([][]com.sun.star.beans.PropertyValue) {}
+MirroredX
+false
+MirroredY
+false
+Path
+([]com.sun.star.beans.PropertyValue) { { Name = "Coordinates", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeParameterPair) { { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 6 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 6 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 9 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 6 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 10 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 11 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 12 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 13 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 6 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 14 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 15 }, Type = (short) 1 } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "Segments", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeSegment) { { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 1 }, { Command = (short) 17, Count = (short) 1 }, { Command = (short) 2, Count = (short) 1 }, { Command = (short) 17, Count = (short) 1 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 7, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 }, { Command = (short) 1, Count = (short) 1 }, { Command = (short) 17, Count = (short) 1 }, { Command = (short) 6, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 }, { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 1 }, { Command = (short) 17, Count = (short) 1 }, { Command = (short) 2, Count = (short) 1 }, { Command = (short) 17, Count = (short) 1 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 6, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "SubViewSize", Handle = (long) 0, Value = (any) { ([]com.sun.star.awt.Size) { { Width = (long) 6, Height = (long) 6 }, { Width = (long) 6, Height = (long) 6 }, { Width = (long) 6, Height = (long) 6 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "TextFrames", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeTextFrame) { { TopLeft = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, BottomRight = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 } } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }
+Type
+"ooxml-non-primitive"
+ViewBox
+(com.sun.star.awt.Rectangle) { X = (long) 0, Y = (long) 0, Width = (long) 0, Height = (long) 0 }
+/* flowChartMagneticTape */
+AdjustmentValues
+([]com.sun.star.drawing.EnhancedCustomShapeAdjustmentValue) {}
+Equations
+([]string) { "logwidth/2", "?0 *cos(pi*(2700000)/10800000)", "logheight/2", "?2 *sin(pi*(2700000)/10800000)", "logwidth/2", "?4 +0-?1 ", "?4 +?1 -0", "logheight/2", "?7 +0-?3 ", "?7 +?3 -0", "(10800000*atan2(logheight,logwidth))/pi", "logheight", "logwidth", "(5400000)/60000.0", "(5400000)/60000.0", "(10800000)/60000.0", "(5400000)/60000.0", "(16200000)/60000.0", "(5400000)/60000.0", "(0)/60000.0", "(?10 )/60000.0" }
+Handles
+([][]com.sun.star.beans.PropertyValue) {}
+MirroredX
+false
+MirroredY
+false
+Path
+([]com.sun.star.beans.PropertyValue) { { Name = "Coordinates", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeParameterPair) { { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 11 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 13 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 14 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 15 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 16 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 17 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 18 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 19 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 20 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 12 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 9 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 12 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 11 }, Type = (short) 1 } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "Segments", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeSegment) { { Command = (short) 1, Count = (short) 1 }, { Command = (short) 17, Count = (short) 4 }, { Command = (short) 2, Count = (short) 2 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "TextFrames", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeTextFrame) { { TopLeft = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 1 } }, BottomRight = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 6 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 9 }, Type = (short) 1 } } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }
+Type
+"ooxml-non-primitive"
+ViewBox
+(com.sun.star.awt.Rectangle) { X = (long) 0, Y = (long) 0, Width = (long) 0, Height = (long) 0 }
+/* flowChartManualInput */
+AdjustmentValues
+([]com.sun.star.drawing.EnhancedCustomShapeAdjustmentValue) {}
+Equations
+([]string) { "logwidth/2", "logheight/10", "logheight/2", "logheight", "logwidth", "logheight/5" }
+Handles
+([][]com.sun.star.beans.PropertyValue) {}
+MirroredX
+false
+MirroredY
+false
+Path
+([]com.sun.star.beans.PropertyValue) { { Name = "Coordinates", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeParameterPair) { { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 0 } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "Segments", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeSegment) { { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 3 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "SubViewSize", Handle = (long) 0, Value = (any) { ([]com.sun.star.awt.Size) { { Width = (long) 5, Height = (long) 5 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "TextFrames", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeTextFrame) { { TopLeft = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 1 } }, BottomRight = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 } } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }
+Type
+"ooxml-non-primitive"
+ViewBox
+(com.sun.star.awt.Rectangle) { X = (long) 0, Y = (long) 0, Width = (long) 0, Height = (long) 0 }
+/* flowChartManualOperation */
+AdjustmentValues
+([]com.sun.star.drawing.EnhancedCustomShapeAdjustmentValue) {}
+Equations
+([]string) { "logwidth*4/5", "logwidth*9/10", "logwidth/2", "logwidth/10", "logheight/2", "logheight", "logwidth/5" }
+Handles
+([][]com.sun.star.beans.PropertyValue) {}
+MirroredX
+false
+MirroredY
+false
+Path
+([]com.sun.star.beans.PropertyValue) { { Name = "Coordinates", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeParameterPair) { { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 0 } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "Segments", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeSegment) { { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 3 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "SubViewSize", Handle = (long) 0, Value = (any) { ([]com.sun.star.awt.Size) { { Width = (long) 5, Height = (long) 5 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "TextFrames", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeTextFrame) { { TopLeft = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 6 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, BottomRight = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 1 } } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }
+Type
+"ooxml-non-primitive"
+ViewBox
+(com.sun.star.awt.Rectangle) { X = (long) 0, Y = (long) 0, Width = (long) 0, Height = (long) 0 }
+/* flowChartMerge */
+AdjustmentValues
+([]com.sun.star.drawing.EnhancedCustomShapeAdjustmentValue) {}
+Equations
+([]string) { "logwidth*3/4", "logwidth/2", "logwidth/4", "logheight/2", "logheight" }
+Handles
+([][]com.sun.star.beans.PropertyValue) {}
+MirroredX
+false
+MirroredY
+false
+Path
+([]com.sun.star.beans.PropertyValue) { { Name = "Coordinates", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeParameterPair) { { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 0 } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "Segments", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeSegment) { { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 2 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "SubViewSize", Handle = (long) 0, Value = (any) { ([]com.sun.star.awt.Size) { { Width = (long) 2, Height = (long) 2 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "TextFrames", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeTextFrame) { { TopLeft = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, BottomRight = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 } } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }
+Type
+"ooxml-non-primitive"
+ViewBox
+(com.sun.star.awt.Rectangle) { X = (long) 0, Y = (long) 0, Width = (long) 0, Height = (long) 0 }
+/* flowChartMultidocument */
+AdjustmentValues
+([]com.sun.star.drawing.EnhancedCustomShapeAdjustmentValue) {}
+Equations
+([]string) { "logheight*3675/21600", "logheight*20782/21600", "logwidth*9298/21600", "logwidth*12286/21600", "logwidth*18595/21600", "logheight/2", "logwidth" }
+Handles
+([][]com.sun.star.beans.PropertyValue) {}
+MirroredX
+false
+MirroredY
+false
+Path
+([]com.sun.star.beans.PropertyValue) { { Name = "Coordinates", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeParameterPair) { { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 20782 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 9298 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 23542 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 9298 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 18022 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 18595 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 18022 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 18595 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3675 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3675 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1532 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3675 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1532 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1815 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 20000 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1815 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 20000 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 16252 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 19298 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 16252 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 18595 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 16352 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 18595 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 16352 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 18595 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3675 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2972 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1815 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2972 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 21600 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 21600 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 14392 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 20800 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 14392 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 20000 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 14467 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 20000 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 14467 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 20000 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1815 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3675 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 18595 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3675 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 18595 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 18022 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 9298 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 18022 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 9298 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 23542 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 20782 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1532 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3675 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1532 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1815 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 20000 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1815 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 20000 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 16252 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 19298 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 16252 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 18595 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 16352 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 18595 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 16352 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2972 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1815 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2972 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 21600 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 21600 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 14392 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 20800 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 14392 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 20000 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 14467 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 20000 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 14467 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 20782 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 9298 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 23542 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 9298 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 18022 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 18595 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 18022 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 18595 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 16352 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 18595 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 16352 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 19298 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 16252 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 20000 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 16252 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 20000 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 14467 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 20000 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 14467 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 20800 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 14392 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 21600 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 14392 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 21600 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2972 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2972 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1815 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1532 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1815 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1532 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3675 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3675 }, Type = (short) 0 } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "Segments", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeSegment) { { Command = (short) 1, Count = (short) 1 }, { Command = (short) 3, Count = (short) 1 }, { Command = (short) 2, Count = (short) 2 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 3 }, { Command = (short) 3, Count = (short) 1 }, { Command = (short) 2, Count = (short) 1 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 3 }, { Command = (short) 3, Count = (short) 1 }, { Command = (short) 2, Count = (short) 1 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 7, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 }, { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 2 }, { Command = (short) 3, Count = (short) 1 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 3 }, { Command = (short) 3, Count = (short) 1 }, { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 3 }, { Command = (short) 3, Count = (short) 1 }, { Command = (short) 6, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 }, { Command = (short) 1, Count = (short) 1 }, { Command = (short) 3, Count = (short) 1 }, { Command = (short) 2, Count = (short) 1 }, { Command = (short) 3, Count = (short) 1 }, { Command = (short) 2, Count = (short) 1 }, { Command = (short) 3, Count = (short) 1 }, { Command = (short) 2, Count = (short) 6 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 6, Count = (short) 0 }, { Command = (short) 7, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "SubViewSize", Handle = (long) 0, Value = (any) { ([]com.sun.star.awt.Size) { { Width = (long) 21600, Height = (long) 21600 }, { Width = (long) 21600, Height = (long) 21600 }, { Width = (long) 21600, Height = (long) 21600 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "TextFrames", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeTextFrame) { { TopLeft = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 1 } }, BottomRight = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 1 } } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }
+Type
+"ooxml-non-primitive"
+ViewBox
+(com.sun.star.awt.Rectangle) { X = (long) 0, Y = (long) 0, Width = (long) 0, Height = (long) 0 }
+/* flowChartOfflineStorage */
+AdjustmentValues
+([]com.sun.star.drawing.EnhancedCustomShapeAdjustmentValue) {}
+Equations
+([]string) { "logwidth*3/4", "logheight/2", "logwidth/2", "logheight", "logwidth/4" }
+Handles
+([][]com.sun.star.beans.PropertyValue) {}
+MirroredX
+false
+MirroredY
+false
+Path
+([]com.sun.star.beans.PropertyValue) { { Name = "Coordinates", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeParameterPair) { { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 0 } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "Segments", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeSegment) { { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 2 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 7, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 }, { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 1 }, { Command = (short) 6, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 }, { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 2 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 6, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "SubViewSize", Handle = (long) 0, Value = (any) { ([]com.sun.star.awt.Size) { { Width = (long) 2, Height = (long) 2 }, { Width = (long) 5, Height = (long) 5 }, { Width = (long) 2, Height = (long) 2 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "TextFrames", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeTextFrame) { { TopLeft = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, BottomRight = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 1 } } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }
+Type
+"ooxml-non-primitive"
+ViewBox
+(com.sun.star.awt.Rectangle) { X = (long) 0, Y = (long) 0, Width = (long) 0, Height = (long) 0 }
+/* flowChartOffpageConnector */
+AdjustmentValues
+([]com.sun.star.drawing.EnhancedCustomShapeAdjustmentValue) {}
+Equations
+([]string) { "logheight*4/5", "logwidth/2", "logheight/2", "logheight", "logwidth" }
+Handles
+([][]com.sun.star.beans.PropertyValue) {}
+MirroredX
+false
+MirroredY
+false
+Path
+([]com.sun.star.beans.PropertyValue) { { Name = "Coordinates", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeParameterPair) { { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 10 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 10 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 10 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 0 } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "Segments", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeSegment) { { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 4 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "SubViewSize", Handle = (long) 0, Value = (any) { ([]com.sun.star.awt.Size) { { Width = (long) 10, Height = (long) 10 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "TextFrames", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeTextFrame) { { TopLeft = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, BottomRight = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 1 } } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }
+Type
+"ooxml-non-primitive"
+ViewBox
+(com.sun.star.awt.Rectangle) { X = (long) 0, Y = (long) 0, Width = (long) 0, Height = (long) 0 }
+/* flowChartOnlineStorage */
+AdjustmentValues
+([]com.sun.star.drawing.EnhancedCustomShapeAdjustmentValue) {}
+Equations
+([]string) { "logwidth*5/6", "logwidth/2", "logheight/2", "logheight", "logwidth/6", "(16200000)/60000.0", "(-10800000)/60000.0", "(5400000)/60000.0", "(10800000)/60000.0" }
+Handles
+([][]com.sun.star.beans.PropertyValue) {}
+MirroredX
+false
+MirroredY
+false
+Path
+([]com.sun.star.beans.PropertyValue) { { Name = "Coordinates", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeParameterPair) { { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 6 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 6 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 6 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 1 } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "Segments", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeSegment) { { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 1 }, { Command = (short) 17, Count = (short) 1 }, { Command = (short) 2, Count = (short) 1 }, { Command = (short) 17, Count = (short) 1 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "SubViewSize", Handle = (long) 0, Value = (any) { ([]com.sun.star.awt.Size) { { Width = (long) 6, Height = (long) 6 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "TextFrames", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeTextFrame) { { TopLeft = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, BottomRight = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 } } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }
+Type
+"ooxml-non-primitive"
+ViewBox
+(com.sun.star.awt.Rectangle) { X = (long) 0, Y = (long) 0, Width = (long) 0, Height = (long) 0 }
+/* flowChartOr */
+AdjustmentValues
+([]com.sun.star.drawing.EnhancedCustomShapeAdjustmentValue) {}
+Equations
+([]string) { "logwidth/2", "?0 *cos(pi*(2700000)/10800000)", "logheight/2", "?2 *sin(pi*(2700000)/10800000)", "logwidth/2", "?4 +0-?1 ", "?4 +?1 -0", "logheight/2", "?7 +0-?3 ", "?7 +?3 -0", "logheight", "logwidth", "(10800000)/60000.0", "(5400000)/60000.0", "(16200000)/60000.0", "(5400000)/60000.0", "(0)/60000.0", "(5400000)/60000.0", "(5400000)/60000.0", "(5400000)/60000.0", "(10800000)/60000.0", "(5400000)/60000.0", "(16200000)/60000.0", "(5400000)/60000.0", "(0)/60000.0", "(5400000)/60000.0", "(5400000)/60000.0", "(5400000)/60000.0" }
+Handles
+([][]com.sun.star.beans.PropertyValue) {}
+MirroredX
+false
+MirroredY
+false
+Path
+([]com.sun.star.beans.PropertyValue) { { Name = "Coordinates", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeParameterPair) { { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 12 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 13 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 14 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 15 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 16 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 17 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 18 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 19 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 10 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 11 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 20 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 21 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 22 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 23 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 24 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 25 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 26 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 27 }, Type = (short) 1 } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "Segments", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeSegment) { { Command = (short) 1, Count = (short) 1 }, { Command = (short) 17, Count = (short) 4 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 7, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 }, { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 1 }, { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 1 }, { Command = (short) 6, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 }, { Command = (short) 1, Count = (short) 1 }, { Command = (short) 17, Count = (short) 4 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 6, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "TextFrames", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeTextFrame) { { TopLeft = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 1 } }, BottomRight = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 6 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 9 }, Type = (short) 1 } } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }
+Type
+"ooxml-non-primitive"
+ViewBox
+(com.sun.star.awt.Rectangle) { X = (long) 0, Y = (long) 0, Width = (long) 0, Height = (long) 0 }
+/* flowChartPredefinedProcess */
+AdjustmentValues
+([]com.sun.star.drawing.EnhancedCustomShapeAdjustmentValue) {}
+Equations
+([]string) { "logwidth*7/8", "logwidth/2", "logheight/2", "logheight", "logwidth", "logwidth/8" }
+Handles
+([][]com.sun.star.beans.PropertyValue) {}
+MirroredX
+false
+MirroredY
+false
+Path
+([]com.sun.star.beans.PropertyValue) { { Name = "Coordinates", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeParameterPair) { { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 0 } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "Segments", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeSegment) { { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 3 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 7, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 }, { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 1 }, { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 1 }, { Command = (short) 6, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 }, { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 3 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 6, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "SubViewSize", Handle = (long) 0, Value = (any) { ([]com.sun.star.awt.Size) { { Width = (long) 1, Height = (long) 1 }, { Width = (long) 8, Height = (long) 8 }, { Width = (long) 1, Height = (long) 1 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "TextFrames", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeTextFrame) { { TopLeft = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, BottomRight = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 } } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }
+Type
+"ooxml-non-primitive"
+ViewBox
+(com.sun.star.awt.Rectangle) { X = (long) 0, Y = (long) 0, Width = (long) 0, Height = (long) 0 }
+/* flowChartPreparation */
+AdjustmentValues
+([]com.sun.star.drawing.EnhancedCustomShapeAdjustmentValue) {}
+Equations
+([]string) { "logwidth*4/5", "logwidth/2", "logheight/2", "logheight", "logwidth", "logwidth/5" }
+Handles
+([][]com.sun.star.beans.PropertyValue) {}
+MirroredX
+false
+MirroredY
+false
+Path
+([]com.sun.star.beans.PropertyValue) { { Name = "Coordinates", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeParameterPair) { { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 10 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 10 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 10 }, Type = (short) 0 } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "Segments", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeSegment) { { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 5 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "SubViewSize", Handle = (long) 0, Value = (any) { ([]com.sun.star.awt.Size) { { Width = (long) 10, Height = (long) 10 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "TextFrames", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeTextFrame) { { TopLeft = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, BottomRight = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 } } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }
+Type
+"ooxml-non-primitive"
+ViewBox
+(com.sun.star.awt.Rectangle) { X = (long) 0, Y = (long) 0, Width = (long) 0, Height = (long) 0 }
+/* flowChartProcess */
+AdjustmentValues
+([]com.sun.star.drawing.EnhancedCustomShapeAdjustmentValue) {}
+Equations
+([]string) { "logwidth/2", "logheight/2", "logheight", "logwidth" }
+Handles
+([][]com.sun.star.beans.PropertyValue) {}
+MirroredX
+false
+MirroredY
+false
+Path
+([]com.sun.star.beans.PropertyValue) { { Name = "Coordinates", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeParameterPair) { { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 0 } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "Segments", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeSegment) { { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 3 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "SubViewSize", Handle = (long) 0, Value = (any) { ([]com.sun.star.awt.Size) { { Width = (long) 1, Height = (long) 1 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "TextFrames", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeTextFrame) { { TopLeft = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, BottomRight = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 } } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }
+Type
+"ooxml-non-primitive"
+ViewBox
+(com.sun.star.awt.Rectangle) { X = (long) 0, Y = (long) 0, Width = (long) 0, Height = (long) 0 }
+/* flowChartPunchedCard */
+AdjustmentValues
+([]com.sun.star.drawing.EnhancedCustomShapeAdjustmentValue) {}
+Equations
+([]string) { "logwidth/2", "logheight/2", "logheight", "logwidth", "logheight/5" }
+Handles
+([][]com.sun.star.beans.PropertyValue) {}
+MirroredX
+false
+MirroredY
+false
+Path
+([]com.sun.star.beans.PropertyValue) { { Name = "Coordinates", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeParameterPair) { { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 0 } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "Segments", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeSegment) { { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 4 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "SubViewSize", Handle = (long) 0, Value = (any) { ([]com.sun.star.awt.Size) { { Width = (long) 5, Height = (long) 5 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "TextFrames", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeTextFrame) { { TopLeft = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 } }, BottomRight = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 } } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }
+Type
+"ooxml-non-primitive"
+ViewBox
+(com.sun.star.awt.Rectangle) { X = (long) 0, Y = (long) 0, Width = (long) 0, Height = (long) 0 }
+/* flowChartPunchedTape */
+AdjustmentValues
+([]com.sun.star.drawing.EnhancedCustomShapeAdjustmentValue) {}
+Equations
+([]string) { "logheight*9/10", "logheight*4/5", "logwidth/2", "logheight/10", "logheight/2", "logwidth", "logheight/5", "(10800000)/60000.0", "(-10800000)/60000.0", "(10800000)/60000.0", "(10800000)/60000.0", "(0)/60000.0", "(-10800000)/60000.0", "(0)/60000.0", "(10800000)/60000.0" }
+Handles
+([][]com.sun.star.beans.PropertyValue) {}
+MirroredX
+false
+MirroredY
+false
+Path
+([]com.sun.star.beans.PropertyValue) { { Name = "Coordinates", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeParameterPair) { { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 9 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 10 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 20 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 18 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 11 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 12 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 13 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 14 }, Type = (short) 1 } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "Segments", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeSegment) { { Command = (short) 1, Count = (short) 1 }, { Command = (short) 17, Count = (short) 2 }, { Command = (short) 2, Count = (short) 1 }, { Command = (short) 17, Count = (short) 2 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "SubViewSize", Handle = (long) 0, Value = (any) { ([]com.sun.star.awt.Size) { { Width = (long) 20, Height = (long) 20 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "TextFrames", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeTextFrame) { { TopLeft = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 6 }, Type = (short) 1 } }, BottomRight = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 1 } } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }
+Type
+"ooxml-non-primitive"
+ViewBox
+(com.sun.star.awt.Rectangle) { X = (long) 0, Y = (long) 0, Width = (long) 0, Height = (long) 0 }
+/* flowChartSort */
+AdjustmentValues
+([]com.sun.star.drawing.EnhancedCustomShapeAdjustmentValue) {}
+Equations
+([]string) { "logwidth*3/4", "logheight*3/4", "logwidth/2", "logheight/2", "logheight", "logwidth", "logwidth/4", "logheight/4" }
+Handles
+([][]com.sun.star.beans.PropertyValue) {}
+MirroredX
+false
+MirroredY
+false
+Path
+([]com.sun.star.beans.PropertyValue) { { Name = "Coordinates", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeParameterPair) { { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 0 } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "Segments", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeSegment) { { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 3 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 7, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 }, { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 1 }, { Command = (short) 6, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 }, { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 3 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 6, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "SubViewSize", Handle = (long) 0, Value = (any) { ([]com.sun.star.awt.Size) { { Width = (long) 2, Height = (long) 2 }, { Width = (long) 2, Height = (long) 2 }, { Width = (long) 2, Height = (long) 2 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "TextFrames", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeTextFrame) { { TopLeft = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 6 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7 }, Type = (short) 1 } }, BottomRight = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 1 } } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }
+Type
+"ooxml-non-primitive"
+ViewBox
+(com.sun.star.awt.Rectangle) { X = (long) 0, Y = (long) 0, Width = (long) 0, Height = (long) 0 }
+/* flowChartSummingJunction */
+AdjustmentValues
+([]com.sun.star.drawing.EnhancedCustomShapeAdjustmentValue) {}
+Equations
+([]string) { "logwidth/2", "?0 *cos(pi*(2700000)/10800000)", "logheight/2", "?2 *sin(pi*(2700000)/10800000)", "logwidth/2", "?4 +0-?1 ", "?4 +?1 -0", "logheight/2", "?7 +0-?3 ", "?7 +?3 -0", "logheight", "logwidth", "(10800000)/60000.0", "(5400000)/60000.0", "(16200000)/60000.0", "(5400000)/60000.0", "(0)/60000.0", "(5400000)/60000.0", "(5400000)/60000.0", "(5400000)/60000.0", "(10800000)/60000.0", "(5400000)/60000.0", "(16200000)/60000.0", "(5400000)/60000.0", "(0)/60000.0", "(5400000)/60000.0", "(5400000)/60000.0", "(5400000)/60000.0" }
+Handles
+([][]com.sun.star.beans.PropertyValue) {}
+MirroredX
+false
+MirroredY
+false
+Path
+([]com.sun.star.beans.PropertyValue) { { Name = "Coordinates", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeParameterPair) { { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 12 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 13 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 14 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 15 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 16 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 17 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 18 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 19 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 6 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 9 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 6 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 9 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 20 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 21 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 22 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 23 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 24 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 25 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 26 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 27 }, Type = (short) 1 } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "Segments", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeSegment) { { Command = (short) 1, Count = (short) 1 }, { Command = (short) 17, Count = (short) 4 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 7, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 }, { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 1 }, { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 1 }, { Command = (short) 6, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 }, { Command = (short) 1, Count = (short) 1 }, { Command = (short) 17, Count = (short) 4 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 6, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "TextFrames", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeTextFrame) { { TopLeft = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 1 } }, BottomRight = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 6 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 9 }, Type = (short) 1 } } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }
+Type
+"ooxml-non-primitive"
+ViewBox
+(com.sun.star.awt.Rectangle) { X = (long) 0, Y = (long) 0, Width = (long) 0, Height = (long) 0 }
+/* flowChartTerminator */
+AdjustmentValues
+([]com.sun.star.drawing.EnhancedCustomShapeAdjustmentValue) {}
+Equations
+([]string) { "logwidth*1018/21600", "logwidth*20582/21600", "logheight*3163/21600", "logheight*18437/21600", "logwidth/2", "logheight/2", "logheight", "logwidth", "(16200000)/60000.0", "(10800000)/60000.0", "(5400000)/60000.0", "(10800000)/60000.0" }
+Handles
+([][]com.sun.star.beans.PropertyValue) {}
+MirroredX
+false
+MirroredY
+false
+Path
+([]com.sun.star.beans.PropertyValue) { { Name = "Coordinates", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeParameterPair) { { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3475 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 18125 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3475 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 10800 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 9 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3475 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 21600 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3475 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 10800 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 10 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 11 }, Type = (short) 1 } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "Segments", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeSegment) { { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 1 }, { Command = (short) 17, Count = (short) 1 }, { Command = (short) 2, Count = (short) 1 }, { Command = (short) 17, Count = (short) 1 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "SubViewSize", Handle = (long) 0, Value = (any) { ([]com.sun.star.awt.Size) { { Width = (long) 21600, Height = (long) 21600 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "TextFrames", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeTextFrame) { { TopLeft = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 } }, BottomRight = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 } } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }
+Type
+"ooxml-non-primitive"
+ViewBox
+(com.sun.star.awt.Rectangle) { X = (long) 0, Y = (long) 0, Width = (long) 0, Height = (long) 0 }
+/* foldedCorner */
+AdjustmentValues
+([]com.sun.star.drawing.EnhancedCustomShapeAdjustmentValue) { { Value = (any) { (long) 16667 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE, Name = "adj" } }
+Equations
+([]string) { "if(0-$0 ,0,if(50000-$0 ,$0 ,50000))", "min(logwidth,logheight)", "?1 *?0 /100000", "?2 *1/5", "logwidth+0-?2 ", "?4 +?3 -0", "logheight+0-?2 ", "?6 +?3 -0", "logheight", "logwidth/2", "logheight/2", "logwidth" }
+Handles
+([][]com.sun.star.beans.PropertyValue) { { { Name = "Position", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 1 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeXMaximum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 50000 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeXMinimum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RefX", Handle = (long) 0, Value = (any) { (long) 0 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } } }
+MirroredX
+false
+MirroredY
+false
+Path
+([]com.sun.star.beans.PropertyValue) { { Name = "Coordinates", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeParameterPair) { { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 11 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 11 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 6 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 11 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 6 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 11 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 6 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 11 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 11 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 6 }, Type = (short) 1 } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "Segments", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeSegment) { { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 4 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 7, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 }, { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 2 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 19, Count = (short) 0 }, { Command = (short) 7, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 }, { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 7 }, { Command = (short) 6, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "TextFrames", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeTextFrame) { { TopLeft = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, BottomRight = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 11 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 6 }, Type = (short) 1 } } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }
+Type
+"ooxml-non-primitive"
+ViewBox
+(com.sun.star.awt.Rectangle) { X = (long) 0, Y = (long) 0, Width = (long) 0, Height = (long) 0 }
+/* frame */
+AdjustmentValues
+([]com.sun.star.drawing.EnhancedCustomShapeAdjustmentValue) { { Value = (any) { (long) 12500 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE, Name = "adj1" } }
+Equations
+([]string) { "if(0-$0 ,0,if(50000-$0 ,$0 ,50000))", "min(logwidth,logheight)", "?1 *?0 /100000", "logwidth+0-?2 ", "logheight+0-?2 ", "logwidth/2", "logheight/2", "logheight", "logwidth" }
+Handles
+([][]com.sun.star.beans.PropertyValue) { { { Name = "Position", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeXMaximum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 50000 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeXMinimum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RefX", Handle = (long) 0, Value = (any) { (long) 0 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } } }
+MirroredX
+false
+MirroredY
+false
+Path
+([]com.sun.star.beans.PropertyValue) { { Name = "Coordinates", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeParameterPair) { { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "Segments", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeSegment) { { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 3 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 3 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "TextFrames", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeTextFrame) { { TopLeft = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 } }, BottomRight = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 } } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }
+Type
+"ooxml-non-primitive"
+ViewBox
+(com.sun.star.awt.Rectangle) { X = (long) 0, Y = (long) 0, Width = (long) 0, Height = (long) 0 }
+/* funnel */
+AdjustmentValues
+([]com.sun.star.drawing.EnhancedCustomShapeAdjustmentValue) {}
+Equations
+([]string) { "min(logwidth,logheight)", "?0 *1/20", "logwidth/2", "?2 +0-?1 ", "logheight/4", "?4 +0-?1 ", "?2 *cos(pi*(480000)/10800000)", "?4 *sin(pi*(480000)/10800000)", "(10800000*atan2(?7 ,?6 ))/pi", "?8 *2/1", "10800000+0-?8 ", "10800000+2-0", "10800000+0-2", "?2 *1/4", "?4 *1/4", "?4 *cos(pi*(?10 )/10800000)", "?2 *sin(pi*(?10 )/10800000)", "sqrt(?15 *?15 +?16 *?16 +0*0)", "?2 *?4 /?17 ", "?18 *cos(pi*(?10 )/10800000)", "?18 *sin(pi*(?10 )/10800000)", "logwidth/2", "?21 +?19 -0", "?4 +?20 -0", "?14 *cos(pi*(?8 )/10800000)", "?13 *sin(pi*(?8 )/10800000)", "sqrt(?24 *?24 +?25 *?25 +0*0)", "?13 *?14 /?26 ", "?27 *cos(pi*(?8 )/10800000)", "?27 *sin(pi*(?8 )/10800000)", "?21 +?28 -0", "logheight+0-?14 ", "?31 +?29 -0", "?2 +0-?3 ", "10800000*2/1", "logwidth", "logheight", "(?10 )/60000.0", "(?11 )/60000.0", "(?8 )/60000.0", "(?12 )/60000.0", "(10800000)/60000.0", "(-21600000)/60000.0" }
+Handles
+([][]com.sun.star.beans.PropertyValue) {}
+MirroredX
+false
+MirroredY
+false
+Path
+([]com.sun.star.beans.PropertyValue) { { Name = "Coordinates", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeParameterPair) { { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 22 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 23 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 37 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 38 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 30 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 32 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 13 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 14 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 39 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 40 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 33 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 41 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 42 }, Type = (short) 1 } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "Segments", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeSegment) { { Command = (short) 1, Count = (short) 1 }, { Command = (short) 17, Count = (short) 1 }, { Command = (short) 2, Count = (short) 1 }, { Command = (short) 17, Count = (short) 1 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 1, Count = (short) 1 }, { Command = (short) 17, Count = (short) 1 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "TextFrames", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeTextFrame) { { TopLeft = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, BottomRight = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 35 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 36 }, Type = (short) 1 } } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }
+Type
+"ooxml-non-primitive"
+ViewBox
+(com.sun.star.awt.Rectangle) { X = (long) 0, Y = (long) 0, Width = (long) 0, Height = (long) 0 }
+/* gear6 */
+AdjustmentValues
+([]com.sun.star.drawing.EnhancedCustomShapeAdjustmentValue) { { Value = (any) { (long) 15000 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE, Name = "adj1" }, { Value = (any) { (long) 3526 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE, Name = "adj2" } }
+Equations
+([]string) { "if(0-$0 ,0,if(20000-$0 ,$0 ,20000))", "if(0-$1 ,0,if(5358-$1 ,$1 ,5358))", "min(logwidth,logheight)", "?2 *?0 /100000", "?2 *?1 /100000", "?3 *1/2", "?4 *1/2", "?5 +?6 -0", "logheight/2", "?8 +0-?3 ", "logwidth/2", "?10 +0-?3 ", "?11 +0-?9 ", "if(?12 ,?9 ,?11 )", "(10800000*atan2(?7 ,?13 ))/pi", "19800000+0-?14 ", "19800000+?14 -0", "?11 *cos(pi*(?15 )/10800000)", "?9 *sin(pi*(?15 )/10800000)", "(10800000*atan2(?18 ,?17 ))/pi", "?9 *cos(pi*(?19 )/10800000)", "?11 *sin(pi*(?19 )/10800000)", "sqrt(?20 *?20 +?21 *?21 +0*0)", "?11 *?9 /?22 ", "?23 *cos(pi*(?19 )/10800000)", "?23 *sin(pi*(?19 )/10800000)", "logwidth/2", "?26 +?24 -0", "logheight/2", "?28 +?25 -0", "?11 *cos(pi*(?16 )/10800000)", "?9 *sin(pi*(?16 )/10800000)", "(10800000*atan2(?31 ,?30 ))/pi", "?9 *cos(pi*(?32 )/10800000)", "?11 *sin(pi*(?32 )/10800000)", "sqrt(?33 *?33 +?34 *?34 +0*0)", "?11 *?9 /?35 ", "?36 *cos(pi*(?32 )/10800000)", "?36 *sin(pi*(?32 )/10800000)", "?26 +?37 -0", "?28 +?38 -0", "?27 +0-?39 ", "?29 +0-?40 ", "sqrt(?41 *?41 +?42 *?42 +0*0)", "(10800000*atan2(?41 ,?42 ))/pi", "?4 *sin(pi*(?44 )/10800000)", "?4 *cos(pi*(?44 )/10800000)", "?39 +?45 -0", "?40 +?46 -0", "?27 +0-?45 ", "?29 +0-?46 ", "?3 *sin(pi*(?44 )/10800000)", "?3 *cos(pi*(?44 )/10800000)", "?48 +?51 -0", "?47 +0-?52 ", "?50 +?51 -0", "?49 +0-?52 ", "16200000+?14 -0", "?11 *cos(pi*(?57 )/10800000)", "?9 *sin(pi*(?57 )/10800000)", "(10800000*atan2(?59 ,?58 ))/pi", "?9 *cos(pi*(?60 )/10800000)", "?11 *sin(pi*(?60 )/10800000)", "sqrt(?61 *?61 +?62 *?62 +0*0)", "?11 *?9 /?63 ", "?64 *cos(pi*(?60 )/10800000)", "?64 *sin(pi*(?60 )/10800000)", "?26 +?65 -0", "?28 +?66 -0", "?26 +0-?65 ", "?67 +0-?4 ", "?69 +?4 -0", "?68 +0-?3 ", "?19 +0-?60 ", "1800000+0-?14 ", "1800000+?14 -0", "?11 *cos(pi*(?74 )/10800000)", "?9 *sin(pi*(?74 )/10800000)", "(10800000*atan2(?77 ,?76 ))/pi", "logheight+0-?40 ", "?11 *cos(pi*(?75 )/10800000)", "?9 *sin(pi*(?75 )/10800000)", "(10800000*atan2(?81 ,?80 ))/pi", "logheight+0-?29 ", "logheight+0-?55 ", "logheight+0-?53 ", "?54 ", "?78 +0-?32 ", "5400000+?14 -0", "?11 *cos(pi*(?88 )/10800000)", "?9 *sin(pi*(?88 )/10800000)", "(10800000*atan2(?90 ,?89 ))/pi", "logheight+0-?68 ", "logheight+0-?72 ", "9000000+?14 -0", "?11 *cos(pi*(?94 )/10800000)", "?9 *sin(pi*(?94 )/10800000)", "(10800000*atan2(?96 ,?95 ))/pi", "logwidth+0-?39 ", "logwidth+0-?54 ", "logwidth+0-?56 ", "12600000+?14 -0", "?11 *cos(pi*(?101 )/10800000)", "?9 *sin(pi*(?101 )/10800000)", "(10800000*atan2(?103 ,?102 ))/pi", "logwidth+0-?27 ", "logwidth+0-?56 ", "logwidth+0-?54 ", "(?56 +?54 )/2", "(?55 +?53 )/2", "logheight+0-?109 ", "(logwidth+0)/?108 ", "(?32 )/60000.0", "(?87 )/60000.0", "(?82 )/60000.0", "(?73 )/60000.0", "(?91 )/60000.0", "(?73 )/60000.0", "(?97 )/60000.0", "(?87 )/60000.0", "(?104 )/60000.0", "(?73 )/60000.0", "(?60 )/60000.0", "(?73 )/60000.0" }
+Handles
+([][]com.sun.star.beans.PropertyValue) { { { Name = "Position", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 67 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 68 }, Type = (short) 1 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeYMaximum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 20000 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeYMinimum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RefY", Handle = (long) 0, Value = (any) { (long) 0 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }, { { Name = "Position", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 69 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 68 }, Type = (short) 1 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeXMaximum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5358 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeXMinimum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RefX", Handle = (long) 0, Value = (any) { (long) 1 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } } }
+MirroredX
+false
+MirroredY
+false
+Path
+([]com.sun.star.beans.PropertyValue) { { Name = "Coordinates", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeParameterPair) { { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 27 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 29 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 56 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 55 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 54 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 53 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 39 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 40 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 11 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 9 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 112 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 113 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 54 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 85 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 56 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 84 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 27 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 83 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 11 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 9 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 114 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 115 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 70 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 93 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 71 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 93 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 69 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 92 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 11 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 9 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 116 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 117 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 100 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 84 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 99 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 85 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 98 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 79 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 11 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 9 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 118 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 119 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 107 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 53 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 106 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 55 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 105 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 29 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 11 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 9 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 120 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 121 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 71 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 72 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 70 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 72 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 67 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 68 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 11 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 9 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 122 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 123 }, Type = (short) 1 } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "Segments", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeSegment) { { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 3 }, { Command = (short) 17, Count = (short) 1 }, { Command = (short) 2, Count = (short) 3 }, { Command = (short) 17, Count = (short) 1 }, { Command = (short) 2, Count = (short) 3 }, { Command = (short) 17, Count = (short) 1 }, { Command = (short) 2, Count = (short) 3 }, { Command = (short) 17, Count = (short) 1 }, { Command = (short) 2, Count = (short) 3 }, { Command = (short) 17, Count = (short) 1 }, { Command = (short) 2, Count = (short) 3 }, { Command = (short) 17, Count = (short) 1 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "TextFrames", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeTextFrame) { { TopLeft = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 105 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 29 }, Type = (short) 1 } }, BottomRight = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 27 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 83 }, Type = (short) 1 } } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }
+Type
+"ooxml-non-primitive"
+ViewBox
+(com.sun.star.awt.Rectangle) { X = (long) 0, Y = (long) 0, Width = (long) 0, Height = (long) 0 }
+/* gear9 */
+AdjustmentValues
+([]com.sun.star.drawing.EnhancedCustomShapeAdjustmentValue) { { Value = (any) { (long) 10000 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE, Name = "adj1" }, { Value = (any) { (long) 1763 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE, Name = "adj2" } }
+Equations
+([]string) { "if(0-$0 ,0,if(20000-$0 ,$0 ,20000))", "if(0-$1 ,0,if(2679-$1 ,$1 ,2679))", "min(logwidth,logheight)", "?2 *?0 /100000", "?2 *?1 /100000", "?3 *1/2", "?4 *1/2", "?5 +?6 -0", "logheight/2", "?8 +0-?3 ", "logwidth/2", "?10 +0-?3 ", "?11 +0-?9 ", "if(?12 ,?9 ,?11 )", "(10800000*atan2(?7 ,?13 ))/pi", "18600000+0-?14 ", "18600000+?14 -0", "?11 *cos(pi*(?15 )/10800000)", "?9 *sin(pi*(?15 )/10800000)", "(10800000*atan2(?18 ,?17 ))/pi", "?9 *cos(pi*(?19 )/10800000)", "?11 *sin(pi*(?19 )/10800000)", "sqrt(?20 *?20 +?21 *?21 +0*0)", "?11 *?9 /?22 ", "?23 *cos(pi*(?19 )/10800000)", "?23 *sin(pi*(?19 )/10800000)", "logwidth/2", "?26 +?24 -0", "logheight/2", "?28 +?25 -0", "?11 *cos(pi*(?16 )/10800000)", "?9 *sin(pi*(?16 )/10800000)", "(10800000*atan2(?31 ,?30 ))/pi", "?9 *cos(pi*(?32 )/10800000)", "?11 *sin(pi*(?32 )/10800000)", "sqrt(?33 *?33 +?34 *?34 +0*0)", "?11 *?9 /?35 ", "?36 *cos(pi*(?32 )/10800000)", "?36 *sin(pi*(?32 )/10800000)", "?26 +?37 -0", "?28 +?38 -0", "?27 +0-?39 ", "?29 +0-?40 ", "sqrt(?41 *?41 +?42 *?42 +0*0)", "(10800000*atan2(?41 ,?42 ))/pi", "?4 *sin(pi*(?44 )/10800000)", "?4 *cos(pi*(?44 )/10800000)", "?39 +?45 -0", "?40 +?46 -0", "?27 +0-?45 ", "?29 +0-?46 ", "?3 *sin(pi*(?44 )/10800000)", "?3 *cos(pi*(?44 )/10800000)", "?48 +?51 -0", "?47 +0-?52 ", "?50 +?51 -0", "?49 +0-?52 ", "21000000+0-?14 ", "21000000+?14 -0", "?11 *cos(pi*(?57 )/10800000)", "?9 *sin(pi*(?57 )/10800000)", "(10800000*atan2(?60 ,?59 ))/pi", "?9 *cos(pi*(?61 )/10800000)", "?11 *sin(pi*(?61 )/10800000)", "sqrt(?62 *?62 +?63 *?63 +0*0)", "?11 *?9 /?64 ", "?65 *cos(pi*(?61 )/10800000)", "?65 *sin(pi*(?61 )/10800000)", "?26 +?66 -0", "?28 +?67 -0", "?11 *cos(pi*(?58 )/10800000)", "?9 *sin(pi*(?58 )/10800000)", "(10800000*atan2(?71 ,?70 ))/pi", "?9 *cos(pi*(?72 )/10800000)", "?11 *sin(pi*(?72 )/10800000)", "sqrt(?73 *?73 +?74 *?74 +0*0)", "?11 *?9 /?75 ", "?76 *cos(pi*(?72 )/10800000)", "?76 *sin(pi*(?72 )/10800000)", "?26 +?77 -0", "?28 +?78 -0", "?68 +0-?79 ", "?69 +0-?80 ", "sqrt(?81 *?81 +?82 *?82 +0*0)", "(10800000*atan2(?81 ,?82 ))/pi", "?4 *sin(pi*(?84 )/10800000)", "?4 *cos(pi*(?84 )/10800000)", "?79 +?85 -0", "?80 +?86 -0", "?68 +0-?85 ", "?69 +0-?86 ", "?3 *sin(pi*(?84 )/10800000)", "?3 *cos(pi*(?84 )/10800000)", "?88 +?91 -0", "?87 +0-?92 ", "?90 +?91 -0", "?89 +0-?92 ", "?61 +0-?32 ", "1800000+0-?14 ", "1800000+?14 -0", "?11 *cos(pi*(?98 )/10800000)", "?9 *sin(pi*(?98 )/10800000)", "(10800000*atan2(?101 ,?100 ))/pi", "?9 *cos(pi*(?102 )/10800000)", "?11 *sin(pi*(?102 )/10800000)", "sqrt(?103 *?103 +?104 *?104 +0*0)", "?11 *?9 /?105 ", "?106 *cos(pi*(?102 )/10800000)", "?106 *sin(pi*(?102 )/10800000)", "?26 +?107 -0", "?28 +?108 -0", "?11 *cos(pi*(?99 )/10800000)", "?9 *sin(pi*(?99 )/10800000)", "(10800000*atan2(?112 ,?111 ))/pi", "?9 *cos(pi*(?113 )/10800000)", "?11 *sin(pi*(?113 )/10800000)", "sqrt(?114 *?114 +?115 *?115 +0*0)", "?11 *?9 /?116 ", "?117 *cos(pi*(?113 )/10800000)", "?117 *sin(pi*(?113 )/10800000)", "?26 +?118 -0", "?28 +?119 -0", "?109 +0-?120 ", "?110 +0-?121 ", "sqrt(?122 *?122 +?123 *?123 +0*0)", "(10800000*atan2(?122 ,?123 ))/pi", "?4 *sin(pi*(?125 )/10800000)", "?4 *cos(pi*(?125 )/10800000)", "?120 +?126 -0", "?121 +?127 -0", "?109 +0-?126 ", "?110 +0-?127 ", "?3 *sin(pi*(?125 )/10800000)", "?3 *cos(pi*(?125 )/10800000)", "?129 +?132 -0", "?128 +0-?133 ", "?131 +?132 -0", "?130 +0-?133 ", "?102 +0-?72 ", "4200000+0-?14 ", "4200000+?14 -0", "?11 *cos(pi*(?139 )/10800000)", "?9 *sin(pi*(?139 )/10800000)", "(10800000*atan2(?142 ,?141 ))/pi", "?9 *cos(pi*(?143 )/10800000)", "?11 *sin(pi*(?143 )/10800000)", "sqrt(?144 *?144 +?145 *?145 +0*0)", "?11 *?9 /?146 ", "?147 *cos(pi*(?143 )/10800000)", "?147 *sin(pi*(?143 )/10800000)", "?26 +?148 -0", "?28 +?149 -0", "?11 *cos(pi*(?140 )/10800000)", "?9 *sin(pi*(?140 )/10800000)", "(10800000*atan2(?153 ,?152 ))/pi", "?9 *cos(pi*(?154 )/10800000)", "?11 *sin(pi*(?154 )/10800000)", "sqrt(?155 *?155 +?156 *?156 +0*0)", "?11 *?9 /?157 ", "?158 *cos(pi*(?154 )/10800000)", "?158 *sin(pi*(?154 )/10800000)", "?26 +?159 -0", "?28 +?160 -0", "?150 +0-?161 ", "?151 +0-?162 ", "sqrt(?163 *?163 +?164 *?164 +0*0)", "(10800000*atan2(?163 ,?164 ))/pi", "?4 *sin(pi*(?166 )/10800000)", "?4 *cos(pi*(?166 )/10800000)", "?161 +?167 -0", "?162 +?168 -0", "?150 +0-?167 ", "?151 +0-?168 ", "?3 *sin(pi*(?166 )/10800000)", "?3 *cos(pi*(?166 )/10800000)", "?170 +?173 -0", "?169 +0-?174 ", "?172 +?173 -0", "?171 +0-?174 ", "?143 +0-?113 ", "6600000+0-?14 ", "6600000+?14 -0", "?11 *cos(pi*(?180 )/10800000)", "?9 *sin(pi*(?180 )/10800000)", "(10800000*atan2(?183 ,?182 ))/pi", "?11 *cos(pi*(?181 )/10800000)", "?9 *sin(pi*(?181 )/10800000)", "(10800000*atan2(?186 ,?185 ))/pi", "logwidth+0-?150 ", "logwidth+0-?178 ", "logwidth+0-?176 ", "?184 +0-?154 ", "9000000+?14 -0", "?11 *cos(pi*(?192 )/10800000)", "?9 *sin(pi*(?192 )/10800000)", "(10800000*atan2(?194 ,?193 ))/pi", "logwidth+0-?109 ", "logwidth+0-?137 ", "logwidth+0-?135 ", "11400000+?14 -0", "?11 *cos(pi*(?199 )/10800000)", "?9 *sin(pi*(?199 )/10800000)", "(10800000*atan2(?201 ,?200 ))/pi", "logwidth+0-?68 ", "logwidth+0-?96 ", "logwidth+0-?94 ", "13800000+?14 -0", "?11 *cos(pi*(?206 )/10800000)", "?9 *sin(pi*(?206 )/10800000)", "(10800000*atan2(?208 ,?207 ))/pi", "logwidth+0-?39 ", "logwidth+0-?27 ", "logwidth+0-?56 ", "logwidth+0-?54 ", "16200000+0-?14 ", "16200000+?14 -0", "?11 *cos(pi*(?215 )/10800000)", "?9 *sin(pi*(?215 )/10800000)", "(10800000*atan2(?217 ,?216 ))/pi", "?9 *cos(pi*(?218 )/10800000)", "?11 *sin(pi*(?218 )/10800000)", "sqrt(?219 *?219 +?220 *?220 +0*0)", "?11 *?9 /?221 ", "?222 *cos(pi*(?218 )/10800000)", "?222 *sin(pi*(?218 )/10800000)", "?26 +?223 -0", "?28 +?224 -0", "?11 *cos(pi*(?214 )/10800000)", "?9 *sin(pi*(?214 )/10800000)", "(10800000*atan2(?228 ,?227 ))/pi", "?26 +0-?223 ", "?225 +0-?4 ", "?230 +?4 -0", "?226 +0-?3 ", "?229 +0-?209 ", "(?56 +?54 )/2", "(?55 +?53 )/2", "(?96 +?94 )/2", "(?95 +?93 )/2", "(?137 +?135 )/2", "(?136 +?134 )/2", "(?178 +?176 )/2", "(?177 +?175 )/2", "(logwidth+0)/?241 ", "(logwidth+0)/?239 ", "(logwidth+0)/?237 ", "(logwidth+0)/?235 ", "(?32 )/60000.0", "(?97 )/60000.0", "(?72 )/60000.0", "(?138 )/60000.0", "(?113 )/60000.0", "(?179 )/60000.0", "(?154 )/60000.0", "(?191 )/60000.0", "(?187 )/60000.0", "(?179 )/60000.0", "(?195 )/60000.0", "(?138 )/60000.0", "(?202 )/60000.0", "(?97 )/60000.0", "(?209 )/60000.0", "(?234 )/60000.0", "(?218 )/60000.0", "(?234 )/60000.0" }
+Handles
+([][]com.sun.star.beans.PropertyValue) { { { Name = "Position", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 225 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 226 }, Type = (short) 1 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeYMaximum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 20000 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeYMinimum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RefY", Handle = (long) 0, Value = (any) { (long) 0 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }, { { Name = "Position", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 230 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 226 }, Type = (short) 1 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeXMaximum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2679 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeXMinimum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RefX", Handle = (long) 0, Value = (any) { (long) 1 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } } }
+MirroredX
+false
+MirroredY
+false
+Path
+([]com.sun.star.beans.PropertyValue) { { Name = "Coordinates", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeParameterPair) { { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 27 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 29 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 56 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 55 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 54 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 53 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 39 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 40 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 11 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 9 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 247 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 248 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 96 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 95 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 94 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 93 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 79 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 80 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 11 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 9 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 249 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 250 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 137 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 136 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 135 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 134 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 120 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 121 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 11 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 9 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 251 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 252 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 178 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 177 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 176 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 175 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 161 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 162 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 11 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 9 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 253 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 254 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 190 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 175 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 189 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 177 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 188 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 151 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 11 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 9 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 255 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 256 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 198 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 134 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 197 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 136 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 196 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 110 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 11 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 9 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 257 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 258 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 205 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 93 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 204 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 95 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 203 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 69 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 11 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 9 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 259 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 260 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 213 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 53 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 212 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 55 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 211 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 29 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 11 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 9 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 261 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 262 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 232 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 233 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 231 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 233 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 225 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 226 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 11 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 9 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 263 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 264 }, Type = (short) 1 } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "Segments", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeSegment) { { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 3 }, { Command = (short) 17, Count = (short) 1 }, { Command = (short) 2, Count = (short) 3 }, { Command = (short) 17, Count = (short) 1 }, { Command = (short) 2, Count = (short) 3 }, { Command = (short) 17, Count = (short) 1 }, { Command = (short) 2, Count = (short) 3 }, { Command = (short) 17, Count = (short) 1 }, { Command = (short) 2, Count = (short) 3 }, { Command = (short) 17, Count = (short) 1 }, { Command = (short) 2, Count = (short) 3 }, { Command = (short) 17, Count = (short) 1 }, { Command = (short) 2, Count = (short) 3 }, { Command = (short) 17, Count = (short) 1 }, { Command = (short) 2, Count = (short) 3 }, { Command = (short) 17, Count = (short) 1 }, { Command = (short) 2, Count = (short) 3 }, { Command = (short) 17, Count = (short) 1 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "TextFrames", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeTextFrame) { { TopLeft = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 210 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 40 }, Type = (short) 1 } }, BottomRight = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 39 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 121 }, Type = (short) 1 } } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }
+Type
+"ooxml-non-primitive"
+ViewBox
+(com.sun.star.awt.Rectangle) { X = (long) 0, Y = (long) 0, Width = (long) 0, Height = (long) 0 }
+/* halfFrame */
+AdjustmentValues
+([]com.sun.star.drawing.EnhancedCustomShapeAdjustmentValue) { { Value = (any) { (long) 33333 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE, Name = "adj1" }, { Value = (any) { (long) 33333 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE, Name = "adj2" } }
+Equations
+([]string) { "min(logwidth,logheight)", "100000*logwidth/?0 ", "if(0-$1 ,0,if(?1 -$1 ,$1 ,?1 ))", "?0 *?2 /100000", "logheight*?3 /logwidth", "logheight+0-?4 ", "100000*?5 /?0 ", "if(0-$0 ,0,if(?6 -$0 ,$0 ,?6 ))", "?0 *?7 /100000", "?8 *logwidth/logheight", "logwidth+0-?9 ", "?3 *logheight/logwidth", "logheight+0-?11 ", "?3 *1/2", "(?12 +logheight)/2", "(?10 +logwidth)/2", "?8 *1/2", "logheight/2", "logwidth/2", "logwidth", "logheight" }
+Handles
+([][]com.sun.star.beans.PropertyValue) { { { Name = "Position", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 1 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeYMaximum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 6 }, Type = (short) 1 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeYMinimum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RefY", Handle = (long) 0, Value = (any) { (long) 0 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }, { { Name = "Position", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeXMaximum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 1 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeXMinimum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RefX", Handle = (long) 0, Value = (any) { (long) 1 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } } }
+MirroredX
+false
+MirroredY
+false
+Path
+([]com.sun.star.beans.PropertyValue) { { Name = "Coordinates", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeParameterPair) { { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 19 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 10 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 12 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 20 }, Type = (short) 1 } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "Segments", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeSegment) { { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 5 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "TextFrames", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeTextFrame) { { TopLeft = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, BottomRight = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 19 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 20 }, Type = (short) 1 } } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }
+Type
+"ooxml-non-primitive"
+ViewBox
+(com.sun.star.awt.Rectangle) { X = (long) 0, Y = (long) 0, Width = (long) 0, Height = (long) 0 }
+/* heart */
+AdjustmentValues
+([]com.sun.star.drawing.EnhancedCustomShapeAdjustmentValue) {}
+Equations
+([]string) { "logwidth*49/48", "logwidth*10/48", "logwidth/2", "?2 +0-?0 ", "?2 +0-?1 ", "?2 +?1 -0", "?2 +?0 -0", "logheight/3", "0+0-?7 ", "logwidth*1/6", "logwidth*5/6", "logheight*2/3", "logheight/4", "logheight" }
+Handles
+([][]com.sun.star.beans.PropertyValue) {}
+MirroredX
+false
+MirroredY
+false
+Path
+([]com.sun.star.beans.PropertyValue) { { Name = "Coordinates", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeParameterPair) { { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 12 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 6 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 12 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 13 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 12 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 12 }, Type = (short) 1 } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "Segments", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeSegment) { { Command = (short) 1, Count = (short) 1 }, { Command = (short) 3, Count = (short) 2 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "TextFrames", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeTextFrame) { { TopLeft = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 9 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 12 }, Type = (short) 1 } }, BottomRight = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 10 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 11 }, Type = (short) 1 } } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }
+Type
+"ooxml-non-primitive"
+ViewBox
+(com.sun.star.awt.Rectangle) { X = (long) 0, Y = (long) 0, Width = (long) 0, Height = (long) 0 }
+/* heptagon */
+AdjustmentValues
+([]com.sun.star.drawing.EnhancedCustomShapeAdjustmentValue) { { Value = (any) { (long) 102572 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE, Name = "hf" }, { Value = (any) { (long) 105210 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE, Name = "vf" } }
+Equations
+([]string) { "logwidth/2", "?0 *$0 /100000", "logheight/2", "?2 *$1 /100000", "logheight/2", "?4 *$1 /100000", "?1 *97493/100000", "?1 *78183/100000", "?1 *43388/100000", "?3 *62349/100000", "?3 *22252/100000", "?3 *90097/100000", "logwidth/2", "?12 +0-?6 ", "?12 +0-?7 ", "?12 +0-?8 ", "?12 +?8 -0", "?12 +?7 -0", "?12 +?6 -0", "?5 +0-?9 ", "?5 +?10 -0", "?5 +?11 -0", "logheight+0-?19 " }
+Handles
+([][]com.sun.star.beans.PropertyValue) {}
+MirroredX
+false
+MirroredY
+false
+Path
+([]com.sun.star.beans.PropertyValue) { { Name = "Coordinates", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeParameterPair) { { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 13 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 20 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 14 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 19 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 12 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 17 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 19 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 18 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 20 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 16 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 21 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 15 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 21 }, Type = (short) 1 } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "GluePoints", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeParameterPair) { { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 17 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 19 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 18 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 20 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 16 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 21 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 15 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 21 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 13 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 20 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 14 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 19 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 12 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "Segments", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeSegment) { { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 6 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "TextFrames", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeTextFrame) { { TopLeft = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 14 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 19 }, Type = (short) 1 } }, BottomRight = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 17 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 22 }, Type = (short) 1 } } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }
+Type
+"ooxml-non-primitive"
+ViewBox
+(com.sun.star.awt.Rectangle) { X = (long) 0, Y = (long) 0, Width = (long) 0, Height = (long) 0 }
+/* hexagon */
+AdjustmentValues
+([]com.sun.star.drawing.EnhancedCustomShapeAdjustmentValue) { { Value = (any) { (long) 25000 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE, Name = "adj" }, { Value = (any) { (long) 115470 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE, Name = "vf" } }
+Equations
+([]string) { "min(logwidth,logheight)", "50000*logwidth/?0 ", "if(0-$0 ,0,if(?1 -$0 ,$0 ,?1 ))", "logheight/2", "?3 *$1 /100000", "?0 *?2 /100000", "logwidth+0-?5 ", "?4 *sin(pi*(3600000)/10800000)", "logheight/2", "?8 +0-?7 ", "?8 +?7 -0", "?1 *-1/2", "?2 +?11 -0", "if(?12 ,4,2)", "if(?12 ,3,2)", "if(?12 ,?11 ,0)", "(?2 +?15 )/?11 ", "?16 *?14 /-1", "?13 +?17 -0", "logwidth*?18 /24", "logheight*?18 /24", "logwidth+0-?19 ", "logheight+0-?20 ", "logwidth" }
+Handles
+([][]com.sun.star.beans.PropertyValue) { { { Name = "Position", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeXMaximum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 1 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeXMinimum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RefX", Handle = (long) 0, Value = (any) { (long) 0 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } } }
+MirroredX
+false
+MirroredY
+false
+Path
+([]com.sun.star.beans.PropertyValue) { { Name = "Coordinates", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeParameterPair) { { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 9 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 6 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 9 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 23 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 6 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 10 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 10 }, Type = (short) 1 } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "GluePoints", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeParameterPair) { { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 23 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 6 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 10 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 10 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 9 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 6 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 9 }, Type = (short) 1 } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "Segments", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeSegment) { { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 5 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "TextFrames", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeTextFrame) { { TopLeft = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 19 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 20 }, Type = (short) 1 } }, BottomRight = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 21 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 22 }, Type = (short) 1 } } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }
+Type
+"ooxml-non-primitive"
+ViewBox
+(com.sun.star.awt.Rectangle) { X = (long) 0, Y = (long) 0, Width = (long) 0, Height = (long) 0 }
+/* homePlate */
+AdjustmentValues
+([]com.sun.star.drawing.EnhancedCustomShapeAdjustmentValue) { { Value = (any) { (long) 50000 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE, Name = "adj" } }
+Equations
+([]string) { "min(logwidth,logheight)", "100000*logwidth/?0 ", "if(0-$0 ,0,if(?1 -$0 ,$0 ,?1 ))", "?0 *?2 /100000", "logwidth+0-?3 ", "(?4 +logwidth)/2", "?4 *1/2", "logheight/2", "logheight", "logwidth" }
+Handles
+([][]com.sun.star.beans.PropertyValue) { { { Name = "Position", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeXMaximum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 1 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeXMinimum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RefX", Handle = (long) 0, Value = (any) { (long) 0 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } } }
+MirroredX
+false
+MirroredY
+false
+Path
+([]com.sun.star.beans.PropertyValue) { { Name = "Coordinates", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeParameterPair) { { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 9 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 1 } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "Segments", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeSegment) { { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 4 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "TextFrames", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeTextFrame) { { TopLeft = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, BottomRight = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 1 } } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }
+Type
+"ooxml-non-primitive"
+ViewBox
+(com.sun.star.awt.Rectangle) { X = (long) 0, Y = (long) 0, Width = (long) 0, Height = (long) 0 }
+/* horizontalScroll */
+AdjustmentValues
+([]com.sun.star.drawing.EnhancedCustomShapeAdjustmentValue) { { Value = (any) { (long) 12500 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE, Name = "adj" } }
+Equations
+([]string) { "if(0-$0 ,0,if(25000-$0 ,$0 ,25000))", "min(logwidth,logheight)", "?1 *?0 /100000", "?2 *1/2", "?2 *1/4", "?2 +?3 -0", "?2 +?2 -0", "logheight+0-?2 ", "logheight+0-?3 ", "?7 +0-?3 ", "logwidth+0-?2 ", "logwidth+0-?3 ", "logwidth/2", "logheight/2", "logwidth", "(0)/60000.0", "(5400000)/60000.0", "(0)/60000.0", "(10800000)/60000.0", "(16200000)/60000.0", "(-5400000)/60000.0", "(10800000)/60000.0", "(-10800000)/60000.0", "(5400000)/60000.0", "(-5400000)/60000.0", "(5400000)/60000.0", "(-5400000)/60000.0", "(0)/60000.0", "(-10800000)/60000.0", "(5400000)/60000.0", "(-5400000)/60000.0", "(0)/60000.0", "(-10800000)/60000.0", "(5400000)/60000.0", "(-16200000)/60000.0", "(10800000)/60000.0", "(-10800000)/60000.0", "(10800000)/60000.0", "(5400000)/60000.0", "(10800000)/60000.0", "(10800000)/60000.0", "(0)/60000.0", "(5400000)/60000.0", "(0)/60000.0", "(10800000)/60000.0", "(5400000)/60000.0", "(-5400000)/60000.0", "(0)/60000.0", "(10800000)/60000.0", "(10800000)/60000.0", "(10800000)/60000.0", "(0)/60000.0", "(10800000)/60000.0" }
+Handles
+([][]com.sun.star.beans.PropertyValue) { { { Name = "Position", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeXMaximum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 25000 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeXMinimum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RefX", Handle = (long) 0, Value = (any) { (long) 0 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } } }
+MirroredX
+false
+MirroredY
+false
+Path
+([]com.sun.star.beans.PropertyValue) { { Name = "Coordinates", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeParameterPair) { { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 14 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 15 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 16 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 11 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 17 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 18 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 10 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 19 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 20 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 21 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 22 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 11 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 23 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 24 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 6 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 25 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 26 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 27 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 28 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 6 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 29 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 30 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 31 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 32 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 11 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 33 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 34 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 35 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 36 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 37 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 38 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 10 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 10 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 39 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 40 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 14 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 9 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 41 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 42 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 43 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 44 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 10 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 11 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 45 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 46 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 11 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 11 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 47 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 48 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 6 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 49 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 50 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 51 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 52 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7 }, Type = (short) 1 } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "Segments", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeSegment) { { Command = (short) 1, Count = (short) 1 }, { Command = (short) 17, Count = (short) 1 }, { Command = (short) 2, Count = (short) 1 }, { Command = (short) 17, Count = (short) 1 }, { Command = (short) 2, Count = (short) 2 }, { Command = (short) 17, Count = (short) 1 }, { Command = (short) 2, Count = (short) 1 }, { Command = (short) 17, Count = (short) 1 }, { Command = (short) 2, Count = (short) 2 }, { Command = (short) 17, Count = (short) 1 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 1, Count = (short) 1 }, { Command = (short) 17, Count = (short) 2 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 7, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 }, { Command = (short) 1, Count = (short) 1 }, { Command = (short) 17, Count = (short) 2 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 1, Count = (short) 1 }, { Command = (short) 17, Count = (short) 2 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 19, Count = (short) 0 }, { Command = (short) 7, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 }, { Command = (short) 1, Count = (short) 1 }, { Command = (short) 17, Count = (short) 1 }, { Command = (short) 2, Count = (short) 2 }, { Command = (short) 17, Count = (short) 1 }, { Command = (short) 2, Count = (short) 1 }, { Command = (short) 17, Count = (short) 1 }, { Command = (short) 2, Count = (short) 2 }, { Command = (short) 17, Count = (short) 1 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 1 }, { Command = (short) 17, Count = (short) 1 }, { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 1 }, { Command = (short) 17, Count = (short) 1 }, { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 1 }, { Command = (short) 17, Count = (short) 2 }, { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 1 }, { Command = (short) 6, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "TextFrames", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeTextFrame) { { TopLeft = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 } }, BottomRight = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 11 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7 }, Type = (short) 1 } } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }
+Type
+"ooxml-non-primitive"
+ViewBox
+(com.sun.star.awt.Rectangle) { X = (long) 0, Y = (long) 0, Width = (long) 0, Height = (long) 0 }
+/* irregularSeal1 */
+AdjustmentValues
+([]com.sun.star.drawing.EnhancedCustomShapeAdjustmentValue) {}
+Equations
+([]string) { "logwidth*4627/21600", "logwidth*8485/21600", "logwidth*16702/21600", "logwidth*14522/21600", "logheight*6320/21600", "logheight*8615/21600", "logheight*13937/21600", "logheight*13290/21600", "logheight", "logwidth" }
+Handles
+([][]com.sun.star.beans.PropertyValue) {}
+MirroredX
+false
+MirroredY
+false
+Path
+([]com.sun.star.beans.PropertyValue) { { Name = "Coordinates", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeParameterPair) { { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 10800 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5800 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 14522 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 14155 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5325 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 18380 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4457 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 16702 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7315 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 21097 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8137 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 17607 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 10475 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 21600 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 13290 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 16837 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 12942 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 18145 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 18095 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 14020 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 14457 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 13247 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 19737 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 10532 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 14935 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8485 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 21600 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7715 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 15627 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4762 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 17617 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5667 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 13937 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 135 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 14587 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3722 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 11775 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8615 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4627 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7617 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 370 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2295 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7312 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 6320 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8352 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2295 }, Type = (short) 0 } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "Segments", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeSegment) { { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 23 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "SubViewSize", Handle = (long) 0, Value = (any) { ([]com.sun.star.awt.Size) { { Width = (long) 21600, Height = (long) 21600 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "TextFrames", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeTextFrame) { { TopLeft = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 } }, BottomRight = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 6 }, Type = (short) 1 } } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }
+Type
+"ooxml-non-primitive"
+ViewBox
+(com.sun.star.awt.Rectangle) { X = (long) 0, Y = (long) 0, Width = (long) 0, Height = (long) 0 }
+/* irregularSeal2 */
+AdjustmentValues
+([]com.sun.star.drawing.EnhancedCustomShapeAdjustmentValue) {}
+Equations
+([]string) { "logwidth*9722/21600", "logwidth*5372/21600", "logwidth*11612/21600", "logwidth*14640/21600", "logheight*1887/21600", "logheight*6382/21600", "logheight*12877/21600", "logheight*19712/21600", "logheight*18842/21600", "logheight*15935/21600", "logheight*6645/21600", "logwidth" }
+Handles
+([][]com.sun.star.beans.PropertyValue) {}
+MirroredX
+false
+MirroredY
+false
+Path
+([]com.sun.star.beans.PropertyValue) { { Name = "Coordinates", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeParameterPair) { { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 11462 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4342 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 14790 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 14525 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5777 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 18007 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3172 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 16380 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 6532 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 21600 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 6645 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 16985 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 9402 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 18270 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 11290 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 16380 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 12310 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 18877 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 15632 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 14640 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 14350 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 14942 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 17370 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 12180 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 15935 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 11612 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 18842 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 9872 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 17370 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8700 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 19712 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7527 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 18125 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4917 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 21600 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4805 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 18240 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1285 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 17825 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3330 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 15370 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 12877 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3935 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 11592 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1172 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8270 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5372 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7817 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4502 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3625 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8550 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 6382 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 9722 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1887 }, Type = (short) 0 } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "Segments", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeSegment) { { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 27 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "SubViewSize", Handle = (long) 0, Value = (any) { ([]com.sun.star.awt.Size) { { Width = (long) 21600, Height = (long) 21600 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "TextFrames", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeTextFrame) { { TopLeft = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 1 } }, BottomRight = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 9 }, Type = (short) 1 } } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }
+Type
+"ooxml-non-primitive"
+ViewBox
+(com.sun.star.awt.Rectangle) { X = (long) 0, Y = (long) 0, Width = (long) 0, Height = (long) 0 }
+/* leftArrow */
+AdjustmentValues
+([]com.sun.star.drawing.EnhancedCustomShapeAdjustmentValue) { { Value = (any) { (long) 50000 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE, Name = "adj1" }, { Value = (any) { (long) 50000 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE, Name = "adj2" } }
+Equations
+([]string) { "min(logwidth,logheight)", "100000*logwidth/?0 ", "if(0-$0 ,0,if(100000-$0 ,$0 ,100000))", "if(0-$1 ,0,if(?1 -$1 ,$1 ,?1 ))", "?0 *?3 /100000", "0+?4 -0", "logheight*?2 /200000", "logheight/2", "?7 +0-?6 ", "?7 +?6 -0", "logheight/2", "?8 *?4 /?10 ", "?5 +0-?11 ", "logwidth", "logheight" }
+Handles
+([][]com.sun.star.beans.PropertyValue) { { { Name = "Position", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 13 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 1 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeYMaximum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 100000 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeYMinimum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RefY", Handle = (long) 0, Value = (any) { (long) 0 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }, { { Name = "Position", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeXMaximum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 1 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeXMinimum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RefX", Handle = (long) 0, Value = (any) { (long) 1 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } } }
+MirroredX
+false
+MirroredY
+false
+Path
+([]com.sun.star.beans.PropertyValue) { { Name = "Coordinates", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeParameterPair) { { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 13 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 13 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 9 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 9 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 14 }, Type = (short) 1 } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "Segments", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeSegment) { { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 6 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "TextFrames", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeTextFrame) { { TopLeft = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 12 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 1 } }, BottomRight = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 13 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 9 }, Type = (short) 1 } } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }
+Type
+"ooxml-non-primitive"
+ViewBox
+(com.sun.star.awt.Rectangle) { X = (long) 0, Y = (long) 0, Width = (long) 0, Height = (long) 0 }
+/* leftArrowCallout */
+AdjustmentValues
+([]com.sun.star.drawing.EnhancedCustomShapeAdjustmentValue) { { Value = (any) { (long) 25000 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE, Name = "adj1" }, { Value = (any) { (long) 25000 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE, Name = "adj2" }, { Value = (any) { (long) 25000 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE, Name = "adj3" }, { Value = (any) { (long) 64977 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE, Name = "adj4" } }
+Equations
+([]string) { "min(logwidth,logheight)", "50000*logheight/?0 ", "if(0-$1 ,0,if(?1 -$1 ,$1 ,?1 ))", "?2 *2/1", "if(0-$0 ,0,if(?3 -$0 ,$0 ,?3 ))", "100000*logwidth/?0 ", "if(0-$2 ,0,if(?5 -$2 ,$2 ,?5 ))", "?6 *?0 /logwidth", "100000+0-?7 ", "if(0-$3 ,0,if(?8 -$3 ,$3 ,?8 ))", "?0 *?2 /100000", "?0 *?4 /200000", "logheight/2", "?12 +0-?10 ", "?12 +0-?11 ", "?12 +?11 -0", "?12 +?10 -0", "?0 *?6 /100000", "logwidth*?9 /100000", "logwidth+0-?18 ", "(?19 +logwidth)/2", "logheight", "logwidth" }
+Handles
+([][]com.sun.star.beans.PropertyValue) { { { Name = "Position", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 17 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 14 }, Type = (short) 1 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeYMaximum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeYMinimum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RefY", Handle = (long) 0, Value = (any) { (long) 0 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }, { { Name = "Position", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 13 }, Type = (short) 1 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeYMaximum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 1 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeYMinimum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RefY", Handle = (long) 0, Value = (any) { (long) 1 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }, { { Name = "Position", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 17 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeXMaximum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 1 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeXMinimum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RefX", Handle = (long) 0, Value = (any) { (long) 2 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }, { { Name = "Position", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 19 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 21 }, Type = (short) 1 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeXMaximum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 1 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeXMinimum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RefX", Handle = (long) 0, Value = (any) { (long) 3 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } } }
+MirroredX
+false
+MirroredY
+false
+Path
+([]com.sun.star.beans.PropertyValue) { { Name = "Coordinates", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeParameterPair) { { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 12 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 17 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 13 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 17 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 14 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 19 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 14 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 19 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 22 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 22 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 21 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 19 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 21 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 19 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 15 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 17 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 15 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 17 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 16 }, Type = (short) 1 } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "Segments", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeSegment) { { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 10 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "TextFrames", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeTextFrame) { { TopLeft = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 19 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, BottomRight = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 22 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 21 }, Type = (short) 1 } } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }
+Type
+"ooxml-non-primitive"
+ViewBox
+(com.sun.star.awt.Rectangle) { X = (long) 0, Y = (long) 0, Width = (long) 0, Height = (long) 0 }
+/* leftBrace */
+AdjustmentValues
+([]com.sun.star.drawing.EnhancedCustomShapeAdjustmentValue) { { Value = (any) { (long) 8333 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE, Name = "adj1" }, { Value = (any) { (long) 50000 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE, Name = "adj2" } }
+Equations
+([]string) { "if(0-$1 ,0,if(100000-$1 ,$1 ,100000))", "100000+0-?0 ", "min(?1 ,?0 )", "?2 *1/2", "min(logwidth,logheight)", "?3 *logheight/?4 ", "if(0-$0 ,0,if(?5 -$0 ,$0 ,?5 ))", "?4 *?6 /100000", "logheight*?0 /100000", "?8 +?7 -0", "logwidth/2", "?10 *cos(pi*(2700000)/10800000)", "?7 *sin(pi*(2700000)/10800000)", "logwidth+0-?11 ", "?7 +0-?12 ", "logheight+?12 -?7 ", "logwidth/2", "logwidth", "logheight", "(5400000)/60000.0", "(5400000)/60000.0", "(0)/60000.0", "(-5400000)/60000.0", "(5400000)/60000.0", "(-5400000)/60000.0", "(10800000)/60000.0", "(5400000)/60000.0", "(5400000)/60000.0", "(5400000)/60000.0", "(0)/60000.0", "(-5400000)/60000.0", "(5400000)/60000.0", "(-5400000)/60000.0", "(10800000)/60000.0", "(5400000)/60000.0" }
+Handles
+([][]com.sun.star.beans.PropertyValue) { { { Name = "Position", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 16 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7 }, Type = (short) 1 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeYMaximum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 1 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeYMinimum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RefY", Handle = (long) 0, Value = (any) { (long) 0 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }, { { Name = "Position", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 1 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeYMaximum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 100000 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeYMinimum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RefY", Handle = (long) 0, Value = (any) { (long) 1 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } } }
+MirroredX
+false
+MirroredY
+false
+Path
+([]com.sun.star.beans.PropertyValue) { { Name = "Coordinates", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeParameterPair) { { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 17 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 18 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 10 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 19 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 20 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 16 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 9 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 10 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 21 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 22 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 10 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 23 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 24 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 16 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 10 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 25 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 26 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 17 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 18 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 10 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 27 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 28 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 16 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 9 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 10 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 29 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 30 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 10 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 31 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 32 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 16 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 10 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 33 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 34 }, Type = (short) 1 } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "Segments", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeSegment) { { Command = (short) 1, Count = (short) 1 }, { Command = (short) 17, Count = (short) 1 }, { Command = (short) 2, Count = (short) 1 }, { Command = (short) 17, Count = (short) 2 }, { Command = (short) 2, Count = (short) 1 }, { Command = (short) 17, Count = (short) 1 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 7, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 }, { Command = (short) 1, Count = (short) 1 }, { Command = (short) 17, Count = (short) 1 }, { Command = (short) 2, Count = (short) 1 }, { Command = (short) 17, Count = (short) 2 }, { Command = (short) 2, Count = (short) 1 }, { Command = (short) 17, Count = (short) 1 }, { Command = (short) 6, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "TextFrames", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeTextFrame) { { TopLeft = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 13 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 14 }, Type = (short) 1 } }, BottomRight = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 17 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 15 }, Type = (short) 1 } } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }
+Type
+"ooxml-non-primitive"
+ViewBox
+(com.sun.star.awt.Rectangle) { X = (long) 0, Y = (long) 0, Width = (long) 0, Height = (long) 0 }
+/* leftBracket */
+AdjustmentValues
+([]com.sun.star.drawing.EnhancedCustomShapeAdjustmentValue) { { Value = (any) { (long) 8333 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE, Name = "adj" } }
+Equations
+([]string) { "min(logwidth,logheight)", "50000*logheight/?0 ", "if(0-$0 ,0,if(?1 -$0 ,$0 ,?1 ))", "?0 *?2 /100000", "logheight+0-?3 ", "logwidth*cos(pi*(2700000)/10800000)", "?3 *sin(pi*(2700000)/10800000)", "logwidth+0-?5 ", "?3 +0-?6 ", "logheight+?6 -?3 ", "logwidth", "logheight/2", "logheight", "logwidth", "(5400000)/60000.0", "(5400000)/60000.0", "(10800000)/60000.0", "(5400000)/60000.0", "(5400000)/60000.0", "(5400000)/60000.0", "(10800000)/60000.0", "(5400000)/60000.0" }
+Handles
+([][]com.sun.star.beans.PropertyValue) { { { Name = "Position", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeYMaximum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 1 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeYMinimum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RefY", Handle = (long) 0, Value = (any) { (long) 0 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } } }
+MirroredX
+false
+MirroredY
+false
+Path
+([]com.sun.star.beans.PropertyValue) { { Name = "Coordinates", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeParameterPair) { { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 10 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 12 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 13 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 14 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 15 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 13 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 16 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 17 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 10 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 12 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 13 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 18 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 19 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 13 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 20 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 21 }, Type = (short) 1 } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "Segments", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeSegment) { { Command = (short) 1, Count = (short) 1 }, { Command = (short) 17, Count = (short) 1 }, { Command = (short) 2, Count = (short) 1 }, { Command = (short) 17, Count = (short) 1 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 7, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 }, { Command = (short) 1, Count = (short) 1 }, { Command = (short) 17, Count = (short) 1 }, { Command = (short) 2, Count = (short) 1 }, { Command = (short) 17, Count = (short) 1 }, { Command = (short) 6, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "TextFrames", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeTextFrame) { { TopLeft = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 1 } }, BottomRight = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 10 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 9 }, Type = (short) 1 } } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }
+Type
+"ooxml-non-primitive"
+ViewBox
+(com.sun.star.awt.Rectangle) { X = (long) 0, Y = (long) 0, Width = (long) 0, Height = (long) 0 }
+/* leftCircularArrow */
+AdjustmentValues
+([]com.sun.star.drawing.EnhancedCustomShapeAdjustmentValue) { { Value = (any) { (long) 12500 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE, Name = "adj1" }, { Value = (any) { (long) -1142319 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE, Name = "adj2" }, { Value = (any) { (long) 1142319 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE, Name = "adj3" }, { Value = (any) { (long) 10800000 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE, Name = "adj4" }, { Value = (any) { (long) 12500 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE, Name = "adj5" } }
+Equations
+([]string) { "if(0-$4 ,0,if(25000-$4 ,$4 ,25000))", "?0 *2/1", "if(0-$0 ,0,if(?1 -$0 ,$0 ,?1 ))", "if(1-$2 ,1,if(21599999-$2 ,$2 ,21599999))", "if(0-$3 ,0,if(21599999-$3 ,$3 ,21599999))", "min(logwidth,logheight)", "?5 *?2 /100000", "?5 *?0 /100000", "?6 *1/2", "logwidth/2", "?9 +?8 -?7 ", "logheight/2", "?11 +?8 -?7 ", "?10 +0-?6 ", "?12 +0-?6 ", "?13 +?8 -0", "?14 +?8 -0", "?15 *sin(pi*(?3 )/10800000)", "?16 *cos(pi*(?3 )/10800000)", "?15 *(cos(atan2(?17 ,?18 )))", "?16 *(sin(atan2(?17 ,?18 )))", "logwidth/2", "?21 +?19 -0", "logheight/2", "?23 +?20 -0", "min(?13 ,?14 )", "?19 *?19 /1", "?20 *?20 /1", "?25 *?25 /1", "?26 +0-?28 ", "?27 +0-?28 ", "?29 *?30 /?26 ", "?31 *1/?27 ", "1+0-?32 ", "sqrt(?33 )", "?29 *1/?19 ", "?35 *1/?20 ", "(1+?34 )/?36 ", "(10800000*atan2(?37 ,1))/pi", "?38 +21600000-0", "if(?38 ,?38 ,?39 )", "?40 +0-?3 ", "?41 +21600000-0", "if(?41 ,?41 ,?42 )", "?43 +0-10800000", "?43 +0-21600000", "if(?44 ,?45 ,?43 )", "abs(?46 )", "?47 *-1/1", "abs($1 )", "?49 *-1/1", "if(?48 -?50 ,?48 ,if(0-?50 ,?50 ,0))", "?3 +?51 -0", "?15 *sin(pi*(?52 )/10800000)", "?16 *cos(pi*(?52 )/10800000)", "?15 *(cos(atan2(?53 ,?54 )))", "?16 *(sin(atan2(?53 ,?54 )))", "?21 +?55 -0", "?23 +?56 -0", "?10 *sin(pi*(?4 )/10800000)", "?12 *cos(pi*(?4 )/10800000)", "?10 *(cos(atan2(?59 ,?60 )))", "?12 *(sin(atan2(?59 ,?60 )))", "?21 +?61 -0", "?23 +?62 -0", "?13 *sin(pi*(?4 )/10800000)", "?14 *cos(pi*(?4 )/10800000)", "?13 *(cos(atan2(?65 ,?66 )))", "?14 *(sin(atan2(?65 ,?66 )))", "?21 +?67 -0", "?23 +?68 -0", "?7 *cos(pi*(?52 )/10800000)", "?7 *sin(pi*(?52 )/10800000)", "?22 +?71 -0", "?24 +?72 -0", "?7 *cos(pi*(?52 )/10800000)", "?7 *sin(pi*(?52 )/10800000)", "?22 +0-?75 ", "?24 +0-?76 ", "?77 +0-?21 ", "?78 +0-?23 ", "?73 +0-?21 ", "?74 +0-?23 ", "min(?10 ,?12 )", "?79 *?83 /?10 ", "?80 *?83 /?12 ", "?81 *?83 /?10 ", "?82 *?83 /?12 ", "?86 +0-?84 ", "?87 +0-?85 ", "sqrt(?88 *?88 +?89 *?89 +0*0)", "?84 *?87 /1", "?86 *?85 /1", "?91 +0-?92 ", "?83 *?83 /1", "?90 *?90 /1", "?94 *?95 /1", "?93 *?93 /1", "?96 +0-?97 ", "max(?98 ,0)", "sqrt(?99 )", "?89 *-1/1", "if(?101 ,-1,1)", "?102 *?88 /1", "?103 *?100 /1", "?93 *?89 /1", "(?105 +?104 )/?95 ", "?105 +0-?104 ", "?107 *1/?95 ", "abs(?89 )", "?109 *?100 /1", "?93 *?88 /-1", "(?111 +?110 )/?95 ", "?111 +0-?110 ", "?113 *1/?95 ", "?86 +0-?106 ", "?86 +0-?108 ", "?87 +0-?112 ", "?87 +0-?114 ", "sqrt(?115 *?115 +?117 *?117 +0*0)", "sqrt(?116 *?116 +?118 *?118 +0*0)", "?120 +0-?119 ", "if(?121 ,?106 ,?108 )", "if(?121 ,?112 ,?114 )", "?122 *?10 /?83 ", "?123 *?12 /?83 ", "?21 +?124 -0", "?23 +?125 -0", "?79 *?25 /?13 ", "?80 *?25 /?14 ", "?81 *?25 /?13 ", "?82 *?25 /?14 ", "?130 +0-?128 ", "?131 +0-?129 ", "sqrt(?132 *?132 +?133 *?133 +0*0)", "?128 *?131 /1", "?130 *?129 /1", "?135 +0-?136 ", "?25 *?25 /1", "?134 *?134 /1", "?138 *?139 /1", "?137 *?137 /1", "?140 +0-?141 ", "max(?142 ,0)", "sqrt(?143 )", "?102 *?132 /1", "?145 *?144 /1", "?137 *?133 /1", "(?147 +?146 )/?139 ", "?147 +0-?146 ", "?149 *1/?139 ", "abs(?133 )", "?151 *?144 /1", "?137 *?132 /-1", "(?153 +?152 )/?139 ", "?153 +0-?152 ", "?155 *1/?139 ", "?128 +0-?148 ", "?128 +0-?150 ", "?129 +0-?154 ", "?129 +0-?156 ", "sqrt(?157 *?157 +?159 *?159 +0*0)", "sqrt(?158 *?158 +?160 *?160 +0*0)", "?162 +0-?161 ", "if(?163 ,?148 ,?150 )", "if(?163 ,?154 ,?156 )", "?164 *?13 /?25 ", "?165 *?14 /?25 ", "?21 +?166 -0", "?23 +?167 -0", "(10800000*atan2(?167 ,?166 ))/pi", "?170 +21600000-0", "if(?170 ,?170 ,?171 )", "?4 +0-?172 ", "?173 +21600000-0", "if(?173 ,?173 ,?174 )", "?172 +?175 -0", "0+0-?175 ", "?126 +0-?168 ", "?127 +0-?169 ", "sqrt(?178 *?178 +?179 *?179 +0*0)", "?180 *1/2", "?181 +0-?7 ", "if(?182 ,?126 ,?73 )", "if(?182 ,?127 ,?74 )", "if(?182 ,?168 ,?77 )", "if(?182 ,?169 ,?78 )", "(10800000*atan2(?125 ,?124 ))/pi", "?187 +21600000-0", "if(?187 ,?187 ,?188 )", "?189 +0-?4 ", "?190 +0-21600000", "if(?190 ,?191 ,?190 )", "?4 +?192 -0", "0+0-?192 ", "?15 *sin(pi*(?4 )/10800000)", "?16 *cos(pi*(?4 )/10800000)", "?15 *(cos(atan2(?195 ,?196 )))", "?16 *(sin(atan2(?195 ,?196 )))", "?21 +?197 -0", "?23 +?198 -0", "?4 +5400000-0", "?52 +0-5400000", "?52 +10800000-0", "?10 *cos(pi*(2700000)/10800000)", "?12 *sin(pi*(2700000)/10800000)", "?21 +0-?204 ", "?21 +?204 -0", "?23 +0-?205 ", "?23 +?205 -0", "(?176 )/60000.0", "(?177 )/60000.0", "(?193 )/60000.0", "(?194 )/60000.0" }
+Handles
+([][]com.sun.star.beans.PropertyValue) { { { Name = "Position", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 57 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 58 }, Type = (short) 1 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RefAngle", Handle = (long) 0, Value = (any) { (long) 1 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }, { { Name = "Position", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 63 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 64 }, Type = (short) 1 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RefAngle", Handle = (long) 0, Value = (any) { (long) 3 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }, { { Name = "Position", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 126 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 127 }, Type = (short) 1 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RadiusRangeMaximum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 1 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RadiusRangeMinimum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RefAngle", Handle = (long) 0, Value = (any) { (long) 2 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RefR", Handle = (long) 0, Value = (any) { (long) 0 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }, { { Name = "Position", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 77 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 78 }, Type = (short) 1 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RadiusRangeMaximum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 25000 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RadiusRangeMinimum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RefR", Handle = (long) 0, Value = (any) { (long) 4 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } } }
+MirroredX
+false
+MirroredY
+false
+Path
+([]com.sun.star.beans.PropertyValue) { { Name = "Coordinates", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeParameterPair) { { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 63 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 64 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 69 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 70 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 13 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 14 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 210 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 211 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 185 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 186 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 57 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 58 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 183 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 184 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 126 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 127 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 10 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 12 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 212 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 213 }, Type = (short) 1 } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "Segments", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeSegment) { { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 1 }, { Command = (short) 17, Count = (short) 1 }, { Command = (short) 2, Count = (short) 4 }, { Command = (short) 17, Count = (short) 1 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "TextFrames", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeTextFrame) { { TopLeft = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 206 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 208 }, Type = (short) 1 } }, BottomRight = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 207 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 209 }, Type = (short) 1 } } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }
+Type
+"ooxml-non-primitive"
+ViewBox
+(com.sun.star.awt.Rectangle) { X = (long) 0, Y = (long) 0, Width = (long) 0, Height = (long) 0 }
+/* leftRightArrow */
+AdjustmentValues
+([]com.sun.star.drawing.EnhancedCustomShapeAdjustmentValue) { { Value = (any) { (long) 50000 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE, Name = "adj1" }, { Value = (any) { (long) 50000 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE, Name = "adj2" } }
+Equations
+([]string) { "min(logwidth,logheight)", "50000*logwidth/?0 ", "if(0-$0 ,0,if(100000-$0 ,$0 ,100000))", "if(0-$1 ,0,if(?1 -$1 ,$1 ,?1 ))", "?0 *?3 /100000", "logwidth+0-?4 ", "logheight*?2 /200000", "logheight/2", "?7 +0-?6 ", "?7 +?6 -0", "logheight/2", "?8 *?4 /?10 ", "?4 +0-?11 ", "?5 +?11 -0", "logwidth", "logheight" }
+Handles
+([][]com.sun.star.beans.PropertyValue) { { { Name = "Position", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 1 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeYMaximum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 100000 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeYMinimum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RefY", Handle = (long) 0, Value = (any) { (long) 0 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }, { { Name = "Position", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeXMaximum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 1 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeXMinimum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RefX", Handle = (long) 0, Value = (any) { (long) 1 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } } }
+MirroredX
+false
+MirroredY
+false
+Path
+([]com.sun.star.beans.PropertyValue) { { Name = "Coordinates", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeParameterPair) { { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 14 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 15 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 9 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 9 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 15 }, Type = (short) 1 } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "Segments", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeSegment) { { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 9 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "TextFrames", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeTextFrame) { { TopLeft = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 12 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 1 } }, BottomRight = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 13 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 9 }, Type = (short) 1 } } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }
+Type
+"ooxml-non-primitive"
+ViewBox
+(com.sun.star.awt.Rectangle) { X = (long) 0, Y = (long) 0, Width = (long) 0, Height = (long) 0 }
+/* leftRightArrowCallout */
+AdjustmentValues
+([]com.sun.star.drawing.EnhancedCustomShapeAdjustmentValue) { { Value = (any) { (long) 25000 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE, Name = "adj1" }, { Value = (any) { (long) 25000 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE, Name = "adj2" }, { Value = (any) { (long) 25000 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE, Name = "adj3" }, { Value = (any) { (long) 48123 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE, Name = "adj4" } }
+Equations
+([]string) { "min(logwidth,logheight)", "50000*logheight/?0 ", "if(0-$1 ,0,if(?1 -$1 ,$1 ,?1 ))", "?2 *2/1", "if(0-$0 ,0,if(?3 -$0 ,$0 ,?3 ))", "50000*logwidth/?0 ", "if(0-$2 ,0,if(?5 -$2 ,$2 ,?5 ))", "logwidth/2", "?6 *?0 /?7 ", "100000+0-?8 ", "if(0-$3 ,0,if(?9 -$3 ,$3 ,?9 ))", "?0 *?2 /100000", "?0 *?4 /200000", "logheight/2", "?13 +0-?11 ", "?13 +0-?12 ", "?13 +?12 -0", "?13 +?11 -0", "?0 *?6 /100000", "logwidth+0-?18 ", "logwidth*?10 /200000", "logwidth/2", "?21 +0-?20 ", "?21 +?20 -0", "logheight", "logwidth" }
+Handles
+([][]com.sun.star.beans.PropertyValue) { { { Name = "Position", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 18 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 15 }, Type = (short) 1 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeYMaximum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeYMinimum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RefY", Handle = (long) 0, Value = (any) { (long) 0 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }, { { Name = "Position", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 14 }, Type = (short) 1 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeYMaximum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 1 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeYMinimum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RefY", Handle = (long) 0, Value = (any) { (long) 1 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }, { { Name = "Position", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 18 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeXMaximum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 1 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeXMinimum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RefX", Handle = (long) 0, Value = (any) { (long) 2 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }, { { Name = "Position", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 22 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 24 }, Type = (short) 1 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeXMaximum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 9 }, Type = (short) 1 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeXMinimum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RefX", Handle = (long) 0, Value = (any) { (long) 3 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } } }
+MirroredX
+false
+MirroredY
+false
+Path
+([]com.sun.star.beans.PropertyValue) { { Name = "Coordinates", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeParameterPair) { { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 13 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 18 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 14 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 18 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 15 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 22 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 15 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 22 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 23 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 23 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 15 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 19 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 15 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 19 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 14 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 25 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 13 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 19 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 17 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 19 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 16 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 23 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 16 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 23 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 24 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 22 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 24 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 22 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 16 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 18 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 16 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 18 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 17 }, Type = (short) 1 } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "Segments", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeSegment) { { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 17 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "TextFrames", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeTextFrame) { { TopLeft = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 22 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, BottomRight = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 23 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 24 }, Type = (short) 1 } } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }
+Type
+"ooxml-non-primitive"
+ViewBox
+(com.sun.star.awt.Rectangle) { X = (long) 0, Y = (long) 0, Width = (long) 0, Height = (long) 0 }
+/* leftRightCircularArrow */
+AdjustmentValues
+([]com.sun.star.drawing.EnhancedCustomShapeAdjustmentValue) { { Value = (any) { (long) 12500 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE, Name = "adj1" }, { Value = (any) { (long) 1142319 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE, Name = "adj2" }, { Value = (any) { (long) 20457681 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE, Name = "adj3" }, { Value = (any) { (long) 11942319 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE, Name = "adj4" }, { Value = (any) { (long) 12500 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE, Name = "adj5" } }
+Equations
+([]string) { "if(0-$4 ,0,if(25000-$4 ,$4 ,25000))", "?0 *2/1", "if(0-$0 ,0,if(?1 -$0 ,$0 ,?1 ))", "if(1-$2 ,1,if(21599999-$2 ,$2 ,21599999))", "if(0-$3 ,0,if(21599999-$3 ,$3 ,21599999))", "min(logwidth,logheight)", "?5 *?2 /100000", "?5 *?0 /100000", "?6 *1/2", "logwidth/2", "?9 +?8 -?7 ", "logheight/2", "?11 +?8 -?7 ", "?10 +0-?6 ", "?12 +0-?6 ", "?13 +?8 -0", "?14 +?8 -0", "?15 *sin(pi*(?3 )/10800000)", "?16 *cos(pi*(?3 )/10800000)", "?15 *(cos(atan2(?17 ,?18 )))", "?16 *(sin(atan2(?17 ,?18 )))", "logwidth/2", "?21 +?19 -0", "logheight/2", "?23 +?20 -0", "min(?13 ,?14 )", "?19 *?19 /1", "?20 *?20 /1", "?25 *?25 /1", "?26 +0-?28 ", "?27 +0-?28 ", "?29 *?30 /?26 ", "?31 *1/?27 ", "1+0-?32 ", "sqrt(?33 )", "?29 *1/?19 ", "?35 *1/?20 ", "(1+?34 )/?36 ", "(10800000*atan2(?37 ,1))/pi", "?38 +21600000-0", "if(?38 ,?38 ,?39 )", "?40 +0-?3 ", "?41 +21600000-0", "if(?41 ,?41 ,?42 )", "?43 +0-10800000", "?43 +0-21600000", "if(?44 ,?45 ,?43 )", "abs(?46 )", "if(0-$1 ,0,if(?47 -$1 ,$1 ,?47 ))", "?3 +?48 -0", "?15 *sin(pi*(?49 )/10800000)", "?16 *cos(pi*(?49 )/10800000)", "?15 *(cos(atan2(?50 ,?51 )))", "?16 *(sin(atan2(?50 ,?51 )))", "?21 +?52 -0", "?23 +?53 -0", "?7 *cos(pi*(?49 )/10800000)", "?7 *sin(pi*(?49 )/10800000)", "?22 +?56 -0", "?24 +?57 -0", "?7 *cos(pi*(?49 )/10800000)", "?7 *sin(pi*(?49 )/10800000)", "?22 +0-?60 ", "?24 +0-?61 ", "?62 +0-?21 ", "?63 +0-?23 ", "?58 +0-?21 ", "?59 +0-?23 ", "min(?10 ,?12 )", "?64 *?68 /?10 ", "?65 *?68 /?12 ", "?66 *?68 /?10 ", "?67 *?68 /?12 ", "?71 +0-?69 ", "?72 +0-?70 ", "sqrt(?73 *?73 +?74 *?74 +0*0)", "?69 *?72 /1", "?71 *?70 /1", "?76 +0-?77 ", "?68 *?68 /1", "?75 *?75 /1", "?79 *?80 /1", "?78 *?78 /1", "?81 +0-?82 ", "max(?83 ,0)", "sqrt(?84 )", "?74 *-1/1", "if(?86 ,-1,1)", "?87 *?73 /1", "?88 *?85 /1", "?78 *?74 /1", "(?90 +?89 )/?80 ", "?90 +0-?89 ", "?92 *1/?80 ", "abs(?74 )", "?94 *?85 /1", "?78 *?73 /-1", "(?96 +?95 )/?80 ", "?96 +0-?95 ", "?98 *1/?80 ", "?71 +0-?91 ", "?71 +0-?93 ", "?72 +0-?97 ", "?72 +0-?99 ", "sqrt(?100 *?100 +?102 *?102 +0*0)", "sqrt(?101 *?101 +?103 *?103 +0*0)", "?105 +0-?104 ", "if(?106 ,?91 ,?93 )", "if(?106 ,?97 ,?99 )", "?107 *?10 /?68 ", "?108 *?12 /?68 ", "?21 +?109 -0", "?23 +?110 -0", "?64 *?25 /?13 ", "?65 *?25 /?14 ", "?66 *?25 /?13 ", "?67 *?25 /?14 ", "?115 +0-?113 ", "?116 +0-?114 ", "sqrt(?117 *?117 +?118 *?118 +0*0)", "?113 *?116 /1", "?115 *?114 /1", "?120 +0-?121 ", "?25 *?25 /1", "?119 *?119 /1", "?123 *?124 /1", "?122 *?122 /1", "?125 +0-?126 ", "max(?127 ,0)", "sqrt(?128 )", "?87 *?117 /1", "?130 *?129 /1", "?122 *?118 /1", "(?132 +?131 )/?124 ", "?132 +0-?131 ", "?134 *1/?124 ", "abs(?118 )", "?136 *?129 /1", "?122 *?117 /-1", "(?138 +?137 )/?124 ", "?138 +0-?137 ", "?140 *1/?124 ", "?113 +0-?133 ", "?113 +0-?135 ", "?114 +0-?139 ", "?114 +0-?141 ", "sqrt(?142 *?142 +?144 *?144 +0*0)", "sqrt(?143 *?143 +?145 *?145 +0*0)", "?147 +0-?146 ", "if(?148 ,?133 ,?135 )", "if(?148 ,?139 ,?141 )", "?149 *?13 /?25 ", "?150 *?14 /?25 ", "?21 +?151 -0", "?23 +?152 -0", "?15 *sin(pi*(?4 )/10800000)", "?16 *cos(pi*(?4 )/10800000)", "?15 *(cos(atan2(?155 ,?156 )))", "?16 *(sin(atan2(?155 ,?156 )))", "?21 +?157 -0", "?23 +?158 -0", "?4 +0-?48 ", "?15 *sin(pi*(?161 )/10800000)", "?16 *cos(pi*(?161 )/10800000)", "?15 *(cos(atan2(?162 ,?163 )))", "?16 *(sin(atan2(?162 ,?163 )))", "?21 +?164 -0", "?23 +?165 -0", "?7 *cos(pi*(?161 )/10800000)", "?7 *sin(pi*(?161 )/10800000)", "?159 +?168 -0", "?160 +?169 -0", "?7 *cos(pi*(?161 )/10800000)", "?7 *sin(pi*(?161 )/10800000)", "?159 +0-?172 ", "?160 +0-?173 ", "?111 +0-?153 ", "?112 +0-?154 ", "sqrt(?176 *?176 +?177 *?177 +0*0)", "?178 *1/2", "?179 +0-?7 ", "if(?180 ,?111 ,?58 )", "if(?180 ,?112 ,?59 )", "if(?180 ,?153 ,?62 )", "if(?180 ,?154 ,?63 )", "(10800000*atan2(?110 ,?109 ))/pi", "?185 +21600000-0", "if(?185 ,?185 ,?186 )", "?187 +0-?3 ", "?188 +21600000-0", "if(?188 ,?188 ,?189 )", "?4 +0-?190 ", "?191 +21600000-0", "if(?191 ,?191 ,?192 )", "?187 +0-?193 ", "?194 +21600000-0", "if(?194 ,?194 ,?195 )", "(10800000*atan2(?152 ,?151 ))/pi", "?197 +21600000-0", "if(?197 ,?197 ,?198 )", "?199 +0-?3 ", "?200 +0-21600000", "if(?200 ,?201 ,?200 )", "?4 +0-?202 ", "?203 +0-21600000", "if(?204 ,?204 ,?203 )", "?205 +0-?199 ", "?206 +0-21600000", "if(?206 ,?207 ,?206 )", "?10 *sin(pi*(?193 )/10800000)", "?12 *cos(pi*(?193 )/10800000)", "?10 *(cos(atan2(?209 ,?210 )))", "?12 *(sin(atan2(?209 ,?210 )))", "?21 +?211 -0", "?23 +?212 -0", "?13 *sin(pi*(?205 )/10800000)", "?14 *cos(pi*(?205 )/10800000)", "?13 *(cos(atan2(?215 ,?216 )))", "?14 *(sin(atan2(?215 ,?216 )))", "?21 +?217 -0", "?23 +?218 -0", "if(?180 ,?213 ,?170 )", "if(?180 ,?214 ,?171 )", "if(?180 ,?219 ,?174 )", "if(?180 ,?220 ,?175 )", "?161 +0-5400000", "?49 +5400000-0", "?49 +10800000-0", "?161 +10800000-0", "?10 *cos(pi*(2700000)/10800000)", "?12 *sin(pi*(2700000)/10800000)", "?21 +0-?229 ", "?21 +?229 -0", "?23 +0-?230 ", "?23 +?230 -0", "(?193 )/60000.0", "(?196 )/60000.0", "(?199 )/60000.0", "(?208 )/60000.0" }
+Handles
+([][]com.sun.star.beans.PropertyValue) { { { Name = "Position", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 54 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 55 }, Type = (short) 1 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RefAngle", Handle = (long) 0, Value = (any) { (long) 1 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }, { { Name = "Position", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 213 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 214 }, Type = (short) 1 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RefAngle", Handle = (long) 0, Value = (any) { (long) 3 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }, { { Name = "Position", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 111 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 112 }, Type = (short) 1 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RadiusRangeMaximum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 1 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RadiusRangeMinimum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RefAngle", Handle = (long) 0, Value = (any) { (long) 2 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RefR", Handle = (long) 0, Value = (any) { (long) 0 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }, { { Name = "Position", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 62 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 63 }, Type = (short) 1 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RadiusRangeMaximum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 25000 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RadiusRangeMinimum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RefR", Handle = (long) 0, Value = (any) { (long) 4 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } } }
+MirroredX
+false
+MirroredY
+false
+Path
+([]com.sun.star.beans.PropertyValue) { { Name = "Coordinates", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeParameterPair) { { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 166 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 167 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 221 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 222 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 213 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 214 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 10 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 12 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 235 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 236 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 181 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 182 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 54 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 55 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 183 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 184 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 153 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 154 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 13 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 14 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 237 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 238 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 223 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 224 }, Type = (short) 1 } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "Segments", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeSegment) { { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 2 }, { Command = (short) 17, Count = (short) 1 }, { Command = (short) 2, Count = (short) 4 }, { Command = (short) 17, Count = (short) 1 }, { Command = (short) 2, Count = (short) 1 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "TextFrames", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeTextFrame) { { TopLeft = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 231 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 233 }, Type = (short) 1 } }, BottomRight = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 232 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 234 }, Type = (short) 1 } } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }
+Type
+"ooxml-non-primitive"
+ViewBox
+(com.sun.star.awt.Rectangle) { X = (long) 0, Y = (long) 0, Width = (long) 0, Height = (long) 0 }
+/* leftRightRibbon */
+AdjustmentValues
+([]com.sun.star.drawing.EnhancedCustomShapeAdjustmentValue) { { Value = (any) { (long) 50000 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE, Name = "adj1" }, { Value = (any) { (long) 50000 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE, Name = "adj2" }, { Value = (any) { (long) 16667 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE, Name = "adj3" } }
+Equations
+([]string) { "if(0-$2 ,0,if(33333-$2 ,$2 ,33333))", "100000+0-?0 ", "if(0-$0 ,0,if(?1 -$0 ,$0 ,?1 ))", "logwidth/2", "logwidth/32", "?3 +0-?4 ", "min(logwidth,logheight)", "100000*?5 /?6 ", "if(0-$1 ,0,if(?7 -$1 ,$1 ,?7 ))", "?6 *?8 /100000", "logwidth+0-?9 ", "logheight*?2 /200000", "logheight*?0 /-200000", "logheight/2", "?13 +?12 -?11 ", "?13 +?11 -?12 ", "?14 +?11 -0", "logheight+0-?16 ", "?16 *2/1", "logheight+0-?18 ", "?18 +0-?14 ", "logheight+0-?20 ", "?0 *?6 /400000", "logwidth/2", "?23 +0-?4 ", "?23 +?4 -0", "?14 +?22 -0", "?21 +0-?22 ", "logwidth", "logheight", "(16200000)/60000.0", "(10800000)/60000.0", "(16200000)/60000.0", "(-10800000)/60000.0", "(5400000)/60000.0", "(5400000)/60000.0", "(0)/60000.0", "(5400000)/60000.0", "(16200000)/60000.0", "(-10800000)/60000.0", "(16200000)/60000.0", "(10800000)/60000.0", "(16200000)/60000.0", "(-10800000)/60000.0", "(5400000)/60000.0", "(5400000)/60000.0" }
+Handles
+([][]com.sun.star.beans.PropertyValue) { { { Name = "Position", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 10 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 21 }, Type = (short) 1 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeYMaximum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 1 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeYMinimum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RefY", Handle = (long) 0, Value = (any) { (long) 0 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }, { { Name = "Position", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 9 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeXMaximum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7 }, Type = (short) 1 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeXMinimum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RefX", Handle = (long) 0, Value = (any) { (long) 1 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }, { { Name = "Position", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 25 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 21 }, Type = (short) 1 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeYMaximum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 33333 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeYMinimum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RefY", Handle = (long) 0, Value = (any) { (long) 2 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } } }
+MirroredX
+false
+MirroredY
+false
+Path
+([]com.sun.star.beans.PropertyValue) { { Name = "Coordinates", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeParameterPair) { { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 16 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 9 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 9 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 14 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 23 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 14 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 22 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 30 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 31 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 22 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 32 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 33 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 10 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 21 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 10 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 19 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 28 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 17 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 10 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 29 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 10 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 15 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 23 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 15 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 22 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 34 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 35 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 24 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 20 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 9 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 20 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 9 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 18 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 25 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 26 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 22 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 36 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 37 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 22 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 38 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 39 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 25 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 21 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 16 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 9 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 9 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 14 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 23 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 14 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 22 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 40 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 41 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 22 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 42 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 43 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 10 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 21 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 10 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 19 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 28 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 17 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 10 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 29 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 10 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 15 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 23 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 15 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 22 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 44 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 45 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 24 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 20 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 9 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 20 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 9 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 18 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 25 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 26 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 25 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 21 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 24 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 27 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 24 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 20 }, Type = (short) 1 } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "Segments", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeSegment) { { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 3 }, { Command = (short) 17, Count = (short) 2 }, { Command = (short) 2, Count = (short) 6 }, { Command = (short) 17, Count = (short) 1 }, { Command = (short) 2, Count = (short) 3 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 7, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 }, { Command = (short) 1, Count = (short) 1 }, { Command = (short) 17, Count = (short) 2 }, { Command = (short) 2, Count = (short) 1 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 19, Count = (short) 0 }, { Command = (short) 7, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 }, { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 3 }, { Command = (short) 17, Count = (short) 2 }, { Command = (short) 2, Count = (short) 6 }, { Command = (short) 17, Count = (short) 1 }, { Command = (short) 2, Count = (short) 3 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 1 }, { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 1 }, { Command = (short) 6, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "TextFrames", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeTextFrame) { { TopLeft = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 9 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 14 }, Type = (short) 1 } }, BottomRight = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 10 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 15 }, Type = (short) 1 } } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }
+Type
+"ooxml-non-primitive"
+ViewBox
+(com.sun.star.awt.Rectangle) { X = (long) 0, Y = (long) 0, Width = (long) 0, Height = (long) 0 }
+/* leftRightUpArrow */
+AdjustmentValues
+([]com.sun.star.drawing.EnhancedCustomShapeAdjustmentValue) { { Value = (any) { (long) 25000 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE, Name = "adj1" }, { Value = (any) { (long) 25000 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE, Name = "adj2" }, { Value = (any) { (long) 25000 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE, Name = "adj3" } }
+Equations
+([]string) { "if(0-$1 ,0,if(50000-$1 ,$1 ,50000))", "?0 *2/1", "if(0-$0 ,0,if(?1 -$0 ,$0 ,?1 ))", "100000+0-?1 ", "?3 *1/2", "if(0-$2 ,0,if(?4 -$2 ,$2 ,?4 ))", "min(logwidth,logheight)", "?6 *?5 /100000", "?6 *?0 /100000", "logwidth/2", "?9 +0-?8 ", "?9 +?8 -0", "?6 *?2 /200000", "?9 +0-?12 ", "?9 +?12 -0", "logwidth+0-?7 ", "?6 *?0 /50000", "logheight+0-?16 ", "logheight+0-?8 ", "?18 +0-?12 ", "?18 +?12 -0", "?12 *?7 /?8 ", "logwidth+0-?21 ", "logwidth", "logheight" }
+Handles
+([][]com.sun.star.beans.PropertyValue) { { { Name = "Position", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 13 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7 }, Type = (short) 1 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeXMaximum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 1 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeXMinimum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RefX", Handle = (long) 0, Value = (any) { (long) 0 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }, { { Name = "Position", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 10 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeXMaximum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 50000 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeXMinimum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RefX", Handle = (long) 0, Value = (any) { (long) 1 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }, { { Name = "Position", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 23 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7 }, Type = (short) 1 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeYMaximum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeYMinimum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RefY", Handle = (long) 0, Value = (any) { (long) 2 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } } }
+MirroredX
+false
+MirroredY
+false
+Path
+([]com.sun.star.beans.PropertyValue) { { Name = "Coordinates", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeParameterPair) { { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 18 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 17 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 19 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 13 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 19 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 13 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 10 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 9 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 11 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 14 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 14 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 19 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 15 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 19 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 15 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 17 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 23 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 18 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 15 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 24 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 15 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 20 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 20 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 24 }, Type = (short) 1 } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "Segments", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeSegment) { { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 16 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "TextFrames", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeTextFrame) { { TopLeft = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 21 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 19 }, Type = (short) 1 } }, BottomRight = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 22 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 20 }, Type = (short) 1 } } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }
+Type
+"ooxml-non-primitive"
+ViewBox
+(com.sun.star.awt.Rectangle) { X = (long) 0, Y = (long) 0, Width = (long) 0, Height = (long) 0 }
+/* leftUpArrow */
+AdjustmentValues
+([]com.sun.star.drawing.EnhancedCustomShapeAdjustmentValue) { { Value = (any) { (long) 25000 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE, Name = "adj1" }, { Value = (any) { (long) 25000 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE, Name = "adj2" }, { Value = (any) { (long) 25000 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE, Name = "adj3" } }
+Equations
+([]string) { "if(0-$1 ,0,if(50000-$1 ,$1 ,50000))", "?0 *2/1", "if(0-$0 ,0,if(?1 -$0 ,$0 ,?1 ))", "100000+0-?1 ", "if(0-$2 ,0,if(?3 -$2 ,$2 ,?3 ))", "min(logwidth,logheight)", "?5 *?4 /100000", "?5 *?0 /50000", "logwidth+0-?7 ", "logheight+0-?7 ", "?5 *?0 /100000", "logwidth+0-?10 ", "logheight+0-?10 ", "?5 *?2 /200000", "?11 +0-?13 ", "?11 +?13 -0", "?12 +0-?13 ", "?12 +?13 -0", "?13 *?6 /?10 ", "(?6 +?15 )/2", "(?6 +?17 )/2", "logheight", "logwidth" }
+Handles
+([][]com.sun.star.beans.PropertyValue) { { { Name = "Position", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 14 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 16 }, Type = (short) 1 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeYMaximum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 1 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeYMinimum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RefY", Handle = (long) 0, Value = (any) { (long) 0 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }, { { Name = "Position", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeXMaximum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 50000 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeXMinimum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RefX", Handle = (long) 0, Value = (any) { (long) 1 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }, { { Name = "Position", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 14 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 6 }, Type = (short) 1 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeYMaximum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeYMinimum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RefY", Handle = (long) 0, Value = (any) { (long) 2 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } } }
+MirroredX
+false
+MirroredY
+false
+Path
+([]com.sun.star.beans.PropertyValue) { { Name = "Coordinates", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeParameterPair) { { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 12 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 6 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 9 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 6 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 16 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 14 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 16 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 14 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 6 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 6 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 11 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 22 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 6 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 15 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 6 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 15 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 17 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 6 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 17 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 6 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 21 }, Type = (short) 1 } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "Segments", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeSegment) { { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 11 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "TextFrames", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeTextFrame) { { TopLeft = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 18 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 16 }, Type = (short) 1 } }, BottomRight = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 11 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 17 }, Type = (short) 1 } } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }
+Type
+"ooxml-non-primitive"
+ViewBox
+(com.sun.star.awt.Rectangle) { X = (long) 0, Y = (long) 0, Width = (long) 0, Height = (long) 0 }
+/* lightningBolt */
+AdjustmentValues
+([]com.sun.star.drawing.EnhancedCustomShapeAdjustmentValue) {}
+Equations
+([]string) { "logwidth*5022/21600", "logwidth*8472/21600", "logwidth*8757/21600", "logwidth*10012/21600", "logwidth*12860/21600", "logwidth*13917/21600", "logwidth*16577/21600", "logheight*3890/21600", "logheight*6080/21600", "logheight*7437/21600", "logheight*9705/21600", "logheight*12007/21600", "logheight*14277/21600", "logheight*14915/21600", "logwidth", "logheight" }
+Handles
+([][]com.sun.star.beans.PropertyValue) {}
+MirroredX
+false
+MirroredY
+false
+Path
+([]com.sun.star.beans.PropertyValue) { { Name = "Coordinates", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeParameterPair) { { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8472 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 12860 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 6080 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 11050 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 6797 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 16577 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 12007 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 14767 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 12877 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 21600 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 21600 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 10012 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 14915 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 12222 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 13987 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5022 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 9705 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7602 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8382 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3890 }, Type = (short) 0 } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "Segments", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeSegment) { { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 10 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "SubViewSize", Handle = (long) 0, Value = (any) { ([]com.sun.star.awt.Size) { { Width = (long) 21600, Height = (long) 21600 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "TextFrames", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeTextFrame) { { TopLeft = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 9 }, Type = (short) 1 } }, BottomRight = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 12 }, Type = (short) 1 } } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }
+Type
+"ooxml-non-primitive"
+ViewBox
+(com.sun.star.awt.Rectangle) { X = (long) 0, Y = (long) 0, Width = (long) 0, Height = (long) 0 }
+/* line */
+AdjustmentValues
+([]com.sun.star.drawing.EnhancedCustomShapeAdjustmentValue) {}
+Equations
+([]string) { "logwidth", "logheight" }
+Handles
+([][]com.sun.star.beans.PropertyValue) {}
+MirroredX
+false
+MirroredY
+false
+Path
+([]com.sun.star.beans.PropertyValue) { { Name = "Coordinates", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeParameterPair) { { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 1 } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "Segments", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeSegment) { { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 1 }, { Command = (short) 5, Count = (short) 0 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }
+Type
+"ooxml-non-primitive"
+ViewBox
+(com.sun.star.awt.Rectangle) { X = (long) 0, Y = (long) 0, Width = (long) 0, Height = (long) 0 }
+/* lineInv */
+AdjustmentValues
+([]com.sun.star.drawing.EnhancedCustomShapeAdjustmentValue) {}
+Equations
+([]string) { "logheight", "logwidth" }
+Handles
+([][]com.sun.star.beans.PropertyValue) {}
+MirroredX
+false
+MirroredY
+false
+Path
+([]com.sun.star.beans.PropertyValue) { { Name = "Coordinates", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeParameterPair) { { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "Segments", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeSegment) { { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 1 }, { Command = (short) 5, Count = (short) 0 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }
+Type
+"ooxml-non-primitive"
+ViewBox
+(com.sun.star.awt.Rectangle) { X = (long) 0, Y = (long) 0, Width = (long) 0, Height = (long) 0 }
+/* mathDivide */
+AdjustmentValues
+([]com.sun.star.drawing.EnhancedCustomShapeAdjustmentValue) { { Value = (any) { (long) 23520 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE, Name = "adj1" }, { Value = (any) { (long) 5880 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE, Name = "adj2" }, { Value = (any) { (long) 11760 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE, Name = "adj3" } }
+Equations
+([]string) { "if(1000-$0 ,1000,if(36745-$0 ,$0 ,36745))", "0+0-?0 ", "(73490+?1 )/4", "36745*logwidth/logheight", "min(?2 ,?3 )", "if(1000-$2 ,1000,if(?4 -$2 ,$2 ,?4 ))", "-4*?5 /1", "73490+?6 -?0 ", "if(0-$1 ,0,if(?7 -$1 ,$1 ,?7 ))", "logheight*?0 /200000", "logheight*?8 /100000", "logheight*?5 /100000", "logwidth*73490/200000", "logheight/2", "?13 +0-?9 ", "?13 +?9 -0", "?10 +?11 -0", "?14 +0-?16 ", "?17 +0-?11 ", "logheight+0-?18 ", "logwidth/2", "?20 +0-?12 ", "?20 +?12 -0", "?20 +0-?11 ", "logwidth", "(16200000)/60000.0", "(21600000)/60000.0", "(5400000)/60000.0", "(21600000)/60000.0" }
+Handles
+([][]com.sun.star.beans.PropertyValue) { { { Name = "Position", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 14 }, Type = (short) 1 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeYMaximum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 36745 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeYMinimum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1000 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RefY", Handle = (long) 0, Value = (any) { (long) 0 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }, { { Name = "Position", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 24 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 17 }, Type = (short) 1 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeYMaximum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7 }, Type = (short) 1 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeYMinimum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RefY", Handle = (long) 0, Value = (any) { (long) 1 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }, { { Name = "Position", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 23 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeXMaximum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeXMinimum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1000 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RefX", Handle = (long) 0, Value = (any) { (long) 2 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } } }
+MirroredX
+false
+MirroredY
+false
+Path
+([]com.sun.star.beans.PropertyValue) { { Name = "Coordinates", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeParameterPair) { { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 20 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 18 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 11 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 11 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 25 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 26 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 20 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 19 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 11 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 11 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 27 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 28 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 21 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 14 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 22 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 14 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 22 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 15 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 21 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 15 }, Type = (short) 1 } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "Segments", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeSegment) { { Command = (short) 1, Count = (short) 1 }, { Command = (short) 17, Count = (short) 1 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 1, Count = (short) 1 }, { Command = (short) 17, Count = (short) 1 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 3 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "TextFrames", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeTextFrame) { { TopLeft = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 21 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 14 }, Type = (short) 1 } }, BottomRight = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 22 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 15 }, Type = (short) 1 } } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }
+Type
+"ooxml-non-primitive"
+ViewBox
+(com.sun.star.awt.Rectangle) { X = (long) 0, Y = (long) 0, Width = (long) 0, Height = (long) 0 }
+/* mathEqual */
+AdjustmentValues
+([]com.sun.star.drawing.EnhancedCustomShapeAdjustmentValue) { { Value = (any) { (long) 23520 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE, Name = "adj1" }, { Value = (any) { (long) 11760 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE, Name = "adj2" } }
+Equations
+([]string) { "if(0-$0 ,0,if(36745-$0 ,$0 ,36745))", "?0 *2/1", "100000+0-2", "if(0-$1 ,0,if(?2 -$1 ,$1 ,?2 ))", "logheight*?0 /100000", "logheight*?3 /200000", "logwidth*73490/200000", "logheight/2", "?7 +0-?5 ", "?7 +?5 -0", "?8 +0-?4 ", "?9 +?4 -0", "logwidth/2", "?12 +0-?6 ", "?12 +?6 -0", "(?10 +?8 )/2", "(?9 +?11 )/2", "logwidth" }
+Handles
+([][]com.sun.star.beans.PropertyValue) { { { Name = "Position", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 10 }, Type = (short) 1 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeYMaximum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 36745 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeYMinimum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RefY", Handle = (long) 0, Value = (any) { (long) 0 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }, { { Name = "Position", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 17 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 1 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeYMaximum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeYMinimum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RefY", Handle = (long) 0, Value = (any) { (long) 1 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } } }
+MirroredX
+false
+MirroredY
+false
+Path
+([]com.sun.star.beans.PropertyValue) { { Name = "Coordinates", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeParameterPair) { { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 13 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 10 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 14 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 10 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 14 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 13 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 13 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 9 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 14 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 9 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 14 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 11 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 13 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 11 }, Type = (short) 1 } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "Segments", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeSegment) { { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 3 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 3 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "TextFrames", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeTextFrame) { { TopLeft = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 13 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 10 }, Type = (short) 1 } }, BottomRight = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 14 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 11 }, Type = (short) 1 } } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }
+Type
+"ooxml-non-primitive"
+ViewBox
+(com.sun.star.awt.Rectangle) { X = (long) 0, Y = (long) 0, Width = (long) 0, Height = (long) 0 }
+/* mathMinus */
+AdjustmentValues
+([]com.sun.star.drawing.EnhancedCustomShapeAdjustmentValue) { { Value = (any) { (long) 23520 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE, Name = "adj1" } }
+Equations
+([]string) { "if(0-$0 ,0,if(100000-$0 ,$0 ,100000))", "logheight*?0 /200000", "logwidth*73490/200000", "logheight/2", "?3 +0-?1 ", "?3 +?1 -0", "logwidth/2", "?6 +0-?2 ", "?6 +?2 -0" }
+Handles
+([][]com.sun.star.beans.PropertyValue) { { { Name = "Position", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeYMaximum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 100000 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeYMinimum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RefY", Handle = (long) 0, Value = (any) { (long) 0 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } } }
+MirroredX
+false
+MirroredY
+false
+Path
+([]com.sun.star.beans.PropertyValue) { { Name = "Coordinates", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeParameterPair) { { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 1 } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "Segments", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeSegment) { { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 3 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "TextFrames", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeTextFrame) { { TopLeft = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 } }, BottomRight = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 1 } } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }
+Type
+"ooxml-non-primitive"
+ViewBox
+(com.sun.star.awt.Rectangle) { X = (long) 0, Y = (long) 0, Width = (long) 0, Height = (long) 0 }
+/* mathMultiply */
+AdjustmentValues
+([]com.sun.star.drawing.EnhancedCustomShapeAdjustmentValue) { { Value = (any) { (long) 23520 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE, Name = "adj1" } }
+Equations
+([]string) { "if(0-$0 ,0,if(51965-$0 ,$0 ,51965))", "min(logwidth,logheight)", "?1 *?0 /100000", "(10800000*atan2(logheight,logwidth))/pi", "1*sin(pi*(?3 )/10800000)", "1*cos(pi*(?3 )/10800000)", "1*tan(pi*(?3 )/10800000)", "sqrt(logwidth*logwidth+logheight*logheight+0*0)", "?7 *51965/100000", "?7 +0-?8 ", "?5 *?9 /2", "?4 *?9 /2", "?4 *?2 /2", "?5 *?2 /2", "?10 +0-?12 ", "?11 +?13 -0", "?10 +?12 -0", "?11 +0-?13 ", "logwidth/2", "?18 +0-?16 ", "?19 *?6 /1", "?20 +?17 -0", "logwidth+0-?16 ", "logwidth+0-?14 ", "logheight/2", "?24 +0-?15 ", "?25 *1/?6 ", "?23 +0-?26 ", "?14 +?26 -0", "logheight+0-?15 ", "logheight+0-?17 ", "logheight+0-?21 ", "logwidth+0-?10 ", "logheight+0-?11 " }
+Handles
+([][]com.sun.star.beans.PropertyValue) { { { Name = "Position", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeYMaximum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 51965 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeYMinimum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RefY", Handle = (long) 0, Value = (any) { (long) 0 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } } }
+MirroredX
+false
+MirroredY
+false
+Path
+([]com.sun.star.beans.PropertyValue) { { Name = "Coordinates", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeParameterPair) { { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 14 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 15 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 16 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 17 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 18 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 21 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 22 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 17 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 23 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 15 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 27 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 24 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 23 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 29 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 22 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 30 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 18 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 31 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 16 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 30 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 14 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 29 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 28 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 24 }, Type = (short) 1 } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "Segments", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeSegment) { { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 11 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "TextFrames", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeTextFrame) { { TopLeft = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 14 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 17 }, Type = (short) 1 } }, BottomRight = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 23 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 30 }, Type = (short) 1 } } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }
+Type
+"ooxml-non-primitive"
+ViewBox
+(com.sun.star.awt.Rectangle) { X = (long) 0, Y = (long) 0, Width = (long) 0, Height = (long) 0 }
+/* mathNotEqual */
+AdjustmentValues
+([]com.sun.star.drawing.EnhancedCustomShapeAdjustmentValue) { { Value = (any) { (long) 23520 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE, Name = "adj1" }, { Value = (any) { (long) 6600000 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE, Name = "adj2" }, { Value = (any) { (long) 11760 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE, Name = "adj3" } }
+Equations
+([]string) { "if(0-$0 ,0,if(50000-$0 ,$0 ,50000))", "if(4200000-$1 ,4200000,if(6600000-$1 ,$1 ,6600000))", "?0 *2/1", "100000+0-2", "if(0-$2 ,0,if(?3 -$2 ,$2 ,?3 ))", "logheight*?0 /100000", "logheight*?4 /200000", "logwidth*73490/200000", "logwidth/2", "?8 +0-?7 ", "?8 +?7 -0", "logheight/2", "?11 +0-?6 ", "?11 +?6 -0", "?12 +0-?5 ", "?13 +?5 -0", "?1 +0-5400000", "logheight/2", "?17 *tan(pi*(?16 )/10800000)", "sqrt(?18 *?18 +?17 *?17 +0*0)", "?19 *?5 /?17 ", "?20 *1/2", "?8 +?18 -?21 ", "?18 *?14 /?17 ", "?22 +0-?23 ", "?18 *?12 /?17 ", "?22 +0-?25 ", "?18 *?13 /?17 ", "?22 +0-?27 ", "?18 *?15 /?17 ", "?22 +0-?29 ", "?18 *2/1", "?22 +0-?31 ", "?22 +?20 -0", "?24 +?20 -0", "?26 +?20 -0", "?28 +?20 -0", "?30 +?20 -0", "?32 +?20 -0", "?5 *?17 /?19 ", "?22 +?39 -0", "?33 +0-?39 ", "if(?16 ,?40 ,?33 )", "if(?16 ,?22 ,?41 )", "?5 *?18 /?19 ", "0+0-?44 ", "if(?16 ,?44 ,0)", "if(?16 ,0,?45 )", "logwidth+0-?42 ", "logwidth+0-?43 ", "logheight+0-?46 ", "logheight+0-?47 ", "(?42 +?43 )/2", "(?49 +?48 )/2", "(?46 +?47 )/2", "(?14 +?12 )/2", "(?13 +?15 )/2", "(?51 +?50 )/2", "logwidth" }
+Handles
+([][]com.sun.star.beans.PropertyValue) { { { Name = "Position", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 14 }, Type = (short) 1 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeYMaximum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 50000 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeYMinimum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RefY", Handle = (long) 0, Value = (any) { (long) 0 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }, { { Name = "Position", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 43 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RefAngle", Handle = (long) 0, Value = (any) { (long) 1 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }, { { Name = "Position", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 58 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 12 }, Type = (short) 1 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeYMaximum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeYMinimum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RefY", Handle = (long) 0, Value = (any) { (long) 2 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } } }
+MirroredX
+false
+MirroredY
+false
+Path
+([]com.sun.star.beans.PropertyValue) { { Name = "Coordinates", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeParameterPair) { { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 9 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 14 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 24 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 14 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 43 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 47 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 42 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 46 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 34 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 14 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 10 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 14 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 10 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 12 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 35 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 12 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 36 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 13 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 10 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 13 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 10 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 15 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 37 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 15 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 49 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 51 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 48 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 50 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 30 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 15 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 9 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 15 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 9 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 13 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 28 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 13 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 26 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 12 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 9 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 12 }, Type = (short) 1 } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "Segments", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeSegment) { { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 19 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "TextFrames", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeTextFrame) { { TopLeft = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 9 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 14 }, Type = (short) 1 } }, BottomRight = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 10 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 15 }, Type = (short) 1 } } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }
+Type
+"ooxml-non-primitive"
+ViewBox
+(com.sun.star.awt.Rectangle) { X = (long) 0, Y = (long) 0, Width = (long) 0, Height = (long) 0 }
+/* mathPlus */
+AdjustmentValues
+([]com.sun.star.drawing.EnhancedCustomShapeAdjustmentValue) { { Value = (any) { (long) 23520 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE, Name = "adj1" } }
+Equations
+([]string) { "if(0-$0 ,0,if(73490-$0 ,$0 ,73490))", "logwidth*73490/200000", "logheight*73490/200000", "min(logwidth,logheight)", "?3 *?0 /200000", "logwidth/2", "?5 +0-?1 ", "?5 +0-?4 ", "?5 +?4 -0", "?5 +?1 -0", "logheight/2", "?10 +0-?2 ", "?10 +0-?4 ", "?10 +?4 -0", "?10 +?2 -0" }
+Handles
+([][]com.sun.star.beans.PropertyValue) { { { Name = "Position", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 12 }, Type = (short) 1 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeYMaximum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 73490 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeYMinimum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RefY", Handle = (long) 0, Value = (any) { (long) 0 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } } }
+MirroredX
+false
+MirroredY
+false
+Path
+([]com.sun.star.beans.PropertyValue) { { Name = "Coordinates", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeParameterPair) { { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 6 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 12 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 12 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 11 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 11 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 12 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 9 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 12 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 9 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 13 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 13 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 14 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 14 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 13 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 6 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 13 }, Type = (short) 1 } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "Segments", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeSegment) { { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 11 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "TextFrames", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeTextFrame) { { TopLeft = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 6 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 12 }, Type = (short) 1 } }, BottomRight = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 9 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 13 }, Type = (short) 1 } } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }
+Type
+"ooxml-non-primitive"
+ViewBox
+(com.sun.star.awt.Rectangle) { X = (long) 0, Y = (long) 0, Width = (long) 0, Height = (long) 0 }
+/* moon */
+AdjustmentValues
+([]com.sun.star.drawing.EnhancedCustomShapeAdjustmentValue) { { Value = (any) { (long) 50000 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE, Name = "adj" } }
+Equations
+([]string) { "if(0-$0 ,0,if(87500-$0 ,$0 ,87500))", "min(logwidth,logheight)", "?1 *?0 /100000", "?2 *logwidth/?1 ", "?1 +0-?2 ", "?2 *?2 /?4 ", "?1 *?1 /?4 ", "?6 *2/1", "?7 +0-?5 ", "?8 +0-?2 ", "?9 *logwidth/?1 ", "?8 *1/2", "?11 +0-?2 ", "logheight/2", "?12 *?13 /?1 ", "logheight/2", "?15 +0-?14 ", "?15 +?14 -0", "?2 *9598/32768", "?18 *logwidth/?1 ", "?1 +0-?18 ", "?1 *?1 /1", "?20 *?20 /1", "?21 +0-?22 ", "sqrt(?23 )", "?24 *?13 /?1 ", "?15 +0-?25 ", "?15 +?25 -0", "?10 +0-?3 ", "?28 *1/2", "?3 +?29 -logwidth", "?30 *-1/1", "?13 *-1/1", "(10800000*atan2(?32 ,?31 ))/pi", "(10800000*atan2(?13 ,?31 ))/pi", "?34 +0-21600000", "?35 +0-?33 ", "logwidth", "logheight", "logwidth", "(5400000)/60000.0", "(10800000)/60000.0", "(?33 )/60000.0", "(?36 )/60000.0" }
+Handles
+([][]com.sun.star.beans.PropertyValue) { { { Name = "Position", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 15 }, Type = (short) 1 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeXMaximum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 87500 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeXMinimum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RefX", Handle = (long) 0, Value = (any) { (long) 0 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } } }
+MirroredX
+false
+MirroredY
+false
+Path
+([]com.sun.star.beans.PropertyValue) { { Name = "Coordinates", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeParameterPair) { { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 37 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 38 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 39 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 13 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 40 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 41 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 29 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 14 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 42 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 43 }, Type = (short) 1 } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "Segments", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeSegment) { { Command = (short) 1, Count = (short) 1 }, { Command = (short) 17, Count = (short) 2 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "TextFrames", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeTextFrame) { { TopLeft = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 19 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 26 }, Type = (short) 1 } }, BottomRight = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 27 }, Type = (short) 1 } } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }
+Type
+"ooxml-non-primitive"
+ViewBox
+(com.sun.star.awt.Rectangle) { X = (long) 0, Y = (long) 0, Width = (long) 0, Height = (long) 0 }
+/* noSmoking */
+AdjustmentValues
+([]com.sun.star.drawing.EnhancedCustomShapeAdjustmentValue) { { Value = (any) { (long) 18750 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE, Name = "adj" } }
+Equations
+([]string) { "if(0-$0 ,0,if(50000-$0 ,$0 ,50000))", "min(logwidth,logheight)", "?1 *?0 /100000", "logwidth/2", "?3 +0-?2 ", "logheight/2", "?5 +0-?2 ", "(10800000*atan2(logheight,logwidth))/pi", "?6 *cos(pi*(?7 )/10800000)", "?4 *sin(pi*(?7 )/10800000)", "sqrt(?8 *?8 +?9 *?9 +0*0)", "?4 *?6 /?10 ", "?2 *1/2", "(10800000*atan2(?12 ,?11 ))/pi", "?13 *2/1", "-10800000+?14 -0", "(10800000*atan2(logheight,logwidth))/pi", "?16 +0-?13 ", "?17 +0-10800000", "?6 *cos(pi*(?17 )/10800000)", "?4 *sin(pi*(?17 )/10800000)", "sqrt(?19 *?19 +?20 *?20 +0*0)", "?4 *?6 /?21 ", "?22 *cos(pi*(?17 )/10800000)", "?22 *sin(pi*(?17 )/10800000)", "logwidth/2", "?25 +?23 -0", "logheight/2", "?27 +?24 -0", "?25 +0-?23 ", "?27 +0-?24 ", "?3 *cos(pi*(2700000)/10800000)", "?5 *sin(pi*(2700000)/10800000)", "?25 +0-?31 ", "?25 +?31 -0", "?27 +0-?32 ", "?27 +?32 -0", "logheight", "logwidth", "(10800000)/60000.0", "(5400000)/60000.0", "(16200000)/60000.0", "(5400000)/60000.0", "(0)/60000.0", "(5400000)/60000.0", "(5400000)/60000.0", "(5400000)/60000.0", "(?17 )/60000.0", "(?15 )/60000.0", "(?18 )/60000.0", "(?15 )/60000.0" }
+Handles
+([][]com.sun.star.beans.PropertyValue) { { { Name = "Position", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 27 }, Type = (short) 1 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RadiusRangeMaximum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 50000 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RadiusRangeMinimum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RefR", Handle = (long) 0, Value = (any) { (long) 0 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } } }
+MirroredX
+false
+MirroredY
+false
+Path
+([]com.sun.star.beans.PropertyValue) { { Name = "Coordinates", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeParameterPair) { { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 27 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 39 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 40 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 41 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 42 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 43 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 44 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 45 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 46 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 26 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 28 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 6 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 47 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 48 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 29 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 30 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 6 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 49 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 50 }, Type = (short) 1 } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "Segments", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeSegment) { { Command = (short) 1, Count = (short) 1 }, { Command = (short) 17, Count = (short) 4 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 1, Count = (short) 1 }, { Command = (short) 17, Count = (short) 1 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 1, Count = (short) 1 }, { Command = (short) 17, Count = (short) 1 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "TextFrames", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeTextFrame) { { TopLeft = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 33 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 35 }, Type = (short) 1 } }, BottomRight = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 34 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 36 }, Type = (short) 1 } } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }
+Type
+"ooxml-non-primitive"
+ViewBox
+(com.sun.star.awt.Rectangle) { X = (long) 0, Y = (long) 0, Width = (long) 0, Height = (long) 0 }
+/* nonIsoscelesTrapezoid */
+AdjustmentValues
+([]com.sun.star.drawing.EnhancedCustomShapeAdjustmentValue) { { Value = (any) { (long) 25000 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE, Name = "adj1" }, { Value = (any) { (long) 25000 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE, Name = "adj2" } }
+Equations
+([]string) { "min(logwidth,logheight)", "50000*logwidth/?0 ", "if(0-$0 ,0,if(?1 -$0 ,$0 ,?1 ))", "if(0-$1 ,0,if(?1 -$1 ,$1 ,?1 ))", "?0 *?2 /200000", "?0 *?2 /100000", "?0 *?3 /100000", "logwidth+0-?6 ", "(logwidth+?7 )/2", "logwidth/3", "?9 *?2 /?1 ", "max(?2 ,?3 )", "logheight/3", "?12 *?11 /?1 ", "?9 *?3 /?1 ", "logwidth+0-?14 ", "logheight/2", "logwidth/2", "logheight", "logwidth" }
+Handles
+([][]com.sun.star.beans.PropertyValue) { { { Name = "Position", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeXMaximum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 1 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeXMinimum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RefX", Handle = (long) 0, Value = (any) { (long) 0 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }, { { Name = "Position", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeXMaximum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 1 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeXMinimum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RefX", Handle = (long) 0, Value = (any) { (long) 1 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } } }
+MirroredX
+false
+MirroredY
+false
+Path
+([]com.sun.star.beans.PropertyValue) { { Name = "Coordinates", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeParameterPair) { { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 18 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 19 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 18 }, Type = (short) 1 } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "Segments", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeSegment) { { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 3 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "TextFrames", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeTextFrame) { { TopLeft = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 10 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 13 }, Type = (short) 1 } }, BottomRight = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 15 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 18 }, Type = (short) 1 } } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }
+Type
+"ooxml-non-primitive"
+ViewBox
+(com.sun.star.awt.Rectangle) { X = (long) 0, Y = (long) 0, Width = (long) 0, Height = (long) 0 }
+/* notchedRightArrow */
+AdjustmentValues
+([]com.sun.star.drawing.EnhancedCustomShapeAdjustmentValue) { { Value = (any) { (long) 50000 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE, Name = "adj1" }, { Value = (any) { (long) 50000 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE, Name = "adj2" } }
+Equations
+([]string) { "min(logwidth,logheight)", "100000*logwidth/?0 ", "if(0-$0 ,0,if(100000-$0 ,$0 ,100000))", "if(0-$1 ,0,if(?1 -$1 ,$1 ,?1 ))", "?0 *?3 /100000", "logwidth+0-?4 ", "logheight*?2 /200000", "logheight/2", "?7 +0-?6 ", "?7 +?6 -0", "logheight/2", "?6 *?4 /?10 ", "logwidth+0-?11 ", "logwidth", "logheight" }
+Handles
+([][]com.sun.star.beans.PropertyValue) { { { Name = "Position", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 13 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 1 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeYMaximum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 100000 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeYMinimum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RefY", Handle = (long) 0, Value = (any) { (long) 0 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }, { { Name = "Position", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeXMaximum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 1 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeXMinimum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RefX", Handle = (long) 0, Value = (any) { (long) 1 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } } }
+MirroredX
+false
+MirroredY
+false
+Path
+([]com.sun.star.beans.PropertyValue) { { Name = "Coordinates", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeParameterPair) { { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 13 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 14 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 9 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 9 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 11 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7 }, Type = (short) 1 } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "Segments", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeSegment) { { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 7 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "TextFrames", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeTextFrame) { { TopLeft = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 11 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 1 } }, BottomRight = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 12 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 9 }, Type = (short) 1 } } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }
+Type
+"ooxml-non-primitive"
+ViewBox
+(com.sun.star.awt.Rectangle) { X = (long) 0, Y = (long) 0, Width = (long) 0, Height = (long) 0 }
+/* octagon */
+AdjustmentValues
+([]com.sun.star.drawing.EnhancedCustomShapeAdjustmentValue) { { Value = (any) { (long) 29289 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE, Name = "adj" } }
+Equations
+([]string) { "if(0-$0 ,0,if(50000-$0 ,$0 ,50000))", "min(logwidth,logheight)", "?1 *?0 /100000", "logwidth+0-?2 ", "logheight+0-?2 ", "?2 *1/2", "logwidth+0-?5 ", "logheight+0-?5 ", "logwidth", "logheight" }
+Handles
+([][]com.sun.star.beans.PropertyValue) { { { Name = "Position", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeXMaximum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 50000 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeXMinimum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RefX", Handle = (long) 0, Value = (any) { (long) 0 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } } }
+MirroredX
+false
+MirroredY
+false
+Path
+([]com.sun.star.beans.PropertyValue) { { Name = "Coordinates", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeParameterPair) { { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 9 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 9 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "GluePoints", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeParameterPair) { { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 9 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 9 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "Segments", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeSegment) { { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 7 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "TextFrames", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeTextFrame) { { TopLeft = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 1 } }, BottomRight = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 6 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7 }, Type = (short) 1 } } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }
+Type
+"ooxml-non-primitive"
+ViewBox
+(com.sun.star.awt.Rectangle) { X = (long) 0, Y = (long) 0, Width = (long) 0, Height = (long) 0 }
+/* parallelogram */
+AdjustmentValues
+([]com.sun.star.drawing.EnhancedCustomShapeAdjustmentValue) { { Value = (any) { (long) 25000 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE, Name = "adj" } }
+Equations
+([]string) { "min(logwidth,logheight)", "100000*logwidth/?0 ", "if(0-$0 ,0,if(?1 -$0 ,$0 ,?1 ))", "?0 *?2 /200000", "?0 *?2 /100000", "logwidth+0-?3 ", "logwidth+0-?4 ", "?6 *1/2", "logwidth+0-?7 ", "logwidth/2", "?9 *?2 /?1 ", "5*?2 /?1 ", "(1+?11 )/12", "?12 *logwidth/1", "?12 *logheight/1", "logwidth+0-?13 ", "logheight+0-?14 ", "logwidth/2", "logheight*?17 /?4 ", "if(0-?18 ,0,if(logheight-?18 ,?18 ,logheight))", "logheight+0-?19 ", "logheight/2", "logheight", "logwidth" }
+Handles
+([][]com.sun.star.beans.PropertyValue) { { { Name = "Position", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeXMaximum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 1 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeXMinimum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RefX", Handle = (long) 0, Value = (any) { (long) 0 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } } }
+MirroredX
+false
+MirroredY
+false
+Path
+([]com.sun.star.beans.PropertyValue) { { Name = "Coordinates", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeParameterPair) { { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 22 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 23 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 6 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 22 }, Type = (short) 1 } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "GluePoints", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeParameterPair) { { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 9 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 21 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 22 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 9 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 22 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 10 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 21 }, Type = (short) 1 } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "Segments", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeSegment) { { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 3 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "TextFrames", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeTextFrame) { { TopLeft = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 13 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 14 }, Type = (short) 1 } }, BottomRight = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 15 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 16 }, Type = (short) 1 } } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }
+Type
+"ooxml-non-primitive"
+ViewBox
+(com.sun.star.awt.Rectangle) { X = (long) 0, Y = (long) 0, Width = (long) 0, Height = (long) 0 }
+/* pentagon */
+AdjustmentValues
+([]com.sun.star.drawing.EnhancedCustomShapeAdjustmentValue) { { Value = (any) { (long) 105146 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE, Name = "hf" }, { Value = (any) { (long) 110557 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE, Name = "vf" } }
+Equations
+([]string) { "logwidth/2", "?0 *$0 /100000", "logheight/2", "?2 *$1 /100000", "logheight/2", "?4 *$1 /100000", "?1 *cos(pi*(1080000)/10800000)", "?1 *cos(pi*(18360000)/10800000)", "?3 *sin(pi*(1080000)/10800000)", "?3 *sin(pi*(18360000)/10800000)", "logwidth/2", "?10 +0-?6 ", "?10 +0-?7 ", "?10 +?7 -0", "?10 +?6 -0", "?5 +0-?8 ", "?5 +0-?9 ", "?15 *?7 /?6 ", "logheight" }
+Handles
+([][]com.sun.star.beans.PropertyValue) {}
+MirroredX
+false
+MirroredY
+false
+Path
+([]com.sun.star.beans.PropertyValue) { { Name = "Coordinates", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeParameterPair) { { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 11 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 15 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 10 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 14 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 15 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 13 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 16 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 12 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 16 }, Type = (short) 1 } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "GluePoints", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeParameterPair) { { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 10 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 11 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 15 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 12 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 16 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 10 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 16 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 13 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 16 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 14 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 15 }, Type = (short) 1 } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "Segments", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeSegment) { { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 4 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "TextFrames", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeTextFrame) { { TopLeft = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 12 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 17 }, Type = (short) 1 } }, BottomRight = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 13 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 16 }, Type = (short) 1 } } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }
+Type
+"ooxml-non-primitive"
+ViewBox
+(com.sun.star.awt.Rectangle) { X = (long) 0, Y = (long) 0, Width = (long) 0, Height = (long) 0 }
+/* pie */
+AdjustmentValues
+([]com.sun.star.drawing.EnhancedCustomShapeAdjustmentValue) { { Value = (any) { (long) 0 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE, Name = "adj1" }, { Value = (any) { (long) 16200000 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE, Name = "adj2" } }
+Equations
+([]string) { "if(0-$0 ,0,if(21599999-$0 ,$0 ,21599999))", "if(0-$1 ,0,if(21599999-$1 ,$1 ,21599999))", "?1 +0-?0 ", "?2 +21600000-0", "if(?2 ,?2 ,?3 )", "logwidth/2", "?5 *sin(pi*(?0 )/10800000)", "logheight/2", "?7 *cos(pi*(?0 )/10800000)", "?5 *(cos(atan2(?6 ,?8 )))", "?7 *(sin(atan2(?6 ,?8 )))", "logwidth/2", "?11 +?9 -0", "logheight/2", "?13 +?10 -0", "?5 *sin(pi*(?1 )/10800000)", "?7 *cos(pi*(?1 )/10800000)", "?5 *(cos(atan2(?15 ,?16 )))", "?7 *(sin(atan2(?15 ,?16 )))", "?11 +?17 -0", "?13 +?18 -0", "?5 *cos(pi*(2700000)/10800000)", "?7 *sin(pi*(2700000)/10800000)", "?11 +0-?21 ", "?11 +?21 -0", "?13 +0-?22 ", "?13 +?22 -0", "logwidth", "logheight", "(?0 )/60000.0", "(?4 )/60000.0" }
+Handles
+([][]com.sun.star.beans.PropertyValue) { { { Name = "Position", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 12 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 14 }, Type = (short) 1 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RefAngle", Handle = (long) 0, Value = (any) { (long) 0 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }, { { Name = "Position", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 19 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 20 }, Type = (short) 1 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RefAngle", Handle = (long) 0, Value = (any) { (long) 1 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } } }
+MirroredX
+false
+MirroredY
+false
+Path
+([]com.sun.star.beans.PropertyValue) { { Name = "Coordinates", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeParameterPair) { { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 12 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 14 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 29 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 30 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 11 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 13 }, Type = (short) 1 } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "GluePoints", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeParameterPair) { { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 12 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 13 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 11 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 12 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 13 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 11 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "Segments", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeSegment) { { Command = (short) 1, Count = (short) 1 }, { Command = (short) 17, Count = (short) 1 }, { Command = (short) 2, Count = (short) 1 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "TextFrames", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeTextFrame) { { TopLeft = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 23 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 24 }, Type = (short) 1 } }, BottomRight = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 25 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 26 }, Type = (short) 1 } } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }
+Type
+"ooxml-non-primitive"
+ViewBox
+(com.sun.star.awt.Rectangle) { X = (long) 0, Y = (long) 0, Width = (long) 0, Height = (long) 0 }
+/* pieWedge */
+AdjustmentValues
+([]com.sun.star.drawing.EnhancedCustomShapeAdjustmentValue) {}
+Equations
+([]string) { "logwidth*cos(pi*(13500000)/10800000)", "logheight*sin(pi*(13500000)/10800000)", "logwidth+?0 -0", "logheight+?1 -0", "logwidth", "logheight/2", "logwidth/2", "logheight", "logwidth", "logheight", "(10800000)/60000.0", "(5400000)/60000.0" }
+Handles
+([][]com.sun.star.beans.PropertyValue) {}
+MirroredX
+false
+MirroredY
+false
+Path
+([]com.sun.star.beans.PropertyValue) { { Name = "Coordinates", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeParameterPair) { { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 9 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 10 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 11 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7 }, Type = (short) 1 } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "Segments", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeSegment) { { Command = (short) 1, Count = (short) 1 }, { Command = (short) 17, Count = (short) 1 }, { Command = (short) 2, Count = (short) 1 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "TextFrames", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeTextFrame) { { TopLeft = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 } }, BottomRight = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7 }, Type = (short) 1 } } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }
+Type
+"ooxml-non-primitive"
+ViewBox
+(com.sun.star.awt.Rectangle) { X = (long) 0, Y = (long) 0, Width = (long) 0, Height = (long) 0 }
+/* plaque */
+AdjustmentValues
+([]com.sun.star.drawing.EnhancedCustomShapeAdjustmentValue) { { Value = (any) { (long) 16667 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE, Name = "adj" } }
+Equations
+([]string) { "if(0-$0 ,0,if(50000-$0 ,$0 ,50000))", "min(logwidth,logheight)", "?1 *?0 /100000", "logwidth+0-?2 ", "logheight+0-?2 ", "?2 *70711/100000", "logwidth+0-?5 ", "logheight+0-?5 ", "logwidth/2", "logheight/2", "logheight", "logwidth", "(5400000)/60000.0", "(-5400000)/60000.0", "(10800000)/60000.0", "(-5400000)/60000.0", "(16200000)/60000.0", "(-5400000)/60000.0", "(0)/60000.0", "(-5400000)/60000.0" }
+Handles
+([][]com.sun.star.beans.PropertyValue) { { { Name = "Position", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeXMaximum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 50000 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeXMinimum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RefX", Handle = (long) 0, Value = (any) { (long) 0 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } } }
+MirroredX
+false
+MirroredY
+false
+Path
+([]com.sun.star.beans.PropertyValue) { { Name = "Coordinates", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeParameterPair) { { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 12 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 13 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 14 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 15 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 11 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 16 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 17 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 10 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 18 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 19 }, Type = (short) 1 } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "Segments", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeSegment) { { Command = (short) 1, Count = (short) 1 }, { Command = (short) 17, Count = (short) 1 }, { Command = (short) 2, Count = (short) 1 }, { Command = (short) 17, Count = (short) 1 }, { Command = (short) 2, Count = (short) 1 }, { Command = (short) 17, Count = (short) 1 }, { Command = (short) 2, Count = (short) 1 }, { Command = (short) 17, Count = (short) 1 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "TextFrames", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeTextFrame) { { TopLeft = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 1 } }, BottomRight = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 6 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7 }, Type = (short) 1 } } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }
+Type
+"ooxml-non-primitive"
+ViewBox
+(com.sun.star.awt.Rectangle) { X = (long) 0, Y = (long) 0, Width = (long) 0, Height = (long) 0 }
+/* plaqueTabs */
+AdjustmentValues
+([]com.sun.star.drawing.EnhancedCustomShapeAdjustmentValue) {}
+Equations
+([]string) { "sqrt(logwidth*logwidth+logheight*logheight+0*0)", "1*?0 /20", "0+logheight-?1 ", "0+logwidth-?1 ", "logheight", "logwidth", "(0)/60000.0", "(5400000)/60000.0", "(16200000)/60000.0", "(5400000)/60000.0", "(5400000)/60000.0", "(5400000)/60000.0", "(10800000)/60000.0", "(5400000)/60000.0" }
+Handles
+([][]com.sun.star.beans.PropertyValue) {}
+MirroredX
+false
+MirroredY
+false
+Path
+([]com.sun.star.beans.PropertyValue) { { Name = "Coordinates", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeParameterPair) { { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 6 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 9 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 10 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 11 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 12 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 13 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "Segments", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeSegment) { { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 1 }, { Command = (short) 17, Count = (short) 1 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 }, { Command = (short) 1, Count = (short) 1 }, { Command = (short) 17, Count = (short) 1 }, { Command = (short) 2, Count = (short) 1 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 }, { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 1 }, { Command = (short) 17, Count = (short) 1 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 }, { Command = (short) 1, Count = (short) 1 }, { Command = (short) 17, Count = (short) 1 }, { Command = (short) 2, Count = (short) 1 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "TextFrames", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeTextFrame) { { TopLeft = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 1 } }, BottomRight = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 } } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }
+Type
+"ooxml-non-primitive"
+ViewBox
+(com.sun.star.awt.Rectangle) { X = (long) 0, Y = (long) 0, Width = (long) 0, Height = (long) 0 }
+/* plus */
+AdjustmentValues
+([]com.sun.star.drawing.EnhancedCustomShapeAdjustmentValue) { { Value = (any) { (long) 25000 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE, Name = "adj" } }
+Equations
+([]string) { "if(0-$0 ,0,if(50000-$0 ,$0 ,50000))", "min(logwidth,logheight)", "?1 *?0 /100000", "logwidth+0-?2 ", "logheight+0-?2 ", "logwidth+0-logheight", "if(?5 ,0,?2 )", "if(?5 ,logwidth,?3 )", "if(?5 ,?2 ,0)", "if(?5 ,?4 ,logheight)", "logwidth/2", "logheight/2", "logheight", "logwidth" }
+Handles
+([][]com.sun.star.beans.PropertyValue) { { { Name = "Position", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeXMaximum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 50000 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeXMinimum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RefX", Handle = (long) 0, Value = (any) { (long) 0 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } } }
+MirroredX
+false
+MirroredY
+false
+Path
+([]com.sun.star.beans.PropertyValue) { { Name = "Coordinates", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeParameterPair) { { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 13 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 13 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 12 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 12 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "Segments", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeSegment) { { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 11 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "TextFrames", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeTextFrame) { { TopLeft = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 6 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 1 } }, BottomRight = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 9 }, Type = (short) 1 } } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }
+Type
+"ooxml-non-primitive"
+ViewBox
+(com.sun.star.awt.Rectangle) { X = (long) 0, Y = (long) 0, Width = (long) 0, Height = (long) 0 }
+/* quadArrow */
+AdjustmentValues
+([]com.sun.star.drawing.EnhancedCustomShapeAdjustmentValue) { { Value = (any) { (long) 22500 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE, Name = "adj1" }, { Value = (any) { (long) 22500 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE, Name = "adj2" }, { Value = (any) { (long) 22500 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE, Name = "adj3" } }
+Equations
+([]string) { "if(0-$1 ,0,if(50000-$1 ,$1 ,50000))", "?0 *2/1", "if(0-$0 ,0,if(?1 -$0 ,$0 ,?1 ))", "100000+0-?1 ", "?3 *1/2", "if(0-$2 ,0,if(?4 -$2 ,$2 ,?4 ))", "min(logwidth,logheight)", "?6 *?5 /100000", "?6 *?0 /100000", "logwidth/2", "?9 +0-?8 ", "?9 +?8 -0", "?6 *?2 /200000", "?9 +0-?12 ", "?9 +?12 -0", "logwidth+0-?7 ", "logheight/2", "?16 +0-?8 ", "?16 +?8 -0", "?16 +0-?12 ", "?16 +?12 -0", "logheight+0-?7 ", "?12 *?7 /?8 ", "logwidth+0-?22 ", "logwidth", "logheight" }
+Handles
+([][]com.sun.star.beans.PropertyValue) { { { Name = "Position", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 13 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7 }, Type = (short) 1 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeXMaximum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 1 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeXMinimum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RefX", Handle = (long) 0, Value = (any) { (long) 0 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }, { { Name = "Position", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 10 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeXMaximum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 50000 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeXMinimum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RefX", Handle = (long) 0, Value = (any) { (long) 1 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }, { { Name = "Position", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 24 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7 }, Type = (short) 1 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeYMaximum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeYMinimum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RefY", Handle = (long) 0, Value = (any) { (long) 2 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } } }
+MirroredX
+false
+MirroredY
+false
+Path
+([]com.sun.star.beans.PropertyValue) { { Name = "Coordinates", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeParameterPair) { { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 16 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 17 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 19 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 13 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 19 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 13 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 10 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 9 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 11 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 14 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 14 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 19 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 15 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 19 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 15 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 17 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 24 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 16 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 15 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 18 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 15 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 20 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 14 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 20 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 14 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 21 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 11 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 21 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 9 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 25 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 10 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 21 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 13 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 21 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 13 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 20 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 20 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 18 }, Type = (short) 1 } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "Segments", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeSegment) { { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 23 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "TextFrames", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeTextFrame) { { TopLeft = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 22 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 19 }, Type = (short) 1 } }, BottomRight = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 23 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 20 }, Type = (short) 1 } } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }
+Type
+"ooxml-non-primitive"
+ViewBox
+(com.sun.star.awt.Rectangle) { X = (long) 0, Y = (long) 0, Width = (long) 0, Height = (long) 0 }
+/* quadArrowCallout */
+AdjustmentValues
+([]com.sun.star.drawing.EnhancedCustomShapeAdjustmentValue) { { Value = (any) { (long) 18515 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE, Name = "adj1" }, { Value = (any) { (long) 18515 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE, Name = "adj2" }, { Value = (any) { (long) 18515 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE, Name = "adj3" }, { Value = (any) { (long) 48123 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE, Name = "adj4" } }
+Equations
+([]string) { "if(0-$1 ,0,if(50000-$1 ,$1 ,50000))", "?0 *2/1", "if(0-$0 ,0,if(?1 -$0 ,$0 ,?1 ))", "50000+0-?0 ", "if(0-$2 ,0,if(?3 -$2 ,$2 ,?3 ))", "?4 *2/1", "100000+0-?5 ", "if(?2 -$3 ,?2 ,if(?6 -$3 ,$3 ,?6 ))", "min(logwidth,logheight)", "?8 *?0 /100000", "?8 *?2 /200000", "?8 *?4 /100000", "logwidth*?7 /200000", "logheight*?7 /200000", "logwidth+0-?11 ", "logwidth/2", "?15 +0-?12 ", "?15 +?12 -0", "?15 +0-?9 ", "?15 +?9 -0", "?15 +0-?10 ", "?15 +?10 -0", "logheight+0-?11 ", "logheight/2", "?23 +0-?13 ", "?23 +?13 -0", "?23 +0-?9 ", "?23 +?9 -0", "?23 +0-?10 ", "?23 +?10 -0", "logwidth", "logheight" }
+Handles
+([][]com.sun.star.beans.PropertyValue) { { { Name = "Position", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 20 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 11 }, Type = (short) 1 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeXMaximum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 1 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeXMinimum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RefX", Handle = (long) 0, Value = (any) { (long) 0 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }, { { Name = "Position", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 18 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeXMaximum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 50000 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeXMinimum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RefX", Handle = (long) 0, Value = (any) { (long) 1 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }, { { Name = "Position", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 30 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 11 }, Type = (short) 1 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeYMaximum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeYMinimum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RefY", Handle = (long) 0, Value = (any) { (long) 2 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }, { { Name = "Position", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 24 }, Type = (short) 1 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeYMaximum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 6 }, Type = (short) 1 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeYMinimum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RefY", Handle = (long) 0, Value = (any) { (long) 3 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } } }
+MirroredX
+false
+MirroredY
+false
+Path
+([]com.sun.star.beans.PropertyValue) { { Name = "Coordinates", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeParameterPair) { { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 23 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 11 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 26 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 11 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 28 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 16 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 28 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 16 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 24 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 20 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 24 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 20 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 11 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 18 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 11 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 15 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 19 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 11 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 21 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 11 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 21 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 24 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 17 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 24 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 17 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 28 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 14 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 28 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 14 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 26 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 30 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 23 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 14 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 27 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 14 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 29 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 17 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 29 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 17 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 25 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 21 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 25 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 21 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 22 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 19 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 22 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 15 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 31 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 18 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 22 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 20 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 22 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 20 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 25 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 16 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 25 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 16 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 29 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 11 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 29 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 11 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 27 }, Type = (short) 1 } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "Segments", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeSegment) { { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 31 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "TextFrames", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeTextFrame) { { TopLeft = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 16 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 24 }, Type = (short) 1 } }, BottomRight = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 17 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 25 }, Type = (short) 1 } } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }
+Type
+"ooxml-non-primitive"
+ViewBox
+(com.sun.star.awt.Rectangle) { X = (long) 0, Y = (long) 0, Width = (long) 0, Height = (long) 0 }
+/* rect */
+AdjustmentValues
+([]com.sun.star.drawing.EnhancedCustomShapeAdjustmentValue) {}
+Equations
+([]string) { "logwidth/2", "logheight/2", "logheight", "logwidth" }
+Handles
+([][]com.sun.star.beans.PropertyValue) {}
+MirroredX
+false
+MirroredY
+false
+Path
+([]com.sun.star.beans.PropertyValue) { { Name = "Coordinates", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeParameterPair) { { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "Segments", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeSegment) { { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 3 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "TextFrames", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeTextFrame) { { TopLeft = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, BottomRight = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 } } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }
+Type
+"ooxml-non-primitive"
+ViewBox
+(com.sun.star.awt.Rectangle) { X = (long) 0, Y = (long) 0, Width = (long) 0, Height = (long) 0 }
+/* ribbon */
+AdjustmentValues
+([]com.sun.star.drawing.EnhancedCustomShapeAdjustmentValue) { { Value = (any) { (long) 16667 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE, Name = "adj1" }, { Value = (any) { (long) 50000 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE, Name = "adj2" } }
+Equations
+([]string) { "if(0-$0 ,0,if(33333-$0 ,$0 ,33333))", "if(25000-$1 ,25000,if(75000-$1 ,$1 ,75000))", "logwidth/8", "logwidth+0-?2 ", "logwidth*?1 /200000", "logwidth/2", "?5 +0-?4 ", "?5 +?4 -0", "logwidth/32", "?6 +?8 -0", "?7 +0-?8 ", "?6 +?2 -0", "?7 +0-?2 ", "?11 +0-?8 ", "?12 +?8 -0", "logheight*?0 /200000", "logheight*?0 /100000", "logheight+0-?16 ", "?17 *1/2", "logheight*?0 /400000", "logheight+0-?19 ", "?16 +0-?19 ", "logheight", "(16200000)/60000.0", "(10800000)/60000.0", "(16200000)/60000.0", "(-10800000)/60000.0", "(5400000)/60000.0", "(-10800000)/60000.0", "(5400000)/60000.0", "(10800000)/60000.0", "logwidth", "(0)/60000.0", "(5400000)/60000.0", "(5400000)/60000.0", "(5400000)/60000.0", "(0)/60000.0", "(5400000)/60000.0", "(16200000)/60000.0", "(-10800000)/60000.0", "(10800000)/60000.0", "(-5400000)/60000.0", "(16200000)/60000.0", "(10800000)/60000.0", "(16200000)/60000.0", "(10800000)/60000.0", "(16200000)/60000.0", "(-10800000)/60000.0", "(5400000)/60000.0", "(-10800000)/60000.0", "(5400000)/60000.0", "(10800000)/60000.0", "(0)/60000.0", "(5400000)/60000.0", "(5400000)/60000.0", "(5400000)/60000.0" }
+Handles
+([][]com.sun.star.beans.PropertyValue) { { { Name = "Position", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 16 }, Type = (short) 1 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeYMaximum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 33333 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeYMinimum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RefY", Handle = (long) 0, Value = (any) { (long) 0 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }, { { Name = "Position", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 6 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeXMaximum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 75000 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeXMinimum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 25000 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RefX", Handle = (long) 0, Value = (any) { (long) 1 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } } }
+MirroredX
+false
+MirroredY
+false
+Path
+([]com.sun.star.beans.PropertyValue) { { Name = "Coordinates", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeParameterPair) { { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 13 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 19 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 23 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 24 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 9 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 15 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 19 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 25 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 26 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 10 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 16 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 19 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 27 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 28 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 14 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 15 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 19 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 29 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 30 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 31 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 18 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 31 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 17 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 17 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 20 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 19 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 32 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 33 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 9 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 22 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 19 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 34 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 35 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 6 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 17 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 17 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 18 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 11 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 19 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 19 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 36 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 37 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 9 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 15 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 19 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 38 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 39 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 11 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 16 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 12 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 19 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 19 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 40 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 41 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 10 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 15 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 19 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 42 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 43 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 12 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 16 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 13 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 19 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 44 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 45 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 9 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 15 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 19 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 46 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 47 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 10 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 16 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 19 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 48 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 49 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 14 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 15 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 19 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 50 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 51 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 31 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 18 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 31 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 17 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 17 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 20 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 19 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 52 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 53 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 9 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 22 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 19 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 54 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 55 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 6 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 17 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 17 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 18 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 11 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 19 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 11 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 16 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 12 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 16 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 12 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 19 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 6 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 17 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 6 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 21 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 21 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 17 }, Type = (short) 1 } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "Segments", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeSegment) { { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 1 }, { Command = (short) 17, Count = (short) 1 }, { Command = (short) 2, Count = (short) 1 }, { Command = (short) 17, Count = (short) 1 }, { Command = (short) 2, Count = (short) 1 }, { Command = (short) 17, Count = (short) 1 }, { Command = (short) 2, Count = (short) 1 }, { Command = (short) 17, Count = (short) 1 }, { Command = (short) 2, Count = (short) 5 }, { Command = (short) 17, Count = (short) 1 }, { Command = (short) 2, Count = (short) 1 }, { Command = (short) 17, Count = (short) 1 }, { Command = (short) 2, Count = (short) 3 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 7, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 }, { Command = (short) 1, Count = (short) 1 }, { Command = (short) 17, Count = (short) 1 }, { Command = (short) 2, Count = (short) 1 }, { Command = (short) 17, Count = (short) 1 }, { Command = (short) 2, Count = (short) 1 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 1, Count = (short) 1 }, { Command = (short) 17, Count = (short) 1 }, { Command = (short) 2, Count = (short) 1 }, { Command = (short) 17, Count = (short) 1 }, { Command = (short) 2, Count = (short) 1 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 19, Count = (short) 0 }, { Command = (short) 7, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 }, { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 1 }, { Command = (short) 17, Count = (short) 1 }, { Command = (short) 2, Count = (short) 1 }, { Command = (short) 17, Count = (short) 1 }, { Command = (short) 2, Count = (short) 1 }, { Command = (short) 17, Count = (short) 1 }, { Command = (short) 2, Count = (short) 1 }, { Command = (short) 17, Count = (short) 1 }, { Command = (short) 2, Count = (short) 5 }, { Command = (short) 17, Count = (short) 1 }, { Command = (short) 2, Count = (short) 1 }, { Command = (short) 17, Count = (short) 1 }, { Command = (short) 2, Count = (short) 3 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 1 }, { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 1 }, { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 1 }, { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 1 }, { Command = (short) 6, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "TextFrames", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeTextFrame) { { TopLeft = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 6 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 16 }, Type = (short) 1 } }, BottomRight = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 22 }, Type = (short) 1 } } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }
+Type
+"ooxml-non-primitive"
+ViewBox
+(com.sun.star.awt.Rectangle) { X = (long) 0, Y = (long) 0, Width = (long) 0, Height = (long) 0 }
+/* ribbon2 */
+AdjustmentValues
+([]com.sun.star.drawing.EnhancedCustomShapeAdjustmentValue) { { Value = (any) { (long) 16667 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE, Name = "adj1" }, { Value = (any) { (long) 50000 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE, Name = "adj2" } }
+Equations
+([]string) { "if(0-$0 ,0,if(33333-$0 ,$0 ,33333))", "if(25000-$1 ,25000,if(75000-$1 ,$1 ,75000))", "logwidth/8", "logwidth+0-?2 ", "logwidth*?1 /200000", "logwidth/2", "?5 +0-?4 ", "?5 +?4 -0", "logwidth/32", "?6 +?8 -0", "?7 +0-?8 ", "?6 +?2 -0", "?7 +0-?2 ", "?11 +0-?8 ", "?12 +?8 -0", "logheight*?0 /200000", "logheight+0-?15 ", "logheight*?0 /100000", "logheight+0-?17 ", "0+?17 -0", "(?19 +logheight)/2", "logheight*?0 /400000", "logheight+0-?21 ", "?16 +0-?21 ", "logheight", "(5400000)/60000.0", "(-10800000)/60000.0", "(5400000)/60000.0", "(10800000)/60000.0", "(16200000)/60000.0", "(10800000)/60000.0", "(16200000)/60000.0", "(-10800000)/60000.0", "logwidth", "(0)/60000.0", "(-5400000)/60000.0", "(16200000)/60000.0", "(-5400000)/60000.0", "(0)/60000.0", "(-5400000)/60000.0", "(5400000)/60000.0", "(10800000)/60000.0", "(10800000)/60000.0", "(5400000)/60000.0", "(5400000)/60000.0", "(-10800000)/60000.0", "(10800000)/60000.0", "(5400000)/60000.0", "(16200000)/60000.0", "(5400000)/60000.0", "(5400000)/60000.0", "(10800000)/60000.0", "(5400000)/60000.0", "(-10800000)/60000.0", "(16200000)/60000.0", "(-10800000)/60000.0", "(16200000)/60000.0", "(10800000)/60000.0" }
+Handles
+([][]com.sun.star.beans.PropertyValue) { { { Name = "Position", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 18 }, Type = (short) 1 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeYMaximum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 33333 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeYMinimum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RefY", Handle = (long) 0, Value = (any) { (long) 0 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }, { { Name = "Position", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 6 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 24 }, Type = (short) 1 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeXMaximum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 75000 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeXMinimum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 25000 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RefX", Handle = (long) 0, Value = (any) { (long) 1 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } } }
+MirroredX
+false
+MirroredY
+false
+Path
+([]com.sun.star.beans.PropertyValue) { { Name = "Coordinates", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeParameterPair) { { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 24 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 13 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 24 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 21 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 25 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 26 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 9 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 16 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 21 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 27 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 28 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 10 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 18 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 21 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 29 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 30 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 14 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 16 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 21 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 31 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 32 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 33 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 24 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 20 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 33 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 19 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 19 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 21 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 21 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 34 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 35 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 9 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 21 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 36 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 37 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 6 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 19 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 19 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 20 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 11 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 22 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 21 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 38 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 39 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 9 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 16 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 21 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 40 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 41 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 11 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 18 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 12 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 22 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 21 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 42 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 43 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 10 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 16 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 21 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 44 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 45 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 12 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 18 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 24 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 20 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 19 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 6 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 19 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 6 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 21 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 21 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 46 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 47 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 10 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 21 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 48 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 49 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 19 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 19 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 33 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 19 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 20 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 33 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 24 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 14 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 24 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 21 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 50 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 51 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 10 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 16 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 21 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 52 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 53 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 9 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 18 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 21 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 54 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 55 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 13 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 16 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 21 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 56 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 57 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 11 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 18 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 11 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 22 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 12 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 22 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 12 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 18 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 6 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 23 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 6 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 19 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 19 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 23 }, Type = (short) 1 } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "Segments", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeSegment) { { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 1 }, { Command = (short) 17, Count = (short) 1 }, { Command = (short) 2, Count = (short) 1 }, { Command = (short) 17, Count = (short) 1 }, { Command = (short) 2, Count = (short) 1 }, { Command = (short) 17, Count = (short) 1 }, { Command = (short) 2, Count = (short) 1 }, { Command = (short) 17, Count = (short) 1 }, { Command = (short) 2, Count = (short) 5 }, { Command = (short) 17, Count = (short) 1 }, { Command = (short) 2, Count = (short) 1 }, { Command = (short) 17, Count = (short) 1 }, { Command = (short) 2, Count = (short) 3 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 7, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 }, { Command = (short) 1, Count = (short) 1 }, { Command = (short) 17, Count = (short) 1 }, { Command = (short) 2, Count = (short) 1 }, { Command = (short) 17, Count = (short) 1 }, { Command = (short) 2, Count = (short) 1 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 1, Count = (short) 1 }, { Command = (short) 17, Count = (short) 1 }, { Command = (short) 2, Count = (short) 1 }, { Command = (short) 17, Count = (short) 1 }, { Command = (short) 2, Count = (short) 1 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 19, Count = (short) 0 }, { Command = (short) 7, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 }, { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 4 }, { Command = (short) 17, Count = (short) 1 }, { Command = (short) 2, Count = (short) 1 }, { Command = (short) 17, Count = (short) 1 }, { Command = (short) 2, Count = (short) 6 }, { Command = (short) 17, Count = (short) 1 }, { Command = (short) 2, Count = (short) 1 }, { Command = (short) 17, Count = (short) 1 }, { Command = (short) 2, Count = (short) 1 }, { Command = (short) 17, Count = (short) 1 }, { Command = (short) 2, Count = (short) 1 }, { Command = (short) 17, Count = (short) 1 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 1 }, { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 1 }, { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 1 }, { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 1 }, { Command = (short) 6, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "TextFrames", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeTextFrame) { { TopLeft = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 6 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, BottomRight = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 18 }, Type = (short) 1 } } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }
+Type
+"ooxml-non-primitive"
+ViewBox
+(com.sun.star.awt.Rectangle) { X = (long) 0, Y = (long) 0, Width = (long) 0, Height = (long) 0 }
+/* rightArrow */
+AdjustmentValues
+([]com.sun.star.drawing.EnhancedCustomShapeAdjustmentValue) { { Value = (any) { (long) 50000 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE, Name = "adj1" }, { Value = (any) { (long) 50000 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE, Name = "adj2" } }
+Equations
+([]string) { "min(logwidth,logheight)", "100000*logwidth/?0 ", "if(0-$0 ,0,if(100000-$0 ,$0 ,100000))", "if(0-$1 ,0,if(?1 -$1 ,$1 ,?1 ))", "?0 *?3 /100000", "logwidth+0-?4 ", "logheight*?2 /200000", "logheight/2", "?7 +0-?6 ", "?7 +?6 -0", "logheight/2", "?8 *?4 /?10 ", "?5 +?11 -0", "logheight", "logwidth" }
+Handles
+([][]com.sun.star.beans.PropertyValue) { { { Name = "Position", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 1 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeYMaximum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 100000 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeYMinimum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RefY", Handle = (long) 0, Value = (any) { (long) 0 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }, { { Name = "Position", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeXMaximum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 1 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeXMinimum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RefX", Handle = (long) 0, Value = (any) { (long) 1 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } } }
+MirroredX
+false
+MirroredY
+false
+Path
+([]com.sun.star.beans.PropertyValue) { { Name = "Coordinates", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeParameterPair) { { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 14 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 13 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 9 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 9 }, Type = (short) 1 } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "Segments", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeSegment) { { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 6 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "TextFrames", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeTextFrame) { { TopLeft = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 1 } }, BottomRight = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 12 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 9 }, Type = (short) 1 } } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }
+Type
+"ooxml-non-primitive"
+ViewBox
+(com.sun.star.awt.Rectangle) { X = (long) 0, Y = (long) 0, Width = (long) 0, Height = (long) 0 }
+/* rightArrowCallout */
+AdjustmentValues
+([]com.sun.star.drawing.EnhancedCustomShapeAdjustmentValue) { { Value = (any) { (long) 25000 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE, Name = "adj1" }, { Value = (any) { (long) 25000 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE, Name = "adj2" }, { Value = (any) { (long) 25000 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE, Name = "adj3" }, { Value = (any) { (long) 64977 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE, Name = "adj4" } }
+Equations
+([]string) { "min(logwidth,logheight)", "50000*logheight/?0 ", "if(0-$1 ,0,if(?1 -$1 ,$1 ,?1 ))", "?2 *2/1", "if(0-$0 ,0,if(?3 -$0 ,$0 ,?3 ))", "100000*logwidth/?0 ", "if(0-$2 ,0,if(?5 -$2 ,$2 ,?5 ))", "?6 *?0 /logwidth", "100000+0-?7 ", "if(0-$3 ,0,if(?8 -$3 ,$3 ,?8 ))", "?0 *?2 /100000", "?0 *?4 /200000", "logheight/2", "?12 +0-?10 ", "?12 +0-?11 ", "?12 +?11 -0", "?12 +?10 -0", "?0 *?6 /100000", "logwidth+0-?17 ", "logwidth*?9 /100000", "?19 *1/2", "logwidth", "logheight" }
+Handles
+([][]com.sun.star.beans.PropertyValue) { { { Name = "Position", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 18 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 14 }, Type = (short) 1 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeYMaximum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeYMinimum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RefY", Handle = (long) 0, Value = (any) { (long) 0 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }, { { Name = "Position", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 21 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 13 }, Type = (short) 1 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeYMaximum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 1 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeYMinimum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RefY", Handle = (long) 0, Value = (any) { (long) 1 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }, { { Name = "Position", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 18 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeXMaximum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 1 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeXMinimum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RefX", Handle = (long) 0, Value = (any) { (long) 2 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }, { { Name = "Position", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 19 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 22 }, Type = (short) 1 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeXMaximum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 1 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeXMinimum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RefX", Handle = (long) 0, Value = (any) { (long) 3 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } } }
+MirroredX
+false
+MirroredY
+false
+Path
+([]com.sun.star.beans.PropertyValue) { { Name = "Coordinates", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeParameterPair) { { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 19 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 19 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 14 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 18 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 14 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 18 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 13 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 21 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 12 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 18 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 16 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 18 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 15 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 19 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 15 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 19 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 22 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 22 }, Type = (short) 1 } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "Segments", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeSegment) { { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 10 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "TextFrames", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeTextFrame) { { TopLeft = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, BottomRight = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 19 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 22 }, Type = (short) 1 } } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }
+Type
+"ooxml-non-primitive"
+ViewBox
+(com.sun.star.awt.Rectangle) { X = (long) 0, Y = (long) 0, Width = (long) 0, Height = (long) 0 }
+/* rightBrace */
+AdjustmentValues
+([]com.sun.star.drawing.EnhancedCustomShapeAdjustmentValue) { { Value = (any) { (long) 8333 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE, Name = "adj1" }, { Value = (any) { (long) 50000 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE, Name = "adj2" } }
+Equations
+([]string) { "if(0-$1 ,0,if(100000-$1 ,$1 ,100000))", "100000+0-?0 ", "min(?1 ,?0 )", "?2 *1/2", "min(logwidth,logheight)", "?3 *logheight/?4 ", "if(0-$0 ,0,if(?5 -$0 ,$0 ,?5 ))", "?4 *?6 /100000", "logheight*?0 /100000", "?8 +0-?7 ", "logheight+0-?7 ", "logwidth/2", "?11 *cos(pi*(2700000)/10800000)", "?7 *sin(pi*(2700000)/10800000)", "0+?12 -0", "?7 +0-?13 ", "logheight+?13 -?7 ", "logwidth/2", "logwidth", "logheight", "(16200000)/60000.0", "(5400000)/60000.0", "(10800000)/60000.0", "(-5400000)/60000.0", "(16200000)/60000.0", "(-5400000)/60000.0", "(0)/60000.0", "(5400000)/60000.0", "(16200000)/60000.0", "(5400000)/60000.0", "(10800000)/60000.0", "(-5400000)/60000.0", "(16200000)/60000.0", "(-5400000)/60000.0", "(0)/60000.0", "(5400000)/60000.0" }
+Handles
+([][]com.sun.star.beans.PropertyValue) { { { Name = "Position", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 17 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7 }, Type = (short) 1 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeYMaximum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 1 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeYMinimum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RefY", Handle = (long) 0, Value = (any) { (long) 0 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }, { { Name = "Position", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 18 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 1 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeYMaximum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 100000 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeYMinimum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RefY", Handle = (long) 0, Value = (any) { (long) 1 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } } }
+MirroredX
+false
+MirroredY
+false
+Path
+([]com.sun.star.beans.PropertyValue) { { Name = "Coordinates", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeParameterPair) { { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 11 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 20 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 21 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 17 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 9 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 11 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 22 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 23 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 11 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 24 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 25 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 17 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 10 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 11 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 26 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 27 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 11 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 28 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 29 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 17 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 9 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 11 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 30 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 31 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 11 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 32 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 33 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 17 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 10 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 11 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 34 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 35 }, Type = (short) 1 } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "Segments", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeSegment) { { Command = (short) 1, Count = (short) 1 }, { Command = (short) 17, Count = (short) 1 }, { Command = (short) 2, Count = (short) 1 }, { Command = (short) 17, Count = (short) 2 }, { Command = (short) 2, Count = (short) 1 }, { Command = (short) 17, Count = (short) 1 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 7, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 }, { Command = (short) 1, Count = (short) 1 }, { Command = (short) 17, Count = (short) 1 }, { Command = (short) 2, Count = (short) 1 }, { Command = (short) 17, Count = (short) 2 }, { Command = (short) 2, Count = (short) 1 }, { Command = (short) 17, Count = (short) 1 }, { Command = (short) 6, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "TextFrames", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeTextFrame) { { TopLeft = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 15 }, Type = (short) 1 } }, BottomRight = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 14 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 16 }, Type = (short) 1 } } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }
+Type
+"ooxml-non-primitive"
+ViewBox
+(com.sun.star.awt.Rectangle) { X = (long) 0, Y = (long) 0, Width = (long) 0, Height = (long) 0 }
+/* rightBracket */
+AdjustmentValues
+([]com.sun.star.drawing.EnhancedCustomShapeAdjustmentValue) { { Value = (any) { (long) 8333 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE, Name = "adj" } }
+Equations
+([]string) { "min(logwidth,logheight)", "50000*logheight/?0 ", "if(0-$0 ,0,if(?1 -$0 ,$0 ,?1 ))", "?0 *?2 /100000", "logheight+0-?3 ", "logwidth*cos(pi*(2700000)/10800000)", "?3 *sin(pi*(2700000)/10800000)", "0+?5 -0", "?3 +0-?6 ", "logheight+?6 -?3 ", "logwidth", "logheight", "logheight/2", "logwidth", "(16200000)/60000.0", "(5400000)/60000.0", "(0)/60000.0", "(5400000)/60000.0", "(16200000)/60000.0", "(5400000)/60000.0", "(0)/60000.0", "(5400000)/60000.0" }
+Handles
+([][]com.sun.star.beans.PropertyValue) { { { Name = "Position", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 10 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeYMaximum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 1 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeYMinimum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RefY", Handle = (long) 0, Value = (any) { (long) 0 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } } }
+MirroredX
+false
+MirroredY
+false
+Path
+([]com.sun.star.beans.PropertyValue) { { Name = "Coordinates", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeParameterPair) { { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 13 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 14 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 15 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 10 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 13 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 16 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 17 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 13 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 18 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 19 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 10 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 13 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 20 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 21 }, Type = (short) 1 } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "Segments", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeSegment) { { Command = (short) 1, Count = (short) 1 }, { Command = (short) 17, Count = (short) 1 }, { Command = (short) 2, Count = (short) 1 }, { Command = (short) 17, Count = (short) 1 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 7, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 }, { Command = (short) 1, Count = (short) 1 }, { Command = (short) 17, Count = (short) 1 }, { Command = (short) 2, Count = (short) 1 }, { Command = (short) 17, Count = (short) 1 }, { Command = (short) 6, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "TextFrames", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeTextFrame) { { TopLeft = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 1 } }, BottomRight = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 9 }, Type = (short) 1 } } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }
+Type
+"ooxml-non-primitive"
+ViewBox
+(com.sun.star.awt.Rectangle) { X = (long) 0, Y = (long) 0, Width = (long) 0, Height = (long) 0 }
+/* round1Rect */
+AdjustmentValues
+([]com.sun.star.drawing.EnhancedCustomShapeAdjustmentValue) { { Value = (any) { (long) 16667 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE, Name = "adj" } }
+Equations
+([]string) { "if(0-$0 ,0,if(50000-$0 ,$0 ,50000))", "min(logwidth,logheight)", "?1 *?0 /100000", "logwidth+0-?2 ", "?2 *29289/100000", "logwidth+0-?4 ", "logwidth/2", "logheight/2", "logheight", "logwidth", "(16200000)/60000.0", "(5400000)/60000.0" }
+Handles
+([][]com.sun.star.beans.PropertyValue) { { { Name = "Position", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeXMaximum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 50000 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeXMinimum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RefX", Handle = (long) 0, Value = (any) { (long) 0 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } } }
+MirroredX
+false
+MirroredY
+false
+Path
+([]com.sun.star.beans.PropertyValue) { { Name = "Coordinates", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeParameterPair) { { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 10 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 11 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 9 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 1 } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "Segments", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeSegment) { { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 1 }, { Command = (short) 17, Count = (short) 1 }, { Command = (short) 2, Count = (short) 2 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "TextFrames", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeTextFrame) { { TopLeft = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, BottomRight = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 1 } } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }
+Type
+"ooxml-non-primitive"
+ViewBox
+(com.sun.star.awt.Rectangle) { X = (long) 0, Y = (long) 0, Width = (long) 0, Height = (long) 0 }
+/* round2DiagRect */
+AdjustmentValues
+([]com.sun.star.drawing.EnhancedCustomShapeAdjustmentValue) { { Value = (any) { (long) 16667 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE, Name = "adj1" }, { Value = (any) { (long) 0 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE, Name = "adj2" } }
+Equations
+([]string) { "if(0-$0 ,0,if(50000-$0 ,$0 ,50000))", "if(0-$1 ,0,if(50000-$1 ,$1 ,50000))", "min(logwidth,logheight)", "?2 *?0 /100000", "logheight+0-?3 ", "?2 *?1 /100000", "logwidth+0-?5 ", "logheight+0-?5 ", "?3 *29289/100000", "?5 *29289/100000", "?8 +0-?9 ", "if(?10 ,?8 ,?9 )", "logwidth+0-?11 ", "logheight+0-?11 ", "logwidth", "logheight/2", "logwidth/2", "logheight", "(16200000)/60000.0", "(5400000)/60000.0", "(0)/60000.0", "(5400000)/60000.0", "(5400000)/60000.0", "(5400000)/60000.0", "(10800000)/60000.0", "(5400000)/60000.0" }
+Handles
+([][]com.sun.star.beans.PropertyValue) { { { Name = "Position", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeXMaximum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 50000 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeXMinimum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RefX", Handle = (long) 0, Value = (any) { (long) 0 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }, { { Name = "Position", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 6 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeXMaximum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 50000 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeXMinimum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RefX", Handle = (long) 0, Value = (any) { (long) 1 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } } }
+MirroredX
+false
+MirroredY
+false
+Path
+([]com.sun.star.beans.PropertyValue) { { Name = "Coordinates", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeParameterPair) { { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 6 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 18 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 19 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 14 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 20 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 21 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 17 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 22 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 23 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 24 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 25 }, Type = (short) 1 } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "Segments", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeSegment) { { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 1 }, { Command = (short) 17, Count = (short) 1 }, { Command = (short) 2, Count = (short) 1 }, { Command = (short) 17, Count = (short) 1 }, { Command = (short) 2, Count = (short) 1 }, { Command = (short) 17, Count = (short) 1 }, { Command = (short) 2, Count = (short) 1 }, { Command = (short) 17, Count = (short) 1 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "TextFrames", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeTextFrame) { { TopLeft = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 11 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 11 }, Type = (short) 1 } }, BottomRight = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 12 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 13 }, Type = (short) 1 } } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }
+Type
+"ooxml-non-primitive"
+ViewBox
+(com.sun.star.awt.Rectangle) { X = (long) 0, Y = (long) 0, Width = (long) 0, Height = (long) 0 }
+/* round2SameRect */
+AdjustmentValues
+([]com.sun.star.drawing.EnhancedCustomShapeAdjustmentValue) { { Value = (any) { (long) 16667 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE, Name = "adj1" }, { Value = (any) { (long) 0 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE, Name = "adj2" } }
+Equations
+([]string) { "if(0-$0 ,0,if(50000-$0 ,$0 ,50000))", "if(0-$1 ,0,if(50000-$1 ,$1 ,50000))", "min(logwidth,logheight)", "?2 *?0 /100000", "logwidth+0-?3 ", "?2 *?1 /100000", "logwidth+0-?5 ", "logheight+0-?5 ", "?3 +0-?5 ", "?3 *29289/100000", "?5 *29289/100000", "if(?8 ,?9 ,?10 )", "logwidth+0-?11 ", "logheight+0-?10 ", "logheight", "logwidth", "logheight/2", "logwidth/2", "(16200000)/60000.0", "(5400000)/60000.0", "(0)/60000.0", "(5400000)/60000.0", "(5400000)/60000.0", "(5400000)/60000.0", "(10800000)/60000.0", "(5400000)/60000.0" }
+Handles
+([][]com.sun.star.beans.PropertyValue) { { { Name = "Position", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeXMaximum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 50000 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeXMinimum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RefX", Handle = (long) 0, Value = (any) { (long) 0 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }, { { Name = "Position", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 14 }, Type = (short) 1 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeXMaximum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 50000 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeXMinimum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RefX", Handle = (long) 0, Value = (any) { (long) 1 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } } }
+MirroredX
+false
+MirroredY
+false
+Path
+([]com.sun.star.beans.PropertyValue) { { Name = "Coordinates", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeParameterPair) { { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 18 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 19 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 15 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 20 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 21 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 14 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 22 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 23 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 24 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 25 }, Type = (short) 1 } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "Segments", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeSegment) { { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 1 }, { Command = (short) 17, Count = (short) 1 }, { Command = (short) 2, Count = (short) 1 }, { Command = (short) 17, Count = (short) 1 }, { Command = (short) 2, Count = (short) 1 }, { Command = (short) 17, Count = (short) 1 }, { Command = (short) 2, Count = (short) 1 }, { Command = (short) 17, Count = (short) 1 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "TextFrames", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeTextFrame) { { TopLeft = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 11 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 9 }, Type = (short) 1 } }, BottomRight = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 12 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 13 }, Type = (short) 1 } } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }
+Type
+"ooxml-non-primitive"
+ViewBox
+(com.sun.star.awt.Rectangle) { X = (long) 0, Y = (long) 0, Width = (long) 0, Height = (long) 0 }
+/* roundRect */
+AdjustmentValues
+([]com.sun.star.drawing.EnhancedCustomShapeAdjustmentValue) { { Value = (any) { (long) 16667 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE, Name = "adj" } }
+Equations
+([]string) { "if(0-$0 ,0,if(50000-$0 ,$0 ,50000))", "min(logwidth,logheight)", "?1 *?0 /100000", "logwidth+0-?2 ", "logheight+0-?2 ", "?2 *29289/100000", "logwidth+0-?5 ", "logheight+0-?5 ", "logwidth/2", "logheight/2", "logheight", "logwidth", "(10800000)/60000.0", "(5400000)/60000.0", "(16200000)/60000.0", "(5400000)/60000.0", "(0)/60000.0", "(5400000)/60000.0", "(5400000)/60000.0", "(5400000)/60000.0" }
+Handles
+([][]com.sun.star.beans.PropertyValue) { { { Name = "Position", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeXMaximum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 50000 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeXMinimum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RefX", Handle = (long) 0, Value = (any) { (long) 0 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } } }
+MirroredX
+false
+MirroredY
+false
+Path
+([]com.sun.star.beans.PropertyValue) { { Name = "Coordinates", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeParameterPair) { { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 12 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 13 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 14 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 15 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 11 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 16 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 17 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 10 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 18 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 19 }, Type = (short) 1 } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "Segments", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeSegment) { { Command = (short) 1, Count = (short) 1 }, { Command = (short) 17, Count = (short) 1 }, { Command = (short) 2, Count = (short) 1 }, { Command = (short) 17, Count = (short) 1 }, { Command = (short) 2, Count = (short) 1 }, { Command = (short) 17, Count = (short) 1 }, { Command = (short) 2, Count = (short) 1 }, { Command = (short) 17, Count = (short) 1 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "TextFrames", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeTextFrame) { { TopLeft = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 1 } }, BottomRight = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 6 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7 }, Type = (short) 1 } } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }
+Type
+"ooxml-non-primitive"
+ViewBox
+(com.sun.star.awt.Rectangle) { X = (long) 0, Y = (long) 0, Width = (long) 0, Height = (long) 0 }
+/* rtTriangle */
+AdjustmentValues
+([]com.sun.star.drawing.EnhancedCustomShapeAdjustmentValue) {}
+Equations
+([]string) { "logheight*7/12", "logwidth*7/12", "logheight*11/12", "logheight/2", "logheight", "logwidth/2", "logwidth", "logwidth/12" }
+Handles
+([][]com.sun.star.beans.PropertyValue) {}
+MirroredX
+false
+MirroredY
+false
+Path
+([]com.sun.star.beans.PropertyValue) { { Name = "Coordinates", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeParameterPair) { { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 6 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "GluePoints", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeParameterPair) { { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, , { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 6 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "Segments", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeSegment) { { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 2 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "TextFrames", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeTextFrame) { { TopLeft = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 1 } }, BottomRight = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 } } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }
+Type
+"ooxml-non-primitive"
+ViewBox
+(com.sun.star.awt.Rectangle) { X = (long) 0, Y = (long) 0, Width = (long) 0, Height = (long) 0 }
+/* smileyFace */
+AdjustmentValues
+([]com.sun.star.drawing.EnhancedCustomShapeAdjustmentValue) { { Value = (any) { (long) 4653 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE, Name = "adj" } }
+Equations
+([]string) { "if(-4653-$0 ,-4653,if(4653-$0 ,$0 ,4653))", "logwidth*4969/21699", "logwidth*6215/21600", "logwidth*13135/21600", "logwidth*16640/21600", "logheight*7570/21600", "logheight*16515/21600", "logheight*?0 /100000", "?6 +0-?7 ", "?6 +?7 -0", "logheight*?0 /50000", "?9 +?10 -0", "logwidth/2", "?12 *cos(pi*(2700000)/10800000)", "logheight/2", "?14 *sin(pi*(2700000)/10800000)", "logwidth/2", "?16 +0-?13 ", "?16 +?13 -0", "logheight/2", "?19 +0-?15 ", "?19 +?15 -0", "logwidth*1125/21600", "logheight*1125/21600", "logheight", "logwidth", "(10800000)/60000.0", "(21600000)/60000.0", "(10800000)/60000.0", "(21600000)/60000.0", "(10800000)/60000.0", "(21600000)/60000.0", "(10800000)/60000.0", "(21600000)/60000.0" }
+Handles
+([][]com.sun.star.beans.PropertyValue) { { { Name = "Position", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 16 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 9 }, Type = (short) 1 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeYMaximum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4653 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeYMinimum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) -4653 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RefY", Handle = (long) 0, Value = (any) { (long) 0 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } } }
+MirroredX
+false
+MirroredY
+false
+Path
+([]com.sun.star.beans.PropertyValue) { { Name = "Coordinates", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeParameterPair) { { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 19 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 12 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 14 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 26 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 27 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 22 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 23 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 28 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 29 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 22 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 23 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 30 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 31 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 16 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 11 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 19 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 12 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 14 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 32 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 33 }, Type = (short) 1 } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "Segments", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeSegment) { { Command = (short) 1, Count = (short) 1 }, { Command = (short) 17, Count = (short) 1 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 7, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 }, { Command = (short) 1, Count = (short) 1 }, { Command = (short) 17, Count = (short) 1 }, { Command = (short) 1, Count = (short) 1 }, { Command = (short) 17, Count = (short) 1 }, { Command = (short) 19, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 }, { Command = (short) 1, Count = (short) 1 }, { Command = (short) 16, Count = (short) 1 }, { Command = (short) 6, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 }, { Command = (short) 1, Count = (short) 1 }, { Command = (short) 17, Count = (short) 1 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 6, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "TextFrames", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeTextFrame) { { TopLeft = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 17 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 20 }, Type = (short) 1 } }, BottomRight = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 18 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 21 }, Type = (short) 1 } } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }
+Type
+"ooxml-non-primitive"
+ViewBox
+(com.sun.star.awt.Rectangle) { X = (long) 0, Y = (long) 0, Width = (long) 0, Height = (long) 0 }
+/* snip1Rect */
+AdjustmentValues
+([]com.sun.star.drawing.EnhancedCustomShapeAdjustmentValue) { { Value = (any) { (long) 16667 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE, Name = "adj" } }
+Equations
+([]string) { "if(0-$0 ,0,if(50000-$0 ,$0 ,50000))", "min(logwidth,logheight)", "?1 *?0 /100000", "logwidth+0-?2 ", "?2 *1/2", "(?3 +logwidth)/2", "logwidth", "logheight/2", "logwidth/2", "logheight" }
+Handles
+([][]com.sun.star.beans.PropertyValue) { { { Name = "Position", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeXMaximum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 50000 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeXMinimum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RefX", Handle = (long) 0, Value = (any) { (long) 0 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } } }
+MirroredX
+false
+MirroredY
+false
+Path
+([]com.sun.star.beans.PropertyValue) { { Name = "Coordinates", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeParameterPair) { { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 6 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 6 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 9 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 9 }, Type = (short) 1 } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "Segments", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeSegment) { { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 4 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "TextFrames", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeTextFrame) { { TopLeft = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 } }, BottomRight = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 9 }, Type = (short) 1 } } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }
+Type
+"ooxml-non-primitive"
+ViewBox
+(com.sun.star.awt.Rectangle) { X = (long) 0, Y = (long) 0, Width = (long) 0, Height = (long) 0 }
+/* snip2DiagRect */
+AdjustmentValues
+([]com.sun.star.drawing.EnhancedCustomShapeAdjustmentValue) { { Value = (any) { (long) 0 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE, Name = "adj1" }, { Value = (any) { (long) 16667 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE, Name = "adj2" } }
+Equations
+([]string) { "if(0-$0 ,0,if(50000-$0 ,$0 ,50000))", "if(0-$1 ,0,if(50000-$1 ,$1 ,50000))", "min(logwidth,logheight)", "?2 *?0 /100000", "logwidth+0-?3 ", "logheight+0-?3 ", "?2 *?1 /100000", "logwidth+0-?6 ", "logheight+0-?6 ", "?3 +0-?6 ", "if(?9 ,?3 ,?6 )", "?10 *1/2", "logwidth+0-?11 ", "logheight+0-?11 ", "logwidth", "logheight/2", "logwidth/2", "logheight" }
+Handles
+([][]com.sun.star.beans.PropertyValue) { { { Name = "Position", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeXMaximum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 50000 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeXMinimum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RefX", Handle = (long) 0, Value = (any) { (long) 0 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }, { { Name = "Position", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeXMaximum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 50000 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeXMinimum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RefX", Handle = (long) 0, Value = (any) { (long) 1 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } } }
+MirroredX
+false
+MirroredY
+false
+Path
+([]com.sun.star.beans.PropertyValue) { { Name = "Coordinates", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeParameterPair) { { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 14 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 6 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 14 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 17 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 6 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 17 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "Segments", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeSegment) { { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 7 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "TextFrames", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeTextFrame) { { TopLeft = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 11 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 11 }, Type = (short) 1 } }, BottomRight = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 12 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 13 }, Type = (short) 1 } } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }
+Type
+"ooxml-non-primitive"
+ViewBox
+(com.sun.star.awt.Rectangle) { X = (long) 0, Y = (long) 0, Width = (long) 0, Height = (long) 0 }
+/* snip2SameRect */
+AdjustmentValues
+([]com.sun.star.drawing.EnhancedCustomShapeAdjustmentValue) { { Value = (any) { (long) 16667 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE, Name = "adj1" }, { Value = (any) { (long) 0 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE, Name = "adj2" } }
+Equations
+([]string) { "if(0-$0 ,0,if(50000-$0 ,$0 ,50000))", "if(0-$1 ,0,if(50000-$1 ,$1 ,50000))", "min(logwidth,logheight)", "?2 *?0 /100000", "logwidth+0-?3 ", "?2 *?1 /100000", "logwidth+0-?5 ", "logheight+0-?5 ", "?3 +0-?5 ", "if(?8 ,?3 ,?5 )", "?9 *1/2", "logwidth+0-?10 ", "?3 *1/2", "(?7 +logheight)/2", "logheight", "logwidth", "logheight/2", "logwidth/2" }
+Handles
+([][]com.sun.star.beans.PropertyValue) { { { Name = "Position", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeXMaximum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 50000 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeXMinimum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RefX", Handle = (long) 0, Value = (any) { (long) 0 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }, { { Name = "Position", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 14 }, Type = (short) 1 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeXMaximum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 50000 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeXMinimum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RefX", Handle = (long) 0, Value = (any) { (long) 1 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } } }
+MirroredX
+false
+MirroredY
+false
+Path
+([]com.sun.star.beans.PropertyValue) { { Name = "Coordinates", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeParameterPair) { { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 15 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 15 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 6 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 14 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 14 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "Segments", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeSegment) { { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 7 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "TextFrames", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeTextFrame) { { TopLeft = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 10 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 12 }, Type = (short) 1 } }, BottomRight = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 11 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 13 }, Type = (short) 1 } } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }
+Type
+"ooxml-non-primitive"
+ViewBox
+(com.sun.star.awt.Rectangle) { X = (long) 0, Y = (long) 0, Width = (long) 0, Height = (long) 0 }
+/* snipRoundRect */
+AdjustmentValues
+([]com.sun.star.drawing.EnhancedCustomShapeAdjustmentValue) { { Value = (any) { (long) 16667 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE, Name = "adj1" }, { Value = (any) { (long) 16667 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE, Name = "adj2" } }
+Equations
+([]string) { "if(0-$0 ,0,if(50000-$0 ,$0 ,50000))", "if(0-$1 ,0,if(50000-$1 ,$1 ,50000))", "min(logwidth,logheight)", "?2 *?0 /100000", "?2 *?1 /100000", "logwidth+0-?4 ", "?3 *29289/100000", "(?5 +logwidth)/2", "logwidth", "logheight/2", "logwidth/2", "logheight", "(10800000)/60000.0", "(5400000)/60000.0" }
+Handles
+([][]com.sun.star.beans.PropertyValue) { { { Name = "Position", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeXMaximum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 50000 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeXMinimum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RefX", Handle = (long) 0, Value = (any) { (long) 0 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }, { { Name = "Position", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeXMaximum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 50000 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeXMinimum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RefX", Handle = (long) 0, Value = (any) { (long) 1 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } } }
+MirroredX
+false
+MirroredY
+false
+Path
+([]com.sun.star.beans.PropertyValue) { { Name = "Coordinates", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeParameterPair) { { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 11 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 11 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 12 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 13 }, Type = (short) 1 } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "Segments", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeSegment) { { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 5 }, { Command = (short) 17, Count = (short) 1 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "TextFrames", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeTextFrame) { { TopLeft = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 6 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 6 }, Type = (short) 1 } }, BottomRight = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 11 }, Type = (short) 1 } } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }
+Type
+"ooxml-non-primitive"
+ViewBox
+(com.sun.star.awt.Rectangle) { X = (long) 0, Y = (long) 0, Width = (long) 0, Height = (long) 0 }
+/* squareTabs */
+AdjustmentValues
+([]com.sun.star.drawing.EnhancedCustomShapeAdjustmentValue) {}
+Equations
+([]string) { "sqrt(logwidth*logwidth+logheight*logheight+0*0)", "1*?0 /20", "0+logheight-?1 ", "0+logwidth-?1 ", "logheight", "logwidth" }
+Handles
+([][]com.sun.star.beans.PropertyValue) {}
+MirroredX
+false
+MirroredY
+false
+Path
+([]com.sun.star.beans.PropertyValue) { { Name = "Coordinates", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeParameterPair) { { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "Segments", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeSegment) { { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 3 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 }, { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 3 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 }, { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 3 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 }, { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 3 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "TextFrames", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeTextFrame) { { TopLeft = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 1 } }, BottomRight = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 } } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }
+Type
+"ooxml-non-primitive"
+ViewBox
+(com.sun.star.awt.Rectangle) { X = (long) 0, Y = (long) 0, Width = (long) 0, Height = (long) 0 }
+/* star10 */
+AdjustmentValues
+([]com.sun.star.drawing.EnhancedCustomShapeAdjustmentValue) { { Value = (any) { (long) 42533 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE, Name = "adj" }, { Value = (any) { (long) 105146 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE, Name = "hf" } }
+Equations
+([]string) { "if(0-$0 ,0,if(50000-$0 ,$0 ,50000))", "logwidth/2", "?1 *$1 /100000", "?2 *95106/100000", "?2 *58779/100000", "logwidth/2", "?5 +0-?3 ", "?5 +0-?4 ", "?5 +?4 -0", "?5 +?3 -0", "logheight/2", "?10 *80902/100000", "?10 *30902/100000", "logheight/2", "?13 +0-?11 ", "?13 +0-?12 ", "?13 +?12 -0", "?13 +?11 -0", "?2 *?0 /50000", "?10 *?0 /50000", "?18 *80902/100000", "?18 *30902/100000", "?19 *95106/100000", "?19 *58779/100000", "?5 +0-?18 ", "?5 +0-?20 ", "?5 +0-?21 ", "?5 +?21 -0", "?5 +?20 -0", "?5 +?18 -0", "?13 +0-?22 ", "?13 +0-?23 ", "?13 +?23 -0", "?13 +?22 -0", "?13 +0-?19 ", "logheight" }
+Handles
+([][]com.sun.star.beans.PropertyValue) { { { Name = "Position", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 34 }, Type = (short) 1 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeYMaximum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 50000 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeYMinimum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RefY", Handle = (long) 0, Value = (any) { (long) 0 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } } }
+MirroredX
+false
+MirroredY
+false
+Path
+([]com.sun.star.beans.PropertyValue) { { Name = "Coordinates", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeParameterPair) { { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 6 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 15 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 25 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 31 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 14 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 26 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 30 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 27 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 30 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 14 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 28 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 31 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 9 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 15 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 29 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 13 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 9 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 16 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 28 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 32 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 17 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 27 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 33 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 35 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 26 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 33 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 17 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 25 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 32 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 6 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 16 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 24 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 13 }, Type = (short) 1 } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "Segments", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeSegment) { { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 19 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "TextFrames", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeTextFrame) { { TopLeft = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 25 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 31 }, Type = (short) 1 } }, BottomRight = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 28 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 32 }, Type = (short) 1 } } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }
+Type
+"ooxml-non-primitive"
+ViewBox
+(com.sun.star.awt.Rectangle) { X = (long) 0, Y = (long) 0, Width = (long) 0, Height = (long) 0 }
+/* star12 */
+AdjustmentValues
+([]com.sun.star.drawing.EnhancedCustomShapeAdjustmentValue) { { Value = (any) { (long) 37500 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE, Name = "adj" } }
+Equations
+([]string) { "if(0-$0 ,0,if(50000-$0 ,$0 ,50000))", "logwidth/2", "?1 *cos(pi*(1800000)/10800000)", "logheight/2", "?3 *sin(pi*(3600000)/10800000)", "logwidth/2", "?5 +0-?2 ", "logwidth*3/4", "?5 +?2 -0", "logheight/2", "?9 +0-?4 ", "logheight*3/4", "?9 +?4 -0", "?1 *?0 /50000", "?3 *?0 /50000", "?13 *cos(pi*(900000)/10800000)", "?13 *cos(pi*(2700000)/10800000)", "?13 *cos(pi*(4500000)/10800000)", "?14 *sin(pi*(4500000)/10800000)", "?14 *sin(pi*(2700000)/10800000)", "?14 *sin(pi*(900000)/10800000)", "?5 +0-?15 ", "?5 +0-?16 ", "?5 +0-?17 ", "?5 +?17 -0", "?5 +?16 -0", "?5 +?15 -0", "?9 +0-?18 ", "?9 +0-?19 ", "?9 +0-?20 ", "?9 +?20 -0", "?9 +?19 -0", "?9 +?18 -0", "?9 +0-?14 ", "logheight/4", "logwidth", "logheight", "logwidth/4" }
+Handles
+([][]com.sun.star.beans.PropertyValue) { { { Name = "Position", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 33 }, Type = (short) 1 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeYMaximum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 50000 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeYMinimum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RefY", Handle = (long) 0, Value = (any) { (long) 0 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } } }
+MirroredX
+false
+MirroredY
+false
+Path
+([]com.sun.star.beans.PropertyValue) { { Name = "Coordinates", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeParameterPair) { { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 9 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 21 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 29 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 6 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 34 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 22 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 28 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 37 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 10 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 23 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 27 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 24 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 27 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 10 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 25 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 28 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 34 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 26 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 29 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 35 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 9 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 26 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 30 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 11 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 25 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 31 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 12 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 24 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 32 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 36 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 23 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 32 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 37 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 12 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 22 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 31 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 6 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 11 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 21 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 30 }, Type = (short) 1 } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "Segments", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeSegment) { { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 23 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "TextFrames", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeTextFrame) { { TopLeft = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 22 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 28 }, Type = (short) 1 } }, BottomRight = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 25 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 31 }, Type = (short) 1 } } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }
+Type
+"ooxml-non-primitive"
+ViewBox
+(com.sun.star.awt.Rectangle) { X = (long) 0, Y = (long) 0, Width = (long) 0, Height = (long) 0 }
+/* star16 */
+AdjustmentValues
+([]com.sun.star.drawing.EnhancedCustomShapeAdjustmentValue) { { Value = (any) { (long) 37500 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE, Name = "adj" } }
+Equations
+([]string) { "if(0-$0 ,0,if(50000-$0 ,$0 ,50000))", "logwidth/2", "?1 *92388/100000", "?1 *70711/100000", "?1 *38268/100000", "logheight/2", "?5 *92388/100000", "?5 *70711/100000", "?5 *38268/100000", "logwidth/2", "?9 +0-?2 ", "?9 +0-?3 ", "?9 +0-?4 ", "?9 +?4 -0", "?9 +?3 -0", "?9 +?2 -0", "logheight/2", "?16 +0-?6 ", "?16 +0-?7 ", "?16 +0-?8 ", "?16 +?8 -0", "?16 +?7 -0", "?16 +?6 -0", "?1 *?0 /50000", "?5 *?0 /50000", "?23 *98079/100000", "?23 *83147/100000", "?23 *55557/100000", "?23 *19509/100000", "?24 *98079/100000", "?24 *83147/100000", "?24 *55557/100000", "?24 *19509/100000", "?9 +0-?25 ", "?9 +0-?26 ", "?9 +0-?27 ", "?9 +0-?28 ", "?9 +?28 -0", "?9 +?27 -0", "?9 +?26 -0", "?9 +?25 -0", "?16 +0-?29 ", "?16 +0-?30 ", "?16 +0-?31 ", "?16 +0-?32 ", "?16 +?32 -0", "?16 +?31 -0", "?16 +?30 -0", "?16 +?29 -0", "?23 *cos(pi*(2700000)/10800000)", "?24 *sin(pi*(2700000)/10800000)", "?9 +0-?49 ", "?16 +0-?50 ", "?9 +?49 -0", "?16 +?50 -0", "?16 +0-?24 ", "logwidth", "logheight" }
+Handles
+([][]com.sun.star.beans.PropertyValue) { { { Name = "Position", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 9 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 55 }, Type = (short) 1 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeYMaximum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 50000 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeYMinimum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RefY", Handle = (long) 0, Value = (any) { (long) 0 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } } }
+MirroredX
+false
+MirroredY
+false
+Path
+([]com.sun.star.beans.PropertyValue) { { Name = "Coordinates", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeParameterPair) { { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 16 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 33 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 44 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 10 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 19 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 34 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 43 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 11 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 18 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 35 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 42 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 12 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 17 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 36 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 41 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 9 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 37 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 41 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 13 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 17 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 38 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 42 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 14 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 18 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 39 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 43 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 15 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 19 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 40 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 44 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 56 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 16 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 40 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 45 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 15 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 20 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 39 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 46 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 14 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 21 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 38 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 47 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 13 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 22 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 37 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 48 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 9 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 57 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 36 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 48 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 12 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 22 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 35 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 47 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 11 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 21 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 34 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 46 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 10 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 20 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 33 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 45 }, Type = (short) 1 } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "Segments", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeSegment) { { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 31 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "TextFrames", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeTextFrame) { { TopLeft = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 51 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 52 }, Type = (short) 1 } }, BottomRight = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 53 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 54 }, Type = (short) 1 } } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }
+Type
+"ooxml-non-primitive"
+ViewBox
+(com.sun.star.awt.Rectangle) { X = (long) 0, Y = (long) 0, Width = (long) 0, Height = (long) 0 }
+/* star24 */
+AdjustmentValues
+([]com.sun.star.drawing.EnhancedCustomShapeAdjustmentValue) { { Value = (any) { (long) 37500 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE, Name = "adj" } }
+Equations
+([]string) { "if(0-$0 ,0,if(50000-$0 ,$0 ,50000))", "logwidth/2", "?1 *cos(pi*(900000)/10800000)", "?1 *cos(pi*(1800000)/10800000)", "?1 *cos(pi*(2700000)/10800000)", "logwidth/4", "?5 ", "?1 *cos(pi*(4500000)/10800000)", "logheight/2", "?8 *sin(pi*(4500000)/10800000)", "?8 *sin(pi*(3600000)/10800000)", "?8 *sin(pi*(2700000)/10800000)", "logheight/4", "?12 ", "?8 *sin(pi*(900000)/10800000)", "logwidth/2", "?15 +0-?2 ", "?15 +0-?3 ", "?15 +0-?4 ", "?15 +0-?6 ", "?15 +0-?7 ", "?15 +?7 -0", "?15 +?6 -0", "?15 +?4 -0", "?15 +?3 -0", "?15 +?2 -0", "logheight/2", "?26 +0-?9 ", "?26 +0-?10 ", "?26 +0-?11 ", "?26 +0-?13 ", "?26 +0-?14 ", "?26 +?14 -0", "?26 +?13 -0", "?26 +?11 -0", "?26 +?10 -0", "?26 +?9 -0", "?1 *?0 /50000", "?8 *?0 /50000", "?37 *99144/100000", "?37 *92388/100000", "?37 *79335/100000", "?37 *60876/100000", "?37 *38268/100000", "?37 *13053/100000", "?38 *99144/100000", "?38 *92388/100000", "?38 *79335/100000", "?38 *60876/100000", "?38 *38268/100000", "?38 *13053/100000", "?15 +0-?39 ", "?15 +0-?40 ", "?15 +0-?41 ", "?15 +0-?42 ", "?15 +0-?43 ", "?15 +0-?44 ", "?15 +?44 -0", "?15 +?43 -0", "?15 +?42 -0", "?15 +?41 -0", "?15 +?40 -0", "?15 +?39 -0", "?26 +0-?45 ", "?26 +0-?46 ", "?26 +0-?47 ", "?26 +0-?48 ", "?26 +0-?49 ", "?26 +0-?50 ", "?26 +?50 -0", "?26 +?49 -0", "?26 +?48 -0", "?26 +?47 -0", "?26 +?46 -0", "?26 +?45 -0", "?37 *cos(pi*(2700000)/10800000)", "?38 *sin(pi*(2700000)/10800000)", "?15 +0-?75 ", "?26 +0-?76 ", "?15 +?75 -0", "?26 +?76 -0", "?26 +0-?38 ", "logheight", "logwidth" }
+Handles
+([][]com.sun.star.beans.PropertyValue) { { { Name = "Position", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 15 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 81 }, Type = (short) 1 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeYMaximum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 50000 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeYMinimum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RefY", Handle = (long) 0, Value = (any) { (long) 0 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } } }
+MirroredX
+false
+MirroredY
+false
+Path
+([]com.sun.star.beans.PropertyValue) { { Name = "Coordinates", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeParameterPair) { { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 26 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 51 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 68 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 16 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 31 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 52 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 67 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 17 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 30 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 53 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 66 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 18 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 29 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 54 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 65 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 19 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 28 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 55 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 64 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 20 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 27 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 56 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 63 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 15 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 57 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 63 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 21 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 27 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 58 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 64 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 22 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 28 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 59 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 65 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 23 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 29 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 60 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 66 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 24 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 30 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 61 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 67 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 25 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 31 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 62 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 68 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 83 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 26 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 62 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 69 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 25 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 32 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 61 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 70 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 24 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 33 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 60 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 71 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 23 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 34 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 59 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 72 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 22 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 35 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 58 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 73 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 21 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 36 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 57 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 74 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 15 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 82 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 56 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 74 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 20 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 36 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 55 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 73 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 19 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 35 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 54 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 72 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 18 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 34 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 53 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 71 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 17 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 33 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 52 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 70 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 16 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 32 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 51 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 69 }, Type = (short) 1 } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "Segments", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeSegment) { { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 47 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "TextFrames", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeTextFrame) { { TopLeft = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 77 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 78 }, Type = (short) 1 } }, BottomRight = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 79 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 80 }, Type = (short) 1 } } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }
+Type
+"ooxml-non-primitive"
+ViewBox
+(com.sun.star.awt.Rectangle) { X = (long) 0, Y = (long) 0, Width = (long) 0, Height = (long) 0 }
+/* star32 */
+AdjustmentValues
+([]com.sun.star.drawing.EnhancedCustomShapeAdjustmentValue) { { Value = (any) { (long) 37500 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE, Name = "adj" } }
+Equations
+([]string) { "if(0-$0 ,0,if(50000-$0 ,$0 ,50000))", "logwidth/2", "?1 *98079/100000", "?1 *92388/100000", "?1 *83147/100000", "?1 *cos(pi*(2700000)/10800000)", "?1 *55557/100000", "?1 *38268/100000", "?1 *19509/100000", "logheight/2", "?9 *98079/100000", "?9 *92388/100000", "?9 *83147/100000", "?9 *sin(pi*(2700000)/10800000)", "?9 *55557/100000", "?9 *38268/100000", "?9 *19509/100000", "logwidth/2", "?17 +0-?2 ", "?17 +0-?3 ", "?17 +0-?4 ", "?17 +0-?5 ", "?17 +0-?6 ", "?17 +0-?7 ", "?17 +0-?8 ", "?17 +?8 -0", "?17 +?7 -0", "?17 +?6 -0", "?17 +?5 -0", "?17 +?4 -0", "?17 +?3 -0", "?17 +?2 -0", "logheight/2", "?32 +0-?10 ", "?32 +0-?11 ", "?32 +0-?12 ", "?32 +0-?13 ", "?32 +0-?14 ", "?32 +0-?15 ", "?32 +0-?16 ", "?32 +?16 -0", "?32 +?15 -0", "?32 +?14 -0", "?32 +?13 -0", "?32 +?12 -0", "?32 +?11 -0", "?32 +?10 -0", "?1 *?0 /50000", "?9 *?0 /50000", "?47 *99518/100000", "?47 *95694/100000", "?47 *88192/100000", "?47 *77301/100000", "?47 *63439/100000", "?47 *47140/100000", "?47 *29028/100000", "?47 *9802/100000", "?48 *99518/100000", "?48 *95694/100000", "?48 *88192/100000", "?48 *77301/100000", "?48 *63439/100000", "?48 *47140/100000", "?48 *29028/100000", "?48 *9802/100000", "?17 +0-?49 ", "?17 +0-?50 ", "?17 +0-?51 ", "?17 +0-?52 ", "?17 +0-?53 ", "?17 +0-?54 ", "?17 +0-?55 ", "?17 +0-?56 ", "?17 +?56 -0", "?17 +?55 -0", "?17 +?54 -0", "?17 +?53 -0", "?17 +?52 -0", "?17 +?51 -0", "?17 +?50 -0", "?17 +?49 -0", "?32 +0-?57 ", "?32 +0-?58 ", "?32 +0-?59 ", "?32 +0-?60 ", "?32 +0-?61 ", "?32 +0-?62 ", "?32 +0-?63 ", "?32 +0-?64 ", "?32 +?64 -0", "?32 +?63 -0", "?32 +?62 -0", "?32 +?61 -0", "?32 +?60 -0", "?32 +?59 -0", "?32 +?58 -0", "?32 +?57 -0", "?47 *cos(pi*(2700000)/10800000)", "?48 *sin(pi*(2700000)/10800000)", "?17 +0-?97 ", "?32 +0-?98 ", "?17 +?97 -0", "?32 +?98 -0", "?32 +0-?48 ", "logheight", "logwidth" }
+Handles
+([][]com.sun.star.beans.PropertyValue) { { { Name = "Position", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 17 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 103 }, Type = (short) 1 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeYMaximum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 50000 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeYMinimum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RefY", Handle = (long) 0, Value = (any) { (long) 0 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } } }
+MirroredX
+false
+MirroredY
+false
+Path
+([]com.sun.star.beans.PropertyValue) { { Name = "Coordinates", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeParameterPair) { { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 32 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 65 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 88 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 18 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 39 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 66 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 87 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 19 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 38 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 67 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 86 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 20 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 37 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 68 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 85 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 21 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 36 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 69 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 84 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 22 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 35 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 70 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 83 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 23 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 34 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 71 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 82 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 24 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 33 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 72 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 81 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 17 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 73 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 81 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 25 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 33 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 74 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 82 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 26 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 34 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 75 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 83 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 27 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 35 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 76 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 84 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 28 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 36 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 77 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 85 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 29 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 37 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 78 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 86 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 30 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 38 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 79 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 87 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 31 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 39 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 80 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 88 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 105 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 32 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 80 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 89 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 31 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 40 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 79 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 90 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 30 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 41 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 78 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 91 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 29 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 42 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 77 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 92 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 28 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 43 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 76 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 93 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 27 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 44 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 75 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 94 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 26 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 45 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 74 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 95 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 25 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 46 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 73 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 96 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 17 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 104 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 72 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 96 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 24 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 46 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 71 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 95 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 23 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 45 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 70 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 94 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 22 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 44 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 69 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 93 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 21 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 43 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 68 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 92 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 20 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 42 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 67 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 91 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 19 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 41 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 66 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 90 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 18 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 40 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 65 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 89 }, Type = (short) 1 } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "Segments", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeSegment) { { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 63 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "TextFrames", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeTextFrame) { { TopLeft = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 99 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 100 }, Type = (short) 1 } }, BottomRight = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 101 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 102 }, Type = (short) 1 } } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }
+Type
+"ooxml-non-primitive"
+ViewBox
+(com.sun.star.awt.Rectangle) { X = (long) 0, Y = (long) 0, Width = (long) 0, Height = (long) 0 }
+/* star4 */
+AdjustmentValues
+([]com.sun.star.drawing.EnhancedCustomShapeAdjustmentValue) { { Value = (any) { (long) 12500 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE, Name = "adj" } }
+Equations
+([]string) { "if(0-$0 ,0,if(50000-$0 ,$0 ,50000))", "logwidth/2", "?1 *?0 /50000", "logheight/2", "?3 *?0 /50000", "?2 *cos(pi*(2700000)/10800000)", "?4 *sin(pi*(2700000)/10800000)", "logwidth/2", "?7 +0-?5 ", "?7 +?5 -0", "logheight/2", "?10 +0-?6 ", "?10 +?6 -0", "?10 +0-?4 ", "logheight", "logwidth" }
+Handles
+([][]com.sun.star.beans.PropertyValue) { { { Name = "Position", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 13 }, Type = (short) 1 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeYMaximum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 50000 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeYMinimum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RefY", Handle = (long) 0, Value = (any) { (long) 0 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } } }
+MirroredX
+false
+MirroredY
+false
+Path
+([]com.sun.star.beans.PropertyValue) { { Name = "Coordinates", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeParameterPair) { { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 10 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 11 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 9 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 11 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 15 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 10 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 9 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 12 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 14 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 12 }, Type = (short) 1 } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "Segments", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeSegment) { { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 7 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "TextFrames", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeTextFrame) { { TopLeft = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 11 }, Type = (short) 1 } }, BottomRight = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 9 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 12 }, Type = (short) 1 } } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }
+Type
+"ooxml-non-primitive"
+ViewBox
+(com.sun.star.awt.Rectangle) { X = (long) 0, Y = (long) 0, Width = (long) 0, Height = (long) 0 }
+/* star5 */
+AdjustmentValues
+([]com.sun.star.drawing.EnhancedCustomShapeAdjustmentValue) { { Value = (any) { (long) 19098 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE, Name = "adj" }, { Value = (any) { (long) 105146 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE, Name = "hf" }, { Value = (any) { (long) 110557 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE, Name = "vf" } }
+Equations
+([]string) { "if(0-$0 ,0,if(50000-$0 ,$0 ,50000))", "logwidth/2", "?1 *$1 /100000", "logheight/2", "?3 *$2 /100000", "logheight/2", "?5 *$2 /100000", "?2 *cos(pi*(1080000)/10800000)", "?2 *cos(pi*(18360000)/10800000)", "?4 *sin(pi*(1080000)/10800000)", "?4 *sin(pi*(18360000)/10800000)", "logwidth/2", "?11 +0-?7 ", "?11 +0-?8 ", "?11 +?8 -0", "?11 +?7 -0", "?6 +0-?9 ", "?6 +0-?10 ", "?2 *?0 /50000", "?4 *?0 /50000", "?18 *cos(pi*(20520000)/10800000)", "?18 *cos(pi*(3240000)/10800000)", "?19 *sin(pi*(3240000)/10800000)", "?19 *sin(pi*(20520000)/10800000)", "?11 +0-?20 ", "?11 +0-?21 ", "?11 +?21 -0", "?11 +?20 -0", "?6 +0-?22 ", "?6 +0-?23 ", "?6 +?19 -0", "?6 +0-?19 " }
+Handles
+([][]com.sun.star.beans.PropertyValue) { { { Name = "Position", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 11 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 31 }, Type = (short) 1 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeYMaximum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 50000 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeYMinimum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RefY", Handle = (long) 0, Value = (any) { (long) 0 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } } }
+MirroredX
+false
+MirroredY
+false
+Path
+([]com.sun.star.beans.PropertyValue) { { Name = "Coordinates", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeParameterPair) { { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 12 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 16 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 25 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 28 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 11 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 26 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 28 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 15 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 16 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 27 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 29 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 14 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 17 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 11 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 30 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 13 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 17 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 24 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 29 }, Type = (short) 1 } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "Segments", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeSegment) { { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 9 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "TextFrames", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeTextFrame) { { TopLeft = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 24 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 28 }, Type = (short) 1 } }, BottomRight = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 27 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 30 }, Type = (short) 1 } } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }
+Type
+"ooxml-non-primitive"
+ViewBox
+(com.sun.star.awt.Rectangle) { X = (long) 0, Y = (long) 0, Width = (long) 0, Height = (long) 0 }
+/* star6 */
+AdjustmentValues
+([]com.sun.star.drawing.EnhancedCustomShapeAdjustmentValue) { { Value = (any) { (long) 28868 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE, Name = "adj" }, { Value = (any) { (long) 115470 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE, Name = "hf" } }
+Equations
+([]string) { "if(0-$0 ,0,if(50000-$0 ,$0 ,50000))", "logwidth/2", "?1 *$1 /100000", "?2 *cos(pi*(1800000)/10800000)", "logwidth/2", "?4 +0-?3 ", "?4 +?3 -0", "logheight/2", "logheight/4", "?7 +?8 -0", "?2 *?0 /50000", "logheight/2", "?11 *?0 /50000", "?10 *1/2", "?4 +0-?10 ", "?4 +0-?13 ", "?4 +?13 -0", "?4 +?10 -0", "?12 *sin(pi*(3600000)/10800000)", "?7 +0-?18 ", "?7 +?18 -0", "?7 +0-?12 ", "logheight" }
+Handles
+([][]com.sun.star.beans.PropertyValue) { { { Name = "Position", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 21 }, Type = (short) 1 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeYMaximum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 50000 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeYMinimum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RefY", Handle = (long) 0, Value = (any) { (long) 0 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } } }
+MirroredX
+false
+MirroredY
+false
+Path
+([]com.sun.star.beans.PropertyValue) { { Name = "Coordinates", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeParameterPair) { { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 15 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 19 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 16 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 19 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 6 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 17 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 6 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 9 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 16 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 20 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 22 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 15 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 20 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 9 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 14 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7 }, Type = (short) 1 } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "Segments", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeSegment) { { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 11 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "TextFrames", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeTextFrame) { { TopLeft = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 14 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 19 }, Type = (short) 1 } }, BottomRight = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 17 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 20 }, Type = (short) 1 } } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }
+Type
+"ooxml-non-primitive"
+ViewBox
+(com.sun.star.awt.Rectangle) { X = (long) 0, Y = (long) 0, Width = (long) 0, Height = (long) 0 }
+/* star7 */
+AdjustmentValues
+([]com.sun.star.drawing.EnhancedCustomShapeAdjustmentValue) { { Value = (any) { (long) 34601 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE, Name = "adj" }, { Value = (any) { (long) 102572 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE, Name = "hf" }, { Value = (any) { (long) 105210 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE, Name = "vf" } }
+Equations
+([]string) { "if(0-$0 ,0,if(50000-$0 ,$0 ,50000))", "logwidth/2", "?1 *$1 /100000", "logheight/2", "?3 *$2 /100000", "logheight/2", "?5 *$2 /100000", "?2 *97493/100000", "?2 *78183/100000", "?2 *43388/100000", "?4 *62349/100000", "?4 *22252/100000", "?4 *90097/100000", "logwidth/2", "?13 +0-?7 ", "?13 +0-?8 ", "?13 +0-?9 ", "?13 +?9 -0", "?13 +?8 -0", "?13 +?7 -0", "?6 +0-?10 ", "?6 +?11 -0", "?6 +?12 -0", "?2 *?0 /50000", "?4 *?0 /50000", "?23 *97493/100000", "?23 *78183/100000", "?23 *43388/100000", "?13 +0-?25 ", "?13 +0-?26 ", "?13 +0-?27 ", "?13 +?27 -0", "?13 +?26 -0", "?13 +?25 -0", "?24 *90097/100000", "?24 *22252/100000", "?24 *62349/100000", "?6 +0-?34 ", "?6 +0-?35 ", "?6 +?36 -0", "?6 +?24 -0", "?6 +0-?24 " }
+Handles
+([][]com.sun.star.beans.PropertyValue) { { { Name = "Position", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 13 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 41 }, Type = (short) 1 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeYMaximum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 50000 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeYMinimum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RefY", Handle = (long) 0, Value = (any) { (long) 0 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } } }
+MirroredX
+false
+MirroredY
+false
+Path
+([]com.sun.star.beans.PropertyValue) { { Name = "Coordinates", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeParameterPair) { { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 14 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 21 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 28 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 38 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 15 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 20 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 30 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 37 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 13 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 31 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 37 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 18 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 20 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 33 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 38 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 19 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 21 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 32 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 39 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 17 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 22 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 13 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 40 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 16 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 22 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 29 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 39 }, Type = (short) 1 } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "Segments", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeSegment) { { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 13 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "TextFrames", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeTextFrame) { { TopLeft = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 29 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 37 }, Type = (short) 1 } }, BottomRight = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 32 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 39 }, Type = (short) 1 } } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }
+Type
+"ooxml-non-primitive"
+ViewBox
+(com.sun.star.awt.Rectangle) { X = (long) 0, Y = (long) 0, Width = (long) 0, Height = (long) 0 }
+/* star8 */
+AdjustmentValues
+([]com.sun.star.drawing.EnhancedCustomShapeAdjustmentValue) { { Value = (any) { (long) 37500 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE, Name = "adj" } }
+Equations
+([]string) { "if(0-$0 ,0,if(50000-$0 ,$0 ,50000))", "logwidth/2", "?1 *cos(pi*(2700000)/10800000)", "logwidth/2", "?3 +0-?2 ", "?3 +?2 -0", "logheight/2", "?6 *sin(pi*(2700000)/10800000)", "logheight/2", "?8 +0-?7 ", "?8 +?7 -0", "?1 *?0 /50000", "?6 *?0 /50000", "?11 *92388/100000", "?11 *38268/100000", "?12 *92388/100000", "?12 *38268/100000", "?3 +0-?13 ", "?3 +0-?14 ", "?3 +?14 -0", "?3 +?13 -0", "?8 +0-?15 ", "?8 +0-?16 ", "?8 +?16 -0", "?8 +?15 -0", "?8 +0-?12 ", "logwidth", "logheight" }
+Handles
+([][]com.sun.star.beans.PropertyValue) { { { Name = "Position", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 25 }, Type = (short) 1 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeYMaximum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 50000 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeYMinimum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RefY", Handle = (long) 0, Value = (any) { (long) 0 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } } }
+MirroredX
+false
+MirroredY
+false
+Path
+([]com.sun.star.beans.PropertyValue) { { Name = "Coordinates", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeParameterPair) { { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 17 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 22 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 9 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 18 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 21 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 19 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 21 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 9 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 20 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 22 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 26 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 20 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 23 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 10 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 19 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 24 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 27 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 18 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 24 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 10 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 17 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 23 }, Type = (short) 1 } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "Segments", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeSegment) { { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 15 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "TextFrames", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeTextFrame) { { TopLeft = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 17 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 21 }, Type = (short) 1 } }, BottomRight = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 20 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 24 }, Type = (short) 1 } } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }
+Type
+"ooxml-non-primitive"
+ViewBox
+(com.sun.star.awt.Rectangle) { X = (long) 0, Y = (long) 0, Width = (long) 0, Height = (long) 0 }
+/* straightConnector1 */
+AdjustmentValues
+([]com.sun.star.drawing.EnhancedCustomShapeAdjustmentValue) {}
+Equations
+([]string) { "logwidth", "logheight" }
+Handles
+([][]com.sun.star.beans.PropertyValue) {}
+MirroredX
+false
+MirroredY
+false
+Path
+([]com.sun.star.beans.PropertyValue) { { Name = "Coordinates", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeParameterPair) { { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 1 } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "Segments", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeSegment) { { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 1 }, { Command = (short) 6, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "TextFrames", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeTextFrame) { { TopLeft = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, BottomRight = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 1 } } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }
+Type
+"ooxml-non-primitive"
+ViewBox
+(com.sun.star.awt.Rectangle) { X = (long) 0, Y = (long) 0, Width = (long) 0, Height = (long) 0 }
+/* stripedRightArrow */
+AdjustmentValues
+([]com.sun.star.drawing.EnhancedCustomShapeAdjustmentValue) { { Value = (any) { (long) 50000 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE, Name = "adj1" }, { Value = (any) { (long) 50000 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE, Name = "adj2" } }
+Equations
+([]string) { "min(logwidth,logheight)", "84375*logwidth/?0 ", "if(0-$0 ,0,if(100000-$0 ,$0 ,100000))", "if(0-$1 ,0,if(?1 -$1 ,$1 ,?1 ))", "?0 *5/32", "?0 *?3 /100000", "logwidth+0-?5 ", "logheight*?2 /200000", "logheight/2", "?8 +0-?7 ", "?8 +?7 -0", "logheight/2", "?7 *?5 /?11 ", "logwidth+0-?12 ", "logheight", "logwidth", "min(logwidth,logheight)/32", "min(logwidth,logheight)/16", "min(logwidth,logheight)/8" }
+Handles
+([][]com.sun.star.beans.PropertyValue) { { { Name = "Position", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 9 }, Type = (short) 1 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeYMaximum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 100000 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeYMinimum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RefY", Handle = (long) 0, Value = (any) { (long) 0 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }, { { Name = "Position", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 6 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeXMaximum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 1 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeXMinimum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RefX", Handle = (long) 0, Value = (any) { (long) 1 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } } }
+MirroredX
+false
+MirroredY
+false
+Path
+([]com.sun.star.beans.PropertyValue) { { Name = "Coordinates", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeParameterPair) { { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 9 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 16 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 9 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 16 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 10 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 10 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 17 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 9 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 18 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 9 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 18 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 10 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 17 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 10 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 9 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 6 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 9 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 6 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 15 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 6 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 14 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 6 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 10 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 10 }, Type = (short) 1 } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "Segments", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeSegment) { { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 3 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 3 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 6 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "TextFrames", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeTextFrame) { { TopLeft = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 9 }, Type = (short) 1 } }, BottomRight = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 13 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 10 }, Type = (short) 1 } } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }
+Type
+"ooxml-non-primitive"
+ViewBox
+(com.sun.star.awt.Rectangle) { X = (long) 0, Y = (long) 0, Width = (long) 0, Height = (long) 0 }
+/* sun */
+AdjustmentValues
+([]com.sun.star.drawing.EnhancedCustomShapeAdjustmentValue) { { Value = (any) { (long) 25000 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE, Name = "adj" } }
+Equations
+([]string) { "if(12500-$0 ,12500,if(46875-$0 ,$0 ,46875))", "50000+0-?0 ", "?1 *30274/32768", "?1 *12540/32768", "?2 +50000-0", "?3 +50000-0", "50000+0-?2 ", "50000+0-?3 ", "?1 *23170/32768", "50000+?8 -0", "50000+0-?8 ", "?6 *3/4", "?7 *3/4", "?11 +3662-0", "?12 +3662-0", "?12 +12500-0", "100000+0-?11 ", "100000+0-?13 ", "100000+0-?14 ", "100000+0-?15 ", "logwidth*18436/21600", "logheight*3163/21600", "logwidth*3163/21600", "logheight*18436/21600", "logwidth*?9 /100000", "logwidth*?10 /100000", "logwidth*?11 /100000", "logwidth*?13 /100000", "logwidth*?14 /100000", "logwidth*?15 /100000", "logwidth*?16 /100000", "logwidth*?17 /100000", "logwidth*?18 /100000", "logwidth*?19 /100000", "logwidth*?0 /100000", "logwidth*?1 /100000", "logheight*?1 /100000", "logheight*?9 /100000", "logheight*?10 /100000", "logheight*?11 /100000", "logheight*?13 /100000", "logheight*?14 /100000", "logheight*?15 /100000", "logheight*?16 /100000", "logheight*?17 /100000", "logheight*?18 /100000", "logheight*?19 /100000", "logheight/2", "logwidth/2", "logheight", "logwidth", "(10800000)/60000.0", "(21600000)/60000.0" }
+Handles
+([][]com.sun.star.beans.PropertyValue) { { { Name = "Position", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 34 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 47 }, Type = (short) 1 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeXMaximum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 46875 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeXMinimum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 12500 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RefX", Handle = (long) 0, Value = (any) { (long) 0 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } } }
+MirroredX
+false
+MirroredY
+false
+Path
+([]com.sun.star.beans.PropertyValue) { { Name = "Coordinates", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeParameterPair) { { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 50 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 47 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 30 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 46 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 30 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 42 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 20 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 21 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 31 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 41 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 32 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 40 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 48 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 33 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 39 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 29 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 39 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 22 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 21 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 28 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 40 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 27 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 41 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 47 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 26 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 42 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 26 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 46 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 22 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 23 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 27 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 45 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 28 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 44 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 48 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 49 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 29 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 43 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 33 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 43 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 20 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 23 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 32 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 44 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 31 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 45 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 34 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 47 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 35 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 36 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 51 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 52 }, Type = (short) 1 } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "Segments", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeSegment) { { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 2 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 2 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 2 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 2 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 2 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 2 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 2 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 2 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 1, Count = (short) 1 }, { Command = (short) 17, Count = (short) 1 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "TextFrames", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeTextFrame) { { TopLeft = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 25 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 38 }, Type = (short) 1 } }, BottomRight = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 24 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 37 }, Type = (short) 1 } } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }
+Type
+"ooxml-non-primitive"
+ViewBox
+(com.sun.star.awt.Rectangle) { X = (long) 0, Y = (long) 0, Width = (long) 0, Height = (long) 0 }
+/* swooshArrow */
+AdjustmentValues
+([]com.sun.star.drawing.EnhancedCustomShapeAdjustmentValue) { { Value = (any) { (long) 25000 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE, Name = "adj1" }, { Value = (any) { (long) 16667 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE, Name = "adj2" } }
+Equations
+([]string) { "if(1-$0 ,1,if(75000-$0 ,$0 ,75000))", "min(logwidth,logheight)", "70000*logwidth/?1 ", "if(0-$1 ,0,if(?2 -$1 ,$1 ,?2 ))", "logheight*?0 /100000", "?1 *?3 /100000", "logwidth+0-?5 ", "min(logwidth,logheight)/8", "0+?7 -0", "5400000*1/14", "?7 *tan(pi*(?9 )/10800000)", "?6 +0-?10 ", "?4 *tan(pi*(?9 )/10800000)", "?8 +?4 -0", "?6 +?12 -0", "?14 +?10 -0", "?13 +?7 -0", "?16 +0-0", "?17 *1/2", "logheight*1/20", "0+?18 -?19 ", "logheight/6", "?21 *1/1", "?21 +?22 -0", "logwidth/6", "?24 ", "?21 *1/2", "?13 +?26 -0", "logwidth/4", "?28 ", "logheight", "logwidth" }
+Handles
+([][]com.sun.star.beans.PropertyValue) { { { Name = "Position", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 14 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 13 }, Type = (short) 1 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeYMaximum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 75000 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeYMinimum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RefY", Handle = (long) 0, Value = (any) { (long) 0 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }, { { Name = "Position", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 6 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 1 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeXMaximum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeXMinimum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RefX", Handle = (long) 0, Value = (any) { (long) 1 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } } }
+MirroredX
+false
+MirroredY
+false
+Path
+([]com.sun.star.beans.PropertyValue) { { Name = "Coordinates", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeParameterPair) { { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 30 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 25 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 23 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 6 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 11 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 31 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 20 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 15 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 16 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 14 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 13 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 29 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 27 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 30 }, Type = (short) 1 } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "Segments", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeSegment) { { Command = (short) 1, Count = (short) 1 }, { Command = (short) 16, Count = (short) 1 }, { Command = (short) 2, Count = (short) 4 }, { Command = (short) 16, Count = (short) 1 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "TextFrames", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeTextFrame) { { TopLeft = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, BottomRight = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 31 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 30 }, Type = (short) 1 } } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }
+Type
+"ooxml-non-primitive"
+ViewBox
+(com.sun.star.awt.Rectangle) { X = (long) 0, Y = (long) 0, Width = (long) 0, Height = (long) 0 }
+/* teardrop */
+AdjustmentValues
+([]com.sun.star.drawing.EnhancedCustomShapeAdjustmentValue) { { Value = (any) { (long) 100000 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE, Name = "adj" } }
+Equations
+([]string) { "if(0-$0 ,0,if(200000-$0 ,$0 ,200000))", "sqrt(2)", "logwidth/2", "?2 *?1 /1", "logheight/2", "?4 *?1 /1", "?3 *?0 /100000", "?5 *?0 /100000", "?6 *cos(pi*(2700000)/10800000)", "?7 *sin(pi*(2700000)/10800000)", "logwidth/2", "?10 +?8 -0", "logheight/2", "?12 +0-?9 ", "(?10 +?11 )/2", "(?12 +?13 )/2", "?2 *cos(pi*(2700000)/10800000)", "?4 *sin(pi*(2700000)/10800000)", "?10 +0-?16 ", "?10 +?16 -0", "?12 +0-?17 ", "?12 +?17 -0", "logwidth", "logheight", "(10800000)/60000.0", "(5400000)/60000.0", "(0)/60000.0", "(5400000)/60000.0", "(5400000)/60000.0", "(5400000)/60000.0" }
+Handles
+([][]com.sun.star.beans.PropertyValue) { { { Name = "Position", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 11 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeXMaximum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 200000 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeXMinimum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RefX", Handle = (long) 0, Value = (any) { (long) 0 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } } }
+MirroredX
+false
+MirroredY
+false
+Path
+([]com.sun.star.beans.PropertyValue) { { Name = "Coordinates", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeParameterPair) { { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 12 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 24 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 25 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 14 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 11 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 13 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 22 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 15 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 22 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 12 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 26 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 27 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 28 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 29 }, Type = (short) 1 } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "Segments", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeSegment) { { Command = (short) 1, Count = (short) 1 }, { Command = (short) 17, Count = (short) 1 }, { Command = (short) 16, Count = (short) 2 }, { Command = (short) 17, Count = (short) 2 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "TextFrames", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeTextFrame) { { TopLeft = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 18 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 20 }, Type = (short) 1 } }, BottomRight = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 19 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 21 }, Type = (short) 1 } } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }
+Type
+"ooxml-non-primitive"
+ViewBox
+(com.sun.star.awt.Rectangle) { X = (long) 0, Y = (long) 0, Width = (long) 0, Height = (long) 0 }
+/* trapezoid */
+AdjustmentValues
+([]com.sun.star.drawing.EnhancedCustomShapeAdjustmentValue) { { Value = (any) { (long) 25000 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE, Name = "adj" } }
+Equations
+([]string) { "min(logwidth,logheight)", "50000*logwidth/?0 ", "if(0-$0 ,0,if(?1 -$0 ,$0 ,?1 ))", "?0 *?2 /200000", "?0 *?2 /100000", "logwidth+0-?4 ", "logwidth+0-?3 ", "logwidth/3", "?7 *?2 /?1 ", "logheight/3", "?9 *?2 /?1 ", "logwidth+0-?8 ", "logwidth/2", "logheight/2", "logheight", "logwidth" }
+Handles
+([][]com.sun.star.beans.PropertyValue) { { { Name = "Position", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeXMaximum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 1 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeXMinimum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RefX", Handle = (long) 0, Value = (any) { (long) 0 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } } }
+MirroredX
+false
+MirroredY
+false
+Path
+([]com.sun.star.beans.PropertyValue) { { Name = "Coordinates", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeParameterPair) { { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 14 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 15 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 14 }, Type = (short) 1 } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "GluePoints", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeParameterPair) { { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 12 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 13 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 12 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 14 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 6 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 13 }, Type = (short) 1 } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "Segments", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeSegment) { { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 3 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "TextFrames", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeTextFrame) { { TopLeft = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 10 }, Type = (short) 1 } }, BottomRight = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 11 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 14 }, Type = (short) 1 } } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }
+Type
+"ooxml-non-primitive"
+ViewBox
+(com.sun.star.awt.Rectangle) { X = (long) 0, Y = (long) 0, Width = (long) 0, Height = (long) 0 }
+/* triangle */
+AdjustmentValues
+([]com.sun.star.drawing.EnhancedCustomShapeAdjustmentValue) { { Value = (any) { (long) 50000 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE, Name = "adj" } }
+Equations
+([]string) { "if(0-$0 ,0,if(100000-$0 ,$0 ,100000))", "logwidth*?0 /200000", "logwidth*?0 /100000", "logwidth/2", "?1 +?3 -0", "logheight/2", "logheight", "logwidth" }
+Handles
+([][]com.sun.star.beans.PropertyValue) { { { Name = "Position", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeXMaximum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 100000 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeXMinimum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RefX", Handle = (long) 0, Value = (any) { (long) 0 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } } }
+MirroredX
+false
+MirroredY
+false
+Path
+([]com.sun.star.beans.PropertyValue) { { Name = "Coordinates", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeParameterPair) { { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 6 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 6 }, Type = (short) 1 } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "GluePoints", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeParameterPair) { { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 6 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 6 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 6 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 1 } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "Segments", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeSegment) { { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 2 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "TextFrames", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeTextFrame) { { TopLeft = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 1 } }, BottomRight = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 6 }, Type = (short) 1 } } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }
+Type
+"ooxml-non-primitive"
+ViewBox
+(com.sun.star.awt.Rectangle) { X = (long) 0, Y = (long) 0, Width = (long) 0, Height = (long) 0 }
+/* upArrow */
+AdjustmentValues
+([]com.sun.star.drawing.EnhancedCustomShapeAdjustmentValue) { { Value = (any) { (long) 50000 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE, Name = "adj1" }, { Value = (any) { (long) 50000 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE, Name = "adj2" } }
+Equations
+([]string) { "min(logwidth,logheight)", "100000*logheight/?0 ", "if(0-$0 ,0,if(100000-$0 ,$0 ,100000))", "if(0-$1 ,0,if(?1 -$1 ,$1 ,?1 ))", "?0 *?3 /100000", "0+?4 -0", "logwidth*?2 /200000", "logwidth/2", "?7 +0-?6 ", "?7 +?6 -0", "logwidth/2", "?8 *?4 /?10 ", "?5 +0-?11 ", "logheight", "logwidth" }
+Handles
+([][]com.sun.star.beans.PropertyValue) { { { Name = "Position", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 13 }, Type = (short) 1 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeXMaximum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 100000 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeXMinimum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RefX", Handle = (long) 0, Value = (any) { (long) 0 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }, { { Name = "Position", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 1 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeYMaximum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 1 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeYMinimum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RefY", Handle = (long) 0, Value = (any) { (long) 1 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } } }
+MirroredX
+false
+MirroredY
+false
+Path
+([]com.sun.star.beans.PropertyValue) { { Name = "Coordinates", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeParameterPair) { { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 14 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 9 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 9 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 13 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 13 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 1 } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "Segments", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeSegment) { { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 6 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "TextFrames", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeTextFrame) { { TopLeft = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 12 }, Type = (short) 1 } }, BottomRight = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 9 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 13 }, Type = (short) 1 } } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }
+Type
+"ooxml-non-primitive"
+ViewBox
+(com.sun.star.awt.Rectangle) { X = (long) 0, Y = (long) 0, Width = (long) 0, Height = (long) 0 }
+/* upArrowCallout */
+AdjustmentValues
+([]com.sun.star.drawing.EnhancedCustomShapeAdjustmentValue) { { Value = (any) { (long) 25000 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE, Name = "adj1" }, { Value = (any) { (long) 25000 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE, Name = "adj2" }, { Value = (any) { (long) 25000 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE, Name = "adj3" }, { Value = (any) { (long) 64977 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE, Name = "adj4" } }
+Equations
+([]string) { "min(logwidth,logheight)", "50000*logwidth/?0 ", "if(0-$1 ,0,if(?1 -$1 ,$1 ,?1 ))", "?2 *2/1", "if(0-$0 ,0,if(?3 -$0 ,$0 ,?3 ))", "100000*logheight/?0 ", "if(0-$2 ,0,if(?5 -$2 ,$2 ,?5 ))", "?6 *?0 /logheight", "100000+0-?7 ", "if(0-$3 ,0,if(?8 -$3 ,$3 ,?8 ))", "?0 *?2 /100000", "?0 *?4 /200000", "logwidth/2", "?12 +0-?10 ", "?12 +0-?11 ", "?12 +?11 -0", "?12 +?10 -0", "?0 *?6 /100000", "logheight*?9 /100000", "logheight+0-?18 ", "(?19 +logheight)/2", "logwidth", "logheight" }
+Handles
+([][]com.sun.star.beans.PropertyValue) { { { Name = "Position", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 14 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 17 }, Type = (short) 1 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeXMaximum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeXMinimum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RefX", Handle = (long) 0, Value = (any) { (long) 0 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }, { { Name = "Position", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 13 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeXMaximum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 1 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeXMinimum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RefX", Handle = (long) 0, Value = (any) { (long) 1 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }, { { Name = "Position", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 21 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 17 }, Type = (short) 1 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeYMaximum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 1 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeYMinimum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RefY", Handle = (long) 0, Value = (any) { (long) 2 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }, { { Name = "Position", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 19 }, Type = (short) 1 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeYMaximum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 1 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeYMinimum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RefY", Handle = (long) 0, Value = (any) { (long) 3 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } } }
+MirroredX
+false
+MirroredY
+false
+Path
+([]com.sun.star.beans.PropertyValue) { { Name = "Coordinates", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeParameterPair) { { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 19 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 14 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 19 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 14 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 17 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 13 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 17 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 12 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 16 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 17 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 15 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 17 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 15 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 19 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 21 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 19 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 21 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 22 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 22 }, Type = (short) 1 } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "Segments", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeSegment) { { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 10 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "TextFrames", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeTextFrame) { { TopLeft = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 19 }, Type = (short) 1 } }, BottomRight = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 21 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 22 }, Type = (short) 1 } } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }
+Type
+"ooxml-non-primitive"
+ViewBox
+(com.sun.star.awt.Rectangle) { X = (long) 0, Y = (long) 0, Width = (long) 0, Height = (long) 0 }
+/* upDownArrow */
+AdjustmentValues
+([]com.sun.star.drawing.EnhancedCustomShapeAdjustmentValue) { { Value = (any) { (long) 50000 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE, Name = "adj1" }, { Value = (any) { (long) 50000 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE, Name = "adj2" } }
+Equations
+([]string) { "min(logwidth,logheight)", "50000*logheight/?0 ", "if(0-$0 ,0,if(100000-$0 ,$0 ,100000))", "if(0-$1 ,0,if(?1 -$1 ,$1 ,?1 ))", "?0 *?3 /100000", "logheight+0-?4 ", "logwidth*?2 /200000", "logwidth/2", "?7 +0-?6 ", "?7 +?6 -0", "logwidth/2", "?8 *?4 /?10 ", "?4 +0-?11 ", "?5 +?11 -0", "logheight/2", "logheight", "logwidth" }
+Handles
+([][]com.sun.star.beans.PropertyValue) { { { Name = "Position", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 1 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeXMaximum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 100000 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeXMinimum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RefX", Handle = (long) 0, Value = (any) { (long) 0 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }, { { Name = "Position", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeYMaximum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 1 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeYMinimum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RefY", Handle = (long) 0, Value = (any) { (long) 1 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } } }
+MirroredX
+false
+MirroredY
+false
+Path
+([]com.sun.star.beans.PropertyValue) { { Name = "Coordinates", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeParameterPair) { { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 16 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 9 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 9 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 16 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 15 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "Segments", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeSegment) { { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 9 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "TextFrames", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeTextFrame) { { TopLeft = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 12 }, Type = (short) 1 } }, BottomRight = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 9 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 13 }, Type = (short) 1 } } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }
+Type
+"ooxml-non-primitive"
+ViewBox
+(com.sun.star.awt.Rectangle) { X = (long) 0, Y = (long) 0, Width = (long) 0, Height = (long) 0 }
+/* upDownArrowCallout */
+AdjustmentValues
+([]com.sun.star.drawing.EnhancedCustomShapeAdjustmentValue) { { Value = (any) { (long) 25000 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE, Name = "adj1" }, { Value = (any) { (long) 25000 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE, Name = "adj2" }, { Value = (any) { (long) 25000 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE, Name = "adj3" }, { Value = (any) { (long) 48123 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE, Name = "adj4" } }
+Equations
+([]string) { "min(logwidth,logheight)", "50000*logwidth/?0 ", "if(0-$1 ,0,if(?1 -$1 ,$1 ,?1 ))", "?2 *2/1", "if(0-$0 ,0,if(?3 -$0 ,$0 ,?3 ))", "50000*logheight/?0 ", "if(0-$2 ,0,if(?5 -$2 ,$2 ,?5 ))", "logheight/2", "?6 *?0 /?7 ", "100000+0-?8 ", "if(0-$3 ,0,if(?9 -$3 ,$3 ,?9 ))", "?0 *?2 /100000", "?0 *?4 /200000", "logwidth/2", "?13 +0-?11 ", "?13 +0-?12 ", "?13 +?12 -0", "?13 +?11 -0", "?0 *?6 /100000", "logheight+0-?18 ", "logheight*?10 /200000", "logheight/2", "?21 +0-?20 ", "?21 +?20 -0", "logwidth", "logheight" }
+Handles
+([][]com.sun.star.beans.PropertyValue) { { { Name = "Position", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 15 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 18 }, Type = (short) 1 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeXMaximum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeXMinimum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RefX", Handle = (long) 0, Value = (any) { (long) 0 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }, { { Name = "Position", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 14 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeXMaximum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 1 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeXMinimum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RefX", Handle = (long) 0, Value = (any) { (long) 1 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }, { { Name = "Position", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 24 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 18 }, Type = (short) 1 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeYMaximum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 1 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeYMinimum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RefY", Handle = (long) 0, Value = (any) { (long) 2 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }, { { Name = "Position", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 22 }, Type = (short) 1 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeYMaximum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 9 }, Type = (short) 1 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeYMinimum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RefY", Handle = (long) 0, Value = (any) { (long) 3 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } } }
+MirroredX
+false
+MirroredY
+false
+Path
+([]com.sun.star.beans.PropertyValue) { { Name = "Coordinates", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeParameterPair) { { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 22 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 15 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 22 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 15 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 18 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 14 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 18 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 13 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 17 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 18 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 16 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 18 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 16 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 22 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 24 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 22 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 24 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 23 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 16 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 23 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 16 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 19 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 17 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 19 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 13 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 25 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 14 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 19 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 15 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 19 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 15 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 23 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 23 }, Type = (short) 1 } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "Segments", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeSegment) { { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 17 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "TextFrames", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeTextFrame) { { TopLeft = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 22 }, Type = (short) 1 } }, BottomRight = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 24 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 23 }, Type = (short) 1 } } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }
+Type
+"ooxml-non-primitive"
+ViewBox
+(com.sun.star.awt.Rectangle) { X = (long) 0, Y = (long) 0, Width = (long) 0, Height = (long) 0 }
+/* uturnArrow */
+AdjustmentValues
+([]com.sun.star.drawing.EnhancedCustomShapeAdjustmentValue) { { Value = (any) { (long) 25000 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE, Name = "adj1" }, { Value = (any) { (long) 25000 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE, Name = "adj2" }, { Value = (any) { (long) 25000 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE, Name = "adj3" }, { Value = (any) { (long) 43750 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE, Name = "adj4" }, { Value = (any) { (long) 75000 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE, Name = "adj5" } }
+Equations
+([]string) { "if(0-$1 ,0,if(25000-$1 ,$1 ,25000))", "?0 *2/1", "if(0-$0 ,0,if(?1 -$0 ,$0 ,?1 ))", "min(logwidth,logheight)", "?2 *?3 /logheight", "100000+0-?4 ", "?5 *logheight/?3 ", "if(0-$2 ,0,if(?6 -$2 ,$2 ,?6 ))", "?7 +?2 -0", "?8 *?3 /logheight", "if(?9 -$4 ,?9 ,if(100000-$4 ,$4 ,100000))", "?3 *?2 /100000", "?3 *?0 /100000", "?11 *1/2", "?12 +0-?13 ", "logheight*?10 /100000", "?3 *?7 /100000", "?15 +0-?16 ", "logwidth+0-?14 ", "?18 *1/2", "min(?19 ,?17 )", "?20 *100000/?3 ", "if(0-$3 ,0,if(?21 -$3 ,$3 ,?21 ))", "?3 *?22 /100000", "?23 +0-?11 ", "max(?24 ,0)", "?11 +?25 -0", "logwidth+0-?12 ", "?27 +0-?12 ", "?28 +?14 -0", "?18 +0-?23 ", "?29 +0-?25 ", "(?11 +?29 )/2", "logheight", "logwidth", "(10800000)/60000.0", "(5400000)/60000.0", "(16200000)/60000.0", "(5400000)/60000.0", "(0)/60000.0", "(-5400000)/60000.0", "(16200000)/60000.0", "(-5400000)/60000.0" }
+Handles
+([][]com.sun.star.beans.PropertyValue) { { { Name = "Position", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 11 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 33 }, Type = (short) 1 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeXMaximum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 1 }, Type = (short) 1 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeXMinimum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RefX", Handle = (long) 0, Value = (any) { (long) 0 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }, { { Name = "Position", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 28 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 33 }, Type = (short) 1 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeXMaximum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 25000 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeXMinimum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RefX", Handle = (long) 0, Value = (any) { (long) 1 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }, { { Name = "Position", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 28 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 17 }, Type = (short) 1 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeYMaximum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 6 }, Type = (short) 1 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeYMinimum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RefY", Handle = (long) 0, Value = (any) { (long) 2 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }, { { Name = "Position", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 23 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeXMaximum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 21 }, Type = (short) 1 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeXMinimum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RefX", Handle = (long) 0, Value = (any) { (long) 3 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }, { { Name = "Position", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 34 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 15 }, Type = (short) 1 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeYMaximum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 100000 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeYMinimum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 9 }, Type = (short) 1 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RefY", Handle = (long) 0, Value = (any) { (long) 4 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } } }
+MirroredX
+false
+MirroredY
+false
+Path
+([]com.sun.star.beans.PropertyValue) { { Name = "Coordinates", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeParameterPair) { { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 33 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 23 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 23 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 23 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 35 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 36 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 30 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 23 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 23 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 37 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 38 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 18 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 17 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 34 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 17 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 27 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 15 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 28 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 17 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 29 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 17 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 29 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 26 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 25 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 25 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 39 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 40 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 26 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 11 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 25 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 25 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 41 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 42 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 11 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 33 }, Type = (short) 1 } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "Segments", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeSegment) { { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 1 }, { Command = (short) 17, Count = (short) 1 }, { Command = (short) 2, Count = (short) 1 }, { Command = (short) 17, Count = (short) 1 }, { Command = (short) 2, Count = (short) 6 }, { Command = (short) 17, Count = (short) 1 }, { Command = (short) 2, Count = (short) 1 }, { Command = (short) 17, Count = (short) 1 }, { Command = (short) 2, Count = (short) 1 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "TextFrames", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeTextFrame) { { TopLeft = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, BottomRight = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 34 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 33 }, Type = (short) 1 } } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }
+Type
+"ooxml-non-primitive"
+ViewBox
+(com.sun.star.awt.Rectangle) { X = (long) 0, Y = (long) 0, Width = (long) 0, Height = (long) 0 }
+/* verticalScroll */
+AdjustmentValues
+([]com.sun.star.drawing.EnhancedCustomShapeAdjustmentValue) { { Value = (any) { (long) 12500 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE, Name = "adj" } }
+Equations
+([]string) { "if(0-$0 ,0,if(25000-$0 ,$0 ,25000))", "min(logwidth,logheight)", "?1 *?0 /100000", "?2 *1/2", "?2 *1/4", "?2 +?3 -0", "?2 +?2 -0", "logwidth+0-?2 ", "logwidth+0-?3 ", "?7 +0-?3 ", "logheight+0-?2 ", "logheight+0-?3 ", "logwidth/2", "logheight/2", "logheight", "(5400000)/60000.0", "(-5400000)/60000.0", "(5400000)/60000.0", "(-10800000)/60000.0", "(10800000)/60000.0", "(5400000)/60000.0", "(16200000)/60000.0", "(10800000)/60000.0", "(0)/60000.0", "(5400000)/60000.0", "(0)/60000.0", "(5400000)/60000.0", "(5400000)/60000.0", "(10800000)/60000.0", "(0)/60000.0", "(5400000)/60000.0", "(5400000)/60000.0", "(10800000)/60000.0", "(0)/60000.0", "(16200000)/60000.0", "(16200000)/60000.0", "(10800000)/60000.0", "(10800000)/60000.0", "(5400000)/60000.0", "(16200000)/60000.0", "(10800000)/60000.0", "(0)/60000.0", "(5400000)/60000.0", "(5400000)/60000.0", "(10800000)/60000.0", "(16200000)/60000.0", "(10800000)/60000.0", "(5400000)/60000.0", "(10800000)/60000.0", "(16200000)/60000.0", "(10800000)/60000.0", "(5400000)/60000.0", "(-5400000)/60000.0" }
+Handles
+([][]com.sun.star.beans.PropertyValue) { { { Name = "Position", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeYMaximum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 25000 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeYMinimum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RefY", Handle = (long) 0, Value = (any) { (long) 0 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } } }
+MirroredX
+false
+MirroredY
+false
+Path
+([]com.sun.star.beans.PropertyValue) { { Name = "Coordinates", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeParameterPair) { { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 14 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 15 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 16 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 11 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 17 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 18 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 10 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 19 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 20 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 21 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 22 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 11 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 23 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 24 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 6 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 25 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 26 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 27 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 28 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 6 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 29 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 30 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 31 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 32 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 11 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 33 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 34 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 35 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 36 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 10 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 37 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 38 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 39 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 40 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 11 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 41 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 42 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 14 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 43 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 44 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 45 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 46 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 47 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 48 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 6 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 10 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 49 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 50 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 11 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 14 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 51 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 52 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 10 }, Type = (short) 1 } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "Segments", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeSegment) { { Command = (short) 1, Count = (short) 1 }, { Command = (short) 17, Count = (short) 1 }, { Command = (short) 2, Count = (short) 1 }, { Command = (short) 17, Count = (short) 1 }, { Command = (short) 2, Count = (short) 2 }, { Command = (short) 17, Count = (short) 1 }, { Command = (short) 2, Count = (short) 1 }, { Command = (short) 17, Count = (short) 1 }, { Command = (short) 2, Count = (short) 2 }, { Command = (short) 17, Count = (short) 1 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 1, Count = (short) 1 }, { Command = (short) 17, Count = (short) 2 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 7, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 }, { Command = (short) 1, Count = (short) 1 }, { Command = (short) 17, Count = (short) 2 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 1, Count = (short) 1 }, { Command = (short) 17, Count = (short) 2 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 19, Count = (short) 0 }, { Command = (short) 7, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 }, { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 1 }, { Command = (short) 17, Count = (short) 1 }, { Command = (short) 2, Count = (short) 1 }, { Command = (short) 17, Count = (short) 1 }, { Command = (short) 2, Count = (short) 2 }, { Command = (short) 17, Count = (short) 1 }, { Command = (short) 2, Count = (short) 1 }, { Command = (short) 17, Count = (short) 1 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 1, Count = (short) 1 }, { Command = (short) 17, Count = (short) 2 }, { Command = (short) 2, Count = (short) 1 }, { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 1 }, { Command = (short) 1, Count = (short) 1 }, { Command = (short) 17, Count = (short) 1 }, { Command = (short) 2, Count = (short) 1 }, { Command = (short) 1, Count = (short) 1 }, { Command = (short) 17, Count = (short) 1 }, { Command = (short) 2, Count = (short) 1 }, { Command = (short) 6, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "TextFrames", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeTextFrame) { { TopLeft = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 } }, BottomRight = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 11 }, Type = (short) 1 } } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }
+Type
+"ooxml-non-primitive"
+ViewBox
+(com.sun.star.awt.Rectangle) { X = (long) 0, Y = (long) 0, Width = (long) 0, Height = (long) 0 }
+/* wave */
+AdjustmentValues
+([]com.sun.star.drawing.EnhancedCustomShapeAdjustmentValue) { { Value = (any) { (long) 12500 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE, Name = "adj1" }, { Value = (any) { (long) 0 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE, Name = "adj2" } }
+Equations
+([]string) { "if(0-$0 ,0,if(20000-$0 ,$0 ,20000))", "if(-10000-$1 ,-10000,if(10000-$1 ,$1 ,10000))", "logheight*?0 /100000", "?2 *10/3", "?2 +0-?3 ", "?2 +?3 -0", "logheight+0-?2 ", "?6 +0-?3 ", "?6 +?3 -0", "logwidth*?1 /100000", "logwidth*?1 /50000", "abs(?9 )", "if(?10 ,0,?10 )", "0+0-?12 ", "if(?10 ,?10 ,0)", "logwidth+0-?14 ", "(?12 +?15 )/3", "?13 +?16 -0", "(?17 +?15 )/2", "0+?14 -0", "logwidth+?12 -0", "?19 +?16 -0", "(?21 +?20 )/2", "logwidth+0-?11 ", "logwidth/2", "?24 +?9 -0", "?24 +0-?9 ", "max(?13 ,?19 )", "min(?15 ,?20 )", "logheight*?0 /50000", "logheight+0-?29 ", "logheight", "logheight/2" }
+Handles
+([][]com.sun.star.beans.PropertyValue) { { { Name = "Position", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeYMaximum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 20000 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeYMinimum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RefY", Handle = (long) 0, Value = (any) { (long) 0 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }, { { Name = "Position", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 25 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 31 }, Type = (short) 1 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeXMaximum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 10000 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeXMinimum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) -10000 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RefX", Handle = (long) 0, Value = (any) { (long) 1 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } } }
+MirroredX
+false
+MirroredY
+false
+Path
+([]com.sun.star.beans.PropertyValue) { { Name = "Coordinates", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeParameterPair) { { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 13 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 17 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 4 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 18 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 15 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 20 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 6 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 22 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 8 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 21 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 7 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 19 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 6 }, Type = (short) 1 } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "Segments", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeSegment) { { Command = (short) 1, Count = (short) 1 }, { Command = (short) 3, Count = (short) 1 }, { Command = (short) 2, Count = (short) 1 }, { Command = (short) 3, Count = (short) 1 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "TextFrames", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeTextFrame) { { TopLeft = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 27 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 29 }, Type = (short) 1 } }, BottomRight = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 28 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 30 }, Type = (short) 1 } } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }
+Type
+"ooxml-non-primitive"
+ViewBox
+(com.sun.star.awt.Rectangle) { X = (long) 0, Y = (long) 0, Width = (long) 0, Height = (long) 0 }
+/* wedgeEllipseCallout */
+AdjustmentValues
+([]com.sun.star.drawing.EnhancedCustomShapeAdjustmentValue) { { Value = (any) { (long) -20833 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE, Name = "adj1" }, { Value = (any) { (long) 62500 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE, Name = "adj2" } }
+Equations
+([]string) { "logwidth*$0 /100000", "logheight*$1 /100000", "logwidth/2", "?2 +?0 -0", "logheight/2", "?4 +?1 -0", "?0 *logheight/1", "?1 *logwidth/1", "(10800000*atan2(?7 ,?6 ))/pi", "?8 +660000-0", "?8 +0-660000", "logwidth/2", "?11 *cos(pi*(?9 )/10800000)", "logheight/2", "?13 *sin(pi*(?9 )/10800000)", "?2 +?12 -0", "?4 +?14 -0", "?11 *cos(pi*(?10 )/10800000)", "?13 *sin(pi*(?10 )/10800000)", "?2 +?17 -0", "?4 +?18 -0", "(10800000*atan2(?14 ,?12 ))/pi", "(10800000*atan2(?18 ,?17 ))/pi", "?22 +0-?21 ", "?23 +21600000-0", "if(?23 ,?23 ,?24 )", "?11 *cos(pi*(2700000)/10800000)", "?13 *sin(pi*(2700000)/10800000)", "?2 +0-?26 ", "?2 +?26 -0", "?4 +0-?27 ", "?4 +?27 -0", "logheight", "logwidth", "(?21 )/60000.0", "(?25 )/60000.0" }
+Handles
+([][]com.sun.star.beans.PropertyValue) { { { Name = "Position", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 1 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeXMaximum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2147483647 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeXMinimum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) -2147483647 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeYMaximum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2147483647 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeYMinimum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) -2147483647 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RefX", Handle = (long) 0, Value = (any) { (long) 0 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RefY", Handle = (long) 0, Value = (any) { (long) 1 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } } }
+MirroredX
+false
+MirroredY
+false
+Path
+([]com.sun.star.beans.PropertyValue) { { Name = "Coordinates", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeParameterPair) { { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 15 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 16 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 11 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 13 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 34 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 35 }, Type = (short) 1 } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "Segments", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeSegment) { { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 1 }, { Command = (short) 17, Count = (short) 1 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "TextFrames", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeTextFrame) { { TopLeft = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 28 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 30 }, Type = (short) 1 } }, BottomRight = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 29 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 31 }, Type = (short) 1 } } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }
+Type
+"ooxml-non-primitive"
+ViewBox
+(com.sun.star.awt.Rectangle) { X = (long) 0, Y = (long) 0, Width = (long) 0, Height = (long) 0 }
+/* wedgeRectCallout */
+AdjustmentValues
+([]com.sun.star.drawing.EnhancedCustomShapeAdjustmentValue) { { Value = (any) { (long) -20833 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE, Name = "adj1" }, { Value = (any) { (long) 62500 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE, Name = "adj2" } }
+Equations
+([]string) { "logwidth*$0 /100000", "logheight*$1 /100000", "logwidth/2", "?2 +?0 -0", "logheight/2", "?4 +?1 -0", "?3 +0-?2 ", "?5 +0-?4 ", "?0 *logheight/logwidth", "abs(?1 )", "abs(?8 )", "?9 +0-?10 ", "if(?0 ,7,2)", "if(?0 ,10,5)", "logwidth*?12 /12", "logwidth*?13 /12", "if(?1 ,7,2)", "if(?1 ,10,5)", "logheight*?16 /12", "logheight*?17 /12", "if(?0 ,0,?3 )", "if(?11 ,0,?20 )", "if(?1 ,?14 ,?3 )", "if(?11 ,?22 ,?14 )", "if(?0 ,?3 ,logwidth)", "if(?11 ,logwidth,?24 )", "if(?1 ,?3 ,?14 )", "if(?11 ,?26 ,?14 )", "if(?0 ,?18 ,?5 )", "if(?11 ,?18 ,?28 )", "if(?1 ,0,?5 )", "if(?11 ,?30 ,0)", "if(?0 ,?5 ,?18 )", "if(?11 ,?18 ,?32 )", "if(?1 ,?5 ,logheight)", "if(?11 ,?34 ,logheight)", "logheight", "logwidth" }
+Handles
+([][]com.sun.star.beans.PropertyValue) { { { Name = "Position", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 1 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeXMaximum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2147483647 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeXMinimum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) -2147483647 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeYMaximum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2147483647 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeYMinimum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) -2147483647 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RefX", Handle = (long) 0, Value = (any) { (long) 0 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RefY", Handle = (long) 0, Value = (any) { (long) 1 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } } }
+MirroredX
+false
+MirroredY
+false
+Path
+([]com.sun.star.beans.PropertyValue) { { Name = "Coordinates", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeParameterPair) { { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 14 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 23 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 31 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 15 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 37 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 37 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 18 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 25 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 33 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 37 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 19 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 37 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 36 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 15 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 36 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 27 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 35 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 14 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 36 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 36 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 19 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 21 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 29 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 18 }, Type = (short) 1 } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "Segments", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeSegment) { { Command = (short) 1, Count = (short) 1 }, { Command = (short) 2, Count = (short) 15 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "TextFrames", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeTextFrame) { { TopLeft = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, BottomRight = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 37 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 36 }, Type = (short) 1 } } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }
+Type
+"ooxml-non-primitive"
+ViewBox
+(com.sun.star.awt.Rectangle) { X = (long) 0, Y = (long) 0, Width = (long) 0, Height = (long) 0 }
+/* wedgeRoundRectCallout */
+AdjustmentValues
+([]com.sun.star.drawing.EnhancedCustomShapeAdjustmentValue) { { Value = (any) { (long) -20833 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE, Name = "adj1" }, { Value = (any) { (long) 62500 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE, Name = "adj2" }, { Value = (any) { (long) 16667 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE, Name = "adj3" } }
+Equations
+([]string) { "logwidth*$0 /100000", "logheight*$1 /100000", "logwidth/2", "?2 +?0 -0", "logheight/2", "?4 +?1 -0", "?0 *logheight/logwidth", "abs(?1 )", "abs(?6 )", "?7 +0-?8 ", "if(?0 ,7,2)", "if(?0 ,10,5)", "logwidth*?10 /12", "logwidth*?11 /12", "if(?1 ,7,2)", "if(?1 ,10,5)", "logheight*?14 /12", "logheight*?15 /12", "if(?0 ,0,?3 )", "if(?9 ,0,?18 )", "if(?1 ,?12 ,?3 )", "if(?9 ,?20 ,?12 )", "if(?0 ,?3 ,logwidth)", "if(?9 ,logwidth,?22 )", "if(?1 ,?3 ,?12 )", "if(?9 ,?24 ,?12 )", "if(?0 ,?16 ,?5 )", "if(?9 ,?16 ,?26 )", "if(?1 ,0,?5 )", "if(?9 ,?28 ,0)", "if(?0 ,?5 ,?16 )", "if(?9 ,?16 ,?30 )", "if(?1 ,?5 ,logheight)", "if(?9 ,?32 ,logheight)", "min(logwidth,logheight)", "?34 *$2 /100000", "logwidth+0-?35 ", "logheight+0-?35 ", "?35 *29289/100000", "logwidth+0-?38 ", "logheight+0-?38 ", "logheight", "logwidth", "(10800000)/60000.0", "(5400000)/60000.0", "(16200000)/60000.0", "(5400000)/60000.0", "(0)/60000.0", "(5400000)/60000.0", "(5400000)/60000.0", "(5400000)/60000.0" }
+Handles
+([][]com.sun.star.beans.PropertyValue) { { { Name = "Position", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 3 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 5 }, Type = (short) 1 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeXMaximum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2147483647 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeXMinimum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) -2147483647 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeYMaximum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 2147483647 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RangeYMinimum", Handle = (long) 0, Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) -2147483647 }, Type = (short) 0 } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RefX", Handle = (long) 0, Value = (any) { (long) 0 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "RefY", Handle = (long) 0, Value = (any) { (long) 1 }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } } }
+MirroredX
+false
+MirroredY
+false
+Path
+([]com.sun.star.beans.PropertyValue) { { Name = "Coordinates", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeParameterPair) { { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 35 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 35 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 35 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 43 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 44 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 12 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 21 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 29 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 13 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 36 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 35 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 35 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 45 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 46 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 42 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 16 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 23 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 31 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 42 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 17 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 42 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 37 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 35 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 35 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 47 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 48 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 13 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 41 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 25 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 33 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 12 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 41 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 35 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 41 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 35 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 35 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 49 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 50 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 17 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 19 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 27 }, Type = (short) 1 } }, { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 0 }, Type = (short) 0 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 16 }, Type = (short) 1 } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "Segments", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeSegment) { { Command = (short) 1, Count = (short) 1 }, { Command = (short) 17, Count = (short) 1 }, { Command = (short) 2, Count = (short) 4 }, { Command = (short) 17, Count = (short) 1 }, { Command = (short) 2, Count = (short) 4 }, { Command = (short) 17, Count = (short) 1 }, { Command = (short) 2, Count = (short) 4 }, { Command = (short) 17, Count = (short) 1 }, { Command = (short) 2, Count = (short) 3 }, { Command = (short) 4, Count = (short) 0 }, { Command = (short) 5, Count = (short) 0 } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE }, { Name = "TextFrames", Handle = (long) 0, Value = (any) { ([]com.sun.star.drawing.EnhancedCustomShapeTextFrame) { { TopLeft = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 38 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 38 }, Type = (short) 1 } }, BottomRight = (com.sun.star.drawing.EnhancedCustomShapeParameterPair) { First = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 39 }, Type = (short) 1 }, Second = (com.sun.star.drawing.EnhancedCustomShapeParameter) { Value = (any) { (long) 40 }, Type = (short) 1 } } } } }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }
+Type
+"ooxml-non-primitive"
+ViewBox
+(com.sun.star.awt.Rectangle) { X = (long) 0, Y = (long) 0, Width = (long) 0, Height = (long) 0 }
diff --git a/oox/source/drawingml/customshapes/presetShapeDefinitions.xml b/oox/source/drawingml/customshapes/presetShapeDefinitions.xml
new file mode 100644
index 000000000..7123e27cc
--- /dev/null
+++ b/oox/source/drawingml/customshapes/presetShapeDefinitions.xml
@@ -0,0 +1,19898 @@
+<?xml version="1.0" encoding="utf-8"?>
+<presetShapeDefinitons>
+ <accentBorderCallout1>
+
+ <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+
+ <gd name="adj1" fmla="val 18750" />
+
+ <gd name="adj2" fmla="val -8333" />
+
+ <gd name="adj3" fmla="val 112500" />
+
+ <gd name="adj4" fmla="val -38333" />
+
+ </avLst>
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="y1" fmla="*/ h adj1 100000" />
+ <gd name="x1" fmla="*/ w adj2 100000" />
+ <gd name="y2" fmla="*/ h adj3 100000" />
+ <gd name="x2" fmla="*/ w adj4 100000" />
+ </gdLst>
+ <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <ahXY gdRefX="adj2" minX="-2147483647" maxX="2147483647" gdRefY="adj1" minY="-2147483647" maxY="2147483647">
+ <pos x="x1" y="y1" />
+ </ahXY>
+ <ahXY gdRefX="adj4" minX="-2147483647" maxX="2147483647" gdRefY="adj3" minY="-2147483647" maxY="2147483647">
+ <pos x="x2" y="y2" />
+ </ahXY>
+ </ahLst>
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="0">
+ <pos x="r" y="vc" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="hc" y="b" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="l" y="vc" />
+ </cxn>
+ <cxn ang="3cd4">
+ <pos x="hc" y="t" />
+ </cxn>
+ </cxnLst>
+ <rect l="l" t="t" r="r" b="b" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path extrusionOk="false">
+ <moveTo>
+ <pt x="l" y="t" />
+ </moveTo>
+ <lnTo>
+ <pt x="r" y="t" />
+ </lnTo>
+ <lnTo>
+ <pt x="r" y="b" />
+ </lnTo>
+ <lnTo>
+ <pt x="l" y="b" />
+ </lnTo>
+ <close />
+ </path>
+ <path fill="none" extrusionOk="false">
+ <moveTo>
+ <pt x="x1" y="t" />
+ </moveTo>
+ <close />
+ <lnTo>
+ <pt x="x1" y="b" />
+ </lnTo>
+ </path>
+ <path fill="none" extrusionOk="false">
+ <moveTo>
+ <pt x="x1" y="y1" />
+ </moveTo>
+ <lnTo>
+ <pt x="x2" y="y2" />
+ </lnTo>
+ </path>
+ </pathLst>
+
+ </accentBorderCallout1>
+ <accentBorderCallout2>
+
+ <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+
+ <gd name="adj1" fmla="val 18750" />
+
+ <gd name="adj2" fmla="val -8333" />
+
+ <gd name="adj3" fmla="val 18750" />
+
+ <gd name="adj4" fmla="val -16667" />
+
+ <gd name="adj5" fmla="val 112500" />
+
+ <gd name="adj6" fmla="val -46667" />
+
+ </avLst>
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="y1" fmla="*/ h adj1 100000" />
+ <gd name="x1" fmla="*/ w adj2 100000" />
+ <gd name="y2" fmla="*/ h adj3 100000" />
+ <gd name="x2" fmla="*/ w adj4 100000" />
+ <gd name="y3" fmla="*/ h adj5 100000" />
+ <gd name="x3" fmla="*/ w adj6 100000" />
+ </gdLst>
+ <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <ahXY gdRefX="adj2" minX="-2147483647" maxX="2147483647" gdRefY="adj1" minY="-2147483647" maxY="2147483647">
+ <pos x="x1" y="y1" />
+ </ahXY>
+ <ahXY gdRefX="adj4" minX="-2147483647" maxX="2147483647" gdRefY="adj3" minY="-2147483647" maxY="2147483647">
+ <pos x="x2" y="y2" />
+ </ahXY>
+ <ahXY gdRefX="adj6" minX="-2147483647" maxX="2147483647" gdRefY="adj5" minY="-2147483647" maxY="2147483647">
+ <pos x="x3" y="y3" />
+ </ahXY>
+ </ahLst>
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="0">
+ <pos x="r" y="vc" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="hc" y="b" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="l" y="vc" />
+ </cxn>
+ <cxn ang="3cd4">
+ <pos x="hc" y="t" />
+ </cxn>
+ </cxnLst>
+ <rect l="l" t="t" r="r" b="b" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path extrusionOk="false">
+ <moveTo>
+ <pt x="l" y="t" />
+ </moveTo>
+ <lnTo>
+ <pt x="r" y="t" />
+ </lnTo>
+ <lnTo>
+ <pt x="r" y="b" />
+ </lnTo>
+ <lnTo>
+ <pt x="l" y="b" />
+ </lnTo>
+ <close />
+ </path>
+ <path fill="none" extrusionOk="false">
+ <moveTo>
+ <pt x="x1" y="t" />
+ </moveTo>
+ <close />
+ <lnTo>
+ <pt x="x1" y="b" />
+ </lnTo>
+ </path>
+ <path fill="none" extrusionOk="false">
+ <moveTo>
+ <pt x="x1" y="y1" />
+ </moveTo>
+ <lnTo>
+ <pt x="x2" y="y2" />
+ </lnTo>
+ <lnTo>
+ <pt x="x3" y="y3" />
+ </lnTo>
+ </path>
+ </pathLst>
+
+ </accentBorderCallout2>
+ <accentBorderCallout3>
+
+ <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+
+ <gd name="adj1" fmla="val 18750" />
+
+ <gd name="adj2" fmla="val -8333" />
+
+ <gd name="adj3" fmla="val 18750" />
+
+ <gd name="adj4" fmla="val -16667" />
+
+ <gd name="adj5" fmla="val 100000" />
+
+ <gd name="adj6" fmla="val -16667" />
+
+ <gd name="adj7" fmla="val 112963" />
+
+ <gd name="adj8" fmla="val -8333" />
+
+ </avLst>
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="y1" fmla="*/ h adj1 100000" />
+ <gd name="x1" fmla="*/ w adj2 100000" />
+ <gd name="y2" fmla="*/ h adj3 100000" />
+ <gd name="x2" fmla="*/ w adj4 100000" />
+ <gd name="y3" fmla="*/ h adj5 100000" />
+ <gd name="x3" fmla="*/ w adj6 100000" />
+ <gd name="y4" fmla="*/ h adj7 100000" />
+ <gd name="x4" fmla="*/ w adj8 100000" />
+ </gdLst>
+ <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <ahXY gdRefX="adj2" minX="-2147483647" maxX="2147483647" gdRefY="adj1" minY="-2147483647" maxY="2147483647">
+ <pos x="x1" y="y1" />
+ </ahXY>
+ <ahXY gdRefX="adj4" minX="-2147483647" maxX="2147483647" gdRefY="adj3" minY="-2147483647" maxY="2147483647">
+ <pos x="x2" y="y2" />
+ </ahXY>
+ <ahXY gdRefX="adj6" minX="-2147483647" maxX="2147483647" gdRefY="adj5" minY="-2147483647" maxY="2147483647">
+ <pos x="x3" y="y3" />
+ </ahXY>
+ <ahXY gdRefX="adj8" minX="-2147483647" maxX="2147483647" gdRefY="adj7" minY="-2147483647" maxY="2147483647">
+ <pos x="x4" y="y4" />
+ </ahXY>
+ </ahLst>
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="0">
+ <pos x="r" y="vc" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="hc" y="b" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="l" y="vc" />
+ </cxn>
+ <cxn ang="3cd4">
+ <pos x="hc" y="t" />
+ </cxn>
+ </cxnLst>
+ <rect l="l" t="t" r="r" b="b" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path extrusionOk="false">
+ <moveTo>
+ <pt x="l" y="t" />
+ </moveTo>
+ <lnTo>
+ <pt x="r" y="t" />
+ </lnTo>
+ <lnTo>
+ <pt x="r" y="b" />
+ </lnTo>
+ <lnTo>
+ <pt x="l" y="b" />
+ </lnTo>
+ <close />
+ </path>
+ <path fill="none" extrusionOk="false">
+ <moveTo>
+ <pt x="x1" y="t" />
+ </moveTo>
+ <close />
+ <lnTo>
+ <pt x="x1" y="b" />
+ </lnTo>
+ </path>
+ <path fill="none" extrusionOk="false">
+ <moveTo>
+ <pt x="x1" y="y1" />
+ </moveTo>
+ <lnTo>
+ <pt x="x2" y="y2" />
+ </lnTo>
+ <lnTo>
+ <pt x="x3" y="y3" />
+ </lnTo>
+ <lnTo>
+ <pt x="x4" y="y4" />
+ </lnTo>
+ </path>
+ </pathLst>
+
+ </accentBorderCallout3>
+ <accentCallout1>
+
+ <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+
+ <gd name="adj1" fmla="val 18750" />
+
+ <gd name="adj2" fmla="val -8333" />
+
+ <gd name="adj3" fmla="val 112500" />
+
+ <gd name="adj4" fmla="val -38333" />
+
+ </avLst>
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="y1" fmla="*/ h adj1 100000" />
+ <gd name="x1" fmla="*/ w adj2 100000" />
+ <gd name="y2" fmla="*/ h adj3 100000" />
+ <gd name="x2" fmla="*/ w adj4 100000" />
+ </gdLst>
+ <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <ahXY gdRefX="adj2" minX="-2147483647" maxX="2147483647" gdRefY="adj1" minY="-2147483647" maxY="2147483647">
+ <pos x="x1" y="y1" />
+ </ahXY>
+ <ahXY gdRefX="adj4" minX="-2147483647" maxX="2147483647" gdRefY="adj3" minY="-2147483647" maxY="2147483647">
+ <pos x="x2" y="y2" />
+ </ahXY>
+ </ahLst>
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="0">
+ <pos x="r" y="vc" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="hc" y="b" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="l" y="vc" />
+ </cxn>
+ <cxn ang="3cd4">
+ <pos x="hc" y="t" />
+ </cxn>
+ </cxnLst>
+ <rect l="l" t="t" r="r" b="b" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path stroke="false" extrusionOk="false">
+ <moveTo>
+ <pt x="l" y="t" />
+ </moveTo>
+ <lnTo>
+ <pt x="r" y="t" />
+ </lnTo>
+ <lnTo>
+ <pt x="r" y="b" />
+ </lnTo>
+ <lnTo>
+ <pt x="l" y="b" />
+ </lnTo>
+ <close />
+ </path>
+ <path fill="none" extrusionOk="false">
+ <moveTo>
+ <pt x="x1" y="t" />
+ </moveTo>
+ <close />
+ <lnTo>
+ <pt x="x1" y="b" />
+ </lnTo>
+ </path>
+ <path fill="none" extrusionOk="false">
+ <moveTo>
+ <pt x="x1" y="y1" />
+ </moveTo>
+ <lnTo>
+ <pt x="x2" y="y2" />
+ </lnTo>
+ </path>
+ </pathLst>
+
+ </accentCallout1>
+ <accentCallout2>
+
+ <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+
+ <gd name="adj1" fmla="val 18750" />
+
+ <gd name="adj2" fmla="val -8333" />
+
+ <gd name="adj3" fmla="val 18750" />
+
+ <gd name="adj4" fmla="val -16667" />
+
+ <gd name="adj5" fmla="val 112500" />
+
+ <gd name="adj6" fmla="val -46667" />
+
+ </avLst>
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="y1" fmla="*/ h adj1 100000" />
+ <gd name="x1" fmla="*/ w adj2 100000" />
+ <gd name="y2" fmla="*/ h adj3 100000" />
+ <gd name="x2" fmla="*/ w adj4 100000" />
+ <gd name="y3" fmla="*/ h adj5 100000" />
+ <gd name="x3" fmla="*/ w adj6 100000" />
+ </gdLst>
+ <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <ahXY gdRefX="adj2" minX="-2147483647" maxX="2147483647" gdRefY="adj1" minY="-2147483647" maxY="2147483647">
+ <pos x="x1" y="y1" />
+ </ahXY>
+ <ahXY gdRefX="adj4" minX="-2147483647" maxX="2147483647" gdRefY="adj3" minY="-2147483647" maxY="2147483647">
+ <pos x="x2" y="y2" />
+ </ahXY>
+ <ahXY gdRefX="adj6" minX="-2147483647" maxX="2147483647" gdRefY="adj5" minY="-2147483647" maxY="2147483647">
+ <pos x="x3" y="y3" />
+ </ahXY>
+ </ahLst>
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="0">
+ <pos x="r" y="vc" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="hc" y="b" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="l" y="vc" />
+ </cxn>
+ <cxn ang="3cd4">
+ <pos x="hc" y="t" />
+ </cxn>
+ </cxnLst>
+ <rect l="l" t="t" r="r" b="b" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path stroke="false" extrusionOk="false">
+ <moveTo>
+ <pt x="l" y="t" />
+ </moveTo>
+ <lnTo>
+ <pt x="r" y="t" />
+ </lnTo>
+ <lnTo>
+ <pt x="r" y="b" />
+ </lnTo>
+ <lnTo>
+ <pt x="l" y="b" />
+ </lnTo>
+ <close />
+ </path>
+ <path fill="none" extrusionOk="false">
+ <moveTo>
+ <pt x="x1" y="t" />
+ </moveTo>
+ <close />
+ <lnTo>
+ <pt x="x1" y="b" />
+ </lnTo>
+ </path>
+ <path fill="none" extrusionOk="false">
+ <moveTo>
+ <pt x="x1" y="y1" />
+ </moveTo>
+ <lnTo>
+ <pt x="x2" y="y2" />
+ </lnTo>
+ <lnTo>
+ <pt x="x3" y="y3" />
+ </lnTo>
+ </path>
+ </pathLst>
+
+ </accentCallout2>
+ <accentCallout3>
+
+ <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+
+ <gd name="adj1" fmla="val 18750" />
+
+ <gd name="adj2" fmla="val -8333" />
+
+ <gd name="adj3" fmla="val 18750" />
+
+ <gd name="adj4" fmla="val -16667" />
+
+ <gd name="adj5" fmla="val 100000" />
+
+ <gd name="adj6" fmla="val -16667" />
+
+ <gd name="adj7" fmla="val 112963" />
+
+ <gd name="adj8" fmla="val -8333" />
+
+ </avLst>
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="y1" fmla="*/ h adj1 100000" />
+ <gd name="x1" fmla="*/ w adj2 100000" />
+ <gd name="y2" fmla="*/ h adj3 100000" />
+ <gd name="x2" fmla="*/ w adj4 100000" />
+ <gd name="y3" fmla="*/ h adj5 100000" />
+ <gd name="x3" fmla="*/ w adj6 100000" />
+ <gd name="y4" fmla="*/ h adj7 100000" />
+ <gd name="x4" fmla="*/ w adj8 100000" />
+ </gdLst>
+ <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <ahXY gdRefX="adj2" minX="-2147483647" maxX="2147483647" gdRefY="adj1" minY="-2147483647" maxY="2147483647">
+ <pos x="x1" y="y1" />
+ </ahXY>
+ <ahXY gdRefX="adj4" minX="-2147483647" maxX="2147483647" gdRefY="adj3" minY="-2147483647" maxY="2147483647">
+ <pos x="x2" y="y2" />
+ </ahXY>
+ <ahXY gdRefX="adj6" minX="-2147483647" maxX="2147483647" gdRefY="adj5" minY="-2147483647" maxY="2147483647">
+ <pos x="x3" y="y3" />
+ </ahXY>
+ <ahXY gdRefX="adj8" minX="-2147483647" maxX="2147483647" gdRefY="adj7" minY="-2147483647" maxY="2147483647">
+ <pos x="x4" y="y4" />
+ </ahXY>
+ </ahLst>
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="0">
+ <pos x="r" y="vc" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="hc" y="b" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="l" y="vc" />
+ </cxn>
+ <cxn ang="3cd4">
+ <pos x="hc" y="t" />
+ </cxn>
+ </cxnLst>
+ <rect l="l" t="t" r="r" b="b" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path stroke="false" extrusionOk="false">
+ <moveTo>
+ <pt x="l" y="t" />
+ </moveTo>
+ <lnTo>
+ <pt x="r" y="t" />
+ </lnTo>
+ <lnTo>
+ <pt x="r" y="b" />
+ </lnTo>
+ <lnTo>
+ <pt x="l" y="b" />
+ </lnTo>
+ <close />
+ </path>
+ <path fill="none" extrusionOk="false">
+ <moveTo>
+ <pt x="x1" y="t" />
+ </moveTo>
+ <close />
+ <lnTo>
+ <pt x="x1" y="b" />
+ </lnTo>
+ </path>
+ <path fill="none" extrusionOk="false">
+ <moveTo>
+ <pt x="x1" y="y1" />
+ </moveTo>
+ <lnTo>
+ <pt x="x2" y="y2" />
+ </lnTo>
+ <lnTo>
+ <pt x="x3" y="y3" />
+ </lnTo>
+ <lnTo>
+ <pt x="x4" y="y4" />
+ </lnTo>
+ </path>
+ </pathLst>
+
+ </accentCallout3>
+ <actionButtonBackPrevious>
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="dx2" fmla="*/ ss 3 8" />
+ <gd name="g9" fmla="+- vc 0 dx2" />
+ <gd name="g10" fmla="+- vc dx2 0" />
+ <gd name="g11" fmla="+- hc 0 dx2" />
+ <gd name="g12" fmla="+- hc dx2 0" />
+ </gdLst>
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="0">
+ <pos x="r" y="vc" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="hc" y="b" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="l" y="vc" />
+ </cxn>
+ <cxn ang="3cd4">
+ <pos x="hc" y="t" />
+ </cxn>
+ </cxnLst>
+ <rect l="l" t="t" r="r" b="b" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path stroke="false" extrusionOk="false">
+ <moveTo>
+ <pt x="l" y="t" />
+ </moveTo>
+ <lnTo>
+ <pt x="r" y="t" />
+ </lnTo>
+ <lnTo>
+ <pt x="r" y="b" />
+ </lnTo>
+ <lnTo>
+ <pt x="l" y="b" />
+ </lnTo>
+ <close />
+ <moveTo>
+ <pt x="g11" y="vc" />
+ </moveTo>
+ <lnTo>
+ <pt x="g12" y="g9" />
+ </lnTo>
+ <lnTo>
+ <pt x="g12" y="g10" />
+ </lnTo>
+ <close />
+ </path>
+ <path stroke="false" fill="darken" extrusionOk="false">
+ <moveTo>
+ <pt x="g11" y="vc" />
+ </moveTo>
+ <lnTo>
+ <pt x="g12" y="g9" />
+ </lnTo>
+ <lnTo>
+ <pt x="g12" y="g10" />
+ </lnTo>
+ <close />
+ </path>
+ <path fill="none" extrusionOk="false">
+ <moveTo>
+ <pt x="g11" y="vc" />
+ </moveTo>
+ <lnTo>
+ <pt x="g12" y="g9" />
+ </lnTo>
+ <lnTo>
+ <pt x="g12" y="g10" />
+ </lnTo>
+ <close />
+ </path>
+ <path fill="none">
+ <moveTo>
+ <pt x="l" y="t" />
+ </moveTo>
+ <lnTo>
+ <pt x="r" y="t" />
+ </lnTo>
+ <lnTo>
+ <pt x="r" y="b" />
+ </lnTo>
+ <lnTo>
+ <pt x="l" y="b" />
+ </lnTo>
+ <close />
+ </path>
+ </pathLst>
+ </actionButtonBackPrevious>
+ <actionButtonBeginning>
+
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="dx2" fmla="*/ ss 3 8" />
+ <gd name="g9" fmla="+- vc 0 dx2" />
+ <gd name="g10" fmla="+- vc dx2 0" />
+ <gd name="g11" fmla="+- hc 0 dx2" />
+ <gd name="g12" fmla="+- hc dx2 0" />
+ <gd name="g13" fmla="*/ ss 3 4" />
+ <gd name="g14" fmla="*/ g13 1 8" />
+ <gd name="g15" fmla="*/ g13 1 4" />
+ <gd name="g16" fmla="+- g11 g14 0" />
+ <gd name="g17" fmla="+- g11 g15 0" />
+ </gdLst>
+
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="0">
+ <pos x="r" y="vc" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="hc" y="b" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="l" y="vc" />
+ </cxn>
+ <cxn ang="3cd4">
+ <pos x="hc" y="t" />
+ </cxn>
+ </cxnLst>
+
+ <rect l="l" t="t" r="r" b="b" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path stroke="false" extrusionOk="false">
+ <moveTo>
+ <pt x="l" y="t" />
+ </moveTo>
+ <lnTo>
+ <pt x="r" y="t" />
+ </lnTo>
+ <lnTo>
+ <pt x="r" y="b" />
+ </lnTo>
+ <lnTo>
+ <pt x="l" y="b" />
+ </lnTo>
+ <close />
+ <moveTo>
+ <pt x="g17" y="vc" />
+ </moveTo>
+
+ <lnTo>
+ <pt x="g12" y="g9" />
+ </lnTo>
+ <lnTo>
+ <pt x="g12" y="g10" />
+ </lnTo>
+ <close />
+ <moveTo>
+ <pt x="g16" y="g9" />
+ </moveTo>
+
+ <lnTo>
+ <pt x="g11" y="g9" />
+ </lnTo>
+ <lnTo>
+ <pt x="g11" y="g10" />
+ </lnTo>
+ <lnTo>
+ <pt x="g16" y="g10" />
+ </lnTo>
+ <close />
+ </path>
+ <path stroke="false" fill="darken" extrusionOk="false">
+ <moveTo>
+ <pt x="g17" y="vc" />
+ </moveTo>
+
+ <lnTo>
+ <pt x="g12" y="g9" />
+ </lnTo>
+ <lnTo>
+ <pt x="g12" y="g10" />
+ </lnTo>
+ <close />
+ <moveTo>
+ <pt x="g16" y="g9" />
+ </moveTo>
+
+ <lnTo>
+ <pt x="g11" y="g9" />
+ </lnTo>
+ <lnTo>
+ <pt x="g11" y="g10" />
+ </lnTo>
+ <lnTo>
+ <pt x="g16" y="g10" />
+ </lnTo>
+ <close />
+ </path>
+ <path fill="none" extrusionOk="false">
+ <moveTo>
+ <pt x="g17" y="vc" />
+ </moveTo>
+
+ <lnTo>
+ <pt x="g12" y="g9" />
+ </lnTo>
+ <lnTo>
+ <pt x="g12" y="g10" />
+ </lnTo>
+ <close />
+ <moveTo>
+ <pt x="g16" y="g9" />
+ </moveTo>
+
+ <lnTo>
+ <pt x="g16" y="g10" />
+ </lnTo>
+ <lnTo>
+ <pt x="g11" y="g10" />
+ </lnTo>
+ <lnTo>
+ <pt x="g11" y="g9" />
+ </lnTo>
+ <close />
+ </path>
+ <path fill="none">
+ <moveTo>
+ <pt x="l" y="t" />
+ </moveTo>
+
+ <lnTo>
+ <pt x="r" y="t" />
+ </lnTo>
+ <lnTo>
+ <pt x="r" y="b" />
+ </lnTo>
+ <lnTo>
+ <pt x="l" y="b" />
+ </lnTo>
+ <close />
+ </path>
+ </pathLst>
+
+ </actionButtonBeginning>
+ <actionButtonBlank>
+
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="0">
+ <pos x="r" y="vc" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="hc" y="b" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="l" y="vc" />
+ </cxn>
+ <cxn ang="3cd4">
+ <pos x="hc" y="t" />
+ </cxn>
+ </cxnLst>
+
+ <rect l="l" t="t" r="r" b="b" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path>
+ <moveTo>
+ <pt x="l" y="t" />
+ </moveTo>
+ <lnTo>
+ <pt x="r" y="t" />
+ </lnTo>
+ <lnTo>
+ <pt x="r" y="b" />
+ </lnTo>
+ <lnTo>
+ <pt x="l" y="b" />
+ </lnTo>
+ <close />
+ </path>
+ </pathLst>
+
+ </actionButtonBlank>
+ <actionButtonDocument>
+
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="dx2" fmla="*/ ss 3 8" />
+ <gd name="g9" fmla="+- vc 0 dx2" />
+ <gd name="g10" fmla="+- vc dx2 0" />
+ <gd name="dx1" fmla="*/ ss 9 32" />
+ <gd name="g11" fmla="+- hc 0 dx1" />
+ <gd name="g12" fmla="+- hc dx1 0" />
+ <gd name="g13" fmla="*/ ss 3 16" />
+ <gd name="g14" fmla="+- g12 0 g13" />
+ <gd name="g15" fmla="+- g9 g13 0" />
+ </gdLst>
+
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="0">
+ <pos x="r" y="vc" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="hc" y="b" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="l" y="vc" />
+ </cxn>
+ <cxn ang="3cd4">
+ <pos x="hc" y="t" />
+ </cxn>
+ </cxnLst>
+
+ <rect l="l" t="t" r="r" b="b" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path stroke="false" extrusionOk="false">
+ <moveTo>
+ <pt x="l" y="t" />
+ </moveTo>
+ <lnTo>
+ <pt x="r" y="t" />
+ </lnTo>
+ <lnTo>
+ <pt x="r" y="b" />
+ </lnTo>
+ <lnTo>
+ <pt x="l" y="b" />
+ </lnTo>
+ <close />
+ <moveTo>
+ <pt x="g11" y="g9" />
+ </moveTo>
+ <lnTo>
+ <pt x="g14" y="g9" />
+ </lnTo>
+ <lnTo>
+ <pt x="g12" y="g15" />
+ </lnTo>
+ <lnTo>
+ <pt x="g12" y="g10" />
+ </lnTo>
+ <lnTo>
+ <pt x="g11" y="g10" />
+ </lnTo>
+ <close />
+ </path>
+ <path stroke="false" fill="darkenLess" extrusionOk="false">
+
+ <moveTo>
+ <pt x="g11" y="g9" />
+ </moveTo>
+ <lnTo>
+ <pt x="g14" y="g9" />
+ </lnTo>
+ <lnTo>
+ <pt x="g14" y="g15" />
+ </lnTo>
+ <lnTo>
+ <pt x="g12" y="g15" />
+ </lnTo>
+ <lnTo>
+ <pt x="g12" y="g10" />
+ </lnTo>
+ <lnTo>
+ <pt x="g11" y="g10" />
+ </lnTo>
+ <close />
+ </path>
+ <path stroke="false" fill="darken" extrusionOk="false">
+ <moveTo>
+ <pt x="g14" y="g9" />
+ </moveTo>
+
+ <lnTo>
+ <pt x="g14" y="g15" />
+ </lnTo>
+ <lnTo>
+ <pt x="g12" y="g15" />
+ </lnTo>
+ <close />
+ </path>
+ <path fill="none" extrusionOk="false">
+ <moveTo>
+ <pt x="g11" y="g9" />
+ </moveTo>
+ <lnTo>
+ <pt x="g14" y="g9" />
+ </lnTo>
+ <lnTo>
+ <pt x="g12" y="g15" />
+ </lnTo>
+ <lnTo>
+ <pt x="g12" y="g10" />
+ </lnTo>
+ <lnTo>
+ <pt x="g11" y="g10" />
+ </lnTo>
+ <close />
+ <moveTo>
+ <pt x="g12" y="g15" />
+ </moveTo>
+ <lnTo>
+ <pt x="g14" y="g15" />
+ </lnTo>
+ <lnTo>
+ <pt x="g14" y="g9" />
+ </lnTo>
+ </path>
+ <path fill="none">
+ <moveTo>
+ <pt x="l" y="t" />
+ </moveTo>
+
+ <lnTo>
+ <pt x="r" y="t" />
+ </lnTo>
+ <lnTo>
+ <pt x="r" y="b" />
+ </lnTo>
+ <lnTo>
+ <pt x="l" y="b" />
+ </lnTo>
+ <close />
+ </path>
+ </pathLst>
+
+ </actionButtonDocument>
+ <actionButtonEnd>
+
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="dx2" fmla="*/ ss 3 8" />
+ <gd name="g9" fmla="+- vc 0 dx2" />
+ <gd name="g10" fmla="+- vc dx2 0" />
+ <gd name="g11" fmla="+- hc 0 dx2" />
+ <gd name="g12" fmla="+- hc dx2 0" />
+ <gd name="g13" fmla="*/ ss 3 4" />
+ <gd name="g14" fmla="*/ g13 3 4" />
+ <gd name="g15" fmla="*/ g13 7 8" />
+ <gd name="g16" fmla="+- g11 g14 0" />
+ <gd name="g17" fmla="+- g11 g15 0" />
+ </gdLst>
+
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="0">
+ <pos x="r" y="vc" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="hc" y="b" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="l" y="vc" />
+ </cxn>
+ <cxn ang="3cd4">
+ <pos x="hc" y="t" />
+ </cxn>
+ </cxnLst>
+
+ <rect l="l" t="t" r="r" b="b" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path stroke="false" extrusionOk="false">
+ <moveTo>
+ <pt x="l" y="t" />
+ </moveTo>
+ <lnTo>
+ <pt x="r" y="t" />
+ </lnTo>
+ <lnTo>
+ <pt x="r" y="b" />
+ </lnTo>
+ <lnTo>
+ <pt x="l" y="b" />
+ </lnTo>
+ <close />
+ <moveTo>
+ <pt x="g16" y="vc" />
+ </moveTo>
+
+ <lnTo>
+ <pt x="g11" y="g9" />
+ </lnTo>
+ <lnTo>
+ <pt x="g11" y="g10" />
+ </lnTo>
+ <close />
+ <moveTo>
+ <pt x="g17" y="g9" />
+ </moveTo>
+
+ <lnTo>
+ <pt x="g12" y="g9" />
+ </lnTo>
+ <lnTo>
+ <pt x="g12" y="g10" />
+ </lnTo>
+ <lnTo>
+ <pt x="g17" y="g10" />
+ </lnTo>
+ <close />
+ </path>
+ <path stroke="false" fill="darken" extrusionOk="false">
+ <moveTo>
+ <pt x="g16" y="vc" />
+ </moveTo>
+
+ <lnTo>
+ <pt x="g11" y="g9" />
+ </lnTo>
+ <lnTo>
+ <pt x="g11" y="g10" />
+ </lnTo>
+ <close />
+ <moveTo>
+ <pt x="g17" y="g9" />
+ </moveTo>
+
+ <lnTo>
+ <pt x="g12" y="g9" />
+ </lnTo>
+ <lnTo>
+ <pt x="g12" y="g10" />
+ </lnTo>
+ <lnTo>
+ <pt x="g17" y="g10" />
+ </lnTo>
+ <close />
+ </path>
+ <path fill="none" extrusionOk="false">
+ <moveTo>
+ <pt x="g16" y="vc" />
+ </moveTo>
+
+ <lnTo>
+ <pt x="g11" y="g10" />
+ </lnTo>
+ <lnTo>
+ <pt x="g11" y="g9" />
+ </lnTo>
+ <close />
+ <moveTo>
+ <pt x="g17" y="g9" />
+ </moveTo>
+
+ <lnTo>
+ <pt x="g12" y="g9" />
+ </lnTo>
+ <lnTo>
+ <pt x="g12" y="g10" />
+ </lnTo>
+ <lnTo>
+ <pt x="g17" y="g10" />
+ </lnTo>
+ <close />
+ </path>
+ <path fill="none">
+ <moveTo>
+ <pt x="l" y="t" />
+ </moveTo>
+
+ <lnTo>
+ <pt x="r" y="t" />
+ </lnTo>
+ <lnTo>
+ <pt x="r" y="b" />
+ </lnTo>
+ <lnTo>
+ <pt x="l" y="b" />
+ </lnTo>
+ <close />
+ </path>
+ </pathLst>
+
+ </actionButtonEnd>
+ <actionButtonForwardNext>
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="dx2" fmla="*/ ss 3 8" />
+ <gd name="g9" fmla="+- vc 0 dx2" />
+ <gd name="g10" fmla="+- vc dx2 0" />
+ <gd name="g11" fmla="+- hc 0 dx2" />
+ <gd name="g12" fmla="+- hc dx2 0" />
+ </gdLst>
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="0">
+ <pos x="r" y="vc" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="hc" y="b" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="l" y="vc" />
+ </cxn>
+ <cxn ang="3cd4">
+ <pos x="hc" y="t" />
+ </cxn>
+ </cxnLst>
+ <rect l="l" t="t" r="r" b="b" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path stroke="false" extrusionOk="false">
+ <moveTo>
+ <pt x="l" y="t" />
+ </moveTo>
+ <lnTo>
+ <pt x="r" y="t" />
+ </lnTo>
+ <lnTo>
+ <pt x="r" y="b" />
+ </lnTo>
+ <lnTo>
+ <pt x="l" y="b" />
+ </lnTo>
+ <close />
+ <moveTo>
+ <pt x="g12" y="vc" />
+ </moveTo>
+ <lnTo>
+ <pt x="g11" y="g9" />
+ </lnTo>
+ <lnTo>
+ <pt x="g11" y="g10" />
+ </lnTo>
+ <close />
+ </path>
+ <path stroke="false" fill="darken" extrusionOk="false">
+ <moveTo>
+ <pt x="g12" y="vc" />
+ </moveTo>
+ <lnTo>
+ <pt x="g11" y="g9" />
+ </lnTo>
+ <lnTo>
+ <pt x="g11" y="g10" />
+ </lnTo>
+ <close />
+ </path>
+ <path fill="none" extrusionOk="false">
+ <moveTo>
+ <pt x="g12" y="vc" />
+ </moveTo>
+ <lnTo>
+ <pt x="g11" y="g10" />
+ </lnTo>
+ <lnTo>
+ <pt x="g11" y="g9" />
+ </lnTo>
+ <close />
+ </path>
+ <path fill="none">
+ <moveTo>
+ <pt x="l" y="t" />
+ </moveTo>
+ <lnTo>
+ <pt x="r" y="t" />
+ </lnTo>
+ <lnTo>
+ <pt x="r" y="b" />
+ </lnTo>
+ <lnTo>
+ <pt x="l" y="b" />
+ </lnTo>
+ <close />
+ </path>
+ </pathLst>
+ </actionButtonForwardNext>
+ <actionButtonHelp>
+
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="dx2" fmla="*/ ss 3 8" />
+ <gd name="g9" fmla="+- vc 0 dx2" />
+ <gd name="g11" fmla="+- hc 0 dx2" />
+ <gd name="g13" fmla="*/ ss 3 4" />
+ <gd name="g14" fmla="*/ g13 1 7" />
+ <gd name="g15" fmla="*/ g13 3 14" />
+ <gd name="g16" fmla="*/ g13 2 7" />
+ <gd name="g19" fmla="*/ g13 3 7" />
+ <gd name="g20" fmla="*/ g13 4 7" />
+ <gd name="g21" fmla="*/ g13 17 28" />
+ <gd name="g23" fmla="*/ g13 21 28" />
+ <gd name="g24" fmla="*/ g13 11 14" />
+ <gd name="g27" fmla="+- g9 g16 0" />
+ <gd name="g29" fmla="+- g9 g21 0" />
+ <gd name="g30" fmla="+- g9 g23 0" />
+ <gd name="g31" fmla="+- g9 g24 0" />
+ <gd name="g33" fmla="+- g11 g15 0" />
+ <gd name="g36" fmla="+- g11 g19 0" />
+ <gd name="g37" fmla="+- g11 g20 0" />
+ <gd name="g41" fmla="*/ g13 1 14" />
+ <gd name="g42" fmla="*/ g13 3 28" />
+ </gdLst>
+
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="0">
+ <pos x="r" y="vc" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="hc" y="b" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="l" y="vc" />
+ </cxn>
+ <cxn ang="3cd4">
+ <pos x="hc" y="t" />
+ </cxn>
+ </cxnLst>
+
+ <rect l="l" t="t" r="r" b="b" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path stroke="false" extrusionOk="false">
+ <moveTo>
+ <pt x="l" y="t" />
+ </moveTo>
+ <lnTo>
+ <pt x="r" y="t" />
+ </lnTo>
+ <lnTo>
+ <pt x="r" y="b" />
+ </lnTo>
+ <lnTo>
+ <pt x="l" y="b" />
+ </lnTo>
+ <close />
+ <moveTo>
+ <pt x="g33" y="g27" />
+ </moveTo>
+
+ <arcTo wR="g16" hR="g16" stAng="cd2" swAng="cd2" />
+ <arcTo wR="g14" hR="g15" stAng="0" swAng="cd4" />
+ <arcTo wR="g41" hR="g42" stAng="3cd4" swAng="-5400000" />
+ <lnTo>
+ <pt x="g37" y="g30" />
+ </lnTo>
+ <lnTo>
+ <pt x="g36" y="g30" />
+ </lnTo>
+ <lnTo>
+ <pt x="g36" y="g29" />
+ </lnTo>
+ <arcTo wR="g14" hR="g15" stAng="cd2" swAng="cd4" />
+ <arcTo wR="g41" hR="g42" stAng="cd4" swAng="-5400000" />
+ <arcTo wR="g14" hR="g14" stAng="0" swAng="-10800000" />
+ <close />
+ <moveTo>
+ <pt x="hc" y="g31" />
+ </moveTo>
+
+ <arcTo wR="g42" hR="g42" stAng="3cd4" swAng="21600000" />
+ <close />
+ </path>
+ <path stroke="false" fill="darken" extrusionOk="false">
+ <moveTo>
+ <pt x="g33" y="g27" />
+ </moveTo>
+
+ <arcTo wR="g16" hR="g16" stAng="cd2" swAng="cd2" />
+ <arcTo wR="g14" hR="g15" stAng="0" swAng="cd4" />
+ <arcTo wR="g41" hR="g42" stAng="3cd4" swAng="-5400000" />
+ <lnTo>
+ <pt x="g37" y="g30" />
+ </lnTo>
+ <lnTo>
+ <pt x="g36" y="g30" />
+ </lnTo>
+ <lnTo>
+ <pt x="g36" y="g29" />
+ </lnTo>
+ <arcTo wR="g14" hR="g15" stAng="cd2" swAng="cd4" />
+ <arcTo wR="g41" hR="g42" stAng="cd4" swAng="-5400000" />
+ <arcTo wR="g14" hR="g14" stAng="0" swAng="-10800000" />
+ <close />
+ <moveTo>
+ <pt x="hc" y="g31" />
+ </moveTo>
+
+ <arcTo wR="g42" hR="g42" stAng="3cd4" swAng="21600000" />
+ <close />
+ </path>
+ <path fill="none" extrusionOk="false">
+ <moveTo>
+ <pt x="g33" y="g27" />
+ </moveTo>
+
+ <arcTo wR="g16" hR="g16" stAng="cd2" swAng="cd2" />
+ <arcTo wR="g14" hR="g15" stAng="0" swAng="cd4" />
+ <arcTo wR="g41" hR="g42" stAng="3cd4" swAng="-5400000" />
+ <lnTo>
+ <pt x="g37" y="g30" />
+ </lnTo>
+ <lnTo>
+ <pt x="g36" y="g30" />
+ </lnTo>
+ <lnTo>
+ <pt x="g36" y="g29" />
+ </lnTo>
+ <arcTo wR="g14" hR="g15" stAng="cd2" swAng="cd4" />
+ <arcTo wR="g41" hR="g42" stAng="cd4" swAng="-5400000" />
+ <arcTo wR="g14" hR="g14" stAng="0" swAng="-10800000" />
+ <close />
+ <moveTo>
+ <pt x="hc" y="g31" />
+ </moveTo>
+
+ <arcTo wR="g42" hR="g42" stAng="3cd4" swAng="21600000" />
+ <close />
+ </path>
+ <path fill="none">
+ <moveTo>
+ <pt x="l" y="t" />
+ </moveTo>
+
+ <lnTo>
+ <pt x="r" y="t" />
+ </lnTo>
+ <lnTo>
+ <pt x="r" y="b" />
+ </lnTo>
+ <lnTo>
+ <pt x="l" y="b" />
+ </lnTo>
+ <close />
+ </path>
+ </pathLst>
+
+ </actionButtonHelp>
+ <actionButtonHome>
+
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="dx2" fmla="*/ ss 3 8" />
+ <gd name="g9" fmla="+- vc 0 dx2" />
+ <gd name="g10" fmla="+- vc dx2 0" />
+ <gd name="g11" fmla="+- hc 0 dx2" />
+ <gd name="g12" fmla="+- hc dx2 0" />
+ <gd name="g13" fmla="*/ ss 3 4" />
+ <gd name="g14" fmla="*/ g13 1 16" />
+ <gd name="g15" fmla="*/ g13 1 8" />
+ <gd name="g16" fmla="*/ g13 3 16" />
+ <gd name="g17" fmla="*/ g13 5 16" />
+ <gd name="g18" fmla="*/ g13 7 16" />
+ <gd name="g19" fmla="*/ g13 9 16" />
+ <gd name="g20" fmla="*/ g13 11 16" />
+ <gd name="g21" fmla="*/ g13 3 4" />
+ <gd name="g22" fmla="*/ g13 13 16" />
+ <gd name="g23" fmla="*/ g13 7 8" />
+ <gd name="g24" fmla="+- g9 g14 0" />
+ <gd name="g25" fmla="+- g9 g16 0" />
+ <gd name="g26" fmla="+- g9 g17 0" />
+ <gd name="g27" fmla="+- g9 g21 0" />
+ <gd name="g28" fmla="+- g11 g15 0" />
+ <gd name="g29" fmla="+- g11 g18 0" />
+ <gd name="g30" fmla="+- g11 g19 0" />
+ <gd name="g31" fmla="+- g11 g20 0" />
+ <gd name="g32" fmla="+- g11 g22 0" />
+ <gd name="g33" fmla="+- g11 g23 0" />
+ </gdLst>
+
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="0">
+ <pos x="r" y="vc" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="hc" y="b" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="l" y="vc" />
+ </cxn>
+ <cxn ang="3cd4">
+ <pos x="hc" y="t" />
+ </cxn>
+ </cxnLst>
+
+ <rect l="l" t="t" r="r" b="b" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path stroke="false" extrusionOk="false">
+ <moveTo>
+ <pt x="l" y="t" />
+ </moveTo>
+ <lnTo>
+ <pt x="r" y="t" />
+ </lnTo>
+ <lnTo>
+ <pt x="r" y="b" />
+ </lnTo>
+ <lnTo>
+ <pt x="l" y="b" />
+ </lnTo>
+ <close />
+ <moveTo>
+ <pt x="hc" y="g9" />
+ </moveTo>
+ <lnTo>
+ <pt x="g11" y="vc" />
+ </lnTo>
+ <lnTo>
+ <pt x="g28" y="vc" />
+ </lnTo>
+ <lnTo>
+ <pt x="g28" y="g10" />
+ </lnTo>
+ <lnTo>
+ <pt x="g33" y="g10" />
+ </lnTo>
+ <lnTo>
+ <pt x="g33" y="vc" />
+ </lnTo>
+ <lnTo>
+ <pt x="g12" y="vc" />
+ </lnTo>
+ <lnTo>
+ <pt x="g32" y="g26" />
+ </lnTo>
+ <lnTo>
+ <pt x="g32" y="g24" />
+ </lnTo>
+ <lnTo>
+ <pt x="g31" y="g24" />
+ </lnTo>
+ <lnTo>
+ <pt x="g31" y="g25" />
+ </lnTo>
+ <close />
+ </path>
+ <path stroke="false" fill="darkenLess" extrusionOk="false">
+
+ <moveTo>
+ <pt x="g32" y="g26" />
+ </moveTo>
+ <lnTo>
+ <pt x="g32" y="g24" />
+ </lnTo>
+ <lnTo>
+ <pt x="g31" y="g24" />
+ </lnTo>
+ <lnTo>
+ <pt x="g31" y="g25" />
+ </lnTo>
+ <close />
+ <moveTo>
+ <pt x="g28" y="vc" />
+ </moveTo>
+
+ <lnTo>
+ <pt x="g28" y="g10" />
+ </lnTo>
+ <lnTo>
+ <pt x="g29" y="g10" />
+ </lnTo>
+ <lnTo>
+ <pt x="g29" y="g27" />
+ </lnTo>
+ <lnTo>
+ <pt x="g30" y="g27" />
+ </lnTo>
+ <lnTo>
+ <pt x="g30" y="g10" />
+ </lnTo>
+ <lnTo>
+ <pt x="g33" y="g10" />
+ </lnTo>
+ <lnTo>
+ <pt x="g33" y="vc" />
+ </lnTo>
+ <close />
+ </path>
+ <path stroke="false" fill="darken" extrusionOk="false">
+ <moveTo>
+ <pt x="hc" y="g9" />
+ </moveTo>
+
+ <lnTo>
+ <pt x="g11" y="vc" />
+ </lnTo>
+ <lnTo>
+ <pt x="g12" y="vc" />
+ </lnTo>
+ <close />
+ <moveTo>
+ <pt x="g29" y="g27" />
+ </moveTo>
+
+ <lnTo>
+ <pt x="g30" y="g27" />
+ </lnTo>
+ <lnTo>
+ <pt x="g30" y="g10" />
+ </lnTo>
+ <lnTo>
+ <pt x="g29" y="g10" />
+ </lnTo>
+ <close />
+ </path>
+ <path fill="none" extrusionOk="false">
+ <moveTo>
+ <pt x="hc" y="g9" />
+ </moveTo>
+ <lnTo>
+ <pt x="g31" y="g25" />
+ </lnTo>
+ <lnTo>
+ <pt x="g31" y="g24" />
+ </lnTo>
+ <lnTo>
+ <pt x="g32" y="g24" />
+ </lnTo>
+ <lnTo>
+ <pt x="g32" y="g26" />
+ </lnTo>
+ <lnTo>
+ <pt x="g12" y="vc" />
+ </lnTo>
+ <lnTo>
+ <pt x="g33" y="vc" />
+ </lnTo>
+ <lnTo>
+ <pt x="g33" y="g10" />
+ </lnTo>
+ <lnTo>
+ <pt x="g28" y="g10" />
+ </lnTo>
+ <lnTo>
+ <pt x="g28" y="vc" />
+ </lnTo>
+ <lnTo>
+ <pt x="g11" y="vc" />
+ </lnTo>
+ <close />
+ <moveTo>
+ <pt x="g31" y="g25" />
+ </moveTo>
+ <lnTo>
+ <pt x="g32" y="g26" />
+ </lnTo>
+
+ <moveTo>
+ <pt x="g33" y="vc" />
+ </moveTo>
+ <lnTo>
+ <pt x="g28" y="vc" />
+ </lnTo>
+
+ <moveTo>
+ <pt x="g29" y="g10" />
+ </moveTo>
+
+ <lnTo>
+ <pt x="g29" y="g27" />
+ </lnTo>
+ <lnTo>
+ <pt x="g30" y="g27" />
+ </lnTo>
+ <lnTo>
+ <pt x="g30" y="g10" />
+ </lnTo>
+ </path>
+ <path fill="none">
+ <moveTo>
+ <pt x="l" y="t" />
+ </moveTo>
+
+ <lnTo>
+ <pt x="r" y="t" />
+ </lnTo>
+ <lnTo>
+ <pt x="r" y="b" />
+ </lnTo>
+ <lnTo>
+ <pt x="l" y="b" />
+ </lnTo>
+ <close />
+ </path>
+ </pathLst>
+
+ </actionButtonHome>
+ <actionButtonInformation>
+
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="dx2" fmla="*/ ss 3 8" />
+ <gd name="g9" fmla="+- vc 0 dx2" />
+ <gd name="g11" fmla="+- hc 0 dx2" />
+ <gd name="g13" fmla="*/ ss 3 4" />
+ <gd name="g14" fmla="*/ g13 1 32" />
+ <gd name="g17" fmla="*/ g13 5 16" />
+ <gd name="g18" fmla="*/ g13 3 8" />
+ <gd name="g19" fmla="*/ g13 13 32" />
+ <gd name="g20" fmla="*/ g13 19 32" />
+ <gd name="g22" fmla="*/ g13 11 16" />
+ <gd name="g23" fmla="*/ g13 13 16" />
+ <gd name="g24" fmla="*/ g13 7 8" />
+ <gd name="g25" fmla="+- g9 g14 0" />
+ <gd name="g28" fmla="+- g9 g17 0" />
+ <gd name="g29" fmla="+- g9 g18 0" />
+ <gd name="g30" fmla="+- g9 g23 0" />
+ <gd name="g31" fmla="+- g9 g24 0" />
+ <gd name="g32" fmla="+- g11 g17 0" />
+ <gd name="g34" fmla="+- g11 g19 0" />
+ <gd name="g35" fmla="+- g11 g20 0" />
+ <gd name="g37" fmla="+- g11 g22 0" />
+ <gd name="g38" fmla="*/ g13 3 32" />
+ </gdLst>
+
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="0">
+ <pos x="r" y="vc" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="hc" y="b" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="l" y="vc" />
+ </cxn>
+ <cxn ang="3cd4">
+ <pos x="hc" y="t" />
+ </cxn>
+ </cxnLst>
+
+ <rect l="l" t="t" r="r" b="b" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path stroke="false" extrusionOk="false">
+ <moveTo>
+ <pt x="l" y="t" />
+ </moveTo>
+ <lnTo>
+ <pt x="r" y="t" />
+ </lnTo>
+ <lnTo>
+ <pt x="r" y="b" />
+ </lnTo>
+ <lnTo>
+ <pt x="l" y="b" />
+ </lnTo>
+ <close />
+ <moveTo>
+ <pt x="hc" y="g9" />
+ </moveTo>
+
+ <arcTo wR="dx2" hR="dx2" stAng="3cd4" swAng="21600000" />
+ <close />
+ </path>
+ <path stroke="false" fill="darken" extrusionOk="false">
+ <moveTo>
+ <pt x="hc" y="g9" />
+ </moveTo>
+
+ <arcTo wR="dx2" hR="dx2" stAng="3cd4" swAng="21600000" />
+ <close />
+ <moveTo>
+ <pt x="hc" y="g25" />
+ </moveTo>
+
+ <arcTo wR="g38" hR="g38" stAng="3cd4" swAng="21600000" />
+ <moveTo>
+ <pt x="g32" y="g28" />
+ </moveTo>
+
+ <lnTo>
+ <pt x="g32" y="g29" />
+ </lnTo>
+ <lnTo>
+ <pt x="g34" y="g29" />
+ </lnTo>
+ <lnTo>
+ <pt x="g34" y="g30" />
+ </lnTo>
+ <lnTo>
+ <pt x="g32" y="g30" />
+ </lnTo>
+ <lnTo>
+ <pt x="g32" y="g31" />
+ </lnTo>
+ <lnTo>
+ <pt x="g37" y="g31" />
+ </lnTo>
+ <lnTo>
+ <pt x="g37" y="g30" />
+ </lnTo>
+ <lnTo>
+ <pt x="g35" y="g30" />
+ </lnTo>
+ <lnTo>
+ <pt x="g35" y="g28" />
+ </lnTo>
+ <close />
+ </path>
+ <path stroke="false" fill="lighten" extrusionOk="false">
+ <moveTo>
+ <pt x="hc" y="g25" />
+ </moveTo>
+
+ <arcTo wR="g38" hR="g38" stAng="3cd4" swAng="21600000" />
+ <moveTo>
+ <pt x="g32" y="g28" />
+ </moveTo>
+
+ <lnTo>
+ <pt x="g35" y="g28" />
+ </lnTo>
+ <lnTo>
+ <pt x="g35" y="g30" />
+ </lnTo>
+ <lnTo>
+ <pt x="g37" y="g30" />
+ </lnTo>
+ <lnTo>
+ <pt x="g37" y="g31" />
+ </lnTo>
+ <lnTo>
+ <pt x="g32" y="g31" />
+ </lnTo>
+ <lnTo>
+ <pt x="g32" y="g30" />
+ </lnTo>
+ <lnTo>
+ <pt x="g34" y="g30" />
+ </lnTo>
+ <lnTo>
+ <pt x="g34" y="g29" />
+ </lnTo>
+ <lnTo>
+ <pt x="g32" y="g29" />
+ </lnTo>
+ <close />
+ </path>
+ <path fill="none" extrusionOk="false">
+ <moveTo>
+ <pt x="hc" y="g9" />
+ </moveTo>
+
+ <arcTo wR="dx2" hR="dx2" stAng="3cd4" swAng="21600000" />
+ <close />
+ <moveTo>
+ <pt x="hc" y="g25" />
+ </moveTo>
+
+ <arcTo wR="g38" hR="g38" stAng="3cd4" swAng="21600000" />
+ <moveTo>
+ <pt x="g32" y="g28" />
+ </moveTo>
+
+ <lnTo>
+ <pt x="g35" y="g28" />
+ </lnTo>
+ <lnTo>
+ <pt x="g35" y="g30" />
+ </lnTo>
+ <lnTo>
+ <pt x="g37" y="g30" />
+ </lnTo>
+ <lnTo>
+ <pt x="g37" y="g31" />
+ </lnTo>
+ <lnTo>
+ <pt x="g32" y="g31" />
+ </lnTo>
+ <lnTo>
+ <pt x="g32" y="g30" />
+ </lnTo>
+ <lnTo>
+ <pt x="g34" y="g30" />
+ </lnTo>
+ <lnTo>
+ <pt x="g34" y="g29" />
+ </lnTo>
+ <lnTo>
+ <pt x="g32" y="g29" />
+ </lnTo>
+ <close />
+ </path>
+ <path fill="none">
+ <moveTo>
+ <pt x="l" y="t" />
+ </moveTo>
+
+ <lnTo>
+ <pt x="r" y="t" />
+ </lnTo>
+ <lnTo>
+ <pt x="r" y="b" />
+ </lnTo>
+ <lnTo>
+ <pt x="l" y="b" />
+ </lnTo>
+ <close />
+ </path>
+ </pathLst>
+
+ </actionButtonInformation>
+ <actionButtonMovie>
+
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="dx2" fmla="*/ ss 3 8" />
+ <gd name="g9" fmla="+- vc 0 dx2" />
+ <gd name="g10" fmla="+- vc dx2 0" />
+ <gd name="g11" fmla="+- hc 0 dx2" />
+ <gd name="g12" fmla="+- hc dx2 0" />
+ <gd name="g13" fmla="*/ ss 3 4" />
+ <gd name="g14" fmla="*/ g13 1455 21600" />
+ <gd name="g15" fmla="*/ g13 1905 21600" />
+ <gd name="g16" fmla="*/ g13 2325 21600" />
+ <gd name="g17" fmla="*/ g13 16155 21600" />
+ <gd name="g18" fmla="*/ g13 17010 21600" />
+ <gd name="g19" fmla="*/ g13 19335 21600" />
+ <gd name="g20" fmla="*/ g13 19725 21600" />
+ <gd name="g21" fmla="*/ g13 20595 21600" />
+ <gd name="g22" fmla="*/ g13 5280 21600" />
+ <gd name="g23" fmla="*/ g13 5730 21600" />
+ <gd name="g24" fmla="*/ g13 6630 21600" />
+ <gd name="g25" fmla="*/ g13 7492 21600" />
+ <gd name="g26" fmla="*/ g13 9067 21600" />
+ <gd name="g27" fmla="*/ g13 9555 21600" />
+ <gd name="g28" fmla="*/ g13 13342 21600" />
+ <gd name="g29" fmla="*/ g13 14580 21600" />
+ <gd name="g30" fmla="*/ g13 15592 21600" />
+ <gd name="g31" fmla="+- g11 g14 0" />
+ <gd name="g32" fmla="+- g11 g15 0" />
+ <gd name="g33" fmla="+- g11 g16 0" />
+ <gd name="g34" fmla="+- g11 g17 0" />
+ <gd name="g35" fmla="+- g11 g18 0" />
+ <gd name="g36" fmla="+- g11 g19 0" />
+ <gd name="g37" fmla="+- g11 g20 0" />
+ <gd name="g38" fmla="+- g11 g21 0" />
+ <gd name="g39" fmla="+- g9 g22 0" />
+ <gd name="g40" fmla="+- g9 g23 0" />
+ <gd name="g41" fmla="+- g9 g24 0" />
+ <gd name="g42" fmla="+- g9 g25 0" />
+ <gd name="g43" fmla="+- g9 g26 0" />
+ <gd name="g44" fmla="+- g9 g27 0" />
+ <gd name="g45" fmla="+- g9 g28 0" />
+ <gd name="g46" fmla="+- g9 g29 0" />
+ <gd name="g47" fmla="+- g9 g30 0" />
+ <gd name="g48" fmla="+- g9 g31 0" />
+ </gdLst>
+
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="0">
+ <pos x="r" y="vc" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="hc" y="b" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="l" y="vc" />
+ </cxn>
+ <cxn ang="3cd4">
+ <pos x="hc" y="t" />
+ </cxn>
+ </cxnLst>
+
+ <rect l="l" t="t" r="r" b="b" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path stroke="false" extrusionOk="false">
+ <moveTo>
+ <pt x="l" y="t" />
+ </moveTo>
+ <lnTo>
+ <pt x="r" y="t" />
+ </lnTo>
+ <lnTo>
+ <pt x="r" y="b" />
+ </lnTo>
+ <lnTo>
+ <pt x="l" y="b" />
+ </lnTo>
+ <close />
+ <moveTo>
+ <pt x="g11" y="g39" />
+ </moveTo>
+
+ <lnTo>
+ <pt x="g11" y="g44" />
+ </lnTo>
+ <lnTo>
+ <pt x="g31" y="g44" />
+ </lnTo>
+ <lnTo>
+ <pt x="g32" y="g43" />
+ </lnTo>
+ <lnTo>
+ <pt x="g33" y="g43" />
+ </lnTo>
+ <lnTo>
+ <pt x="g33" y="g47" />
+ </lnTo>
+ <lnTo>
+ <pt x="g35" y="g47" />
+ </lnTo>
+ <lnTo>
+ <pt x="g35" y="g45" />
+ </lnTo>
+ <lnTo>
+ <pt x="g36" y="g45" />
+ </lnTo>
+ <lnTo>
+ <pt x="g38" y="g46" />
+ </lnTo>
+ <lnTo>
+ <pt x="g12" y="g46" />
+ </lnTo>
+ <lnTo>
+ <pt x="g12" y="g41" />
+ </lnTo>
+ <lnTo>
+ <pt x="g38" y="g41" />
+ </lnTo>
+ <lnTo>
+ <pt x="g37" y="g42" />
+ </lnTo>
+ <lnTo>
+ <pt x="g35" y="g42" />
+ </lnTo>
+ <lnTo>
+ <pt x="g35" y="g41" />
+ </lnTo>
+ <lnTo>
+ <pt x="g34" y="g40" />
+ </lnTo>
+ <lnTo>
+ <pt x="g32" y="g40" />
+ </lnTo>
+ <lnTo>
+ <pt x="g31" y="g39" />
+ </lnTo>
+ <close />
+ </path>
+ <path stroke="false" fill="darken" extrusionOk="false">
+ <moveTo>
+ <pt x="g11" y="g39" />
+ </moveTo>
+
+ <lnTo>
+ <pt x="g11" y="g44" />
+ </lnTo>
+ <lnTo>
+ <pt x="g31" y="g44" />
+ </lnTo>
+ <lnTo>
+ <pt x="g32" y="g43" />
+ </lnTo>
+ <lnTo>
+ <pt x="g33" y="g43" />
+ </lnTo>
+ <lnTo>
+ <pt x="g33" y="g47" />
+ </lnTo>
+ <lnTo>
+ <pt x="g35" y="g47" />
+ </lnTo>
+ <lnTo>
+ <pt x="g35" y="g45" />
+ </lnTo>
+ <lnTo>
+ <pt x="g36" y="g45" />
+ </lnTo>
+ <lnTo>
+ <pt x="g38" y="g46" />
+ </lnTo>
+ <lnTo>
+ <pt x="g12" y="g46" />
+ </lnTo>
+ <lnTo>
+ <pt x="g12" y="g41" />
+ </lnTo>
+ <lnTo>
+ <pt x="g38" y="g41" />
+ </lnTo>
+ <lnTo>
+ <pt x="g37" y="g42" />
+ </lnTo>
+ <lnTo>
+ <pt x="g35" y="g42" />
+ </lnTo>
+ <lnTo>
+ <pt x="g35" y="g41" />
+ </lnTo>
+ <lnTo>
+ <pt x="g34" y="g40" />
+ </lnTo>
+ <lnTo>
+ <pt x="g32" y="g40" />
+ </lnTo>
+ <lnTo>
+ <pt x="g31" y="g39" />
+ </lnTo>
+ <close />
+ </path>
+ <path fill="none" extrusionOk="false">
+ <moveTo>
+ <pt x="g11" y="g39" />
+ </moveTo>
+
+ <lnTo>
+ <pt x="g31" y="g39" />
+ </lnTo>
+ <lnTo>
+ <pt x="g32" y="g40" />
+ </lnTo>
+ <lnTo>
+ <pt x="g34" y="g40" />
+ </lnTo>
+ <lnTo>
+ <pt x="g35" y="g41" />
+ </lnTo>
+ <lnTo>
+ <pt x="g35" y="g42" />
+ </lnTo>
+ <lnTo>
+ <pt x="g37" y="g42" />
+ </lnTo>
+ <lnTo>
+ <pt x="g38" y="g41" />
+ </lnTo>
+ <lnTo>
+ <pt x="g12" y="g41" />
+ </lnTo>
+ <lnTo>
+ <pt x="g12" y="g46" />
+ </lnTo>
+ <lnTo>
+ <pt x="g38" y="g46" />
+ </lnTo>
+ <lnTo>
+ <pt x="g36" y="g45" />
+ </lnTo>
+ <lnTo>
+ <pt x="g35" y="g45" />
+ </lnTo>
+ <lnTo>
+ <pt x="g35" y="g47" />
+ </lnTo>
+ <lnTo>
+ <pt x="g33" y="g47" />
+ </lnTo>
+ <lnTo>
+ <pt x="g33" y="g43" />
+ </lnTo>
+ <lnTo>
+ <pt x="g32" y="g43" />
+ </lnTo>
+ <lnTo>
+ <pt x="g31" y="g44" />
+ </lnTo>
+ <lnTo>
+ <pt x="g11" y="g44" />
+ </lnTo>
+ <close />
+ </path>
+ <path fill="none">
+ <moveTo>
+ <pt x="l" y="t" />
+ </moveTo>
+
+ <lnTo>
+ <pt x="r" y="t" />
+ </lnTo>
+ <lnTo>
+ <pt x="r" y="b" />
+ </lnTo>
+ <lnTo>
+ <pt x="l" y="b" />
+ </lnTo>
+ <close />
+ </path>
+ </pathLst>
+
+ </actionButtonMovie>
+ <actionButtonReturn>
+
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="dx2" fmla="*/ ss 3 8" />
+ <gd name="g9" fmla="+- vc 0 dx2" />
+ <gd name="g10" fmla="+- vc dx2 0" />
+ <gd name="g11" fmla="+- hc 0 dx2" />
+ <gd name="g12" fmla="+- hc dx2 0" />
+ <gd name="g13" fmla="*/ ss 3 4" />
+ <gd name="g14" fmla="*/ g13 7 8" />
+ <gd name="g15" fmla="*/ g13 3 4" />
+ <gd name="g16" fmla="*/ g13 5 8" />
+ <gd name="g17" fmla="*/ g13 3 8" />
+ <gd name="g18" fmla="*/ g13 1 4" />
+ <gd name="g19" fmla="+- g9 g15 0" />
+ <gd name="g20" fmla="+- g9 g16 0" />
+ <gd name="g21" fmla="+- g9 g18 0" />
+ <gd name="g22" fmla="+- g11 g14 0" />
+ <gd name="g23" fmla="+- g11 g15 0" />
+ <gd name="g24" fmla="+- g11 g16 0" />
+ <gd name="g25" fmla="+- g11 g17 0" />
+ <gd name="g26" fmla="+- g11 g18 0" />
+ <gd name="g27" fmla="*/ g13 1 8" />
+ </gdLst>
+
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="0">
+ <pos x="r" y="vc" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="hc" y="b" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="l" y="vc" />
+ </cxn>
+ <cxn ang="3cd4">
+ <pos x="hc" y="t" />
+ </cxn>
+ </cxnLst>
+
+ <rect l="l" t="t" r="r" b="b" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path stroke="false" extrusionOk="false">
+ <moveTo>
+ <pt x="l" y="t" />
+ </moveTo>
+ <lnTo>
+ <pt x="r" y="t" />
+ </lnTo>
+ <lnTo>
+ <pt x="r" y="b" />
+ </lnTo>
+ <lnTo>
+ <pt x="l" y="b" />
+ </lnTo>
+ <close />
+ <moveTo>
+ <pt x="g12" y="g21" />
+ </moveTo>
+ <lnTo>
+ <pt x="g23" y="g9" />
+ </lnTo>
+ <lnTo>
+ <pt x="hc" y="g21" />
+ </lnTo>
+ <lnTo>
+ <pt x="g24" y="g21" />
+ </lnTo>
+ <lnTo>
+ <pt x="g24" y="g20" />
+ </lnTo>
+ <arcTo wR="g27" hR="g27" stAng="0" swAng="cd4" />
+ <lnTo>
+ <pt x="g25" y="g19" />
+ </lnTo>
+ <arcTo wR="g27" hR="g27" stAng="cd4" swAng="cd4" />
+ <lnTo>
+ <pt x="g26" y="g21" />
+ </lnTo>
+ <lnTo>
+ <pt x="g11" y="g21" />
+ </lnTo>
+ <lnTo>
+ <pt x="g11" y="g20" />
+ </lnTo>
+ <arcTo wR="g17" hR="g17" stAng="cd2" swAng="-5400000" />
+ <lnTo>
+ <pt x="hc" y="g10" />
+ </lnTo>
+ <arcTo wR="g17" hR="g17" stAng="cd4" swAng="-5400000" />
+ <lnTo>
+ <pt x="g22" y="g21" />
+ </lnTo>
+ <close />
+ </path>
+ <path stroke="false" fill="darken" extrusionOk="false">
+ <moveTo>
+ <pt x="g12" y="g21" />
+ </moveTo>
+ <lnTo>
+ <pt x="g23" y="g9" />
+ </lnTo>
+ <lnTo>
+ <pt x="hc" y="g21" />
+ </lnTo>
+ <lnTo>
+ <pt x="g24" y="g21" />
+ </lnTo>
+ <lnTo>
+ <pt x="g24" y="g20" />
+ </lnTo>
+ <arcTo wR="g27" hR="g27" stAng="0" swAng="cd4" />
+ <lnTo>
+ <pt x="g25" y="g19" />
+ </lnTo>
+ <arcTo wR="g27" hR="g27" stAng="cd4" swAng="cd4" />
+ <lnTo>
+ <pt x="g26" y="g21" />
+ </lnTo>
+ <lnTo>
+ <pt x="g11" y="g21" />
+ </lnTo>
+ <lnTo>
+ <pt x="g11" y="g20" />
+ </lnTo>
+ <arcTo wR="g17" hR="g17" stAng="cd2" swAng="-5400000" />
+ <lnTo>
+ <pt x="hc" y="g10" />
+ </lnTo>
+ <arcTo wR="g17" hR="g17" stAng="cd4" swAng="-5400000" />
+ <lnTo>
+ <pt x="g22" y="g21" />
+ </lnTo>
+ <close />
+ </path>
+ <path fill="none" extrusionOk="false">
+ <moveTo>
+ <pt x="g12" y="g21" />
+ </moveTo>
+ <lnTo>
+ <pt x="g22" y="g21" />
+ </lnTo>
+ <lnTo>
+ <pt x="g22" y="g20" />
+ </lnTo>
+ <arcTo wR="g17" hR="g17" stAng="0" swAng="cd4" />
+ <lnTo>
+ <pt x="g25" y="g10" />
+ </lnTo>
+ <arcTo wR="g17" hR="g17" stAng="cd4" swAng="cd4" />
+ <lnTo>
+ <pt x="g11" y="g21" />
+ </lnTo>
+ <lnTo>
+ <pt x="g26" y="g21" />
+ </lnTo>
+ <lnTo>
+ <pt x="g26" y="g20" />
+ </lnTo>
+ <arcTo wR="g27" hR="g27" stAng="cd2" swAng="-5400000" />
+ <lnTo>
+ <pt x="hc" y="g19" />
+ </lnTo>
+ <arcTo wR="g27" hR="g27" stAng="cd4" swAng="-5400000" />
+ <lnTo>
+ <pt x="g24" y="g21" />
+ </lnTo>
+ <lnTo>
+ <pt x="hc" y="g21" />
+ </lnTo>
+ <lnTo>
+ <pt x="g23" y="g9" />
+ </lnTo>
+ <close />
+ </path>
+ <path fill="none">
+ <moveTo>
+ <pt x="l" y="t" />
+ </moveTo>
+
+ <lnTo>
+ <pt x="r" y="t" />
+ </lnTo>
+ <lnTo>
+ <pt x="r" y="b" />
+ </lnTo>
+ <lnTo>
+ <pt x="l" y="b" />
+ </lnTo>
+ <close />
+ </path>
+ </pathLst>
+
+ </actionButtonReturn>
+ <actionButtonSound>
+
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="dx2" fmla="*/ ss 3 8" />
+ <gd name="g9" fmla="+- vc 0 dx2" />
+ <gd name="g10" fmla="+- vc dx2 0" />
+ <gd name="g11" fmla="+- hc 0 dx2" />
+ <gd name="g12" fmla="+- hc dx2 0" />
+ <gd name="g13" fmla="*/ ss 3 4" />
+ <gd name="g14" fmla="*/ g13 1 8" />
+ <gd name="g15" fmla="*/ g13 5 16" />
+ <gd name="g16" fmla="*/ g13 5 8" />
+ <gd name="g17" fmla="*/ g13 11 16" />
+ <gd name="g18" fmla="*/ g13 3 4" />
+ <gd name="g19" fmla="*/ g13 7 8" />
+ <gd name="g20" fmla="+- g9 g14 0" />
+ <gd name="g21" fmla="+- g9 g15 0" />
+ <gd name="g22" fmla="+- g9 g17 0" />
+ <gd name="g23" fmla="+- g9 g19 0" />
+ <gd name="g24" fmla="+- g11 g15 0" />
+ <gd name="g25" fmla="+- g11 g16 0" />
+ <gd name="g26" fmla="+- g11 g18 0" />
+ </gdLst>
+
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="0">
+ <pos x="r" y="vc" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="hc" y="b" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="l" y="vc" />
+ </cxn>
+ <cxn ang="3cd4">
+ <pos x="hc" y="t" />
+ </cxn>
+ </cxnLst>
+
+ <rect l="l" t="t" r="r" b="b" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path stroke="false" extrusionOk="false">
+ <moveTo>
+ <pt x="l" y="t" />
+ </moveTo>
+ <lnTo>
+ <pt x="r" y="t" />
+ </lnTo>
+ <lnTo>
+ <pt x="r" y="b" />
+ </lnTo>
+ <lnTo>
+ <pt x="l" y="b" />
+ </lnTo>
+ <close />
+ <moveTo>
+ <pt x="g11" y="g21" />
+ </moveTo>
+
+ <lnTo>
+ <pt x="g11" y="g22" />
+ </lnTo>
+ <lnTo>
+ <pt x="g24" y="g22" />
+ </lnTo>
+ <lnTo>
+ <pt x="g25" y="g10" />
+ </lnTo>
+ <lnTo>
+ <pt x="g25" y="g9" />
+ </lnTo>
+ <lnTo>
+ <pt x="g24" y="g21" />
+ </lnTo>
+ <close />
+ </path>
+ <path stroke="false" fill="darken" extrusionOk="false">
+ <moveTo>
+ <pt x="g11" y="g21" />
+ </moveTo>
+
+ <lnTo>
+ <pt x="g11" y="g22" />
+ </lnTo>
+ <lnTo>
+ <pt x="g24" y="g22" />
+ </lnTo>
+ <lnTo>
+ <pt x="g25" y="g10" />
+ </lnTo>
+ <lnTo>
+ <pt x="g25" y="g9" />
+ </lnTo>
+ <lnTo>
+ <pt x="g24" y="g21" />
+ </lnTo>
+ <close />
+ </path>
+ <path fill="none" extrusionOk="false">
+ <moveTo>
+ <pt x="g11" y="g21" />
+ </moveTo>
+
+ <lnTo>
+ <pt x="g24" y="g21" />
+ </lnTo>
+ <lnTo>
+ <pt x="g25" y="g9" />
+ </lnTo>
+ <lnTo>
+ <pt x="g25" y="g10" />
+ </lnTo>
+ <lnTo>
+ <pt x="g24" y="g22" />
+ </lnTo>
+ <lnTo>
+ <pt x="g11" y="g22" />
+ </lnTo>
+ <close />
+ <moveTo>
+ <pt x="g26" y="g21" />
+ </moveTo>
+ <lnTo>
+ <pt x="g12" y="g20" />
+ </lnTo>
+ <moveTo>
+ <pt x="g26" y="vc" />
+ </moveTo>
+ <lnTo>
+ <pt x="g12" y="vc" />
+ </lnTo>
+ <moveTo>
+ <pt x="g26" y="g22" />
+ </moveTo>
+ <lnTo>
+ <pt x="g12" y="g23" />
+ </lnTo>
+ </path>
+ <path fill="none">
+ <moveTo>
+ <pt x="l" y="t" />
+ </moveTo>
+
+ <lnTo>
+ <pt x="r" y="t" />
+ </lnTo>
+ <lnTo>
+ <pt x="r" y="b" />
+ </lnTo>
+ <lnTo>
+ <pt x="l" y="b" />
+ </lnTo>
+ <close />
+ </path>
+ </pathLst>
+
+ </actionButtonSound>
+ <arc>
+ <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="adj1" fmla="val 16200000" />
+ <gd name="adj2" fmla="val 0" />
+ </avLst>
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="stAng" fmla="pin 0 adj1 21599999" />
+ <gd name="enAng" fmla="pin 0 adj2 21599999" />
+ <gd name="sw11" fmla="+- enAng 0 stAng" />
+ <gd name="sw12" fmla="+- sw11 21600000 0" />
+ <gd name="swAng" fmla="?: sw11 sw11 sw12" />
+ <gd name="wt1" fmla="sin wd2 stAng" />
+ <gd name="ht1" fmla="cos hd2 stAng" />
+ <gd name="dx1" fmla="cat2 wd2 ht1 wt1" />
+ <gd name="dy1" fmla="sat2 hd2 ht1 wt1" />
+ <gd name="wt2" fmla="sin wd2 enAng" />
+ <gd name="ht2" fmla="cos hd2 enAng" />
+ <gd name="dx2" fmla="cat2 wd2 ht2 wt2" />
+ <gd name="dy2" fmla="sat2 hd2 ht2 wt2" />
+ <gd name="x1" fmla="+- hc dx1 0" />
+ <gd name="y1" fmla="+- vc dy1 0" />
+ <gd name="x2" fmla="+- hc dx2 0" />
+ <gd name="y2" fmla="+- vc dy2 0" />
+ <gd name="sw0" fmla="+- 21600000 0 stAng" />
+ <gd name="da1" fmla="+- swAng 0 sw0" />
+ <gd name="g1" fmla="max x1 x2" />
+ <gd name="ir" fmla="?: da1 r g1" />
+ <gd name="sw1" fmla="+- cd4 0 stAng" />
+ <gd name="sw2" fmla="+- 27000000 0 stAng" />
+ <gd name="sw3" fmla="?: sw1 sw1 sw2" />
+ <gd name="da2" fmla="+- swAng 0 sw3" />
+ <gd name="g5" fmla="max y1 y2" />
+ <gd name="ib" fmla="?: da2 b g5" />
+ <gd name="sw4" fmla="+- cd2 0 stAng" />
+ <gd name="sw5" fmla="+- 32400000 0 stAng" />
+ <gd name="sw6" fmla="?: sw4 sw4 sw5" />
+ <gd name="da3" fmla="+- swAng 0 sw6" />
+ <gd name="g9" fmla="min x1 x2" />
+ <gd name="il" fmla="?: da3 l g9" />
+ <gd name="sw7" fmla="+- 3cd4 0 stAng" />
+ <gd name="sw8" fmla="+- 37800000 0 stAng" />
+ <gd name="sw9" fmla="?: sw7 sw7 sw8" />
+ <gd name="da4" fmla="+- swAng 0 sw9" />
+ <gd name="g13" fmla="min y1 y2" />
+ <gd name="it" fmla="?: da4 t g13" />
+ <gd name="cang1" fmla="+- stAng 0 cd4" />
+ <gd name="cang2" fmla="+- enAng cd4 0" />
+ <gd name="cang3" fmla="+/ cang1 cang2 2" />
+ </gdLst>
+ <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <ahPolar gdRefAng="adj1" minAng="0" maxAng="21599999">
+ <pos x="x1" y="y1" />
+ </ahPolar>
+ <ahPolar gdRefAng="adj2" minAng="0" maxAng="21599999">
+ <pos x="x2" y="y2" />
+ </ahPolar>
+ </ahLst>
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="cang1">
+ <pos x="x1" y="y1" />
+ </cxn>
+ <cxn ang="cang3">
+ <pos x="hc" y="vc" />
+ </cxn>
+ <cxn ang="cang2">
+ <pos x="x2" y="y2" />
+ </cxn>
+ </cxnLst>
+ <rect l="il" t="it" r="ir" b="ib" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path stroke="false" extrusionOk="false">
+ <moveTo>
+ <pt x="x1" y="y1" />
+ </moveTo>
+ <arcTo wR="wd2" hR="hd2" stAng="stAng" swAng="swAng" />
+ <lnTo>
+ <pt x="hc" y="vc" />
+ </lnTo>
+ <close />
+ </path>
+ <path fill="none">
+ <moveTo>
+ <pt x="x1" y="y1" />
+ </moveTo>
+ <arcTo wR="wd2" hR="hd2" stAng="stAng" swAng="swAng" />
+ </path>
+ </pathLst>
+ </arc>
+ <bentArrow>
+
+ <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="adj1" fmla="val 25000" />
+
+ <gd name="adj2" fmla="val 25000" />
+
+ <gd name="adj3" fmla="val 25000" />
+
+ <gd name="adj4" fmla="val 43750" />
+
+ </avLst>
+
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="a2" fmla="pin 0 adj2 50000" />
+ <gd name="maxAdj1" fmla="*/ a2 2 1" />
+
+ <gd name="a1" fmla="pin 0 adj1 maxAdj1" />
+ <gd name="a3" fmla="pin 0 adj3 50000" />
+ <gd name="th" fmla="*/ ss a1 100000" />
+
+ <gd name="aw2" fmla="*/ ss a2 100000" />
+
+ <gd name="th2" fmla="*/ th 1 2" />
+ <gd name="dh2" fmla="+- aw2 0 th2" />
+
+ <gd name="ah" fmla="*/ ss a3 100000" />
+
+ <gd name="bw" fmla="+- r 0 ah" />
+
+ <gd name="bh" fmla="+- b 0 dh2" />
+
+ <gd name="bs" fmla="min bw bh" />
+
+ <gd name="maxAdj4" fmla="*/ 100000 bs ss" />
+ <gd name="a4" fmla="pin 0 adj4 maxAdj4" />
+
+ <gd name="bd" fmla="*/ ss a4 100000" />
+
+
+ <gd name="bd3" fmla="+- bd 0 th" />
+ <gd name="bd2" fmla="max bd3 0" />
+ <gd name="x3" fmla="+- th bd2 0" />
+ <gd name="x4" fmla="+- r 0 ah" />
+
+
+ <gd name="y3" fmla="+- dh2 th 0" />
+ <gd name="y4" fmla="+- y3 dh2 0" />
+ <gd name="y5" fmla="+- dh2 bd 0" />
+ <gd name="y6" fmla="+- y3 bd2 0" />
+ </gdLst>
+
+ <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <ahXY gdRefX="adj1" minX="0" maxX="maxAdj1">
+ <pos x="th" y="b" />
+ </ahXY>
+ <ahXY gdRefY="adj2" minY="0" maxY="50000">
+ <pos x="r" y="y4" />
+ </ahXY>
+ <ahXY gdRefX="adj3" minX="0" maxX="50000">
+ <pos x="x4" y="t" />
+ </ahXY>
+ <ahXY gdRefX="adj4" minX="0" maxX="maxAdj4">
+ <pos x="bd" y="t" />
+ </ahXY>
+ </ahLst>
+
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="3cd4">
+ <pos x="x4" y="t" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="x4" y="y4" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="th2" y="b" />
+ </cxn>
+ <cxn ang="0">
+ <pos x="r" y="aw2" />
+ </cxn>
+ </cxnLst>
+
+ <rect l="l" t="t" r="r" b="b" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path>
+ <moveTo>
+ <pt x="l" y="b" />
+ </moveTo>
+ <lnTo>
+ <pt x="l" y="y5" />
+ </lnTo>
+ <arcTo wR="bd" hR="bd" stAng="cd2" swAng="cd4" />
+ <lnTo>
+ <pt x="x4" y="dh2" />
+ </lnTo>
+ <lnTo>
+ <pt x="x4" y="t" />
+ </lnTo>
+ <lnTo>
+ <pt x="r" y="aw2" />
+ </lnTo>
+ <lnTo>
+ <pt x="x4" y="y4" />
+ </lnTo>
+ <lnTo>
+ <pt x="x4" y="y3" />
+ </lnTo>
+ <lnTo>
+ <pt x="x3" y="y3" />
+ </lnTo>
+ <arcTo wR="bd2" hR="bd2" stAng="3cd4" swAng="-5400000" />
+ <lnTo>
+ <pt x="th" y="b" />
+ </lnTo>
+ <close />
+ </path>
+ </pathLst>
+
+ </bentArrow>
+ <bentConnector2>
+ <rect l="l" t="t" r="r" b="b" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path fill="none">
+ <moveTo>
+ <pt x="l" y="t" />
+ </moveTo>
+ <lnTo>
+ <pt x="r" y="t" />
+ </lnTo>
+ <lnTo>
+ <pt x="r" y="b" />
+ </lnTo>
+ </path>
+ </pathLst>
+ </bentConnector2>
+ <bentConnector3>
+ <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="adj1" fmla="val 50000" />
+ </avLst>
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="x1" fmla="*/ w adj1 100000" />
+ </gdLst>
+ <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <ahXY gdRefX="adj1" minX="-2147483647" maxX="2147483647">
+ <pos x="x1" y="vc" />
+ </ahXY>
+ </ahLst>
+ <rect l="l" t="t" r="r" b="b" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path fill="none">
+ <moveTo>
+ <pt x="l" y="t" />
+ </moveTo>
+ <lnTo>
+ <pt x="x1" y="t" />
+ </lnTo>
+ <lnTo>
+ <pt x="x1" y="b" />
+ </lnTo>
+ <lnTo>
+ <pt x="r" y="b" />
+ </lnTo>
+ </path>
+ </pathLst>
+ </bentConnector3>
+ <bentConnector4>
+ <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="adj1" fmla="val 50000" />
+ <gd name="adj2" fmla="val 50000" />
+ </avLst>
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="x1" fmla="*/ w adj1 100000" />
+ <gd name="x2" fmla="+/ x1 r 2" />
+ <gd name="y2" fmla="*/ h adj2 100000" />
+ <gd name="y1" fmla="+/ t y2 2" />
+ </gdLst>
+ <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <ahXY gdRefX="adj1" minX="-2147483647" maxX="2147483647">
+ <pos x="x1" y="y1" />
+ </ahXY>
+ <ahXY gdRefY="adj2" minY="-2147483647" maxY="2147483647">
+ <pos x="x2" y="y2" />
+ </ahXY>
+ </ahLst>
+ <rect l="l" t="t" r="r" b="b" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path fill="none">
+ <moveTo>
+ <pt x="l" y="t" />
+ </moveTo>
+ <lnTo>
+ <pt x="x1" y="t" />
+ </lnTo>
+ <lnTo>
+ <pt x="x1" y="y2" />
+ </lnTo>
+ <lnTo>
+ <pt x="r" y="y2" />
+ </lnTo>
+ <lnTo>
+ <pt x="r" y="b" />
+ </lnTo>
+ </path>
+ </pathLst>
+ </bentConnector4>
+ <bentConnector5>
+
+ <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="adj1" fmla="val 50000" />
+
+ <gd name="adj2" fmla="val 50000" />
+
+ <gd name="adj3" fmla="val 50000" />
+
+ </avLst>
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="x1" fmla="*/ w adj1 100000" />
+
+ <gd name="x3" fmla="*/ w adj3 100000" />
+
+ <gd name="x2" fmla="+/ x1 x3 2" />
+
+ <gd name="y2" fmla="*/ h adj2 100000" />
+
+ <gd name="y1" fmla="+/ t y2 2" />
+
+ <gd name="y3" fmla="+/ b y2 2" />
+
+ </gdLst>
+ <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <ahXY gdRefX="adj1" minX="-2147483647" maxX="2147483647">
+ <pos x="x1" y="y1" />
+ </ahXY>
+ <ahXY gdRefY="adj2" minY="-2147483647" maxY="2147483647">
+ <pos x="x2" y="y2" />
+ </ahXY>
+ <ahXY gdRefX="adj3" minX="-2147483647" maxX="2147483647">
+ <pos x="x3" y="y3" />
+ </ahXY>
+ </ahLst>
+ <rect l="l" t="t" r="r" b="b" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path fill="none">
+ <moveTo>
+ <pt x="l" y="t" />
+ </moveTo>
+ <lnTo>
+ <pt x="x1" y="t" />
+ </lnTo>
+ <lnTo>
+ <pt x="x1" y="y2" />
+ </lnTo>
+ <lnTo>
+ <pt x="x3" y="y2" />
+ </lnTo>
+ <lnTo>
+ <pt x="x3" y="b" />
+ </lnTo>
+ <lnTo>
+ <pt x="r" y="b" />
+ </lnTo>
+ </path>
+ </pathLst>
+
+ </bentConnector5>
+ <bentUpArrow>
+
+ <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="adj1" fmla="val 25000" />
+
+ <gd name="adj2" fmla="val 25000" />
+
+ <gd name="adj3" fmla="val 25000" />
+
+ </avLst>
+
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="a1" fmla="pin 0 adj1 50000" />
+ <gd name="a2" fmla="pin 0 adj2 50000" />
+ <gd name="a3" fmla="pin 0 adj3 50000" />
+ <gd name="y1" fmla="*/ ss a3 100000" />
+ <gd name="dx1" fmla="*/ ss a2 50000" />
+
+ <gd name="x1" fmla="+- r 0 dx1" />
+ <gd name="dx3" fmla="*/ ss a2 100000" />
+
+ <gd name="x3" fmla="+- r 0 dx3" />
+ <gd name="dx2" fmla="*/ ss a1 200000" />
+
+ <gd name="x2" fmla="+- x3 0 dx2" />
+ <gd name="x4" fmla="+- x3 dx2 0" />
+ <gd name="dy2" fmla="*/ ss a1 100000" />
+
+ <gd name="y2" fmla="+- b 0 dy2" />
+ <gd name="x0" fmla="*/ x4 1 2" />
+ <gd name="y3" fmla="+/ y2 b 2" />
+ <gd name="y15" fmla="+/ y1 b 2" />
+ </gdLst>
+
+ <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <ahXY gdRefY="adj1" minY="0" maxY="50000">
+ <pos x="l" y="y2" />
+ </ahXY>
+ <ahXY gdRefX="adj2" minX="0" maxX="50000">
+ <pos x="x1" y="t" />
+ </ahXY>
+ <ahXY gdRefY="adj3" minY="0" maxY="50000">
+ <pos x="x2" y="y1" />
+ </ahXY>
+ </ahLst>
+
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="3cd4">
+ <pos x="x3" y="t" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="x1" y="y1" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="l" y="y3" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="x0" y="b" />
+ </cxn>
+ <cxn ang="0">
+ <pos x="x4" y="y15" />
+ </cxn>
+ <cxn ang="0">
+ <pos x="r" y="y1" />
+ </cxn>
+ </cxnLst>
+
+ <rect l="l" t="y2" r="x4" b="b" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path>
+ <moveTo>
+ <pt x="l" y="y2" />
+ </moveTo>
+ <lnTo>
+ <pt x="x2" y="y2" />
+ </lnTo>
+ <lnTo>
+ <pt x="x2" y="y1" />
+ </lnTo>
+ <lnTo>
+ <pt x="x1" y="y1" />
+ </lnTo>
+ <lnTo>
+ <pt x="x3" y="t" />
+ </lnTo>
+ <lnTo>
+ <pt x="r" y="y1" />
+ </lnTo>
+ <lnTo>
+ <pt x="x4" y="y1" />
+ </lnTo>
+ <lnTo>
+ <pt x="x4" y="b" />
+ </lnTo>
+ <lnTo>
+ <pt x="l" y="b" />
+ </lnTo>
+ <close />
+ </path>
+ </pathLst>
+
+ </bentUpArrow>
+ <bevel>
+
+ <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="adj" fmla="val 12500" />
+
+ </avLst>
+
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="a" fmla="pin 0 adj 50000" />
+ <gd name="x1" fmla="*/ ss a 100000" />
+
+
+
+ <gd name="x2" fmla="+- r 0 x1" />
+
+ <gd name="y2" fmla="+- b 0 x1" />
+
+ </gdLst>
+
+ <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <ahXY gdRefX="adj" minX="0" maxX="50000">
+ <pos x="x1" y="t" />
+ </ahXY>
+ </ahLst>
+
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="0">
+ <pos x="r" y="vc" />
+ </cxn>
+ <cxn ang="0">
+ <pos x="x2" y="vc" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="hc" y="b" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="hc" y="y2" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="l" y="vc" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="x1" y="vc" />
+ </cxn>
+ <cxn ang="3cd4">
+ <pos x="hc" y="t" />
+ </cxn>
+ <cxn ang="3cd4">
+ <pos x="hc" y="x1" />
+ </cxn>
+ </cxnLst>
+
+ <rect l="x1" t="x1" r="x2" b="y2" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path stroke="false" extrusionOk="false">
+
+ <moveTo>
+ <pt x="x1" y="x1" />
+ </moveTo>
+ <lnTo>
+ <pt x="x2" y="x1" />
+ </lnTo>
+ <lnTo>
+ <pt x="x2" y="y2" />
+ </lnTo>
+ <lnTo>
+ <pt x="x1" y="y2" />
+ </lnTo>
+ <close />
+ </path>
+ <path stroke="false" fill="lightenLess" extrusionOk="false">
+
+ <moveTo>
+ <pt x="l" y="t" />
+ </moveTo>
+ <lnTo>
+ <pt x="r" y="t" />
+ </lnTo>
+ <lnTo>
+ <pt x="x2" y="x1" />
+ </lnTo>
+ <lnTo>
+ <pt x="x1" y="x1" />
+ </lnTo>
+ <close />
+ </path>
+ <path stroke="false" fill="darkenLess" extrusionOk="false">
+
+ <moveTo>
+ <pt x="l" y="b" />
+ </moveTo>
+ <lnTo>
+ <pt x="x1" y="y2" />
+ </lnTo>
+ <lnTo>
+ <pt x="x2" y="y2" />
+ </lnTo>
+ <lnTo>
+ <pt x="r" y="b" />
+ </lnTo>
+ <close />
+ </path>
+ <path stroke="false" fill="lighten" extrusionOk="false">
+
+ <moveTo>
+ <pt x="l" y="t" />
+ </moveTo>
+ <lnTo>
+ <pt x="x1" y="x1" />
+ </lnTo>
+ <lnTo>
+ <pt x="x1" y="y2" />
+ </lnTo>
+ <lnTo>
+ <pt x="l" y="b" />
+ </lnTo>
+ <close />
+ </path>
+ <path stroke="false" fill="darken" extrusionOk="false">
+
+ <moveTo>
+ <pt x="r" y="t" />
+ </moveTo>
+ <lnTo>
+ <pt x="r" y="b" />
+ </lnTo>
+ <lnTo>
+ <pt x="x2" y="y2" />
+ </lnTo>
+ <lnTo>
+ <pt x="x2" y="x1" />
+ </lnTo>
+ <close />
+ </path>
+ <path fill="none" extrusionOk="false">
+
+ <moveTo>
+ <pt x="l" y="t" />
+ </moveTo>
+ <lnTo>
+ <pt x="r" y="t" />
+ </lnTo>
+ <lnTo>
+ <pt x="r" y="b" />
+ </lnTo>
+ <lnTo>
+ <pt x="l" y="b" />
+ </lnTo>
+ <close />
+ <moveTo>
+ <pt x="x1" y="x1" />
+ </moveTo>
+ <lnTo>
+ <pt x="x2" y="x1" />
+ </lnTo>
+ <lnTo>
+ <pt x="x2" y="y2" />
+ </lnTo>
+ <lnTo>
+ <pt x="x1" y="y2" />
+ </lnTo>
+ <close />
+ <moveTo>
+ <pt x="l" y="t" />
+ </moveTo>
+ <lnTo>
+ <pt x="x1" y="x1" />
+ </lnTo>
+ <moveTo>
+ <pt x="l" y="b" />
+ </moveTo>
+ <lnTo>
+ <pt x="x1" y="y2" />
+ </lnTo>
+ <moveTo>
+ <pt x="r" y="t" />
+ </moveTo>
+ <lnTo>
+ <pt x="x2" y="x1" />
+ </lnTo>
+ <moveTo>
+ <pt x="r" y="b" />
+ </moveTo>
+ <lnTo>
+ <pt x="x2" y="y2" />
+ </lnTo>
+ </path>
+ </pathLst>
+
+ </bevel>
+ <blockArc>
+
+
+ <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="adj1" fmla="val 10800000" />
+
+ <gd name="adj2" fmla="val 0" />
+
+ <gd name="adj3" fmla="val 25000" />
+
+ </avLst>
+
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="stAng" fmla="pin 0 adj1 21599999" />
+ <gd name="istAng" fmla="pin 0 adj2 21599999" />
+ <gd name="a3" fmla="pin 0 adj3 50000" />
+ <gd name="sw11" fmla="+- istAng 0 stAng" />
+
+ <gd name="sw12" fmla="+- sw11 21600000 0" />
+
+ <gd name="swAng" fmla="?: sw11 sw11 sw12" />
+
+ <gd name="iswAng" fmla="+- 0 0 swAng" />
+
+
+ <gd name="wt1" fmla="sin wd2 stAng" />
+ <gd name="ht1" fmla="cos hd2 stAng" />
+ <gd name="wt3" fmla="sin wd2 istAng" />
+ <gd name="ht3" fmla="cos hd2 istAng" />
+ <gd name="dx1" fmla="cat2 wd2 ht1 wt1" />
+ <gd name="dy1" fmla="sat2 hd2 ht1 wt1" />
+ <gd name="dx3" fmla="cat2 wd2 ht3 wt3" />
+ <gd name="dy3" fmla="sat2 hd2 ht3 wt3" />
+ <gd name="x1" fmla="+- hc dx1 0" />
+
+ <gd name="y1" fmla="+- vc dy1 0" />
+
+ <gd name="x3" fmla="+- hc dx3 0" />
+
+ <gd name="y3" fmla="+- vc dy3 0" />
+
+
+ <gd name="dr" fmla="*/ ss a3 100000" />
+ <gd name="iwd2" fmla="+- wd2 0 dr" />
+ <gd name="ihd2" fmla="+- hd2 0 dr" />
+ <gd name="wt2" fmla="sin iwd2 istAng" />
+ <gd name="ht2" fmla="cos ihd2 istAng" />
+ <gd name="wt4" fmla="sin iwd2 stAng" />
+ <gd name="ht4" fmla="cos ihd2 stAng" />
+ <gd name="dx2" fmla="cat2 iwd2 ht2 wt2" />
+ <gd name="dy2" fmla="sat2 ihd2 ht2 wt2" />
+ <gd name="dx4" fmla="cat2 iwd2 ht4 wt4" />
+ <gd name="dy4" fmla="sat2 ihd2 ht4 wt4" />
+ <gd name="x2" fmla="+- hc dx2 0" />
+
+ <gd name="y2" fmla="+- vc dy2 0" />
+
+ <gd name="x4" fmla="+- hc dx4 0" />
+
+ <gd name="y4" fmla="+- vc dy4 0" />
+
+
+ <gd name="sw0" fmla="+- 21600000 0 stAng" />
+ <gd name="da1" fmla="+- swAng 0 sw0" />
+ <gd name="g1" fmla="max x1 x2" />
+ <gd name="g2" fmla="max x3 x4" />
+ <gd name="g3" fmla="max g1 g2" />
+ <gd name="ir" fmla="?: da1 r g3" />
+
+ <gd name="sw1" fmla="+- cd4 0 stAng" />
+ <gd name="sw2" fmla="+- 27000000 0 stAng" />
+ <gd name="sw3" fmla="?: sw1 sw1 sw2" />
+ <gd name="da2" fmla="+- swAng 0 sw3" />
+ <gd name="g5" fmla="max y1 y2" />
+ <gd name="g6" fmla="max y3 y4" />
+ <gd name="g7" fmla="max g5 g6" />
+ <gd name="ib" fmla="?: da2 b g7" />
+
+ <gd name="sw4" fmla="+- cd2 0 stAng" />
+ <gd name="sw5" fmla="+- 32400000 0 stAng" />
+ <gd name="sw6" fmla="?: sw4 sw4 sw5" />
+ <gd name="da3" fmla="+- swAng 0 sw6" />
+ <gd name="g9" fmla="min x1 x2" />
+ <gd name="g10" fmla="min x3 x4" />
+ <gd name="g11" fmla="min g9 g10" />
+ <gd name="il" fmla="?: da3 l g11" />
+
+ <gd name="sw7" fmla="+- 3cd4 0 stAng" />
+ <gd name="sw8" fmla="+- 37800000 0 stAng" />
+ <gd name="sw9" fmla="?: sw7 sw7 sw8" />
+ <gd name="da4" fmla="+- swAng 0 sw9" />
+ <gd name="g13" fmla="min y1 y2" />
+ <gd name="g14" fmla="min y3 y4" />
+ <gd name="g15" fmla="min g13 g14" />
+ <gd name="it" fmla="?: da4 t g15" />
+
+ <gd name="x5" fmla="+/ x1 x4 2" />
+
+ <gd name="y5" fmla="+/ y1 y4 2" />
+
+ <gd name="x6" fmla="+/ x3 x2 2" />
+
+ <gd name="y6" fmla="+/ y3 y2 2" />
+
+ <gd name="cang1" fmla="+- stAng 0 cd4" />
+ <gd name="cang2" fmla="+- istAng cd4 0" />
+ <gd name="cang3" fmla="+/ cang1 cang2 2" />
+ </gdLst>
+
+ <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <ahPolar gdRefAng="adj1" minAng="0" maxAng="21599999">
+ <pos x="x1" y="y1" />
+ </ahPolar>
+ <ahPolar gdRefR="adj3" minR="0" maxR="50000" gdRefAng="adj2" minAng="0" maxAng="21599999">
+ <pos x="x2" y="y2" />
+ </ahPolar>
+ </ahLst>
+
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="cang1">
+ <pos x="x5" y="y5" />
+ </cxn>
+ <cxn ang="cang2">
+ <pos x="x6" y="y6" />
+ </cxn>
+ <cxn ang="cang3">
+ <pos x="hc" y="vc" />
+ </cxn>
+ </cxnLst>
+
+ <rect l="il" t="it" r="ir" b="ib" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path>
+ <moveTo>
+ <pt x="x1" y="y1" />
+ </moveTo>
+ <arcTo wR="wd2" hR="hd2" stAng="stAng" swAng="swAng" />
+ <lnTo>
+ <pt x="x2" y="y2" />
+ </lnTo>
+ <arcTo wR="iwd2" hR="ihd2" stAng="istAng" swAng="iswAng" />
+ <close />
+ </path>
+ </pathLst>
+
+ </blockArc>
+ <borderCallout1>
+
+ <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+
+ <gd name="adj1" fmla="val 18750" />
+
+ <gd name="adj2" fmla="val -8333" />
+
+ <gd name="adj3" fmla="val 112500" />
+
+ <gd name="adj4" fmla="val -38333" />
+
+ </avLst>
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="y1" fmla="*/ h adj1 100000" />
+ <gd name="x1" fmla="*/ w adj2 100000" />
+ <gd name="y2" fmla="*/ h adj3 100000" />
+ <gd name="x2" fmla="*/ w adj4 100000" />
+ </gdLst>
+ <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <ahXY gdRefX="adj2" minX="-2147483647" maxX="2147483647" gdRefY="adj1" minY="-2147483647" maxY="2147483647">
+ <pos x="x1" y="y1" />
+ </ahXY>
+ <ahXY gdRefX="adj4" minX="-2147483647" maxX="2147483647" gdRefY="adj3" minY="-2147483647" maxY="2147483647">
+ <pos x="x2" y="y2" />
+ </ahXY>
+ </ahLst>
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="0">
+ <pos x="r" y="vc" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="hc" y="b" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="l" y="vc" />
+ </cxn>
+ <cxn ang="3cd4">
+ <pos x="hc" y="t" />
+ </cxn>
+ </cxnLst>
+ <rect l="l" t="t" r="r" b="b" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path extrusionOk="false">
+ <moveTo>
+ <pt x="l" y="t" />
+ </moveTo>
+ <lnTo>
+ <pt x="r" y="t" />
+ </lnTo>
+ <lnTo>
+ <pt x="r" y="b" />
+ </lnTo>
+ <lnTo>
+ <pt x="l" y="b" />
+ </lnTo>
+ <close />
+ </path>
+ <path fill="none" extrusionOk="false">
+ <moveTo>
+ <pt x="x1" y="y1" />
+ </moveTo>
+ <lnTo>
+ <pt x="x2" y="y2" />
+ </lnTo>
+ </path>
+ </pathLst>
+
+ </borderCallout1>
+ <borderCallout2>
+
+ <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+
+ <gd name="adj1" fmla="val 18750" />
+
+ <gd name="adj2" fmla="val -8333" />
+
+ <gd name="adj3" fmla="val 18750" />
+
+ <gd name="adj4" fmla="val -16667" />
+
+ <gd name="adj5" fmla="val 112500" />
+
+ <gd name="adj6" fmla="val -46667" />
+
+ </avLst>
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="y1" fmla="*/ h adj1 100000" />
+ <gd name="x1" fmla="*/ w adj2 100000" />
+ <gd name="y2" fmla="*/ h adj3 100000" />
+ <gd name="x2" fmla="*/ w adj4 100000" />
+ <gd name="y3" fmla="*/ h adj5 100000" />
+ <gd name="x3" fmla="*/ w adj6 100000" />
+ </gdLst>
+ <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <ahXY gdRefX="adj2" minX="-2147483647" maxX="2147483647" gdRefY="adj1" minY="-2147483647" maxY="2147483647">
+ <pos x="x1" y="y1" />
+ </ahXY>
+ <ahXY gdRefX="adj4" minX="-2147483647" maxX="2147483647" gdRefY="adj3" minY="-2147483647" maxY="2147483647">
+ <pos x="x2" y="y2" />
+ </ahXY>
+ <ahXY gdRefX="adj6" minX="-2147483647" maxX="2147483647" gdRefY="adj5" minY="-2147483647" maxY="2147483647">
+ <pos x="x3" y="y3" />
+ </ahXY>
+ </ahLst>
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="0">
+ <pos x="r" y="vc" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="hc" y="b" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="l" y="vc" />
+ </cxn>
+ <cxn ang="3cd4">
+ <pos x="hc" y="t" />
+ </cxn>
+ </cxnLst>
+ <rect l="l" t="t" r="r" b="b" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path extrusionOk="false">
+ <moveTo>
+ <pt x="l" y="t" />
+ </moveTo>
+ <lnTo>
+ <pt x="r" y="t" />
+ </lnTo>
+ <lnTo>
+ <pt x="r" y="b" />
+ </lnTo>
+ <lnTo>
+ <pt x="l" y="b" />
+ </lnTo>
+ <close />
+ </path>
+ <path fill="none" extrusionOk="false">
+ <moveTo>
+ <pt x="x1" y="y1" />
+ </moveTo>
+ <lnTo>
+ <pt x="x2" y="y2" />
+ </lnTo>
+ <lnTo>
+ <pt x="x3" y="y3" />
+ </lnTo>
+ </path>
+ </pathLst>
+
+ </borderCallout2>
+ <borderCallout3>
+
+ <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+
+ <gd name="adj1" fmla="val 18750" />
+
+ <gd name="adj2" fmla="val -8333" />
+
+ <gd name="adj3" fmla="val 18750" />
+
+ <gd name="adj4" fmla="val -16667" />
+
+ <gd name="adj5" fmla="val 100000" />
+
+ <gd name="adj6" fmla="val -16667" />
+
+ <gd name="adj7" fmla="val 112963" />
+
+ <gd name="adj8" fmla="val -8333" />
+
+ </avLst>
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="y1" fmla="*/ h adj1 100000" />
+ <gd name="x1" fmla="*/ w adj2 100000" />
+ <gd name="y2" fmla="*/ h adj3 100000" />
+ <gd name="x2" fmla="*/ w adj4 100000" />
+ <gd name="y3" fmla="*/ h adj5 100000" />
+ <gd name="x3" fmla="*/ w adj6 100000" />
+ <gd name="y4" fmla="*/ h adj7 100000" />
+ <gd name="x4" fmla="*/ w adj8 100000" />
+ </gdLst>
+ <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <ahXY gdRefX="adj2" minX="-2147483647" maxX="2147483647" gdRefY="adj1" minY="-2147483647" maxY="2147483647">
+ <pos x="x1" y="y1" />
+ </ahXY>
+ <ahXY gdRefX="adj4" minX="-2147483647" maxX="2147483647" gdRefY="adj3" minY="-2147483647" maxY="2147483647">
+ <pos x="x2" y="y2" />
+ </ahXY>
+ <ahXY gdRefX="adj6" minX="-2147483647" maxX="2147483647" gdRefY="adj5" minY="-2147483647" maxY="2147483647">
+ <pos x="x3" y="y3" />
+ </ahXY>
+ <ahXY gdRefX="adj8" minX="-2147483647" maxX="2147483647" gdRefY="adj7" minY="-2147483647" maxY="2147483647">
+ <pos x="x4" y="y4" />
+ </ahXY>
+ </ahLst>
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="0">
+ <pos x="r" y="vc" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="hc" y="b" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="l" y="vc" />
+ </cxn>
+ <cxn ang="3cd4">
+ <pos x="hc" y="t" />
+ </cxn>
+ </cxnLst>
+ <rect l="l" t="t" r="r" b="b" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path extrusionOk="false">
+ <moveTo>
+ <pt x="l" y="t" />
+ </moveTo>
+ <lnTo>
+ <pt x="r" y="t" />
+ </lnTo>
+ <lnTo>
+ <pt x="r" y="b" />
+ </lnTo>
+ <lnTo>
+ <pt x="l" y="b" />
+ </lnTo>
+ <close />
+ </path>
+ <path fill="none" extrusionOk="false">
+ <moveTo>
+ <pt x="x1" y="y1" />
+ </moveTo>
+ <lnTo>
+ <pt x="x2" y="y2" />
+ </lnTo>
+ <lnTo>
+ <pt x="x3" y="y3" />
+ </lnTo>
+ <lnTo>
+ <pt x="x4" y="y4" />
+ </lnTo>
+ </path>
+ </pathLst>
+
+ </borderCallout3>
+ <bracePair>
+
+ <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="adj" fmla="val 8333" />
+
+ </avLst>
+
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="a" fmla="pin 0 adj 25000" />
+ <gd name="x1" fmla="*/ ss a 100000" />
+ <gd name="x2" fmla="*/ ss a 50000" />
+ <gd name="x3" fmla="+- r 0 x2" />
+ <gd name="x4" fmla="+- r 0 x1" />
+
+ <gd name="y2" fmla="+- vc 0 x1" />
+ <gd name="y3" fmla="+- vc x1 0" />
+ <gd name="y4" fmla="+- b 0 x1" />
+ <gd name="it" fmla="*/ x1 29289 100000" />
+
+ <gd name="il" fmla="+- x1 it 0" />
+ <gd name="ir" fmla="+- r 0 il" />
+ <gd name="ib" fmla="+- b 0 it" />
+ </gdLst>
+
+ <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <ahXY gdRefY="adj" minY="0" maxY="25000">
+ <pos x="l" y="x1" />
+ </ahXY>
+ </ahLst>
+
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="3cd4">
+ <pos x="hc" y="t" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="l" y="vc" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="hc" y="b" />
+ </cxn>
+ <cxn ang="0">
+ <pos x="r" y="vc" />
+ </cxn>
+ </cxnLst>
+
+ <rect l="il" t="il" r="ir" b="ib" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path stroke="false" extrusionOk="false">
+ <moveTo>
+ <pt x="x2" y="b" />
+ </moveTo>
+ <arcTo wR="x1" hR="x1" stAng="cd4" swAng="cd4" />
+ <lnTo>
+ <pt x="x1" y="y3" />
+ </lnTo>
+ <arcTo wR="x1" hR="x1" stAng="0" swAng="-5400000" />
+ <arcTo wR="x1" hR="x1" stAng="cd4" swAng="-5400000" />
+ <lnTo>
+ <pt x="x1" y="x1" />
+ </lnTo>
+ <arcTo wR="x1" hR="x1" stAng="cd2" swAng="cd4" />
+ <lnTo>
+ <pt x="x3" y="t" />
+ </lnTo>
+ <arcTo wR="x1" hR="x1" stAng="3cd4" swAng="cd4" />
+ <lnTo>
+ <pt x="x4" y="y2" />
+ </lnTo>
+ <arcTo wR="x1" hR="x1" stAng="cd2" swAng="-5400000" />
+ <arcTo wR="x1" hR="x1" stAng="3cd4" swAng="-5400000" />
+ <lnTo>
+ <pt x="x4" y="y4" />
+ </lnTo>
+ <arcTo wR="x1" hR="x1" stAng="0" swAng="cd4" />
+ <close />
+ </path>
+ <path fill="none">
+ <moveTo>
+ <pt x="x2" y="b" />
+ </moveTo>
+ <arcTo wR="x1" hR="x1" stAng="cd4" swAng="cd4" />
+ <lnTo>
+ <pt x="x1" y="y3" />
+ </lnTo>
+ <arcTo wR="x1" hR="x1" stAng="0" swAng="-5400000" />
+ <arcTo wR="x1" hR="x1" stAng="cd4" swAng="-5400000" />
+ <lnTo>
+ <pt x="x1" y="x1" />
+ </lnTo>
+ <arcTo wR="x1" hR="x1" stAng="cd2" swAng="cd4" />
+ <moveTo>
+ <pt x="x3" y="t" />
+ </moveTo>
+ <arcTo wR="x1" hR="x1" stAng="3cd4" swAng="cd4" />
+ <lnTo>
+ <pt x="x4" y="y2" />
+ </lnTo>
+ <arcTo wR="x1" hR="x1" stAng="cd2" swAng="-5400000" />
+ <arcTo wR="x1" hR="x1" stAng="3cd4" swAng="-5400000" />
+ <lnTo>
+ <pt x="x4" y="y4" />
+ </lnTo>
+ <arcTo wR="x1" hR="x1" stAng="0" swAng="cd4" />
+ </path>
+ </pathLst>
+
+ </bracePair>
+ <bracketPair>
+
+ <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="adj" fmla="val 16667" />
+ </avLst>
+
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="a" fmla="pin 0 adj 50000" />
+ <gd name="x1" fmla="*/ ss a 100000" />
+ <gd name="x2" fmla="+- r 0 x1" />
+
+ <gd name="y2" fmla="+- b 0 x1" />
+ <gd name="il" fmla="*/ x1 29289 100000" />
+
+
+ <gd name="ir" fmla="+- r 0 il" />
+ <gd name="ib" fmla="+- b 0 il" />
+ </gdLst>
+
+ <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <ahXY gdRefY="adj" minY="0" maxY="50000">
+ <pos x="l" y="x1" />
+ </ahXY>
+ </ahLst>
+
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="3cd4">
+ <pos x="hc" y="t" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="l" y="vc" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="hc" y="b" />
+ </cxn>
+ <cxn ang="0">
+ <pos x="r" y="vc" />
+ </cxn>
+ </cxnLst>
+
+ <rect l="il" t="il" r="ir" b="ib" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path stroke="false" extrusionOk="false">
+ <moveTo>
+ <pt x="l" y="x1" />
+ </moveTo>
+ <arcTo wR="x1" hR="x1" stAng="cd2" swAng="cd4" />
+ <lnTo>
+ <pt x="x2" y="t" />
+ </lnTo>
+ <arcTo wR="x1" hR="x1" stAng="3cd4" swAng="cd4" />
+ <lnTo>
+ <pt x="r" y="y2" />
+ </lnTo>
+ <arcTo wR="x1" hR="x1" stAng="0" swAng="cd4" />
+ <lnTo>
+ <pt x="x1" y="b" />
+ </lnTo>
+ <arcTo wR="x1" hR="x1" stAng="cd4" swAng="cd4" />
+ <close />
+ </path>
+ <path fill="none">
+ <moveTo>
+ <pt x="x1" y="b" />
+ </moveTo>
+ <arcTo wR="x1" hR="x1" stAng="cd4" swAng="cd4" />
+ <lnTo>
+ <pt x="l" y="x1" />
+ </lnTo>
+ <arcTo wR="x1" hR="x1" stAng="cd2" swAng="cd4" />
+ <moveTo>
+ <pt x="x2" y="t" />
+ </moveTo>
+ <arcTo wR="x1" hR="x1" stAng="3cd4" swAng="cd4" />
+ <lnTo>
+ <pt x="r" y="y2" />
+ </lnTo>
+ <arcTo wR="x1" hR="x1" stAng="0" swAng="cd4" />
+ </path>
+ </pathLst>
+
+ </bracketPair>
+ <callout1>
+
+ <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+
+ <gd name="adj1" fmla="val 18750" />
+
+ <gd name="adj2" fmla="val -8333" />
+
+ <gd name="adj3" fmla="val 112500" />
+
+ <gd name="adj4" fmla="val -38333" />
+
+ </avLst>
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="y1" fmla="*/ h adj1 100000" />
+ <gd name="x1" fmla="*/ w adj2 100000" />
+ <gd name="y2" fmla="*/ h adj3 100000" />
+ <gd name="x2" fmla="*/ w adj4 100000" />
+ </gdLst>
+ <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <ahXY gdRefX="adj2" minX="-2147483647" maxX="2147483647" gdRefY="adj1" minY="-2147483647" maxY="2147483647">
+ <pos x="x1" y="y1" />
+ </ahXY>
+ <ahXY gdRefX="adj4" minX="-2147483647" maxX="2147483647" gdRefY="adj3" minY="-2147483647" maxY="2147483647">
+ <pos x="x2" y="y2" />
+ </ahXY>
+ </ahLst>
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="0">
+ <pos x="r" y="vc" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="hc" y="b" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="l" y="vc" />
+ </cxn>
+ <cxn ang="3cd4">
+ <pos x="hc" y="t" />
+ </cxn>
+ </cxnLst>
+ <rect l="l" t="t" r="r" b="b" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path stroke="false" extrusionOk="false">
+ <moveTo>
+ <pt x="l" y="t" />
+ </moveTo>
+ <lnTo>
+ <pt x="r" y="t" />
+ </lnTo>
+ <lnTo>
+ <pt x="r" y="b" />
+ </lnTo>
+ <lnTo>
+ <pt x="l" y="b" />
+ </lnTo>
+ <close />
+ </path>
+ <path fill="none" extrusionOk="false">
+ <moveTo>
+ <pt x="x1" y="y1" />
+ </moveTo>
+ <lnTo>
+ <pt x="x2" y="y2" />
+ </lnTo>
+ </path>
+ </pathLst>
+
+ </callout1>
+ <callout2>
+
+ <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+
+ <gd name="adj1" fmla="val 18750" />
+
+ <gd name="adj2" fmla="val -8333" />
+
+ <gd name="adj3" fmla="val 18750" />
+
+ <gd name="adj4" fmla="val -16667" />
+
+ <gd name="adj5" fmla="val 112500" />
+
+ <gd name="adj6" fmla="val -46667" />
+
+ </avLst>
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="y1" fmla="*/ h adj1 100000" />
+ <gd name="x1" fmla="*/ w adj2 100000" />
+ <gd name="y2" fmla="*/ h adj3 100000" />
+ <gd name="x2" fmla="*/ w adj4 100000" />
+ <gd name="y3" fmla="*/ h adj5 100000" />
+ <gd name="x3" fmla="*/ w adj6 100000" />
+ </gdLst>
+ <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <ahXY gdRefX="adj2" minX="-2147483647" maxX="2147483647" gdRefY="adj1" minY="-2147483647" maxY="2147483647">
+ <pos x="x1" y="y1" />
+ </ahXY>
+ <ahXY gdRefX="adj4" minX="-2147483647" maxX="2147483647" gdRefY="adj3" minY="-2147483647" maxY="2147483647">
+ <pos x="x2" y="y2" />
+ </ahXY>
+ <ahXY gdRefX="adj6" minX="-2147483647" maxX="2147483647" gdRefY="adj5" minY="-2147483647" maxY="2147483647">
+ <pos x="x3" y="y3" />
+ </ahXY>
+ </ahLst>
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="0">
+ <pos x="r" y="vc" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="hc" y="b" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="l" y="vc" />
+ </cxn>
+ <cxn ang="3cd4">
+ <pos x="hc" y="t" />
+ </cxn>
+ </cxnLst>
+ <rect l="l" t="t" r="r" b="b" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path stroke="false" extrusionOk="false">
+ <moveTo>
+ <pt x="l" y="t" />
+ </moveTo>
+ <lnTo>
+ <pt x="r" y="t" />
+ </lnTo>
+ <lnTo>
+ <pt x="r" y="b" />
+ </lnTo>
+ <lnTo>
+ <pt x="l" y="b" />
+ </lnTo>
+ <close />
+ </path>
+ <path fill="none" extrusionOk="false">
+ <moveTo>
+ <pt x="x1" y="y1" />
+ </moveTo>
+ <lnTo>
+ <pt x="x2" y="y2" />
+ </lnTo>
+ <lnTo>
+ <pt x="x3" y="y3" />
+ </lnTo>
+ </path>
+ </pathLst>
+
+ </callout2>
+ <callout3>
+
+ <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+
+ <gd name="adj1" fmla="val 18750" />
+
+ <gd name="adj2" fmla="val -8333" />
+
+ <gd name="adj3" fmla="val 18750" />
+
+ <gd name="adj4" fmla="val -16667" />
+
+ <gd name="adj5" fmla="val 100000" />
+
+ <gd name="adj6" fmla="val -16667" />
+
+ <gd name="adj7" fmla="val 112963" />
+
+ <gd name="adj8" fmla="val -8333" />
+
+ </avLst>
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="y1" fmla="*/ h adj1 100000" />
+ <gd name="x1" fmla="*/ w adj2 100000" />
+ <gd name="y2" fmla="*/ h adj3 100000" />
+ <gd name="x2" fmla="*/ w adj4 100000" />
+ <gd name="y3" fmla="*/ h adj5 100000" />
+ <gd name="x3" fmla="*/ w adj6 100000" />
+ <gd name="y4" fmla="*/ h adj7 100000" />
+ <gd name="x4" fmla="*/ w adj8 100000" />
+ </gdLst>
+ <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <ahXY gdRefX="adj2" minX="-2147483647" maxX="2147483647" gdRefY="adj1" minY="-2147483647" maxY="2147483647">
+ <pos x="x1" y="y1" />
+ </ahXY>
+ <ahXY gdRefX="adj4" minX="-2147483647" maxX="2147483647" gdRefY="adj3" minY="-2147483647" maxY="2147483647">
+ <pos x="x2" y="y2" />
+ </ahXY>
+ <ahXY gdRefX="adj6" minX="-2147483647" maxX="2147483647" gdRefY="adj5" minY="-2147483647" maxY="2147483647">
+ <pos x="x3" y="y3" />
+ </ahXY>
+ <ahXY gdRefX="adj8" minX="-2147483647" maxX="2147483647" gdRefY="adj7" minY="-2147483647" maxY="2147483647">
+ <pos x="x4" y="y4" />
+ </ahXY>
+ </ahLst>
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="0">
+ <pos x="r" y="vc" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="hc" y="b" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="l" y="vc" />
+ </cxn>
+ <cxn ang="3cd4">
+ <pos x="hc" y="t" />
+ </cxn>
+ </cxnLst>
+ <rect l="l" t="t" r="r" b="b" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path stroke="false" extrusionOk="false">
+ <moveTo>
+ <pt x="l" y="t" />
+ </moveTo>
+ <lnTo>
+ <pt x="r" y="t" />
+ </lnTo>
+ <lnTo>
+ <pt x="r" y="b" />
+ </lnTo>
+ <lnTo>
+ <pt x="l" y="b" />
+ </lnTo>
+ <close />
+ </path>
+ <path fill="none" extrusionOk="false">
+ <moveTo>
+ <pt x="x1" y="y1" />
+ </moveTo>
+ <lnTo>
+ <pt x="x2" y="y2" />
+ </lnTo>
+ <lnTo>
+ <pt x="x3" y="y3" />
+ </lnTo>
+ <lnTo>
+ <pt x="x4" y="y4" />
+ </lnTo>
+ </path>
+ </pathLst>
+
+ </callout3>
+ <can>
+
+ <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="adj" fmla="val 25000" />
+
+ </avLst>
+
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="maxAdj" fmla="*/ 50000 h ss" />
+ <gd name="a" fmla="pin 0 adj maxAdj" />
+ <gd name="y1" fmla="*/ ss a 200000" />
+ <gd name="y2" fmla="+- y1 y1 0" />
+ <gd name="y3" fmla="+- b 0 y1" />
+ </gdLst>
+
+ <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <ahXY gdRefY="adj" minY="0" maxY="maxAdj">
+ <pos x="hc" y="y2" />
+ </ahXY>
+ </ahLst>
+
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="3cd4">
+ <pos x="hc" y="y2" />
+ </cxn>
+ <cxn ang="3cd4">
+ <pos x="hc" y="t" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="l" y="vc" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="hc" y="b" />
+ </cxn>
+ <cxn ang="0">
+ <pos x="r" y="vc" />
+ </cxn>
+ </cxnLst>
+
+ <rect l="l" t="y2" r="r" b="y3" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path stroke="false" extrusionOk="false">
+
+ <moveTo>
+ <pt x="l" y="y1" />
+ </moveTo>
+ <arcTo wR="wd2" hR="y1" stAng="cd2" swAng="-10800000" />
+ <lnTo>
+ <pt x="r" y="y3" />
+ </lnTo>
+ <arcTo wR="wd2" hR="y1" stAng="0" swAng="cd2" />
+ <close />
+ </path>
+ <path stroke="false" fill="lighten" extrusionOk="false">
+
+ <moveTo>
+ <pt x="l" y="y1" />
+ </moveTo>
+ <arcTo wR="wd2" hR="y1" stAng="cd2" swAng="cd2" />
+ <arcTo wR="wd2" hR="y1" stAng="0" swAng="cd2" />
+ <close />
+ </path>
+ <path fill="none" extrusionOk="false">
+
+ <moveTo>
+ <pt x="r" y="y1" />
+ </moveTo>
+ <arcTo wR="wd2" hR="y1" stAng="0" swAng="cd2" />
+ <arcTo wR="wd2" hR="y1" stAng="cd2" swAng="cd2" />
+ <lnTo>
+ <pt x="r" y="y3" />
+ </lnTo>
+ <arcTo wR="wd2" hR="y1" stAng="0" swAng="cd2" />
+ <lnTo>
+ <pt x="l" y="y1" />
+ </lnTo>
+ </path>
+ </pathLst>
+
+ </can>
+ <chartPlus>
+
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path w="10" h="10" fill="none" extrusionOk="false">
+ <moveTo>
+ <pt x="5" y="0" />
+ </moveTo>
+ <lnTo>
+ <pt x="5" y="10" />
+ </lnTo>
+ <moveTo>
+ <pt x="0" y="5" />
+ </moveTo>
+ <lnTo>
+ <pt x="10" y="5" />
+ </lnTo>
+ </path>
+ <path w="10" h="10" stroke="false">
+ <moveTo>
+ <pt x="0" y="0" />
+ </moveTo>
+ <lnTo>
+ <pt x="0" y="10" />
+ </lnTo>
+ <lnTo>
+ <pt x="10" y="10" />
+ </lnTo>
+ <lnTo>
+ <pt x="10" y="0" />
+ </lnTo>
+ <close />
+ </path>
+ </pathLst>
+
+ </chartPlus>
+ <chartStar>
+
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path w="10" h="10" fill="none" extrusionOk="false">
+ <moveTo>
+ <pt x="0" y="0" />
+ </moveTo>
+ <lnTo>
+ <pt x="10" y="10" />
+ </lnTo>
+ <moveTo>
+ <pt x="0" y="10" />
+ </moveTo>
+ <lnTo>
+ <pt x="10" y="0" />
+ </lnTo>
+ <moveTo>
+ <pt x="5" y="0" />
+ </moveTo>
+ <lnTo>
+ <pt x="5" y="10" />
+ </lnTo>
+ </path>
+ <path w="10" h="10" stroke="false">
+ <moveTo>
+ <pt x="0" y="0" />
+ </moveTo>
+ <lnTo>
+ <pt x="0" y="10" />
+ </lnTo>
+ <lnTo>
+ <pt x="10" y="10" />
+ </lnTo>
+ <lnTo>
+ <pt x="10" y="0" />
+ </lnTo>
+ <close />
+ </path>
+ </pathLst>
+
+ </chartStar>
+ <chartX>
+
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path w="10" h="10" fill="none" extrusionOk="false">
+ <moveTo>
+ <pt x="0" y="0" />
+ </moveTo>
+ <lnTo>
+ <pt x="10" y="10" />
+ </lnTo>
+ <moveTo>
+ <pt x="0" y="10" />
+ </moveTo>
+ <lnTo>
+ <pt x="10" y="0" />
+ </lnTo>
+ </path>
+ <path w="10" h="10" stroke="false">
+ <moveTo>
+ <pt x="0" y="0" />
+ </moveTo>
+ <lnTo>
+ <pt x="0" y="10" />
+ </lnTo>
+ <lnTo>
+ <pt x="10" y="10" />
+ </lnTo>
+ <lnTo>
+ <pt x="10" y="0" />
+ </lnTo>
+ <close />
+ </path>
+ </pathLst>
+
+ </chartX>
+ <chevron>
+ <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="adj" fmla="val 50000" />
+ </avLst>
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="maxAdj" fmla="*/ 100000 w ss" />
+ <gd name="a" fmla="pin 0 adj maxAdj" />
+ <gd name="x1" fmla="*/ ss a 100000" />
+ <gd name="x2" fmla="+- r 0 x1" />
+ <gd name="x3" fmla="*/ x2 1 2" />
+ <gd name="dx" fmla="+- x2 0 x1" />
+ <gd name="il" fmla="?: dx x1 l" />
+ <gd name="ir" fmla="?: dx x2 r" />
+ </gdLst>
+ <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <ahXY gdRefX="adj" minX="0" maxX="maxAdj">
+ <pos x="x2" y="t" />
+ </ahXY>
+ </ahLst>
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="3cd4">
+ <pos x="x3" y="t" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="x1" y="vc" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="x3" y="b" />
+ </cxn>
+ <cxn ang="0">
+ <pos x="r" y="vc" />
+ </cxn>
+ </cxnLst>
+ <rect l="il" t="t" r="ir" b="b" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path>
+ <moveTo>
+ <pt x="l" y="t" />
+ </moveTo>
+ <lnTo>
+ <pt x="x2" y="t" />
+ </lnTo>
+ <lnTo>
+ <pt x="r" y="vc" />
+ </lnTo>
+ <lnTo>
+ <pt x="x2" y="b" />
+ </lnTo>
+ <lnTo>
+ <pt x="l" y="b" />
+ </lnTo>
+ <lnTo>
+ <pt x="x1" y="vc" />
+ </lnTo>
+ <close />
+ </path>
+ </pathLst>
+ </chevron>
+ <chord>
+
+ <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="adj1" fmla="val 2700000" />
+
+ <gd name="adj2" fmla="val 16200000" />
+
+ </avLst>
+
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="stAng" fmla="pin 0 adj1 21599999" />
+ <gd name="enAng" fmla="pin 0 adj2 21599999" />
+ <gd name="sw1" fmla="+- enAng 0 stAng" />
+
+ <gd name="sw2" fmla="+- sw1 21600000 0" />
+
+ <gd name="swAng" fmla="?: sw1 sw1 sw2" />
+
+ <gd name="wt1" fmla="sin wd2 stAng" />
+ <gd name="ht1" fmla="cos hd2 stAng" />
+ <gd name="dx1" fmla="cat2 wd2 ht1 wt1" />
+ <gd name="dy1" fmla="sat2 hd2 ht1 wt1" />
+ <gd name="wt2" fmla="sin wd2 enAng" />
+ <gd name="ht2" fmla="cos hd2 enAng" />
+ <gd name="dx2" fmla="cat2 wd2 ht2 wt2" />
+ <gd name="dy2" fmla="sat2 hd2 ht2 wt2" />
+ <gd name="x1" fmla="+- hc dx1 0" />
+
+ <gd name="y1" fmla="+- vc dy1 0" />
+
+ <gd name="x2" fmla="+- hc dx2 0" />
+
+ <gd name="y2" fmla="+- vc dy2 0" />
+
+ <gd name="x3" fmla="+/ x1 x2 2" />
+ <gd name="y3" fmla="+/ y1 y2 2" />
+ <gd name="midAng0" fmla="*/ swAng 1 2" />
+ <gd name="midAng" fmla="+- stAng midAng0 cd2" />
+ <gd name="idx" fmla="cos wd2 2700000" />
+ <gd name="idy" fmla="sin hd2 2700000" />
+ <gd name="il" fmla="+- hc 0 idx" />
+ <gd name="ir" fmla="+- hc idx 0" />
+ <gd name="it" fmla="+- vc 0 idy" />
+ <gd name="ib" fmla="+- vc idy 0" />
+ </gdLst>
+
+ <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <ahPolar gdRefAng="adj1" minAng="0" maxAng="21599999">
+ <pos x="x1" y="y1" />
+ </ahPolar>
+ <ahPolar gdRefAng="adj2" minAng="0" maxAng="21599999">
+ <pos x="x2" y="y2" />
+ </ahPolar>
+ </ahLst>
+
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="stAng">
+ <pos x="x1" y="y1" />
+ </cxn>
+ <cxn ang="enAng">
+ <pos x="x2" y="y2" />
+ </cxn>
+ <cxn ang="midAng">
+ <pos x="x3" y="y3" />
+ </cxn>
+ </cxnLst>
+
+ <rect l="il" t="it" r="ir" b="ib" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path>
+ <moveTo>
+ <pt x="x1" y="y1" />
+ </moveTo>
+ <arcTo wR="wd2" hR="hd2" stAng="stAng" swAng="swAng" />
+ <close />
+ </path>
+ </pathLst>
+
+ </chord>
+ <circularArrow>
+
+ <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="adj1" fmla="val 12500" />
+
+ <gd name="adj2" fmla="val 1142319" />
+
+ <gd name="adj3" fmla="val 20457681" />
+
+ <gd name="adj4" fmla="val 10800000" />
+
+ <gd name="adj5" fmla="val 12500" />
+
+ </avLst>
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="a5" fmla="pin 0 adj5 25000" />
+
+ <gd name="maxAdj1" fmla="*/ a5 2 1" />
+
+ <gd name="a1" fmla="pin 0 adj1 maxAdj1" />
+ <gd name="enAng" fmla="pin 1 adj3 21599999" />
+ <gd name="stAng" fmla="pin 0 adj4 21599999" />
+
+ <gd name="th" fmla="*/ ss a1 100000" />
+
+ <gd name="thh" fmla="*/ ss a5 100000" />
+
+ <gd name="th2" fmla="*/ th 1 2" />
+
+
+ <gd name="rw1" fmla="+- wd2 th2 thh" />
+
+ <gd name="rh1" fmla="+- hd2 th2 thh" />
+
+ <gd name="rw2" fmla="+- rw1 0 th" />
+
+ <gd name="rh2" fmla="+- rh1 0 th" />
+
+ <gd name="rw3" fmla="+- rw2 th2 0" />
+
+ <gd name="rh3" fmla="+- rh2 th2 0" />
+
+
+ <gd name="wtH" fmla="sin rw3 enAng" />
+ <gd name="htH" fmla="cos rh3 enAng" />
+ <gd name="dxH" fmla="cat2 rw3 htH wtH" />
+ <gd name="dyH" fmla="sat2 rh3 htH wtH" />
+ <gd name="xH" fmla="+- hc dxH 0" />
+
+ <gd name="yH" fmla="+- vc dyH 0" />
+
+
+ <gd name="rI" fmla="min rw2 rh2" />
+
+ <gd name="u1" fmla="*/ dxH dxH 1" />
+ <gd name="u2" fmla="*/ dyH dyH 1" />
+ <gd name="u3" fmla="*/ rI rI 1" />
+ <gd name="u4" fmla="+- u1 0 u3" />
+ <gd name="u5" fmla="+- u2 0 u3" />
+ <gd name="u6" fmla="*/ u4 u5 u1" />
+ <gd name="u7" fmla="*/ u6 1 u2" />
+ <gd name="u8" fmla="+- 1 0 u7" />
+ <gd name="u9" fmla="sqrt u8" />
+ <gd name="u10" fmla="*/ u4 1 dxH" />
+ <gd name="u11" fmla="*/ u10 1 dyH" />
+ <gd name="u12" fmla="+/ 1 u9 u11" />
+ <gd name="u13" fmla="at2 1 u12" />
+ <gd name="u14" fmla="+- u13 21600000 0" />
+ <gd name="u15" fmla="?: u13 u13 u14" />
+ <gd name="u16" fmla="+- u15 0 enAng" />
+
+ <gd name="u17" fmla="+- u16 21600000 0" />
+ <gd name="u18" fmla="?: u16 u16 u17" />
+ <gd name="u19" fmla="+- u18 0 cd2" />
+ <gd name="u20" fmla="+- u18 0 21600000" />
+ <gd name="u21" fmla="?: u19 u20 u18" />
+ <gd name="maxAng" fmla="abs u21" />
+ <gd name="aAng" fmla="pin 0 adj2 maxAng" />
+
+ <gd name="ptAng" fmla="+- enAng aAng 0" />
+
+
+ <gd name="wtA" fmla="sin rw3 ptAng" />
+ <gd name="htA" fmla="cos rh3 ptAng" />
+ <gd name="dxA" fmla="cat2 rw3 htA wtA" />
+ <gd name="dyA" fmla="sat2 rh3 htA wtA" />
+ <gd name="xA" fmla="+- hc dxA 0" />
+
+ <gd name="yA" fmla="+- vc dyA 0" />
+
+
+ <gd name="wtE" fmla="sin rw1 stAng" />
+ <gd name="htE" fmla="cos rh1 stAng" />
+ <gd name="dxE" fmla="cat2 rw1 htE wtE" />
+ <gd name="dyE" fmla="sat2 rh1 htE wtE" />
+ <gd name="xE" fmla="+- hc dxE 0" />
+
+ <gd name="yE" fmla="+- vc dyE 0" />
+
+
+ <gd name="dxG" fmla="cos thh ptAng" />
+ <gd name="dyG" fmla="sin thh ptAng" />
+ <gd name="xG" fmla="+- xH dxG 0" />
+
+ <gd name="yG" fmla="+- yH dyG 0" />
+
+
+ <gd name="dxB" fmla="cos thh ptAng" />
+ <gd name="dyB" fmla="sin thh ptAng" />
+ <gd name="xB" fmla="+- xH 0 dxB 0" />
+
+ <gd name="yB" fmla="+- yH 0 dyB 0" />
+
+
+ <gd name="sx1" fmla="+- xB 0 hc" />
+
+ <gd name="sy1" fmla="+- yB 0 vc" />
+
+ <gd name="sx2" fmla="+- xG 0 hc" />
+
+ <gd name="sy2" fmla="+- yG 0 vc" />
+
+
+ <gd name="rO" fmla="min rw1 rh1" />
+
+ <gd name="x1O" fmla="*/ sx1 rO rw1" />
+
+ <gd name="y1O" fmla="*/ sy1 rO rh1" />
+
+ <gd name="x2O" fmla="*/ sx2 rO rw1" />
+
+ <gd name="y2O" fmla="*/ sy2 rO rh1" />
+
+
+ <gd name="dxO" fmla="+- x2O 0 x1O" />
+ <gd name="dyO" fmla="+- y2O 0 y1O" />
+ <gd name="dO" fmla="mod dxO dyO 0" />
+
+ <gd name="q1" fmla="*/ x1O y2O 1" />
+ <gd name="q2" fmla="*/ x2O y1O 1" />
+ <gd name="DO" fmla="+- q1 0 q2" />
+
+
+ <gd name="q3" fmla="*/ rO rO 1" />
+
+ <gd name="q4" fmla="*/ dO dO 1" />
+
+ <gd name="q5" fmla="*/ q3 q4 1" />
+
+ <gd name="q6" fmla="*/ DO DO 1" />
+
+ <gd name="q7" fmla="+- q5 0 q6" />
+
+ <gd name="q8" fmla="max q7 0" />
+
+ <gd name="sdelO" fmla="sqrt q8" />
+
+ <gd name="ndyO" fmla="*/ dyO -1 1" />
+ <gd name="sdyO" fmla="?: ndyO -1 1" />
+
+ <gd name="q9" fmla="*/ sdyO dxO 1" />
+
+ <gd name="q10" fmla="*/ q9 sdelO 1" />
+
+ <gd name="q11" fmla="*/ DO dyO 1" />
+
+ <gd name="dxF1" fmla="+/ q11 q10 q4" />
+
+ <gd name="q12" fmla="+- q11 0 q10" />
+ <gd name="dxF2" fmla="*/ q12 1 q4" />
+
+
+ <gd name="adyO" fmla="abs dyO" />
+ <gd name="q13" fmla="*/ adyO sdelO 1" />
+
+ <gd name="q14" fmla="*/ DO dxO -1" />
+
+ <gd name="dyF1" fmla="+/ q14 q13 q4" />
+
+ <gd name="q15" fmla="+- q14 0 q13" />
+ <gd name="dyF2" fmla="*/ q15 1 q4" />
+
+
+
+ <gd name="q16" fmla="+- x2O 0 dxF1" />
+ <gd name="q17" fmla="+- x2O 0 dxF2" />
+ <gd name="q18" fmla="+- y2O 0 dyF1" />
+ <gd name="q19" fmla="+- y2O 0 dyF2" />
+ <gd name="q20" fmla="mod q16 q18 0" />
+
+ <gd name="q21" fmla="mod q17 q19 0" />
+
+ <gd name="q22" fmla="+- q21 0 q20" />
+ <gd name="dxF" fmla="?: q22 dxF1 dxF2" />
+
+ <gd name="dyF" fmla="?: q22 dyF1 dyF2" />
+
+ <gd name="sdxF" fmla="*/ dxF rw1 rO" />
+
+ <gd name="sdyF" fmla="*/ dyF rh1 rO" />
+
+ <gd name="xF" fmla="+- hc sdxF 0" />
+
+ <gd name="yF" fmla="+- vc sdyF 0" />
+
+
+
+
+ <gd name="x1I" fmla="*/ sx1 rI rw2" />
+
+ <gd name="y1I" fmla="*/ sy1 rI rh2" />
+
+ <gd name="x2I" fmla="*/ sx2 rI rw2" />
+
+ <gd name="y2I" fmla="*/ sy2 rI rh2" />
+
+
+ <gd name="dxI" fmla="+- x2I 0 x1I" />
+ <gd name="dyI" fmla="+- y2I 0 y1I" />
+ <gd name="dI" fmla="mod dxI dyI 0" />
+ <gd name="v1" fmla="*/ x1I y2I 1" />
+ <gd name="v2" fmla="*/ x2I y1I 1" />
+ <gd name="DI" fmla="+- v1 0 v2" />
+
+ <gd name="v3" fmla="*/ rI rI 1" />
+ <gd name="v4" fmla="*/ dI dI 1" />
+ <gd name="v5" fmla="*/ v3 v4 1" />
+ <gd name="v6" fmla="*/ DI DI 1" />
+ <gd name="v7" fmla="+- v5 0 v6" />
+ <gd name="v8" fmla="max v7 0" />
+ <gd name="sdelI" fmla="sqrt v8" />
+ <gd name="v9" fmla="*/ sdyO dxI 1" />
+ <gd name="v10" fmla="*/ v9 sdelI 1" />
+ <gd name="v11" fmla="*/ DI dyI 1" />
+ <gd name="dxC1" fmla="+/ v11 v10 v4" />
+ <gd name="v12" fmla="+- v11 0 v10" />
+ <gd name="dxC2" fmla="*/ v12 1 v4" />
+
+ <gd name="adyI" fmla="abs dyI" />
+ <gd name="v13" fmla="*/ adyI sdelI 1" />
+ <gd name="v14" fmla="*/ DI dxI -1" />
+ <gd name="dyC1" fmla="+/ v14 v13 v4" />
+ <gd name="v15" fmla="+- v14 0 v13" />
+ <gd name="dyC2" fmla="*/ v15 1 v4" />
+
+ <gd name="v16" fmla="+- x1I 0 dxC1" />
+ <gd name="v17" fmla="+- x1I 0 dxC2" />
+ <gd name="v18" fmla="+- y1I 0 dyC1" />
+ <gd name="v19" fmla="+- y1I 0 dyC2" />
+ <gd name="v20" fmla="mod v16 v18 0" />
+ <gd name="v21" fmla="mod v17 v19 0" />
+ <gd name="v22" fmla="+- v21 0 v20" />
+ <gd name="dxC" fmla="?: v22 dxC1 dxC2" />
+ <gd name="dyC" fmla="?: v22 dyC1 dyC2" />
+ <gd name="sdxC" fmla="*/ dxC rw2 rI" />
+ <gd name="sdyC" fmla="*/ dyC rh2 rI" />
+ <gd name="xC" fmla="+- hc sdxC 0" />
+
+ <gd name="yC" fmla="+- vc sdyC 0" />
+
+
+ <gd name="ist0" fmla="at2 sdxC sdyC" />
+ <gd name="ist1" fmla="+- ist0 21600000 0" />
+ <gd name="istAng" fmla="?: ist0 ist0 ist1" />
+ <gd name="isw1" fmla="+- stAng 0 istAng" />
+ <gd name="isw2" fmla="+- isw1 0 21600000" />
+ <gd name="iswAng" fmla="?: isw1 isw2 isw1" />
+
+
+ <gd name="p1" fmla="+- xF 0 xC" />
+ <gd name="p2" fmla="+- yF 0 yC" />
+ <gd name="p3" fmla="mod p1 p2 0" />
+ <gd name="p4" fmla="*/ p3 1 2" />
+ <gd name="p5" fmla="+- p4 0 thh" />
+ <gd name="xGp" fmla="?: p5 xF xG" />
+ <gd name="yGp" fmla="?: p5 yF yG" />
+ <gd name="xBp" fmla="?: p5 xC xB" />
+ <gd name="yBp" fmla="?: p5 yC yB" />
+
+ <gd name="en0" fmla="at2 sdxF sdyF" />
+ <gd name="en1" fmla="+- en0 21600000 0" />
+ <gd name="en2" fmla="?: en0 en0 en1" />
+ <gd name="sw0" fmla="+- en2 0 stAng" />
+ <gd name="sw1" fmla="+- sw0 21600000 0" />
+ <gd name="swAng" fmla="?: sw0 sw0 sw1" />
+
+ <gd name="wtI" fmla="sin rw3 stAng" />
+ <gd name="htI" fmla="cos rh3 stAng" />
+ <gd name="dxI" fmla="cat2 rw3 htI wtI" />
+ <gd name="dyI" fmla="sat2 rh3 htI wtI" />
+ <gd name="xI" fmla="+- hc dxI 0" />
+
+ <gd name="yI" fmla="+- vc dyI 0" />
+
+
+ <gd name="aI" fmla="+- stAng 0 cd4" />
+ <gd name="aA" fmla="+- ptAng cd4 0" />
+ <gd name="aB" fmla="+- ptAng cd2 0" />
+
+ <gd name="idx" fmla="cos rw1 2700000" />
+ <gd name="idy" fmla="sin rh1 2700000" />
+ <gd name="il" fmla="+- hc 0 idx" />
+ <gd name="ir" fmla="+- hc idx 0" />
+ <gd name="it" fmla="+- vc 0 idy" />
+ <gd name="ib" fmla="+- vc idy 0" />
+ </gdLst>
+
+ <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <ahPolar gdRefAng="adj2" minAng="0" maxAng="maxAng">
+ <pos x="xA" y="yA" />
+ </ahPolar>
+ <ahPolar gdRefAng="adj4" minAng="0" maxAng="21599999">
+ <pos x="xE" y="yE" />
+ </ahPolar>
+ <ahPolar gdRefR="adj1" minR="0" maxR="maxAdj1" gdRefAng="adj3" minAng="0" maxAng="21599999">
+ <pos x="xF" y="yF" />
+ </ahPolar>
+ <ahPolar gdRefR="adj5" minR="0" maxR="25000">
+ <pos x="xB" y="yB" />
+ </ahPolar>
+ </ahLst>
+
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="aI">
+ <pos x="xI" y="yI" />
+ </cxn>
+ <cxn ang="ptAng">
+ <pos x="xGp" y="yGp" />
+ </cxn>
+ <cxn ang="aA">
+ <pos x="xA" y="yA" />
+ </cxn>
+ <cxn ang="aB">
+ <pos x="xBp" y="yBp" />
+ </cxn>
+ </cxnLst>
+
+ <rect l="il" t="it" r="ir" b="ib" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path>
+ <moveTo>
+ <pt x="xE" y="yE" />
+ </moveTo>
+ <arcTo wR="rw1" hR="rh1" stAng="stAng" swAng="swAng" />
+ <lnTo>
+ <pt x="xGp" y="yGp" />
+ </lnTo>
+ <lnTo>
+ <pt x="xA" y="yA" />
+ </lnTo>
+ <lnTo>
+ <pt x="xBp" y="yBp" />
+ </lnTo>
+ <lnTo>
+ <pt x="xC" y="yC" />
+ </lnTo>
+ <arcTo wR="rw2" hR="rh2" stAng="istAng" swAng="iswAng" />
+ <close />
+ </path>
+ </pathLst>
+
+ </circularArrow>
+ <cloud>
+
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="il" fmla="*/ w 2977 21600" />
+ <gd name="it" fmla="*/ h 3262 21600" />
+ <gd name="ir" fmla="*/ w 17087 21600" />
+ <gd name="ib" fmla="*/ h 17337 21600" />
+ <gd name="g27" fmla="*/ w 67 21600" />
+ <gd name="g28" fmla="*/ h 21577 21600" />
+ <gd name="g29" fmla="*/ w 21582 21600" />
+ <gd name="g30" fmla="*/ h 1235 21600" />
+ </gdLst>
+
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="0">
+ <pos x="g29" y="vc" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="hc" y="g28" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="g27" y="vc" />
+ </cxn>
+ <cxn ang="3cd4">
+ <pos x="hc" y="g30" />
+ </cxn>
+ </cxnLst>
+
+ <rect l="il" t="it" r="ir" b="ib" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path w="43200" h="43200">
+ <moveTo>
+ <pt x="3900" y="14370" />
+ </moveTo>
+ <arcTo wR="6753" hR="9190" stAng="-11429249" swAng="7426832" />
+ <arcTo wR="5333" hR="7267" stAng="-8646143" swAng="5396714" />
+ <arcTo wR="4365" hR="5945" stAng="-8748475" swAng="5983381" />
+ <arcTo wR="4857" hR="6595" stAng="-7859164" swAng="7034504" />
+ <arcTo wR="5333" hR="7273" stAng="-4722533" swAng="6541615" />
+ <arcTo wR="6775" hR="9220" stAng="-2776035" swAng="7816140" />
+ <arcTo wR="5785" hR="7867" stAng="37501" swAng="6842000" />
+ <arcTo wR="6752" hR="9215" stAng="1347096" swAng="6910353" />
+ <arcTo wR="7720" hR="10543" stAng="3974558" swAng="4542661" />
+ <arcTo wR="4360" hR="5918" stAng="-16496525" swAng="8804134" />
+ <arcTo wR="4345" hR="5945" stAng="-14809710" swAng="9151131" />
+ <close />
+ </path>
+ <path w="43200" h="43200" fill="none" extrusionOk="false">
+ <moveTo>
+ <pt x="4693" y="26177" />
+ </moveTo>
+ <arcTo wR="4345" hR="5945" stAng="5204520" swAng="1585770" />
+ <moveTo>
+ <pt x="6928" y="34899" />
+ </moveTo>
+ <arcTo wR="4360" hR="5918" stAng="4416628" swAng="686848" />
+ <moveTo>
+ <pt x="16478" y="39090" />
+ </moveTo>
+ <arcTo wR="6752" hR="9215" stAng="8257449" swAng="844866" />
+ <moveTo>
+ <pt x="28827" y="34751" />
+ </moveTo>
+ <arcTo wR="6752" hR="9215" stAng="387196" swAng="959901" />
+ <moveTo>
+ <pt x="34129" y="22954" />
+ </moveTo>
+ <arcTo wR="5785" hR="7867" stAng="-4217541" swAng="4255042" />
+ <moveTo>
+ <pt x="41798" y="15354" />
+ </moveTo>
+ <arcTo wR="5333" hR="7273" stAng="1819082" swAng="1665090" />
+ <moveTo>
+ <pt x="38324" y="5426" />
+ </moveTo>
+ <arcTo wR="4857" hR="6595" stAng="-824660" swAng="891534" />
+ <moveTo>
+ <pt x="29078" y="3952" />
+ </moveTo>
+ <arcTo wR="4857" hR="6595" stAng="-8950887" swAng="1091722" />
+ <moveTo>
+ <pt x="22141" y="4720" />
+ </moveTo>
+ <arcTo wR="4365" hR="5945" stAng="-9809656" swAng="1061181" />
+ <moveTo>
+ <pt x="14000" y="5192" />
+ </moveTo>
+ <arcTo wR="6753" hR="9190" stAng="-4002417" swAng="739161" />
+ <moveTo>
+ <pt x="4127" y="15789" />
+ </moveTo>
+ <arcTo wR="6753" hR="9190" stAng="9459261" swAng="711490" />
+ </path>
+ </pathLst>
+
+ </cloud>
+ <cloudCallout>
+
+ <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="adj1" fmla="val -20833" />
+
+ <gd name="adj2" fmla="val 62500" />
+
+ </avLst>
+
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="dxPos" fmla="*/ w adj1 100000" />
+ <gd name="dyPos" fmla="*/ h adj2 100000" />
+ <gd name="xPos" fmla="+- hc dxPos 0" />
+ <gd name="yPos" fmla="+- vc dyPos 0" />
+ <gd name="ht" fmla="cat2 hd2 dxPos dyPos" />
+ <gd name="wt" fmla="sat2 wd2 dxPos dyPos" />
+ <gd name="g2" fmla="cat2 wd2 ht wt" />
+ <gd name="g3" fmla="sat2 hd2 ht wt" />
+ <gd name="g4" fmla="+- hc g2 0" />
+
+ <gd name="g5" fmla="+- vc g3 0" />
+
+ <gd name="g6" fmla="+- g4 0 xPos" />
+
+ <gd name="g7" fmla="+- g5 0 yPos" />
+
+ <gd name="g8" fmla="mod g6 g7 0" />
+
+ <gd name="g9" fmla="*/ ss 6600 21600" />
+
+ <gd name="g10" fmla="+- g8 0 g9" />
+
+ <gd name="g11" fmla="*/ g10 1 3" />
+
+ <gd name="g12" fmla="*/ ss 1800 21600" />
+
+ <gd name="g13" fmla="+- g11 g12 0" />
+
+ <gd name="g14" fmla="*/ g13 g6 g8" />
+
+ <gd name="g15" fmla="*/ g13 g7 g8" />
+
+ <gd name="g16" fmla="+- g14 xPos 0" />
+
+ <gd name="g17" fmla="+- g15 yPos 0" />
+
+ <gd name="g18" fmla="*/ ss 4800 21600" />
+
+ <gd name="g19" fmla="*/ g11 2 1" />
+
+ <gd name="g20" fmla="+- g18 g19 0" />
+
+ <gd name="g21" fmla="*/ g20 g6 g8" />
+ <gd name="g22" fmla="*/ g20 g7 g8" />
+ <gd name="g23" fmla="+- g21 xPos 0" />
+ <gd name="g24" fmla="+- g22 yPos 0" />
+ <gd name="g25" fmla="*/ ss 1200 21600" />
+ <gd name="g26" fmla="*/ ss 600 21600" />
+
+ <gd name="x23" fmla="+- xPos g26 0" />
+ <gd name="x24" fmla="+- g16 g25 0" />
+ <gd name="x25" fmla="+- g23 g12 0" />
+ <gd name="il" fmla="*/ w 2977 21600" />
+ <gd name="it" fmla="*/ h 3262 21600" />
+ <gd name="ir" fmla="*/ w 17087 21600" />
+ <gd name="ib" fmla="*/ h 17337 21600" />
+
+ <gd name="g27" fmla="*/ w 67 21600" />
+ <gd name="g28" fmla="*/ h 21577 21600" />
+ <gd name="g29" fmla="*/ w 21582 21600" />
+ <gd name="g30" fmla="*/ h 1235 21600" />
+ <gd name="pang" fmla="at2 dxPos dyPos" />
+ </gdLst>
+
+ <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <ahXY gdRefX="adj1" minX="-2147483647" maxX="2147483647" gdRefY="adj2" minY="-2147483647" maxY="2147483647">
+ <pos x="xPos" y="yPos" />
+ </ahXY>
+ </ahLst>
+
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="cd2">
+ <pos x="g27" y="vc" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="hc" y="g28" />
+ </cxn>
+ <cxn ang="0">
+ <pos x="g29" y="vc" />
+ </cxn>
+ <cxn ang="3cd4">
+ <pos x="hc" y="g30" />
+ </cxn>
+ <cxn ang="pang">
+ <pos x="xPos" y="yPos" />
+ </cxn>
+ </cxnLst>
+
+ <rect l="il" t="it" r="ir" b="ib" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path w="43200" h="43200">
+ <moveTo>
+ <pt x="3900" y="14370" />
+ </moveTo>
+ <arcTo wR="6753" hR="9190" stAng="-11429249" swAng="7426832" />
+ <arcTo wR="5333" hR="7267" stAng="-8646143" swAng="5396714" />
+ <arcTo wR="4365" hR="5945" stAng="-8748475" swAng="5983381" />
+ <arcTo wR="4857" hR="6595" stAng="-7859164" swAng="7034504" />
+ <arcTo wR="5333" hR="7273" stAng="-4722533" swAng="6541615" />
+ <arcTo wR="6775" hR="9220" stAng="-2776035" swAng="7816140" />
+ <arcTo wR="5785" hR="7867" stAng="37501" swAng="6842000" />
+ <arcTo wR="6752" hR="9215" stAng="1347096" swAng="6910353" />
+ <arcTo wR="7720" hR="10543" stAng="3974558" swAng="4542661" />
+ <arcTo wR="4360" hR="5918" stAng="-16496525" swAng="8804134" />
+ <arcTo wR="4345" hR="5945" stAng="-14809710" swAng="9151131" />
+ <close />
+ </path>
+ <path>
+ <moveTo>
+ <pt x="x23" y="yPos" />
+ </moveTo>
+ <arcTo wR="g26" hR="g26" stAng="0" swAng="21600000" />
+ <close />
+ </path>
+ <path>
+ <moveTo>
+ <pt x="x24" y="g17" />
+ </moveTo>
+ <arcTo wR="g25" hR="g25" stAng="0" swAng="21600000" />
+ <close />
+ </path>
+ <path>
+ <moveTo>
+ <pt x="x25" y="g24" />
+ </moveTo>
+ <arcTo wR="g12" hR="g12" stAng="0" swAng="21600000" />
+ <close />
+ </path>
+ <path w="43200" h="43200" fill="none" extrusionOk="false">
+ <moveTo>
+ <pt x="4693" y="26177" />
+ </moveTo>
+ <arcTo wR="4345" hR="5945" stAng="5204520" swAng="1585770" />
+ <moveTo>
+ <pt x="6928" y="34899" />
+ </moveTo>
+ <arcTo wR="4360" hR="5918" stAng="4416628" swAng="686848" />
+ <moveTo>
+ <pt x="16478" y="39090" />
+ </moveTo>
+ <arcTo wR="6752" hR="9215" stAng="8257449" swAng="844866" />
+ <moveTo>
+ <pt x="28827" y="34751" />
+ </moveTo>
+ <arcTo wR="6752" hR="9215" stAng="387196" swAng="959901" />
+ <moveTo>
+ <pt x="34129" y="22954" />
+ </moveTo>
+ <arcTo wR="5785" hR="7867" stAng="-4217541" swAng="4255042" />
+ <moveTo>
+ <pt x="41798" y="15354" />
+ </moveTo>
+ <arcTo wR="5333" hR="7273" stAng="1819082" swAng="1665090" />
+ <moveTo>
+ <pt x="38324" y="5426" />
+ </moveTo>
+ <arcTo wR="4857" hR="6595" stAng="-824660" swAng="891534" />
+ <moveTo>
+ <pt x="29078" y="3952" />
+ </moveTo>
+ <arcTo wR="4857" hR="6595" stAng="-8950887" swAng="1091722" />
+ <moveTo>
+ <pt x="22141" y="4720" />
+ </moveTo>
+ <arcTo wR="4365" hR="5945" stAng="-9809656" swAng="1061181" />
+ <moveTo>
+ <pt x="14000" y="5192" />
+ </moveTo>
+ <arcTo wR="6753" hR="9190" stAng="-4002417" swAng="739161" />
+ <moveTo>
+ <pt x="4127" y="15789" />
+ </moveTo>
+ <arcTo wR="6753" hR="9190" stAng="9459261" swAng="711490" />
+ </path>
+ </pathLst>
+
+ </cloudCallout>
+ <corner>
+
+ <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="adj1" fmla="val 50000" />
+
+ <gd name="adj2" fmla="val 50000" />
+
+ </avLst>
+
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="maxAdj1" fmla="*/ 100000 h ss" />
+ <gd name="maxAdj2" fmla="*/ 100000 w ss" />
+ <gd name="a1" fmla="pin 0 adj1 maxAdj1" />
+ <gd name="a2" fmla="pin 0 adj2 maxAdj2" />
+ <gd name="x1" fmla="*/ ss a2 100000" />
+ <gd name="dy1" fmla="*/ ss a1 100000" />
+ <gd name="y1" fmla="+- b 0 dy1" />
+ <gd name="cx1" fmla="*/ x1 1 2" />
+ <gd name="cy1" fmla="+/ y1 b 2" />
+ <gd name="d" fmla="+- w 0 h" />
+ <gd name="it" fmla="?: d y1 t" />
+ <gd name="ir" fmla="?: d r x1" />
+ </gdLst>
+
+ <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <ahXY gdRefY="adj1" minY="0" maxY="maxAdj1">
+ <pos x="l" y="y1" />
+ </ahXY>
+ <ahXY gdRefX="adj2" minX="0" maxX="maxAdj2">
+ <pos x="x1" y="t" />
+ </ahXY>
+ </ahLst>
+
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="0">
+ <pos x="r" y="cy1" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="hc" y="b" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="l" y="vc" />
+ </cxn>
+ <cxn ang="3cd4">
+ <pos x="cx1" y="t" />
+ </cxn>
+ </cxnLst>
+
+ <rect l="l" t="it" r="ir" b="b" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path>
+ <moveTo>
+ <pt x="l" y="t" />
+ </moveTo>
+ <lnTo>
+ <pt x="x1" y="t" />
+ </lnTo>
+ <lnTo>
+ <pt x="x1" y="y1" />
+ </lnTo>
+ <lnTo>
+ <pt x="r" y="y1" />
+ </lnTo>
+ <lnTo>
+ <pt x="r" y="b" />
+ </lnTo>
+ <lnTo>
+ <pt x="l" y="b" />
+ </lnTo>
+ <close />
+ </path>
+ </pathLst>
+
+ </corner>
+ <cornerTabs>
+
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="md" fmla="mod w h 0" />
+ <gd name="dx" fmla="*/ 1 md 20" />
+
+ <gd name="y1" fmla="+- 0 b dx" />
+
+ <gd name="x1" fmla="+- 0 r dx" />
+
+ </gdLst>
+
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="cd2">
+ <pos x="l" y="t" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="l" y="dx" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="l" y="y1" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="l" y="b" />
+ </cxn>
+ <cxn ang="3cd4">
+ <pos x="dx" y="t" />
+ </cxn>
+ <cxn ang="3cd4">
+ <pos x="x1" y="t" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="dx" y="b" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="x1" y="b" />
+ </cxn>
+ <cxn ang="0">
+ <pos x="r" y="t" />
+ </cxn>
+ <cxn ang="0">
+ <pos x="r" y="dx" />
+ </cxn>
+ <cxn ang="0">
+ <pos x="r" y="y1" />
+ </cxn>
+ <cxn ang="0">
+ <pos x="r" y="b" />
+ </cxn>
+ </cxnLst>
+
+ <rect l="dx" t="dx" r="x1" b="y1" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path>
+ <moveTo>
+ <pt x="l" y="t" />
+ </moveTo>
+ <lnTo>
+ <pt x="dx" y="t" />
+ </lnTo>
+ <lnTo>
+ <pt x="l" y="dx" />
+ </lnTo>
+ <close />
+ </path>
+ <path>
+ <moveTo>
+ <pt x="l" y="y1" />
+ </moveTo>
+ <lnTo>
+ <pt x="dx" y="b" />
+ </lnTo>
+ <lnTo>
+ <pt x="l" y="b" />
+ </lnTo>
+ <close />
+ </path>
+ <path>
+ <moveTo>
+ <pt x="x1" y="t" />
+ </moveTo>
+ <lnTo>
+ <pt x="r" y="t" />
+ </lnTo>
+ <lnTo>
+ <pt x="r" y="dx" />
+ </lnTo>
+ <close />
+ </path>
+ <path>
+ <moveTo>
+ <pt x="r" y="y1" />
+ </moveTo>
+ <lnTo>
+ <pt x="r" y="b" />
+ </lnTo>
+ <lnTo>
+ <pt x="x1" y="b" />
+ </lnTo>
+ <close />
+ </path>
+ </pathLst>
+
+ </cornerTabs>
+ <cube>
+ <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="adj" fmla="val 25000" />
+ </avLst>
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="a" fmla="pin 0 adj 100000" />
+ <gd name="y1" fmla="*/ ss a 100000" />
+ <gd name="y4" fmla="+- b 0 y1" />
+ <gd name="y2" fmla="*/ y4 1 2" />
+ <gd name="y3" fmla="+/ y1 b 2" />
+ <gd name="x4" fmla="+- r 0 y1" />
+ <gd name="x2" fmla="*/ x4 1 2" />
+ <gd name="x3" fmla="+/ y1 r 2" />
+ </gdLst>
+ <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <ahXY gdRefY="adj" minY="0" maxY="100000">
+ <pos x="l" y="y1" />
+ </ahXY>
+ </ahLst>
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="3cd4">
+ <pos x="x3" y="t" />
+ </cxn>
+ <cxn ang="3cd4">
+ <pos x="x2" y="y1" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="l" y="y3" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="x2" y="b" />
+ </cxn>
+ <cxn ang="0">
+ <pos x="x4" y="y3" />
+ </cxn>
+ <cxn ang="0">
+ <pos x="r" y="y2" />
+ </cxn>
+ </cxnLst>
+ <rect l="l" t="y1" r="x4" b="b" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path stroke="false" extrusionOk="false">
+ <moveTo>
+ <pt x="l" y="y1" />
+ </moveTo>
+ <lnTo>
+ <pt x="x4" y="y1" />
+ </lnTo>
+ <lnTo>
+ <pt x="x4" y="b" />
+ </lnTo>
+ <lnTo>
+ <pt x="l" y="b" />
+ </lnTo>
+ <close />
+ </path>
+ <path stroke="false" fill="darkenLess" extrusionOk="false">
+ <moveTo>
+ <pt x="x4" y="y1" />
+ </moveTo>
+ <lnTo>
+ <pt x="r" y="t" />
+ </lnTo>
+ <lnTo>
+ <pt x="r" y="y4" />
+ </lnTo>
+ <lnTo>
+ <pt x="x4" y="b" />
+ </lnTo>
+ <close />
+ </path>
+ <path stroke="false" fill="lightenLess" extrusionOk="false">
+ <moveTo>
+ <pt x="l" y="y1" />
+ </moveTo>
+ <lnTo>
+ <pt x="y1" y="t" />
+ </lnTo>
+ <lnTo>
+ <pt x="r" y="t" />
+ </lnTo>
+ <lnTo>
+ <pt x="x4" y="y1" />
+ </lnTo>
+ <close />
+ </path>
+ <path fill="none" extrusionOk="false">
+ <moveTo>
+ <pt x="l" y="y1" />
+ </moveTo>
+ <lnTo>
+ <pt x="y1" y="t" />
+ </lnTo>
+ <lnTo>
+ <pt x="r" y="t" />
+ </lnTo>
+ <lnTo>
+ <pt x="r" y="y4" />
+ </lnTo>
+ <lnTo>
+ <pt x="x4" y="b" />
+ </lnTo>
+ <lnTo>
+ <pt x="l" y="b" />
+ </lnTo>
+ <close />
+ <moveTo>
+ <pt x="l" y="y1" />
+ </moveTo>
+ <lnTo>
+ <pt x="x4" y="y1" />
+ </lnTo>
+ <lnTo>
+ <pt x="r" y="t" />
+ </lnTo>
+ <moveTo>
+ <pt x="x4" y="y1" />
+ </moveTo>
+ <lnTo>
+ <pt x="x4" y="b" />
+ </lnTo>
+ </path>
+ </pathLst>
+ </cube>
+ <curvedConnector2>
+ <rect l="l" t="t" r="r" b="b" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path fill="none">
+ <moveTo>
+ <pt x="l" y="t" />
+ </moveTo>
+ <cubicBezTo>
+ <pt x="wd2" y="t" />
+ <pt x="r" y="hd2" />
+ <pt x="r" y="b" />
+ </cubicBezTo>
+ </path>
+ </pathLst>
+ </curvedConnector2>
+ <curvedConnector3>
+ <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="adj1" fmla="val 50000" />
+ </avLst>
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="x2" fmla="*/ w adj1 100000" />
+ <gd name="x1" fmla="+/ l x2 2" />
+ <gd name="x3" fmla="+/ r x2 2" />
+ <gd name="y3" fmla="*/ h 3 4" />
+ </gdLst>
+ <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <ahXY gdRefX="adj1" minX="-2147483647" maxX="2147483647">
+ <pos x="x2" y="vc" />
+ </ahXY>
+ </ahLst>
+ <rect l="l" t="t" r="r" b="b" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path fill="none">
+ <moveTo>
+ <pt x="l" y="t" />
+ </moveTo>
+ <cubicBezTo>
+ <pt x="x1" y="t" />
+ <pt x="x2" y="hd4" />
+ <pt x="x2" y="vc" />
+ </cubicBezTo>
+ <cubicBezTo>
+ <pt x="x2" y="y3" />
+ <pt x="x3" y="b" />
+ <pt x="r" y="b" />
+ </cubicBezTo>
+ </path>
+ </pathLst>
+ </curvedConnector3>
+ <curvedConnector4>
+ <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="adj1" fmla="val 50000" />
+ <gd name="adj2" fmla="val 50000" />
+ </avLst>
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="x2" fmla="*/ w adj1 100000" />
+ <gd name="x1" fmla="+/ l x2 2" />
+ <gd name="x3" fmla="+/ r x2 2" />
+ <gd name="x4" fmla="+/ x2 x3 2" />
+ <gd name="x5" fmla="+/ x3 r 2" />
+ <gd name="y4" fmla="*/ h adj2 100000" />
+ <gd name="y1" fmla="+/ t y4 2" />
+ <gd name="y2" fmla="+/ t y1 2" />
+ <gd name="y3" fmla="+/ y1 y4 2" />
+ <gd name="y5" fmla="+/ b y4 2" />
+ </gdLst>
+ <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <ahXY gdRefX="adj1" minX="-2147483647" maxX="2147483647">
+ <pos x="x2" y="y1" />
+ </ahXY>
+ <ahXY gdRefY="adj2" minY="-2147483647" maxY="2147483647">
+ <pos x="x3" y="y4" />
+ </ahXY>
+ </ahLst>
+ <rect l="l" t="t" r="r" b="b" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path fill="none">
+ <moveTo>
+ <pt x="l" y="t" />
+ </moveTo>
+ <cubicBezTo>
+ <pt x="x1" y="t" />
+ <pt x="x2" y="y2" />
+ <pt x="x2" y="y1" />
+ </cubicBezTo>
+ <cubicBezTo>
+ <pt x="x2" y="y3" />
+ <pt x="x4" y="y4" />
+ <pt x="x3" y="y4" />
+ </cubicBezTo>
+ <cubicBezTo>
+ <pt x="x5" y="y4" />
+ <pt x="r" y="y5" />
+ <pt x="r" y="b" />
+ </cubicBezTo>
+ </path>
+ </pathLst>
+ </curvedConnector4>
+ <curvedConnector5>
+
+ <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="adj1" fmla="val 50000" />
+
+ <gd name="adj2" fmla="val 50000" />
+
+ <gd name="adj3" fmla="val 50000" />
+
+ </avLst>
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="x3" fmla="*/ w adj1 100000" />
+ <gd name="x6" fmla="*/ w adj3 100000" />
+ <gd name="x1" fmla="+/ x3 x6 2" />
+ <gd name="x2" fmla="+/ l x3 2" />
+ <gd name="x4" fmla="+/ x3 x1 2" />
+ <gd name="x5" fmla="+/ x6 x1 2" />
+ <gd name="x7" fmla="+/ x6 r 2" />
+ <gd name="y4" fmla="*/ h adj2 100000" />
+ <gd name="y1" fmla="+/ t y4 2" />
+ <gd name="y2" fmla="+/ t y1 2" />
+ <gd name="y3" fmla="+/ y1 y4 2" />
+ <gd name="y5" fmla="+/ b y4 2" />
+ <gd name="y6" fmla="+/ y5 y4 2" />
+ <gd name="y7" fmla="+/ y5 b 2" />
+ </gdLst>
+ <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <ahXY gdRefX="adj1" minX="-2147483647" maxX="2147483647">
+ <pos x="x3" y="y1" />
+ </ahXY>
+ <ahXY gdRefY="adj2" minY="-2147483647" maxY="2147483647">
+ <pos x="x1" y="y4" />
+ </ahXY>
+ <ahXY gdRefX="adj3" minX="-2147483647" maxX="2147483647">
+ <pos x="x6" y="y5" />
+ </ahXY>
+ </ahLst>
+ <rect l="l" t="t" r="r" b="b" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path fill="none">
+ <moveTo>
+ <pt x="l" y="t" />
+ </moveTo>
+ <cubicBezTo>
+ <pt x="x2" y="t" />
+ <pt x="x3" y="y2" />
+ <pt x="x3" y="y1" />
+ </cubicBezTo>
+ <cubicBezTo>
+ <pt x="x3" y="y3" />
+ <pt x="x4" y="y4" />
+ <pt x="x1" y="y4" />
+ </cubicBezTo>
+ <cubicBezTo>
+ <pt x="x5" y="y4" />
+ <pt x="x6" y="y6" />
+ <pt x="x6" y="y5" />
+ </cubicBezTo>
+ <cubicBezTo>
+ <pt x="x6" y="y7" />
+ <pt x="x7" y="b" />
+ <pt x="r" y="b" />
+ </cubicBezTo>
+ </path>
+ </pathLst>
+
+ </curvedConnector5>
+ <curvedDownArrow>
+
+ <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="adj1" fmla="val 25000" />
+
+ <gd name="adj2" fmla="val 50000" />
+
+ <gd name="adj3" fmla="val 25000" />
+
+ </avLst>
+
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="maxAdj2" fmla="*/ 50000 w ss" />
+
+ <gd name="a2" fmla="pin 0 adj2 maxAdj2" />
+ <gd name="a1" fmla="pin 0 adj1 100000" />
+ <gd name="th" fmla="*/ ss a1 100000" />
+
+ <gd name="aw" fmla="*/ ss a2 100000" />
+
+ <gd name="q1" fmla="+/ th aw 4" />
+
+ <gd name="wR" fmla="+- wd2 0 q1" />
+
+ <gd name="q7" fmla="*/ wR 2 1" />
+
+ <gd name="q8" fmla="*/ q7 q7 1" />
+
+ <gd name="q9" fmla="*/ th th 1" />
+
+ <gd name="q10" fmla="+- q8 0 q9" />
+ <gd name="q11" fmla="sqrt q10" />
+ <gd name="idy" fmla="*/ q11 h q7" />
+ <gd name="maxAdj3" fmla="*/ 100000 idy ss" />
+
+ <gd name="a3" fmla="pin 0 adj3 maxAdj3" />
+ <gd name="ah" fmla="*/ ss adj3 100000" />
+
+
+
+
+
+ <gd name="x3" fmla="+- wR th 0" />
+
+ <gd name="q2" fmla="*/ h h 1" />
+ <gd name="q3" fmla="*/ ah ah 1" />
+ <gd name="q4" fmla="+- q2 0 q3" />
+ <gd name="q5" fmla="sqrt q4" />
+ <gd name="dx" fmla="*/ q5 wR h" />
+ <gd name="x5" fmla="+- wR dx 0" />
+
+ <gd name="x7" fmla="+- x3 dx 0" />
+
+ <gd name="q6" fmla="+- aw 0 th" />
+ <gd name="dh" fmla="*/ q6 1 2" />
+
+ <gd name="x4" fmla="+- x5 0 dh" />
+
+ <gd name="x8" fmla="+- x7 dh 0" />
+
+ <gd name="aw2" fmla="*/ aw 1 2" />
+ <gd name="x6" fmla="+- r 0 aw2" />
+
+ <gd name="y1" fmla="+- b 0 ah" />
+ <gd name="swAng" fmla="at2 ah dx" />
+
+ <gd name="mswAng" fmla="+- 0 0 swAng" />
+ <gd name="iy" fmla="+- b 0 idy" />
+
+ <gd name="ix" fmla="+/ wR x3 2" />
+
+ <gd name="q12" fmla="*/ th 1 2" />
+ <gd name="dang2" fmla="at2 idy q12" />
+ <gd name="stAng" fmla="+- 3cd4 swAng 0" />
+ <gd name="stAng2" fmla="+- 3cd4 0 dang2" />
+ <gd name="swAng2" fmla="+- dang2 0 cd4" />
+ <gd name="swAng3" fmla="+- cd4 dang2 0" />
+ </gdLst>
+
+ <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <ahXY gdRefX="adj1" minX="0" maxX="adj2">
+ <pos x="x7" y="y1" />
+ </ahXY>
+ <ahXY gdRefX="adj2" minX="0" maxX="maxAdj2">
+ <pos x="x4" y="b" />
+ </ahXY>
+ <ahXY gdRefY="adj3" minY="0" maxY="maxAdj3">
+ <pos x="r" y="y1" />
+ </ahXY>
+ </ahLst>
+
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="3cd4">
+ <pos x="ix" y="t" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="q12" y="b" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="x4" y="y1" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="x6" y="b" />
+ </cxn>
+ <cxn ang="0">
+ <pos x="x8" y="y1" />
+ </cxn>
+ </cxnLst>
+
+
+ <rect l="l" t="t" r="r" b="b" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+
+ <path stroke="false" extrusionOk="false">
+ <moveTo>
+ <pt x="x6" y="b" />
+ </moveTo>
+ <lnTo>
+ <pt x="x4" y="y1" />
+ </lnTo>
+ <lnTo>
+ <pt x="x5" y="y1" />
+ </lnTo>
+ <arcTo wR="wR" hR="h" stAng="stAng" swAng="mswAng" />
+ <lnTo>
+ <pt x="x3" y="t" />
+ </lnTo>
+ <arcTo wR="wR" hR="h" stAng="3cd4" swAng="swAng" />
+ <lnTo>
+ <pt x="x8" y="y1" />
+ </lnTo>
+ <close />
+ </path>
+
+ <path fill="darkenLess" stroke="false" extrusionOk="false">
+ <moveTo>
+ <pt x="ix" y="iy" />
+ </moveTo>
+ <arcTo wR="wR" hR="h" stAng="stAng2" swAng="swAng2" />
+ <lnTo>
+ <pt x="l" y="b" />
+ </lnTo>
+ <arcTo wR="wR" hR="h" stAng="cd2" swAng="swAng3" />
+ <close />
+ </path>
+
+ <path fill="none" extrusionOk="false">
+ <moveTo>
+ <pt x="ix" y="iy" />
+ </moveTo>
+ <arcTo wR="wR" hR="h" stAng="stAng2" swAng="swAng2" />
+ <lnTo>
+ <pt x="l" y="b" />
+ </lnTo>
+ <arcTo wR="wR" hR="h" stAng="cd2" swAng="cd4" />
+ <lnTo>
+ <pt x="x3" y="t" />
+ </lnTo>
+ <arcTo wR="wR" hR="h" stAng="3cd4" swAng="swAng" />
+ <lnTo>
+ <pt x="x8" y="y1" />
+ </lnTo>
+ <lnTo>
+ <pt x="x6" y="b" />
+ </lnTo>
+ <lnTo>
+ <pt x="x4" y="y1" />
+ </lnTo>
+ <lnTo>
+ <pt x="x5" y="y1" />
+ </lnTo>
+ <arcTo wR="wR" hR="h" stAng="stAng" swAng="mswAng" />
+ </path>
+ </pathLst>
+
+ </curvedDownArrow>
+ <curvedLeftArrow>
+
+ <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="adj1" fmla="val 25000" />
+
+ <gd name="adj2" fmla="val 50000" />
+
+ <gd name="adj3" fmla="val 25000" />
+
+ </avLst>
+
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="maxAdj2" fmla="*/ 50000 h ss" />
+
+ <gd name="a2" fmla="pin 0 adj2 maxAdj2" />
+ <gd name="a1" fmla="pin 0 adj1 a2" />
+ <gd name="th" fmla="*/ ss a1 100000" />
+
+ <gd name="aw" fmla="*/ ss a2 100000" />
+
+ <gd name="q1" fmla="+/ th aw 4" />
+
+ <gd name="hR" fmla="+- hd2 0 q1" />
+
+ <gd name="q7" fmla="*/ hR 2 1" />
+
+ <gd name="q8" fmla="*/ q7 q7 1" />
+
+ <gd name="q9" fmla="*/ th th 1" />
+
+ <gd name="q10" fmla="+- q8 0 q9" />
+ <gd name="q11" fmla="sqrt q10" />
+ <gd name="idx" fmla="*/ q11 w q7" />
+ <gd name="maxAdj3" fmla="*/ 100000 idx ss" />
+
+ <gd name="a3" fmla="pin 0 adj3 maxAdj3" />
+ <gd name="ah" fmla="*/ ss a3 100000" />
+
+
+
+
+
+ <gd name="y3" fmla="+- hR th 0" />
+
+ <gd name="q2" fmla="*/ w w 1" />
+ <gd name="q3" fmla="*/ ah ah 1" />
+ <gd name="q4" fmla="+- q2 0 q3" />
+ <gd name="q5" fmla="sqrt q4" />
+ <gd name="dy" fmla="*/ q5 hR w" />
+ <gd name="y5" fmla="+- hR dy 0" />
+
+ <gd name="y7" fmla="+- y3 dy 0" />
+
+ <gd name="q6" fmla="+- aw 0 th" />
+ <gd name="dh" fmla="*/ q6 1 2" />
+
+ <gd name="y4" fmla="+- y5 0 dh" />
+
+ <gd name="y8" fmla="+- y7 dh 0" />
+
+ <gd name="aw2" fmla="*/ aw 1 2" />
+ <gd name="y6" fmla="+- b 0 aw2" />
+
+ <gd name="x1" fmla="+- l ah 0" />
+ <gd name="swAng" fmla="at2 ah dy" />
+
+ <gd name="mswAng" fmla="+- 0 0 swAng" />
+ <gd name="ix" fmla="+- l idx 0" />
+
+ <gd name="iy" fmla="+/ hR y3 2" />
+
+ <gd name="q12" fmla="*/ th 1 2" />
+ <gd name="dang2" fmla="at2 idx q12" />
+ <gd name="swAng2" fmla="+- dang2 0 swAng" />
+ <gd name="swAng3" fmla="+- swAng dang2 0" />
+ <gd name="stAng3" fmla="+- 0 0 dang2" />
+ </gdLst>
+
+ <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <ahXY gdRefY="adj1" minY="0" maxY="a2">
+ <pos x="x1" y="y5" />
+ </ahXY>
+ <ahXY gdRefY="adj2" minY="0" maxY="maxAdj2">
+ <pos x="r" y="y4" />
+ </ahXY>
+ <ahXY gdRefX="adj3" minX="0" maxX="maxAdj3">
+ <pos x="x1" y="b" />
+ </ahXY>
+ </ahLst>
+
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="cd2">
+ <pos x="l" y="q12" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="x1" y="y4" />
+ </cxn>
+ <cxn ang="cd3">
+ <pos x="l" y="y6" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="x1" y="y8" />
+ </cxn>
+ <cxn ang="0">
+ <pos x="r" y="iy" />
+ </cxn>
+ </cxnLst>
+
+
+ <rect l="l" t="t" r="r" b="b" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+
+
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+
+ <path stroke="false" extrusionOk="false">
+ <moveTo>
+ <pt x="l" y="y6" />
+ </moveTo>
+ <lnTo>
+ <pt x="x1" y="y4" />
+ </lnTo>
+ <lnTo>
+ <pt x="x1" y="y5" />
+ </lnTo>
+ <arcTo wR="w" hR="hR" stAng="swAng" swAng="swAng2" />
+ <arcTo wR="w" hR="hR" stAng="stAng3" swAng="swAng3" />
+ <lnTo>
+ <pt x="x1" y="y8" />
+ </lnTo>
+ <close />
+ </path>
+
+ <path fill="darkenLess" stroke="false" extrusionOk="false">
+ <moveTo>
+ <pt x="r" y="y3" />
+ </moveTo>
+ <arcTo wR="w" hR="hR" stAng="0" swAng="-5400000" />
+ <lnTo>
+ <pt x="l" y="t" />
+ </lnTo>
+ <arcTo wR="w" hR="hR" stAng="3cd4" swAng="cd4" />
+ <close />
+ </path>
+
+ <path fill="none" extrusionOk="false">
+ <moveTo>
+ <pt x="r" y="y3" />
+ </moveTo>
+ <arcTo wR="w" hR="hR" stAng="0" swAng="-5400000" />
+ <lnTo>
+ <pt x="l" y="t" />
+ </lnTo>
+ <arcTo wR="w" hR="hR" stAng="3cd4" swAng="cd4" />
+ <lnTo>
+ <pt x="r" y="y3" />
+ </lnTo>
+ <arcTo wR="w" hR="hR" stAng="0" swAng="swAng" />
+ <lnTo>
+ <pt x="x1" y="y8" />
+ </lnTo>
+ <lnTo>
+ <pt x="l" y="y6" />
+ </lnTo>
+ <lnTo>
+ <pt x="x1" y="y4" />
+ </lnTo>
+ <lnTo>
+ <pt x="x1" y="y5" />
+ </lnTo>
+ <arcTo wR="w" hR="hR" stAng="swAng" swAng="swAng2" />
+ </path>
+ </pathLst>
+
+ </curvedLeftArrow>
+ <curvedRightArrow>
+
+ <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="adj1" fmla="val 25000" />
+
+ <gd name="adj2" fmla="val 50000" />
+
+ <gd name="adj3" fmla="val 25000" />
+
+ </avLst>
+
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="maxAdj2" fmla="*/ 50000 h ss" />
+
+ <gd name="a2" fmla="pin 0 adj2 maxAdj2" />
+ <gd name="a1" fmla="pin 0 adj1 a2" />
+ <gd name="th" fmla="*/ ss a1 100000" />
+
+ <gd name="aw" fmla="*/ ss a2 100000" />
+
+ <gd name="q1" fmla="+/ th aw 4" />
+
+ <gd name="hR" fmla="+- hd2 0 q1" />
+
+ <gd name="q7" fmla="*/ hR 2 1" />
+
+ <gd name="q8" fmla="*/ q7 q7 1" />
+
+ <gd name="q9" fmla="*/ th th 1" />
+
+ <gd name="q10" fmla="+- q8 0 q9" />
+ <gd name="q11" fmla="sqrt q10" />
+ <gd name="idx" fmla="*/ q11 w q7" />
+ <gd name="maxAdj3" fmla="*/ 100000 idx ss" />
+
+ <gd name="a3" fmla="pin 0 adj3 maxAdj3" />
+ <gd name="ah" fmla="*/ ss a3 100000" />
+
+
+
+
+
+ <gd name="y3" fmla="+- hR th 0" />
+
+ <gd name="q2" fmla="*/ w w 1" />
+ <gd name="q3" fmla="*/ ah ah 1" />
+ <gd name="q4" fmla="+- q2 0 q3" />
+ <gd name="q5" fmla="sqrt q4" />
+ <gd name="dy" fmla="*/ q5 hR w" />
+ <gd name="y5" fmla="+- hR dy 0" />
+
+ <gd name="y7" fmla="+- y3 dy 0" />
+
+ <gd name="q6" fmla="+- aw 0 th" />
+ <gd name="dh" fmla="*/ q6 1 2" />
+
+ <gd name="y4" fmla="+- y5 0 dh" />
+
+ <gd name="y8" fmla="+- y7 dh 0" />
+
+ <gd name="aw2" fmla="*/ aw 1 2" />
+ <gd name="y6" fmla="+- b 0 aw2" />
+
+ <gd name="x1" fmla="+- r 0 ah" />
+ <gd name="swAng" fmla="at2 ah dy" />
+
+ <gd name="stAng" fmla="+- cd2 0 swAng" />
+ <gd name="mswAng" fmla="+- 0 0 swAng" />
+ <gd name="ix" fmla="+- r 0 idx" />
+
+ <gd name="iy" fmla="+/ hR y3 2" />
+
+ <gd name="q12" fmla="*/ th 1 2" />
+ <gd name="dang2" fmla="at2 idx q12" />
+ <gd name="swAng2" fmla="+- dang2 0 cd4" />
+ <gd name="swAng3" fmla="+- cd4 dang2 0" />
+ <gd name="stAng3" fmla="+- cd2 0 dang2" />
+ </gdLst>
+
+ <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <ahXY gdRefY="adj1" minY="0" maxY="a2">
+ <pos x="x1" y="y5" />
+ </ahXY>
+ <ahXY gdRefY="adj2" minY="0" maxY="maxAdj2">
+ <pos x="r" y="y4" />
+ </ahXY>
+ <ahXY gdRefX="adj3" minX="0" maxX="maxAdj3">
+ <pos x="x1" y="b" />
+ </ahXY>
+ </ahLst>
+
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="cd2">
+ <pos x="l" y="iy" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="x1" y="y8" />
+ </cxn>
+ <cxn ang="0">
+ <pos x="r" y="y6" />
+ </cxn>
+ <cxn ang="0">
+ <pos x="x1" y="y4" />
+ </cxn>
+ <cxn ang="0">
+ <pos x="r" y="q12" />
+ </cxn>
+ </cxnLst>
+
+
+ <rect l="l" t="t" r="r" b="b" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+
+
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+
+ <path stroke="false" extrusionOk="false">
+ <moveTo>
+ <pt x="l" y="hR" />
+ </moveTo>
+ <arcTo wR="w" hR="hR" stAng="cd2" swAng="mswAng" />
+ <lnTo>
+ <pt x="x1" y="y4" />
+ </lnTo>
+ <lnTo>
+ <pt x="r" y="y6" />
+ </lnTo>
+ <lnTo>
+ <pt x="x1" y="y8" />
+ </lnTo>
+ <lnTo>
+ <pt x="x1" y="y7" />
+ </lnTo>
+ <arcTo wR="w" hR="hR" stAng="stAng" swAng="swAng" />
+ <close />
+ </path>
+
+ <path fill="darkenLess" stroke="false" extrusionOk="false">
+ <moveTo>
+ <pt x="r" y="th" />
+ </moveTo>
+ <arcTo wR="w" hR="hR" stAng="3cd4" swAng="swAng2" />
+ <arcTo wR="w" hR="hR" stAng="stAng3" swAng="swAng3" />
+ <close />
+ </path>
+
+ <path fill="none" extrusionOk="false">
+ <moveTo>
+ <pt x="l" y="hR" />
+ </moveTo>
+ <arcTo wR="w" hR="hR" stAng="cd2" swAng="mswAng" />
+ <lnTo>
+ <pt x="x1" y="y4" />
+ </lnTo>
+ <lnTo>
+ <pt x="r" y="y6" />
+ </lnTo>
+ <lnTo>
+ <pt x="x1" y="y8" />
+ </lnTo>
+ <lnTo>
+ <pt x="x1" y="y7" />
+ </lnTo>
+ <arcTo wR="w" hR="hR" stAng="stAng" swAng="swAng" />
+ <lnTo>
+ <pt x="l" y="hR" />
+ </lnTo>
+ <arcTo wR="w" hR="hR" stAng="cd2" swAng="cd4" />
+ <lnTo>
+ <pt x="r" y="th" />
+ </lnTo>
+ <arcTo wR="w" hR="hR" stAng="3cd4" swAng="swAng2" />
+ </path>
+ </pathLst>
+
+ </curvedRightArrow>
+ <curvedUpArrow>
+
+ <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="adj1" fmla="val 25000" />
+
+ <gd name="adj2" fmla="val 50000" />
+
+ <gd name="adj3" fmla="val 25000" />
+
+ </avLst>
+
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="maxAdj2" fmla="*/ 50000 w ss" />
+
+ <gd name="a2" fmla="pin 0 adj2 maxAdj2" />
+ <gd name="a1" fmla="pin 0 adj1 100000" />
+ <gd name="th" fmla="*/ ss a1 100000" />
+
+ <gd name="aw" fmla="*/ ss a2 100000" />
+
+ <gd name="q1" fmla="+/ th aw 4" />
+
+ <gd name="wR" fmla="+- wd2 0 q1" />
+
+ <gd name="q7" fmla="*/ wR 2 1" />
+
+ <gd name="q8" fmla="*/ q7 q7 1" />
+
+ <gd name="q9" fmla="*/ th th 1" />
+
+ <gd name="q10" fmla="+- q8 0 q9" />
+ <gd name="q11" fmla="sqrt q10" />
+ <gd name="idy" fmla="*/ q11 h q7" />
+ <gd name="maxAdj3" fmla="*/ 100000 idy ss" />
+
+ <gd name="a3" fmla="pin 0 adj3 maxAdj3" />
+ <gd name="ah" fmla="*/ ss adj3 100000" />
+
+
+
+
+
+ <gd name="x3" fmla="+- wR th 0" />
+
+ <gd name="q2" fmla="*/ h h 1" />
+ <gd name="q3" fmla="*/ ah ah 1" />
+ <gd name="q4" fmla="+- q2 0 q3" />
+ <gd name="q5" fmla="sqrt q4" />
+ <gd name="dx" fmla="*/ q5 wR h" />
+ <gd name="x5" fmla="+- wR dx 0" />
+
+ <gd name="x7" fmla="+- x3 dx 0" />
+
+ <gd name="q6" fmla="+- aw 0 th" />
+ <gd name="dh" fmla="*/ q6 1 2" />
+
+ <gd name="x4" fmla="+- x5 0 dh" />
+
+ <gd name="x8" fmla="+- x7 dh 0" />
+
+ <gd name="aw2" fmla="*/ aw 1 2" />
+ <gd name="x6" fmla="+- r 0 aw2" />
+
+ <gd name="y1" fmla="+- t ah 0" />
+ <gd name="swAng" fmla="at2 ah dx" />
+
+ <gd name="mswAng" fmla="+- 0 0 swAng" />
+ <gd name="iy" fmla="+- t idy 0" />
+
+ <gd name="ix" fmla="+/ wR x3 2" />
+
+ <gd name="q12" fmla="*/ th 1 2" />
+ <gd name="dang2" fmla="at2 idy q12" />
+ <gd name="swAng2" fmla="+- dang2 0 swAng" />
+ <gd name="mswAng2" fmla="+- 0 0 swAng2" />
+ <gd name="stAng3" fmla="+- cd4 0 swAng" />
+ <gd name="swAng3" fmla="+- swAng dang2 0" />
+ <gd name="stAng2" fmla="+- cd4 0 dang2" />
+ </gdLst>
+
+ <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <ahXY gdRefX="adj1" minX="0" maxX="a2">
+ <pos x="x7" y="y1" />
+ </ahXY>
+ <ahXY gdRefX="adj2" minX="0" maxX="maxAdj2">
+ <pos x="x4" y="t" />
+ </ahXY>
+ <ahXY gdRefY="adj3" minY="0" maxY="maxAdj3">
+ <pos x="r" y="y1" />
+ </ahXY>
+ </ahLst>
+
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="3cd4">
+ <pos x="x6" y="t" />
+ </cxn>
+ <cxn ang="3cd4">
+ <pos x="x4" y="y1" />
+ </cxn>
+ <cxn ang="3cd4">
+ <pos x="q12" y="t" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="ix" y="b" />
+ </cxn>
+ <cxn ang="0">
+ <pos x="x8" y="y1" />
+ </cxn>
+ </cxnLst>
+
+
+ <rect l="l" t="t" r="r" b="b" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+
+
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+
+ <path stroke="false" extrusionOk="false">
+ <moveTo>
+ <pt x="x6" y="t" />
+ </moveTo>
+ <lnTo>
+ <pt x="x8" y="y1" />
+ </lnTo>
+ <lnTo>
+ <pt x="x7" y="y1" />
+ </lnTo>
+ <arcTo wR="wR" hR="h" stAng="stAng3" swAng="swAng3" />
+ <arcTo wR="wR" hR="h" stAng="stAng2" swAng="swAng2" />
+ <lnTo>
+ <pt x="x4" y="y1" />
+ </lnTo>
+ <close />
+ </path>
+
+ <path fill="darkenLess" stroke="false" extrusionOk="false">
+ <moveTo>
+ <pt x="wR" y="b" />
+ </moveTo>
+ <arcTo wR="wR" hR="h" stAng="cd4" swAng="cd4" />
+ <lnTo>
+ <pt x="th" y="t" />
+ </lnTo>
+ <arcTo wR="wR" hR="h" stAng="cd2" swAng="-5400000" />
+ <close />
+ </path>
+
+ <path fill="none" extrusionOk="false">
+ <moveTo>
+ <pt x="ix" y="iy" />
+ </moveTo>
+ <arcTo wR="wR" hR="h" stAng="stAng2" swAng="swAng2" />
+ <lnTo>
+ <pt x="x4" y="y1" />
+ </lnTo>
+ <lnTo>
+ <pt x="x6" y="t" />
+ </lnTo>
+ <lnTo>
+ <pt x="x8" y="y1" />
+ </lnTo>
+ <lnTo>
+ <pt x="x7" y="y1" />
+ </lnTo>
+ <arcTo wR="wR" hR="h" stAng="stAng3" swAng="swAng" />
+ <lnTo>
+ <pt x="wR" y="b" />
+ </lnTo>
+ <arcTo wR="wR" hR="h" stAng="cd4" swAng="cd4" />
+ <lnTo>
+ <pt x="th" y="t" />
+ </lnTo>
+ <arcTo wR="wR" hR="h" stAng="cd2" swAng="-5400000" />
+ </path>
+ </pathLst>
+
+ </curvedUpArrow>
+ <decagon>
+
+ <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="vf" fmla="val 105146" />
+ </avLst>
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="shd2" fmla="*/ hd2 vf 100000" />
+ <gd name="dx1" fmla="cos wd2 2160000" />
+ <gd name="dx2" fmla="cos wd2 4320000" />
+ <gd name="x1" fmla="+- hc 0 dx1" />
+ <gd name="x2" fmla="+- hc 0 dx2" />
+ <gd name="x3" fmla="+- hc dx2 0" />
+ <gd name="x4" fmla="+- hc dx1 0" />
+ <gd name="dy1" fmla="sin shd2 4320000" />
+ <gd name="dy2" fmla="sin shd2 2160000" />
+ <gd name="y1" fmla="+- vc 0 dy1" />
+ <gd name="y2" fmla="+- vc 0 dy2" />
+ <gd name="y3" fmla="+- vc dy2 0" />
+ <gd name="y4" fmla="+- vc dy1 0" />
+ </gdLst>
+
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="0">
+ <pos x="x4" y="y2" />
+ </cxn>
+ <cxn ang="0">
+ <pos x="r" y="vc" />
+ </cxn>
+ <cxn ang="0">
+ <pos x="x4" y="y3" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="x3" y="y4" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="x2" y="y4" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="x1" y="y3" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="l" y="vc" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="x1" y="y2" />
+ </cxn>
+ <cxn ang="3cd4">
+ <pos x="x2" y="y1" />
+ </cxn>
+ <cxn ang="3cd4">
+ <pos x="x3" y="y1" />
+ </cxn>
+ </cxnLst>
+
+ <rect l="x1" t="y2" r="x4" b="y3" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path>
+ <moveTo>
+ <pt x="l" y="vc" />
+ </moveTo>
+ <lnTo>
+ <pt x="x1" y="y2" />
+ </lnTo>
+ <lnTo>
+ <pt x="x2" y="y1" />
+ </lnTo>
+ <lnTo>
+ <pt x="x3" y="y1" />
+ </lnTo>
+ <lnTo>
+ <pt x="x4" y="y2" />
+ </lnTo>
+ <lnTo>
+ <pt x="r" y="vc" />
+ </lnTo>
+ <lnTo>
+ <pt x="x4" y="y3" />
+ </lnTo>
+ <lnTo>
+ <pt x="x3" y="y4" />
+ </lnTo>
+ <lnTo>
+ <pt x="x2" y="y4" />
+ </lnTo>
+ <lnTo>
+ <pt x="x1" y="y3" />
+ </lnTo>
+ <close />
+ </path>
+ </pathLst>
+
+ </decagon>
+ <diagStripe>
+
+ <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="adj" fmla="val 50000" />
+
+ </avLst>
+
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="a" fmla="pin 0 adj 100000" />
+ <gd name="x2" fmla="*/ w a 100000" />
+ <gd name="x1" fmla="*/ x2 1 2" />
+ <gd name="x3" fmla="+/ x2 r 2" />
+ <gd name="y2" fmla="*/ h a 100000" />
+ <gd name="y1" fmla="*/ y2 1 2" />
+ <gd name="y3" fmla="+/ y2 b 2" />
+ </gdLst>
+
+ <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <ahXY gdRefY="adj" minY="0" maxY="100000">
+ <pos x="l" y="y2" />
+ </ahXY>
+ </ahLst>
+
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="0">
+ <pos x="hc" y="vc" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="l" y="y3" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="x1" y="y1" />
+ </cxn>
+ <cxn ang="3cd4">
+ <pos x="x3" y="t" />
+ </cxn>
+ </cxnLst>
+
+ <rect l="l" t="t" r="x3" b="y3" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path>
+ <moveTo>
+ <pt x="l" y="y2" />
+ </moveTo>
+ <lnTo>
+ <pt x="x2" y="t" />
+ </lnTo>
+ <lnTo>
+ <pt x="r" y="t" />
+ </lnTo>
+ <lnTo>
+ <pt x="l" y="b" />
+ </lnTo>
+ <close />
+ </path>
+ </pathLst>
+
+ </diagStripe>
+ <diamond>
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="ir" fmla="*/ w 3 4" />
+ <gd name="ib" fmla="*/ h 3 4" />
+ </gdLst>
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="3cd4">
+ <pos x="hc" y="t" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="l" y="vc" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="hc" y="b" />
+ </cxn>
+ <cxn ang="0">
+ <pos x="r" y="vc" />
+ </cxn>
+ </cxnLst>
+ <rect l="wd4" t="hd4" r="ir" b="ib" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path>
+ <moveTo>
+ <pt x="l" y="vc" />
+ </moveTo>
+ <lnTo>
+ <pt x="hc" y="t" />
+ </lnTo>
+ <lnTo>
+ <pt x="r" y="vc" />
+ </lnTo>
+ <lnTo>
+ <pt x="hc" y="b" />
+ </lnTo>
+ <close />
+ </path>
+ </pathLst>
+ </diamond>
+ <dodecagon>
+
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="x1" fmla="*/ w 2894 21600" />
+ <gd name="x2" fmla="*/ w 7906 21600" />
+ <gd name="x3" fmla="*/ w 13694 21600" />
+ <gd name="x4" fmla="*/ w 18706 21600" />
+ <gd name="y1" fmla="*/ h 2894 21600" />
+ <gd name="y2" fmla="*/ h 7906 21600" />
+ <gd name="y3" fmla="*/ h 13694 21600" />
+ <gd name="y4" fmla="*/ h 18706 21600" />
+ </gdLst>
+
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="0">
+ <pos x="x4" y="y1" />
+ </cxn>
+ <cxn ang="0">
+ <pos x="r" y="y2" />
+ </cxn>
+ <cxn ang="0">
+ <pos x="r" y="y3" />
+ </cxn>
+ <cxn ang="0">
+ <pos x="x4" y="y4" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="x3" y="b" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="x2" y="b" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="x1" y="y4" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="l" y="y3" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="l" y="y2" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="x1" y="y1" />
+ </cxn>
+ <cxn ang="3cd4">
+ <pos x="x2" y="t" />
+ </cxn>
+ <cxn ang="3cd4">
+ <pos x="x3" y="t" />
+ </cxn>
+ </cxnLst>
+
+ <rect l="x1" t="y1" r="x4" b="y4" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path>
+ <moveTo>
+ <pt x="l" y="y2" />
+ </moveTo>
+ <lnTo>
+ <pt x="x1" y="y1" />
+ </lnTo>
+ <lnTo>
+ <pt x="x2" y="t" />
+ </lnTo>
+ <lnTo>
+ <pt x="x3" y="t" />
+ </lnTo>
+ <lnTo>
+ <pt x="x4" y="y1" />
+ </lnTo>
+ <lnTo>
+ <pt x="r" y="y2" />
+ </lnTo>
+ <lnTo>
+ <pt x="r" y="y3" />
+ </lnTo>
+ <lnTo>
+ <pt x="x4" y="y4" />
+ </lnTo>
+ <lnTo>
+ <pt x="x3" y="b" />
+ </lnTo>
+ <lnTo>
+ <pt x="x2" y="b" />
+ </lnTo>
+ <lnTo>
+ <pt x="x1" y="y4" />
+ </lnTo>
+ <lnTo>
+ <pt x="l" y="y3" />
+ </lnTo>
+ <close />
+ </path>
+ </pathLst>
+
+ </dodecagon>
+ <donut>
+
+ <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="adj" fmla="val 25000" />
+ </avLst>
+
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="a" fmla="pin 0 adj 50000" />
+ <gd name="dr" fmla="*/ ss a 100000" />
+ <gd name="iwd2" fmla="+- wd2 0 dr" />
+ <gd name="ihd2" fmla="+- hd2 0 dr" />
+ <gd name="idx" fmla="cos wd2 2700000" />
+ <gd name="idy" fmla="sin hd2 2700000" />
+ <gd name="il" fmla="+- hc 0 idx" />
+ <gd name="ir" fmla="+- hc idx 0" />
+ <gd name="it" fmla="+- vc 0 idy" />
+ <gd name="ib" fmla="+- vc idy 0" />
+ </gdLst>
+
+ <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <ahPolar gdRefR="adj" minR="0" maxR="50000">
+ <pos x="dr" y="vc" />
+ </ahPolar>
+ </ahLst>
+
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="3cd4">
+ <pos x="hc" y="t" />
+ </cxn>
+ <cxn ang="3cd4">
+ <pos x="il" y="it" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="l" y="vc" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="il" y="ib" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="hc" y="b" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="ir" y="ib" />
+ </cxn>
+ <cxn ang="0">
+ <pos x="r" y="vc" />
+ </cxn>
+ <cxn ang="3cd4">
+ <pos x="ir" y="it" />
+ </cxn>
+ </cxnLst>
+
+ <rect l="il" t="it" r="ir" b="ib" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path>
+ <moveTo>
+ <pt x="l" y="vc" />
+ </moveTo>
+ <arcTo wR="wd2" hR="hd2" stAng="cd2" swAng="cd4" />
+ <arcTo wR="wd2" hR="hd2" stAng="3cd4" swAng="cd4" />
+ <arcTo wR="wd2" hR="hd2" stAng="0" swAng="cd4" />
+ <arcTo wR="wd2" hR="hd2" stAng="cd4" swAng="cd4" />
+ <close />
+ <moveTo>
+ <pt x="dr" y="vc" />
+ </moveTo>
+ <arcTo wR="iwd2" hR="ihd2" stAng="cd2" swAng="-5400000" />
+ <arcTo wR="iwd2" hR="ihd2" stAng="cd4" swAng="-5400000" />
+ <arcTo wR="iwd2" hR="ihd2" stAng="0" swAng="-5400000" />
+ <arcTo wR="iwd2" hR="ihd2" stAng="3cd4" swAng="-5400000" />
+ <close />
+ </path>
+ </pathLst>
+
+ </donut>
+ <doubleWave>
+
+ <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="adj1" fmla="val 6250" />
+
+ <gd name="adj2" fmla="val 0" />
+
+ </avLst>
+
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="a1" fmla="pin 0 adj1 12500" />
+ <gd name="a2" fmla="pin -10000 adj2 10000" />
+ <gd name="y1" fmla="*/ h a1 100000" />
+
+ <gd name="dy2" fmla="*/ y1 10 3" />
+ <gd name="y2" fmla="+- y1 0 dy2" />
+
+ <gd name="y3" fmla="+- y1 dy2 0" />
+
+ <gd name="y4" fmla="+- b 0 y1" />
+
+ <gd name="y5" fmla="+- y4 0 dy2" />
+
+ <gd name="y6" fmla="+- y4 dy2 0" />
+
+ <gd name="dx1" fmla="*/ w a2 100000" />
+
+ <gd name="of2" fmla="*/ w a2 50000" />
+
+ <gd name="x1" fmla="abs dx1" />
+
+ <gd name="dx2" fmla="?: of2 0 of2" />
+ <gd name="x2" fmla="+- l 0 dx2" />
+
+ <gd name="dx8" fmla="?: of2 of2 0" />
+ <gd name="x8" fmla="+- r 0 dx8" />
+
+ <gd name="dx3" fmla="+/ dx2 x8 6" />
+ <gd name="x3" fmla="+- x2 dx3 0" />
+
+ <gd name="dx4" fmla="+/ dx2 x8 3" />
+ <gd name="x4" fmla="+- x2 dx4 0" />
+
+ <gd name="x5" fmla="+/ x2 x8 2" />
+
+ <gd name="x6" fmla="+- x5 dx3 0" />
+
+ <gd name="x7" fmla="+/ x6 x8 2" />
+
+ <gd name="x9" fmla="+- l dx8 0" />
+
+ <gd name="x15" fmla="+- r dx2 0" />
+
+ <gd name="x10" fmla="+- x9 dx3 0" />
+
+ <gd name="x11" fmla="+- x9 dx4 0" />
+
+ <gd name="x12" fmla="+/ x9 x15 2" />
+
+ <gd name="x13" fmla="+- x12 dx3 0" />
+
+ <gd name="x14" fmla="+/ x13 x15 2" />
+
+ <gd name="x16" fmla="+- r 0 x1" />
+
+ <gd name="xAdj" fmla="+- hc dx1 0" />
+ <gd name="il" fmla="max x2 x9" />
+ <gd name="ir" fmla="min x8 x15" />
+ <gd name="it" fmla="*/ h a1 50000" />
+ <gd name="ib" fmla="+- b 0 it" />
+ </gdLst>
+
+ <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <ahXY gdRefY="adj1" minY="0" maxY="12500">
+ <pos x="l" y="y1" />
+ </ahXY>
+ <ahXY gdRefX="adj2" minX="-10000" maxX="10000">
+ <pos x="xAdj" y="b" />
+ </ahXY>
+ </ahLst>
+
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="cd4">
+ <pos x="x12" y="y1" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="x1" y="vc" />
+ </cxn>
+ <cxn ang="3cd4">
+ <pos x="x5" y="y4" />
+ </cxn>
+ <cxn ang="0">
+ <pos x="x16" y="vc" />
+ </cxn>
+ </cxnLst>
+
+ <rect l="il" t="it" r="ir" b="ib" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path>
+ <moveTo>
+ <pt x="x2" y="y1" />
+ </moveTo>
+ <cubicBezTo>
+ <pt x="x3" y="y2" />
+ <pt x="x4" y="y3" />
+ <pt x="x5" y="y1" />
+ </cubicBezTo>
+ <cubicBezTo>
+ <pt x="x6" y="y2" />
+ <pt x="x7" y="y3" />
+ <pt x="x8" y="y1" />
+ </cubicBezTo>
+ <lnTo>
+ <pt x="x15" y="y4" />
+ </lnTo>
+ <cubicBezTo>
+ <pt x="x14" y="y6" />
+ <pt x="x13" y="y5" />
+ <pt x="x12" y="y4" />
+ </cubicBezTo>
+ <cubicBezTo>
+ <pt x="x11" y="y6" />
+ <pt x="x10" y="y5" />
+ <pt x="x9" y="y4" />
+ </cubicBezTo>
+ <close />
+ </path>
+ </pathLst>
+
+ </doubleWave>
+ <downArrow>
+ <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="adj1" fmla="val 50000" />
+ <gd name="adj2" fmla="val 50000" />
+ </avLst>
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="maxAdj2" fmla="*/ 100000 h ss" />
+ <gd name="a1" fmla="pin 0 adj1 100000" />
+ <gd name="a2" fmla="pin 0 adj2 maxAdj2" />
+ <gd name="dy1" fmla="*/ ss a2 100000" />
+ <gd name="y1" fmla="+- b 0 dy1" />
+ <gd name="dx1" fmla="*/ w a1 200000" />
+ <gd name="x1" fmla="+- hc 0 dx1" />
+ <gd name="x2" fmla="+- hc dx1 0" />
+ <gd name="dy2" fmla="*/ x1 dy1 wd2" />
+ <gd name="y2" fmla="+- y1 dy2 0" />
+ </gdLst>
+ <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <ahXY gdRefX="adj1" minX="0" maxX="100000">
+ <pos x="x1" y="t" />
+ </ahXY>
+ <ahXY gdRefY="adj2" minY="0" maxY="maxAdj2">
+ <pos x="l" y="y1" />
+ </ahXY>
+ </ahLst>
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="3cd4">
+ <pos x="hc" y="t" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="l" y="y1" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="hc" y="b" />
+ </cxn>
+ <cxn ang="0">
+ <pos x="r" y="y1" />
+ </cxn>
+ </cxnLst>
+ <rect l="x1" t="t" r="x2" b="y2" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path>
+ <moveTo>
+ <pt x="l" y="y1" />
+ </moveTo>
+ <lnTo>
+ <pt x="x1" y="y1" />
+ </lnTo>
+ <lnTo>
+ <pt x="x1" y="t" />
+ </lnTo>
+ <lnTo>
+ <pt x="x2" y="t" />
+ </lnTo>
+ <lnTo>
+ <pt x="x2" y="y1" />
+ </lnTo>
+ <lnTo>
+ <pt x="r" y="y1" />
+ </lnTo>
+ <lnTo>
+ <pt x="hc" y="b" />
+ </lnTo>
+ <close />
+ </path>
+ </pathLst>
+ </downArrow>
+ <downArrowCallout>
+
+ <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="adj1" fmla="val 25000" />
+
+ <gd name="adj2" fmla="val 25000" />
+
+ <gd name="adj3" fmla="val 25000" />
+
+ <gd name="adj4" fmla="val 64977" />
+
+ </avLst>
+
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="maxAdj2" fmla="*/ 50000 w ss" />
+
+ <gd name="a2" fmla="pin 0 adj2 maxAdj2" />
+ <gd name="maxAdj1" fmla="*/ a2 2 1" />
+
+ <gd name="a1" fmla="pin 0 adj1 maxAdj1" />
+ <gd name="maxAdj3" fmla="*/ 100000 h ss" />
+
+ <gd name="a3" fmla="pin 0 adj3 maxAdj3" />
+ <gd name="q2" fmla="*/ a3 ss h" />
+
+ <gd name="maxAdj4" fmla="+- 100000 0 q2" />
+
+ <gd name="a4" fmla="pin 0 adj4 maxAdj4" />
+ <gd name="dx1" fmla="*/ ss a2 100000" />
+
+ <gd name="dx2" fmla="*/ ss a1 200000" />
+
+ <gd name="x1" fmla="+- hc 0 dx1" />
+ <gd name="x2" fmla="+- hc 0 dx2" />
+ <gd name="x3" fmla="+- hc dx2 0" />
+ <gd name="x4" fmla="+- hc dx1 0" />
+ <gd name="dy3" fmla="*/ ss a3 100000" />
+
+ <gd name="y3" fmla="+- b 0 dy3" />
+ <gd name="y2" fmla="*/ h a4 100000" />
+
+ <gd name="y1" fmla="*/ y2 1 2" />
+ </gdLst>
+
+ <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <ahXY gdRefX="adj1" minX="0" maxX="maxAdj1">
+ <pos x="x2" y="y3" />
+ </ahXY>
+ <ahXY gdRefX="adj2" minX="0" maxX="maxAdj2">
+ <pos x="x1" y="b" />
+ </ahXY>
+ <ahXY gdRefY="adj3" minY="0" maxY="maxAdj3">
+ <pos x="r" y="y3" />
+ </ahXY>
+ <ahXY gdRefY="adj4" minY="0" maxY="maxAdj4">
+ <pos x="l" y="y2" />
+ </ahXY>
+ </ahLst>
+
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="3cd4">
+ <pos x="hc" y="t" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="l" y="y1" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="hc" y="b" />
+ </cxn>
+ <cxn ang="0">
+ <pos x="r" y="y1" />
+ </cxn>
+ </cxnLst>
+
+ <rect l="l" t="t" r="r" b="y2" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path>
+ <moveTo>
+ <pt x="l" y="t" />
+ </moveTo>
+ <lnTo>
+ <pt x="r" y="t" />
+ </lnTo>
+ <lnTo>
+ <pt x="r" y="y2" />
+ </lnTo>
+ <lnTo>
+ <pt x="x3" y="y2" />
+ </lnTo>
+ <lnTo>
+ <pt x="x3" y="y3" />
+ </lnTo>
+ <lnTo>
+ <pt x="x4" y="y3" />
+ </lnTo>
+ <lnTo>
+ <pt x="hc" y="b" />
+ </lnTo>
+ <lnTo>
+ <pt x="x1" y="y3" />
+ </lnTo>
+ <lnTo>
+ <pt x="x2" y="y3" />
+ </lnTo>
+ <lnTo>
+ <pt x="x2" y="y2" />
+ </lnTo>
+ <lnTo>
+ <pt x="l" y="y2" />
+ </lnTo>
+ <close />
+ </path>
+ </pathLst>
+
+ </downArrowCallout>
+ <ellipse>
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="idx" fmla="cos wd2 2700000" />
+ <gd name="idy" fmla="sin hd2 2700000" />
+ <gd name="il" fmla="+- hc 0 idx" />
+ <gd name="ir" fmla="+- hc idx 0" />
+ <gd name="it" fmla="+- vc 0 idy" />
+ <gd name="ib" fmla="+- vc idy 0" />
+ </gdLst>
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="3cd4">
+ <pos x="hc" y="t" />
+ </cxn>
+ <cxn ang="3cd4">
+ <pos x="il" y="it" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="l" y="vc" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="il" y="ib" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="hc" y="b" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="ir" y="ib" />
+ </cxn>
+ <cxn ang="0">
+ <pos x="r" y="vc" />
+ </cxn>
+ <cxn ang="3cd4">
+ <pos x="ir" y="it" />
+ </cxn>
+ </cxnLst>
+ <rect l="il" t="it" r="ir" b="ib" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path>
+ <moveTo>
+ <pt x="l" y="vc" />
+ </moveTo>
+ <arcTo wR="wd2" hR="hd2" stAng="cd2" swAng="cd4" />
+ <arcTo wR="wd2" hR="hd2" stAng="3cd4" swAng="cd4" />
+ <arcTo wR="wd2" hR="hd2" stAng="0" swAng="cd4" />
+ <arcTo wR="wd2" hR="hd2" stAng="cd4" swAng="cd4" />
+ <close />
+ </path>
+ </pathLst>
+ </ellipse>
+ <ellipseRibbon>
+
+ <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="adj1" fmla="val 25000" />
+
+ <gd name="adj2" fmla="val 50000" />
+
+ <gd name="adj3" fmla="val 12500" />
+
+ </avLst>
+
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="a1" fmla="pin 0 adj1 100000" />
+ <gd name="a2" fmla="pin 25000 adj2 75000" />
+ <gd name="q10" fmla="+- 100000 0 a1" />
+ <gd name="q11" fmla="*/ q10 1 2" />
+ <gd name="q12" fmla="+- a1 0 q11" />
+ <gd name="minAdj3" fmla="max 0 q12" />
+ <gd name="a3" fmla="pin minAdj3 adj3 a1" />
+
+
+ <gd name="dx2" fmla="*/ w a2 200000" />
+
+ <gd name="x2" fmla="+- hc 0 dx2" />
+
+ <gd name="x3" fmla="+- x2 wd8 0" />
+
+ <gd name="x4" fmla="+- r 0 x3" />
+
+ <gd name="x5" fmla="+- r 0 x2" />
+
+ <gd name="x6" fmla="+- r 0 wd8" />
+
+ <gd name="dy1" fmla="*/ h a3 100000" />
+
+ <gd name="f1" fmla="*/ 4 dy1 w" />
+
+ <gd name="q1" fmla="*/ x3 x3 w" />
+ <gd name="q2" fmla="+- x3 0 q1" />
+ <gd name="y1" fmla="*/ f1 q2 1" />
+
+ <gd name="cx1" fmla="*/ x3 1 2" />
+
+ <gd name="cy1" fmla="*/ f1 cx1 1" />
+
+ <gd name="cx2" fmla="+- r 0 cx1" />
+
+
+
+ <gd name="q1" fmla="*/ h a1 100000" />
+
+ <gd name="dy3" fmla="+- q1 0 dy1" />
+
+ <gd name="q3" fmla="*/ x2 x2 w" />
+ <gd name="q4" fmla="+- x2 0 q3" />
+ <gd name="q5" fmla="*/ f1 q4 1" />
+ <gd name="y3" fmla="+- q5 dy3 0" />
+
+
+
+ <gd name="q6" fmla="+- dy1 dy3 y3" />
+ <gd name="q7" fmla="+- q6 dy1 0" />
+ <gd name="cy3" fmla="+- q7 dy3 0" />
+
+ <gd name="rh" fmla="+- b 0 q1" />
+
+ <gd name="q8" fmla="*/ dy1 14 16" />
+ <gd name="y2" fmla="+/ q8 rh 2" />
+
+
+ <gd name="y5" fmla="+- q5 rh 0" />
+
+ <gd name="y6" fmla="+- y3 rh 0" />
+
+ <gd name="cx4" fmla="*/ x2 1 2" />
+
+ <gd name="q9" fmla="*/ f1 cx4 1" />
+ <gd name="cy4" fmla="+- q9 rh 0" />
+
+ <gd name="cx5" fmla="+- r 0 cx4" />
+
+
+
+
+
+ <gd name="cy6" fmla="+- cy3 rh 0" />
+
+ <gd name="y7" fmla="+- y1 dy3 0" />
+ <gd name="cy7" fmla="+- q1 q1 y7" />
+ <gd name="y8" fmla="+- b 0 dy1" />
+
+ </gdLst>
+
+ <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <ahXY gdRefY="adj1" minY="0" maxY="100000">
+ <pos x="hc" y="q1" />
+ </ahXY>
+ <ahXY gdRefX="adj2" minX="25000" maxX="75000">
+ <pos x="x2" y="b" />
+ </ahXY>
+ <ahXY gdRefY="adj3" minY="minAdj3" maxY="a1">
+ <pos x="l" y="y8" />
+ </ahXY>
+ </ahLst>
+
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="3cd4">
+ <pos x="hc" y="q1" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="wd8" y="y2" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="hc" y="b" />
+ </cxn>
+ <cxn ang="0">
+ <pos x="x6" y="y2" />
+ </cxn>
+ </cxnLst>
+
+ <rect l="x2" t="q1" r="x5" b="y6" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path stroke="false" extrusionOk="false">
+
+ <moveTo>
+ <pt x="l" y="t" />
+ </moveTo>
+ <quadBezTo>
+ <pt x="cx1" y="cy1" />
+ <pt x="x3" y="y1" />
+ </quadBezTo>
+ <lnTo>
+ <pt x="x2" y="y3" />
+ </lnTo>
+ <quadBezTo>
+ <pt x="hc" y="cy3" />
+ <pt x="x5" y="y3" />
+ </quadBezTo>
+ <lnTo>
+ <pt x="x4" y="y1" />
+ </lnTo>
+ <quadBezTo>
+ <pt x="cx2" y="cy1" />
+ <pt x="r" y="t" />
+ </quadBezTo>
+ <lnTo>
+ <pt x="x6" y="y2" />
+ </lnTo>
+ <lnTo>
+ <pt x="r" y="rh" />
+ </lnTo>
+ <quadBezTo>
+ <pt x="cx5" y="cy4" />
+ <pt x="x5" y="y5" />
+ </quadBezTo>
+ <lnTo>
+ <pt x="x5" y="y6" />
+ </lnTo>
+ <quadBezTo>
+ <pt x="hc" y="cy6" />
+ <pt x="x2" y="y6" />
+ </quadBezTo>
+ <lnTo>
+ <pt x="x2" y="y5" />
+ </lnTo>
+ <quadBezTo>
+ <pt x="cx4" y="cy4" />
+ <pt x="l" y="rh" />
+ </quadBezTo>
+ <lnTo>
+ <pt x="wd8" y="y2" />
+ </lnTo>
+ <close />
+ </path>
+ <path fill="darkenLess" stroke="false" extrusionOk="false">
+ <moveTo>
+ <pt x="x3" y="y7" />
+ </moveTo>
+ <lnTo>
+ <pt x="x3" y="y1" />
+ </lnTo>
+ <lnTo>
+ <pt x="x2" y="y3" />
+ </lnTo>
+ <quadBezTo>
+ <pt x="hc" y="cy3" />
+ <pt x="x5" y="y3" />
+ </quadBezTo>
+ <lnTo>
+ <pt x="x4" y="y1" />
+ </lnTo>
+ <lnTo>
+ <pt x="x4" y="y7" />
+ </lnTo>
+ <quadBezTo>
+ <pt x="hc" y="cy7" />
+ <pt x="x3" y="y7" />
+ </quadBezTo>
+ <close />
+ </path>
+ <path fill="none" extrusionOk="false">
+
+ <moveTo>
+ <pt x="l" y="t" />
+ </moveTo>
+ <quadBezTo>
+ <pt x="cx1" y="cy1" />
+ <pt x="x3" y="y1" />
+ </quadBezTo>
+ <lnTo>
+ <pt x="x2" y="y3" />
+ </lnTo>
+ <quadBezTo>
+ <pt x="hc" y="cy3" />
+ <pt x="x5" y="y3" />
+ </quadBezTo>
+ <lnTo>
+ <pt x="x4" y="y1" />
+ </lnTo>
+ <quadBezTo>
+ <pt x="cx2" y="cy1" />
+ <pt x="r" y="t" />
+ </quadBezTo>
+ <lnTo>
+ <pt x="x6" y="y2" />
+ </lnTo>
+ <lnTo>
+ <pt x="r" y="rh" />
+ </lnTo>
+ <quadBezTo>
+ <pt x="cx5" y="cy4" />
+ <pt x="x5" y="y5" />
+ </quadBezTo>
+ <lnTo>
+ <pt x="x5" y="y6" />
+ </lnTo>
+ <quadBezTo>
+ <pt x="hc" y="cy6" />
+ <pt x="x2" y="y6" />
+ </quadBezTo>
+ <lnTo>
+ <pt x="x2" y="y5" />
+ </lnTo>
+ <quadBezTo>
+ <pt x="cx4" y="cy4" />
+ <pt x="l" y="rh" />
+ </quadBezTo>
+ <lnTo>
+ <pt x="wd8" y="y2" />
+ </lnTo>
+ <close />
+ <moveTo>
+ <pt x="x2" y="y5" />
+ </moveTo>
+ <lnTo>
+ <pt x="x2" y="y3" />
+ </lnTo>
+ <moveTo>
+ <pt x="x5" y="y3" />
+ </moveTo>
+ <lnTo>
+ <pt x="x5" y="y5" />
+ </lnTo>
+ <moveTo>
+ <pt x="x3" y="y1" />
+ </moveTo>
+ <lnTo>
+ <pt x="x3" y="y7" />
+ </lnTo>
+ <moveTo>
+ <pt x="x4" y="y7" />
+ </moveTo>
+ <lnTo>
+ <pt x="x4" y="y1" />
+ </lnTo>
+ </path>
+ </pathLst>
+
+ </ellipseRibbon>
+ <ellipseRibbon2>
+
+ <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="adj1" fmla="val 25000" />
+
+ <gd name="adj2" fmla="val 50000" />
+
+ <gd name="adj3" fmla="val 12500" />
+
+ </avLst>
+
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+
+
+ <gd name="a1" fmla="pin 0 adj1 100000" />
+ <gd name="a2" fmla="pin 25000 adj2 75000" />
+ <gd name="q10" fmla="+- 100000 0 a1" />
+ <gd name="q11" fmla="*/ q10 1 2" />
+ <gd name="q12" fmla="+- a1 0 q11" />
+ <gd name="minAdj3" fmla="max 0 q12" />
+ <gd name="a3" fmla="pin minAdj3 adj3 a1" />
+ <gd name="dx2" fmla="*/ w a2 200000" />
+
+ <gd name="x2" fmla="+- hc 0 dx2" />
+
+ <gd name="x3" fmla="+- x2 wd8 0" />
+
+ <gd name="x4" fmla="+- r 0 x3" />
+
+ <gd name="x5" fmla="+- r 0 x2" />
+
+ <gd name="x6" fmla="+- r 0 wd8" />
+
+ <gd name="dy1" fmla="*/ h a3 100000" />
+
+ <gd name="f1" fmla="*/ 4 dy1 w" />
+
+ <gd name="q1" fmla="*/ x3 x3 w" />
+ <gd name="q2" fmla="+- x3 0 q1" />
+ <gd name="u1" fmla="*/ f1 q2 1" />
+
+ <gd name="y1" fmla="+- b 0 u1" />
+ <gd name="cx1" fmla="*/ x3 1 2" />
+
+ <gd name="cu1" fmla="*/ f1 cx1 1" />
+
+ <gd name="cy1" fmla="+- b 0 cu1" />
+ <gd name="cx2" fmla="+- r 0 cx1" />
+
+
+
+ <gd name="q1" fmla="*/ h a1 100000" />
+
+ <gd name="dy3" fmla="+- q1 0 dy1" />
+
+ <gd name="q3" fmla="*/ x2 x2 w" />
+ <gd name="q4" fmla="+- x2 0 q3" />
+ <gd name="q5" fmla="*/ f1 q4 1" />
+ <gd name="u3" fmla="+- q5 dy3 0" />
+
+ <gd name="y3" fmla="+- b 0 u3" />
+
+
+ <gd name="q6" fmla="+- dy1 dy3 u3" />
+ <gd name="q7" fmla="+- q6 dy1 0" />
+ <gd name="cu3" fmla="+- q7 dy3 0" />
+
+ <gd name="cy3" fmla="+- b 0 cu3" />
+ <gd name="rh" fmla="+- b 0 q1" />
+
+ <gd name="q8" fmla="*/ dy1 14 16" />
+ <gd name="u2" fmla="+/ q8 rh 2" />
+
+ <gd name="y2" fmla="+- b 0 u2" />
+
+ <gd name="u5" fmla="+- q5 rh 0" />
+
+ <gd name="y5" fmla="+- b 0 u5" />
+ <gd name="u6" fmla="+- u3 rh 0" />
+
+ <gd name="y6" fmla="+- b 0 u6" />
+ <gd name="cx4" fmla="*/ x2 1 2" />
+
+ <gd name="q9" fmla="*/ f1 cx4 1" />
+ <gd name="cu4" fmla="+- q9 rh 0" />
+
+ <gd name="cy4" fmla="+- b 0 cu4" />
+ <gd name="cx5" fmla="+- r 0 cx4" />
+
+
+
+
+
+ <gd name="cu6" fmla="+- cu3 rh 0" />
+
+ <gd name="cy6" fmla="+- b 0 cu6" />
+ <gd name="u7" fmla="+- u1 dy3 0" />
+ <gd name="y7" fmla="+- b 0 u7" />
+ <gd name="cu7" fmla="+- q1 q1 u7" />
+ <gd name="cy7" fmla="+- b 0 cu7" />
+
+ </gdLst>
+
+ <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <ahXY gdRefY="adj1" minY="0" maxY="100000">
+ <pos x="hc" y="rh" />
+ </ahXY>
+ <ahXY gdRefX="adj2" minX="25000" maxX="100000">
+ <pos x="x2" y="t" />
+ </ahXY>
+ <ahXY gdRefY="adj3" minY="minAdj3" maxY="a1">
+ <pos x="l" y="dy1" />
+ </ahXY>
+ </ahLst>
+
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="3cd4">
+ <pos x="hc" y="t" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="wd8" y="y2" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="hc" y="rh" />
+ </cxn>
+ <cxn ang="0">
+ <pos x="x6" y="y2" />
+ </cxn>
+ </cxnLst>
+
+ <rect l="x2" t="y6" r="x5" b="rh" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path stroke="false" extrusionOk="false">
+
+ <moveTo>
+ <pt x="l" y="b" />
+ </moveTo>
+ <quadBezTo>
+ <pt x="cx1" y="cy1" />
+ <pt x="x3" y="y1" />
+ </quadBezTo>
+ <lnTo>
+ <pt x="x2" y="y3" />
+ </lnTo>
+ <quadBezTo>
+ <pt x="hc" y="cy3" />
+ <pt x="x5" y="y3" />
+ </quadBezTo>
+ <lnTo>
+ <pt x="x4" y="y1" />
+ </lnTo>
+ <quadBezTo>
+ <pt x="cx2" y="cy1" />
+ <pt x="r" y="b" />
+ </quadBezTo>
+ <lnTo>
+ <pt x="x6" y="y2" />
+ </lnTo>
+ <lnTo>
+ <pt x="r" y="q1" />
+ </lnTo>
+ <quadBezTo>
+ <pt x="cx5" y="cy4" />
+ <pt x="x5" y="y5" />
+ </quadBezTo>
+ <lnTo>
+ <pt x="x5" y="y6" />
+ </lnTo>
+ <quadBezTo>
+ <pt x="hc" y="cy6" />
+ <pt x="x2" y="y6" />
+ </quadBezTo>
+ <lnTo>
+ <pt x="x2" y="y5" />
+ </lnTo>
+ <quadBezTo>
+ <pt x="cx4" y="cy4" />
+ <pt x="l" y="q1" />
+ </quadBezTo>
+ <lnTo>
+ <pt x="wd8" y="y2" />
+ </lnTo>
+ <close />
+ </path>
+ <path fill="darkenLess" stroke="false" extrusionOk="false">
+ <moveTo>
+ <pt x="x3" y="y7" />
+ </moveTo>
+ <lnTo>
+ <pt x="x3" y="y1" />
+ </lnTo>
+ <lnTo>
+ <pt x="x2" y="y3" />
+ </lnTo>
+ <quadBezTo>
+ <pt x="hc" y="cy3" />
+ <pt x="x5" y="y3" />
+ </quadBezTo>
+ <lnTo>
+ <pt x="x4" y="y1" />
+ </lnTo>
+ <lnTo>
+ <pt x="x4" y="y7" />
+ </lnTo>
+ <quadBezTo>
+ <pt x="hc" y="cy7" />
+ <pt x="x3" y="y7" />
+ </quadBezTo>
+ <close />
+ </path>
+ <path fill="none" extrusionOk="false">
+
+ <moveTo>
+ <pt x="l" y="b" />
+ </moveTo>
+ <lnTo>
+ <pt x="wd8" y="y2" />
+ </lnTo>
+ <lnTo>
+ <pt x="l" y="q1" />
+ </lnTo>
+ <quadBezTo>
+ <pt x="cx4" y="cy4" />
+ <pt x="x2" y="y5" />
+ </quadBezTo>
+ <lnTo>
+ <pt x="x2" y="y6" />
+ </lnTo>
+ <quadBezTo>
+ <pt x="hc" y="cy6" />
+ <pt x="x5" y="y6" />
+ </quadBezTo>
+ <lnTo>
+ <pt x="x5" y="y5" />
+ </lnTo>
+ <quadBezTo>
+ <pt x="cx5" y="cy4" />
+ <pt x="r" y="q1" />
+ </quadBezTo>
+ <lnTo>
+ <pt x="x6" y="y2" />
+ </lnTo>
+ <lnTo>
+ <pt x="r" y="b" />
+ </lnTo>
+ <quadBezTo>
+ <pt x="cx2" y="cy1" />
+ <pt x="x4" y="y1" />
+ </quadBezTo>
+ <lnTo>
+ <pt x="x5" y="y3" />
+ </lnTo>
+ <quadBezTo>
+ <pt x="hc" y="cy3" />
+ <pt x="x2" y="y3" />
+ </quadBezTo>
+ <lnTo>
+ <pt x="x3" y="y1" />
+ </lnTo>
+ <quadBezTo>
+ <pt x="cx1" y="cy1" />
+ <pt x="l" y="b" />
+ </quadBezTo>
+ <close />
+ <moveTo>
+ <pt x="x2" y="y3" />
+ </moveTo>
+ <lnTo>
+ <pt x="x2" y="y5" />
+ </lnTo>
+ <moveTo>
+ <pt x="x5" y="y5" />
+ </moveTo>
+ <lnTo>
+ <pt x="x5" y="y3" />
+ </lnTo>
+ <moveTo>
+ <pt x="x3" y="y7" />
+ </moveTo>
+ <lnTo>
+ <pt x="x3" y="y1" />
+ </lnTo>
+ <moveTo>
+ <pt x="x4" y="y1" />
+ </moveTo>
+ <lnTo>
+ <pt x="x4" y="y7" />
+ </lnTo>
+ </path>
+ </pathLst>
+
+ </ellipseRibbon2>
+ <flowChartAlternateProcess>
+
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="x2" fmla="+- r 0 ssd6" />
+ <gd name="y2" fmla="+- b 0 ssd6" />
+ <gd name="il" fmla="*/ ssd6 29289 100000" />
+
+
+ <gd name="ir" fmla="+- r 0 il" />
+ <gd name="ib" fmla="+- b 0 il" />
+ </gdLst>
+
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="3cd4">
+ <pos x="hc" y="t" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="l" y="vc" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="hc" y="b" />
+ </cxn>
+ <cxn ang="0">
+ <pos x="r" y="vc" />
+ </cxn>
+ </cxnLst>
+
+ <rect l="il" t="il" r="ir" b="ib" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path>
+ <moveTo>
+ <pt x="l" y="ssd6" />
+ </moveTo>
+ <arcTo wR="ssd6" hR="ssd6" stAng="cd2" swAng="cd4" />
+ <lnTo>
+ <pt x="x2" y="t" />
+ </lnTo>
+ <arcTo wR="ssd6" hR="ssd6" stAng="3cd4" swAng="cd4" />
+ <lnTo>
+ <pt x="r" y="y2" />
+ </lnTo>
+ <arcTo wR="ssd6" hR="ssd6" stAng="0" swAng="cd4" />
+ <lnTo>
+ <pt x="ssd6" y="b" />
+ </lnTo>
+ <arcTo wR="ssd6" hR="ssd6" stAng="cd4" swAng="cd4" />
+ <close />
+ </path>
+ </pathLst>
+
+ </flowChartAlternateProcess>
+ <flowChartCollate>
+
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="ir" fmla="*/ w 3 4" />
+ <gd name="ib" fmla="*/ h 3 4" />
+ </gdLst>
+
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="3cd4">
+ <pos x="hc" y="t" />
+ </cxn>
+ <cxn ang="3cd4">
+ <pos x="hc" y="vc" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="hc" y="b" />
+ </cxn>
+ </cxnLst>
+
+ <rect l="wd4" t="hd4" r="ir" b="ib" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path w="2" h="2">
+ <moveTo>
+ <pt x="0" y="0" />
+ </moveTo>
+ <lnTo>
+ <pt x="2" y="0" />
+ </lnTo>
+ <lnTo>
+ <pt x="1" y="1" />
+ </lnTo>
+ <lnTo>
+ <pt x="2" y="2" />
+ </lnTo>
+ <lnTo>
+ <pt x="0" y="2" />
+ </lnTo>
+ <lnTo>
+ <pt x="1" y="1" />
+ </lnTo>
+ <close />
+ </path>
+ </pathLst>
+
+ </flowChartCollate>
+ <flowChartConnector>
+
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="idx" fmla="cos wd2 2700000" />
+ <gd name="idy" fmla="sin hd2 2700000" />
+ <gd name="il" fmla="+- hc 0 idx" />
+ <gd name="ir" fmla="+- hc idx 0" />
+ <gd name="it" fmla="+- vc 0 idy" />
+ <gd name="ib" fmla="+- vc idy 0" />
+ </gdLst>
+
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="3cd4">
+ <pos x="hc" y="t" />
+ </cxn>
+ <cxn ang="3cd4">
+ <pos x="il" y="it" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="l" y="vc" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="il" y="ib" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="hc" y="b" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="ir" y="ib" />
+ </cxn>
+ <cxn ang="0">
+ <pos x="r" y="vc" />
+ </cxn>
+ <cxn ang="3cd4">
+ <pos x="ir" y="it" />
+ </cxn>
+ </cxnLst>
+
+ <rect l="il" t="it" r="ir" b="ib" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path>
+ <moveTo>
+ <pt x="l" y="vc" />
+ </moveTo>
+ <arcTo wR="wd2" hR="hd2" stAng="cd2" swAng="cd4" />
+ <arcTo wR="wd2" hR="hd2" stAng="3cd4" swAng="cd4" />
+ <arcTo wR="wd2" hR="hd2" stAng="0" swAng="cd4" />
+ <arcTo wR="wd2" hR="hd2" stAng="cd4" swAng="cd4" />
+ <close />
+ </path>
+ </pathLst>
+
+ </flowChartConnector>
+ <flowChartDecision>
+
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="ir" fmla="*/ w 3 4" />
+ <gd name="ib" fmla="*/ h 3 4" />
+ </gdLst>
+
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="3cd4">
+ <pos x="hc" y="t" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="l" y="vc" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="hc" y="b" />
+ </cxn>
+ <cxn ang="0">
+ <pos x="r" y="vc" />
+ </cxn>
+ </cxnLst>
+
+ <rect l="wd4" t="hd4" r="ir" b="ib" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path w="2" h="2">
+ <moveTo>
+ <pt x="0" y="1" />
+ </moveTo>
+ <lnTo>
+ <pt x="1" y="0" />
+ </lnTo>
+ <lnTo>
+ <pt x="2" y="1" />
+ </lnTo>
+ <lnTo>
+ <pt x="1" y="2" />
+ </lnTo>
+ <close />
+ </path>
+ </pathLst>
+
+ </flowChartDecision>
+ <flowChartDelay>
+
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="idx" fmla="cos wd2 2700000" />
+ <gd name="idy" fmla="sin hd2 2700000" />
+ <gd name="ir" fmla="+- hc idx 0" />
+ <gd name="it" fmla="+- vc 0 idy" />
+ <gd name="ib" fmla="+- vc idy 0" />
+ </gdLst>
+
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="3cd4">
+ <pos x="hc" y="t" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="l" y="vc" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="hc" y="b" />
+ </cxn>
+ <cxn ang="0">
+ <pos x="r" y="vc" />
+ </cxn>
+ </cxnLst>
+
+ <rect l="l" t="it" r="ir" b="ib" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path>
+ <moveTo>
+ <pt x="l" y="t" />
+ </moveTo>
+ <lnTo>
+ <pt x="hc" y="t" />
+ </lnTo>
+ <arcTo wR="wd2" hR="hd2" stAng="3cd4" swAng="cd2" />
+ <lnTo>
+ <pt x="l" y="b" />
+ </lnTo>
+ <close />
+ </path>
+ </pathLst>
+
+ </flowChartDelay>
+ <flowChartDisplay>
+
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="x2" fmla="*/ w 5 6" />
+ </gdLst>
+
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="3cd4">
+ <pos x="hc" y="t" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="l" y="vc" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="hc" y="b" />
+ </cxn>
+ <cxn ang="0">
+ <pos x="r" y="vc" />
+ </cxn>
+ </cxnLst>
+
+ <rect l="wd6" t="t" r="x2" b="b" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path w="6" h="6">
+ <moveTo>
+ <pt x="0" y="3" />
+ </moveTo>
+ <lnTo>
+ <pt x="1" y="0" />
+ </lnTo>
+ <lnTo>
+ <pt x="5" y="0" />
+ </lnTo>
+ <arcTo wR="1" hR="3" stAng="3cd4" swAng="cd2" />
+ <lnTo>
+ <pt x="1" y="6" />
+ </lnTo>
+ <close />
+ </path>
+ </pathLst>
+
+ </flowChartDisplay>
+ <flowChartDocument>
+
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="y1" fmla="*/ h 17322 21600" />
+ <gd name="y2" fmla="*/ h 20172 21600" />
+ </gdLst>
+
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="3cd4">
+ <pos x="hc" y="t" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="l" y="vc" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="hc" y="y2" />
+ </cxn>
+ <cxn ang="0">
+ <pos x="r" y="vc" />
+ </cxn>
+ </cxnLst>
+
+ <rect l="l" t="t" r="r" b="y1" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path w="21600" h="21600">
+ <moveTo>
+ <pt x="0" y="0" />
+ </moveTo>
+ <lnTo>
+ <pt x="21600" y="0" />
+ </lnTo>
+ <lnTo>
+ <pt x="21600" y="17322" />
+ </lnTo>
+ <cubicBezTo>
+ <pt x="10800" y="17322" />
+ <pt x="10800" y="23922" />
+ <pt x="0" y="20172" />
+ </cubicBezTo>
+ <close />
+ </path>
+ </pathLst>
+
+ </flowChartDocument>
+ <flowChartExtract>
+
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="x2" fmla="*/ w 3 4" />
+ </gdLst>
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="3cd4">
+ <pos x="hc" y="t" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="wd4" y="vc" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="hc" y="b" />
+ </cxn>
+ <cxn ang="0">
+ <pos x="x2" y="vc" />
+ </cxn>
+ </cxnLst>
+
+ <rect l="wd4" t="vc" r="x2" b="b" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path w="2" h="2">
+ <moveTo>
+ <pt x="0" y="2" />
+ </moveTo>
+ <lnTo>
+ <pt x="1" y="0" />
+ </lnTo>
+ <lnTo>
+ <pt x="2" y="2" />
+ </lnTo>
+ <close />
+ </path>
+ </pathLst>
+
+ </flowChartExtract>
+ <flowChartInputOutput>
+
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="x3" fmla="*/ w 2 5" />
+ <gd name="x4" fmla="*/ w 3 5" />
+ <gd name="x5" fmla="*/ w 4 5" />
+ <gd name="x6" fmla="*/ w 9 10" />
+ </gdLst>
+
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="3cd4">
+ <pos x="x4" y="t" />
+ </cxn>
+ <cxn ang="3cd4">
+ <pos x="hc" y="t" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="wd10" y="vc" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="x3" y="b" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="hc" y="b" />
+ </cxn>
+ <cxn ang="0">
+ <pos x="x6" y="vc" />
+ </cxn>
+ </cxnLst>
+
+ <rect l="wd5" t="t" r="x5" b="b" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path w="5" h="5">
+ <moveTo>
+ <pt x="0" y="5" />
+ </moveTo>
+ <lnTo>
+ <pt x="1" y="0" />
+ </lnTo>
+ <lnTo>
+ <pt x="5" y="0" />
+ </lnTo>
+ <lnTo>
+ <pt x="4" y="5" />
+ </lnTo>
+ <close />
+ </path>
+ </pathLst>
+
+ </flowChartInputOutput>
+ <flowChartInternalStorage>
+
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="3cd4">
+ <pos x="hc" y="t" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="l" y="vc" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="hc" y="b" />
+ </cxn>
+ <cxn ang="0">
+ <pos x="r" y="vc" />
+ </cxn>
+ </cxnLst>
+
+ <rect l="wd8" t="hd8" r="r" b="b" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path stroke="false" extrusionOk="false" w="1" h="1">
+
+ <moveTo>
+ <pt x="0" y="0" />
+ </moveTo>
+ <lnTo>
+ <pt x="1" y="0" />
+ </lnTo>
+ <lnTo>
+ <pt x="1" y="1" />
+ </lnTo>
+ <lnTo>
+ <pt x="0" y="1" />
+ </lnTo>
+ <close />
+ </path>
+ <path fill="none" extrusionOk="false" w="8" h="8">
+
+ <moveTo>
+ <pt x="1" y="0" />
+ </moveTo>
+ <lnTo>
+ <pt x="1" y="8" />
+ </lnTo>
+ <moveTo>
+ <pt x="0" y="1" />
+ </moveTo>
+ <lnTo>
+ <pt x="8" y="1" />
+ </lnTo>
+ </path>
+ <path fill="none" w="1" h="1">
+
+ <moveTo>
+ <pt x="0" y="0" />
+ </moveTo>
+ <lnTo>
+ <pt x="1" y="0" />
+ </lnTo>
+ <lnTo>
+ <pt x="1" y="1" />
+ </lnTo>
+ <lnTo>
+ <pt x="0" y="1" />
+ </lnTo>
+ <close />
+ </path>
+ </pathLst>
+
+ </flowChartInternalStorage>
+ <flowChartMagneticDisk>
+
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="y3" fmla="*/ h 5 6" />
+ </gdLst>
+
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="3cd4">
+ <pos x="hc" y="hd3" />
+ </cxn>
+ <cxn ang="3cd4">
+ <pos x="hc" y="t" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="l" y="vc" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="hc" y="b" />
+ </cxn>
+ <cxn ang="0">
+ <pos x="r" y="vc" />
+ </cxn>
+ </cxnLst>
+
+ <rect l="l" t="hd3" r="r" b="y3" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path stroke="false" extrusionOk="false" w="6" h="6">
+
+ <moveTo>
+ <pt x="0" y="1" />
+ </moveTo>
+ <arcTo wR="3" hR="1" stAng="cd2" swAng="cd2" />
+ <lnTo>
+ <pt x="6" y="5" />
+ </lnTo>
+ <arcTo wR="3" hR="1" stAng="0" swAng="cd2" />
+ <close />
+ </path>
+ <path fill="none" extrusionOk="false" w="6" h="6">
+
+ <moveTo>
+ <pt x="6" y="1" />
+ </moveTo>
+ <arcTo wR="3" hR="1" stAng="0" swAng="cd2" />
+ </path>
+ <path fill="none" w="6" h="6">
+
+ <moveTo>
+ <pt x="0" y="1" />
+ </moveTo>
+ <arcTo wR="3" hR="1" stAng="cd2" swAng="cd2" />
+ <lnTo>
+ <pt x="6" y="5" />
+ </lnTo>
+ <arcTo wR="3" hR="1" stAng="0" swAng="cd2" />
+ <close />
+ </path>
+ </pathLst>
+
+ </flowChartMagneticDisk>
+ <flowChartMagneticDrum>
+
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="x2" fmla="*/ w 2 3" />
+ </gdLst>
+
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="3cd4">
+ <pos x="hc" y="t" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="l" y="vc" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="hc" y="b" />
+ </cxn>
+ <cxn ang="0">
+ <pos x="x2" y="vc" />
+ </cxn>
+ <cxn ang="0">
+ <pos x="r" y="vc" />
+ </cxn>
+ </cxnLst>
+
+ <rect l="wd6" t="t" r="x2" b="b" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path stroke="false" extrusionOk="false" w="6" h="6">
+
+ <moveTo>
+ <pt x="1" y="0" />
+ </moveTo>
+ <lnTo>
+ <pt x="5" y="0" />
+ </lnTo>
+ <arcTo wR="1" hR="3" stAng="3cd4" swAng="cd2" />
+ <lnTo>
+ <pt x="1" y="6" />
+ </lnTo>
+ <arcTo wR="1" hR="3" stAng="cd4" swAng="cd2" />
+ <close />
+ </path>
+ <path fill="none" extrusionOk="false" w="6" h="6">
+
+ <moveTo>
+ <pt x="5" y="6" />
+ </moveTo>
+ <arcTo wR="1" hR="3" stAng="cd4" swAng="cd2" />
+ </path>
+ <path fill="none" w="6" h="6">
+
+ <moveTo>
+ <pt x="1" y="0" />
+ </moveTo>
+ <lnTo>
+ <pt x="5" y="0" />
+ </lnTo>
+ <arcTo wR="1" hR="3" stAng="3cd4" swAng="cd2" />
+ <lnTo>
+ <pt x="1" y="6" />
+ </lnTo>
+ <arcTo wR="1" hR="3" stAng="cd4" swAng="cd2" />
+ <close />
+ </path>
+ </pathLst>
+
+ </flowChartMagneticDrum>
+ <flowChartMagneticTape>
+
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="idx" fmla="cos wd2 2700000" />
+ <gd name="idy" fmla="sin hd2 2700000" />
+ <gd name="il" fmla="+- hc 0 idx" />
+ <gd name="ir" fmla="+- hc idx 0" />
+ <gd name="it" fmla="+- vc 0 idy" />
+ <gd name="ib" fmla="+- vc idy 0" />
+ <gd name="ang1" fmla="at2 w h" />
+ </gdLst>
+
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="3cd4">
+ <pos x="hc" y="t" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="l" y="vc" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="hc" y="b" />
+ </cxn>
+ <cxn ang="0">
+ <pos x="r" y="vc" />
+ </cxn>
+ </cxnLst>
+
+ <rect l="il" t="it" r="ir" b="ib" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path>
+ <moveTo>
+ <pt x="hc" y="b" />
+ </moveTo>
+ <arcTo wR="wd2" hR="hd2" stAng="cd4" swAng="cd4" />
+ <arcTo wR="wd2" hR="hd2" stAng="cd2" swAng="cd4" />
+ <arcTo wR="wd2" hR="hd2" stAng="3cd4" swAng="cd4" />
+ <arcTo wR="wd2" hR="hd2" stAng="0" swAng="ang1" />
+ <lnTo>
+ <pt x="r" y="ib" />
+ </lnTo>
+ <lnTo>
+ <pt x="r" y="b" />
+ </lnTo>
+ <close />
+ </path>
+ </pathLst>
+
+ </flowChartMagneticTape>
+ <flowChartManualInput>
+
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="3cd4">
+ <pos x="hc" y="hd10" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="l" y="vc" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="hc" y="b" />
+ </cxn>
+ <cxn ang="0">
+ <pos x="r" y="vc" />
+ </cxn>
+ </cxnLst>
+
+ <rect l="l" t="hd5" r="r" b="b" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path w="5" h="5">
+ <moveTo>
+ <pt x="0" y="1" />
+ </moveTo>
+ <lnTo>
+ <pt x="5" y="0" />
+ </lnTo>
+ <lnTo>
+ <pt x="5" y="5" />
+ </lnTo>
+ <lnTo>
+ <pt x="0" y="5" />
+ </lnTo>
+ <close />
+ </path>
+ </pathLst>
+
+ </flowChartManualInput>
+ <flowChartManualOperation>
+
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="x3" fmla="*/ w 4 5" />
+ <gd name="x4" fmla="*/ w 9 10" />
+ </gdLst>
+
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="3cd4">
+ <pos x="hc" y="t" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="wd10" y="vc" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="hc" y="b" />
+ </cxn>
+ <cxn ang="0">
+ <pos x="x4" y="vc" />
+ </cxn>
+ </cxnLst>
+
+ <rect l="wd5" t="t" r="x3" b="b" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path w="5" h="5">
+ <moveTo>
+ <pt x="0" y="0" />
+ </moveTo>
+ <lnTo>
+ <pt x="5" y="0" />
+ </lnTo>
+ <lnTo>
+ <pt x="4" y="5" />
+ </lnTo>
+ <lnTo>
+ <pt x="1" y="5" />
+ </lnTo>
+ <close />
+ </path>
+ </pathLst>
+
+ </flowChartManualOperation>
+ <flowChartMerge>
+
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="x2" fmla="*/ w 3 4" />
+ </gdLst>
+
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="3cd4">
+ <pos x="hc" y="t" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="wd4" y="vc" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="hc" y="b" />
+ </cxn>
+ <cxn ang="0">
+ <pos x="x2" y="vc" />
+ </cxn>
+ </cxnLst>
+
+ <rect l="wd4" t="t" r="x2" b="vc" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path w="2" h="2">
+ <moveTo>
+ <pt x="0" y="0" />
+ </moveTo>
+ <lnTo>
+ <pt x="2" y="0" />
+ </lnTo>
+ <lnTo>
+ <pt x="1" y="2" />
+ </lnTo>
+ <close />
+ </path>
+ </pathLst>
+
+ </flowChartMerge>
+ <flowChartMultidocument>
+
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="y2" fmla="*/ h 3675 21600" />
+ <gd name="y8" fmla="*/ h 20782 21600" />
+ <gd name="x3" fmla="*/ w 9298 21600" />
+ <gd name="x4" fmla="*/ w 12286 21600" />
+ <gd name="x5" fmla="*/ w 18595 21600" />
+ </gdLst>
+
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="3cd4">
+ <pos x="x4" y="t" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="l" y="vc" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="x3" y="y8" />
+ </cxn>
+ <cxn ang="0">
+ <pos x="r" y="vc" />
+ </cxn>
+ </cxnLst>
+
+ <rect l="l" t="y2" r="x5" b="y8" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path stroke="false" extrusionOk="false" w="21600" h="21600">
+
+ <moveTo>
+ <pt x="0" y="20782" />
+ </moveTo>
+ <cubicBezTo>
+ <pt x="9298" y="23542" />
+ <pt x="9298" y="18022" />
+ <pt x="18595" y="18022" />
+ </cubicBezTo>
+ <lnTo>
+ <pt x="18595" y="3675" />
+ </lnTo>
+ <lnTo>
+ <pt x="0" y="3675" />
+ </lnTo>
+ <close />
+ <moveTo>
+ <pt x="1532" y="3675" />
+ </moveTo>
+ <lnTo>
+ <pt x="1532" y="1815" />
+ </lnTo>
+ <lnTo>
+ <pt x="20000" y="1815" />
+ </lnTo>
+ <lnTo>
+ <pt x="20000" y="16252" />
+ </lnTo>
+ <cubicBezTo>
+ <pt x="19298" y="16252" />
+ <pt x="18595" y="16352" />
+ <pt x="18595" y="16352" />
+ </cubicBezTo>
+ <lnTo>
+ <pt x="18595" y="3675" />
+ </lnTo>
+ <close />
+ <moveTo>
+ <pt x="2972" y="1815" />
+ </moveTo>
+ <lnTo>
+ <pt x="2972" y="0" />
+ </lnTo>
+ <lnTo>
+ <pt x="21600" y="0" />
+ </lnTo>
+ <lnTo>
+ <pt x="21600" y="14392" />
+ </lnTo>
+ <cubicBezTo>
+ <pt x="20800" y="14392" />
+ <pt x="20000" y="14467" />
+ <pt x="20000" y="14467" />
+ </cubicBezTo>
+ <lnTo>
+ <pt x="20000" y="1815" />
+ </lnTo>
+ <close />
+ </path>
+ <path fill="none" extrusionOk="false" w="21600" h="21600">
+
+ <moveTo>
+ <pt x="0" y="3675" />
+ </moveTo>
+ <lnTo>
+ <pt x="18595" y="3675" />
+ </lnTo>
+ <lnTo>
+ <pt x="18595" y="18022" />
+ </lnTo>
+ <cubicBezTo>
+ <pt x="9298" y="18022" />
+ <pt x="9298" y="23542" />
+ <pt x="0" y="20782" />
+ </cubicBezTo>
+ <close />
+ <moveTo>
+ <pt x="1532" y="3675" />
+ </moveTo>
+ <lnTo>
+ <pt x="1532" y="1815" />
+ </lnTo>
+ <lnTo>
+ <pt x="20000" y="1815" />
+ </lnTo>
+ <lnTo>
+ <pt x="20000" y="16252" />
+ </lnTo>
+ <cubicBezTo>
+ <pt x="19298" y="16252" />
+ <pt x="18595" y="16352" />
+ <pt x="18595" y="16352" />
+ </cubicBezTo>
+ <moveTo>
+ <pt x="2972" y="1815" />
+ </moveTo>
+ <lnTo>
+ <pt x="2972" y="0" />
+ </lnTo>
+ <lnTo>
+ <pt x="21600" y="0" />
+ </lnTo>
+ <lnTo>
+ <pt x="21600" y="14392" />
+ </lnTo>
+ <cubicBezTo>
+ <pt x="20800" y="14392" />
+ <pt x="20000" y="14467" />
+ <pt x="20000" y="14467" />
+ </cubicBezTo>
+ </path>
+ <path stroke="false" fill="none" w="21600" h="21600">
+
+ <moveTo>
+ <pt x="0" y="20782" />
+ </moveTo>
+ <cubicBezTo>
+ <pt x="9298" y="23542" />
+ <pt x="9298" y="18022" />
+ <pt x="18595" y="18022" />
+ </cubicBezTo>
+ <lnTo>
+ <pt x="18595" y="16352" />
+ </lnTo>
+ <cubicBezTo>
+ <pt x="18595" y="16352" />
+ <pt x="19298" y="16252" />
+ <pt x="20000" y="16252" />
+ </cubicBezTo>
+ <lnTo>
+ <pt x="20000" y="14467" />
+ </lnTo>
+ <cubicBezTo>
+ <pt x="20000" y="14467" />
+ <pt x="20800" y="14392" />
+ <pt x="21600" y="14392" />
+ </cubicBezTo>
+ <lnTo>
+ <pt x="21600" y="0" />
+ </lnTo>
+ <lnTo>
+ <pt x="2972" y="0" />
+ </lnTo>
+ <lnTo>
+ <pt x="2972" y="1815" />
+ </lnTo>
+ <lnTo>
+ <pt x="1532" y="1815" />
+ </lnTo>
+ <lnTo>
+ <pt x="1532" y="3675" />
+ </lnTo>
+ <lnTo>
+ <pt x="0" y="3675" />
+ </lnTo>
+ <close />
+ </path>
+ </pathLst>
+
+ </flowChartMultidocument>
+ <flowChartOfflineStorage>
+
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="x4" fmla="*/ w 3 4" />
+ </gdLst>
+
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="0">
+ <pos x="x4" y="vc" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="hc" y="b" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="wd4" y="vc" />
+ </cxn>
+ <cxn ang="3cd4">
+ <pos x="hc" y="t" />
+ </cxn>
+ </cxnLst>
+
+ <rect l="wd4" t="t" r="x4" b="vc" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path stroke="false" extrusionOk="false" w="2" h="2">
+
+ <moveTo>
+ <pt x="0" y="0" />
+ </moveTo>
+ <lnTo>
+ <pt x="2" y="0" />
+ </lnTo>
+ <lnTo>
+ <pt x="1" y="2" />
+ </lnTo>
+ <close />
+ </path>
+ <path fill="none" extrusionOk="false" w="5" h="5">
+
+ <moveTo>
+ <pt x="2" y="4" />
+ </moveTo>
+ <lnTo>
+ <pt x="3" y="4" />
+ </lnTo>
+ </path>
+ <path fill="none" extrusionOk="true" w="2" h="2">
+
+ <moveTo>
+ <pt x="0" y="0" />
+ </moveTo>
+ <lnTo>
+ <pt x="2" y="0" />
+ </lnTo>
+ <lnTo>
+ <pt x="1" y="2" />
+ </lnTo>
+ <close />
+ </path>
+ </pathLst>
+
+ </flowChartOfflineStorage>
+ <flowChartOffpageConnector>
+
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="y1" fmla="*/ h 4 5" />
+ </gdLst>
+
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="3cd4">
+ <pos x="hc" y="t" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="l" y="vc" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="hc" y="b" />
+ </cxn>
+ <cxn ang="0">
+ <pos x="r" y="vc" />
+ </cxn>
+ </cxnLst>
+
+ <rect l="l" t="t" r="r" b="y1" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path w="10" h="10">
+ <moveTo>
+ <pt x="0" y="0" />
+ </moveTo>
+ <lnTo>
+ <pt x="10" y="0" />
+ </lnTo>
+ <lnTo>
+ <pt x="10" y="8" />
+ </lnTo>
+ <lnTo>
+ <pt x="5" y="10" />
+ </lnTo>
+ <lnTo>
+ <pt x="0" y="8" />
+ </lnTo>
+ <close />
+ </path>
+ </pathLst>
+
+ </flowChartOffpageConnector>
+ <flowChartOnlineStorage>
+
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="x2" fmla="*/ w 5 6" />
+ </gdLst>
+
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="3cd4">
+ <pos x="hc" y="t" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="l" y="vc" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="hc" y="b" />
+ </cxn>
+ <cxn ang="0">
+ <pos x="x2" y="vc" />
+ </cxn>
+ </cxnLst>
+
+ <rect l="wd6" t="t" r="x2" b="b" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path w="6" h="6">
+ <moveTo>
+ <pt x="1" y="0" />
+ </moveTo>
+ <lnTo>
+ <pt x="6" y="0" />
+ </lnTo>
+ <arcTo wR="1" hR="3" stAng="3cd4" swAng="-10800000" />
+ <lnTo>
+ <pt x="1" y="6" />
+ </lnTo>
+ <arcTo wR="1" hR="3" stAng="cd4" swAng="cd2" />
+ <close />
+ </path>
+ </pathLst>
+
+ </flowChartOnlineStorage>
+ <flowChartOr>
+
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="idx" fmla="cos wd2 2700000" />
+ <gd name="idy" fmla="sin hd2 2700000" />
+ <gd name="il" fmla="+- hc 0 idx" />
+ <gd name="ir" fmla="+- hc idx 0" />
+ <gd name="it" fmla="+- vc 0 idy" />
+ <gd name="ib" fmla="+- vc idy 0" />
+ </gdLst>
+
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="3cd4">
+ <pos x="hc" y="t" />
+ </cxn>
+ <cxn ang="3cd4">
+ <pos x="il" y="it" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="l" y="vc" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="il" y="ib" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="hc" y="b" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="ir" y="ib" />
+ </cxn>
+ <cxn ang="0">
+ <pos x="r" y="vc" />
+ </cxn>
+ <cxn ang="3cd4">
+ <pos x="ir" y="it" />
+ </cxn>
+ </cxnLst>
+
+ <rect l="il" t="it" r="ir" b="ib" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path stroke="false" extrusionOk="false">
+
+ <moveTo>
+ <pt x="l" y="vc" />
+ </moveTo>
+ <arcTo wR="wd2" hR="hd2" stAng="cd2" swAng="cd4" />
+ <arcTo wR="wd2" hR="hd2" stAng="3cd4" swAng="cd4" />
+ <arcTo wR="wd2" hR="hd2" stAng="0" swAng="cd4" />
+ <arcTo wR="wd2" hR="hd2" stAng="cd4" swAng="cd4" />
+ <close />
+ </path>
+ <path fill="none" extrusionOk="false">
+
+ <moveTo>
+ <pt x="hc" y="t" />
+ </moveTo>
+ <lnTo>
+ <pt x="hc" y="b" />
+ </lnTo>
+ <moveTo>
+ <pt x="l" y="vc" />
+ </moveTo>
+ <lnTo>
+ <pt x="r" y="vc" />
+ </lnTo>
+ </path>
+ <path fill="none">
+
+ <moveTo>
+ <pt x="l" y="vc" />
+ </moveTo>
+ <arcTo wR="wd2" hR="hd2" stAng="cd2" swAng="cd4" />
+ <arcTo wR="wd2" hR="hd2" stAng="3cd4" swAng="cd4" />
+ <arcTo wR="wd2" hR="hd2" stAng="0" swAng="cd4" />
+ <arcTo wR="wd2" hR="hd2" stAng="cd4" swAng="cd4" />
+ <close />
+ </path>
+ </pathLst>
+
+ </flowChartOr>
+ <flowChartPredefinedProcess>
+
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="x2" fmla="*/ w 7 8" />
+ </gdLst>
+
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="3cd4">
+ <pos x="hc" y="t" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="l" y="vc" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="hc" y="b" />
+ </cxn>
+ <cxn ang="0">
+ <pos x="r" y="vc" />
+ </cxn>
+ </cxnLst>
+
+ <rect l="wd8" t="t" r="x2" b="b" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path stroke="false" extrusionOk="false" w="1" h="1">
+
+ <moveTo>
+ <pt x="0" y="0" />
+ </moveTo>
+ <lnTo>
+ <pt x="1" y="0" />
+ </lnTo>
+ <lnTo>
+ <pt x="1" y="1" />
+ </lnTo>
+ <lnTo>
+ <pt x="0" y="1" />
+ </lnTo>
+ <close />
+ </path>
+ <path fill="none" extrusionOk="false" w="8" h="8">
+
+ <moveTo>
+ <pt x="1" y="0" />
+ </moveTo>
+ <lnTo>
+ <pt x="1" y="8" />
+ </lnTo>
+ <moveTo>
+ <pt x="7" y="0" />
+ </moveTo>
+ <lnTo>
+ <pt x="7" y="8" />
+ </lnTo>
+ </path>
+ <path fill="none" w="1" h="1">
+
+ <moveTo>
+ <pt x="0" y="0" />
+ </moveTo>
+ <lnTo>
+ <pt x="1" y="0" />
+ </lnTo>
+ <lnTo>
+ <pt x="1" y="1" />
+ </lnTo>
+ <lnTo>
+ <pt x="0" y="1" />
+ </lnTo>
+ <close />
+ </path>
+ </pathLst>
+
+ </flowChartPredefinedProcess>
+ <flowChartPreparation>
+
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="x2" fmla="*/ w 4 5" />
+ </gdLst>
+
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="3cd4">
+ <pos x="hc" y="t" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="l" y="vc" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="hc" y="b" />
+ </cxn>
+ <cxn ang="0">
+ <pos x="r" y="vc" />
+ </cxn>
+ </cxnLst>
+
+ <rect l="wd5" t="t" r="x2" b="b" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path w="10" h="10">
+ <moveTo>
+ <pt x="0" y="5" />
+ </moveTo>
+ <lnTo>
+ <pt x="2" y="0" />
+ </lnTo>
+ <lnTo>
+ <pt x="8" y="0" />
+ </lnTo>
+ <lnTo>
+ <pt x="10" y="5" />
+ </lnTo>
+ <lnTo>
+ <pt x="8" y="10" />
+ </lnTo>
+ <lnTo>
+ <pt x="2" y="10" />
+ </lnTo>
+ <close />
+ </path>
+ </pathLst>
+
+ </flowChartPreparation>
+ <flowChartProcess>
+
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="3cd4">
+ <pos x="hc" y="t" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="l" y="vc" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="hc" y="b" />
+ </cxn>
+ <cxn ang="0">
+ <pos x="r" y="vc" />
+ </cxn>
+ </cxnLst>
+
+ <rect l="l" t="t" r="r" b="b" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path w="1" h="1">
+ <moveTo>
+ <pt x="0" y="0" />
+ </moveTo>
+ <lnTo>
+ <pt x="1" y="0" />
+ </lnTo>
+ <lnTo>
+ <pt x="1" y="1" />
+ </lnTo>
+ <lnTo>
+ <pt x="0" y="1" />
+ </lnTo>
+ <close />
+ </path>
+ </pathLst>
+
+ </flowChartProcess>
+ <flowChartPunchedCard>
+
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="3cd4">
+ <pos x="hc" y="t" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="l" y="vc" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="hc" y="b" />
+ </cxn>
+ <cxn ang="0">
+ <pos x="r" y="vc" />
+ </cxn>
+ </cxnLst>
+
+ <rect l="l" t="hd5" r="r" b="b" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path w="5" h="5">
+ <moveTo>
+ <pt x="0" y="1" />
+ </moveTo>
+ <lnTo>
+ <pt x="1" y="0" />
+ </lnTo>
+ <lnTo>
+ <pt x="5" y="0" />
+ </lnTo>
+ <lnTo>
+ <pt x="5" y="5" />
+ </lnTo>
+ <lnTo>
+ <pt x="0" y="5" />
+ </lnTo>
+ <close />
+ </path>
+ </pathLst>
+
+ </flowChartPunchedCard>
+ <flowChartPunchedTape>
+
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="y2" fmla="*/ h 9 10" />
+ <gd name="ib" fmla="*/ h 4 5" />
+ </gdLst>
+
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="3cd4">
+ <pos x="hc" y="hd10" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="l" y="vc" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="hc" y="y2" />
+ </cxn>
+ <cxn ang="0">
+ <pos x="r" y="vc" />
+ </cxn>
+ </cxnLst>
+
+ <rect l="l" t="hd5" r="r" b="ib" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path w="20" h="20">
+ <moveTo>
+ <pt x="0" y="2" />
+ </moveTo>
+ <arcTo wR="5" hR="2" stAng="cd2" swAng="-10800000" />
+ <arcTo wR="5" hR="2" stAng="cd2" swAng="cd2" />
+ <lnTo>
+ <pt x="20" y="18" />
+ </lnTo>
+ <arcTo wR="5" hR="2" stAng="0" swAng="-10800000" />
+ <arcTo wR="5" hR="2" stAng="0" swAng="cd2" />
+ <close />
+ </path>
+ </pathLst>
+
+ </flowChartPunchedTape>
+ <flowChartSort>
+
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="ir" fmla="*/ w 3 4" />
+ <gd name="ib" fmla="*/ h 3 4" />
+ </gdLst>
+
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="3cd4">
+ <pos x="hc" y="t" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="l" y="vc" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="hc" y="b" />
+ </cxn>
+ <cxn ang="0">
+ <pos x="r" y="vc" />
+ </cxn>
+ </cxnLst>
+
+ <rect l="wd4" t="hd4" r="ir" b="ib" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path stroke="false" extrusionOk="false" w="2" h="2">
+
+ <moveTo>
+ <pt x="0" y="1" />
+ </moveTo>
+ <lnTo>
+ <pt x="1" y="0" />
+ </lnTo>
+ <lnTo>
+ <pt x="2" y="1" />
+ </lnTo>
+ <lnTo>
+ <pt x="1" y="2" />
+ </lnTo>
+ <close />
+ </path>
+ <path fill="none" extrusionOk="false" w="2" h="2">
+
+ <moveTo>
+ <pt x="0" y="1" />
+ </moveTo>
+ <lnTo>
+ <pt x="2" y="1" />
+ </lnTo>
+ </path>
+ <path fill="none" w="2" h="2">
+
+ <moveTo>
+ <pt x="0" y="1" />
+ </moveTo>
+ <lnTo>
+ <pt x="1" y="0" />
+ </lnTo>
+ <lnTo>
+ <pt x="2" y="1" />
+ </lnTo>
+ <lnTo>
+ <pt x="1" y="2" />
+ </lnTo>
+ <close />
+ </path>
+ </pathLst>
+
+ </flowChartSort>
+ <flowChartSummingJunction>
+
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="idx" fmla="cos wd2 2700000" />
+ <gd name="idy" fmla="sin hd2 2700000" />
+ <gd name="il" fmla="+- hc 0 idx" />
+ <gd name="ir" fmla="+- hc idx 0" />
+ <gd name="it" fmla="+- vc 0 idy" />
+ <gd name="ib" fmla="+- vc idy 0" />
+ </gdLst>
+
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="3cd4">
+ <pos x="hc" y="t" />
+ </cxn>
+ <cxn ang="3cd4">
+ <pos x="il" y="it" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="l" y="vc" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="il" y="ib" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="hc" y="b" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="ir" y="ib" />
+ </cxn>
+ <cxn ang="0">
+ <pos x="r" y="vc" />
+ </cxn>
+ <cxn ang="3cd4">
+ <pos x="ir" y="it" />
+ </cxn>
+ </cxnLst>
+
+ <rect l="il" t="it" r="ir" b="ib" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path stroke="false" extrusionOk="false">
+
+ <moveTo>
+ <pt x="l" y="vc" />
+ </moveTo>
+ <arcTo wR="wd2" hR="hd2" stAng="cd2" swAng="cd4" />
+ <arcTo wR="wd2" hR="hd2" stAng="3cd4" swAng="cd4" />
+ <arcTo wR="wd2" hR="hd2" stAng="0" swAng="cd4" />
+ <arcTo wR="wd2" hR="hd2" stAng="cd4" swAng="cd4" />
+ <close />
+ </path>
+ <path fill="none" extrusionOk="false">
+
+ <moveTo>
+ <pt x="il" y="it" />
+ </moveTo>
+ <lnTo>
+ <pt x="ir" y="ib" />
+ </lnTo>
+ <moveTo>
+ <pt x="ir" y="it" />
+ </moveTo>
+ <lnTo>
+ <pt x="il" y="ib" />
+ </lnTo>
+ </path>
+ <path fill="none">
+
+ <moveTo>
+ <pt x="l" y="vc" />
+ </moveTo>
+ <arcTo wR="wd2" hR="hd2" stAng="cd2" swAng="cd4" />
+ <arcTo wR="wd2" hR="hd2" stAng="3cd4" swAng="cd4" />
+ <arcTo wR="wd2" hR="hd2" stAng="0" swAng="cd4" />
+ <arcTo wR="wd2" hR="hd2" stAng="cd4" swAng="cd4" />
+ <close />
+ </path>
+ </pathLst>
+
+ </flowChartSummingJunction>
+ <flowChartTerminator>
+
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="il" fmla="*/ w 1018 21600" />
+ <gd name="ir" fmla="*/ w 20582 21600" />
+ <gd name="it" fmla="*/ h 3163 21600" />
+ <gd name="ib" fmla="*/ h 18437 21600" />
+ </gdLst>
+
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="3cd4">
+ <pos x="hc" y="t" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="l" y="vc" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="hc" y="b" />
+ </cxn>
+ <cxn ang="0">
+ <pos x="r" y="vc" />
+ </cxn>
+ </cxnLst>
+
+ <rect l="il" t="it" r="ir" b="ib" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path w="21600" h="21600">
+ <moveTo>
+ <pt x="3475" y="0" />
+ </moveTo>
+ <lnTo>
+ <pt x="18125" y="0" />
+ </lnTo>
+ <arcTo wR="3475" hR="10800" stAng="3cd4" swAng="cd2" />
+ <lnTo>
+ <pt x="3475" y="21600" />
+ </lnTo>
+ <arcTo wR="3475" hR="10800" stAng="cd4" swAng="cd2" />
+ <close />
+ </path>
+ </pathLst>
+
+ </flowChartTerminator>
+ <foldedCorner>
+
+ <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="adj" fmla="val 16667" />
+ </avLst>
+
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="a" fmla="pin 0 adj 50000" />
+ <gd name="dy2" fmla="*/ ss a 100000" />
+ <gd name="dy1" fmla="*/ dy2 1 5" />
+ <gd name="x1" fmla="+- r 0 dy2" />
+ <gd name="x2" fmla="+- x1 dy1 0" />
+ <gd name="y2" fmla="+- b 0 dy2" />
+ <gd name="y1" fmla="+- y2 dy1 0" />
+ </gdLst>
+
+ <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <ahXY gdRefX="adj" minX="0" maxX="50000">
+ <pos x="x1" y="b" />
+ </ahXY>
+ </ahLst>
+
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="3cd4">
+ <pos x="hc" y="t" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="l" y="vc" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="hc" y="b" />
+ </cxn>
+ <cxn ang="0">
+ <pos x="r" y="vc" />
+ </cxn>
+ </cxnLst>
+
+ <rect l="l" t="t" r="r" b="y2" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path stroke="false" extrusionOk="false">
+
+ <moveTo>
+ <pt x="l" y="t" />
+ </moveTo>
+ <lnTo>
+ <pt x="r" y="t" />
+ </lnTo>
+ <lnTo>
+ <pt x="r" y="y2" />
+ </lnTo>
+ <lnTo>
+ <pt x="x1" y="b" />
+ </lnTo>
+ <lnTo>
+ <pt x="l" y="b" />
+ </lnTo>
+ <close />
+ </path>
+ <path stroke="false" fill="darkenLess" extrusionOk="false">
+
+ <moveTo>
+ <pt x="x1" y="b" />
+ </moveTo>
+ <lnTo>
+ <pt x="x2" y="y1" />
+ </lnTo>
+ <lnTo>
+ <pt x="r" y="y2" />
+ </lnTo>
+ <close />
+ </path>
+ <path fill="none" extrusionOk="false">
+ <moveTo>
+ <pt x="x1" y="b" />
+ </moveTo>
+ <lnTo>
+ <pt x="x2" y="y1" />
+ </lnTo>
+ <lnTo>
+ <pt x="r" y="y2" />
+ </lnTo>
+ <lnTo>
+ <pt x="x1" y="b" />
+ </lnTo>
+ <lnTo>
+ <pt x="l" y="b" />
+ </lnTo>
+ <lnTo>
+ <pt x="l" y="t" />
+ </lnTo>
+ <lnTo>
+ <pt x="r" y="t" />
+ </lnTo>
+ <lnTo>
+ <pt x="r" y="y2" />
+ </lnTo>
+ </path>
+ </pathLst>
+
+ </foldedCorner>
+ <frame>
+
+ <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="adj1" fmla="val 12500" />
+
+ </avLst>
+
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="a1" fmla="pin 0 adj1 50000" />
+ <gd name="x1" fmla="*/ ss a1 100000" />
+
+ <gd name="x4" fmla="+- r 0 x1" />
+
+
+
+ <gd name="y4" fmla="+- b 0 x1" />
+
+ </gdLst>
+
+ <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <ahXY gdRefX="adj1" minX="0" maxX="50000">
+ <pos x="x1" y="t" />
+ </ahXY>
+ </ahLst>
+
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="3cd4">
+ <pos x="hc" y="t" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="l" y="vc" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="hc" y="b" />
+ </cxn>
+ <cxn ang="0">
+ <pos x="r" y="vc" />
+ </cxn>
+ </cxnLst>
+
+ <rect l="x1" t="x1" r="x4" b="y4" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path>
+
+ <moveTo>
+ <pt x="l" y="t" />
+ </moveTo>
+ <lnTo>
+ <pt x="r" y="t" />
+ </lnTo>
+ <lnTo>
+ <pt x="r" y="b" />
+ </lnTo>
+ <lnTo>
+ <pt x="l" y="b" />
+ </lnTo>
+ <close />
+ <moveTo>
+ <pt x="x1" y="x1" />
+ </moveTo>
+ <lnTo>
+ <pt x="x1" y="y4" />
+ </lnTo>
+ <lnTo>
+ <pt x="x4" y="y4" />
+ </lnTo>
+ <lnTo>
+ <pt x="x4" y="x1" />
+ </lnTo>
+ <close />
+ </path>
+ </pathLst>
+
+ </frame>
+ <funnel>
+
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+
+ <gd name="d" fmla="*/ ss 1 20" />
+
+
+ <gd name="rw2" fmla="+- wd2 0 d" />
+
+ <gd name="rh2" fmla="+- hd4 0 d" />
+
+
+
+ <gd name="t1" fmla="cos wd2 480000" />
+
+ <gd name="t2" fmla="sin hd4 480000" />
+
+ <gd name="da" fmla="at2 t1 t2" />
+
+
+ <gd name="2da" fmla="*/ da 2 1" />
+ <gd name="stAng1" fmla="+- cd2 0 da" />
+ <gd name="swAng1" fmla="+- cd2 2da 0" />
+
+
+ <gd name="swAng3" fmla="+- cd2 0 2da" />
+
+
+ <gd name="rw3" fmla="*/ wd2 1 4" />
+ <gd name="rh3" fmla="*/ hd4 1 4" />
+
+
+ <gd name="ct1" fmla="cos hd4 stAng1" />
+ <gd name="st1" fmla="sin wd2 stAng1" />
+ <gd name="m1" fmla="mod ct1 st1 0" />
+ <gd name="n1" fmla="*/ wd2 hd4 m1" />
+ <gd name="dx1" fmla="cos n1 stAng1" />
+ <gd name="dy1" fmla="sin n1 stAng1" />
+ <gd name="x1" fmla="+- hc dx1 0" />
+ <gd name="y1" fmla="+- hd4 dy1 0" />
+
+
+ <gd name="ct3" fmla="cos rh3 da" />
+ <gd name="st3" fmla="sin rw3 da" />
+ <gd name="m3" fmla="mod ct3 st3 0" />
+ <gd name="n3" fmla="*/ rw3 rh3 m3" />
+ <gd name="dx3" fmla="cos n3 da" />
+ <gd name="dy3" fmla="sin n3 da" />
+ <gd name="x3" fmla="+- hc dx3 0" />
+ <gd name="vc3" fmla="+- b 0 rh3" />
+ <gd name="y2" fmla="+- vc3 dy3 0" />
+
+
+ <gd name="x2" fmla="+- wd2 0 rw2" />
+
+ <gd name="cd" fmla="*/ cd2 2 1" />
+ </gdLst>
+
+ <rect l="l" t="t" r="r" b="b" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path>
+ <moveTo>
+ <pt x="x1" y="y1" />
+ </moveTo>
+ <arcTo hR="hd4" wR="wd2" stAng="stAng1" swAng="swAng1" />
+ <lnTo>
+ <pt x="x3" y="y2" />
+ </lnTo>
+ <arcTo hR="rh3" wR="rw3" stAng="da" swAng="swAng3" />
+ <close />
+ <moveTo>
+ <pt x="x2" y="hd4" />
+ </moveTo>
+ <arcTo hR="rh2" wR="rw2" stAng="cd2" swAng="-21600000" />
+ <close />
+ </path>
+ </pathLst>
+
+ </funnel>
+ <gear6>
+
+ <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="adj1" fmla="val 15000" />
+
+ <gd name="adj2" fmla="val 3526" />
+
+ </avLst>
+
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+
+
+
+
+ <gd name="a1" fmla="pin 0 adj1 20000" />
+ <gd name="a2" fmla="pin 0 adj2 5358" />
+
+
+ <gd name="th" fmla="*/ ss a1 100000" />
+ <gd name="lFD" fmla="*/ ss a2 100000" />
+
+ <gd name="th2" fmla="*/ th 1 2" />
+ <gd name="l2" fmla="*/ lFD 1 2" />
+ <gd name="l3" fmla="+- th2 l2 0" />
+
+
+ <gd name="rh" fmla="+- hd2 0 th" />
+ <gd name="rw" fmla="+- wd2 0 th" />
+
+
+ <gd name="dr" fmla="+- rw 0 rh" />
+ <gd name="maxr" fmla="?: dr rh rw" />
+ <gd name="ha" fmla="at2 maxr l3" />
+
+
+ <gd name="aA1" fmla="+- 19800000 0 ha" />
+ <gd name="aD1" fmla="+- 19800000 ha 0" />
+
+
+ <gd name="ta11" fmla="cos rw aA1" />
+ <gd name="ta12" fmla="sin rh aA1" />
+ <gd name="bA1" fmla="at2 ta11 ta12" />
+
+ <gd name="cta1" fmla="cos rh bA1" />
+ <gd name="sta1" fmla="sin rw bA1" />
+ <gd name="ma1" fmla="mod cta1 sta1 0" />
+ <gd name="na1" fmla="*/ rw rh ma1" />
+ <gd name="dxa1" fmla="cos na1 bA1" />
+ <gd name="dya1" fmla="sin na1 bA1" />
+ <gd name="xA1" fmla="+- hc dxa1 0" />
+ <gd name="yA1" fmla="+- vc dya1 0" />
+
+
+ <gd name="td11" fmla="cos rw aD1" />
+ <gd name="td12" fmla="sin rh aD1" />
+ <gd name="bD1" fmla="at2 td11 td12" />
+
+ <gd name="ctd1" fmla="cos rh bD1" />
+ <gd name="std1" fmla="sin rw bD1" />
+ <gd name="md1" fmla="mod ctd1 std1 0" />
+ <gd name="nd1" fmla="*/ rw rh md1" />
+ <gd name="dxd1" fmla="cos nd1 bD1" />
+ <gd name="dyd1" fmla="sin nd1 bD1" />
+ <gd name="xD1" fmla="+- hc dxd1 0" />
+ <gd name="yD1" fmla="+- vc dyd1 0" />
+
+
+ <gd name="xAD1" fmla="+- xA1 0 xD1" />
+ <gd name="yAD1" fmla="+- yA1 0 yD1" />
+ <gd name="lAD1" fmla="mod xAD1 yAD1 0" />
+ <gd name="a1" fmla="at2 yAD1 xAD1" />
+
+
+ <gd name="dxF1" fmla="sin lFD a1" />
+ <gd name="dyF1" fmla="cos lFD a1" />
+ <gd name="xF1" fmla="+- xD1 dxF1 0" />
+ <gd name="yF1" fmla="+- yD1 dyF1 0" />
+ <gd name="xE1" fmla="+- xA1 0 dxF1" />
+ <gd name="yE1" fmla="+- yA1 0 dyF1" />
+
+
+ <gd name="yC1t" fmla="sin th a1" />
+ <gd name="xC1t" fmla="cos th a1" />
+ <gd name="yC1" fmla="+- yF1 yC1t 0" />
+ <gd name="xC1" fmla="+- xF1 0 xC1t" />
+
+
+ <gd name="yB1" fmla="+- yE1 yC1t 0" />
+ <gd name="xB1" fmla="+- xE1 0 xC1t" />
+
+
+ <gd name="aD6" fmla="+- 3cd4 ha 0" />
+
+
+ <gd name="td61" fmla="cos rw aD6" />
+ <gd name="td62" fmla="sin rh aD6" />
+ <gd name="bD6" fmla="at2 td61 td62" />
+
+ <gd name="ctd6" fmla="cos rh bD6" />
+ <gd name="std6" fmla="sin rw bD6" />
+ <gd name="md6" fmla="mod ctd6 std6 0" />
+ <gd name="nd6" fmla="*/ rw rh md6" />
+ <gd name="dxd6" fmla="cos nd6 bD6" />
+ <gd name="dyd6" fmla="sin nd6 bD6" />
+ <gd name="xD6" fmla="+- hc dxd6 0" />
+ <gd name="yD6" fmla="+- vc dyd6 0" />
+
+
+ <gd name="xA6" fmla="+- hc 0 dxd6" />
+
+
+ <gd name="xF6" fmla="+- xD6 0 lFD" />
+ <gd name="xE6" fmla="+- xA6 lFD 0" />
+
+
+ <gd name="yC6" fmla="+- yD6 0 th" />
+
+ <gd name="swAng1" fmla="+- bA1 0 bD6" />
+
+
+ <gd name="aA2" fmla="+- 1800000 0 ha" />
+ <gd name="aD2" fmla="+- 1800000 ha 0" />
+
+
+ <gd name="ta21" fmla="cos rw aA2" />
+ <gd name="ta22" fmla="sin rh aA2" />
+ <gd name="bA2" fmla="at2 ta21 ta22" />
+
+ <gd name="yA2" fmla="+- h 0 yD1" />
+
+
+ <gd name="td21" fmla="cos rw aD2" />
+ <gd name="td22" fmla="sin rh aD2" />
+ <gd name="bD2" fmla="at2 td21 td22" />
+
+ <gd name="yD2" fmla="+- h 0 yA1" />
+
+
+ <gd name="yC2" fmla="+- h 0 yB1" />
+
+
+ <gd name="yB2" fmla="+- h 0 yC1" />
+ <gd name="xB2" fmla="val xC1" />
+
+ <gd name="swAng2" fmla="+- bA2 0 bD1" />
+
+
+ <gd name="aD3" fmla="+- cd4 ha 0" />
+
+ <gd name="td31" fmla="cos rw aD3" />
+ <gd name="td32" fmla="sin rh aD3" />
+ <gd name="bD3" fmla="at2 td31 td32" />
+
+
+ <gd name="yD3" fmla="+- h 0 yD6" />
+
+
+ <gd name="yB3" fmla="+- h 0 yC6" />
+
+
+ <gd name="aD4" fmla="+- 9000000 ha 0" />
+
+ <gd name="td41" fmla="cos rw aD4" />
+ <gd name="td42" fmla="sin rh aD4" />
+ <gd name="bD4" fmla="at2 td41 td42" />
+
+
+ <gd name="xD4" fmla="+- w 0 xD1" />
+
+
+ <gd name="xC4" fmla="+- w 0 xC1" />
+
+
+ <gd name="xB4" fmla="+- w 0 xB1" />
+
+
+ <gd name="aD5" fmla="+- 12600000 ha 0" />
+
+ <gd name="td51" fmla="cos rw aD5" />
+ <gd name="td52" fmla="sin rh aD5" />
+ <gd name="bD5" fmla="at2 td51 td52" />
+
+
+ <gd name="xD5" fmla="+- w 0 xA1" />
+
+
+ <gd name="xC5" fmla="+- w 0 xB1" />
+
+
+ <gd name="xB5" fmla="+- w 0 xC1" />
+
+
+ <gd name="xCxn1" fmla="+/ xB1 xC1 2" />
+ <gd name="yCxn1" fmla="+/ yB1 yC1 2" />
+ <gd name="yCxn2" fmla="+- b 0 yCxn1" />
+ <gd name="xCxn4" fmla="+/ r 0 xCxn1" />
+ </gdLst>
+
+ <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <ahXY gdRefY="adj1" minY="0" maxY="20000">
+ <pos x="xD6" y="yD6" />
+ </ahXY>
+ <ahXY gdRefX="adj2" minX="0" maxX="5358">
+ <pos x="xA6" y="yD6" />
+ </ahXY>
+
+ </ahLst>
+
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="19800000">
+ <pos x="xCxn1" y="yCxn1" />
+ </cxn>
+
+ <cxn ang="1800000">
+ <pos x="xCxn1" y="yCxn2" />
+ </cxn>
+
+ <cxn ang="cd4">
+ <pos x="hc" y="yB3" />
+ </cxn>
+
+ <cxn ang="9000000">
+ <pos x="xCxn4" y="yCxn2" />
+ </cxn>
+
+ <cxn ang="12600000">
+ <pos x="xCxn4" y="yCxn1" />
+ </cxn>
+
+ <cxn ang="3cd4">
+ <pos x="hc" y="yC6" />
+ </cxn>
+
+ </cxnLst>
+
+ <rect l="xD5" t="yA1" r="xA1" b="yD2" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path>
+ <moveTo>
+ <pt x="xA1" y="yA1" />
+ </moveTo>
+ <lnTo>
+ <pt x="xB1" y="yB1" />
+ </lnTo>
+ <lnTo>
+ <pt x="xC1" y="yC1" />
+ </lnTo>
+ <lnTo>
+ <pt x="xD1" y="yD1" />
+ </lnTo>
+ <arcTo hR="rh" wR="rw" stAng="bD1" swAng="swAng2" />
+
+ <lnTo>
+ <pt x="xC1" y="yB2" />
+ </lnTo>
+ <lnTo>
+ <pt x="xB1" y="yC2" />
+ </lnTo>
+ <lnTo>
+ <pt x="xA1" y="yD2" />
+ </lnTo>
+ <arcTo hR="rh" wR="rw" stAng="bD2" swAng="swAng1" />
+
+ <lnTo>
+ <pt x="xF6" y="yB3" />
+ </lnTo>
+ <lnTo>
+ <pt x="xE6" y="yB3" />
+ </lnTo>
+ <lnTo>
+ <pt x="xA6" y="yD3" />
+ </lnTo>
+ <arcTo hR="rh" wR="rw" stAng="bD3" swAng="swAng1" />
+
+ <lnTo>
+ <pt x="xB4" y="yC2" />
+ </lnTo>
+ <lnTo>
+ <pt x="xC4" y="yB2" />
+ </lnTo>
+ <lnTo>
+ <pt x="xD4" y="yA2" />
+ </lnTo>
+ <arcTo hR="rh" wR="rw" stAng="bD4" swAng="swAng2" />
+
+ <lnTo>
+ <pt x="xB5" y="yC1" />
+ </lnTo>
+ <lnTo>
+ <pt x="xC5" y="yB1" />
+ </lnTo>
+ <lnTo>
+ <pt x="xD5" y="yA1" />
+ </lnTo>
+ <arcTo hR="rh" wR="rw" stAng="bD5" swAng="swAng1" />
+
+ <lnTo>
+ <pt x="xE6" y="yC6" />
+ </lnTo>
+ <lnTo>
+ <pt x="xF6" y="yC6" />
+ </lnTo>
+ <lnTo>
+ <pt x="xD6" y="yD6" />
+ </lnTo>
+ <arcTo hR="rh" wR="rw" stAng="bD6" swAng="swAng1" />
+ <close />
+ </path>
+ </pathLst>
+
+ </gear6>
+ <gear9>
+
+ <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="adj1" fmla="val 10000" />
+
+ <gd name="adj2" fmla="val 1763" />
+
+ </avLst>
+
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+
+
+
+
+ <gd name="a1" fmla="pin 0 adj1 20000" />
+ <gd name="a2" fmla="pin 0 adj2 2679" />
+
+
+ <gd name="th" fmla="*/ ss a1 100000" />
+ <gd name="lFD" fmla="*/ ss a2 100000" />
+
+ <gd name="th2" fmla="*/ th 1 2" />
+ <gd name="l2" fmla="*/ lFD 1 2" />
+ <gd name="l3" fmla="+- th2 l2 0" />
+
+
+ <gd name="rh" fmla="+- hd2 0 th" />
+ <gd name="rw" fmla="+- wd2 0 th" />
+
+
+ <gd name="dr" fmla="+- rw 0 rh" />
+ <gd name="maxr" fmla="?: dr rh rw" />
+ <gd name="ha" fmla="at2 maxr l3" />
+
+
+ <gd name="aA1" fmla="+- 18600000 0 ha" />
+ <gd name="aD1" fmla="+- 18600000 ha 0" />
+
+
+ <gd name="ta11" fmla="cos rw aA1" />
+ <gd name="ta12" fmla="sin rh aA1" />
+ <gd name="bA1" fmla="at2 ta11 ta12" />
+
+ <gd name="cta1" fmla="cos rh bA1" />
+ <gd name="sta1" fmla="sin rw bA1" />
+ <gd name="ma1" fmla="mod cta1 sta1 0" />
+ <gd name="na1" fmla="*/ rw rh ma1" />
+ <gd name="dxa1" fmla="cos na1 bA1" />
+ <gd name="dya1" fmla="sin na1 bA1" />
+ <gd name="xA1" fmla="+- hc dxa1 0" />
+ <gd name="yA1" fmla="+- vc dya1 0" />
+
+
+ <gd name="td11" fmla="cos rw aD1" />
+ <gd name="td12" fmla="sin rh aD1" />
+ <gd name="bD1" fmla="at2 td11 td12" />
+
+ <gd name="ctd1" fmla="cos rh bD1" />
+ <gd name="std1" fmla="sin rw bD1" />
+ <gd name="md1" fmla="mod ctd1 std1 0" />
+ <gd name="nd1" fmla="*/ rw rh md1" />
+ <gd name="dxd1" fmla="cos nd1 bD1" />
+ <gd name="dyd1" fmla="sin nd1 bD1" />
+ <gd name="xD1" fmla="+- hc dxd1 0" />
+ <gd name="yD1" fmla="+- vc dyd1 0" />
+
+
+ <gd name="xAD1" fmla="+- xA1 0 xD1" />
+ <gd name="yAD1" fmla="+- yA1 0 yD1" />
+ <gd name="lAD1" fmla="mod xAD1 yAD1 0" />
+ <gd name="a1" fmla="at2 yAD1 xAD1" />
+
+
+ <gd name="dxF1" fmla="sin lFD a1" />
+ <gd name="dyF1" fmla="cos lFD a1" />
+ <gd name="xF1" fmla="+- xD1 dxF1 0" />
+ <gd name="yF1" fmla="+- yD1 dyF1 0" />
+ <gd name="xE1" fmla="+- xA1 0 dxF1" />
+ <gd name="yE1" fmla="+- yA1 0 dyF1" />
+
+
+ <gd name="yC1t" fmla="sin th a1" />
+ <gd name="xC1t" fmla="cos th a1" />
+ <gd name="yC1" fmla="+- yF1 yC1t 0" />
+ <gd name="xC1" fmla="+- xF1 0 xC1t" />
+
+
+ <gd name="yB1" fmla="+- yE1 yC1t 0" />
+ <gd name="xB1" fmla="+- xE1 0 xC1t" />
+
+
+ <gd name="aA2" fmla="+- 21000000 0 ha" />
+ <gd name="aD2" fmla="+- 21000000 ha 0" />
+
+
+ <gd name="ta21" fmla="cos rw aA2" />
+ <gd name="ta22" fmla="sin rh aA2" />
+ <gd name="bA2" fmla="at2 ta21 ta22" />
+
+ <gd name="cta2" fmla="cos rh bA2" />
+ <gd name="sta2" fmla="sin rw bA2" />
+ <gd name="ma2" fmla="mod cta2 sta2 0" />
+ <gd name="na2" fmla="*/ rw rh ma2" />
+ <gd name="dxa2" fmla="cos na2 bA2" />
+ <gd name="dya2" fmla="sin na2 bA2" />
+ <gd name="xA2" fmla="+- hc dxa2 0" />
+ <gd name="yA2" fmla="+- vc dya2 0" />
+
+
+ <gd name="td21" fmla="cos rw aD2" />
+ <gd name="td22" fmla="sin rh aD2" />
+ <gd name="bD2" fmla="at2 td21 td22" />
+
+ <gd name="ctd2" fmla="cos rh bD2" />
+ <gd name="std2" fmla="sin rw bD2" />
+ <gd name="md2" fmla="mod ctd2 std2 0" />
+ <gd name="nd2" fmla="*/ rw rh md2" />
+ <gd name="dxd2" fmla="cos nd2 bD2" />
+ <gd name="dyd2" fmla="sin nd2 bD2" />
+ <gd name="xD2" fmla="+- hc dxd2 0" />
+ <gd name="yD2" fmla="+- vc dyd2 0" />
+
+
+ <gd name="xAD2" fmla="+- xA2 0 xD2" />
+ <gd name="yAD2" fmla="+- yA2 0 yD2" />
+ <gd name="lAD2" fmla="mod xAD2 yAD2 0" />
+ <gd name="a2" fmla="at2 yAD2 xAD2" />
+
+
+ <gd name="dxF2" fmla="sin lFD a2" />
+ <gd name="dyF2" fmla="cos lFD a2" />
+ <gd name="xF2" fmla="+- xD2 dxF2 0" />
+ <gd name="yF2" fmla="+- yD2 dyF2 0" />
+ <gd name="xE2" fmla="+- xA2 0 dxF2" />
+ <gd name="yE2" fmla="+- yA2 0 dyF2" />
+
+
+ <gd name="yC2t" fmla="sin th a2" />
+ <gd name="xC2t" fmla="cos th a2" />
+ <gd name="yC2" fmla="+- yF2 yC2t 0" />
+ <gd name="xC2" fmla="+- xF2 0 xC2t" />
+
+
+ <gd name="yB2" fmla="+- yE2 yC2t 0" />
+ <gd name="xB2" fmla="+- xE2 0 xC2t" />
+
+ <gd name="swAng1" fmla="+- bA2 0 bD1" />
+
+
+ <gd name="aA3" fmla="+- 1800000 0 ha" />
+ <gd name="aD3" fmla="+- 1800000 ha 0" />
+
+
+ <gd name="ta31" fmla="cos rw aA3" />
+ <gd name="ta32" fmla="sin rh aA3" />
+ <gd name="bA3" fmla="at2 ta31 ta32" />
+
+ <gd name="cta3" fmla="cos rh bA3" />
+ <gd name="sta3" fmla="sin rw bA3" />
+ <gd name="ma3" fmla="mod cta3 sta3 0" />
+ <gd name="na3" fmla="*/ rw rh ma3" />
+ <gd name="dxa3" fmla="cos na3 bA3" />
+ <gd name="dya3" fmla="sin na3 bA3" />
+ <gd name="xA3" fmla="+- hc dxa3 0" />
+ <gd name="yA3" fmla="+- vc dya3 0" />
+
+
+ <gd name="td31" fmla="cos rw aD3" />
+ <gd name="td32" fmla="sin rh aD3" />
+ <gd name="bD3" fmla="at2 td31 td32" />
+
+ <gd name="ctd3" fmla="cos rh bD3" />
+ <gd name="std3" fmla="sin rw bD3" />
+ <gd name="md3" fmla="mod ctd3 std3 0" />
+ <gd name="nd3" fmla="*/ rw rh md3" />
+ <gd name="dxd3" fmla="cos nd3 bD3" />
+ <gd name="dyd3" fmla="sin nd3 bD3" />
+ <gd name="xD3" fmla="+- hc dxd3 0" />
+ <gd name="yD3" fmla="+- vc dyd3 0" />
+
+
+ <gd name="xAD3" fmla="+- xA3 0 xD3" />
+ <gd name="yAD3" fmla="+- yA3 0 yD3" />
+ <gd name="lAD3" fmla="mod xAD3 yAD3 0" />
+ <gd name="a3" fmla="at2 yAD3 xAD3" />
+
+
+ <gd name="dxF3" fmla="sin lFD a3" />
+ <gd name="dyF3" fmla="cos lFD a3" />
+ <gd name="xF3" fmla="+- xD3 dxF3 0" />
+ <gd name="yF3" fmla="+- yD3 dyF3 0" />
+ <gd name="xE3" fmla="+- xA3 0 dxF3" />
+ <gd name="yE3" fmla="+- yA3 0 dyF3" />
+
+
+ <gd name="yC3t" fmla="sin th a3" />
+ <gd name="xC3t" fmla="cos th a3" />
+ <gd name="yC3" fmla="+- yF3 yC3t 0" />
+ <gd name="xC3" fmla="+- xF3 0 xC3t" />
+
+
+ <gd name="yB3" fmla="+- yE3 yC3t 0" />
+ <gd name="xB3" fmla="+- xE3 0 xC3t" />
+
+ <gd name="swAng2" fmla="+- bA3 0 bD2" />
+
+
+ <gd name="aA4" fmla="+- 4200000 0 ha" />
+ <gd name="aD4" fmla="+- 4200000 ha 0" />
+
+
+ <gd name="ta41" fmla="cos rw aA4" />
+ <gd name="ta42" fmla="sin rh aA4" />
+ <gd name="bA4" fmla="at2 ta41 ta42" />
+
+ <gd name="cta4" fmla="cos rh bA4" />
+ <gd name="sta4" fmla="sin rw bA4" />
+ <gd name="ma4" fmla="mod cta4 sta4 0" />
+ <gd name="na4" fmla="*/ rw rh ma4" />
+ <gd name="dxa4" fmla="cos na4 bA4" />
+ <gd name="dya4" fmla="sin na4 bA4" />
+ <gd name="xA4" fmla="+- hc dxa4 0" />
+ <gd name="yA4" fmla="+- vc dya4 0" />
+
+
+ <gd name="td41" fmla="cos rw aD4" />
+ <gd name="td42" fmla="sin rh aD4" />
+ <gd name="bD4" fmla="at2 td41 td42" />
+
+ <gd name="ctd4" fmla="cos rh bD4" />
+ <gd name="std4" fmla="sin rw bD4" />
+ <gd name="md4" fmla="mod ctd4 std4 0" />
+ <gd name="nd4" fmla="*/ rw rh md4" />
+ <gd name="dxd4" fmla="cos nd4 bD4" />
+ <gd name="dyd4" fmla="sin nd4 bD4" />
+ <gd name="xD4" fmla="+- hc dxd4 0" />
+ <gd name="yD4" fmla="+- vc dyd4 0" />
+
+
+ <gd name="xAD4" fmla="+- xA4 0 xD4" />
+ <gd name="yAD4" fmla="+- yA4 0 yD4" />
+ <gd name="lAD4" fmla="mod xAD4 yAD4 0" />
+ <gd name="a4" fmla="at2 yAD4 xAD4" />
+
+
+ <gd name="dxF4" fmla="sin lFD a4" />
+ <gd name="dyF4" fmla="cos lFD a4" />
+ <gd name="xF4" fmla="+- xD4 dxF4 0" />
+ <gd name="yF4" fmla="+- yD4 dyF4 0" />
+ <gd name="xE4" fmla="+- xA4 0 dxF4" />
+ <gd name="yE4" fmla="+- yA4 0 dyF4" />
+
+
+ <gd name="yC4t" fmla="sin th a4" />
+ <gd name="xC4t" fmla="cos th a4" />
+ <gd name="yC4" fmla="+- yF4 yC4t 0" />
+ <gd name="xC4" fmla="+- xF4 0 xC4t" />
+
+
+ <gd name="yB4" fmla="+- yE4 yC4t 0" />
+ <gd name="xB4" fmla="+- xE4 0 xC4t" />
+
+ <gd name="swAng3" fmla="+- bA4 0 bD3" />
+
+
+ <gd name="aA5" fmla="+- 6600000 0 ha" />
+ <gd name="aD5" fmla="+- 6600000 ha 0" />
+
+ <gd name="ta51" fmla="cos rw aA5" />
+ <gd name="ta52" fmla="sin rh aA5" />
+ <gd name="bA5" fmla="at2 ta51 ta52" />
+
+ <gd name="td51" fmla="cos rw aD5" />
+ <gd name="td52" fmla="sin rh aD5" />
+ <gd name="bD5" fmla="at2 td51 td52" />
+
+
+ <gd name="xD5" fmla="+- w 0 xA4" />
+
+
+ <gd name="xC5" fmla="+- w 0 xB4" />
+
+
+ <gd name="xB5" fmla="+- w 0 xC4" />
+
+ <gd name="swAng4" fmla="+- bA5 0 bD4" />
+
+
+ <gd name="aD6" fmla="+- 9000000 ha 0" />
+
+ <gd name="td61" fmla="cos rw aD6" />
+ <gd name="td62" fmla="sin rh aD6" />
+ <gd name="bD6" fmla="at2 td61 td62" />
+
+
+ <gd name="xD6" fmla="+- w 0 xA3" />
+
+
+ <gd name="xC6" fmla="+- w 0 xB3" />
+
+
+ <gd name="xB6" fmla="+- w 0 xC3" />
+
+
+ <gd name="aD7" fmla="+- 11400000 ha 0" />
+
+ <gd name="td71" fmla="cos rw aD7" />
+ <gd name="td72" fmla="sin rh aD7" />
+ <gd name="bD7" fmla="at2 td71 td72" />
+
+
+ <gd name="xD7" fmla="+- w 0 xA2" />
+
+
+ <gd name="xC7" fmla="+- w 0 xB2" />
+
+
+ <gd name="xB7" fmla="+- w 0 xC2" />
+
+
+ <gd name="aD8" fmla="+- 13800000 ha 0" />
+
+ <gd name="td81" fmla="cos rw aD8" />
+ <gd name="td82" fmla="sin rh aD8" />
+ <gd name="bD8" fmla="at2 td81 td82" />
+
+
+ <gd name="xA8" fmla="+- w 0 xD1" />
+
+ <gd name="xD8" fmla="+- w 0 xA1" />
+
+
+ <gd name="xC8" fmla="+- w 0 xB1" />
+
+
+ <gd name="xB8" fmla="+- w 0 xC1" />
+
+
+ <gd name="aA9" fmla="+- 3cd4 0 ha" />
+ <gd name="aD9" fmla="+- 3cd4 ha 0" />
+
+
+ <gd name="td91" fmla="cos rw aD9" />
+ <gd name="td92" fmla="sin rh aD9" />
+ <gd name="bD9" fmla="at2 td91 td92" />
+
+ <gd name="ctd9" fmla="cos rh bD9" />
+ <gd name="std9" fmla="sin rw bD9" />
+ <gd name="md9" fmla="mod ctd9 std9 0" />
+ <gd name="nd9" fmla="*/ rw rh md9" />
+ <gd name="dxd9" fmla="cos nd9 bD9" />
+ <gd name="dyd9" fmla="sin nd9 bD9" />
+ <gd name="xD9" fmla="+- hc dxd9 0" />
+ <gd name="yD9" fmla="+- vc dyd9 0" />
+
+
+ <gd name="ta91" fmla="cos rw aA9" />
+ <gd name="ta92" fmla="sin rh aA9" />
+ <gd name="bA9" fmla="at2 ta91 ta92" />
+
+ <gd name="xA9" fmla="+- hc 0 dxd9" />
+
+
+ <gd name="xF9" fmla="+- xD9 0 lFD" />
+ <gd name="xE9" fmla="+- xA9 lFD 0" />
+
+
+ <gd name="yC9" fmla="+- yD9 0 th" />
+
+ <gd name="swAng5" fmla="+- bA9 0 bD8" />
+
+
+ <gd name="xCxn1" fmla="+/ xB1 xC1 2" />
+ <gd name="yCxn1" fmla="+/ yB1 yC1 2" />
+ <gd name="xCxn2" fmla="+/ xB2 xC2 2" />
+ <gd name="yCxn2" fmla="+/ yB2 yC2 2" />
+ <gd name="xCxn3" fmla="+/ xB3 xC3 2" />
+ <gd name="yCxn3" fmla="+/ yB3 yC3 2" />
+ <gd name="xCxn4" fmla="+/ xB4 xC4 2" />
+ <gd name="yCxn4" fmla="+/ yB4 yC4 2" />
+ <gd name="xCxn5" fmla="+/ r 0 xCxn4" />
+ <gd name="xCxn6" fmla="+/ r 0 xCxn3" />
+ <gd name="xCxn7" fmla="+/ r 0 xCxn2" />
+ <gd name="xCxn8" fmla="+/ r 0 xCxn1" />
+ </gdLst>
+
+ <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <ahXY gdRefY="adj1" minY="0" maxY="20000">
+ <pos x="xD9" y="yD9" />
+ </ahXY>
+ <ahXY gdRefX="adj2" minX="0" maxX="2679">
+ <pos x="xA9" y="yD9" />
+ </ahXY>
+
+ </ahLst>
+
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="18600000">
+ <pos x="xCxn1" y="yCxn1" />
+ </cxn>
+
+ <cxn ang="21000000">
+ <pos x="xCxn2" y="yCxn2" />
+ </cxn>
+
+ <cxn ang="1800000">
+ <pos x="xCxn3" y="yCxn3" />
+ </cxn>
+
+ <cxn ang="4200000">
+ <pos x="xCxn4" y="yCxn4" />
+ </cxn>
+
+ <cxn ang="6600000">
+ <pos x="xCxn5" y="yCxn4" />
+ </cxn>
+
+ <cxn ang="9000000">
+ <pos x="xCxn6" y="yCxn3" />
+ </cxn>
+
+ <cxn ang="11400000">
+ <pos x="xCxn7" y="yCxn2" />
+ </cxn>
+
+ <cxn ang="13800000">
+ <pos x="xCxn8" y="yCxn1" />
+ </cxn>
+
+ <cxn ang="3cd4">
+ <pos x="hc" y="yC9" />
+ </cxn>
+
+ </cxnLst>
+
+ <rect l="xA8" t="yD1" r="xD1" b="yD3" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path>
+ <moveTo>
+ <pt x="xA1" y="yA1" />
+ </moveTo>
+ <lnTo>
+ <pt x="xB1" y="yB1" />
+ </lnTo>
+ <lnTo>
+ <pt x="xC1" y="yC1" />
+ </lnTo>
+ <lnTo>
+ <pt x="xD1" y="yD1" />
+ </lnTo>
+ <arcTo hR="rh" wR="rw" stAng="bD1" swAng="swAng1" />
+
+ <lnTo>
+ <pt x="xB2" y="yB2" />
+ </lnTo>
+ <lnTo>
+ <pt x="xC2" y="yC2" />
+ </lnTo>
+ <lnTo>
+ <pt x="xD2" y="yD2" />
+ </lnTo>
+ <arcTo hR="rh" wR="rw" stAng="bD2" swAng="swAng2" />
+
+ <lnTo>
+ <pt x="xB3" y="yB3" />
+ </lnTo>
+ <lnTo>
+ <pt x="xC3" y="yC3" />
+ </lnTo>
+ <lnTo>
+ <pt x="xD3" y="yD3" />
+ </lnTo>
+ <arcTo hR="rh" wR="rw" stAng="bD3" swAng="swAng3" />
+
+ <lnTo>
+ <pt x="xB4" y="yB4" />
+ </lnTo>
+ <lnTo>
+ <pt x="xC4" y="yC4" />
+ </lnTo>
+ <lnTo>
+ <pt x="xD4" y="yD4" />
+ </lnTo>
+ <arcTo hR="rh" wR="rw" stAng="bD4" swAng="swAng4" />
+
+ <lnTo>
+ <pt x="xB5" y="yC4" />
+ </lnTo>
+ <lnTo>
+ <pt x="xC5" y="yB4" />
+ </lnTo>
+ <lnTo>
+ <pt x="xD5" y="yA4" />
+ </lnTo>
+ <arcTo hR="rh" wR="rw" stAng="bD5" swAng="swAng3" />
+
+ <lnTo>
+ <pt x="xB6" y="yC3" />
+ </lnTo>
+ <lnTo>
+ <pt x="xC6" y="yB3" />
+ </lnTo>
+ <lnTo>
+ <pt x="xD6" y="yA3" />
+ </lnTo>
+ <arcTo hR="rh" wR="rw" stAng="bD6" swAng="swAng2" />
+
+ <lnTo>
+ <pt x="xB7" y="yC2" />
+ </lnTo>
+ <lnTo>
+ <pt x="xC7" y="yB2" />
+ </lnTo>
+ <lnTo>
+ <pt x="xD7" y="yA2" />
+ </lnTo>
+ <arcTo hR="rh" wR="rw" stAng="bD7" swAng="swAng1" />
+
+ <lnTo>
+ <pt x="xB8" y="yC1" />
+ </lnTo>
+ <lnTo>
+ <pt x="xC8" y="yB1" />
+ </lnTo>
+ <lnTo>
+ <pt x="xD8" y="yA1" />
+ </lnTo>
+ <arcTo hR="rh" wR="rw" stAng="bD8" swAng="swAng5" />
+
+ <lnTo>
+ <pt x="xE9" y="yC9" />
+ </lnTo>
+ <lnTo>
+ <pt x="xF9" y="yC9" />
+ </lnTo>
+ <lnTo>
+ <pt x="xD9" y="yD9" />
+ </lnTo>
+ <arcTo hR="rh" wR="rw" stAng="bD9" swAng="swAng5" />
+ <close />
+ </path>
+ </pathLst>
+
+ </gear9>
+ <halfFrame>
+
+ <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="adj1" fmla="val 33333" />
+
+ <gd name="adj2" fmla="val 33333" />
+
+ </avLst>
+
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="maxAdj2" fmla="*/ 100000 w ss" />
+ <gd name="a2" fmla="pin 0 adj2 maxAdj2" />
+ <gd name="x1" fmla="*/ ss a2 100000" />
+ <gd name="g1" fmla="*/ h x1 w" />
+ <gd name="g2" fmla="+- h 0 g1" />
+ <gd name="maxAdj1" fmla="*/ 100000 g2 ss" />
+ <gd name="a1" fmla="pin 0 adj1 maxAdj1" />
+ <gd name="y1" fmla="*/ ss a1 100000" />
+ <gd name="dx2" fmla="*/ y1 w h" />
+ <gd name="x2" fmla="+- r 0 dx2" />
+ <gd name="dy2" fmla="*/ x1 h w" />
+ <gd name="y2" fmla="+- b 0 dy2" />
+ <gd name="cx1" fmla="*/ x1 1 2" />
+ <gd name="cy1" fmla="+/ y2 b 2" />
+ <gd name="cx2" fmla="+/ x2 r 2" />
+ <gd name="cy2" fmla="*/ y1 1 2" />
+ </gdLst>
+
+ <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <ahXY gdRefY="adj1" minY="0" maxY="maxAdj1">
+ <pos x="l" y="y1" />
+ </ahXY>
+ <ahXY gdRefX="adj2" minX="0" maxX="maxAdj2">
+ <pos x="x1" y="t" />
+ </ahXY>
+ </ahLst>
+
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="0">
+ <pos x="cx2" y="cy2" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="cx1" y="cy1" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="l" y="vc" />
+ </cxn>
+ <cxn ang="3cd4">
+ <pos x="hc" y="t" />
+ </cxn>
+ </cxnLst>
+
+ <rect l="l" t="t" r="r" b="b" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path>
+ <moveTo>
+ <pt x="l" y="t" />
+ </moveTo>
+ <lnTo>
+ <pt x="r" y="t" />
+ </lnTo>
+ <lnTo>
+ <pt x="x2" y="y1" />
+ </lnTo>
+ <lnTo>
+ <pt x="x1" y="y1" />
+ </lnTo>
+ <lnTo>
+ <pt x="x1" y="y2" />
+ </lnTo>
+ <lnTo>
+ <pt x="l" y="b" />
+ </lnTo>
+ <close />
+ </path>
+ </pathLst>
+
+ </halfFrame>
+ <heart>
+
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="dx1" fmla="*/ w 49 48" />
+ <gd name="dx2" fmla="*/ w 10 48" />
+ <gd name="x1" fmla="+- hc 0 dx1" />
+ <gd name="x2" fmla="+- hc 0 dx2" />
+ <gd name="x3" fmla="+- hc dx2 0" />
+ <gd name="x4" fmla="+- hc dx1 0" />
+ <gd name="y1" fmla="+- t 0 hd3" />
+
+
+ <gd name="il" fmla="*/ w 1 6" />
+ <gd name="ir" fmla="*/ w 5 6" />
+ <gd name="ib" fmla="*/ h 2 3" />
+ </gdLst>
+
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="3cd4">
+ <pos x="hc" y="hd4" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="hc" y="b" />
+ </cxn>
+ </cxnLst>
+
+ <rect l="il" t="hd4" r="ir" b="ib" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path>
+ <moveTo>
+ <pt x="hc" y="hd4" />
+ </moveTo>
+ <cubicBezTo>
+ <pt x="x3" y="y1" />
+ <pt x="x4" y="hd4" />
+ <pt x="hc" y="b" />
+ </cubicBezTo>
+ <cubicBezTo>
+ <pt x="x1" y="hd4" />
+ <pt x="x2" y="y1" />
+ <pt x="hc" y="hd4" />
+ </cubicBezTo>
+ <close />
+ </path>
+ </pathLst>
+
+ </heart>
+ <heptagon>
+
+ <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="hf" fmla="val 102572" />
+ <gd name="vf" fmla="val 105210" />
+ </avLst>
+
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="swd2" fmla="*/ wd2 hf 100000" />
+ <gd name="shd2" fmla="*/ hd2 vf 100000" />
+ <gd name="svc" fmla="*/ vc vf 100000" />
+ <gd name="dx1" fmla="*/ swd2 97493 100000" />
+ <gd name="dx2" fmla="*/ swd2 78183 100000" />
+ <gd name="dx3" fmla="*/ swd2 43388 100000" />
+ <gd name="dy1" fmla="*/ shd2 62349 100000" />
+ <gd name="dy2" fmla="*/ shd2 22252 100000" />
+ <gd name="dy3" fmla="*/ shd2 90097 100000" />
+ <gd name="x1" fmla="+- hc 0 dx1" />
+ <gd name="x2" fmla="+- hc 0 dx2" />
+ <gd name="x3" fmla="+- hc 0 dx3" />
+ <gd name="x4" fmla="+- hc dx3 0" />
+ <gd name="x5" fmla="+- hc dx2 0" />
+ <gd name="x6" fmla="+- hc dx1 0" />
+ <gd name="y1" fmla="+- svc 0 dy1" />
+ <gd name="y2" fmla="+- svc dy2 0" />
+ <gd name="y3" fmla="+- svc dy3 0" />
+ <gd name="ib" fmla="+- b 0 y1" />
+ </gdLst>
+
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="0">
+ <pos x="x5" y="y1" />
+ </cxn>
+ <cxn ang="0">
+ <pos x="x6" y="y2" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="x4" y="y3" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="x3" y="y3" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="x1" y="y2" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="x2" y="y1" />
+ </cxn>
+ <cxn ang="3cd4">
+ <pos x="hc" y="t" />
+ </cxn>
+ </cxnLst>
+
+ <rect l="x2" t="y1" r="x5" b="ib" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path>
+ <moveTo>
+ <pt x="x1" y="y2" />
+ </moveTo>
+ <lnTo>
+ <pt x="x2" y="y1" />
+ </lnTo>
+ <lnTo>
+ <pt x="hc" y="t" />
+ </lnTo>
+ <lnTo>
+ <pt x="x5" y="y1" />
+ </lnTo>
+ <lnTo>
+ <pt x="x6" y="y2" />
+ </lnTo>
+ <lnTo>
+ <pt x="x4" y="y3" />
+ </lnTo>
+ <lnTo>
+ <pt x="x3" y="y3" />
+ </lnTo>
+ <close />
+ </path>
+ </pathLst>
+
+ </heptagon>
+ <hexagon>
+ <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="adj" fmla="val 25000" />
+ <gd name="vf" fmla="val 115470" />
+ </avLst>
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="maxAdj" fmla="*/ 50000 w ss" />
+ <gd name="a" fmla="pin 0 adj maxAdj" />
+ <gd name="shd2" fmla="*/ hd2 vf 100000" />
+ <gd name="x1" fmla="*/ ss a 100000" />
+ <gd name="x2" fmla="+- r 0 x1" />
+ <gd name="dy1" fmla="sin shd2 3600000" />
+ <gd name="y1" fmla="+- vc 0 dy1" />
+ <gd name="y2" fmla="+- vc dy1 0" />
+ <gd name="q1" fmla="*/ maxAdj -1 2" />
+ <gd name="q2" fmla="+- a q1 0" />
+ <gd name="q3" fmla="?: q2 4 2" />
+ <gd name="q4" fmla="?: q2 3 2" />
+ <gd name="q5" fmla="?: q2 q1 0" />
+ <gd name="q6" fmla="+/ a q5 q1" />
+ <gd name="q7" fmla="*/ q6 q4 -1" />
+ <gd name="q8" fmla="+- q3 q7 0" />
+ <gd name="il" fmla="*/ w q8 24" />
+ <gd name="it" fmla="*/ h q8 24" />
+ <gd name="ir" fmla="+- r 0 il" />
+ <gd name="ib" fmla="+- b 0 it" />
+ </gdLst>
+ <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <ahXY gdRefX="adj" minX="0" maxX="maxAdj">
+ <pos x="x1" y="t" />
+ </ahXY>
+ </ahLst>
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="0">
+ <pos x="r" y="vc" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="x2" y="y2" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="x1" y="y2" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="l" y="vc" />
+ </cxn>
+ <cxn ang="3cd4">
+ <pos x="x1" y="y1" />
+ </cxn>
+ <cxn ang="3cd4">
+ <pos x="x2" y="y1" />
+ </cxn>
+ </cxnLst>
+ <rect l="il" t="it" r="ir" b="ib" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path>
+ <moveTo>
+ <pt x="l" y="vc" />
+ </moveTo>
+ <lnTo>
+ <pt x="x1" y="y1" />
+ </lnTo>
+ <lnTo>
+ <pt x="x2" y="y1" />
+ </lnTo>
+ <lnTo>
+ <pt x="r" y="vc" />
+ </lnTo>
+ <lnTo>
+ <pt x="x2" y="y2" />
+ </lnTo>
+ <lnTo>
+ <pt x="x1" y="y2" />
+ </lnTo>
+ <close />
+ </path>
+ </pathLst>
+ </hexagon>
+ <homePlate>
+ <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="adj" fmla="val 50000" />
+ </avLst>
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="maxAdj" fmla="*/ 100000 w ss" />
+ <gd name="a" fmla="pin 0 adj maxAdj" />
+ <gd name="dx1" fmla="*/ ss a 100000" />
+ <gd name="x1" fmla="+- r 0 dx1" />
+ <gd name="ir" fmla="+/ x1 r 2" />
+ <gd name="x2" fmla="*/ x1 1 2" />
+ </gdLst>
+ <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <ahXY gdRefX="adj" minX="0" maxX="maxAdj">
+ <pos x="x1" y="t" />
+ </ahXY>
+ </ahLst>
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="3cd4">
+ <pos x="x2" y="t" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="l" y="vc" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="x1" y="b" />
+ </cxn>
+ <cxn ang="0">
+ <pos x="r" y="vc" />
+ </cxn>
+ </cxnLst>
+ <rect l="l" t="t" r="ir" b="b" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path>
+ <moveTo>
+ <pt x="l" y="t" />
+ </moveTo>
+ <lnTo>
+ <pt x="x1" y="t" />
+ </lnTo>
+ <lnTo>
+ <pt x="r" y="vc" />
+ </lnTo>
+ <lnTo>
+ <pt x="x1" y="b" />
+ </lnTo>
+ <lnTo>
+ <pt x="l" y="b" />
+ </lnTo>
+ <close />
+ </path>
+ </pathLst>
+ </homePlate>
+ <horizontalScroll>
+
+ <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="adj" fmla="val 12500" />
+
+ </avLst>
+
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="a" fmla="pin 0 adj 25000" />
+ <gd name="ch" fmla="*/ ss a 100000" />
+
+ <gd name="ch2" fmla="*/ ch 1 2" />
+
+ <gd name="ch4" fmla="*/ ch 1 4" />
+
+
+
+
+
+ <gd name="y3" fmla="+- ch ch2 0" />
+
+ <gd name="y4" fmla="+- ch ch 0" />
+
+ <gd name="y6" fmla="+- b 0 ch" />
+
+ <gd name="y7" fmla="+- b 0 ch2" />
+
+ <gd name="y5" fmla="+- y6 0 ch2" />
+
+
+
+
+
+ <gd name="x3" fmla="+- r 0 ch" />
+
+ <gd name="x4" fmla="+- r 0 ch2" />
+
+ </gdLst>
+
+ <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <ahXY gdRefX="adj" minX="0" maxX="25000">
+ <pos x="ch" y="t" />
+ </ahXY>
+ </ahLst>
+
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="cd4">
+ <pos x="hc" y="ch" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="l" y="vc" />
+ </cxn>
+ <cxn ang="3cd4">
+ <pos x="hc" y="y6" />
+ </cxn>
+ <cxn ang="0">
+ <pos x="r" y="vc" />
+ </cxn>
+ </cxnLst>
+
+ <rect l="ch" t="ch" r="x4" b="y6" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path stroke="false" extrusionOk="false">
+
+ <moveTo>
+ <pt x="r" y="ch2" />
+ </moveTo>
+ <arcTo wR="ch2" hR="ch2" stAng="0" swAng="cd4" />
+ <lnTo>
+ <pt x="x4" y="ch2" />
+ </lnTo>
+ <arcTo wR="ch4" hR="ch4" stAng="0" swAng="cd2" />
+ <lnTo>
+ <pt x="x3" y="ch" />
+ </lnTo>
+ <lnTo>
+ <pt x="ch2" y="ch" />
+ </lnTo>
+ <arcTo wR="ch2" hR="ch2" stAng="3cd4" swAng="-5400000" />
+ <lnTo>
+ <pt x="l" y="y7" />
+ </lnTo>
+ <arcTo wR="ch2" hR="ch2" stAng="cd2" swAng="-10800000" />
+ <lnTo>
+ <pt x="ch" y="y6" />
+ </lnTo>
+ <lnTo>
+ <pt x="x4" y="y6" />
+ </lnTo>
+ <arcTo wR="ch2" hR="ch2" stAng="cd4" swAng="-5400000" />
+ <close />
+ <moveTo>
+ <pt x="ch2" y="y4" />
+ </moveTo>
+ <arcTo wR="ch2" hR="ch2" stAng="cd4" swAng="-5400000" />
+ <arcTo wR="ch4" hR="ch4" stAng="0" swAng="-10800000" />
+ <close />
+ </path>
+ <path fill="darkenLess" stroke="false" extrusionOk="false">
+
+ <moveTo>
+ <pt x="ch2" y="y4" />
+ </moveTo>
+ <arcTo wR="ch2" hR="ch2" stAng="cd4" swAng="-5400000" />
+ <arcTo wR="ch4" hR="ch4" stAng="0" swAng="-10800000" />
+ <close />
+ <moveTo>
+ <pt x="x4" y="ch" />
+ </moveTo>
+ <arcTo wR="ch2" hR="ch2" stAng="cd4" swAng="-16200000" />
+ <arcTo wR="ch4" hR="ch4" stAng="cd2" swAng="-10800000" />
+ <close />
+ </path>
+ <path fill="none" extrusionOk="false">
+
+ <moveTo>
+ <pt x="l" y="y3" />
+ </moveTo>
+ <arcTo wR="ch2" hR="ch2" stAng="cd2" swAng="cd4" />
+ <lnTo>
+ <pt x="x3" y="ch" />
+ </lnTo>
+ <lnTo>
+ <pt x="x3" y="ch2" />
+ </lnTo>
+ <arcTo wR="ch2" hR="ch2" stAng="cd2" swAng="cd2" />
+ <lnTo>
+ <pt x="r" y="y5" />
+ </lnTo>
+ <arcTo wR="ch2" hR="ch2" stAng="0" swAng="cd4" />
+ <lnTo>
+ <pt x="ch" y="y6" />
+ </lnTo>
+ <lnTo>
+ <pt x="ch" y="y7" />
+ </lnTo>
+ <arcTo wR="ch2" hR="ch2" stAng="0" swAng="cd2" />
+ <close />
+ <moveTo>
+ <pt x="x3" y="ch" />
+ </moveTo>
+ <lnTo>
+ <pt x="x4" y="ch" />
+ </lnTo>
+ <arcTo wR="ch2" hR="ch2" stAng="cd4" swAng="-5400000" />
+ <moveTo>
+ <pt x="x4" y="ch" />
+ </moveTo>
+ <lnTo>
+ <pt x="x4" y="ch2" />
+ </lnTo>
+ <arcTo wR="ch4" hR="ch4" stAng="0" swAng="cd2" />
+ <moveTo>
+ <pt x="ch2" y="y4" />
+ </moveTo>
+ <lnTo>
+ <pt x="ch2" y="y3" />
+ </lnTo>
+ <arcTo wR="ch4" hR="ch4" stAng="cd2" swAng="cd2" />
+ <arcTo wR="ch2" hR="ch2" stAng="0" swAng="cd2" />
+ <moveTo>
+ <pt x="ch" y="y3" />
+ </moveTo>
+ <lnTo>
+ <pt x="ch" y="y6" />
+ </lnTo>
+ </path>
+ </pathLst>
+
+ </horizontalScroll>
+ <irregularSeal1>
+
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="x5" fmla="*/ w 4627 21600" />
+ <gd name="x12" fmla="*/ w 8485 21600" />
+ <gd name="x21" fmla="*/ w 16702 21600" />
+ <gd name="x24" fmla="*/ w 14522 21600" />
+ <gd name="y3" fmla="*/ h 6320 21600" />
+ <gd name="y6" fmla="*/ h 8615 21600" />
+ <gd name="y9" fmla="*/ h 13937 21600" />
+ <gd name="y18" fmla="*/ h 13290 21600" />
+ </gdLst>
+
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="3cd4">
+ <pos x="x24" y="t" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="l" y="y6" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="x12" y="b" />
+ </cxn>
+ <cxn ang="0">
+ <pos x="r" y="y18" />
+ </cxn>
+ </cxnLst>
+
+ <rect l="x5" t="y3" r="x21" b="y9" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path w="21600" h="21600">
+ <moveTo>
+ <pt x="10800" y="5800" />
+ </moveTo>
+ <lnTo>
+ <pt x="14522" y="0" />
+ </lnTo>
+ <lnTo>
+ <pt x="14155" y="5325" />
+ </lnTo>
+ <lnTo>
+ <pt x="18380" y="4457" />
+ </lnTo>
+ <lnTo>
+ <pt x="16702" y="7315" />
+ </lnTo>
+ <lnTo>
+ <pt x="21097" y="8137" />
+ </lnTo>
+ <lnTo>
+ <pt x="17607" y="10475" />
+ </lnTo>
+ <lnTo>
+ <pt x="21600" y="13290" />
+ </lnTo>
+ <lnTo>
+ <pt x="16837" y="12942" />
+ </lnTo>
+ <lnTo>
+ <pt x="18145" y="18095" />
+ </lnTo>
+ <lnTo>
+ <pt x="14020" y="14457" />
+ </lnTo>
+ <lnTo>
+ <pt x="13247" y="19737" />
+ </lnTo>
+ <lnTo>
+ <pt x="10532" y="14935" />
+ </lnTo>
+ <lnTo>
+ <pt x="8485" y="21600" />
+ </lnTo>
+ <lnTo>
+ <pt x="7715" y="15627" />
+ </lnTo>
+ <lnTo>
+ <pt x="4762" y="17617" />
+ </lnTo>
+ <lnTo>
+ <pt x="5667" y="13937" />
+ </lnTo>
+ <lnTo>
+ <pt x="135" y="14587" />
+ </lnTo>
+ <lnTo>
+ <pt x="3722" y="11775" />
+ </lnTo>
+ <lnTo>
+ <pt x="0" y="8615" />
+ </lnTo>
+ <lnTo>
+ <pt x="4627" y="7617" />
+ </lnTo>
+ <lnTo>
+ <pt x="370" y="2295" />
+ </lnTo>
+ <lnTo>
+ <pt x="7312" y="6320" />
+ </lnTo>
+ <lnTo>
+ <pt x="8352" y="2295" />
+ </lnTo>
+ <close />
+ </path>
+ </pathLst>
+
+ </irregularSeal1>
+ <irregularSeal2>
+
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="x2" fmla="*/ w 9722 21600" />
+ <gd name="x5" fmla="*/ w 5372 21600" />
+ <gd name="x16" fmla="*/ w 11612 21600" />
+ <gd name="x19" fmla="*/ w 14640 21600" />
+ <gd name="y2" fmla="*/ h 1887 21600" />
+ <gd name="y3" fmla="*/ h 6382 21600" />
+ <gd name="y8" fmla="*/ h 12877 21600" />
+ <gd name="y14" fmla="*/ h 19712 21600" />
+ <gd name="y16" fmla="*/ h 18842 21600" />
+ <gd name="y17" fmla="*/ h 15935 21600" />
+ <gd name="y24" fmla="*/ h 6645 21600" />
+ </gdLst>
+
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="3cd4">
+ <pos x="x2" y="y2" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="l" y="y8" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="x16" y="y16" />
+ </cxn>
+ <cxn ang="0">
+ <pos x="r" y="y24" />
+ </cxn>
+ </cxnLst>
+
+ <rect l="x5" t="y3" r="x19" b="y17" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path w="21600" h="21600">
+ <moveTo>
+ <pt x="11462" y="4342" />
+ </moveTo>
+ <lnTo>
+ <pt x="14790" y="0" />
+ </lnTo>
+ <lnTo>
+ <pt x="14525" y="5777" />
+ </lnTo>
+ <lnTo>
+ <pt x="18007" y="3172" />
+ </lnTo>
+ <lnTo>
+ <pt x="16380" y="6532" />
+ </lnTo>
+ <lnTo>
+ <pt x="21600" y="6645" />
+ </lnTo>
+ <lnTo>
+ <pt x="16985" y="9402" />
+ </lnTo>
+ <lnTo>
+ <pt x="18270" y="11290" />
+ </lnTo>
+ <lnTo>
+ <pt x="16380" y="12310" />
+ </lnTo>
+ <lnTo>
+ <pt x="18877" y="15632" />
+ </lnTo>
+ <lnTo>
+ <pt x="14640" y="14350" />
+ </lnTo>
+ <lnTo>
+ <pt x="14942" y="17370" />
+ </lnTo>
+ <lnTo>
+ <pt x="12180" y="15935" />
+ </lnTo>
+ <lnTo>
+ <pt x="11612" y="18842" />
+ </lnTo>
+ <lnTo>
+ <pt x="9872" y="17370" />
+ </lnTo>
+ <lnTo>
+ <pt x="8700" y="19712" />
+ </lnTo>
+ <lnTo>
+ <pt x="7527" y="18125" />
+ </lnTo>
+ <lnTo>
+ <pt x="4917" y="21600" />
+ </lnTo>
+ <lnTo>
+ <pt x="4805" y="18240" />
+ </lnTo>
+ <lnTo>
+ <pt x="1285" y="17825" />
+ </lnTo>
+ <lnTo>
+ <pt x="3330" y="15370" />
+ </lnTo>
+ <lnTo>
+ <pt x="0" y="12877" />
+ </lnTo>
+ <lnTo>
+ <pt x="3935" y="11592" />
+ </lnTo>
+ <lnTo>
+ <pt x="1172" y="8270" />
+ </lnTo>
+ <lnTo>
+ <pt x="5372" y="7817" />
+ </lnTo>
+ <lnTo>
+ <pt x="4502" y="3625" />
+ </lnTo>
+ <lnTo>
+ <pt x="8550" y="6382" />
+ </lnTo>
+ <lnTo>
+ <pt x="9722" y="1887" />
+ </lnTo>
+ <close />
+ </path>
+ </pathLst>
+
+ </irregularSeal2>
+ <leftArrow>
+ <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="adj1" fmla="val 50000" />
+ <gd name="adj2" fmla="val 50000" />
+ </avLst>
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="maxAdj2" fmla="*/ 100000 w ss" />
+ <gd name="a1" fmla="pin 0 adj1 100000" />
+ <gd name="a2" fmla="pin 0 adj2 maxAdj2" />
+ <gd name="dx2" fmla="*/ ss a2 100000" />
+ <gd name="x2" fmla="+- l dx2 0" />
+ <gd name="dy1" fmla="*/ h a1 200000" />
+ <gd name="y1" fmla="+- vc 0 dy1" />
+ <gd name="y2" fmla="+- vc dy1 0" />
+ <gd name="dx1" fmla="*/ y1 dx2 hd2" />
+ <gd name="x1" fmla="+- x2 0 dx1" />
+ </gdLst>
+ <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <ahXY gdRefY="adj1" minY="0" maxY="100000">
+ <pos x="r" y="y1" />
+ </ahXY>
+ <ahXY gdRefX="adj2" minX="0" maxX="maxAdj2">
+ <pos x="x2" y="t" />
+ </ahXY>
+ </ahLst>
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="3cd4">
+ <pos x="x2" y="t" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="l" y="vc" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="x2" y="b" />
+ </cxn>
+ <cxn ang="0">
+ <pos x="r" y="vc" />
+ </cxn>
+ </cxnLst>
+ <rect l="x1" t="y1" r="r" b="y2" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path>
+ <moveTo>
+ <pt x="l" y="vc" />
+ </moveTo>
+ <lnTo>
+ <pt x="x2" y="t" />
+ </lnTo>
+ <lnTo>
+ <pt x="x2" y="y1" />
+ </lnTo>
+ <lnTo>
+ <pt x="r" y="y1" />
+ </lnTo>
+ <lnTo>
+ <pt x="r" y="y2" />
+ </lnTo>
+ <lnTo>
+ <pt x="x2" y="y2" />
+ </lnTo>
+ <lnTo>
+ <pt x="x2" y="b" />
+ </lnTo>
+ <close />
+ </path>
+ </pathLst>
+ </leftArrow>
+ <leftArrowCallout>
+
+ <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="adj1" fmla="val 25000" />
+
+ <gd name="adj2" fmla="val 25000" />
+
+ <gd name="adj3" fmla="val 25000" />
+
+ <gd name="adj4" fmla="val 64977" />
+
+ </avLst>
+
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="maxAdj2" fmla="*/ 50000 h ss" />
+
+ <gd name="a2" fmla="pin 0 adj2 maxAdj2" />
+ <gd name="maxAdj1" fmla="*/ a2 2 1" />
+
+ <gd name="a1" fmla="pin 0 adj1 maxAdj1" />
+ <gd name="maxAdj3" fmla="*/ 100000 w ss" />
+
+ <gd name="a3" fmla="pin 0 adj3 maxAdj3" />
+ <gd name="q2" fmla="*/ a3 ss w" />
+
+ <gd name="maxAdj4" fmla="+- 100000 0 q2" />
+
+ <gd name="a4" fmla="pin 0 adj4 maxAdj4" />
+ <gd name="dy1" fmla="*/ ss a2 100000" />
+
+ <gd name="dy2" fmla="*/ ss a1 200000" />
+
+ <gd name="y1" fmla="+- vc 0 dy1" />
+ <gd name="y2" fmla="+- vc 0 dy2" />
+ <gd name="y3" fmla="+- vc dy2 0" />
+ <gd name="y4" fmla="+- vc dy1 0" />
+ <gd name="x1" fmla="*/ ss a3 100000" />
+
+ <gd name="dx2" fmla="*/ w a4 100000" />
+
+ <gd name="x2" fmla="+- r 0 dx2" />
+ <gd name="x3" fmla="+/ x2 r 2" />
+ </gdLst>
+
+ <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <ahXY gdRefY="adj1" minY="0" maxY="maxAdj1">
+ <pos x="x1" y="y2" />
+ </ahXY>
+ <ahXY gdRefY="adj2" minY="0" maxY="maxAdj2">
+ <pos x="l" y="y1" />
+ </ahXY>
+ <ahXY gdRefX="adj3" minX="0" maxX="maxAdj3">
+ <pos x="x1" y="t" />
+ </ahXY>
+ <ahXY gdRefX="adj4" minX="0" maxX="maxAdj4">
+ <pos x="x2" y="b" />
+ </ahXY>
+ </ahLst>
+
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="3cd4">
+ <pos x="x3" y="t" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="l" y="vc" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="x3" y="b" />
+ </cxn>
+ <cxn ang="0">
+ <pos x="r" y="vc" />
+ </cxn>
+ </cxnLst>
+
+ <rect l="x2" t="t" r="r" b="b" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path>
+ <moveTo>
+ <pt x="l" y="vc" />
+ </moveTo>
+ <lnTo>
+ <pt x="x1" y="y1" />
+ </lnTo>
+ <lnTo>
+ <pt x="x1" y="y2" />
+ </lnTo>
+ <lnTo>
+ <pt x="x2" y="y2" />
+ </lnTo>
+ <lnTo>
+ <pt x="x2" y="t" />
+ </lnTo>
+ <lnTo>
+ <pt x="r" y="t" />
+ </lnTo>
+ <lnTo>
+ <pt x="r" y="b" />
+ </lnTo>
+ <lnTo>
+ <pt x="x2" y="b" />
+ </lnTo>
+ <lnTo>
+ <pt x="x2" y="y3" />
+ </lnTo>
+ <lnTo>
+ <pt x="x1" y="y3" />
+ </lnTo>
+ <lnTo>
+ <pt x="x1" y="y4" />
+ </lnTo>
+ <close />
+ </path>
+ </pathLst>
+
+ </leftArrowCallout>
+ <leftBrace>
+ <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="adj1" fmla="val 8333" />
+ <gd name="adj2" fmla="val 50000" />
+ </avLst>
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="a2" fmla="pin 0 adj2 100000" />
+ <gd name="q1" fmla="+- 100000 0 a2" />
+ <gd name="q2" fmla="min q1 a2" />
+ <gd name="q3" fmla="*/ q2 1 2" />
+ <gd name="maxAdj1" fmla="*/ q3 h ss" />
+ <gd name="a1" fmla="pin 0 adj1 maxAdj1" />
+ <gd name="y1" fmla="*/ ss a1 100000" />
+ <gd name="y3" fmla="*/ h a2 100000" />
+ <gd name="y4" fmla="+- y3 y1 0" />
+ <gd name="dx1" fmla="cos wd2 2700000" />
+ <gd name="dy1" fmla="sin y1 2700000" />
+ <gd name="il" fmla="+- r 0 dx1" />
+ <gd name="it" fmla="+- y1 0 dy1" />
+ <gd name="ib" fmla="+- b dy1 y1" />
+ </gdLst>
+ <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <ahXY gdRefY="adj1" minY="0" maxY="maxAdj1">
+ <pos x="hc" y="y1" />
+ </ahXY>
+ <ahXY gdRefY="adj2" minY="0" maxY="100000">
+ <pos x="l" y="y3" />
+ </ahXY>
+ </ahLst>
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="cd4">
+ <pos x="r" y="t" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="l" y="y3" />
+ </cxn>
+ <cxn ang="3cd4">
+ <pos x="r" y="b" />
+ </cxn>
+ </cxnLst>
+ <rect l="il" t="it" r="r" b="ib" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path stroke="false" extrusionOk="false">
+ <moveTo>
+ <pt x="r" y="b" />
+ </moveTo>
+ <arcTo wR="wd2" hR="y1" stAng="cd4" swAng="cd4" />
+ <lnTo>
+ <pt x="hc" y="y4" />
+ </lnTo>
+ <arcTo wR="wd2" hR="y1" stAng="0" swAng="-5400000" />
+ <arcTo wR="wd2" hR="y1" stAng="cd4" swAng="-5400000" />
+ <lnTo>
+ <pt x="hc" y="y1" />
+ </lnTo>
+ <arcTo wR="wd2" hR="y1" stAng="cd2" swAng="cd4" />
+ <close />
+ </path>
+ <path fill="none">
+ <moveTo>
+ <pt x="r" y="b" />
+ </moveTo>
+ <arcTo wR="wd2" hR="y1" stAng="cd4" swAng="cd4" />
+ <lnTo>
+ <pt x="hc" y="y4" />
+ </lnTo>
+ <arcTo wR="wd2" hR="y1" stAng="0" swAng="-5400000" />
+ <arcTo wR="wd2" hR="y1" stAng="cd4" swAng="-5400000" />
+ <lnTo>
+ <pt x="hc" y="y1" />
+ </lnTo>
+ <arcTo wR="wd2" hR="y1" stAng="cd2" swAng="cd4" />
+ </path>
+ </pathLst>
+ </leftBrace>
+ <leftBracket>
+
+ <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="adj" fmla="val 8333" />
+
+ </avLst>
+
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="maxAdj" fmla="*/ 50000 h ss" />
+
+ <gd name="a" fmla="pin 0 adj maxAdj" />
+ <gd name="y1" fmla="*/ ss a 100000" />
+
+ <gd name="y2" fmla="+- b 0 y1" />
+
+ <gd name="dx1" fmla="cos w 2700000" />
+ <gd name="dy1" fmla="sin y1 2700000" />
+ <gd name="il" fmla="+- r 0 dx1" />
+ <gd name="it" fmla="+- y1 0 dy1" />
+ <gd name="ib" fmla="+- b dy1 y1" />
+ </gdLst>
+
+ <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <ahXY gdRefY="adj" minY="0" maxY="maxAdj">
+ <pos x="l" y="y1" />
+ </ahXY>
+ </ahLst>
+
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="cd4">
+ <pos x="r" y="t" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="l" y="vc" />
+ </cxn>
+ <cxn ang="3cd4">
+ <pos x="r" y="b" />
+ </cxn>
+ </cxnLst>
+
+ <rect l="il" t="it" r="r" b="ib" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path stroke="false" extrusionOk="false">
+
+ <moveTo>
+ <pt x="r" y="b" />
+ </moveTo>
+ <arcTo wR="w" hR="y1" stAng="cd4" swAng="cd4" />
+ <lnTo>
+ <pt x="l" y="y1" />
+ </lnTo>
+ <arcTo wR="w" hR="y1" stAng="cd2" swAng="cd4" />
+ <close />
+ </path>
+ <path fill="none">
+
+ <moveTo>
+ <pt x="r" y="b" />
+ </moveTo>
+ <arcTo wR="w" hR="y1" stAng="cd4" swAng="cd4" />
+ <lnTo>
+ <pt x="l" y="y1" />
+ </lnTo>
+ <arcTo wR="w" hR="y1" stAng="cd2" swAng="cd4" />
+ </path>
+ </pathLst>
+
+ </leftBracket>
+ <leftCircularArrow>
+
+ <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="adj1" fmla="val 12500" />
+
+ <gd name="adj2" fmla="val -1142319" />
+
+ <gd name="adj3" fmla="val 1142319" />
+
+ <gd name="adj4" fmla="val 10800000" />
+
+ <gd name="adj5" fmla="val 12500" />
+
+ </avLst>
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="a5" fmla="pin 0 adj5 25000" />
+
+ <gd name="maxAdj1" fmla="*/ a5 2 1" />
+
+ <gd name="a1" fmla="pin 0 adj1 maxAdj1" />
+ <gd name="enAng" fmla="pin 1 adj3 21599999" />
+ <gd name="stAng" fmla="pin 0 adj4 21599999" />
+
+ <gd name="th" fmla="*/ ss a1 100000" />
+
+ <gd name="thh" fmla="*/ ss a5 100000" />
+
+ <gd name="th2" fmla="*/ th 1 2" />
+
+
+ <gd name="rw1" fmla="+- wd2 th2 thh" />
+
+ <gd name="rh1" fmla="+- hd2 th2 thh" />
+
+ <gd name="rw2" fmla="+- rw1 0 th" />
+
+ <gd name="rh2" fmla="+- rh1 0 th" />
+
+ <gd name="rw3" fmla="+- rw2 th2 0" />
+
+ <gd name="rh3" fmla="+- rh2 th2 0" />
+
+
+ <gd name="wtH" fmla="sin rw3 enAng" />
+ <gd name="htH" fmla="cos rh3 enAng" />
+ <gd name="dxH" fmla="cat2 rw3 htH wtH" />
+ <gd name="dyH" fmla="sat2 rh3 htH wtH" />
+ <gd name="xH" fmla="+- hc dxH 0" />
+
+ <gd name="yH" fmla="+- vc dyH 0" />
+
+
+ <gd name="rI" fmla="min rw2 rh2" />
+
+ <gd name="u1" fmla="*/ dxH dxH 1" />
+ <gd name="u2" fmla="*/ dyH dyH 1" />
+ <gd name="u3" fmla="*/ rI rI 1" />
+ <gd name="u4" fmla="+- u1 0 u3" />
+ <gd name="u5" fmla="+- u2 0 u3" />
+ <gd name="u6" fmla="*/ u4 u5 u1" />
+ <gd name="u7" fmla="*/ u6 1 u2" />
+ <gd name="u8" fmla="+- 1 0 u7" />
+ <gd name="u9" fmla="sqrt u8" />
+ <gd name="u10" fmla="*/ u4 1 dxH" />
+ <gd name="u11" fmla="*/ u10 1 dyH" />
+ <gd name="u12" fmla="+/ 1 u9 u11" />
+ <gd name="u13" fmla="at2 1 u12" />
+ <gd name="u14" fmla="+- u13 21600000 0" />
+ <gd name="u15" fmla="?: u13 u13 u14" />
+ <gd name="u16" fmla="+- u15 0 enAng" />
+
+ <gd name="u17" fmla="+- u16 21600000 0" />
+ <gd name="u18" fmla="?: u16 u16 u17" />
+ <gd name="u19" fmla="+- u18 0 cd2" />
+ <gd name="u20" fmla="+- u18 0 21600000" />
+ <gd name="u21" fmla="?: u19 u20 u18" />
+ <gd name="u22" fmla="abs u21" />
+ <gd name="minAng" fmla="*/ u22 -1 1" />
+ <gd name="u23" fmla="abs adj2" />
+ <gd name="a2" fmla="*/ u23 -1 1" />
+ <gd name="aAng" fmla="pin minAng a2 0" />
+
+ <gd name="ptAng" fmla="+- enAng aAng 0" />
+
+
+ <gd name="wtA" fmla="sin rw3 ptAng" />
+ <gd name="htA" fmla="cos rh3 ptAng" />
+ <gd name="dxA" fmla="cat2 rw3 htA wtA" />
+ <gd name="dyA" fmla="sat2 rh3 htA wtA" />
+ <gd name="xA" fmla="+- hc dxA 0" />
+
+ <gd name="yA" fmla="+- vc dyA 0" />
+
+
+ <gd name="wtE" fmla="sin rw1 stAng" />
+ <gd name="htE" fmla="cos rh1 stAng" />
+ <gd name="dxE" fmla="cat2 rw1 htE wtE" />
+ <gd name="dyE" fmla="sat2 rh1 htE wtE" />
+ <gd name="xE" fmla="+- hc dxE 0" />
+
+ <gd name="yE" fmla="+- vc dyE 0" />
+
+
+ <gd name="wtD" fmla="sin rw2 stAng" />
+ <gd name="htD" fmla="cos rh2 stAng" />
+ <gd name="dxD" fmla="cat2 rw2 htD wtD" />
+ <gd name="dyD" fmla="sat2 rh2 htD wtD" />
+ <gd name="xD" fmla="+- hc dxD 0" />
+
+ <gd name="yD" fmla="+- vc dyD 0" />
+
+
+ <gd name="dxG" fmla="cos thh ptAng" />
+ <gd name="dyG" fmla="sin thh ptAng" />
+ <gd name="xG" fmla="+- xH dxG 0" />
+
+ <gd name="yG" fmla="+- yH dyG 0" />
+
+
+ <gd name="dxB" fmla="cos thh ptAng" />
+ <gd name="dyB" fmla="sin thh ptAng" />
+ <gd name="xB" fmla="+- xH 0 dxB 0" />
+
+ <gd name="yB" fmla="+- yH 0 dyB 0" />
+
+
+ <gd name="sx1" fmla="+- xB 0 hc" />
+
+ <gd name="sy1" fmla="+- yB 0 vc" />
+
+ <gd name="sx2" fmla="+- xG 0 hc" />
+
+ <gd name="sy2" fmla="+- yG 0 vc" />
+
+
+ <gd name="rO" fmla="min rw1 rh1" />
+
+ <gd name="x1O" fmla="*/ sx1 rO rw1" />
+
+ <gd name="y1O" fmla="*/ sy1 rO rh1" />
+
+ <gd name="x2O" fmla="*/ sx2 rO rw1" />
+
+ <gd name="y2O" fmla="*/ sy2 rO rh1" />
+
+
+ <gd name="dxO" fmla="+- x2O 0 x1O" />
+ <gd name="dyO" fmla="+- y2O 0 y1O" />
+ <gd name="dO" fmla="mod dxO dyO 0" />
+
+ <gd name="q1" fmla="*/ x1O y2O 1" />
+ <gd name="q2" fmla="*/ x2O y1O 1" />
+ <gd name="DO" fmla="+- q1 0 q2" />
+
+
+ <gd name="q3" fmla="*/ rO rO 1" />
+
+ <gd name="q4" fmla="*/ dO dO 1" />
+
+ <gd name="q5" fmla="*/ q3 q4 1" />
+
+ <gd name="q6" fmla="*/ DO DO 1" />
+
+ <gd name="q7" fmla="+- q5 0 q6" />
+
+ <gd name="q8" fmla="max q7 0" />
+
+ <gd name="sdelO" fmla="sqrt q8" />
+
+ <gd name="ndyO" fmla="*/ dyO -1 1" />
+ <gd name="sdyO" fmla="?: ndyO -1 1" />
+
+ <gd name="q9" fmla="*/ sdyO dxO 1" />
+
+ <gd name="q10" fmla="*/ q9 sdelO 1" />
+
+ <gd name="q11" fmla="*/ DO dyO 1" />
+
+ <gd name="dxF1" fmla="+/ q11 q10 q4" />
+
+ <gd name="q12" fmla="+- q11 0 q10" />
+ <gd name="dxF2" fmla="*/ q12 1 q4" />
+
+
+ <gd name="adyO" fmla="abs dyO" />
+ <gd name="q13" fmla="*/ adyO sdelO 1" />
+
+ <gd name="q14" fmla="*/ DO dxO -1" />
+
+ <gd name="dyF1" fmla="+/ q14 q13 q4" />
+
+ <gd name="q15" fmla="+- q14 0 q13" />
+ <gd name="dyF2" fmla="*/ q15 1 q4" />
+
+
+
+ <gd name="q16" fmla="+- x2O 0 dxF1" />
+ <gd name="q17" fmla="+- x2O 0 dxF2" />
+ <gd name="q18" fmla="+- y2O 0 dyF1" />
+ <gd name="q19" fmla="+- y2O 0 dyF2" />
+ <gd name="q20" fmla="mod q16 q18 0" />
+
+ <gd name="q21" fmla="mod q17 q19 0" />
+
+ <gd name="q22" fmla="+- q21 0 q20" />
+ <gd name="dxF" fmla="?: q22 dxF1 dxF2" />
+
+ <gd name="dyF" fmla="?: q22 dyF1 dyF2" />
+
+ <gd name="sdxF" fmla="*/ dxF rw1 rO" />
+
+ <gd name="sdyF" fmla="*/ dyF rh1 rO" />
+
+ <gd name="xF" fmla="+- hc sdxF 0" />
+
+ <gd name="yF" fmla="+- vc sdyF 0" />
+
+
+
+
+ <gd name="x1I" fmla="*/ sx1 rI rw2" />
+
+ <gd name="y1I" fmla="*/ sy1 rI rh2" />
+
+ <gd name="x2I" fmla="*/ sx2 rI rw2" />
+
+ <gd name="y2I" fmla="*/ sy2 rI rh2" />
+
+
+ <gd name="dxI" fmla="+- x2I 0 x1I" />
+ <gd name="dyI" fmla="+- y2I 0 y1I" />
+ <gd name="dI" fmla="mod dxI dyI 0" />
+ <gd name="v1" fmla="*/ x1I y2I 1" />
+ <gd name="v2" fmla="*/ x2I y1I 1" />
+ <gd name="DI" fmla="+- v1 0 v2" />
+
+ <gd name="v3" fmla="*/ rI rI 1" />
+ <gd name="v4" fmla="*/ dI dI 1" />
+ <gd name="v5" fmla="*/ v3 v4 1" />
+ <gd name="v6" fmla="*/ DI DI 1" />
+ <gd name="v7" fmla="+- v5 0 v6" />
+ <gd name="v8" fmla="max v7 0" />
+ <gd name="sdelI" fmla="sqrt v8" />
+ <gd name="v9" fmla="*/ sdyO dxI 1" />
+ <gd name="v10" fmla="*/ v9 sdelI 1" />
+ <gd name="v11" fmla="*/ DI dyI 1" />
+ <gd name="dxC1" fmla="+/ v11 v10 v4" />
+ <gd name="v12" fmla="+- v11 0 v10" />
+ <gd name="dxC2" fmla="*/ v12 1 v4" />
+
+ <gd name="adyI" fmla="abs dyI" />
+ <gd name="v13" fmla="*/ adyI sdelI 1" />
+ <gd name="v14" fmla="*/ DI dxI -1" />
+ <gd name="dyC1" fmla="+/ v14 v13 v4" />
+ <gd name="v15" fmla="+- v14 0 v13" />
+ <gd name="dyC2" fmla="*/ v15 1 v4" />
+
+ <gd name="v16" fmla="+- x1I 0 dxC1" />
+ <gd name="v17" fmla="+- x1I 0 dxC2" />
+ <gd name="v18" fmla="+- y1I 0 dyC1" />
+ <gd name="v19" fmla="+- y1I 0 dyC2" />
+ <gd name="v20" fmla="mod v16 v18 0" />
+ <gd name="v21" fmla="mod v17 v19 0" />
+ <gd name="v22" fmla="+- v21 0 v20" />
+ <gd name="dxC" fmla="?: v22 dxC1 dxC2" />
+ <gd name="dyC" fmla="?: v22 dyC1 dyC2" />
+ <gd name="sdxC" fmla="*/ dxC rw2 rI" />
+ <gd name="sdyC" fmla="*/ dyC rh2 rI" />
+ <gd name="xC" fmla="+- hc sdxC 0" />
+
+ <gd name="yC" fmla="+- vc sdyC 0" />
+
+
+ <gd name="ist0" fmla="at2 sdxC sdyC" />
+ <gd name="ist1" fmla="+- ist0 21600000 0" />
+ <gd name="istAng0" fmla="?: ist0 ist0 ist1" />
+ <gd name="isw1" fmla="+- stAng 0 istAng0" />
+ <gd name="isw2" fmla="+- isw1 21600000 0" />
+ <gd name="iswAng0" fmla="?: isw1 isw1 isw2" />
+
+ <gd name="istAng" fmla="+- istAng0 iswAng0 0" />
+ <gd name="iswAng" fmla="+- 0 0 iswAng0" />
+
+ <gd name="p1" fmla="+- xF 0 xC" />
+ <gd name="p2" fmla="+- yF 0 yC" />
+ <gd name="p3" fmla="mod p1 p2 0" />
+ <gd name="p4" fmla="*/ p3 1 2" />
+ <gd name="p5" fmla="+- p4 0 thh" />
+ <gd name="xGp" fmla="?: p5 xF xG" />
+ <gd name="yGp" fmla="?: p5 yF yG" />
+ <gd name="xBp" fmla="?: p5 xC xB" />
+ <gd name="yBp" fmla="?: p5 yC yB" />
+
+ <gd name="en0" fmla="at2 sdxF sdyF" />
+ <gd name="en1" fmla="+- en0 21600000 0" />
+ <gd name="en2" fmla="?: en0 en0 en1" />
+ <gd name="sw0" fmla="+- en2 0 stAng" />
+ <gd name="sw1" fmla="+- sw0 0 21600000" />
+ <gd name="swAng" fmla="?: sw0 sw1 sw0" />
+
+
+ <gd name="stAng0" fmla="+- stAng swAng 0" />
+
+ <gd name="swAng0" fmla="+- 0 0 swAng" />
+
+
+ <gd name="wtI" fmla="sin rw3 stAng" />
+ <gd name="htI" fmla="cos rh3 stAng" />
+ <gd name="dxI" fmla="cat2 rw3 htI wtI" />
+ <gd name="dyI" fmla="sat2 rh3 htI wtI" />
+ <gd name="xI" fmla="+- hc dxI 0" />
+
+ <gd name="yI" fmla="+- vc dyI 0" />
+
+
+ <gd name="aI" fmla="+- stAng cd4 0" />
+ <gd name="aA" fmla="+- ptAng 0 cd4" />
+ <gd name="aB" fmla="+- ptAng cd2 0" />
+
+ <gd name="idx" fmla="cos rw1 2700000" />
+ <gd name="idy" fmla="sin rh1 2700000" />
+ <gd name="il" fmla="+- hc 0 idx" />
+ <gd name="ir" fmla="+- hc idx 0" />
+ <gd name="it" fmla="+- vc 0 idy" />
+ <gd name="ib" fmla="+- vc idy 0" />
+ </gdLst>
+
+ <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <ahPolar gdRefAng="adj2" minAng="minAng" maxAng="0">
+ <pos x="xA" y="yA" />
+ </ahPolar>
+ <ahPolar gdRefAng="adj4" minAng="0" maxAng="21599999">
+ <pos x="xE" y="yE" />
+ </ahPolar>
+ <ahPolar gdRefR="adj1" minR="0" maxR="maxAdj1" gdRefAng="adj3" minAng="0" maxAng="21599999">
+ <pos x="xF" y="yF" />
+ </ahPolar>
+ <ahPolar gdRefR="adj5" minR="0" maxR="25000">
+ <pos x="xB" y="yB" />
+ </ahPolar>
+ </ahLst>
+
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="aI">
+ <pos x="xI" y="yI" />
+ </cxn>
+ <cxn ang="ptAng">
+ <pos x="xGp" y="yGp" />
+ </cxn>
+ <cxn ang="aA">
+ <pos x="xA" y="yA" />
+ </cxn>
+ <cxn ang="aB">
+ <pos x="xBp" y="yBp" />
+ </cxn>
+ </cxnLst>
+
+ <rect l="il" t="it" r="ir" b="ib" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path>
+ <moveTo>
+ <pt x="xE" y="yE" />
+ </moveTo>
+ <lnTo>
+ <pt x="xD" y="yD" />
+ </lnTo>
+ <arcTo wR="rw2" hR="rh2" stAng="istAng" swAng="iswAng" />
+ <lnTo>
+ <pt x="xBp" y="yBp" />
+ </lnTo>
+ <lnTo>
+ <pt x="xA" y="yA" />
+ </lnTo>
+ <lnTo>
+ <pt x="xGp" y="yGp" />
+ </lnTo>
+ <lnTo>
+ <pt x="xF" y="yF" />
+ </lnTo>
+ <arcTo wR="rw1" hR="rh1" stAng="stAng0" swAng="swAng0" />
+ <close />
+ </path>
+ </pathLst>
+
+ </leftCircularArrow>
+ <leftRightArrow>
+ <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="adj1" fmla="val 50000" />
+ <gd name="adj2" fmla="val 50000" />
+ </avLst>
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="maxAdj2" fmla="*/ 50000 w ss" />
+ <gd name="a1" fmla="pin 0 adj1 100000" />
+ <gd name="a2" fmla="pin 0 adj2 maxAdj2" />
+ <gd name="x2" fmla="*/ ss a2 100000" />
+ <gd name="x3" fmla="+- r 0 x2" />
+ <gd name="dy" fmla="*/ h a1 200000" />
+ <gd name="y1" fmla="+- vc 0 dy" />
+ <gd name="y2" fmla="+- vc dy 0" />
+ <gd name="dx1" fmla="*/ y1 x2 hd2" />
+ <gd name="x1" fmla="+- x2 0 dx1" />
+ <gd name="x4" fmla="+- x3 dx1 0" />
+ </gdLst>
+ <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <ahXY gdRefY="adj1" minY="0" maxY="100000">
+ <pos x="x3" y="y1" />
+ </ahXY>
+ <ahXY gdRefX="adj2" minX="0" maxX="maxAdj2">
+ <pos x="x2" y="t" />
+ </ahXY>
+ </ahLst>
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="0">
+ <pos x="r" y="vc" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="x3" y="b" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="x2" y="b" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="l" y="vc" />
+ </cxn>
+ <cxn ang="3cd4">
+ <pos x="x2" y="t" />
+ </cxn>
+ <cxn ang="3cd4">
+ <pos x="x3" y="t" />
+ </cxn>
+ </cxnLst>
+ <rect l="x1" t="y1" r="x4" b="y2" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path>
+ <moveTo>
+ <pt x="l" y="vc" />
+ </moveTo>
+ <lnTo>
+ <pt x="x2" y="t" />
+ </lnTo>
+ <lnTo>
+ <pt x="x2" y="y1" />
+ </lnTo>
+ <lnTo>
+ <pt x="x3" y="y1" />
+ </lnTo>
+ <lnTo>
+ <pt x="x3" y="t" />
+ </lnTo>
+ <lnTo>
+ <pt x="r" y="vc" />
+ </lnTo>
+ <lnTo>
+ <pt x="x3" y="b" />
+ </lnTo>
+ <lnTo>
+ <pt x="x3" y="y2" />
+ </lnTo>
+ <lnTo>
+ <pt x="x2" y="y2" />
+ </lnTo>
+ <lnTo>
+ <pt x="x2" y="b" />
+ </lnTo>
+ <close />
+ </path>
+ </pathLst>
+ </leftRightArrow>
+ <leftRightArrowCallout>
+
+ <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="adj1" fmla="val 25000" />
+
+ <gd name="adj2" fmla="val 25000" />
+
+ <gd name="adj3" fmla="val 25000" />
+
+ <gd name="adj4" fmla="val 48123" />
+
+ </avLst>
+
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="maxAdj2" fmla="*/ 50000 h ss" />
+
+ <gd name="a2" fmla="pin 0 adj2 maxAdj2" />
+ <gd name="maxAdj1" fmla="*/ a2 2 1" />
+
+ <gd name="a1" fmla="pin 0 adj1 maxAdj1" />
+ <gd name="maxAdj3" fmla="*/ 50000 w ss" />
+
+ <gd name="a3" fmla="pin 0 adj3 maxAdj3" />
+ <gd name="q2" fmla="*/ a3 ss wd2" />
+
+ <gd name="maxAdj4" fmla="+- 100000 0 q2" />
+
+ <gd name="a4" fmla="pin 0 adj4 maxAdj4" />
+ <gd name="dy1" fmla="*/ ss a2 100000" />
+
+ <gd name="dy2" fmla="*/ ss a1 200000" />
+
+ <gd name="y1" fmla="+- vc 0 dy1" />
+ <gd name="y2" fmla="+- vc 0 dy2" />
+ <gd name="y3" fmla="+- vc dy2 0" />
+ <gd name="y4" fmla="+- vc dy1 0" />
+ <gd name="x1" fmla="*/ ss a3 100000" />
+
+ <gd name="x4" fmla="+- r 0 x1" />
+
+ <gd name="dx2" fmla="*/ w a4 200000" />
+
+ <gd name="x2" fmla="+- hc 0 dx2" />
+
+ <gd name="x3" fmla="+- hc dx2 0" />
+
+ </gdLst>
+
+ <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <ahXY gdRefY="adj1" minY="0" maxY="maxAdj1">
+ <pos x="x1" y="y2" />
+ </ahXY>
+ <ahXY gdRefY="adj2" minY="0" maxY="maxAdj2">
+ <pos x="l" y="y1" />
+ </ahXY>
+ <ahXY gdRefX="adj3" minX="0" maxX="maxAdj3">
+ <pos x="x1" y="t" />
+ </ahXY>
+ <ahXY gdRefX="adj4" minX="0" maxX="maxAdj4">
+ <pos x="x2" y="b" />
+ </ahXY>
+ </ahLst>
+
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="3cd4">
+ <pos x="hc" y="t" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="l" y="vc" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="hc" y="b" />
+ </cxn>
+ <cxn ang="0">
+ <pos x="r" y="vc" />
+ </cxn>
+ </cxnLst>
+
+ <rect l="x2" t="t" r="x3" b="b" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path>
+ <moveTo>
+ <pt x="l" y="vc" />
+ </moveTo>
+ <lnTo>
+ <pt x="x1" y="y1" />
+ </lnTo>
+ <lnTo>
+ <pt x="x1" y="y2" />
+ </lnTo>
+ <lnTo>
+ <pt x="x2" y="y2" />
+ </lnTo>
+ <lnTo>
+ <pt x="x2" y="t" />
+ </lnTo>
+ <lnTo>
+ <pt x="x3" y="t" />
+ </lnTo>
+ <lnTo>
+ <pt x="x3" y="y2" />
+ </lnTo>
+ <lnTo>
+ <pt x="x4" y="y2" />
+ </lnTo>
+ <lnTo>
+ <pt x="x4" y="y1" />
+ </lnTo>
+ <lnTo>
+ <pt x="r" y="vc" />
+ </lnTo>
+ <lnTo>
+ <pt x="x4" y="y4" />
+ </lnTo>
+ <lnTo>
+ <pt x="x4" y="y3" />
+ </lnTo>
+ <lnTo>
+ <pt x="x3" y="y3" />
+ </lnTo>
+ <lnTo>
+ <pt x="x3" y="b" />
+ </lnTo>
+ <lnTo>
+ <pt x="x2" y="b" />
+ </lnTo>
+ <lnTo>
+ <pt x="x2" y="y3" />
+ </lnTo>
+ <lnTo>
+ <pt x="x1" y="y3" />
+ </lnTo>
+ <lnTo>
+ <pt x="x1" y="y4" />
+ </lnTo>
+ <close />
+ </path>
+ </pathLst>
+
+ </leftRightArrowCallout>
+ <leftRightCircularArrow>
+
+ <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="adj1" fmla="val 12500" />
+
+ <gd name="adj2" fmla="val 1142319" />
+
+ <gd name="adj3" fmla="val 20457681" />
+
+ <gd name="adj4" fmla="val 11942319" />
+
+ <gd name="adj5" fmla="val 12500" />
+
+ </avLst>
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="a5" fmla="pin 0 adj5 25000" />
+
+ <gd name="maxAdj1" fmla="*/ a5 2 1" />
+
+ <gd name="a1" fmla="pin 0 adj1 maxAdj1" />
+ <gd name="enAng" fmla="pin 1 adj3 21599999" />
+ <gd name="stAng" fmla="pin 0 adj4 21599999" />
+
+ <gd name="th" fmla="*/ ss a1 100000" />
+
+ <gd name="thh" fmla="*/ ss a5 100000" />
+
+ <gd name="th2" fmla="*/ th 1 2" />
+
+
+ <gd name="rw1" fmla="+- wd2 th2 thh" />
+
+ <gd name="rh1" fmla="+- hd2 th2 thh" />
+
+ <gd name="rw2" fmla="+- rw1 0 th" />
+
+ <gd name="rh2" fmla="+- rh1 0 th" />
+
+ <gd name="rw3" fmla="+- rw2 th2 0" />
+
+ <gd name="rh3" fmla="+- rh2 th2 0" />
+
+
+ <gd name="wtH" fmla="sin rw3 enAng" />
+ <gd name="htH" fmla="cos rh3 enAng" />
+ <gd name="dxH" fmla="cat2 rw3 htH wtH" />
+ <gd name="dyH" fmla="sat2 rh3 htH wtH" />
+ <gd name="xH" fmla="+- hc dxH 0" />
+
+ <gd name="yH" fmla="+- vc dyH 0" />
+
+
+ <gd name="rI" fmla="min rw2 rh2" />
+
+ <gd name="u1" fmla="*/ dxH dxH 1" />
+ <gd name="u2" fmla="*/ dyH dyH 1" />
+ <gd name="u3" fmla="*/ rI rI 1" />
+ <gd name="u4" fmla="+- u1 0 u3" />
+ <gd name="u5" fmla="+- u2 0 u3" />
+ <gd name="u6" fmla="*/ u4 u5 u1" />
+ <gd name="u7" fmla="*/ u6 1 u2" />
+ <gd name="u8" fmla="+- 1 0 u7" />
+ <gd name="u9" fmla="sqrt u8" />
+ <gd name="u10" fmla="*/ u4 1 dxH" />
+ <gd name="u11" fmla="*/ u10 1 dyH" />
+ <gd name="u12" fmla="+/ 1 u9 u11" />
+ <gd name="u13" fmla="at2 1 u12" />
+ <gd name="u14" fmla="+- u13 21600000 0" />
+ <gd name="u15" fmla="?: u13 u13 u14" />
+ <gd name="u16" fmla="+- u15 0 enAng" />
+
+ <gd name="u17" fmla="+- u16 21600000 0" />
+ <gd name="u18" fmla="?: u16 u16 u17" />
+ <gd name="u19" fmla="+- u18 0 cd2" />
+ <gd name="u20" fmla="+- u18 0 21600000" />
+ <gd name="u21" fmla="?: u19 u20 u18" />
+ <gd name="maxAng" fmla="abs u21" />
+ <gd name="aAng" fmla="pin 0 adj2 maxAng" />
+
+ <gd name="ptAng" fmla="+- enAng aAng 0" />
+
+
+ <gd name="wtA" fmla="sin rw3 ptAng" />
+ <gd name="htA" fmla="cos rh3 ptAng" />
+ <gd name="dxA" fmla="cat2 rw3 htA wtA" />
+ <gd name="dyA" fmla="sat2 rh3 htA wtA" />
+ <gd name="xA" fmla="+- hc dxA 0" />
+
+ <gd name="yA" fmla="+- vc dyA 0" />
+
+
+ <gd name="dxG" fmla="cos thh ptAng" />
+ <gd name="dyG" fmla="sin thh ptAng" />
+ <gd name="xG" fmla="+- xH dxG 0" />
+
+ <gd name="yG" fmla="+- yH dyG 0" />
+
+
+ <gd name="dxB" fmla="cos thh ptAng" />
+ <gd name="dyB" fmla="sin thh ptAng" />
+ <gd name="xB" fmla="+- xH 0 dxB 0" />
+
+ <gd name="yB" fmla="+- yH 0 dyB 0" />
+
+
+ <gd name="sx1" fmla="+- xB 0 hc" />
+
+ <gd name="sy1" fmla="+- yB 0 vc" />
+
+ <gd name="sx2" fmla="+- xG 0 hc" />
+
+ <gd name="sy2" fmla="+- yG 0 vc" />
+
+
+ <gd name="rO" fmla="min rw1 rh1" />
+
+ <gd name="x1O" fmla="*/ sx1 rO rw1" />
+
+ <gd name="y1O" fmla="*/ sy1 rO rh1" />
+
+ <gd name="x2O" fmla="*/ sx2 rO rw1" />
+
+ <gd name="y2O" fmla="*/ sy2 rO rh1" />
+
+
+ <gd name="dxO" fmla="+- x2O 0 x1O" />
+ <gd name="dyO" fmla="+- y2O 0 y1O" />
+ <gd name="dO" fmla="mod dxO dyO 0" />
+
+ <gd name="q1" fmla="*/ x1O y2O 1" />
+ <gd name="q2" fmla="*/ x2O y1O 1" />
+ <gd name="DO" fmla="+- q1 0 q2" />
+
+
+ <gd name="q3" fmla="*/ rO rO 1" />
+
+ <gd name="q4" fmla="*/ dO dO 1" />
+
+ <gd name="q5" fmla="*/ q3 q4 1" />
+
+ <gd name="q6" fmla="*/ DO DO 1" />
+
+ <gd name="q7" fmla="+- q5 0 q6" />
+
+ <gd name="q8" fmla="max q7 0" />
+
+ <gd name="sdelO" fmla="sqrt q8" />
+
+ <gd name="ndyO" fmla="*/ dyO -1 1" />
+ <gd name="sdyO" fmla="?: ndyO -1 1" />
+
+ <gd name="q9" fmla="*/ sdyO dxO 1" />
+
+ <gd name="q10" fmla="*/ q9 sdelO 1" />
+
+ <gd name="q11" fmla="*/ DO dyO 1" />
+
+ <gd name="dxF1" fmla="+/ q11 q10 q4" />
+
+ <gd name="q12" fmla="+- q11 0 q10" />
+ <gd name="dxF2" fmla="*/ q12 1 q4" />
+
+
+ <gd name="adyO" fmla="abs dyO" />
+ <gd name="q13" fmla="*/ adyO sdelO 1" />
+
+ <gd name="q14" fmla="*/ DO dxO -1" />
+
+ <gd name="dyF1" fmla="+/ q14 q13 q4" />
+
+ <gd name="q15" fmla="+- q14 0 q13" />
+ <gd name="dyF2" fmla="*/ q15 1 q4" />
+
+
+
+ <gd name="q16" fmla="+- x2O 0 dxF1" />
+ <gd name="q17" fmla="+- x2O 0 dxF2" />
+ <gd name="q18" fmla="+- y2O 0 dyF1" />
+ <gd name="q19" fmla="+- y2O 0 dyF2" />
+ <gd name="q20" fmla="mod q16 q18 0" />
+
+ <gd name="q21" fmla="mod q17 q19 0" />
+
+ <gd name="q22" fmla="+- q21 0 q20" />
+ <gd name="dxF" fmla="?: q22 dxF1 dxF2" />
+
+ <gd name="dyF" fmla="?: q22 dyF1 dyF2" />
+
+ <gd name="sdxF" fmla="*/ dxF rw1 rO" />
+
+ <gd name="sdyF" fmla="*/ dyF rh1 rO" />
+
+ <gd name="xF" fmla="+- hc sdxF 0" />
+
+ <gd name="yF" fmla="+- vc sdyF 0" />
+
+
+
+
+ <gd name="x1I" fmla="*/ sx1 rI rw2" />
+
+ <gd name="y1I" fmla="*/ sy1 rI rh2" />
+
+ <gd name="x2I" fmla="*/ sx2 rI rw2" />
+
+ <gd name="y2I" fmla="*/ sy2 rI rh2" />
+
+
+ <gd name="dxI" fmla="+- x2I 0 x1I" />
+ <gd name="dyI" fmla="+- y2I 0 y1I" />
+ <gd name="dI" fmla="mod dxI dyI 0" />
+ <gd name="v1" fmla="*/ x1I y2I 1" />
+ <gd name="v2" fmla="*/ x2I y1I 1" />
+ <gd name="DI" fmla="+- v1 0 v2" />
+
+ <gd name="v3" fmla="*/ rI rI 1" />
+ <gd name="v4" fmla="*/ dI dI 1" />
+ <gd name="v5" fmla="*/ v3 v4 1" />
+ <gd name="v6" fmla="*/ DI DI 1" />
+ <gd name="v7" fmla="+- v5 0 v6" />
+ <gd name="v8" fmla="max v7 0" />
+ <gd name="sdelI" fmla="sqrt v8" />
+ <gd name="v9" fmla="*/ sdyO dxI 1" />
+ <gd name="v10" fmla="*/ v9 sdelI 1" />
+ <gd name="v11" fmla="*/ DI dyI 1" />
+ <gd name="dxC1" fmla="+/ v11 v10 v4" />
+ <gd name="v12" fmla="+- v11 0 v10" />
+ <gd name="dxC2" fmla="*/ v12 1 v4" />
+
+ <gd name="adyI" fmla="abs dyI" />
+ <gd name="v13" fmla="*/ adyI sdelI 1" />
+ <gd name="v14" fmla="*/ DI dxI -1" />
+ <gd name="dyC1" fmla="+/ v14 v13 v4" />
+ <gd name="v15" fmla="+- v14 0 v13" />
+ <gd name="dyC2" fmla="*/ v15 1 v4" />
+
+ <gd name="v16" fmla="+- x1I 0 dxC1" />
+ <gd name="v17" fmla="+- x1I 0 dxC2" />
+ <gd name="v18" fmla="+- y1I 0 dyC1" />
+ <gd name="v19" fmla="+- y1I 0 dyC2" />
+ <gd name="v20" fmla="mod v16 v18 0" />
+ <gd name="v21" fmla="mod v17 v19 0" />
+ <gd name="v22" fmla="+- v21 0 v20" />
+ <gd name="dxC" fmla="?: v22 dxC1 dxC2" />
+ <gd name="dyC" fmla="?: v22 dyC1 dyC2" />
+ <gd name="sdxC" fmla="*/ dxC rw2 rI" />
+ <gd name="sdyC" fmla="*/ dyC rh2 rI" />
+ <gd name="xC" fmla="+- hc sdxC 0" />
+
+ <gd name="yC" fmla="+- vc sdyC 0" />
+
+
+ <gd name="wtI" fmla="sin rw3 stAng" />
+ <gd name="htI" fmla="cos rh3 stAng" />
+ <gd name="dxI" fmla="cat2 rw3 htI wtI" />
+ <gd name="dyI" fmla="sat2 rh3 htI wtI" />
+ <gd name="xI" fmla="+- hc dxI 0" />
+
+ <gd name="yI" fmla="+- vc dyI 0" />
+
+
+ <gd name="lptAng" fmla="+- stAng 0 aAng" />
+
+
+ <gd name="wtL" fmla="sin rw3 lptAng" />
+ <gd name="htL" fmla="cos rh3 lptAng" />
+ <gd name="dxL" fmla="cat2 rw3 htL wtL" />
+ <gd name="dyL" fmla="sat2 rh3 htL wtL" />
+ <gd name="xL" fmla="+- hc dxL 0" />
+
+ <gd name="yL" fmla="+- vc dyL 0" />
+
+
+ <gd name="dxK" fmla="cos thh lptAng" />
+ <gd name="dyK" fmla="sin thh lptAng" />
+ <gd name="xK" fmla="+- xI dxK 0" />
+
+ <gd name="yK" fmla="+- yI dyK 0" />
+
+
+ <gd name="dxJ" fmla="cos thh lptAng" />
+ <gd name="dyJ" fmla="sin thh lptAng" />
+ <gd name="xJ" fmla="+- xI 0 dxJ 0" />
+
+ <gd name="yJ" fmla="+- yI 0 dyJ 0" />
+
+
+ <gd name="p1" fmla="+- xF 0 xC" />
+ <gd name="p2" fmla="+- yF 0 yC" />
+ <gd name="p3" fmla="mod p1 p2 0" />
+ <gd name="p4" fmla="*/ p3 1 2" />
+ <gd name="p5" fmla="+- p4 0 thh" />
+ <gd name="xGp" fmla="?: p5 xF xG" />
+ <gd name="yGp" fmla="?: p5 yF yG" />
+ <gd name="xBp" fmla="?: p5 xC xB" />
+ <gd name="yBp" fmla="?: p5 yC yB" />
+
+ <gd name="en0" fmla="at2 sdxF sdyF" />
+ <gd name="en1" fmla="+- en0 21600000 0" />
+ <gd name="en2" fmla="?: en0 en0 en1" />
+ <gd name="od0" fmla="+- en2 0 enAng" />
+ <gd name="od1" fmla="+- od0 21600000 0" />
+ <gd name="od2" fmla="?: od0 od0 od1" />
+
+ <gd name="st0" fmla="+- stAng 0 od2" />
+ <gd name="st1" fmla="+- st0 21600000 0" />
+ <gd name="st2" fmla="?: st0 st0 st1" />
+
+ <gd name="sw0" fmla="+- en2 0 st2" />
+ <gd name="sw1" fmla="+- sw0 21600000 0" />
+ <gd name="swAng" fmla="?: sw0 sw0 sw1" />
+
+
+ <gd name="ist0" fmla="at2 sdxC sdyC" />
+ <gd name="ist1" fmla="+- ist0 21600000 0" />
+ <gd name="istAng" fmla="?: ist0 ist0 ist1" />
+
+ <gd name="id0" fmla="+- istAng 0 enAng" />
+ <gd name="id1" fmla="+- id0 0 21600000" />
+ <gd name="id2" fmla="?: id0 id1 id0" />
+
+ <gd name="ien0" fmla="+- stAng 0 id2" />
+ <gd name="ien1" fmla="+- ien0 0 21600000" />
+ <gd name="ien2" fmla="?: ien1 ien1 ien0" />
+
+ <gd name="isw1" fmla="+- ien2 0 istAng" />
+ <gd name="isw2" fmla="+- isw1 0 21600000" />
+ <gd name="iswAng" fmla="?: isw1 isw2 isw1" />
+
+
+ <gd name="wtE" fmla="sin rw1 st2" />
+ <gd name="htE" fmla="cos rh1 st2" />
+ <gd name="dxE" fmla="cat2 rw1 htE wtE" />
+ <gd name="dyE" fmla="sat2 rh1 htE wtE" />
+ <gd name="xE" fmla="+- hc dxE 0" />
+
+ <gd name="yE" fmla="+- vc dyE 0" />
+
+
+ <gd name="wtD" fmla="sin rw2 ien2" />
+ <gd name="htD" fmla="cos rh2 ien2" />
+ <gd name="dxD" fmla="cat2 rw2 htD wtD" />
+ <gd name="dyD" fmla="sat2 rh2 htD wtD" />
+ <gd name="xD" fmla="+- hc dxD 0" />
+
+ <gd name="yD" fmla="+- vc dyD 0" />
+
+
+ <gd name="xKp" fmla="?: p5 xE xK" />
+ <gd name="yKp" fmla="?: p5 yE yK" />
+ <gd name="xJp" fmla="?: p5 xD xJ" />
+ <gd name="yJp" fmla="?: p5 yD yJ" />
+
+ <gd name="aL" fmla="+- lptAng 0 cd4" />
+ <gd name="aA" fmla="+- ptAng cd4 0" />
+ <gd name="aB" fmla="+- ptAng cd2 0" />
+ <gd name="aJ" fmla="+- lptAng cd2 0" />
+
+ <gd name="idx" fmla="cos rw1 2700000" />
+ <gd name="idy" fmla="sin rh1 2700000" />
+ <gd name="il" fmla="+- hc 0 idx" />
+ <gd name="ir" fmla="+- hc idx 0" />
+ <gd name="it" fmla="+- vc 0 idy" />
+ <gd name="ib" fmla="+- vc idy 0" />
+ </gdLst>
+
+ <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <ahPolar gdRefAng="adj2" minAng="0" maxAng="maxAng">
+ <pos x="xA" y="yA" />
+ </ahPolar>
+ <ahPolar gdRefAng="adj4" minAng="0" maxAng="21599999">
+ <pos x="xE" y="yE" />
+ </ahPolar>
+ <ahPolar gdRefR="adj1" minR="0" maxR="maxAdj1" gdRefAng="adj3" minAng="0" maxAng="21599999">
+ <pos x="xF" y="yF" />
+ </ahPolar>
+ <ahPolar gdRefR="adj5" minR="0" maxR="25000">
+ <pos x="xB" y="yB" />
+ </ahPolar>
+ </ahLst>
+
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="aL">
+ <pos x="xL" y="yL" />
+ </cxn>
+ <cxn ang="lptAng">
+ <pos x="xKp" y="yKp" />
+ </cxn>
+ <cxn ang="ptAng">
+ <pos x="xGp" y="yGp" />
+ </cxn>
+ <cxn ang="aA">
+ <pos x="xA" y="yA" />
+ </cxn>
+ <cxn ang="aB">
+ <pos x="xBp" y="yBp" />
+ </cxn>
+ <cxn ang="aJ">
+ <pos x="xJp" y="yJp" />
+ </cxn>
+ </cxnLst>
+
+ <rect l="il" t="it" r="ir" b="ib" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path>
+ <moveTo>
+ <pt x="xL" y="yL" />
+ </moveTo>
+ <lnTo>
+ <pt x="xKp" y="yKp" />
+ </lnTo>
+ <lnTo>
+ <pt x="xE" y="yE" />
+ </lnTo>
+ <arcTo wR="rw1" hR="rh1" stAng="st2" swAng="swAng" />
+ <lnTo>
+ <pt x="xGp" y="yGp" />
+ </lnTo>
+ <lnTo>
+ <pt x="xA" y="yA" />
+ </lnTo>
+ <lnTo>
+ <pt x="xBp" y="yBp" />
+ </lnTo>
+ <lnTo>
+ <pt x="xC" y="yC" />
+ </lnTo>
+ <arcTo wR="rw2" hR="rh2" stAng="istAng" swAng="iswAng" />
+ <lnTo>
+ <pt x="xJp" y="yJp" />
+ </lnTo>
+ <close />
+ </path>
+ </pathLst>
+
+ </leftRightCircularArrow>
+ <leftRightRibbon>
+
+ <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="adj1" fmla="val 50000" />
+
+ <gd name="adj2" fmla="val 50000" />
+
+ <gd name="adj3" fmla="val 16667" />
+
+ </avLst>
+
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="a3" fmla="pin 0 adj3 33333" />
+ <gd name="maxAdj1" fmla="+- 100000 0 a3" />
+ <gd name="a1" fmla="pin 0 adj1 maxAdj1" />
+
+ <gd name="w1" fmla="+- wd2 0 wd32" />
+ <gd name="maxAdj2" fmla="*/ 100000 w1 ss" />
+ <gd name="a2" fmla="pin 0 adj2 maxAdj2" />
+
+ <gd name="x1" fmla="*/ ss a2 100000" />
+
+ <gd name="x4" fmla="+- r 0 x1" />
+
+ <gd name="dy1" fmla="*/ h a1 200000" />
+
+ <gd name="dy2" fmla="*/ h a3 -200000" />
+
+ <gd name="ly1" fmla="+- vc dy2 dy1" />
+
+ <gd name="ry4" fmla="+- vc dy1 dy2" />
+
+ <gd name="ly2" fmla="+- ly1 dy1 0" />
+
+ <gd name="ry3" fmla="+- b 0 ly2" />
+
+ <gd name="ly4" fmla="*/ ly2 2 1" />
+
+ <gd name="ry1" fmla="+- b 0 ly4" />
+
+ <gd name="ly3" fmla="+- ly4 0 ly1" />
+
+ <gd name="ry2" fmla="+- b 0 ly3" />
+
+
+ <gd name="hR" fmla="*/ a3 ss 400000" />
+
+ <gd name="x2" fmla="+- hc 0 wd32" />
+
+ <gd name="x3" fmla="+- hc wd32 0" />
+
+ <gd name="y1" fmla="+- ly1 hR 0" />
+
+ <gd name="y2" fmla="+- ry2 0 hR" />
+
+
+ </gdLst>
+
+ <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <ahXY gdRefY="adj1" minY="0" maxY="maxAdj1">
+ <pos x="x4" y="ry2" />
+ </ahXY>
+ <ahXY gdRefX="adj2" minX="0" maxX="maxAdj2">
+ <pos x="x1" y="t" />
+ </ahXY>
+ <ahXY gdRefY="adj3" minY="0" maxY="33333">
+ <pos x="x3" y="ry2" />
+ </ahXY>
+ </ahLst>
+
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="0">
+ <pos x="r" y="ry3" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="x4" y="b" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="x1" y="ly4" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="l" y="ly2" />
+ </cxn>
+ <cxn ang="3cd4">
+ <pos x="x1" y="t" />
+ </cxn>
+ <cxn ang="3cd4">
+ <pos x="x4" y="ry1" />
+ </cxn>
+ </cxnLst>
+
+ <rect l="x1" t="ly1" r="x4" b="ry4" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path stroke="false" extrusionOk="false">
+
+ <moveTo>
+ <pt x="l" y="ly2" />
+ </moveTo>
+ <lnTo>
+ <pt x="x1" y="t" />
+ </lnTo>
+ <lnTo>
+ <pt x="x1" y="ly1" />
+ </lnTo>
+ <lnTo>
+ <pt x="hc" y="ly1" />
+ </lnTo>
+ <arcTo wR="wd32" hR="hR" stAng="3cd4" swAng="cd2" />
+ <arcTo wR="wd32" hR="hR" stAng="3cd4" swAng="-10800000" />
+ <lnTo>
+ <pt x="x4" y="ry2" />
+ </lnTo>
+ <lnTo>
+ <pt x="x4" y="ry1" />
+ </lnTo>
+ <lnTo>
+ <pt x="r" y="ry3" />
+ </lnTo>
+ <lnTo>
+ <pt x="x4" y="b" />
+ </lnTo>
+ <lnTo>
+ <pt x="x4" y="ry4" />
+ </lnTo>
+ <lnTo>
+ <pt x="hc" y="ry4" />
+ </lnTo>
+ <arcTo wR="wd32" hR="hR" stAng="cd4" swAng="cd4" />
+ <lnTo>
+ <pt x="x2" y="ly3" />
+ </lnTo>
+ <lnTo>
+ <pt x="x1" y="ly3" />
+ </lnTo>
+ <lnTo>
+ <pt x="x1" y="ly4" />
+ </lnTo>
+ <close />
+ </path>
+ <path stroke="false" fill="darkenLess" extrusionOk="false">
+
+ <moveTo>
+ <pt x="x3" y="y1" />
+ </moveTo>
+ <arcTo wR="wd32" hR="hR" stAng="0" swAng="cd4" />
+ <arcTo wR="wd32" hR="hR" stAng="3cd4" swAng="-10800000" />
+ <lnTo>
+ <pt x="x3" y="ry2" />
+ </lnTo>
+ <close />
+ </path>
+ <path fill="none" extrusionOk="false">
+
+ <moveTo>
+ <pt x="l" y="ly2" />
+ </moveTo>
+ <lnTo>
+ <pt x="x1" y="t" />
+ </lnTo>
+ <lnTo>
+ <pt x="x1" y="ly1" />
+ </lnTo>
+ <lnTo>
+ <pt x="hc" y="ly1" />
+ </lnTo>
+ <arcTo wR="wd32" hR="hR" stAng="3cd4" swAng="cd2" />
+ <arcTo wR="wd32" hR="hR" stAng="3cd4" swAng="-10800000" />
+ <lnTo>
+ <pt x="x4" y="ry2" />
+ </lnTo>
+ <lnTo>
+ <pt x="x4" y="ry1" />
+ </lnTo>
+ <lnTo>
+ <pt x="r" y="ry3" />
+ </lnTo>
+ <lnTo>
+ <pt x="x4" y="b" />
+ </lnTo>
+ <lnTo>
+ <pt x="x4" y="ry4" />
+ </lnTo>
+ <lnTo>
+ <pt x="hc" y="ry4" />
+ </lnTo>
+ <arcTo wR="wd32" hR="hR" stAng="cd4" swAng="cd4" />
+ <lnTo>
+ <pt x="x2" y="ly3" />
+ </lnTo>
+ <lnTo>
+ <pt x="x1" y="ly3" />
+ </lnTo>
+ <lnTo>
+ <pt x="x1" y="ly4" />
+ </lnTo>
+ <close />
+ <moveTo>
+ <pt x="x3" y="y1" />
+ </moveTo>
+ <lnTo>
+ <pt x="x3" y="ry2" />
+ </lnTo>
+ <moveTo>
+ <pt x="x2" y="y2" />
+ </moveTo>
+ <lnTo>
+ <pt x="x2" y="ly3" />
+ </lnTo>
+ </path>
+ </pathLst>
+
+ </leftRightRibbon>
+ <leftRightUpArrow>
+
+ <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="adj1" fmla="val 25000" />
+
+ <gd name="adj2" fmla="val 25000" />
+
+ <gd name="adj3" fmla="val 25000" />
+
+ </avLst>
+
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="a2" fmla="pin 0 adj2 50000" />
+ <gd name="maxAdj1" fmla="*/ a2 2 1" />
+ <gd name="a1" fmla="pin 0 adj1 maxAdj1" />
+ <gd name="q1" fmla="+- 100000 0 maxAdj1" />
+ <gd name="maxAdj3" fmla="*/ q1 1 2" />
+ <gd name="a3" fmla="pin 0 adj3 maxAdj3" />
+ <gd name="x1" fmla="*/ ss a3 100000" />
+ <gd name="dx2" fmla="*/ ss a2 100000" />
+
+ <gd name="x2" fmla="+- hc 0 dx2" />
+ <gd name="x5" fmla="+- hc dx2 0" />
+ <gd name="dx3" fmla="*/ ss a1 200000" />
+
+ <gd name="x3" fmla="+- hc 0 dx3" />
+ <gd name="x4" fmla="+- hc dx3 0" />
+ <gd name="x6" fmla="+- r 0 x1" />
+
+ <gd name="dy2" fmla="*/ ss a2 50000" />
+
+ <gd name="y2" fmla="+- b 0 dy2" />
+ <gd name="y4" fmla="+- b 0 dx2" />
+ <gd name="y3" fmla="+- y4 0 dx3" />
+ <gd name="y5" fmla="+- y4 dx3 0" />
+ <gd name="il" fmla="*/ dx3 x1 dx2" />
+ <gd name="ir" fmla="+- r 0 il" />
+ </gdLst>
+
+ <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <ahXY gdRefX="adj1" minX="0" maxX="maxAdj1">
+ <pos x="x3" y="x1" />
+ </ahXY>
+ <ahXY gdRefX="adj2" minX="0" maxX="50000">
+ <pos x="x2" y="t" />
+ </ahXY>
+ <ahXY gdRefY="adj3" minY="0" maxY="maxAdj3">
+ <pos x="r" y="x1" />
+ </ahXY>
+ </ahLst>
+
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="3cd4">
+ <pos x="hc" y="t" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="l" y="y4" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="hc" y="y5" />
+ </cxn>
+ <cxn ang="0">
+ <pos x="r" y="y4" />
+ </cxn>
+ </cxnLst>
+
+ <rect l="il" t="y3" r="ir" b="y5" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path>
+ <moveTo>
+ <pt x="l" y="y4" />
+ </moveTo>
+ <lnTo>
+ <pt x="x1" y="y2" />
+ </lnTo>
+ <lnTo>
+ <pt x="x1" y="y3" />
+ </lnTo>
+ <lnTo>
+ <pt x="x3" y="y3" />
+ </lnTo>
+ <lnTo>
+ <pt x="x3" y="x1" />
+ </lnTo>
+ <lnTo>
+ <pt x="x2" y="x1" />
+ </lnTo>
+ <lnTo>
+ <pt x="hc" y="t" />
+ </lnTo>
+ <lnTo>
+ <pt x="x5" y="x1" />
+ </lnTo>
+ <lnTo>
+ <pt x="x4" y="x1" />
+ </lnTo>
+ <lnTo>
+ <pt x="x4" y="y3" />
+ </lnTo>
+ <lnTo>
+ <pt x="x6" y="y3" />
+ </lnTo>
+ <lnTo>
+ <pt x="x6" y="y2" />
+ </lnTo>
+ <lnTo>
+ <pt x="r" y="y4" />
+ </lnTo>
+ <lnTo>
+ <pt x="x6" y="b" />
+ </lnTo>
+ <lnTo>
+ <pt x="x6" y="y5" />
+ </lnTo>
+ <lnTo>
+ <pt x="x1" y="y5" />
+ </lnTo>
+ <lnTo>
+ <pt x="x1" y="b" />
+ </lnTo>
+ <close />
+ </path>
+ </pathLst>
+
+ </leftRightUpArrow>
+ <leftUpArrow>
+
+ <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="adj1" fmla="val 25000" />
+
+ <gd name="adj2" fmla="val 25000" />
+
+ <gd name="adj3" fmla="val 25000" />
+
+ </avLst>
+
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="a2" fmla="pin 0 adj2 50000" />
+ <gd name="maxAdj1" fmla="*/ a2 2 1" />
+ <gd name="a1" fmla="pin 0 adj1 maxAdj1" />
+ <gd name="maxAdj3" fmla="+- 100000 0 maxAdj1" />
+ <gd name="a3" fmla="pin 0 adj3 maxAdj3" />
+ <gd name="x1" fmla="*/ ss a3 100000" />
+
+ <gd name="dx2" fmla="*/ ss a2 50000" />
+
+ <gd name="x2" fmla="+- r 0 dx2" />
+ <gd name="y2" fmla="+- b 0 dx2" />
+ <gd name="dx4" fmla="*/ ss a2 100000" />
+
+ <gd name="x4" fmla="+- r 0 dx4" />
+ <gd name="y4" fmla="+- b 0 dx4" />
+ <gd name="dx3" fmla="*/ ss a1 200000" />
+
+ <gd name="x3" fmla="+- x4 0 dx3" />
+ <gd name="x5" fmla="+- x4 dx3 0" />
+ <gd name="y3" fmla="+- y4 0 dx3" />
+ <gd name="y5" fmla="+- y4 dx3 0" />
+ <gd name="il" fmla="*/ dx3 x1 dx4" />
+ <gd name="cx1" fmla="+/ x1 x5 2" />
+ <gd name="cy1" fmla="+/ x1 y5 2" />
+ </gdLst>
+
+ <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <ahXY gdRefY="adj1" minY="0" maxY="maxAdj1">
+ <pos x="x3" y="y3" />
+ </ahXY>
+ <ahXY gdRefX="adj2" minX="0" maxX="50000">
+ <pos x="x2" y="t" />
+ </ahXY>
+ <ahXY gdRefY="adj3" minY="0" maxY="maxAdj3">
+ <pos x="x3" y="x1" />
+ </ahXY>
+ </ahLst>
+
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="3cd4">
+ <pos x="x4" y="t" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="x2" y="x1" />
+ </cxn>
+ <cxn ang="3cd4">
+ <pos x="x1" y="y2" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="l" y="y4" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="x1" y="b" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="cx1" y="y5" />
+ </cxn>
+ <cxn ang="0">
+ <pos x="x5" y="cy1" />
+ </cxn>
+ <cxn ang="0">
+ <pos x="r" y="x1" />
+ </cxn>
+ </cxnLst>
+
+ <rect l="il" t="y3" r="x4" b="y5" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path>
+ <moveTo>
+ <pt x="l" y="y4" />
+ </moveTo>
+ <lnTo>
+ <pt x="x1" y="y2" />
+ </lnTo>
+ <lnTo>
+ <pt x="x1" y="y3" />
+ </lnTo>
+ <lnTo>
+ <pt x="x3" y="y3" />
+ </lnTo>
+ <lnTo>
+ <pt x="x3" y="x1" />
+ </lnTo>
+ <lnTo>
+ <pt x="x2" y="x1" />
+ </lnTo>
+ <lnTo>
+ <pt x="x4" y="t" />
+ </lnTo>
+ <lnTo>
+ <pt x="r" y="x1" />
+ </lnTo>
+ <lnTo>
+ <pt x="x5" y="x1" />
+ </lnTo>
+ <lnTo>
+ <pt x="x5" y="y5" />
+ </lnTo>
+ <lnTo>
+ <pt x="x1" y="y5" />
+ </lnTo>
+ <lnTo>
+ <pt x="x1" y="b" />
+ </lnTo>
+ <close />
+ </path>
+ </pathLst>
+
+ </leftUpArrow>
+ <lightningBolt>
+
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="x1" fmla="*/ w 5022 21600" />
+ <gd name="x3" fmla="*/ w 8472 21600" />
+ <gd name="x4" fmla="*/ w 8757 21600" />
+
+ <gd name="x5" fmla="*/ w 10012 21600" />
+ <gd name="x8" fmla="*/ w 12860 21600" />
+ <gd name="x9" fmla="*/ w 13917 21600" />
+
+ <gd name="x11" fmla="*/ w 16577 21600" />
+ <gd name="y1" fmla="*/ h 3890 21600" />
+ <gd name="y2" fmla="*/ h 6080 21600" />
+ <gd name="y4" fmla="*/ h 7437 21600" />
+
+ <gd name="y6" fmla="*/ h 9705 21600" />
+ <gd name="y7" fmla="*/ h 12007 21600" />
+ <gd name="y10" fmla="*/ h 14277 21600" />
+
+ <gd name="y11" fmla="*/ h 14915 21600" />
+
+ </gdLst>
+
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="3cd4">
+ <pos x="x3" y="t" />
+ </cxn>
+ <cxn ang="3cd4">
+ <pos x="l" y="y1" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="x1" y="y6" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="x5" y="y11" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="r" y="b" />
+ </cxn>
+ <cxn ang="0">
+ <pos x="x11" y="y7" />
+ </cxn>
+ <cxn ang="0">
+ <pos x="x8" y="y2" />
+ </cxn>
+ </cxnLst>
+
+ <rect l="x4" t="y4" r="x9" b="y10" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path w="21600" h="21600">
+ <moveTo>
+ <pt x="8472" y="0" />
+ </moveTo>
+ <lnTo>
+ <pt x="12860" y="6080" />
+ </lnTo>
+ <lnTo>
+ <pt x="11050" y="6797" />
+ </lnTo>
+ <lnTo>
+ <pt x="16577" y="12007" />
+ </lnTo>
+ <lnTo>
+ <pt x="14767" y="12877" />
+ </lnTo>
+ <lnTo>
+ <pt x="21600" y="21600" />
+ </lnTo>
+ <lnTo>
+ <pt x="10012" y="14915" />
+ </lnTo>
+ <lnTo>
+ <pt x="12222" y="13987" />
+ </lnTo>
+ <lnTo>
+ <pt x="5022" y="9705" />
+ </lnTo>
+ <lnTo>
+ <pt x="7602" y="8382" />
+ </lnTo>
+ <lnTo>
+ <pt x="0" y="3890" />
+ </lnTo>
+ <close />
+ </path>
+ </pathLst>
+
+ </lightningBolt>
+ <line>
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="cd4">
+ <pos x="l" y="t" />
+ </cxn>
+ <cxn ang="3cd4">
+ <pos x="r" y="b" />
+ </cxn>
+ </cxnLst>
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path>
+ <moveTo>
+ <pt x="l" y="t" />
+ </moveTo>
+ <lnTo>
+ <pt x="r" y="b" />
+ </lnTo>
+ </path>
+ </pathLst>
+ </line>
+ <lineInv>
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="cd4">
+ <pos x="l" y="b" />
+ </cxn>
+ <cxn ang="3cd4">
+ <pos x="r" y="t" />
+ </cxn>
+ </cxnLst>
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path>
+ <moveTo>
+ <pt x="l" y="b" />
+ </moveTo>
+ <lnTo>
+ <pt x="r" y="t" />
+ </lnTo>
+ </path>
+ </pathLst>
+ </lineInv>
+ <mathDivide>
+
+ <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="adj1" fmla="val 23520" />
+
+ <gd name="adj2" fmla="val 5880" />
+
+ <gd name="adj3" fmla="val 11760" />
+
+ </avLst>
+
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+
+ <gd name="a1" fmla="pin 1000 adj1 36745" />
+ <gd name="ma1" fmla="+- 0 0 a1" />
+
+ <gd name="ma3h" fmla="+/ 73490 ma1 4" />
+
+ <gd name="ma3w" fmla="*/ 36745 w h" />
+
+ <gd name="maxAdj3" fmla="min ma3h ma3w" />
+ <gd name="a3" fmla="pin 1000 adj3 maxAdj3" />
+ <gd name="m4a3" fmla="*/ -4 a3 1" />
+
+ <gd name="maxAdj2" fmla="+- 73490 m4a3 a1" />
+ <gd name="a2" fmla="pin 0 adj2 maxAdj2" />
+
+ <gd name="dy1" fmla="*/ h a1 200000" />
+
+ <gd name="yg" fmla="*/ h a2 100000" />
+
+ <gd name="rad" fmla="*/ h a3 100000" />
+
+ <gd name="dx1" fmla="*/ w 73490 200000" />
+
+
+ <gd name="y3" fmla="+- vc 0 dy1" />
+
+ <gd name="y4" fmla="+- vc dy1 0" />
+
+ <gd name="a" fmla="+- yg rad 0" />
+ <gd name="y2" fmla="+- y3 0 a" />
+
+ <gd name="y1" fmla="+- y2 0 rad" />
+
+ <gd name="y5" fmla="+- b 0 y1" />
+
+
+ <gd name="x1" fmla="+- hc 0 dx1" />
+
+ <gd name="x3" fmla="+- hc dx1 0" />
+
+ <gd name="x2" fmla="+- hc 0 rad" />
+
+ </gdLst>
+
+ <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <ahXY gdRefY="adj1" minY="1000" maxY="36745">
+ <pos x="l" y="y3" />
+ </ahXY>
+ <ahXY gdRefY="adj2" minY="0" maxY="maxAdj2">
+ <pos x="r" y="y2" />
+ </ahXY>
+ <ahXY gdRefX="adj3" minX="1000" maxX="maxAdj3">
+ <pos x="x2" y="t" />
+ </ahXY>
+ </ahLst>
+
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="0">
+ <pos x="x3" y="vc" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="hc" y="y5" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="x1" y="vc" />
+ </cxn>
+ <cxn ang="3cd4">
+ <pos x="hc" y="y1" />
+ </cxn>
+ </cxnLst>
+
+ <rect l="x1" t="y3" r="x3" b="y4" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path>
+ <moveTo>
+ <pt x="hc" y="y1" />
+ </moveTo>
+ <arcTo hR="rad" wR="rad" stAng="3cd4" swAng="21600000" />
+ <close />
+ <moveTo>
+ <pt x="hc" y="y5" />
+ </moveTo>
+ <arcTo hR="rad" wR="rad" stAng="cd4" swAng="21600000" />
+ <close />
+ <moveTo>
+ <pt x="x1" y="y3" />
+ </moveTo>
+ <lnTo>
+ <pt x="x3" y="y3" />
+ </lnTo>
+ <lnTo>
+ <pt x="x3" y="y4" />
+ </lnTo>
+ <lnTo>
+ <pt x="x1" y="y4" />
+ </lnTo>
+ <close />
+ </path>
+ </pathLst>
+
+ </mathDivide>
+ <mathEqual>
+
+ <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="adj1" fmla="val 23520" />
+
+ <gd name="adj2" fmla="val 11760" />
+
+ </avLst>
+
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="a1" fmla="pin 0 adj1 36745" />
+
+
+ <gd name="2a1" fmla="*/ a1 2 1" />
+
+ <gd name="mAdj2" fmla="+- 100000 0 2a1" />
+
+ <gd name="a2" fmla="pin 0 adj2 mAdj2" />
+ <gd name="dy1" fmla="*/ h a1 100000" />
+
+ <gd name="dy2" fmla="*/ h a2 200000" />
+
+ <gd name="dx1" fmla="*/ w 73490 200000" />
+
+
+ <gd name="y2" fmla="+- vc 0 dy2" />
+
+ <gd name="y3" fmla="+- vc dy2 0" />
+
+ <gd name="y1" fmla="+- y2 0 dy1" />
+
+ <gd name="y4" fmla="+- y3 dy1 0" />
+
+
+ <gd name="x1" fmla="+- hc 0 dx1" />
+
+ <gd name="x2" fmla="+- hc dx1 0" />
+
+
+
+ <gd name="yC1" fmla="+/ y1 y2 2" />
+
+ <gd name="yC2" fmla="+/ y3 y4 2" />
+
+ </gdLst>
+
+ <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <ahXY gdRefY="adj1" minY="0" maxY="36745">
+ <pos x="l" y="y1" />
+ </ahXY>
+
+ <ahXY gdRefY="adj2" minY="0" maxY="mAdj2">
+ <pos x="r" y="y2" />
+ </ahXY>
+ </ahLst>
+
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="0">
+ <pos x="x2" y="yC1" />
+ </cxn>
+ <cxn ang="0">
+ <pos x="x2" y="yC2" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="hc" y="y4" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="x1" y="yC1" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="x1" y="yC2" />
+ </cxn>
+ <cxn ang="3cd4">
+ <pos x="hc" y="y1" />
+ </cxn>
+ </cxnLst>
+
+ <rect l="x1" t="y1" r="x2" b="y4" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path>
+ <moveTo>
+ <pt x="x1" y="y1" />
+ </moveTo>
+ <lnTo>
+ <pt x="x2" y="y1" />
+ </lnTo>
+ <lnTo>
+ <pt x="x2" y="y2" />
+ </lnTo>
+ <lnTo>
+ <pt x="x1" y="y2" />
+ </lnTo>
+ <close />
+ <moveTo>
+ <pt x="x1" y="y3" />
+ </moveTo>
+ <lnTo>
+ <pt x="x2" y="y3" />
+ </lnTo>
+ <lnTo>
+ <pt x="x2" y="y4" />
+ </lnTo>
+ <lnTo>
+ <pt x="x1" y="y4" />
+ </lnTo>
+ <close />
+ </path>
+ </pathLst>
+
+ </mathEqual>
+ <mathMinus>
+
+ <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="adj1" fmla="val 23520" />
+
+ </avLst>
+
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="a1" fmla="pin 0 adj1 100000" />
+ <gd name="dy1" fmla="*/ h a1 200000" />
+
+ <gd name="dx1" fmla="*/ w 73490 200000" />
+
+
+ <gd name="y1" fmla="+- vc 0 dy1" />
+
+ <gd name="y2" fmla="+- vc dy1 0" />
+
+
+ <gd name="x1" fmla="+- hc 0 dx1" />
+
+ <gd name="x2" fmla="+- hc dx1 0" />
+
+ </gdLst>
+
+ <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <ahXY gdRefY="adj1" minY="0" maxY="100000">
+ <pos x="l" y="y1" />
+ </ahXY>
+ </ahLst>
+
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="0">
+ <pos x="x2" y="vc" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="hc" y="y2" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="x1" y="vc" />
+ </cxn>
+ <cxn ang="3cd4">
+ <pos x="hc" y="y1" />
+ </cxn>
+ </cxnLst>
+
+ <rect l="x1" t="y1" r="x2" b="y2" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path>
+ <moveTo>
+ <pt x="x1" y="y1" />
+ </moveTo>
+ <lnTo>
+ <pt x="x2" y="y1" />
+ </lnTo>
+ <lnTo>
+ <pt x="x2" y="y2" />
+ </lnTo>
+ <lnTo>
+ <pt x="x1" y="y2" />
+ </lnTo>
+ <close />
+ </path>
+ </pathLst>
+
+ </mathMinus>
+ <mathMultiply>
+
+ <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="adj1" fmla="val 23520" />
+
+ </avLst>
+
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+
+
+
+
+
+ <gd name="a1" fmla="pin 0 adj1 51965" />
+
+ <gd name="th" fmla="*/ ss a1 100000" />
+
+
+ <gd name="a" fmla="at2 w h" />
+
+ <gd name="sa" fmla="sin 1 a" />
+ <gd name="ca" fmla="cos 1 a" />
+ <gd name="ta" fmla="tan 1 a" />
+
+
+ <gd name="dl" fmla="mod w h 0" />
+
+ <gd name="rw" fmla="*/ dl 51965 100000" />
+
+
+
+ <gd name="lM" fmla="+- dl 0 rw" />
+ <gd name="xM" fmla="*/ ca lM 2" />
+ <gd name="yM" fmla="*/ sa lM 2" />
+
+
+ <gd name="dxAM" fmla="*/ sa th 2" />
+ <gd name="dyAM" fmla="*/ ca th 2" />
+ <gd name="xA" fmla="+- xM 0 dxAM" />
+ <gd name="yA" fmla="+- yM dyAM 0" />
+
+
+ <gd name="xB" fmla="+- xM dxAM 0" />
+ <gd name="yB" fmla="+- yM 0 dyAM" />
+
+
+ <gd name="xBC" fmla="+- hc 0 xB" />
+ <gd name="yBC" fmla="*/ xBC ta 1" />
+ <gd name="yC" fmla="+- yBC yB 0" />
+
+
+ <gd name="xD" fmla="+- r 0 xB" />
+ <gd name="xE" fmla="+- r 0 xA" />
+
+ <gd name="yFE" fmla="+- vc 0 yA" />
+ <gd name="xFE" fmla="*/ yFE 1 ta" />
+ <gd name="xF" fmla="+- xE 0 xFE" />
+ <gd name="xL" fmla="+- xA xFE 0" />
+ <gd name="yG" fmla="+- b 0 yA" />
+ <gd name="yH" fmla="+- b 0 yB" />
+ <gd name="yI" fmla="+- b 0 yC" />
+
+
+ <gd name="xC2" fmla="+- r 0 xM" />
+
+ <gd name="yC3" fmla="+- b 0 yM" />
+
+ </gdLst>
+
+ <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <ahXY gdRefY="adj1" minY="0" maxY="51965">
+ <pos x="l" y="th" />
+ </ahXY>
+ </ahLst>
+
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="cd2">
+ <pos x="xM" y="yM" />
+ </cxn>
+ <cxn ang="3cd4">
+ <pos x="xC2" y="yM" />
+ </cxn>
+ <cxn ang="0">
+ <pos x="xC2" y="yC3" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="xM" y="yC3" />
+ </cxn>
+ </cxnLst>
+
+ <rect l="xA" t="yB" r="xE" b="yH" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path>
+ <moveTo>
+ <pt x="xA" y="yA" />
+ </moveTo>
+ <lnTo>
+ <pt x="xB" y="yB" />
+ </lnTo>
+ <lnTo>
+ <pt x="hc" y="yC" />
+ </lnTo>
+ <lnTo>
+ <pt x="xD" y="yB" />
+ </lnTo>
+ <lnTo>
+ <pt x="xE" y="yA" />
+ </lnTo>
+ <lnTo>
+ <pt x="xF" y="vc" />
+ </lnTo>
+ <lnTo>
+ <pt x="xE" y="yG" />
+ </lnTo>
+ <lnTo>
+ <pt x="xD" y="yH" />
+ </lnTo>
+ <lnTo>
+ <pt x="hc" y="yI" />
+ </lnTo>
+ <lnTo>
+ <pt x="xB" y="yH" />
+ </lnTo>
+ <lnTo>
+ <pt x="xA" y="yG" />
+ </lnTo>
+ <lnTo>
+ <pt x="xL" y="vc" />
+ </lnTo>
+ <close />
+ </path>
+ </pathLst>
+
+ </mathMultiply>
+ <mathNotEqual>
+
+ <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="adj1" fmla="val 23520" />
+
+ <gd name="adj2" fmla="val 6600000" />
+
+ <gd name="adj3" fmla="val 11760" />
+
+ </avLst>
+
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="a1" fmla="pin 0 adj1 50000" />
+ <gd name="crAng" fmla="pin 4200000 adj2 6600000" />
+
+
+ <gd name="2a1" fmla="*/ a1 2 1" />
+ <gd name="maxAdj3" fmla="+- 100000 0 2a1" />
+ <gd name="a3" fmla="pin 0 adj3 maxAdj3" />
+
+ <gd name="dy1" fmla="*/ h a1 100000" />
+
+ <gd name="dy2" fmla="*/ h a3 200000" />
+
+ <gd name="dx1" fmla="*/ w 73490 200000" />
+
+
+ <gd name="x1" fmla="+- hc 0 dx1" />
+
+ <gd name="x8" fmla="+- hc dx1 0" />
+
+
+
+ <gd name="y2" fmla="+- vc 0 dy2" />
+
+ <gd name="y3" fmla="+- vc dy2 0" />
+
+ <gd name="y1" fmla="+- y2 0 dy1" />
+
+ <gd name="y4" fmla="+- y3 dy1 0" />
+
+
+ <gd name="cadj2" fmla="+- crAng 0 cd4" />
+ <gd name="xadj2" fmla="tan hd2 cadj2" />
+
+
+
+ <gd name="len" fmla="mod xadj2 hd2 0" />
+
+
+
+ <gd name="bhw" fmla="*/ len dy1 hd2" />
+
+ <gd name="bhw2" fmla="*/ bhw 1 2" />
+ <gd name="x7" fmla="+- hc xadj2 bhw2" />
+
+ <gd name="dx67" fmla="*/ xadj2 y1 hd2" />
+ <gd name="x6" fmla="+- x7 0 dx67" />
+
+ <gd name="dx57" fmla="*/ xadj2 y2 hd2" />
+ <gd name="x5" fmla="+- x7 0 dx57" />
+
+ <gd name="dx47" fmla="*/ xadj2 y3 hd2" />
+ <gd name="x4" fmla="+- x7 0 dx47" />
+
+ <gd name="dx37" fmla="*/ xadj2 y4 hd2" />
+ <gd name="x3" fmla="+- x7 0 dx37" />
+
+ <gd name="dx27" fmla="*/ xadj2 2 1" />
+ <gd name="x2" fmla="+- x7 0 dx27" />
+
+
+ <gd name="rx7" fmla="+- x7 bhw 0" />
+
+ <gd name="rx6" fmla="+- x6 bhw 0" />
+
+ <gd name="rx5" fmla="+- x5 bhw 0" />
+
+ <gd name="rx4" fmla="+- x4 bhw 0" />
+
+ <gd name="rx3" fmla="+- x3 bhw 0" />
+
+ <gd name="rx2" fmla="+- x2 bhw 0" />
+
+
+
+ <gd name="dx7" fmla="*/ dy1 hd2 len" />
+ <gd name="rxt" fmla="+- x7 dx7 0" />
+
+ <gd name="lxt" fmla="+- rx7 0 dx7" />
+
+ <gd name="rx" fmla="?: cadj2 rxt rx7" />
+
+ <gd name="lx" fmla="?: cadj2 x7 lxt" />
+
+
+ <gd name="dy3" fmla="*/ dy1 xadj2 len" />
+ <gd name="dy4" fmla="+- 0 0 dy3" />
+ <gd name="ry" fmla="?: cadj2 dy3 t" />
+
+ <gd name="ly" fmla="?: cadj2 t dy4" />
+
+
+ <gd name="dlx" fmla="+- w 0 rx" />
+
+ <gd name="drx" fmla="+- w 0 lx" />
+
+
+ <gd name="dly" fmla="+- h 0 ry" />
+
+ <gd name="dry" fmla="+- h 0 ly" />
+
+
+
+ <gd name="xC1" fmla="+/ rx lx 2" />
+
+ <gd name="xC2" fmla="+/ drx dlx 2" />
+
+
+ <gd name="yC1" fmla="+/ ry ly 2" />
+
+ <gd name="yC2" fmla="+/ y1 y2 2" />
+
+ <gd name="yC3" fmla="+/ y3 y4 2" />
+
+ <gd name="yC4" fmla="+/ dry dly 2" />
+
+
+ </gdLst>
+
+ <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <ahXY gdRefY="adj1" minY="0" maxY="50000">
+ <pos x="l" y="y1" />
+ </ahXY>
+ <ahPolar gdRefAng="adj2" minAng="4200000" maxAng="6600000">
+ <pos x="lx" y="t" />
+ </ahPolar>
+ <ahXY gdRefY="adj3" minY="0" maxY="maxAdj3">
+ <pos x="r" y="y2" />
+ </ahXY>
+ </ahLst>
+
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="0">
+ <pos x="x8" y="yC2" />
+ </cxn>
+ <cxn ang="0">
+ <pos x="x8" y="yC3" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="xC2" y="yC4" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="x1" y="yC2" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="x1" y="yC3" />
+ </cxn>
+ <cxn ang="3cd4">
+ <pos x="xC1" y="yC1" />
+ </cxn>
+ </cxnLst>
+
+ <rect l="x1" t="y1" r="x8" b="y4" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path>
+ <moveTo>
+ <pt x="x1" y="y1" />
+ </moveTo>
+ <lnTo>
+ <pt x="x6" y="y1" />
+ </lnTo>
+ <lnTo>
+ <pt x="lx" y="ly" />
+ </lnTo>
+ <lnTo>
+ <pt x="rx" y="ry" />
+ </lnTo>
+ <lnTo>
+ <pt x="rx6" y="y1" />
+ </lnTo>
+ <lnTo>
+ <pt x="x8" y="y1" />
+ </lnTo>
+ <lnTo>
+ <pt x="x8" y="y2" />
+ </lnTo>
+ <lnTo>
+ <pt x="rx5" y="y2" />
+ </lnTo>
+ <lnTo>
+ <pt x="rx4" y="y3" />
+ </lnTo>
+ <lnTo>
+ <pt x="x8" y="y3" />
+ </lnTo>
+ <lnTo>
+ <pt x="x8" y="y4" />
+ </lnTo>
+ <lnTo>
+ <pt x="rx3" y="y4" />
+ </lnTo>
+ <lnTo>
+ <pt x="drx" y="dry" />
+ </lnTo>
+ <lnTo>
+ <pt x="dlx" y="dly" />
+ </lnTo>
+ <lnTo>
+ <pt x="x3" y="y4" />
+ </lnTo>
+ <lnTo>
+ <pt x="x1" y="y4" />
+ </lnTo>
+ <lnTo>
+ <pt x="x1" y="y3" />
+ </lnTo>
+ <lnTo>
+ <pt x="x4" y="y3" />
+ </lnTo>
+ <lnTo>
+ <pt x="x5" y="y2" />
+ </lnTo>
+ <lnTo>
+ <pt x="x1" y="y2" />
+ </lnTo>
+ <close />
+ </path>
+ </pathLst>
+
+ </mathNotEqual>
+ <mathPlus>
+
+ <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="adj1" fmla="val 23520" />
+
+ </avLst>
+
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="a1" fmla="pin 0 adj1 73490" />
+ <gd name="dx1" fmla="*/ w 73490 200000" />
+
+ <gd name="dy1" fmla="*/ h 73490 200000" />
+
+ <gd name="dx2" fmla="*/ ss a1 200000" />
+
+
+ <gd name="x1" fmla="+- hc 0 dx1" />
+
+ <gd name="x2" fmla="+- hc 0 dx2" />
+
+ <gd name="x3" fmla="+- hc dx2 0" />
+
+ <gd name="x4" fmla="+- hc dx1 0" />
+
+
+ <gd name="y1" fmla="+- vc 0 dy1" />
+
+ <gd name="y2" fmla="+- vc 0 dx2" />
+
+ <gd name="y3" fmla="+- vc dx2 0" />
+
+ <gd name="y4" fmla="+- vc dy1 0" />
+
+ </gdLst>
+
+ <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <ahXY gdRefY="adj1" minY="0" maxY="73490">
+ <pos x="l" y="y2" />
+ </ahXY>
+ </ahLst>
+
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="0">
+ <pos x="x4" y="vc" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="hc" y="y4" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="x1" y="vc" />
+ </cxn>
+ <cxn ang="3cd4">
+ <pos x="hc" y="y1" />
+ </cxn>
+ </cxnLst>
+
+ <rect l="x1" t="y2" r="x4" b="y3" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path>
+ <moveTo>
+ <pt x="x1" y="y2" />
+ </moveTo>
+ <lnTo>
+ <pt x="x2" y="y2" />
+ </lnTo>
+ <lnTo>
+ <pt x="x2" y="y1" />
+ </lnTo>
+ <lnTo>
+ <pt x="x3" y="y1" />
+ </lnTo>
+ <lnTo>
+ <pt x="x3" y="y2" />
+ </lnTo>
+ <lnTo>
+ <pt x="x4" y="y2" />
+ </lnTo>
+ <lnTo>
+ <pt x="x4" y="y3" />
+ </lnTo>
+ <lnTo>
+ <pt x="x3" y="y3" />
+ </lnTo>
+ <lnTo>
+ <pt x="x3" y="y4" />
+ </lnTo>
+ <lnTo>
+ <pt x="x2" y="y4" />
+ </lnTo>
+ <lnTo>
+ <pt x="x2" y="y3" />
+ </lnTo>
+ <lnTo>
+ <pt x="x1" y="y3" />
+ </lnTo>
+ <close />
+ </path>
+ </pathLst>
+
+ </mathPlus>
+ <moon>
+
+ <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="adj" fmla="val 50000" />
+
+ </avLst>
+
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="a" fmla="pin 0 adj 87500" />
+ <gd name="g0" fmla="*/ ss a 100000" />
+ <gd name="g0w" fmla="*/ g0 w ss" />
+ <gd name="g1" fmla="+- ss 0 g0" />
+ <gd name="g2" fmla="*/ g0 g0 g1" />
+ <gd name="g3" fmla="*/ ss ss g1" />
+ <gd name="g4" fmla="*/ g3 2 1" />
+ <gd name="g5" fmla="+- g4 0 g2" />
+ <gd name="g6" fmla="+- g5 0 g0" />
+ <gd name="g6w" fmla="*/ g6 w ss" />
+ <gd name="g7" fmla="*/ g5 1 2" />
+ <gd name="g8" fmla="+- g7 0 g0" />
+ <gd name="dy1" fmla="*/ g8 hd2 ss" />
+
+ <gd name="g10h" fmla="+- vc 0 dy1" />
+ <gd name="g11h" fmla="+- vc dy1 0" />
+ <gd name="g12" fmla="*/ g0 9598 32768" />
+ <gd name="g12w" fmla="*/ g12 w ss" />
+ <gd name="g13" fmla="+- ss 0 g12" />
+ <gd name="q1" fmla="*/ ss ss 1" />
+ <gd name="q2" fmla="*/ g13 g13 1" />
+ <gd name="q3" fmla="+- q1 0 q2" />
+ <gd name="q4" fmla="sqrt q3" />
+ <gd name="dy4" fmla="*/ q4 hd2 ss" />
+ <gd name="g15h" fmla="+- vc 0 dy4" />
+ <gd name="g16h" fmla="+- vc dy4 0" />
+ <gd name="g17w" fmla="+- g6w 0 g0w" />
+ <gd name="g18w" fmla="*/ g17w 1 2" />
+
+
+ <gd name="dx2p" fmla="+- g0w g18w w" />
+ <gd name="dx2" fmla="*/ dx2p -1 1" />
+
+ <gd name="dy2" fmla="*/ hd2 -1 1" />
+
+ <gd name="stAng1" fmla="at2 dx2 dy2" />
+ <gd name="enAngp1" fmla="at2 dx2 hd2" />
+ <gd name="enAng1" fmla="+- enAngp1 0 21600000" />
+ <gd name="swAng1" fmla="+- enAng1 0 stAng1" />
+ </gdLst>
+
+ <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <ahXY gdRefX="adj" minX="0" maxX="87500">
+ <pos x="g0w" y="vc" />
+ </ahXY>
+ </ahLst>
+
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="3cd4">
+ <pos x="r" y="t" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="l" y="vc" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="r" y="b" />
+ </cxn>
+ <cxn ang="0">
+ <pos x="g0w" y="vc" />
+ </cxn>
+ </cxnLst>
+
+ <rect l="g12w" t="g15h" r="g0w" b="g16h" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path>
+ <moveTo>
+ <pt x="r" y="b" />
+ </moveTo>
+ <arcTo wR="w" hR="hd2" stAng="cd4" swAng="cd2" />
+ <arcTo wR="g18w" hR="dy1" stAng="stAng1" swAng="swAng1" />
+ <close />
+ </path>
+ </pathLst>
+
+ </moon>
+ <nonIsoscelesTrapezoid>
+
+ <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="adj1" fmla="val 25000" />
+
+ <gd name="adj2" fmla="val 25000" />
+
+ </avLst>
+
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="maxAdj" fmla="*/ 50000 w ss" />
+
+ <gd name="a1" fmla="pin 0 adj1 maxAdj" />
+ <gd name="a2" fmla="pin 0 adj2 maxAdj" />
+ <gd name="x1" fmla="*/ ss a1 200000" />
+
+ <gd name="x2" fmla="*/ ss a1 100000" />
+
+ <gd name="dx3" fmla="*/ ss a2 100000" />
+
+ <gd name="x3" fmla="+- r 0 dx3" />
+ <gd name="x4" fmla="+/ r x3 2" />
+ <gd name="il" fmla="*/ wd3 a1 maxAdj" />
+
+ <gd name="adjm" fmla="max a1 a2" />
+ <gd name="it" fmla="*/ hd3 adjm maxAdj" />
+
+ <gd name="irt" fmla="*/ wd3 a2 maxAdj" />
+ <gd name="ir" fmla="+- r 0 irt" />
+
+ </gdLst>
+
+ <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <ahXY gdRefX="adj1" minX="0" maxX="maxAdj">
+ <pos x="x2" y="t" />
+ </ahXY>
+ <ahXY gdRefX="adj2" minX="0" maxX="maxAdj">
+ <pos x="x3" y="t" />
+ </ahXY>
+ </ahLst>
+
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="0">
+ <pos x="x4" y="vc" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="hc" y="b" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="x1" y="vc" />
+ </cxn>
+ <cxn ang="3cd4">
+ <pos x="hc" y="t" />
+ </cxn>
+ </cxnLst>
+
+
+ <rect l="il" t="it" r="ir" b="b" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path>
+ <moveTo>
+ <pt x="l" y="b" />
+ </moveTo>
+ <lnTo>
+ <pt x="x2" y="t" />
+ </lnTo>
+ <lnTo>
+ <pt x="x3" y="t" />
+ </lnTo>
+ <lnTo>
+ <pt x="r" y="b" />
+ </lnTo>
+ <close />
+ </path>
+ </pathLst>
+
+ </nonIsoscelesTrapezoid>
+ <noSmoking>
+
+ <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="adj" fmla="val 18750" />
+ </avLst>
+
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="a" fmla="pin 0 adj 50000" />
+ <gd name="dr" fmla="*/ ss a 100000" />
+ <gd name="iwd2" fmla="+- wd2 0 dr" />
+ <gd name="ihd2" fmla="+- hd2 0 dr" />
+ <gd name="ang" fmla="at2 w h" />
+ <gd name="ct" fmla="cos ihd2 ang" />
+ <gd name="st" fmla="sin iwd2 ang" />
+ <gd name="m" fmla="mod ct st 0" />
+ <gd name="n" fmla="*/ iwd2 ihd2 m" />
+ <gd name="drd2" fmla="*/ dr 1 2" />
+ <gd name="dang" fmla="at2 n drd2" />
+ <gd name="dang2" fmla="*/ dang 2 1" />
+ <gd name="swAng" fmla="+- -10800000 dang2 0" />
+ <gd name="t3" fmla="at2 w h" />
+ <gd name="stAng1" fmla="+- t3 0 dang" />
+ <gd name="stAng2" fmla="+- stAng1 0 cd2" />
+ <gd name="ct1" fmla="cos ihd2 stAng1" />
+ <gd name="st1" fmla="sin iwd2 stAng1" />
+ <gd name="m1" fmla="mod ct1 st1 0" />
+ <gd name="n1" fmla="*/ iwd2 ihd2 m1" />
+ <gd name="dx1" fmla="cos n1 stAng1" />
+ <gd name="dy1" fmla="sin n1 stAng1" />
+ <gd name="x1" fmla="+- hc dx1 0" />
+ <gd name="y1" fmla="+- vc dy1 0" />
+ <gd name="x2" fmla="+- hc 0 dx1" />
+ <gd name="y2" fmla="+- vc 0 dy1" />
+ <gd name="idx" fmla="cos wd2 2700000" />
+ <gd name="idy" fmla="sin hd2 2700000" />
+ <gd name="il" fmla="+- hc 0 idx" />
+ <gd name="ir" fmla="+- hc idx 0" />
+ <gd name="it" fmla="+- vc 0 idy" />
+ <gd name="ib" fmla="+- vc idy 0" />
+ </gdLst>
+
+ <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <ahPolar gdRefR="adj" minR="0" maxR="50000">
+ <pos x="dr" y="vc" />
+ </ahPolar>
+ </ahLst>
+
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="3cd4">
+ <pos x="hc" y="t" />
+ </cxn>
+ <cxn ang="3cd4">
+ <pos x="il" y="it" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="l" y="vc" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="il" y="ib" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="hc" y="b" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="ir" y="ib" />
+ </cxn>
+ <cxn ang="0">
+ <pos x="r" y="vc" />
+ </cxn>
+ <cxn ang="3cd4">
+ <pos x="ir" y="it" />
+ </cxn>
+ </cxnLst>
+
+ <rect l="il" t="it" r="ir" b="ib" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path>
+ <moveTo>
+ <pt x="l" y="vc" />
+ </moveTo>
+ <arcTo wR="wd2" hR="hd2" stAng="cd2" swAng="cd4" />
+ <arcTo wR="wd2" hR="hd2" stAng="3cd4" swAng="cd4" />
+ <arcTo wR="wd2" hR="hd2" stAng="0" swAng="cd4" />
+ <arcTo wR="wd2" hR="hd2" stAng="cd4" swAng="cd4" />
+ <close />
+ <moveTo>
+ <pt x="x1" y="y1" />
+ </moveTo>
+ <arcTo wR="iwd2" hR="ihd2" stAng="stAng1" swAng="swAng" />
+ <close />
+ <moveTo>
+ <pt x="x2" y="y2" />
+ </moveTo>
+ <arcTo wR="iwd2" hR="ihd2" stAng="stAng2" swAng="swAng" />
+ <close />
+ </path>
+ </pathLst>
+
+ </noSmoking>
+ <notchedRightArrow>
+
+ <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="adj1" fmla="val 50000" />
+
+ <gd name="adj2" fmla="val 50000" />
+
+ </avLst>
+
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="maxAdj2" fmla="*/ 100000 w ss" />
+
+ <gd name="a1" fmla="pin 0 adj1 100000" />
+ <gd name="a2" fmla="pin 0 adj2 maxAdj2" />
+ <gd name="dx2" fmla="*/ ss a2 100000" />
+ <gd name="x2" fmla="+- r 0 dx2" />
+ <gd name="dy1" fmla="*/ h a1 200000" />
+ <gd name="y1" fmla="+- vc 0 dy1" />
+ <gd name="y2" fmla="+- vc dy1 0" />
+ <gd name="x1" fmla="*/ dy1 dx2 hd2" />
+ <gd name="x3" fmla="+- r 0 x1" />
+ </gdLst>
+
+ <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <ahXY gdRefY="adj1" minY="0" maxY="100000">
+ <pos x="r" y="y1" />
+ </ahXY>
+ <ahXY gdRefX="adj2" minX="0" maxX="maxAdj2">
+ <pos x="x2" y="t" />
+ </ahXY>
+ </ahLst>
+
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="3cd4">
+ <pos x="x2" y="t" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="x1" y="vc" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="x2" y="b" />
+ </cxn>
+ <cxn ang="0">
+ <pos x="r" y="vc" />
+ </cxn>
+ </cxnLst>
+
+ <rect l="x1" t="y1" r="x3" b="y2" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path>
+ <moveTo>
+ <pt x="l" y="y1" />
+ </moveTo>
+ <lnTo>
+ <pt x="x2" y="y1" />
+ </lnTo>
+ <lnTo>
+ <pt x="x2" y="t" />
+ </lnTo>
+ <lnTo>
+ <pt x="r" y="vc" />
+ </lnTo>
+ <lnTo>
+ <pt x="x2" y="b" />
+ </lnTo>
+ <lnTo>
+ <pt x="x2" y="y2" />
+ </lnTo>
+ <lnTo>
+ <pt x="l" y="y2" />
+ </lnTo>
+ <lnTo>
+ <pt x="x1" y="vc" />
+ </lnTo>
+ <close />
+ </path>
+ </pathLst>
+
+ </notchedRightArrow>
+ <octagon>
+
+ <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="adj" fmla="val 29289" />
+ </avLst>
+
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="a" fmla="pin 0 adj 50000" />
+ <gd name="x1" fmla="*/ ss a 100000" />
+ <gd name="x2" fmla="+- r 0 x1" />
+ <gd name="y2" fmla="+- b 0 x1" />
+ <gd name="il" fmla="*/ x1 1 2" />
+ <gd name="ir" fmla="+- r 0 il" />
+ <gd name="ib" fmla="+- b 0 il" />
+ </gdLst>
+
+ <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <ahXY gdRefX="adj" minX="0" maxX="50000">
+ <pos x="x1" y="t" />
+ </ahXY>
+ </ahLst>
+
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="0">
+ <pos x="r" y="x1" />
+ </cxn>
+ <cxn ang="0">
+ <pos x="r" y="y2" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="x2" y="b" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="x1" y="b" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="l" y="y2" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="l" y="x1" />
+ </cxn>
+ <cxn ang="3cd4">
+ <pos x="x1" y="t" />
+ </cxn>
+ <cxn ang="3cd4">
+ <pos x="x2" y="t" />
+ </cxn>
+ </cxnLst>
+
+ <rect l="il" t="il" r="ir" b="ib" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path>
+ <moveTo>
+ <pt x="l" y="x1" />
+ </moveTo>
+ <lnTo>
+ <pt x="x1" y="t" />
+ </lnTo>
+ <lnTo>
+ <pt x="x2" y="t" />
+ </lnTo>
+ <lnTo>
+ <pt x="r" y="x1" />
+ </lnTo>
+ <lnTo>
+ <pt x="r" y="y2" />
+ </lnTo>
+ <lnTo>
+ <pt x="x2" y="b" />
+ </lnTo>
+ <lnTo>
+ <pt x="x1" y="b" />
+ </lnTo>
+ <lnTo>
+ <pt x="l" y="y2" />
+ </lnTo>
+ <close />
+ </path>
+ </pathLst>
+
+ </octagon>
+ <parallelogram>
+ <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="adj" fmla="val 25000" />
+ </avLst>
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="maxAdj" fmla="*/ 100000 w ss" />
+ <gd name="a" fmla="pin 0 adj maxAdj" />
+ <gd name="x1" fmla="*/ ss a 200000" />
+ <gd name="x2" fmla="*/ ss a 100000" />
+ <gd name="x6" fmla="+- r 0 x1" />
+ <gd name="x5" fmla="+- r 0 x2" />
+ <gd name="x3" fmla="*/ x5 1 2" />
+ <gd name="x4" fmla="+- r 0 x3" />
+ <gd name="il" fmla="*/ wd2 a maxAdj" />
+ <gd name="q1" fmla="*/ 5 a maxAdj" />
+ <gd name="q2" fmla="+/ 1 q1 12" />
+ <gd name="il" fmla="*/ q2 w 1" />
+ <gd name="it" fmla="*/ q2 h 1" />
+ <gd name="ir" fmla="+- r 0 il" />
+ <gd name="ib" fmla="+- b 0 it" />
+ <gd name="q3" fmla="*/ h hc x2" />
+ <gd name="y1" fmla="pin 0 q3 h" />
+ <gd name="y2" fmla="+- b 0 y1" />
+ </gdLst>
+ <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <ahXY gdRefX="adj" minX="0" maxX="maxAdj">
+ <pos x="x2" y="t" />
+ </ahXY>
+ </ahLst>
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="3cd4">
+ <pos x="hc" y="y2" />
+ </cxn>
+ <cxn ang="3cd4">
+ <pos x="x4" y="t" />
+ </cxn>
+ <cxn ang="0">
+ <pos x="x6" y="vc" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="x3" y="b" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="hc" y="y1" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="x1" y="vc" />
+ </cxn>
+ </cxnLst>
+ <rect l="il" t="it" r="ir" b="ib" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path>
+ <moveTo>
+ <pt x="l" y="b" />
+ </moveTo>
+ <lnTo>
+ <pt x="x2" y="t" />
+ </lnTo>
+ <lnTo>
+ <pt x="r" y="t" />
+ </lnTo>
+ <lnTo>
+ <pt x="x5" y="b" />
+ </lnTo>
+ <close />
+ </path>
+ </pathLst>
+ </parallelogram>
+ <pentagon>
+
+ <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="hf" fmla="val 105146" />
+ <gd name="vf" fmla="val 110557" />
+ </avLst>
+
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="swd2" fmla="*/ wd2 hf 100000" />
+ <gd name="shd2" fmla="*/ hd2 vf 100000" />
+ <gd name="svc" fmla="*/ vc vf 100000" />
+ <gd name="dx1" fmla="cos swd2 1080000" />
+ <gd name="dx2" fmla="cos swd2 18360000" />
+ <gd name="dy1" fmla="sin shd2 1080000" />
+ <gd name="dy2" fmla="sin shd2 18360000" />
+ <gd name="x1" fmla="+- hc 0 dx1" />
+ <gd name="x2" fmla="+- hc 0 dx2" />
+ <gd name="x3" fmla="+- hc dx2 0" />
+ <gd name="x4" fmla="+- hc dx1 0" />
+ <gd name="y1" fmla="+- svc 0 dy1" />
+ <gd name="y2" fmla="+- svc 0 dy2" />
+ <gd name="it" fmla="*/ y1 dx2 dx1" />
+ </gdLst>
+
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="3cd4">
+ <pos x="hc" y="t" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="x1" y="y1" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="x2" y="y2" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="hc" y="b" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="x3" y="y2" />
+ </cxn>
+ <cxn ang="0">
+ <pos x="x4" y="y1" />
+ </cxn>
+ </cxnLst>
+
+ <rect l="x2" t="it" r="x3" b="y2" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path>
+ <moveTo>
+ <pt x="x1" y="y1" />
+ </moveTo>
+ <lnTo>
+ <pt x="hc" y="t" />
+ </lnTo>
+ <lnTo>
+ <pt x="x4" y="y1" />
+ </lnTo>
+ <lnTo>
+ <pt x="x3" y="y2" />
+ </lnTo>
+ <lnTo>
+ <pt x="x2" y="y2" />
+ </lnTo>
+ <close />
+ </path>
+ </pathLst>
+
+ </pentagon>
+ <pie>
+ <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="adj1" fmla="val 0" />
+ <gd name="adj2" fmla="val 16200000" />
+ </avLst>
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="stAng" fmla="pin 0 adj1 21599999" />
+ <gd name="enAng" fmla="pin 0 adj2 21599999" />
+ <gd name="sw1" fmla="+- enAng 0 stAng" />
+ <gd name="sw2" fmla="+- sw1 21600000 0" />
+ <gd name="swAng" fmla="?: sw1 sw1 sw2" />
+ <gd name="wt1" fmla="sin wd2 stAng" />
+ <gd name="ht1" fmla="cos hd2 stAng" />
+ <gd name="dx1" fmla="cat2 wd2 ht1 wt1" />
+ <gd name="dy1" fmla="sat2 hd2 ht1 wt1" />
+ <gd name="x1" fmla="+- hc dx1 0" />
+ <gd name="y1" fmla="+- vc dy1 0" />
+ <gd name="wt2" fmla="sin wd2 enAng" />
+ <gd name="ht2" fmla="cos hd2 enAng" />
+ <gd name="dx2" fmla="cat2 wd2 ht2 wt2" />
+ <gd name="dy2" fmla="sat2 hd2 ht2 wt2" />
+ <gd name="x2" fmla="+- hc dx2 0" />
+ <gd name="y2" fmla="+- vc dy2 0" />
+ <gd name="idx" fmla="cos wd2 2700000" />
+ <gd name="idy" fmla="sin hd2 2700000" />
+ <gd name="il" fmla="+- hc 0 idx" />
+ <gd name="ir" fmla="+- hc idx 0" />
+ <gd name="it" fmla="+- vc 0 idy" />
+ <gd name="ib" fmla="+- vc idy 0" />
+ </gdLst>
+ <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <ahPolar gdRefAng="adj1" minAng="0" maxAng="21599999">
+ <pos x="x1" y="y1" />
+ </ahPolar>
+ <ahPolar gdRefAng="adj2" minAng="0" maxAng="21599999">
+ <pos x="x2" y="y2" />
+ </ahPolar>
+ </ahLst>
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="0">
+ <pos x="r" y="vc" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="hc" y="b" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="l" y="vc" />
+ </cxn>
+ <cxn ang="3cd4">
+ <pos x="hc" y="t" />
+ </cxn>
+ </cxnLst>
+ <rect l="il" t="ir" r="it" b="ib" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path>
+ <moveTo>
+ <pt x="x1" y="y1" />
+ </moveTo>
+ <arcTo wR="wd2" hR="hd2" stAng="stAng" swAng="swAng" />
+ <lnTo>
+ <pt x="hc" y="vc" />
+ </lnTo>
+ <close />
+ </path>
+ </pathLst>
+ </pie>
+ <pieWedge>
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="g1" fmla="cos w 13500000" />
+ <gd name="g2" fmla="sin h 13500000" />
+ <gd name="x1" fmla="+- r g1 0" />
+ <gd name="y1" fmla="+- b g2 0" />
+ </gdLst>
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="0">
+ <pos x="r" y="vc" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="hc" y="b" />
+ </cxn>
+ </cxnLst>
+ <rect l="x1" t="y1" r="r" b="b" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path>
+ <moveTo>
+ <pt x="l" y="b" />
+ </moveTo>
+ <arcTo wR="w" hR="h" stAng="cd2" swAng="cd4" />
+ <lnTo>
+ <pt x="r" y="b" />
+ </lnTo>
+ <close />
+ </path>
+ </pathLst>
+ </pieWedge>
+ <plaque>
+
+ <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="adj" fmla="val 16667" />
+ </avLst>
+
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="a" fmla="pin 0 adj 50000" />
+ <gd name="x1" fmla="*/ ss a 100000" />
+ <gd name="x2" fmla="+- r 0 x1" />
+
+ <gd name="y2" fmla="+- b 0 x1" />
+ <gd name="il" fmla="*/ x1 70711 100000" />
+
+ <gd name="ir" fmla="+- r 0 il" />
+ <gd name="ib" fmla="+- b 0 il" />
+ </gdLst>
+
+ <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <ahXY gdRefX="adj" minX="0" maxX="50000">
+ <pos x="x1" y="t" />
+ </ahXY>
+ </ahLst>
+
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="3cd4">
+ <pos x="hc" y="t" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="l" y="vc" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="hc" y="b" />
+ </cxn>
+ <cxn ang="0">
+ <pos x="r" y="vc" />
+ </cxn>
+ </cxnLst>
+
+ <rect l="il" t="il" r="ir" b="ib" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path>
+ <moveTo>
+ <pt x="l" y="x1" />
+ </moveTo>
+ <arcTo wR="x1" hR="x1" stAng="cd4" swAng="-5400000" />
+ <lnTo>
+ <pt x="x2" y="t" />
+ </lnTo>
+ <arcTo wR="x1" hR="x1" stAng="cd2" swAng="-5400000" />
+ <lnTo>
+ <pt x="r" y="y2" />
+ </lnTo>
+ <arcTo wR="x1" hR="x1" stAng="3cd4" swAng="-5400000" />
+ <lnTo>
+ <pt x="x1" y="b" />
+ </lnTo>
+ <arcTo wR="x1" hR="x1" stAng="0" swAng="-5400000" />
+ <close />
+ </path>
+ </pathLst>
+
+ </plaque>
+ <plaqueTabs>
+
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="md" fmla="mod w h 0" />
+ <gd name="dx" fmla="*/ 1 md 20" />
+
+ <gd name="y1" fmla="+- 0 b dx" />
+
+ <gd name="x1" fmla="+- 0 r dx" />
+
+ </gdLst>
+
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="cd2">
+ <pos x="l" y="t" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="l" y="dx" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="l" y="y1" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="l" y="b" />
+ </cxn>
+ <cxn ang="3cd4">
+ <pos x="dx" y="t" />
+ </cxn>
+ <cxn ang="3cd4">
+ <pos x="x1" y="t" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="dx" y="b" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="x1" y="b" />
+ </cxn>
+ <cxn ang="0">
+ <pos x="r" y="t" />
+ </cxn>
+ <cxn ang="0">
+ <pos x="r" y="dx" />
+ </cxn>
+ <cxn ang="0">
+ <pos x="r" y="y1" />
+ </cxn>
+ <cxn ang="0">
+ <pos x="r" y="b" />
+ </cxn>
+ </cxnLst>
+
+ <rect l="dx" t="dx" r="x1" b="y1" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path>
+ <moveTo>
+ <pt x="l" y="t" />
+ </moveTo>
+ <lnTo>
+ <pt x="dx" y="t" />
+ </lnTo>
+ <arcTo wR="dx" hR="dx" stAng="0" swAng="cd4" />
+ <close />
+ </path>
+ <path>
+ <moveTo>
+ <pt x="l" y="y1" />
+ </moveTo>
+ <arcTo wR="dx" hR="dx" stAng="3cd4" swAng="cd4" />
+ <lnTo>
+ <pt x="l" y="b" />
+ </lnTo>
+ <close />
+ </path>
+ <path>
+ <moveTo>
+ <pt x="r" y="t" />
+ </moveTo>
+ <lnTo>
+ <pt x="r" y="dx" />
+ </lnTo>
+ <arcTo wR="dx" hR="dx" stAng="cd4" swAng="cd4" />
+ <close />
+ </path>
+ <path>
+ <moveTo>
+ <pt x="x1" y="b" />
+ </moveTo>
+ <arcTo wR="dx" hR="dx" stAng="cd2" swAng="cd4" />
+ <lnTo>
+ <pt x="r" y="b" />
+ </lnTo>
+ <close />
+ </path>
+ </pathLst>
+
+ </plaqueTabs>
+ <plus>
+ <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="adj" fmla="val 25000" />
+ </avLst>
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="a" fmla="pin 0 adj 50000" />
+ <gd name="x1" fmla="*/ ss a 100000" />
+ <gd name="x2" fmla="+- r 0 x1" />
+ <gd name="y2" fmla="+- b 0 x1" />
+ <gd name="d" fmla="+- w 0 h" />
+ <gd name="il" fmla="?: d l x1" />
+ <gd name="ir" fmla="?: d r x2" />
+ <gd name="it" fmla="?: d x1 t" />
+ <gd name="ib" fmla="?: d y2 b" />
+ </gdLst>
+ <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <ahXY gdRefX="adj" minX="0" maxX="50000">
+ <pos x="x1" y="t" />
+ </ahXY>
+ </ahLst>
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="3cd4">
+ <pos x="hc" y="t" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="l" y="vc" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="hc" y="b" />
+ </cxn>
+ <cxn ang="0">
+ <pos x="r" y="vc" />
+ </cxn>
+ </cxnLst>
+ <rect l="il" t="it" r="ir" b="ib" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path>
+ <moveTo>
+ <pt x="l" y="x1" />
+ </moveTo>
+ <lnTo>
+ <pt x="x1" y="x1" />
+ </lnTo>
+ <lnTo>
+ <pt x="x1" y="t" />
+ </lnTo>
+ <lnTo>
+ <pt x="x2" y="t" />
+ </lnTo>
+ <lnTo>
+ <pt x="x2" y="x1" />
+ </lnTo>
+ <lnTo>
+ <pt x="r" y="x1" />
+ </lnTo>
+ <lnTo>
+ <pt x="r" y="y2" />
+ </lnTo>
+ <lnTo>
+ <pt x="x2" y="y2" />
+ </lnTo>
+ <lnTo>
+ <pt x="x2" y="b" />
+ </lnTo>
+ <lnTo>
+ <pt x="x1" y="b" />
+ </lnTo>
+ <lnTo>
+ <pt x="x1" y="y2" />
+ </lnTo>
+ <lnTo>
+ <pt x="l" y="y2" />
+ </lnTo>
+ <close />
+ </path>
+ </pathLst>
+ </plus>
+ <quadArrow>
+
+ <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="adj1" fmla="val 22500" />
+
+ <gd name="adj2" fmla="val 22500" />
+
+ <gd name="adj3" fmla="val 22500" />
+
+ </avLst>
+
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="a2" fmla="pin 0 adj2 50000" />
+ <gd name="maxAdj1" fmla="*/ a2 2 1" />
+ <gd name="a1" fmla="pin 0 adj1 maxAdj1" />
+ <gd name="q1" fmla="+- 100000 0 maxAdj1" />
+ <gd name="maxAdj3" fmla="*/ q1 1 2" />
+ <gd name="a3" fmla="pin 0 adj3 maxAdj3" />
+ <gd name="x1" fmla="*/ ss a3 100000" />
+ <gd name="dx2" fmla="*/ ss a2 100000" />
+
+ <gd name="x2" fmla="+- hc 0 dx2" />
+ <gd name="x5" fmla="+- hc dx2 0" />
+ <gd name="dx3" fmla="*/ ss a1 200000" />
+
+ <gd name="x3" fmla="+- hc 0 dx3" />
+ <gd name="x4" fmla="+- hc dx3 0" />
+ <gd name="x6" fmla="+- r 0 x1" />
+
+ <gd name="y2" fmla="+- vc 0 dx2" />
+ <gd name="y5" fmla="+- vc dx2 0" />
+ <gd name="y3" fmla="+- vc 0 dx3" />
+ <gd name="y4" fmla="+- vc dx3 0" />
+ <gd name="y6" fmla="+- b 0 x1" />
+ <gd name="il" fmla="*/ dx3 x1 dx2" />
+ <gd name="ir" fmla="+- r 0 il" />
+ </gdLst>
+
+ <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <ahXY gdRefX="adj1" minX="0" maxX="maxAdj1">
+ <pos x="x3" y="x1" />
+ </ahXY>
+ <ahXY gdRefX="adj2" minX="0" maxX="50000">
+ <pos x="x2" y="t" />
+ </ahXY>
+ <ahXY gdRefY="adj3" minY="0" maxY="maxAdj3">
+ <pos x="r" y="x1" />
+ </ahXY>
+ </ahLst>
+
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="3cd4">
+ <pos x="hc" y="t" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="l" y="vc" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="hc" y="b" />
+ </cxn>
+ <cxn ang="0">
+ <pos x="r" y="vc" />
+ </cxn>
+ </cxnLst>
+
+ <rect l="il" t="y3" r="ir" b="y4" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path>
+ <moveTo>
+ <pt x="l" y="vc" />
+ </moveTo>
+ <lnTo>
+ <pt x="x1" y="y2" />
+ </lnTo>
+ <lnTo>
+ <pt x="x1" y="y3" />
+ </lnTo>
+ <lnTo>
+ <pt x="x3" y="y3" />
+ </lnTo>
+ <lnTo>
+ <pt x="x3" y="x1" />
+ </lnTo>
+ <lnTo>
+ <pt x="x2" y="x1" />
+ </lnTo>
+ <lnTo>
+ <pt x="hc" y="t" />
+ </lnTo>
+ <lnTo>
+ <pt x="x5" y="x1" />
+ </lnTo>
+ <lnTo>
+ <pt x="x4" y="x1" />
+ </lnTo>
+ <lnTo>
+ <pt x="x4" y="y3" />
+ </lnTo>
+ <lnTo>
+ <pt x="x6" y="y3" />
+ </lnTo>
+ <lnTo>
+ <pt x="x6" y="y2" />
+ </lnTo>
+ <lnTo>
+ <pt x="r" y="vc" />
+ </lnTo>
+ <lnTo>
+ <pt x="x6" y="y5" />
+ </lnTo>
+ <lnTo>
+ <pt x="x6" y="y4" />
+ </lnTo>
+ <lnTo>
+ <pt x="x4" y="y4" />
+ </lnTo>
+ <lnTo>
+ <pt x="x4" y="y6" />
+ </lnTo>
+ <lnTo>
+ <pt x="x5" y="y6" />
+ </lnTo>
+ <lnTo>
+ <pt x="hc" y="b" />
+ </lnTo>
+ <lnTo>
+ <pt x="x2" y="y6" />
+ </lnTo>
+ <lnTo>
+ <pt x="x3" y="y6" />
+ </lnTo>
+ <lnTo>
+ <pt x="x3" y="y4" />
+ </lnTo>
+ <lnTo>
+ <pt x="x1" y="y4" />
+ </lnTo>
+ <lnTo>
+ <pt x="x1" y="y5" />
+ </lnTo>
+ <close />
+ </path>
+ </pathLst>
+
+ </quadArrow>
+ <quadArrowCallout>
+
+ <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="adj1" fmla="val 18515" />
+
+ <gd name="adj2" fmla="val 18515" />
+
+ <gd name="adj3" fmla="val 18515" />
+
+ <gd name="adj4" fmla="val 48123" />
+
+ </avLst>
+
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="a2" fmla="pin 0 adj2 50000" />
+ <gd name="maxAdj1" fmla="*/ a2 2 1" />
+
+ <gd name="a1" fmla="pin 0 adj1 maxAdj1" />
+ <gd name="maxAdj3" fmla="+- 50000 0 a2" />
+ <gd name="a3" fmla="pin 0 adj3 maxAdj3" />
+ <gd name="q2" fmla="*/ a3 2 1" />
+
+ <gd name="maxAdj4" fmla="+- 100000 0 q2" />
+
+ <gd name="a4" fmla="pin a1 adj4 maxAdj4" />
+ <gd name="dx2" fmla="*/ ss a2 100000" />
+
+ <gd name="dx3" fmla="*/ ss a1 200000" />
+
+ <gd name="ah" fmla="*/ ss a3 100000" />
+
+ <gd name="dx1" fmla="*/ w a4 200000" />
+
+ <gd name="dy1" fmla="*/ h a4 200000" />
+
+
+ <gd name="x8" fmla="+- r 0 ah" />
+ <gd name="x2" fmla="+- hc 0 dx1" />
+ <gd name="x7" fmla="+- hc dx1 0" />
+ <gd name="x3" fmla="+- hc 0 dx2" />
+ <gd name="x6" fmla="+- hc dx2 0" />
+ <gd name="x4" fmla="+- hc 0 dx3" />
+ <gd name="x5" fmla="+- hc dx3 0" />
+
+ <gd name="y8" fmla="+- b 0 ah" />
+ <gd name="y2" fmla="+- vc 0 dy1" />
+ <gd name="y7" fmla="+- vc dy1 0" />
+ <gd name="y3" fmla="+- vc 0 dx2" />
+ <gd name="y6" fmla="+- vc dx2 0" />
+ <gd name="y4" fmla="+- vc 0 dx3" />
+ <gd name="y5" fmla="+- vc dx3 0" />
+ </gdLst>
+
+ <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <ahXY gdRefX="adj1" minX="0" maxX="maxAdj1">
+ <pos x="x4" y="ah" />
+ </ahXY>
+ <ahXY gdRefX="adj2" minX="0" maxX="50000">
+ <pos x="x3" y="t" />
+ </ahXY>
+ <ahXY gdRefY="adj3" minY="0" maxY="maxAdj3">
+ <pos x="r" y="ah" />
+ </ahXY>
+ <ahXY gdRefY="adj4" minY="a1" maxY="maxAdj4">
+ <pos x="l" y="y2" />
+ </ahXY>
+ </ahLst>
+
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="3cd4">
+ <pos x="hc" y="t" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="l" y="vc" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="hc" y="b" />
+ </cxn>
+ <cxn ang="0">
+ <pos x="r" y="vc" />
+ </cxn>
+ </cxnLst>
+
+ <rect l="x2" t="y2" r="x7" b="y7" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path>
+ <moveTo>
+ <pt x="l" y="vc" />
+ </moveTo>
+ <lnTo>
+ <pt x="ah" y="y3" />
+ </lnTo>
+ <lnTo>
+ <pt x="ah" y="y4" />
+ </lnTo>
+ <lnTo>
+ <pt x="x2" y="y4" />
+ </lnTo>
+ <lnTo>
+ <pt x="x2" y="y2" />
+ </lnTo>
+ <lnTo>
+ <pt x="x4" y="y2" />
+ </lnTo>
+ <lnTo>
+ <pt x="x4" y="ah" />
+ </lnTo>
+ <lnTo>
+ <pt x="x3" y="ah" />
+ </lnTo>
+ <lnTo>
+ <pt x="hc" y="t" />
+ </lnTo>
+ <lnTo>
+ <pt x="x6" y="ah" />
+ </lnTo>
+ <lnTo>
+ <pt x="x5" y="ah" />
+ </lnTo>
+ <lnTo>
+ <pt x="x5" y="y2" />
+ </lnTo>
+ <lnTo>
+ <pt x="x7" y="y2" />
+ </lnTo>
+ <lnTo>
+ <pt x="x7" y="y4" />
+ </lnTo>
+ <lnTo>
+ <pt x="x8" y="y4" />
+ </lnTo>
+ <lnTo>
+ <pt x="x8" y="y3" />
+ </lnTo>
+ <lnTo>
+ <pt x="r" y="vc" />
+ </lnTo>
+ <lnTo>
+ <pt x="x8" y="y6" />
+ </lnTo>
+ <lnTo>
+ <pt x="x8" y="y5" />
+ </lnTo>
+ <lnTo>
+ <pt x="x7" y="y5" />
+ </lnTo>
+ <lnTo>
+ <pt x="x7" y="y7" />
+ </lnTo>
+ <lnTo>
+ <pt x="x5" y="y7" />
+ </lnTo>
+ <lnTo>
+ <pt x="x5" y="y8" />
+ </lnTo>
+ <lnTo>
+ <pt x="x6" y="y8" />
+ </lnTo>
+ <lnTo>
+ <pt x="hc" y="b" />
+ </lnTo>
+ <lnTo>
+ <pt x="x3" y="y8" />
+ </lnTo>
+ <lnTo>
+ <pt x="x4" y="y8" />
+ </lnTo>
+ <lnTo>
+ <pt x="x4" y="y7" />
+ </lnTo>
+ <lnTo>
+ <pt x="x2" y="y7" />
+ </lnTo>
+ <lnTo>
+ <pt x="x2" y="y5" />
+ </lnTo>
+ <lnTo>
+ <pt x="ah" y="y5" />
+ </lnTo>
+ <lnTo>
+ <pt x="ah" y="y6" />
+ </lnTo>
+ <close />
+ </path>
+ </pathLst>
+
+ </quadArrowCallout>
+ <rect>
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="3cd4">
+ <pos x="hc" y="t" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="l" y="vc" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="hc" y="b" />
+ </cxn>
+ <cxn ang="0">
+ <pos x="r" y="vc" />
+ </cxn>
+ </cxnLst>
+ <rect l="l" t="t" r="r" b="b" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path>
+ <moveTo>
+ <pt x="l" y="t" />
+ </moveTo>
+ <lnTo>
+ <pt x="r" y="t" />
+ </lnTo>
+ <lnTo>
+ <pt x="r" y="b" />
+ </lnTo>
+ <lnTo>
+ <pt x="l" y="b" />
+ </lnTo>
+ <close />
+ </path>
+ </pathLst>
+ </rect>
+ <ribbon>
+
+ <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="adj1" fmla="val 16667" />
+
+ <gd name="adj2" fmla="val 50000" />
+
+ </avLst>
+
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="a1" fmla="pin 0 adj1 33333" />
+ <gd name="a2" fmla="pin 25000 adj2 75000" />
+
+
+ <gd name="x10" fmla="+- r 0 wd8" />
+
+ <gd name="dx2" fmla="*/ w a2 200000" />
+
+ <gd name="x2" fmla="+- hc 0 dx2" />
+
+ <gd name="x9" fmla="+- hc dx2 0" />
+
+ <gd name="x3" fmla="+- x2 wd32 0" />
+ <gd name="x8" fmla="+- x9 0 wd32" />
+ <gd name="x5" fmla="+- x2 wd8 0" />
+
+ <gd name="x6" fmla="+- x9 0 wd8" />
+
+ <gd name="x4" fmla="+- x5 0 wd32" />
+ <gd name="x7" fmla="+- x6 wd32 0" />
+ <gd name="y1" fmla="*/ h a1 200000" />
+
+ <gd name="y2" fmla="*/ h a1 100000" />
+
+ <gd name="y4" fmla="+- b 0 y2" />
+
+ <gd name="y3" fmla="*/ y4 1 2" />
+
+ <gd name="hR" fmla="*/ h a1 400000" />
+
+ <gd name="y5" fmla="+- b 0 hR" />
+ <gd name="y6" fmla="+- y2 0 hR" />
+ </gdLst>
+
+ <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <ahXY gdRefY="adj1" minY="0" maxY="33333">
+ <pos x="hc" y="y2" />
+ </ahXY>
+ <ahXY gdRefX="adj2" minX="25000" maxX="75000">
+ <pos x="x2" y="t" />
+ </ahXY>
+ </ahLst>
+
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="3cd4">
+ <pos x="hc" y="y2" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="wd8" y="y3" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="hc" y="b" />
+ </cxn>
+ <cxn ang="0">
+ <pos x="x10" y="y3" />
+ </cxn>
+ </cxnLst>
+
+ <rect l="x2" t="y2" r="x9" b="b" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path stroke="false" extrusionOk="false">
+
+ <moveTo>
+ <pt x="l" y="t" />
+ </moveTo>
+ <lnTo>
+ <pt x="x4" y="t" />
+ </lnTo>
+ <arcTo wR="wd32" hR="hR" stAng="3cd4" swAng="cd2" />
+ <lnTo>
+ <pt x="x3" y="y1" />
+ </lnTo>
+ <arcTo wR="wd32" hR="hR" stAng="3cd4" swAng="-10800000" />
+ <lnTo>
+ <pt x="x8" y="y2" />
+ </lnTo>
+ <arcTo wR="wd32" hR="hR" stAng="cd4" swAng="-10800000" />
+ <lnTo>
+ <pt x="x7" y="y1" />
+ </lnTo>
+ <arcTo wR="wd32" hR="hR" stAng="cd4" swAng="cd2" />
+ <lnTo>
+ <pt x="r" y="t" />
+ </lnTo>
+ <lnTo>
+ <pt x="x10" y="y3" />
+ </lnTo>
+ <lnTo>
+ <pt x="r" y="y4" />
+ </lnTo>
+ <lnTo>
+ <pt x="x9" y="y4" />
+ </lnTo>
+ <lnTo>
+ <pt x="x9" y="y5" />
+ </lnTo>
+ <arcTo wR="wd32" hR="hR" stAng="0" swAng="cd4" />
+ <lnTo>
+ <pt x="x3" y="b" />
+ </lnTo>
+ <arcTo wR="wd32" hR="hR" stAng="cd4" swAng="cd4" />
+ <lnTo>
+ <pt x="x2" y="y4" />
+ </lnTo>
+ <lnTo>
+ <pt x="l" y="y4" />
+ </lnTo>
+ <lnTo>
+ <pt x="wd8" y="y3" />
+ </lnTo>
+ <close />
+ </path>
+ <path stroke="false" fill="darkenLess" extrusionOk="false">
+
+ <moveTo>
+ <pt x="x5" y="hR" />
+ </moveTo>
+ <arcTo wR="wd32" hR="hR" stAng="0" swAng="cd4" />
+ <lnTo>
+ <pt x="x3" y="y1" />
+ </lnTo>
+ <arcTo wR="wd32" hR="hR" stAng="3cd4" swAng="-10800000" />
+ <lnTo>
+ <pt x="x5" y="y2" />
+ </lnTo>
+ <close />
+ <moveTo>
+ <pt x="x6" y="hR" />
+ </moveTo>
+ <arcTo wR="wd32" hR="hR" stAng="cd2" swAng="-5400000" />
+ <lnTo>
+ <pt x="x8" y="y1" />
+ </lnTo>
+ <arcTo wR="wd32" hR="hR" stAng="3cd4" swAng="cd2" />
+ <lnTo>
+ <pt x="x6" y="y2" />
+ </lnTo>
+ <close />
+ </path>
+ <path fill="none" extrusionOk="false">
+
+ <moveTo>
+ <pt x="l" y="t" />
+ </moveTo>
+ <lnTo>
+ <pt x="x4" y="t" />
+ </lnTo>
+ <arcTo wR="wd32" hR="hR" stAng="3cd4" swAng="cd2" />
+ <lnTo>
+ <pt x="x3" y="y1" />
+ </lnTo>
+ <arcTo wR="wd32" hR="hR" stAng="3cd4" swAng="-10800000" />
+ <lnTo>
+ <pt x="x8" y="y2" />
+ </lnTo>
+ <arcTo wR="wd32" hR="hR" stAng="cd4" swAng="-10800000" />
+ <lnTo>
+ <pt x="x7" y="y1" />
+ </lnTo>
+ <arcTo wR="wd32" hR="hR" stAng="cd4" swAng="cd2" />
+ <lnTo>
+ <pt x="r" y="t" />
+ </lnTo>
+ <lnTo>
+ <pt x="x10" y="y3" />
+ </lnTo>
+ <lnTo>
+ <pt x="r" y="y4" />
+ </lnTo>
+ <lnTo>
+ <pt x="x9" y="y4" />
+ </lnTo>
+ <lnTo>
+ <pt x="x9" y="y5" />
+ </lnTo>
+ <arcTo wR="wd32" hR="hR" stAng="0" swAng="cd4" />
+ <lnTo>
+ <pt x="x3" y="b" />
+ </lnTo>
+ <arcTo wR="wd32" hR="hR" stAng="cd4" swAng="cd4" />
+ <lnTo>
+ <pt x="x2" y="y4" />
+ </lnTo>
+ <lnTo>
+ <pt x="l" y="y4" />
+ </lnTo>
+ <lnTo>
+ <pt x="wd8" y="y3" />
+ </lnTo>
+ <close />
+ <moveTo>
+ <pt x="x5" y="hR" />
+ </moveTo>
+ <lnTo>
+ <pt x="x5" y="y2" />
+ </lnTo>
+ <moveTo>
+ <pt x="x6" y="y2" />
+ </moveTo>
+ <lnTo>
+ <pt x="x6" y="hR" />
+ </lnTo>
+ <moveTo>
+ <pt x="x2" y="y4" />
+ </moveTo>
+ <lnTo>
+ <pt x="x2" y="y6" />
+ </lnTo>
+ <moveTo>
+ <pt x="x9" y="y6" />
+ </moveTo>
+ <lnTo>
+ <pt x="x9" y="y4" />
+ </lnTo>
+ </path>
+ </pathLst>
+
+ </ribbon>
+ <ribbon2>
+
+ <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="adj1" fmla="val 16667" />
+
+ <gd name="adj2" fmla="val 50000" />
+
+ </avLst>
+
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="a1" fmla="pin 0 adj1 33333" />
+ <gd name="a2" fmla="pin 25000 adj2 75000" />
+
+
+ <gd name="x10" fmla="+- r 0 wd8" />
+
+ <gd name="dx2" fmla="*/ w a2 200000" />
+
+ <gd name="x2" fmla="+- hc 0 dx2" />
+
+ <gd name="x9" fmla="+- hc dx2 0" />
+
+ <gd name="x3" fmla="+- x2 wd32 0" />
+ <gd name="x8" fmla="+- x9 0 wd32" />
+ <gd name="x5" fmla="+- x2 wd8 0" />
+
+ <gd name="x6" fmla="+- x9 0 wd8" />
+
+ <gd name="x4" fmla="+- x5 0 wd32" />
+ <gd name="x7" fmla="+- x6 wd32 0" />
+ <gd name="dy1" fmla="*/ h a1 200000" />
+
+ <gd name="y1" fmla="+- b 0 dy1" />
+ <gd name="dy2" fmla="*/ h a1 100000" />
+
+ <gd name="y2" fmla="+- b 0 dy2" />
+ <gd name="y4" fmla="+- t dy2 0" />
+
+ <gd name="y3" fmla="+/ y4 b 2" />
+
+ <gd name="hR" fmla="*/ h a1 400000" />
+
+
+ <gd name="y6" fmla="+- b 0 hR" />
+ <gd name="y7" fmla="+- y1 0 hR" />
+ </gdLst>
+
+ <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <ahXY gdRefY="adj1" minY="0" maxY="33333">
+ <pos x="hc" y="y2" />
+ </ahXY>
+ <ahXY gdRefX="adj2" minX="25000" maxX="75000">
+ <pos x="x2" y="b" />
+ </ahXY>
+ </ahLst>
+
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="3cd4">
+ <pos x="hc" y="t" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="wd8" y="y3" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="hc" y="y2" />
+ </cxn>
+ <cxn ang="0">
+ <pos x="x10" y="y3" />
+ </cxn>
+ </cxnLst>
+
+ <rect l="x2" t="t" r="x9" b="y2" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path stroke="false" extrusionOk="false">
+
+ <moveTo>
+ <pt x="l" y="b" />
+ </moveTo>
+ <lnTo>
+ <pt x="x4" y="b" />
+ </lnTo>
+ <arcTo wR="wd32" hR="hR" stAng="cd4" swAng="-10800000" />
+ <lnTo>
+ <pt x="x3" y="y1" />
+ </lnTo>
+ <arcTo wR="wd32" hR="hR" stAng="cd4" swAng="cd2" />
+ <lnTo>
+ <pt x="x8" y="y2" />
+ </lnTo>
+ <arcTo wR="wd32" hR="hR" stAng="3cd4" swAng="cd2" />
+ <lnTo>
+ <pt x="x7" y="y1" />
+ </lnTo>
+ <arcTo wR="wd32" hR="hR" stAng="3cd4" swAng="-10800000" />
+ <lnTo>
+ <pt x="r" y="b" />
+ </lnTo>
+ <lnTo>
+ <pt x="x10" y="y3" />
+ </lnTo>
+ <lnTo>
+ <pt x="r" y="y4" />
+ </lnTo>
+ <lnTo>
+ <pt x="x9" y="y4" />
+ </lnTo>
+ <lnTo>
+ <pt x="x9" y="hR" />
+ </lnTo>
+ <arcTo wR="wd32" hR="hR" stAng="0" swAng="-5400000" />
+ <lnTo>
+ <pt x="x3" y="t" />
+ </lnTo>
+ <arcTo wR="wd32" hR="hR" stAng="3cd4" swAng="-5400000" />
+ <lnTo>
+ <pt x="x2" y="y4" />
+ </lnTo>
+ <lnTo>
+ <pt x="l" y="y4" />
+ </lnTo>
+ <lnTo>
+ <pt x="wd8" y="y3" />
+ </lnTo>
+ <close />
+ </path>
+ <path stroke="false" fill="darkenLess" extrusionOk="false">
+
+ <moveTo>
+ <pt x="x5" y="y6" />
+ </moveTo>
+ <arcTo wR="wd32" hR="hR" stAng="0" swAng="-5400000" />
+ <lnTo>
+ <pt x="x3" y="y1" />
+ </lnTo>
+ <arcTo wR="wd32" hR="hR" stAng="cd4" swAng="cd2" />
+ <lnTo>
+ <pt x="x5" y="y2" />
+ </lnTo>
+ <close />
+ <moveTo>
+ <pt x="x6" y="y6" />
+ </moveTo>
+ <arcTo wR="wd32" hR="hR" stAng="cd2" swAng="cd4" />
+ <lnTo>
+ <pt x="x8" y="y1" />
+ </lnTo>
+ <arcTo wR="wd32" hR="hR" stAng="cd4" swAng="-10800000" />
+ <lnTo>
+ <pt x="x6" y="y2" />
+ </lnTo>
+ <close />
+ </path>
+ <path fill="none" extrusionOk="false">
+
+ <moveTo>
+ <pt x="l" y="b" />
+ </moveTo>
+ <lnTo>
+ <pt x="wd8" y="y3" />
+ </lnTo>
+ <lnTo>
+ <pt x="l" y="y4" />
+ </lnTo>
+ <lnTo>
+ <pt x="x2" y="y4" />
+ </lnTo>
+ <lnTo>
+ <pt x="x2" y="hR" />
+ </lnTo>
+ <arcTo wR="wd32" hR="hR" stAng="cd2" swAng="cd4" />
+ <lnTo>
+ <pt x="x8" y="t" />
+ </lnTo>
+ <arcTo wR="wd32" hR="hR" stAng="3cd4" swAng="cd4" />
+ <lnTo>
+ <pt x="x9" y="y4" />
+ </lnTo>
+ <lnTo>
+ <pt x="x9" y="y4" />
+ </lnTo>
+ <lnTo>
+ <pt x="r" y="y4" />
+ </lnTo>
+ <lnTo>
+ <pt x="x10" y="y3" />
+ </lnTo>
+ <lnTo>
+ <pt x="r" y="b" />
+ </lnTo>
+ <lnTo>
+ <pt x="x7" y="b" />
+ </lnTo>
+ <arcTo wR="wd32" hR="hR" stAng="cd4" swAng="cd2" />
+ <lnTo>
+ <pt x="x8" y="y1" />
+ </lnTo>
+ <arcTo wR="wd32" hR="hR" stAng="cd4" swAng="-10800000" />
+ <lnTo>
+ <pt x="x3" y="y2" />
+ </lnTo>
+ <arcTo wR="wd32" hR="hR" stAng="3cd4" swAng="-10800000" />
+ <lnTo>
+ <pt x="x4" y="y1" />
+ </lnTo>
+ <arcTo wR="wd32" hR="hR" stAng="3cd4" swAng="cd2" />
+ <close />
+ <moveTo>
+ <pt x="x5" y="y2" />
+ </moveTo>
+ <lnTo>
+ <pt x="x5" y="y6" />
+ </lnTo>
+ <moveTo>
+ <pt x="x6" y="y6" />
+ </moveTo>
+ <lnTo>
+ <pt x="x6" y="y2" />
+ </lnTo>
+ <moveTo>
+ <pt x="x2" y="y7" />
+ </moveTo>
+ <lnTo>
+ <pt x="x2" y="y4" />
+ </lnTo>
+ <moveTo>
+ <pt x="x9" y="y4" />
+ </moveTo>
+ <lnTo>
+ <pt x="x9" y="y7" />
+ </lnTo>
+ </path>
+ </pathLst>
+
+ </ribbon2>
+ <rightArrow>
+ <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="adj1" fmla="val 50000" />
+ <gd name="adj2" fmla="val 50000" />
+ </avLst>
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="maxAdj2" fmla="*/ 100000 w ss" />
+ <gd name="a1" fmla="pin 0 adj1 100000" />
+ <gd name="a2" fmla="pin 0 adj2 maxAdj2" />
+ <gd name="dx1" fmla="*/ ss a2 100000" />
+ <gd name="x1" fmla="+- r 0 dx1" />
+ <gd name="dy1" fmla="*/ h a1 200000" />
+ <gd name="y1" fmla="+- vc 0 dy1" />
+ <gd name="y2" fmla="+- vc dy1 0" />
+ <gd name="dx2" fmla="*/ y1 dx1 hd2" />
+ <gd name="x2" fmla="+- x1 dx2 0" />
+ </gdLst>
+ <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <ahXY gdRefY="adj1" minY="0" maxY="100000">
+ <pos x="l" y="y1" />
+ </ahXY>
+ <ahXY gdRefX="adj2" minX="0" maxX="maxAdj2">
+ <pos x="x1" y="t" />
+ </ahXY>
+ </ahLst>
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="3cd4">
+ <pos x="x1" y="t" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="l" y="vc" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="x1" y="b" />
+ </cxn>
+ <cxn ang="0">
+ <pos x="r" y="vc" />
+ </cxn>
+ </cxnLst>
+ <rect l="l" t="y1" r="x2" b="y2" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path>
+ <moveTo>
+ <pt x="l" y="y1" />
+ </moveTo>
+ <lnTo>
+ <pt x="x1" y="y1" />
+ </lnTo>
+ <lnTo>
+ <pt x="x1" y="t" />
+ </lnTo>
+ <lnTo>
+ <pt x="r" y="vc" />
+ </lnTo>
+ <lnTo>
+ <pt x="x1" y="b" />
+ </lnTo>
+ <lnTo>
+ <pt x="x1" y="y2" />
+ </lnTo>
+ <lnTo>
+ <pt x="l" y="y2" />
+ </lnTo>
+ <close />
+ </path>
+ </pathLst>
+ </rightArrow>
+ <rightArrowCallout>
+
+ <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="adj1" fmla="val 25000" />
+
+ <gd name="adj2" fmla="val 25000" />
+
+ <gd name="adj3" fmla="val 25000" />
+
+ <gd name="adj4" fmla="val 64977" />
+
+ </avLst>
+
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="maxAdj2" fmla="*/ 50000 h ss" />
+
+ <gd name="a2" fmla="pin 0 adj2 maxAdj2" />
+ <gd name="maxAdj1" fmla="*/ a2 2 1" />
+
+ <gd name="a1" fmla="pin 0 adj1 maxAdj1" />
+ <gd name="maxAdj3" fmla="*/ 100000 w ss" />
+
+ <gd name="a3" fmla="pin 0 adj3 maxAdj3" />
+ <gd name="q2" fmla="*/ a3 ss w" />
+
+ <gd name="maxAdj4" fmla="+- 100000 0 q2" />
+
+ <gd name="a4" fmla="pin 0 adj4 maxAdj4" />
+ <gd name="dy1" fmla="*/ ss a2 100000" />
+
+ <gd name="dy2" fmla="*/ ss a1 200000" />
+
+ <gd name="y1" fmla="+- vc 0 dy1" />
+ <gd name="y2" fmla="+- vc 0 dy2" />
+ <gd name="y3" fmla="+- vc dy2 0" />
+ <gd name="y4" fmla="+- vc dy1 0" />
+ <gd name="dx3" fmla="*/ ss a3 100000" />
+
+ <gd name="x3" fmla="+- r 0 dx3" />
+ <gd name="x2" fmla="*/ w a4 100000" />
+
+ <gd name="x1" fmla="*/ x2 1 2" />
+ </gdLst>
+
+ <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <ahXY gdRefY="adj1" minY="0" maxY="maxAdj1">
+ <pos x="x3" y="y2" />
+ </ahXY>
+ <ahXY gdRefY="adj2" minY="0" maxY="maxAdj2">
+ <pos x="r" y="y1" />
+ </ahXY>
+ <ahXY gdRefX="adj3" minX="0" maxX="maxAdj3">
+ <pos x="x3" y="t" />
+ </ahXY>
+ <ahXY gdRefX="adj4" minX="0" maxX="maxAdj4">
+ <pos x="x2" y="b" />
+ </ahXY>
+ </ahLst>
+
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="3cd4">
+ <pos x="x1" y="t" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="l" y="vc" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="x1" y="b" />
+ </cxn>
+ <cxn ang="0">
+ <pos x="r" y="vc" />
+ </cxn>
+ </cxnLst>
+
+ <rect l="l" t="t" r="x2" b="b" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path>
+ <moveTo>
+ <pt x="l" y="t" />
+ </moveTo>
+ <lnTo>
+ <pt x="x2" y="t" />
+ </lnTo>
+ <lnTo>
+ <pt x="x2" y="y2" />
+ </lnTo>
+ <lnTo>
+ <pt x="x3" y="y2" />
+ </lnTo>
+ <lnTo>
+ <pt x="x3" y="y1" />
+ </lnTo>
+ <lnTo>
+ <pt x="r" y="vc" />
+ </lnTo>
+ <lnTo>
+ <pt x="x3" y="y4" />
+ </lnTo>
+ <lnTo>
+ <pt x="x3" y="y3" />
+ </lnTo>
+ <lnTo>
+ <pt x="x2" y="y3" />
+ </lnTo>
+ <lnTo>
+ <pt x="x2" y="b" />
+ </lnTo>
+ <lnTo>
+ <pt x="l" y="b" />
+ </lnTo>
+ <close />
+ </path>
+ </pathLst>
+
+ </rightArrowCallout>
+ <rightBrace>
+ <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="adj1" fmla="val 8333" />
+ <gd name="adj2" fmla="val 50000" />
+ </avLst>
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="a2" fmla="pin 0 adj2 100000" />
+ <gd name="q1" fmla="+- 100000 0 a2" />
+ <gd name="q2" fmla="min q1 a2" />
+ <gd name="q3" fmla="*/ q2 1 2" />
+ <gd name="maxAdj1" fmla="*/ q3 h ss" />
+ <gd name="a1" fmla="pin 0 adj1 maxAdj1" />
+ <gd name="y1" fmla="*/ ss a1 100000" />
+ <gd name="y3" fmla="*/ h a2 100000" />
+ <gd name="y2" fmla="+- y3 0 y1" />
+ <gd name="y4" fmla="+- b 0 y1" />
+ <gd name="dx1" fmla="cos wd2 2700000" />
+ <gd name="dy1" fmla="sin y1 2700000" />
+ <gd name="ir" fmla="+- l dx1 0" />
+ <gd name="it" fmla="+- y1 0 dy1" />
+ <gd name="ib" fmla="+- b dy1 y1" />
+ </gdLst>
+ <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <ahXY gdRefY="adj1" minY="0" maxY="maxAdj1">
+ <pos x="hc" y="y1" />
+ </ahXY>
+ <ahXY gdRefY="adj2" minY="0" maxY="100000">
+ <pos x="r" y="y3" />
+ </ahXY>
+ </ahLst>
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="cd4">
+ <pos x="l" y="t" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="r" y="y3" />
+ </cxn>
+ <cxn ang="3cd4">
+ <pos x="l" y="b" />
+ </cxn>
+ </cxnLst>
+ <rect l="l" t="it" r="ir" b="ib" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path stroke="false" extrusionOk="false">
+ <moveTo>
+ <pt x="l" y="t" />
+ </moveTo>
+ <arcTo wR="wd2" hR="y1" stAng="3cd4" swAng="cd4" />
+ <lnTo>
+ <pt x="hc" y="y2" />
+ </lnTo>
+ <arcTo wR="wd2" hR="y1" stAng="cd2" swAng="-5400000" />
+ <arcTo wR="wd2" hR="y1" stAng="3cd4" swAng="-5400000" />
+ <lnTo>
+ <pt x="hc" y="y4" />
+ </lnTo>
+ <arcTo wR="wd2" hR="y1" stAng="0" swAng="cd4" />
+ <close />
+ </path>
+ <path fill="none">
+ <moveTo>
+ <pt x="l" y="t" />
+ </moveTo>
+ <arcTo wR="wd2" hR="y1" stAng="3cd4" swAng="cd4" />
+ <lnTo>
+ <pt x="hc" y="y2" />
+ </lnTo>
+ <arcTo wR="wd2" hR="y1" stAng="cd2" swAng="-5400000" />
+ <arcTo wR="wd2" hR="y1" stAng="3cd4" swAng="-5400000" />
+ <lnTo>
+ <pt x="hc" y="y4" />
+ </lnTo>
+ <arcTo wR="wd2" hR="y1" stAng="0" swAng="cd4" />
+ </path>
+ </pathLst>
+ </rightBrace>
+ <rightBracket>
+
+ <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="adj" fmla="val 8333" />
+
+ </avLst>
+
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="maxAdj" fmla="*/ 50000 h ss" />
+
+ <gd name="a" fmla="pin 0 adj maxAdj" />
+ <gd name="y1" fmla="*/ ss a 100000" />
+
+ <gd name="y2" fmla="+- b 0 y1" />
+
+ <gd name="dx1" fmla="cos w 2700000" />
+ <gd name="dy1" fmla="sin y1 2700000" />
+ <gd name="ir" fmla="+- l dx1 0" />
+ <gd name="it" fmla="+- y1 0 dy1" />
+ <gd name="ib" fmla="+- b dy1 y1" />
+ </gdLst>
+
+ <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <ahXY gdRefY="adj" minY="0" maxY="maxAdj">
+ <pos x="r" y="y1" />
+ </ahXY>
+ </ahLst>
+
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="cd4">
+ <pos x="l" y="t" />
+ </cxn>
+ <cxn ang="3cd4">
+ <pos x="l" y="b" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="r" y="vc" />
+ </cxn>
+ </cxnLst>
+
+ <rect l="l" t="it" r="ir" b="ib" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path stroke="false" extrusionOk="false">
+
+ <moveTo>
+ <pt x="l" y="t" />
+ </moveTo>
+ <arcTo wR="w" hR="y1" stAng="3cd4" swAng="cd4" />
+ <lnTo>
+ <pt x="r" y="y2" />
+ </lnTo>
+ <arcTo wR="w" hR="y1" stAng="0" swAng="cd4" />
+ <close />
+ </path>
+ <path fill="none">
+
+ <moveTo>
+ <pt x="l" y="t" />
+ </moveTo>
+ <arcTo wR="w" hR="y1" stAng="3cd4" swAng="cd4" />
+ <lnTo>
+ <pt x="r" y="y2" />
+ </lnTo>
+ <arcTo wR="w" hR="y1" stAng="0" swAng="cd4" />
+ </path>
+ </pathLst>
+
+ </rightBracket>
+ <round1Rect>
+
+ <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="adj" fmla="val 16667" />
+ </avLst>
+
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="a" fmla="pin 0 adj 50000" />
+ <gd name="dx1" fmla="*/ ss a 100000" />
+ <gd name="x1" fmla="+- r 0 dx1" />
+ <gd name="idx" fmla="*/ dx1 29289 100000" />
+ <gd name="ir" fmla="+- r 0 idx" />
+ </gdLst>
+
+ <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <ahXY gdRefX="adj" minX="0" maxX="50000">
+ <pos x="x1" y="t" />
+ </ahXY>
+ </ahLst>
+
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="3cd4">
+ <pos x="hc" y="t" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="l" y="vc" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="hc" y="b" />
+ </cxn>
+ <cxn ang="0">
+ <pos x="r" y="vc" />
+ </cxn>
+ </cxnLst>
+
+ <rect l="l" t="t" r="ir" b="b" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path>
+ <moveTo>
+ <pt x="l" y="t" />
+ </moveTo>
+ <lnTo>
+ <pt x="x1" y="t" />
+ </lnTo>
+ <arcTo wR="dx1" hR="dx1" stAng="3cd4" swAng="cd4" />
+ <lnTo>
+ <pt x="r" y="b" />
+ </lnTo>
+ <lnTo>
+ <pt x="l" y="b" />
+ </lnTo>
+ <close />
+ </path>
+ </pathLst>
+
+ </round1Rect>
+ <round2DiagRect>
+
+ <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="adj1" fmla="val 16667" />
+ <gd name="adj2" fmla="val 0" />
+ </avLst>
+
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="a1" fmla="pin 0 adj1 50000" />
+ <gd name="a2" fmla="pin 0 adj2 50000" />
+ <gd name="x1" fmla="*/ ss a1 100000" />
+ <gd name="y1" fmla="+- b 0 x1" />
+ <gd name="a" fmla="*/ ss a2 100000" />
+ <gd name="x2" fmla="+- r 0 a" />
+ <gd name="y2" fmla="+- b 0 a" />
+ <gd name="dx1" fmla="*/ x1 29289 100000" />
+ <gd name="dx2" fmla="*/ a 29289 100000" />
+ <gd name="d" fmla="+- dx1 0 dx2" />
+ <gd name="dx" fmla="?: d dx1 dx2" />
+ <gd name="ir" fmla="+- r 0 dx" />
+ <gd name="ib" fmla="+- b 0 dx" />
+ </gdLst>
+
+ <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <ahXY gdRefX="adj1" minX="0" maxX="50000">
+ <pos x="x1" y="t" />
+ </ahXY>
+ <ahXY gdRefX="adj2" minX="0" maxX="50000">
+ <pos x="x2" y="t" />
+ </ahXY>
+ </ahLst>
+
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="0">
+ <pos x="r" y="vc" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="hc" y="b" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="l" y="vc" />
+ </cxn>
+ <cxn ang="3cd4">
+ <pos x="hc" y="t" />
+ </cxn>
+ </cxnLst>
+
+ <rect l="dx" t="dx" r="ir" b="ib" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path>
+ <moveTo>
+ <pt x="x1" y="t" />
+ </moveTo>
+ <lnTo>
+ <pt x="x2" y="t" />
+ </lnTo>
+ <arcTo wR="a" hR="a" stAng="3cd4" swAng="cd4" />
+ <lnTo>
+ <pt x="r" y="y1" />
+ </lnTo>
+ <arcTo wR="x1" hR="x1" stAng="0" swAng="cd4" />
+ <lnTo>
+ <pt x="a" y="b" />
+ </lnTo>
+ <arcTo wR="a" hR="a" stAng="cd4" swAng="cd4" />
+ <lnTo>
+ <pt x="l" y="x1" />
+ </lnTo>
+ <arcTo wR="x1" hR="x1" stAng="cd2" swAng="cd4" />
+ <close />
+ </path>
+ </pathLst>
+
+ </round2DiagRect>
+ <round2SameRect>
+
+ <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="adj1" fmla="val 16667" />
+ <gd name="adj2" fmla="val 0" />
+ </avLst>
+
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="a1" fmla="pin 0 adj1 50000" />
+ <gd name="a2" fmla="pin 0 adj2 50000" />
+
+ <gd name="tx1" fmla="*/ ss a1 100000" />
+ <gd name="tx2" fmla="+- r 0 tx1" />
+
+ <gd name="bx1" fmla="*/ ss a2 100000" />
+ <gd name="bx2" fmla="+- r 0 bx1" />
+ <gd name="by1" fmla="+- b 0 bx1" />
+ <gd name="d" fmla="+- tx1 0 bx1" />
+ <gd name="tdx" fmla="*/ tx1 29289 100000" />
+ <gd name="bdx" fmla="*/ bx1 29289 100000" />
+ <gd name="il" fmla="?: d tdx bdx" />
+ <gd name="ir" fmla="+- r 0 il" />
+ <gd name="ib" fmla="+- b 0 bdx" />
+ </gdLst>
+
+ <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <ahXY gdRefX="adj1" minX="0" maxX="50000">
+ <pos x="tx2" y="t" />
+ </ahXY>
+ <ahXY gdRefX="adj2" minX="0" maxX="50000">
+ <pos x="bx1" y="b" />
+ </ahXY>
+ </ahLst>
+
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="0">
+ <pos x="r" y="vc" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="hc" y="b" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="l" y="vc" />
+ </cxn>
+ <cxn ang="3cd4">
+ <pos x="hc" y="t" />
+ </cxn>
+ </cxnLst>
+
+ <rect l="il" t="tdx" r="ir" b="ib" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path>
+ <moveTo>
+ <pt x="tx1" y="t" />
+ </moveTo>
+ <lnTo>
+ <pt x="tx2" y="t" />
+ </lnTo>
+ <arcTo wR="tx1" hR="tx1" stAng="3cd4" swAng="cd4" />
+ <lnTo>
+ <pt x="r" y="by1" />
+ </lnTo>
+ <arcTo wR="bx1" hR="bx1" stAng="0" swAng="cd4" />
+ <lnTo>
+ <pt x="bx1" y="b" />
+ </lnTo>
+ <arcTo wR="bx1" hR="bx1" stAng="cd4" swAng="cd4" />
+ <lnTo>
+ <pt x="l" y="tx1" />
+ </lnTo>
+ <arcTo wR="tx1" hR="tx1" stAng="cd2" swAng="cd4" />
+ <close />
+ </path>
+ </pathLst>
+
+ </round2SameRect>
+ <roundRect>
+ <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="adj" fmla="val 16667" />
+ </avLst>
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="a" fmla="pin 0 adj 50000" />
+ <gd name="x1" fmla="*/ ss a 100000" />
+ <gd name="x2" fmla="+- r 0 x1" />
+ <gd name="y2" fmla="+- b 0 x1" />
+ <gd name="il" fmla="*/ x1 29289 100000" />
+ <gd name="ir" fmla="+- r 0 il" />
+ <gd name="ib" fmla="+- b 0 il" />
+ </gdLst>
+ <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <ahXY gdRefX="adj" minX="0" maxX="50000">
+ <pos x="x1" y="t" />
+ </ahXY>
+ </ahLst>
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="3cd4">
+ <pos x="hc" y="t" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="l" y="vc" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="hc" y="b" />
+ </cxn>
+ <cxn ang="0">
+ <pos x="r" y="vc" />
+ </cxn>
+ </cxnLst>
+ <rect l="il" t="il" r="ir" b="ib" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path>
+ <moveTo>
+ <pt x="l" y="x1" />
+ </moveTo>
+ <arcTo wR="x1" hR="x1" stAng="cd2" swAng="cd4" />
+ <lnTo>
+ <pt x="x2" y="t" />
+ </lnTo>
+ <arcTo wR="x1" hR="x1" stAng="3cd4" swAng="cd4" />
+ <lnTo>
+ <pt x="r" y="y2" />
+ </lnTo>
+ <arcTo wR="x1" hR="x1" stAng="0" swAng="cd4" />
+ <lnTo>
+ <pt x="x1" y="b" />
+ </lnTo>
+ <arcTo wR="x1" hR="x1" stAng="cd4" swAng="cd4" />
+ <close />
+ </path>
+ </pathLst>
+ </roundRect>
+ <rtTriangle>
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="it" fmla="*/ h 7 12" />
+ <gd name="ir" fmla="*/ w 7 12" />
+ <gd name="ib" fmla="*/ h 11 12" />
+ </gdLst>
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="3cd4">
+ <pos x="l" y="t" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="l" y="vc" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="l" y="b" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="hc" y="b" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="r" y="b" />
+ </cxn>
+ <cxn ang="0">
+ <pos x="hc" y="vc" />
+ </cxn>
+ </cxnLst>
+ <rect l="wd12" t="it" r="ir" b="ib" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path>
+ <moveTo>
+ <pt x="l" y="b" />
+ </moveTo>
+ <lnTo>
+ <pt x="l" y="t" />
+ </lnTo>
+ <lnTo>
+ <pt x="r" y="b" />
+ </lnTo>
+ <close />
+ </path>
+ </pathLst>
+ </rtTriangle>
+ <smileyFace>
+
+ <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="adj" fmla="val 4653" />
+
+ </avLst>
+
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="a" fmla="pin -4653 adj 4653" />
+ <gd name="x1" fmla="*/ w 4969 21699" />
+
+ <gd name="x2" fmla="*/ w 6215 21600" />
+
+ <gd name="x3" fmla="*/ w 13135 21600" />
+
+ <gd name="x4" fmla="*/ w 16640 21600" />
+
+ <gd name="y1" fmla="*/ h 7570 21600" />
+
+ <gd name="y3" fmla="*/ h 16515 21600" />
+
+ <gd name="dy2" fmla="*/ h a 100000" />
+
+ <gd name="y2" fmla="+- y3 0 dy2" />
+
+ <gd name="y4" fmla="+- y3 dy2 0" />
+
+ <gd name="dy3" fmla="*/ h a 50000" />
+
+ <gd name="y5" fmla="+- y4 dy3 0" />
+ <gd name="idx" fmla="cos wd2 2700000" />
+ <gd name="idy" fmla="sin hd2 2700000" />
+ <gd name="il" fmla="+- hc 0 idx" />
+ <gd name="ir" fmla="+- hc idx 0" />
+ <gd name="it" fmla="+- vc 0 idy" />
+ <gd name="ib" fmla="+- vc idy 0" />
+ <gd name="wR" fmla="*/ w 1125 21600" />
+ <gd name="hR" fmla="*/ h 1125 21600" />
+ </gdLst>
+
+ <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <ahXY gdRefY="adj" minY="-4653" maxY="4653">
+ <pos x="hc" y="y4" />
+ </ahXY>
+ </ahLst>
+
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="3cd4">
+ <pos x="hc" y="t" />
+ </cxn>
+ <cxn ang="3cd4">
+ <pos x="il" y="it" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="l" y="vc" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="il" y="ib" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="hc" y="b" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="ir" y="ib" />
+ </cxn>
+ <cxn ang="0">
+ <pos x="r" y="vc" />
+ </cxn>
+ <cxn ang="3cd4">
+ <pos x="ir" y="it" />
+ </cxn>
+ </cxnLst>
+
+ <rect l="il" t="it" r="ir" b="ib" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path stroke="false" extrusionOk="false">
+
+ <moveTo>
+ <pt x="l" y="vc" />
+ </moveTo>
+ <arcTo wR="wd2" hR="hd2" stAng="cd2" swAng="21600000" />
+ <close />
+ </path>
+ <path fill="darkenLess" extrusionOk="false">
+
+ <moveTo>
+ <pt x="x2" y="y1" />
+ </moveTo>
+ <arcTo wR="wR" hR="hR" stAng="cd2" swAng="21600000" />
+ <moveTo>
+ <pt x="x3" y="y1" />
+ </moveTo>
+ <arcTo wR="wR" hR="hR" stAng="cd2" swAng="21600000" />
+ </path>
+ <path fill="none" extrusionOk="false">
+
+ <moveTo>
+ <pt x="x1" y="y2" />
+ </moveTo>
+ <quadBezTo>
+ <pt x="hc" y="y5" />
+ <pt x="x4" y="y2" />
+ </quadBezTo>
+ </path>
+ <path fill="none">
+
+ <moveTo>
+ <pt x="l" y="vc" />
+ </moveTo>
+ <arcTo wR="wd2" hR="hd2" stAng="cd2" swAng="21600000" />
+ <close />
+ </path>
+ </pathLst>
+
+ </smileyFace>
+ <snip1Rect>
+
+ <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="adj" fmla="val 16667" />
+ </avLst>
+
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="a" fmla="pin 0 adj 50000" />
+ <gd name="dx1" fmla="*/ ss a 100000" />
+ <gd name="x1" fmla="+- r 0 dx1" />
+ <gd name="it" fmla="*/ dx1 1 2" />
+ <gd name="ir" fmla="+/ x1 r 2" />
+ </gdLst>
+
+ <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <ahXY gdRefX="adj" minX="0" maxX="50000">
+ <pos x="x1" y="t" />
+ </ahXY>
+ </ahLst>
+
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="0">
+ <pos x="r" y="vc" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="hc" y="b" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="l" y="vc" />
+ </cxn>
+ <cxn ang="3cd4">
+ <pos x="hc" y="t" />
+ </cxn>
+ </cxnLst>
+
+ <rect l="l" t="it" r="ir" b="b" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path>
+ <moveTo>
+ <pt x="l" y="t" />
+ </moveTo>
+ <lnTo>
+ <pt x="x1" y="t" />
+ </lnTo>
+ <lnTo>
+ <pt x="r" y="dx1" />
+ </lnTo>
+ <lnTo>
+ <pt x="r" y="b" />
+ </lnTo>
+ <lnTo>
+ <pt x="l" y="b" />
+ </lnTo>
+ <close />
+ </path>
+ </pathLst>
+
+ </snip1Rect>
+ <snip2DiagRect>
+
+ <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="adj1" fmla="val 0" />
+ <gd name="adj2" fmla="val 16667" />
+ </avLst>
+
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="a1" fmla="pin 0 adj1 50000" />
+ <gd name="a2" fmla="pin 0 adj2 50000" />
+ <gd name="lx1" fmla="*/ ss a1 100000" />
+ <gd name="lx2" fmla="+- r 0 lx1" />
+ <gd name="ly1" fmla="+- b 0 lx1" />
+ <gd name="rx1" fmla="*/ ss a2 100000" />
+ <gd name="rx2" fmla="+- r 0 rx1" />
+ <gd name="ry1" fmla="+- b 0 rx1" />
+ <gd name="d" fmla="+- lx1 0 rx1" />
+ <gd name="dx" fmla="?: d lx1 rx1" />
+ <gd name="il" fmla="*/ dx 1 2" />
+
+ <gd name="ir" fmla="+- r 0 il" />
+ <gd name="ib" fmla="+- b 0 il" />
+ </gdLst>
+
+ <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <ahXY gdRefX="adj1" minX="0" maxX="50000">
+ <pos x="lx1" y="t" />
+ </ahXY>
+ <ahXY gdRefX="adj2" minX="0" maxX="50000">
+ <pos x="rx2" y="t" />
+ </ahXY>
+ </ahLst>
+
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="0">
+ <pos x="r" y="vc" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="hc" y="b" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="l" y="vc" />
+ </cxn>
+ <cxn ang="3cd4">
+ <pos x="hc" y="t" />
+ </cxn>
+ </cxnLst>
+
+ <rect l="il" t="il" r="ir" b="ib" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path>
+ <moveTo>
+ <pt x="lx1" y="t" />
+ </moveTo>
+ <lnTo>
+ <pt x="rx2" y="t" />
+ </lnTo>
+ <lnTo>
+ <pt x="r" y="rx1" />
+ </lnTo>
+ <lnTo>
+ <pt x="r" y="ly1" />
+ </lnTo>
+ <lnTo>
+ <pt x="lx2" y="b" />
+ </lnTo>
+ <lnTo>
+ <pt x="rx1" y="b" />
+ </lnTo>
+ <lnTo>
+ <pt x="l" y="ry1" />
+ </lnTo>
+ <lnTo>
+ <pt x="l" y="lx1" />
+ </lnTo>
+ <close />
+ </path>
+ </pathLst>
+
+ </snip2DiagRect>
+ <snip2SameRect>
+
+ <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="adj1" fmla="val 16667" />
+ <gd name="adj2" fmla="val 0" />
+ </avLst>
+
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="a1" fmla="pin 0 adj1 50000" />
+ <gd name="a2" fmla="pin 0 adj2 50000" />
+ <gd name="tx1" fmla="*/ ss a1 100000" />
+ <gd name="tx2" fmla="+- r 0 tx1" />
+ <gd name="bx1" fmla="*/ ss a2 100000" />
+ <gd name="bx2" fmla="+- r 0 bx1" />
+ <gd name="by1" fmla="+- b 0 bx1" />
+ <gd name="d" fmla="+- tx1 0 bx1" />
+ <gd name="dx" fmla="?: d tx1 bx1" />
+ <gd name="il" fmla="*/ dx 1 2" />
+ <gd name="ir" fmla="+- r 0 il" />
+ <gd name="it" fmla="*/ tx1 1 2" />
+ <gd name="ib" fmla="+/ by1 b 2" />
+ </gdLst>
+
+ <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <ahXY gdRefX="adj1" minX="0" maxX="50000">
+ <pos x="tx2" y="t" />
+ </ahXY>
+ <ahXY gdRefX="adj2" minX="0" maxX="50000">
+ <pos x="bx1" y="b" />
+ </ahXY>
+ </ahLst>
+
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="0">
+ <pos x="r" y="vc" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="hc" y="b" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="l" y="vc" />
+ </cxn>
+ <cxn ang="3cd4">
+ <pos x="hc" y="t" />
+ </cxn>
+ </cxnLst>
+
+ <rect l="il" t="it" r="ir" b="ib" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path>
+ <moveTo>
+ <pt x="tx1" y="t" />
+ </moveTo>
+ <lnTo>
+ <pt x="tx2" y="t" />
+ </lnTo>
+ <lnTo>
+ <pt x="r" y="tx1" />
+ </lnTo>
+ <lnTo>
+ <pt x="r" y="by1" />
+ </lnTo>
+ <lnTo>
+ <pt x="bx2" y="b" />
+ </lnTo>
+ <lnTo>
+ <pt x="bx1" y="b" />
+ </lnTo>
+ <lnTo>
+ <pt x="l" y="by1" />
+ </lnTo>
+ <lnTo>
+ <pt x="l" y="tx1" />
+ </lnTo>
+ <close />
+ </path>
+ </pathLst>
+
+ </snip2SameRect>
+ <snipRoundRect>
+
+ <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="adj1" fmla="val 16667" />
+ <gd name="adj2" fmla="val 16667" />
+ </avLst>
+
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="a1" fmla="pin 0 adj1 50000" />
+ <gd name="a2" fmla="pin 0 adj2 50000" />
+ <gd name="x1" fmla="*/ ss a1 100000" />
+ <gd name="dx2" fmla="*/ ss a2 100000" />
+ <gd name="x2" fmla="+- r 0 dx2" />
+ <gd name="il" fmla="*/ x1 29289 100000" />
+
+ <gd name="ir" fmla="+/ x2 r 2" />
+ </gdLst>
+
+ <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <ahXY gdRefX="adj1" minX="0" maxX="50000">
+ <pos x="x1" y="t" />
+ </ahXY>
+ <ahXY gdRefX="adj2" minX="0" maxX="50000">
+ <pos x="x2" y="t" />
+ </ahXY>
+ </ahLst>
+
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="0">
+ <pos x="r" y="vc" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="hc" y="b" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="l" y="vc" />
+ </cxn>
+ <cxn ang="3cd4">
+ <pos x="hc" y="t" />
+ </cxn>
+ </cxnLst>
+
+ <rect l="il" t="il" r="ir" b="b" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path>
+ <moveTo>
+ <pt x="x1" y="t" />
+ </moveTo>
+ <lnTo>
+ <pt x="x2" y="t" />
+ </lnTo>
+ <lnTo>
+ <pt x="r" y="dx2" />
+ </lnTo>
+ <lnTo>
+ <pt x="r" y="b" />
+ </lnTo>
+ <lnTo>
+ <pt x="l" y="b" />
+ </lnTo>
+ <lnTo>
+ <pt x="l" y="x1" />
+ </lnTo>
+ <arcTo wR="x1" hR="x1" stAng="cd2" swAng="cd4" />
+ <close />
+ </path>
+ </pathLst>
+
+ </snipRoundRect>
+ <squareTabs>
+
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="md" fmla="mod w h 0" />
+ <gd name="dx" fmla="*/ 1 md 20" />
+
+ <gd name="y1" fmla="+- 0 b dx" />
+
+ <gd name="x1" fmla="+- 0 r dx" />
+
+ </gdLst>
+
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="cd2">
+ <pos x="l" y="t" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="l" y="dx" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="l" y="y1" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="l" y="b" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="dx" y="dx" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="dx" y="x1" />
+ </cxn>
+ <cxn ang="3cd4">
+ <pos x="dx" y="t" />
+ </cxn>
+ <cxn ang="3cd4">
+ <pos x="x1" y="t" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="dx" y="b" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="x1" y="b" />
+ </cxn>
+ <cxn ang="0">
+ <pos x="r" y="t" />
+ </cxn>
+ <cxn ang="0">
+ <pos x="r" y="dx" />
+ </cxn>
+ <cxn ang="0">
+ <pos x="r" y="y1" />
+ </cxn>
+ <cxn ang="0">
+ <pos x="r" y="b" />
+ </cxn>
+ <cxn ang="0">
+ <pos x="x1" y="dx" />
+ </cxn>
+ <cxn ang="0">
+ <pos x="x1" y="y1" />
+ </cxn>
+ </cxnLst>
+
+ <rect l="dx" t="dx" r="x1" b="y1" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path>
+ <moveTo>
+ <pt x="l" y="t" />
+ </moveTo>
+ <lnTo>
+ <pt x="dx" y="t" />
+ </lnTo>
+ <lnTo>
+ <pt x="dx" y="dx" />
+ </lnTo>
+ <lnTo>
+ <pt x="l" y="dx" />
+ </lnTo>
+ <close />
+ </path>
+ <path>
+ <moveTo>
+ <pt x="l" y="y1" />
+ </moveTo>
+ <lnTo>
+ <pt x="dx" y="y1" />
+ </lnTo>
+ <lnTo>
+ <pt x="dx" y="b" />
+ </lnTo>
+ <lnTo>
+ <pt x="l" y="b" />
+ </lnTo>
+ <close />
+ </path>
+ <path>
+ <moveTo>
+ <pt x="x1" y="t" />
+ </moveTo>
+ <lnTo>
+ <pt x="r" y="t" />
+ </lnTo>
+ <lnTo>
+ <pt x="r" y="dx" />
+ </lnTo>
+ <lnTo>
+ <pt x="x1" y="dx" />
+ </lnTo>
+ <close />
+ </path>
+ <path>
+ <moveTo>
+ <pt x="x1" y="y1" />
+ </moveTo>
+ <lnTo>
+ <pt x="r" y="y1" />
+ </lnTo>
+ <lnTo>
+ <pt x="r" y="b" />
+ </lnTo>
+ <lnTo>
+ <pt x="x1" y="b" />
+ </lnTo>
+ <close />
+ </path>
+ </pathLst>
+
+ </squareTabs>
+ <star10>
+
+ <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="adj" fmla="val 42533" />
+ <gd name="hf" fmla="val 105146" />
+ </avLst>
+
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="a" fmla="pin 0 adj 50000" />
+ <gd name="swd2" fmla="*/ wd2 hf 100000" />
+ <gd name="dx1" fmla="*/ swd2 95106 100000" />
+ <gd name="dx2" fmla="*/ swd2 58779 100000" />
+ <gd name="x1" fmla="+- hc 0 dx1" />
+ <gd name="x2" fmla="+- hc 0 dx2" />
+ <gd name="x3" fmla="+- hc dx2 0" />
+ <gd name="x4" fmla="+- hc dx1 0" />
+ <gd name="dy1" fmla="*/ hd2 80902 100000" />
+ <gd name="dy2" fmla="*/ hd2 30902 100000" />
+ <gd name="y1" fmla="+- vc 0 dy1" />
+ <gd name="y2" fmla="+- vc 0 dy2" />
+ <gd name="y3" fmla="+- vc dy2 0" />
+ <gd name="y4" fmla="+- vc dy1 0" />
+ <gd name="iwd2" fmla="*/ swd2 a 50000" />
+ <gd name="ihd2" fmla="*/ hd2 a 50000" />
+ <gd name="sdx1" fmla="*/ iwd2 80902 100000" />
+ <gd name="sdx2" fmla="*/ iwd2 30902 100000" />
+ <gd name="sdy1" fmla="*/ ihd2 95106 100000" />
+ <gd name="sdy2" fmla="*/ ihd2 58779 100000" />
+ <gd name="sx1" fmla="+- hc 0 iwd2" />
+ <gd name="sx2" fmla="+- hc 0 sdx1" />
+ <gd name="sx3" fmla="+- hc 0 sdx2" />
+ <gd name="sx4" fmla="+- hc sdx2 0" />
+ <gd name="sx5" fmla="+- hc sdx1 0" />
+ <gd name="sx6" fmla="+- hc iwd2 0" />
+ <gd name="sy1" fmla="+- vc 0 sdy1" />
+ <gd name="sy2" fmla="+- vc 0 sdy2" />
+ <gd name="sy3" fmla="+- vc sdy2 0" />
+ <gd name="sy4" fmla="+- vc sdy1 0" />
+ <gd name="yAdj" fmla="+- vc 0 ihd2" />
+ </gdLst>
+
+ <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <ahXY gdRefY="adj" minY="0" maxY="50000">
+ <pos x="hc" y="yAdj" />
+ </ahXY>
+ </ahLst>
+
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="0">
+ <pos x="x4" y="y2" />
+ </cxn>
+ <cxn ang="0">
+ <pos x="x4" y="y3" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="x3" y="y4" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="hc" y="b" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="x2" y="y4" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="x1" y="y3" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="x1" y="y2" />
+ </cxn>
+ <cxn ang="3cd4">
+ <pos x="x2" y="y1" />
+ </cxn>
+ <cxn ang="3cd4">
+ <pos x="hc" y="t" />
+ </cxn>
+ <cxn ang="3cd4">
+ <pos x="x3" y="y1" />
+ </cxn>
+ </cxnLst>
+
+ <rect l="sx2" t="sy2" r="sx5" b="sy3" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path>
+ <moveTo>
+ <pt x="x1" y="y2" />
+ </moveTo>
+ <lnTo>
+ <pt x="sx2" y="sy2" />
+ </lnTo>
+ <lnTo>
+ <pt x="x2" y="y1" />
+ </lnTo>
+ <lnTo>
+ <pt x="sx3" y="sy1" />
+ </lnTo>
+ <lnTo>
+ <pt x="hc" y="t" />
+ </lnTo>
+ <lnTo>
+ <pt x="sx4" y="sy1" />
+ </lnTo>
+ <lnTo>
+ <pt x="x3" y="y1" />
+ </lnTo>
+ <lnTo>
+ <pt x="sx5" y="sy2" />
+ </lnTo>
+ <lnTo>
+ <pt x="x4" y="y2" />
+ </lnTo>
+ <lnTo>
+ <pt x="sx6" y="vc" />
+ </lnTo>
+ <lnTo>
+ <pt x="x4" y="y3" />
+ </lnTo>
+ <lnTo>
+ <pt x="sx5" y="sy3" />
+ </lnTo>
+ <lnTo>
+ <pt x="x3" y="y4" />
+ </lnTo>
+ <lnTo>
+ <pt x="sx4" y="sy4" />
+ </lnTo>
+ <lnTo>
+ <pt x="hc" y="b" />
+ </lnTo>
+ <lnTo>
+ <pt x="sx3" y="sy4" />
+ </lnTo>
+ <lnTo>
+ <pt x="x2" y="y4" />
+ </lnTo>
+ <lnTo>
+ <pt x="sx2" y="sy3" />
+ </lnTo>
+ <lnTo>
+ <pt x="x1" y="y3" />
+ </lnTo>
+ <lnTo>
+ <pt x="sx1" y="vc" />
+ </lnTo>
+ <close />
+ </path>
+ </pathLst>
+
+ </star10>
+ <star12>
+
+ <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="adj" fmla="val 37500" />
+ </avLst>
+
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="a" fmla="pin 0 adj 50000" />
+ <gd name="dx1" fmla="cos wd2 1800000" />
+
+ <gd name="dy1" fmla="sin hd2 3600000" />
+
+ <gd name="x1" fmla="+- hc 0 dx1" />
+ <gd name="x3" fmla="*/ w 3 4" />
+ <gd name="x4" fmla="+- hc dx1 0" />
+ <gd name="y1" fmla="+- vc 0 dy1" />
+ <gd name="y3" fmla="*/ h 3 4" />
+ <gd name="y4" fmla="+- vc dy1 0" />
+ <gd name="iwd2" fmla="*/ wd2 a 50000" />
+ <gd name="ihd2" fmla="*/ hd2 a 50000" />
+ <gd name="sdx1" fmla="cos iwd2 900000" />
+ <gd name="sdx2" fmla="cos iwd2 2700000" />
+ <gd name="sdx3" fmla="cos iwd2 4500000" />
+ <gd name="sdy1" fmla="sin ihd2 4500000" />
+ <gd name="sdy2" fmla="sin ihd2 2700000" />
+ <gd name="sdy3" fmla="sin ihd2 900000" />
+ <gd name="sx1" fmla="+- hc 0 sdx1" />
+ <gd name="sx2" fmla="+- hc 0 sdx2" />
+ <gd name="sx3" fmla="+- hc 0 sdx3" />
+ <gd name="sx4" fmla="+- hc sdx3 0" />
+ <gd name="sx5" fmla="+- hc sdx2 0" />
+ <gd name="sx6" fmla="+- hc sdx1 0" />
+ <gd name="sy1" fmla="+- vc 0 sdy1" />
+ <gd name="sy2" fmla="+- vc 0 sdy2" />
+ <gd name="sy3" fmla="+- vc 0 sdy3" />
+ <gd name="sy4" fmla="+- vc sdy3 0" />
+ <gd name="sy5" fmla="+- vc sdy2 0" />
+ <gd name="sy6" fmla="+- vc sdy1 0" />
+ <gd name="yAdj" fmla="+- vc 0 ihd2" />
+ </gdLst>
+
+ <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <ahXY gdRefY="adj" minY="0" maxY="50000">
+ <pos x="hc" y="yAdj" />
+ </ahXY>
+ </ahLst>
+
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="0">
+ <pos x="x4" y="hd4" />
+ </cxn>
+ <cxn ang="0">
+ <pos x="r" y="vc" />
+ </cxn>
+ <cxn ang="0">
+ <pos x="x4" y="y3" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="x3" y="y4" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="hc" y="b" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="wd4" y="y4" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="x1" y="y3" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="l" y="vc" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="x1" y="hd4" />
+ </cxn>
+ <cxn ang="3cd4">
+ <pos x="wd4" y="y1" />
+ </cxn>
+ <cxn ang="3cd4">
+ <pos x="hc" y="t" />
+ </cxn>
+ <cxn ang="3cd4">
+ <pos x="x3" y="y1" />
+ </cxn>
+ </cxnLst>
+
+ <rect l="sx2" t="sy2" r="sx5" b="sy5" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path>
+ <moveTo>
+ <pt x="l" y="vc" />
+ </moveTo>
+ <lnTo>
+ <pt x="sx1" y="sy3" />
+ </lnTo>
+ <lnTo>
+ <pt x="x1" y="hd4" />
+ </lnTo>
+ <lnTo>
+ <pt x="sx2" y="sy2" />
+ </lnTo>
+ <lnTo>
+ <pt x="wd4" y="y1" />
+ </lnTo>
+ <lnTo>
+ <pt x="sx3" y="sy1" />
+ </lnTo>
+ <lnTo>
+ <pt x="hc" y="t" />
+ </lnTo>
+ <lnTo>
+ <pt x="sx4" y="sy1" />
+ </lnTo>
+ <lnTo>
+ <pt x="x3" y="y1" />
+ </lnTo>
+ <lnTo>
+ <pt x="sx5" y="sy2" />
+ </lnTo>
+ <lnTo>
+ <pt x="x4" y="hd4" />
+ </lnTo>
+ <lnTo>
+ <pt x="sx6" y="sy3" />
+ </lnTo>
+ <lnTo>
+ <pt x="r" y="vc" />
+ </lnTo>
+ <lnTo>
+ <pt x="sx6" y="sy4" />
+ </lnTo>
+ <lnTo>
+ <pt x="x4" y="y3" />
+ </lnTo>
+ <lnTo>
+ <pt x="sx5" y="sy5" />
+ </lnTo>
+ <lnTo>
+ <pt x="x3" y="y4" />
+ </lnTo>
+ <lnTo>
+ <pt x="sx4" y="sy6" />
+ </lnTo>
+ <lnTo>
+ <pt x="hc" y="b" />
+ </lnTo>
+ <lnTo>
+ <pt x="sx3" y="sy6" />
+ </lnTo>
+ <lnTo>
+ <pt x="wd4" y="y4" />
+ </lnTo>
+ <lnTo>
+ <pt x="sx2" y="sy5" />
+ </lnTo>
+ <lnTo>
+ <pt x="x1" y="y3" />
+ </lnTo>
+ <lnTo>
+ <pt x="sx1" y="sy4" />
+ </lnTo>
+ <close />
+ </path>
+ </pathLst>
+
+ </star12>
+ <star16>
+ <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="adj" fmla="val 37500" />
+ </avLst>
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="a" fmla="pin 0 adj 50000" />
+ <gd name="dx1" fmla="*/ wd2 92388 100000" />
+ <gd name="dx2" fmla="*/ wd2 70711 100000" />
+ <gd name="dx3" fmla="*/ wd2 38268 100000" />
+ <gd name="dy1" fmla="*/ hd2 92388 100000" />
+ <gd name="dy2" fmla="*/ hd2 70711 100000" />
+ <gd name="dy3" fmla="*/ hd2 38268 100000" />
+ <gd name="x1" fmla="+- hc 0 dx1" />
+ <gd name="x2" fmla="+- hc 0 dx2" />
+ <gd name="x3" fmla="+- hc 0 dx3" />
+ <gd name="x4" fmla="+- hc dx3 0" />
+ <gd name="x5" fmla="+- hc dx2 0" />
+ <gd name="x6" fmla="+- hc dx1 0" />
+ <gd name="y1" fmla="+- vc 0 dy1" />
+ <gd name="y2" fmla="+- vc 0 dy2" />
+ <gd name="y3" fmla="+- vc 0 dy3" />
+ <gd name="y4" fmla="+- vc dy3 0" />
+ <gd name="y5" fmla="+- vc dy2 0" />
+ <gd name="y6" fmla="+- vc dy1 0" />
+ <gd name="iwd2" fmla="*/ wd2 a 50000" />
+ <gd name="ihd2" fmla="*/ hd2 a 50000" />
+ <gd name="sdx1" fmla="*/ iwd2 98079 100000" />
+ <gd name="sdx2" fmla="*/ iwd2 83147 100000" />
+ <gd name="sdx3" fmla="*/ iwd2 55557 100000" />
+ <gd name="sdx4" fmla="*/ iwd2 19509 100000" />
+ <gd name="sdy1" fmla="*/ ihd2 98079 100000" />
+ <gd name="sdy2" fmla="*/ ihd2 83147 100000" />
+ <gd name="sdy3" fmla="*/ ihd2 55557 100000" />
+ <gd name="sdy4" fmla="*/ ihd2 19509 100000" />
+ <gd name="sx1" fmla="+- hc 0 sdx1" />
+ <gd name="sx2" fmla="+- hc 0 sdx2" />
+ <gd name="sx3" fmla="+- hc 0 sdx3" />
+ <gd name="sx4" fmla="+- hc 0 sdx4" />
+ <gd name="sx5" fmla="+- hc sdx4 0" />
+ <gd name="sx6" fmla="+- hc sdx3 0" />
+ <gd name="sx7" fmla="+- hc sdx2 0" />
+ <gd name="sx8" fmla="+- hc sdx1 0" />
+ <gd name="sy1" fmla="+- vc 0 sdy1" />
+ <gd name="sy2" fmla="+- vc 0 sdy2" />
+ <gd name="sy3" fmla="+- vc 0 sdy3" />
+ <gd name="sy4" fmla="+- vc 0 sdy4" />
+ <gd name="sy5" fmla="+- vc sdy4 0" />
+ <gd name="sy6" fmla="+- vc sdy3 0" />
+ <gd name="sy7" fmla="+- vc sdy2 0" />
+ <gd name="sy8" fmla="+- vc sdy1 0" />
+ <gd name="idx" fmla="cos iwd2 2700000" />
+ <gd name="idy" fmla="sin ihd2 2700000" />
+ <gd name="il" fmla="+- hc 0 idx" />
+ <gd name="it" fmla="+- vc 0 idy" />
+ <gd name="ir" fmla="+- hc idx 0" />
+ <gd name="ib" fmla="+- vc idy 0" />
+ <gd name="yAdj" fmla="+- vc 0 ihd2" />
+ </gdLst>
+ <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <ahXY gdRefY="adj" minY="0" maxY="50000">
+ <pos x="hc" y="yAdj" />
+ </ahXY>
+ </ahLst>
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="0">
+ <pos x="x5" y="y2" />
+ </cxn>
+ <cxn ang="0">
+ <pos x="x6" y="y3" />
+ </cxn>
+ <cxn ang="0">
+ <pos x="r" y="vc" />
+ </cxn>
+ <cxn ang="0">
+ <pos x="x6" y="y4" />
+ </cxn>
+ <cxn ang="0">
+ <pos x="x5" y="y5" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="x4" y="y6" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="hc" y="b" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="x3" y="y6" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="x2" y="y5" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="x1" y="y4" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="l" y="vc" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="x1" y="y3" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="x2" y="y2" />
+ </cxn>
+ <cxn ang="3cd4">
+ <pos x="x3" y="y1" />
+ </cxn>
+ <cxn ang="3cd4">
+ <pos x="hc" y="t" />
+ </cxn>
+ <cxn ang="3cd4">
+ <pos x="x4" y="y1" />
+ </cxn>
+ </cxnLst>
+ <rect l="il" t="it" r="ir" b="ib" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path>
+ <moveTo>
+ <pt x="l" y="vc" />
+ </moveTo>
+ <lnTo>
+ <pt x="sx1" y="sy4" />
+ </lnTo>
+ <lnTo>
+ <pt x="x1" y="y3" />
+ </lnTo>
+ <lnTo>
+ <pt x="sx2" y="sy3" />
+ </lnTo>
+ <lnTo>
+ <pt x="x2" y="y2" />
+ </lnTo>
+ <lnTo>
+ <pt x="sx3" y="sy2" />
+ </lnTo>
+ <lnTo>
+ <pt x="x3" y="y1" />
+ </lnTo>
+ <lnTo>
+ <pt x="sx4" y="sy1" />
+ </lnTo>
+ <lnTo>
+ <pt x="hc" y="t" />
+ </lnTo>
+ <lnTo>
+ <pt x="sx5" y="sy1" />
+ </lnTo>
+ <lnTo>
+ <pt x="x4" y="y1" />
+ </lnTo>
+ <lnTo>
+ <pt x="sx6" y="sy2" />
+ </lnTo>
+ <lnTo>
+ <pt x="x5" y="y2" />
+ </lnTo>
+ <lnTo>
+ <pt x="sx7" y="sy3" />
+ </lnTo>
+ <lnTo>
+ <pt x="x6" y="y3" />
+ </lnTo>
+ <lnTo>
+ <pt x="sx8" y="sy4" />
+ </lnTo>
+ <lnTo>
+ <pt x="r" y="vc" />
+ </lnTo>
+ <lnTo>
+ <pt x="sx8" y="sy5" />
+ </lnTo>
+ <lnTo>
+ <pt x="x6" y="y4" />
+ </lnTo>
+ <lnTo>
+ <pt x="sx7" y="sy6" />
+ </lnTo>
+ <lnTo>
+ <pt x="x5" y="y5" />
+ </lnTo>
+ <lnTo>
+ <pt x="sx6" y="sy7" />
+ </lnTo>
+ <lnTo>
+ <pt x="x4" y="y6" />
+ </lnTo>
+ <lnTo>
+ <pt x="sx5" y="sy8" />
+ </lnTo>
+ <lnTo>
+ <pt x="hc" y="b" />
+ </lnTo>
+ <lnTo>
+ <pt x="sx4" y="sy8" />
+ </lnTo>
+ <lnTo>
+ <pt x="x3" y="y6" />
+ </lnTo>
+ <lnTo>
+ <pt x="sx3" y="sy7" />
+ </lnTo>
+ <lnTo>
+ <pt x="x2" y="y5" />
+ </lnTo>
+ <lnTo>
+ <pt x="sx2" y="sy6" />
+ </lnTo>
+ <lnTo>
+ <pt x="x1" y="y4" />
+ </lnTo>
+ <lnTo>
+ <pt x="sx1" y="sy5" />
+ </lnTo>
+ <close />
+ </path>
+ </pathLst>
+ </star16>
+ <star24>
+
+ <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="adj" fmla="val 37500" />
+ </avLst>
+
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="a" fmla="pin 0 adj 50000" />
+ <gd name="dx1" fmla="cos wd2 900000" />
+ <gd name="dx2" fmla="cos wd2 1800000" />
+ <gd name="dx3" fmla="cos wd2 2700000" />
+ <gd name="dx4" fmla="val wd4" />
+ <gd name="dx5" fmla="cos wd2 4500000" />
+ <gd name="dy1" fmla="sin hd2 4500000" />
+ <gd name="dy2" fmla="sin hd2 3600000" />
+ <gd name="dy3" fmla="sin hd2 2700000" />
+ <gd name="dy4" fmla="val hd4" />
+ <gd name="dy5" fmla="sin hd2 900000" />
+ <gd name="x1" fmla="+- hc 0 dx1" />
+ <gd name="x2" fmla="+- hc 0 dx2" />
+ <gd name="x3" fmla="+- hc 0 dx3" />
+ <gd name="x4" fmla="+- hc 0 dx4" />
+ <gd name="x5" fmla="+- hc 0 dx5" />
+ <gd name="x6" fmla="+- hc dx5 0" />
+ <gd name="x7" fmla="+- hc dx4 0" />
+ <gd name="x8" fmla="+- hc dx3 0" />
+ <gd name="x9" fmla="+- hc dx2 0" />
+ <gd name="x10" fmla="+- hc dx1 0" />
+ <gd name="y1" fmla="+- vc 0 dy1" />
+ <gd name="y2" fmla="+- vc 0 dy2" />
+ <gd name="y3" fmla="+- vc 0 dy3" />
+ <gd name="y4" fmla="+- vc 0 dy4" />
+ <gd name="y5" fmla="+- vc 0 dy5" />
+ <gd name="y6" fmla="+- vc dy5 0" />
+ <gd name="y7" fmla="+- vc dy4 0" />
+ <gd name="y8" fmla="+- vc dy3 0" />
+ <gd name="y9" fmla="+- vc dy2 0" />
+ <gd name="y10" fmla="+- vc dy1 0" />
+ <gd name="iwd2" fmla="*/ wd2 a 50000" />
+ <gd name="ihd2" fmla="*/ hd2 a 50000" />
+ <gd name="sdx1" fmla="*/ iwd2 99144 100000" />
+ <gd name="sdx2" fmla="*/ iwd2 92388 100000" />
+ <gd name="sdx3" fmla="*/ iwd2 79335 100000" />
+ <gd name="sdx4" fmla="*/ iwd2 60876 100000" />
+ <gd name="sdx5" fmla="*/ iwd2 38268 100000" />
+ <gd name="sdx6" fmla="*/ iwd2 13053 100000" />
+ <gd name="sdy1" fmla="*/ ihd2 99144 100000" />
+ <gd name="sdy2" fmla="*/ ihd2 92388 100000" />
+ <gd name="sdy3" fmla="*/ ihd2 79335 100000" />
+ <gd name="sdy4" fmla="*/ ihd2 60876 100000" />
+ <gd name="sdy5" fmla="*/ ihd2 38268 100000" />
+ <gd name="sdy6" fmla="*/ ihd2 13053 100000" />
+ <gd name="sx1" fmla="+- hc 0 sdx1" />
+ <gd name="sx2" fmla="+- hc 0 sdx2" />
+ <gd name="sx3" fmla="+- hc 0 sdx3" />
+ <gd name="sx4" fmla="+- hc 0 sdx4" />
+ <gd name="sx5" fmla="+- hc 0 sdx5" />
+ <gd name="sx6" fmla="+- hc 0 sdx6" />
+ <gd name="sx7" fmla="+- hc sdx6 0" />
+ <gd name="sx8" fmla="+- hc sdx5 0" />
+ <gd name="sx9" fmla="+- hc sdx4 0" />
+ <gd name="sx10" fmla="+- hc sdx3 0" />
+ <gd name="sx11" fmla="+- hc sdx2 0" />
+ <gd name="sx12" fmla="+- hc sdx1 0" />
+ <gd name="sy1" fmla="+- vc 0 sdy1" />
+ <gd name="sy2" fmla="+- vc 0 sdy2" />
+ <gd name="sy3" fmla="+- vc 0 sdy3" />
+ <gd name="sy4" fmla="+- vc 0 sdy4" />
+ <gd name="sy5" fmla="+- vc 0 sdy5" />
+ <gd name="sy6" fmla="+- vc 0 sdy6" />
+ <gd name="sy7" fmla="+- vc sdy6 0" />
+ <gd name="sy8" fmla="+- vc sdy5 0" />
+ <gd name="sy9" fmla="+- vc sdy4 0" />
+ <gd name="sy10" fmla="+- vc sdy3 0" />
+ <gd name="sy11" fmla="+- vc sdy2 0" />
+ <gd name="sy12" fmla="+- vc sdy1 0" />
+ <gd name="idx" fmla="cos iwd2 2700000" />
+ <gd name="idy" fmla="sin ihd2 2700000" />
+ <gd name="il" fmla="+- hc 0 idx" />
+ <gd name="it" fmla="+- vc 0 idy" />
+ <gd name="ir" fmla="+- hc idx 0" />
+ <gd name="ib" fmla="+- vc idy 0" />
+ <gd name="yAdj" fmla="+- vc 0 ihd2" />
+ </gdLst>
+
+ <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <ahXY gdRefY="adj" minY="0" maxY="50000">
+ <pos x="hc" y="yAdj" />
+ </ahXY>
+ </ahLst>
+
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="3cd4">
+ <pos x="hc" y="t" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="l" y="vc" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="hc" y="b" />
+ </cxn>
+ <cxn ang="0">
+ <pos x="r" y="vc" />
+ </cxn>
+ </cxnLst>
+
+ <rect l="il" t="it" r="ir" b="ib" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path>
+ <moveTo>
+ <pt x="l" y="vc" />
+ </moveTo>
+ <lnTo>
+ <pt x="sx1" y="sy6" />
+ </lnTo>
+ <lnTo>
+ <pt x="x1" y="y5" />
+ </lnTo>
+ <lnTo>
+ <pt x="sx2" y="sy5" />
+ </lnTo>
+ <lnTo>
+ <pt x="x2" y="y4" />
+ </lnTo>
+ <lnTo>
+ <pt x="sx3" y="sy4" />
+ </lnTo>
+ <lnTo>
+ <pt x="x3" y="y3" />
+ </lnTo>
+ <lnTo>
+ <pt x="sx4" y="sy3" />
+ </lnTo>
+ <lnTo>
+ <pt x="x4" y="y2" />
+ </lnTo>
+ <lnTo>
+ <pt x="sx5" y="sy2" />
+ </lnTo>
+ <lnTo>
+ <pt x="x5" y="y1" />
+ </lnTo>
+ <lnTo>
+ <pt x="sx6" y="sy1" />
+ </lnTo>
+ <lnTo>
+ <pt x="hc" y="t" />
+ </lnTo>
+ <lnTo>
+ <pt x="sx7" y="sy1" />
+ </lnTo>
+ <lnTo>
+ <pt x="x6" y="y1" />
+ </lnTo>
+ <lnTo>
+ <pt x="sx8" y="sy2" />
+ </lnTo>
+ <lnTo>
+ <pt x="x7" y="y2" />
+ </lnTo>
+ <lnTo>
+ <pt x="sx9" y="sy3" />
+ </lnTo>
+ <lnTo>
+ <pt x="x8" y="y3" />
+ </lnTo>
+ <lnTo>
+ <pt x="sx10" y="sy4" />
+ </lnTo>
+ <lnTo>
+ <pt x="x9" y="y4" />
+ </lnTo>
+ <lnTo>
+ <pt x="sx11" y="sy5" />
+ </lnTo>
+ <lnTo>
+ <pt x="x10" y="y5" />
+ </lnTo>
+ <lnTo>
+ <pt x="sx12" y="sy6" />
+ </lnTo>
+ <lnTo>
+ <pt x="r" y="vc" />
+ </lnTo>
+ <lnTo>
+ <pt x="sx12" y="sy7" />
+ </lnTo>
+ <lnTo>
+ <pt x="x10" y="y6" />
+ </lnTo>
+ <lnTo>
+ <pt x="sx11" y="sy8" />
+ </lnTo>
+ <lnTo>
+ <pt x="x9" y="y7" />
+ </lnTo>
+ <lnTo>
+ <pt x="sx10" y="sy9" />
+ </lnTo>
+ <lnTo>
+ <pt x="x8" y="y8" />
+ </lnTo>
+ <lnTo>
+ <pt x="sx9" y="sy10" />
+ </lnTo>
+ <lnTo>
+ <pt x="x7" y="y9" />
+ </lnTo>
+ <lnTo>
+ <pt x="sx8" y="sy11" />
+ </lnTo>
+ <lnTo>
+ <pt x="x6" y="y10" />
+ </lnTo>
+ <lnTo>
+ <pt x="sx7" y="sy12" />
+ </lnTo>
+ <lnTo>
+ <pt x="hc" y="b" />
+ </lnTo>
+ <lnTo>
+ <pt x="sx6" y="sy12" />
+ </lnTo>
+ <lnTo>
+ <pt x="x5" y="y10" />
+ </lnTo>
+ <lnTo>
+ <pt x="sx5" y="sy11" />
+ </lnTo>
+ <lnTo>
+ <pt x="x4" y="y9" />
+ </lnTo>
+ <lnTo>
+ <pt x="sx4" y="sy10" />
+ </lnTo>
+ <lnTo>
+ <pt x="x3" y="y8" />
+ </lnTo>
+ <lnTo>
+ <pt x="sx3" y="sy9" />
+ </lnTo>
+ <lnTo>
+ <pt x="x2" y="y7" />
+ </lnTo>
+ <lnTo>
+ <pt x="sx2" y="sy8" />
+ </lnTo>
+ <lnTo>
+ <pt x="x1" y="y6" />
+ </lnTo>
+ <lnTo>
+ <pt x="sx1" y="sy7" />
+ </lnTo>
+ <close />
+ </path>
+ </pathLst>
+
+ </star24>
+ <star32>
+
+ <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="adj" fmla="val 37500" />
+ </avLst>
+
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="a" fmla="pin 0 adj 50000" />
+ <gd name="dx1" fmla="*/ wd2 98079 100000" />
+ <gd name="dx2" fmla="*/ wd2 92388 100000" />
+ <gd name="dx3" fmla="*/ wd2 83147 100000" />
+ <gd name="dx4" fmla="cos wd2 2700000" />
+ <gd name="dx5" fmla="*/ wd2 55557 100000" />
+ <gd name="dx6" fmla="*/ wd2 38268 100000" />
+ <gd name="dx7" fmla="*/ wd2 19509 100000" />
+ <gd name="dy1" fmla="*/ hd2 98079 100000" />
+ <gd name="dy2" fmla="*/ hd2 92388 100000" />
+ <gd name="dy3" fmla="*/ hd2 83147 100000" />
+ <gd name="dy4" fmla="sin hd2 2700000" />
+ <gd name="dy5" fmla="*/ hd2 55557 100000" />
+ <gd name="dy6" fmla="*/ hd2 38268 100000" />
+ <gd name="dy7" fmla="*/ hd2 19509 100000" />
+ <gd name="x1" fmla="+- hc 0 dx1" />
+ <gd name="x2" fmla="+- hc 0 dx2" />
+ <gd name="x3" fmla="+- hc 0 dx3" />
+ <gd name="x4" fmla="+- hc 0 dx4" />
+ <gd name="x5" fmla="+- hc 0 dx5" />
+ <gd name="x6" fmla="+- hc 0 dx6" />
+ <gd name="x7" fmla="+- hc 0 dx7" />
+ <gd name="x8" fmla="+- hc dx7 0" />
+ <gd name="x9" fmla="+- hc dx6 0" />
+ <gd name="x10" fmla="+- hc dx5 0" />
+ <gd name="x11" fmla="+- hc dx4 0" />
+ <gd name="x12" fmla="+- hc dx3 0" />
+ <gd name="x13" fmla="+- hc dx2 0" />
+ <gd name="x14" fmla="+- hc dx1 0" />
+ <gd name="y1" fmla="+- vc 0 dy1" />
+ <gd name="y2" fmla="+- vc 0 dy2" />
+ <gd name="y3" fmla="+- vc 0 dy3" />
+ <gd name="y4" fmla="+- vc 0 dy4" />
+ <gd name="y5" fmla="+- vc 0 dy5" />
+ <gd name="y6" fmla="+- vc 0 dy6" />
+ <gd name="y7" fmla="+- vc 0 dy7" />
+ <gd name="y8" fmla="+- vc dy7 0" />
+ <gd name="y9" fmla="+- vc dy6 0" />
+ <gd name="y10" fmla="+- vc dy5 0" />
+ <gd name="y11" fmla="+- vc dy4 0" />
+ <gd name="y12" fmla="+- vc dy3 0" />
+ <gd name="y13" fmla="+- vc dy2 0" />
+ <gd name="y14" fmla="+- vc dy1 0" />
+ <gd name="iwd2" fmla="*/ wd2 a 50000" />
+ <gd name="ihd2" fmla="*/ hd2 a 50000" />
+ <gd name="sdx1" fmla="*/ iwd2 99518 100000" />
+ <gd name="sdx2" fmla="*/ iwd2 95694 100000" />
+ <gd name="sdx3" fmla="*/ iwd2 88192 100000" />
+ <gd name="sdx4" fmla="*/ iwd2 77301 100000" />
+ <gd name="sdx5" fmla="*/ iwd2 63439 100000" />
+ <gd name="sdx6" fmla="*/ iwd2 47140 100000" />
+ <gd name="sdx7" fmla="*/ iwd2 29028 100000" />
+ <gd name="sdx8" fmla="*/ iwd2 9802 100000" />
+ <gd name="sdy1" fmla="*/ ihd2 99518 100000" />
+ <gd name="sdy2" fmla="*/ ihd2 95694 100000" />
+ <gd name="sdy3" fmla="*/ ihd2 88192 100000" />
+ <gd name="sdy4" fmla="*/ ihd2 77301 100000" />
+ <gd name="sdy5" fmla="*/ ihd2 63439 100000" />
+ <gd name="sdy6" fmla="*/ ihd2 47140 100000" />
+ <gd name="sdy7" fmla="*/ ihd2 29028 100000" />
+ <gd name="sdy8" fmla="*/ ihd2 9802 100000" />
+ <gd name="sx1" fmla="+- hc 0 sdx1" />
+ <gd name="sx2" fmla="+- hc 0 sdx2" />
+ <gd name="sx3" fmla="+- hc 0 sdx3" />
+ <gd name="sx4" fmla="+- hc 0 sdx4" />
+ <gd name="sx5" fmla="+- hc 0 sdx5" />
+ <gd name="sx6" fmla="+- hc 0 sdx6" />
+ <gd name="sx7" fmla="+- hc 0 sdx7" />
+ <gd name="sx8" fmla="+- hc 0 sdx8" />
+ <gd name="sx9" fmla="+- hc sdx8 0" />
+ <gd name="sx10" fmla="+- hc sdx7 0" />
+ <gd name="sx11" fmla="+- hc sdx6 0" />
+ <gd name="sx12" fmla="+- hc sdx5 0" />
+ <gd name="sx13" fmla="+- hc sdx4 0" />
+ <gd name="sx14" fmla="+- hc sdx3 0" />
+ <gd name="sx15" fmla="+- hc sdx2 0" />
+ <gd name="sx16" fmla="+- hc sdx1 0" />
+ <gd name="sy1" fmla="+- vc 0 sdy1" />
+ <gd name="sy2" fmla="+- vc 0 sdy2" />
+ <gd name="sy3" fmla="+- vc 0 sdy3" />
+ <gd name="sy4" fmla="+- vc 0 sdy4" />
+ <gd name="sy5" fmla="+- vc 0 sdy5" />
+ <gd name="sy6" fmla="+- vc 0 sdy6" />
+ <gd name="sy7" fmla="+- vc 0 sdy7" />
+ <gd name="sy8" fmla="+- vc 0 sdy8" />
+ <gd name="sy9" fmla="+- vc sdy8 0" />
+ <gd name="sy10" fmla="+- vc sdy7 0" />
+ <gd name="sy11" fmla="+- vc sdy6 0" />
+ <gd name="sy12" fmla="+- vc sdy5 0" />
+ <gd name="sy13" fmla="+- vc sdy4 0" />
+ <gd name="sy14" fmla="+- vc sdy3 0" />
+ <gd name="sy15" fmla="+- vc sdy2 0" />
+ <gd name="sy16" fmla="+- vc sdy1 0" />
+ <gd name="idx" fmla="cos iwd2 2700000" />
+ <gd name="idy" fmla="sin ihd2 2700000" />
+ <gd name="il" fmla="+- hc 0 idx" />
+ <gd name="it" fmla="+- vc 0 idy" />
+ <gd name="ir" fmla="+- hc idx 0" />
+ <gd name="ib" fmla="+- vc idy 0" />
+ <gd name="yAdj" fmla="+- vc 0 ihd2" />
+ </gdLst>
+
+ <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <ahXY gdRefY="adj" minY="0" maxY="50000">
+ <pos x="hc" y="yAdj" />
+ </ahXY>
+ </ahLst>
+
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="3cd4">
+ <pos x="hc" y="t" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="l" y="vc" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="hc" y="b" />
+ </cxn>
+ <cxn ang="0">
+ <pos x="r" y="vc" />
+ </cxn>
+ </cxnLst>
+
+ <rect l="il" t="it" r="ir" b="ib" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path>
+ <moveTo>
+ <pt x="l" y="vc" />
+ </moveTo>
+ <lnTo>
+ <pt x="sx1" y="sy8" />
+ </lnTo>
+ <lnTo>
+ <pt x="x1" y="y7" />
+ </lnTo>
+ <lnTo>
+ <pt x="sx2" y="sy7" />
+ </lnTo>
+ <lnTo>
+ <pt x="x2" y="y6" />
+ </lnTo>
+ <lnTo>
+ <pt x="sx3" y="sy6" />
+ </lnTo>
+ <lnTo>
+ <pt x="x3" y="y5" />
+ </lnTo>
+ <lnTo>
+ <pt x="sx4" y="sy5" />
+ </lnTo>
+ <lnTo>
+ <pt x="x4" y="y4" />
+ </lnTo>
+ <lnTo>
+ <pt x="sx5" y="sy4" />
+ </lnTo>
+ <lnTo>
+ <pt x="x5" y="y3" />
+ </lnTo>
+ <lnTo>
+ <pt x="sx6" y="sy3" />
+ </lnTo>
+ <lnTo>
+ <pt x="x6" y="y2" />
+ </lnTo>
+ <lnTo>
+ <pt x="sx7" y="sy2" />
+ </lnTo>
+ <lnTo>
+ <pt x="x7" y="y1" />
+ </lnTo>
+ <lnTo>
+ <pt x="sx8" y="sy1" />
+ </lnTo>
+ <lnTo>
+ <pt x="hc" y="t" />
+ </lnTo>
+ <lnTo>
+ <pt x="sx9" y="sy1" />
+ </lnTo>
+ <lnTo>
+ <pt x="x8" y="y1" />
+ </lnTo>
+ <lnTo>
+ <pt x="sx10" y="sy2" />
+ </lnTo>
+ <lnTo>
+ <pt x="x9" y="y2" />
+ </lnTo>
+ <lnTo>
+ <pt x="sx11" y="sy3" />
+ </lnTo>
+ <lnTo>
+ <pt x="x10" y="y3" />
+ </lnTo>
+ <lnTo>
+ <pt x="sx12" y="sy4" />
+ </lnTo>
+ <lnTo>
+ <pt x="x11" y="y4" />
+ </lnTo>
+ <lnTo>
+ <pt x="sx13" y="sy5" />
+ </lnTo>
+ <lnTo>
+ <pt x="x12" y="y5" />
+ </lnTo>
+ <lnTo>
+ <pt x="sx14" y="sy6" />
+ </lnTo>
+ <lnTo>
+ <pt x="x13" y="y6" />
+ </lnTo>
+ <lnTo>
+ <pt x="sx15" y="sy7" />
+ </lnTo>
+ <lnTo>
+ <pt x="x14" y="y7" />
+ </lnTo>
+ <lnTo>
+ <pt x="sx16" y="sy8" />
+ </lnTo>
+ <lnTo>
+ <pt x="r" y="vc" />
+ </lnTo>
+ <lnTo>
+ <pt x="sx16" y="sy9" />
+ </lnTo>
+ <lnTo>
+ <pt x="x14" y="y8" />
+ </lnTo>
+ <lnTo>
+ <pt x="sx15" y="sy10" />
+ </lnTo>
+ <lnTo>
+ <pt x="x13" y="y9" />
+ </lnTo>
+ <lnTo>
+ <pt x="sx14" y="sy11" />
+ </lnTo>
+ <lnTo>
+ <pt x="x12" y="y10" />
+ </lnTo>
+ <lnTo>
+ <pt x="sx13" y="sy12" />
+ </lnTo>
+ <lnTo>
+ <pt x="x11" y="y11" />
+ </lnTo>
+ <lnTo>
+ <pt x="sx12" y="sy13" />
+ </lnTo>
+ <lnTo>
+ <pt x="x10" y="y12" />
+ </lnTo>
+ <lnTo>
+ <pt x="sx11" y="sy14" />
+ </lnTo>
+ <lnTo>
+ <pt x="x9" y="y13" />
+ </lnTo>
+ <lnTo>
+ <pt x="sx10" y="sy15" />
+ </lnTo>
+ <lnTo>
+ <pt x="x8" y="y14" />
+ </lnTo>
+ <lnTo>
+ <pt x="sx9" y="sy16" />
+ </lnTo>
+ <lnTo>
+ <pt x="hc" y="b" />
+ </lnTo>
+ <lnTo>
+ <pt x="sx8" y="sy16" />
+ </lnTo>
+ <lnTo>
+ <pt x="x7" y="y14" />
+ </lnTo>
+ <lnTo>
+ <pt x="sx7" y="sy15" />
+ </lnTo>
+ <lnTo>
+ <pt x="x6" y="y13" />
+ </lnTo>
+ <lnTo>
+ <pt x="sx6" y="sy14" />
+ </lnTo>
+ <lnTo>
+ <pt x="x5" y="y12" />
+ </lnTo>
+ <lnTo>
+ <pt x="sx5" y="sy13" />
+ </lnTo>
+ <lnTo>
+ <pt x="x4" y="y11" />
+ </lnTo>
+ <lnTo>
+ <pt x="sx4" y="sy12" />
+ </lnTo>
+ <lnTo>
+ <pt x="x3" y="y10" />
+ </lnTo>
+ <lnTo>
+ <pt x="sx3" y="sy11" />
+ </lnTo>
+ <lnTo>
+ <pt x="x2" y="y9" />
+ </lnTo>
+ <lnTo>
+ <pt x="sx2" y="sy10" />
+ </lnTo>
+ <lnTo>
+ <pt x="x1" y="y8" />
+ </lnTo>
+ <lnTo>
+ <pt x="sx1" y="sy9" />
+ </lnTo>
+ <close />
+ </path>
+ </pathLst>
+
+ </star32>
+ <star4>
+
+ <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="adj" fmla="val 12500" />
+ </avLst>
+
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="a" fmla="pin 0 adj 50000" />
+ <gd name="iwd2" fmla="*/ wd2 a 50000" />
+ <gd name="ihd2" fmla="*/ hd2 a 50000" />
+ <gd name="sdx" fmla="cos iwd2 2700000" />
+ <gd name="sdy" fmla="sin ihd2 2700000" />
+ <gd name="sx1" fmla="+- hc 0 sdx" />
+ <gd name="sx2" fmla="+- hc sdx 0" />
+ <gd name="sy1" fmla="+- vc 0 sdy" />
+ <gd name="sy2" fmla="+- vc sdy 0" />
+ <gd name="yAdj" fmla="+- vc 0 ihd2" />
+ </gdLst>
+
+ <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <ahXY gdRefY="adj" minY="0" maxY="50000">
+ <pos x="hc" y="yAdj" />
+ </ahXY>
+ </ahLst>
+
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="3cd4">
+ <pos x="hc" y="t" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="l" y="vc" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="hc" y="b" />
+ </cxn>
+ <cxn ang="0">
+ <pos x="r" y="vc" />
+ </cxn>
+ </cxnLst>
+
+ <rect l="sx1" t="sy1" r="sx2" b="sy2" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path>
+ <moveTo>
+ <pt x="l" y="vc" />
+ </moveTo>
+ <lnTo>
+ <pt x="sx1" y="sy1" />
+ </lnTo>
+ <lnTo>
+ <pt x="hc" y="t" />
+ </lnTo>
+ <lnTo>
+ <pt x="sx2" y="sy1" />
+ </lnTo>
+ <lnTo>
+ <pt x="r" y="vc" />
+ </lnTo>
+ <lnTo>
+ <pt x="sx2" y="sy2" />
+ </lnTo>
+ <lnTo>
+ <pt x="hc" y="b" />
+ </lnTo>
+ <lnTo>
+ <pt x="sx1" y="sy2" />
+ </lnTo>
+ <close />
+ </path>
+ </pathLst>
+
+ </star4>
+ <star5>
+ <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="adj" fmla="val 19098" />
+ <gd name="hf" fmla="val 105146" />
+ <gd name="vf" fmla="val 110557" />
+ </avLst>
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="a" fmla="pin 0 adj 50000" />
+ <gd name="swd2" fmla="*/ wd2 hf 100000" />
+ <gd name="shd2" fmla="*/ hd2 vf 100000" />
+ <gd name="svc" fmla="*/ vc vf 100000" />
+ <gd name="dx1" fmla="cos swd2 1080000" />
+ <gd name="dx2" fmla="cos swd2 18360000" />
+ <gd name="dy1" fmla="sin shd2 1080000" />
+ <gd name="dy2" fmla="sin shd2 18360000" />
+ <gd name="x1" fmla="+- hc 0 dx1" />
+ <gd name="x2" fmla="+- hc 0 dx2" />
+ <gd name="x3" fmla="+- hc dx2 0" />
+ <gd name="x4" fmla="+- hc dx1 0" />
+ <gd name="y1" fmla="+- svc 0 dy1" />
+ <gd name="y2" fmla="+- svc 0 dy2" />
+ <gd name="iwd2" fmla="*/ swd2 a 50000" />
+ <gd name="ihd2" fmla="*/ shd2 a 50000" />
+ <gd name="sdx1" fmla="cos iwd2 20520000" />
+ <gd name="sdx2" fmla="cos iwd2 3240000" />
+ <gd name="sdy1" fmla="sin ihd2 3240000" />
+ <gd name="sdy2" fmla="sin ihd2 20520000" />
+ <gd name="sx1" fmla="+- hc 0 sdx1" />
+ <gd name="sx2" fmla="+- hc 0 sdx2" />
+ <gd name="sx3" fmla="+- hc sdx2 0" />
+ <gd name="sx4" fmla="+- hc sdx1 0" />
+ <gd name="sy1" fmla="+- svc 0 sdy1" />
+ <gd name="sy2" fmla="+- svc 0 sdy2" />
+ <gd name="sy3" fmla="+- svc ihd2 0" />
+ <gd name="yAdj" fmla="+- svc 0 ihd2" />
+ </gdLst>
+ <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <ahXY gdRefY="adj" minY="0" maxY="50000">
+ <pos x="hc" y="yAdj" />
+ </ahXY>
+ </ahLst>
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="3cd4">
+ <pos x="hc" y="t" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="x1" y="y1" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="x2" y="y2" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="x3" y="y2" />
+ </cxn>
+ <cxn ang="0">
+ <pos x="x4" y="y1" />
+ </cxn>
+ </cxnLst>
+ <rect l="sx1" t="sy1" r="sx4" b="sy3" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path>
+ <moveTo>
+ <pt x="x1" y="y1" />
+ </moveTo>
+ <lnTo>
+ <pt x="sx2" y="sy1" />
+ </lnTo>
+ <lnTo>
+ <pt x="hc" y="t" />
+ </lnTo>
+ <lnTo>
+ <pt x="sx3" y="sy1" />
+ </lnTo>
+ <lnTo>
+ <pt x="x4" y="y1" />
+ </lnTo>
+ <lnTo>
+ <pt x="sx4" y="sy2" />
+ </lnTo>
+ <lnTo>
+ <pt x="x3" y="y2" />
+ </lnTo>
+ <lnTo>
+ <pt x="hc" y="sy3" />
+ </lnTo>
+ <lnTo>
+ <pt x="x2" y="y2" />
+ </lnTo>
+ <lnTo>
+ <pt x="sx1" y="sy2" />
+ </lnTo>
+ <close />
+ </path>
+ </pathLst>
+ </star5>
+ <star6>
+
+ <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="adj" fmla="val 28868" />
+ <gd name="hf" fmla="val 115470" />
+ </avLst>
+
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="a" fmla="pin 0 adj 50000" />
+ <gd name="swd2" fmla="*/ wd2 hf 100000" />
+ <gd name="dx1" fmla="cos swd2 1800000" />
+ <gd name="x1" fmla="+- hc 0 dx1" />
+ <gd name="x2" fmla="+- hc dx1 0" />
+ <gd name="y2" fmla="+- vc hd4 0" />
+ <gd name="iwd2" fmla="*/ swd2 a 50000" />
+ <gd name="ihd2" fmla="*/ hd2 a 50000" />
+ <gd name="sdx2" fmla="*/ iwd2 1 2" />
+ <gd name="sx1" fmla="+- hc 0 iwd2" />
+ <gd name="sx2" fmla="+- hc 0 sdx2" />
+ <gd name="sx3" fmla="+- hc sdx2 0" />
+ <gd name="sx4" fmla="+- hc iwd2 0" />
+ <gd name="sdy1" fmla="sin ihd2 3600000" />
+ <gd name="sy1" fmla="+- vc 0 sdy1" />
+ <gd name="sy2" fmla="+- vc sdy1 0" />
+ <gd name="yAdj" fmla="+- vc 0 ihd2" />
+ </gdLst>
+
+ <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <ahXY gdRefY="adj" minY="0" maxY="50000">
+ <pos x="hc" y="yAdj" />
+ </ahXY>
+ </ahLst>
+
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="0">
+ <pos x="x2" y="hd4" />
+ </cxn>
+ <cxn ang="0">
+ <pos x="x2" y="y2" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="hc" y="b" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="x1" y="y2" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="x1" y="hd4" />
+ </cxn>
+ <cxn ang="3cd4">
+ <pos x="hc" y="t" />
+ </cxn>
+ </cxnLst>
+
+ <rect l="sx1" t="sy1" r="sx4" b="sy2" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path>
+ <moveTo>
+ <pt x="x1" y="hd4" />
+ </moveTo>
+ <lnTo>
+ <pt x="sx2" y="sy1" />
+ </lnTo>
+ <lnTo>
+ <pt x="hc" y="t" />
+ </lnTo>
+ <lnTo>
+ <pt x="sx3" y="sy1" />
+ </lnTo>
+ <lnTo>
+ <pt x="x2" y="hd4" />
+ </lnTo>
+ <lnTo>
+ <pt x="sx4" y="vc" />
+ </lnTo>
+ <lnTo>
+ <pt x="x2" y="y2" />
+ </lnTo>
+ <lnTo>
+ <pt x="sx3" y="sy2" />
+ </lnTo>
+ <lnTo>
+ <pt x="hc" y="b" />
+ </lnTo>
+ <lnTo>
+ <pt x="sx2" y="sy2" />
+ </lnTo>
+ <lnTo>
+ <pt x="x1" y="y2" />
+ </lnTo>
+ <lnTo>
+ <pt x="sx1" y="vc" />
+ </lnTo>
+ <close />
+ </path>
+ </pathLst>
+
+ </star6>
+ <star7>
+
+ <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="adj" fmla="val 34601" />
+ <gd name="hf" fmla="val 102572" />
+ <gd name="vf" fmla="val 105210" />
+ </avLst>
+
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="a" fmla="pin 0 adj 50000" />
+ <gd name="swd2" fmla="*/ wd2 hf 100000" />
+ <gd name="shd2" fmla="*/ hd2 vf 100000" />
+ <gd name="svc" fmla="*/ vc vf 100000" />
+ <gd name="dx1" fmla="*/ swd2 97493 100000" />
+ <gd name="dx2" fmla="*/ swd2 78183 100000" />
+ <gd name="dx3" fmla="*/ swd2 43388 100000" />
+ <gd name="dy1" fmla="*/ shd2 62349 100000" />
+ <gd name="dy2" fmla="*/ shd2 22252 100000" />
+ <gd name="dy3" fmla="*/ shd2 90097 100000" />
+ <gd name="x1" fmla="+- hc 0 dx1" />
+ <gd name="x2" fmla="+- hc 0 dx2" />
+ <gd name="x3" fmla="+- hc 0 dx3" />
+ <gd name="x4" fmla="+- hc dx3 0" />
+ <gd name="x5" fmla="+- hc dx2 0" />
+ <gd name="x6" fmla="+- hc dx1 0" />
+ <gd name="y1" fmla="+- svc 0 dy1" />
+ <gd name="y2" fmla="+- svc dy2 0" />
+ <gd name="y3" fmla="+- svc dy3 0" />
+ <gd name="iwd2" fmla="*/ swd2 a 50000" />
+ <gd name="ihd2" fmla="*/ shd2 a 50000" />
+ <gd name="sdx1" fmla="*/ iwd2 97493 100000" />
+ <gd name="sdx2" fmla="*/ iwd2 78183 100000" />
+ <gd name="sdx3" fmla="*/ iwd2 43388 100000" />
+ <gd name="sx1" fmla="+- hc 0 sdx1" />
+ <gd name="sx2" fmla="+- hc 0 sdx2" />
+ <gd name="sx3" fmla="+- hc 0 sdx3" />
+ <gd name="sx4" fmla="+- hc sdx3 0" />
+ <gd name="sx5" fmla="+- hc sdx2 0" />
+ <gd name="sx6" fmla="+- hc sdx1 0" />
+ <gd name="sdy1" fmla="*/ ihd2 90097 100000" />
+ <gd name="sdy2" fmla="*/ ihd2 22252 100000" />
+ <gd name="sdy3" fmla="*/ ihd2 62349 100000" />
+ <gd name="sy1" fmla="+- svc 0 sdy1" />
+ <gd name="sy2" fmla="+- svc 0 sdy2" />
+ <gd name="sy3" fmla="+- svc sdy3 0" />
+ <gd name="sy4" fmla="+- svc ihd2 0" />
+ <gd name="yAdj" fmla="+- svc 0 ihd2" />
+ </gdLst>
+
+ <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <ahXY gdRefY="adj" minY="0" maxY="50000">
+ <pos x="hc" y="yAdj" />
+ </ahXY>
+ </ahLst>
+
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="0">
+ <pos x="x5" y="y1" />
+ </cxn>
+ <cxn ang="0">
+ <pos x="x6" y="y2" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="x4" y="y3" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="x3" y="y3" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="x1" y="y2" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="x2" y="y1" />
+ </cxn>
+ <cxn ang="3cd4">
+ <pos x="hc" y="t" />
+ </cxn>
+ </cxnLst>
+
+ <rect l="sx2" t="sy1" r="sx5" b="sy3" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path>
+ <moveTo>
+ <pt x="x1" y="y2" />
+ </moveTo>
+ <lnTo>
+ <pt x="sx1" y="sy2" />
+ </lnTo>
+ <lnTo>
+ <pt x="x2" y="y1" />
+ </lnTo>
+ <lnTo>
+ <pt x="sx3" y="sy1" />
+ </lnTo>
+ <lnTo>
+ <pt x="hc" y="t" />
+ </lnTo>
+ <lnTo>
+ <pt x="sx4" y="sy1" />
+ </lnTo>
+ <lnTo>
+ <pt x="x5" y="y1" />
+ </lnTo>
+ <lnTo>
+ <pt x="sx6" y="sy2" />
+ </lnTo>
+ <lnTo>
+ <pt x="x6" y="y2" />
+ </lnTo>
+ <lnTo>
+ <pt x="sx5" y="sy3" />
+ </lnTo>
+ <lnTo>
+ <pt x="x4" y="y3" />
+ </lnTo>
+ <lnTo>
+ <pt x="hc" y="sy4" />
+ </lnTo>
+ <lnTo>
+ <pt x="x3" y="y3" />
+ </lnTo>
+ <lnTo>
+ <pt x="sx2" y="sy3" />
+ </lnTo>
+ <close />
+ </path>
+ </pathLst>
+
+ </star7>
+ <star8>
+
+ <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="adj" fmla="val 37500" />
+ </avLst>
+
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="a" fmla="pin 0 adj 50000" />
+ <gd name="dx1" fmla="cos wd2 2700000" />
+ <gd name="x1" fmla="+- hc 0 dx1" />
+ <gd name="x2" fmla="+- hc dx1 0" />
+ <gd name="dy1" fmla="sin hd2 2700000" />
+ <gd name="y1" fmla="+- vc 0 dy1" />
+ <gd name="y2" fmla="+- vc dy1 0" />
+ <gd name="iwd2" fmla="*/ wd2 a 50000" />
+ <gd name="ihd2" fmla="*/ hd2 a 50000" />
+ <gd name="sdx1" fmla="*/ iwd2 92388 100000" />
+ <gd name="sdx2" fmla="*/ iwd2 38268 100000" />
+ <gd name="sdy1" fmla="*/ ihd2 92388 100000" />
+ <gd name="sdy2" fmla="*/ ihd2 38268 100000" />
+ <gd name="sx1" fmla="+- hc 0 sdx1" />
+ <gd name="sx2" fmla="+- hc 0 sdx2" />
+ <gd name="sx3" fmla="+- hc sdx2 0" />
+ <gd name="sx4" fmla="+- hc sdx1 0" />
+ <gd name="sy1" fmla="+- vc 0 sdy1" />
+ <gd name="sy2" fmla="+- vc 0 sdy2" />
+ <gd name="sy3" fmla="+- vc sdy2 0" />
+ <gd name="sy4" fmla="+- vc sdy1 0" />
+ <gd name="yAdj" fmla="+- vc 0 ihd2" />
+ </gdLst>
+
+ <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <ahXY gdRefY="adj" minY="0" maxY="50000">
+ <pos x="hc" y="yAdj" />
+ </ahXY>
+ </ahLst>
+
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="0">
+ <pos x="r" y="vc" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="x2" y="y2" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="hc" y="b" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="x1" y="y2" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="l" y="vc" />
+ </cxn>
+ <cxn ang="3cd4">
+ <pos x="x1" y="y1" />
+ </cxn>
+ <cxn ang="3cd4">
+ <pos x="hc" y="t" />
+ </cxn>
+ <cxn ang="3cd4">
+ <pos x="x2" y="y1" />
+ </cxn>
+ </cxnLst>
+
+ <rect l="sx1" t="sy1" r="sx4" b="sy4" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path>
+ <moveTo>
+ <pt x="l" y="vc" />
+ </moveTo>
+ <lnTo>
+ <pt x="sx1" y="sy2" />
+ </lnTo>
+ <lnTo>
+ <pt x="x1" y="y1" />
+ </lnTo>
+ <lnTo>
+ <pt x="sx2" y="sy1" />
+ </lnTo>
+ <lnTo>
+ <pt x="hc" y="t" />
+ </lnTo>
+ <lnTo>
+ <pt x="sx3" y="sy1" />
+ </lnTo>
+ <lnTo>
+ <pt x="x2" y="y1" />
+ </lnTo>
+ <lnTo>
+ <pt x="sx4" y="sy2" />
+ </lnTo>
+ <lnTo>
+ <pt x="r" y="vc" />
+ </lnTo>
+ <lnTo>
+ <pt x="sx4" y="sy3" />
+ </lnTo>
+ <lnTo>
+ <pt x="x2" y="y2" />
+ </lnTo>
+ <lnTo>
+ <pt x="sx3" y="sy4" />
+ </lnTo>
+ <lnTo>
+ <pt x="hc" y="b" />
+ </lnTo>
+ <lnTo>
+ <pt x="sx2" y="sy4" />
+ </lnTo>
+ <lnTo>
+ <pt x="x1" y="y2" />
+ </lnTo>
+ <lnTo>
+ <pt x="sx1" y="sy3" />
+ </lnTo>
+ <close />
+ </path>
+ </pathLst>
+
+ </star8>
+ <straightConnector1>
+ <rect l="l" t="t" r="r" b="b" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path fill="none">
+ <moveTo>
+ <pt x="l" y="t" />
+ </moveTo>
+ <lnTo>
+ <pt x="r" y="b" />
+ </lnTo>
+ </path>
+ </pathLst>
+ </straightConnector1>
+ <stripedRightArrow>
+
+ <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="adj1" fmla="val 50000" />
+
+ <gd name="adj2" fmla="val 50000" />
+
+ </avLst>
+
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="maxAdj2" fmla="*/ 84375 w ss" />
+
+ <gd name="a1" fmla="pin 0 adj1 100000" />
+ <gd name="a2" fmla="pin 0 adj2 maxAdj2" />
+ <gd name="x4" fmla="*/ ss 5 32" />
+ <gd name="dx5" fmla="*/ ss a2 100000" />
+ <gd name="x5" fmla="+- r 0 dx5" />
+ <gd name="dy1" fmla="*/ h a1 200000" />
+ <gd name="y1" fmla="+- vc 0 dy1" />
+ <gd name="y2" fmla="+- vc dy1 0" />
+ <gd name="dx6" fmla="*/ dy1 dx5 hd2" />
+ <gd name="x6" fmla="+- r 0 dx6" />
+ </gdLst>
+
+ <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <ahXY gdRefY="adj1" minY="0" maxY="100000">
+ <pos x="l" y="y1" />
+ </ahXY>
+ <ahXY gdRefX="adj2" minX="0" maxX="maxAdj2">
+ <pos x="x5" y="t" />
+ </ahXY>
+ </ahLst>
+
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="3cd4">
+ <pos x="x5" y="t" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="l" y="vc" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="x5" y="b" />
+ </cxn>
+ <cxn ang="0">
+ <pos x="r" y="vc" />
+ </cxn>
+ </cxnLst>
+
+ <rect l="x4" t="y1" r="x6" b="y2" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path>
+ <moveTo>
+ <pt x="l" y="y1" />
+ </moveTo>
+ <lnTo>
+ <pt x="ssd32" y="y1" />
+ </lnTo>
+ <lnTo>
+ <pt x="ssd32" y="y2" />
+ </lnTo>
+ <lnTo>
+ <pt x="l" y="y2" />
+ </lnTo>
+ <close />
+ <moveTo>
+ <pt x="ssd16" y="y1" />
+ </moveTo>
+ <lnTo>
+ <pt x="ssd8" y="y1" />
+ </lnTo>
+ <lnTo>
+ <pt x="ssd8" y="y2" />
+ </lnTo>
+ <lnTo>
+ <pt x="ssd16" y="y2" />
+ </lnTo>
+ <close />
+ <moveTo>
+ <pt x="x4" y="y1" />
+ </moveTo>
+ <lnTo>
+ <pt x="x5" y="y1" />
+ </lnTo>
+ <lnTo>
+ <pt x="x5" y="t" />
+ </lnTo>
+ <lnTo>
+ <pt x="r" y="vc" />
+ </lnTo>
+ <lnTo>
+ <pt x="x5" y="b" />
+ </lnTo>
+ <lnTo>
+ <pt x="x5" y="y2" />
+ </lnTo>
+ <lnTo>
+ <pt x="x4" y="y2" />
+ </lnTo>
+ <close />
+ </path>
+ </pathLst>
+
+ </stripedRightArrow>
+ <sun>
+
+ <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="adj" fmla="val 25000" />
+
+ </avLst>
+
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="a" fmla="pin 12500 adj 46875" />
+ <gd name="g0" fmla="+- 50000 0 a" />
+ <gd name="g1" fmla="*/ g0 30274 32768" />
+ <gd name="g2" fmla="*/ g0 12540 32768" />
+ <gd name="g3" fmla="+- g1 50000 0" />
+ <gd name="g4" fmla="+- g2 50000 0" />
+ <gd name="g5" fmla="+- 50000 0 g1" />
+ <gd name="g6" fmla="+- 50000 0 g2" />
+ <gd name="g7" fmla="*/ g0 23170 32768" />
+ <gd name="g8" fmla="+- 50000 g7 0" />
+ <gd name="g9" fmla="+- 50000 0 g7" />
+ <gd name="g10" fmla="*/ g5 3 4" />
+ <gd name="g11" fmla="*/ g6 3 4" />
+ <gd name="g12" fmla="+- g10 3662 0" />
+ <gd name="g13" fmla="+- g11 3662 0" />
+ <gd name="g14" fmla="+- g11 12500 0" />
+ <gd name="g15" fmla="+- 100000 0 g10" />
+ <gd name="g16" fmla="+- 100000 0 g12" />
+ <gd name="g17" fmla="+- 100000 0 g13" />
+ <gd name="g18" fmla="+- 100000 0 g14" />
+ <gd name="ox1" fmla="*/ w 18436 21600" />
+ <gd name="oy1" fmla="*/ h 3163 21600" />
+ <gd name="ox2" fmla="*/ w 3163 21600" />
+ <gd name="oy2" fmla="*/ h 18436 21600" />
+ <gd name="x8" fmla="*/ w g8 100000" />
+ <gd name="x9" fmla="*/ w g9 100000" />
+ <gd name="x10" fmla="*/ w g10 100000" />
+ <gd name="x12" fmla="*/ w g12 100000" />
+ <gd name="x13" fmla="*/ w g13 100000" />
+ <gd name="x14" fmla="*/ w g14 100000" />
+ <gd name="x15" fmla="*/ w g15 100000" />
+ <gd name="x16" fmla="*/ w g16 100000" />
+ <gd name="x17" fmla="*/ w g17 100000" />
+ <gd name="x18" fmla="*/ w g18 100000" />
+ <gd name="x19" fmla="*/ w a 100000" />
+ <gd name="wR" fmla="*/ w g0 100000" />
+ <gd name="hR" fmla="*/ h g0 100000" />
+ <gd name="y8" fmla="*/ h g8 100000" />
+ <gd name="y9" fmla="*/ h g9 100000" />
+ <gd name="y10" fmla="*/ h g10 100000" />
+ <gd name="y12" fmla="*/ h g12 100000" />
+ <gd name="y13" fmla="*/ h g13 100000" />
+ <gd name="y14" fmla="*/ h g14 100000" />
+ <gd name="y15" fmla="*/ h g15 100000" />
+ <gd name="y16" fmla="*/ h g16 100000" />
+ <gd name="y17" fmla="*/ h g17 100000" />
+ <gd name="y18" fmla="*/ h g18 100000" />
+ </gdLst>
+
+ <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <ahXY gdRefX="adj" minX="12500" maxX="46875">
+ <pos x="x19" y="vc" />
+ </ahXY>
+ </ahLst>
+
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="3cd4">
+ <pos x="hc" y="t" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="l" y="vc" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="hc" y="b" />
+ </cxn>
+ <cxn ang="0">
+ <pos x="r" y="vc" />
+ </cxn>
+ </cxnLst>
+
+ <rect l="x9" t="y9" r="x8" b="y8" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path>
+ <moveTo>
+ <pt x="r" y="vc" />
+ </moveTo>
+ <lnTo>
+ <pt x="x15" y="y18" />
+ </lnTo>
+ <lnTo>
+ <pt x="x15" y="y14" />
+ </lnTo>
+ <close />
+ <moveTo>
+ <pt x="ox1" y="oy1" />
+ </moveTo>
+ <lnTo>
+ <pt x="x16" y="y13" />
+ </lnTo>
+ <lnTo>
+ <pt x="x17" y="y12" />
+ </lnTo>
+ <close />
+ <moveTo>
+ <pt x="hc" y="t" />
+ </moveTo>
+ <lnTo>
+ <pt x="x18" y="y10" />
+ </lnTo>
+ <lnTo>
+ <pt x="x14" y="y10" />
+ </lnTo>
+ <close />
+ <moveTo>
+ <pt x="ox2" y="oy1" />
+ </moveTo>
+ <lnTo>
+ <pt x="x13" y="y12" />
+ </lnTo>
+ <lnTo>
+ <pt x="x12" y="y13" />
+ </lnTo>
+ <close />
+ <moveTo>
+ <pt x="l" y="vc" />
+ </moveTo>
+ <lnTo>
+ <pt x="x10" y="y14" />
+ </lnTo>
+ <lnTo>
+ <pt x="x10" y="y18" />
+ </lnTo>
+ <close />
+ <moveTo>
+ <pt x="ox2" y="oy2" />
+ </moveTo>
+ <lnTo>
+ <pt x="x12" y="y17" />
+ </lnTo>
+ <lnTo>
+ <pt x="x13" y="y16" />
+ </lnTo>
+ <close />
+ <moveTo>
+ <pt x="hc" y="b" />
+ </moveTo>
+ <lnTo>
+ <pt x="x14" y="y15" />
+ </lnTo>
+ <lnTo>
+ <pt x="x18" y="y15" />
+ </lnTo>
+ <close />
+ <moveTo>
+ <pt x="ox1" y="oy2" />
+ </moveTo>
+ <lnTo>
+ <pt x="x17" y="y16" />
+ </lnTo>
+ <lnTo>
+ <pt x="x16" y="y17" />
+ </lnTo>
+ <close />
+ <moveTo>
+ <pt x="x19" y="vc" />
+ </moveTo>
+ <arcTo wR="wR" hR="hR" stAng="cd2" swAng="21600000" />
+ <close />
+ </path>
+ </pathLst>
+
+ </sun>
+ <swooshArrow>
+
+ <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="adj1" fmla="val 25000" />
+
+ <gd name="adj2" fmla="val 16667" />
+
+ </avLst>
+
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+
+
+ <gd name="a1" fmla="pin 1 adj1 75000" />
+
+ <gd name="maxAdj2" fmla="*/ 70000 w ss" />
+
+ <gd name="a2" fmla="pin 0 adj2 maxAdj2" />
+ <gd name="ad1" fmla="*/ h a1 100000" />
+ <gd name="ad2" fmla="*/ ss a2 100000" />
+
+ <gd name="xB" fmla="+- r 0 ad2" />
+ <gd name="yB" fmla="+- t ssd8 0" />
+
+ <gd name="alfa" fmla="*/ cd4 1 14" />
+
+ <gd name="dx0" fmla="tan ssd8 alfa" />
+ <gd name="xC" fmla="+- xB 0 dx0" />
+
+ <gd name="dx1" fmla="tan ad1 alfa" />
+
+ <gd name="yF" fmla="+- yB ad1 0" />
+ <gd name="xF" fmla="+- xB dx1 0" />
+
+ <gd name="xE" fmla="+- xF dx0 0" />
+ <gd name="yE" fmla="+- yF ssd8 0" />
+
+ <gd name="dy2" fmla="+- yE 0 t" />
+ <gd name="dy22" fmla="*/ dy2 1 2" />
+ <gd name="dy3" fmla="*/ h 1 20" />
+ <gd name="yD" fmla="+- t dy22 dy3" />
+
+
+ <gd name="dy4" fmla="*/ hd6 1 1" />
+ <gd name="yP1" fmla="+- hd6 dy4 0" />
+ <gd name="xP1" fmla="val wd6" />
+
+
+ <gd name="dy5" fmla="*/ hd6 1 2" />
+ <gd name="yP2" fmla="+- yF dy5 0" />
+ <gd name="xP2" fmla="val wd4" />
+ </gdLst>
+
+ <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <ahXY gdRefY="adj1" minY="1" maxY="75000">
+ <pos x="xF" y="yF" />
+ </ahXY>
+ <ahXY gdRefX="adj2" minX="0" maxX="maxAdj2">
+ <pos x="xB" y="yB" />
+ </ahXY>
+ </ahLst>
+
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="cd4">
+ <pos x="l" y="b" />
+ </cxn>
+ <cxn ang="3cd4">
+ <pos x="xC" y="t" />
+ </cxn>
+ <cxn ang="0">
+ <pos x="r" y="yD" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="xE" y="yE" />
+ </cxn>
+ </cxnLst>
+
+ <rect l="l" t="t" r="r" b="b" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path>
+ <moveTo>
+ <pt x="l" y="b" />
+ </moveTo>
+ <quadBezTo>
+ <pt x="xP1" y="yP1" />
+ <pt x="xB" y="yB" />
+ </quadBezTo>
+ <lnTo>
+ <pt x="xC" y="t" />
+ </lnTo>
+ <lnTo>
+ <pt x="r" y="yD" />
+ </lnTo>
+ <lnTo>
+ <pt x="xE" y="yE" />
+ </lnTo>
+ <lnTo>
+ <pt x="xF" y="yF" />
+ </lnTo>
+ <quadBezTo>
+ <pt x="xP2" y="yP2" />
+ <pt x="l" y="b" />
+ </quadBezTo>
+ <close />
+ </path>
+ </pathLst>
+
+ </swooshArrow>
+ <teardrop>
+
+ <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="adj" fmla="val 100000" />
+ </avLst>
+
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="a" fmla="pin 0 adj 200000" />
+ <gd name="r2" fmla="sqrt 2" />
+ <gd name="tw" fmla="*/ wd2 r2 1" />
+ <gd name="th" fmla="*/ hd2 r2 1" />
+ <gd name="sw" fmla="*/ tw a 100000" />
+ <gd name="sh" fmla="*/ th a 100000" />
+ <gd name="dx1" fmla="cos sw 2700000" />
+ <gd name="dy1" fmla="sin sh 2700000" />
+ <gd name="x1" fmla="+- hc dx1 0" />
+ <gd name="y1" fmla="+- vc 0 dy1" />
+ <gd name="x2" fmla="+/ hc x1 2" />
+ <gd name="y2" fmla="+/ vc y1 2" />
+ <gd name="idx" fmla="cos wd2 2700000" />
+ <gd name="idy" fmla="sin hd2 2700000" />
+ <gd name="il" fmla="+- hc 0 idx" />
+ <gd name="ir" fmla="+- hc idx 0" />
+ <gd name="it" fmla="+- vc 0 idy" />
+ <gd name="ib" fmla="+- vc idy 0" />
+ </gdLst>
+
+ <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <ahXY gdRefX="adj" minX="0" maxX="200000">
+ <pos x="x1" y="t" />
+ </ahXY>
+ </ahLst>
+
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="0">
+ <pos x="r" y="vc" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="ir" y="ib" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="hc" y="b" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="il" y="ib" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="l" y="vc" />
+ </cxn>
+ <cxn ang="3cd4">
+ <pos x="il" y="it" />
+ </cxn>
+ <cxn ang="3cd4">
+ <pos x="hc" y="t" />
+ </cxn>
+ <cxn ang="3cd4">
+ <pos x="x1" y="y1" />
+ </cxn>
+ </cxnLst>
+
+ <rect l="il" t="it" r="ir" b="ib" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path>
+ <moveTo>
+ <pt x="l" y="vc" />
+ </moveTo>
+ <arcTo wR="wd2" hR="hd2" stAng="cd2" swAng="cd4" />
+ <quadBezTo>
+ <pt x="x2" y="t" />
+ <pt x="x1" y="y1" />
+ </quadBezTo>
+ <quadBezTo>
+ <pt x="r" y="y2" />
+ <pt x="r" y="vc" />
+ </quadBezTo>
+ <arcTo wR="wd2" hR="hd2" stAng="0" swAng="cd4" />
+ <arcTo wR="wd2" hR="hd2" stAng="cd4" swAng="cd4" />
+ <close />
+ </path>
+ </pathLst>
+
+ </teardrop>
+ <trapezoid>
+ <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="adj" fmla="val 25000" />
+ </avLst>
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="maxAdj" fmla="*/ 50000 w ss" />
+ <gd name="a" fmla="pin 0 adj maxAdj" />
+ <gd name="x1" fmla="*/ ss a 200000" />
+ <gd name="x2" fmla="*/ ss a 100000" />
+ <gd name="x3" fmla="+- r 0 x2" />
+ <gd name="x4" fmla="+- r 0 x1" />
+ <gd name="il" fmla="*/ wd3 a maxAdj" />
+ <gd name="it" fmla="*/ hd3 a maxAdj" />
+ <gd name="ir" fmla="+- r 0 il" />
+ </gdLst>
+ <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <ahXY gdRefX="adj" minX="0" maxX="maxAdj">
+ <pos x="x2" y="t" />
+ </ahXY>
+ </ahLst>
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="3cd4">
+ <pos x="hc" y="t" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="x1" y="vc" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="hc" y="b" />
+ </cxn>
+ <cxn ang="0">
+ <pos x="x4" y="vc" />
+ </cxn>
+ </cxnLst>
+ <rect l="il" t="it" r="ir" b="b" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path>
+ <moveTo>
+ <pt x="l" y="b" />
+ </moveTo>
+ <lnTo>
+ <pt x="x2" y="t" />
+ </lnTo>
+ <lnTo>
+ <pt x="x3" y="t" />
+ </lnTo>
+ <lnTo>
+ <pt x="r" y="b" />
+ </lnTo>
+ <close />
+ </path>
+ </pathLst>
+ </trapezoid>
+ <triangle>
+ <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="adj" fmla="val 50000" />
+ </avLst>
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="a" fmla="pin 0 adj 100000" />
+ <gd name="x1" fmla="*/ w a 200000" />
+ <gd name="x2" fmla="*/ w a 100000" />
+ <gd name="x3" fmla="+- x1 wd2 0" />
+ </gdLst>
+ <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <ahXY gdRefX="adj" minX="0" maxX="100000">
+ <pos x="x2" y="t" />
+ </ahXY>
+ </ahLst>
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="3cd4">
+ <pos x="x2" y="t" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="x1" y="vc" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="l" y="b" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="x2" y="b" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="r" y="b" />
+ </cxn>
+ <cxn ang="0">
+ <pos x="x3" y="vc" />
+ </cxn>
+ </cxnLst>
+ <rect l="x1" t="vc" r="x3" b="b" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path>
+ <moveTo>
+ <pt x="l" y="b" />
+ </moveTo>
+ <lnTo>
+ <pt x="x2" y="t" />
+ </lnTo>
+ <lnTo>
+ <pt x="r" y="b" />
+ </lnTo>
+ <close />
+ </path>
+ </pathLst>
+ </triangle>
+ <upArrowCallout>
+
+ <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="adj1" fmla="val 25000" />
+
+ <gd name="adj2" fmla="val 25000" />
+
+ <gd name="adj3" fmla="val 25000" />
+
+ <gd name="adj4" fmla="val 64977" />
+
+ </avLst>
+
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="maxAdj2" fmla="*/ 50000 w ss" />
+
+ <gd name="a2" fmla="pin 0 adj2 maxAdj2" />
+ <gd name="maxAdj1" fmla="*/ a2 2 1" />
+
+ <gd name="a1" fmla="pin 0 adj1 maxAdj1" />
+ <gd name="maxAdj3" fmla="*/ 100000 h ss" />
+
+ <gd name="a3" fmla="pin 0 adj3 maxAdj3" />
+ <gd name="q2" fmla="*/ a3 ss h" />
+
+ <gd name="maxAdj4" fmla="+- 100000 0 q2" />
+
+ <gd name="a4" fmla="pin 0 adj4 maxAdj4" />
+ <gd name="dx1" fmla="*/ ss a2 100000" />
+
+ <gd name="dx2" fmla="*/ ss a1 200000" />
+
+ <gd name="x1" fmla="+- hc 0 dx1" />
+ <gd name="x2" fmla="+- hc 0 dx2" />
+ <gd name="x3" fmla="+- hc dx2 0" />
+ <gd name="x4" fmla="+- hc dx1 0" />
+ <gd name="y1" fmla="*/ ss a3 100000" />
+
+ <gd name="dy2" fmla="*/ h a4 100000" />
+
+ <gd name="y2" fmla="+- b 0 dy2" />
+ <gd name="y3" fmla="+/ y2 b 2" />
+ </gdLst>
+
+ <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <ahXY gdRefX="adj1" minX="0" maxX="maxAdj1">
+ <pos x="x2" y="y1" />
+ </ahXY>
+ <ahXY gdRefX="adj2" minX="0" maxX="maxAdj2">
+ <pos x="x1" y="t" />
+ </ahXY>
+ <ahXY gdRefY="adj3" minY="0" maxY="maxAdj3">
+ <pos x="r" y="y1" />
+ </ahXY>
+ <ahXY gdRefY="adj4" minY="0" maxY="maxAdj4">
+ <pos x="l" y="y2" />
+ </ahXY>
+ </ahLst>
+
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="3cd4">
+ <pos x="hc" y="t" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="l" y="y2" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="hc" y="b" />
+ </cxn>
+ <cxn ang="0">
+ <pos x="r" y="y2" />
+ </cxn>
+ </cxnLst>
+
+ <rect l="l" t="y2" r="r" b="b" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path>
+ <moveTo>
+ <pt x="l" y="y2" />
+ </moveTo>
+ <lnTo>
+ <pt x="x2" y="y2" />
+ </lnTo>
+ <lnTo>
+ <pt x="x2" y="y1" />
+ </lnTo>
+ <lnTo>
+ <pt x="x1" y="y1" />
+ </lnTo>
+ <lnTo>
+ <pt x="hc" y="t" />
+ </lnTo>
+ <lnTo>
+ <pt x="x4" y="y1" />
+ </lnTo>
+ <lnTo>
+ <pt x="x3" y="y1" />
+ </lnTo>
+ <lnTo>
+ <pt x="x3" y="y2" />
+ </lnTo>
+ <lnTo>
+ <pt x="r" y="y2" />
+ </lnTo>
+ <lnTo>
+ <pt x="r" y="b" />
+ </lnTo>
+ <lnTo>
+ <pt x="l" y="b" />
+ </lnTo>
+ <close />
+ </path>
+ </pathLst>
+
+ </upArrowCallout>
+ <upDownArrow>
+ <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="adj1" fmla="val 50000" />
+ <gd name="adj2" fmla="val 50000" />
+ </avLst>
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="maxAdj2" fmla="*/ 50000 h ss" />
+ <gd name="a1" fmla="pin 0 adj1 100000" />
+ <gd name="a2" fmla="pin 0 adj2 maxAdj2" />
+ <gd name="y2" fmla="*/ ss a2 100000" />
+ <gd name="y3" fmla="+- b 0 y2" />
+ <gd name="dx1" fmla="*/ w a1 200000" />
+ <gd name="x1" fmla="+- hc 0 dx1" />
+ <gd name="x2" fmla="+- hc dx1 0" />
+ <gd name="dy1" fmla="*/ x1 y2 wd2" />
+ <gd name="y1" fmla="+- y2 0 dy1" />
+ <gd name="y4" fmla="+- y3 dy1 0" />
+ </gdLst>
+ <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <ahXY gdRefX="adj1" minX="0" maxX="100000">
+ <pos x="x1" y="y3" />
+ </ahXY>
+ <ahXY gdRefY="adj2" minY="0" maxY="maxAdj2">
+ <pos x="l" y="y2" />
+ </ahXY>
+ </ahLst>
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="3cd4">
+ <pos x="hc" y="t" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="l" y="y2" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="x1" y="vc" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="l" y="y3" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="hc" y="b" />
+ </cxn>
+ <cxn ang="0">
+ <pos x="r" y="y3" />
+ </cxn>
+ <cxn ang="0">
+ <pos x="x2" y="vc" />
+ </cxn>
+ <cxn ang="0">
+ <pos x="r" y="y2" />
+ </cxn>
+ </cxnLst>
+ <rect l="x1" t="y1" r="x2" b="y4" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path>
+ <moveTo>
+ <pt x="l" y="y2" />
+ </moveTo>
+ <lnTo>
+ <pt x="hc" y="t" />
+ </lnTo>
+ <lnTo>
+ <pt x="r" y="y2" />
+ </lnTo>
+ <lnTo>
+ <pt x="x2" y="y2" />
+ </lnTo>
+ <lnTo>
+ <pt x="x2" y="y3" />
+ </lnTo>
+ <lnTo>
+ <pt x="r" y="y3" />
+ </lnTo>
+ <lnTo>
+ <pt x="hc" y="b" />
+ </lnTo>
+ <lnTo>
+ <pt x="l" y="y3" />
+ </lnTo>
+ <lnTo>
+ <pt x="x1" y="y3" />
+ </lnTo>
+ <lnTo>
+ <pt x="x1" y="y2" />
+ </lnTo>
+ <close />
+ </path>
+ </pathLst>
+ </upDownArrow>
+ <upArrow>
+ <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="adj1" fmla="val 50000" />
+ <gd name="adj2" fmla="val 50000" />
+ </avLst>
+
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="maxAdj2" fmla="*/ 100000 h ss" />
+ <gd name="a1" fmla="pin 0 adj1 100000" />
+ <gd name="a2" fmla="pin 0 adj2 maxAdj2" />
+ <gd name="dy2" fmla="*/ ss a2 100000" />
+ <gd name="y2" fmla="+- t dy2 0" />
+ <gd name="dx1" fmla="*/ w a1 200000" />
+ <gd name="x1" fmla="+- hc 0 dx1" />
+ <gd name="x2" fmla="+- hc dx1 0" />
+ <gd name="dy1" fmla="*/ x1 dy2 wd2" />
+ <gd name="y1" fmla="+- y2 0 dy1" />
+ </gdLst>
+
+ <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <ahXY gdRefX="adj1" minX="0" maxX="100000">
+ <pos x="x1" y="b" />
+ </ahXY>
+ <ahXY gdRefY="adj2" minY="0" maxY="maxAdj2">
+ <pos x="l" y="y2" />
+ </ahXY>
+ </ahLst>
+
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="3cd4">
+ <pos x="hc" y="t" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="l" y="y2" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="hc" y="b" />
+ </cxn>
+ <cxn ang="0">
+ <pos x="r" y="y2" />
+ </cxn>
+ </cxnLst>
+
+ <rect l="x1" t="y1" r="x2" b="b" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path>
+ <moveTo>
+ <pt x="l" y="y2" />
+ </moveTo>
+ <lnTo>
+ <pt x="hc" y="t" />
+ </lnTo>
+ <lnTo>
+ <pt x="r" y="y2" />
+ </lnTo>
+ <lnTo>
+ <pt x="x2" y="y2" />
+ </lnTo>
+ <lnTo>
+ <pt x="x2" y="b" />
+ </lnTo>
+ <lnTo>
+ <pt x="x1" y="b" />
+ </lnTo>
+ <lnTo>
+ <pt x="x1" y="y2" />
+ </lnTo>
+ <close/>
+ </path>
+ </pathLst>
+ </upArrow>
+ <upDownArrowCallout>
+
+ <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="adj1" fmla="val 25000" />
+
+ <gd name="adj2" fmla="val 25000" />
+
+ <gd name="adj3" fmla="val 25000" />
+
+ <gd name="adj4" fmla="val 48123" />
+
+ </avLst>
+
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="maxAdj2" fmla="*/ 50000 w ss" />
+
+ <gd name="a2" fmla="pin 0 adj2 maxAdj2" />
+ <gd name="maxAdj1" fmla="*/ a2 2 1" />
+
+ <gd name="a1" fmla="pin 0 adj1 maxAdj1" />
+ <gd name="maxAdj3" fmla="*/ 50000 h ss" />
+
+ <gd name="a3" fmla="pin 0 adj3 maxAdj3" />
+ <gd name="q2" fmla="*/ a3 ss hd2" />
+
+ <gd name="maxAdj4" fmla="+- 100000 0 q2" />
+
+ <gd name="a4" fmla="pin 0 adj4 maxAdj4" />
+ <gd name="dx1" fmla="*/ ss a2 100000" />
+
+ <gd name="dx2" fmla="*/ ss a1 200000" />
+
+ <gd name="x1" fmla="+- hc 0 dx1" />
+ <gd name="x2" fmla="+- hc 0 dx2" />
+ <gd name="x3" fmla="+- hc dx2 0" />
+ <gd name="x4" fmla="+- hc dx1 0" />
+ <gd name="y1" fmla="*/ ss a3 100000" />
+
+ <gd name="y4" fmla="+- b 0 y1" />
+
+ <gd name="dy2" fmla="*/ h a4 200000" />
+
+ <gd name="y2" fmla="+- vc 0 dy2" />
+
+ <gd name="y3" fmla="+- vc dy2 0" />
+
+ </gdLst>
+
+ <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <ahXY gdRefX="adj1" minX="0" maxX="maxAdj1">
+ <pos x="x2" y="y1" />
+ </ahXY>
+ <ahXY gdRefX="adj2" minX="0" maxX="maxAdj2">
+ <pos x="x1" y="t" />
+ </ahXY>
+ <ahXY gdRefY="adj3" minY="0" maxY="maxAdj3">
+ <pos x="r" y="y1" />
+ </ahXY>
+ <ahXY gdRefY="adj4" minY="0" maxY="maxAdj4">
+ <pos x="l" y="y2" />
+ </ahXY>
+ </ahLst>
+
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="3cd4">
+ <pos x="hc" y="t" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="l" y="vc" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="hc" y="b" />
+ </cxn>
+ <cxn ang="0">
+ <pos x="r" y="vc" />
+ </cxn>
+ </cxnLst>
+
+ <rect l="l" t="y2" r="r" b="y3" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path>
+ <moveTo>
+ <pt x="l" y="y2" />
+ </moveTo>
+ <lnTo>
+ <pt x="x2" y="y2" />
+ </lnTo>
+ <lnTo>
+ <pt x="x2" y="y1" />
+ </lnTo>
+ <lnTo>
+ <pt x="x1" y="y1" />
+ </lnTo>
+ <lnTo>
+ <pt x="hc" y="t" />
+ </lnTo>
+ <lnTo>
+ <pt x="x4" y="y1" />
+ </lnTo>
+ <lnTo>
+ <pt x="x3" y="y1" />
+ </lnTo>
+ <lnTo>
+ <pt x="x3" y="y2" />
+ </lnTo>
+ <lnTo>
+ <pt x="r" y="y2" />
+ </lnTo>
+ <lnTo>
+ <pt x="r" y="y3" />
+ </lnTo>
+ <lnTo>
+ <pt x="x3" y="y3" />
+ </lnTo>
+ <lnTo>
+ <pt x="x3" y="y4" />
+ </lnTo>
+ <lnTo>
+ <pt x="x4" y="y4" />
+ </lnTo>
+ <lnTo>
+ <pt x="hc" y="b" />
+ </lnTo>
+ <lnTo>
+ <pt x="x1" y="y4" />
+ </lnTo>
+ <lnTo>
+ <pt x="x2" y="y4" />
+ </lnTo>
+ <lnTo>
+ <pt x="x2" y="y3" />
+ </lnTo>
+ <lnTo>
+ <pt x="l" y="y3" />
+ </lnTo>
+ <close />
+ </path>
+ </pathLst>
+
+ </upDownArrowCallout>
+ <uturnArrow>
+
+ <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="adj1" fmla="val 25000" />
+
+ <gd name="adj2" fmla="val 25000" />
+
+ <gd name="adj3" fmla="val 25000" />
+
+ <gd name="adj4" fmla="val 43750" />
+
+ <gd name="adj5" fmla="val 75000" />
+
+ </avLst>
+
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="a2" fmla="pin 0 adj2 25000" />
+ <gd name="maxAdj1" fmla="*/ a2 2 1" />
+ <gd name="a1" fmla="pin 0 adj1 maxAdj1" />
+ <gd name="q2" fmla="*/ a1 ss h" />
+
+ <gd name="q3" fmla="+- 100000 0 q2" />
+
+ <gd name="maxAdj3" fmla="*/ q3 h ss" />
+
+ <gd name="a3" fmla="pin 0 adj3 maxAdj3" />
+ <gd name="q1" fmla="+- a3 a1 0" />
+ <gd name="minAdj5" fmla="*/ q1 ss h" />
+ <gd name="a5" fmla="pin minAdj5 adj5 100000" />
+ <gd name="th" fmla="*/ ss a1 100000" />
+
+ <gd name="aw2" fmla="*/ ss a2 100000" />
+
+ <gd name="th2" fmla="*/ th 1 2" />
+ <gd name="dh2" fmla="+- aw2 0 th2" />
+
+ <gd name="y5" fmla="*/ h a5 100000" />
+
+ <gd name="ah" fmla="*/ ss a3 100000" />
+
+ <gd name="y4" fmla="+- y5 0 ah" />
+ <gd name="x9" fmla="+- r 0 dh2" />
+
+ <gd name="bw" fmla="*/ x9 1 2" />
+ <gd name="bs" fmla="min bw y4" />
+ <gd name="maxAdj4" fmla="*/ bs 100000 ss" />
+ <gd name="a4" fmla="pin 0 adj4 maxAdj4" />
+
+
+ <gd name="bd" fmla="*/ ss a4 100000" />
+
+
+
+ <gd name="bd3" fmla="+- bd 0 th" />
+ <gd name="bd2" fmla="max bd3 0" />
+ <gd name="x3" fmla="+- th bd2 0" />
+
+ <gd name="x8" fmla="+- r 0 aw2" />
+
+ <gd name="x6" fmla="+- x8 0 aw2" />
+
+ <gd name="x7" fmla="+- x6 dh2 0" />
+
+ <gd name="x4" fmla="+- x9 0 bd" />
+
+ <gd name="x5" fmla="+- x7 0 bd2" />
+
+ <gd name="cx" fmla="+/ th x7 2" />
+
+
+
+
+ </gdLst>
+
+ <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <ahXY gdRefX="adj1" minX="0" maxX="maxAdj1">
+ <pos x="th" y="b" />
+ </ahXY>
+ <ahXY gdRefX="adj2" minX="0" maxX="25000">
+ <pos x="x6" y="b" />
+ </ahXY>
+ <ahXY gdRefY="adj3" minY="0" maxY="maxAdj3">
+ <pos x="x6" y="y4" />
+ </ahXY>
+ <ahXY gdRefX="adj4" minX="0" maxX="maxAdj4">
+ <pos x="bd" y="t" />
+ </ahXY>
+ <ahXY gdRefY="adj5" minY="minAdj5" maxY="100000">
+ <pos x="r" y="y5" />
+ </ahXY>
+ </ahLst>
+
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="cd4">
+ <pos x="x6" y="y4" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="x8" y="y5" />
+ </cxn>
+ <cxn ang="0">
+ <pos x="r" y="y4" />
+ </cxn>
+ <cxn ang="3cd4">
+ <pos x="cx" y="t" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="th2" y="b" />
+ </cxn>
+ </cxnLst>
+
+ <rect l="l" t="t" r="r" b="b" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path>
+ <moveTo>
+ <pt x="l" y="b" />
+ </moveTo>
+ <lnTo>
+ <pt x="l" y="bd" />
+ </lnTo>
+ <arcTo wR="bd" hR="bd" stAng="cd2" swAng="cd4" />
+ <lnTo>
+ <pt x="x4" y="t" />
+ </lnTo>
+ <arcTo wR="bd" hR="bd" stAng="3cd4" swAng="cd4" />
+ <lnTo>
+ <pt x="x9" y="y4" />
+ </lnTo>
+ <lnTo>
+ <pt x="r" y="y4" />
+ </lnTo>
+ <lnTo>
+ <pt x="x8" y="y5" />
+ </lnTo>
+ <lnTo>
+ <pt x="x6" y="y4" />
+ </lnTo>
+ <lnTo>
+ <pt x="x7" y="y4" />
+ </lnTo>
+ <lnTo>
+ <pt x="x7" y="x3" />
+ </lnTo>
+ <arcTo wR="bd2" hR="bd2" stAng="0" swAng="-5400000" />
+ <lnTo>
+ <pt x="x3" y="th" />
+ </lnTo>
+ <arcTo wR="bd2" hR="bd2" stAng="3cd4" swAng="-5400000" />
+ <lnTo>
+ <pt x="th" y="b" />
+ </lnTo>
+ <close />
+ </path>
+ </pathLst>
+
+ </uturnArrow>
+ <verticalScroll>
+
+ <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="adj" fmla="val 12500" />
+
+ </avLst>
+
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="a" fmla="pin 0 adj 25000" />
+ <gd name="ch" fmla="*/ ss a 100000" />
+
+ <gd name="ch2" fmla="*/ ch 1 2" />
+
+ <gd name="ch4" fmla="*/ ch 1 4" />
+
+
+
+
+
+ <gd name="x3" fmla="+- ch ch2 0" />
+
+ <gd name="x4" fmla="+- ch ch 0" />
+
+ <gd name="x6" fmla="+- r 0 ch" />
+
+ <gd name="x7" fmla="+- r 0 ch2" />
+
+ <gd name="x5" fmla="+- x6 0 ch2" />
+
+
+
+
+
+ <gd name="y3" fmla="+- b 0 ch" />
+
+ <gd name="y4" fmla="+- b 0 ch2" />
+
+ </gdLst>
+
+ <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <ahXY gdRefY="adj" minY="0" maxY="25000">
+ <pos x="l" y="ch" />
+ </ahXY>
+ </ahLst>
+
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="3cd4">
+ <pos x="hc" y="t" />
+ </cxn>
+ <cxn ang="0">
+ <pos x="ch" y="vc" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="hc" y="b" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="x6" y="vc" />
+ </cxn>
+ </cxnLst>
+
+ <rect l="ch" t="ch" r="x6" b="y4" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path stroke="false" extrusionOk="false">
+
+ <moveTo>
+ <pt x="ch2" y="b" />
+ </moveTo>
+ <arcTo wR="ch2" hR="ch2" stAng="cd4" swAng="-5400000" />
+ <lnTo>
+ <pt x="ch2" y="y4" />
+ </lnTo>
+ <arcTo wR="ch4" hR="ch4" stAng="cd4" swAng="-10800000" />
+ <lnTo>
+ <pt x="ch" y="y3" />
+ </lnTo>
+ <lnTo>
+ <pt x="ch" y="ch2" />
+ </lnTo>
+ <arcTo wR="ch2" hR="ch2" stAng="cd2" swAng="cd4" />
+ <lnTo>
+ <pt x="x7" y="t" />
+ </lnTo>
+ <arcTo wR="ch2" hR="ch2" stAng="3cd4" swAng="cd2" />
+ <lnTo>
+ <pt x="x6" y="ch" />
+ </lnTo>
+ <lnTo>
+ <pt x="x6" y="y4" />
+ </lnTo>
+ <arcTo wR="ch2" hR="ch2" stAng="0" swAng="cd4" />
+ <close />
+ <moveTo>
+ <pt x="x4" y="ch2" />
+ </moveTo>
+ <arcTo wR="ch2" hR="ch2" stAng="0" swAng="cd4" />
+ <arcTo wR="ch4" hR="ch4" stAng="cd4" swAng="cd2" />
+ <close />
+ </path>
+ <path fill="darkenLess" stroke="false" extrusionOk="false">
+
+ <moveTo>
+ <pt x="x4" y="ch2" />
+ </moveTo>
+ <arcTo wR="ch2" hR="ch2" stAng="0" swAng="cd4" />
+ <arcTo wR="ch4" hR="ch4" stAng="cd4" swAng="cd2" />
+ <close />
+ <moveTo>
+ <pt x="ch" y="y4" />
+ </moveTo>
+ <arcTo wR="ch2" hR="ch2" stAng="0" swAng="3cd4" />
+ <arcTo wR="ch4" hR="ch4" stAng="3cd4" swAng="cd2" />
+ <close />
+ </path>
+ <path fill="none" extrusionOk="false">
+
+ <moveTo>
+ <pt x="ch" y="y3" />
+ </moveTo>
+ <lnTo>
+ <pt x="ch" y="ch2" />
+ </lnTo>
+ <arcTo wR="ch2" hR="ch2" stAng="cd2" swAng="cd4" />
+ <lnTo>
+ <pt x="x7" y="t" />
+ </lnTo>
+ <arcTo wR="ch2" hR="ch2" stAng="3cd4" swAng="cd2" />
+ <lnTo>
+ <pt x="x6" y="ch" />
+ </lnTo>
+ <lnTo>
+ <pt x="x6" y="y4" />
+ </lnTo>
+ <arcTo wR="ch2" hR="ch2" stAng="0" swAng="cd4" />
+ <lnTo>
+ <pt x="ch2" y="b" />
+ </lnTo>
+ <arcTo wR="ch2" hR="ch2" stAng="cd4" swAng="cd2" />
+ <close />
+ <moveTo>
+ <pt x="x3" y="t" />
+ </moveTo>
+ <arcTo wR="ch2" hR="ch2" stAng="3cd4" swAng="cd2" />
+ <arcTo wR="ch4" hR="ch4" stAng="cd4" swAng="cd2" />
+ <lnTo>
+ <pt x="x4" y="ch2" />
+ </lnTo>
+ <moveTo>
+ <pt x="x6" y="ch" />
+ </moveTo>
+ <lnTo>
+ <pt x="x3" y="ch" />
+ </lnTo>
+ <moveTo>
+ <pt x="ch2" y="y3" />
+ </moveTo>
+ <arcTo wR="ch4" hR="ch4" stAng="3cd4" swAng="cd2" />
+ <lnTo>
+ <pt x="ch" y="y4" />
+ </lnTo>
+ <moveTo>
+ <pt x="ch2" y="b" />
+ </moveTo>
+ <arcTo wR="ch2" hR="ch2" stAng="cd4" swAng="-5400000" />
+ <lnTo>
+ <pt x="ch" y="y3" />
+ </lnTo>
+ </path>
+ </pathLst>
+
+ </verticalScroll>
+ <wave>
+
+ <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="adj1" fmla="val 12500" />
+
+ <gd name="adj2" fmla="val 0" />
+
+ </avLst>
+
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="a1" fmla="pin 0 adj1 20000" />
+ <gd name="a2" fmla="pin -10000 adj2 10000" />
+ <gd name="y1" fmla="*/ h a1 100000" />
+
+ <gd name="dy2" fmla="*/ y1 10 3" />
+ <gd name="y2" fmla="+- y1 0 dy2" />
+
+ <gd name="y3" fmla="+- y1 dy2 0" />
+
+ <gd name="y4" fmla="+- b 0 y1" />
+
+ <gd name="y5" fmla="+- y4 0 dy2" />
+
+ <gd name="y6" fmla="+- y4 dy2 0" />
+
+ <gd name="dx1" fmla="*/ w a2 100000" />
+
+ <gd name="of2" fmla="*/ w a2 50000" />
+
+ <gd name="x1" fmla="abs dx1" />
+
+ <gd name="dx2" fmla="?: of2 0 of2" />
+ <gd name="x2" fmla="+- l 0 dx2" />
+
+ <gd name="dx5" fmla="?: of2 of2 0" />
+ <gd name="x5" fmla="+- r 0 dx5" />
+
+ <gd name="dx3" fmla="+/ dx2 x5 3" />
+
+ <gd name="x3" fmla="+- x2 dx3 0" />
+
+ <gd name="x4" fmla="+/ x3 x5 2" />
+
+ <gd name="x6" fmla="+- l dx5 0" />
+
+ <gd name="x10" fmla="+- r dx2 0" />
+
+ <gd name="x7" fmla="+- x6 dx3 0" />
+
+ <gd name="x8" fmla="+/ x7 x10 2" />
+
+ <gd name="x9" fmla="+- r 0 x1" />
+
+ <gd name="xAdj" fmla="+- hc dx1 0" />
+ <gd name="xAdj2" fmla="+- hc 0 dx1" />
+ <gd name="il" fmla="max x2 x6" />
+ <gd name="ir" fmla="min x5 x10" />
+ <gd name="it" fmla="*/ h a1 50000" />
+ <gd name="ib" fmla="+- b 0 it" />
+ </gdLst>
+
+ <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <ahXY gdRefY="adj1" minY="0" maxY="20000">
+ <pos x="l" y="y1" />
+ </ahXY>
+ <ahXY gdRefX="adj2" minX="-10000" maxX="10000">
+ <pos x="xAdj" y="b" />
+ </ahXY>
+ </ahLst>
+
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="cd4">
+ <pos x="xAdj2" y="y1" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="x1" y="vc" />
+ </cxn>
+ <cxn ang="3cd4">
+ <pos x="xAdj" y="y4" />
+ </cxn>
+ <cxn ang="0">
+ <pos x="x9" y="vc" />
+ </cxn>
+ </cxnLst>
+
+ <rect l="il" t="it" r="ir" b="ib" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path>
+ <moveTo>
+ <pt x="x2" y="y1" />
+ </moveTo>
+ <cubicBezTo>
+ <pt x="x3" y="y2" />
+ <pt x="x4" y="y3" />
+ <pt x="x5" y="y1" />
+ </cubicBezTo>
+ <lnTo>
+ <pt x="x10" y="y4" />
+ </lnTo>
+ <cubicBezTo>
+ <pt x="x8" y="y6" />
+ <pt x="x7" y="y5" />
+ <pt x="x6" y="y4" />
+ </cubicBezTo>
+ <close />
+ </path>
+ </pathLst>
+
+ </wave>
+ <wedgeEllipseCallout>
+ <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="adj1" fmla="val -20833" />
+ <gd name="adj2" fmla="val 62500" />
+ </avLst>
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="dxPos" fmla="*/ w adj1 100000" />
+ <gd name="dyPos" fmla="*/ h adj2 100000" />
+ <gd name="xPos" fmla="+- hc dxPos 0" />
+ <gd name="yPos" fmla="+- vc dyPos 0" />
+ <gd name="sdx" fmla="*/ dxPos h 1" />
+ <gd name="sdy" fmla="*/ dyPos w 1" />
+ <gd name="pang" fmla="at2 sdx sdy" />
+ <gd name="stAng" fmla="+- pang 660000 0" />
+ <gd name="enAng" fmla="+- pang 0 660000" />
+ <gd name="dx1" fmla="cos wd2 stAng" />
+ <gd name="dy1" fmla="sin hd2 stAng" />
+ <gd name="x1" fmla="+- hc dx1 0" />
+ <gd name="y1" fmla="+- vc dy1 0" />
+ <gd name="dx2" fmla="cos wd2 enAng" />
+ <gd name="dy2" fmla="sin hd2 enAng" />
+ <gd name="x2" fmla="+- hc dx2 0" />
+ <gd name="y2" fmla="+- vc dy2 0" />
+ <gd name="stAng1" fmla="at2 dx1 dy1" />
+ <gd name="enAng1" fmla="at2 dx2 dy2" />
+ <gd name="swAng1" fmla="+- enAng1 0 stAng1" />
+ <gd name="swAng2" fmla="+- swAng1 21600000 0" />
+ <gd name="swAng" fmla="?: swAng1 swAng1 swAng2" />
+ <gd name="idx" fmla="cos wd2 2700000" />
+ <gd name="idy" fmla="sin hd2 2700000" />
+ <gd name="il" fmla="+- hc 0 idx" />
+ <gd name="ir" fmla="+- hc idx 0" />
+ <gd name="it" fmla="+- vc 0 idy" />
+ <gd name="ib" fmla="+- vc idy 0" />
+ </gdLst>
+ <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <ahXY gdRefX="adj1" minX="-2147483647" maxX="2147483647" gdRefY="adj2" minY="-2147483647" maxY="2147483647">
+ <pos x="xPos" y="yPos" />
+ </ahXY>
+ </ahLst>
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="3cd4">
+ <pos x="hc" y="t" />
+ </cxn>
+ <cxn ang="3cd4">
+ <pos x="il" y="it" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="il" y="ib" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="hc" y="b" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="ir" y="ib" />
+ </cxn>
+ <cxn ang="0">
+ <pos x="r" y="vc" />
+ </cxn>
+ <cxn ang="3cd4">
+ <pos x="ir" y="it" />
+ </cxn>
+ <cxn ang="pang">
+ <pos x="xPos" y="yPos" />
+ </cxn>
+ </cxnLst>
+ <rect l="il" t="it" r="ir" b="ib" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path>
+ <moveTo>
+ <pt x="xPos" y="yPos" />
+ </moveTo>
+ <lnTo>
+ <pt x="x1" y="y1" />
+ </lnTo>
+ <arcTo wR="wd2" hR="hd2" stAng="stAng1" swAng="swAng" />
+ <close />
+ </path>
+ </pathLst>
+ </wedgeEllipseCallout>
+ <wedgeRectCallout>
+
+ <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="adj1" fmla="val -20833" />
+
+ <gd name="adj2" fmla="val 62500" />
+
+ </avLst>
+
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="dxPos" fmla="*/ w adj1 100000" />
+ <gd name="dyPos" fmla="*/ h adj2 100000" />
+ <gd name="xPos" fmla="+- hc dxPos 0" />
+ <gd name="yPos" fmla="+- vc dyPos 0" />
+ <gd name="dx" fmla="+- xPos 0 hc" />
+ <gd name="dy" fmla="+- yPos 0 vc" />
+ <gd name="dq" fmla="*/ dxPos h w" />
+ <gd name="ady" fmla="abs dyPos" />
+ <gd name="adq" fmla="abs dq" />
+ <gd name="dz" fmla="+- ady 0 adq" />
+ <gd name="xg1" fmla="?: dxPos 7 2" />
+ <gd name="xg2" fmla="?: dxPos 10 5" />
+ <gd name="x1" fmla="*/ w xg1 12" />
+ <gd name="x2" fmla="*/ w xg2 12" />
+ <gd name="yg1" fmla="?: dyPos 7 2" />
+ <gd name="yg2" fmla="?: dyPos 10 5" />
+ <gd name="y1" fmla="*/ h yg1 12" />
+ <gd name="y2" fmla="*/ h yg2 12" />
+ <gd name="t1" fmla="?: dxPos l xPos" />
+ <gd name="xl" fmla="?: dz l t1" />
+ <gd name="t2" fmla="?: dyPos x1 xPos" />
+ <gd name="xt" fmla="?: dz t2 x1" />
+ <gd name="t3" fmla="?: dxPos xPos r" />
+ <gd name="xr" fmla="?: dz r t3" />
+ <gd name="t4" fmla="?: dyPos xPos x1" />
+ <gd name="xb" fmla="?: dz t4 x1" />
+ <gd name="t5" fmla="?: dxPos y1 yPos" />
+ <gd name="yl" fmla="?: dz y1 t5" />
+ <gd name="t6" fmla="?: dyPos t yPos" />
+ <gd name="yt" fmla="?: dz t6 t" />
+ <gd name="t7" fmla="?: dxPos yPos y1" />
+ <gd name="yr" fmla="?: dz y1 t7" />
+ <gd name="t8" fmla="?: dyPos yPos b" />
+ <gd name="yb" fmla="?: dz t8 b" />
+ </gdLst>
+
+ <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <ahXY gdRefX="adj1" minX="-2147483647" maxX="2147483647" gdRefY="adj2" minY="-2147483647" maxY="2147483647">
+ <pos x="xPos" y="yPos" />
+ </ahXY>
+ </ahLst>
+
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="3cd4">
+ <pos x="hc" y="t" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="l" y="vc" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="hc" y="b" />
+ </cxn>
+ <cxn ang="0">
+ <pos x="r" y="vc" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="xPos" y="yPos" />
+ </cxn>
+ </cxnLst>
+
+ <rect l="l" t="t" r="r" b="b" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path>
+ <moveTo>
+ <pt x="l" y="t" />
+ </moveTo>
+ <lnTo>
+ <pt x="x1" y="t" />
+ </lnTo>
+ <lnTo>
+ <pt x="xt" y="yt" />
+ </lnTo>
+ <lnTo>
+ <pt x="x2" y="t" />
+ </lnTo>
+ <lnTo>
+ <pt x="r" y="t" />
+ </lnTo>
+ <lnTo>
+ <pt x="r" y="y1" />
+ </lnTo>
+ <lnTo>
+ <pt x="xr" y="yr" />
+ </lnTo>
+ <lnTo>
+ <pt x="r" y="y2" />
+ </lnTo>
+ <lnTo>
+ <pt x="r" y="b" />
+ </lnTo>
+ <lnTo>
+ <pt x="x2" y="b" />
+ </lnTo>
+ <lnTo>
+ <pt x="xb" y="yb" />
+ </lnTo>
+ <lnTo>
+ <pt x="x1" y="b" />
+ </lnTo>
+ <lnTo>
+ <pt x="l" y="b" />
+ </lnTo>
+ <lnTo>
+ <pt x="l" y="y2" />
+ </lnTo>
+ <lnTo>
+ <pt x="xl" y="yl" />
+ </lnTo>
+ <lnTo>
+ <pt x="l" y="y1" />
+ </lnTo>
+ <close />
+ </path>
+ </pathLst>
+
+ </wedgeRectCallout>
+ <wedgeRoundRectCallout>
+ <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="adj1" fmla="val -20833" />
+ <gd name="adj2" fmla="val 62500" />
+ <gd name="adj3" fmla="val 16667" />
+ </avLst>
+ <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <gd name="dxPos" fmla="*/ w adj1 100000" />
+ <gd name="dyPos" fmla="*/ h adj2 100000" />
+ <gd name="xPos" fmla="+- hc dxPos 0" />
+ <gd name="yPos" fmla="+- vc dyPos 0" />
+ <gd name="dq" fmla="*/ dxPos h w" />
+ <gd name="ady" fmla="abs dyPos" />
+ <gd name="adq" fmla="abs dq" />
+ <gd name="dz" fmla="+- ady 0 adq" />
+ <gd name="xg1" fmla="?: dxPos 7 2" />
+ <gd name="xg2" fmla="?: dxPos 10 5" />
+ <gd name="x1" fmla="*/ w xg1 12" />
+ <gd name="x2" fmla="*/ w xg2 12" />
+ <gd name="yg1" fmla="?: dyPos 7 2" />
+ <gd name="yg2" fmla="?: dyPos 10 5" />
+ <gd name="y1" fmla="*/ h yg1 12" />
+ <gd name="y2" fmla="*/ h yg2 12" />
+ <gd name="t1" fmla="?: dxPos l xPos" />
+ <gd name="xl" fmla="?: dz l t1" />
+ <gd name="t2" fmla="?: dyPos x1 xPos" />
+ <gd name="xt" fmla="?: dz t2 x1" />
+ <gd name="t3" fmla="?: dxPos xPos r" />
+ <gd name="xr" fmla="?: dz r t3" />
+ <gd name="t4" fmla="?: dyPos xPos x1" />
+ <gd name="xb" fmla="?: dz t4 x1" />
+ <gd name="t5" fmla="?: dxPos y1 yPos" />
+ <gd name="yl" fmla="?: dz y1 t5" />
+ <gd name="t6" fmla="?: dyPos t yPos" />
+ <gd name="yt" fmla="?: dz t6 t" />
+ <gd name="t7" fmla="?: dxPos yPos y1" />
+ <gd name="yr" fmla="?: dz y1 t7" />
+ <gd name="t8" fmla="?: dyPos yPos b" />
+ <gd name="yb" fmla="?: dz t8 b" />
+ <gd name="u1" fmla="*/ ss adj3 100000" />
+ <gd name="u2" fmla="+- r 0 u1" />
+ <gd name="v2" fmla="+- b 0 u1" />
+ <gd name="il" fmla="*/ u1 29289 100000" />
+ <gd name="ir" fmla="+- r 0 il" />
+ <gd name="ib" fmla="+- b 0 il" />
+ </gdLst>
+ <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <ahXY gdRefX="adj1" minX="-2147483647" maxX="2147483647" gdRefY="adj2" minY="-2147483647" maxY="2147483647">
+ <pos x="xPos" y="yPos" />
+ </ahXY>
+ </ahLst>
+ <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <cxn ang="3cd4">
+ <pos x="hc" y="t" />
+ </cxn>
+ <cxn ang="cd2">
+ <pos x="l" y="vc" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="hc" y="b" />
+ </cxn>
+ <cxn ang="0">
+ <pos x="r" y="vc" />
+ </cxn>
+ <cxn ang="cd4">
+ <pos x="xPos" y="yPos" />
+ </cxn>
+ </cxnLst>
+ <rect l="il" t="il" r="ir" b="ib" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" />
+ <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <path>
+ <moveTo>
+ <pt x="l" y="u1" />
+ </moveTo>
+ <arcTo wR="u1" hR="u1" stAng="cd2" swAng="cd4" />
+ <lnTo>
+ <pt x="x1" y="t" />
+ </lnTo>
+ <lnTo>
+ <pt x="xt" y="yt" />
+ </lnTo>
+ <lnTo>
+ <pt x="x2" y="t" />
+ </lnTo>
+ <lnTo>
+ <pt x="u2" y="t" />
+ </lnTo>
+ <arcTo wR="u1" hR="u1" stAng="3cd4" swAng="cd4" />
+ <lnTo>
+ <pt x="r" y="y1" />
+ </lnTo>
+ <lnTo>
+ <pt x="xr" y="yr" />
+ </lnTo>
+ <lnTo>
+ <pt x="r" y="y2" />
+ </lnTo>
+ <lnTo>
+ <pt x="r" y="v2" />
+ </lnTo>
+ <arcTo wR="u1" hR="u1" stAng="0" swAng="cd4" />
+ <lnTo>
+ <pt x="x2" y="b" />
+ </lnTo>
+ <lnTo>
+ <pt x="xb" y="yb" />
+ </lnTo>
+ <lnTo>
+ <pt x="x1" y="b" />
+ </lnTo>
+ <lnTo>
+ <pt x="u1" y="b" />
+ </lnTo>
+ <arcTo wR="u1" hR="u1" stAng="cd4" swAng="cd4" />
+ <lnTo>
+ <pt x="l" y="y2" />
+ </lnTo>
+ <lnTo>
+ <pt x="xl" y="yl" />
+ </lnTo>
+ <lnTo>
+ <pt x="l" y="y1" />
+ </lnTo>
+ <close />
+ </path>
+ </pathLst>
+ </wedgeRoundRectCallout>
+</presetShapeDefinitons>
diff --git a/oox/source/drawingml/diagram/constraintlistcontext.cxx b/oox/source/drawingml/diagram/constraintlistcontext.cxx
new file mode 100644
index 000000000..cc1f13026
--- /dev/null
+++ b/oox/source/drawingml/diagram/constraintlistcontext.cxx
@@ -0,0 +1,78 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ *
+ * This file incorporates work covered by the following license notice:
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed
+ * with this work for additional information regarding copyright
+ * ownership. The ASF licenses this file to you under the Apache
+ * License, Version 2.0 (the "License"); you may not use this file
+ * except in compliance with the License. You may obtain a copy of
+ * the License at http://www.apache.org/licenses/LICENSE-2.0 .
+ */
+
+#include "constraintlistcontext.hxx"
+#include <oox/helper/attributelist.hxx>
+#include <oox/token/namespaces.hxx>
+#include <oox/token/tokens.hxx>
+
+using namespace ::oox::core;
+using namespace ::com::sun::star::uno;
+using namespace ::com::sun::star::xml::sax;
+
+namespace oox::drawingml {
+
+// CT_ConstraintLists
+ConstraintListContext::ConstraintListContext( ContextHandler2Helper const & rParent,
+ const LayoutAtomPtr &pNode )
+ : ContextHandler2( rParent )
+ , mpNode( pNode )
+{
+ assert( pNode && "Node must NOT be NULL" );
+}
+
+ConstraintListContext::~ConstraintListContext()
+{
+}
+
+ContextHandlerRef
+ConstraintListContext::onCreateContext( ::sal_Int32 aElement,
+ const AttributeList& rAttribs )
+{
+ switch( aElement )
+ {
+ case DGM_TOKEN( constr ):
+ {
+ auto pNode = std::make_shared<ConstraintAtom>(mpNode->getLayoutNode());
+ LayoutAtom::connect(mpNode, pNode);
+
+ Constraint& rConstraint = pNode->getConstraint();
+ rConstraint.mnFor = rAttribs.getToken( XML_for, XML_none );
+ rConstraint.msForName = rAttribs.getString( XML_forName, "" );
+ rConstraint.mnPointType = rAttribs.getToken( XML_ptType, XML_none );
+ rConstraint.mnType = rAttribs.getToken( XML_type, XML_none );
+ rConstraint.mnRefFor = rAttribs.getToken( XML_refFor, XML_none );
+ rConstraint.msRefForName = rAttribs.getString( XML_refForName, "" );
+ rConstraint.mnRefType = rAttribs.getToken( XML_refType, XML_none );
+ rConstraint.mnRefPointType = rAttribs.getToken( XML_refPtType, XML_none );
+ rConstraint.mfFactor = rAttribs.getDouble( XML_fact, 1.0 );
+ rConstraint.mfValue = rAttribs.getDouble( XML_val, 0.0 );
+ rConstraint.mnOperator = rAttribs.getToken( XML_op, XML_none );
+ break;
+ }
+ default:
+ break;
+ }
+
+ return this;
+}
+
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/oox/source/drawingml/diagram/constraintlistcontext.hxx b/oox/source/drawingml/diagram/constraintlistcontext.hxx
new file mode 100644
index 000000000..ba3b59355
--- /dev/null
+++ b/oox/source/drawingml/diagram/constraintlistcontext.hxx
@@ -0,0 +1,43 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ *
+ * This file incorporates work covered by the following license notice:
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed
+ * with this work for additional information regarding copyright
+ * ownership. The ASF licenses this file to you under the Apache
+ * License, Version 2.0 (the "License"); you may not use this file
+ * except in compliance with the License. You may obtain a copy of
+ * the License at http://www.apache.org/licenses/LICENSE-2.0 .
+ */
+
+#ifndef INCLUDED_OOX_SOURCE_DRAWINGML_DIAGRAM_CONSTRAINTLISTCONTEXT_HXX
+#define INCLUDED_OOX_SOURCE_DRAWINGML_DIAGRAM_CONSTRAINTLISTCONTEXT_HXX
+
+#include <oox/core/contexthandler2.hxx>
+#include "diagramlayoutatoms.hxx"
+
+namespace oox::drawingml {
+
+class ConstraintListContext : public ::oox::core::ContextHandler2
+{
+public:
+ ConstraintListContext( ContextHandler2Helper const & rParent, const LayoutAtomPtr &pNode );
+ virtual ~ConstraintListContext() override;
+
+ virtual ::oox::core::ContextHandlerRef onCreateContext( ::sal_Int32 Element, const AttributeList& rAttribs ) override;
+private:
+ LayoutAtomPtr mpNode;
+};
+
+}
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/oox/source/drawingml/diagram/datamodel.cxx b/oox/source/drawingml/diagram/datamodel.cxx
new file mode 100644
index 000000000..97691af43
--- /dev/null
+++ b/oox/source/drawingml/diagram/datamodel.cxx
@@ -0,0 +1,468 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ *
+ * This file incorporates work covered by the following license notice:
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed
+ * with this work for additional information regarding copyright
+ * ownership. The ASF licenses this file to you under the Apache
+ * License, Version 2.0 (the "License"); you may not use this file
+ * except in compliance with the License. You may obtain a copy of
+ * the License at http://www.apache.org/licenses/LICENSE-2.0 .
+ */
+
+#include "datamodel.hxx"
+
+#include <rtl/ustrbuf.hxx>
+#include <sal/log.hxx>
+#include <drawingml/fillproperties.hxx>
+#include <drawingml/textbody.hxx>
+#include <drawingml/textparagraph.hxx>
+#include <drawingml/textrun.hxx>
+#include <oox/drawingml/shape.hxx>
+#include <com/sun/star/beans/XPropertyState.hpp>
+#include <com/sun/star/drawing/FillStyle.hpp>
+#include <com/sun/star/drawing/LineStyle.hpp>
+#include <editeng/unoprnms.hxx>
+
+#include <unordered_set>
+
+using namespace ::com::sun::star;
+
+namespace oox::drawingml {
+
+Shape* DiagramData::getOrCreateAssociatedShape(const svx::diagram::Point& rPoint, bool bCreateOnDemand) const
+{
+ if(maPointShapeMap.end() == maPointShapeMap.find(rPoint.msModelId))
+ {
+ const_cast<DiagramData*>(this)->maPointShapeMap[rPoint.msModelId] = ShapePtr();
+ }
+
+ const ShapePtr& rShapePtr = maPointShapeMap.find(rPoint.msModelId)->second;
+
+ if(!rShapePtr && bCreateOnDemand)
+ {
+ const_cast<ShapePtr&>(rShapePtr) = std::make_shared<Shape>();
+
+ // If we did create a new oox::drawingml::Shape, directly apply
+ // available data from the Diagram ModelData to it as preparation
+ restoreDataFromModelToShapeAfterReCreation(rPoint, *rShapePtr);
+ }
+
+ return rShapePtr.get();
+}
+
+void DiagramData::restoreDataFromModelToShapeAfterReCreation(const svx::diagram::Point& rPoint, Shape& rNewShape)
+{
+ // If we did create a new oox::drawingml::Shape, directly apply
+ // available data from the Diagram ModelData to it as preparation
+
+ // This is e.g. the Text, but may get more (styles?)
+ if(!rPoint.msTextBody->msText.isEmpty())
+ {
+ TextBodyPtr aNewTextBody(std::make_shared<TextBody>());
+ rNewShape.setTextBody(aNewTextBody);
+ TextRunPtr pTextRun = std::make_shared<TextRun>();
+ pTextRun->getText() = rPoint.msTextBody->msText;
+ aNewTextBody->addParagraph().addRun(pTextRun);
+
+ if(!rPoint.msTextBody->maTextProps.empty())
+ {
+ oox::PropertyMap& rTargetMap(aNewTextBody->getTextProperties().maPropertyMap);
+
+ for (auto const& prop : rPoint.msTextBody->maTextProps)
+ {
+ const sal_Int32 nPropId(oox::PropertyMap::getPropertyId(prop.first));
+ if(nPropId > 0)
+ rTargetMap.setAnyProperty(nPropId, prop.second);
+ }
+ }
+ }
+}
+
+static void addProperty(const OUString& rName,
+ const css::uno::Reference< css::beans::XPropertySetInfo >& xInfo,
+ std::vector< std::pair< OUString, css::uno::Any >>& rTarget,
+ const css::uno::Reference< css::beans::XPropertySet >& xPropSet )
+{
+ if(xInfo->hasPropertyByName(rName))
+ rTarget.push_back(std::pair(OUString(rName), xPropSet->getPropertyValue(rName)));
+}
+
+void DiagramData::secureStyleDataFromShapeToModel(::oox::drawingml::Shape& rShape)
+{
+ const std::vector< ShapePtr >& rChildren(rShape.getChildren());
+
+ if(!rChildren.empty())
+ {
+ // group shape
+ for (auto& child : rChildren)
+ {
+ secureStyleDataFromShapeToModel(*child);
+ }
+
+ // if group shape we are done. Do not secure properties for group shapes
+ return;
+ }
+
+ // we need a XShape
+ const css::uno::Reference< css::drawing::XShape > &rXShape(rShape.getXShape());
+ if(!rXShape)
+ return;
+
+ // we need a ModelID for association
+ if(rShape.getDiagramDataModelID().isEmpty())
+ return;
+
+ // define target to save to
+ svx::diagram::PointStyle* pTarget(nullptr);
+ const bool bIsBackgroundShape(rShape.getDiagramDataModelID() == msBackgroundShapeModelID);
+
+ if(bIsBackgroundShape)
+ {
+ // if BackgroundShape, create properties & set as target
+ if(!maBackgroundShapeStyle)
+ maBackgroundShapeStyle = std::make_shared< svx::diagram::PointStyle >();
+ pTarget = maBackgroundShapeStyle.get();
+ }
+ else
+ {
+ // if Shape, seek association
+ for (auto & point : maPoints)
+ {
+ if(point.msModelId == rShape.getDiagramDataModelID())
+ {
+ // found - create properties & set as target
+ pTarget = point.msPointStylePtr.get();
+
+ // we are done, there is no 2nd shape with the same ModelID by definition
+ break;
+ }
+ }
+ }
+
+ // no target -> nothing to do
+ if(nullptr == pTarget)
+ return;
+
+#ifdef DBG_UTIL
+ // to easier decide which additional properties may/should be preserved,
+ // create a full list of set properties to browse/decide (in debugger)
+ const css::uno::Reference< css::beans::XPropertyState > xAllPropStates(rXShape, css::uno::UNO_QUERY);
+ const css::uno::Reference< css::beans::XPropertySet > xAllPropSet( rXShape, css::uno::UNO_QUERY );
+ const css::uno::Sequence< css::beans::Property > allSequence(xAllPropSet->getPropertySetInfo()->getProperties());
+ std::vector< std::pair< OUString, css::uno::Any >> allSetProps;
+ for (auto& rProp : allSequence)
+ {
+ try
+ {
+ if (xAllPropStates->getPropertyState(rProp.Name) == css::beans::PropertyState::PropertyState_DIRECT_VALUE)
+ {
+ css::uno::Any aValue(xAllPropSet->getPropertyValue(rProp.Name));
+ if(aValue.hasValue())
+ allSetProps.push_back(std::pair(rProp.Name, aValue));
+ }
+ }
+ catch (...)
+ {
+ }
+ }
+#endif
+
+ const css::uno::Reference< css::beans::XPropertySet > xPropSet( rXShape, css::uno::UNO_QUERY );
+ if(!xPropSet)
+ return;
+
+ const css::uno::Reference< css::lang::XServiceInfo > xServiceInfo( rXShape, css::uno::UNO_QUERY );
+ if(!xServiceInfo)
+ return;
+
+ const css::uno::Reference< css::beans::XPropertySetInfo > xInfo(xPropSet->getPropertySetInfo());
+ if (!xInfo.is())
+ return;
+
+ // Note: The Text may also be secured here, so it may also be possible to
+ // secure/store it at PointStyle instead of at TextBody, same maybe evaluated
+ // for the text attributes - where when securing here the attributes would be
+ // in our UNO API format already.
+ // if(xServiceInfo->supportsService("com.sun.star.drawing.Text"))
+ // {
+ // css::uno::Reference< css::text::XText > xText(rXShape, css::uno::UNO_QUERY);
+ // const OUString aText(xText->getString());
+ //
+ // if(!aText.isEmpty())
+ // {
+ // }
+ // }
+
+ // Add all kinds of properties that are needed to re-create the XShape.
+ // For now this is a minimal example-selection, it will need to be extended
+ // over time for all kind of cases/properties
+
+ // text properties
+ if(!bIsBackgroundShape
+ && xServiceInfo->supportsService("com.sun.star.drawing.TextProperties"))
+ {
+ addProperty(UNO_NAME_CHAR_COLOR, xInfo, pTarget->maProperties, xPropSet);
+ addProperty(UNO_NAME_CHAR_HEIGHT, xInfo, pTarget->maProperties, xPropSet);
+ addProperty(UNO_NAME_CHAR_SHADOWED, xInfo, pTarget->maProperties, xPropSet);
+ addProperty(UNO_NAME_CHAR_WEIGHT, xInfo, pTarget->maProperties, xPropSet);
+ }
+
+ // fill properties
+ if(xServiceInfo->supportsService("com.sun.star.drawing.FillProperties"))
+ {
+ css::drawing::FillStyle eFillStyle(css::drawing::FillStyle_NONE);
+ if (xInfo->hasPropertyByName(UNO_NAME_FILLSTYLE))
+ xPropSet->getPropertyValue(UNO_NAME_FILLSTYLE) >>= eFillStyle;
+
+ if(css::drawing::FillStyle_NONE != eFillStyle)
+ {
+ addProperty(UNO_NAME_FILLSTYLE, xInfo, pTarget->maProperties, xPropSet);
+
+ switch(eFillStyle)
+ {
+ case css::drawing::FillStyle_SOLID:
+ {
+ addProperty(UNO_NAME_FILLCOLOR, xInfo, pTarget->maProperties, xPropSet);
+ break;
+ }
+ default:
+ case css::drawing::FillStyle_NONE:
+ case css::drawing::FillStyle_GRADIENT:
+ case css::drawing::FillStyle_HATCH:
+ case css::drawing::FillStyle_BITMAP:
+ break;
+ }
+ }
+ }
+
+ // line properties
+ if(!bIsBackgroundShape
+ && xServiceInfo->supportsService("com.sun.star.drawing.LineProperties"))
+ {
+ css::drawing::LineStyle eLineStyle(css::drawing::LineStyle_NONE);
+ if (xInfo->hasPropertyByName(UNO_NAME_LINESTYLE))
+ xPropSet->getPropertyValue(UNO_NAME_LINESTYLE) >>= eLineStyle;
+
+ if(css::drawing::LineStyle_NONE != eLineStyle)
+ {
+ addProperty(UNO_NAME_LINESTYLE, xInfo, pTarget->maProperties, xPropSet);
+ addProperty(UNO_NAME_LINECOLOR, xInfo, pTarget->maProperties, xPropSet);
+ addProperty(UNO_NAME_LINEWIDTH, xInfo, pTarget->maProperties, xPropSet);
+
+ switch(eLineStyle)
+ {
+ case css::drawing::LineStyle_SOLID:
+ break;
+ default:
+ case css::drawing::LineStyle_NONE:
+ case css::drawing::LineStyle_DASH:
+ break;
+ }
+ }
+ }
+}
+
+void DiagramData::secureDataFromShapeToModelAfterDiagramImport(::oox::drawingml::Shape& rRootShape)
+{
+ const std::vector< ShapePtr >& rChildren(rRootShape.getChildren());
+
+ for (auto& child : rChildren)
+ {
+ secureStyleDataFromShapeToModel(*child);
+ }
+
+ // After Diagram import, parts of the Diagram ModelData is at the
+ // oox::drawingml::Shape. Since these objects are temporary helpers,
+ // secure that data at the Diagram ModelData by copying.
+
+ // This is currently mainly the Text, but may get more (styles?)
+ for (auto & point : maPoints)
+ {
+ Shape* pShapeCandidate(getOrCreateAssociatedShape(point));
+
+ if(nullptr != pShapeCandidate)
+ {
+ if(pShapeCandidate->getTextBody() && !pShapeCandidate->getTextBody()->isEmpty())
+ {
+ point.msTextBody->msText = pShapeCandidate->getTextBody()->toString();
+
+ const uno::Sequence< beans::PropertyValue > aTextProps(
+ pShapeCandidate->getTextBody()->getTextProperties().maPropertyMap.makePropertyValueSequence());
+
+ for (auto const& prop : aTextProps)
+ point.msTextBody->maTextProps.push_back(std::pair(prop.Name, prop.Value));
+ }
+
+ // At this place a mechanism to find missing data should be added:
+ // Create a Shape from so-far secured data & compare it with the
+ // imported one. Report differences to allow extending the mechanism
+ // more easily.
+#ifdef DBG_UTIL
+ // The original is pShapeCandidate, re-create potential new oox::drawingml::Shape
+ // as aNew to be able to compare these
+ ShapePtr aNew(std::make_shared<Shape>());
+ restoreDataFromModelToShapeAfterReCreation(point, *aNew);
+
+ // Unfortunately oox::drawingml::Shape has no operator==. I tried to add
+ // one, but that is too expensive. I stopped at oox::drawingml::Color.
+ // To compare it is necessary to use the debugger, or for single aspects
+ // of the oox data it might be possible to call local dump() methods at
+ // both instances to compare them/their output
+
+ // bool bSame(aNew.get() == pShapeCandidate);
+#endif
+ }
+ }
+}
+
+void DiagramData::restoreStyleDataFromShapeToModel(::oox::drawingml::Shape& rShape)
+{
+ const std::vector< ShapePtr >& rChildren(rShape.getChildren());
+
+ if(!rChildren.empty())
+ {
+ // group shape
+ for (auto& child : rChildren)
+ {
+ restoreStyleDataFromShapeToModel(*child);
+ }
+
+ // if group shape we are done. Do not restore properties for group shapes
+ return;
+ }
+
+ // we need a XShape
+ const css::uno::Reference< css::drawing::XShape > &rXShape(rShape.getXShape());
+ if(!rXShape)
+ return;
+
+ // we need a ModelID for association
+ if(rShape.getDiagramDataModelID().isEmpty())
+ return;
+
+ // define source to save to
+ svx::diagram::PointStyle* pSource(nullptr);
+
+ if(rShape.getDiagramDataModelID() == msBackgroundShapeModelID)
+ {
+ // if BackgroundShape, set BackgroundShapeStyle as source
+ if(maBackgroundShapeStyle)
+ pSource = maBackgroundShapeStyle.get();
+ }
+ else
+ {
+ // if Shape, seek association
+ for (auto & point : maPoints)
+ {
+ if(point.msModelId == rShape.getDiagramDataModelID())
+ {
+ // found - create properties & set as source
+ pSource = point.msPointStylePtr.get();
+
+ // we are done, there is no 2nd shape with the same ModelID by definition
+ break;
+ }
+ }
+ }
+
+ // no source -> nothing to do
+ if(nullptr == pSource)
+ return;
+
+ // get target PropertySet of new XShape
+ css::uno::Reference<css::beans::XPropertySet> xPropSet(rXShape, css::uno::UNO_QUERY);
+ if(!xPropSet)
+ return;
+
+ // apply properties
+ for (auto const& prop : pSource->maProperties)
+ {
+ xPropSet->setPropertyValue(prop.first, prop.second);
+ }
+}
+
+void DiagramData::restoreDataFromShapeToModelAfterDiagramImport(::oox::drawingml::Shape& rRootShape)
+{
+ const std::vector< ShapePtr >& rChildren(rRootShape.getChildren());
+
+ for (auto& child : rChildren)
+ {
+ restoreStyleDataFromShapeToModel(*child);
+ }
+}
+
+DiagramData::DiagramData()
+: svx::diagram::DiagramData()
+, mpBackgroundShapeFillProperties( std::make_shared<FillProperties>() )
+{
+}
+
+DiagramData::~DiagramData()
+{
+}
+
+static void Connection_dump(const svx::diagram::Connection& rConnection)
+{
+ SAL_INFO(
+ "oox.drawingml",
+ "cnx modelId " << rConnection.msModelId << ", srcId " << rConnection.msSourceId << ", dstId "
+ << rConnection.msDestId << ", parTransId " << rConnection.msParTransId << ", presId "
+ << rConnection.msPresId << ", sibTransId " << rConnection.msSibTransId << ", srcOrd "
+ << rConnection.mnSourceOrder << ", dstOrd " << rConnection.mnDestOrder);
+}
+
+static void Point_dump(const svx::diagram::Point& rPoint, const Shape* pShape)
+{
+ SAL_INFO(
+ "oox.drawingml",
+ "pt text " << pShape << ", cnxId " << rPoint.msCnxId << ", modelId "
+ << rPoint.msModelId << ", type " << rPoint.mnXMLType);
+}
+
+void DiagramData::dump() const
+{
+ SAL_INFO("oox.drawingml", "Dgm: DiagramData # of cnx: " << maConnections.size() );
+ for (const auto& rConnection : maConnections)
+ Connection_dump(rConnection);
+
+ SAL_INFO("oox.drawingml", "Dgm: DiagramData # of pt: " << maPoints.size() );
+ for (const auto& rPoint : maPoints)
+ Point_dump(rPoint, getOrCreateAssociatedShape(rPoint));
+}
+
+void DiagramData::buildDiagramDataModel(bool bClearOoxShapes)
+{
+ if(bClearOoxShapes)
+ {
+ // Delete/remove all existing oox::drawingml::Shape
+ maPointShapeMap.clear();
+ }
+
+ // call parent
+ svx::diagram::DiagramData::buildDiagramDataModel(bClearOoxShapes);
+
+ if(bClearOoxShapes)
+ {
+ // re-create all existing oox::drawingml::Shape
+ svx::diagram::Points& rPoints = getPoints();
+
+ for (auto & point : rPoints)
+ {
+ // Create/get shape. Re-create here, that may also set needed
+ // and available data from the Diagram ModelData at the Shape
+ getOrCreateAssociatedShape(point, true);
+ }
+ }
+}
+
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/oox/source/drawingml/diagram/datamodel.hxx b/oox/source/drawingml/diagram/datamodel.hxx
new file mode 100644
index 000000000..21137f6e0
--- /dev/null
+++ b/oox/source/drawingml/diagram/datamodel.hxx
@@ -0,0 +1,80 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ *
+ * This file incorporates work covered by the following license notice:
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed
+ * with this work for additional information regarding copyright
+ * ownership. The ASF licenses this file to you under the Apache
+ * License, Version 2.0 (the "License"); you may not use this file
+ * except in compliance with the License. You may obtain a copy of
+ * the License at http://www.apache.org/licenses/LICENSE-2.0 .
+ */
+
+#ifndef INCLUDED_OOX_SOURCE_DRAWINGML_DIAGRAM_DATAMODEL_HXX
+#define INCLUDED_OOX_SOURCE_DRAWINGML_DIAGRAM_DATAMODEL_HXX
+
+#include <map>
+#include <memory>
+#include <vector>
+
+#include <rtl/ustring.hxx>
+
+#include <svx/diagram/datamodel.hxx>
+#include <oox/drawingml/drawingmltypes.hxx>
+#include <oox/helper/helper.hxx>
+#include <oox/token/tokens.hxx>
+
+namespace oox::drawingml {
+
+class DiagramData : public svx::diagram::DiagramData
+{
+public:
+ typedef std::map< OUString, ShapePtr > PointShapeMap;
+
+ DiagramData();
+ virtual ~DiagramData();
+
+ // creates temporary processing data from model data
+ virtual void buildDiagramDataModel(bool bClearOoxShapes);
+
+ FillPropertiesPtr& getBackgroundShapeFillProperties() { return mpBackgroundShapeFillProperties; }
+ virtual void dump() const;
+
+ Shape* getOrCreateAssociatedShape(const svx::diagram::Point& rPoint, bool bCreateOnDemand = false) const;
+
+ // get/set data between Diagram DataModel and oox::drawingml::Shape
+ void secureDataFromShapeToModelAfterDiagramImport(::oox::drawingml::Shape& rRootShape);
+ void restoreDataFromShapeToModelAfterDiagramImport(::oox::drawingml::Shape& rRootShape);
+ static void restoreDataFromModelToShapeAfterReCreation(const svx::diagram::Point& rPoint, Shape& rNewShape);
+
+protected:
+ void secureStyleDataFromShapeToModel(::oox::drawingml::Shape& rShape);
+ void restoreStyleDataFromShapeToModel(::oox::drawingml::Shape& rShape);
+
+ // The model definition, the parts *only* available in oox. Also look for already
+ // defined ModelData in svx::diagram::DiagramData
+
+ // - FillStyle for Diagram Background (empty constructed, may stay empty)
+ FillPropertiesPtr mpBackgroundShapeFillProperties;
+
+ // temporary processing data, deleted when using build(). Association
+ // map between oox::drawingml::Shape and svx::diagram::Point ModelData
+ PointShapeMap maPointShapeMap;
+};
+
+// Oox-local definition of DiagramData. Doing and using this on Oox
+// allows to do much less static_cast(s) - if at all from svx::diagram::DiagramData
+typedef std::shared_ptr< DiagramData > OoxDiagramDataPtr;
+
+}
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/oox/source/drawingml/diagram/datamodelcontext.cxx b/oox/source/drawingml/diagram/datamodelcontext.cxx
new file mode 100644
index 000000000..4f0e3f047
--- /dev/null
+++ b/oox/source/drawingml/diagram/datamodelcontext.cxx
@@ -0,0 +1,385 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ *
+ * This file incorporates work covered by the following license notice:
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed
+ * with this work for additional information regarding copyright
+ * ownership. The ASF licenses this file to you under the Apache
+ * License, Version 2.0 (the "License"); you may not use this file
+ * except in compliance with the License. You may obtain a copy of
+ * the License at http://www.apache.org/licenses/LICENSE-2.0 .
+ */
+
+#include "datamodelcontext.hxx"
+#include <oox/helper/attributelist.hxx>
+#include <drawingml/misccontexts.hxx>
+#include <drawingml/shapepropertiescontext.hxx>
+#include <drawingml/textbodycontext.hxx>
+#include <oox/token/namespaces.hxx>
+#include <oox/token/tokens.hxx>
+
+using namespace ::oox::core;
+using namespace ::com::sun::star::xml::sax;
+using namespace ::com::sun::star::uno;
+
+namespace oox::drawingml {
+
+namespace {
+
+// CT_CxnList
+class CxnListContext
+ : public ContextHandler2
+{
+public:
+ CxnListContext( ContextHandler2Helper const & rParent,
+ svx::diagram::Connections & aConnections )
+ : ContextHandler2( rParent )
+ , mrConnection( aConnections )
+ {
+ }
+
+ virtual ContextHandlerRef
+ onCreateContext( sal_Int32 aElementToken,
+ const AttributeList& rAttribs ) override
+ {
+ switch( aElementToken )
+ {
+ case DGM_TOKEN( cxn ):
+ {
+ mrConnection.emplace_back( );
+ svx::diagram::Connection& rConnection=mrConnection.back();
+
+ rConnection.mnXMLType = static_cast<svx::diagram::TypeConstant>(rAttribs.getToken( XML_type, XML_parOf ));
+ rConnection.msModelId = rAttribs.getString( XML_modelId ).get();
+ rConnection.msSourceId = rAttribs.getString( XML_srcId ).get();
+ rConnection.msDestId = rAttribs.getString( XML_destId ).get();
+ rConnection.msPresId = rAttribs.getString( XML_presId ).get();
+ rConnection.msSibTransId = rAttribs.getString( XML_sibTransId ).get();
+ rConnection.msParTransId = rAttribs.getString( XML_parTransId ).get();
+ rConnection.mnSourceOrder = rAttribs.getInteger( XML_srcOrd, 0 );
+ rConnection.mnDestOrder = rAttribs.getInteger( XML_destOrd, 0 );
+
+ // skip CT_extLst
+ return nullptr;
+ }
+ default:
+ break;
+ }
+
+ return this;
+ }
+private:
+ svx::diagram::Connections& mrConnection;
+};
+
+// CT_presLayoutVars
+class PresLayoutVarsContext
+ : public ContextHandler2
+{
+public:
+ PresLayoutVarsContext( ContextHandler2Helper const & rParent,
+ svx::diagram::Point & rPoint ) :
+ ContextHandler2( rParent ),
+ mrPoint( rPoint )
+ {
+ }
+ virtual ContextHandlerRef
+ onCreateContext( sal_Int32 aElementToken,
+ const AttributeList& rAttribs ) override
+ {
+ switch( aElementToken )
+ {
+ // TODO
+ case DGM_TOKEN( animLvl ):
+ case DGM_TOKEN( animOne ):
+ break;
+ case DGM_TOKEN( bulletEnabled ):
+ mrPoint.mbBulletEnabled = rAttribs.getBool( XML_val, false );
+ break;
+ case DGM_TOKEN( chMax ):
+ mrPoint.mnMaxChildren = rAttribs.getInteger( XML_val, -1 );
+ break;
+ case DGM_TOKEN( chPref ):
+ mrPoint.mnPreferredChildren = rAttribs.getInteger( XML_val, -1 );
+ break;
+ case DGM_TOKEN( dir ):
+ mrPoint.mnDirection = rAttribs.getToken( XML_val, XML_norm );
+ break;
+ case DGM_TOKEN( hierBranch ):
+ {
+ // need to convert from oox::OptValue to std::optional since 1st is not available in svx
+ const OptValue< sal_Int32 > aOptVal(rAttribs.getToken( XML_val ));
+ if(aOptVal.has())
+ mrPoint.moHierarchyBranch = aOptVal.get();
+ break;
+ }
+ case DGM_TOKEN( orgChart ):
+ mrPoint.mbOrgChartEnabled = rAttribs.getBool( XML_val, false );
+ break;
+ case DGM_TOKEN( resizeHandles ):
+ mrPoint.mnResizeHandles = rAttribs.getToken( XML_val, XML_rel );
+ break;
+ default:
+ break;
+ }
+
+ return this;
+ }
+
+private:
+ svx::diagram::Point& mrPoint;
+};
+
+// CT_prSet
+class PropertiesContext
+ : public ContextHandler2
+{
+public:
+ PropertiesContext( ContextHandler2Helper const & rParent,
+ svx::diagram::Point & rPoint,
+ const AttributeList& rAttribs ) :
+ ContextHandler2( rParent ),
+ mrPoint( rPoint )
+ {
+ mrPoint.msColorTransformCategoryId = rAttribs.getString( XML_csCatId, "" );
+ mrPoint.msColorTransformTypeId = rAttribs.getString( XML_csTypeId, "" );
+ mrPoint.msLayoutCategoryId = rAttribs.getString( XML_loCatId, "" );
+ mrPoint.msLayoutTypeId = rAttribs.getString( XML_loTypeId, "" );
+ mrPoint.msPlaceholderText = rAttribs.getString( XML_phldrT, "" );
+ mrPoint.msPresentationAssociationId = rAttribs.getString( XML_presAssocID, "" );
+ mrPoint.msPresentationLayoutName = rAttribs.getString( XML_presName, "" );
+ mrPoint.msPresentationLayoutStyleLabel = rAttribs.getString( XML_presStyleLbl, "" );
+ mrPoint.msQuickStyleCategoryId = rAttribs.getString( XML_qsCatId, "" );
+ mrPoint.msQuickStyleTypeId = rAttribs.getString( XML_qsTypeId, "" );
+
+ mrPoint.mnCustomAngle = rAttribs.getInteger( XML_custAng, -1 );
+ mrPoint.mnPercentageNeighbourWidth = rAttribs.getInteger( XML_custLinFactNeighborX, -1 );
+ mrPoint.mnPercentageNeighbourHeight = rAttribs.getInteger( XML_custLinFactNeighborY, -1 );
+ mrPoint.mnPercentageOwnWidth = rAttribs.getInteger( XML_custLinFactX, -1 );
+ mrPoint.mnPercentageOwnHeight = rAttribs.getInteger( XML_custLinFactY, -1 );
+ mrPoint.mnIncludeAngleScale = rAttribs.getInteger( XML_custRadScaleInc, -1 );
+ mrPoint.mnRadiusScale = rAttribs.getInteger( XML_custRadScaleRad, -1 );
+ mrPoint.mnWidthScale = rAttribs.getInteger( XML_custScaleX, -1 );
+ mrPoint.mnHeightScale = rAttribs.getInteger( XML_custScaleY, -1 );
+ mrPoint.mnWidthOverride = rAttribs.getInteger( XML_custSzX, -1 );
+ mrPoint.mnHeightOverride = rAttribs.getInteger( XML_custSzY, -1 );
+ mrPoint.mnLayoutStyleCount = rAttribs.getInteger( XML_presStyleCnt, -1 );
+ mrPoint.mnLayoutStyleIndex = rAttribs.getInteger( XML_presStyleIdx, -1 );
+
+ mrPoint.mbCoherent3DOffset = rAttribs.getBool( XML_coherent3DOff, false );
+ mrPoint.mbCustomHorizontalFlip = rAttribs.getBool( XML_custFlipHor, false );
+ mrPoint.mbCustomVerticalFlip = rAttribs.getBool( XML_custFlipVert, false );
+ mrPoint.mbCustomText = rAttribs.getBool( XML_custT, false );
+ mrPoint.mbIsPlaceholder = rAttribs.getBool( XML_phldr, false );
+ }
+
+ virtual ContextHandlerRef
+ onCreateContext( sal_Int32 aElementToken,
+ const AttributeList& ) override
+ {
+ switch( aElementToken )
+ {
+ case DGM_TOKEN( presLayoutVars ):
+ return new PresLayoutVarsContext( *this, mrPoint );
+ case DGM_TOKEN( style ):
+ // skip CT_shapeStyle
+ return nullptr;
+ default:
+ break;
+ }
+ return this;
+ }
+
+private:
+ svx::diagram::Point& mrPoint;
+};
+
+// CL_Pt
+class PtContext
+ : public ContextHandler2
+{
+public:
+ PtContext( ContextHandler2Helper const& rParent,
+ const AttributeList& rAttribs,
+ svx::diagram::Point& rPoint,
+ DiagramData& rDiagramData):
+ ContextHandler2( rParent ),
+ mrPoint( rPoint ),
+ mrDiagramData( rDiagramData )
+ {
+ mrPoint.msModelId = rAttribs.getString( XML_modelId ).get();
+
+ // the default type is XML_node
+ const sal_Int32 nType = rAttribs.getToken( XML_type, XML_node );
+ mrPoint.mnXMLType = static_cast<svx::diagram::TypeConstant>(nType);
+
+ // ignore the cxnId unless it is this type. See 5.15.3.1.3 in Primer
+ if( ( nType == XML_parTrans ) || ( nType == XML_sibTrans ) )
+ mrPoint.msCnxId = rAttribs.getString( XML_cxnId ).get();
+ }
+
+ virtual ContextHandlerRef
+ onCreateContext( sal_Int32 aElementToken,
+ const AttributeList& rAttribs ) override
+ {
+ switch( aElementToken )
+ {
+ case DGM_TOKEN( extLst ):
+ return nullptr;
+ case DGM_TOKEN( prSet ):
+ return new PropertiesContext( *this, mrPoint, rAttribs );
+ case DGM_TOKEN( spPr ):
+ {
+ Shape* pShape(mrDiagramData.getOrCreateAssociatedShape(mrPoint, true));
+ return new ShapePropertiesContext( *this, *pShape );
+ }
+ case DGM_TOKEN( t ):
+ {
+ Shape* pShape(mrDiagramData.getOrCreateAssociatedShape(mrPoint, true));
+ TextBodyPtr xTextBody = std::make_shared<TextBody>();
+ pShape->setTextBody( xTextBody );
+ return new TextBodyContext( *this, *xTextBody );
+ }
+ default:
+ break;
+ }
+ return this;
+ }
+
+private:
+ svx::diagram::Point& mrPoint;
+ DiagramData& mrDiagramData;
+};
+
+// CT_PtList
+class PtListContext
+ : public ContextHandler2
+{
+public:
+ PtListContext( ContextHandler2Helper const & rParent, svx::diagram::Points& rPoints, DiagramData& rDiagramData) :
+ ContextHandler2( rParent ),
+ mrPoints( rPoints ),
+ mrDiagramData( rDiagramData )
+ {}
+ virtual ContextHandlerRef
+ onCreateContext( sal_Int32 aElementToken,
+ const AttributeList& rAttribs ) override
+ {
+ switch( aElementToken )
+ {
+ case DGM_TOKEN( pt ):
+ {
+ // CT_Pt
+ mrPoints.emplace_back( );
+ return new PtContext( *this, rAttribs, mrPoints.back(), mrDiagramData );
+ }
+ default:
+ break;
+ }
+ return this;
+ }
+
+private:
+ svx::diagram::Points& mrPoints;
+ DiagramData& mrDiagramData;
+};
+
+// CT_BackgroundFormatting
+class BackgroundFormattingContext
+ : public ContextHandler2
+{
+public:
+ BackgroundFormattingContext( ContextHandler2Helper const & rParent, OoxDiagramDataPtr const& pModel )
+ : ContextHandler2( rParent )
+ , mpDataModel( pModel )
+ {
+ assert( pModel && "the data model MUST NOT be NULL" );
+ }
+
+ virtual ContextHandlerRef
+ onCreateContext( sal_Int32 aElementToken,
+ const AttributeList& rAttribs ) override
+ {
+ switch( aElementToken )
+ {
+ case A_TOKEN( blipFill ):
+ case A_TOKEN( gradFill ):
+ case A_TOKEN( grpFill ):
+ case A_TOKEN( noFill ):
+ case A_TOKEN( pattFill ):
+ case A_TOKEN( solidFill ):
+ // EG_FillProperties
+ return FillPropertiesContext::createFillContext(
+ *this, aElementToken, rAttribs, *mpDataModel->getBackgroundShapeFillProperties() );
+ case A_TOKEN( effectDag ):
+ case A_TOKEN( effectLst ):
+ // TODO
+ // EG_EffectProperties
+ break;
+ default:
+ break;
+ }
+ return this;
+ }
+private:
+ OoxDiagramDataPtr mpDataModel;
+};
+
+}
+
+DataModelContext::DataModelContext( ContextHandler2Helper const& rParent,
+ const OoxDiagramDataPtr& pDataModel )
+ : ContextHandler2( rParent )
+ , mpDataModel( pDataModel )
+{
+ assert( pDataModel && "Data Model must not be NULL" );
+}
+
+DataModelContext::~DataModelContext()
+{
+ // some debug
+ mpDataModel->dump();
+}
+
+ContextHandlerRef
+DataModelContext::onCreateContext( ::sal_Int32 aElement,
+ const AttributeList& rAttribs )
+{
+ switch( aElement )
+ {
+ case DGM_TOKEN( cxnLst ):
+ // CT_CxnList
+ return new CxnListContext( *this, mpDataModel->getConnections() );
+ case DGM_TOKEN( ptLst ):
+ // CT_PtList
+ return new PtListContext( *this, mpDataModel->getPoints(), *mpDataModel );
+ case DGM_TOKEN( bg ):
+ // CT_BackgroundFormatting
+ return new BackgroundFormattingContext( *this, mpDataModel );
+ case DGM_TOKEN( whole ):
+ // CT_WholeE2oFormatting
+ // TODO
+ return nullptr;
+ case DGM_TOKEN( extLst ):
+ case A_TOKEN( ext ):
+ break;
+ case DSP_TOKEN( dataModelExt ):
+ mpDataModel->getExtDrawings().push_back( rAttribs.getString( XML_relId ).get() );
+ break;
+ default:
+ break;
+ }
+
+ return this;
+}
+
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/oox/source/drawingml/diagram/datamodelcontext.hxx b/oox/source/drawingml/diagram/datamodelcontext.hxx
new file mode 100644
index 000000000..9a5c323de
--- /dev/null
+++ b/oox/source/drawingml/diagram/datamodelcontext.hxx
@@ -0,0 +1,45 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ *
+ * This file incorporates work covered by the following license notice:
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed
+ * with this work for additional information regarding copyright
+ * ownership. The ASF licenses this file to you under the Apache
+ * License, Version 2.0 (the "License"); you may not use this file
+ * except in compliance with the License. You may obtain a copy of
+ * the License at http://www.apache.org/licenses/LICENSE-2.0 .
+ */
+
+#ifndef INCLUDED_OOX_SOURCE_DRAWINGML_DIAGRAM_DATAMODELCONTEXT_HXX
+#define INCLUDED_OOX_SOURCE_DRAWINGML_DIAGRAM_DATAMODELCONTEXT_HXX
+
+#include <oox/core/contexthandler2.hxx>
+#include "datamodel.hxx"
+
+namespace oox::drawingml {
+
+// CT_DataModel
+class DataModelContext final : public ::oox::core::ContextHandler2
+{
+public:
+ DataModelContext( ::oox::core::ContextHandler2Helper const& rParent, const OoxDiagramDataPtr& pDataModelPtr );
+ virtual ~DataModelContext() override;
+
+ virtual ::oox::core::ContextHandlerRef onCreateContext( ::sal_Int32 Element, const ::oox::AttributeList& rAttribs ) override;
+
+private:
+ OoxDiagramDataPtr mpDataModel;
+};
+
+}
+
+#endif // INCLUDED_OOX_SOURCE_DRAWINGML_DIAGRAM_DATAMODELCONTEXT_HXX
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/oox/source/drawingml/diagram/diagram.cxx b/oox/source/drawingml/diagram/diagram.cxx
new file mode 100644
index 000000000..efba958fa
--- /dev/null
+++ b/oox/source/drawingml/diagram/diagram.cxx
@@ -0,0 +1,444 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ *
+ * This file incorporates work covered by the following license notice:
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed
+ * with this work for additional information regarding copyright
+ * ownership. The ASF licenses this file to you under the Apache
+ * License, Version 2.0 (the "License"); you may not use this file
+ * except in compliance with the License. You may obtain a copy of
+ * the License at http://www.apache.org/licenses/LICENSE-2.0 .
+ */
+
+#include <oox/drawingml/diagram/diagram.hxx>
+#include "diagram.hxx"
+#include <com/sun/star/awt/Point.hpp>
+#include <com/sun/star/awt/Size.hpp>
+#include <com/sun/star/beans/XPropertySet.hpp>
+#include <com/sun/star/drawing/XShape.hpp>
+#include <com/sun/star/drawing/XShapes.hpp>
+#include <com/sun/star/xml/dom/XDocument.hpp>
+#include <com/sun/star/xml/sax/XFastSAXSerializable.hpp>
+#include <sal/log.hxx>
+#include <editeng/unoprnms.hxx>
+#include <drawingml/fillproperties.hxx>
+#include <drawingml/customshapeproperties.hxx>
+#include <o3tl/unit_conversion.hxx>
+#include <oox/token/namespaces.hxx>
+#include <basegfx/matrix/b2dhommatrix.hxx>
+#include <svx/svdpage.hxx>
+#include <oox/ppt/pptimport.hxx>
+#include <comphelper/xmltools.hxx>
+
+#include "diagramlayoutatoms.hxx"
+#include "layoutatomvisitors.hxx"
+#include "diagramfragmenthandler.hxx"
+
+using namespace ::com::sun::star;
+
+namespace oox::drawingml {
+
+static void sortChildrenByZOrder(const ShapePtr& pShape)
+{
+ std::vector<ShapePtr>& rChildren = pShape->getChildren();
+
+ // Offset the children from their default z-order stacking, if necessary.
+ for (size_t i = 0; i < rChildren.size(); ++i)
+ rChildren[i]->setZOrder(i);
+
+ for (size_t i = 0; i < rChildren.size(); ++i)
+ {
+ const ShapePtr& pChild = rChildren[i];
+ sal_Int32 nZOrderOff = pChild->getZOrderOff();
+ if (nZOrderOff <= 0)
+ continue;
+
+ // Increase my ZOrder by nZOrderOff.
+ pChild->setZOrder(pChild->getZOrder() + nZOrderOff);
+ pChild->setZOrderOff(0);
+
+ for (sal_Int32 j = 0; j < nZOrderOff; ++j)
+ {
+ size_t nIndex = i + j + 1;
+ if (nIndex >= rChildren.size())
+ break;
+
+ // Decrease the ZOrder of the next nZOrderOff elements by one.
+ const ShapePtr& pNext = rChildren[nIndex];
+ pNext->setZOrder(pNext->getZOrder() - 1);
+ }
+ }
+
+ // Now that the ZOrders are adjusted, sort the children.
+ std::sort(rChildren.begin(), rChildren.end(),
+ [](const ShapePtr& a, const ShapePtr& b) { return a->getZOrder() < b->getZOrder(); });
+
+ // Apply also for children.
+ for (const auto& rChild : rChildren)
+ sortChildrenByZOrder(rChild);
+}
+
+/// Removes empty group shapes, now that their spacing influenced the layout.
+static void removeUnneededGroupShapes(const ShapePtr& pShape)
+{
+ std::vector<ShapePtr>& rChildren = pShape->getChildren();
+
+ rChildren.erase(std::remove_if(rChildren.begin(), rChildren.end(),
+ [](const ShapePtr& aChild) {
+ return aChild->getServiceName()
+ == "com.sun.star.drawing.GroupShape"
+ && aChild->getChildren().empty();
+ }),
+ rChildren.end());
+
+ for (const auto& pChild : rChildren)
+ {
+ removeUnneededGroupShapes(pChild);
+ }
+}
+
+
+void Diagram::addTo( const ShapePtr & pParentShape )
+{
+ if (pParentShape->getSize().Width == 0 || pParentShape->getSize().Height == 0)
+ SAL_WARN("oox.drawingml", "Diagram cannot be correctly laid out. Size: "
+ << pParentShape->getSize().Width << "x" << pParentShape->getSize().Height);
+
+ pParentShape->setChildSize(pParentShape->getSize());
+
+ const svx::diagram::Point* pRootPoint = mpData->getRootPoint();
+ if (mpLayout->getNode() && pRootPoint)
+ {
+ // create Shape hierarchy
+ ShapeCreationVisitor aCreationVisitor(*this, pRootPoint, pParentShape);
+ mpLayout->getNode()->setExistingShape(pParentShape);
+ mpLayout->getNode()->accept(aCreationVisitor);
+
+ // layout shapes - now all shapes are created
+ ShapeLayoutingVisitor aLayoutingVisitor(*this, pRootPoint);
+ mpLayout->getNode()->accept(aLayoutingVisitor);
+
+ sortChildrenByZOrder(pParentShape);
+ removeUnneededGroupShapes(pParentShape);
+ }
+
+ ShapePtr pBackground = std::make_shared<Shape>("com.sun.star.drawing.CustomShape");
+ pBackground->setSubType(XML_rect);
+ pBackground->getCustomShapeProperties()->setShapePresetType(XML_rect);
+ pBackground->setSize(pParentShape->getSize());
+ pBackground->getFillProperties() = *mpData->getBackgroundShapeFillProperties();
+ pBackground->setLocked(true);
+
+ // create and set ModelID for BackgroundShape to allow later association
+ getData()->setBackgroundShapeModelID(OStringToOUString(comphelper::xml::generateGUIDString(), RTL_TEXTENCODING_UTF8));
+ pBackground->setDiagramDataModelID(getData()->getBackgroundShapeModelID());
+
+ auto& aChildren = pParentShape->getChildren();
+ aChildren.insert(aChildren.begin(), pBackground);
+}
+
+Diagram::Diagram()
+: maDiagramFontHeights()
+{
+}
+
+uno::Sequence<beans::PropertyValue> Diagram::getDomsAsPropertyValues() const
+{
+ sal_Int32 length = maMainDomMap.size();
+
+ if (maDataRelsMap.hasElements())
+ ++length;
+
+ uno::Sequence<beans::PropertyValue> aValue(length);
+ beans::PropertyValue* pValue = aValue.getArray();
+ for (auto const& mainDom : maMainDomMap)
+ {
+ pValue->Name = mainDom.first;
+ pValue->Value <<= mainDom.second;
+ ++pValue;
+ }
+
+ if (maDataRelsMap.hasElements())
+ {
+ pValue->Name = "OOXDiagramDataRels";
+ pValue->Value <<= maDataRelsMap;
+ ++pValue;
+ }
+
+ return aValue;
+}
+
+using ShapePairs
+ = std::map<std::shared_ptr<drawingml::Shape>, css::uno::Reference<css::drawing::XShape>>;
+
+void Diagram::syncDiagramFontHeights()
+{
+ // Each name represents a group of shapes, for which the font height should have the same
+ // scaling.
+ for (const auto& rNameAndPairs : maDiagramFontHeights)
+ {
+ // Find out the minimum scale within this group.
+ const ShapePairs& rShapePairs = rNameAndPairs.second;
+ sal_Int16 nMinScale = 100;
+ for (const auto& rShapePair : rShapePairs)
+ {
+ uno::Reference<beans::XPropertySet> xPropertySet(rShapePair.second, uno::UNO_QUERY);
+ if (xPropertySet.is())
+ {
+ sal_Int16 nTextFitToSizeScale = 0;
+ xPropertySet->getPropertyValue("TextFitToSizeScale") >>= nTextFitToSizeScale;
+ if (nTextFitToSizeScale > 0 && nTextFitToSizeScale < nMinScale)
+ {
+ nMinScale = nTextFitToSizeScale;
+ }
+ }
+ }
+
+ // Set that minimum scale for all members of the group.
+ if (nMinScale < 100)
+ {
+ for (const auto& rShapePair : rShapePairs)
+ {
+ uno::Reference<beans::XPropertySet> xPropertySet(rShapePair.second, uno::UNO_QUERY);
+ if (xPropertySet.is())
+ {
+ xPropertySet->setPropertyValue("TextFitToSizeScale", uno::Any(nMinScale));
+ }
+ }
+ }
+ }
+
+ // no longer needed after processing
+ maDiagramFontHeights.clear();
+}
+
+static uno::Reference<xml::dom::XDocument> loadFragment(
+ core::XmlFilterBase& rFilter,
+ const OUString& rFragmentPath )
+{
+ // load diagramming fragments into DOM representation, that later
+ // gets serialized back to SAX events and parsed
+ return rFilter.importFragment( rFragmentPath );
+}
+
+static uno::Reference<xml::dom::XDocument> loadFragment(
+ core::XmlFilterBase& rFilter,
+ const rtl::Reference< core::FragmentHandler >& rxHandler )
+{
+ return loadFragment( rFilter, rxHandler->getFragmentPath() );
+}
+
+static void importFragment( core::XmlFilterBase& rFilter,
+ const uno::Reference<xml::dom::XDocument>& rXDom,
+ const OUString& rDocName,
+ const DiagramPtr& pDiagram,
+ const rtl::Reference< core::FragmentHandler >& rxHandler )
+{
+ DiagramDomMap& rMainDomMap = pDiagram->getDomMap();
+ rMainDomMap[rDocName] = rXDom;
+
+ uno::Reference<xml::sax::XFastSAXSerializable> xSerializer(
+ rXDom, uno::UNO_QUERY_THROW);
+
+ // now serialize DOM tree into internal data structures
+ rFilter.importFragment( rxHandler, xSerializer );
+}
+
+namespace
+{
+/**
+ * A fragment handler that just counts the number of <dsp:sp> elements in a
+ * fragment.
+ */
+class DiagramShapeCounter : public oox::core::FragmentHandler2
+{
+public:
+ DiagramShapeCounter(oox::core::XmlFilterBase& rFilter, const OUString& rFragmentPath,
+ sal_Int32& nCounter);
+ oox::core::ContextHandlerRef onCreateContext(sal_Int32 nElement,
+ const AttributeList& rAttribs) override;
+
+private:
+ sal_Int32& m_nCounter;
+};
+
+DiagramShapeCounter::DiagramShapeCounter(oox::core::XmlFilterBase& rFilter,
+ const OUString& rFragmentPath, sal_Int32& nCounter)
+ : FragmentHandler2(rFilter, rFragmentPath)
+ , m_nCounter(nCounter)
+{
+}
+
+oox::core::ContextHandlerRef DiagramShapeCounter::onCreateContext(sal_Int32 nElement,
+ const AttributeList& /*rAttribs*/)
+{
+ switch (nElement)
+ {
+ case DSP_TOKEN(drawing):
+ case DSP_TOKEN(spTree):
+ return this;
+ case DSP_TOKEN(sp):
+ ++m_nCounter;
+ break;
+ default:
+ break;
+ }
+
+ return nullptr;
+}
+}
+
+void loadDiagram( ShapePtr const & pShape,
+ core::XmlFilterBase& rFilter,
+ const OUString& rDataModelPath,
+ const OUString& rLayoutPath,
+ const OUString& rQStylePath,
+ const OUString& rColorStylePath,
+ const oox::core::Relations& rRelations )
+{
+ DiagramPtr pDiagram = std::make_shared<Diagram>();
+
+ OoxDiagramDataPtr pData = std::make_shared<DiagramData>();
+ pDiagram->setData( pData );
+
+ DiagramLayoutPtr pLayout = std::make_shared<DiagramLayout>(*pDiagram);
+ pDiagram->setLayout( pLayout );
+
+ // set DiagramFontHeights at filter
+ rFilter.setDiagramFontHeights(&pDiagram->getDiagramFontHeights());
+
+ // data
+ if( !rDataModelPath.isEmpty() )
+ {
+ rtl::Reference< core::FragmentHandler > xRefDataModel(
+ new DiagramDataFragmentHandler( rFilter, rDataModelPath, pData ));
+
+ importFragment(rFilter,
+ loadFragment(rFilter,xRefDataModel),
+ "OOXData",
+ pDiagram,
+ xRefDataModel);
+
+ pDiagram->getDataRelsMap() = pShape->resolveRelationshipsOfTypeFromOfficeDoc( rFilter,
+ xRefDataModel->getFragmentPath(), u"image" );
+
+ // Pass the info to pShape
+ for (auto const& extDrawing : pData->getExtDrawings())
+ {
+ OUString aFragmentPath = rRelations.getFragmentPathFromRelId(extDrawing);
+ // Ignore RelIds which don't resolve to a fragment path.
+ if (aFragmentPath.isEmpty())
+ continue;
+
+ sal_Int32 nCounter = 0;
+ rtl::Reference<core::FragmentHandler> xCounter(
+ new DiagramShapeCounter(rFilter, aFragmentPath, nCounter));
+ rFilter.importFragment(xCounter);
+ // Ignore ext drawings which don't actually have any shapes.
+ if (nCounter == 0)
+ continue;
+
+ pShape->addExtDrawingRelId(extDrawing);
+ }
+ }
+
+ // extLst is present, lets bet on that and ignore the rest of the data from here
+ if( pShape->getExtDrawings().empty() )
+ {
+ // layout
+ if( !rLayoutPath.isEmpty() )
+ {
+ rtl::Reference< core::FragmentHandler > xRefLayout(
+ new DiagramLayoutFragmentHandler( rFilter, rLayoutPath, pLayout ));
+
+ importFragment(rFilter,
+ loadFragment(rFilter,xRefLayout),
+ "OOXLayout",
+ pDiagram,
+ xRefLayout);
+ }
+
+ // style
+ if( !rQStylePath.isEmpty() )
+ {
+ rtl::Reference< core::FragmentHandler > xRefQStyle(
+ new DiagramQStylesFragmentHandler( rFilter, rQStylePath, pDiagram->getStyles() ));
+
+ importFragment(rFilter,
+ loadFragment(rFilter,xRefQStyle),
+ "OOXStyle",
+ pDiagram,
+ xRefQStyle);
+ }
+ }
+ else
+ {
+ // We still want to add the XDocuments to the DiagramDomMap
+ DiagramDomMap& rMainDomMap = pDiagram->getDomMap();
+ rMainDomMap[OUString("OOXLayout")] = loadFragment(rFilter,rLayoutPath);
+ rMainDomMap[OUString("OOXStyle")] = loadFragment(rFilter,rQStylePath);
+ }
+
+ // colors
+ if( !rColorStylePath.isEmpty() )
+ {
+ rtl::Reference< core::FragmentHandler > xRefColorStyle(
+ new ColorFragmentHandler( rFilter, rColorStylePath, pDiagram->getColors() ));
+
+ importFragment(rFilter,
+ loadFragment(rFilter,xRefColorStyle),
+ "OOXColor",
+ pDiagram,
+ xRefColorStyle);
+ }
+
+ if( !pData->getExtDrawings().empty() )
+ {
+ const DiagramColorMap::const_iterator aColor = pDiagram->getColors().find("node0");
+ if( aColor != pDiagram->getColors().end() && !aColor->second.maTextFillColors.empty())
+ {
+ // TODO(F1): well, actually, there might be *several* color
+ // definitions in it, after all it's called list.
+ pShape->setFontRefColorForNodes(DiagramColor::getColorByIndex(aColor->second.maTextFillColors, -1));
+ }
+ }
+
+ // collect data, init maps
+ // for Diagram import, do - for now - NOT clear all oox::drawingml::Shape
+ pData->buildDiagramDataModel(false);
+
+ // diagram loaded. now lump together & attach to shape
+ pDiagram->addTo(pShape);
+ pShape->setDiagramDoms(pDiagram->getDomsAsPropertyValues());
+
+ // Get the oox::Theme definition and - if available - move/secure the
+ // original ImportData directly to the Diagram ModelData
+ std::shared_ptr<::oox::drawingml::Theme> aTheme(rFilter.getCurrentThemePtr());
+ if(aTheme)
+ pData->setThemeDocument(aTheme->getFragment()); //getTempFile());
+
+ // Prepare support for the advanced DiagramHelper using Diagram & Theme data
+ pShape->prepareDiagramHelper(pDiagram, rFilter.getCurrentThemePtr());
+}
+
+const oox::drawingml::Color&
+DiagramColor::getColorByIndex(const std::vector<oox::drawingml::Color>& rColors, sal_Int32 nIndex)
+{
+ assert(!rColors.empty());
+ if (nIndex == -1)
+ {
+ return rColors[rColors.size() - 1];
+ }
+
+ return rColors[nIndex % rColors.size()];
+}
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/oox/source/drawingml/diagram/diagram.hxx b/oox/source/drawingml/diagram/diagram.hxx
new file mode 100644
index 000000000..f58c762f6
--- /dev/null
+++ b/oox/source/drawingml/diagram/diagram.hxx
@@ -0,0 +1,171 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ *
+ * This file incorporates work covered by the following license notice:
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed
+ * with this work for additional information regarding copyright
+ * ownership. The ASF licenses this file to you under the Apache
+ * License, Version 2.0 (the "License"); you may not use this file
+ * except in compliance with the License. You may obtain a copy of
+ * the License at http://www.apache.org/licenses/LICENSE-2.0 .
+ */
+
+#ifndef INCLUDED_OOX_SOURCE_DRAWINGML_DIAGRAM_DIAGRAM_HXX
+#define INCLUDED_OOX_SOURCE_DRAWINGML_DIAGRAM_DIAGRAM_HXX
+
+#include <map>
+#include <memory>
+#include <vector>
+
+#include <rtl/ustring.hxx>
+
+#include "datamodel.hxx"
+#include <oox/drawingml/shape.hxx>
+
+namespace com::sun::star {
+ namespace xml::dom { class XDocument; }
+}
+
+namespace oox::drawingml {
+
+class Diagram;
+class LayoutNode;
+typedef std::shared_ptr< LayoutNode > LayoutNodePtr;
+class LayoutAtom;
+typedef std::shared_ptr< LayoutAtom > LayoutAtomPtr;
+typedef std::map< OUString, css::uno::Reference<css::xml::dom::XDocument> > DiagramDomMap;
+typedef std::map< OUString, LayoutAtomPtr > LayoutAtomMap;
+typedef std::map< const svx::diagram::Point*, ShapePtr > PresPointShapeMap;
+
+class DiagramLayout
+{
+public:
+ DiagramLayout(Diagram& rDgm)
+ : mrDgm(rDgm)
+ {
+ }
+ void setDefStyle( const OUString & sDefStyle )
+ { msDefStyle = sDefStyle; }
+ void setMinVer( const OUString & sMinVer )
+ { msMinVer = sMinVer; }
+ void setUniqueId( const OUString & sUniqueId )
+ { msUniqueId = sUniqueId; }
+ void setTitle( const OUString & sTitle )
+ { msTitle = sTitle; }
+ void setDesc( const OUString & sDesc )
+ { msDesc = sDesc; }
+ Diagram& getDiagram() { return mrDgm; }
+ LayoutNodePtr & getNode()
+ { return mpNode; }
+ const LayoutNodePtr & getNode() const
+ { return mpNode; }
+ OoxDiagramDataPtr& getSampData()
+ { return mpSampData; }
+ const OoxDiagramDataPtr& getSampData() const
+ { return mpSampData; }
+ OoxDiagramDataPtr& getStyleData()
+ { return mpStyleData; }
+ const OoxDiagramDataPtr& getStyleData() const
+ { return mpStyleData; }
+ LayoutAtomMap & getLayoutAtomMap()
+ { return maLayoutAtomMap; }
+ PresPointShapeMap & getPresPointShapeMap()
+ { return maPresPointShapeMap; }
+
+private:
+ Diagram& mrDgm;
+ OUString msDefStyle;
+ OUString msMinVer;
+ OUString msUniqueId;
+
+ OUString msTitle;
+ OUString msDesc;
+ LayoutNodePtr mpNode;
+ OoxDiagramDataPtr mpSampData;
+ OoxDiagramDataPtr mpStyleData;
+ // TODO
+ // catLst
+ // clrData
+
+ LayoutAtomMap maLayoutAtomMap;
+ PresPointShapeMap maPresPointShapeMap;
+};
+
+typedef std::shared_ptr< DiagramLayout > DiagramLayoutPtr;
+
+struct DiagramStyle
+{
+ ShapeStyleRef maFillStyle;
+ ShapeStyleRef maLineStyle;
+ ShapeStyleRef maEffectStyle;
+ ShapeStyleRef maTextStyle;
+};
+
+typedef std::map<OUString,DiagramStyle> DiagramQStyleMap;
+
+struct DiagramColor
+{
+ std::vector<oox::drawingml::Color> maFillColors;
+ std::vector<oox::drawingml::Color> maLineColors;
+ std::vector<oox::drawingml::Color> maEffectColors;
+ std::vector<oox::drawingml::Color> maTextFillColors;
+ std::vector<oox::drawingml::Color> maTextLineColors;
+ std::vector<oox::drawingml::Color> maTextEffectColors;
+
+ static const oox::drawingml::Color&
+ getColorByIndex(const std::vector<oox::drawingml::Color>& rColors, sal_Int32 nIndex);
+};
+
+typedef std::map<OUString,DiagramColor> DiagramColorMap;
+
+class Diagram
+{
+public:
+ explicit Diagram();
+ void setData( OoxDiagramDataPtr& pData )
+ { mpData = pData; }
+ const OoxDiagramDataPtr& getData() const
+ { return mpData; }
+ void setLayout( const DiagramLayoutPtr & pLayout )
+ { mpLayout = pLayout; }
+ const DiagramLayoutPtr& getLayout() const
+ { return mpLayout; }
+
+ DiagramQStyleMap& getStyles() { return maStyles; }
+ const DiagramQStyleMap& getStyles() const { return maStyles; }
+ DiagramColorMap& getColors() { return maColors; }
+ const DiagramColorMap& getColors() const { return maColors; }
+ DiagramDomMap & getDomMap() { return maMainDomMap; }
+ css::uno::Sequence< css::uno::Sequence< css::uno::Any > > & getDataRelsMap() { return maDataRelsMap; }
+ void addTo( const ShapePtr & pShape );
+
+ css::uno::Sequence<css::beans::PropertyValue> getDomsAsPropertyValues() const;
+ oox::core::NamedShapePairs& getDiagramFontHeights() { return maDiagramFontHeights; }
+ void syncDiagramFontHeights();
+
+private:
+ // This contains groups of shapes: automatic font size is the same in each group.
+ oox::core::NamedShapePairs maDiagramFontHeights;
+
+ OoxDiagramDataPtr mpData;
+ DiagramLayoutPtr mpLayout;
+ DiagramQStyleMap maStyles;
+ DiagramColorMap maColors;
+ DiagramDomMap maMainDomMap;
+ css::uno::Sequence< css::uno::Sequence< css::uno::Any > > maDataRelsMap;
+};
+
+typedef std::shared_ptr< Diagram > DiagramPtr;
+
+}
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/oox/source/drawingml/diagram/diagramdefinitioncontext.cxx b/oox/source/drawingml/diagram/diagramdefinitioncontext.cxx
new file mode 100644
index 000000000..02d377703
--- /dev/null
+++ b/oox/source/drawingml/diagram/diagramdefinitioncontext.cxx
@@ -0,0 +1,99 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ *
+ * This file incorporates work covered by the following license notice:
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed
+ * with this work for additional information regarding copyright
+ * ownership. The ASF licenses this file to you under the Apache
+ * License, Version 2.0 (the "License"); you may not use this file
+ * except in compliance with the License. You may obtain a copy of
+ * the License at http://www.apache.org/licenses/LICENSE-2.0 .
+ */
+
+#include "diagramdefinitioncontext.hxx"
+#include "datamodel.hxx"
+#include "datamodelcontext.hxx"
+#include "layoutnodecontext.hxx"
+#include <oox/helper/attributelist.hxx>
+#include <oox/token/namespaces.hxx>
+
+using namespace ::oox::core;
+using namespace ::com::sun::star::uno;
+using namespace ::com::sun::star::xml::sax;
+
+namespace oox::drawingml {
+
+// CT_DiagramDefinition
+DiagramDefinitionContext::DiagramDefinitionContext( ContextHandler2Helper const & rParent,
+ const AttributeList& rAttributes,
+ const DiagramLayoutPtr &pLayout )
+ : ContextHandler2( rParent )
+ , mpLayout( pLayout )
+{
+ mpLayout->setDefStyle( rAttributes.getString( XML_defStyle ).get() );
+ OUString sValue = rAttributes.getString( XML_minVer ).get();
+ if( sValue.isEmpty() )
+ {
+ sValue = "http://schemas.openxmlformats.org/drawingml/2006/diagram";
+ }
+ mpLayout->setMinVer( sValue );
+ mpLayout->setUniqueId( rAttributes.getString( XML_uniqueId ).get() );
+}
+
+DiagramDefinitionContext::~DiagramDefinitionContext()
+{
+ LayoutNodePtr node = mpLayout->getNode();
+ if (node)
+ node->dump();
+}
+
+ContextHandlerRef
+DiagramDefinitionContext::onCreateContext( ::sal_Int32 aElement,
+ const AttributeList& rAttribs )
+{
+ switch( aElement )
+ {
+ case DGM_TOKEN( title ):
+ mpLayout->setTitle( rAttribs.getString( XML_val ).get() );
+ break;
+ case DGM_TOKEN( desc ):
+ mpLayout->setDesc( rAttribs.getString( XML_val ).get() );
+ break;
+ case DGM_TOKEN( layoutNode ):
+ {
+ LayoutNodePtr pNode = std::make_shared<LayoutNode>(mpLayout->getDiagram());
+ mpLayout->getNode() = pNode;
+ pNode->setChildOrder( rAttribs.getToken( XML_chOrder, XML_b ) );
+ pNode->setMoveWith( rAttribs.getString( XML_moveWith ).get() );
+ pNode->setStyleLabel( rAttribs.getString( XML_styleLbl ).get() );
+ return new LayoutNodeContext( *this, rAttribs, pNode );
+ }
+ case DGM_TOKEN( clrData ):
+ // TODO, does not matter for the UI. skip.
+ return nullptr;
+ case DGM_TOKEN( sampData ):
+ mpLayout->getSampData() = std::make_shared<DiagramData>();
+ return new DataModelContext( *this, mpLayout->getSampData() );
+ case DGM_TOKEN( styleData ):
+ mpLayout->getStyleData() = std::make_shared<DiagramData>();
+ return new DataModelContext( *this, mpLayout->getStyleData() );
+ case DGM_TOKEN( cat ):
+ case DGM_TOKEN( catLst ):
+ // TODO, does not matter for the UI
+ default:
+ break;
+ }
+
+ return this;
+}
+
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/oox/source/drawingml/diagram/diagramdefinitioncontext.hxx b/oox/source/drawingml/diagram/diagramdefinitioncontext.hxx
new file mode 100644
index 000000000..e92460f5d
--- /dev/null
+++ b/oox/source/drawingml/diagram/diagramdefinitioncontext.hxx
@@ -0,0 +1,44 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ *
+ * This file incorporates work covered by the following license notice:
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed
+ * with this work for additional information regarding copyright
+ * ownership. The ASF licenses this file to you under the Apache
+ * License, Version 2.0 (the "License"); you may not use this file
+ * except in compliance with the License. You may obtain a copy of
+ * the License at http://www.apache.org/licenses/LICENSE-2.0 .
+ */
+
+#ifndef INCLUDED_OOX_SOURCE_DRAWINGML_DIAGRAM_DIAGRAMDEFINITIONCONTEXT_HXX
+#define INCLUDED_OOX_SOURCE_DRAWINGML_DIAGRAM_DIAGRAMDEFINITIONCONTEXT_HXX
+
+#include <oox/core/contexthandler2.hxx>
+#include "diagram.hxx"
+
+namespace oox::drawingml {
+
+class DiagramDefinitionContext : public ::oox::core::ContextHandler2
+{
+public:
+ DiagramDefinitionContext( ::oox::core::ContextHandler2Helper const & rParent, const ::oox::AttributeList& rAttributes, const DiagramLayoutPtr &pLayout );
+ virtual ~DiagramDefinitionContext() override;
+
+ virtual ::oox::core::ContextHandlerRef onCreateContext( ::sal_Int32 Element, const ::oox::AttributeList& rAttribs ) override;
+
+private:
+ DiagramLayoutPtr mpLayout;
+};
+
+}
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/oox/source/drawingml/diagram/diagramfragmenthandler.cxx b/oox/source/drawingml/diagram/diagramfragmenthandler.cxx
new file mode 100644
index 000000000..8ff4af7f0
--- /dev/null
+++ b/oox/source/drawingml/diagram/diagramfragmenthandler.cxx
@@ -0,0 +1,234 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ *
+ * This file incorporates work covered by the following license notice:
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed
+ * with this work for additional information regarding copyright
+ * ownership. The ASF licenses this file to you under the Apache
+ * License, Version 2.0 (the "License"); you may not use this file
+ * except in compliance with the License. You may obtain a copy of
+ * the License at http://www.apache.org/licenses/LICENSE-2.0 .
+ */
+
+
+#include "diagramdefinitioncontext.hxx"
+#include "diagramfragmenthandler.hxx"
+#include "datamodelcontext.hxx"
+#include <drawingml/colorchoicecontext.hxx>
+#include <oox/helper/attributelist.hxx>
+#include <oox/token/namespaces.hxx>
+
+using namespace ::oox::core;
+using namespace ::com::sun::star::xml::sax;
+using namespace ::com::sun::star::uno;
+
+namespace oox::drawingml {
+
+DiagramDataFragmentHandler::DiagramDataFragmentHandler( XmlFilterBase& rFilter,
+ const OUString& rFragmentPath,
+ const OoxDiagramDataPtr& rDataPtr )
+ : FragmentHandler2( rFilter, rFragmentPath )
+ , mpDataPtr( rDataPtr )
+{
+}
+
+DiagramDataFragmentHandler::~DiagramDataFragmentHandler( ) noexcept
+{
+
+}
+
+void SAL_CALL DiagramDataFragmentHandler::endDocument()
+{
+
+}
+
+ContextHandlerRef
+DiagramDataFragmentHandler::onCreateContext( ::sal_Int32 aElement,
+ const AttributeList& )
+{
+ switch( aElement )
+ {
+ case DGM_TOKEN( dataModel ):
+ return new DataModelContext( *this, mpDataPtr );
+ default:
+ break;
+ }
+
+ return this;
+}
+
+DiagramLayoutFragmentHandler::DiagramLayoutFragmentHandler( XmlFilterBase& rFilter,
+ const OUString& rFragmentPath,
+ const DiagramLayoutPtr& rDataPtr )
+ : FragmentHandler2( rFilter, rFragmentPath )
+ , mpDataPtr( rDataPtr )
+{
+}
+
+DiagramLayoutFragmentHandler::~DiagramLayoutFragmentHandler( ) noexcept
+{
+
+}
+
+void SAL_CALL DiagramLayoutFragmentHandler::endDocument()
+{
+
+}
+
+ContextHandlerRef
+DiagramLayoutFragmentHandler::onCreateContext( ::sal_Int32 aElement,
+ const AttributeList& rAttribs )
+{
+ switch( aElement )
+ {
+ case DGM_TOKEN( layoutDef ):
+ return new DiagramDefinitionContext( *this, rAttribs, mpDataPtr );
+ default:
+ break;
+ }
+
+ return this;
+}
+
+DiagramQStylesFragmentHandler::DiagramQStylesFragmentHandler( XmlFilterBase& rFilter,
+ const OUString& rFragmentPath,
+ DiagramQStyleMap& rStylesMap ) :
+ FragmentHandler2( rFilter, rFragmentPath ),
+ maStyleEntry(),
+ mrStylesMap( rStylesMap )
+{}
+
+::oox::core::ContextHandlerRef DiagramQStylesFragmentHandler::createStyleMatrixContext(
+ sal_Int32 nElement,
+ const AttributeList& rAttribs,
+ ShapeStyleRef& o_rStyle )
+{
+ o_rStyle.mnThemedIdx = (nElement == A_TOKEN(fontRef)) ?
+ rAttribs.getToken( XML_idx, XML_none ) : rAttribs.getInteger( XML_idx, 0 );
+ return new ColorContext( *this, o_rStyle.maPhClr );
+}
+
+::oox::core::ContextHandlerRef DiagramQStylesFragmentHandler::onCreateContext( sal_Int32 nElement,
+ const AttributeList& rAttribs )
+{
+ // state-table like way of navigating the color fragment. we
+ // currently ignore everything except styleLbl in the styleDef
+ // element
+ switch( getCurrentElement() )
+ {
+ case XML_ROOT_CONTEXT:
+ return nElement == DGM_TOKEN(styleDef) ? this : nullptr;
+ case DGM_TOKEN(styleDef):
+ return nElement == DGM_TOKEN(styleLbl) ? this : nullptr;
+ case DGM_TOKEN(styleLbl):
+ return nElement == DGM_TOKEN(style) ? this : nullptr;
+ case DGM_TOKEN(style):
+ {
+ switch( nElement )
+ {
+ case A_TOKEN(lnRef): // CT_StyleMatrixReference
+ return createStyleMatrixContext(nElement,rAttribs,
+ maStyleEntry.maLineStyle);
+ case A_TOKEN(fillRef): // CT_StyleMatrixReference
+ return createStyleMatrixContext(nElement,rAttribs,
+ maStyleEntry.maFillStyle);
+ case A_TOKEN(effectRef): // CT_StyleMatrixReference
+ return createStyleMatrixContext(nElement,rAttribs,
+ maStyleEntry.maEffectStyle);
+ case A_TOKEN(fontRef): // CT_FontReference
+ return createStyleMatrixContext(nElement,rAttribs,
+ maStyleEntry.maTextStyle);
+ }
+ return nullptr;
+ }
+ }
+
+ return nullptr;
+}
+
+void DiagramQStylesFragmentHandler::onStartElement( const AttributeList& rAttribs )
+{
+ if( getCurrentElement() == DGM_TOKEN( styleLbl ) )
+ {
+ maStyleName = rAttribs.getString( XML_name, OUString() );
+ maStyleEntry = mrStylesMap[maStyleName];
+ }
+}
+
+void DiagramQStylesFragmentHandler::onEndElement( )
+{
+ if( getCurrentElement() == DGM_TOKEN(styleLbl) )
+ mrStylesMap[maStyleName] = maStyleEntry;
+}
+
+ColorFragmentHandler::ColorFragmentHandler( ::oox::core::XmlFilterBase& rFilter,
+ const OUString& rFragmentPath,
+ DiagramColorMap& rColorsMap ) :
+ FragmentHandler2(rFilter,rFragmentPath),
+ maColorEntry(),
+ mrColorsMap(rColorsMap)
+{}
+
+::oox::core::ContextHandlerRef ColorFragmentHandler::onCreateContext( sal_Int32 nElement,
+ const AttributeList& /*rAttribs*/ )
+{
+ // state-table like way of navigating the color fragment. we
+ // currently ignore everything except styleLbl in the colorsDef
+ // element
+ switch( getCurrentElement() )
+ {
+ case XML_ROOT_CONTEXT:
+ return nElement == DGM_TOKEN(colorsDef) ? this : nullptr;
+ case DGM_TOKEN(colorsDef):
+ return nElement == DGM_TOKEN(styleLbl) ? this : nullptr;
+ case DGM_TOKEN(styleLbl):
+ {
+ switch( nElement )
+ {
+ // the actual colors - defer to color fragment handlers.
+
+ case DGM_TOKEN(fillClrLst):
+ return new ColorsContext( *this, maColorEntry.maFillColors );
+ case DGM_TOKEN(linClrLst):
+ return new ColorsContext( *this, maColorEntry.maLineColors );
+ case DGM_TOKEN(effectClrLst):
+ return new ColorsContext( *this, maColorEntry.maEffectColors );
+ case DGM_TOKEN(txFillClrLst):
+ return new ColorsContext( *this, maColorEntry.maTextFillColors );
+ case DGM_TOKEN(txLinClrLst):
+ return new ColorsContext( *this, maColorEntry.maTextLineColors );
+ case DGM_TOKEN(txEffectClrLst):
+ return new ColorsContext( *this, maColorEntry.maTextEffectColors );
+ }
+ break;
+ }
+ }
+
+ return nullptr;
+}
+
+void ColorFragmentHandler::onStartElement( const AttributeList& rAttribs )
+{
+ if( getCurrentElement() == DGM_TOKEN(styleLbl) )
+ {
+ maColorName = rAttribs.getString( XML_name, OUString() );
+ maColorEntry = mrColorsMap[maColorName];
+ }
+}
+
+void ColorFragmentHandler::onEndElement( )
+{
+ if( getCurrentElement() == DGM_TOKEN(styleLbl) )
+ mrColorsMap[maColorName] = maColorEntry;
+}
+
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/oox/source/drawingml/diagram/diagramfragmenthandler.hxx b/oox/source/drawingml/diagram/diagramfragmenthandler.hxx
new file mode 100644
index 000000000..eb51d6407
--- /dev/null
+++ b/oox/source/drawingml/diagram/diagramfragmenthandler.hxx
@@ -0,0 +1,103 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ *
+ * This file incorporates work covered by the following license notice:
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed
+ * with this work for additional information regarding copyright
+ * ownership. The ASF licenses this file to you under the Apache
+ * License, Version 2.0 (the "License"); you may not use this file
+ * except in compliance with the License. You may obtain a copy of
+ * the License at http://www.apache.org/licenses/LICENSE-2.0 .
+ */
+
+#ifndef INCLUDED_OOX_SOURCE_DRAWINGML_DIAGRAM_DIAGRAMFRAGMENTHANDLER_HXX
+#define INCLUDED_OOX_SOURCE_DRAWINGML_DIAGRAM_DIAGRAMFRAGMENTHANDLER_HXX
+
+#include <oox/core/fragmenthandler2.hxx>
+
+#include "diagram.hxx"
+
+namespace oox::drawingml {
+
+class DiagramDataFragmentHandler : public ::oox::core::FragmentHandler2
+{
+public:
+ DiagramDataFragmentHandler(oox::core::XmlFilterBase& rFilter, const OUString& rFragmentPath, const OoxDiagramDataPtr& rDataPtr);
+ virtual ~DiagramDataFragmentHandler() noexcept override;
+
+ virtual void SAL_CALL endDocument() override;
+ virtual ::oox::core::ContextHandlerRef onCreateContext( ::sal_Int32 Element, const ::oox::AttributeList& rAttribs ) override;
+
+private:
+
+ OoxDiagramDataPtr mpDataPtr;
+};
+
+class DiagramLayoutFragmentHandler : public ::oox::core::FragmentHandler2
+{
+public:
+ DiagramLayoutFragmentHandler(oox::core::XmlFilterBase& rFilter, const OUString& rFragmentPath, const DiagramLayoutPtr& rDataPtr);
+ virtual ~DiagramLayoutFragmentHandler() noexcept override;
+
+ virtual void SAL_CALL endDocument() override;
+ virtual ::oox::core::ContextHandlerRef onCreateContext( ::sal_Int32 Element, const ::oox::AttributeList& rAttribs ) override;
+
+private:
+
+ DiagramLayoutPtr mpDataPtr;
+};
+
+class DiagramQStylesFragmentHandler : public ::oox::core::FragmentHandler2
+{
+public:
+ DiagramQStylesFragmentHandler(
+ oox::core::XmlFilterBase& rFilter,
+ const OUString& rFragmentPath,
+ DiagramQStyleMap& rStylesMap );
+
+ virtual ::oox::core::ContextHandlerRef onCreateContext( sal_Int32 nElement, const AttributeList& rAttribs ) override;
+
+ virtual void onStartElement( const AttributeList& rAttribs ) override;
+ virtual void onEndElement() override;
+
+private:
+ ::oox::core::ContextHandlerRef createStyleMatrixContext(sal_Int32 nElement,
+ const AttributeList& rAttribs,
+ ShapeStyleRef& o_rStyle);
+
+ OUString maStyleName;
+ DiagramStyle maStyleEntry;
+ DiagramQStyleMap& mrStylesMap;
+};
+
+class ColorFragmentHandler : public ::oox::core::FragmentHandler2
+{
+public:
+ ColorFragmentHandler(
+ ::oox::core::XmlFilterBase& rFilter,
+ const OUString& rFragmentPath,
+ DiagramColorMap& rColorMap );
+
+ virtual ::oox::core::ContextHandlerRef onCreateContext( sal_Int32 nElement, const AttributeList& rAttribs ) override;
+
+ virtual void onStartElement( const AttributeList& rAttribs ) override;
+ virtual void onEndElement() override;
+
+private:
+ OUString maColorName;
+ DiagramColor maColorEntry;
+ DiagramColorMap& mrColorsMap;
+};
+
+}
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/oox/source/drawingml/diagram/diagramhelper.cxx b/oox/source/drawingml/diagram/diagramhelper.cxx
new file mode 100644
index 000000000..7b746e067
--- /dev/null
+++ b/oox/source/drawingml/diagram/diagramhelper.cxx
@@ -0,0 +1,269 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ *
+ * This file incorporates work covered by the following license notice:
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed
+ * with this work for additional information regarding copyright
+ * ownership. The ASF licenses this file to you under the Apache
+ * License, Version 2.0 (the "License"); you may not use this file
+ * except in compliance with the License. You may obtain a copy of
+ * the License at http://www.apache.org/licenses/LICENSE-2.0 .
+ */
+
+#include "diagramhelper.hxx"
+#include "diagram.hxx"
+
+#include <basegfx/matrix/b2dhommatrix.hxx>
+#include <oox/shape/ShapeFilterBase.hxx>
+#include <oox/ppt/pptimport.hxx>
+#include <drawingml/fillproperties.hxx>
+#include <svx/svdmodel.hxx>
+#include <comphelper/processfactory.hxx>
+#include <oox/drawingml/themefragmenthandler.hxx>
+#include <com/sun/star/xml/sax/XFastSAXSerializable.hpp>
+
+using namespace ::com::sun::star;
+
+namespace oox::drawingml {
+
+bool AdvancedDiagramHelper::hasDiagramData() const
+{
+ return mpDiagramPtr && mpDiagramPtr->getData();
+}
+
+AdvancedDiagramHelper::AdvancedDiagramHelper(
+ const std::shared_ptr< Diagram >& rDiagramPtr,
+ const std::shared_ptr<::oox::drawingml::Theme>& rTheme,
+ css::awt::Size aImportSize)
+: svx::diagram::IDiagramHelper()
+, mpDiagramPtr(rDiagramPtr)
+, mpThemePtr(rTheme)
+, maImportSize(aImportSize)
+{
+}
+
+AdvancedDiagramHelper::~AdvancedDiagramHelper()
+{
+}
+
+void AdvancedDiagramHelper::reLayout(SdrObjGroup& rTarget)
+{
+ if(!mpDiagramPtr)
+ {
+ return;
+ }
+
+ // Rescue/remember geometric transformation of existing Diagram
+ basegfx::B2DHomMatrix aTransformation;
+ basegfx::B2DPolyPolygon aPolyPolygon;
+ rTarget.TRGetBaseGeometry(aTransformation, aPolyPolygon);
+
+ // create temporary oox::Shape as target. No longer needed is to keep/remember
+ // the original oox::Shape to do that. Use original Size and Pos from initial import
+ // to get the same layout(s)
+ oox::drawingml::ShapePtr pShapePtr = std::make_shared<Shape>( "com.sun.star.drawing.GroupShape" );
+ pShapePtr->setDiagramType();
+ pShapePtr->setSize(maImportSize);
+
+ // Re-create the oox::Shapes for the diagram content
+ mpDiagramPtr->addTo(pShapePtr);
+
+ // Delete all existing shapes in that group to prepare re-creation
+ rTarget.getChildrenOfSdrObject()->ClearSdrObjList();
+
+ // For re-creation we need to use ::addShape functionality from the
+ // oox import filter since currently Shape import is very tightly
+ // coupled to Shape creation. It converts a oox::Shape representation
+ // combined with an oox::Theme to incarnated XShapes representing the
+ // Diagram.
+ // To use that functionality, we have to create a temporary filter
+ // (based on ShapeFilterBase). Problems are that this needs to know
+ // the oox:Theme and a ComponentModel from TargetDocument.
+ // The DiagramHelper holds/delivers the oox::Theme to use, so
+ // it does not need to be re-imported from oox repeatedly.
+ // The ComponentModel can be derived from the existing XShape/GroupShape
+ // when knowing where to get it from, making it independent from app.
+ //
+ // NOTE: Using another (buffered) oox::Theme would allow to re-create
+ // using another theming in the future.
+ // NOTE: The incarnation of import filter (ShapeFilterBase) is only
+ // used for XShape creation, no xml snippets/data gets imported
+ // here. XShape creation may be isolated in the future.
+ SdrModel& rModel(rTarget.getSdrModelFromSdrObject());
+ uno::Reference< uno::XInterface > const & rUnoModel(rModel.getUnoModel());
+ css::uno::Reference<css::uno::XComponentContext> xContext(comphelper::getProcessComponentContext());
+ rtl::Reference<oox::shape::ShapeFilterBase> xFilter(new oox::shape::ShapeFilterBase(xContext));
+
+ // set oox::Theme at Filter. All LineStyle/FillStyle/Colors/Attributes
+ // will be taken from there
+ if(UseDiagramThemeData())
+ xFilter->setCurrentTheme(getOrCreateThemePtr(xFilter));
+
+ css::uno::Reference< css::lang::XComponent > aComponentModel( rUnoModel, uno::UNO_QUERY );
+ xFilter->setTargetDocument(aComponentModel);
+
+ // set DiagramFontHeights
+ xFilter->setDiagramFontHeights(&mpDiagramPtr->getDiagramFontHeights());
+
+ // Prepare the target for the to-be-created XShapes
+ uno::Reference<drawing::XShapes> xShapes(rTarget.getUnoShape(), uno::UNO_QUERY_THROW);
+
+ for (auto const& child : pShapePtr->getChildren())
+ {
+ // Create all sub-shapes. This will recursively create needed geometry using
+ // filter-internal ::createShapes
+ child->addShape(
+ *xFilter,
+ xFilter->getCurrentTheme(),
+ xShapes,
+ aTransformation,
+ pShapePtr->getFillProperties());
+ }
+
+ // sync FontHeights
+ mpDiagramPtr->syncDiagramFontHeights();
+
+ // re-apply secured data from ModelData
+ if(UseDiagramModelData())
+ mpDiagramPtr->getData()->restoreDataFromShapeToModelAfterDiagramImport(*pShapePtr);
+
+ // Re-apply remembered geometry
+ rTarget.TRSetBaseGeometry(aTransformation, aPolyPolygon);
+}
+
+OUString AdvancedDiagramHelper::getString() const
+{
+ if(hasDiagramData())
+ {
+ return mpDiagramPtr->getData()->getString();
+ }
+
+ return OUString();
+}
+
+std::vector<std::pair<OUString, OUString>> AdvancedDiagramHelper::getChildren(const OUString& rParentId) const
+{
+ if(hasDiagramData())
+ {
+ return mpDiagramPtr->getData()->getChildren(rParentId);
+ }
+
+ return std::vector<std::pair<OUString, OUString>>();
+}
+
+OUString AdvancedDiagramHelper::addNode(const OUString& rText)
+{
+ OUString aRetval;
+
+ if(hasDiagramData())
+ {
+ aRetval = mpDiagramPtr->getData()->addNode(rText);
+
+ // reset temporary buffered ModelData association lists & rebuild them
+ // and the Diagram DataModel
+ mpDiagramPtr->getData()->buildDiagramDataModel(true);
+
+ // also reset temporary buffered layout data - that might
+ // still refer to changed oox::Shape data
+ mpDiagramPtr->getLayout()->getPresPointShapeMap().clear();
+ }
+
+ return aRetval;
+}
+
+bool AdvancedDiagramHelper::removeNode(const OUString& rNodeId)
+{
+ bool bRetval(false);
+
+ if(hasDiagramData())
+ {
+ bRetval = mpDiagramPtr->getData()->removeNode(rNodeId);
+
+ // reset temporary buffered ModelData association lists & rebuild them
+ // and the Diagram DataModel
+ mpDiagramPtr->getData()->buildDiagramDataModel(true);
+
+ // also reset temporary buffered layout data - that might
+ // still refer to changed oox::Shape data
+ mpDiagramPtr->getLayout()->getPresPointShapeMap().clear();
+ }
+
+ return bRetval;
+}
+
+svx::diagram::DiagramDataStatePtr AdvancedDiagramHelper::extractDiagramDataState() const
+{
+ if(!mpDiagramPtr)
+ {
+ return svx::diagram::DiagramDataStatePtr();
+ }
+
+ return mpDiagramPtr->getData()->extractDiagramDataState();
+}
+
+void AdvancedDiagramHelper::applyDiagramDataState(const svx::diagram::DiagramDataStatePtr& rState)
+{
+ if(!mpDiagramPtr)
+ {
+ return;
+ }
+
+ mpDiagramPtr->getData()->applyDiagramDataState(rState);
+}
+
+void AdvancedDiagramHelper::doAnchor(SdrObjGroup& rTarget, ::oox::drawingml::Shape& rRootShape)
+{
+ if(!mpDiagramPtr)
+ {
+ return;
+ }
+
+ mpDiagramPtr->syncDiagramFontHeights();
+
+ // After Diagram import, parts of the Diagram ModelData is at the
+ // oox::drawingml::Shape. Since these objects are temporary helpers,
+ // secure that data at the Diagram ModelData by copying.
+ mpDiagramPtr->getData()->secureDataFromShapeToModelAfterDiagramImport(rRootShape);
+
+ anchorToSdrObjGroup(rTarget);
+}
+
+std::shared_ptr< ::oox::drawingml::Theme > AdvancedDiagramHelper::getOrCreateThemePtr(
+ rtl::Reference< oox::shape::ShapeFilterBase >& rxFilter) const
+{
+ // (Re-)Use already existing Theme if existing/imported if possible.
+ // If not, re-import Theme if data is available and thus possible
+ if(hasDiagramData() && (ForceThemePtrRecreation() || !mpThemePtr))
+ {
+ // get the originally imported dom::XDocument
+ const uno::Reference< css::xml::dom::XDocument >& xThemeDocument(mpDiagramPtr->getData()->getThemeDocument());
+
+ if(xThemeDocument)
+ {
+ // reset local Theme ModelData *always* to get rid of former data that would
+ // else be added additionally
+ const_cast<AdvancedDiagramHelper*>(this)->mpThemePtr = std::make_shared<oox::drawingml::Theme>();
+
+ // import Theme ModelData
+ rxFilter->importFragment(
+ new ThemeFragmentHandler(
+ *rxFilter, OUString(), *mpThemePtr ),
+ uno::Reference< css::xml::sax::XFastSAXSerializable >(
+ xThemeDocument,
+ uno::UNO_QUERY_THROW));
+ }
+ }
+
+ return mpThemePtr;
+}
+
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/oox/source/drawingml/diagram/diagramhelper.hxx b/oox/source/drawingml/diagram/diagramhelper.hxx
new file mode 100644
index 000000000..85ca4c457
--- /dev/null
+++ b/oox/source/drawingml/diagram/diagramhelper.hxx
@@ -0,0 +1,94 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ *
+ * This file incorporates work covered by the following license notice:
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed
+ * with this work for additional information regarding copyright
+ * ownership. The ASF licenses this file to you under the Apache
+ * License, Version 2.0 (the "License"); you may not use this file
+ * except in compliance with the License. You may obtain a copy of
+ * the License at http://www.apache.org/licenses/LICENSE-2.0 .
+ */
+
+#ifndef INCLUDED_OOX_DRAWINGML_DIAGRAM_DIAGRAMHELPER_HXX
+#define INCLUDED_OOX_DRAWINGML_DIAGRAM_DIAGRAMHELPER_HXX
+
+#include <rtl/ustring.hxx>
+#include <oox/drawingml/theme.hxx>
+#include <oox/shape/ShapeFilterBase.hxx>
+#include <svx/svdogrp.hxx>
+#include <svx/diagram/IDiagramHelper.hxx>
+
+namespace svx { namespace diagram {
+ class DiagramDataState;
+}}
+
+namespace oox::drawingml {
+
+class Diagram;
+
+// Advanced DiagramHelper
+//
+// This helper tries to hold all necessary data to re-layout
+// all XShapes/SdrObjects of an already imported Diagram. The
+// Diagram holds the SmarArt model data before it gets layouted,
+// while Theme holds the oox Fill/Line/Style definitions to
+// apply.
+// Re-Layouting (re-creating) is rather complex, for detailed
+// information see ::reLayout implementation.
+// This helper class may/should be extended to:
+// - deliver representative data from the Diagram-Model
+// - modify it eventually
+// - im/export Diagram model to other representations
+class AdvancedDiagramHelper final : public svx::diagram::IDiagramHelper
+{
+ const std::shared_ptr< Diagram > mpDiagramPtr;
+ std::shared_ptr<::oox::drawingml::Theme> mpThemePtr;
+
+ css::awt::Size maImportSize;
+
+ bool hasDiagramData() const;
+
+public:
+ AdvancedDiagramHelper(
+ const std::shared_ptr< Diagram >& rDiagramPtr,
+ const std::shared_ptr<::oox::drawingml::Theme>& rTheme,
+ css::awt::Size aImportSize);
+ virtual ~AdvancedDiagramHelper();
+
+ // re-create XShapes
+ virtual void reLayout(SdrObjGroup& rTarget) override;
+
+ // get text representation of data tree
+ virtual OUString getString() const override;
+
+ // get children of provided data node
+ // use empty string for top-level nodes
+ // returns vector of (id, text)
+ virtual std::vector<std::pair<OUString, OUString>> getChildren(const OUString& rParentId) const override;
+
+ // add/remove new top-level node to data model, returns its id
+ virtual OUString addNode(const OUString& rText) override;
+ virtual bool removeNode(const OUString& rNodeId) override;
+
+ // Undo/Redo helpers to extract/restore Diagram-defining data
+ virtual std::shared_ptr< svx::diagram::DiagramDataState > extractDiagramDataState() const override;
+ virtual void applyDiagramDataState(const std::shared_ptr< svx::diagram::DiagramDataState >& rState) override;
+
+ void doAnchor(SdrObjGroup& rTarget, ::oox::drawingml::Shape& rRootShape);
+ std::shared_ptr< ::oox::drawingml::Theme > getOrCreateThemePtr(
+ rtl::Reference< oox::shape::ShapeFilterBase>& rxFilter ) const;
+};
+
+}
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/oox/source/drawingml/diagram/diagramlayoutatoms.cxx b/oox/source/drawingml/diagram/diagramlayoutatoms.cxx
new file mode 100644
index 000000000..a904797a4
--- /dev/null
+++ b/oox/source/drawingml/diagram/diagramlayoutatoms.cxx
@@ -0,0 +1,2047 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ *
+ * This file incorporates work covered by the following license notice:
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed
+ * with this work for additional information regarding copyright
+ * ownership. The ASF licenses this file to you under the Apache
+ * License, Version 2.0 (the "License"); you may not use this file
+ * except in compliance with the License. You may obtain a copy of
+ * the License at http://www.apache.org/licenses/LICENSE-2.0 .
+ */
+
+#include "diagramlayoutatoms.hxx"
+
+#include <set>
+
+#include "layoutatomvisitorbase.hxx"
+
+#include <basegfx/numeric/ftools.hxx>
+#include <sal/log.hxx>
+
+#include <o3tl/unit_conversion.hxx>
+#include <oox/helper/attributelist.hxx>
+#include <oox/token/properties.hxx>
+#include <drawingml/fillproperties.hxx>
+#include <drawingml/lineproperties.hxx>
+#include <drawingml/textbody.hxx>
+#include <drawingml/textparagraph.hxx>
+#include <drawingml/textrun.hxx>
+#include <drawingml/customshapeproperties.hxx>
+#include <com/sun/star/drawing/TextFitToSizeType.hpp>
+
+using namespace ::com::sun::star;
+using namespace ::com::sun::star::uno;
+using namespace ::com::sun::star::xml::sax;
+using namespace ::oox::core;
+
+namespace
+{
+/// Looks up the value of the rInternalName -> nProperty key in rProperties.
+oox::OptValue<sal_Int32> findProperty(const oox::drawingml::LayoutPropertyMap& rProperties,
+ const OUString& rInternalName, sal_Int32 nProperty)
+{
+ oox::OptValue<sal_Int32> oRet;
+
+ auto it = rProperties.find(rInternalName);
+ if (it != rProperties.end())
+ {
+ const oox::drawingml::LayoutProperty& rProperty = it->second;
+ auto itProperty = rProperty.find(nProperty);
+ if (itProperty != rProperty.end())
+ oRet = itProperty->second;
+ }
+
+ return oRet;
+}
+
+/**
+ * Determines if nUnit is a font unit (measured in points) or not (measured in
+ * millimeters).
+ */
+bool isFontUnit(sal_Int32 nUnit)
+{
+ return nUnit == oox::XML_primFontSz || nUnit == oox::XML_secFontSz;
+}
+
+/// Determines which UNO property should be set for a given constraint type.
+sal_Int32 getPropertyFromConstraint(sal_Int32 nConstraint)
+{
+ switch (nConstraint)
+ {
+ case oox::XML_lMarg:
+ return oox::PROP_TextLeftDistance;
+ case oox::XML_rMarg:
+ return oox::PROP_TextRightDistance;
+ case oox::XML_tMarg:
+ return oox::PROP_TextUpperDistance;
+ case oox::XML_bMarg:
+ return oox::PROP_TextLowerDistance;
+ }
+
+ return 0;
+}
+
+/**
+ * Determines if pShape is (or contains) a presentation of a data node of type
+ * nType.
+ */
+bool containsDataNodeType(const oox::drawingml::ShapePtr& pShape, sal_Int32 nType)
+{
+ if (pShape->getDataNodeType() == nType)
+ return true;
+
+ for (const auto& pChild : pShape->getChildren())
+ {
+ if (containsDataNodeType(pChild, nType))
+ return true;
+ }
+
+ return false;
+}
+}
+
+namespace oox::drawingml {
+void SnakeAlg::layoutShapeChildren(const AlgAtom& rAlg, const ShapePtr& rShape,
+ const std::vector<Constraint>& rConstraints)
+{
+ if (rShape->getChildren().empty() || rShape->getSize().Width == 0
+ || rShape->getSize().Height == 0)
+ return;
+
+ // Parse constraints.
+ double fChildAspectRatio = rShape->getChildren()[0]->getAspectRatio();
+ double fShapeHeight = rShape->getSize().Height;
+ double fShapeWidth = rShape->getSize().Width;
+ // Check if we have a child aspect ratio. If so, need to shrink one dimension to
+ // achieve that ratio.
+ if (fChildAspectRatio && fShapeHeight && fChildAspectRatio < (fShapeWidth / fShapeHeight))
+ {
+ fShapeWidth = fShapeHeight * fChildAspectRatio;
+ }
+
+ double fSpaceFromConstraint = 1.0;
+ LayoutPropertyMap aPropertiesByName;
+ std::map<sal_Int32, LayoutProperty> aPropertiesByType;
+ LayoutProperty& rParent = aPropertiesByName[""];
+ rParent[XML_w] = fShapeWidth;
+ rParent[XML_h] = fShapeHeight;
+ for (const auto& rConstr : rConstraints)
+ {
+ if (rConstr.mnRefType == XML_w || rConstr.mnRefType == XML_h)
+ {
+ if (rConstr.mnType == XML_sp && rConstr.msForName.isEmpty())
+ fSpaceFromConstraint = rConstr.mfFactor;
+ }
+
+ auto itRefForName = aPropertiesByName.find(rConstr.msRefForName);
+ if (itRefForName == aPropertiesByName.end())
+ {
+ continue;
+ }
+
+ auto it = itRefForName->second.find(rConstr.mnRefType);
+ if (it == itRefForName->second.end())
+ {
+ continue;
+ }
+
+ if (rConstr.mfValue != 0.0)
+ {
+ continue;
+ }
+
+ sal_Int32 nValue = it->second * rConstr.mfFactor;
+
+ if (rConstr.mnPointType == XML_none)
+ {
+ aPropertiesByName[rConstr.msForName][rConstr.mnType] = nValue;
+ }
+ else
+ {
+ aPropertiesByType[rConstr.mnPointType][rConstr.mnType] = nValue;
+ }
+ }
+
+ std::vector<sal_Int32> aShapeWidths(rShape->getChildren().size());
+ for (size_t i = 0; i < rShape->getChildren().size(); ++i)
+ {
+ ShapePtr pChild = rShape->getChildren()[i];
+ if (!pChild->getDataNodeType())
+ {
+ // TODO handle the case when the requirement applies by name, not by point type.
+ aShapeWidths[i] = fShapeWidth;
+ continue;
+ }
+
+ auto itNodeType = aPropertiesByType.find(pChild->getDataNodeType());
+ if (itNodeType == aPropertiesByType.end())
+ {
+ aShapeWidths[i] = fShapeWidth;
+ continue;
+ }
+
+ auto it = itNodeType->second.find(XML_w);
+ if (it == itNodeType->second.end())
+ {
+ aShapeWidths[i] = fShapeWidth;
+ continue;
+ }
+
+ aShapeWidths[i] = it->second;
+ }
+
+ bool bSpaceFromConstraints = fSpaceFromConstraint != 1.0;
+
+ const AlgAtom::ParamMap& rMap = rAlg.getMap();
+ const sal_Int32 nDir = rMap.count(XML_grDir) ? rMap.find(XML_grDir)->second : XML_tL;
+ sal_Int32 nIncX = 1;
+ sal_Int32 nIncY = 1;
+ bool bHorizontal = true;
+ switch (nDir)
+ {
+ case XML_tL:
+ nIncX = 1;
+ nIncY = 1;
+ break;
+ case XML_tR:
+ nIncX = -1;
+ nIncY = 1;
+ break;
+ case XML_bL:
+ nIncX = 1;
+ nIncY = -1;
+ bHorizontal = false;
+ break;
+ case XML_bR:
+ nIncX = -1;
+ nIncY = -1;
+ bHorizontal = false;
+ break;
+ }
+
+ sal_Int32 nCount = rShape->getChildren().size();
+ // Defaults in case not provided by constraints.
+ double fSpace = bSpaceFromConstraints ? fSpaceFromConstraint : 0.3;
+ double fAspectRatio = 0.54; // diagram should not spill outside, earlier it was 0.6
+
+ sal_Int32 nCol = 1;
+ sal_Int32 nRow = 1;
+ sal_Int32 nMaxRowWidth = 0;
+ if (nCount <= fChildAspectRatio)
+ // Child aspect ratio request (width/height) is N, and we have at most N shapes.
+ // This means we don't need multiple columns.
+ nRow = nCount;
+ else
+ {
+ for (; nRow < nCount; nRow++)
+ {
+ nCol = std::ceil(static_cast<double>(nCount) / nRow);
+ sal_Int32 nRowWidth = 0;
+ for (sal_Int32 i = 0; i < nCol; ++i)
+ {
+ if (i >= nCount)
+ {
+ break;
+ }
+
+ nRowWidth += aShapeWidths[i];
+ }
+ double fTotalShapesHeight = fShapeHeight * nRow;
+ if (nRowWidth && fTotalShapesHeight / nRowWidth >= fAspectRatio)
+ {
+ if (nRowWidth > nMaxRowWidth)
+ {
+ nMaxRowWidth = nRowWidth;
+ }
+ break;
+ }
+ }
+ }
+
+ SAL_INFO("oox.drawingml", "Snake layout grid: " << nCol << "x" << nRow);
+
+ sal_Int32 nWidth = rShape->getSize().Width / (nCol + (nCol - 1) * fSpace);
+ awt::Size aChildSize(nWidth, nWidth * fAspectRatio);
+ if (nCol == 1 && nRow > 1)
+ {
+ // We have a single column, so count the height based on the parent height, not
+ // based on width.
+ // Space occurs inside children; also double amount of space is needed outside (on
+ // both sides), if the factor comes from a constraint.
+ sal_Int32 nNumSpaces = -1;
+ if (bSpaceFromConstraints)
+ nNumSpaces += 4;
+ sal_Int32 nHeight = rShape->getSize().Height / (nRow + (nRow + nNumSpaces) * fSpace);
+
+ if (fChildAspectRatio > 1)
+ {
+ // Shrink width if the aspect ratio requires it.
+ nWidth = std::min(rShape->getSize().Width,
+ static_cast<sal_Int32>(nHeight * fChildAspectRatio));
+ aChildSize = awt::Size(nWidth, nHeight);
+ }
+
+ bHorizontal = false;
+ }
+
+ awt::Point aCurrPos(0, 0);
+ if (nIncX == -1)
+ aCurrPos.X = rShape->getSize().Width - aChildSize.Width;
+ if (nIncY == -1)
+ aCurrPos.Y = rShape->getSize().Height - aChildSize.Height;
+ else if (bSpaceFromConstraints)
+ {
+ if (!bHorizontal)
+ {
+ // Initial vertical offset to have upper spacing (outside, so double amount).
+ aCurrPos.Y = aChildSize.Height * fSpace * 2;
+ }
+ }
+
+ sal_Int32 nStartX = aCurrPos.X;
+ sal_Int32 nColIdx = 0, index = 0;
+
+ const sal_Int32 aContDir
+ = rMap.count(XML_contDir) ? rMap.find(XML_contDir)->second : XML_sameDir;
+
+ switch (aContDir)
+ {
+ case XML_sameDir:
+ {
+ sal_Int32 nRowHeight = 0;
+ for (auto& aCurrShape : rShape->getChildren())
+ {
+ aCurrShape->setPosition(aCurrPos);
+ awt::Size aCurrSize(aChildSize);
+ // aShapeWidths items are a portion of nMaxRowWidth. We want the same ratio,
+ // based on the original parent width, ignoring the aspect ratio request.
+ bool bWidthsFromConstraints
+ = nCount >= 2 && rShape->getChildren()[1]->getDataNodeType() == XML_sibTrans;
+ if (bWidthsFromConstraints && nMaxRowWidth)
+ {
+ double fWidthFactor = static_cast<double>(aShapeWidths[index]) / nMaxRowWidth;
+ // We can only work from constraints if spacing is represented by a real
+ // child shape.
+ aCurrSize.Width = rShape->getSize().Width * fWidthFactor;
+ }
+ if (fChildAspectRatio)
+ {
+ aCurrSize.Height = aCurrSize.Width / fChildAspectRatio;
+
+ // Child shapes are not allowed to leave their parent.
+ aCurrSize.Height = std::min<sal_Int32>(
+ aCurrSize.Height, rShape->getSize().Height / (nRow + (nRow - 1) * fSpace));
+ }
+ if (aCurrSize.Height > nRowHeight)
+ {
+ nRowHeight = aCurrSize.Height;
+ }
+ aCurrShape->setSize(aCurrSize);
+ aCurrShape->setChildSize(aCurrSize);
+
+ index++; // counts index of child, helpful for positioning.
+
+ if (index % nCol == 0 || ((index / nCol) + 1) != nRow)
+ aCurrPos.X += nIncX * (aCurrSize.Width + fSpace * aCurrSize.Width);
+
+ if (++nColIdx == nCol) // condition for next row
+ {
+ // if last row, then position children according to number of shapes.
+ if ((index + 1) % nCol != 0 && (index + 1) >= 3
+ && ((index + 1) / nCol + 1) == nRow && nCount != nRow * nCol)
+ {
+ // position first child of last row
+ if (bWidthsFromConstraints)
+ {
+ aCurrPos.X = nStartX;
+ }
+ else
+ {
+ // Can assume that all child shape has the same width.
+ aCurrPos.X
+ = nStartX
+ + (nIncX * (aCurrSize.Width + fSpace * aCurrSize.Width)) / 2;
+ }
+ }
+ else
+ // if not last row, positions first child of that row
+ aCurrPos.X = nStartX;
+ aCurrPos.Y += nIncY * (nRowHeight + fSpace * nRowHeight);
+ nColIdx = 0;
+ nRowHeight = 0;
+ }
+
+ // positions children in the last row.
+ if (index % nCol != 0 && index >= 3 && ((index / nCol) + 1) == nRow)
+ aCurrPos.X += (nIncX * (aCurrSize.Width + fSpace * aCurrSize.Width));
+ }
+ break;
+ }
+ case XML_revDir:
+ for (auto& aCurrShape : rShape->getChildren())
+ {
+ aCurrShape->setPosition(aCurrPos);
+ aCurrShape->setSize(aChildSize);
+ aCurrShape->setChildSize(aChildSize);
+
+ index++; // counts index of child, helpful for positioning.
+
+ /*
+ index%col -> tests node is at last column
+ ((index/nCol)+1)!=nRow) -> tests node is at last row or not
+ ((index/nCol)+1)%2!=0 -> tests node is at row which is multiple of 2, important for revDir
+ num!=nRow*nCol -> tests how last row nodes should be spread.
+ */
+
+ if ((index % nCol == 0 || ((index / nCol) + 1) != nRow)
+ && ((index / nCol) + 1) % 2 != 0)
+ aCurrPos.X += (aChildSize.Width + fSpace * aChildSize.Width);
+ else if (index % nCol != 0
+ && ((index / nCol) + 1) != nRow) // child other than placed at last column
+ aCurrPos.X -= (aChildSize.Width + fSpace * aChildSize.Width);
+
+ if (++nColIdx == nCol) // condition for next row
+ {
+ // if last row, then position children according to number of shapes.
+ if ((index + 1) % nCol != 0 && (index + 1) >= 4
+ && ((index + 1) / nCol + 1) == nRow && nCount != nRow * nCol
+ && ((index / nCol) + 1) % 2 == 0)
+ // position first child of last row
+ aCurrPos.X -= aChildSize.Width * 3 / 2;
+ else if ((index + 1) % nCol != 0 && (index + 1) >= 4
+ && ((index + 1) / nCol + 1) == nRow && nCount != nRow * nCol
+ && ((index / nCol) + 1) % 2 != 0)
+ aCurrPos.X = nStartX
+ + (nIncX * (aChildSize.Width + fSpace * aChildSize.Width)) / 2;
+ else if (((index / nCol) + 1) % 2 != 0)
+ aCurrPos.X = nStartX;
+
+ aCurrPos.Y += nIncY * (aChildSize.Height + fSpace * aChildSize.Height);
+ nColIdx = 0;
+ }
+
+ // positions children in the last row.
+ if (index % nCol != 0 && index >= 3 && ((index / nCol) + 1) == nRow
+ && ((index / nCol) + 1) % 2 == 0)
+ //if row%2=0 then start from left else
+ aCurrPos.X -= (nIncX * (aChildSize.Width + fSpace * aChildSize.Width));
+ else if (index % nCol != 0 && index >= 3 && ((index / nCol) + 1) == nRow
+ && ((index / nCol) + 1) % 2 != 0)
+ // start from right
+ aCurrPos.X += (nIncX * (aChildSize.Width + fSpace * aChildSize.Width));
+ }
+ break;
+ }
+}
+
+void PyraAlg::layoutShapeChildren(const ShapePtr& rShape)
+{
+ if (rShape->getChildren().empty() || rShape->getSize().Width == 0
+ || rShape->getSize().Height == 0)
+ return;
+
+ // const sal_Int32 nDir = maMap.count(XML_linDir) ? maMap.find(XML_linDir)->second : XML_fromT;
+ // const sal_Int32 npyraAcctPos = maMap.count(XML_pyraAcctPos) ? maMap.find(XML_pyraAcctPos)->second : XML_bef;
+ // const sal_Int32 ntxDir = maMap.count(XML_txDir) ? maMap.find(XML_txDir)->second : XML_fromT;
+ // const sal_Int32 npyraLvlNode = maMap.count(XML_pyraLvlNode) ? maMap.find(XML_pyraLvlNode)->second : XML_level;
+ // uncomment when use in code.
+
+ sal_Int32 nCount = rShape->getChildren().size();
+ double fAspectRatio = 0.32;
+
+ awt::Size aChildSize = rShape->getSize();
+ aChildSize.Width /= nCount;
+ aChildSize.Height /= nCount;
+
+ awt::Point aCurrPos(0, 0);
+ aCurrPos.X = fAspectRatio * aChildSize.Width * (nCount - 1);
+ aCurrPos.Y = fAspectRatio * aChildSize.Height;
+
+ for (auto& aCurrShape : rShape->getChildren())
+ {
+ aCurrShape->setPosition(aCurrPos);
+ if (nCount > 1)
+ {
+ aCurrPos.X -= aChildSize.Height / (nCount - 1);
+ }
+ aChildSize.Width += aChildSize.Height;
+ aCurrShape->setSize(aChildSize);
+ aCurrShape->setChildSize(aChildSize);
+ aCurrPos.Y += (aChildSize.Height);
+ }
+}
+
+bool CompositeAlg::inferFromLayoutProperty(const LayoutProperty& rMap, sal_Int32 nRefType,
+ sal_Int32& rValue)
+{
+ switch (nRefType)
+ {
+ case XML_r:
+ {
+ auto it = rMap.find(XML_l);
+ if (it == rMap.end())
+ {
+ return false;
+ }
+ sal_Int32 nLeft = it->second;
+ it = rMap.find(XML_w);
+ if (it == rMap.end())
+ {
+ return false;
+ }
+ rValue = nLeft + it->second;
+ return true;
+ }
+ default:
+ break;
+ }
+
+ return false;
+}
+
+void CompositeAlg::applyConstraintToLayout(const Constraint& rConstraint,
+ LayoutPropertyMap& rProperties)
+{
+ // TODO handle the case when we have ptType="...", not forName="...".
+ if (rConstraint.msForName.isEmpty())
+ {
+ return;
+ }
+
+ const LayoutPropertyMap::const_iterator aRef = rProperties.find(rConstraint.msRefForName);
+ if (aRef == rProperties.end())
+ return;
+
+ const LayoutProperty::const_iterator aRefType = aRef->second.find(rConstraint.mnRefType);
+ sal_Int32 nInferredValue = 0;
+ if (aRefType != aRef->second.end())
+ {
+ // Reference is found directly.
+ rProperties[rConstraint.msForName][rConstraint.mnType]
+ = aRefType->second * rConstraint.mfFactor;
+ }
+ else if (inferFromLayoutProperty(aRef->second, rConstraint.mnRefType, nInferredValue))
+ {
+ // Reference can be inferred.
+ rProperties[rConstraint.msForName][rConstraint.mnType]
+ = nInferredValue * rConstraint.mfFactor;
+ }
+ else
+ {
+ // Reference not found, assume a fixed value.
+ // Values are never in EMU, while oox::drawingml::Shape position and size are always in
+ // EMU.
+ const double fValue = o3tl::convert(rConstraint.mfValue,
+ isFontUnit(rConstraint.mnRefType) ? o3tl::Length::pt
+ : o3tl::Length::mm,
+ o3tl::Length::emu);
+ rProperties[rConstraint.msForName][rConstraint.mnType] = fValue;
+ }
+}
+
+void CompositeAlg::layoutShapeChildren(AlgAtom& rAlg, const ShapePtr& rShape,
+ const std::vector<Constraint>& rConstraints)
+{
+ LayoutPropertyMap aProperties;
+ LayoutProperty& rParent = aProperties[""];
+
+ sal_Int32 nParentXOffset = 0;
+
+ // Track min/max vertical positions, so we can center everything at the end, if needed.
+ sal_Int32 nVertMin = std::numeric_limits<sal_Int32>::max();
+ sal_Int32 nVertMax = 0;
+
+ if (rAlg.getAspectRatio() != 1.0)
+ {
+ rParent[XML_w] = rShape->getSize().Width;
+ rParent[XML_h] = rShape->getSize().Height;
+ rParent[XML_l] = 0;
+ rParent[XML_t] = 0;
+ rParent[XML_r] = rShape->getSize().Width;
+ rParent[XML_b] = rShape->getSize().Height;
+ }
+ else
+ {
+ // Shrink width to be only as large as height.
+ rParent[XML_w] = std::min(rShape->getSize().Width, rShape->getSize().Height);
+ rParent[XML_h] = rShape->getSize().Height;
+ if (rParent[XML_w] < rShape->getSize().Width)
+ nParentXOffset = (rShape->getSize().Width - rParent[XML_w]) / 2;
+ rParent[XML_l] = nParentXOffset;
+ rParent[XML_t] = 0;
+ rParent[XML_r] = rShape->getSize().Width - rParent[XML_l];
+ rParent[XML_b] = rShape->getSize().Height;
+ }
+
+ for (const auto& rConstr : rConstraints)
+ {
+ // Apply direct constraints for all layout nodes.
+ applyConstraintToLayout(rConstr, aProperties);
+ }
+
+ for (auto& aCurrShape : rShape->getChildren())
+ {
+ // Apply constraints from the current layout node for this child shape.
+ // Previous child shapes may have changed aProperties.
+ for (const auto& rConstr : rConstraints)
+ {
+ if (rConstr.msForName != aCurrShape->getInternalName())
+ {
+ continue;
+ }
+
+ applyConstraintToLayout(rConstr, aProperties);
+ }
+
+ // Apply constraints from the child layout node for this child shape.
+ // This builds on top of the own parent state + the state of previous shapes in the
+ // same composite algorithm.
+ const LayoutNode& rLayoutNode = rAlg.getLayoutNode();
+ for (const auto& pDirectChild : rLayoutNode.getChildren())
+ {
+ auto pLayoutNode = dynamic_cast<LayoutNode*>(pDirectChild.get());
+ if (!pLayoutNode)
+ {
+ continue;
+ }
+
+ if (pLayoutNode->getName() != aCurrShape->getInternalName())
+ {
+ continue;
+ }
+
+ for (const auto& pChild : pLayoutNode->getChildren())
+ {
+ auto pConstraintAtom = dynamic_cast<ConstraintAtom*>(pChild.get());
+ if (!pConstraintAtom)
+ {
+ continue;
+ }
+
+ const Constraint& rConstraint = pConstraintAtom->getConstraint();
+ if (!rConstraint.msForName.isEmpty())
+ {
+ continue;
+ }
+
+ if (!rConstraint.msRefForName.isEmpty())
+ {
+ continue;
+ }
+
+ // Either an absolute value or a factor of a property.
+ if (rConstraint.mfValue == 0.0 && rConstraint.mnRefType == XML_none)
+ {
+ continue;
+ }
+
+ Constraint aConstraint(rConstraint);
+ aConstraint.msForName = pLayoutNode->getName();
+ aConstraint.msRefForName = pLayoutNode->getName();
+
+ applyConstraintToLayout(aConstraint, aProperties);
+ }
+ }
+
+ awt::Size aSize = rShape->getSize();
+ awt::Point aPos(0, 0);
+
+ const LayoutPropertyMap::const_iterator aPropIt
+ = aProperties.find(aCurrShape->getInternalName());
+ if (aPropIt != aProperties.end())
+ {
+ const LayoutProperty& rProp = aPropIt->second;
+ LayoutProperty::const_iterator it, it2;
+
+ if ((it = rProp.find(XML_w)) != rProp.end())
+ aSize.Width = std::min(it->second, rShape->getSize().Width);
+ if ((it = rProp.find(XML_h)) != rProp.end())
+ aSize.Height = std::min(it->second, rShape->getSize().Height);
+
+ if ((it = rProp.find(XML_l)) != rProp.end())
+ aPos.X = it->second;
+ else if ((it = rProp.find(XML_ctrX)) != rProp.end())
+ aPos.X = it->second - aSize.Width / 2;
+ else if ((it = rProp.find(XML_r)) != rProp.end())
+ aPos.X = it->second - aSize.Width;
+
+ if ((it = rProp.find(XML_t)) != rProp.end())
+ aPos.Y = it->second;
+ else if ((it = rProp.find(XML_ctrY)) != rProp.end())
+ aPos.Y = it->second - aSize.Height / 2;
+ else if ((it = rProp.find(XML_b)) != rProp.end())
+ aPos.Y = it->second - aSize.Height;
+
+ if ((it = rProp.find(XML_l)) != rProp.end() && (it2 = rProp.find(XML_r)) != rProp.end())
+ aSize.Width = it2->second - it->second;
+ if ((it = rProp.find(XML_t)) != rProp.end() && (it2 = rProp.find(XML_b)) != rProp.end())
+ aSize.Height = it2->second - it->second;
+
+ aPos.X += nParentXOffset;
+ aSize.Width = std::min(aSize.Width, rShape->getSize().Width - aPos.X);
+ aSize.Height = std::min(aSize.Height, rShape->getSize().Height - aPos.Y);
+ }
+ else
+ SAL_WARN("oox.drawingml", "composite layout properties not found for shape "
+ << aCurrShape->getInternalName());
+
+ aCurrShape->setSize(aSize);
+ aCurrShape->setChildSize(aSize);
+ aCurrShape->setPosition(aPos);
+
+ nVertMin = std::min(aPos.Y, nVertMin);
+ nVertMax = std::max(aPos.Y + aSize.Height, nVertMax);
+
+ NamedShapePairs& rDiagramFontHeights
+ = rAlg.getLayoutNode().getDiagram().getDiagramFontHeights();
+ auto it = rDiagramFontHeights.find(aCurrShape->getInternalName());
+ if (it != rDiagramFontHeights.end())
+ {
+ // Internal name matches: put drawingml::Shape to the relevant group, for
+ // synchronized font height handling.
+ it->second.insert({ aCurrShape, {} });
+ }
+ }
+
+ // See if all vertical space is used or we have to center the content.
+ if (!(nVertMin >= 0 && nVertMin <= nVertMax && nVertMax <= rParent[XML_h]))
+ return;
+
+ sal_Int32 nDiff = rParent[XML_h] - (nVertMax - nVertMin);
+ if (nDiff > 0)
+ {
+ for (auto& aCurrShape : rShape->getChildren())
+ {
+ awt::Point aPosition = aCurrShape->getPosition();
+ aPosition.Y += nDiff / 2;
+ aCurrShape->setPosition(aPosition);
+ }
+ }
+}
+
+IteratorAttr::IteratorAttr( )
+ : mnCnt( -1 )
+ , mbHideLastTrans( true )
+ , mnPtType( 0 )
+ , mnSt( 0 )
+ , mnStep( 1 )
+{
+}
+
+void IteratorAttr::loadFromXAttr( const Reference< XFastAttributeList >& xAttr )
+{
+ AttributeList attr( xAttr );
+ maAxis = attr.getTokenList(XML_axis);
+ mnCnt = attr.getInteger( XML_cnt, -1 );
+ mbHideLastTrans = attr.getBool( XML_hideLastTrans, true );
+ mnSt = attr.getInteger( XML_st, 0 );
+ mnStep = attr.getInteger( XML_step, 1 );
+
+ // better to keep first token instead of error when multiple values
+ std::vector<sal_Int32> aPtTypes = attr.getTokenList(XML_ptType);
+ mnPtType = aPtTypes.empty() ? XML_all : aPtTypes.front();
+}
+
+ConditionAttr::ConditionAttr()
+ : mnFunc( 0 )
+ , mnArg( 0 )
+ , mnOp( 0 )
+ , mnVal( 0 )
+{
+}
+
+void ConditionAttr::loadFromXAttr( const Reference< XFastAttributeList >& xAttr )
+{
+ mnFunc = xAttr->getOptionalValueToken( XML_func, 0 );
+ mnArg = xAttr->getOptionalValueToken( XML_arg, XML_none );
+ mnOp = xAttr->getOptionalValueToken( XML_op, 0 );
+ msVal = xAttr->getOptionalValue( XML_val );
+ mnVal = xAttr->getOptionalValueToken( XML_val, 0 );
+}
+
+void LayoutAtom::dump(int level)
+{
+ SAL_INFO("oox.drawingml", "level = " << level << " - " << msName << " of type " << typeid(*this).name() );
+ for (const auto& pAtom : getChildren())
+ pAtom->dump(level + 1);
+}
+
+ForEachAtom::ForEachAtom(LayoutNode& rLayoutNode, const Reference< XFastAttributeList >& xAttributes) :
+ LayoutAtom(rLayoutNode)
+{
+ maIter.loadFromXAttr(xAttributes);
+}
+
+void ForEachAtom::accept( LayoutAtomVisitor& rVisitor )
+{
+ rVisitor.visit(*this);
+}
+
+LayoutAtomPtr ForEachAtom::getRefAtom()
+{
+ if (!msRef.isEmpty())
+ {
+ const LayoutAtomMap& rLayoutAtomMap = getLayoutNode().getDiagram().getLayout()->getLayoutAtomMap();
+ LayoutAtomMap::const_iterator pRefAtom = rLayoutAtomMap.find(msRef);
+ if (pRefAtom != rLayoutAtomMap.end())
+ return pRefAtom->second;
+ else
+ SAL_WARN("oox.drawingml", "ForEach reference \"" << msRef << "\" not found");
+ }
+ return LayoutAtomPtr();
+}
+
+void ChooseAtom::accept( LayoutAtomVisitor& rVisitor )
+{
+ rVisitor.visit(*this);
+}
+
+ConditionAtom::ConditionAtom(LayoutNode& rLayoutNode, bool isElse, const Reference< XFastAttributeList >& xAttributes) :
+ LayoutAtom(rLayoutNode),
+ mIsElse(isElse)
+{
+ maIter.loadFromXAttr( xAttributes );
+ maCond.loadFromXAttr( xAttributes );
+}
+
+bool ConditionAtom::compareResult(sal_Int32 nOperator, sal_Int32 nFirst, sal_Int32 nSecond)
+{
+ switch (nOperator)
+ {
+ case XML_equ: return nFirst == nSecond;
+ case XML_gt: return nFirst > nSecond;
+ case XML_gte: return nFirst >= nSecond;
+ case XML_lt: return nFirst < nSecond;
+ case XML_lte: return nFirst <= nSecond;
+ case XML_neq: return nFirst != nSecond;
+ default:
+ SAL_WARN("oox.drawingml", "unsupported operator: " << nOperator);
+ return false;
+ }
+}
+
+namespace
+{
+/**
+ * Takes the connection list from rLayoutNode, navigates from rFrom on an edge
+ * of type nType, using a direction determined by bSourceToDestination.
+ */
+OUString navigate(LayoutNode& rLayoutNode, svx::diagram::TypeConstant nType, std::u16string_view rFrom,
+ bool bSourceToDestination)
+{
+ for (const auto& rConnection : rLayoutNode.getDiagram().getData()->getConnections())
+ {
+ if (rConnection.mnXMLType != nType)
+ continue;
+
+ if (bSourceToDestination)
+ {
+ if (rConnection.msSourceId == rFrom)
+ return rConnection.msDestId;
+ }
+ else
+ {
+ if (rConnection.msDestId == rFrom)
+ return rConnection.msSourceId;
+ }
+ }
+
+ return OUString();
+}
+
+sal_Int32 calcMaxDepth(std::u16string_view rNodeName, const svx::diagram::Connections& rConnections)
+{
+ sal_Int32 nMaxLength = 0;
+ for (auto const& aCxn : rConnections)
+ if (aCxn.mnXMLType == svx::diagram::TypeConstant::XML_parOf && aCxn.msSourceId == rNodeName)
+ nMaxLength = std::max(nMaxLength, calcMaxDepth(aCxn.msDestId, rConnections) + 1);
+
+ return nMaxLength;
+}
+}
+
+sal_Int32 ConditionAtom::getNodeCount(const svx::diagram::Point* pPresPoint) const
+{
+ sal_Int32 nCount = 0;
+ OUString sNodeId = pPresPoint->msPresentationAssociationId;
+
+ // HACK: special case - count children of first child
+ if (maIter.maAxis.size() == 2 && maIter.maAxis[0] == XML_ch && maIter.maAxis[1] == XML_ch)
+ sNodeId = navigate(mrLayoutNode, svx::diagram::TypeConstant::XML_parOf, sNodeId, /*bSourceToDestination*/ true);
+
+ if (!sNodeId.isEmpty())
+ {
+ for (const auto& aCxn : mrLayoutNode.getDiagram().getData()->getConnections())
+ if (aCxn.mnXMLType == svx::diagram::TypeConstant::XML_parOf && aCxn.msSourceId == sNodeId)
+ nCount++;
+ }
+
+ return nCount;
+}
+
+bool ConditionAtom::getDecision(const svx::diagram::Point* pPresPoint) const
+{
+ if (mIsElse)
+ return true;
+ if (!pPresPoint)
+ return false;
+
+ switch (maCond.mnFunc)
+ {
+ case XML_var:
+ {
+ if (maCond.mnArg == XML_dir)
+ return compareResult(maCond.mnOp, pPresPoint->mnDirection, maCond.mnVal);
+ else if (maCond.mnArg == XML_hierBranch)
+ {
+ sal_Int32 nHierarchyBranch = pPresPoint->moHierarchyBranch.value_or(XML_std);
+ if (!pPresPoint->moHierarchyBranch.has_value())
+ {
+ // If <dgm:hierBranch> is missing in the current presentation
+ // point, ask the parent.
+ OUString aParent = navigate(mrLayoutNode, svx::diagram::TypeConstant::XML_presParOf, pPresPoint->msModelId,
+ /*bSourceToDestination*/ false);
+ DiagramData::PointNameMap& rPointNameMap
+ = mrLayoutNode.getDiagram().getData()->getPointNameMap();
+ auto it = rPointNameMap.find(aParent);
+ if (it != rPointNameMap.end())
+ {
+ const svx::diagram::Point* pParent = it->second;
+ if (pParent->moHierarchyBranch.has_value())
+ nHierarchyBranch = pParent->moHierarchyBranch.value();
+ }
+ }
+ return compareResult(maCond.mnOp, nHierarchyBranch, maCond.mnVal);
+ }
+ break;
+ }
+
+ case XML_cnt:
+ return compareResult(maCond.mnOp, getNodeCount(pPresPoint), maCond.msVal.toInt32());
+
+ case XML_maxDepth:
+ {
+ sal_Int32 nMaxDepth = calcMaxDepth(pPresPoint->msPresentationAssociationId, mrLayoutNode.getDiagram().getData()->getConnections());
+ return compareResult(maCond.mnOp, nMaxDepth, maCond.msVal.toInt32());
+ }
+
+ case XML_depth:
+ case XML_pos:
+ case XML_revPos:
+ case XML_posEven:
+ case XML_posOdd:
+ // TODO
+ default:
+ SAL_WARN("oox.drawingml", "unknown function " << maCond.mnFunc);
+ break;
+ }
+
+ return true;
+}
+
+void ConditionAtom::accept( LayoutAtomVisitor& rVisitor )
+{
+ rVisitor.visit(*this);
+}
+
+void ConstraintAtom::accept( LayoutAtomVisitor& rVisitor )
+{
+ rVisitor.visit(*this);
+}
+
+void RuleAtom::accept( LayoutAtomVisitor& rVisitor )
+{
+ rVisitor.visit(*this);
+}
+
+void ConstraintAtom::parseConstraint(std::vector<Constraint>& rConstraints,
+ bool bRequireForName) const
+{
+ // Allowlist for cases where empty forName is handled.
+ if (bRequireForName)
+ {
+ switch (maConstraint.mnType)
+ {
+ case XML_sp:
+ case XML_lMarg:
+ case XML_rMarg:
+ case XML_tMarg:
+ case XML_bMarg:
+ bRequireForName = false;
+ break;
+ }
+ switch (maConstraint.mnPointType)
+ {
+ case XML_sibTrans:
+ bRequireForName = false;
+ break;
+ }
+ }
+
+ if (bRequireForName && maConstraint.msForName.isEmpty())
+ return;
+
+ // accepting only basic equality constraints
+ if ((maConstraint.mnOperator == XML_none || maConstraint.mnOperator == XML_equ)
+ && maConstraint.mnType != XML_none)
+ {
+ rConstraints.push_back(maConstraint);
+ }
+}
+
+void RuleAtom::parseRule(std::vector<Rule>& rRules) const
+{
+ if (!maRule.msForName.isEmpty())
+ {
+ rRules.push_back(maRule);
+ }
+}
+
+void AlgAtom::accept( LayoutAtomVisitor& rVisitor )
+{
+ rVisitor.visit(*this);
+}
+
+sal_Int32 AlgAtom::getConnectorType()
+{
+ sal_Int32 nConnRout = 0;
+ sal_Int32 nBegSty = 0;
+ sal_Int32 nEndSty = 0;
+ if (maMap.count(oox::XML_connRout))
+ nConnRout = maMap.find(oox::XML_connRout)->second;
+ if (maMap.count(oox::XML_begSty))
+ nBegSty = maMap.find(oox::XML_begSty)->second;
+ if (maMap.count(oox::XML_endSty))
+ nEndSty = maMap.find(oox::XML_endSty)->second;
+
+ if (nConnRout == oox::XML_bend)
+ return 0; // was oox::XML_bentConnector3 - connectors are hidden in org chart as they don't work anyway
+ if (nBegSty == oox::XML_arr && nEndSty == oox::XML_arr)
+ return oox::XML_leftRightArrow;
+ if (nBegSty == oox::XML_arr)
+ return oox::XML_leftArrow;
+ if (nEndSty == oox::XML_arr)
+ return oox::XML_rightArrow;
+
+ return oox::XML_rightArrow;
+}
+
+sal_Int32 AlgAtom::getVerticalShapesCount(const ShapePtr& rShape)
+{
+ if (rShape->getChildren().empty())
+ return (rShape->getSubType() != XML_conn) ? 1 : 0;
+
+ sal_Int32 nDir = XML_fromL;
+ if (mnType == XML_hierRoot)
+ nDir = XML_fromT;
+ else if (maMap.count(XML_linDir))
+ nDir = maMap.find(XML_linDir)->second;
+
+ const sal_Int32 nSecDir = maMap.count(XML_secLinDir) ? maMap.find(XML_secLinDir)->second : 0;
+
+ sal_Int32 nCount = 0;
+ if (nDir == XML_fromT || nDir == XML_fromB)
+ {
+ for (const ShapePtr& pChild : rShape->getChildren())
+ nCount += pChild->getVerticalShapesCount();
+ }
+ else if ((nDir == XML_fromL || nDir == XML_fromR) && nSecDir == XML_fromT)
+ {
+ for (const ShapePtr& pChild : rShape->getChildren())
+ nCount += pChild->getVerticalShapesCount();
+ nCount = (nCount + 1) / 2;
+ }
+ else
+ {
+ for (const ShapePtr& pChild : rShape->getChildren())
+ nCount = std::max(nCount, pChild->getVerticalShapesCount());
+ }
+
+ return nCount;
+}
+
+namespace
+{
+/// Does the first data node of this shape have customized text properties?
+bool HasCustomText(const ShapePtr& rShape, LayoutNode& rLayoutNode)
+{
+ const PresPointShapeMap& rPresPointShapeMap
+ = rLayoutNode.getDiagram().getLayout()->getPresPointShapeMap();
+ const DiagramData::StringMap& rPresOfNameMap
+ = rLayoutNode.getDiagram().getData()->getPresOfNameMap();
+ const DiagramData::PointNameMap& rPointNameMap
+ = rLayoutNode.getDiagram().getData()->getPointNameMap();
+ // Get the first presentation node of the shape.
+ const svx::diagram::Point* pPresNode = nullptr;
+ for (const auto& rPair : rPresPointShapeMap)
+ {
+ if (rPair.second == rShape)
+ {
+ pPresNode = rPair.first;
+ break;
+ }
+ }
+ // Get the first data node of the presentation node.
+ svx::diagram::Point* pDataNode = nullptr;
+ if (pPresNode)
+ {
+ auto itPresToData = rPresOfNameMap.find(pPresNode->msModelId);
+ if (itPresToData != rPresOfNameMap.end())
+ {
+ for (const auto& rPair : itPresToData->second)
+ {
+ const DiagramData::SourceIdAndDepth& rItem = rPair.second;
+ auto it = rPointNameMap.find(rItem.msSourceId);
+ if (it != rPointNameMap.end())
+ {
+ pDataNode = it->second;
+ break;
+ }
+ }
+ }
+ }
+
+ // If we have a data node, see if its text is customized or not.
+ if (pDataNode)
+ {
+ return pDataNode->mbCustomText;
+ }
+
+ return false;
+}
+}
+
+void AlgAtom::layoutShape(const ShapePtr& rShape, const std::vector<Constraint>& rConstraints,
+ const std::vector<Rule>& rRules)
+{
+ if (mnType != XML_lin)
+ {
+ // TODO Handle spacing from constraints for non-lin algorithms as well.
+ rShape->getChildren().erase(
+ std::remove_if(rShape->getChildren().begin(), rShape->getChildren().end(),
+ [](const ShapePtr& aChild) {
+ return aChild->getServiceName() == "com.sun.star.drawing.GroupShape"
+ && aChild->getChildren().empty();
+ }),
+ rShape->getChildren().end());
+ }
+
+ switch(mnType)
+ {
+ case XML_composite:
+ {
+ CompositeAlg::layoutShapeChildren(*this, rShape, rConstraints);
+ break;
+ }
+
+ case XML_conn:
+ {
+ if (rShape->getSubType() == XML_conn)
+ {
+ // There is no shape type "conn", replace it by an arrow based
+ // on the direction of the parent linear layout.
+ sal_Int32 nType = getConnectorType();
+
+ rShape->setSubType(nType);
+ rShape->getCustomShapeProperties()->setShapePresetType(nType);
+ }
+
+ // Parse constraints to adjust the size.
+ std::vector<Constraint> aDirectConstraints;
+ const LayoutNode& rLayoutNode = getLayoutNode();
+ for (const auto& pChild : rLayoutNode.getChildren())
+ {
+ auto pConstraintAtom = dynamic_cast<ConstraintAtom*>(pChild.get());
+ if (pConstraintAtom)
+ pConstraintAtom->parseConstraint(aDirectConstraints, /*bRequireForName=*/false);
+ }
+
+ LayoutPropertyMap aProperties;
+ LayoutProperty& rParent = aProperties[""];
+ rParent[XML_w] = rShape->getSize().Width;
+ rParent[XML_h] = rShape->getSize().Height;
+ rParent[XML_l] = 0;
+ rParent[XML_t] = 0;
+ rParent[XML_r] = rShape->getSize().Width;
+ rParent[XML_b] = rShape->getSize().Height;
+ for (const auto& rConstr : aDirectConstraints)
+ {
+ const LayoutPropertyMap::const_iterator aRef
+ = aProperties.find(rConstr.msRefForName);
+ if (aRef != aProperties.end())
+ {
+ const LayoutProperty::const_iterator aRefType
+ = aRef->second.find(rConstr.mnRefType);
+ if (aRefType != aRef->second.end())
+ aProperties[rConstr.msForName][rConstr.mnType]
+ = aRefType->second * rConstr.mfFactor;
+ }
+ }
+ awt::Size aSize;
+ aSize.Width = rParent[XML_w];
+ aSize.Height = rParent[XML_h];
+ // keep center position
+ awt::Point aPos = rShape->getPosition();
+ aPos.X += (rShape->getSize().Width - aSize.Width) / 2;
+ aPos.Y += (rShape->getSize().Height - aSize.Height) / 2;
+ rShape->setPosition(aPos);
+ rShape->setSize(aSize);
+ break;
+ }
+
+ case XML_cycle:
+ {
+ if (rShape->getChildren().empty())
+ break;
+
+ const sal_Int32 nStartAngle = maMap.count(XML_stAng) ? maMap.find(XML_stAng)->second : 0;
+ const sal_Int32 nSpanAngle = maMap.count(XML_spanAng) ? maMap.find(XML_spanAng)->second : 360;
+ const sal_Int32 nRotationPath = maMap.count(XML_rotPath) ? maMap.find(XML_rotPath)->second : XML_none;
+ const sal_Int32 nctrShpMap = maMap.count(XML_ctrShpMap) ? maMap.find(XML_ctrShpMap)->second : XML_none;
+ const awt::Size aCenter(rShape->getSize().Width / 2, rShape->getSize().Height / 2);
+ const awt::Size aChildSize(rShape->getSize().Width / 4, rShape->getSize().Height / 4);
+ const awt::Size aConnectorSize(rShape->getSize().Width / 12, rShape->getSize().Height / 12);
+ const sal_Int32 nRadius = std::min(
+ (rShape->getSize().Width - aChildSize.Width) / 2,
+ (rShape->getSize().Height - aChildSize.Height) / 2);
+
+ std::vector<oox::drawingml::ShapePtr> aCycleChildren = rShape->getChildren();
+
+ if (nctrShpMap == XML_fNode)
+ {
+ // first node placed in center, others around
+ oox::drawingml::ShapePtr pCenterShape = aCycleChildren.front();
+ aCycleChildren.erase(aCycleChildren.begin());
+ const awt::Point aCurrPos(aCenter.Width - aChildSize.Width / 2,
+ aCenter.Height - aChildSize.Height / 2);
+ pCenterShape->setPosition(aCurrPos);
+ pCenterShape->setSize(aChildSize);
+ pCenterShape->setChildSize(aChildSize);
+ }
+
+ const sal_Int32 nShapes = aCycleChildren.size();
+ if (nShapes)
+ {
+ const sal_Int32 nConnectorRadius = nRadius * cos(basegfx::deg2rad(nSpanAngle / nShapes));
+ const sal_Int32 nConnectorAngle = nSpanAngle > 0 ? 0 : 180;
+
+ sal_Int32 idx = 0;
+ for (auto & aCurrShape : aCycleChildren)
+ {
+ const double fAngle = static_cast<double>(idx)*nSpanAngle/nShapes + nStartAngle;
+ awt::Size aCurrSize = aChildSize;
+ sal_Int32 nCurrRadius = nRadius;
+ if (aCurrShape->getSubType() == XML_conn)
+ {
+ aCurrSize = aConnectorSize;
+ nCurrRadius = nConnectorRadius;
+ }
+ const awt::Point aCurrPos(
+ aCenter.Width + nCurrRadius*sin(basegfx::deg2rad(fAngle)) - aCurrSize.Width/2,
+ aCenter.Height - nCurrRadius*cos(basegfx::deg2rad(fAngle)) - aCurrSize.Height/2);
+
+ aCurrShape->setPosition(aCurrPos);
+ aCurrShape->setSize(aCurrSize);
+ aCurrShape->setChildSize(aCurrSize);
+
+ if (nRotationPath == XML_alongPath)
+ aCurrShape->setRotation(fAngle * PER_DEGREE);
+
+ // connectors should be handled in conn, but we don't have
+ // reference to previous and next child, so it's easier here
+ if (aCurrShape->getSubType() == XML_conn)
+ aCurrShape->setRotation((nConnectorAngle + fAngle) * PER_DEGREE);
+
+ idx++;
+ }
+ }
+ break;
+ }
+
+ case XML_hierChild:
+ case XML_hierRoot:
+ {
+ if (rShape->getChildren().empty() || rShape->getSize().Width == 0 || rShape->getSize().Height == 0)
+ break;
+
+ // hierRoot is the manager -> employees vertical linear path,
+ // hierChild is the first employee -> last employee horizontal
+ // linear path.
+ sal_Int32 nDir = XML_fromL;
+ if (mnType == XML_hierRoot)
+ nDir = XML_fromT;
+ else if (maMap.count(XML_linDir))
+ nDir = maMap.find(XML_linDir)->second;
+
+ const sal_Int32 nSecDir = maMap.count(XML_secLinDir) ? maMap.find(XML_secLinDir)->second : 0;
+
+ sal_Int32 nCount = rShape->getChildren().size();
+
+ if (mnType == XML_hierChild)
+ {
+ // Connectors should not influence the size of non-connect shapes.
+ nCount = std::count_if(
+ rShape->getChildren().begin(), rShape->getChildren().end(),
+ [](const ShapePtr& pShape) { return pShape->getSubType() != XML_conn; });
+ }
+
+ const double fSpaceWidth = 0.1;
+ const double fSpaceHeight = 0.3;
+
+ if (mnType == XML_hierRoot && nCount == 3)
+ {
+ // Order assistant nodes above employee nodes.
+ std::vector<ShapePtr>& rChildren = rShape->getChildren();
+ if (!containsDataNodeType(rChildren[1], XML_asst)
+ && containsDataNodeType(rChildren[2], XML_asst))
+ std::swap(rChildren[1], rChildren[2]);
+ }
+
+ sal_Int32 nHorizontalShapesCount = 1;
+ if (nSecDir == XML_fromT)
+ nHorizontalShapesCount = 2;
+ else if (nDir == XML_fromL || nDir == XML_fromR)
+ nHorizontalShapesCount = nCount;
+
+ awt::Size aChildSize = rShape->getSize();
+ aChildSize.Height /= (rShape->getVerticalShapesCount() + (rShape->getVerticalShapesCount() - 1) * fSpaceHeight);
+ aChildSize.Width /= (nHorizontalShapesCount + (nHorizontalShapesCount - 1) * fSpaceWidth);
+
+ awt::Size aConnectorSize = aChildSize;
+ aConnectorSize.Width = 1;
+
+ awt::Point aChildPos(0, 0);
+
+ // indent children to show they are descendants, not siblings
+ if (mnType == XML_hierChild && nHorizontalShapesCount == 1)
+ {
+ const double fChildIndent = 0.1;
+ aChildPos.X = aChildSize.Width * fChildIndent;
+ aChildSize.Width *= (1 - 2 * fChildIndent);
+ }
+
+ sal_Int32 nIdx = 0;
+ sal_Int32 nRowHeight = 0;
+ for (auto& pChild : rShape->getChildren())
+ {
+ pChild->setPosition(aChildPos);
+
+ if (mnType == XML_hierChild && pChild->getSubType() == XML_conn)
+ {
+ // Connectors should not influence the position of
+ // non-connect shapes.
+ pChild->setSize(aConnectorSize);
+ pChild->setChildSize(aConnectorSize);
+ continue;
+ }
+
+ awt::Size aCurrSize = aChildSize;
+ aCurrSize.Height *= pChild->getVerticalShapesCount() + (pChild->getVerticalShapesCount() - 1) * fSpaceHeight;
+
+ pChild->setSize(aCurrSize);
+ pChild->setChildSize(aCurrSize);
+
+ if (nDir == XML_fromT || nDir == XML_fromB)
+ aChildPos.Y += aCurrSize.Height + aChildSize.Height * fSpaceHeight;
+ else
+ aChildPos.X += aCurrSize.Width + aCurrSize.Width * fSpaceWidth;
+
+ nRowHeight = std::max(nRowHeight, aCurrSize.Height);
+
+ if (nSecDir == XML_fromT && nIdx % 2 == 1)
+ {
+ aChildPos.X = 0;
+ aChildPos.Y += nRowHeight + aChildSize.Height * fSpaceHeight;
+ nRowHeight = 0;
+ }
+
+ nIdx++;
+ }
+
+ break;
+ }
+
+ case XML_lin:
+ {
+ // spread children evenly across one axis, stretch across second
+
+ if (rShape->getChildren().empty() || rShape->getSize().Width == 0 || rShape->getSize().Height == 0)
+ break;
+
+ const sal_Int32 nDir = maMap.count(XML_linDir) ? maMap.find(XML_linDir)->second : XML_fromL;
+ const sal_Int32 nIncX = nDir==XML_fromL ? 1 : (nDir==XML_fromR ? -1 : 0);
+ const sal_Int32 nIncY = nDir==XML_fromT ? 1 : (nDir==XML_fromB ? -1 : 0);
+
+ double fCount = rShape->getChildren().size();
+ sal_Int32 nConnectorAngle = 0;
+ switch (nDir)
+ {
+ case XML_fromL: nConnectorAngle = 0; break;
+ case XML_fromR: nConnectorAngle = 180; break;
+ case XML_fromT: nConnectorAngle = 270; break;
+ case XML_fromB: nConnectorAngle = 90; break;
+ }
+
+ awt::Size aSpaceSize;
+
+ // Find out which constraint is relevant for which (internal) name.
+ LayoutPropertyMap aProperties;
+ for (const auto& rConstraint : rConstraints)
+ {
+ if (rConstraint.msForName.isEmpty())
+ continue;
+
+ LayoutProperty& rProperty = aProperties[rConstraint.msForName];
+ if (rConstraint.mnType == XML_w)
+ {
+ rProperty[XML_w] = rShape->getSize().Width * rConstraint.mfFactor;
+ if (rProperty[XML_w] > rShape->getSize().Width)
+ {
+ rProperty[XML_w] = rShape->getSize().Width;
+ }
+ }
+ if (rConstraint.mnType == XML_h)
+ {
+ rProperty[XML_h] = rShape->getSize().Height * rConstraint.mfFactor;
+ if (rProperty[XML_h] > rShape->getSize().Height)
+ {
+ rProperty[XML_h] = rShape->getSize().Height;
+ }
+ }
+
+ if (rConstraint.mnType == XML_primFontSz && rConstraint.mnFor == XML_des
+ && rConstraint.mnOperator == XML_equ)
+ {
+ NamedShapePairs& rDiagramFontHeights
+ = getLayoutNode().getDiagram().getDiagramFontHeights();
+ auto it = rDiagramFontHeights.find(rConstraint.msForName);
+ if (it == rDiagramFontHeights.end())
+ {
+ // Start tracking all shapes with this internal name: they'll have the same
+ // font height.
+ rDiagramFontHeights[rConstraint.msForName] = {};
+ }
+ }
+
+ // TODO: get values from differently named constraints as well
+ if (rConstraint.msForName == "sp" || rConstraint.msForName == "space" || rConstraint.msForName == "sibTrans")
+ {
+ if (rConstraint.mnType == XML_w)
+ aSpaceSize.Width = rShape->getSize().Width * rConstraint.mfFactor;
+ if (rConstraint.mnType == XML_h)
+ aSpaceSize.Height = rShape->getSize().Height * rConstraint.mfFactor;
+ }
+ }
+
+ // first approximation of children size
+ std::set<OUString> aChildrenToShrink;
+ for (const auto& rRule : rRules)
+ {
+ // Consider rules: when scaling down, only change children where the rule allows
+ // doing so.
+ aChildrenToShrink.insert(rRule.msForName);
+ }
+
+ if (nDir == XML_fromT || nDir == XML_fromB)
+ {
+ // TODO consider rules for vertical linear layout as well.
+ aChildrenToShrink.clear();
+ }
+
+ if (!aChildrenToShrink.empty())
+ {
+ // Have scaling info from rules: then only count scaled children.
+ // Also count children which are a fraction of a scaled child.
+ std::set<OUString> aChildrenToShrinkDeps;
+ for (auto& aCurrShape : rShape->getChildren())
+ {
+ if (aChildrenToShrink.find(aCurrShape->getInternalName())
+ == aChildrenToShrink.end())
+ {
+ if (fCount > 1.0)
+ {
+ fCount -= 1.0;
+
+ bool bIsDependency = false;
+ double fFactor = 0;
+ for (const auto& rConstraint : rConstraints)
+ {
+ if (rConstraint.msForName != aCurrShape->getInternalName())
+ {
+ continue;
+ }
+
+ if ((nDir == XML_fromL || nDir == XML_fromR) && rConstraint.mnType != XML_w)
+ {
+ continue;
+ }
+ if ((nDir == XML_fromL || nDir == XML_fromR) && rConstraint.mnType == XML_w)
+ {
+ fFactor = rConstraint.mfFactor;
+ }
+
+ if ((nDir == XML_fromT || nDir == XML_fromB) && rConstraint.mnType != XML_h)
+ {
+ continue;
+ }
+ if ((nDir == XML_fromT || nDir == XML_fromB) && rConstraint.mnType == XML_h)
+ {
+ fFactor = rConstraint.mfFactor;
+ }
+
+ if (aChildrenToShrink.find(rConstraint.msRefForName) == aChildrenToShrink.end())
+ {
+ continue;
+ }
+
+ // At this point we have a child with a size which is a factor of an
+ // other child which will be scaled.
+ fCount += rConstraint.mfFactor;
+ aChildrenToShrinkDeps.insert(aCurrShape->getInternalName());
+ bIsDependency = true;
+ break;
+ }
+
+ if (!bIsDependency && aCurrShape->getServiceName() == "com.sun.star.drawing.GroupShape")
+ {
+ bool bScaleDownEmptySpacing = false;
+ if (nDir == XML_fromL || nDir == XML_fromR)
+ {
+ oox::OptValue<sal_Int32> oWidth = findProperty(aProperties, aCurrShape->getInternalName(), XML_w);
+ bScaleDownEmptySpacing = oWidth.has() && oWidth.get() > 0;
+ }
+ if (!bScaleDownEmptySpacing && (nDir == XML_fromT || nDir == XML_fromB))
+ {
+ oox::OptValue<sal_Int32> oHeight = findProperty(aProperties, aCurrShape->getInternalName(), XML_h);
+ bScaleDownEmptySpacing = oHeight.has() && oHeight.get() > 0;
+ }
+ if (bScaleDownEmptySpacing && aCurrShape->getChildren().empty())
+ {
+ fCount += fFactor;
+ aChildrenToShrinkDeps.insert(aCurrShape->getInternalName());
+ }
+ }
+ }
+ }
+ }
+
+ aChildrenToShrink.insert(aChildrenToShrinkDeps.begin(), aChildrenToShrinkDeps.end());
+
+ // No manual spacing: spacings are children as well.
+ aSpaceSize = awt::Size();
+ }
+ else
+ {
+ // TODO Handle spacing from constraints without rules as well.
+ rShape->getChildren().erase(
+ std::remove_if(rShape->getChildren().begin(), rShape->getChildren().end(),
+ [](const ShapePtr& aChild) {
+ return aChild->getServiceName()
+ == "com.sun.star.drawing.GroupShape"
+ && aChild->getChildren().empty();
+ }),
+ rShape->getChildren().end());
+ fCount = rShape->getChildren().size();
+ }
+ awt::Size aChildSize = rShape->getSize();
+ if (nDir == XML_fromL || nDir == XML_fromR)
+ aChildSize.Width /= fCount;
+ else if (nDir == XML_fromT || nDir == XML_fromB)
+ aChildSize.Height /= fCount;
+
+ awt::Point aCurrPos(0, 0);
+ if (nIncX == -1)
+ aCurrPos.X = rShape->getSize().Width - aChildSize.Width;
+ if (nIncY == -1)
+ aCurrPos.Y = rShape->getSize().Height - aChildSize.Height;
+
+ // See if children requested more than 100% space in total: scale
+ // down in that case.
+ awt::Size aTotalSize;
+ for (const auto & aCurrShape : rShape->getChildren())
+ {
+ oox::OptValue<sal_Int32> oWidth = findProperty(aProperties, aCurrShape->getInternalName(), XML_w);
+ oox::OptValue<sal_Int32> oHeight = findProperty(aProperties, aCurrShape->getInternalName(), XML_h);
+ awt::Size aSize = aChildSize;
+ if (oWidth.has())
+ aSize.Width = oWidth.get();
+ if (oHeight.has())
+ aSize.Height = oHeight.get();
+ aTotalSize.Width += aSize.Width;
+ aTotalSize.Height += aSize.Height;
+ }
+
+ aTotalSize.Width += (fCount-1) * aSpaceSize.Width;
+ aTotalSize.Height += (fCount-1) * aSpaceSize.Height;
+
+ double fWidthScale = 1.0;
+ double fHeightScale = 1.0;
+ if (nIncX && aTotalSize.Width > rShape->getSize().Width)
+ fWidthScale = static_cast<double>(rShape->getSize().Width) / aTotalSize.Width;
+ if (nIncY && aTotalSize.Height > rShape->getSize().Height)
+ fHeightScale = static_cast<double>(rShape->getSize().Height) / aTotalSize.Height;
+ aSpaceSize.Width *= fWidthScale;
+ aSpaceSize.Height *= fHeightScale;
+
+ for (auto& aCurrShape : rShape->getChildren())
+ {
+ // Extract properties relevant for this shape from constraints.
+ oox::OptValue<sal_Int32> oWidth = findProperty(aProperties, aCurrShape->getInternalName(), XML_w);
+ oox::OptValue<sal_Int32> oHeight = findProperty(aProperties, aCurrShape->getInternalName(), XML_h);
+
+ awt::Size aSize = aChildSize;
+ if (oWidth.has())
+ aSize.Width = oWidth.get();
+ if (oHeight.has())
+ aSize.Height = oHeight.get();
+ if (aChildrenToShrink.empty()
+ || aChildrenToShrink.find(aCurrShape->getInternalName())
+ != aChildrenToShrink.end())
+ {
+ aSize.Width *= fWidthScale;
+ }
+ if (aChildrenToShrink.empty()
+ || aChildrenToShrink.find(aCurrShape->getInternalName())
+ != aChildrenToShrink.end())
+ {
+ aSize.Height *= fHeightScale;
+ }
+ aCurrShape->setSize(aSize);
+ aCurrShape->setChildSize(aSize);
+
+ // center in the other axis - probably some parameter controls it
+ if (nIncX)
+ aCurrPos.Y = (rShape->getSize().Height - aSize.Height) / 2;
+ if (nIncY)
+ aCurrPos.X = (rShape->getSize().Width - aSize.Width) / 2;
+ if (aCurrPos.X < 0)
+ {
+ aCurrPos.X = 0;
+ }
+ if (aCurrPos.Y < 0)
+ {
+ aCurrPos.Y = 0;
+ }
+
+ aCurrShape->setPosition(aCurrPos);
+
+ aCurrPos.X += nIncX * (aSize.Width + aSpaceSize.Width);
+ aCurrPos.Y += nIncY * (aSize.Height + aSpaceSize.Height);
+
+ // connectors should be handled in conn, but we don't have
+ // reference to previous and next child, so it's easier here
+ if (aCurrShape->getSubType() == XML_conn)
+ aCurrShape->setRotation(nConnectorAngle * PER_DEGREE);
+ }
+
+ // Newer shapes are behind older ones by default. Reverse this if requested.
+ sal_Int32 nChildOrder = XML_b;
+ const LayoutNode* pParentLayoutNode = nullptr;
+ for (LayoutAtomPtr pAtom = getParent(); pAtom; pAtom = pAtom->getParent())
+ {
+ auto pLayoutNode = dynamic_cast<LayoutNode*>(pAtom.get());
+ if (pLayoutNode)
+ {
+ pParentLayoutNode = pLayoutNode;
+ break;
+ }
+ }
+ if (pParentLayoutNode)
+ {
+ nChildOrder = pParentLayoutNode->getChildOrder();
+ }
+ if (nChildOrder == XML_t)
+ {
+ std::reverse(rShape->getChildren().begin(), rShape->getChildren().end());
+ }
+
+ break;
+ }
+
+ case XML_pyra:
+ {
+ PyraAlg::layoutShapeChildren(rShape);
+ break;
+ }
+
+ case XML_snake:
+ {
+ SnakeAlg::layoutShapeChildren(*this, rShape, rConstraints);
+ break;
+ }
+
+ case XML_sp:
+ {
+ // HACK: Handled one level higher. Or rather, planned to
+ // HACK: text should appear only in tx node; we're assigning it earlier, so let's remove it here
+ rShape->setTextBody(TextBodyPtr());
+ break;
+ }
+
+ case XML_tx:
+ {
+ // adjust text alignment
+
+ // Parse constraints, only self margins as a start.
+ double fFontSize = 0;
+ for (const auto& rConstr : rConstraints)
+ {
+ if (rConstr.mnRefType == XML_w)
+ {
+ if (!rConstr.msForName.isEmpty())
+ continue;
+
+ sal_Int32 nProperty = getPropertyFromConstraint(rConstr.mnType);
+ if (!nProperty)
+ continue;
+
+ // PowerPoint takes size as points, but gives margin as MMs.
+ double fFactor = convertPointToMms(rConstr.mfFactor);
+
+ // DrawingML works in EMUs, UNO API works in MM100s.
+ sal_Int32 nValue = o3tl::convert(rShape->getSize().Width * fFactor,
+ o3tl::Length::emu, o3tl::Length::mm100);
+
+ rShape->getShapeProperties().setProperty(nProperty, nValue);
+ }
+ if (rConstr.mnType == XML_primFontSz)
+ fFontSize = rConstr.mfValue;
+ }
+
+ TextBodyPtr pTextBody = rShape->getTextBody();
+ if (!pTextBody || pTextBody->isEmpty())
+ break;
+
+ // adjust text size to fit shape
+ if (fFontSize != 0)
+ {
+ for (auto& aParagraph : pTextBody->getParagraphs())
+ for (auto& aRun : aParagraph->getRuns())
+ if (!aRun->getTextCharacterProperties().moHeight.has())
+ aRun->getTextCharacterProperties().moHeight = fFontSize * 100;
+ }
+
+ if (!HasCustomText(rShape, getLayoutNode()))
+ {
+ // No customized text properties: enable autofit.
+ pTextBody->getTextProperties().maPropertyMap.setProperty(
+ PROP_TextFitToSize, drawing::TextFitToSizeType_AUTOFIT);
+ }
+
+ // ECMA-376-1:2016 21.4.7.5 ST_AutoTextRotation (Auto Text Rotation)
+ const sal_Int32 nautoTxRot = maMap.count(XML_autoTxRot) ? maMap.find(XML_autoTxRot)->second : XML_upr;
+ sal_Int32 nShapeRot = rShape->getRotation();
+ while (nShapeRot < 0)
+ nShapeRot += 360 * PER_DEGREE;
+ while (nShapeRot > 360 * PER_DEGREE)
+ nShapeRot -= 360 * PER_DEGREE;
+
+ switch(nautoTxRot)
+ {
+ case XML_upr:
+ {
+ int n90x = 0;
+ if (nShapeRot >= 315 * PER_DEGREE)
+ /* keep 0 */;
+ else if (nShapeRot > 225 * PER_DEGREE)
+ n90x = -3;
+ else if (nShapeRot >= 135 * PER_DEGREE)
+ n90x = -2;
+ else if (nShapeRot > 45 * PER_DEGREE)
+ n90x = -1;
+ pTextBody->getTextProperties().moRotation = n90x * 90 * PER_DEGREE;
+ }
+ break;
+ case XML_grav:
+ {
+ if (nShapeRot > (90 * PER_DEGREE) && nShapeRot < (270 * PER_DEGREE))
+ pTextBody->getTextProperties().moRotation = -180 * PER_DEGREE;
+ }
+ break;
+ case XML_none:
+ break;
+ }
+
+ const sal_Int32 atxAnchorVert = maMap.count(XML_txAnchorVert) ? maMap.find(XML_txAnchorVert)->second : XML_mid;
+
+ switch(atxAnchorVert)
+ {
+ case XML_t:
+ pTextBody->getTextProperties().meVA = css::drawing::TextVerticalAdjust_TOP;
+ break;
+ case XML_b:
+ pTextBody->getTextProperties().meVA = css::drawing::TextVerticalAdjust_BOTTOM;
+ break;
+ case XML_mid:
+ // text centered vertically by default
+ default:
+ pTextBody->getTextProperties().meVA = css::drawing::TextVerticalAdjust_CENTER;
+ break;
+ }
+
+ pTextBody->getTextProperties().maPropertyMap.setProperty(PROP_TextVerticalAdjust, pTextBody->getTextProperties().meVA);
+
+ // normalize list level
+ sal_Int32 nBaseLevel = pTextBody->getParagraphs().front()->getProperties().getLevel();
+ for (auto & aParagraph : pTextBody->getParagraphs())
+ {
+ if (aParagraph->getProperties().getLevel() < nBaseLevel)
+ nBaseLevel = aParagraph->getProperties().getLevel();
+ }
+
+ // Start bullets at:
+ // 1 - top level
+ // 2 - with children (default)
+ int nStartBulletsAtLevel = 2;
+ ParamMap::const_iterator aBulletLvl = maMap.find(XML_stBulletLvl);
+ if (aBulletLvl != maMap.end())
+ nStartBulletsAtLevel = aBulletLvl->second;
+ nStartBulletsAtLevel--;
+
+ bool isBulletList = false;
+ for (auto & aParagraph : pTextBody->getParagraphs())
+ {
+ sal_Int32 nLevel = aParagraph->getProperties().getLevel() - nBaseLevel;
+ aParagraph->getProperties().setLevel(nLevel);
+ if (nLevel >= nStartBulletsAtLevel)
+ {
+ if (!aParagraph->getProperties().getParaLeftMargin().has_value())
+ {
+ sal_Int32 nLeftMargin
+ = o3tl::convert(285750 * (nLevel - nStartBulletsAtLevel + 1),
+ o3tl::Length::emu, o3tl::Length::mm100);
+ aParagraph->getProperties().getParaLeftMargin() = nLeftMargin;
+ }
+
+ if (!aParagraph->getProperties().getFirstLineIndentation().has_value())
+ aParagraph->getProperties().getFirstLineIndentation()
+ = o3tl::convert(-285750, o3tl::Length::emu, o3tl::Length::mm100);
+
+ // It is not possible to change the bullet style for text.
+ aParagraph->getProperties().getBulletList().setBulletChar(u"•");
+ aParagraph->getProperties().getBulletList().setSuffixNone();
+ isBulletList = true;
+ }
+ }
+
+ // explicit alignment
+ ParamMap::const_iterator aDir = maMap.find(XML_parTxLTRAlign);
+ // TODO: XML_parTxRTLAlign
+ if (aDir != maMap.end())
+ {
+ css::style::ParagraphAdjust aAlignment = GetParaAdjust(aDir->second);
+ for (auto & aParagraph : pTextBody->getParagraphs())
+ aParagraph->getProperties().setParaAdjust(aAlignment);
+ }
+ else if (!isBulletList)
+ {
+ // if not list use default alignment - centered
+ for (auto & aParagraph : pTextBody->getParagraphs())
+ aParagraph->getProperties().setParaAdjust(css::style::ParagraphAdjust::ParagraphAdjust_CENTER);
+ }
+ break;
+ }
+
+ default:
+ break;
+ }
+
+ SAL_INFO(
+ "oox.drawingml",
+ "Layouting shape " << rShape->getInternalName() << ", alg type: " << mnType << ", ("
+ << rShape->getPosition().X << "," << rShape->getPosition().Y << ","
+ << rShape->getSize().Width << "," << rShape->getSize().Height << ")");
+}
+
+void LayoutNode::accept( LayoutAtomVisitor& rVisitor )
+{
+ rVisitor.visit(*this);
+}
+
+bool LayoutNode::setupShape( const ShapePtr& rShape, const svx::diagram::Point* pPresNode, sal_Int32 nCurrIdx ) const
+{
+ SAL_INFO(
+ "oox.drawingml",
+ "Filling content from layout node named \"" << msName
+ << "\", modelId \"" << pPresNode->msModelId << "\"");
+
+ // have the presentation node - now, need the actual data node:
+ const DiagramData::StringMap::const_iterator aNodeName = mrDgm.getData()->getPresOfNameMap().find(
+ pPresNode->msModelId);
+ if( aNodeName != mrDgm.getData()->getPresOfNameMap().end() )
+ {
+ // Calculate the depth of what is effectively the topmost element.
+ sal_Int32 nMinDepth = std::numeric_limits<sal_Int32>::max();
+ for (const auto& rPair : aNodeName->second)
+ {
+ if (rPair.second.mnDepth < nMinDepth)
+ nMinDepth = rPair.second.mnDepth;
+ }
+
+ for (const auto& rPair : aNodeName->second)
+ {
+ const DiagramData::SourceIdAndDepth& rItem = rPair.second;
+ DiagramData::PointNameMap& rMap = mrDgm.getData()->getPointNameMap();
+ // pPresNode is the presentation node of the aDataNode2 data node.
+ DiagramData::PointNameMap::const_iterator aDataNode2 = rMap.find(rItem.msSourceId);
+ if (aDataNode2 == rMap.end())
+ {
+ //busted, skip it
+ continue;
+ }
+
+ Shape* pDataNode2Shape(mrDgm.getData()->getOrCreateAssociatedShape(*aDataNode2->second));
+ if (nullptr == pDataNode2Shape)
+ {
+ //busted, skip it
+ continue;
+ }
+
+ rShape->setDataNodeType(aDataNode2->second->mnXMLType);
+
+ if (rItem.mnDepth == 0)
+ {
+ // grab shape attr from topmost element(s)
+ rShape->getShapeProperties() = pDataNode2Shape->getShapeProperties();
+ rShape->getLineProperties() = pDataNode2Shape->getLineProperties();
+ rShape->getFillProperties() = pDataNode2Shape->getFillProperties();
+ rShape->getCustomShapeProperties() = pDataNode2Shape->getCustomShapeProperties();
+ rShape->setMasterTextListStyle( pDataNode2Shape->getMasterTextListStyle() );
+
+ SAL_INFO(
+ "oox.drawingml",
+ "Custom shape with preset type "
+ << (rShape->getCustomShapeProperties()
+ ->getShapePresetType())
+ << " added for layout node named \"" << msName
+ << "\"");
+ }
+ else if (rItem.mnDepth == nMinDepth)
+ {
+ // If no real topmost element, then take properties from the one that's the closest
+ // to topmost.
+ rShape->getLineProperties() = pDataNode2Shape->getLineProperties();
+ rShape->getFillProperties() = pDataNode2Shape->getFillProperties();
+ }
+
+ // append text with right outline level
+ if( pDataNode2Shape->getTextBody() &&
+ !pDataNode2Shape->getTextBody()->getParagraphs().empty() &&
+ !pDataNode2Shape->getTextBody()->getParagraphs().front()->getRuns().empty() )
+ {
+ TextBodyPtr pTextBody=rShape->getTextBody();
+ if( !pTextBody )
+ {
+ pTextBody = std::make_shared<TextBody>();
+
+ // also copy text attrs
+ pTextBody->getTextListStyle() =
+ pDataNode2Shape->getTextBody()->getTextListStyle();
+ pTextBody->getTextProperties() =
+ pDataNode2Shape->getTextBody()->getTextProperties();
+
+ rShape->setTextBody(pTextBody);
+ }
+
+ const TextParagraphVector& rSourceParagraphs
+ = pDataNode2Shape->getTextBody()->getParagraphs();
+ for (const auto& pSourceParagraph : rSourceParagraphs)
+ {
+ TextParagraph& rPara = pTextBody->addParagraph();
+ if (rItem.mnDepth != -1)
+ rPara.getProperties().setLevel(rItem.mnDepth);
+
+ for (const auto& pRun : pSourceParagraph->getRuns())
+ rPara.addRun(pRun);
+ const TextBodyPtr& rBody = pDataNode2Shape->getTextBody();
+ rPara.getProperties().apply(rBody->getParagraphs().front()->getProperties());
+ }
+ }
+ }
+ }
+ else
+ {
+ SAL_INFO(
+ "oox.drawingml",
+ "ShapeCreationVisitor::visit: no data node name found while"
+ " processing shape type "
+ << rShape->getCustomShapeProperties()->getShapePresetType()
+ << " for layout node named \"" << msName << "\"");
+ Shape* pPresNodeShape(mrDgm.getData()->getOrCreateAssociatedShape(*pPresNode));
+ if (nullptr != pPresNodeShape)
+ rShape->getFillProperties().assignUsed(pPresNodeShape->getFillProperties());
+ }
+
+ // TODO(Q1): apply styling & coloring - take presentation
+ // point's presStyleLbl for both style & color
+ // if not found use layout node's styleLbl
+ // however, docs are a bit unclear on this
+ OUString aStyleLabel = pPresNode->msPresentationLayoutStyleLabel;
+ if (aStyleLabel.isEmpty())
+ aStyleLabel = msStyleLabel;
+ if( !aStyleLabel.isEmpty() )
+ {
+ const DiagramQStyleMap::const_iterator aStyle = mrDgm.getStyles().find(aStyleLabel);
+ if( aStyle != mrDgm.getStyles().end() )
+ {
+ const DiagramStyle& rStyle = aStyle->second;
+ rShape->getShapeStyleRefs()[XML_fillRef] = rStyle.maFillStyle;
+ rShape->getShapeStyleRefs()[XML_lnRef] = rStyle.maLineStyle;
+ rShape->getShapeStyleRefs()[XML_effectRef] = rStyle.maEffectStyle;
+ rShape->getShapeStyleRefs()[XML_fontRef] = rStyle.maTextStyle;
+ }
+ else
+ {
+ SAL_WARN("oox.drawingml", "Style " << aStyleLabel << " not found");
+ }
+
+ const DiagramColorMap::const_iterator aColor = mrDgm.getColors().find(aStyleLabel);
+ if( aColor != mrDgm.getColors().end() )
+ {
+ // Take the nth color from the color list in case we are the nth shape in a
+ // <dgm:forEach> loop.
+ const DiagramColor& rColor=aColor->second;
+ if( !rColor.maFillColors.empty() )
+ rShape->getShapeStyleRefs()[XML_fillRef].maPhClr = DiagramColor::getColorByIndex(rColor.maFillColors, nCurrIdx);
+ if( !rColor.maLineColors.empty() )
+ rShape->getShapeStyleRefs()[XML_lnRef].maPhClr = DiagramColor::getColorByIndex(rColor.maLineColors, nCurrIdx);
+ if( !rColor.maEffectColors.empty() )
+ rShape->getShapeStyleRefs()[XML_effectRef].maPhClr = DiagramColor::getColorByIndex(rColor.maEffectColors, nCurrIdx);
+ if( !rColor.maTextFillColors.empty() )
+ rShape->getShapeStyleRefs()[XML_fontRef].maPhClr = DiagramColor::getColorByIndex(rColor.maTextFillColors, nCurrIdx);
+ }
+ }
+
+ // even if no data node found, successful anyway. it's
+ // contained at the layoutnode
+ return true;
+}
+
+const LayoutNode* LayoutNode::getParentLayoutNode() const
+{
+ for (LayoutAtomPtr pAtom = getParent(); pAtom; pAtom = pAtom->getParent())
+ {
+ auto pLayoutNode = dynamic_cast<LayoutNode*>(pAtom.get());
+ if (pLayoutNode)
+ return pLayoutNode;
+ }
+
+ return nullptr;
+}
+
+void ShapeAtom::accept( LayoutAtomVisitor& rVisitor )
+{
+ rVisitor.visit(*this);
+}
+
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/oox/source/drawingml/diagram/diagramlayoutatoms.hxx b/oox/source/drawingml/diagram/diagramlayoutatoms.hxx
new file mode 100644
index 000000000..cf8078923
--- /dev/null
+++ b/oox/source/drawingml/diagram/diagramlayoutatoms.hxx
@@ -0,0 +1,372 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ *
+ * This file incorporates work covered by the following license notice:
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed
+ * with this work for additional information regarding copyright
+ * ownership. The ASF licenses this file to you under the Apache
+ * License, Version 2.0 (the "License"); you may not use this file
+ * except in compliance with the License. You may obtain a copy of
+ * the License at http://www.apache.org/licenses/LICENSE-2.0 .
+ */
+
+#ifndef INCLUDED_OOX_SOURCE_DRAWINGML_DIAGRAM_DIAGRAMLAYOUTATOMS_HXX
+#define INCLUDED_OOX_SOURCE_DRAWINGML_DIAGRAM_DIAGRAMLAYOUTATOMS_HXX
+
+#include <map>
+#include <memory>
+
+#include <com/sun/star/xml/sax/XFastAttributeList.hpp>
+
+#include "diagram.hxx"
+
+namespace oox::drawingml {
+
+class DiagramLayout;
+typedef std::shared_ptr< DiagramLayout > DiagramLayoutPtr;
+
+// AG_IteratorAttributes
+struct IteratorAttr
+{
+ IteratorAttr();
+
+ // not sure this belong here, but wth
+ void loadFromXAttr( const css::uno::Reference< css::xml::sax::XFastAttributeList >& xAttributes );
+
+ std::vector<sal_Int32> maAxis;
+ sal_Int32 mnCnt;
+ bool mbHideLastTrans;
+ sal_Int32 mnPtType;
+ sal_Int32 mnSt;
+ sal_Int32 mnStep;
+};
+
+struct ConditionAttr
+{
+ ConditionAttr();
+
+ // not sure this belong here, but wth
+ void loadFromXAttr( const css::uno::Reference< css::xml::sax::XFastAttributeList >& xAttributes );
+
+ OUString msVal;
+ sal_Int32 mnFunc;
+ sal_Int32 mnArg;
+ sal_Int32 mnOp;
+ sal_Int32 mnVal;
+};
+
+/// Constraints allow you to specify an ideal (or starting point) size for each shape.
+struct Constraint
+{
+ OUString msForName;
+ OUString msRefForName;
+ double mfFactor;
+ double mfValue;
+ sal_Int32 mnFor;
+ sal_Int32 mnPointType;
+ sal_Int32 mnType;
+ sal_Int32 mnRefFor;
+ sal_Int32 mnRefType;
+ sal_Int32 mnRefPointType;
+ sal_Int32 mnOperator;
+};
+
+/// Rules allow you to specify what to do when constraints can't be fully satisfied.
+struct Rule
+{
+ OUString msForName;
+};
+
+typedef std::map<sal_Int32, sal_Int32> LayoutProperty;
+typedef std::map<OUString, LayoutProperty> LayoutPropertyMap;
+
+struct LayoutAtomVisitor;
+class LayoutAtom;
+class LayoutNode;
+
+typedef std::shared_ptr< LayoutAtom > LayoutAtomPtr;
+
+/** abstract Atom for the layout */
+class LayoutAtom
+{
+public:
+ LayoutAtom(LayoutNode& rLayoutNode) : mrLayoutNode(rLayoutNode) {}
+ virtual ~LayoutAtom() { }
+
+ LayoutNode& getLayoutNode()
+ { return mrLayoutNode; }
+
+ /** visitor acceptance
+ */
+ virtual void accept( LayoutAtomVisitor& ) = 0;
+
+ void setName( const OUString& sName )
+ { msName = sName; }
+ const OUString& getName() const
+ { return msName; }
+
+private:
+ void addChild( const LayoutAtomPtr & pNode )
+ { mpChildNodes.push_back( pNode ); }
+ void setParent(const LayoutAtomPtr& pParent) { mpParent = pParent; }
+
+public:
+ const std::vector<LayoutAtomPtr>& getChildren() const
+ { return mpChildNodes; }
+
+ LayoutAtomPtr getParent() const { return mpParent.lock(); }
+
+ static void connect(const LayoutAtomPtr& pParent, const LayoutAtomPtr& pChild)
+ {
+ pParent->addChild(pChild);
+ pChild->setParent(pParent);
+ }
+
+ // dump for debug
+ void dump(int level = 0);
+
+protected:
+ LayoutNode& mrLayoutNode;
+ std::vector< LayoutAtomPtr > mpChildNodes;
+ std::weak_ptr<LayoutAtom> mpParent;
+ OUString msName;
+};
+
+class ConstraintAtom
+ : public LayoutAtom
+{
+public:
+ ConstraintAtom(LayoutNode& rLayoutNode) : LayoutAtom(rLayoutNode) {}
+ virtual void accept( LayoutAtomVisitor& ) override;
+ Constraint& getConstraint()
+ { return maConstraint; }
+ void parseConstraint(std::vector<Constraint>& rConstraints, bool bRequireForName) const;
+private:
+ Constraint maConstraint;
+};
+
+/// Represents one <dgm:rule> element.
+class RuleAtom
+ : public LayoutAtom
+{
+public:
+ RuleAtom(LayoutNode& rLayoutNode) : LayoutAtom(rLayoutNode) {}
+ virtual void accept( LayoutAtomVisitor& ) override;
+ Rule& getRule()
+ { return maRule; }
+ void parseRule(std::vector<Rule>& rRules) const;
+private:
+ Rule maRule;
+};
+
+class AlgAtom
+ : public LayoutAtom
+{
+public:
+ AlgAtom(LayoutNode& rLayoutNode) : LayoutAtom(rLayoutNode), mnType(0), maMap() {}
+
+ typedef std::map<sal_Int32,sal_Int32> ParamMap;
+
+ virtual void accept( LayoutAtomVisitor& ) override;
+
+ void setType( sal_Int32 nToken )
+ { mnType = nToken; }
+ const ParamMap& getMap() const { return maMap; }
+ void addParam( sal_Int32 nType, sal_Int32 nVal )
+ { maMap[nType]=nVal; }
+ sal_Int32 getVerticalShapesCount(const ShapePtr& rShape);
+ void layoutShape( const ShapePtr& rShape,
+ const std::vector<Constraint>& rConstraints,
+ const std::vector<Rule>& rRules );
+
+ void setAspectRatio(double fAspectRatio) { mfAspectRatio = fAspectRatio; }
+
+ double getAspectRatio() const { return mfAspectRatio; }
+
+private:
+ sal_Int32 mnType;
+ ParamMap maMap;
+ /// Aspect ratio is not integer, so not part of maMap.
+ double mfAspectRatio = 0;
+
+ /// Determines the connector shape type for conn algorithm
+ sal_Int32 getConnectorType();
+};
+
+typedef std::shared_ptr< AlgAtom > AlgAtomPtr;
+
+/// Finds optimal grid to layout children that have fixed aspect ratio.
+class SnakeAlg
+{
+public:
+ static void layoutShapeChildren(const AlgAtom& rAlg, const ShapePtr& rShape,
+ const std::vector<Constraint>& rConstraints);
+};
+
+/**
+ * Lays out child layout nodes along a vertical path and works with the trapezoid shape to create a
+ * pyramid.
+ */
+class PyraAlg
+{
+public:
+ static void layoutShapeChildren(const ShapePtr& rShape);
+};
+
+/**
+ * Specifies the size and position for all child layout nodes.
+ */
+class CompositeAlg
+{
+public:
+ static void layoutShapeChildren(AlgAtom& rAlg, const ShapePtr& rShape,
+ const std::vector<Constraint>& rConstraints);
+
+private:
+ /**
+ * Apply rConstraint to the rProperties shared layout state.
+ *
+ * Note that the order in which constraints are applied matters, given that constraints can refer to
+ * each other, and in case A depends on B and A is applied before B, the effect of A won't be
+ * updated when B is applied.
+ */
+ static void applyConstraintToLayout(const Constraint& rConstraint,
+ LayoutPropertyMap& rProperties);
+
+ /**
+ * Decides if a certain reference type (e.g. "right") can be inferred from the available properties
+ * in rMap (e.g. left and width). Returns true if rValue is written to.
+ */
+ static bool inferFromLayoutProperty(const LayoutProperty& rMap, sal_Int32 nRefType,
+ sal_Int32& rValue);
+};
+
+class ForEachAtom
+ : public LayoutAtom
+{
+public:
+ explicit ForEachAtom(LayoutNode& rLayoutNode, const css::uno::Reference< css::xml::sax::XFastAttributeList >& xAttributes);
+
+ IteratorAttr & iterator()
+ { return maIter; }
+ void setRef(const OUString& rsRef)
+ { msRef = rsRef; }
+ const OUString& getRef() const
+ { return msRef; }
+ virtual void accept( LayoutAtomVisitor& ) override;
+ LayoutAtomPtr getRefAtom();
+
+private:
+ IteratorAttr maIter;
+ OUString msRef;
+};
+
+typedef std::shared_ptr< ForEachAtom > ForEachAtomPtr;
+
+class ConditionAtom
+ : public LayoutAtom
+{
+public:
+ explicit ConditionAtom(LayoutNode& rLayoutNode, bool isElse, const css::uno::Reference< css::xml::sax::XFastAttributeList >& xAttributes);
+ virtual void accept( LayoutAtomVisitor& ) override;
+ bool getDecision(const svx::diagram::Point* pPresPoint) const;
+
+private:
+ static bool compareResult(sal_Int32 nOperator, sal_Int32 nFirst, sal_Int32 nSecond);
+ sal_Int32 getNodeCount(const svx::diagram::Point* pPresPoint) const;
+
+ bool mIsElse;
+ IteratorAttr maIter;
+ ConditionAttr maCond;
+};
+
+typedef std::shared_ptr< ConditionAtom > ConditionAtomPtr;
+
+/** "choose" statements. Atoms will be tested in order. */
+class ChooseAtom
+ : public LayoutAtom
+{
+public:
+ ChooseAtom(LayoutNode& rLayoutNode)
+ : LayoutAtom(rLayoutNode)
+ {}
+ virtual void accept( LayoutAtomVisitor& ) override;
+};
+
+class LayoutNode
+ : public LayoutAtom
+{
+public:
+ typedef std::map<sal_Int32, OUString> VarMap;
+
+ LayoutNode(Diagram& rDgm)
+ : LayoutAtom(*this)
+ , mrDgm(rDgm)
+ , mnChildOrder(0)
+ {
+ }
+ Diagram& getDiagram() { return mrDgm; }
+ virtual void accept( LayoutAtomVisitor& ) override;
+ VarMap & variables()
+ { return mVariables; }
+ void setMoveWith( const OUString & sName )
+ { msMoveWith = sName; }
+ void setStyleLabel( const OUString & sLabel )
+ { msStyleLabel = sLabel; }
+ void setChildOrder( sal_Int32 nOrder )
+ { mnChildOrder = nOrder; }
+ sal_Int32 getChildOrder() const { return mnChildOrder; }
+ void setExistingShape( const ShapePtr& pShape )
+ { mpExistingShape = pShape; }
+ const ShapePtr& getExistingShape() const
+ { return mpExistingShape; }
+ const std::vector<ShapePtr> & getNodeShapes() const
+ { return mpNodeShapes; }
+ void addNodeShape(const ShapePtr& pShape)
+ { mpNodeShapes.push_back(pShape); }
+
+ bool setupShape( const ShapePtr& rShape,
+ const svx::diagram::Point* pPresNode,
+ sal_Int32 nCurrIdx ) const;
+
+ const LayoutNode* getParentLayoutNode() const;
+
+private:
+ Diagram& mrDgm;
+ VarMap mVariables;
+ OUString msMoveWith;
+ OUString msStyleLabel;
+ ShapePtr mpExistingShape;
+ std::vector<ShapePtr> mpNodeShapes;
+ sal_Int32 mnChildOrder;
+};
+
+typedef std::shared_ptr< LayoutNode > LayoutNodePtr;
+
+class ShapeAtom
+ : public LayoutAtom
+{
+public:
+ ShapeAtom(LayoutNode& rLayoutNode, const ShapePtr& pShape) : LayoutAtom(rLayoutNode), mpShapeTemplate(pShape) {}
+ virtual void accept( LayoutAtomVisitor& ) override;
+ const ShapePtr& getShapeTemplate() const
+ { return mpShapeTemplate; }
+
+private:
+ ShapePtr mpShapeTemplate;
+};
+
+typedef std::shared_ptr< ShapeAtom > ShapeAtomPtr;
+
+}
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/oox/source/drawingml/diagram/layoutatomvisitorbase.cxx b/oox/source/drawingml/diagram/layoutatomvisitorbase.cxx
new file mode 100644
index 000000000..b7f5a5963
--- /dev/null
+++ b/oox/source/drawingml/diagram/layoutatomvisitorbase.cxx
@@ -0,0 +1,176 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ *
+ * This file incorporates work covered by the following license notice:
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed
+ * with this work for additional information regarding copyright
+ * ownership. The ASF licenses this file to you under the Apache
+ * License, Version 2.0 (the "License"); you may not use this file
+ * except in compliance with the License. You may obtain a copy of
+ * the License at http://www.apache.org/licenses/LICENSE-2.0 .
+ */
+
+#include "layoutatomvisitorbase.hxx"
+
+#include <sal/log.hxx>
+
+using namespace ::com::sun::star;
+using namespace ::com::sun::star::uno;
+
+namespace oox::drawingml {
+
+void LayoutAtomVisitorBase::defaultVisit(LayoutAtom const& rAtom)
+{
+ for (const auto& pAtom : rAtom.getChildren())
+ pAtom->accept(*this);
+}
+
+void LayoutAtomVisitorBase::visit(ChooseAtom& rAtom)
+{
+ for (const auto& pChild : rAtom.getChildren())
+ {
+ const ConditionAtomPtr pCond = std::dynamic_pointer_cast<ConditionAtom>(pChild);
+ if (pCond && pCond->getDecision(mpCurrentNode))
+ {
+ SAL_INFO("oox.drawingml", "Entering if node: " << pCond->getName());
+ pCond->accept(*this);
+ break;
+ }
+ }
+}
+
+void LayoutAtomVisitorBase::visit(ConditionAtom& rAtom)
+{
+ defaultVisit(rAtom);
+}
+
+void LayoutAtomVisitorBase::visit(ForEachAtom& rAtom)
+{
+ if (!rAtom.getRef().isEmpty())
+ {
+ if (LayoutAtomPtr pRefAtom = rAtom.getRefAtom())
+ pRefAtom->accept(*this);
+ return;
+ }
+
+ if (rAtom.iterator().mbHideLastTrans && !rAtom.iterator().maAxis.empty() && rAtom.iterator().maAxis[0] == XML_followSib)
+ {
+ // If last transition is hidden and the axis is the follow sibling,
+ // then the last atom should not be visited.
+ if (mnCurrIdx + mnCurrStep >= mnCurrCnt)
+ return;
+ }
+
+ sal_Int32 nChildren = 1;
+ // Approximate the non-assistant type with the node type.
+ if (rAtom.iterator().mnPtType == XML_node || rAtom.iterator().mnPtType == XML_nonAsst)
+ {
+ // count child data nodes - check all child Atoms for "name"
+ // attribute that is contained in diagram's
+ // getPointsPresNameMap()
+ ShallowPresNameVisitor aVisitor(mrDgm, mpCurrentNode);
+ for (const auto& pAtom : rAtom.getChildren())
+ pAtom->accept(aVisitor);
+ nChildren = aVisitor.getCount();
+ }
+
+ const sal_Int32 nCnt = std::min(
+ nChildren,
+ rAtom.iterator().mnCnt==-1 ? nChildren : rAtom.iterator().mnCnt);
+
+ const sal_Int32 nOldIdx = mnCurrIdx;
+ const sal_Int32 nOldStep = mnCurrStep;
+ const sal_Int32 nOldCnt = mnCurrCnt;
+ const sal_Int32 nStep = rAtom.iterator().mnStep;
+ mnCurrStep = nStep;
+ mnCurrCnt = nCnt;
+ for( mnCurrIdx=0; mnCurrIdx<nCnt && nStep>0; mnCurrIdx+=nStep )
+ {
+ // TODO there is likely some conditions
+ for (const auto& pAtom : rAtom.getChildren())
+ pAtom->accept(*this);
+ }
+
+ // and restore idx
+ mnCurrIdx = nOldIdx;
+ mnCurrStep = nOldStep;
+ mnCurrCnt = nOldCnt;
+}
+
+void LayoutAtomVisitorBase::visit(LayoutNode& rAtom)
+{
+ // TODO: deduplicate code in descendants
+
+ // stop processing if it's not a child of previous LayoutNode
+
+ const DiagramData::PointsNameMap::const_iterator aDataNode
+ = mrDgm.getData()->getPointsPresNameMap().find(rAtom.getName());
+ if (aDataNode == mrDgm.getData()->getPointsPresNameMap().end()
+ || mnCurrIdx >= static_cast<sal_Int32>(aDataNode->second.size()))
+ return;
+
+ const svx::diagram::Point* pNewNode = aDataNode->second.at(mnCurrIdx);
+ if (!mpCurrentNode || !pNewNode)
+ return;
+
+ bool bIsChild = false;
+ for (const auto& aConnection : mrDgm.getData()->getConnections())
+ if (aConnection.msSourceId == mpCurrentNode->msModelId
+ && aConnection.msDestId == pNewNode->msModelId)
+ bIsChild = true;
+
+ if (!bIsChild)
+ return;
+
+ const svx::diagram::Point* pPreviousNode = mpCurrentNode;
+ mpCurrentNode = pNewNode;
+
+ defaultVisit(rAtom);
+
+ mpCurrentNode = pPreviousNode;
+}
+
+void ShallowPresNameVisitor::visit(ConstraintAtom& /*rAtom*/)
+{
+ // stop processing
+}
+
+void ShallowPresNameVisitor::visit(RuleAtom& /*rAtom*/)
+{
+ // stop processing
+}
+
+void ShallowPresNameVisitor::visit(AlgAtom& /*rAtom*/)
+{
+ // stop processing
+}
+
+void ShallowPresNameVisitor::visit(ForEachAtom& rAtom)
+{
+ defaultVisit(rAtom);
+}
+
+void ShallowPresNameVisitor::visit(LayoutNode& rAtom)
+{
+ DiagramData::PointsNameMap::const_iterator aDataNode =
+ mrDgm.getData()->getPointsPresNameMap().find(rAtom.getName());
+ if( aDataNode != mrDgm.getData()->getPointsPresNameMap().end() )
+ mnCnt = std::max(mnCnt,
+ aDataNode->second.size());
+}
+
+void ShallowPresNameVisitor::visit(ShapeAtom& /*rAtom*/)
+{
+ // stop processing
+}
+
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/oox/source/drawingml/diagram/layoutatomvisitorbase.hxx b/oox/source/drawingml/diagram/layoutatomvisitorbase.hxx
new file mode 100644
index 000000000..49c83f674
--- /dev/null
+++ b/oox/source/drawingml/diagram/layoutatomvisitorbase.hxx
@@ -0,0 +1,98 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ *
+ * This file incorporates work covered by the following license notice:
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed
+ * with this work for additional information regarding copyright
+ * ownership. The ASF licenses this file to you under the Apache
+ * License, Version 2.0 (the "License"); you may not use this file
+ * except in compliance with the License. You may obtain a copy of
+ * the License at http://www.apache.org/licenses/LICENSE-2.0 .
+ */
+
+#ifndef INCLUDED_OOX_SOURCE_DRAWINGML_DIAGRAM_LAYOUTATOMVISITORBASE_HXX
+#define INCLUDED_OOX_SOURCE_DRAWINGML_DIAGRAM_LAYOUTATOMVISITORBASE_HXX
+
+#include "diagram.hxx"
+#include "diagramlayoutatoms.hxx"
+
+namespace oox::drawingml {
+
+struct LayoutAtomVisitor
+{
+ virtual ~LayoutAtomVisitor() {}
+ virtual void visit(ConstraintAtom& rAtom) = 0;
+ virtual void visit(RuleAtom& rAtom) = 0;
+ virtual void visit(AlgAtom& rAtom) = 0;
+ virtual void visit(ForEachAtom& rAtom) = 0;
+ virtual void visit(ConditionAtom& rAtom) = 0;
+ virtual void visit(ChooseAtom& rAtom) = 0;
+ virtual void visit(LayoutNode& rAtom) = 0;
+ virtual void visit(ShapeAtom& rAtom) = 0;
+};
+
+// basic visitor implementation that follows if/else and for-each nodes
+// and keeps track of current position in data tree
+class LayoutAtomVisitorBase : public LayoutAtomVisitor
+{
+public:
+ LayoutAtomVisitorBase(const Diagram& rDgm, const svx::diagram::Point* pRootPoint) :
+ mrDgm(rDgm),
+ mpCurrentNode(pRootPoint),
+ mnCurrIdx(0),
+ mnCurrStep(0),
+ mnCurrCnt(0),
+ meLookFor(LAYOUT_NODE)
+ {}
+
+ void defaultVisit(LayoutAtom const& rAtom);
+
+ using LayoutAtomVisitor::visit;
+ virtual void visit(ForEachAtom& rAtom) override;
+ virtual void visit(ConditionAtom& rAtom) override;
+ virtual void visit(ChooseAtom& rAtom) override;
+ virtual void visit(LayoutNode& rAtom) override;
+
+protected:
+ const Diagram& mrDgm;
+ const svx::diagram::Point* mpCurrentNode;
+ sal_Int32 mnCurrIdx;
+ sal_Int32 mnCurrStep;
+ sal_Int32 mnCurrCnt;
+ enum {LAYOUT_NODE, CONSTRAINT, ALGORITHM, RULE} meLookFor;
+};
+
+class ShallowPresNameVisitor : public LayoutAtomVisitorBase
+{
+public:
+ explicit ShallowPresNameVisitor(const Diagram& rDgm, const svx::diagram::Point* pRootPoint) :
+ LayoutAtomVisitorBase(rDgm, pRootPoint),
+ mnCnt(0)
+ {}
+
+ using LayoutAtomVisitorBase::visit;
+ virtual void visit(ConstraintAtom& rAtom) override;
+ virtual void visit(RuleAtom& rAtom) override;
+ virtual void visit(AlgAtom& rAtom) override;
+ virtual void visit(ForEachAtom& rAtom) override;
+ virtual void visit(LayoutNode& rAtom) override;
+ virtual void visit(ShapeAtom& rAtom) override;
+
+ size_t getCount() const { return mnCnt; }
+
+private:
+ size_t mnCnt;
+};
+
+}
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/oox/source/drawingml/diagram/layoutatomvisitors.cxx b/oox/source/drawingml/diagram/layoutatomvisitors.cxx
new file mode 100644
index 000000000..f34d93d98
--- /dev/null
+++ b/oox/source/drawingml/diagram/layoutatomvisitors.cxx
@@ -0,0 +1,269 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ *
+ * This file incorporates work covered by the following license notice:
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed
+ * with this work for additional information regarding copyright
+ * ownership. The ASF licenses this file to you under the Apache
+ * License, Version 2.0 (the "License"); you may not use this file
+ * except in compliance with the License. You may obtain a copy of
+ * the License at http://www.apache.org/licenses/LICENSE-2.0 .
+ */
+
+#include "layoutatomvisitors.hxx"
+
+#include <drawingml/customshapeproperties.hxx>
+
+#include <sal/log.hxx>
+
+using namespace ::com::sun::star;
+using namespace ::com::sun::star::uno;
+using namespace ::com::sun::star::xml::sax;
+using namespace ::oox::core;
+
+namespace oox::drawingml
+{
+void ShapeCreationVisitor::visit(ConstraintAtom& /*rAtom*/)
+{
+ // stop processing
+}
+
+void ShapeCreationVisitor::visit(RuleAtom& /*rAtom*/)
+{
+ // stop processing
+}
+
+void ShapeCreationVisitor::visit(AlgAtom& rAtom)
+{
+ if (meLookFor == ALGORITHM)
+ {
+ mpParentShape->setAspectRatio(rAtom.getAspectRatio());
+ mpParentShape->setVerticalShapesCount(rAtom.getVerticalShapesCount(mpParentShape));
+ }
+}
+
+void ShapeCreationVisitor::visit(LayoutNode& rAtom)
+{
+ if (meLookFor != LAYOUT_NODE)
+ return;
+
+ // stop processing if it's not a child of previous LayoutNode
+
+ const DiagramData::PointsNameMap::const_iterator aDataNode
+ = mrDgm.getData()->getPointsPresNameMap().find(rAtom.getName());
+ if (aDataNode == mrDgm.getData()->getPointsPresNameMap().end()
+ || mnCurrIdx >= static_cast<sal_Int32>(aDataNode->second.size()))
+ return;
+
+ const svx::diagram::Point* pNewNode = aDataNode->second.at(mnCurrIdx);
+ if (!mpCurrentNode || !pNewNode)
+ return;
+
+ bool bIsChild = false;
+ for (const auto& aConnection : mrDgm.getData()->getConnections())
+ if (aConnection.msSourceId == mpCurrentNode->msModelId
+ && aConnection.msDestId == pNewNode->msModelId)
+ bIsChild = true;
+
+ if (!bIsChild)
+ return;
+
+ ShapePtr pCurrParent(mpParentShape);
+
+ if (rAtom.getExistingShape())
+ {
+ // reuse existing shape
+ ShapePtr pShape = rAtom.getExistingShape();
+ if (rAtom.setupShape(pShape, pNewNode, mnCurrIdx))
+ {
+ pShape->setInternalName(rAtom.getName());
+ rAtom.addNodeShape(pShape);
+ mrDgm.getLayout()->getPresPointShapeMap()[pNewNode] = pShape;
+ }
+ }
+ else
+ {
+ ShapeTemplateVisitor aTemplateVisitor(mrDgm, pNewNode);
+ aTemplateVisitor.defaultVisit(rAtom);
+ ShapePtr pShape = aTemplateVisitor.getShapeCopy();
+
+ if (pShape)
+ {
+ SAL_INFO("oox.drawingml",
+ "processing shape type "
+ << (pShape->getCustomShapeProperties()->getShapePresetType()));
+
+ if (rAtom.setupShape(pShape, pNewNode, mnCurrIdx))
+ {
+ pShape->setInternalName(rAtom.getName());
+ pCurrParent->addChild(pShape);
+ pCurrParent = pShape;
+ rAtom.addNodeShape(pShape);
+ mrDgm.getLayout()->getPresPointShapeMap()[pNewNode] = pShape;
+ }
+ }
+ else
+ {
+ SAL_WARN("oox.drawingml",
+ "ShapeCreationVisitor::visit: no shape set while processing layoutnode named "
+ << rAtom.getName());
+ }
+ }
+
+ const svx::diagram::Point* pPreviousNode = mpCurrentNode;
+ mpCurrentNode = pNewNode;
+
+ // set new parent for children
+ ShapePtr pPreviousParent(mpParentShape);
+ mpParentShape = pCurrParent;
+
+ // process children
+ meLookFor = LAYOUT_NODE;
+ defaultVisit(rAtom);
+
+ meLookFor = ALGORITHM;
+ defaultVisit(rAtom);
+ meLookFor = LAYOUT_NODE;
+
+ // restore parent
+ mpParentShape = pPreviousParent;
+ mpCurrentNode = pPreviousNode;
+}
+
+void ShapeCreationVisitor::visit(ShapeAtom& /*rAtom*/)
+{
+ // stop processing
+}
+
+void ShapeTemplateVisitor::visit(ConstraintAtom& /*rAtom*/)
+{
+ // stop processing
+}
+
+void ShapeTemplateVisitor::visit(RuleAtom& /*rAtom*/)
+{
+ // stop processing
+}
+
+void ShapeTemplateVisitor::visit(AlgAtom& /*rAtom*/)
+{
+ // stop processing
+}
+
+void ShapeTemplateVisitor::visit(ForEachAtom& /*rAtom*/)
+{
+ // stop processing
+}
+
+void ShapeTemplateVisitor::visit(LayoutNode& /*rAtom*/)
+{
+ // stop processing - only traverse Condition/Choose atoms
+}
+
+void ShapeTemplateVisitor::visit(ShapeAtom& rAtom)
+{
+ if (mpShape)
+ {
+ SAL_WARN("oox.drawingml", "multiple shapes encountered inside LayoutNode");
+ return;
+ }
+
+ const ShapePtr& pCurrShape(rAtom.getShapeTemplate());
+
+ // TODO(F3): cloned shape shares all properties by reference,
+ // don't change them!
+ mpShape = std::make_shared<Shape>(pCurrShape);
+ // Fill properties have to be changed as sometimes only the presentation node contains the blip
+ // fill, unshare those.
+ mpShape->cloneFillProperties();
+
+ // add/set ModelID from current node to allow later association
+ if (mpCurrentNode)
+ mpShape->setDiagramDataModelID(mpCurrentNode->msModelId);
+}
+
+void ShapeLayoutingVisitor::visit(ConstraintAtom& rAtom)
+{
+ if (meLookFor == CONSTRAINT)
+ rAtom.parseConstraint(maConstraints, /*bRequireForName=*/true);
+}
+
+void ShapeLayoutingVisitor::visit(RuleAtom& rAtom)
+{
+ if (meLookFor == RULE)
+ rAtom.parseRule(maRules);
+}
+
+void ShapeLayoutingVisitor::visit(AlgAtom& rAtom)
+{
+ if (meLookFor == ALGORITHM)
+ {
+ const PresPointShapeMap aMap
+ = rAtom.getLayoutNode().getDiagram().getLayout()->getPresPointShapeMap();
+ auto pShape = aMap.find(mpCurrentNode);
+ if (pShape != aMap.end())
+ rAtom.layoutShape(pShape->second, maConstraints, maRules);
+ }
+}
+
+void ShapeLayoutingVisitor::visit(LayoutNode& rAtom)
+{
+ if (meLookFor != LAYOUT_NODE)
+ return;
+
+ // stop processing if it's not a child of previous LayoutNode
+
+ const DiagramData::PointsNameMap::const_iterator aDataNode
+ = mrDgm.getData()->getPointsPresNameMap().find(rAtom.getName());
+ if (aDataNode == mrDgm.getData()->getPointsPresNameMap().end()
+ || mnCurrIdx >= static_cast<sal_Int32>(aDataNode->second.size()))
+ return;
+
+ const svx::diagram::Point* pNewNode = aDataNode->second.at(mnCurrIdx);
+ if (!mpCurrentNode || !pNewNode)
+ return;
+
+ bool bIsChild = false;
+ for (const auto& aConnection : mrDgm.getData()->getConnections())
+ if (aConnection.msSourceId == mpCurrentNode->msModelId
+ && aConnection.msDestId == pNewNode->msModelId)
+ bIsChild = true;
+
+ if (!bIsChild)
+ return;
+
+ size_t nParentConstraintsNumber = maConstraints.size();
+
+ const svx::diagram::Point* pPreviousNode = mpCurrentNode;
+ mpCurrentNode = pNewNode;
+
+ // process alg atoms first, nested layout nodes afterwards
+ meLookFor = CONSTRAINT;
+ defaultVisit(rAtom);
+ meLookFor = RULE;
+ defaultVisit(rAtom);
+ meLookFor = ALGORITHM;
+ defaultVisit(rAtom);
+ meLookFor = LAYOUT_NODE;
+ defaultVisit(rAtom);
+
+ mpCurrentNode = pPreviousNode;
+
+ // delete added constraints, keep parent constraints
+ maConstraints.erase(maConstraints.begin() + nParentConstraintsNumber, maConstraints.end());
+}
+
+void ShapeLayoutingVisitor::visit(ShapeAtom& /*rAtom*/)
+{
+ // stop processing
+}
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/oox/source/drawingml/diagram/layoutatomvisitors.hxx b/oox/source/drawingml/diagram/layoutatomvisitors.hxx
new file mode 100644
index 000000000..c04fb1d97
--- /dev/null
+++ b/oox/source/drawingml/diagram/layoutatomvisitors.hxx
@@ -0,0 +1,96 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ *
+ * This file incorporates work covered by the following license notice:
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed
+ * with this work for additional information regarding copyright
+ * ownership. The ASF licenses this file to you under the Apache
+ * License, Version 2.0 (the "License"); you may not use this file
+ * except in compliance with the License. You may obtain a copy of
+ * the License at http://www.apache.org/licenses/LICENSE-2.0 .
+ */
+
+#ifndef INCLUDED_OOX_SOURCE_DRAWINGML_DIAGRAM_LAYOUTATOMVISITORS_HXX
+#define INCLUDED_OOX_SOURCE_DRAWINGML_DIAGRAM_LAYOUTATOMVISITORS_HXX
+
+#include <oox/drawingml/drawingmltypes.hxx>
+#include "diagram.hxx"
+#include "diagramlayoutatoms.hxx"
+#include "layoutatomvisitorbase.hxx"
+
+namespace oox::drawingml {
+
+class ShapeCreationVisitor : public LayoutAtomVisitorBase
+{
+public:
+ ShapeCreationVisitor(const Diagram& rDgm,
+ const svx::diagram::Point* pRootPoint,
+ const ShapePtr& rParentShape) :
+ LayoutAtomVisitorBase(rDgm, pRootPoint),
+ mpParentShape(rParentShape)
+ {}
+
+ using LayoutAtomVisitorBase::visit;
+ virtual void visit(ConstraintAtom& rAtom) override;
+ virtual void visit(RuleAtom& rAtom) override;
+ virtual void visit(AlgAtom& rAtom) override;
+ virtual void visit(LayoutNode& rAtom) override;
+ virtual void visit(ShapeAtom& rAtom) override;
+
+private:
+ ShapePtr mpParentShape;
+};
+
+class ShapeTemplateVisitor : public LayoutAtomVisitorBase
+{
+public:
+ ShapeTemplateVisitor(const Diagram& rDgm, const svx::diagram::Point* pRootPoint)
+ : LayoutAtomVisitorBase(rDgm, pRootPoint)
+ {}
+
+ using LayoutAtomVisitorBase::visit;
+ virtual void visit(ConstraintAtom& rAtom) override;
+ virtual void visit(RuleAtom& rAtom) override;
+ virtual void visit(AlgAtom& rAtom) override;
+ virtual void visit(ForEachAtom& rAtom) override;
+ virtual void visit(LayoutNode& rAtom) override;
+ virtual void visit(ShapeAtom& rAtom) override;
+
+ ShapePtr const & getShapeCopy() const
+ { return mpShape; }
+
+private:
+ ShapePtr mpShape;
+};
+
+class ShapeLayoutingVisitor : public LayoutAtomVisitorBase
+{
+public:
+ ShapeLayoutingVisitor(const Diagram& rDgm, const svx::diagram::Point* pRootPoint) :
+ LayoutAtomVisitorBase(rDgm, pRootPoint)
+ {}
+
+ using LayoutAtomVisitorBase::visit;
+ virtual void visit(ConstraintAtom& rAtom) override;
+ virtual void visit(RuleAtom& rAtom) override;
+ virtual void visit(AlgAtom& rAtom) override;
+ virtual void visit(LayoutNode& rAtom) override;
+ virtual void visit(ShapeAtom& rAtom) override;
+
+private:
+ std::vector<Constraint> maConstraints;
+ std::vector<Rule> maRules;
+};
+
+}
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/oox/source/drawingml/diagram/layoutnodecontext.cxx b/oox/source/drawingml/diagram/layoutnodecontext.cxx
new file mode 100644
index 000000000..93f927531
--- /dev/null
+++ b/oox/source/drawingml/diagram/layoutnodecontext.cxx
@@ -0,0 +1,309 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ *
+ * This file incorporates work covered by the following license notice:
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed
+ * with this work for additional information regarding copyright
+ * ownership. The ASF licenses this file to you under the Apache
+ * License, Version 2.0 (the "License"); you may not use this file
+ * except in compliance with the License. You may obtain a copy of
+ * the License at http://www.apache.org/licenses/LICENSE-2.0 .
+ */
+
+#include "layoutnodecontext.hxx"
+
+#include <oox/helper/attributelist.hxx>
+#include <oox/drawingml/shapecontext.hxx>
+#include <drawingml/customshapeproperties.hxx>
+#include "constraintlistcontext.hxx"
+#include "rulelistcontext.hxx"
+#include <oox/token/namespaces.hxx>
+#include <oox/token/tokens.hxx>
+#include <sal/log.hxx>
+
+using namespace ::oox::core;
+using namespace ::com::sun::star::uno;
+using namespace ::com::sun::star::xml::sax;
+
+namespace oox::drawingml {
+
+namespace {
+
+class IfContext
+ : public LayoutNodeContext
+{
+public:
+ IfContext( ContextHandler2Helper const & rParent,
+ const AttributeList& rAttribs,
+ const ConditionAtomPtr& pAtom )
+ : LayoutNodeContext( rParent, rAttribs, pAtom )
+ {}
+};
+
+class AlgorithmContext
+ : public ContextHandler2
+{
+public:
+ AlgorithmContext( ContextHandler2Helper const & rParent, const AttributeList& rAttribs, const AlgAtomPtr & pNode )
+ : ContextHandler2( rParent )
+ , mnRevision( 0 )
+ , mpNode( pNode )
+ {
+ mnRevision = rAttribs.getInteger( XML_rev, 0 );
+ pNode->setType(rAttribs.getToken(XML_type, 0));
+ }
+
+ virtual ContextHandlerRef
+ onCreateContext( ::sal_Int32 aElement,
+ const AttributeList& rAttribs ) override
+ {
+ switch( aElement )
+ {
+ case DGM_TOKEN( param ):
+ {
+ sal_Int32 nType = rAttribs.getToken(XML_type, 0);
+ switch (nType)
+ {
+ case XML_ar:
+ mpNode->setAspectRatio(rAttribs.getDouble(XML_val, 0));
+ break;
+ default:
+ const sal_Int32 nValTok = rAttribs.getToken(XML_val, 0);
+ mpNode->addParam(nType, nValTok > 0 ? nValTok
+ : rAttribs.getInteger(XML_val, 0));
+ break;
+ }
+ break;
+ }
+ default:
+ break;
+ }
+
+ return this;
+ }
+
+private:
+ sal_Int32 mnRevision;
+ AlgAtomPtr mpNode;
+};
+
+class ChooseContext
+ : public ContextHandler2
+{
+public:
+ ChooseContext( ContextHandler2Helper const & rParent, const AttributeList& rAttribs, const LayoutAtomPtr & pNode )
+ : ContextHandler2( rParent )
+ , mpNode( pNode )
+ {
+ msName = rAttribs.getString( XML_name ).get();
+ }
+
+ virtual ContextHandlerRef
+ onCreateContext( ::sal_Int32 aElement,
+ const AttributeList& rAttribs ) override
+ {
+ switch( aElement )
+ {
+ case DGM_TOKEN( if ):
+ {
+ // CT_When
+ ConditionAtomPtr pNode = std::make_shared<ConditionAtom>(mpNode->getLayoutNode(), false, rAttribs.getFastAttributeList());
+ LayoutAtom::connect(mpNode, pNode);
+ return new IfContext( *this, rAttribs, pNode );
+ }
+ case DGM_TOKEN( else ):
+ {
+ // CT_Otherwise
+ ConditionAtomPtr pNode = std::make_shared<ConditionAtom>(mpNode->getLayoutNode(), true, rAttribs.getFastAttributeList());
+ LayoutAtom::connect(mpNode, pNode);
+ return new IfContext( *this, rAttribs, pNode );
+ }
+ default:
+ break;
+ }
+
+ return this;
+ }
+private:
+ OUString msName;
+ LayoutAtomPtr mpNode;
+};
+
+class ForEachContext
+ : public LayoutNodeContext
+{
+public:
+ ForEachContext( ContextHandler2Helper const & rParent, const AttributeList& rAttribs, const ForEachAtomPtr& pAtom )
+ : LayoutNodeContext( rParent, rAttribs, pAtom )
+ {
+ pAtom->setRef(rAttribs.getString(XML_ref).get());
+ pAtom->iterator().loadFromXAttr( rAttribs.getFastAttributeList() );
+
+ LayoutAtomMap& rLayoutAtomMap = pAtom->getLayoutNode().getDiagram().getLayout()->getLayoutAtomMap();
+ rLayoutAtomMap[pAtom->getName()] = pAtom;
+ }
+};
+
+// CT_LayoutVariablePropertySet
+class LayoutVariablePropertySetContext
+ : public ContextHandler2
+{
+public:
+ LayoutVariablePropertySetContext( ContextHandler2Helper const & rParent, LayoutNode::VarMap & aVar )
+ : ContextHandler2( rParent )
+ , mVariables( aVar )
+ {
+ }
+
+ virtual ContextHandlerRef onCreateContext( ::sal_Int32 aElement, const AttributeList& rAttribs ) override
+ {
+ mVariables[ getBaseToken(aElement) ] = rAttribs.getString( XML_val ).get();
+ return this;
+ }
+private:
+ LayoutNode::VarMap & mVariables;
+};
+
+}
+
+// CT_LayoutNode
+LayoutNodeContext::LayoutNodeContext( ContextHandler2Helper const & rParent,
+ const AttributeList& rAttribs,
+ const LayoutAtomPtr& pAtom )
+ : ContextHandler2( rParent )
+ , mpNode( pAtom )
+{
+ assert( pAtom && "Node must NOT be NULL" );
+ mpNode->setName( rAttribs.getString( XML_name ).get() );
+}
+
+LayoutNodeContext::~LayoutNodeContext()
+{
+}
+
+ContextHandlerRef
+LayoutNodeContext::onCreateContext( ::sal_Int32 aElement,
+ const AttributeList& rAttribs )
+{
+ switch( aElement )
+ {
+ case DGM_TOKEN( layoutNode ):
+ {
+ LayoutNodePtr pNode = std::make_shared<LayoutNode>(mpNode->getLayoutNode().getDiagram());
+ LayoutAtom::connect(mpNode, pNode);
+
+ if (rAttribs.hasAttribute(XML_chOrder))
+ {
+ pNode->setChildOrder(rAttribs.getToken(XML_chOrder, XML_b));
+ }
+ else
+ {
+ for (LayoutAtomPtr pAtom = mpNode; pAtom; pAtom = pAtom->getParent())
+ {
+ auto pLayoutNode = dynamic_cast<LayoutNode*>(pAtom.get());
+ if (pLayoutNode)
+ {
+ pNode->setChildOrder(pLayoutNode->getChildOrder());
+ break;
+ }
+ }
+ }
+
+ pNode->setMoveWith( rAttribs.getString( XML_moveWith ).get() );
+ pNode->setStyleLabel( rAttribs.getString( XML_styleLbl ).get() );
+ return new LayoutNodeContext( *this, rAttribs, pNode );
+ }
+ case DGM_TOKEN( shape ):
+ {
+ ShapePtr pShape;
+
+ if( rAttribs.hasAttribute( XML_type ) )
+ {
+ pShape = std::make_shared<Shape>("com.sun.star.drawing.CustomShape");
+ if (!rAttribs.getBool(XML_hideGeom, false))
+ {
+ const sal_Int32 nType(rAttribs.getToken( XML_type, XML_obj ));
+ pShape->setSubType( nType );
+ pShape->getCustomShapeProperties()->setShapePresetType( nType );
+ }
+ }
+ else
+ {
+ pShape = std::make_shared<Shape>("com.sun.star.drawing.GroupShape");
+ }
+
+ pShape->setDiagramRotation(rAttribs.getInteger(XML_rot, 0) * PER_DEGREE);
+
+ pShape->setZOrderOff(rAttribs.getInteger(XML_zOrderOff, 0));
+
+ ShapeAtomPtr pAtom = std::make_shared<ShapeAtom>(mpNode->getLayoutNode(), pShape);
+ LayoutAtom::connect(mpNode, pAtom);
+ return new ShapeContext( *this, ShapePtr(), pShape );
+ }
+ case DGM_TOKEN( extLst ):
+ return nullptr;
+ case DGM_TOKEN( alg ):
+ {
+ // CT_Algorithm
+ AlgAtomPtr pAtom = std::make_shared<AlgAtom>(mpNode->getLayoutNode());
+ LayoutAtom::connect(mpNode, pAtom);
+ return new AlgorithmContext( *this, rAttribs, pAtom );
+ }
+ case DGM_TOKEN( choose ):
+ {
+ // CT_Choose
+ LayoutAtomPtr pAtom = std::make_shared<ChooseAtom>(mpNode->getLayoutNode());
+ LayoutAtom::connect(mpNode, pAtom);
+ return new ChooseContext( *this, rAttribs, pAtom );
+ }
+ case DGM_TOKEN( forEach ):
+ {
+ // CT_ForEach
+ ForEachAtomPtr pAtom = std::make_shared<ForEachAtom>(mpNode->getLayoutNode(), rAttribs.getFastAttributeList());
+ LayoutAtom::connect(mpNode, pAtom);
+ return new ForEachContext( *this, rAttribs, pAtom );
+ }
+ case DGM_TOKEN( constrLst ):
+ // CT_Constraints
+ return new ConstraintListContext( *this, mpNode );
+ case DGM_TOKEN( presOf ):
+ {
+ // CT_PresentationOf
+ // TODO
+ IteratorAttr aIterator;
+ aIterator.loadFromXAttr(rAttribs.getFastAttributeList());
+ break;
+ }
+ case DGM_TOKEN( ruleLst ):
+ // CT_Rules
+ return new RuleListContext( *this, mpNode );
+ case DGM_TOKEN( varLst ):
+ {
+ LayoutNodePtr pNode(std::dynamic_pointer_cast<LayoutNode>(mpNode));
+ if( pNode )
+ {
+ return new LayoutVariablePropertySetContext( *this, pNode->variables() );
+ }
+ else
+ {
+ SAL_WARN("oox", "OOX: encountered a varLst in a non layoutNode context" );
+ }
+ break;
+ }
+ default:
+ break;
+ }
+
+ return this;
+}
+
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/oox/source/drawingml/diagram/layoutnodecontext.hxx b/oox/source/drawingml/diagram/layoutnodecontext.hxx
new file mode 100644
index 000000000..3499f5704
--- /dev/null
+++ b/oox/source/drawingml/diagram/layoutnodecontext.hxx
@@ -0,0 +1,43 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ *
+ * This file incorporates work covered by the following license notice:
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed
+ * with this work for additional information regarding copyright
+ * ownership. The ASF licenses this file to you under the Apache
+ * License, Version 2.0 (the "License"); you may not use this file
+ * except in compliance with the License. You may obtain a copy of
+ * the License at http://www.apache.org/licenses/LICENSE-2.0 .
+ */
+
+#ifndef INCLUDED_OOX_SOURCE_DRAWINGML_DIAGRAM_LAYOUTNODECONTEXT_HXX
+#define INCLUDED_OOX_SOURCE_DRAWINGML_DIAGRAM_LAYOUTNODECONTEXT_HXX
+
+#include <oox/core/contexthandler2.hxx>
+#include "diagramlayoutatoms.hxx"
+
+namespace oox::drawingml {
+
+class LayoutNodeContext : public ::oox::core::ContextHandler2
+{
+public:
+ LayoutNodeContext( ::oox::core::ContextHandler2Helper const & rParent, const ::oox::AttributeList& rAttributes, const LayoutAtomPtr &pNode );
+ virtual ~LayoutNodeContext() override;
+
+ virtual ::oox::core::ContextHandlerRef onCreateContext( ::sal_Int32 Element, const ::oox::AttributeList& rAttribs ) override;
+private:
+ LayoutAtomPtr mpNode;
+};
+
+}
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/oox/source/drawingml/diagram/rulelistcontext.cxx b/oox/source/drawingml/diagram/rulelistcontext.cxx
new file mode 100644
index 000000000..76518ca9e
--- /dev/null
+++ b/oox/source/drawingml/diagram/rulelistcontext.cxx
@@ -0,0 +1,58 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ *
+ * This file incorporates work covered by the following license notice:
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed
+ * with this work for additional information regarding copyright
+ * ownership. The ASF licenses this file to you under the Apache
+ * License, Version 2.0 (the "License"); you may not use this file
+ * except in compliance with the License. You may obtain a copy of
+ * the License at http://www.apache.org/licenses/LICENSE-2.0 .
+ */
+
+#include "rulelistcontext.hxx"
+#include <oox/helper/attributelist.hxx>
+#include <oox/token/namespaces.hxx>
+#include <oox/token/tokens.hxx>
+
+namespace oox::drawingml
+{
+RuleListContext::RuleListContext(ContextHandler2Helper const& rParent, const LayoutAtomPtr& pNode)
+ : ContextHandler2(rParent)
+ , mpNode(pNode)
+{
+ assert(pNode);
+}
+
+RuleListContext::~RuleListContext() = default;
+
+core::ContextHandlerRef RuleListContext::onCreateContext(sal_Int32 nElement,
+ const AttributeList& rAttribs)
+{
+ switch (nElement)
+ {
+ case DGM_TOKEN(rule):
+ {
+ auto pNode = std::make_shared<RuleAtom>(mpNode->getLayoutNode());
+ LayoutAtom::connect(mpNode, pNode);
+
+ Rule& rRule = pNode->getRule();
+ rRule.msForName = rAttribs.getString(XML_forName, "");
+ break;
+ }
+ default:
+ break;
+ }
+
+ return this;
+}
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/oox/source/drawingml/diagram/rulelistcontext.hxx b/oox/source/drawingml/diagram/rulelistcontext.hxx
new file mode 100644
index 000000000..83a86c49e
--- /dev/null
+++ b/oox/source/drawingml/diagram/rulelistcontext.hxx
@@ -0,0 +1,42 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ *
+ * This file incorporates work covered by the following license notice:
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed
+ * with this work for additional information regarding copyright
+ * ownership. The ASF licenses this file to you under the Apache
+ * License, Version 2.0 (the "License"); you may not use this file
+ * except in compliance with the License. You may obtain a copy of
+ * the License at http://www.apache.org/licenses/LICENSE-2.0 .
+ */
+
+#pragma once
+
+#include <oox/core/contexthandler2.hxx>
+#include "diagramlayoutatoms.hxx"
+
+namespace oox::drawingml
+{
+/// Handles one <dgm:ruleLst> element.
+class RuleListContext : public oox::core::ContextHandler2
+{
+public:
+ RuleListContext(ContextHandler2Helper const& rParent, const LayoutAtomPtr& pNode);
+ ~RuleListContext() override;
+
+ oox::core::ContextHandlerRef onCreateContext(sal_Int32 nElement,
+ const AttributeList& rAttribs) override;
+
+private:
+ LayoutAtomPtr mpNode;
+};
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/oox/source/drawingml/drawingmltypes.cxx b/oox/source/drawingml/drawingmltypes.cxx
new file mode 100644
index 000000000..fc2f28d90
--- /dev/null
+++ b/oox/source/drawingml/drawingmltypes.cxx
@@ -0,0 +1,419 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ *
+ * This file incorporates work covered by the following license notice:
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed
+ * with this work for additional information regarding copyright
+ * ownership. The ASF licenses this file to you under the Apache
+ * License, Version 2.0 (the "License"); you may not use this file
+ * except in compliance with the License. You may obtain a copy of
+ * the License at http://www.apache.org/licenses/LICENSE-2.0 .
+ */
+
+#include <oox/drawingml/drawingmltypes.hxx>
+#include <com/sun/star/awt/FontUnderline.hpp>
+#include <com/sun/star/awt/FontStrikeout.hpp>
+#include <com/sun/star/drawing/Hatch.hpp>
+#include <com/sun/star/style/CaseMap.hpp>
+#include <com/sun/star/xml/sax/XFastAttributeList.hpp>
+
+#include <o3tl/string_view.hxx>
+#include <osl/diagnose.h>
+#include <sax/tools/converter.hxx>
+#include <oox/token/tokens.hxx>
+
+using ::com::sun::star::uno::Reference;
+using ::com::sun::star::xml::sax::XFastAttributeList;
+using namespace ::com::sun::star;
+using namespace ::com::sun::star::drawing;
+using namespace ::com::sun::star::geometry;
+using namespace ::com::sun::star::style;
+
+namespace oox::drawingml {
+
+/** converts EMUs into 1/100th mmm */
+sal_Int32 GetCoordinate( sal_Int32 nValue )
+{
+ return o3tl::convert(nValue, o3tl::Length::emu, o3tl::Length::mm100);
+}
+
+/** converts an emu string into 1/100th mmm */
+sal_Int32 GetCoordinate( std::u16string_view sValue )
+{
+ sal_Int32 nRet = 0;
+ if( !::sax::Converter::convertNumber( nRet, sValue ) )
+ nRet = 0;
+ return GetCoordinate( nRet );
+}
+
+/** converts 1/100mm to EMU */
+sal_Int32 GetPointFromCoordinate( sal_Int32 nValue )
+{
+ return o3tl::convert(nValue, o3tl::Length::mm100, o3tl::Length::emu);
+}
+
+/** converts a ST_Percentage % string into 1/1000th of % */
+sal_Int32 GetPercent( std::u16string_view sValue )
+{
+ sal_Int32 nRet = 0;
+ if( !::sax::Converter::convertNumber( nRet, sValue ) )
+ nRet = 0;
+
+ return nRet;
+}
+
+double GetPositiveFixedPercentage( const OUString& sValue )
+{
+ double fPercent = sValue.toFloat() / 100000.;
+ return fPercent;
+}
+
+/** converts the attributes from a CT_TLPoint into an awt Point with 1/1000% */
+awt::Point GetPointPercent( const Reference< XFastAttributeList >& xAttribs )
+{
+ return awt::Point(GetPercent(xAttribs->getOptionalValue(XML_x)), GetPercent(xAttribs->getOptionalValue(XML_y)));
+}
+
+/** converts the ST_TextFontSize to point */
+float GetTextSize( std::u16string_view sValue )
+{
+ float fRet = 0;
+ sal_Int32 nRet;
+ if( ::sax::Converter::convertNumber( nRet, sValue ) )
+ fRet = static_cast< float >( static_cast< double >( nRet ) / 100.0 );
+ return fRet;
+}
+
+/** converts the ST_TextSpacingPoint to 1/100mm */
+sal_Int32 GetTextSpacingPoint( std::u16string_view sValue )
+{
+ sal_Int32 nRet;
+ if( ::sax::Converter::convertNumber( nRet, sValue, (SAL_MIN_INT32 + 360) / 254, (SAL_MAX_INT32 - 360) / 254 ) )
+ nRet = GetTextSpacingPoint( nRet );
+ return nRet;
+}
+
+sal_Int32 GetTextSpacingPoint(sal_Int32 nValue)
+{
+ if (nValue > 0)
+ nValue = (nValue * 254 + 360);
+ else if (nValue < 0)
+ nValue = (nValue * 254 - 360);
+ return nValue / 720;
+}
+
+float GetFontHeight( sal_Int32 nHeight )
+{
+ // convert 1/100 points to points
+ return static_cast< float >( nHeight / 100.0 );
+}
+
+sal_Int16 GetFontUnderline( sal_Int32 nToken )
+{
+ OSL_ASSERT((nToken & sal_Int32(0xFFFF0000))==0);
+ switch( nToken )
+ {
+ case XML_none: return awt::FontUnderline::NONE;
+ case XML_dash: return awt::FontUnderline::DASH;
+ case XML_dashHeavy: return awt::FontUnderline::BOLDDASH;
+ case XML_dashLong: return awt::FontUnderline::LONGDASH;
+ case XML_dashLongHeavy: return awt::FontUnderline::BOLDLONGDASH;
+ case XML_dbl: return awt::FontUnderline::DOUBLE;
+ case XML_dotDash: return awt::FontUnderline::DASHDOT;
+ case XML_dotDashHeavy: return awt::FontUnderline::BOLDDASHDOT;
+ case XML_dotDotDash: return awt::FontUnderline::DASHDOTDOT;
+ case XML_dotDotDashHeavy: return awt::FontUnderline::BOLDDASHDOTDOT;
+ case XML_dotted: return awt::FontUnderline::DOTTED;
+ case XML_dottedHeavy: return awt::FontUnderline::BOLDDOTTED;
+ case XML_heavy: return awt::FontUnderline::BOLD;
+ case XML_sng: return awt::FontUnderline::SINGLE;
+ case XML_wavy: return awt::FontUnderline::WAVE;
+ case XML_wavyDbl: return awt::FontUnderline::DOUBLEWAVE;
+ case XML_wavyHeavy: return awt::FontUnderline::BOLDWAVE;
+// case XML_words: // TODO
+ }
+ return awt::FontUnderline::DONTKNOW;
+}
+
+sal_Int16 GetFontStrikeout( sal_Int32 nToken )
+{
+ OSL_ASSERT((nToken & sal_Int32(0xFFFF0000))==0);
+ switch( nToken )
+ {
+ case XML_dblStrike: return awt::FontStrikeout::DOUBLE;
+ case XML_noStrike: return awt::FontStrikeout::NONE;
+ case XML_sngStrike: return awt::FontStrikeout::SINGLE;
+ }
+ return awt::FontStrikeout::DONTKNOW;
+}
+
+sal_Int16 GetCaseMap( sal_Int32 nToken )
+{
+ switch( nToken )
+ {
+ case XML_all: return CaseMap::UPPERCASE;
+ case XML_small: return CaseMap::SMALLCAPS;
+ }
+ return CaseMap::NONE;
+}
+
+/** converts a paragraph align to a ParaAdjust */
+ParagraphAdjust GetParaAdjust( sal_Int32 nAlign )
+{
+ OSL_ASSERT((nAlign & sal_Int32(0xFFFF0000))==0);
+ ParagraphAdjust nEnum;
+ switch( nAlign )
+ {
+ case XML_ctr:
+ nEnum = ParagraphAdjust_CENTER;
+ break;
+ case XML_just:
+ case XML_justLow:
+ nEnum = ParagraphAdjust_BLOCK;
+ break;
+ case XML_r:
+ nEnum = ParagraphAdjust_RIGHT;
+ break;
+ case XML_thaiDist:
+ case XML_dist:
+ nEnum = ParagraphAdjust_STRETCH;
+ break;
+ case XML_l:
+ default:
+ nEnum = ParagraphAdjust_LEFT;
+ break;
+ }
+ return nEnum;
+}
+
+TextVerticalAdjust GetTextVerticalAdjust( sal_Int32 nToken )
+{
+ TextVerticalAdjust aVertAdjust;
+ switch( nToken )
+ {
+ case XML_b:
+ aVertAdjust = TextVerticalAdjust_BOTTOM;
+ break;
+ case XML_dist:
+ case XML_just:
+ case XML_ctr:
+ aVertAdjust = TextVerticalAdjust_CENTER;
+ break;
+ case XML_t:
+ default:
+ aVertAdjust = TextVerticalAdjust_TOP;
+ break;
+ }
+ return aVertAdjust;
+}
+
+const char* GetTextVerticalAdjust( TextVerticalAdjust eAdjust )
+{
+ const char* sVerticalAdjust = nullptr;
+ switch( eAdjust )
+ {
+ case TextVerticalAdjust_BOTTOM:
+ sVerticalAdjust = "b";
+ break;
+ case TextVerticalAdjust_CENTER:
+ sVerticalAdjust = "ctr";
+ break;
+ case TextVerticalAdjust_TOP:
+ default:
+ sVerticalAdjust = "t";
+ break;
+ }
+ return sVerticalAdjust;
+}
+
+TabAlign GetTabAlign( sal_Int32 aToken )
+{
+ OSL_ASSERT((aToken & sal_Int32(0xFFFF0000))==0);
+ TabAlign nEnum;
+ switch( aToken )
+ {
+ case XML_ctr:
+ nEnum = TabAlign_CENTER;
+ break;
+ case XML_dec:
+ nEnum = TabAlign_DECIMAL;
+ break;
+ case XML_l:
+ nEnum = TabAlign_LEFT;
+ break;
+ case XML_r:
+ nEnum = TabAlign_RIGHT;
+ break;
+ default:
+ nEnum = TabAlign_DEFAULT;
+ break;
+ }
+ return nEnum;
+}
+
+const char* GetHatchPattern( const drawing::Hatch& rHatch )
+{
+ const char* sPattern = nullptr;
+ const sal_Int32 nAngle = rHatch.Angle > 1800 ? rHatch.Angle - 1800 : rHatch.Angle;
+ // Angle ~ 0° (horizontal)
+ if( (nAngle >= 0 && nAngle < 225) || nAngle >= 1575 )
+ {
+ switch( rHatch.Style )
+ {
+ case drawing::HatchStyle_SINGLE:
+ {
+ if( rHatch.Distance < 75 )
+ sPattern = "ltHorz";
+ else
+ sPattern = "horz";
+
+ break;
+ }
+ case drawing::HatchStyle_DOUBLE:
+ case drawing::HatchStyle_TRIPLE:
+ {
+ if( rHatch.Distance < 75 )
+ sPattern = "smGrid";
+ else
+ sPattern = "lgGrid";
+
+ break;
+ }
+ default: break;
+ }
+ }
+ // Angle ~ 45° (upward diagonal)
+ else if( nAngle < 675 )
+ {
+ switch( rHatch.Style )
+ {
+ case drawing::HatchStyle_SINGLE:
+ {
+ if( rHatch.Distance < 75 )
+ sPattern = "ltUpDiag";
+ else
+ sPattern = "wdUpDiag";
+
+ break;
+ }
+ case drawing::HatchStyle_DOUBLE:
+ case drawing::HatchStyle_TRIPLE:
+ {
+ if( rHatch.Distance < 75 )
+ sPattern = "smCheck";
+ else
+ sPattern = "openDmnd";
+
+ break;
+ }
+ default: break;
+ }
+ }
+ // Angle ~ 90° (vertical)
+ else if( nAngle < 1125 )
+ {
+ switch( rHatch.Style )
+ {
+ case drawing::HatchStyle_SINGLE:
+ {
+ // dkVert is imported as Distance = 25, ltVert as Distance = 50, export them accordingly.
+ if( rHatch.Distance < 50 )
+ sPattern = "dkVert";
+ else if( rHatch.Distance < 75 )
+ sPattern = "ltVert";
+ else
+ sPattern = "vert";
+
+ break;
+ }
+ case drawing::HatchStyle_DOUBLE:
+ case drawing::HatchStyle_TRIPLE:
+ {
+ if( rHatch.Distance < 75 )
+ sPattern = "smGrid";
+ else
+ sPattern = "lgGrid";
+
+ break;
+ }
+ default: break;
+ }
+ }
+ // Angle ~ 135° (downward diagonal)
+ else if( nAngle < 1575 )
+ {
+ switch( rHatch.Style )
+ {
+ case drawing::HatchStyle_SINGLE:
+ {
+ if( rHatch.Distance < 75 )
+ sPattern = "ltDnDiag";
+ else
+ sPattern = "wdDnDiag";
+
+ break;
+ }
+ case drawing::HatchStyle_DOUBLE:
+ case drawing::HatchStyle_TRIPLE:
+ {
+ if( rHatch.Distance < 75 )
+ sPattern = "smCheck";
+ else
+ sPattern = "openDmnd";
+
+ break;
+ }
+ default: break;
+ }
+ }
+ return sPattern;
+}
+
+namespace
+{
+// ISO/IEC-29500 Part 1 ST_Percentage, and [MS-OI29500] 2.1.1324
+sal_Int32 GetST_Percentage(std::u16string_view s)
+{
+ if (o3tl::ends_with(s, u"%"))
+ return std::round(o3tl::toDouble(s) * 1000);
+ return o3tl::toInt32(s);
+}
+}
+
+/** converts the attributes from a CT_RelativeRect to an IntegerRectangle2D */
+IntegerRectangle2D GetRelativeRect( const Reference< XFastAttributeList >& xAttribs )
+{
+ IntegerRectangle2D r;
+
+ r.X1 = GetST_Percentage(xAttribs->getOptionalValue( XML_l ));
+ r.Y1 = GetST_Percentage(xAttribs->getOptionalValue( XML_t ));
+ r.X2 = GetST_Percentage(xAttribs->getOptionalValue( XML_r ));
+ r.Y2 = GetST_Percentage(xAttribs->getOptionalValue( XML_b ));
+
+ return r;
+}
+
+/** converts the attributes from a CT_Size2D into an awt Size with 1/100thmm */
+awt::Size GetSize2D( const Reference< XFastAttributeList >& xAttribs )
+{
+ return awt::Size( GetCoordinate( xAttribs->getOptionalValue( XML_cx ) ), GetCoordinate( xAttribs->getOptionalValue( XML_cy ) ) );
+}
+
+IndexRange GetIndexRange( const Reference< XFastAttributeList >& xAttributes )
+{
+ IndexRange range;
+ range.start = xAttributes->getOptionalValue( XML_st ).toInt32();
+ range.end = xAttributes->getOptionalValue( XML_end ).toInt32();
+ return range;
+}
+
+} // namespace oox::drawingml
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/oox/source/drawingml/effectproperties.cxx b/oox/source/drawingml/effectproperties.cxx
new file mode 100644
index 000000000..88d69a16d
--- /dev/null
+++ b/oox/source/drawingml/effectproperties.cxx
@@ -0,0 +1,132 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ */
+
+#include "effectproperties.hxx"
+#include <oox/drawingml/drawingmltypes.hxx>
+#include <oox/helper/graphichelper.hxx>
+#include <oox/token/properties.hxx>
+
+#include <basegfx/numeric/ftools.hxx>
+#include <comphelper/propertyvalue.hxx>
+
+#include <algorithm>
+
+namespace oox::drawingml {
+
+void EffectGlowProperties ::assignUsed(const EffectGlowProperties& rSourceProps)
+{
+ moGlowRad.assignIfUsed( rSourceProps.moGlowRad );
+ moGlowColor.assignIfUsed( rSourceProps.moGlowColor );
+}
+
+void EffectSoftEdgeProperties::assignUsed(const EffectSoftEdgeProperties& rSourceProps)
+{
+ moRad.assignIfUsed(rSourceProps.moRad);
+}
+
+void EffectShadowProperties::assignUsed(const EffectShadowProperties& rSourceProps)
+{
+ moShadowDist.assignIfUsed( rSourceProps.moShadowDist );
+ moShadowDir.assignIfUsed( rSourceProps.moShadowDir );
+ moShadowSx.assignIfUsed( rSourceProps.moShadowSx );
+ moShadowSy.assignIfUsed( rSourceProps.moShadowSy );
+ moShadowColor.assignIfUsed( rSourceProps.moShadowColor );
+ moShadowBlur.assignIfUsed( rSourceProps.moShadowBlur );
+
+}
+
+void EffectProperties::assignUsed( const EffectProperties& rSourceProps )
+{
+ maShadow.assignUsed(rSourceProps.maShadow);
+ maGlow.assignUsed(rSourceProps.maGlow);
+ maSoftEdge.assignUsed(rSourceProps.maSoftEdge);
+ if (!rSourceProps.m_Effects.empty())
+ {
+ m_Effects.clear();
+ m_Effects.reserve(rSourceProps.m_Effects.size());
+ for (auto const& it : rSourceProps.m_Effects)
+ {
+ m_Effects.push_back(std::make_unique<Effect>(*it));
+ }
+ }
+}
+
+void EffectProperties::pushToPropMap( PropertyMap& rPropMap,
+ const GraphicHelper& rGraphicHelper ) const
+{
+ for (auto const& it : m_Effects)
+ {
+ if( it->msName == "outerShdw" )
+ {
+ sal_Int32 nAttrDir = 0, nAttrDist = 0;
+ sal_Int32 nAttrSizeX = 100000, nAttrSizeY = 100000; // If shadow size is %100=100000 (means equal to object's size), sx sy is not exists,
+ // Default values of sx, sy should be 100000 in this case.
+ sal_Int32 nAttrBlur = 0;
+
+ std::map< OUString, css::uno::Any >::const_iterator attribIt = it->maAttribs.find( "dir" );
+ if( attribIt != it->maAttribs.end() )
+ attribIt->second >>= nAttrDir;
+
+ attribIt = it->maAttribs.find( "dist" );
+ if( attribIt != it->maAttribs.end() )
+ attribIt->second >>= nAttrDist;
+
+ attribIt = it->maAttribs.find( "sx" );
+ if( attribIt != it->maAttribs.end() )
+ attribIt->second >>= nAttrSizeX;
+
+ attribIt = it->maAttribs.find( "sy" );
+ if( attribIt != it->maAttribs.end() )
+ attribIt->second >>= nAttrSizeY;
+
+ attribIt = it->maAttribs.find( "blurRad" );
+ if( attribIt != it->maAttribs.end() )
+ attribIt->second >>= nAttrBlur;
+
+ // Negative X or Y dist indicates left or up, respectively
+ // Negative X or Y dist indicates left or up, respectively
+ double nAngle = basegfx::deg2rad(static_cast<double>(nAttrDir) / PER_DEGREE);
+ sal_Int32 nDist = convertEmuToHmm( nAttrDist );
+ sal_Int32 nXDist = cos(nAngle) * nDist;
+ sal_Int32 nYDist = sin(nAngle) * nDist;
+
+
+ rPropMap.setProperty( PROP_Shadow, true );
+ rPropMap.setProperty( PROP_ShadowXDistance, nXDist);
+ rPropMap.setProperty( PROP_ShadowYDistance, nYDist);
+ rPropMap.setProperty( PROP_ShadowSizeX, nAttrSizeX);
+ rPropMap.setProperty( PROP_ShadowSizeY, nAttrSizeY);
+ rPropMap.setProperty( PROP_ShadowColor, it->moColor.getColor(rGraphicHelper ) );
+ rPropMap.setProperty( PROP_ShadowTransparence, it->moColor.getTransparency());
+ rPropMap.setProperty( PROP_ShadowBlur, convertEmuToHmm(nAttrBlur));
+
+ }
+ }
+}
+
+css::beans::PropertyValue Effect::getEffect()
+{
+ css::beans::PropertyValue aRet;
+ if( msName.isEmpty() )
+ return aRet;
+
+ css::uno::Sequence< css::beans::PropertyValue > aSeq( maAttribs.size() );
+ std::transform(maAttribs.begin(), maAttribs.end(), aSeq.getArray(),
+ [](const auto& attrib)
+ { return comphelper::makePropertyValue(attrib.first, attrib.second); });
+
+ aRet.Name = msName;
+ aRet.Value <<= aSeq;
+
+ return aRet;
+}
+
+} // namespace oox::drawingml
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/oox/source/drawingml/effectproperties.hxx b/oox/source/drawingml/effectproperties.hxx
new file mode 100644
index 000000000..b588b9f7c
--- /dev/null
+++ b/oox/source/drawingml/effectproperties.hxx
@@ -0,0 +1,88 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ */
+
+#ifndef INCLUDED_OOX_DRAWINGML_EFFECTPROPERTIES_HXX
+#define INCLUDED_OOX_DRAWINGML_EFFECTPROPERTIES_HXX
+
+#include <oox/drawingml/color.hxx>
+#include <oox/helper/propertymap.hxx>
+
+#include <memory>
+#include <vector>
+#include <map>
+
+namespace oox::drawingml {
+
+struct EffectGlowProperties
+{
+ OptValue< sal_Int64 > moGlowRad; // size of glow effect
+ Color moGlowColor;
+ // TODO saturation and luminance missing
+
+ void assignUsed( const EffectGlowProperties& rSourceProps );
+};
+
+struct EffectSoftEdgeProperties
+{
+ OptValue<sal_Int64> moRad; // size of effect
+
+ void assignUsed(const EffectSoftEdgeProperties& rSourceProps);
+};
+
+struct EffectShadowProperties
+{
+ OptValue< sal_Int64 > moShadowDist;
+ OptValue< sal_Int64 > moShadowDir;
+ OptValue< sal_Int64 > moShadowSx;
+ OptValue< sal_Int64 > moShadowSy;
+ Color moShadowColor;
+ OptValue< sal_Int64 > moShadowBlur; // size of blur effect
+
+ /** Overwrites all members that are explicitly set in rSourceProps. */
+ void assignUsed( const EffectShadowProperties& rSourceProps );
+};
+
+struct Effect
+{
+ OUString msName;
+ std::map< OUString, css::uno::Any > maAttribs;
+ Color moColor;
+
+ css::beans::PropertyValue getEffect();
+};
+
+struct EffectProperties
+{
+ EffectShadowProperties maShadow;
+ EffectGlowProperties maGlow;
+ EffectSoftEdgeProperties maSoftEdge;
+
+ /** Stores all effect properties, including those not supported by core yet */
+ std::vector<std::unique_ptr<Effect>> m_Effects;
+
+ EffectProperties() {}
+ EffectProperties(EffectProperties const& rOther)
+ {
+ assignUsed(rOther);
+ }
+
+ /** Overwrites all members that are explicitly set in rSourceProps. */
+ void assignUsed( const EffectProperties& rSourceProps );
+
+ /** Writes the properties to the passed property map. */
+ void pushToPropMap(
+ PropertyMap& rPropMap,
+ const GraphicHelper& rGraphicHelper ) const;
+};
+
+} // namespace oox::drawingml
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/oox/source/drawingml/effectpropertiescontext.cxx b/oox/source/drawingml/effectpropertiescontext.cxx
new file mode 100644
index 000000000..ea972c742
--- /dev/null
+++ b/oox/source/drawingml/effectpropertiescontext.cxx
@@ -0,0 +1,133 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ */
+
+#include <drawingml/effectpropertiescontext.hxx>
+#include "effectproperties.hxx"
+#include <drawingml/colorchoicecontext.hxx>
+#include <oox/helper/attributelist.hxx>
+#include <oox/token/namespaces.hxx>
+#include <oox/token/tokens.hxx>
+
+using namespace ::oox::core;
+using namespace ::com::sun::star::uno;
+using namespace ::com::sun::star::xml::sax;
+
+// CT_EffectProperties
+
+namespace oox::drawingml {
+
+EffectPropertiesContext::EffectPropertiesContext( ContextHandler2Helper const& rParent,
+ EffectProperties& rEffectProperties ) noexcept
+: ContextHandler2( rParent )
+, mrEffectProperties( rEffectProperties )
+{
+}
+
+EffectPropertiesContext::~EffectPropertiesContext()
+{
+}
+
+void EffectPropertiesContext::saveUnsupportedAttribs( Effect& rEffect, const AttributeList& rAttribs )
+{
+ if( rAttribs.hasAttribute( XML_algn ) )
+ rEffect.maAttribs["algn"] <<= rAttribs.getString( XML_algn, "" );
+ if( rAttribs.hasAttribute( XML_blurRad ) )
+ rEffect.maAttribs["blurRad"] <<= rAttribs.getInteger( XML_blurRad, 0 );
+ if( rAttribs.hasAttribute( XML_dir ) )
+ rEffect.maAttribs["dir"] <<= rAttribs.getInteger( XML_dir, 0 );
+ if( rAttribs.hasAttribute( XML_dist ) )
+ rEffect.maAttribs["dist"] <<= rAttribs.getInteger( XML_dist, 0 );
+ if( rAttribs.hasAttribute( XML_kx ) )
+ rEffect.maAttribs["kx"] <<= rAttribs.getInteger( XML_kx, 0 );
+ if( rAttribs.hasAttribute( XML_ky ) )
+ rEffect.maAttribs["ky"] <<= rAttribs.getInteger( XML_ky, 0 );
+ if( rAttribs.hasAttribute( XML_rotWithShape ) )
+ rEffect.maAttribs["rotWithShape"] <<= rAttribs.getInteger( XML_rotWithShape, 0 );
+ if( rAttribs.hasAttribute( XML_sx ) )
+ rEffect.maAttribs["sx"] <<= rAttribs.getInteger( XML_sx, 0 );
+ if( rAttribs.hasAttribute( XML_sy ) )
+ rEffect.maAttribs["sy"] <<= rAttribs.getInteger( XML_sy, 0 );
+ if( rAttribs.hasAttribute( XML_rad ) )
+ rEffect.maAttribs["rad"] <<= rAttribs.getInteger( XML_rad, 0 );
+ if( rAttribs.hasAttribute( XML_endA ) )
+ rEffect.maAttribs["endA"] <<= rAttribs.getInteger( XML_endA, 0 );
+ if( rAttribs.hasAttribute( XML_endPos ) )
+ rEffect.maAttribs["endPos"] <<= rAttribs.getInteger( XML_endPos, 0 );
+ if( rAttribs.hasAttribute( XML_fadeDir ) )
+ rEffect.maAttribs["fadeDir"] <<= rAttribs.getInteger( XML_fadeDir, 0 );
+ if( rAttribs.hasAttribute( XML_stA ) )
+ rEffect.maAttribs["stA"] <<= rAttribs.getInteger( XML_stA, 0 );
+ if( rAttribs.hasAttribute( XML_stPos ) )
+ rEffect.maAttribs["stPos"] <<= rAttribs.getInteger( XML_stPos, 0 );
+ if( rAttribs.hasAttribute( XML_grow ) )
+ rEffect.maAttribs["grow"] <<= rAttribs.getInteger( XML_grow, 0 );
+}
+
+ContextHandlerRef EffectPropertiesContext::onCreateContext( sal_Int32 nElement, const AttributeList& rAttribs )
+{
+ sal_Int32 nPos = mrEffectProperties.m_Effects.size();
+ mrEffectProperties.m_Effects.push_back(std::make_unique<Effect>());
+ switch( nElement )
+ {
+ case A_TOKEN( outerShdw ):
+ {
+ mrEffectProperties.m_Effects[nPos]->msName = "outerShdw";
+ saveUnsupportedAttribs(*mrEffectProperties.m_Effects[nPos], rAttribs);
+
+ mrEffectProperties.maShadow.moShadowDist = rAttribs.getInteger( XML_dist, 0 );
+ mrEffectProperties.maShadow.moShadowDir = rAttribs.getInteger( XML_dir, 0 );
+ mrEffectProperties.maShadow.moShadowSx = rAttribs.getInteger( XML_sx, 0 );
+ mrEffectProperties.maShadow.moShadowSy = rAttribs.getInteger( XML_sy, 0 );
+ mrEffectProperties.maShadow.moShadowBlur = rAttribs.getInteger( XML_blurRad, 0 );
+ return new ColorContext(*this, mrEffectProperties.m_Effects[nPos]->moColor);
+ }
+ break;
+ case A_TOKEN( innerShdw ):
+ {
+ mrEffectProperties.m_Effects[nPos]->msName = "innerShdw";
+ saveUnsupportedAttribs(*mrEffectProperties.m_Effects[nPos], rAttribs);
+
+ mrEffectProperties.maShadow.moShadowDist = rAttribs.getInteger( XML_dist, 0 );
+ mrEffectProperties.maShadow.moShadowDir = rAttribs.getInteger( XML_dir, 0 );
+ return new ColorContext(*this, mrEffectProperties.m_Effects[nPos]->moColor);
+ }
+ break;
+ case A_TOKEN( glow ):
+ {
+ mrEffectProperties.maGlow.moGlowRad = rAttribs.getInteger( XML_rad, 0 );
+ // undo push_back to effects
+ mrEffectProperties.m_Effects.pop_back();
+ return new ColorContext(*this, mrEffectProperties.maGlow.moGlowColor);
+
+ }
+ case A_TOKEN( softEdge ):
+ {
+ mrEffectProperties.maSoftEdge.moRad = rAttribs.getInteger(XML_rad, 0);
+ return this; // no inner elements
+ }
+ case A_TOKEN( reflection ):
+ case A_TOKEN( blur ):
+ {
+ if (nElement == A_TOKEN(reflection))
+ mrEffectProperties.m_Effects[nPos]->msName = "reflection";
+ else if( nElement == A_TOKEN( blur ) )
+ mrEffectProperties.m_Effects[nPos]->msName = "blur";
+ saveUnsupportedAttribs(*mrEffectProperties.m_Effects[nPos], rAttribs);
+ return new ColorContext(*this, mrEffectProperties.m_Effects[nPos]->moColor);
+ }
+ break;
+ }
+
+ mrEffectProperties.m_Effects.pop_back();
+ return nullptr;
+}
+
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/oox/source/drawingml/embeddedwavaudiofile.cxx b/oox/source/drawingml/embeddedwavaudiofile.cxx
new file mode 100644
index 000000000..613e34ccb
--- /dev/null
+++ b/oox/source/drawingml/embeddedwavaudiofile.cxx
@@ -0,0 +1,37 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ *
+ * This file incorporates work covered by the following license notice:
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed
+ * with this work for additional information regarding copyright
+ * ownership. The ASF licenses this file to you under the Apache
+ * License, Version 2.0 (the "License"); you may not use this file
+ * except in compliance with the License. You may obtain a copy of
+ * the License at http://www.apache.org/licenses/LICENSE-2.0 .
+ */
+
+#include <drawingml/embeddedwavaudiofile.hxx>
+#include <oox/helper/attributelist.hxx>
+#include <oox/token/namespaces.hxx>
+#include <oox/token/tokens.hxx>
+
+namespace oox::drawingml
+{
+// CT_EmbeddedWAVAudioFile
+OUString getEmbeddedWAVAudioFile(const core::Relations& rRelations, const AttributeList& rAttribs)
+{
+ if (rAttribs.getBool(XML_builtIn, false))
+ return rAttribs.getString(XML_name).get();
+ else
+ return rRelations.getFragmentPathFromRelId(rAttribs.getString(R_TOKEN(embed)).get());
+}
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/oox/source/drawingml/fillproperties.cxx b/oox/source/drawingml/fillproperties.cxx
new file mode 100644
index 000000000..9ae39b8cf
--- /dev/null
+++ b/oox/source/drawingml/fillproperties.cxx
@@ -0,0 +1,1257 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ *
+ * This file incorporates work covered by the following license notice:
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed
+ * with this work for additional information regarding copyright
+ * ownership. The ASF licenses this file to you under the Apache
+ * License, Version 2.0 (the "License"); you may not use this file
+ * except in compliance with the License. You may obtain a copy of
+ * the License at http://www.apache.org/licenses/LICENSE-2.0 .
+ */
+
+#include <drawingml/fillproperties.hxx>
+
+#include <iterator>
+
+#include <comphelper/propertyvalue.hxx>
+#include <drawingml/graphicproperties.hxx>
+#include <vcl/graph.hxx>
+#include <vcl/BitmapFilter.hxx>
+#include <vcl/BitmapMonochromeFilter.hxx>
+
+#include <com/sun/star/beans/XPropertySet.hpp>
+#include <com/sun/star/awt/Gradient.hpp>
+#include <com/sun/star/text/GraphicCrop.hpp>
+#include <com/sun/star/awt/Size.hpp>
+#include <com/sun/star/drawing/BitmapMode.hpp>
+#include <com/sun/star/drawing/ColorMode.hpp>
+#include <com/sun/star/drawing/FillStyle.hpp>
+#include <com/sun/star/drawing/RectanglePoint.hpp>
+#include <com/sun/star/graphic/XGraphicTransformer.hpp>
+#include <oox/helper/graphichelper.hxx>
+#include <oox/drawingml/drawingmltypes.hxx>
+#include <oox/drawingml/shapepropertymap.hxx>
+#include <drawingml/hatchmap.hxx>
+#include <oox/token/namespaces.hxx>
+#include <oox/token/properties.hxx>
+#include <oox/token/tokens.hxx>
+#include <osl/diagnose.h>
+#include <sal/log.hxx>
+
+using namespace ::com::sun::star;
+using namespace ::com::sun::star::drawing;
+using namespace ::com::sun::star::graphic;
+
+using ::com::sun::star::uno::Reference;
+using ::com::sun::star::uno::Exception;
+using ::com::sun::star::uno::UNO_QUERY_THROW;
+using ::com::sun::star::geometry::IntegerRectangle2D;
+
+namespace oox::drawingml {
+
+namespace {
+
+Reference< XGraphic > lclCheckAndApplyDuotoneTransform(const BlipFillProperties& aBlipProps, uno::Reference<graphic::XGraphic> const & xGraphic,
+ const GraphicHelper& rGraphicHelper, const ::Color nPhClr)
+{
+ if (aBlipProps.maDuotoneColors[0].isUsed() && aBlipProps.maDuotoneColors[1].isUsed())
+ {
+ ::Color nColor1 = aBlipProps.maDuotoneColors[0].getColor( rGraphicHelper, nPhClr );
+ ::Color nColor2 = aBlipProps.maDuotoneColors[1].getColor( rGraphicHelper, nPhClr );
+
+ uno::Reference<graphic::XGraphicTransformer> xTransformer(aBlipProps.mxFillGraphic, uno::UNO_QUERY);
+ if (xTransformer.is())
+ return xTransformer->applyDuotone(xGraphic, sal_Int32(nColor1), sal_Int32(nColor2));
+ }
+ return xGraphic;
+}
+
+Reference< XGraphic > lclRotateGraphic(uno::Reference<graphic::XGraphic> const & xGraphic, Degree10 nRotation)
+{
+ ::Graphic aGraphic(xGraphic);
+ ::Graphic aReturnGraphic;
+
+ assert (aGraphic.GetType() == GraphicType::Bitmap);
+
+ BitmapEx aBitmapEx(aGraphic.GetBitmapEx());
+ const ::Color& aColor = ::Color(0x00);
+ aBitmapEx.Rotate(nRotation, aColor);
+ aReturnGraphic = ::Graphic(aBitmapEx);
+ aReturnGraphic.setOriginURL(aGraphic.getOriginURL());
+
+ return aReturnGraphic.GetXGraphic();
+}
+
+using Quotients = std::tuple<double, double, double, double>;
+Quotients getQuotients(geometry::IntegerRectangle2D aRelRect, double hDiv, double vDiv)
+{
+ return { aRelRect.X1 / hDiv, aRelRect.Y1 / vDiv, aRelRect.X2 / hDiv, aRelRect.Y2 / vDiv };
+}
+
+// ECMA-376 Part 1 20.1.8.55 srcRect (Source Rectangle)
+std::optional<Quotients> CropQuotientsFromSrcRect(geometry::IntegerRectangle2D aSrcRect)
+{
+ aSrcRect.X1 = std::max(aSrcRect.X1, sal_Int32(0));
+ aSrcRect.X2 = std::max(aSrcRect.X2, sal_Int32(0));
+ aSrcRect.Y1 = std::max(aSrcRect.Y1, sal_Int32(0));
+ aSrcRect.Y2 = std::max(aSrcRect.Y2, sal_Int32(0));
+ if (aSrcRect.X1 + aSrcRect.X2 >= 100'000 || aSrcRect.Y1 + aSrcRect.Y2 >= 100'000)
+ return {}; // Cropped everything
+ return getQuotients(aSrcRect, 100'000.0, 100'000.0);
+}
+
+// ECMA-376 Part 1 20.1.8.30 fillRect (Fill Rectangle)
+std::optional<Quotients> CropQuotientsFromFillRect(geometry::IntegerRectangle2D aFillRect)
+{
+ aFillRect.X1 = std::min(aFillRect.X1, sal_Int32(0));
+ aFillRect.X2 = std::min(aFillRect.X2, sal_Int32(0));
+ aFillRect.Y1 = std::min(aFillRect.Y1, sal_Int32(0));
+ aFillRect.Y2 = std::min(aFillRect.Y2, sal_Int32(0));
+ // Negative divisor and negative relative offset give positive value wanted in lclCropGraphic
+ return getQuotients(aFillRect, -100'000.0 + aFillRect.X1 + aFillRect.X2,
+ -100'000.0 + aFillRect.Y1 + aFillRect.Y2);
+}
+
+// Crops a piece of the bitmap. lclCropGraphic doesn't handle growing.
+Reference<XGraphic> lclCropGraphic(uno::Reference<graphic::XGraphic> const& xGraphic,
+ std::optional<Quotients> quotients)
+{
+ ::Graphic aGraphic(xGraphic);
+ assert (aGraphic.GetType() == GraphicType::Bitmap);
+
+ BitmapEx aBitmapEx;
+ if (quotients)
+ {
+ aBitmapEx = aGraphic.GetBitmapEx();
+
+ const Size bmpSize = aBitmapEx.GetSizePixel();
+ const auto& [qx1, qy1, qx2, qy2] = *quotients;
+ const tools::Long l = std::round(bmpSize.Width() * qx1);
+ const tools::Long t = std::round(bmpSize.Height() * qy1);
+ const tools::Long r = std::round(bmpSize.Width() * qx2);
+ const tools::Long b = std::round(bmpSize.Height() * qy2);
+
+ aBitmapEx.Crop({ l, t, bmpSize.Width() - r - 1, bmpSize.Height() - b - 1 });
+ }
+
+ ::Graphic aReturnGraphic(aBitmapEx);
+ aReturnGraphic.setOriginURL(aGraphic.getOriginURL());
+
+ return aReturnGraphic.GetXGraphic();
+}
+
+Reference< XGraphic > lclMirrorGraphic(uno::Reference<graphic::XGraphic> const & xGraphic, bool bFlipH, bool bFlipV)
+{
+ ::Graphic aGraphic(xGraphic);
+ ::Graphic aReturnGraphic;
+
+ assert (aGraphic.GetType() == GraphicType::Bitmap);
+
+ BitmapEx aBitmapEx(aGraphic.GetBitmapEx());
+ BmpMirrorFlags nMirrorFlags = BmpMirrorFlags::NONE;
+
+ if(bFlipH)
+ nMirrorFlags |= BmpMirrorFlags::Horizontal;
+ if(bFlipV)
+ nMirrorFlags |= BmpMirrorFlags::Vertical;
+
+ aBitmapEx.Mirror(nMirrorFlags);
+
+ aReturnGraphic = ::Graphic(aBitmapEx);
+ aReturnGraphic.setOriginURL(aGraphic.getOriginURL());
+
+ return aReturnGraphic.GetXGraphic();
+}
+
+Reference< XGraphic > lclGreysScaleGraphic(uno::Reference<graphic::XGraphic> const & xGraphic)
+{
+ ::Graphic aGraphic(xGraphic);
+ ::Graphic aReturnGraphic;
+
+ assert (aGraphic.GetType() == GraphicType::Bitmap);
+
+ BitmapEx aBitmapEx(aGraphic.GetBitmapEx());
+ aBitmapEx.Convert(BmpConversion::N8BitGreys);
+
+ aReturnGraphic = ::Graphic(aBitmapEx);
+ aReturnGraphic.setOriginURL(aGraphic.getOriginURL());
+
+ return aReturnGraphic.GetXGraphic();
+}
+
+/// Applies the graphic Black&White (Monochrome) effect with the imported threshold
+Reference<XGraphic> lclApplyBlackWhiteEffect(const BlipFillProperties& aBlipProps,
+ const uno::Reference<graphic::XGraphic>& xGraphic)
+{
+ const auto& oBiLevelThreshold = aBlipProps.moBiLevelThreshold;
+ if (oBiLevelThreshold.has())
+ {
+ sal_uInt8 nThreshold
+ = static_cast<sal_uInt8>(oBiLevelThreshold.get() * 255 / MAX_PERCENT);
+
+ ::Graphic aGraphic(xGraphic);
+ ::Graphic aReturnGraphic;
+
+ BitmapEx aBitmapEx(aGraphic.GetBitmapEx());
+ AlphaMask aMask(aBitmapEx.GetAlpha());
+
+ BitmapEx aTmpBmpEx(aBitmapEx.GetBitmap());
+ BitmapFilter::Filter(aTmpBmpEx, BitmapMonochromeFilter{ nThreshold });
+
+ aReturnGraphic = ::Graphic(BitmapEx(aTmpBmpEx.GetBitmap(), aMask));
+ aReturnGraphic.setOriginURL(aGraphic.getOriginURL());
+ return aReturnGraphic.GetXGraphic();
+ }
+ return xGraphic;
+}
+
+Reference< XGraphic > lclCheckAndApplyChangeColorTransform(const BlipFillProperties &aBlipProps, uno::Reference<graphic::XGraphic> const & xGraphic,
+ const GraphicHelper& rGraphicHelper, const ::Color nPhClr)
+{
+ if( aBlipProps.maColorChangeFrom.isUsed() && aBlipProps.maColorChangeTo.isUsed() )
+ {
+ ::Color nFromColor = aBlipProps.maColorChangeFrom.getColor( rGraphicHelper, nPhClr );
+ ::Color nToColor = aBlipProps.maColorChangeTo.getColor( rGraphicHelper, nPhClr );
+ if ( (nFromColor != nToColor) || aBlipProps.maColorChangeTo.hasTransparency() )
+ {
+ sal_Int16 nToTransparence = aBlipProps.maColorChangeTo.getTransparency();
+ sal_Int8 nToAlpha = static_cast< sal_Int8 >( (100 - nToTransparence) * 2.55 );
+
+ sal_uInt8 nTolerance = 9;
+ Graphic aGraphic{ xGraphic };
+ if( aGraphic.IsGfxLink() )
+ {
+ // tdf#149670: Try to guess tolerance depending on image format
+ switch (aGraphic.GetGfxLink().GetType())
+ {
+ case GfxLinkType::NativeJpg:
+ nTolerance = 15;
+ break;
+ case GfxLinkType::NativePng:
+ case GfxLinkType::NativeTif:
+ nTolerance = 1;
+ break;
+ case GfxLinkType::NativeBmp:
+ nTolerance = 0;
+ break;
+ default:
+ break;
+ }
+ }
+
+ uno::Reference<graphic::XGraphicTransformer> xTransformer(aBlipProps.mxFillGraphic, uno::UNO_QUERY);
+ if (xTransformer.is())
+ return xTransformer->colorChange(xGraphic, sal_Int32(nFromColor), nTolerance, sal_Int32(nToColor), nToAlpha);
+ }
+ }
+ return xGraphic;
+}
+
+uno::Reference<graphic::XGraphic> applyBrightnessContrast(uno::Reference<graphic::XGraphic> const & xGraphic, sal_Int32 brightness, sal_Int32 contrast)
+{
+ uno::Reference<graphic::XGraphicTransformer> xTransformer(xGraphic, uno::UNO_QUERY);
+ if (xTransformer.is())
+ return xTransformer->applyBrightnessContrast(xGraphic, brightness, contrast, true);
+ return xGraphic;
+}
+
+BitmapMode lclGetBitmapMode( sal_Int32 nToken )
+{
+ OSL_ASSERT((nToken & sal_Int32(0xFFFF0000))==0);
+ switch( nToken )
+ {
+ case XML_tile: return BitmapMode_REPEAT;
+ case XML_stretch: return BitmapMode_STRETCH;
+ }
+
+ // tdf#128596 Default value is XML_tile for MSO.
+ return BitmapMode_REPEAT;
+}
+
+RectanglePoint lclGetRectanglePoint( sal_Int32 nToken )
+{
+ OSL_ASSERT((nToken & sal_Int32(0xFFFF0000))==0);
+ switch( nToken )
+ {
+ case XML_tl: return RectanglePoint_LEFT_TOP;
+ case XML_t: return RectanglePoint_MIDDLE_TOP;
+ case XML_tr: return RectanglePoint_RIGHT_TOP;
+ case XML_l: return RectanglePoint_LEFT_MIDDLE;
+ case XML_ctr: return RectanglePoint_MIDDLE_MIDDLE;
+ case XML_r: return RectanglePoint_RIGHT_MIDDLE;
+ case XML_bl: return RectanglePoint_LEFT_BOTTOM;
+ case XML_b: return RectanglePoint_MIDDLE_BOTTOM;
+ case XML_br: return RectanglePoint_RIGHT_BOTTOM;
+ }
+ return RectanglePoint_LEFT_TOP;
+}
+
+awt::Size lclGetOriginalSize( const GraphicHelper& rGraphicHelper, const Reference< XGraphic >& rxGraphic )
+{
+ awt::Size aSizeHmm( 0, 0 );
+ try
+ {
+ Reference< beans::XPropertySet > xGraphicPropertySet( rxGraphic, UNO_QUERY_THROW );
+ if( xGraphicPropertySet->getPropertyValue( "Size100thMM" ) >>= aSizeHmm )
+ {
+ if( !aSizeHmm.Width && !aSizeHmm.Height )
+ { // MAPMODE_PIXEL USED :-(
+ awt::Size aSourceSizePixel( 0, 0 );
+ if( xGraphicPropertySet->getPropertyValue( "SizePixel" ) >>= aSourceSizePixel )
+ aSizeHmm = rGraphicHelper.convertScreenPixelToHmm( aSourceSizePixel );
+ }
+ }
+ }
+ catch( Exception& )
+ {
+ }
+ return aSizeHmm;
+}
+
+/**
+ * Looks for a last gradient transition and possibly sets a gradient border
+ * based on that.
+ */
+void extractGradientBorderFromStops(const GradientFillProperties& rGradientProps,
+ const GraphicHelper& rGraphicHelper, ::Color nPhClr,
+ awt::Gradient& rGradient)
+{
+ if (rGradientProps.maGradientStops.size() <= 1)
+ return;
+
+ auto it = rGradientProps.maGradientStops.rbegin();
+ double fLastPos = it->first;
+ Color aLastColor = it->second;
+ ++it;
+ double fLastButOnePos = it->first;
+ Color aLastButOneColor = it->second;
+ if (!aLastColor.equals(aLastButOneColor, rGraphicHelper, nPhClr))
+ return;
+
+ // Last transition has the same color, we can map that to a border.
+ rGradient.Border = rtl::math::round((fLastPos - fLastButOnePos) * 100);
+}
+
+} // namespace
+
+void GradientFillProperties::assignUsed( const GradientFillProperties& rSourceProps )
+{
+ if( !rSourceProps.maGradientStops.empty() )
+ maGradientStops = rSourceProps.maGradientStops;
+ moFillToRect.assignIfUsed( rSourceProps.moFillToRect );
+ moTileRect.assignIfUsed( rSourceProps.moTileRect );
+ moGradientPath.assignIfUsed( rSourceProps.moGradientPath );
+ moShadeAngle.assignIfUsed( rSourceProps.moShadeAngle );
+ moShadeFlip.assignIfUsed( rSourceProps.moShadeFlip );
+ moShadeScaled.assignIfUsed( rSourceProps.moShadeScaled );
+ moRotateWithShape.assignIfUsed( rSourceProps.moRotateWithShape );
+}
+
+void PatternFillProperties::assignUsed( const PatternFillProperties& rSourceProps )
+{
+ maPattFgColor.assignIfUsed( rSourceProps.maPattFgColor );
+ maPattBgColor.assignIfUsed( rSourceProps.maPattBgColor );
+ moPattPreset.assignIfUsed( rSourceProps.moPattPreset );
+}
+
+void BlipFillProperties::assignUsed( const BlipFillProperties& rSourceProps )
+{
+ if(rSourceProps.mxFillGraphic.is())
+ mxFillGraphic = rSourceProps.mxFillGraphic;
+ moBitmapMode.assignIfUsed( rSourceProps.moBitmapMode );
+ moFillRect.assignIfUsed( rSourceProps.moFillRect );
+ moTileOffsetX.assignIfUsed( rSourceProps.moTileOffsetX );
+ moTileOffsetY.assignIfUsed( rSourceProps.moTileOffsetY );
+ moTileScaleX.assignIfUsed( rSourceProps.moTileScaleX );
+ moTileScaleY.assignIfUsed( rSourceProps.moTileScaleY );
+ moTileAlign.assignIfUsed( rSourceProps.moTileAlign );
+ moTileFlip.assignIfUsed( rSourceProps.moTileFlip );
+ moRotateWithShape.assignIfUsed( rSourceProps.moRotateWithShape );
+ moColorEffect.assignIfUsed( rSourceProps.moColorEffect );
+ moBrightness.assignIfUsed( rSourceProps.moBrightness );
+ moContrast.assignIfUsed( rSourceProps.moContrast );
+ moBiLevelThreshold.assignIfUsed( rSourceProps.moBiLevelThreshold );
+ maColorChangeFrom.assignIfUsed( rSourceProps.maColorChangeFrom );
+ maColorChangeTo.assignIfUsed( rSourceProps.maColorChangeTo );
+ maDuotoneColors[0].assignIfUsed( rSourceProps.maDuotoneColors[0] );
+ maDuotoneColors[1].assignIfUsed( rSourceProps.maDuotoneColors[1] );
+ maEffect.assignUsed( rSourceProps.maEffect );
+ moAlphaModFix.assignIfUsed(rSourceProps.moAlphaModFix);
+}
+
+void FillProperties::assignUsed( const FillProperties& rSourceProps )
+{
+ moFillType.assignIfUsed( rSourceProps.moFillType );
+ maFillColor.assignIfUsed( rSourceProps.maFillColor );
+ moUseBgFill.assignIfUsed( rSourceProps.moUseBgFill );
+ maGradientProps.assignUsed( rSourceProps.maGradientProps );
+ maPatternProps.assignUsed( rSourceProps.maPatternProps );
+ maBlipProps.assignUsed( rSourceProps.maBlipProps );
+}
+
+Color FillProperties::getBestSolidColor() const
+{
+ Color aSolidColor;
+ if( moFillType.has() ) switch( moFillType.get() )
+ {
+ case XML_solidFill:
+ aSolidColor = maFillColor;
+ break;
+ case XML_gradFill:
+ if( !maGradientProps.maGradientStops.empty() )
+ {
+ GradientFillProperties::GradientStopMap::const_iterator aGradientStop =
+ maGradientProps.maGradientStops.begin();
+ if (maGradientProps.maGradientStops.size() > 2)
+ ++aGradientStop;
+ aSolidColor = aGradientStop->second;
+ }
+ break;
+ case XML_pattFill:
+ aSolidColor = maPatternProps.maPattBgColor.isUsed() ? maPatternProps.maPattBgColor : maPatternProps.maPattFgColor;
+ break;
+ }
+ return aSolidColor;
+}
+
+void FillProperties::pushToPropMap( ShapePropertyMap& rPropMap,
+ const GraphicHelper& rGraphicHelper, sal_Int32 nShapeRotation, ::Color nPhClr, sal_Int16 nPhClrTheme,
+ bool bFlipH, bool bFlipV, bool bIsCustomShape) const
+{
+ if( !moFillType.has() )
+ return;
+
+ FillStyle eFillStyle = FillStyle_NONE;
+ OSL_ASSERT((moFillType.get() & sal_Int32(0xFFFF0000))==0);
+ switch( moFillType.get() )
+ {
+ case XML_noFill:
+ {
+ eFillStyle = FillStyle_NONE;
+ rPropMap.setProperty(ShapeProperty::FillUseSlideBackground, moUseBgFill.get(false));
+ }
+ break;
+
+ case XML_solidFill:
+ if( maFillColor.isUsed() )
+ {
+ ::Color aFillColor = maFillColor.getColor(rGraphicHelper, nPhClr);
+ rPropMap.setProperty(ShapeProperty::FillColor, aFillColor);
+ if( maFillColor.hasTransparency() )
+ rPropMap.setProperty( ShapeProperty::FillTransparency, maFillColor.getTransparency() );
+
+ if (aFillColor == nPhClr)
+ {
+ rPropMap.setProperty(PROP_FillColorTheme, nPhClrTheme);
+ }
+ else if (maFillColor.getTintOrShade() == 0)
+ {
+ rPropMap.setProperty(PROP_FillColorTheme, maFillColor.getSchemeColorIndex());
+ rPropMap.setProperty(PROP_FillColorLumMod, maFillColor.getLumMod());
+ rPropMap.setProperty(PROP_FillColorLumOff, maFillColor.getLumOff());
+ }
+
+ eFillStyle = FillStyle_SOLID;
+ }
+ break;
+
+ case XML_gradFill:
+ // do not create gradient struct if property is not supported...
+ if( rPropMap.supportsProperty( ShapeProperty::FillGradient ) )
+ {
+ sal_Int32 nEndTrans = 0;
+ sal_Int32 nStartTrans = 0;
+ awt::Gradient aGradient;
+ aGradient.Angle = 900;
+ aGradient.StartIntensity = 100;
+ aGradient.EndIntensity = 100;
+
+ // Old code, values in aGradient overwritten in many cases by newer code below
+ if( maGradientProps.maGradientStops.size() > 1 )
+ {
+ aGradient.StartColor = sal_Int32(maGradientProps.maGradientStops.begin()->second.getColor( rGraphicHelper, nPhClr ));
+ aGradient.EndColor = sal_Int32(maGradientProps.maGradientStops.rbegin()->second.getColor( rGraphicHelper, nPhClr ));
+ if( maGradientProps.maGradientStops.rbegin()->second.hasTransparency() )
+ nEndTrans = maGradientProps.maGradientStops.rbegin()->second.getTransparency()*255/100;
+ if( maGradientProps.maGradientStops.begin()->second.hasTransparency() )
+ nStartTrans = maGradientProps.maGradientStops.begin()->second.getTransparency()*255/100;
+ }
+
+ // "rotate with shape" set to false -> do not rotate
+ if ( !maGradientProps.moRotateWithShape.get( true ) )
+ nShapeRotation = 0;
+
+ if( maGradientProps.moGradientPath.has() )
+ {
+ IntegerRectangle2D aFillToRect = maGradientProps.moFillToRect.get( IntegerRectangle2D( 0, 0, MAX_PERCENT, MAX_PERCENT ) );
+ sal_Int32 nCenterX = (MAX_PERCENT + aFillToRect.X1 - aFillToRect.X2) / 2;
+ aGradient.XOffset = getLimitedValue<sal_Int16, sal_Int32>(
+ nCenterX / PER_PERCENT, 0, 100);
+ sal_Int32 nCenterY = (MAX_PERCENT + aFillToRect.Y1 - aFillToRect.Y2) / 2;
+ aGradient.YOffset = getLimitedValue<sal_Int16, sal_Int32>(
+ nCenterY / PER_PERCENT, 0, 100);
+
+ if( maGradientProps.moGradientPath.get() == XML_circle )
+ {
+ // Style should be radial at least when the horizontal center is at 50%.
+ // Otherwise import as a linear gradient, because it is the most similar to the MSO radial style.
+ aGradient.Style = awt::GradientStyle_LINEAR;
+ if( aGradient.XOffset == 100 && aGradient.YOffset == 100 )
+ aGradient.Angle = 450;
+ else if( aGradient.XOffset == 0 && aGradient.YOffset == 100 )
+ aGradient.Angle = 3150;
+ else if( aGradient.XOffset == 100 && aGradient.YOffset == 0 )
+ aGradient.Angle = 1350;
+ else if( aGradient.XOffset == 0 && aGradient.YOffset == 0 )
+ aGradient.Angle = 2250;
+ else
+ aGradient.Style = awt::GradientStyle_RADIAL;
+ }
+ else
+ {
+ aGradient.Style = awt::GradientStyle_RECT;
+ }
+
+ ::std::swap( aGradient.StartColor, aGradient.EndColor );
+ ::std::swap( nStartTrans, nEndTrans );
+
+ extractGradientBorderFromStops(maGradientProps, rGraphicHelper, nPhClr,
+ aGradient);
+ }
+ else if (!maGradientProps.maGradientStops.empty())
+ {
+ // A copy of the gradient stops for local modification
+ GradientFillProperties::GradientStopMap aGradientStops(maGradientProps.maGradientStops);
+
+ // Add a fake gradient stop at 0% and 100% if necessary, so that the gradient always starts
+ // at 0% and ends at 100%, to make following logic clearer (?).
+ auto a0 = aGradientStops.find( 0.0 );
+ if( a0 == aGradientStops.end() )
+ {
+ // temp variable required
+ Color aFirstColor(aGradientStops.begin()->second);
+ aGradientStops.emplace( 0.0, aFirstColor );
+ }
+
+ auto a1 = aGradientStops.find( 1.0 );
+ if( a1 == aGradientStops.end() )
+ {
+ // ditto
+ Color aLastColor(aGradientStops.rbegin()->second);
+ aGradientStops.emplace( 1.0, aLastColor );
+ }
+
+ // Check if the gradient is symmetric, which we will emulate with an "axial" gradient.
+ bool bSymmetric(true);
+ {
+ GradientFillProperties::GradientStopMap::const_iterator aItA( aGradientStops.begin() );
+ GradientFillProperties::GradientStopMap::const_iterator aItZ(std::prev(aGradientStops.end()));
+ assert(aItZ != aGradientStops.end());
+ while( bSymmetric && aItA->first < aItZ->first )
+ {
+ if (!aItA->second.equals(aItZ->second, rGraphicHelper, nPhClr))
+ bSymmetric = false;
+ else
+ {
+ ++aItA;
+ aItZ = std::prev(aItZ);
+ }
+ }
+ // Don't be fooled if the middlemost stop isn't at 0.5.
+ if( bSymmetric && aItA == aItZ && aItA->first != 0.5 )
+ bSymmetric = false;
+
+ // If symmetric, do the rest of the logic for just a half.
+ if( bSymmetric )
+ {
+ // aItZ already points to the colour for the middle, but insert a fake stop at the
+ // exact middle if necessary.
+ if( aItA->first != aItZ->first )
+ {
+ Color aMiddleColor = aItZ->second;
+ auto a05 = aGradientStops.find( 0.5 );
+
+ if( a05 != aGradientStops.end() )
+ a05->second = aMiddleColor;
+ else
+ aGradientStops.emplace( 0.5, aMiddleColor );
+ }
+ // Drop the rest of the stops
+ while( aGradientStops.rbegin()->first > 0.5 )
+ aGradientStops.erase( aGradientStops.rbegin()->first );
+ }
+ }
+
+ SAL_INFO("oox.drawingml.gradient", "symmetric: " << (bSymmetric ? "YES" : "NO") <<
+ ", number of stops: " << aGradientStops.size());
+ size_t nIndex = 0;
+ for (auto const& gradientStop : aGradientStops)
+ SAL_INFO("oox.drawingml.gradient", " " << nIndex++ << ": " <<
+ gradientStop.first << ": " <<
+ std::hex << sal_Int32(gradientStop.second.getColor( rGraphicHelper, nPhClr )) << std::dec <<
+ "@" << (100 - gradientStop.second.getTransparency()) << "%");
+
+ // Now estimate the simple LO style gradient (only two stops, at n% and 100%, where n ==
+ // the "border") that best emulates the gradient between begin() and prior(end()).
+
+ // First look for the largest segment in the gradient.
+ GradientFillProperties::GradientStopMap::iterator aIt(aGradientStops.begin());
+ double nWidestWidth = -1;
+ GradientFillProperties::GradientStopMap::iterator aWidestSegmentStart;
+ ++aIt;
+ while( aIt != aGradientStops.end() )
+ {
+ if (aIt->first - std::prev(aIt)->first > nWidestWidth)
+ {
+ nWidestWidth = aIt->first - std::prev(aIt)->first;
+ aWidestSegmentStart = std::prev(aIt);
+ }
+ ++aIt;
+ }
+ assert( nWidestWidth > 0 );
+
+ double nBorder = 0;
+ bool bSwap(false);
+
+ // Do we have just two segments, and either one is of uniform colour, or three or more
+ // segments, and the widest one is the first or last one, and is it of uniform colour? If
+ // so, deduce the border from it, and drop that segment.
+ if( aGradientStops.size() == 3 &&
+ aGradientStops.begin()->second.getColor(rGraphicHelper, nPhClr) == std::next(aGradientStops.begin())->second.getColor(rGraphicHelper, nPhClr) &&
+ aGradientStops.begin()->second.getTransparency() == std::next(aGradientStops.begin())->second.getTransparency())
+ {
+ // Two segments, first is uniformly coloured
+ SAL_INFO("oox.drawingml.gradient", "two segments, first is uniformly coloured");
+ nBorder = std::next(aGradientStops.begin())->first - aGradientStops.begin()->first;
+ aGradientStops.erase(aGradientStops.begin());
+ aWidestSegmentStart = aGradientStops.begin();
+ }
+ else if( !bSymmetric &&
+ aGradientStops.size() == 3 &&
+ std::next(aGradientStops.begin())->second.getColor(rGraphicHelper, nPhClr) == std::prev(aGradientStops.end())->second.getColor(rGraphicHelper, nPhClr) &&
+ std::next(aGradientStops.begin())->second.getTransparency() == std::prev(aGradientStops.end())->second.getTransparency())
+ {
+ // Two segments, second is uniformly coloured
+ SAL_INFO("oox.drawingml.gradient", "two segments, second is uniformly coloured");
+ auto aNext = std::next(aGradientStops.begin());
+ auto aPrev = std::prev(aGradientStops.end());
+ assert(aPrev != aGradientStops.end());
+ nBorder = aPrev->first - aNext->first;
+ aGradientStops.erase(aNext);
+ aWidestSegmentStart = aGradientStops.begin();
+ bSwap = true;
+ nShapeRotation = 180*60000 - nShapeRotation;
+ }
+ else if( !bSymmetric &&
+ aGradientStops.size() >= 4 &&
+ aWidestSegmentStart->second.getColor( rGraphicHelper, nPhClr ) == std::next(aWidestSegmentStart)->second.getColor(rGraphicHelper, nPhClr) &&
+ aWidestSegmentStart->second.getTransparency() == std::next(aWidestSegmentStart)->second.getTransparency() &&
+ ( aWidestSegmentStart == aGradientStops.begin() ||
+ std::next(aWidestSegmentStart) == std::prev(aGradientStops.end())))
+ {
+ // Not symmetric, three or more segments, the widest is first or last and is uniformly coloured
+ SAL_INFO("oox.drawingml.gradient", "first or last segment is widest and is uniformly coloured");
+ nBorder = std::next(aWidestSegmentStart)->first - aWidestSegmentStart->first;
+
+ // If it's the last segment that is uniformly coloured, rotate the gradient 180
+ // degrees and swap start and end colours
+ if (std::next(aWidestSegmentStart) == std::prev(aGradientStops.end()))
+ {
+ bSwap = true;
+ nShapeRotation = 180*60000 - nShapeRotation;
+ }
+
+ aGradientStops.erase( aWidestSegmentStart++ );
+
+ // Look for which is widest now
+ aIt = std::next(aGradientStops.begin());
+ nWidestWidth = -1;
+ while( aIt != aGradientStops.end() )
+ {
+ if (aIt->first - std::prev(aIt)->first > nWidestWidth)
+ {
+ nWidestWidth = aIt->first - std::prev(aIt)->first;
+ aWidestSegmentStart = std::prev(aIt);
+ }
+ ++aIt;
+ }
+ }
+ SAL_INFO("oox.drawingml.gradient", "widest segment start: " << aWidestSegmentStart->first << ", border: " << nBorder);
+ assert( (!bSymmetric && !bSwap) || !(bSymmetric && bSwap) );
+
+ // Now we have a potential border and a largest segment. Use those.
+
+ aGradient.Style = bSymmetric ? awt::GradientStyle_AXIAL : awt::GradientStyle_LINEAR;
+ sal_Int32 nShadeAngle = maGradientProps.moShadeAngle.get( 0 );
+ // Adjust for flips
+ if ( bFlipH )
+ nShadeAngle = 180*60000 - nShadeAngle;
+ if ( bFlipV )
+ nShadeAngle = -nShadeAngle;
+ sal_Int32 nDmlAngle = nShadeAngle + nShapeRotation;
+ // convert DrawingML angle (in 1/60000 degrees) to API angle (in 1/10 degrees)
+ aGradient.Angle = static_cast< sal_Int16 >( (8100 - (nDmlAngle / (PER_DEGREE / 10))) % 3600 );
+ Color aStartColor, aEndColor;
+
+ // Make a note where the widest segment stops, because we will try to grow it next.
+ auto aWidestSegmentEnd = std::next(aWidestSegmentStart);
+
+ // Try to grow the widest segment backwards: if a previous segment has the same
+ // color, just different transparency, include it.
+ while (aWidestSegmentStart != aGradientStops.begin())
+ {
+ auto it = std::prev(aWidestSegmentStart);
+ if (it->second.getColor(rGraphicHelper, nPhClr)
+ != aWidestSegmentStart->second.getColor(rGraphicHelper, nPhClr))
+ {
+ break;
+ }
+
+ aWidestSegmentStart = it;
+ }
+
+ // Try to grow the widest segment forward: if a next segment has the same
+ // color, just different transparency, include it.
+ while (aWidestSegmentEnd != std::prev(aGradientStops.end()))
+ {
+ auto it = std::next(aWidestSegmentEnd);
+ if (it->second.getColor(rGraphicHelper, nPhClr)
+ != aWidestSegmentEnd->second.getColor(rGraphicHelper, nPhClr))
+ {
+ break;
+ }
+
+ aWidestSegmentEnd = it;
+ }
+
+ assert(aWidestSegmentEnd != aGradientStops.end());
+
+ if( bSymmetric )
+ {
+ aStartColor = aWidestSegmentEnd->second;
+ aEndColor = aWidestSegmentStart->second;
+ nBorder *= 2;
+ }
+ else if( bSwap )
+ {
+ aStartColor = aWidestSegmentEnd->second;
+ aEndColor = aWidestSegmentStart->second;
+ }
+ else
+ {
+ aStartColor = aWidestSegmentStart->second;
+ aEndColor = aWidestSegmentEnd->second;
+ }
+
+ SAL_INFO("oox.drawingml.gradient", "start color: " << std::hex << sal_Int32(aStartColor.getColor( rGraphicHelper, nPhClr )) << std::dec <<
+ "@" << (100-aStartColor.getTransparency()) << "%"
+ ", end color: " << std::hex << sal_Int32(aEndColor.getColor( rGraphicHelper, nPhClr )) << std::dec <<
+ "@" << (100-aEndColor.getTransparency()) << "%");
+
+ aGradient.StartColor = sal_Int32(aStartColor.getColor( rGraphicHelper, nPhClr ));
+ aGradient.EndColor = sal_Int32(aEndColor.getColor( rGraphicHelper, nPhClr ));
+
+ nStartTrans = aStartColor.hasTransparency() ? aStartColor.getTransparency()*255/100 : 0;
+ nEndTrans = aEndColor.hasTransparency() ? aEndColor.getTransparency()*255/100 : 0;
+
+ aGradient.Border = rtl::math::round(100*nBorder);
+ }
+
+ // push gradient or named gradient to property map
+ if( rPropMap.setProperty( ShapeProperty::FillGradient, aGradient ) )
+ eFillStyle = FillStyle_GRADIENT;
+
+ // push gradient transparency to property map
+ if( nStartTrans != 0 || nEndTrans != 0 )
+ {
+ awt::Gradient aGrad(aGradient);
+ uno::Any aVal;
+ aGrad.EndColor = static_cast<sal_Int32>( nEndTrans | nEndTrans << 8 | nEndTrans << 16 );
+ aGrad.StartColor = static_cast<sal_Int32>( nStartTrans | nStartTrans << 8 | nStartTrans << 16 );
+ aVal <<= aGrad;
+ rPropMap.setProperty( ShapeProperty::GradientTransparency, aGrad );
+ }
+
+ }
+ break;
+
+ case XML_blipFill:
+ // do not start complex graphic transformation if property is not supported...
+ if (maBlipProps.mxFillGraphic.is() && rPropMap.supportsProperty(ShapeProperty::FillBitmap))
+ {
+ uno::Reference<graphic::XGraphic> xGraphic = lclCheckAndApplyDuotoneTransform(maBlipProps, maBlipProps.mxFillGraphic, rGraphicHelper, nPhClr);
+ // TODO: "rotate with shape" is not possible with our current core
+
+ if (xGraphic.is())
+ {
+ if (maBlipProps.moColorEffect.get(XML_TOKEN_INVALID) == XML_grayscl)
+ xGraphic = lclGreysScaleGraphic(xGraphic);
+
+ if (rPropMap.supportsProperty(ShapeProperty::FillBitmapName) &&
+ rPropMap.setProperty(ShapeProperty::FillBitmapName, xGraphic))
+ {
+ eFillStyle = FillStyle_BITMAP;
+ }
+ else if (rPropMap.setProperty(ShapeProperty::FillBitmap, xGraphic))
+ {
+ eFillStyle = FillStyle_BITMAP;
+ }
+ }
+
+ // set other bitmap properties, if bitmap has been inserted into the map
+ if( eFillStyle == FillStyle_BITMAP )
+ {
+ // bitmap mode (single, repeat, stretch)
+ BitmapMode eBitmapMode = lclGetBitmapMode( maBlipProps.moBitmapMode.get( XML_TOKEN_INVALID ) );
+ rPropMap.setProperty( ShapeProperty::FillBitmapMode, eBitmapMode );
+
+ // additional settings for repeated bitmap
+ if( eBitmapMode == BitmapMode_REPEAT )
+ {
+ // anchor position inside bitmap
+ RectanglePoint eRectPoint = lclGetRectanglePoint( maBlipProps.moTileAlign.get( XML_tl ) );
+ rPropMap.setProperty( ShapeProperty::FillBitmapRectanglePoint, eRectPoint );
+
+ awt::Size aOriginalSize = lclGetOriginalSize(rGraphicHelper, maBlipProps.mxFillGraphic);
+ if( (aOriginalSize.Width > 0) && (aOriginalSize.Height > 0) )
+ {
+ // size of one bitmap tile (given as 1/1000 percent of bitmap size), convert to 1/100 mm
+ double fScaleX = maBlipProps.moTileScaleX.get( MAX_PERCENT ) / static_cast< double >( MAX_PERCENT );
+ sal_Int32 nFillBmpSizeX = getLimitedValue< sal_Int32, double >( aOriginalSize.Width * fScaleX, 1, SAL_MAX_INT32 );
+ rPropMap.setProperty( ShapeProperty::FillBitmapSizeX, nFillBmpSizeX );
+ double fScaleY = maBlipProps.moTileScaleY.get( MAX_PERCENT ) / static_cast< double >( MAX_PERCENT );
+ sal_Int32 nFillBmpSizeY = getLimitedValue< sal_Int32, double >( aOriginalSize.Height * fScaleY, 1, SAL_MAX_INT32 );
+ rPropMap.setProperty( ShapeProperty::FillBitmapSizeY, nFillBmpSizeY );
+
+ // offset of the first bitmap tile (given as EMUs), convert to percent
+ sal_Int16 nTileOffsetX = getDoubleIntervalValue< sal_Int16 >( std::round( maBlipProps.moTileOffsetX.get( 0 ) / 3.6 / aOriginalSize.Width ), 0, 100 );
+ rPropMap.setProperty( ShapeProperty::FillBitmapOffsetX, nTileOffsetX );
+ sal_Int16 nTileOffsetY = getDoubleIntervalValue< sal_Int16 >( std::round( maBlipProps.moTileOffsetY.get( 0 ) / 3.6 / aOriginalSize.Height ), 0, 100 );
+ rPropMap.setProperty( ShapeProperty::FillBitmapOffsetY, nTileOffsetY );
+ }
+ }
+ else if ( eBitmapMode == BitmapMode_STRETCH && maBlipProps.moFillRect.has() )
+ {
+ geometry::IntegerRectangle2D aFillRect( maBlipProps.moFillRect.get() );
+ awt::Size aOriginalSize( rGraphicHelper.getOriginalSize( xGraphic ) );
+ if ( aOriginalSize.Width && aOriginalSize.Height )
+ {
+ text::GraphicCrop aGraphCrop( 0, 0, 0, 0 );
+ if ( aFillRect.X1 )
+ aGraphCrop.Left = static_cast< sal_Int32 >( ( static_cast< double >( aOriginalSize.Width ) * aFillRect.X1 ) / 100000 );
+ if ( aFillRect.Y1 )
+ aGraphCrop.Top = static_cast< sal_Int32 >( ( static_cast< double >( aOriginalSize.Height ) * aFillRect.Y1 ) / 100000 );
+ if ( aFillRect.X2 )
+ aGraphCrop.Right = static_cast< sal_Int32 >( ( static_cast< double >( aOriginalSize.Width ) * aFillRect.X2 ) / 100000 );
+ if ( aFillRect.Y2 )
+ aGraphCrop.Bottom = static_cast< sal_Int32 >( ( static_cast< double >( aOriginalSize.Height ) * aFillRect.Y2 ) / 100000 );
+
+ bool bHasCropValues = aGraphCrop.Left != 0 || aGraphCrop.Right !=0 || aGraphCrop.Top != 0 || aGraphCrop.Bottom != 0;
+ // Negative GraphicCrop values means "crop" here.
+ bool bNeedCrop = aGraphCrop.Left <= 0 && aGraphCrop.Right <= 0 && aGraphCrop.Top <= 0 && aGraphCrop.Bottom <= 0;
+
+ if(bIsCustomShape && bHasCropValues && bNeedCrop)
+ {
+ // Physically crop the image
+ // In this case, don't set the PROP_GraphicCrop because that
+ // would lead to applying the crop twice after roundtrip
+ xGraphic = lclCropGraphic(xGraphic, CropQuotientsFromFillRect(aFillRect));
+ if (rPropMap.supportsProperty(ShapeProperty::FillBitmapName))
+ rPropMap.setProperty(ShapeProperty::FillBitmapName, xGraphic);
+ else
+ rPropMap.setProperty(ShapeProperty::FillBitmap, xGraphic);
+ }
+ else
+ rPropMap.setProperty(PROP_GraphicCrop, aGraphCrop);
+ }
+ }
+ }
+
+ if (maBlipProps.moAlphaModFix.has())
+ rPropMap.setProperty(ShapeProperty::FillTransparency, static_cast<sal_Int16>(100 - (maBlipProps.moAlphaModFix.get() / PER_PERCENT)));
+ }
+ break;
+
+ case XML_pattFill:
+ {
+ if( rPropMap.supportsProperty( ShapeProperty::FillHatch ) )
+ {
+ Color aColor( maPatternProps.maPattFgColor );
+ if( aColor.isUsed() && maPatternProps.moPattPreset.has() )
+ {
+ eFillStyle = FillStyle_HATCH;
+ rPropMap.setProperty( ShapeProperty::FillHatch, createHatch( maPatternProps.moPattPreset.get(), aColor.getColor( rGraphicHelper, nPhClr ) ) );
+ if( aColor.hasTransparency() )
+ rPropMap.setProperty( ShapeProperty::FillTransparency, aColor.getTransparency() );
+
+ // Set background color for hatch
+ if(maPatternProps.maPattBgColor.isUsed())
+ {
+ aColor = maPatternProps.maPattBgColor;
+ rPropMap.setProperty( ShapeProperty::FillBackground, aColor.getTransparency() != 100 );
+ rPropMap.setProperty( ShapeProperty::FillColor, aColor.getColor( rGraphicHelper, nPhClr ) );
+ }
+ }
+ else if ( maPatternProps.maPattBgColor.isUsed() )
+ {
+ aColor = maPatternProps.maPattBgColor;
+ rPropMap.setProperty( ShapeProperty::FillColor, aColor.getColor( rGraphicHelper, nPhClr ) );
+ if( aColor.hasTransparency() )
+ rPropMap.setProperty( ShapeProperty::FillTransparency, aColor.getTransparency() );
+ eFillStyle = FillStyle_SOLID;
+ }
+ }
+ }
+ break;
+
+ case XML_grpFill:
+ // todo
+ eFillStyle = FillStyle_NONE;
+ break;
+ }
+
+ // set final fill style property
+ rPropMap.setProperty( ShapeProperty::FillStyle, eFillStyle );
+}
+
+void GraphicProperties::pushToPropMap( PropertyMap& rPropMap, const GraphicHelper& rGraphicHelper, bool bFlipH, bool bFlipV) const
+{
+ sal_Int16 nBrightness = getLimitedValue< sal_Int16, sal_Int32 >( maBlipProps.moBrightness.get( 0 ) / PER_PERCENT, -100, 100 );
+ sal_Int16 nContrast = getLimitedValue< sal_Int16, sal_Int32 >( maBlipProps.moContrast.get( 0 ) / PER_PERCENT, -100, 100 );
+ ColorMode eColorMode = ColorMode_STANDARD;
+
+ switch( maBlipProps.moColorEffect.get( XML_TOKEN_INVALID ) )
+ {
+ case XML_biLevel: eColorMode = ColorMode_MONO; break;
+ case XML_grayscl: eColorMode = ColorMode_GREYS; break;
+ }
+
+ if (maBlipProps.mxFillGraphic.is())
+ {
+ // created transformed graphic
+ uno::Reference<graphic::XGraphic> xGraphic = lclCheckAndApplyChangeColorTransform(maBlipProps, maBlipProps.mxFillGraphic, rGraphicHelper, API_RGB_TRANSPARENT);
+ xGraphic = lclCheckAndApplyDuotoneTransform(maBlipProps, xGraphic, rGraphicHelper, API_RGB_TRANSPARENT);
+
+ if( eColorMode == ColorMode_MONO )
+ {
+ // ColorMode_MONO is the same with MSO's biLevel with 50000 (50%) threshold,
+ // when threshold isn't 50000 bake the effect instead.
+ if( maBlipProps.moBiLevelThreshold.get() != 50000 )
+ {
+ xGraphic = lclApplyBlackWhiteEffect(maBlipProps, xGraphic);
+ eColorMode = ColorMode_STANDARD;
+ }
+ }
+
+ if (eColorMode == ColorMode_STANDARD && nBrightness == 70 && nContrast == -70)
+ {
+ // map MSO 'washout' to our Watermark colormode
+ eColorMode = ColorMode_WATERMARK;
+ nBrightness = 0;
+ nContrast = 0;
+ }
+ else if( nBrightness != 0 && nContrast != 0 )
+ {
+ // MSO uses a different algorithm for contrast+brightness, LO applies contrast before brightness,
+ // while MSO apparently applies half of brightness before contrast and half after. So if only
+ // contrast or brightness need to be altered, the result is the same, but if both are involved,
+ // there's no way to map that, so just force a conversion of the image.
+ xGraphic = applyBrightnessContrast( xGraphic, nBrightness, nContrast );
+ nBrightness = 0;
+ nContrast = 0;
+ }
+
+ // cropping
+ if ( maBlipProps.moClipRect.has() )
+ {
+ geometry::IntegerRectangle2D oClipRect( maBlipProps.moClipRect.get() );
+ awt::Size aOriginalSize( rGraphicHelper.getOriginalSize( xGraphic ) );
+ if ( aOriginalSize.Width && aOriginalSize.Height )
+ {
+ text::GraphicCrop aGraphCrop( 0, 0, 0, 0 );
+ if ( oClipRect.X1 )
+ aGraphCrop.Left = rtl::math::round( ( static_cast< double >( aOriginalSize.Width ) * oClipRect.X1 ) / 100000 );
+ if ( oClipRect.Y1 )
+ aGraphCrop.Top = rtl::math::round( ( static_cast< double >( aOriginalSize.Height ) * oClipRect.Y1 ) / 100000 );
+ if ( oClipRect.X2 )
+ aGraphCrop.Right = rtl::math::round( ( static_cast< double >( aOriginalSize.Width ) * oClipRect.X2 ) / 100000 );
+ if ( oClipRect.Y2 )
+ aGraphCrop.Bottom = rtl::math::round( ( static_cast< double >( aOriginalSize.Height ) * oClipRect.Y2 ) / 100000 );
+ rPropMap.setProperty(PROP_GraphicCrop, aGraphCrop);
+
+ bool bHasCropValues = aGraphCrop.Left != 0 || aGraphCrop.Right !=0 || aGraphCrop.Top != 0 || aGraphCrop.Bottom != 0;
+ // Positive GraphicCrop values means "crop" here.
+ bool bNeedCrop = aGraphCrop.Left >= 0 && aGraphCrop.Right >= 0 && aGraphCrop.Top >= 0 && aGraphCrop.Bottom >= 0;
+
+ if(mbIsCustomShape && bHasCropValues && bNeedCrop)
+ {
+ xGraphic = lclCropGraphic(xGraphic, CropQuotientsFromSrcRect(oClipRect));
+ }
+ }
+ }
+
+ if(mbIsCustomShape)
+ {
+ // it is a cropped graphic.
+ rPropMap.setProperty(PROP_FillStyle, FillStyle_BITMAP);
+ rPropMap.setProperty(PROP_FillBitmapMode, BitmapMode_STRETCH);
+
+ // It is a bitmap filled and rotated graphic.
+ // When custom shape is rotated, bitmap have to be rotated too.
+ if(rPropMap.hasProperty(PROP_RotateAngle))
+ {
+ tools::Long nAngle = rPropMap.getProperty(PROP_RotateAngle).get<tools::Long>();
+ xGraphic = lclRotateGraphic(xGraphic, Degree10(nAngle/10) );
+ }
+
+ // We have not core feature that flips graphic in the shape.
+ // Here we are applying flip property to bitmap directly.
+ if(bFlipH || bFlipV)
+ xGraphic = lclMirrorGraphic(xGraphic, bFlipH, bFlipV );
+
+ if(eColorMode == ColorMode_GREYS)
+ xGraphic = lclGreysScaleGraphic( xGraphic );
+
+ rPropMap.setProperty(PROP_FillBitmap, xGraphic);
+ }
+ else
+ rPropMap.setProperty(PROP_Graphic, xGraphic);
+
+
+ if ( maBlipProps.moAlphaModFix.has() )
+ {
+ rPropMap.setProperty(PROP_Transparency, static_cast<sal_Int16>(100 - (maBlipProps.moAlphaModFix.get() / PER_PERCENT)));
+ }
+ }
+ rPropMap.setProperty(PROP_GraphicColorMode, eColorMode);
+
+ // brightness and contrast
+ if( nBrightness != 0 )
+ rPropMap.setProperty(PROP_AdjustLuminance, nBrightness);
+ if( nContrast != 0 )
+ rPropMap.setProperty(PROP_AdjustContrast, nContrast);
+
+ // Media content
+ if (!m_sMediaPackageURL.isEmpty())
+ {
+ rPropMap.setProperty(PROP_MediaURL, m_sMediaPackageURL);
+ if (m_xMediaStream.is())
+ rPropMap.setProperty(PROP_PrivateStream, m_xMediaStream);
+ }
+}
+
+bool ArtisticEffectProperties::isEmpty() const
+{
+ return msName.isEmpty();
+}
+
+css::beans::PropertyValue ArtisticEffectProperties::getEffect()
+{
+ css::beans::PropertyValue aRet;
+ if( msName.isEmpty() )
+ return aRet;
+
+ css::uno::Sequence< css::beans::PropertyValue > aSeq( maAttribs.size() + 1 );
+ auto pSeq = aSeq.getArray();
+ sal_uInt32 i = 0;
+ for (auto const& attrib : maAttribs)
+ {
+ pSeq[i].Name = attrib.first;
+ pSeq[i].Value = attrib.second;
+ i++;
+ }
+
+ if( mrOleObjectInfo.maEmbeddedData.hasElements() )
+ {
+ css::uno::Sequence< css::beans::PropertyValue > aGraphicSeq{
+ comphelper::makePropertyValue("Id", mrOleObjectInfo.maProgId),
+ comphelper::makePropertyValue("Data", mrOleObjectInfo.maEmbeddedData)
+ };
+
+ pSeq[i].Name = "OriginalGraphic";
+ pSeq[i].Value <<= aGraphicSeq;
+ }
+
+ aRet.Name = msName;
+ aRet.Value <<= aSeq;
+
+ return aRet;
+}
+
+void ArtisticEffectProperties::assignUsed( const ArtisticEffectProperties& rSourceProps )
+{
+ if( !rSourceProps.isEmpty() )
+ {
+ msName = rSourceProps.msName;
+ maAttribs = rSourceProps.maAttribs;
+ }
+}
+
+OUString ArtisticEffectProperties::getEffectString( sal_Int32 nToken )
+{
+ switch( nToken )
+ {
+ // effects
+ case OOX_TOKEN( a14, artisticBlur ): return "artisticBlur";
+ case OOX_TOKEN( a14, artisticCement ): return "artisticCement";
+ case OOX_TOKEN( a14, artisticChalkSketch ): return "artisticChalkSketch";
+ case OOX_TOKEN( a14, artisticCrisscrossEtching ): return "artisticCrisscrossEtching";
+ case OOX_TOKEN( a14, artisticCutout ): return "artisticCutout";
+ case OOX_TOKEN( a14, artisticFilmGrain ): return "artisticFilmGrain";
+ case OOX_TOKEN( a14, artisticGlass ): return "artisticGlass";
+ case OOX_TOKEN( a14, artisticGlowDiffused ): return "artisticGlowDiffused";
+ case OOX_TOKEN( a14, artisticGlowEdges ): return "artisticGlowEdges";
+ case OOX_TOKEN( a14, artisticLightScreen ): return "artisticLightScreen";
+ case OOX_TOKEN( a14, artisticLineDrawing ): return "artisticLineDrawing";
+ case OOX_TOKEN( a14, artisticMarker ): return "artisticMarker";
+ case OOX_TOKEN( a14, artisticMosiaicBubbles ): return "artisticMosiaicBubbles";
+ case OOX_TOKEN( a14, artisticPaintStrokes ): return "artisticPaintStrokes";
+ case OOX_TOKEN( a14, artisticPaintBrush ): return "artisticPaintBrush";
+ case OOX_TOKEN( a14, artisticPastelsSmooth ): return "artisticPastelsSmooth";
+ case OOX_TOKEN( a14, artisticPencilGrayscale ): return "artisticPencilGrayscale";
+ case OOX_TOKEN( a14, artisticPencilSketch ): return "artisticPencilSketch";
+ case OOX_TOKEN( a14, artisticPhotocopy ): return "artisticPhotocopy";
+ case OOX_TOKEN( a14, artisticPlasticWrap ): return "artisticPlasticWrap";
+ case OOX_TOKEN( a14, artisticTexturizer ): return "artisticTexturizer";
+ case OOX_TOKEN( a14, artisticWatercolorSponge ): return "artisticWatercolorSponge";
+ case OOX_TOKEN( a14, brightnessContrast ): return "brightnessContrast";
+ case OOX_TOKEN( a14, colorTemperature ): return "colorTemperature";
+ case OOX_TOKEN( a14, saturation ): return "saturation";
+ case OOX_TOKEN( a14, sharpenSoften ): return "sharpenSoften";
+
+ // attributes
+ case XML_visible: return "visible";
+ case XML_trans: return "trans";
+ case XML_crackSpacing: return "crackSpacing";
+ case XML_pressure: return "pressure";
+ case XML_numberOfShades: return "numberOfShades";
+ case XML_grainSize: return "grainSize";
+ case XML_intensity: return "intensity";
+ case XML_smoothness: return "smoothness";
+ case XML_gridSize: return "gridSize";
+ case XML_pencilSize: return "pencilSize";
+ case XML_size: return "size";
+ case XML_brushSize: return "brushSize";
+ case XML_scaling: return "scaling";
+ case XML_detail: return "detail";
+ case XML_bright: return "bright";
+ case XML_contrast: return "contrast";
+ case XML_colorTemp: return "colorTemp";
+ case XML_sat: return "sat";
+ case XML_amount: return "amount";
+ }
+ SAL_WARN( "oox.drawingml", "ArtisticEffectProperties::getEffectString: unexpected token " << nToken );
+ return OUString();
+}
+
+sal_Int32 ArtisticEffectProperties::getEffectToken( const OUString& sName )
+{
+ // effects
+ if( sName == "artisticBlur" )
+ return XML_artisticBlur;
+ else if( sName == "artisticCement" )
+ return XML_artisticCement;
+ else if( sName == "artisticChalkSketch" )
+ return XML_artisticChalkSketch;
+ else if( sName == "artisticCrisscrossEtching" )
+ return XML_artisticCrisscrossEtching;
+ else if( sName == "artisticCutout" )
+ return XML_artisticCutout;
+ else if( sName == "artisticFilmGrain" )
+ return XML_artisticFilmGrain;
+ else if( sName == "artisticGlass" )
+ return XML_artisticGlass;
+ else if( sName == "artisticGlowDiffused" )
+ return XML_artisticGlowDiffused;
+ else if( sName == "artisticGlowEdges" )
+ return XML_artisticGlowEdges;
+ else if( sName == "artisticLightScreen" )
+ return XML_artisticLightScreen;
+ else if( sName == "artisticLineDrawing" )
+ return XML_artisticLineDrawing;
+ else if( sName == "artisticMarker" )
+ return XML_artisticMarker;
+ else if( sName == "artisticMosiaicBubbles" )
+ return XML_artisticMosiaicBubbles;
+ else if( sName == "artisticPaintStrokes" )
+ return XML_artisticPaintStrokes;
+ else if( sName == "artisticPaintBrush" )
+ return XML_artisticPaintBrush;
+ else if( sName == "artisticPastelsSmooth" )
+ return XML_artisticPastelsSmooth;
+ else if( sName == "artisticPencilGrayscale" )
+ return XML_artisticPencilGrayscale;
+ else if( sName == "artisticPencilSketch" )
+ return XML_artisticPencilSketch;
+ else if( sName == "artisticPhotocopy" )
+ return XML_artisticPhotocopy;
+ else if( sName == "artisticPlasticWrap" )
+ return XML_artisticPlasticWrap;
+ else if( sName == "artisticTexturizer" )
+ return XML_artisticTexturizer;
+ else if( sName == "artisticWatercolorSponge" )
+ return XML_artisticWatercolorSponge;
+ else if( sName == "brightnessContrast" )
+ return XML_brightnessContrast;
+ else if( sName == "colorTemperature" )
+ return XML_colorTemperature;
+ else if( sName == "saturation" )
+ return XML_saturation;
+ else if( sName == "sharpenSoften" )
+ return XML_sharpenSoften;
+
+ // attributes
+ else if( sName == "visible" )
+ return XML_visible;
+ else if( sName == "trans" )
+ return XML_trans;
+ else if( sName == "crackSpacing" )
+ return XML_crackSpacing;
+ else if( sName == "pressure" )
+ return XML_pressure;
+ else if( sName == "numberOfShades" )
+ return XML_numberOfShades;
+ else if( sName == "grainSize" )
+ return XML_grainSize;
+ else if( sName == "intensity" )
+ return XML_intensity;
+ else if( sName == "smoothness" )
+ return XML_smoothness;
+ else if( sName == "gridSize" )
+ return XML_gridSize;
+ else if( sName == "pencilSize" )
+ return XML_pencilSize;
+ else if( sName == "size" )
+ return XML_size;
+ else if( sName == "brushSize" )
+ return XML_brushSize;
+ else if( sName == "scaling" )
+ return XML_scaling;
+ else if( sName == "detail" )
+ return XML_detail;
+ else if( sName == "bright" )
+ return XML_bright;
+ else if( sName == "contrast" )
+ return XML_contrast;
+ else if( sName == "colorTemp" )
+ return XML_colorTemp;
+ else if( sName == "sat" )
+ return XML_sat;
+ else if( sName == "amount" )
+ return XML_amount;
+
+ SAL_WARN( "oox.drawingml", "ArtisticEffectProperties::getEffectToken - unexpected token name: " << sName );
+ return XML_none;
+}
+
+} // namespace oox
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/oox/source/drawingml/graphicshapecontext.cxx b/oox/source/drawingml/graphicshapecontext.cxx
new file mode 100644
index 000000000..2e5ce5dc4
--- /dev/null
+++ b/oox/source/drawingml/graphicshapecontext.cxx
@@ -0,0 +1,341 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ *
+ * This file incorporates work covered by the following license notice:
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed
+ * with this work for additional information regarding copyright
+ * ownership. The ASF licenses this file to you under the Apache
+ * License, Version 2.0 (the "License"); you may not use this file
+ * except in compliance with the License. You may obtain a copy of
+ * the License at http://www.apache.org/licenses/LICENSE-2.0 .
+ */
+
+#include <sal/config.h>
+
+#include <string_view>
+
+#include <oox/drawingml/graphicshapecontext.hxx>
+
+#include <osl/diagnose.h>
+#include <sal/log.hxx>
+
+#include <drawingml/embeddedwavaudiofile.hxx>
+#include <drawingml/misccontexts.hxx>
+#include <drawingml/graphicproperties.hxx>
+#include <drawingml/customshapeproperties.hxx>
+#include <oox/drawingml/diagram/diagram.hxx>
+#include <drawingml/table/tablecontext.hxx>
+#include <oox/core/xmlfilterbase.hxx>
+#include <oox/helper/attributelist.hxx>
+#include <oox/vml/vmldrawing.hxx>
+#include <drawingml/transform2dcontext.hxx>
+#include <oox/ppt/pptshapegroupcontext.hxx>
+#include <oox/token/namespaces.hxx>
+#include <oox/token/tokens.hxx>
+
+using namespace ::com::sun::star;
+using namespace ::com::sun::star::io;
+using namespace ::com::sun::star::uno;
+using namespace ::com::sun::star::lang;
+using namespace ::com::sun::star::beans;
+using namespace ::com::sun::star::xml::sax;
+using namespace ::oox::core;
+
+static uno::Reference<io::XInputStream>
+lcl_GetMediaStream(const OUString& rStream, const oox::core::XmlFilterBase& rFilter)
+{
+ if (rStream.isEmpty())
+ return nullptr;
+
+ Reference< XInputStream > xInStrm( rFilter.openInputStream(rStream), UNO_SET_THROW );
+ return xInStrm;
+}
+
+static OUString lcl_GetMediaReference(std::u16string_view rStream)
+{
+ return rStream.empty() ? OUString() : OUString::Concat("vnd.sun.star.Package:") + rStream;
+}
+
+namespace oox::drawingml {
+
+// CT_Picture
+
+GraphicShapeContext::GraphicShapeContext( ContextHandler2Helper const & rParent, const ShapePtr& pMasterShapePtr, const ShapePtr& pShapePtr )
+: ShapeContext( rParent, pMasterShapePtr, pShapePtr )
+{
+}
+
+ContextHandlerRef GraphicShapeContext::onCreateContext( sal_Int32 aElementToken, const AttributeList& rAttribs )
+{
+ switch( getBaseToken( aElementToken ) )
+ {
+ // CT_ShapeProperties
+ case XML_xfrm:
+ return new Transform2DContext( *this, rAttribs, *mpShapePtr );
+ case XML_blipFill:
+ return new BlipFillContext( *this, rAttribs, mpShapePtr->getGraphicProperties().maBlipProps );
+ case XML_wavAudioFile:
+ {
+ OUString const path(getEmbeddedWAVAudioFile(getRelations(), rAttribs));
+ Reference<XInputStream> xMediaStream = lcl_GetMediaStream(path, getFilter());
+ if (xMediaStream.is())
+ {
+ mpShapePtr->getGraphicProperties().m_xMediaStream = xMediaStream;
+ mpShapePtr->getGraphicProperties().m_sMediaPackageURL = lcl_GetMediaReference(path);
+ }
+ }
+ break;
+ case XML_audioFile:
+ case XML_videoFile:
+ {
+ OUString rPath = getRelations().getFragmentPathFromRelId(
+ rAttribs.getString(R_TOKEN(link)).get() );
+ if (!rPath.isEmpty())
+ {
+ Reference<XInputStream> xMediaStream = lcl_GetMediaStream(rPath, getFilter());
+ if (xMediaStream.is()) // embedded media file
+ {
+ mpShapePtr->getGraphicProperties().m_xMediaStream = xMediaStream;
+ mpShapePtr->getGraphicProperties().m_sMediaPackageURL
+ = lcl_GetMediaReference(rPath);
+ }
+ }
+ else
+ {
+ rPath = getRelations().getExternalTargetFromRelId(
+ rAttribs.getString(R_TOKEN(link)).get());
+ if (!rPath.isEmpty()) // linked media file
+ mpShapePtr->getGraphicProperties().m_sMediaPackageURL
+ = getFilter().getAbsoluteUrl(rPath);
+ }
+ }
+ break;
+ }
+
+ if ((getNamespace( aElementToken ) == NMSP_vml) && mpShapePtr)
+ {
+ mpShapePtr->setServiceName("com.sun.star.drawing.CustomShape");
+ CustomShapePropertiesPtr pCstmShpProps
+ (mpShapePtr->getCustomShapeProperties());
+
+ pCstmShpProps->setShapePresetType( getBaseToken( aElementToken ) );
+ }
+
+ return ShapeContext::onCreateContext( aElementToken, rAttribs );
+}
+
+// CT_GraphicalObjectFrameContext
+
+GraphicalObjectFrameContext::GraphicalObjectFrameContext( ContextHandler2Helper& rParent, const ShapePtr& pMasterShapePtr, const ShapePtr& pShapePtr, bool bEmbedShapesInChart ) :
+ ShapeContext( rParent, pMasterShapePtr, pShapePtr ),
+ mbEmbedShapesInChart( bEmbedShapesInChart ),
+ mpParent(&rParent)
+{
+}
+
+ContextHandlerRef GraphicalObjectFrameContext::onCreateContext( sal_Int32 aElementToken, const AttributeList& rAttribs )
+{
+ switch( getBaseToken( aElementToken ) )
+ {
+ // CT_ShapeProperties
+ case XML_nvGraphicFramePr: // CT_GraphicalObjectFrameNonVisual
+ break;
+ case XML_xfrm: // CT_Transform2D
+ return new Transform2DContext( *this, rAttribs, *mpShapePtr );
+ case XML_graphic: // CT_GraphicalObject
+ return this;
+
+ case XML_graphicData : // CT_GraphicalObjectData
+ {
+ OUString sUri( rAttribs.getString( XML_uri ).get() );
+ if ( sUri == "http://schemas.openxmlformats.org/presentationml/2006/ole" ||
+ sUri == "http://purl.oclc.org/ooxml/presentationml/ole" )
+ return new OleObjectGraphicDataContext( *this, mpShapePtr );
+ else if ( sUri == "http://schemas.openxmlformats.org/drawingml/2006/diagram" ||
+ sUri == "http://purl.oclc.org/ooxml/drawingml/diagram" )
+ return new DiagramGraphicDataContext( *this, mpShapePtr );
+ else if ( sUri == "http://schemas.openxmlformats.org/drawingml/2006/chart" ||
+ sUri == "http://purl.oclc.org/ooxml/drawingml/chart" )
+ return new ChartGraphicDataContext( *this, mpShapePtr, mbEmbedShapesInChart );
+ else if ( sUri == "http://schemas.openxmlformats.org/drawingml/2006/table" ||
+ sUri == "http://purl.oclc.org/ooxml/drawingml/table" )
+ return new table::TableContext( *this, mpShapePtr );
+ else
+ {
+ SAL_WARN("oox.drawingml", "OOX: Ignore graphicsData of :" << sUri );
+ return nullptr;
+ }
+ }
+ break;
+ }
+
+ return ShapeContext::onCreateContext( aElementToken, rAttribs );
+}
+
+void GraphicalObjectFrameContext::onEndElement()
+{
+ if( getCurrentElement() == PPT_TOKEN( graphicFrame ) && mpParent )
+ {
+ oox::ppt::PPTShapeGroupContext* pParent = dynamic_cast<oox::ppt::PPTShapeGroupContext*>(mpParent);
+ if( pParent )
+ pParent->importExtDrawings();
+ }
+}
+
+OleObjectGraphicDataContext::OleObjectGraphicDataContext( ContextHandler2Helper const & rParent, const ShapePtr& xShape ) :
+ ShapeContext( rParent, ShapePtr(), xShape ),
+ mrOleObjectInfo( xShape->setOleObjectType() )
+{
+}
+
+OleObjectGraphicDataContext::~OleObjectGraphicDataContext()
+{
+ /* Register the OLE shape at the VML drawing, this prevents that the
+ related VML shape converts the OLE object by itself. */
+ if( !mrOleObjectInfo.maShapeId.isEmpty() )
+ if( ::oox::vml::Drawing* pVmlDrawing = getFilter().getVmlDrawing() )
+ pVmlDrawing->registerOleObject( mrOleObjectInfo );
+}
+
+ContextHandlerRef OleObjectGraphicDataContext::onCreateContext( sal_Int32 nElement, const AttributeList& rAttribs )
+{
+ switch( nElement )
+ {
+ case PPT_TOKEN( oleObj ):
+ {
+ mrOleObjectInfo.maShapeId = rAttribs.getXString( XML_spid, OUString() );
+ const Relation* pRelation = getRelations().getRelationFromRelId( rAttribs.getString( R_TOKEN( id ), OUString() ) );
+ OSL_ENSURE( pRelation, "OleObjectGraphicDataContext::createFastChildContext - missing relation for OLE object" );
+ if( pRelation )
+ {
+ mrOleObjectInfo.mbLinked = pRelation->mbExternal;
+ if( pRelation->mbExternal )
+ {
+ mrOleObjectInfo.maTargetLink = getFilter().getAbsoluteUrl( pRelation->maTarget );
+ }
+ else
+ {
+ OUString aFragmentPath = getFragmentPathFromRelation( *pRelation );
+ if( !aFragmentPath.isEmpty() )
+ getFilter().importBinaryData( mrOleObjectInfo.maEmbeddedData, aFragmentPath );
+ }
+ }
+ mrOleObjectInfo.maName = rAttribs.getXString( XML_name, OUString() );
+ mrOleObjectInfo.maProgId = rAttribs.getXString( XML_progId, OUString() );
+ mrOleObjectInfo.mbShowAsIcon = rAttribs.getBool( XML_showAsIcon, false );
+ mrOleObjectInfo.mbHasPicture = false; // Initialize as false
+ return this;
+ }
+ break;
+
+ case PPT_TOKEN( embed ):
+ OSL_ENSURE( !mrOleObjectInfo.mbLinked, "OleObjectGraphicDataContext::createFastChildContext - unexpected child element" );
+ break;
+
+ case PPT_TOKEN( link ):
+ OSL_ENSURE( mrOleObjectInfo.mbLinked, "OleObjectGraphicDataContext::createFastChildContext - unexpected child element" );
+ mrOleObjectInfo.mbAutoUpdate = rAttribs.getBool( XML_updateAutomatic, false );
+ break;
+ case PPT_TOKEN( pic ):
+ mrOleObjectInfo.mbHasPicture = true; // Set true if ole object has picture element.
+ return new GraphicShapeContext( *this, mpMasterShapePtr, mpShapePtr );
+ }
+ SAL_WARN("oox", "OleObjectGraphicDataContext::onCreateContext: unhandled element: "
+ << getBaseToken(nElement));
+ return nullptr;
+}
+
+void OleObjectGraphicDataContext::onEndElement()
+{
+ if( getCurrentElement() == PPT_TOKEN( oleObj ) && !isMCEStateEmpty() )
+ {
+ if (getMCEState() == MCE_STATE::FoundChoice && !mrOleObjectInfo.mbHasPicture
+ && mrOleObjectInfo.maShapeId.isEmpty())
+ setMCEState( MCE_STATE::Started );
+ }
+}
+
+DiagramGraphicDataContext::DiagramGraphicDataContext( ContextHandler2Helper const & rParent, const ShapePtr& pShapePtr )
+: ShapeContext( rParent, ShapePtr(), pShapePtr )
+{
+ pShapePtr->setDiagramType();
+}
+
+DiagramGraphicDataContext::~DiagramGraphicDataContext()
+{
+}
+
+ContextHandlerRef DiagramGraphicDataContext::onCreateContext( ::sal_Int32 aElementToken, const AttributeList& rAttribs )
+{
+ switch( aElementToken )
+ {
+ case DGM_TOKEN( relIds ):
+ {
+ msDm = rAttribs.getString( R_TOKEN( dm ) ).get();
+ msLo = rAttribs.getString( R_TOKEN( lo ) ).get();
+ msQs = rAttribs.getString( R_TOKEN( qs ) ).get();
+ msCs = rAttribs.getString( R_TOKEN( cs ) ).get();
+ loadDiagram(mpShapePtr,
+ getFilter(),
+ getFragmentPathFromRelId( msDm ),
+ getFragmentPathFromRelId( msLo ),
+ getFragmentPathFromRelId( msQs ),
+ getFragmentPathFromRelId( msCs ),
+ getRelations());
+ SAL_INFO("oox.drawingml", "DiagramGraphicDataContext::onCreateContext: added shape " << mpShapePtr->getName()
+ << " of type " << mpShapePtr->getServiceName()
+ << ", position: " << mpShapePtr->getPosition().X
+ << "," << mpShapePtr->getPosition().Y
+ << ", size: " << mpShapePtr->getSize().Width
+ << "x" << mpShapePtr->getSize().Height);
+
+ // No DrawingML fallback, need to warn the user at the end.
+ if (mpShapePtr->getExtDrawings().empty())
+ getFilter().setMissingExtDrawing();
+ else
+ {
+ for (const auto& rRelId : mpShapePtr->getExtDrawings())
+ {
+ // An invalid fallback reference is as bad as a missing one.
+ if (getFragmentPathFromRelId(rRelId).isEmpty())
+ {
+ getFilter().setMissingExtDrawing();
+ break;
+ }
+ }
+ }
+
+ break;
+ }
+ default:
+ break;
+ }
+
+ return ShapeContext::onCreateContext( aElementToken, rAttribs );
+}
+
+ChartGraphicDataContext::ChartGraphicDataContext( ContextHandler2Helper const & rParent, const ShapePtr& rxShape, bool bEmbedShapes ) :
+ ShapeContext( rParent, ShapePtr(), rxShape ),
+ mrChartShapeInfo( rxShape->setChartType( bEmbedShapes ) )
+{
+}
+
+ContextHandlerRef ChartGraphicDataContext::onCreateContext( ::sal_Int32 nElement, const AttributeList& rAttribs )
+{
+ if( nElement == C_TOKEN( chart ) )
+ {
+ mrChartShapeInfo.maFragmentPath = getFragmentPathFromRelId( rAttribs.getString( R_TOKEN( id ), OUString() ) );
+ }
+ return nullptr;
+}
+
+} // namespace oox::drawingml
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/oox/source/drawingml/guidcontext.cxx b/oox/source/drawingml/guidcontext.cxx
new file mode 100644
index 000000000..022359562
--- /dev/null
+++ b/oox/source/drawingml/guidcontext.cxx
@@ -0,0 +1,40 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ *
+ * This file incorporates work covered by the following license notice:
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed
+ * with this work for additional information regarding copyright
+ * ownership. The ASF licenses this file to you under the Apache
+ * License, Version 2.0 (the "License"); you may not use this file
+ * except in compliance with the License. You may obtain a copy of
+ * the License at http://www.apache.org/licenses/LICENSE-2.0 .
+ */
+
+#include <drawingml/guidcontext.hxx>
+
+using namespace ::oox::core;
+using namespace ::com::sun::star::uno;
+using namespace ::com::sun::star::xml::sax;
+
+namespace oox::drawingml {
+
+GuidContext::GuidContext( ContextHandler2Helper const & rParent, OUString& rGuidId )
+: ContextHandler2( rParent )
+, mrGuidId( rGuidId )
+{
+}
+void GuidContext::onCharacters( const OUString& aChars )
+{
+ mrGuidId += aChars;
+}
+
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/oox/source/drawingml/hyperlinkcontext.cxx b/oox/source/drawingml/hyperlinkcontext.cxx
new file mode 100644
index 000000000..352eb7bf5
--- /dev/null
+++ b/oox/source/drawingml/hyperlinkcontext.cxx
@@ -0,0 +1,166 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ *
+ * This file incorporates work covered by the following license notice:
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed
+ * with this work for additional information regarding copyright
+ * ownership. The ASF licenses this file to you under the Apache
+ * License, Version 2.0 (the "License"); you may not use this file
+ * except in compliance with the License. You may obtain a copy of
+ * the License at http://www.apache.org/licenses/LICENSE-2.0 .
+ */
+
+#include "hyperlinkcontext.hxx"
+
+#include <com/sun/star/xml/sax/XFastContextHandler.hpp>
+
+#include <oox/helper/attributelist.hxx>
+#include <oox/helper/propertymap.hxx>
+#include <oox/core/relations.hxx>
+#include <oox/core/xmlfilterbase.hxx>
+#include <oox/token/namespaces.hxx>
+#include <oox/token/properties.hxx>
+#include <oox/token/tokens.hxx>
+#include <o3tl/string_view.hxx>
+
+using namespace ::oox::core;
+using namespace ::com::sun::star::uno;
+using namespace ::com::sun::star::xml::sax;
+
+namespace oox::drawingml {
+
+HyperLinkContext::HyperLinkContext( ContextHandler2Helper const & rParent,
+ const AttributeList& rAttribs, PropertyMap& aProperties )
+ : ContextHandler2( rParent )
+ , maProperties(aProperties)
+{
+ OUString sURL, sHref;
+ OUString aRelId = rAttribs.getString( R_TOKEN( id ) ).get();
+ if ( !aRelId.isEmpty() )
+ {
+ sHref = getRelations().getExternalTargetFromRelId( aRelId );
+ if( !sHref.isEmpty() )
+ {
+ sURL = getFilter().getAbsoluteUrl( sHref );
+ }
+ else
+ {
+ // not sure if we also need to set sHref to the internal target
+ sURL = getRelations().getInternalTargetFromRelId( aRelId );
+ }
+ }
+ OUString sTooltip = rAttribs.getString( R_TOKEN( tooltip ) ).get();
+ if ( !sTooltip.isEmpty() )
+ maProperties.setProperty(PROP_Representation, sTooltip);
+ OUString sFrame = rAttribs.getString( R_TOKEN( tgtFrame ) ).get();
+ if( !sFrame.isEmpty() )
+ maProperties.setProperty(PROP_TargetFrame, sFrame);
+ OUString aAction = rAttribs.getString( XML_action ).get();
+ if ( !aAction.isEmpty() )
+ {
+ // reserved values of the unrestricted string aAction:
+ // ppaction://customshow?id=SHOW_ID // custom presentation
+ // ppaction://hlinkfile // external file via r:id
+ // ppaction://hlinkpres?slideindex=SLIDE_NUM // external presentation via r:id
+ // ppaction://hlinkshowjump?jump=endshow
+ // ppaction://hlinkshowjump?jump=firstslide
+ // ppaction://hlinkshowjump?jump=lastslide
+ // ppaction://hlinkshowjump?jump=lastslideviewed
+ // ppaction://hlinkshowjump?jump=nextslide
+ // ppaction://hlinkshowjump?jump=previousslide
+ // ppaction://hlinksldjump
+ // ppaction://macro?name=MACRO_NAME
+ // ppaction://program
+
+ static const OUStringLiteral sPPAction( u"ppaction://" );
+ if ( aAction.matchIgnoreAsciiCase( sPPAction ) )
+ {
+ OUString aPPAct( aAction.copy( sPPAction.getLength() ) );
+ sal_Int32 nIndex = aPPAct.indexOf( '?' );
+ OUString aPPAction( nIndex > 0 ? aPPAct.copy( 0, nIndex ) : aPPAct );
+
+ if ( aPPAction.match( "hlinkshowjump" ) )
+ {
+ static const OUStringLiteral sJump( u"jump=" );
+ if ( aPPAct.match( sJump, nIndex + 1 ) )
+ {
+ std::u16string_view aDestination( aPPAct.subView( nIndex + 1 + sJump.getLength() ) );
+ sURL += OUString::Concat("#action?jump=") + aDestination;
+ }
+ }
+ else if ( aPPAction.match( "hlinksldjump" ) )
+ {
+ sHref = sURL;
+
+ sal_Int32 nIndex2 = 0;
+ while ( nIndex2 < sHref.getLength() )
+ {
+ sal_Unicode nChar = sHref[ nIndex2 ];
+ if ( ( nChar >= '0' ) && ( nChar <= '9' ) )
+ break;
+ nIndex2++;
+ }
+ if ( nIndex2 && ( nIndex2 != sHref.getLength() ) )
+ {
+ sal_Int32 nLength = 1;
+ while( ( nIndex2 + nLength ) < sHref.getLength() )
+ {
+ sal_Unicode nChar = sHref[ nIndex2 + nLength ];
+ if ( ( nChar < '0' ) || ( nChar > '9' ) )
+ break;
+ nLength++;
+ }
+ sal_Int32 nPageNumber = o3tl::toInt32(sHref.subView( nIndex2, nLength ));
+ if ( nPageNumber )
+ {
+ const OUString aSlideType( sHref.copy( 0, nIndex2 ) );
+ if ( aSlideType.match( "slide" ) )
+ sURL = "#Slide " + OUString::number( nPageNumber );
+ else if ( aSlideType.match( "notesSlide" ) )
+ sURL = "#Notes " + OUString::number( nPageNumber );
+// else: todo for other types such as notesMaster or slideMaster as they can't be referenced easily
+ }
+ }
+ }
+ }
+ }
+ if ( !sURL.isEmpty() )
+ maProperties.setProperty(PROP_URL, sURL);
+
+ // TODO unhandled
+ // XML_invalidUrl
+ // XML_history
+ // XML_highlightClick
+ // XML_endSnd
+}
+
+HyperLinkContext::~HyperLinkContext()
+{
+}
+
+ContextHandlerRef HyperLinkContext::onCreateContext(
+ ::sal_Int32 aElement, const AttributeList& )
+{
+ switch( aElement )
+ {
+ case A_TOKEN( extLst ):
+ maProperties.setProperty(PROP_CharColor, XML_fillcolor);
+ break;
+ case A_TOKEN( snd ):
+ // TODO use getEmbeddedWAVAudioFile() here
+ break;
+ }
+
+ return this;
+}
+
+} // namespace oox::drawingml
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/oox/source/drawingml/hyperlinkcontext.hxx b/oox/source/drawingml/hyperlinkcontext.hxx
new file mode 100644
index 000000000..6c7fe6c80
--- /dev/null
+++ b/oox/source/drawingml/hyperlinkcontext.hxx
@@ -0,0 +1,48 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ *
+ * This file incorporates work covered by the following license notice:
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed
+ * with this work for additional information regarding copyright
+ * ownership. The ASF licenses this file to you under the Apache
+ * License, Version 2.0 (the "License"); you may not use this file
+ * except in compliance with the License. You may obtain a copy of
+ * the License at http://www.apache.org/licenses/LICENSE-2.0 .
+ */
+
+#ifndef INCLUDED_OOX_SOURCE_DRAWINGML_HYPERLINKCONTEXT_HXX
+#define INCLUDED_OOX_SOURCE_DRAWINGML_HYPERLINKCONTEXT_HXX
+
+#include <oox/core/contexthandler2.hxx>
+
+namespace oox { class PropertyMap; }
+
+namespace oox::drawingml {
+
+class HyperLinkContext final : public ::oox::core::ContextHandler2
+{
+public:
+ HyperLinkContext(
+ ::oox::core::ContextHandler2Helper const & rParent,
+ const ::oox::AttributeList& rAttribs,
+ PropertyMap& aProperties );
+ virtual ~HyperLinkContext() override;
+
+ virtual ::oox::core::ContextHandlerRef onCreateContext( ::sal_Int32 Element, const ::oox::AttributeList& rAttribs ) override;
+
+private:
+ PropertyMap& maProperties;
+};
+
+} // namespace oox::drawingml
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/oox/source/drawingml/lineproperties.cxx b/oox/source/drawingml/lineproperties.cxx
new file mode 100644
index 000000000..2d10e8287
--- /dev/null
+++ b/oox/source/drawingml/lineproperties.cxx
@@ -0,0 +1,538 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ *
+ * This file incorporates work covered by the following license notice:
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed
+ * with this work for additional information regarding copyright
+ * ownership. The ASF licenses this file to you under the Apache
+ * License, Version 2.0 (the "License"); you may not use this file
+ * except in compliance with the License. You may obtain a copy of
+ * the License at http://www.apache.org/licenses/LICENSE-2.0 .
+ */
+
+#include <sal/config.h>
+
+#include <comphelper/sequence.hxx>
+#include <drawingml/lineproperties.hxx>
+#include <rtl/ustrbuf.hxx>
+#include <osl/diagnose.h>
+#include <com/sun/star/beans/NamedValue.hpp>
+#include <com/sun/star/drawing/LineCap.hpp>
+#include <com/sun/star/drawing/LineDash.hpp>
+#include <com/sun/star/drawing/LineJoint.hpp>
+#include <com/sun/star/drawing/LineStyle.hpp>
+#include <com/sun/star/drawing/PolyPolygonBezierCoords.hpp>
+#include <oox/drawingml/drawingmltypes.hxx>
+#include <oox/drawingml/shapepropertymap.hxx>
+#include <oox/helper/graphichelper.hxx>
+#include <oox/token/tokens.hxx>
+
+using namespace ::com::sun::star;
+using namespace ::com::sun::star::beans;
+using namespace ::com::sun::star::drawing;
+
+
+namespace oox::drawingml {
+
+namespace {
+
+void lclSetDashData( LineDash& orLineDash, sal_Int16 nDots, sal_Int32 nDotLen,
+ sal_Int16 nDashes, sal_Int32 nDashLen, sal_Int32 nDistance )
+{
+ orLineDash.Dots = nDots;
+ orLineDash.DotLen = nDotLen;
+ orLineDash.Dashes = nDashes;
+ orLineDash.DashLen = nDashLen;
+ orLineDash.Distance = nDistance;
+}
+
+/** Converts the specified preset dash to API dash.
+ */
+void lclConvertPresetDash(LineDash& orLineDash, sal_Int32 nPresetDash)
+{
+ switch( nPresetDash )
+ {
+ case XML_dot: lclSetDashData( orLineDash, 1, 1, 0, 0, 3 ); break;
+ case XML_dash: lclSetDashData( orLineDash, 1, 4, 0, 0, 3 ); break;
+ case XML_dashDot: lclSetDashData( orLineDash, 1, 4, 1, 1, 3 ); break;
+
+ case XML_lgDash: lclSetDashData( orLineDash, 1, 8, 0, 0, 3 ); break;
+ case XML_lgDashDot: lclSetDashData( orLineDash, 1, 8, 1, 1, 3 ); break;
+ case XML_lgDashDotDot: lclSetDashData( orLineDash, 1, 8, 2, 1, 3 ); break;
+
+ case XML_sysDot: lclSetDashData( orLineDash, 1, 1, 0, 0, 1 ); break;
+ case XML_sysDash: lclSetDashData( orLineDash, 1, 3, 0, 0, 1 ); break;
+ case XML_sysDashDot: lclSetDashData( orLineDash, 1, 3, 1, 1, 1 ); break;
+ case XML_sysDashDotDot: lclSetDashData( orLineDash, 1, 3, 2, 1, 1 ); break;
+
+ default:
+ OSL_FAIL( "lclConvertPresetDash - unsupported preset dash" );
+ lclSetDashData( orLineDash, 1, 4, 0, 0, 3 );
+ }
+ orLineDash.DotLen *= 100;
+ orLineDash.DashLen *= 100;
+ orLineDash.Distance *= 100;
+}
+
+/** Converts the passed custom dash to API dash. rCustomDash should not be empty.
+ * We assume, that there exist only two length values and the distance is the same
+ * for all dashes. Other kind of dash stop sequences cannot be represented, neither
+ * in model nor in ODF.
+ */
+void lclConvertCustomDash(LineDash& orLineDash, const LineProperties::DashStopVector& rCustomDash)
+{
+ OSL_ASSERT(!rCustomDash.empty());
+ // Assume all dash stops have the same sp values.
+ orLineDash.Distance = rCustomDash[0].second;
+ // First kind of dashes go to "Dots"
+ orLineDash.DotLen = rCustomDash[0].first;
+ orLineDash.Dots = 0;
+ for(const auto& rIt : rCustomDash)
+ {
+ if (rIt.first != orLineDash.DotLen)
+ break;
+ ++orLineDash.Dots;
+ }
+ // All others go to "Dashes", we cannot handle more than two kinds.
+ orLineDash.Dashes = rCustomDash.size() - orLineDash.Dots;
+ if (orLineDash.Dashes > 0)
+ orLineDash.DashLen = rCustomDash[orLineDash.Dots].first;
+ else
+ orLineDash.DashLen = 0;
+
+ // convert to API, e.g. 123% is 123000 in MS Office and 123 in our API
+ orLineDash.DotLen = orLineDash.DotLen / 1000;
+ orLineDash.DashLen = orLineDash.DashLen / 1000;
+ orLineDash.Distance = orLineDash.Distance / 1000;
+}
+
+/** LibreOffice uses value 0, if a length attribute is missing in the
+ * style definition, but treats it as 100%.
+ * LibreOffice uses absolute values in some style definitions. Try to
+ * reconstruct them from the imported relative values.
+ */
+void lclRecoverStandardDashStyles(LineDash& orLineDash, sal_Int32 nLineWidth)
+{
+ sal_uInt16 nDots = orLineDash.Dots;
+ sal_uInt16 nDashes = orLineDash.Dashes;
+ sal_uInt32 nDotLen = orLineDash.DotLen;
+ sal_uInt32 nDashLen = orLineDash.DashLen;
+ sal_uInt32 nDistance = orLineDash.Distance;
+ // Use same ersatz for hairline as in export.
+ double fWidthHelp = nLineWidth == 0 ? 26.95/100.0 : nLineWidth / 100.0;
+ // start with (var) cases, because they have no rounding problems
+ // "Fine Dashed", "Line Style 9" and "Dashed (var)" need no recover
+ if (nDots == 3 && nDotLen == 197 &&nDashes == 3 && nDashLen == 100 && nDistance == 100)
+ { // "3 Dashes 3 Dots (var)"
+ orLineDash.DashLen = 0;
+ }
+ else if (nDots == 1 && nDotLen == 100 && nDashes == 0 && nDistance == 50)
+ { // "Ultrafine Dotted (var)"
+ orLineDash.DotLen = 0;
+ }
+ else if (nDots == 2 && nDashes == 0 && nDotLen == nDistance
+ && std::abs(nDistance * fWidthHelp - 51.0) < fWidthHelp)
+ { // "Ultrafine Dashed"
+ orLineDash.Dots = 1;
+ orLineDash.DotLen = 51;
+ orLineDash.Dashes = 1;
+ orLineDash.DashLen = 51;
+ orLineDash.Distance = 51;
+ orLineDash.Style = orLineDash.Style == DashStyle_ROUNDRELATIVE ? DashStyle_ROUND : DashStyle_RECT;
+ }
+ else if (nDots == 2 && nDashes == 3 && std::abs(nDotLen * fWidthHelp - 51.0) < fWidthHelp
+ && std::abs(nDashLen * fWidthHelp - 254.0) < fWidthHelp
+ && std::abs(nDistance * fWidthHelp - 127.0) < fWidthHelp)
+ { // "Ultrafine 2 Dots 3 Dashes"
+ orLineDash.DotLen = 51;
+ orLineDash.DashLen = 254;
+ orLineDash.Distance = 127;
+ orLineDash.Style = orLineDash.Style == DashStyle_ROUNDRELATIVE ? DashStyle_ROUND : DashStyle_RECT;
+ }
+ else if (nDots == 1 && nDotLen == 100 && nDashes == 0
+ && std::abs(nDistance * fWidthHelp - 457.0) < fWidthHelp)
+ { // "Fine Dotted"
+ orLineDash.DotLen = 0;
+ orLineDash.Distance = 457;
+ orLineDash.Style = orLineDash.Style == DashStyle_ROUNDRELATIVE ? DashStyle_ROUND : DashStyle_RECT;
+ }
+ else if (nDots == 1 && nDashes == 10 && nDashLen == 100
+ && std::abs(nDistance * fWidthHelp - 152.0) < fWidthHelp)
+ { // "Line with Fine Dots"
+ orLineDash.DotLen = 2007;
+ orLineDash.DashLen = 0;
+ orLineDash.Distance = 152;
+ orLineDash.Style = orLineDash.Style == DashStyle_ROUNDRELATIVE ? DashStyle_ROUND : DashStyle_RECT;
+ }
+ else if (nDots == 2 && nDotLen == 100 && nDashes == 1 && nDashLen == nDistance
+ && std::abs(nDistance * fWidthHelp - 203.0) < fWidthHelp)
+ { // "2 Dots 1 Dash"
+ orLineDash.DotLen = 0;
+ orLineDash.DashLen = 203;
+ orLineDash.Distance = 203;
+ orLineDash.Style = orLineDash.Style == DashStyle_ROUNDRELATIVE ? DashStyle_ROUND : DashStyle_RECT;
+ }
+}
+
+DashStyle lclGetDashStyle( sal_Int32 nToken )
+{
+ OSL_ASSERT((nToken & sal_Int32(0xFFFF0000))==0);
+ // MS Office dashing is always relative to line width
+ switch( nToken )
+ {
+ case XML_rnd: return DashStyle_ROUNDRELATIVE;
+ case XML_sq: return DashStyle_RECTRELATIVE; // default in OOXML
+ case XML_flat: return DashStyle_RECTRELATIVE; // default in MS Office
+ }
+ return DashStyle_RECTRELATIVE;
+}
+
+LineCap lclGetLineCap( sal_Int32 nToken )
+{
+ OSL_ASSERT((nToken & sal_Int32(0xFFFF0000))==0);
+ switch( nToken )
+ {
+ case XML_rnd: return LineCap_ROUND;
+ case XML_sq: return LineCap_SQUARE; // default in OOXML
+ case XML_flat: return LineCap_BUTT; // default in MS Office
+ }
+ return LineCap_BUTT;
+}
+
+LineJoint lclGetLineJoint( sal_Int32 nToken )
+{
+ OSL_ASSERT((nToken & sal_Int32(0xFFFF0000))==0);
+ switch( nToken )
+ {
+ case XML_round: return LineJoint_ROUND;
+ case XML_bevel: return LineJoint_BEVEL;
+ case XML_miter: return LineJoint_MITER;
+ }
+ return LineJoint_ROUND;
+}
+
+const sal_Int32 OOX_ARROWSIZE_SMALL = 0;
+const sal_Int32 OOX_ARROWSIZE_MEDIUM = 1;
+const sal_Int32 OOX_ARROWSIZE_LARGE = 2;
+
+sal_Int32 lclGetArrowSize( sal_Int32 nToken )
+{
+ OSL_ASSERT((nToken & sal_Int32(0xFFFF0000))==0);
+ switch( nToken )
+ {
+ case XML_sm: return OOX_ARROWSIZE_SMALL;
+ case XML_med: return OOX_ARROWSIZE_MEDIUM;
+ case XML_lg: return OOX_ARROWSIZE_LARGE;
+ }
+ return OOX_ARROWSIZE_MEDIUM;
+}
+
+void lclPushMarkerProperties( ShapePropertyMap& rPropMap,
+ const LineArrowProperties& rArrowProps, sal_Int32 nLineWidth, bool bLineEnd )
+{
+ /* Store the marker polygon and the marker name in a single value, to be
+ able to pass both to the ShapePropertyMap::setProperty() function. */
+ NamedValue aNamedMarker;
+
+ OUStringBuffer aBuffer;
+ sal_Int32 nMarkerWidth = 0;
+ bool bMarkerCenter = false;
+ sal_Int32 nArrowType = rArrowProps.moArrowType.get( XML_none );
+ OSL_ASSERT((nArrowType & sal_Int32(0xFFFF0000))==0);
+ switch( nArrowType )
+ {
+ case XML_triangle:
+ aBuffer.append( "msArrowEnd" );
+ break;
+ case XML_arrow:
+ aBuffer.append( "msArrowOpenEnd" );
+ break;
+ case XML_stealth:
+ aBuffer.append( "msArrowStealthEnd" );
+ break;
+ case XML_diamond:
+ aBuffer.append( "msArrowDiamondEnd" );
+ bMarkerCenter = true;
+ break;
+ case XML_oval:
+ aBuffer.append( "msArrowOvalEnd" );
+ bMarkerCenter = true;
+ break;
+ }
+
+ if( !aBuffer.isEmpty() )
+ {
+ bool bIsArrow = nArrowType == XML_arrow;
+ sal_Int32 nLength = lclGetArrowSize( rArrowProps.moArrowLength.get( XML_med ) );
+ sal_Int32 nWidth = lclGetArrowSize( rArrowProps.moArrowWidth.get( XML_med ) );
+
+ sal_Int32 nNameIndex = nWidth * 3 + nLength + 1;
+ aBuffer.append( ' ' ).append( nNameIndex );
+ if (bIsArrow)
+ {
+ // Arrow marker form depends also on line width
+ aBuffer.append(' ').append(nLineWidth);
+ }
+ OUString aMarkerName = aBuffer.makeStringAndClear();
+
+ double fArrowLength = 1.0;
+ switch( nLength )
+ {
+ case OOX_ARROWSIZE_SMALL: fArrowLength = (bIsArrow ? 2.5 : 2.0); break;
+ case OOX_ARROWSIZE_MEDIUM: fArrowLength = (bIsArrow ? 3.5 : 3.0); break;
+ case OOX_ARROWSIZE_LARGE: fArrowLength = (bIsArrow ? 5.5 : 5.0); break;
+ }
+ double fArrowWidth = 1.0;
+ switch( nWidth )
+ {
+ case OOX_ARROWSIZE_SMALL: fArrowWidth = (bIsArrow ? 2.5 : 2.0); break;
+ case OOX_ARROWSIZE_MEDIUM: fArrowWidth = (bIsArrow ? 3.5 : 3.0); break;
+ case OOX_ARROWSIZE_LARGE: fArrowWidth = (bIsArrow ? 5.5 : 5.0); break;
+ }
+ // set arrow width relative to line width
+ sal_Int32 nBaseLineWidth = ::std::max< sal_Int32 >( nLineWidth, 70 );
+ nMarkerWidth = static_cast<sal_Int32>( fArrowWidth * nBaseLineWidth );
+
+ /* Test if the marker already exists in the marker table, do not
+ create it again in this case. If markers are inserted explicitly
+ instead by their name, the polygon will be created always.
+ TODO: this can be optimized by using a map. */
+ if( !rPropMap.hasNamedLineMarkerInTable( aMarkerName ) )
+ {
+ // pass X and Y as percentage to OOX_ARROW_POINT
+ auto OOX_ARROW_POINT = [fArrowLength, fArrowWidth]( double x, double y ) { return awt::Point( static_cast< sal_Int32 >( fArrowWidth * x ), static_cast< sal_Int32 >( fArrowLength * y ) ); };
+ // tdf#100491 Arrow line marker, unlike other markers, depends on line width.
+ // So calculate width of half line (more convenient during drawing) taking into account
+ // further conversions/scaling done in OOX_ARROW_POINT and scaling to nMarkerWidth.
+ const double fArrowLineHalfWidth = ::std::max< double >( 100.0 * 0.5 * nLineWidth / nMarkerWidth, 1 );
+
+ ::std::vector< awt::Point > aPoints;
+ OSL_ASSERT((rArrowProps.moArrowType.get() & sal_Int32(0xFFFF0000))==0);
+ switch( rArrowProps.moArrowType.get() )
+ {
+ case XML_triangle:
+ aPoints.push_back( OOX_ARROW_POINT( 50, 0 ) );
+ aPoints.push_back( OOX_ARROW_POINT( 100, 100 ) );
+ aPoints.push_back( OOX_ARROW_POINT( 0, 100 ) );
+ aPoints.push_back( OOX_ARROW_POINT( 50, 0 ) );
+ break;
+ case XML_arrow:
+ aPoints.push_back( OOX_ARROW_POINT( 50, 0 ) );
+ aPoints.push_back( OOX_ARROW_POINT( 100, 100 - fArrowLineHalfWidth * 1.5) );
+ aPoints.push_back( OOX_ARROW_POINT( 100 - fArrowLineHalfWidth * 1.5, 100 ) );
+ aPoints.push_back( OOX_ARROW_POINT( 50.0 + fArrowLineHalfWidth, 5.5 * fArrowLineHalfWidth) );
+ aPoints.push_back( OOX_ARROW_POINT( 50.0 + fArrowLineHalfWidth, 100 ) );
+ aPoints.push_back( OOX_ARROW_POINT( 50.0 - fArrowLineHalfWidth, 100 ) );
+ aPoints.push_back( OOX_ARROW_POINT( 50.0 - fArrowLineHalfWidth, 5.5 * fArrowLineHalfWidth) );
+ aPoints.push_back( OOX_ARROW_POINT( fArrowLineHalfWidth * 1.5, 100 ) );
+ aPoints.push_back( OOX_ARROW_POINT( 0, 100 - fArrowLineHalfWidth * 1.5) );
+ aPoints.push_back( OOX_ARROW_POINT( 50, 0 ) );
+ break;
+ case XML_stealth:
+ aPoints.push_back( OOX_ARROW_POINT( 50, 0 ) );
+ aPoints.push_back( OOX_ARROW_POINT( 100, 100 ) );
+ aPoints.push_back( OOX_ARROW_POINT( 50, 60 ) );
+ aPoints.push_back( OOX_ARROW_POINT( 0, 100 ) );
+ aPoints.push_back( OOX_ARROW_POINT( 50, 0 ) );
+ break;
+ case XML_diamond:
+ aPoints.push_back( OOX_ARROW_POINT( 50, 0 ) );
+ aPoints.push_back( OOX_ARROW_POINT( 100, 50 ) );
+ aPoints.push_back( OOX_ARROW_POINT( 50, 100 ) );
+ aPoints.push_back( OOX_ARROW_POINT( 0, 50 ) );
+ aPoints.push_back( OOX_ARROW_POINT( 50, 0 ) );
+ break;
+ case XML_oval:
+ aPoints.push_back( OOX_ARROW_POINT( 50, 0 ) );
+ aPoints.push_back( OOX_ARROW_POINT( 75, 7 ) );
+ aPoints.push_back( OOX_ARROW_POINT( 93, 25 ) );
+ aPoints.push_back( OOX_ARROW_POINT( 100, 50 ) );
+ aPoints.push_back( OOX_ARROW_POINT( 93, 75 ) );
+ aPoints.push_back( OOX_ARROW_POINT( 75, 93 ) );
+ aPoints.push_back( OOX_ARROW_POINT( 50, 100 ) );
+ aPoints.push_back( OOX_ARROW_POINT( 25, 93 ) );
+ aPoints.push_back( OOX_ARROW_POINT( 7, 75 ) );
+ aPoints.push_back( OOX_ARROW_POINT( 0, 50 ) );
+ aPoints.push_back( OOX_ARROW_POINT( 7, 25 ) );
+ aPoints.push_back( OOX_ARROW_POINT( 25, 7 ) );
+ aPoints.push_back( OOX_ARROW_POINT( 50, 0 ) );
+ break;
+ }
+
+ OSL_ENSURE( !aPoints.empty(), "lclPushMarkerProperties - missing arrow coordinates" );
+ if( !aPoints.empty() )
+ {
+ PolyPolygonBezierCoords aMarkerCoords;
+ aMarkerCoords.Coordinates = { comphelper::containerToSequence( aPoints ) };
+
+ ::std::vector< PolygonFlags > aFlags( aPoints.size(), PolygonFlags_NORMAL );
+ aMarkerCoords.Flags = { comphelper::containerToSequence( aFlags ) };
+
+ aNamedMarker.Name = aMarkerName;
+ aNamedMarker.Value <<= aMarkerCoords;
+ }
+ }
+ else
+ {
+ /* Named marker object exists already in the marker table, pass
+ its name only. This will set the name as property value, but
+ does not create a new object in the marker table. */
+ aNamedMarker.Name = aMarkerName;
+ }
+ }
+
+ // push the properties (filled aNamedMarker.Name indicates valid marker)
+ if( aNamedMarker.Name.isEmpty() )
+ return;
+
+ if( bLineEnd )
+ {
+ rPropMap.setProperty( ShapeProperty::LineEnd, aNamedMarker );
+ rPropMap.setProperty( ShapeProperty::LineEndWidth, nMarkerWidth );
+ rPropMap.setProperty( ShapeProperty::LineEndCenter, bMarkerCenter );
+ }
+ else
+ {
+ rPropMap.setProperty( ShapeProperty::LineStart, aNamedMarker );
+ rPropMap.setProperty( ShapeProperty::LineStartWidth, nMarkerWidth );
+ rPropMap.setProperty( ShapeProperty::LineStartCenter, bMarkerCenter );
+ }
+}
+
+} // namespace
+
+void LineArrowProperties::assignUsed( const LineArrowProperties& rSourceProps )
+{
+ moArrowType.assignIfUsed( rSourceProps.moArrowType );
+ moArrowWidth.assignIfUsed( rSourceProps.moArrowWidth );
+ moArrowLength.assignIfUsed( rSourceProps.moArrowLength );
+}
+
+void LineProperties::assignUsed( const LineProperties& rSourceProps )
+{
+ maStartArrow.assignUsed( rSourceProps.maStartArrow );
+ maEndArrow.assignUsed( rSourceProps.maEndArrow );
+ maLineFill.assignUsed( rSourceProps.maLineFill );
+ if( !rSourceProps.maCustomDash.empty() )
+ maCustomDash = rSourceProps.maCustomDash;
+ moLineWidth.assignIfUsed( rSourceProps.moLineWidth );
+ moPresetDash.assignIfUsed( rSourceProps.moPresetDash );
+ moLineCompound.assignIfUsed( rSourceProps.moLineCompound );
+ moLineCap.assignIfUsed( rSourceProps.moLineCap );
+ moLineJoint.assignIfUsed( rSourceProps.moLineJoint );
+}
+
+void LineProperties::pushToPropMap( ShapePropertyMap& rPropMap,
+ const GraphicHelper& rGraphicHelper, ::Color nPhClr ) const
+{
+ // line fill type must exist, otherwise ignore other properties
+ if( !maLineFill.moFillType.has() )
+ return;
+
+ // line style (our core only supports none and solid)
+ drawing::LineStyle eLineStyle = (maLineFill.moFillType.get() == XML_noFill) ? drawing::LineStyle_NONE : drawing::LineStyle_SOLID;
+
+ // line width in 1/100mm
+ sal_Int32 nLineWidth = getLineWidth(); // includes conversion from EMUs to 1/100mm
+ rPropMap.setProperty( ShapeProperty::LineWidth, nLineWidth );
+
+ // line cap type
+ LineCap eLineCap = moLineCap.has() ? lclGetLineCap( moLineCap.get() ) : LineCap_BUTT;
+ if( moLineCap.has() )
+ rPropMap.setProperty( ShapeProperty::LineCap, eLineCap );
+
+ // create line dash from preset dash token or dash stop vector (not for invisible line)
+ if( (eLineStyle != drawing::LineStyle_NONE) && (moPresetDash.differsFrom( XML_solid ) || !maCustomDash.empty()) )
+ {
+ LineDash aLineDash;
+ aLineDash.Style = lclGetDashStyle( moLineCap.get( XML_flat ) );
+
+ if(moPresetDash.differsFrom(XML_solid))
+ lclConvertPresetDash(aLineDash, moPresetDash.get(XML_dash));
+ else // !maCustomDash.empty()
+ {
+ lclConvertCustomDash(aLineDash, maCustomDash);
+ lclRecoverStandardDashStyles(aLineDash, nLineWidth);
+ }
+
+ // In MS Office (2020) for preset dash style line caps round and square are included in dash length.
+ // For custom dash style round line cap is included, square line cap is added. In ODF line caps are
+ // always added to dash length. Tweak the length accordingly.
+ if (eLineCap == LineCap_ROUND || (eLineCap == LineCap_SQUARE && maCustomDash.empty()))
+ {
+ // Cannot use -100 because that results in 0 length in some cases and
+ // LibreOffice interprets 0 length as 100%.
+ if (aLineDash.DotLen >= 100 || aLineDash.DashLen >= 100)
+ aLineDash.Distance += 99;
+ if (aLineDash.DotLen >= 100)
+ aLineDash.DotLen -= 99;
+ if (aLineDash.DashLen >= 100)
+ aLineDash.DashLen -= 99;
+ }
+
+ if( rPropMap.setProperty( ShapeProperty::LineDash, aLineDash ) )
+ eLineStyle = drawing::LineStyle_DASH;
+ }
+
+ // set final line style property
+ rPropMap.setProperty( ShapeProperty::LineStyle, eLineStyle );
+
+ // line joint type
+ if( moLineJoint.has() )
+ rPropMap.setProperty( ShapeProperty::LineJoint, lclGetLineJoint( moLineJoint.get() ) );
+
+ // line color and transparence
+ Color aLineColor = maLineFill.getBestSolidColor();
+ if( aLineColor.isUsed() )
+ {
+ rPropMap.setProperty( ShapeProperty::LineColor, aLineColor.getColor( rGraphicHelper, nPhClr ) );
+ if( aLineColor.hasTransparency() )
+ rPropMap.setProperty( ShapeProperty::LineTransparency, aLineColor.getTransparency() );
+ }
+
+ // line markers
+ lclPushMarkerProperties( rPropMap, maStartArrow, nLineWidth, false );
+ lclPushMarkerProperties( rPropMap, maEndArrow, nLineWidth, true );
+}
+
+drawing::LineStyle LineProperties::getLineStyle() const
+{
+ // rules to calculate the line style inferred from the code in LineProperties::pushToPropMap
+ return (maLineFill.moFillType.get() == XML_noFill) ?
+ drawing::LineStyle_NONE :
+ (moPresetDash.differsFrom( XML_solid ) || (!moPresetDash && !maCustomDash.empty())) ?
+ drawing::LineStyle_DASH :
+ drawing::LineStyle_SOLID;
+}
+
+drawing::LineCap LineProperties::getLineCap() const
+{
+ if( moLineCap.has() )
+ return lclGetLineCap( moLineCap.get() );
+
+ return drawing::LineCap_BUTT;
+}
+
+drawing::LineJoint LineProperties::getLineJoint() const
+{
+ if( moLineJoint.has() )
+ return lclGetLineJoint( moLineJoint.get() );
+
+ return drawing::LineJoint_NONE;
+}
+
+sal_Int32 LineProperties::getLineWidth() const
+{
+ return convertEmuToHmm( moLineWidth.get( 0 ) );
+}
+
+} // namespace oox
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/oox/source/drawingml/linepropertiescontext.cxx b/oox/source/drawingml/linepropertiescontext.cxx
new file mode 100644
index 000000000..19f713421
--- /dev/null
+++ b/oox/source/drawingml/linepropertiescontext.cxx
@@ -0,0 +1,137 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ *
+ * This file incorporates work covered by the following license notice:
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed
+ * with this work for additional information regarding copyright
+ * ownership. The ASF licenses this file to you under the Apache
+ * License, Version 2.0 (the "License"); you may not use this file
+ * except in compliance with the License. You may obtain a copy of
+ * the License at http://www.apache.org/licenses/LICENSE-2.0 .
+ */
+
+#include <drawingml/linepropertiescontext.hxx>
+#include <drawingml/misccontexts.hxx>
+#include <drawingml/lineproperties.hxx>
+#include <oox/helper/attributelist.hxx>
+#include <oox/token/namespaces.hxx>
+#include <oox/token/tokens.hxx>
+
+using namespace ::oox::core;
+using namespace ::com::sun::star::uno;
+using namespace ::com::sun::star::xml::sax;
+
+// CT_LineProperties
+
+namespace oox::drawingml {
+
+LinePropertiesContext::LinePropertiesContext( ContextHandler2Helper const & rParent, const AttributeList& rAttribs,
+ LineProperties& rLineProperties ) noexcept
+: ContextHandler2( rParent )
+, mrLineProperties( rLineProperties )
+{
+ mrLineProperties.moLineWidth = rAttribs.getInteger( XML_w );
+ mrLineProperties.moLineCompound = rAttribs.getToken( XML_cmpd );
+ mrLineProperties.moLineCap = rAttribs.getToken( XML_cap );
+}
+
+LinePropertiesContext::~LinePropertiesContext()
+{
+}
+
+ContextHandlerRef LinePropertiesContext::onCreateContext( sal_Int32 nElement, const AttributeList& rAttribs )
+{
+ switch( nElement )
+ {
+ // LineFillPropertiesGroup
+ case A_TOKEN( noFill ):
+ case A_TOKEN( solidFill ):
+ case A_TOKEN( gradFill ):
+ case A_TOKEN( pattFill ):
+ return FillPropertiesContext::createFillContext( *this, nElement, rAttribs, mrLineProperties.maLineFill );
+ break;
+
+ // LineDashPropertiesGroup
+ case A_TOKEN( prstDash ): // CT_PresetLineDashProperties
+ mrLineProperties.moPresetDash = rAttribs.getToken( XML_val );
+ break;
+ case A_TOKEN( custDash ): // CT_DashStopList
+ return this;
+ case A_TOKEN( ds ):
+ {
+ // 'a:ds' has 2 attributes : 'd' and 'sp'
+ // both are of type 'a:ST_PositivePercentage'
+ // according to the specs Office will read percentages formatted with a trailing percent sign
+ // or formatted as 1000th of a percent without a trailing percent sign, but only write percentages
+ // as 1000th's of a percent without a trailing percent sign.
+ // The code below takes care of both scenarios by converting to '1000th of a percent' always
+ OUString aStr;
+ sal_Int32 nDash = 0;
+ aStr = rAttribs.getString( XML_d, "" );
+ if ( aStr.endsWith("%") )
+ {
+ // Ends with a '%'
+ aStr = aStr.copy(0, aStr.getLength() - 1);
+ aStr = aStr.trim();
+ nDash = aStr.toInt32();
+
+ // Convert to 1000th of a percent
+ nDash *= 1000;
+ }
+ else
+ {
+ nDash = rAttribs.getInteger( XML_d, 0 );
+ }
+
+ sal_Int32 nSp = 0;
+ aStr = rAttribs.getString( XML_sp, "" );
+ if ( aStr.endsWith("%") )
+ {
+ // Ends with a '%'
+ aStr = aStr.copy(0, aStr.getLength() - 1);
+ aStr = aStr.trim();
+ nSp = aStr.toInt32();
+
+ // Convert to 1000th of a percent
+ nSp *= 1000;
+ }
+ else
+ {
+ nSp = rAttribs.getInteger( XML_sp, 0 );
+ }
+
+ mrLineProperties.maCustomDash.emplace_back( nDash, nSp );
+ }
+ break;
+
+ // LineJoinPropertiesGroup
+ case A_TOKEN( round ):
+ case A_TOKEN( bevel ):
+ case A_TOKEN( miter ):
+ mrLineProperties.moLineJoint = getBaseToken( nElement );
+ break;
+
+ case A_TOKEN( headEnd ): // CT_LineEndProperties
+ case A_TOKEN( tailEnd ): // CT_LineEndProperties
+ { // ST_LineEndType
+ bool bTailEnd = nElement == A_TOKEN( tailEnd );
+ LineArrowProperties& rArrowProps = bTailEnd ? mrLineProperties.maEndArrow : mrLineProperties.maStartArrow;
+ rArrowProps.moArrowType = rAttribs.getToken( XML_type );
+ rArrowProps.moArrowWidth = rAttribs.getToken( XML_w );
+ rArrowProps.moArrowLength = rAttribs.getToken( XML_len );
+ }
+ break;
+ }
+ return nullptr;
+}
+
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/oox/source/drawingml/misccontexts.cxx b/oox/source/drawingml/misccontexts.cxx
new file mode 100644
index 000000000..66d92ec06
--- /dev/null
+++ b/oox/source/drawingml/misccontexts.cxx
@@ -0,0 +1,386 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ *
+ * This file incorporates work covered by the following license notice:
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed
+ * with this work for additional information regarding copyright
+ * ownership. The ASF licenses this file to you under the Apache
+ * License, Version 2.0 (the "License"); you may not use this file
+ * except in compliance with the License. You may obtain a copy of
+ * the License at http://www.apache.org/licenses/LICENSE-2.0 .
+ */
+
+#include <drawingml/misccontexts.hxx>
+#include <oox/helper/attributelist.hxx>
+#include <oox/helper/graphichelper.hxx>
+#include <oox/core/xmlfilterbase.hxx>
+#include <oox/drawingml/drawingmltypes.hxx>
+#include <drawingml/fillproperties.hxx>
+#include <oox/token/namespaces.hxx>
+#include <oox/token/tokens.hxx>
+#include <vcl/GraphicExternalLink.hxx>
+#include <vcl/graph.hxx>
+
+using namespace ::com::sun::star;
+using namespace ::com::sun::star::uno;
+using namespace ::com::sun::star::xml::sax;
+using ::oox::core::ContextHandler2;
+using ::oox::core::ContextHandlerRef;
+
+namespace oox::drawingml {
+
+SolidFillContext::SolidFillContext( ContextHandler2Helper const & rParent,
+ FillProperties& rFillProps ) :
+ ColorContext( rParent, rFillProps.maFillColor )
+{
+}
+
+GradientFillContext::GradientFillContext( ContextHandler2Helper const & rParent,
+ const AttributeList& rAttribs, GradientFillProperties& rGradientProps ) :
+ ContextHandler2( rParent ),
+ mrGradientProps( rGradientProps )
+{
+ mrGradientProps.moShadeFlip = rAttribs.getToken( XML_flip );
+ mrGradientProps.moRotateWithShape = rAttribs.getBool( XML_rotWithShape );
+}
+
+ContextHandlerRef GradientFillContext::onCreateContext(
+ sal_Int32 nElement, const AttributeList& rAttribs )
+{
+ switch( nElement )
+ {
+ case A_TOKEN( gsLst ):
+ return this; // for gs elements
+
+ case A_TOKEN( gs ):
+ if( rAttribs.hasAttribute( XML_pos ) )
+ {
+ double fPosition = getLimitedValue< double >( rAttribs.getDouble( XML_pos, 0.0 ) / 100000.0, 0.0, 1.0 );
+ auto aElement = mrGradientProps.maGradientStops.emplace( fPosition, Color() );
+ return new ColorContext( *this, aElement->second );
+ }
+ break;
+
+ case A_TOKEN( lin ):
+ mrGradientProps.moShadeAngle = rAttribs.getInteger( XML_ang );
+ mrGradientProps.moShadeScaled = rAttribs.getBool( XML_scaled );
+ break;
+
+ case A_TOKEN( path ):
+ // always set a path type, this disables linear gradient in conversion
+ mrGradientProps.moGradientPath = rAttribs.getToken( XML_path, XML_rect );
+ return this; // for fillToRect element
+
+ case A_TOKEN( fillToRect ):
+ mrGradientProps.moFillToRect = GetRelativeRect( rAttribs.getFastAttributeList() );
+ break;
+
+ case A_TOKEN( tileRect ):
+ mrGradientProps.moTileRect = GetRelativeRect( rAttribs.getFastAttributeList() );
+ break;
+ }
+ return nullptr;
+}
+
+PatternFillContext::PatternFillContext( ContextHandler2Helper const & rParent,
+ const AttributeList& rAttribs, PatternFillProperties& rPatternProps ) :
+ ContextHandler2( rParent ),
+ mrPatternProps( rPatternProps )
+{
+ mrPatternProps.moPattPreset = rAttribs.getToken( XML_prst );
+}
+
+ContextHandlerRef PatternFillContext::onCreateContext(
+ sal_Int32 nElement, const AttributeList& )
+{
+ switch( nElement )
+ {
+ case A_TOKEN( bgClr ):
+ return new ColorContext( *this, mrPatternProps.maPattBgColor );
+ case A_TOKEN( fgClr ):
+ return new ColorContext( *this, mrPatternProps.maPattFgColor );
+ }
+ return nullptr;
+}
+
+ColorChangeContext::ColorChangeContext( ContextHandler2Helper const & rParent,
+ const AttributeList& rAttribs, BlipFillProperties& rBlipProps ) :
+ ContextHandler2( rParent ),
+ mrBlipProps( rBlipProps )
+{
+ mrBlipProps.maColorChangeFrom.setUnused();
+ mrBlipProps.maColorChangeTo.setUnused();
+ mbUseAlpha = rAttribs.getBool( XML_useA, true );
+}
+
+ColorChangeContext::~ColorChangeContext()
+{
+ if( !mbUseAlpha )
+ mrBlipProps.maColorChangeTo.clearTransparence();
+}
+
+ContextHandlerRef ColorChangeContext::onCreateContext(
+ sal_Int32 nElement, const AttributeList& )
+{
+ switch( nElement )
+ {
+ case A_TOKEN( clrFrom ):
+ return new ColorContext( *this, mrBlipProps.maColorChangeFrom );
+ case A_TOKEN( clrTo ):
+ return new ColorContext( *this, mrBlipProps.maColorChangeTo );
+ }
+ return nullptr;
+}
+
+BlipContext::BlipContext( ContextHandler2Helper const & rParent,
+ const AttributeList& rAttribs, BlipFillProperties& rBlipProps ) :
+ ContextHandler2( rParent ),
+ mrBlipProps( rBlipProps )
+{
+ if( rAttribs.hasAttribute( R_TOKEN( embed ) ) )
+ {
+ // internal picture URL
+ OUString aFragmentPath = getFragmentPathFromRelId( rAttribs.getString( R_TOKEN( embed ), OUString() ) );
+ if (!aFragmentPath.isEmpty())
+ mrBlipProps.mxFillGraphic = getFilter().getGraphicHelper().importEmbeddedGraphic( aFragmentPath );
+ }
+ else if( rAttribs.hasAttribute( R_TOKEN( link ) ) )
+ {
+ // external URL
+
+ // we will embed this link, this is better than just doing nothing...
+ // TODO: import this graphic as real link, but this requires some
+ // code rework.
+ OUString aRelId = rAttribs.getString( R_TOKEN( link ), OUString() );
+ OUString aTargetLink = getFilter().getAbsoluteUrl( getRelations().getExternalTargetFromRelId( aRelId ) );
+ GraphicExternalLink aLink(aTargetLink);
+ Graphic aGraphic(aLink);
+ mrBlipProps.mxFillGraphic = aGraphic.GetXGraphic();
+ }
+}
+
+ContextHandlerRef BlipContext::onCreateContext(
+ sal_Int32 nElement, const AttributeList& rAttribs )
+{
+ switch( nElement )
+ {
+ case A_TOKEN( biLevel ):
+ mrBlipProps.moBiLevelThreshold = rAttribs.getInteger( XML_thresh );
+ mrBlipProps.moColorEffect = getBaseToken(nElement);
+ break;
+
+ case A_TOKEN( grayscl ):
+ mrBlipProps.moColorEffect = getBaseToken( nElement );
+ break;
+
+ case A_TOKEN( clrChange ):
+ return new ColorChangeContext( *this, rAttribs, mrBlipProps );
+
+ case A_TOKEN( duotone ):
+ return new DuotoneContext( *this, mrBlipProps );
+
+ case A_TOKEN( extLst ):
+ return new BlipExtensionContext( *this, mrBlipProps );
+
+ case A_TOKEN( lum ):
+ mrBlipProps.moBrightness = rAttribs.getInteger( XML_bright );
+ mrBlipProps.moContrast = rAttribs.getInteger( XML_contrast );
+ break;
+ case A_TOKEN( alphaModFix ):
+ mrBlipProps.moAlphaModFix = rAttribs.getInteger(XML_amt);
+ break;
+ }
+ return nullptr;
+}
+
+DuotoneContext::DuotoneContext( ContextHandler2Helper const & rParent,
+ BlipFillProperties& rBlipProps ) :
+ ContextHandler2( rParent ),
+ mrBlipProps( rBlipProps ),
+ mnColorIndex( 0 )
+{
+ mrBlipProps.maDuotoneColors[0].setUnused();
+ mrBlipProps.maDuotoneColors[1].setUnused();
+}
+
+DuotoneContext::~DuotoneContext()
+{
+}
+
+::oox::core::ContextHandlerRef DuotoneContext::onCreateContext(
+ sal_Int32 /*nElement*/, const AttributeList& /*rAttribs*/ )
+{
+ if( mnColorIndex < 2 )
+ return new ColorValueContext( *this, mrBlipProps.maDuotoneColors[mnColorIndex++] );
+ return nullptr;
+}
+
+BlipFillContext::BlipFillContext( ContextHandler2Helper const & rParent,
+ const AttributeList& rAttribs, BlipFillProperties& rBlipProps ) :
+ ContextHandler2( rParent ),
+ mrBlipProps( rBlipProps )
+{
+ mrBlipProps.moRotateWithShape = rAttribs.getBool( XML_rotWithShape );
+}
+
+ContextHandlerRef BlipFillContext::onCreateContext(
+ sal_Int32 nElement, const AttributeList& rAttribs )
+{
+ switch( nElement )
+ {
+ case A_TOKEN( blip ):
+ return new BlipContext( *this, rAttribs, mrBlipProps );
+
+ case A_TOKEN( srcRect ):
+ mrBlipProps.moClipRect = GetRelativeRect( rAttribs.getFastAttributeList() );
+ break;
+
+ case A_TOKEN( tile ):
+ mrBlipProps.moBitmapMode = getBaseToken( nElement );
+ mrBlipProps.moTileOffsetX = rAttribs.getInteger( XML_tx );
+ mrBlipProps.moTileOffsetY = rAttribs.getInteger( XML_ty );
+ mrBlipProps.moTileScaleX = rAttribs.getInteger( XML_sx );
+ mrBlipProps.moTileScaleY = rAttribs.getInteger( XML_sy );
+ mrBlipProps.moTileAlign = rAttribs.getToken( XML_algn );
+ mrBlipProps.moTileFlip = rAttribs.getToken( XML_flip );
+ break;
+
+ case A_TOKEN( stretch ):
+ mrBlipProps.moBitmapMode = getBaseToken( nElement );
+ return this; // for fillRect element
+
+ case A_TOKEN( fillRect ):
+ mrBlipProps.moFillRect = GetRelativeRect( rAttribs.getFastAttributeList() );
+ break;
+ }
+ return nullptr;
+}
+
+FillPropertiesContext::FillPropertiesContext( ContextHandler2Helper const & rParent, FillProperties& rFillProps ) :
+ ContextHandler2( rParent ),
+ mrFillProps( rFillProps )
+{
+}
+
+ContextHandlerRef FillPropertiesContext::onCreateContext(
+ sal_Int32 nElement, const AttributeList& rAttribs )
+{
+ return createFillContext( *this, nElement, rAttribs, mrFillProps );
+}
+
+ContextHandlerRef FillPropertiesContext::createFillContext(
+ ContextHandler2Helper const & rParent, sal_Int32 nElement,
+ const AttributeList& rAttribs, FillProperties& rFillProps )
+{
+ switch( nElement )
+ {
+ case A_TOKEN( noFill ): { rFillProps.moFillType = getBaseToken( nElement ); return nullptr; };
+ case A_TOKEN( solidFill ): { rFillProps.moFillType = getBaseToken( nElement ); return new SolidFillContext( rParent, rFillProps ); };
+ case A_TOKEN( gradFill ): { rFillProps.moFillType = getBaseToken( nElement ); return new GradientFillContext( rParent, rAttribs, rFillProps.maGradientProps ); };
+ case A_TOKEN( pattFill ): { rFillProps.moFillType = getBaseToken( nElement ); return new PatternFillContext( rParent, rAttribs, rFillProps.maPatternProps ); };
+ case A_TOKEN( blipFill ): { rFillProps.moFillType = getBaseToken( nElement ); return new BlipFillContext( rParent, rAttribs, rFillProps.maBlipProps ); };
+ case A_TOKEN( grpFill ): { rFillProps.moFillType = getBaseToken( nElement ); return nullptr; }; // TODO
+ }
+ return nullptr;
+}
+
+SimpleFillPropertiesContext::SimpleFillPropertiesContext( ContextHandler2Helper const & rParent, Color& rColor ) :
+ FillPropertiesContext( rParent, *this ),
+ mrColor( rColor )
+{
+}
+
+SimpleFillPropertiesContext::~SimpleFillPropertiesContext()
+{
+ mrColor = getBestSolidColor();
+}
+
+BlipExtensionContext::BlipExtensionContext( ContextHandler2Helper const & rParent, BlipFillProperties& rBlipProps ) :
+ ContextHandler2( rParent ),
+ mrBlipProps( rBlipProps )
+{
+}
+
+BlipExtensionContext::~BlipExtensionContext()
+{
+}
+
+ContextHandlerRef BlipExtensionContext::onCreateContext(
+ sal_Int32 nElement, const AttributeList& )
+{
+ switch( nElement )
+ {
+ case A_TOKEN( ext ):
+ return new BlipExtensionContext( *this, mrBlipProps );
+
+ case OOX_TOKEN( a14, imgProps ):
+ return new ArtisticEffectContext( *this, mrBlipProps.maEffect );
+ }
+ return nullptr;
+}
+
+ArtisticEffectContext::ArtisticEffectContext( ContextHandler2Helper const & rParent, ArtisticEffectProperties& rEffect ) :
+ ContextHandler2( rParent ),
+ maEffect( rEffect )
+{
+}
+
+ArtisticEffectContext::~ArtisticEffectContext()
+{
+}
+
+ContextHandlerRef ArtisticEffectContext::onCreateContext(
+ sal_Int32 nElement, const AttributeList& rAttribs )
+{
+ // containers
+ if( nElement == OOX_TOKEN( a14, imgLayer ) )
+ {
+ if( rAttribs.hasAttribute( R_TOKEN( embed ) ) )
+ {
+ OUString aFragmentPath = getFragmentPathFromRelId( rAttribs.getString( R_TOKEN( embed ), OUString() ) );
+ if( !aFragmentPath.isEmpty() )
+ {
+ getFilter().importBinaryData( maEffect.mrOleObjectInfo.maEmbeddedData, aFragmentPath );
+ maEffect.mrOleObjectInfo.maProgId = aFragmentPath;
+ }
+ }
+ return new ArtisticEffectContext( *this, maEffect );
+ }
+ if( nElement == OOX_TOKEN( a14, imgEffect ) )
+ return new ArtisticEffectContext( *this, maEffect );
+
+ // effects
+ maEffect.msName = ArtisticEffectProperties::getEffectString( nElement );
+ if( maEffect.isEmpty() )
+ return nullptr;
+
+ // effect attributes
+ sal_Int32 const aAttribs[19] = {
+ XML_visible, XML_trans, XML_crackSpacing, XML_pressure, XML_numberOfShades,
+ XML_grainSize, XML_intensity, XML_smoothness, XML_gridSize, XML_pencilSize,
+ XML_size, XML_brushSize, XML_scaling, XML_detail, XML_bright, XML_contrast,
+ XML_colorTemp, XML_sat, XML_amount
+ };
+ for(sal_Int32 nAttrib : aAttribs)
+ {
+ if( rAttribs.hasAttribute( nAttrib ) )
+ {
+ OUString sName = ArtisticEffectProperties::getEffectString( nAttrib );
+ if( !sName.isEmpty() )
+ maEffect.maAttribs[sName] <<= rAttribs.getInteger( nAttrib, 0 );
+ }
+ }
+
+ return nullptr;
+}
+
+} // namespace oox::drawingml
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/oox/source/drawingml/objectdefaultcontext.cxx b/oox/source/drawingml/objectdefaultcontext.cxx
new file mode 100644
index 000000000..bdb30090e
--- /dev/null
+++ b/oox/source/drawingml/objectdefaultcontext.cxx
@@ -0,0 +1,53 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ *
+ * This file incorporates work covered by the following license notice:
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed
+ * with this work for additional information regarding copyright
+ * ownership. The ASF licenses this file to you under the Apache
+ * License, Version 2.0 (the "License"); you may not use this file
+ * except in compliance with the License. You may obtain a copy of
+ * the License at http://www.apache.org/licenses/LICENSE-2.0 .
+ */
+
+#include <drawingml/objectdefaultcontext.hxx>
+#include <drawingml/spdefcontext.hxx>
+#include <oox/drawingml/theme.hxx>
+#include <oox/token/namespaces.hxx>
+
+using namespace ::oox::core;
+using namespace ::com::sun::star::uno;
+using namespace ::com::sun::star::xml::sax;
+
+namespace oox::drawingml {
+
+objectDefaultContext::objectDefaultContext( ContextHandler2Helper const & rParent, Theme& rTheme )
+: ContextHandler2( rParent )
+, mrTheme( rTheme )
+{
+}
+
+ContextHandlerRef objectDefaultContext::onCreateContext( sal_Int32 aElementToken, const AttributeList& /* rAttribs */ )
+{
+ switch( aElementToken )
+ {
+ case A_TOKEN( spDef ):
+ return new spDefContext( *this, mrTheme.getSpDef() );
+ case A_TOKEN( lnDef ):
+ return new spDefContext( *this, mrTheme.getLnDef() );
+ case A_TOKEN( txDef ):
+ return new spDefContext( *this, mrTheme.getTxDef() );
+ }
+ return nullptr;
+}
+
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/oox/source/drawingml/presetgeometrynames.cxx b/oox/source/drawingml/presetgeometrynames.cxx
new file mode 100644
index 000000000..04dff605c
--- /dev/null
+++ b/oox/source/drawingml/presetgeometrynames.cxx
@@ -0,0 +1,114 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4; fill-column: 100 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ */
+
+#include <rtl/string.hxx>
+#include <rtl/ustring.hxx>
+#include <unordered_map>
+#include <cstring>
+#include <drawingml/presetgeometrynames.hxx>
+#include <memory>
+
+namespace
+{
+typedef std::unordered_map<const char*, const char*, rtl::CStringHash, rtl::CStringEqual>
+ PresetGeometryHashMap;
+
+struct PresetGeometryName
+{
+ const char* pMsoName;
+ const char* pFontworkType;
+};
+
+const PresetGeometryName pPresetGeometryNameArray[]
+ = { { "textNoShape", "" },
+ { "textPlain", "fontwork-plain-text" },
+ { "textStop", "fontwork-stop" },
+ { "textTriangle", "fontwork-triangle-up" },
+ { "textTriangleInverted", "fontwork-triangle-down" },
+ { "textChevron", "fontwork-chevron-up" },
+ { "textChevronInverted", "fontwork-chevron-down" },
+ { "textRingInside", "mso-spt142" },
+ { "textRingOutside", "mso-spt143" },
+ { "textArchUp", "fontwork-arch-up-curve" },
+ { "textArchDown", "fontwork-arch-down-curve" },
+ { "textCircle", "fontwork-circle-curve" },
+ { "textButton", "fontwork-open-circle-curve" },
+ { "textArchUpPour", "fontwork-arch-up-pour" },
+ { "textArchDownPour", "fontwork-arch-down-pour" },
+ { "textCirclePour", "fontwork-circle-pour" },
+ { "textButtonPour", "fontwork-open-circle-pour" },
+ { "textCurveUp", "fontwork-curve-up" },
+ { "textCurveDown", "fontwork-curve-down" },
+ { "textCanUp", "mso-spt174" },
+ { "textCanDown", "mso-spt175" },
+ { "textWave1", "fontwork-wave" },
+ { "textWave2", "mso-spt157" },
+ { "textDoubleWave1", "mso-spt158" },
+ { "textWave4", "mso-spt159" },
+ { "textInflate", "fontwork-inflate" },
+ { "textDeflate", "mso-spt161" },
+ { "textInflateBottom", "mso-spt162" },
+ { "textDeflateBottom", "mso-spt163" },
+ { "textInflateTop", "mso-spt164" },
+ { "textDeflateTop", "mso-spt165" },
+ { "textDeflateInflate", "mso-spt166" },
+ { "textDeflateInflateDeflate", "mso-spt167" },
+ { "textFadeRight", "fontwork-fade-right" },
+ { "textFadeLeft", "fontwork-fade-left" },
+ { "textFadeUp", "fontwork-fade-up" },
+ { "textFadeDown", "fontwork-fade-down" },
+ { "textSlantUp", "fontwork-slant-up" },
+ { "textSlantDown", "fontwork-slant-down" },
+ { "textCascadeUp", "fontwork-fade-up-and-right" },
+ { "textCascadeDown", "fontwork-fade-up-and-left" } };
+}
+
+OUString PresetGeometryTypeNames::GetFontworkType(const OUString& rMsoType)
+{
+ static const PresetGeometryHashMap s_HashMap = []() {
+ PresetGeometryHashMap aH;
+ for (const auto& item : pPresetGeometryNameArray)
+ aH[item.pMsoName] = item.pFontworkType;
+ return aH;
+ }();
+ const char* pRetValue = "";
+ int i, nLen = rMsoType.getLength();
+ std::unique_ptr<char[]> pBuf(new char[nLen + 1]);
+ for (i = 0; i < nLen; i++)
+ pBuf[i] = static_cast<char>(rMsoType[i]);
+ pBuf[i] = 0;
+ PresetGeometryHashMap::const_iterator aHashIter(s_HashMap.find(pBuf.get()));
+ if (aHashIter != s_HashMap.end())
+ pRetValue = (*aHashIter).second;
+
+ return OUString(pRetValue, strlen(pRetValue), RTL_TEXTENCODING_ASCII_US);
+}
+
+OUString PresetGeometryTypeNames::GetMsoName(const OUString& rFontworkType)
+{
+ static const PresetGeometryHashMap s_HashMapInv = []() {
+ PresetGeometryHashMap aHInv;
+ for (const auto& item : pPresetGeometryNameArray)
+ aHInv[item.pFontworkType] = item.pMsoName;
+ return aHInv;
+ }();
+ const char* pRetValue = "";
+ int i, nLen = rFontworkType.getLength();
+ std::unique_ptr<char[]> pBuf(new char[nLen + 1]);
+ for (i = 0; i < nLen; i++)
+ pBuf[i] = static_cast<char>(rFontworkType[i]);
+ pBuf[i] = 0;
+ PresetGeometryHashMap::const_iterator aHashIter(s_HashMapInv.find(pBuf.get()));
+ if (aHashIter != s_HashMapInv.end())
+ pRetValue = (*aHashIter).second;
+
+ return OUString(pRetValue, strlen(pRetValue), RTL_TEXTENCODING_ASCII_US);
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab cinoptions=b1,g0,N-s cinkeys+=0=break: */
diff --git a/oox/source/drawingml/scene3dcontext.cxx b/oox/source/drawingml/scene3dcontext.cxx
new file mode 100644
index 000000000..e17893472
--- /dev/null
+++ b/oox/source/drawingml/scene3dcontext.cxx
@@ -0,0 +1,189 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ *
+ * This file incorporates work covered by the following license notice:
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed
+ * with this work for additional information regarding copyright
+ * ownership. The ASF licenses this file to you under the Apache
+ * License, Version 2.0 (the "License"); you may not use this file
+ * except in compliance with the License. You may obtain a copy of
+ * the License at http://www.apache.org/licenses/LICENSE-2.0 .
+ */
+
+#include <drawingml/scene3dcontext.hxx>
+#include <drawingml/colorchoicecontext.hxx>
+#include <oox/helper/attributelist.hxx>
+#include <oox/token/namespaces.hxx>
+#include <oox/token/tokens.hxx>
+
+using namespace ::oox::core;
+using namespace ::com::sun::star;
+using namespace ::com::sun::star::uno;
+using namespace ::com::sun::star::xml::sax;
+
+namespace oox::drawingml {
+
+Scene3DPropertiesContext::Scene3DPropertiesContext( ContextHandler2Helper const & rParent, Shape3DProperties& r3DProperties ) noexcept
+: ContextHandler2( rParent )
+, mr3DProperties( r3DProperties )
+{
+}
+
+ContextHandlerRef Scene3DPropertiesContext::onCreateContext( sal_Int32 aElementToken, const AttributeList& rAttribs )
+{
+ switch( aElementToken )
+ {
+ case A_TOKEN( camera ):
+ if( rAttribs.hasAttribute( XML_fov ) )
+ mr3DProperties.mfFieldOfVision = rAttribs.getInteger( XML_fov, 0 ) / 60000.0; // 60000ths of degree
+ if( rAttribs.hasAttribute( XML_zoom ) )
+ mr3DProperties.mfZoom = rAttribs.getInteger( XML_zoom, 100000 ) / 100000.0;
+ if( rAttribs.hasAttribute( XML_prst ) )
+ mr3DProperties.mnPreset = rAttribs.getToken( XML_prst, XML_none );
+
+ return new Scene3DRotationPropertiesContext( *this, mr3DProperties.maCameraRotation );
+
+ case A_TOKEN( lightRig ):
+ mr3DProperties.mnLightRigDirection = rAttribs.getToken( XML_dir, XML_none );
+ mr3DProperties.mnLightRigType = rAttribs.getToken( XML_rig, XML_none );
+
+ return new Scene3DRotationPropertiesContext( *this, mr3DProperties.maLightRigRotation );
+
+ case A_TOKEN( backdrop ):
+ case A_TOKEN( extLst ):
+ return nullptr; // TODO: later (backdrop is not supported by core anyway)
+ }
+ return nullptr;
+}
+
+SceneText3DPropertiesContext::SceneText3DPropertiesContext( ContextHandler2Helper const & rParent, Text3DProperties& r3DProperties ) noexcept
+: ContextHandler2( rParent )
+, mr3DProperties( r3DProperties )
+{
+}
+
+ContextHandlerRef SceneText3DPropertiesContext::onCreateContext( sal_Int32 aElementToken, const AttributeList& rAttribs )
+{
+ switch( aElementToken )
+ {
+ case A_TOKEN( camera ):
+ if( rAttribs.hasAttribute( XML_fov ) )
+ mr3DProperties.mfFieldOfVision = rAttribs.getInteger( XML_fov, 0 ) / 60000.0; // 60000ths of degree
+ if( rAttribs.hasAttribute( XML_zoom ) )
+ mr3DProperties.mfZoom = rAttribs.getInteger( XML_zoom, 100000 ) / 100000.0;
+ if( rAttribs.hasAttribute( XML_prst ) )
+ mr3DProperties.mnPreset = rAttribs.getToken( XML_prst, XML_none );
+
+ return new Scene3DRotationPropertiesContext( *this, mr3DProperties.maCameraRotation );
+
+ case A_TOKEN( lightRig ):
+ mr3DProperties.mnLightRigDirection = rAttribs.getToken( XML_dir, XML_none );
+ mr3DProperties.mnLightRigType = rAttribs.getToken( XML_rig, XML_none );
+
+ return new Scene3DRotationPropertiesContext( *this, mr3DProperties.maLightRigRotation );
+
+ case A_TOKEN( backdrop ):
+ case A_TOKEN( extLst ):
+ return nullptr; // TODO: later (backdrop is not supported by core anyway)
+
+ case A_TOKEN( bevelT ):
+ case A_TOKEN( bevelB ):
+ {
+ BevelProperties aProps;
+ if( rAttribs.hasAttribute( XML_w ) )
+ aProps.mnWidth = rAttribs.getInteger( XML_w, 0 );
+ if( rAttribs.hasAttribute( XML_h ) )
+ aProps.mnHeight = rAttribs.getInteger( XML_h, 0 );
+ if( rAttribs.hasAttribute( XML_prst ) )
+ aProps.mnPreset = rAttribs.getToken( XML_prst, XML_none );
+
+ if( aElementToken == A_TOKEN( bevelT ) )
+ mr3DProperties.maTopBevelProperties.set( aProps );
+ else
+ mr3DProperties.maBottomBevelProperties.set( aProps );
+ break;
+ }
+
+ case A_TOKEN( extrusionClr ):
+ return new ColorContext( *this, mr3DProperties.maExtrusionColor );
+
+ case A_TOKEN( contourClr ):
+ return new ColorContext( *this, mr3DProperties.maContourColor );
+ }
+ return nullptr;
+}
+
+Shape3DPropertiesContext::Shape3DPropertiesContext( ContextHandler2Helper const & rParent, const AttributeList& rAttribs, Shape3DProperties& r3DProperties ) noexcept
+: ContextHandler2( rParent )
+, mr3DProperties( r3DProperties )
+{
+ if( rAttribs.hasAttribute( XML_extrusionH ) )
+ mr3DProperties.mnExtrusionH = rAttribs.getInteger( XML_extrusionH, 0 );
+ if( rAttribs.hasAttribute( XML_contourW ) )
+ mr3DProperties.mnContourW = rAttribs.getInteger( XML_contourW, 0 );
+ if( rAttribs.hasAttribute( XML_z ) )
+ mr3DProperties.mnShapeZ = rAttribs.getInteger( XML_z, 0 );
+ if( rAttribs.hasAttribute( XML_prstMaterial ) )
+ mr3DProperties.mnMaterial = rAttribs.getToken( XML_prstMaterial, XML_none );
+}
+
+ContextHandlerRef Shape3DPropertiesContext::onCreateContext( sal_Int32 aElementToken, const AttributeList& rAttribs )
+{
+ switch( aElementToken )
+ {
+ case A_TOKEN( bevelT ):
+ case A_TOKEN( bevelB ):
+ {
+ BevelProperties aProps;
+ if( rAttribs.hasAttribute( XML_w ) )
+ aProps.mnWidth = rAttribs.getInteger( XML_w, 0 );
+ if( rAttribs.hasAttribute( XML_h ) )
+ aProps.mnHeight = rAttribs.getInteger( XML_h, 0 );
+ if( rAttribs.hasAttribute( XML_prst ) )
+ aProps.mnPreset = rAttribs.getToken( XML_prst, XML_none );
+
+ if( aElementToken == A_TOKEN( bevelT ) )
+ mr3DProperties.maTopBevelProperties.set( aProps );
+ else
+ mr3DProperties.maBottomBevelProperties.set( aProps );
+
+ break;
+ }
+ case A_TOKEN( extrusionClr ):
+ return new ColorContext( *this, mr3DProperties.maExtrusionColor );
+
+ case A_TOKEN( contourClr ):
+ return new ColorContext( *this, mr3DProperties.maContourColor );
+ }
+ return nullptr;
+}
+
+Scene3DRotationPropertiesContext::Scene3DRotationPropertiesContext( ContextHandler2Helper const & rParent, RotationProperties& rRotationProperties ) noexcept
+: ContextHandler2( rParent )
+, mrRotationProperties( rRotationProperties )
+{
+}
+
+ContextHandlerRef Scene3DRotationPropertiesContext::onCreateContext( sal_Int32 aElementToken, const AttributeList& rAttribs )
+{
+ switch( aElementToken )
+ {
+ case A_TOKEN( rot ):
+ mrRotationProperties.mnLatitude = rAttribs.getInteger( XML_lat, 0 );
+ mrRotationProperties.mnLongitude = rAttribs.getInteger( XML_lon, 0 );
+ mrRotationProperties.mnRevolution = rAttribs.getInteger( XML_rev, 0 );
+ break;
+ }
+ return nullptr;
+}
+
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/oox/source/drawingml/shape.cxx b/oox/source/drawingml/shape.cxx
new file mode 100644
index 000000000..8fefc18fd
--- /dev/null
+++ b/oox/source/drawingml/shape.cxx
@@ -0,0 +1,2368 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ *
+ * This file incorporates work covered by the following license notice:
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed
+ * with this work for additional information regarding copyright
+ * ownership. The ASF licenses this file to you under the Apache
+ * License, Version 2.0 (the "License"); you may not use this file
+ * except in compliance with the License. You may obtain a copy of
+ * the License at http://www.apache.org/licenses/LICENSE-2.0 .
+ */
+
+#include <config_wasm_strip.h>
+
+#include <oox/drawingml/shape.hxx>
+#include <drawingml/customshapeproperties.hxx>
+#include <oox/drawingml/theme.hxx>
+#include <drawingml/fillproperties.hxx>
+#include <drawingml/graphicproperties.hxx>
+#include <drawingml/lineproperties.hxx>
+#include <drawingml/presetgeometrynames.hxx>
+#include <drawingml/shape3dproperties.hxx>
+#include "effectproperties.hxx"
+#include <oox/drawingml/shapepropertymap.hxx>
+#include <drawingml/textbody.hxx>
+#include <drawingml/textparagraph.hxx>
+#include <drawingml/ThemeOverrideFragmentHandler.hxx>
+#include <drawingml/table/tableproperties.hxx>
+#include <oox/drawingml/chart/chartconverter.hxx>
+#include <drawingml/chart/chartspacefragment.hxx>
+#include <drawingml/chart/chartspacemodel.hxx>
+#include <o3tl/safeint.hxx>
+#include <o3tl/unit_conversion.hxx>
+#include <oox/ppt/pptimport.hxx>
+#include <oox/vml/vmldrawing.hxx>
+#include <oox/vml/vmlshape.hxx>
+#include <oox/vml/vmlshapecontainer.hxx>
+#include <oox/core/xmlfilterbase.hxx>
+#include <oox/helper/graphichelper.hxx>
+#include <oox/helper/propertyset.hxx>
+#include <oox/helper/modelobjecthelper.hxx>
+#include <oox/mathml/importutils.hxx>
+#include <oox/mathml/import.hxx>
+#include <oox/token/properties.hxx>
+#include "diagram/datamodel.hxx"
+#include "diagram/diagramhelper.hxx"
+
+#include <comphelper/classids.hxx>
+#include <comphelper/propertysequence.hxx>
+#include <comphelper/propertyvalue.hxx>
+#include <comphelper/sequence.hxx>
+#include <tools/diagnose_ex.h>
+#include <tools/gen.hxx>
+#include <tools/globname.hxx>
+#include <tools/mapunit.hxx>
+#include <editeng/unoprnms.hxx>
+#include <com/sun/star/awt/FontSlant.hpp>
+#include <com/sun/star/awt/Size.hpp>
+#include <com/sun/star/awt/XBitmap.hpp>
+#include <com/sun/star/awt/FontWeight.hpp>
+#include <com/sun/star/graphic/XGraphic.hpp>
+#include <com/sun/star/container/XNamed.hpp>
+#include <com/sun/star/lang/XMultiServiceFactory.hpp>
+#include <com/sun/star/xml/dom/XDocument.hpp>
+#include <com/sun/star/xml/sax/XFastSAXSerializable.hpp>
+#include <com/sun/star/drawing/FillStyle.hpp>
+#include <com/sun/star/drawing/HomogenMatrix3.hpp>
+#include <com/sun/star/drawing/TextVerticalAdjust.hpp>
+#include <com/sun/star/drawing/GraphicExportFilter.hpp>
+#include <com/sun/star/drawing/XShapes.hpp>
+#include <com/sun/star/drawing/EnhancedCustomShapeAdjustmentValue.hpp>
+#include <com/sun/star/drawing/XEnhancedCustomShapeDefaulter.hpp>
+#include <com/sun/star/drawing/EnhancedCustomShapeTextPathMode.hpp>
+#include <com/sun/star/drawing/ConnectorType.hpp>
+#include <com/sun/star/embed/XEmbeddedObject.hpp>
+#include <com/sun/star/text/XText.hpp>
+#include <com/sun/star/table/BorderLine2.hpp>
+#include <com/sun/star/table/ShadowFormat.hpp>
+#include <com/sun/star/chart2/XChartDocument.hpp>
+#include <com/sun/star/style/ParagraphAdjust.hpp>
+#include <com/sun/star/io/XOutputStream.hpp>
+
+#include <basegfx/point/b2dpoint.hxx>
+#include <basegfx/polygon/b2dpolygon.hxx>
+#include <basegfx/matrix/b2dhommatrix.hxx>
+#include <com/sun/star/document/XActionLockable.hpp>
+#include <com/sun/star/chart2/data/XDataReceiver.hpp>
+#include <com/sun/star/text/GraphicCrop.hpp>
+#include <svx/svdobj.hxx>
+#include <svx/svdotable.hxx>
+#include <svx/svdtrans.hxx>
+#include <tools/stream.hxx>
+#include <unotools/streamwrap.hxx>
+#include <unotools/fltrcfg.hxx>
+#include <vcl/graph.hxx>
+#include <vcl/graphicfilter.hxx>
+#include <vcl/svapp.hxx>
+#include <vcl/wmfexternal.hxx>
+#include <sal/log.hxx>
+#include <svx/sdtaitm.hxx>
+#include <oox/drawingml/diagram/diagram.hxx>
+
+using namespace ::oox::core;
+using namespace ::com::sun::star;
+using namespace ::com::sun::star::uno;
+using namespace ::com::sun::star::beans;
+using namespace ::com::sun::star::frame;
+using namespace ::com::sun::star::text;
+using namespace ::com::sun::star::drawing;
+using namespace ::com::sun::star::style;
+
+namespace oox::drawingml {
+
+Shape::Shape( const char* pServiceName, bool bDefaultHeight )
+: mpLinePropertiesPtr( std::make_shared<LineProperties>() )
+, mpShapeRefLinePropPtr( std::make_shared<LineProperties>() )
+, mpFillPropertiesPtr( std::make_shared<FillProperties>() )
+, mpShapeRefFillPropPtr( std::make_shared<FillProperties>() )
+, mpGraphicPropertiesPtr( std::make_shared<GraphicProperties>() )
+, mpCustomShapePropertiesPtr( std::make_shared<CustomShapeProperties>() )
+, mp3DPropertiesPtr( std::make_shared<Shape3DProperties>() )
+, mpEffectPropertiesPtr( std::make_shared<EffectProperties>() )
+, mpShapeRefEffectPropPtr( std::make_shared<EffectProperties>() )
+, mpMasterTextListStyle( std::make_shared<TextListStyle>() )
+, mnSubType( 0 )
+, meFrameType( FRAMETYPE_GENERIC )
+, mnRotation( 0 )
+, mnDiagramRotation( 0 )
+, mbFlipH( false )
+, mbFlipV( false )
+, mbHidden( false )
+, mbHiddenMasterShape( false )
+, mbLocked( false )
+, mbWPGChild(false)
+, mbLockedCanvas( false )
+, mbWps( false )
+, mbTextBox( false )
+, mbHasLinkedTxbx( false )
+, maDiagramDoms( 0 )
+, mpDiagramHelper( nullptr )
+{
+ if ( pServiceName )
+ msServiceName = OUString::createFromAscii( pServiceName );
+ setDefaults(bDefaultHeight);
+}
+
+Shape::Shape( const ShapePtr& pSourceShape )
+: mpTextBody(pSourceShape->mpTextBody)
+, mpLinePropertiesPtr( pSourceShape->mpLinePropertiesPtr )
+, mpShapeRefLinePropPtr( pSourceShape->mpShapeRefLinePropPtr )
+, mpFillPropertiesPtr( pSourceShape->mpFillPropertiesPtr )
+, mpShapeRefFillPropPtr( pSourceShape->mpShapeRefFillPropPtr )
+, mpGraphicPropertiesPtr( pSourceShape->mpGraphicPropertiesPtr )
+, mpCustomShapePropertiesPtr( pSourceShape->mpCustomShapePropertiesPtr )
+, mpTablePropertiesPtr( pSourceShape->mpTablePropertiesPtr )
+, mp3DPropertiesPtr( pSourceShape->mp3DPropertiesPtr )
+, mpEffectPropertiesPtr (pSourceShape->mpEffectPropertiesPtr)
+, mpShapeRefEffectPropPtr(pSourceShape->mpShapeRefEffectPropPtr)
+, maShapeProperties( pSourceShape->maShapeProperties )
+, mpMasterTextListStyle( pSourceShape->mpMasterTextListStyle )
+, msServiceName( pSourceShape->msServiceName )
+, msName( pSourceShape->msName )
+, msInternalName( pSourceShape->msInternalName )
+, msId( pSourceShape->msId )
+, mnSubType( pSourceShape->mnSubType )
+, moSubTypeIndex( pSourceShape->moSubTypeIndex )
+, maShapeStyleRefs( pSourceShape->maShapeStyleRefs )
+, maSize( pSourceShape->maSize )
+, maPosition( pSourceShape->maPosition )
+, meFrameType( pSourceShape->meFrameType )
+, mnRotation( pSourceShape->mnRotation )
+, mnDiagramRotation( pSourceShape->mnDiagramRotation )
+, mbFlipH( pSourceShape->mbFlipH )
+, mbFlipV( pSourceShape->mbFlipV )
+, mbHidden( pSourceShape->mbHidden )
+, mbHiddenMasterShape( pSourceShape->mbHiddenMasterShape )
+, mbLocked( pSourceShape->mbLocked )
+, mbWPGChild( pSourceShape->mbWPGChild )
+, mbLockedCanvas( pSourceShape->mbLockedCanvas )
+, mbWps( pSourceShape->mbWps )
+, mbTextBox( pSourceShape->mbTextBox )
+, mbHasLinkedTxbx(false)
+, maDiagramDoms( pSourceShape->maDiagramDoms )
+, mnZOrder(pSourceShape->mnZOrder)
+, mnZOrderOff(pSourceShape->mnZOrderOff)
+, mnDataNodeType(pSourceShape->mnDataNodeType)
+, mfAspectRatio(pSourceShape->mfAspectRatio)
+, mpDiagramHelper( nullptr )
+, msDiagramDataModelID(pSourceShape->msDiagramDataModelID)
+{}
+
+Shape::~Shape()
+{
+ // DiagramHelper should not be set here anymore, see
+ // propagateDiagramHelper below (maybe assert..?)
+ delete mpDiagramHelper;
+}
+
+void Shape::prepareDiagramHelper(
+ const std::shared_ptr< Diagram >& rDiagramPtr,
+ const std::shared_ptr<::oox::drawingml::Theme>& rTheme)
+{
+ // Prepare Diagram data collecting for this Shape
+ if( nullptr == mpDiagramHelper && FRAMETYPE_DIAGRAM == meFrameType )
+ {
+ mpDiagramHelper = new AdvancedDiagramHelper(
+ rDiagramPtr,
+ rTheme,
+ getSize());
+ }
+}
+
+void Shape::propagateDiagramHelper()
+{
+ // Propagate collected Diagram data to data holder
+ if (FRAMETYPE_DIAGRAM == meFrameType && nullptr != mpDiagramHelper)
+ {
+ SdrObjGroup* pAnchorObj = dynamic_cast<SdrObjGroup*>(SdrObject::getSdrObjectFromXShape(mxShape));
+
+ if(pAnchorObj)
+ {
+ static_cast<AdvancedDiagramHelper*>(mpDiagramHelper)->doAnchor(*pAnchorObj, *this);
+ mpDiagramHelper = nullptr;
+ }
+ }
+
+ // If propagation failed, delete/cleanup here. Since the DiagramHelper
+ // holds a Diagram and that this Shape it is necessary - the destructor
+ // will not be called and will be too late
+ if (nullptr != mpDiagramHelper)
+ {
+ delete mpDiagramHelper;
+ mpDiagramHelper = nullptr;
+ }
+}
+
+void Shape::migrateDiagramHelperToNewShape(const ShapePtr& pTarget)
+{
+ if(!mpDiagramHelper)
+ {
+ return;
+ }
+
+ if(!pTarget)
+ {
+ // no migrate target, but cleanup helper
+ delete mpDiagramHelper;
+ mpDiagramHelper = nullptr;
+ return;
+ }
+
+ if(pTarget->mpDiagramHelper)
+ {
+ // this should no happen, but if there is already a helper, clean it up
+ delete pTarget->mpDiagramHelper;
+ pTarget->mpDiagramHelper = nullptr;
+ }
+
+ // exchange and reset to nullptr
+ pTarget->mpDiagramHelper = mpDiagramHelper;
+ mpDiagramHelper = nullptr;
+}
+
+table::TablePropertiesPtr const & Shape::getTableProperties()
+{
+ if ( !mpTablePropertiesPtr )
+ mpTablePropertiesPtr = std::make_shared<table::TableProperties>();
+ return mpTablePropertiesPtr;
+}
+
+void Shape::setDefaults(bool bHeight)
+{
+ maDefaultShapeProperties.setProperty(PROP_TextAutoGrowHeight, false);
+ maDefaultShapeProperties.setProperty(PROP_TextWordWrap, true);
+ maDefaultShapeProperties.setProperty(PROP_TextLeftDistance, static_cast< sal_Int32 >( 250 ));
+ maDefaultShapeProperties.setProperty(PROP_TextUpperDistance, static_cast< sal_Int32 >( 125 ));
+ maDefaultShapeProperties.setProperty(PROP_TextRightDistance, static_cast< sal_Int32 >( 250 ));
+ maDefaultShapeProperties.setProperty(PROP_TextLowerDistance, static_cast< sal_Int32 >( 125 ));
+ if (bHeight)
+ maDefaultShapeProperties.setProperty(PROP_CharHeight, static_cast< float >( 18.0 ));
+ maDefaultShapeProperties.setProperty(PROP_TextVerticalAdjust, TextVerticalAdjust_TOP);
+ maDefaultShapeProperties.setProperty(PROP_ParaAdjust,
+ static_cast<sal_Int16>(ParagraphAdjust_LEFT));
+}
+
+::oox::vml::OleObjectInfo& Shape::setOleObjectType()
+{
+ OSL_ENSURE( meFrameType == FRAMETYPE_GENERIC, "Shape::setOleObjectType - multiple frame types" );
+ meFrameType = FRAMETYPE_OLEOBJECT;
+ mxOleObjectInfo = std::make_shared<::oox::vml::OleObjectInfo>( true );
+ return *mxOleObjectInfo;
+}
+
+ChartShapeInfo& Shape::setChartType( bool bEmbedShapes )
+{
+ OSL_ENSURE( meFrameType == FRAMETYPE_GENERIC, "Shape::setChartType - multiple frame types" );
+ meFrameType = FRAMETYPE_CHART;
+ if (mbWps)
+ msServiceName = "com.sun.star.drawing.temporaryForXMLImportOLE2Shape";
+ else
+ msServiceName = "com.sun.star.drawing.OLE2Shape";
+ mxChartShapeInfo = std::make_shared<ChartShapeInfo>( bEmbedShapes );
+ return *mxChartShapeInfo;
+}
+
+void Shape::setDiagramType()
+{
+ OSL_ENSURE( meFrameType == FRAMETYPE_GENERIC, "Shape::setDiagramType - multiple frame types" );
+ meFrameType = FRAMETYPE_DIAGRAM;
+ msServiceName = "com.sun.star.drawing.GroupShape";
+ mnSubType = 0;
+}
+
+void Shape::setTableType()
+{
+ OSL_ENSURE( meFrameType == FRAMETYPE_GENERIC, "Shape::setTableType - multiple frame types" );
+ meFrameType = FRAMETYPE_TABLE;
+ msServiceName = "com.sun.star.drawing.TableShape";
+ mnSubType = 0;
+}
+
+void Shape::setServiceName( const char* pServiceName )
+{
+ if ( pServiceName )
+ msServiceName = OUString::createFromAscii( pServiceName );
+}
+
+const ShapeStyleRef* Shape::getShapeStyleRef( sal_Int32 nRefType ) const
+{
+ ShapeStyleRefMap::const_iterator aIt = maShapeStyleRefs.find( nRefType );
+ return (aIt == maShapeStyleRefs.end()) ? nullptr : &aIt->second;
+}
+
+void Shape::addShape(
+ ::oox::core::XmlFilterBase& rFilterBase,
+ const Theme* pTheme,
+ const Reference< XShapes >& rxShapes,
+ const basegfx::B2DHomMatrix& aTransformation,
+ const FillProperties& rShapeOrParentShapeFillProps,
+ ShapeIdMap* pShapeMap,
+ oox::drawingml::ShapePtr pParentGroupShape)
+{
+ SAL_INFO("oox.drawingml", "Shape::addShape: id='" << msId << "'");
+
+ try
+ {
+ OUString sServiceName( msServiceName );
+ if( !sServiceName.isEmpty() )
+ {
+ basegfx::B2DHomMatrix aMatrix( aTransformation );
+ Reference< XShape > xShape( createAndInsert( rFilterBase, sServiceName, pTheme, rxShapes, false, false, aMatrix, rShapeOrParentShapeFillProps, pParentGroupShape) );
+
+ if( pShapeMap && !msId.isEmpty() )
+ {
+ (*pShapeMap)[ msId ] = shared_from_this();
+ }
+
+ // if this is a group shape, we have to add also each child shape
+ Reference< XShapes > xShapes( xShape, UNO_QUERY );
+ if ( xShapes.is() )
+ addChildren( rFilterBase, *this, pTheme, xShapes, pShapeMap, aMatrix );
+
+ if (isWPGChild() && xShape)
+ {
+ // This is a wps shape and it is the child of the WPG, now copy the
+ // the text body properties to the xshape.
+ Reference<XPropertySet> xChildWPSProperties(xShape, uno::UNO_QUERY);
+
+ if (getTextBody() && xChildWPSProperties)
+ {
+ xChildWPSProperties->setPropertyValue(
+ UNO_NAME_TEXT_VERTADJUST,
+ uno::Any(getTextBody()->getTextProperties().meVA));
+
+ xChildWPSProperties->setPropertyValue(
+ UNO_NAME_TEXT_LEFTDIST,
+ uno::Any(getTextBody()->getTextProperties().moInsets[0].has_value()
+ ? *getTextBody()->getTextProperties().moInsets[0]
+ : 0));
+ xChildWPSProperties->setPropertyValue(
+ UNO_NAME_TEXT_UPPERDIST,
+ uno::Any(getTextBody()->getTextProperties().moInsets[1].has_value()
+ ? *getTextBody()->getTextProperties().moInsets[1]
+ : 0));
+ xChildWPSProperties->setPropertyValue(
+ UNO_NAME_TEXT_RIGHTDIST,
+ uno::Any(getTextBody()->getTextProperties().moInsets[2].has_value()
+ ? *getTextBody()->getTextProperties().moInsets[2]
+ : 0));
+ xChildWPSProperties->setPropertyValue(
+ UNO_NAME_TEXT_LOWERDIST,
+ uno::Any(getTextBody()->getTextProperties().moInsets[3].has_value()
+ ? *getTextBody()->getTextProperties().moInsets[3]
+ : 0));
+ }
+ }
+
+ if( meFrameType == FRAMETYPE_DIAGRAM )
+ {
+ keepDiagramCompatibilityInfo();
+
+ // set DiagramHelper at SdrObjGroup
+ propagateDiagramHelper();
+
+ // Check if this is the PPTX import, so far converting SmartArt to a non-editable
+ // metafile is only implemented for DOCX.
+ bool bPowerPoint = dynamic_cast<oox::ppt::PowerPointImport*>(&rFilterBase) != nullptr;
+
+ if (!SvtFilterOptions::Get().IsSmartArt2Shape() && !bPowerPoint)
+ convertSmartArtToMetafile( rFilterBase );
+ }
+
+ NamedShapePairs* pNamedShapePairs = rFilterBase.getDiagramFontHeights();
+ if (xShape.is() && pNamedShapePairs)
+ {
+ auto itPairs = pNamedShapePairs->find(getInternalName());
+ if (itPairs != pNamedShapePairs->end())
+ {
+ auto it = itPairs->second.find(shared_from_this());
+ if (it != itPairs->second.end())
+ {
+ // Our drawingml::Shape is in the list of an internal name, remember the now
+ // inserted XShape.
+ it->second = xShape;
+ }
+ }
+ }
+ }
+ }
+ catch( const Exception& )
+ {
+ TOOLS_WARN_EXCEPTION( "oox.drawingml", "Shape::addShape" );
+ }
+}
+
+void Shape::setLockedCanvas(bool bLockedCanvas)
+{
+ mbLockedCanvas = bLockedCanvas;
+}
+
+void Shape::setWPGChild(bool bWPG)
+{
+ mbWPGChild = bWPG;
+}
+
+void Shape::setWps(bool bWps)
+{
+ mbWps = bWps;
+}
+
+void Shape::setTextBox(bool bTextBox)
+{
+ mbTextBox = bTextBox;
+}
+
+void Shape::applyShapeReference( const Shape& rReferencedShape, bool bUseText )
+{
+ SAL_INFO("oox.drawingml", "Shape::applyShapeReference: apply '" << rReferencedShape.msId << "' to '" << msId << "'");
+
+ if ( rReferencedShape.mpTextBody && bUseText )
+ mpTextBody = std::make_shared<TextBody>( *rReferencedShape.mpTextBody );
+ else
+ mpTextBody.reset();
+ maShapeProperties = rReferencedShape.maShapeProperties;
+ mpShapeRefLinePropPtr = std::make_shared<LineProperties>( rReferencedShape.getActualLineProperties(nullptr) );
+ mpShapeRefFillPropPtr = std::make_shared<FillProperties>( rReferencedShape.getActualFillProperties(nullptr, nullptr) );
+ mpCustomShapePropertiesPtr = std::make_shared<CustomShapeProperties>( *rReferencedShape.mpCustomShapePropertiesPtr );
+ mpTablePropertiesPtr = rReferencedShape.mpTablePropertiesPtr ? std::make_shared<table::TableProperties>( *rReferencedShape.mpTablePropertiesPtr ) : nullptr;
+ mpShapeRefEffectPropPtr = std::make_shared<EffectProperties>( rReferencedShape.getActualEffectProperties(nullptr) );
+ mpMasterTextListStyle = std::make_shared<TextListStyle>( *rReferencedShape.mpMasterTextListStyle );
+ maSize = rReferencedShape.maSize;
+ maPosition = rReferencedShape.maPosition;
+ mnRotation = rReferencedShape.mnRotation;
+ mbFlipH = rReferencedShape.mbFlipH;
+ mbFlipV = rReferencedShape.mbFlipV;
+ mbHidden = rReferencedShape.mbHidden;
+ mbLocked = rReferencedShape.mbLocked;
+}
+
+namespace {
+
+struct ActionLockGuard
+{
+ explicit ActionLockGuard(Reference<drawing::XShape> const& xShape)
+ : m_xLockable(xShape, UNO_QUERY)
+ {
+ if (m_xLockable.is()) {
+ m_xLockable->addActionLock();
+ }
+ }
+ ~ActionLockGuard()
+ {
+ if (m_xLockable.is()) {
+ m_xLockable->removeActionLock();
+ }
+ }
+private:
+ Reference<document::XActionLockable> m_xLockable;
+};
+
+}
+
+// for group shapes, the following method is also adding each child
+void Shape::addChildren(
+ XmlFilterBase& rFilterBase,
+ Shape& rMaster,
+ const Theme* pTheme,
+ const Reference< XShapes >& rxShapes,
+ ShapeIdMap* pShapeMap,
+ const basegfx::B2DHomMatrix& aTransformation )
+{
+ for (auto const& child : rMaster.maChildren)
+ {
+ child->setMasterTextListStyle( mpMasterTextListStyle );
+ child->addShape( rFilterBase, pTheme, rxShapes, aTransformation, getFillProperties(), pShapeMap, rMaster.shared_from_this());
+ }
+}
+
+static void lcl_resetPropertyValue( std::vector<beans::PropertyValue>& rPropVec, const OUString& rName )
+{
+ auto aIterator = std::find_if( rPropVec.begin(), rPropVec.end(),
+ [rName]( const beans::PropertyValue& rValue ) { return rValue.Name == rName; } );
+
+ if (aIterator != rPropVec.end())
+ rPropVec.erase( aIterator );
+}
+
+static void lcl_setPropertyValue( std::vector<beans::PropertyValue>& rPropVec,
+ const OUString& rName,
+ const beans::PropertyValue& rPropertyValue )
+{
+ lcl_resetPropertyValue( rPropVec, rName );
+
+ rPropVec.push_back( rPropertyValue );
+}
+
+static SdrTextHorzAdjust lcl_convertAdjust( ParagraphAdjust eAdjust )
+{
+ if (eAdjust == ParagraphAdjust_LEFT)
+ return SDRTEXTHORZADJUST_LEFT;
+ else if (eAdjust == ParagraphAdjust_RIGHT)
+ return SDRTEXTHORZADJUST_RIGHT;
+ else if (eAdjust == ParagraphAdjust_CENTER)
+ return SDRTEXTHORZADJUST_CENTER;
+ return SDRTEXTHORZADJUST_LEFT;
+}
+
+static void lcl_createPresetShape(const uno::Reference<drawing::XShape>& xShape,
+ const OUString& rClass, const OUString& rPresetType,
+ const CustomShapePropertiesPtr& pCustomShapePropertiesPtr,
+ const TextBodyPtr& pTextBody,
+ const GraphicHelper& rGraphicHelper)
+{
+ if (!xShape.is() || !pCustomShapePropertiesPtr || !pTextBody)
+ return;
+
+ uno::Reference<drawing::XEnhancedCustomShapeDefaulter> xDefaulter( xShape,
+ uno::UNO_QUERY );
+
+ if (!xDefaulter.is() || rClass.isEmpty())
+ return;
+
+ Reference<XPropertySet> xSet( xShape, UNO_QUERY );
+ if (!xSet.is())
+ return;
+
+ // The DrawingML shapes from the presetTextWarpDefinitions are mapped to the definitions
+ // in svx/../EnhancedCustomShapeGeometry.cxx, which are used for WordArt shapes from
+ // binary MS Office. Therefore all adjustment values need to be adapted.
+ auto aAdjGdList = pCustomShapePropertiesPtr->getAdjustmentGuideList();
+ Sequence<drawing::EnhancedCustomShapeAdjustmentValue> aAdjustment(
+ !aAdjGdList.empty() ? aAdjGdList.size() : 1 );
+ auto pAdjustment = aAdjustment.getArray();
+ int nIndex = 0;
+ for (const auto& aEntry : aAdjGdList)
+ {
+ double fValue = aEntry.maFormula.toDouble();
+ // then: polar-handle, else: XY-handle
+ // There exist only 8 polar-handles at all in presetTextWarp.
+ if ((rClass == "fontwork-arch-down-curve")
+ || (rClass == "fontwork-arch-down-pour" && aEntry.maName == "adj1")
+ || (rClass == "fontwork-arch-up-curve")
+ || (rClass == "fontwork-arch-up-pour" && aEntry.maName == "adj1")
+ || (rClass == "fontwork-open-circle-curve")
+ || (rClass == "fontwork-open-circle-pour" && aEntry.maName == "adj1")
+ || (rClass == "fontwork-circle-curve")
+ || (rClass == "fontwork-circle-pour" && aEntry.maName == "adj1"))
+ {
+ // DrawingML has 1/60000 degree unit, but WordArt simple degree. Range [0..360[
+ // or range ]-180..180] doesn't matter, because only cos(angle) and
+ // sin(angle) are used.
+ fValue = NormAngle360(fValue / 60000.0);
+ }
+ else
+ {
+ // DrawingML writes adjustment guides as relative value with 100% = 100000,
+ // but WordArt definitions use values absolute in viewBox 0 0 21600 21600,
+ // so scale with 21600/100000 = 0.216, with two exceptions:
+ // X-handles of waves describe increase/decrease relative to horizontal center.
+ // The gdRefR of pour-shapes is not relative to viewBox but to radius.
+ if ((rClass == "mso-spt158" && aEntry.maName == "adj2") // textDoubleWave1
+ || (rClass == "fontwork-wave" && aEntry.maName == "adj2") // textWave1
+ || (rClass == "mso-spt157" && aEntry.maName == "adj2") // textWave2
+ || (rClass == "mso-spt159" && aEntry.maName == "adj2")) // textWave4
+ {
+ fValue = (fValue + 50000.0) * 0.216;
+ }
+ else if ( (rClass == "fontwork-arch-down-pour" && aEntry.maName == "adj2")
+ || (rClass == "fontwork-arch-up-pour" && aEntry.maName == "adj2")
+ || (rClass == "fontwork-open-circle-pour" && aEntry.maName == "adj2")
+ || (rClass == "fontwork-circle-pour" && aEntry.maName == "adj2"))
+ {
+ fValue *= 0.108;
+ }
+ else
+ {
+ fValue *= 0.216;
+ }
+ }
+
+ pAdjustment[nIndex].Value <<= fValue;
+ pAdjustment[nIndex++].State = css::beans::PropertyState_DIRECT_VALUE;
+ }
+
+ // Set properties
+ xSet->setPropertyValue( UNO_NAME_TEXT_AUTOGROWHEIGHT, uno::Any( false ) );
+ xSet->setPropertyValue( UNO_NAME_TEXT_AUTOGROWWIDTH, uno::Any( false ) );
+ xSet->setPropertyValue( UNO_NAME_FILLSTYLE, uno::Any( drawing::FillStyle_SOLID ) );
+
+ // ToDo: Old binary WordArt does not allow different styles for different paragraphs, so it
+ // was not necessary to examine all paragraphs. Solution for DrawingML is needed.
+ // Currently different alignment of paragraphs are lost, for example.
+ const TextParagraphVector& rParagraphs = pTextBody->getParagraphs();
+ if (!rParagraphs.empty() && !rParagraphs[0]->getRuns().empty())
+ {
+ std::shared_ptr<TextParagraph> pParagraph = rParagraphs[0];
+ std::shared_ptr<TextRun> pRun = pParagraph->getRuns()[0];
+ TextCharacterProperties& pProperties = pRun->getTextCharacterProperties();
+
+ if (pProperties.moBold.has() && pProperties.moBold.get())
+ {
+ xSet->setPropertyValue( UNO_NAME_CHAR_WEIGHT, uno::Any( css::awt::FontWeight::BOLD ) );
+ }
+ if (pProperties.moItalic.has() && pProperties.moItalic.get())
+ {
+ xSet->setPropertyValue( UNO_NAME_CHAR_POSTURE, uno::Any( css::awt::FontSlant::FontSlant_ITALIC ) );
+ }
+ if (pProperties.moHeight.has())
+ {
+ sal_Int32 nHeight = pProperties.moHeight.get() / 100;
+ xSet->setPropertyValue( UNO_NAME_CHAR_HEIGHT, uno::Any( nHeight ) );
+ }
+ if (pProperties.maFillProperties.maFillColor.isUsed())
+ {
+ const sal_Int32 aFillColor = static_cast<sal_Int32>(
+ pProperties.maFillProperties.maFillColor.getColor( rGraphicHelper ).GetRGBColor() );
+ xSet->setPropertyValue( UNO_NAME_FILLCOLOR, uno::Any( aFillColor ) );
+
+ if (pProperties.maFillProperties.maFillColor.hasTransparency())
+ {
+ const sal_Int16 aTransparence = pProperties.maFillProperties.maFillColor.getTransparency();
+ xSet->setPropertyValue(UNO_NAME_FILL_TRANSPARENCE, uno::Any(aTransparence));
+ }
+ }
+ else
+ {
+ // Set default color
+ xSet->setPropertyValue( UNO_NAME_FILLCOLOR, uno::Any( COL_BLACK ) );
+ }
+ {
+ ParagraphAdjust eAdjust = ParagraphAdjust_LEFT;
+ if (pParagraph->getProperties().getParaAdjust())
+ eAdjust = *pParagraph->getProperties().getParaAdjust();
+ xSet->setPropertyValue( "ParaAdjust", uno::Any( eAdjust ) );
+ SdrObject* pShape = SdrObject::getSdrObjectFromXShape( xShape );
+ assert(pShape);
+ SdrTextHorzAdjust eHorzAdjust = lcl_convertAdjust( eAdjust );
+ pShape->SetMergedItem( SdrTextHorzAdjustItem( eHorzAdjust ) );
+ }
+ }
+
+ // Apply vertical adjustment for text on arc
+ // ToDo: The property is currently not evaluated.
+ SdrObject* pShape = SdrObject::getSdrObjectFromXShape(xShape);
+ assert(pShape);
+ if (rClass == "fontwork-arch-up-curve" || rClass == "fontwork-circle-curve")
+ pShape->SetMergedItem( SdrTextVertAdjustItem( SdrTextVertAdjust::SDRTEXTVERTADJUST_BOTTOM ) );
+ else if (rClass == "fontwork-arch-down-curve")
+ pShape->SetMergedItem( SdrTextVertAdjustItem( SdrTextVertAdjust::SDRTEXTVERTADJUST_TOP ) );
+
+ // Apply preset shape
+ xDefaulter->createCustomShapeDefaults( rClass );
+
+ auto aGeomPropSeq = xSet->getPropertyValue( "CustomShapeGeometry" )
+ .get<uno::Sequence<beans::PropertyValue>>();
+ auto aGeomPropVec
+ = comphelper::sequenceToContainer<std::vector<beans::PropertyValue>>(
+ aGeomPropSeq );
+
+ // Reset old properties
+ static const OUStringLiteral sTextPath( u"TextPath" );
+ static const OUStringLiteral sAdjustmentValues( u"AdjustmentValues" );
+ static const OUStringLiteral sPresetTextWarp( u"PresetTextWarp" );
+
+ lcl_resetPropertyValue( aGeomPropVec, "CoordinateSize" );
+ lcl_resetPropertyValue( aGeomPropVec, "Equations" );
+ lcl_resetPropertyValue( aGeomPropVec, "Path" );
+ lcl_resetPropertyValue( aGeomPropVec, sAdjustmentValues);
+
+ bool bFromWordArt(false);
+ pTextBody->getTextProperties().maPropertyMap.getProperty(PROP_FromWordArt) >>= bFromWordArt;
+
+ bool bScaleX(false);
+ if (!bFromWordArt
+ && (rPresetType == "textArchDown" || rPresetType == "textArchUp"
+ || rPresetType == "textCircle" || rPresetType == "textButton"))
+ {
+ bScaleX = true;
+ }
+
+ // Apply geometry properties
+ uno::Sequence<beans::PropertyValue> aPropertyValues(
+ comphelper::InitPropertySequence(
+ { { sTextPath, uno::Any( true ) },
+ { "TextPathMode",
+ uno::Any( drawing::EnhancedCustomShapeTextPathMode_PATH ) },
+ { "ScaleX", uno::Any(bScaleX) } } ) );
+
+ lcl_setPropertyValue( aGeomPropVec, sTextPath,
+ comphelper::makePropertyValue( sTextPath, aPropertyValues ) );
+
+ lcl_setPropertyValue( aGeomPropVec, sPresetTextWarp,
+ comphelper::makePropertyValue( sPresetTextWarp, rPresetType ) );
+
+ if (!aAdjGdList.empty())
+ {
+ lcl_setPropertyValue( aGeomPropVec, sAdjustmentValues,
+ comphelper::makePropertyValue( sAdjustmentValues, aAdjustment ) );
+ }
+
+ xSet->setPropertyValue(
+ "CustomShapeGeometry",
+ uno::Any(comphelper::containerToSequence(aGeomPropVec)));
+}
+
+// Some helper methods for createAndInsert
+namespace
+{
+// mirrors aTransformation at its center axis
+// only valid if neither rotation or shear included
+void lcl_mirrorAtCenter(basegfx::B2DHomMatrix& aTransformation, bool bFlipH, bool bFlipV)
+{
+ if (!bFlipH && !bFlipV)
+ return;
+ basegfx::B2DPoint aCenter(0.5, 0.5);
+ aCenter *= aTransformation;
+ aTransformation.translate(-aCenter);
+ aTransformation.scale(bFlipH ? -1.0 : 1.0, bFlipV ? -1.0 : 1.0);
+ aTransformation.translate(aCenter);
+ return;
+}
+
+// only valid if neither rotation or shear included
+void lcl_doSpecialMSOWidthHeightToggle(basegfx::B2DHomMatrix& aTransformation)
+{
+ // The values are directly set at the matrix without any matrix multiplication.
+ // That way it is valid for lines too. Those have zero width or height.
+ const double fSx(aTransformation.get(0, 0));
+ const double fSy(aTransformation.get(1, 1));
+ const double fTx(aTransformation.get(0, 2));
+ const double fTy(aTransformation.get(1, 2));
+ aTransformation.set(0, 0, fSy);
+ aTransformation.set(1, 1, fSx);
+ aTransformation.set(0, 2, fTx + 0.5 * (fSx - fSy));
+ aTransformation.set(1, 2, fTy + 0.5 * (fSy - fSx));
+ return;
+}
+
+void lcl_RotateAtCenter(basegfx::B2DHomMatrix& aTransformation,sal_Int32 nMSORotationAngle)
+{
+ if (nMSORotationAngle == 0)
+ return;
+ double fRad = basegfx::deg2rad<60000>(nMSORotationAngle);
+ basegfx::B2DPoint aCenter(0.5, 0.5);
+ aCenter *= aTransformation;
+ aTransformation.translate(-aCenter);
+ aTransformation.rotate(fRad);
+ aTransformation.translate(aCenter);
+ return;
+}
+}
+
+Reference< XShape > const & Shape::createAndInsert(
+ ::oox::core::XmlFilterBase& rFilterBase,
+ const OUString& rServiceName,
+ const Theme* pTheme,
+ const css::uno::Reference< css::drawing::XShapes >& rxShapes,
+ bool bClearText,
+ bool bDoNotInsertEmptyTextBody,
+ basegfx::B2DHomMatrix& aParentTransformation,
+ const FillProperties& rShapeOrParentShapeFillProps,
+ oox::drawingml::ShapePtr pParentGroupShape)
+{
+ bool bIsEmbMedia = false;
+ SAL_INFO("oox.drawingml", "Shape::createAndInsert: id='" << msId << "' service='" << rServiceName << "'");
+
+ formulaimport::XmlStreamBuilder * pMathXml(nullptr);
+ if (mpTextBody)
+ {
+ for (auto const& it : mpTextBody->getParagraphs())
+ {
+ if (it->HasMathXml())
+ {
+ if (!mpTextBody->isEmpty() || pMathXml != nullptr)
+ {
+ SAL_WARN("oox.drawingml", "losing a Math object...");
+ }
+ else
+ {
+ pMathXml = &it->GetMathXml();
+ }
+ }
+ }
+ }
+
+ // tdf#90403 PowerPoint ignores a:ext cx and cy values of p:xfrm, and uses real table width and height
+ if ( mpTablePropertiesPtr && rServiceName == "com.sun.star.drawing.TableShape" )
+ {
+ maSize.Width = 0;
+ for (auto const& elem : mpTablePropertiesPtr->getTableGrid())
+ {
+ maSize.Width = o3tl::saturating_add(maSize.Width, static_cast<sal_Int32>(elem));
+ }
+ maSize.Height = 0;
+ for (auto const& elem : mpTablePropertiesPtr->getTableRows())
+ {
+ // WARN: When less then minimum sized rows exist, calculated height here
+ // is corrected before layouting takes place
+ maSize.Height = o3tl::saturating_add(maSize.Height, elem.getHeight());
+ }
+ }
+
+ awt::Rectangle aShapeRectHmm(
+ o3tl::convert(maPosition.X, o3tl::Length::emu, o3tl::Length::mm100),
+ o3tl::convert(maPosition.Y, o3tl::Length::emu, o3tl::Length::mm100),
+ o3tl::convert(maSize.Width, o3tl::Length::emu, o3tl::Length::mm100),
+ o3tl::convert(maSize.Height, o3tl::Length::emu, o3tl::Length::mm100));
+
+ OUString aServiceName;
+ if (pMathXml)
+ {
+ // convert this shape to OLE
+ aServiceName = "com.sun.star.drawing.OLE2Shape";
+ msServiceName = aServiceName;
+ meFrameType = FRAMETYPE_GENERIC; // not OLEOBJECT, no stream in package
+ mnSubType = 0;
+ }
+ else if (rServiceName == "com.sun.star.drawing.GraphicObjectShape" &&
+ mpGraphicPropertiesPtr && !mpGraphicPropertiesPtr->m_sMediaPackageURL.isEmpty())
+ {
+ aServiceName = finalizeServiceName( rFilterBase, "com.sun.star.presentation.MediaShape", aShapeRectHmm );
+ bIsEmbMedia = true;
+ }
+ else
+ {
+ aServiceName = finalizeServiceName( rFilterBase, rServiceName, aShapeRectHmm );
+ }
+ // Use custom shape instead of GraphicObjectShape if the image is cropped to
+ // shape. Except rectangle, which does not require further cropping
+ bool bIsCroppedGraphic = (aServiceName == "com.sun.star.drawing.GraphicObjectShape" &&
+ !mpCustomShapePropertiesPtr->representsDefaultShape());
+
+ bool bIsCustomShape = (aServiceName == "com.sun.star.drawing.CustomShape" || bIsCroppedGraphic);
+ bool bIsConnectorShape = (aServiceName == "com.sun.star.drawing.ConnectorShape");
+ if(bIsCroppedGraphic)
+ {
+ aServiceName = "com.sun.star.drawing.CustomShape";
+ mpGraphicPropertiesPtr->mbIsCustomShape = true;
+ }
+ bool bUseRotationTransform = ( !mbWps ||
+ aServiceName == "com.sun.star.drawing.LineShape" ||
+ aServiceName == "com.sun.star.drawing.GroupShape" ||
+ mbFlipH ||
+ mbFlipV );
+
+ basegfx::B2DHomMatrix aTransformation; // will be cumulative transformation of this object
+
+ // Special for SmartArt import. Rotate diagram's shape around object's center before sizing.
+ if (bUseRotationTransform && mnDiagramRotation != 0)
+ {
+ aTransformation.translate(-0.5, -0.5);
+ aTransformation.rotate(basegfx::deg2rad<60000>(mnDiagramRotation));
+ aTransformation.translate(0.5, 0.5);
+ }
+
+ // Build object matrix from shape size and position; corresponds to MSO ext and off
+ // Only LineShape and ConnectorShape may have zero width or height.
+ if (aServiceName == "com.sun.star.drawing.LineShape"
+ || aServiceName == "com.sun.star.drawing.ConnectorShape")
+ aTransformation.scale(maSize.Width, maSize.Height);
+ else
+ {
+ aTransformation.scale(maSize.Width ? maSize.Width : 1.0,
+ maSize.Height ? maSize.Height : 1.0);
+ }
+
+ // Evaluate object flip. Other shapes than custom shapes have no attribute for flip but use
+ // negative scale. Flip in MSO is at object center.
+ if (!bIsCustomShape && (mbFlipH || mbFlipV))
+ lcl_mirrorAtCenter(aTransformation, mbFlipH, mbFlipV);
+
+ // Evaluate parent flip.
+ // A CustomShape has mirror not as negative scale, but as attributes.
+ basegfx::B2DVector aParentScale(1.0, 1.0);
+ basegfx::B2DVector aParentTranslate(0.0, 0.0);
+ double fParentRotate(0.0);
+ double fParentShearX(0.0);
+ if (pParentGroupShape)
+ {
+ aParentTransformation.decompose(aParentScale, aParentTranslate, fParentRotate, fParentShearX);
+ if (bIsCustomShape)
+ {
+ lcl_mirrorAtCenter(aTransformation, aParentScale.getX() < 0, aParentScale.getY() < 0);
+ if(aParentScale.getX() < 0)
+ mbFlipH = !mbFlipH;
+ if(aParentScale.getY() < 0)
+ mbFlipV = !mbFlipV;
+ }
+ }
+
+ if (maPosition.X != 0 || maPosition.Y != 0)
+ {
+ // if global position is used, add it to transformation
+ if (mbWps && pParentGroupShape == nullptr)
+ aTransformation.translate(
+ o3tl::convert(maPosition.X, o3tl::Length::mm100, o3tl::Length::emu),
+ o3tl::convert(maPosition.Y, o3tl::Length::mm100, o3tl::Length::emu));
+ else
+ aTransformation.translate(maPosition.X, maPosition.Y);
+ }
+
+ // Apply further parent transformations. First scale object then rotate. Other way round would
+ // introduce shearing.
+
+ // The attributes chExt and chOff of the group in oox file contain the values on which the size
+ // and position of the child is based on. If they differ from the actual size of the group as
+ // given in its ext and off attributes, the child has to be transformed according the new values.
+ if (pParentGroupShape)
+ {
+ // ToDo: A diagram in a group might need special handling because it cannot flip and only
+ // resize uniformly. But currently it is imported with zero size, see tdf#139575. That needs
+ // to be fixed beforehand.
+
+ // Scaling is done from left/top edges of the group. So these need to become coordinate axes.
+ aTransformation.translate(-pParentGroupShape->maChPosition.X,
+ -pParentGroupShape->maChPosition.Y);
+
+ // oox allows zero or missing attribute chExt. In that case the scaling factor is 1.
+ // Transform2DContext::onCreateContext has set maChSize to maSize for groups in oox file in
+ // such cases. For own made groups (e.g. diagrams) that is missing.
+ // The factors cumulate on the way through the parent groups, so we do not use maSize of the
+ // direct parent group but the cumulated value from aParentScale.
+ double fFactorX = 1.0;
+ double fFactorY = 1.0;
+ if (pParentGroupShape->maChSize.Width != 0)
+ fFactorX = aParentScale.getX() / pParentGroupShape->maChSize.Width;
+ if (pParentGroupShape->maChSize.Height != 0)
+ fFactorY = aParentScale.getY() / pParentGroupShape->maChSize.Height;
+ if (fFactorX != 1 || fFactorY != 1)
+ {
+ // It depends on the object rotation angle whether scaling is applied to switched
+ // width and height. MSO acts strange in that case (as of May 2021).
+ const sal_Int32 nDeg(mnRotation / 60000);
+ const bool bNeedsMSOWidhtHeightToggle
+ = (nDeg >= 45 && nDeg < 135) || (nDeg >= 225 && nDeg < 315);
+ if (bNeedsMSOWidhtHeightToggle)
+ lcl_doSpecialMSOWidthHeightToggle(aTransformation);
+
+ aTransformation.scale(fFactorX, fFactorY);
+
+ if (bNeedsMSOWidhtHeightToggle)
+ {
+ lcl_doSpecialMSOWidthHeightToggle(aTransformation);
+ // In case of flip the special case needs an additional 180deg rotation.
+ if ((aParentScale.getX() < 0) != (aParentScale.getY() < 0))
+ lcl_RotateAtCenter(aTransformation, 10800000);
+ }
+ }
+ }
+
+ // Apply object rotation at current object center
+ // The flip contained in aParentScale will affect orientation of object rotation angle.
+ sal_Int16 nOrientation = ((aParentScale.getX() < 0) != (aParentScale.getY() < 0)) ? -1 : 1;
+ // ToDo: Not sure about the restrictions given by bUseRotationTransform.
+ // Since LibreOffice doesn't have 3D camera options for 2D shapes, rotate the shape opposite of
+ // the camera Z axis rotation, in order to produce the same visual result from MSO
+ const sal_Int32 nCameraRotation = get3DProperties().maCameraRotation.mnRevolution.get(0);
+ if (bUseRotationTransform && (mnRotation != 0 || nCameraRotation != 0))
+ lcl_RotateAtCenter(aTransformation, nOrientation * (mnRotation - nCameraRotation));
+
+ if (fParentRotate != 0.0)
+ aTransformation.rotate(fParentRotate);
+ if (!aParentTranslate.equalZero())
+ aTransformation.translate(aParentTranslate);
+
+ aParentTransformation = aTransformation;
+
+ constexpr double fEmuToMm100 = o3tl::convert(1.0, o3tl::Length::emu, o3tl::Length::mm100);
+ aTransformation.scale(fEmuToMm100, fEmuToMm100);
+
+ // OOXML flips shapes before rotating them, so the rotation needs to be inverted
+ if( bIsCustomShape && mbFlipH != mbFlipV )
+ {
+ basegfx::B2DVector aScale, aTranslate;
+ double fRotate, fShearX;
+ aTransformation.decompose(aScale, aTranslate, fRotate, fShearX);
+
+ if(fRotate != 0)
+ {
+ basegfx::B2DPoint aCenter(0.5, 0.5);
+ aCenter *= aTransformation;
+ aTransformation.translate( -aCenter.getX(), -aCenter.getY() );
+ aTransformation.rotate( fRotate * -2.0 );
+ aTransformation.translate( aCenter.getX(), aCenter.getY() );
+ }
+ }
+
+ // special for lineshape
+ if ( aServiceName == "com.sun.star.drawing.LineShape" )
+ {
+ ::basegfx::B2DPolygon aPoly;
+ aPoly.insert( 0, ::basegfx::B2DPoint( 0, 0 ) );
+ aPoly.insert( 1, ::basegfx::B2DPoint( maSize.Width ? 1 : 0, maSize.Height ? 1 : 0 ) );
+ aPoly.transform( aTransformation );
+
+ // now creating the corresponding PolyPolygon
+ sal_Int32 i, nNumPoints = aPoly.count();
+ uno::Sequence< awt::Point > aPointSequence( nNumPoints );
+ awt::Point* pPoints = aPointSequence.getArray();
+ for( i = 0; i < nNumPoints; ++i )
+ {
+ basegfx::B2DPoint aPoint( aPoly.getB2DPoint( i ) );
+
+ // Guard against zero width or height.
+ if (i)
+ {
+ const basegfx::B2DPoint& rPreviousPoint = aPoly.getB2DPoint(i - 1);
+ if (aPoint.getX() - rPreviousPoint.getX() == 0)
+ aPoint.setX(aPoint.getX() + 1);
+ if (aPoint.getY() - rPreviousPoint.getY() == 0)
+ aPoint.setY(aPoint.getY() + 1);
+ }
+
+ pPoints[i] = awt::Point(static_cast<sal_Int32>(aPoint.getX()), static_cast<sal_Int32>(aPoint.getY()));
+ }
+ uno::Sequence< uno::Sequence< awt::Point > > aPolyPolySequence( 1 );
+ aPolyPolySequence.getArray()[ 0 ] = aPointSequence;
+
+ maShapeProperties.setProperty(PROP_PolyPolygon, aPolyPolySequence);
+ }
+ else if ( aServiceName == "com.sun.star.drawing.ConnectorShape" )
+ {
+ ::basegfx::B2DPolygon aPoly;
+ aPoly.insert( 0, ::basegfx::B2DPoint( 0, 0 ) );
+ aPoly.insert( 1, ::basegfx::B2DPoint( maSize.Width ? 1 : 0, maSize.Height ? 1 : 0 ) );
+ aPoly.transform( aTransformation );
+
+ basegfx::B2DPoint aStartPosition( aPoly.getB2DPoint( 0 ) );
+ basegfx::B2DPoint aEndPosition( aPoly.getB2DPoint( 1 ) );
+ awt::Point aAWTStartPosition( static_cast< sal_Int32 >( aStartPosition.getX() ), static_cast< sal_Int32 >( aStartPosition.getY() ) );
+ awt::Point aAWTEndPosition( static_cast< sal_Int32 >( aEndPosition.getX() ), static_cast< sal_Int32 >( aEndPosition.getY() ) );
+
+ maShapeProperties.setProperty(PROP_StartPosition, aAWTStartPosition);
+ maShapeProperties.setProperty(PROP_EndPosition, aAWTEndPosition);
+ }
+ else
+ {
+ // now set transformation for this object
+ HomogenMatrix3 aMatrix;
+
+ aMatrix.Line1.Column1 = aTransformation.get(0,0);
+ aMatrix.Line1.Column2 = aTransformation.get(0,1);
+ aMatrix.Line1.Column3 = aTransformation.get(0,2);
+
+ aMatrix.Line2.Column1 = aTransformation.get(1,0);
+ aMatrix.Line2.Column2 = aTransformation.get(1,1);
+ aMatrix.Line2.Column3 = aTransformation.get(1,2);
+
+ aMatrix.Line3.Column1 = aTransformation.get(2,0);
+ aMatrix.Line3.Column2 = aTransformation.get(2,1);
+ aMatrix.Line3.Column3 = aTransformation.get(2,2);
+
+ maShapeProperties.setProperty(PROP_Transformation, aMatrix);
+ }
+
+ Reference< lang::XMultiServiceFactory > xServiceFact( rFilterBase.getModel(), UNO_QUERY_THROW );
+ if ( !mxShape.is() )
+ {
+ mxShape.set( xServiceFact->createInstance( aServiceName ), UNO_QUERY_THROW );
+ }
+
+ Reference< XPropertySet > xSet( mxShape, UNO_QUERY );
+ if (xSet.is())
+ {
+ if( !msName.isEmpty() )
+ {
+ Reference< container::XNamed > xNamed( mxShape, UNO_QUERY );
+ if( xNamed.is() )
+ xNamed->setName( msName );
+ }
+ if( !msDescription.isEmpty() )
+ {
+ xSet->setPropertyValue( "Description", Any( msDescription ) );
+ }
+ if (aServiceName != "com.sun.star.text.TextFrame")
+ rxShapes->add( mxShape );
+
+ if ( mbHidden || mbHiddenMasterShape )
+ {
+ SAL_INFO("oox.drawingml", "Shape::createAndInsert: invisible shape with id='" << msId << "'");
+ xSet->setPropertyValue( "Visible", Any( false ) );
+ // In Excel hidden means not printed, let's use visibility for now until that's handled separately
+ xSet->setPropertyValue( "Printable", Any( false ) );
+ }
+
+ if (mbLocked)
+ {
+ xSet->setPropertyValue("MoveProtect", Any(true));
+ xSet->setPropertyValue("SizeProtect", Any(true));
+ }
+
+ ActionLockGuard const alg(mxShape);
+
+ // sj: removing default text of placeholder objects such as SlideNumberShape or HeaderShape
+ if ( bClearText )
+ {
+ uno::Reference< text::XText > xText( mxShape, uno::UNO_QUERY );
+ if ( xText.is() )
+ {
+ xText->setString( "" );
+ }
+ }
+
+ if (pMathXml)
+ {
+ // the "EmbeddedObject" property is read-only, so we have to create
+ // the shape first, and it can be read only after the shape is
+ // inserted into the document, so delay the actual import until here
+ SvGlobalName name(SO3_SM_CLASSID);
+ xSet->setPropertyValue("CLSID", uno::Any(name.GetHexName()));
+ uno::Reference<embed::XEmbeddedObject> const xObj(
+ xSet->getPropertyValue("EmbeddedObject"), uno::UNO_QUERY);
+ if (xObj.is())
+ {
+ uno::Reference<uno::XInterface> const xMathModel(xObj->getComponent());
+ oox::FormulaImportBase *const pMagic(
+ dynamic_cast<oox::FormulaImportBase*>(xMathModel.get()));
+ assert(pMagic);
+ pMagic->readFormulaOoxml(*pMathXml);
+ }
+ }
+
+ const GraphicHelper& rGraphicHelper = rFilterBase.getGraphicHelper();
+
+ ::Color nLinePhClr(ColorTransparency, 0xffffffff);
+ ::Color nFillPhClr(ColorTransparency, 0xffffffff);
+ sal_Int16 nFillPhClrTheme = -1;
+ // TODO: use ph color when applying effect properties
+ //sal_Int32 nEffectPhClr = -1;
+
+ // dmapper needs the original rotation angle for calculating square wrap. This angle is not
+ // available as property there, so store it in InteropGrabBag.
+ putPropertyToGrabBag("mso-rotation-angle", Any(mnRotation));
+
+ if( pTheme )
+ {
+ if( const ShapeStyleRef* pLineRef = getShapeStyleRef( XML_lnRef ) )
+ {
+ LineProperties aLineProperties;
+ aLineProperties.maLineFill.moFillType = XML_noFill;
+ if( const LineProperties* pLineProps = pTheme->getLineStyle( pLineRef->mnThemedIdx ) )
+ aLineProperties.assignUsed( *pLineProps );
+ nLinePhClr = pLineRef->maPhClr.getColor( rGraphicHelper );
+
+ // Store style-related properties to InteropGrabBag to be able to export them back
+ uno::Sequence<beans::PropertyValue> aProperties = comphelper::InitPropertySequence(
+ {
+ {"SchemeClr", uno::Any(pLineRef->maPhClr.getSchemeColorName())},
+ {"Idx", uno::Any(pLineRef->mnThemedIdx)},
+ {"Color", uno::Any(nLinePhClr)},
+ {"LineStyle", uno::Any(aLineProperties.getLineStyle())},
+ {"LineCap", uno::Any(aLineProperties.getLineCap())},
+ {"LineJoint", uno::Any(aLineProperties.getLineJoint())},
+ {"LineWidth", uno::Any(aLineProperties.getLineWidth())},
+ {"Transformations", uno::Any(pLineRef->maPhClr.getTransformations())}
+ });
+ putPropertyToGrabBag( "StyleLnRef", Any( aProperties ) );
+ }
+ if( const ShapeStyleRef* pFillRef = getShapeStyleRef( XML_fillRef ) )
+ {
+ if (!getFillProperties().moUseBgFill.get(false))
+ {
+ nFillPhClr = pFillRef->maPhClr.getColor(rGraphicHelper);
+ nFillPhClrTheme = pFillRef->maPhClr.getSchemeColorIndex();
+ }
+
+ OUString sColorScheme = pFillRef->maPhClr.getSchemeColorName();
+ if( !sColorScheme.isEmpty() )
+ {
+ uno::Sequence<beans::PropertyValue> aProperties = comphelper::InitPropertySequence(
+ {
+ {"SchemeClr", uno::Any(sColorScheme)},
+ {"Idx", uno::Any(pFillRef->mnThemedIdx)},
+ {"Color", uno::Any(nFillPhClr)},
+ {"Transformations", uno::Any(pFillRef->maPhClr.getTransformations())}
+ });
+
+ putPropertyToGrabBag( "StyleFillRef", Any( aProperties ) );
+ }
+ }
+ if( const ShapeStyleRef* pEffectRef = getShapeStyleRef( XML_effectRef ) )
+ {
+ // TODO: use ph color when applying effect properties
+ // nEffectPhClr = pEffectRef->maPhClr.getColor( rGraphicHelper );
+
+ // Store style-related properties to InteropGrabBag to be able to export them back
+ uno::Sequence<beans::PropertyValue> aProperties = comphelper::InitPropertySequence(
+ {
+ {"SchemeClr", uno::Any(pEffectRef->maPhClr.getSchemeColorName())},
+ {"Idx", uno::Any(pEffectRef->mnThemedIdx)},
+ {"Transformations", uno::Any(pEffectRef->maPhClr.getTransformations())}
+ });
+ putPropertyToGrabBag( "StyleEffectRef", Any( aProperties ) );
+ }
+ }
+ ShapePropertyMap aShapeProps( rFilterBase.getModelObjectHelper() );
+
+ // add properties from textbody to shape properties
+ if( mpTextBody )
+ {
+ mpTextBody->getTextProperties().pushTextDistances(Size(aShapeRectHmm.Width, aShapeRectHmm.Height));
+ aShapeProps.assignUsed( mpTextBody->getTextProperties().maPropertyMap );
+ // Push char properties as well - specifically useful when this is a placeholder
+ if( mpMasterTextListStyle && mpMasterTextListStyle->getListStyle()[0].getTextCharacterProperties().moHeight.has() )
+ aShapeProps.setProperty(PROP_CharHeight, GetFontHeight( mpMasterTextListStyle->getListStyle()[0].getTextCharacterProperties().moHeight.get() ));
+ }
+
+ // applying properties
+ aShapeProps.assignUsed( getShapeProperties() );
+ aShapeProps.assignUsed( maDefaultShapeProperties );
+ if(mnRotation != 0 && bIsCustomShape)
+ aShapeProps.setProperty( PROP_RotateAngle, sal_Int32( NormAngle36000( Degree100(mnRotation / -600) ) ));
+ if( bIsEmbMedia ||
+ bIsCustomShape ||
+ aServiceName == "com.sun.star.drawing.GraphicObjectShape" ||
+ aServiceName == "com.sun.star.drawing.OLE2Shape")
+ {
+ mpGraphicPropertiesPtr->pushToPropMap( aShapeProps, rGraphicHelper, mbFlipH, mbFlipV );
+ }
+ if ( mpTablePropertiesPtr && aServiceName == "com.sun.star.drawing.TableShape" )
+ {
+ mpTablePropertiesPtr->pushToPropSet( rFilterBase, xSet, mpMasterTextListStyle );
+ if ( auto* pTableShape = dynamic_cast<sdr::table::SdrTableObj*>(SdrObject::getSdrObjectFromXShape(mxShape)) )
+ {
+ // Disable layouting until an attempt at correcting faulty table height is made
+ pTableShape->SetSkipChangeLayout(true);
+ }
+ }
+
+ FillProperties aFillProperties = getActualFillProperties(pTheme, &rShapeOrParentShapeFillProps);
+ if (getFillProperties().moFillType.has() && getFillProperties().moFillType.get() == XML_grpFill)
+ getFillProperties().assignUsed(aFillProperties);
+ if(!bIsCroppedGraphic)
+ aFillProperties.pushToPropMap( aShapeProps, rGraphicHelper, mnRotation, nFillPhClr, nFillPhClrTheme, mbFlipH, mbFlipV, bIsCustomShape );
+ LineProperties aLineProperties = getActualLineProperties(pTheme);
+ aLineProperties.pushToPropMap( aShapeProps, rGraphicHelper, nLinePhClr );
+ EffectProperties aEffectProperties = getActualEffectProperties(pTheme);
+ // TODO: use ph color when applying effect properties
+ aEffectProperties.pushToPropMap( aShapeProps, rGraphicHelper );
+
+ // applying autogrowheight property before setting shape size, because
+ // the shape size might be changed if currently autogrowheight is true
+ // we must also check that the PropertySet supports the property.
+ Reference< XPropertySetInfo > xSetInfo( xSet->getPropertySetInfo() );
+ const OUString& rPropName = PropertyMap::getPropertyName( PROP_TextAutoGrowHeight );
+ if( xSetInfo.is() && xSetInfo->hasPropertyByName( rPropName ) )
+ if( aShapeProps.hasProperty( PROP_TextAutoGrowHeight ) )
+ xSet->setPropertyValue( rPropName, Any( false ) );
+
+ // do not set properties at a group shape (this causes
+ // assertions from svx) ...
+ if( aServiceName != "com.sun.star.drawing.GroupShape" )
+ {
+ if (aServiceName == "com.sun.star.text.TextFrame")
+ {
+ if (mpCustomShapePropertiesPtr && mpCustomShapePropertiesPtr->getShapeTypeOverride())
+ {
+ uno::Reference<beans::XPropertySet> propertySet (mxShape, uno::UNO_QUERY);
+ uno::Sequence<beans::PropertyValue> aGrabBag;
+ propertySet->getPropertyValue("FrameInteropGrabBag") >>= aGrabBag;
+ sal_Int32 length = aGrabBag.getLength();
+ aGrabBag.realloc( length+1);
+ auto pGrabBag = aGrabBag.getArray();
+ pGrabBag[length].Name = "mso-orig-shape-type";
+ uno::Sequence< sal_Int8 > const & aNameSeq =
+ mpCustomShapePropertiesPtr->getShapePresetTypeName();
+ OUString sShapePresetTypeName(reinterpret_cast< const char* >(
+ aNameSeq.getConstArray()), aNameSeq.getLength(), RTL_TEXTENCODING_UTF8);
+ pGrabBag[length].Value <<= sShapePresetTypeName;
+ propertySet->setPropertyValue("FrameInteropGrabBag",uno::Any(aGrabBag));
+ }
+ //If the text box has links then save the link information so that
+ //it can be accessed in DomainMapper_Impl.cxx while chaining the text frames.
+ if (isLinkedTxbx())
+ {
+ uno::Reference<beans::XPropertySet> propertySet (mxShape, uno::UNO_QUERY);
+ uno::Sequence<beans::PropertyValue> aGrabBag;
+ propertySet->getPropertyValue("FrameInteropGrabBag") >>= aGrabBag;
+ sal_Int32 length = aGrabBag.getLength();
+ aGrabBag.realloc( length + 3 );
+ auto pGrabBag = aGrabBag.getArray();
+ pGrabBag[length].Name = "TxbxHasLink";
+ pGrabBag[length].Value <<= isLinkedTxbx();
+ pGrabBag[length + 1 ].Name = "Txbx-Id";
+ pGrabBag[length + 1 ].Value <<= getLinkedTxbxAttributes().id;
+ pGrabBag[length + 2 ].Name = "Txbx-Seq";
+ pGrabBag[length + 2 ].Value <<= getLinkedTxbxAttributes().seq;
+ propertySet->setPropertyValue("FrameInteropGrabBag",uno::Any(aGrabBag));
+ }
+
+ // TextFrames have BackColor, not FillColor
+ if (aShapeProps.hasProperty(PROP_FillColor))
+ {
+ aShapeProps.setAnyProperty(PROP_BackColor, aShapeProps.getProperty(PROP_FillColor));
+ aShapeProps.erase(PROP_FillColor);
+ }
+ // TextFrames have BackColorTransparency, not FillTransparence
+ if (aShapeProps.hasProperty(PROP_FillTransparence))
+ {
+ aShapeProps.setAnyProperty(PROP_BackColorTransparency, aShapeProps.getProperty(PROP_FillTransparence));
+ aShapeProps.erase(PROP_FillTransparence);
+ }
+ // TextFrames have BackGraphic, not FillBitmap
+ if (aShapeProps.hasProperty(PROP_FillBitmap))
+ {
+ aShapeProps.setAnyProperty(PROP_BackGraphic, aShapeProps.getProperty(PROP_FillBitmap));
+ aShapeProps.erase(PROP_FillBitmap);
+ }
+ if (aShapeProps.hasProperty(PROP_FillBitmapName))
+ {
+ uno::Any aAny = aShapeProps.getProperty(PROP_FillBitmapName);
+ OUString aFillBitmapName = aAny.get<OUString>();
+ uno::Reference<awt::XBitmap> xBitmap = rFilterBase.getModelObjectHelper().getFillBitmap(aFillBitmapName);
+ uno::Reference<graphic::XGraphic> xGraphic(xBitmap, uno::UNO_QUERY);
+ aShapeProps.setProperty(PROP_BackGraphic, xGraphic);
+ // aShapeProps.erase(PROP_FillBitmapName); // Maybe, leave the name as well
+ }
+ // And no LineColor property; individual borders can have colors
+ if (aShapeProps.hasProperty(PROP_LineColor))
+ {
+ uno::Reference<beans::XPropertySet> xPropertySet(mxShape, uno::UNO_QUERY);
+ static const sal_Int32 aBorders[] =
+ {
+ PROP_TopBorder, PROP_LeftBorder, PROP_BottomBorder, PROP_RightBorder
+ };
+ for (sal_Int32 nBorder : aBorders)
+ {
+ css::table::BorderLine2 aBorderLine = xPropertySet->getPropertyValue(PropertyMap::getPropertyName(nBorder)).get<css::table::BorderLine2>();
+ aBorderLine.Color = aShapeProps.getProperty(PROP_LineColor).get<sal_Int32>();
+ if (aLineProperties.moLineWidth.has())
+ aBorderLine.LineWidth = convertEmuToHmm(aLineProperties.moLineWidth.get());
+ aShapeProps.setProperty(nBorder, aBorderLine);
+ }
+ aShapeProps.erase(PROP_LineColor);
+ }
+ if(mnRotation)
+ {
+ uno::Reference<beans::XPropertySet> xPropertySet(mxShape, uno::UNO_QUERY);
+ static const OUStringLiteral aGrabBagPropName = u"FrameInteropGrabBag";
+ uno::Sequence<beans::PropertyValue> aGrabBag;
+ xPropertySet->getPropertyValue(aGrabBagPropName) >>= aGrabBag;
+ beans::PropertyValue aPair(comphelper::makePropertyValue("mso-rotation-angle",
+ mnRotation));
+ if (aGrabBag.hasElements())
+ {
+ sal_Int32 nLength = aGrabBag.getLength();
+ aGrabBag.realloc(nLength + 1);
+ aGrabBag.getArray()[nLength] = aPair;
+ }
+ else
+ {
+ aGrabBag = { aPair };
+ }
+ xPropertySet->setPropertyValue(aGrabBagPropName, uno::Any(aGrabBag));
+ }
+ // TextFrames have ShadowFormat, not individual shadow properties.
+ std::optional<sal_Int32> oShadowDistance;
+ if (aShapeProps.hasProperty(PROP_ShadowXDistance))
+ {
+ oShadowDistance = aShapeProps.getProperty(PROP_ShadowXDistance).get<sal_Int32>();
+ aShapeProps.erase(PROP_ShadowXDistance);
+ }
+ if (aShapeProps.hasProperty(PROP_ShadowYDistance))
+ {
+ // There is a single 'dist' attribute, so no need to count the avg of x and y.
+ aShapeProps.erase(PROP_ShadowYDistance);
+ }
+ std::optional<sal_Int32> oShadowColor;
+ if (aShapeProps.hasProperty(PROP_ShadowColor))
+ {
+ oShadowColor = aShapeProps.getProperty(PROP_ShadowColor).get<sal_Int32>();
+ aShapeProps.erase(PROP_ShadowColor);
+ }
+ if (aShapeProps.hasProperty(PROP_Shadow))
+ aShapeProps.erase(PROP_Shadow);
+
+ if (oShadowDistance || oShadowColor || aEffectProperties.maShadow.moShadowDir.has())
+ {
+ css::table::ShadowFormat aFormat;
+ if (oShadowColor)
+ aFormat.Color = *oShadowColor;
+ if (aEffectProperties.maShadow.moShadowDir.has())
+ {
+ css::table::ShadowLocation nLocation = css::table::ShadowLocation_NONE;
+ switch (aEffectProperties.maShadow.moShadowDir.get())
+ {
+ case 13500000:
+ nLocation = css::table::ShadowLocation_TOP_LEFT;
+ break;
+ case 18900000:
+ nLocation = css::table::ShadowLocation_TOP_RIGHT;
+ break;
+ case 8100000:
+ nLocation = css::table::ShadowLocation_BOTTOM_LEFT;
+ break;
+ case 2700000:
+ nLocation = css::table::ShadowLocation_BOTTOM_RIGHT;
+ break;
+ }
+ aFormat.Location = nLocation;
+ }
+ aFormat.ShadowWidth = *oShadowDistance;
+ aShapeProps.setProperty(PROP_ShadowFormat, aFormat);
+ }
+
+ }
+ else if (mbTextBox)
+ {
+ aShapeProps.setProperty(PROP_TextBox, true);
+ }
+
+ if (aServiceName != "com.sun.star.text.TextFrame" && isLinkedTxbx())
+ {
+ uno::Reference<beans::XPropertySet> propertySet (mxShape, uno::UNO_QUERY);
+ uno::Sequence<beans::PropertyValue> aGrabBag;
+ propertySet->getPropertyValue("InteropGrabBag") >>= aGrabBag;
+ sal_Int32 length = aGrabBag.getLength();
+ aGrabBag.realloc( length + 3 );
+ auto pGrabBag = aGrabBag.getArray();
+ pGrabBag[length].Name = "TxbxHasLink";
+ pGrabBag[length].Value <<= isLinkedTxbx();
+ pGrabBag[length + 1 ].Name = "Txbx-Id";
+ pGrabBag[length + 1 ].Value <<= getLinkedTxbxAttributes().id;
+ pGrabBag[length + 2 ].Name = "Txbx-Seq";
+ pGrabBag[length + 2 ].Value <<= getLinkedTxbxAttributes().seq;
+ propertySet->setPropertyValue("InteropGrabBag",uno::Any(aGrabBag));
+ }
+
+ // If the shape is a picture placeholder.
+ if (aServiceName == "com.sun.star.presentation.GraphicObjectShape" && !bClearText)
+ {
+ // Placeholder text should be in center of the shape.
+ aShapeProps.setProperty(PROP_TextContourFrame, false);
+
+ /* Placeholder icon should be at the center of the parent shape.
+ * We use negative graphic crop property because of that we don't
+ * have padding support.
+ */
+ uno::Reference<beans::XPropertySet> xGraphic(xSet->getPropertyValue("Graphic"), uno::UNO_QUERY);
+ if (xGraphic.is())
+ {
+ awt::Size aBitmapSize;
+ xGraphic->getPropertyValue("Size100thMM") >>= aBitmapSize;
+ sal_Int32 nXMargin = (aShapeRectHmm.Width - aBitmapSize.Width) / 2;
+ sal_Int32 nYMargin = (aShapeRectHmm.Height - aBitmapSize.Height) / 2;
+ if (nXMargin > 0 && nYMargin > 0)
+ {
+ text::GraphicCrop aGraphicCrop;
+ aGraphicCrop.Top = nYMargin * -1;
+ aGraphicCrop.Bottom = nYMargin * -1;
+ aGraphicCrop.Left = nXMargin * -1;
+ aGraphicCrop.Right = nXMargin * -1;
+ aShapeProps.setProperty(PROP_GraphicCrop, aGraphicCrop);
+ }
+ }
+ }
+
+ PropertySet( xSet ).setProperties( aShapeProps );
+
+ if (mpTablePropertiesPtr && aServiceName == "com.sun.star.drawing.TableShape")
+ {
+ // Powerpoint sometimes export row heights less than the minimum size,
+ // which during import expanded to the minimum
+ if (auto* pTableShape = dynamic_cast<sdr::table::SdrTableObj*>(SdrObject::getSdrObjectFromXShape(mxShape)))
+ {
+ sal_Int32 nCorrectedHeight = pTableShape->getHeightWithoutFitting();
+ const auto& aShapeSize = mxShape->getSize();
+ if( nCorrectedHeight > aShapeSize.Height )
+ mxShape->setSize( {aShapeSize.Width, nCorrectedHeight} );
+ pTableShape->SetSkipChangeLayout(false);
+ }
+ }
+
+ if (mbLockedCanvas)
+ {
+ putPropertyToGrabBag( "LockedCanvas", Any( true ) );
+ if (aServiceName == "com.sun.star.drawing.LineShape")
+ {
+ // It seems the position and size for lines inside a locked canvas is absolute.
+ mxShape->setPosition(awt::Point(aShapeRectHmm.X, aShapeRectHmm.Y));
+ mxShape->setSize(awt::Size(aShapeRectHmm.Width, aShapeRectHmm.Height));
+ }
+ }
+
+ // Store original fill and line colors of the shape and the theme color name to InteropGrabBag
+ std::vector<beans::PropertyValue> aProperties
+ {
+ comphelper::makePropertyValue("EmuLineWidth", aLineProperties.moLineWidth.get(0)),
+ comphelper::makePropertyValue("OriginalSolidFillClr", aShapeProps.getProperty(PROP_FillColor)),
+ comphelper::makePropertyValue("OriginalLnSolidFillClr", aShapeProps.getProperty(PROP_LineColor))
+ };
+ OUString sColorFillScheme = aFillProperties.maFillColor.getSchemeColorName();
+ if( !aFillProperties.maFillColor.isPlaceHolder() && !sColorFillScheme.isEmpty() )
+ {
+ aProperties.push_back(comphelper::makePropertyValue("SpPrSolidFillSchemeClr", sColorFillScheme));
+ aProperties.push_back(comphelper::makePropertyValue("SpPrSolidFillSchemeClrTransformations", aFillProperties.maFillColor.getTransformations()));
+ }
+ OUString sLnColorFillScheme = aLineProperties.maLineFill.maFillColor.getSchemeColorName();
+ if( !aLineProperties.maLineFill.maFillColor.isPlaceHolder() && !sLnColorFillScheme.isEmpty() )
+ {
+ aProperties.push_back(comphelper::makePropertyValue("SpPrLnSolidFillSchemeClr", sLnColorFillScheme));
+ auto aResolvedSchemeClr = aLineProperties.maLineFill.maFillColor;
+ aResolvedSchemeClr.clearTransformations();
+ aProperties.push_back(comphelper::makePropertyValue("SpPrLnSolidFillResolvedSchemeClr", aResolvedSchemeClr.getColor(rGraphicHelper, nFillPhClr)));
+ aProperties.push_back(comphelper::makePropertyValue("SpPrLnSolidFillSchemeClrTransformations", aLineProperties.maLineFill.maFillColor.getTransformations()));
+ }
+ putPropertiesToGrabBag(comphelper::containerToSequence(aProperties));
+
+ // Store original gradient fill of the shape to InteropGrabBag
+ // LibreOffice doesn't support all the kinds of gradient so we save its complete definition
+ if( aShapeProps.hasProperty( PROP_FillGradient ) )
+ {
+ std::vector<beans::PropertyValue> aGradientStops;
+ size_t i = 0;
+ for( const auto& [rPos, rColor] : aFillProperties.maGradientProps.maGradientStops )
+ { // for each stop in the gradient definition:
+
+ // save position
+ std::vector<beans::PropertyValue> aGradientStop
+ {
+ comphelper::makePropertyValue("Pos", rPos)
+ };
+
+ OUString sStopColorScheme = rColor.getSchemeColorName();
+ if( sStopColorScheme.isEmpty() )
+ {
+ // save RGB color
+ aGradientStop.push_back(comphelper::makePropertyValue("RgbClr", rColor.getColor(rGraphicHelper, nFillPhClr)));
+ // in the case of a RGB color, transformations are already applied to
+ // the color with the exception of alpha transformations. We only need
+ // to keep the transparency value to calculate the alpha value later.
+ if( rColor.hasTransparency() )
+ aGradientStop.push_back(comphelper::makePropertyValue("Transparency", rColor.getTransparency()));
+ }
+ else
+ {
+ // save color with scheme name
+ aGradientStop.push_back(comphelper::makePropertyValue("SchemeClr", sStopColorScheme));
+ // save all color transformations
+ aGradientStop.push_back(comphelper::makePropertyValue("Transformations", rColor.getTransformations()));
+ }
+
+ aGradientStops.push_back(comphelper::makePropertyValue(OUString::number(i), comphelper::containerToSequence(aGradientStop)));
+ ++i;
+ }
+ // If getFillProperties.moFillType is unused that means gradient is defined by a theme
+ // which is already saved into StyleFillRef property, so no need to save the explicit values too
+ if( getFillProperties().moFillType.has() )
+ putPropertyToGrabBag( "GradFillDefinition", uno::Any(comphelper::containerToSequence(aGradientStops)));
+ putPropertyToGrabBag( "OriginalGradFill", aShapeProps.getProperty(PROP_FillGradient) );
+ }
+
+ // store unsupported effect attributes in the grab bag
+ if (!aEffectProperties.m_Effects.empty())
+ {
+ std::vector<beans::PropertyValue> aEffects;
+ for (auto const& it : aEffectProperties.m_Effects)
+ {
+ PropertyValue aEffect = it->getEffect();
+ if( !aEffect.Name.isEmpty() )
+ {
+ std::vector<beans::PropertyValue> aEffectsGrabBag
+ {
+ comphelper::makePropertyValue("Attribs", aEffect.Value)
+ };
+
+ Color& aColor( it->moColor );
+ OUString sColorScheme = aColor.getSchemeColorName();
+ if( sColorScheme.isEmpty() )
+ {
+ // RGB color and transparency value
+ aEffectsGrabBag.push_back(comphelper::makePropertyValue("RgbClr", aColor.getColor(rGraphicHelper, nFillPhClr)));
+ aEffectsGrabBag.push_back(comphelper::makePropertyValue("RgbClrTransparency", aColor.getTransparency()));
+ }
+ else
+ {
+ // scheme color with name and transformations
+ aEffectsGrabBag.push_back(comphelper::makePropertyValue("SchemeClr", sColorScheme));
+ aEffectsGrabBag.push_back(comphelper::makePropertyValue("SchemeClrTransformations", aColor.getTransformations()));
+ }
+ aEffects.push_back(comphelper::makePropertyValue(aEffect.Name, comphelper::containerToSequence(aEffectsGrabBag)));
+ }
+ }
+ putPropertyToGrabBag("EffectProperties", uno::Any(comphelper::containerToSequence(aEffects)));
+ }
+
+ // add 3D effects if any
+ Sequence< PropertyValue > aCamera3DEffects = get3DProperties().getCameraAttributes();
+ Sequence< PropertyValue > aLightRig3DEffects = get3DProperties().getLightRigAttributes();
+ Sequence< PropertyValue > aShape3DEffects = get3DProperties().getShape3DAttributes( rGraphicHelper, nFillPhClr );
+ if( aCamera3DEffects.hasElements() || aLightRig3DEffects.hasElements() || aShape3DEffects.hasElements() )
+ {
+ uno::Sequence<beans::PropertyValue> a3DEffectsGrabBag = comphelper::InitPropertySequence(
+ {
+ {"Camera", uno::Any(aCamera3DEffects)},
+ {"LightRig", uno::Any(aLightRig3DEffects)},
+ {"Shape3D", uno::Any(aShape3DEffects)}
+ });
+ putPropertyToGrabBag( "3DEffectProperties", Any( a3DEffectsGrabBag ) );
+ }
+
+ if( bIsCustomShape && getTextBody())
+ {
+
+ Sequence< PropertyValue > aTextCamera3DEffects = getTextBody()->get3DProperties().getCameraAttributes();
+ Sequence< PropertyValue > aTextLightRig3DEffects = getTextBody()->get3DProperties().getLightRigAttributes();
+ Sequence< PropertyValue > aTextShape3DEffects = getTextBody()->get3DProperties().getShape3DAttributes( rGraphicHelper, nFillPhClr );
+ if( aTextCamera3DEffects.hasElements() || aTextLightRig3DEffects.hasElements() || aTextShape3DEffects.hasElements() )
+ {
+ uno::Sequence<beans::PropertyValue> aText3DEffectsGrabBag = comphelper::InitPropertySequence(
+ {
+ {"Camera", uno::Any(aTextCamera3DEffects)},
+ {"LightRig", uno::Any(aTextLightRig3DEffects)},
+ {"Shape3D", uno::Any(aTextShape3DEffects)}
+ });
+ putPropertyToGrabBag( "Text3DEffectProperties", Any( aText3DEffectsGrabBag ) );
+ }
+ }
+
+ // store bitmap artistic effects in the grab bag
+ if( !mpGraphicPropertiesPtr->maBlipProps.maEffect.isEmpty() )
+ putPropertyToGrabBag( "ArtisticEffectProperties",
+ Any( mpGraphicPropertiesPtr->maBlipProps.maEffect.getEffect() ) );
+ }
+
+ else if( mbLockedCanvas )
+ {
+ //If we have aServiceName as "com.sun.star.drawing.GroupShape" and lockedCanvas
+ putPropertyToGrabBag( "LockedCanvas", Any( true ) );
+ }
+
+ // These can have a custom geometry, so position should be set here,
+ // after creation but before custom shape handling, using the position
+ // we got from the caller.
+ if (mbWps && aServiceName == "com.sun.star.drawing.LineShape" && !pParentGroupShape)
+ mxShape->setPosition(maPosition);
+
+ if (bIsConnectorShape)
+ {
+ OUString sConnectorShapePresetTypeName(
+ reinterpret_cast<const char*>(
+ mpCustomShapePropertiesPtr->getShapePresetTypeName().getConstArray()),
+ mpCustomShapePropertiesPtr->getShapePresetTypeName().getLength(),
+ RTL_TEXTENCODING_UTF8);
+ msConnectorName = sConnectorShapePresetTypeName;
+
+ sal_Int32 nType = mpCustomShapePropertiesPtr->getShapePresetType();
+ switch (nType)
+ {
+ case XML_line:
+ case XML_straightConnector1:
+ xSet->setPropertyValue("EdgeKind", Any(ConnectorType_LINE));
+ break;
+ case XML_bentConnector2:
+ case XML_bentConnector3:
+ case XML_bentConnector4:
+ case XML_bentConnector5:
+ xSet->setPropertyValue("EdgeKind", Any(ConnectorType_STANDARD));
+ break;
+ case XML_curvedConnector2:
+ case XML_curvedConnector3:
+ case XML_curvedConnector4:
+ case XML_curvedConnector5:
+ xSet->setPropertyValue("EdgeKind", Any(ConnectorType_CURVE));
+ break;
+ default:
+ break;
+ }
+ }
+
+ if( bIsCustomShape )
+ {
+ if ( mbFlipH )
+ mpCustomShapePropertiesPtr->setMirroredX( true );
+ if ( mbFlipV )
+ mpCustomShapePropertiesPtr->setMirroredY( true );
+ if( getTextBody() )
+ {
+ sal_Int32 nTextCameraZRotation = static_cast< sal_Int32 >( getTextBody()->get3DProperties().maCameraRotation.mnRevolution.get() );
+ mpCustomShapePropertiesPtr->setTextCameraZRotateAngle( nTextCameraZRotation / 60000 );
+
+ sal_Int32 nTextRotateAngle = static_cast< sal_Int32 >( getTextBody()->getTextProperties().moRotation.get( 0 ) );
+
+ nTextRotateAngle -= mnDiagramRotation;
+ /* OOX measures text rotation clockwise in 1/60000th degrees,
+ relative to the containing shape. setTextRotateAngle wants degrees anticlockwise. */
+ nTextRotateAngle = -1 * nTextRotateAngle / 60000;
+
+ if (getTextBody()->getTextProperties().moUpright)
+ {
+ // When upright is set, we want the text without any rotation.
+ // But if we set 0 here, the text is still rotated if the
+ // shape containing it is rotated.
+ // Hence, we rotate the text into the opposite direction of
+ // the rotation of the shape, by as much as the shape was rotated.
+ mpCustomShapePropertiesPtr->setTextRotateAngle((mnRotation / 60000) + nTextRotateAngle);
+ // Also put the initial angles away in a GrabBag.
+ putPropertyToGrabBag("Upright", Any(true));
+ putPropertyToGrabBag("nShapeRotationAtImport", Any(mnRotation / 60000));
+ putPropertyToGrabBag("nTextRotationAtImport", Any(nTextRotateAngle));
+ }
+ else
+ {
+ mpCustomShapePropertiesPtr->setTextRotateAngle(nTextRotateAngle);
+ }
+
+ auto sHorzOverflow = getTextBody()->getTextProperties().msHorzOverflow;
+ if (!sHorzOverflow.isEmpty())
+ putPropertyToGrabBag("horzOverflow", uno::Any(getTextBody()->getTextProperties().msHorzOverflow));
+ auto nVertOverflow = getTextBody()->getTextProperties().msVertOverflow;
+ if (!nVertOverflow.isEmpty())
+ putPropertyToGrabBag("vertOverflow", uno::Any(getTextBody()->getTextProperties().msVertOverflow));
+ }
+
+ // Note that the script oox/source/drawingml/customshapes/generatePresetsData.pl looks
+ // for these ==cscode== and ==csdata== markers, so don't "clean up" these SAL_INFOs
+ SAL_INFO("oox.cscode", "==cscode== shape name: '" << msName << "'");
+ SAL_INFO("oox.csdata", "==csdata== shape name: '" << msName << "'");
+ mpCustomShapePropertiesPtr->pushToPropSet(xSet, maSize);
+
+ if (mpTextBody)
+ {
+ bool bIsPresetShape = !mpTextBody->getTextProperties().msPrst.isEmpty();
+ if (bIsPresetShape)
+ {
+ OUString sClass;
+ const OUString sPresetType = mpTextBody->getTextProperties().msPrst;
+ sClass = PresetGeometryTypeNames::GetFontworkType( sPresetType );
+
+ lcl_createPresetShape( mxShape, sClass, sPresetType, mpCustomShapePropertiesPtr, mpTextBody, rGraphicHelper );
+ }
+ }
+ }
+ else if( getTextBody() )
+ getTextBody()->getTextProperties().pushVertSimulation();
+
+ // tdf#133037: a bit hackish: force Shape to rotate in the opposite direction the camera would rotate
+ PropertySet aPropertySet(mxShape);
+ if ( !bUseRotationTransform && (mnRotation != 0 || nCameraRotation != 0) )
+ {
+ // use the same logic for rotation from VML exporter (SimpleShape::implConvertAndInsert at vmlshape.cxx)
+ Degree100 nAngle = NormAngle36000( Degree100((mnRotation - nCameraRotation) / -600) );
+ aPropertySet.setAnyProperty( PROP_RotateAngle, Any( sal_Int32( nAngle.get() ) ) );
+ aPropertySet.setAnyProperty( PROP_HoriOrientPosition, Any( maPosition.X ) );
+ aPropertySet.setAnyProperty( PROP_VertOrientPosition, Any( maPosition.Y ) );
+ }
+
+ // in some cases, we don't have any text body.
+ if( mpTextBody && ( !bDoNotInsertEmptyTextBody || !mpTextBody->isEmpty() ) )
+ {
+ Reference < XText > xText( mxShape, UNO_QUERY );
+ if ( xText.is() ) // not every shape is supporting an XText interface (e.g. GroupShape)
+ {
+ TextCharacterProperties aCharStyleProperties;
+ if( const ShapeStyleRef* pFontRef = getShapeStyleRef( XML_fontRef ) )
+ {
+ if( pFontRef->mnThemedIdx != 0 )
+ {
+ if( pTheme )
+ if( const TextCharacterProperties* pCharProps = pTheme->getFontStyle( pFontRef->mnThemedIdx ) )
+ aCharStyleProperties.assignUsed( *pCharProps );
+ SAL_INFO("oox.drawingml", "Shape::createAndInsert: use font color");
+ if ( pFontRef->maPhClr.isUsed() )
+ {
+ aCharStyleProperties.maFillProperties.maFillColor = pFontRef->maPhClr;
+ aCharStyleProperties.maFillProperties.moFillType.set(XML_solidFill);
+ }
+ }
+ }
+ xText->setString("");
+ Reference < XTextCursor > xAt = xText->createTextCursor();
+ getTextBody()->insertAt( rFilterBase, xText, xAt, aCharStyleProperties, mpMasterTextListStyle );
+
+ const TextParagraphVector& rParagraphs = getTextBody()->getParagraphs();
+ if (!rParagraphs.empty())
+ {
+ const std::shared_ptr<TextParagraph>& pParagraph = rParagraphs[0];
+ if (pParagraph->getProperties().getParaAdjust())
+ {
+ style::ParagraphAdjust eAdjust = *pParagraph->getProperties().getParaAdjust();
+ if (eAdjust == style::ParagraphAdjust_CENTER)
+ {
+ // If the first paragraph is centered, then set the para adjustment of
+ // the shape itself to centered as well.
+ aPropertySet.setAnyProperty(PROP_ParaAdjust, uno::Any(eAdjust));
+ }
+ }
+
+ // tdf#144092 For empty textboxes push character styles &
+ // endParaRPr into the Shape's properties
+ if (rParagraphs.size() == 1 && pParagraph->getRuns().empty())
+ {
+ TextCharacterProperties aTextCharacterProps{ pParagraph->getCharacterStyle(
+ aCharStyleProperties, *mpMasterTextListStyle,
+ getTextBody()->getTextListStyle()) };
+ aTextCharacterProps.assignUsed(pParagraph->getEndProperties());
+ aTextCharacterProps.pushToPropSet(aPropertySet, rFilterBase);
+ }
+ }
+ }
+ }
+ else if (mbTextBox)
+ {
+ // No drawingML text, but WPS text is expected: save the theme
+ // character color on the shape, then.
+ if(const ShapeStyleRef* pFontRef = getShapeStyleRef(XML_fontRef))
+ {
+ ::Color nCharColor = pFontRef->maPhClr.getColor(rGraphicHelper);
+ aPropertySet.setAnyProperty(PROP_CharColor, uno::Any(nCharColor));
+ }
+ }
+
+ // Set glow effect properties
+ if ( aEffectProperties.maGlow.moGlowRad.has() )
+ {
+ uno::Reference<beans::XPropertySet> propertySet (mxShape, uno::UNO_QUERY);
+ propertySet->setPropertyValue("GlowEffectRadius", Any(convertEmuToHmm(aEffectProperties.maGlow.moGlowRad.get())));
+ propertySet->setPropertyValue("GlowEffectColor", Any(aEffectProperties.maGlow.moGlowColor.getColor(rGraphicHelper)));
+ propertySet->setPropertyValue("GlowEffectTransparency", Any(aEffectProperties.maGlow.moGlowColor.getTransparency()));
+ }
+
+ // Set soft edge effect properties
+ if (aEffectProperties.maSoftEdge.moRad.has())
+ {
+ uno::Reference<beans::XPropertySet> propertySet(mxShape, uno::UNO_QUERY);
+ propertySet->setPropertyValue(
+ "SoftEdgeRadius", Any(convertEmuToHmm(aEffectProperties.maSoftEdge.moRad.get())));
+ }
+
+ // Set the stroke and fill-color properties of the OLE shape
+ if (aServiceName == "com.sun.star.drawing.OLE2Shape" && mxOleObjectInfo
+ && !mxOleObjectInfo->maShapeId.isEmpty())
+ if (::oox::vml::Drawing* pVmlDrawing = rFilterBase.getVmlDrawing())
+ if (const ::oox::vml::ShapeBase* pVmlShape
+ = pVmlDrawing->getShapes().getShapeById(mxOleObjectInfo->maShapeId))
+ {
+ // Apply stroke props from the type model of the related VML shape.
+ ShapePropertyMap aPropMap(rFilterBase.getModelObjectHelper());
+ pVmlShape->getTypeModel().maStrokeModel.pushToPropMap(
+ aPropMap, rFilterBase.getGraphicHelper());
+ // And, fill-color properties as well...
+ pVmlShape->getTypeModel().maFillModel.pushToPropMap(
+ aPropMap, rFilterBase.getGraphicHelper());
+ PropertySet(xSet).setProperties(aPropMap);
+ }
+ }
+
+ if (mxShape.is())
+ {
+ finalizeXShape( rFilterBase, rxShapes );
+
+ if (mpTextBody)
+ mpTextBody->getTextProperties().readjustTextDistances(mxShape);
+ }
+
+ return mxShape;
+}
+
+void Shape::keepDiagramDrawing(XmlFilterBase& rFilterBase, const OUString& rFragmentPath)
+{
+
+ sal_Int32 length = maDiagramDoms.getLength();
+ maDiagramDoms.realloc(length + 1);
+
+ // drawingValue[0] => dom, drawingValue[1] => Sequence of associated relationships
+ uno::Sequence<uno::Any> diagramDrawing{
+ uno::Any(rFilterBase.importFragment(rFragmentPath)),
+ uno::Any(resolveRelationshipsOfTypeFromOfficeDoc(rFilterBase, rFragmentPath, u"image"))
+ };
+
+ beans::PropertyValue* pValue = maDiagramDoms.getArray();
+ pValue[length].Name = "OOXDrawing";
+ pValue[length].Value <<= diagramDrawing;
+}
+
+void Shape::keepDiagramCompatibilityInfo()
+{
+ try
+ {
+ if( !maDiagramDoms.hasElements() )
+ return;
+
+ Reference < XPropertySet > xSet( mxShape, UNO_QUERY_THROW );
+ Reference < XPropertySetInfo > xSetInfo( xSet->getPropertySetInfo() );
+ if ( !xSetInfo.is() )
+ return;
+
+ const OUString aGrabBagPropName = UNO_NAME_MISC_OBJ_INTEROPGRABBAG;
+ if( !xSetInfo->hasPropertyByName( aGrabBagPropName ) )
+ return;
+
+ Sequence < PropertyValue > aGrabBag;
+ xSet->getPropertyValue( aGrabBagPropName ) >>= aGrabBag;
+
+ // We keep the previous items, if present
+ if ( aGrabBag.hasElements() )
+ xSet->setPropertyValue( aGrabBagPropName, Any( comphelper::concatSequences(aGrabBag, maDiagramDoms) ) );
+ else
+ xSet->setPropertyValue( aGrabBagPropName, Any( maDiagramDoms ) );
+ }
+ catch( const Exception& )
+ {
+ TOOLS_WARN_EXCEPTION( "oox.drawingml", "Shape::keepDiagramCompatibilityInfo" );
+ }
+}
+
+void Shape::convertSmartArtToMetafile(XmlFilterBase const & rFilterBase)
+{
+ try
+ {
+ Reference<XPropertySet> xSet(mxShape, UNO_QUERY_THROW);
+
+ xSet->setPropertyValue("MoveProtect", Any(true));
+ xSet->setPropertyValue("SizeProtect", Any(true));
+
+ // Replace existing shapes with a new Graphic Object rendered
+ // from them
+ Reference<XShape> xShape(renderDiagramToGraphic(rFilterBase));
+ Reference<XShapes> xShapes(mxShape, UNO_QUERY_THROW);
+ while (xShapes->hasElements())
+ xShapes->remove(Reference<XShape>(xShapes->getByIndex(0), UNO_QUERY_THROW));
+ xShapes->add(xShape);
+ }
+ catch (const Exception&)
+ {
+ TOOLS_WARN_EXCEPTION("oox.drawingml", "Shape::convertSmartArtToMetafile");
+ }
+}
+
+Reference < XShape > Shape::renderDiagramToGraphic( XmlFilterBase const & rFilterBase )
+{
+ Reference< XShape > xShape;
+
+ try
+ {
+ if( !maDiagramDoms.hasElements() )
+ return xShape;
+
+ // Stream in which to place the rendered shape
+ SvMemoryStream aTempStream;
+ Reference < io::XStream > xStream( new utl::OStreamWrapper( aTempStream ) );
+ Reference < io::XOutputStream > xOutputStream( xStream->getOutputStream() );
+
+ // Size of the rendering
+ awt::Size aActualSize = mxShape->getSize();
+ Size aResolution(Application::GetDefaultDevice()->LogicToPixel(Size(100, 100), MapMode(MapUnit::MapCM)));
+ double fPixelsPer100thmm = static_cast < double > ( aResolution.Width() ) / 100000.0;
+ awt::Size aSize( static_cast < sal_Int32 > ( ( fPixelsPer100thmm * aActualSize.Width ) + 0.5 ),
+ static_cast < sal_Int32 > ( ( fPixelsPer100thmm * aActualSize.Height ) + 0.5 ) );
+
+ Sequence< PropertyValue > aFilterData{
+ comphelper::makePropertyValue("PixelWidth", aSize.Width),
+ comphelper::makePropertyValue("PixelHeight", aSize.Height),
+ comphelper::makePropertyValue("LogicalWidth", aActualSize.Width),
+ comphelper::makePropertyValue("LogicalHeight", aActualSize.Height)
+ };
+
+ Sequence < PropertyValue > aDescriptor{
+ comphelper::makePropertyValue("OutputStream", xOutputStream),
+ comphelper::makePropertyValue("FilterName", OUString("SVM")), // Rendering format
+ comphelper::makePropertyValue("FilterData", aFilterData)
+ };
+
+ Reference < lang::XComponent > xSourceDoc( mxShape, UNO_QUERY_THROW );
+ Reference < XGraphicExportFilter > xGraphicExporter = GraphicExportFilter::create( rFilterBase.getComponentContext() );
+ xGraphicExporter->setSourceDocument( xSourceDoc );
+ xGraphicExporter->filter( aDescriptor );
+
+ aTempStream.Seek( STREAM_SEEK_TO_BEGIN );
+
+ Graphic aGraphic;
+ GraphicFilter aFilter( false );
+ if ( aFilter.ImportGraphic( aGraphic, u"", aTempStream, GRFILTER_FORMAT_NOTFOUND, nullptr, GraphicFilterImportFlags::NONE ) != ERRCODE_NONE )
+ {
+ SAL_WARN( "oox.drawingml", "Shape::renderDiagramToGraphic: Unable to import rendered stream into graphic object" );
+ return xShape;
+ }
+
+ Reference < graphic::XGraphic > xGraphic( aGraphic.GetXGraphic() );
+ Reference < lang::XMultiServiceFactory > xServiceFact( rFilterBase.getModel(), UNO_QUERY_THROW );
+ xShape.set( xServiceFact->createInstance( "com.sun.star.drawing.GraphicObjectShape" ), UNO_QUERY_THROW );
+ Reference < XPropertySet > xPropSet( xShape, UNO_QUERY_THROW );
+ xPropSet->setPropertyValue( "Graphic", Any( xGraphic ) );
+ xPropSet->setPropertyValue( "MoveProtect", Any( true ) );
+ xPropSet->setPropertyValue( "SizeProtect", Any( true ) );
+ xPropSet->setPropertyValue( "Name", Any( OUString( "RenderedShapes" ) ) );
+ }
+ catch( const Exception& )
+ {
+ TOOLS_WARN_EXCEPTION( "oox.drawingml", "Shape::renderDiagramToGraphic" );
+ }
+
+ return xShape;
+}
+
+void Shape::setTextBody(const TextBodyPtr & pTextBody)
+{
+ mpTextBody = pTextBody;
+}
+
+void Shape::setMasterTextListStyle( const TextListStylePtr& pMasterTextListStyle )
+{
+ SAL_INFO("oox.drawingml", "Shape::setMasterTextListStyle: Set master text list style to shape id='" << msId << "'");
+
+ mpMasterTextListStyle = pMasterTextListStyle;
+}
+
+OUString Shape::finalizeServiceName( XmlFilterBase& rFilter, const OUString& rServiceName, const awt::Rectangle& rShapeRect )
+{
+ OUString aServiceName = rServiceName;
+ switch( meFrameType )
+ {
+ case FRAMETYPE_OLEOBJECT:
+ {
+ awt::Size aOleSize( rShapeRect.Width, rShapeRect.Height );
+ if( rFilter.getOleObjectHelper().importOleObject( maShapeProperties, *mxOleObjectInfo, aOleSize ) )
+ aServiceName = "com.sun.star.drawing.OLE2Shape";
+
+ // get the path to the representation graphic
+ OUString aGraphicPath;
+ if( !mxOleObjectInfo->maShapeId.isEmpty() )
+ if( ::oox::vml::Drawing* pVmlDrawing = rFilter.getVmlDrawing() )
+ if( const ::oox::vml::ShapeBase* pVmlShape = pVmlDrawing->getShapes().getShapeById( mxOleObjectInfo->maShapeId ) )
+ aGraphicPath = pVmlShape->getGraphicPath();
+
+ // import and store the graphic
+ if( !aGraphicPath.isEmpty() )
+ {
+ // Transfer shape's width and height to graphicsfilter (can be used by WMF/EMF)
+ WmfExternal aExtHeader;
+ aExtHeader.mapMode = 8; // MM_ANISOTROPIC
+ aExtHeader.xExt = rShapeRect.Width;
+ aExtHeader.yExt = rShapeRect.Height;
+
+ Reference< graphic::XGraphic > xGraphic = rFilter.getGraphicHelper().importEmbeddedGraphic( aGraphicPath, &aExtHeader );
+ if( xGraphic.is() )
+ maShapeProperties.setProperty(PROP_Graphic, xGraphic);
+ }
+ }
+ break;
+
+ default:;
+ }
+ return aServiceName;
+}
+
+void Shape::finalizeXShape( XmlFilterBase& rFilter, const Reference< XShapes >& rxShapes )
+{
+ switch( meFrameType )
+ {
+ case FRAMETYPE_CHART:
+ {
+ OSL_ENSURE( !mxChartShapeInfo->maFragmentPath.isEmpty(), "Shape::finalizeXShape - missing chart fragment" );
+ if( mxShape.is() && !mxChartShapeInfo->maFragmentPath.isEmpty() ) try
+ {
+ // set the chart2 OLE class ID at the OLE shape
+ PropertySet aShapeProp( mxShape );
+ aShapeProp.setProperty( PROP_CLSID, OUString( "12dcae26-281f-416f-a234-c3086127382e" ) );
+
+ // get the XModel interface of the embedded object from the OLE shape
+ Reference< frame::XModel > xDocModel;
+ aShapeProp.getProperty( xDocModel, PROP_Model );
+ Reference< chart2::XChartDocument > xChartDoc( xDocModel, UNO_QUERY_THROW );
+
+ // load the chart data from the XML fragment
+#if ENABLE_WASM_STRIP_CHART
+ (void) rFilter;
+ (void) rxShapes;
+#else
+ // WASM_CHART change
+ // TODO: Instead of using convertFromModel an alternative may be
+ // added to convert not to Chart/OLE SdrObejct, but to GraphicObject
+ // with the Chart visualization. There should be a preview available
+ // in the imported chart data
+ bool bMSO2007Doc = rFilter.isMSO2007Document();
+ chart::ChartSpaceModel aModel(bMSO2007Doc);
+ rtl::Reference<chart::ChartSpaceFragment> pChartSpaceFragment = new chart::ChartSpaceFragment(
+ rFilter, mxChartShapeInfo->maFragmentPath, aModel );
+ const OUString aThemeOverrideFragmentPath( pChartSpaceFragment->
+ getFragmentPathFromFirstTypeFromOfficeDoc(u"themeOverride") );
+ rFilter.importFragment( pChartSpaceFragment );
+ ::oox::ppt::PowerPointImport *pPowerPointImport =
+ dynamic_cast< ::oox::ppt::PowerPointImport* >(&rFilter);
+
+ // The original theme.
+ ThemePtr pTheme;
+
+ if (!aThemeOverrideFragmentPath.isEmpty() && pPowerPointImport)
+ {
+ // Handle theme override.
+ uno::Reference< xml::sax::XFastSAXSerializable > xDoc(
+ rFilter.importFragment(aThemeOverrideFragmentPath), uno::UNO_QUERY_THROW);
+ pTheme = pPowerPointImport->getActualSlidePersist()->getTheme();
+ auto pThemeOverride = std::make_shared<Theme>(*pTheme);
+ rFilter.importFragment(
+ new ThemeOverrideFragmentHandler(rFilter, aThemeOverrideFragmentPath,
+ *pThemeOverride),
+ xDoc);
+ pPowerPointImport->getActualSlidePersist()->setTheme(pThemeOverride);
+ }
+
+ // convert imported chart model to chart document
+ Reference< drawing::XShapes > xExternalPage;
+ if( !mxChartShapeInfo->mbEmbedShapes )
+ xExternalPage = rxShapes;
+ if( rFilter.getChartConverter() )
+ {
+ rFilter.getChartConverter()->convertFromModel( rFilter, aModel, xChartDoc, xExternalPage, mxShape->getPosition(), mxShape->getSize() );
+ if( !xChartDoc->hasInternalDataProvider() )
+ {
+ Reference< chart2::data::XDataReceiver > xDataRec( xChartDoc, UNO_QUERY );
+ Reference< chart2::data::XDataSource > xData = xDataRec->getUsedData();
+ if( !xData->getDataSequences().hasElements() || !xData->getDataSequences()[0]->getValues().is() ||
+ !xData->getDataSequences()[0]->getValues()->getData().hasElements() )
+ {
+ rFilter.useInternalChartDataTable( true );
+ rFilter.getChartConverter()->convertFromModel( rFilter, aModel, xChartDoc, xExternalPage, mxShape->getPosition(), mxShape->getSize() );
+ rFilter.useInternalChartDataTable( false );
+ }
+ }
+
+ }
+
+ if (!aThemeOverrideFragmentPath.isEmpty() && pPowerPointImport)
+ {
+ // Restore the original theme.
+ pPowerPointImport->getActualSlidePersist()->setTheme(pTheme);
+ }
+#endif
+ }
+ catch( Exception& )
+ {
+ }
+ }
+ break;
+
+ default:;
+ }
+}
+
+void Shape::putPropertyToGrabBag( const OUString& sPropertyName, const Any& aPropertyValue )
+{
+ PropertyValue aNewProperty;
+ aNewProperty.Name = sPropertyName;
+ aNewProperty.Value = aPropertyValue;
+ putPropertyToGrabBag( aNewProperty );
+}
+
+void Shape::putPropertyToGrabBag( const PropertyValue& pProperty )
+{
+ Reference< XPropertySet > xSet( mxShape, UNO_QUERY );
+ Reference< XPropertySetInfo > xSetInfo( xSet->getPropertySetInfo() );
+ const OUString aGrabBagPropName = UNO_NAME_MISC_OBJ_INTEROPGRABBAG;
+ if( mxShape.is() && xSet.is() && xSetInfo.is() && xSetInfo->hasPropertyByName( aGrabBagPropName ) )
+ {
+ Sequence< PropertyValue > aGrabBag;
+ xSet->getPropertyValue( aGrabBagPropName ) >>= aGrabBag;
+
+ sal_Int32 length = aGrabBag.getLength();
+ aGrabBag.realloc( length + 1 );
+ aGrabBag.getArray()[length] = pProperty;
+
+ xSet->setPropertyValue( aGrabBagPropName, Any( aGrabBag ) );
+ }
+}
+
+void Shape::putPropertiesToGrabBag( const Sequence< PropertyValue >& aProperties )
+{
+ Reference< XPropertySet > xSet( mxShape, UNO_QUERY );
+ Reference< XPropertySetInfo > xSetInfo( xSet->getPropertySetInfo() );
+ const OUString aGrabBagPropName = UNO_NAME_MISC_OBJ_INTEROPGRABBAG;
+ if( !(mxShape.is() && xSet.is() && xSetInfo.is() && xSetInfo->hasPropertyByName( aGrabBagPropName )) )
+ return;
+
+ // get existing grab bag
+ Sequence< PropertyValue > aGrabBag;
+ xSet->getPropertyValue( aGrabBagPropName ) >>= aGrabBag;
+
+ std::vector<PropertyValue> aVec;
+ aVec.reserve(aProperties.getLength());
+
+ // put the new items
+ std::transform(aProperties.begin(), aProperties.end(), std::back_inserter(aVec),
+ [](const PropertyValue& rProp) {
+ PropertyValue aProp;
+ aProp.Name = rProp.Name;
+ aProp.Value = rProp.Value;
+ return aProp;
+ });
+
+ // put it back to the shape
+ xSet->setPropertyValue( aGrabBagPropName, Any( comphelper::concatSequences(aGrabBag, aVec) ) );
+}
+
+FillProperties Shape::getActualFillProperties(const Theme* pTheme, const FillProperties* pParentShapeFillProps) const
+{
+ FillProperties aFillProperties;
+ aFillProperties.moFillType = XML_noFill;
+
+ // Reference shape properties
+ aFillProperties.assignUsed( *mpShapeRefFillPropPtr );
+
+ // Theme
+ if( pTheme != nullptr )
+ {
+ if( const ShapeStyleRef* pFillRef = getShapeStyleRef( XML_fillRef ) )
+ {
+ if( const FillProperties* pFillProps = pTheme->getFillStyle( pFillRef->mnThemedIdx ) )
+ aFillProperties.assignUsed( *pFillProps );
+ }
+ }
+
+ // Properties specified directly for this shape
+ aFillProperties.assignUsed(getFillProperties());
+
+ // Parent shape's properties
+ if ( pParentShapeFillProps != nullptr)
+ if( getFillProperties().moFillType.has() && getFillProperties().moFillType.get() == XML_grpFill )
+ aFillProperties.assignUsed( *pParentShapeFillProps );
+
+ return aFillProperties;
+}
+
+LineProperties Shape::getActualLineProperties(const Theme* pTheme) const
+{
+ LineProperties aLineProperties;
+ aLineProperties.maLineFill.moFillType = XML_noFill;
+
+ // Reference shape properties
+ aLineProperties.assignUsed( *mpShapeRefLinePropPtr );
+
+ // Theme
+ if( pTheme != nullptr )
+ {
+ if( const ShapeStyleRef* pLineRef = getShapeStyleRef( XML_lnRef ) )
+ {
+ if( const LineProperties* pLineProps = pTheme->getLineStyle( pLineRef->mnThemedIdx ) )
+ aLineProperties.assignUsed( *pLineProps );
+ }
+ }
+
+ // Properties specified directly for this shape
+ aLineProperties.assignUsed( getLineProperties() );
+
+ return aLineProperties;
+}
+
+EffectProperties Shape::getActualEffectProperties(const Theme* pTheme) const
+{
+ EffectProperties aEffectProperties;
+
+ // Reference shape properties
+ aEffectProperties.assignUsed( *mpShapeRefEffectPropPtr );
+
+ // Theme
+ if( pTheme != nullptr )
+ {
+ if( const ShapeStyleRef* pEffectRef = getShapeStyleRef( XML_effectRef ) )
+ {
+ if( const EffectProperties* pEffectProps = pTheme->getEffectStyle( pEffectRef->mnThemedIdx ) )
+ aEffectProperties.assignUsed( *pEffectProps );
+ }
+ }
+
+ // Properties specified directly for this shape
+ aEffectProperties.assignUsed ( getEffectProperties() );
+
+ return aEffectProperties;
+}
+
+uno::Sequence< uno::Sequence< uno::Any > > Shape::resolveRelationshipsOfTypeFromOfficeDoc(core::XmlFilterBase& rFilter, const OUString& sFragment, std::u16string_view sType )
+{
+ uno::Sequence< uno::Sequence< uno::Any > > xRelListTemp;
+ sal_Int32 counter = 0;
+
+ core::RelationsRef xRels = rFilter.importRelations( sFragment );
+ if ( xRels )
+ {
+ core::RelationsRef xImageRels = xRels->getRelationsFromTypeFromOfficeDoc( sType );
+ if ( xImageRels )
+ {
+ xRelListTemp.realloc( xImageRels->size() );
+ auto pxRelListTemp = xRelListTemp.getArray();
+ for (auto const& imageRel : *xImageRels)
+ {
+ uno::Sequence< uno::Any > diagramRelTuple (3);
+ auto pdiagramRelTuple = diagramRelTuple.getArray();
+ // [0] => RID, [1] => InputStream [2] => extension
+ OUString sRelId = imageRel.second.maId;
+
+ pdiagramRelTuple[0] <<= sRelId;
+ OUString sTarget = xImageRels->getFragmentPathFromRelId( sRelId );
+
+ uno::Reference< io::XInputStream > xImageInputStrm( rFilter.openInputStream( sTarget ), uno::UNO_SET_THROW );
+ StreamDataSequence dataSeq;
+ if ( rFilter.importBinaryData( dataSeq, sTarget ) )
+ {
+ pdiagramRelTuple[1] <<= dataSeq;
+ }
+
+ pdiagramRelTuple[2] <<= sTarget.copy( sTarget.lastIndexOf(".") );
+
+ pxRelListTemp[counter] = diagramRelTuple;
+ ++counter;
+ }
+ xRelListTemp.realloc(counter);
+
+ }
+ }
+ return xRelListTemp;
+}
+
+void Shape::cloneFillProperties()
+{
+ auto pFillProperties = std::make_shared<FillProperties>();
+ pFillProperties->assignUsed(*mpFillPropertiesPtr);
+ mpFillPropertiesPtr = pFillProperties;
+}
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/oox/source/drawingml/shape3dproperties.cxx b/oox/source/drawingml/shape3dproperties.cxx
new file mode 100644
index 000000000..07ba56579
--- /dev/null
+++ b/oox/source/drawingml/shape3dproperties.cxx
@@ -0,0 +1,392 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ *
+ * This file incorporates work covered by the following license notice:
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed
+ * with this work for additional information regarding copyright
+ * ownership. The ASF licenses this file to you under the Apache
+ * License, Version 2.0 (the "License"); you may not use this file
+ * except in compliance with the License. You may obtain a copy of
+ * the License at http://www.apache.org/licenses/LICENSE-2.0 .
+ */
+
+#include <drawingml/shape3dproperties.hxx>
+#include <com/sun/star/drawing/BitmapMode.hpp>
+#include <com/sun/star/graphic/XGraphicTransformer.hpp>
+
+#include <comphelper/propertyvalue.hxx>
+#include <oox/token/tokens.hxx>
+#include <sal/log.hxx>
+
+using namespace ::com::sun::star;
+using namespace ::com::sun::star::drawing;
+using namespace ::com::sun::star::graphic;
+
+
+namespace oox::drawingml {
+
+OUString Generic3DProperties::getCameraPrstName( sal_Int32 nElement )
+{
+ switch( nElement )
+ {
+ case XML_legacyObliqueTopLeft: return "legacyObliqueTopLeft";
+ case XML_legacyObliqueTop: return "legacyObliqueTop";
+ case XML_legacyObliqueTopRight: return "legacyObliqueTopRight";
+ case XML_legacyObliqueLeft: return "legacyObliqueLeft";
+ case XML_legacyObliqueFront: return "legacyObliqueFront";
+ case XML_legacyObliqueRight: return "legacyObliqueRight";
+ case XML_legacyObliqueBottomLeft: return "legacyObliqueBottomLeft";
+ case XML_legacyObliqueBottom: return "legacyObliqueBottom";
+ case XML_legacyObliqueBottomRight: return "legacyObliqueBottomRight";
+ case XML_legacyPerspectiveTopLeft: return "legacyPerspectiveTopLeft";
+ case XML_legacyPerspectiveTop: return "legacyPerspectiveTop";
+ case XML_legacyPerspectiveTopRight: return "legacyPerspectiveTopRight";
+ case XML_legacyPerspectiveLeft: return "legacyPerspectiveLeft";
+ case XML_legacyPerspectiveFront: return "legacyPerspectiveFront";
+ case XML_legacyPerspectiveRight: return "legacyPerspectiveRight";
+ case XML_legacyPerspectiveBottomLeft: return "legacyPerspectiveBottomLeft";
+ case XML_legacyPerspectiveBottom: return "legacyPerspectiveBottom";
+ case XML_legacyPerspectiveBottomRight: return "legacyPerspectiveBottomRight";
+ case XML_orthographicFront: return "orthographicFront";
+ case XML_isometricTopUp: return "isometricTopUp";
+ case XML_isometricTopDown: return "isometricTopDown";
+ case XML_isometricBottomUp: return "isometricBottomUp";
+ case XML_isometricBottomDown: return "isometricBottomDown";
+ case XML_isometricLeftUp: return "isometricLeftUp";
+ case XML_isometricLeftDown: return "isometricLeftDown";
+ case XML_isometricRightUp: return "isometricRightUp";
+ case XML_isometricRightDown: return "isometricRightDown";
+ case XML_isometricOffAxis1Left: return "isometricOffAxis1Left";
+ case XML_isometricOffAxis1Right: return "isometricOffAxis1Right";
+ case XML_isometricOffAxis1Top: return "isometricOffAxis1Top";
+ case XML_isometricOffAxis2Left: return "isometricOffAxis2Left";
+ case XML_isometricOffAxis2Right: return "isometricOffAxis2Right";
+ case XML_isometricOffAxis2Top: return "isometricOffAxis2Top";
+ case XML_isometricOffAxis3Left: return "isometricOffAxis3Left";
+ case XML_isometricOffAxis3Right: return "isometricOffAxis3Right";
+ case XML_isometricOffAxis3Bottom: return "isometricOffAxis3Bottom";
+ case XML_isometricOffAxis4Left: return "isometricOffAxis4Left";
+ case XML_isometricOffAxis4Right: return "isometricOffAxis4Right";
+ case XML_isometricOffAxis4Bottom: return "isometricOffAxis4Bottom";
+ case XML_obliqueTopLeft: return "obliqueTopLeft";
+ case XML_obliqueTop: return "obliqueTop";
+ case XML_obliqueTopRight: return "obliqueTopRight";
+ case XML_obliqueLeft: return "obliqueLeft";
+ case XML_obliqueRight: return "obliqueRight";
+ case XML_obliqueBottomLeft: return "obliqueBottomLeft";
+ case XML_obliqueBottom: return "obliqueBottom";
+ case XML_obliqueBottomRight: return "obliqueBottomRight";
+ case XML_perspectiveFront: return "perspectiveFront";
+ case XML_perspectiveLeft: return "perspectiveLeft";
+ case XML_perspectiveRight: return "perspectiveRight";
+ case XML_perspectiveAbove: return "perspectiveAbove";
+ case XML_perspectiveBelow: return "perspectiveBelow";
+ case XML_perspectiveAboveLeftFacing: return "perspectiveAboveLeftFacing";
+ case XML_perspectiveAboveRightFacing: return "perspectiveAboveRightFacing";
+ case XML_perspectiveContrastingLeftFacing: return "perspectiveContrastingLeftFacing";
+ case XML_perspectiveContrastingRightFacing: return "perspectiveContrastingRightFacing";
+ case XML_perspectiveHeroicLeftFacing: return "perspectiveHeroicLeftFacing";
+ case XML_perspectiveHeroicRightFacing: return "perspectiveHeroicRightFacing";
+ case XML_perspectiveHeroicExtremeLeftFacing: return "perspectiveHeroicExtremeLeftFacing";
+ case XML_perspectiveHeroicExtremeRightFacing: return "perspectiveHeroicExtremeRightFacing";
+ case XML_perspectiveRelaxed: return "perspectiveRelaxed";
+ case XML_perspectiveRelaxedModerately: return "perspectiveRelaxedModerately";
+ }
+ SAL_WARN( "oox.drawingml", "Generic3DProperties::getCameraPrstName - unexpected prst type" );
+ return OUString();
+}
+
+OUString Generic3DProperties::getLightRigName( sal_Int32 nElement )
+{
+ switch( nElement )
+ {
+ case XML_legacyFlat1: return "legacyFlat1";
+ case XML_legacyFlat2: return "legacyFlat2";
+ case XML_legacyFlat3: return "legacyFlat3";
+ case XML_legacyFlat4: return "legacyFlat4";
+ case XML_legacyNormal1: return "legacyNormal1";
+ case XML_legacyNormal2: return "legacyNormal2";
+ case XML_legacyNormal3: return "legacyNormal3";
+ case XML_legacyNormal4: return "legacyNormal4";
+ case XML_legacyHarsh1: return "legacyHarsh1";
+ case XML_legacyHarsh2: return "legacyHarsh2";
+ case XML_legacyHarsh3: return "legacyHarsh3";
+ case XML_legacyHarsh4: return "legacyHarsh4";
+ case XML_threePt: return "threePt";
+ case XML_balanced: return "balanced";
+ case XML_soft: return "soft";
+ case XML_harsh: return "harsh";
+ case XML_flood: return "flood";
+ case XML_contrasting: return "contrasting";
+ case XML_morning: return "morning";
+ case XML_sunrise: return "sunrise";
+ case XML_sunset: return "sunset";
+ case XML_chilly: return "chilly";
+ case XML_freezing: return "freezing";
+ case XML_flat: return "flat";
+ case XML_twoPt: return "twoPt";
+ case XML_glow: return "glow";
+ case XML_brightRoom: return "brightRoom";
+ }
+ SAL_WARN( "oox.drawingml", "Generic3DProperties::getLightRigName - unexpected token" );
+ return OUString();
+}
+
+OUString Generic3DProperties::getLightRigDirName( sal_Int32 nElement )
+{
+ switch( nElement )
+ {
+ case XML_tl: return "tl";
+ case XML_t: return "t";
+ case XML_tr: return "tr";
+ case XML_l: return "l";
+ case XML_r: return "r";
+ case XML_bl: return "bl";
+ case XML_b: return "b";
+ case XML_br: return "br";
+ }
+ SAL_WARN( "oox.drawingml", "Generic3DProperties::getLightRigDirName - unexpected token" );
+ return OUString();
+}
+
+OUString Generic3DProperties::getBevelPresetTypeString( sal_Int32 nType )
+{
+ switch (nType)
+ {
+ case XML_relaxedInset: return "relaxedInset";
+ case XML_circle: return "circle";
+ case XML_slope: return "slope";
+ case XML_cross: return "cross";
+ case XML_angle: return "angle";
+ case XML_softRound: return "softRound";
+ case XML_convex: return "convex";
+ case XML_coolSlant: return "coolSlant";
+ case XML_divot: return "divot";
+ case XML_riblet: return "riblet";
+ case XML_hardEdge: return "hardEdge";
+ case XML_artDeco: return "artDeco";
+ }
+ SAL_WARN( "oox.drawingml", "Generic3DProperties::getBevelPresetTypeString - unexpected token" );
+ return OUString();
+}
+
+OUString Generic3DProperties::getPresetMaterialTypeString( sal_Int32 nType )
+{
+ switch (nType)
+ {
+ case XML_legacyMatte: return "legacyMatte";
+ case XML_legacyPlastic: return "legacyPlastic";
+ case XML_legacyMetal: return "legacyMetal";
+ case XML_legacyWireframe: return "legacyWireframe";
+ case XML_matte: return "matte";
+ case XML_plastic: return "plastic";
+ case XML_metal: return "metal";
+ case XML_warmMatte: return "warmMatte";
+ case XML_translucentPowder: return "translucentPowder";
+ case XML_powder: return "powder";
+ case XML_dkEdge: return "dkEdge";
+ case XML_softEdge: return "softEdge";
+ case XML_clear: return "clear";
+ case XML_flat: return "flat";
+ case XML_softmetal: return "softmetal";
+ case XML_none: return "none";
+ }
+ SAL_WARN( "oox.drawingml", "Generic3DProperties::getPresetMaterialTypeString - unexpected token" );
+ return OUString();
+}
+
+css::uno::Sequence< css::beans::PropertyValue > Generic3DProperties::getCameraAttributes()
+{
+ css::uno::Sequence<css::beans::PropertyValue> aSeq(6);
+ auto pSeq = aSeq.getArray();
+ sal_Int32 nSize = 0;
+ if( mfFieldOfVision.has() )
+ {
+ pSeq[nSize].Name = "fov";
+ pSeq[nSize].Value <<= mfFieldOfVision.use();
+ nSize++;
+ }
+ if( mfZoom.has() )
+ {
+ pSeq[nSize].Name = "zoom";
+ pSeq[nSize].Value <<= mfZoom.use();
+ nSize++;
+ }
+ if( mnPreset.has() )
+ {
+ pSeq[nSize].Name = "prst";
+ pSeq[nSize].Value <<= getCameraPrstName( mnPreset.use() );
+ nSize++;
+ }
+ if( maCameraRotation.mnLatitude.has() )
+ {
+ pSeq[nSize].Name = "rotLat";
+ pSeq[nSize].Value <<= maCameraRotation.mnLatitude.use();
+ nSize++;
+ }
+ if( maCameraRotation.mnLongitude.has() )
+ {
+ pSeq[nSize].Name = "rotLon";
+ pSeq[nSize].Value <<= maCameraRotation.mnLongitude.use();
+ nSize++;
+ }
+ if( maCameraRotation.mnRevolution.has() )
+ {
+ pSeq[nSize].Name = "rotRev";
+ pSeq[nSize].Value <<= maCameraRotation.mnRevolution.use();
+ nSize++;
+ }
+ aSeq.realloc( nSize );
+ return aSeq;
+}
+
+css::uno::Sequence< css::beans::PropertyValue > Generic3DProperties::getLightRigAttributes()
+{
+ css::uno::Sequence<css::beans::PropertyValue> aSeq(5);
+ auto pSeq = aSeq.getArray();
+ sal_Int32 nSize = 0;
+ if( mnLightRigDirection.has() )
+ {
+ pSeq[nSize].Name = "dir";
+ pSeq[nSize].Value <<= getLightRigDirName( mnLightRigDirection.use() );
+ nSize++;
+ }
+ if( mnLightRigType.has() )
+ {
+ pSeq[nSize].Name = "rig";
+ pSeq[nSize].Value <<= getLightRigName( mnLightRigType.use() );
+ nSize++;
+ }
+ if( maLightRigRotation.mnLatitude.has() )
+ {
+ pSeq[nSize].Name = "rotLat";
+ pSeq[nSize].Value <<= maLightRigRotation.mnLatitude.use();
+ nSize++;
+ }
+ if( maLightRigRotation.mnLongitude.has() )
+ {
+ pSeq[nSize].Name = "rotLon";
+ pSeq[nSize].Value <<= maLightRigRotation.mnLongitude.use();
+ nSize++;
+ }
+ if( maLightRigRotation.mnRevolution.has() )
+ {
+ pSeq[nSize].Name = "rotRev";
+ pSeq[nSize].Value <<= maLightRigRotation.mnRevolution.use();
+ nSize++;
+ }
+ aSeq.realloc( nSize );
+ return aSeq;
+}
+
+css::uno::Sequence< css::beans::PropertyValue > Generic3DProperties::getBevelAttributes( BevelProperties rProps )
+{
+ css::uno::Sequence<css::beans::PropertyValue> aSeq(3);
+ auto pSeq = aSeq.getArray();
+ sal_Int32 nSize = 0;
+ if( rProps.mnPreset.has() )
+ {
+ pSeq[nSize].Name = "prst";
+ pSeq[nSize].Value <<= getBevelPresetTypeString( rProps.mnPreset.use() );
+ nSize++;
+ }
+ if( rProps.mnWidth.has() )
+ {
+ pSeq[nSize].Name = "w";
+ pSeq[nSize].Value <<= rProps.mnWidth.use();
+ nSize++;
+ }
+ if( rProps.mnHeight.has() )
+ {
+ pSeq[nSize].Name = "h";
+ pSeq[nSize].Value <<= rProps.mnHeight.use();
+ nSize++;
+ }
+ aSeq.realloc( nSize );
+ return aSeq;
+}
+
+css::uno::Sequence< css::beans::PropertyValue > Generic3DProperties::getColorAttributes(
+ const Color& rColor, const GraphicHelper& rGraphicHelper, ::Color rPhClr )
+{
+ const OUString& sColorScheme = rColor.getSchemeColorName();
+ if( sColorScheme.isEmpty() )
+ {
+ // RGB color and transparency value
+ return { comphelper::makePropertyValue("rgbClr", rColor.getColor( rGraphicHelper, rPhClr )),
+ comphelper::makePropertyValue("rgbClrTransparency", rColor.getTransparency()) };
+ }
+ // scheme color with name and transformations
+ return { comphelper::makePropertyValue("schemeClr", sColorScheme),
+ comphelper::makePropertyValue("schemeClrTransformations",
+ rColor.getTransformations()) };
+}
+
+css::uno::Sequence< css::beans::PropertyValue > Generic3DProperties::getShape3DAttributes(
+ const GraphicHelper& rGraphicHelper, ::Color rPhClr )
+{
+ css::uno::Sequence<css::beans::PropertyValue> aSeq(8);
+ auto pSeq = aSeq.getArray();
+ sal_Int32 nSize = 0;
+ if( mnExtrusionH.has() )
+ {
+ pSeq[nSize].Name = "extrusionH";
+ pSeq[nSize].Value <<= mnExtrusionH.use();
+ nSize++;
+ }
+ if( mnContourW.has() )
+ {
+ pSeq[nSize].Name = "contourW";
+ pSeq[nSize].Value <<= mnContourW.use();
+ nSize++;
+ }
+ if( mnShapeZ.has() )
+ {
+ pSeq[nSize].Name = "z";
+ pSeq[nSize].Value <<= mnShapeZ.use();
+ nSize++;
+ }
+ if( mnMaterial.has() )
+ {
+ pSeq[nSize].Name = "prstMaterial";
+ pSeq[nSize].Value <<= getPresetMaterialTypeString( mnMaterial.use() );
+ nSize++;
+ }
+ if( maTopBevelProperties.has() )
+ {
+ pSeq[nSize].Name = "bevelT";
+ pSeq[nSize].Value <<= getBevelAttributes( maTopBevelProperties.use() );
+ nSize++;
+ }
+ if( maBottomBevelProperties.has() )
+ {
+ pSeq[nSize].Name = "bevelB";
+ pSeq[nSize].Value <<= getBevelAttributes( maBottomBevelProperties.use() );
+ nSize++;
+ }
+ if( maExtrusionColor.isUsed() )
+ {
+ pSeq[nSize].Name = "extrusionClr";
+ pSeq[nSize].Value <<= getColorAttributes( maExtrusionColor, rGraphicHelper, rPhClr );
+ nSize++;
+ }
+ if( maContourColor.isUsed() )
+ {
+ pSeq[nSize].Name = "contourClr";
+ pSeq[nSize].Value <<= getColorAttributes( maContourColor, rGraphicHelper, rPhClr );
+ nSize++;
+ }
+ aSeq.realloc( nSize );
+ return aSeq;
+}
+
+} // namespace oox
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/oox/source/drawingml/shapecontext.cxx b/oox/source/drawingml/shapecontext.cxx
new file mode 100644
index 000000000..e0cbf9343
--- /dev/null
+++ b/oox/source/drawingml/shapecontext.cxx
@@ -0,0 +1,134 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ *
+ * This file incorporates work covered by the following license notice:
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed
+ * with this work for additional information regarding copyright
+ * ownership. The ASF licenses this file to you under the Apache
+ * License, Version 2.0 (the "License"); you may not use this file
+ * except in compliance with the License. You may obtain a copy of
+ * the License at http://www.apache.org/licenses/LICENSE-2.0 .
+ */
+
+#include <com/sun/star/xml/sax/FastToken.hpp>
+#include <com/sun/star/drawing/LineStyle.hpp>
+#include <com/sun/star/beans/XMultiPropertySet.hpp>
+
+#include <oox/helper/attributelist.hxx>
+#include <oox/drawingml/shapecontext.hxx>
+#include <drawingml/shapepropertiescontext.hxx>
+#include <drawingml/shapestylecontext.hxx>
+#include <oox/drawingml/drawingmltypes.hxx>
+#include <drawingml/textbodycontext.hxx>
+#include <drawingml/textbodypropertiescontext.hxx>
+#include "hyperlinkcontext.hxx"
+#include <oox/token/namespaces.hxx>
+#include <oox/token/tokens.hxx>
+#include <sal/log.hxx>
+
+using namespace oox::core;
+using namespace ::com::sun::star;
+using namespace ::com::sun::star::uno;
+using namespace ::com::sun::star::drawing;
+using namespace ::com::sun::star::beans;
+using namespace ::com::sun::star::text;
+using namespace ::com::sun::star::xml::sax;
+
+namespace oox::drawingml {
+
+// CT_Shape
+ShapeContext::ShapeContext( ContextHandler2Helper const & rParent, ShapePtr const & pMasterShapePtr, ShapePtr const & pShapePtr )
+: ContextHandler2( rParent )
+, mpMasterShapePtr( pMasterShapePtr )
+, mpShapePtr( pShapePtr )
+{
+ if( mpMasterShapePtr && mpShapePtr )
+ mpMasterShapePtr->addChild( mpShapePtr );
+}
+
+ShapeContext::~ShapeContext()
+{
+}
+
+ContextHandlerRef ShapeContext::onCreateContext( sal_Int32 aElementToken, const AttributeList& rAttribs )
+{
+ switch( getBaseToken( aElementToken ) )
+ {
+ // nvSpPr CT_ShapeNonVisual begin
+// case XML_drElemPr:
+// break;
+ case XML_cNvPr:
+ {
+ mpShapePtr->setHidden( rAttribs.getBool( XML_hidden, false ) );
+ mpShapePtr->setId( rAttribs.getString( XML_id ).get() );
+ mpShapePtr->setName( rAttribs.getString( XML_name ).get() );
+ mpShapePtr->setDescription( rAttribs.getString( XML_descr ).get() );
+ break;
+ }
+ case XML_hlinkMouseOver:
+ case XML_hlinkClick:
+ return new HyperLinkContext( *this, rAttribs, getShape()->getShapeProperties() );
+ case XML_ph:
+ mpShapePtr->setSubType( rAttribs.getToken( XML_type, XML_obj ) );
+ if( rAttribs.hasAttribute( XML_idx ) )
+ mpShapePtr->setSubTypeIndex( rAttribs.getString( XML_idx ).get().toInt32() );
+ break;
+ // nvSpPr CT_ShapeNonVisual end
+
+ case XML_spPr:
+ return new ShapePropertiesContext( *this, *mpShapePtr );
+
+ case XML_style:
+ return new ShapeStyleContext( *this, *mpShapePtr );
+
+ case XML_txBody:
+ case XML_txbxContent:
+ {
+ if (!mpShapePtr->getTextBody())
+ mpShapePtr->setTextBody( std::make_shared<TextBody>() );
+ return new TextBodyContext( *this, mpShapePtr );
+ }
+ case XML_txXfrm:
+ {
+ const TextBodyPtr& rShapePtr = mpShapePtr->getTextBody();
+ if (rShapePtr)
+ rShapePtr->getTextProperties().moRotation = rAttribs.getInteger( XML_rot );
+ return nullptr;
+ }
+ case XML_cNvSpPr:
+ break;
+ case XML_spLocks:
+ break;
+ case XML_bodyPr:
+ if (!mpShapePtr->getTextBody())
+ mpShapePtr->setTextBody( std::make_shared<TextBody>() );
+ return new TextBodyPropertiesContext( *this, rAttribs, mpShapePtr );
+ case XML_txbx:
+ break;
+ case XML_cNvPicPr:
+ break;
+ case XML_nvPicPr:
+ case XML_picLocks:
+ break;
+ case XML_relIds:
+ break;
+ case XML_nvSpPr:
+ break;
+ default:
+ SAL_WARN("oox", "ShapeContext::onCreateContext: unhandled element: " << getBaseToken(aElementToken));
+ break;
+ }
+
+ return this;
+}
+
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/oox/source/drawingml/shapegroupcontext.cxx b/oox/source/drawingml/shapegroupcontext.cxx
new file mode 100644
index 000000000..1a9cb4113
--- /dev/null
+++ b/oox/source/drawingml/shapegroupcontext.cxx
@@ -0,0 +1,117 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ *
+ * This file incorporates work covered by the following license notice:
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed
+ * with this work for additional information regarding copyright
+ * ownership. The ASF licenses this file to you under the Apache
+ * License, Version 2.0 (the "License"); you may not use this file
+ * except in compliance with the License. You may obtain a copy of
+ * the License at http://www.apache.org/licenses/LICENSE-2.0 .
+ */
+
+#include <com/sun/star/xml/sax/FastToken.hpp>
+#include <com/sun/star/beans/XMultiPropertySet.hpp>
+
+#include <oox/helper/attributelist.hxx>
+#include <oox/drawingml/shapegroupcontext.hxx>
+#include <oox/drawingml/connectorshapecontext.hxx>
+#include <oox/drawingml/graphicshapecontext.hxx>
+#include <oox/drawingml/drawingmltypes.hxx>
+#include <drawingml/shapepropertiescontext.hxx>
+#include <oox/token/namespaces.hxx>
+#include <oox/token/tokens.hxx>
+#include <sal/log.hxx>
+
+using namespace oox::core;
+using namespace ::com::sun::star;
+using namespace ::com::sun::star::uno;
+using namespace ::com::sun::star::drawing;
+using namespace ::com::sun::star::beans;
+using namespace ::com::sun::star::xml::sax;
+
+namespace oox::drawingml {
+
+ShapeGroupContext::ShapeGroupContext( FragmentHandler2 const & rParent, ShapePtr const & pMasterShapePtr, ShapePtr const & pGroupShapePtr )
+: FragmentHandler2( rParent )
+, mpGroupShapePtr( pGroupShapePtr )
+{
+ if( pMasterShapePtr )
+ mpGroupShapePtr->setWps(pMasterShapePtr->getWps());
+ if( pMasterShapePtr && mpGroupShapePtr )
+ pMasterShapePtr->addChild( mpGroupShapePtr );
+}
+
+ShapeGroupContext::~ShapeGroupContext()
+{
+}
+
+ContextHandlerRef ShapeGroupContext::onCreateContext( sal_Int32 aElementToken, const AttributeList& rAttribs )
+{
+ switch( getBaseToken( aElementToken ) )
+ {
+ case XML_cNvPr:
+ {
+ mpGroupShapePtr->setHidden( rAttribs.getBool( XML_hidden, false ) );
+ mpGroupShapePtr->setId( rAttribs.getString( XML_id ).get() );
+ mpGroupShapePtr->setName( rAttribs.getString( XML_name ).get() );
+ break;
+ }
+ case XML_ph:
+ mpGroupShapePtr->setSubType( rAttribs.getToken( XML_type, FastToken::DONTKNOW ) );
+ if( rAttribs.hasAttribute( XML_idx ) )
+ mpGroupShapePtr->setSubTypeIndex( rAttribs.getString( XML_idx ).get().toInt32() );
+ break;
+ // nvSpPr CT_ShapeNonVisual end
+
+ case XML_grpSpPr:
+ return new ShapePropertiesContext( *this, *mpGroupShapePtr );
+ case XML_nvGrpSpPr:
+ return this;
+ case XML_spPr:
+ return new ShapePropertiesContext( *this, *mpGroupShapePtr );
+/*
+ case XML_style:
+ return new ShapeStyleContext( getParser() );
+*/
+ case XML_cxnSp: // connector shape
+ {
+ ShapePtr pShape = std::make_shared<Shape>("com.sun.star.drawing.ConnectorShape");
+ pShape->setLockedCanvas(mpGroupShapePtr->getLockedCanvas());
+ return new ConnectorShapeContext(*this, mpGroupShapePtr, pShape,
+ pShape->getConnectorShapeProperties());
+ }
+ case XML_grpSp: // group shape
+ return new ShapeGroupContext( *this, mpGroupShapePtr, std::make_shared<Shape>( "com.sun.star.drawing.GroupShape" ) );
+ case XML_sp: // shape
+ case XML_wsp:
+ // Don't set default character height for WPS shapes, Writer has its
+ // own way to set the default, and if we don't set it here, editing
+ // properly inherits it.
+ return new ShapeContext( *this, mpGroupShapePtr, std::make_shared<Shape>( "com.sun.star.drawing.CustomShape", getBaseToken(aElementToken) == XML_sp ) );
+ case XML_pic: // CT_Picture
+ return new GraphicShapeContext( *this, mpGroupShapePtr, std::make_shared<Shape>( "com.sun.star.drawing.GraphicObjectShape" ) );
+ case XML_graphicFrame: // CT_GraphicalObjectFrame
+ return new GraphicalObjectFrameContext( *this, mpGroupShapePtr, std::make_shared<Shape>( "com.sun.star.drawing.GraphicObjectShape" ), true );
+ case XML_cNvGrpSpPr:
+ break;
+ case XML_grpSpLocks:
+ break;
+ default:
+ SAL_WARN("oox", "ShapeGroupContext::onCreateContext: unhandled element: " << getBaseToken(aElementToken));
+ break;
+ }
+
+ return this;
+}
+
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/oox/source/drawingml/shapepropertiescontext.cxx b/oox/source/drawingml/shapepropertiescontext.cxx
new file mode 100644
index 000000000..935cc4970
--- /dev/null
+++ b/oox/source/drawingml/shapepropertiescontext.cxx
@@ -0,0 +1,103 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ *
+ * This file incorporates work covered by the following license notice:
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed
+ * with this work for additional information regarding copyright
+ * ownership. The ASF licenses this file to you under the Apache
+ * License, Version 2.0 (the "License"); you may not use this file
+ * except in compliance with the License. You may obtain a copy of
+ * the License at http://www.apache.org/licenses/LICENSE-2.0 .
+ */
+
+#include <drawingml/shapepropertiescontext.hxx>
+
+#include <drawingml/scene3dcontext.hxx>
+#include <drawingml/linepropertiescontext.hxx>
+#include <drawingml/misccontexts.hxx>
+#include <drawingml/transform2dcontext.hxx>
+#include <drawingml/customshapegeometry.hxx>
+#include <drawingml/effectpropertiescontext.hxx>
+#include <oox/helper/attributelist.hxx>
+#include <oox/token/namespaces.hxx>
+#include <oox/token/tokens.hxx>
+#include <drawingml/customshapeproperties.hxx>
+
+using namespace oox::core;
+using namespace ::com::sun::star;
+using namespace ::com::sun::star::uno;
+using namespace ::com::sun::star::drawing;
+using namespace ::com::sun::star::beans;
+using namespace ::com::sun::star::xml::sax;
+
+namespace oox::drawingml {
+
+// CT_ShapeProperties
+ShapePropertiesContext::ShapePropertiesContext( ContextHandler2Helper const & rParent, Shape& rShape )
+: ContextHandler2( rParent )
+, mrShape( rShape )
+{
+}
+
+ContextHandlerRef ShapePropertiesContext::onCreateContext( sal_Int32 aElementToken, const AttributeList& rAttribs )
+{
+ switch( aElementToken )
+ {
+ // CT_Transform2D
+ case A_TOKEN( xfrm ):
+ return new Transform2DContext( *this, rAttribs, mrShape );
+
+ // GeometryGroup
+ case A_TOKEN( custGeom ): // custom geometry "CT_CustomGeometry2D"
+ return new CustomShapeGeometryContext( *this, *mrShape.getCustomShapeProperties() );
+
+ case A_TOKEN( prstGeom ): // preset geometry "CT_PresetGeometry2D"
+ {
+ sal_Int32 nToken = rAttribs.getToken( XML_prst, 0 );
+ // TODO: Move the following checks to a separate place or as a separate function
+ if (nToken == XML_line && !mrShape.isConnectorShape())
+ {
+ mrShape.getServiceName() = "com.sun.star.drawing.LineShape";
+ }
+
+ // We got a preset geometry, forget the geometry inherited from the placeholder shape.
+ mrShape.getCustomShapeProperties() = std::make_shared<CustomShapeProperties>();
+
+ return new PresetShapeGeometryContext( *this, rAttribs, *(mrShape.getCustomShapeProperties()) );
+ }
+
+ case A_TOKEN( prstTxWarp ):
+ return new PresetTextShapeContext( *this, rAttribs, *(mrShape.getCustomShapeProperties()) );
+
+ // CT_LineProperties
+ case A_TOKEN( ln ):
+ return new LinePropertiesContext( *this, rAttribs, mrShape.getLineProperties() );
+
+ // EffectPropertiesGroup
+ // todo not supported by core
+ case A_TOKEN( effectLst ): // CT_EffectList
+ case A_TOKEN( effectDag ): // CT_EffectContainer
+ return new EffectPropertiesContext( *this, mrShape.getEffectProperties() );
+
+ // todo not supported by core, only for preservation via grab bags
+ case A_TOKEN( scene3d ): // CT_Scene3D
+ return new Scene3DPropertiesContext( *this, mrShape.get3DProperties() );
+
+ // todo not supported by core, only for preservation via grab bags
+ case A_TOKEN( sp3d ): // CT_Shape3D
+ return new Shape3DPropertiesContext( *this, rAttribs, mrShape.get3DProperties() );
+ }
+
+ return FillPropertiesContext::createFillContext( *this, aElementToken, rAttribs, mrShape.getFillProperties() );
+}
+
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/oox/source/drawingml/shapepropertymap.cxx b/oox/source/drawingml/shapepropertymap.cxx
new file mode 100644
index 000000000..57014b478
--- /dev/null
+++ b/oox/source/drawingml/shapepropertymap.cxx
@@ -0,0 +1,238 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ *
+ * This file incorporates work covered by the following license notice:
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed
+ * with this work for additional information regarding copyright
+ * ownership. The ASF licenses this file to you under the Apache
+ * License, Version 2.0 (the "License"); you may not use this file
+ * except in compliance with the License. You may obtain a copy of
+ * the License at http://www.apache.org/licenses/LICENSE-2.0 .
+ */
+
+#include <oox/drawingml/shapepropertymap.hxx>
+
+#include <com/sun/star/awt/Gradient.hpp>
+#include <com/sun/star/beans/NamedValue.hpp>
+#include <com/sun/star/drawing/LineDash.hpp>
+#include <com/sun/star/drawing/Hatch.hpp>
+#include <com/sun/star/drawing/PolyPolygonBezierCoords.hpp>
+#include <com/sun/star/graphic/XGraphic.hpp>
+
+#include <oox/helper/modelobjecthelper.hxx>
+#include <oox/token/properties.hxx>
+
+namespace oox::drawingml {
+
+using namespace ::com::sun::star;
+using namespace ::com::sun::star::beans;
+using namespace ::com::sun::star::drawing;
+using namespace ::com::sun::star::uno;
+
+namespace {
+
+const ShapePropertyIds spnDefaultShapeIds =
+{
+ PROP_LineStyle, PROP_LineWidth, PROP_LineColor, PROP_LineTransparence, PROP_LineDash, PROP_LineCap, PROP_LineJoint,
+ PROP_LineStartName, PROP_LineStartWidth, PROP_LineStartCenter, PROP_LineEndName, PROP_LineEndWidth, PROP_LineEndCenter,
+ PROP_FillStyle, PROP_FillColor, PROP_FillTransparence, PROP_FillTransparenceGradientName, PROP_FillGradient,
+ PROP_FillBitmap, PROP_FillBitmapMode, PROP_FillBitmapSizeX, PROP_FillBitmapSizeY,
+ PROP_FillBitmapPositionOffsetX, PROP_FillBitmapPositionOffsetY, PROP_FillBitmapRectanglePoint,
+ PROP_FillHatch,
+ PROP_FillBackground,
+ PROP_FillUseSlideBackground,
+ PROP_FillBitmapName,
+ PROP_ShadowXDistance,
+ PROP_ShadowSizeX,
+ PROP_ShadowSizeY
+};
+
+} // namespace
+
+ShapePropertyInfo ShapePropertyInfo::DEFAULT( spnDefaultShapeIds, true, false, false, false, false );
+
+ShapePropertyInfo::ShapePropertyInfo( const ShapePropertyIds& rnPropertyIds,
+ bool bNamedLineMarker, bool bNamedLineDash, bool bNamedFillGradient, bool bNamedFillBitmap, bool bNamedFillHatch ) :
+ mrPropertyIds(rnPropertyIds),
+ mbNamedLineMarker( bNamedLineMarker ),
+ mbNamedLineDash( bNamedLineDash ),
+ mbNamedFillGradient( bNamedFillGradient ),
+ mbNamedFillBitmap( bNamedFillBitmap ),
+ mbNamedFillHatch( bNamedFillHatch )
+{
+}
+
+ShapePropertyMap::ShapePropertyMap( ModelObjectHelper& rModelObjHelper, const ShapePropertyInfo& rShapePropInfo ) :
+ mrModelObjHelper( rModelObjHelper ),
+ maShapePropInfo( rShapePropInfo )
+{
+}
+
+bool ShapePropertyMap::supportsProperty( ShapeProperty ePropId ) const
+{
+ return maShapePropInfo.has( ePropId );
+}
+
+bool ShapePropertyMap::hasNamedLineMarkerInTable( const OUString& rMarkerName ) const
+{
+ return maShapePropInfo.mbNamedLineMarker && mrModelObjHelper.hasLineMarker( rMarkerName );
+}
+
+bool ShapePropertyMap::setAnyProperty( ShapeProperty ePropId, const Any& rValue )
+{
+ // get current property identifier for the specified property
+ sal_Int32 nPropId = maShapePropInfo[ ePropId ];
+ if( nPropId < 0 ) return false;
+
+ // special handling for properties supporting named objects in tables
+ switch( ePropId )
+ {
+ case ShapeProperty::LineStart:
+ case ShapeProperty::LineEnd:
+ return setLineMarker( nPropId, rValue );
+
+ case ShapeProperty::LineDash:
+ return setLineDash( nPropId, rValue );
+
+ case ShapeProperty::FillGradient:
+ return setFillGradient( nPropId, rValue );
+
+ case ShapeProperty::GradientTransparency:
+ return setGradientTrans( nPropId, rValue );
+
+ case ShapeProperty::FillBitmap:
+ return setFillBitmap(nPropId, rValue);
+
+ case ShapeProperty::FillBitmapName:
+ return setFillBitmapName(rValue);
+
+ case ShapeProperty::FillHatch:
+ return setFillHatch( nPropId, rValue );
+
+ default:; // suppress compiler warnings
+ }
+
+ // set plain property value
+ setAnyProperty( nPropId, rValue );
+ return true;
+}
+
+// private --------------------------------------------------------------------
+
+bool ShapePropertyMap::setLineMarker( sal_Int32 nPropId, const Any& rValue )
+{
+ NamedValue aNamedMarker;
+ if( (rValue >>= aNamedMarker) && !aNamedMarker.Name.isEmpty() )
+ {
+ // push line marker explicitly
+ if( !maShapePropInfo.mbNamedLineMarker )
+ return setAnyProperty( nPropId, aNamedMarker.Value );
+
+ // create named line marker (if coordinates have been passed) and push its name
+ bool bInserted = !aNamedMarker.Value.has< PolyPolygonBezierCoords >() ||
+ mrModelObjHelper.insertLineMarker( aNamedMarker.Name, aNamedMarker.Value.get< PolyPolygonBezierCoords >() );
+ return bInserted && setProperty( nPropId, aNamedMarker.Name );
+ }
+ return false;
+}
+
+bool ShapePropertyMap::setLineDash( sal_Int32 nPropId, const Any& rValue )
+{
+ // push line dash explicitly
+ if( !maShapePropInfo.mbNamedLineDash )
+ return setAnyProperty( nPropId, rValue );
+
+ // create named line dash and push its name
+ if( rValue.has< LineDash >() )
+ {
+ OUString aDashName = mrModelObjHelper.insertLineDash( rValue.get< LineDash >() );
+ return !aDashName.isEmpty() && setProperty( nPropId, aDashName );
+ }
+
+ return false;
+}
+
+bool ShapePropertyMap::setFillGradient( sal_Int32 nPropId, const Any& rValue )
+{
+ // push gradient explicitly
+ if( !maShapePropInfo.mbNamedFillGradient )
+ return setAnyProperty( nPropId, rValue );
+
+ // create named gradient and push its name
+ if( rValue.has< awt::Gradient >() )
+ {
+ OUString aGradientName = mrModelObjHelper.insertFillGradient( rValue.get< awt::Gradient >() );
+ return !aGradientName.isEmpty() && setProperty( nPropId, aGradientName );
+ }
+
+ return false;
+}
+
+bool ShapePropertyMap::setFillHatch( sal_Int32 nPropId, const Any& rValue )
+{
+ // push hatch explicitly
+ if( !maShapePropInfo.mbNamedFillHatch )
+ return setAnyProperty( nPropId, rValue );
+
+ // create named hatch and push its name
+ if (rValue.has<drawing::Hatch>())
+ {
+ OUString aHatchName = mrModelObjHelper.insertFillHatch(rValue.get<drawing::Hatch>());
+ return !aHatchName.isEmpty() && setProperty( nPropId, aHatchName );
+ }
+
+ return false;
+}
+
+bool ShapePropertyMap::setGradientTrans( sal_Int32 nPropId, const Any& rValue )
+{
+ // create named gradient and push its name
+ if( rValue.has< awt::Gradient >() )
+ {
+ OUString aGradientName = mrModelObjHelper.insertTransGrandient( rValue.get< awt::Gradient >() );
+ return !aGradientName.isEmpty() && setProperty( nPropId, aGradientName );
+ }
+
+ return false;
+}
+
+bool ShapePropertyMap::setFillBitmap(sal_Int32 nPropId, const Any& rValue)
+{
+ // push bitmap explicitly
+ if (!maShapePropInfo.mbNamedFillBitmap)
+ {
+ return setAnyProperty(nPropId, rValue);
+ }
+
+ // create named bitmap URL and push its name
+ if (rValue.has<uno::Reference<graphic::XGraphic>>())
+ {
+ auto xGraphic = rValue.get<uno::Reference<graphic::XGraphic>>();
+ OUString aBitmapName = mrModelObjHelper.insertFillBitmapXGraphic(xGraphic);
+ return !aBitmapName.isEmpty() && setProperty(nPropId, aBitmapName);
+ }
+
+ return false;
+}
+
+bool ShapePropertyMap::setFillBitmapName(const Any& rValue)
+{
+ if (rValue.has<uno::Reference<graphic::XGraphic>>())
+ {
+ auto xGraphic = rValue.get<uno::Reference<graphic::XGraphic>>();
+ OUString aBitmapUrlName = mrModelObjHelper.insertFillBitmapXGraphic(xGraphic);
+ return !aBitmapUrlName.isEmpty() && setProperty(PROP_FillBitmapName, aBitmapUrlName);
+ }
+ return false;
+}
+
+} // namespace oox::drawingml
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/oox/source/drawingml/shapestylecontext.cxx b/oox/source/drawingml/shapestylecontext.cxx
new file mode 100644
index 000000000..f0bc061a5
--- /dev/null
+++ b/oox/source/drawingml/shapestylecontext.cxx
@@ -0,0 +1,70 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ *
+ * This file incorporates work covered by the following license notice:
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed
+ * with this work for additional information regarding copyright
+ * ownership. The ASF licenses this file to you under the Apache
+ * License, Version 2.0 (the "License"); you may not use this file
+ * except in compliance with the License. You may obtain a copy of
+ * the License at http://www.apache.org/licenses/LICENSE-2.0 .
+ */
+
+#include <drawingml/shapestylecontext.hxx>
+
+#include <oox/helper/attributelist.hxx>
+#include <drawingml/colorchoicecontext.hxx>
+#include <oox/token/namespaces.hxx>
+#include <oox/token/tokens.hxx>
+
+using namespace ::oox::core;
+using namespace ::com::sun::star::uno;
+using namespace ::com::sun::star::xml::sax;
+
+namespace oox::drawingml {
+
+// CT_ShapeStyle
+
+ShapeStyleContext::ShapeStyleContext( ContextHandler2Helper const & rParent, Shape& rShape )
+: ContextHandler2( rParent )
+, mrShape( rShape )
+{
+}
+
+ShapeStyleContext::~ShapeStyleContext()
+{
+}
+
+ContextHandlerRef ShapeStyleContext::onCreateContext( sal_Int32 aElementToken, const AttributeList& rAttribs )
+{
+ switch( aElementToken )
+ {
+ case A_TOKEN( lnRef ) : // CT_StyleMatrixReference
+ case A_TOKEN( fillRef ) : // CT_StyleMatrixReference
+ case A_TOKEN( effectRef ) : // CT_StyleMatrixReference
+ case A_TOKEN( fontRef ) : // CT_FontReference
+ {
+ sal_Int32 nToken = getBaseToken( aElementToken );
+ ShapeStyleRef& rStyleRef = mrShape.getShapeStyleRefs()[ nToken ];
+ rStyleRef.mnThemedIdx = (nToken == XML_fontRef) ? rAttribs.getToken( XML_idx, XML_none ) : rAttribs.getInteger( XML_idx, 0 );
+ // Set default Text Color. Some xml files don't seem
+ // to have color definitions inside fontRef - Use
+ // tx1 in such cases
+ if( nToken == XML_fontRef && !rStyleRef.maPhClr.isUsed() )
+ rStyleRef.maPhClr.setSchemeClr(XML_tx1);
+ return new ColorContext( *this, rStyleRef.maPhClr );
+ }
+ }
+ return nullptr;
+}
+
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/oox/source/drawingml/spdefcontext.cxx b/oox/source/drawingml/spdefcontext.cxx
new file mode 100644
index 000000000..3697bdfe8
--- /dev/null
+++ b/oox/source/drawingml/spdefcontext.cxx
@@ -0,0 +1,62 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ *
+ * This file incorporates work covered by the following license notice:
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed
+ * with this work for additional information regarding copyright
+ * ownership. The ASF licenses this file to you under the Apache
+ * License, Version 2.0 (the "License"); you may not use this file
+ * except in compliance with the License. You may obtain a copy of
+ * the License at http://www.apache.org/licenses/LICENSE-2.0 .
+ */
+
+#include <drawingml/spdefcontext.hxx>
+#include <drawingml/shapepropertiescontext.hxx>
+#include <drawingml/textbody.hxx>
+#include <drawingml/textbodypropertiescontext.hxx>
+#include <drawingml/textliststylecontext.hxx>
+#include <oox/token/namespaces.hxx>
+
+using namespace ::oox::core;
+using namespace ::com::sun::star::uno;
+using namespace ::com::sun::star::xml::sax;
+
+namespace oox::drawingml {
+
+spDefContext::spDefContext( ContextHandler2Helper const & rParent, Shape& rDefaultObject )
+: ContextHandler2( rParent )
+, mrDefaultObject( rDefaultObject )
+{
+}
+
+ContextHandlerRef spDefContext::onCreateContext( sal_Int32 aElementToken, const AttributeList& rAttribs )
+{
+ switch( aElementToken )
+ {
+ case A_TOKEN( spPr ):
+ return new ShapePropertiesContext( *this, mrDefaultObject );
+ case A_TOKEN( bodyPr ):
+ {
+ TextBodyPtr xTextBody = std::make_shared<TextBody>();
+ mrDefaultObject.setTextBody( xTextBody );
+ return new TextBodyPropertiesContext( *this, rAttribs, xTextBody->getTextProperties() );
+ }
+ case A_TOKEN( lstStyle ):
+ return new TextListStyleContext( *this, *mrDefaultObject.getMasterTextListStyle() );
+ case A_TOKEN( style ):
+ break;
+ }
+
+ return this;
+}
+
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/oox/source/drawingml/table/predefined-table-styles.cxx b/oox/source/drawingml/table/predefined-table-styles.cxx
new file mode 100644
index 000000000..91eccdfc8
--- /dev/null
+++ b/oox/source/drawingml/table/predefined-table-styles.cxx
@@ -0,0 +1,975 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ */
+#include <oox/token/tokens.hxx>
+#include <drawingml/table/tablestyle.hxx>
+
+using namespace oox;
+using namespace oox::drawingml::table;
+
+/* tdf#107604
+ * There are predefined table styles that have a
+ * style id (in ppt/slides/slidex.xml) but does not have
+ * corresponding style definition (ppt/tableStyles.xml).
+ * So we should create those styles here for this case.
+ * There are 74 predefined styles and many different
+ * variables. A style map was created by examining all
+ * 74 style properties. And table styles were coded according
+ * to that map. You can see that map in
+ * oox/documentation/predefined-styles-map.ods. We should
+ * define all of these variables to keep the code readable
+ * and change something easily when some styles change.
+ */
+
+std::map<OUString, std::pair<OUString, OUString>> mStyleIdMap;
+
+// Create style-id map for using similar attributes of the groups.
+// (style ids used from here: https://docs.microsoft.com/en-us/previous-versions/office/developer/office-2010/hh273476(v=office.14)?redirectedfrom=MSDN)
+// and checked all of them.
+
+static void createStyleIdMap()
+{
+ mStyleIdMap[OUString("{2D5ABB26-0587-4C30-8999-92F81FD0307C}")]
+ = std::make_pair(OUString("Themed-Style-1"), OUString(""));
+ mStyleIdMap[OUString("{3C2FFA5D-87B4-456A-9821-1D502468CF0F}")]
+ = std::make_pair(OUString("Themed-Style-1"), OUString("Accent1"));
+ mStyleIdMap[OUString("{284E427A-3D55-4303-BF80-6455036E1DE7}")]
+ = std::make_pair(OUString("Themed-Style-1"), OUString("Accent2"));
+ mStyleIdMap[OUString("{69C7853C-536D-4A76-A0AE-DD22124D55A5}")]
+ = std::make_pair(OUString("Themed-Style-1"), OUString("Accent3"));
+ mStyleIdMap[OUString("{775DCB02-9BB8-47FD-8907-85C794F793BA}")]
+ = std::make_pair(OUString("Themed-Style-1"), OUString("Accent4"));
+ mStyleIdMap[OUString("{35758FB7-9AC5-4552-8A53-C91805E547FA}")]
+ = std::make_pair(OUString("Themed-Style-1"), OUString("Accent5"));
+ mStyleIdMap[OUString("{08FB837D-C827-4EFA-A057-4D05807E0F7C}")]
+ = std::make_pair(OUString("Themed-Style-1"), OUString("Accent6"));
+
+ mStyleIdMap[OUString("{5940675A-B579-460E-94D1-54222C63F5DA}")]
+ = std::make_pair(OUString("Themed-Style-2"), OUString(""));
+ mStyleIdMap[OUString("{D113A9D2-9D6B-4929-AA2D-F23B5EE8CBE7}")]
+ = std::make_pair(OUString("Themed-Style-2"), OUString("Accent1"));
+ mStyleIdMap[OUString("{18603FDC-E32A-4AB5-989C-0864C3EAD2B8}")]
+ = std::make_pair(OUString("Themed-Style-2"), OUString("Accent2"));
+ mStyleIdMap[OUString("{306799F8-075E-4A3A-A7F6-7FBC6576F1A4}")]
+ = std::make_pair(OUString("Themed-Style-2"), OUString("Accent3"));
+ mStyleIdMap[OUString("{E269D01E-BC32-4049-B463-5C60D7B0CCD2}")]
+ = std::make_pair(OUString("Themed-Style-2"), OUString("Accent4"));
+ mStyleIdMap[OUString("{327F97BB-C833-4FB7-BDE5-3F7075034690}")]
+ = std::make_pair(OUString("Themed-Style-2"), OUString("Accent5"));
+ mStyleIdMap[OUString("{638B1855-1B75-4FBE-930C-398BA8C253C6}")]
+ = std::make_pair(OUString("Themed-Style-2"), OUString("Accent6"));
+
+ mStyleIdMap[OUString("{9D7B26C5-4107-4FEC-AEDC-1716B250A1EF}")]
+ = std::make_pair(OUString("Light-Style-1"), OUString(""));
+ mStyleIdMap[OUString("{3B4B98B0-60AC-42C2-AFA5-B58CD77FA1E5}")]
+ = std::make_pair(OUString("Light-Style-1"), OUString("Accent1"));
+ mStyleIdMap[OUString("{0E3FDE45-AF77-4B5C-9715-49D594BDF05E}")]
+ = std::make_pair(OUString("Light-Style-1"), OUString("Accent2"));
+ mStyleIdMap[OUString("{C083E6E3-FA7D-4D7B-A595-EF9225AFEA82}")]
+ = std::make_pair(OUString("Light-Style-1"), OUString("Accent3"));
+ mStyleIdMap[OUString("{D27102A9-8310-4765-A935-A1911B00CA55}")]
+ = std::make_pair(OUString("Light-Style-1"), OUString("Accent4"));
+ mStyleIdMap[OUString("{5FD0F851-EC5A-4D38-B0AD-8093EC10F338}")]
+ = std::make_pair(OUString("Light-Style-1"), OUString("Accent5"));
+ mStyleIdMap[OUString("{68D230F3-CF80-4859-8CE7-A43EE81993B5}")]
+ = std::make_pair(OUString("Light-Style-1"), OUString("Accent6"));
+
+ mStyleIdMap[OUString("{7E9639D4-E3E2-4D34-9284-5A2195B3D0D7}")]
+ = std::make_pair(OUString("Light-Style-2"), OUString(""));
+ mStyleIdMap[OUString("{69012ECD-51FC-41F1-AA8D-1B2483CD663E}")]
+ = std::make_pair(OUString("Light-Style-2"), OUString("Accent1"));
+ mStyleIdMap[OUString("{72833802-FEF1-4C79-8D5D-14CF1EAF98D9}")]
+ = std::make_pair(OUString("Light-Style-2"), OUString("Accent2"));
+ mStyleIdMap[OUString("{F2DE63D5-997A-4646-A377-4702673A728D}")]
+ = std::make_pair(OUString("Light-Style-2"), OUString("Accent3"));
+ mStyleIdMap[OUString("{17292A2E-F333-43FB-9621-5CBBE7FDCDCB}")]
+ = std::make_pair(OUString("Light-Style-2"), OUString("Accent4"));
+ mStyleIdMap[OUString("{5A111915-BE36-4E01-A7E5-04B1672EAD32}")]
+ = std::make_pair(OUString("Light-Style-2"), OUString("Accent5"));
+ mStyleIdMap[OUString("{912C8C85-51F0-491E-9774-3900AFEF0FD7}")]
+ = std::make_pair(OUString("Light-Style-2"), OUString("Accent6"));
+
+ mStyleIdMap[OUString("{616DA210-FB5B-4158-B5E0-FEB733F419BA}")]
+ = std::make_pair(OUString("Light-Style-3"), OUString(""));
+ mStyleIdMap[OUString("{BC89EF96-8CEA-46FF-86C4-4CE0E7609802}")]
+ = std::make_pair(OUString("Light-Style-3"), OUString("Accent1"));
+ mStyleIdMap[OUString("{5DA37D80-6434-44D0-A028-1B22A696006F}")]
+ = std::make_pair(OUString("Light-Style-3"), OUString("Accent2"));
+ mStyleIdMap[OUString("{8799B23B-EC83-4686-B30A-512413B5E67A}")]
+ = std::make_pair(OUString("Light-Style-3"), OUString("Accent3"));
+ mStyleIdMap[OUString("{ED083AE6-46FA-4A59-8FB0-9F97EB10719F}")]
+ = std::make_pair(OUString("Light-Style-3"), OUString("Accent4"));
+ mStyleIdMap[OUString("{BDBED569-4797-4DF1-A0F4-6AAB3CD982D8}")]
+ = std::make_pair(OUString("Light-Style-3"), OUString("Accent5"));
+ mStyleIdMap[OUString("{E8B1032C-EA38-4F05-BA0D-38AFFFC7BED3}")]
+ = std::make_pair(OUString("Light-Style-3"), OUString("Accent6"));
+
+ mStyleIdMap[OUString("{793D81CF-94F2-401A-BA57-92F5A7B2D0C5}")]
+ = std::make_pair(OUString("Medium-Style-1"), OUString(""));
+ mStyleIdMap[OUString("{B301B821-A1FF-4177-AEE7-76D212191A09}")]
+ = std::make_pair(OUString("Medium-Style-1"), OUString("Accent1"));
+ mStyleIdMap[OUString("{9DCAF9ED-07DC-4A11-8D7F-57B35C25682E}")]
+ = std::make_pair(OUString("Medium-Style-1"), OUString("Accent2"));
+ mStyleIdMap[OUString("{1FECB4D8-DB02-4DC6-A0A2-4F2EBAE1DC90}")]
+ = std::make_pair(OUString("Medium-Style-1"), OUString("Accent3"));
+ mStyleIdMap[OUString("{1E171933-4619-4E11-9A3F-F7608DF75F80}")]
+ = std::make_pair(OUString("Medium-Style-1"), OUString("Accent4"));
+ mStyleIdMap[OUString("{FABFCF23-3B69-468F-B69F-88F6DE6A72F2}")]
+ = std::make_pair(OUString("Medium-Style-1"), OUString("Accent5"));
+ mStyleIdMap[OUString("{10A1B5D5-9B99-4C35-A422-299274C87663}")]
+ = std::make_pair(OUString("Medium-Style-1"), OUString("Accent6"));
+
+ mStyleIdMap[OUString("{073A0DAA-6AF3-43AB-8588-CEC1D06C72B9}")]
+ = std::make_pair(OUString("Medium-Style-2"), OUString(""));
+ mStyleIdMap[OUString("{5C22544A-7EE6-4342-B048-85BDC9FD1C3A}")]
+ = std::make_pair(OUString("Medium-Style-2"), OUString("Accent1"));
+ mStyleIdMap[OUString("{21E4AEA4-8DFA-4A89-87EB-49C32662AFE0}")]
+ = std::make_pair(OUString("Medium-Style-2"), OUString("Accent2"));
+ mStyleIdMap[OUString("{F5AB1C69-6EDB-4FF4-983F-18BD219EF322}")]
+ = std::make_pair(OUString("Medium-Style-2"), OUString("Accent3"));
+ mStyleIdMap[OUString("{00A15C55-8517-42AA-B614-E9B94910E393}")]
+ = std::make_pair(OUString("Medium-Style-2"), OUString("Accent4"));
+ mStyleIdMap[OUString("{7DF18680-E054-41AD-8BC1-D1AEF772440D}")]
+ = std::make_pair(OUString("Medium-Style-2"), OUString("Accent5"));
+ mStyleIdMap[OUString("{93296810-A885-4BE3-A3E7-6D5BEEA58F35}")]
+ = std::make_pair(OUString("Medium-Style-2"), OUString("Accent6"));
+
+ mStyleIdMap[OUString("{8EC20E35-A176-4012-BC5E-935CFFF8708E}")]
+ = std::make_pair(OUString("Medium-Style-3"), OUString(""));
+ mStyleIdMap[OUString("{6E25E649-3F16-4E02-A733-19D2CDBF48F0}")]
+ = std::make_pair(OUString("Medium-Style-3"), OUString("Accent1"));
+ mStyleIdMap[OUString("{85BE263C-DBD7-4A20-BB59-AAB30ACAA65A}")]
+ = std::make_pair(OUString("Medium-Style-3"), OUString("Accent2"));
+ mStyleIdMap[OUString("{EB344D84-9AFB-497E-A393-DC336BA19D2E}")]
+ = std::make_pair(OUString("Medium-Style-3"), OUString("Accent3"));
+ mStyleIdMap[OUString("{EB9631B5-78F2-41C9-869B-9F39066F8104}")]
+ = std::make_pair(OUString("Medium-Style-3"), OUString("Accent4"));
+ mStyleIdMap[OUString("{74C1A8A3-306A-4EB7-A6B1-4F7E0EB9C5D6}")]
+ = std::make_pair(OUString("Medium-Style-3"), OUString("Accent5"));
+ mStyleIdMap[OUString("{2A488322-F2BA-4B5B-9748-0D474271808F}")]
+ = std::make_pair(OUString("Medium-Style-3"), OUString("Accent6"));
+
+ mStyleIdMap[OUString("{D7AC3CCA-C797-4891-BE02-D94E43425B78}")]
+ = std::make_pair(OUString("Medium-Style-4"), OUString(""));
+ mStyleIdMap[OUString("{69CF1AB2-1976-4502-BF36-3FF5EA218861}")]
+ = std::make_pair(OUString("Medium-Style-4"), OUString("Accent1"));
+ mStyleIdMap[OUString("{8A107856-5554-42FB-B03E-39F5DBC370BA}")]
+ = std::make_pair(OUString("Medium-Style-4"), OUString("Accent2"));
+ mStyleIdMap[OUString("{0505E3EF-67EA-436B-97B2-0124C06EBD24}")]
+ = std::make_pair(OUString("Medium-Style-4"), OUString("Accent3"));
+ mStyleIdMap[OUString("{C4B1156A-380E-4F78-BDF5-A606A8083BF9}")]
+ = std::make_pair(OUString("Medium-Style-4"), OUString("Accent4"));
+ mStyleIdMap[OUString("{22838BEF-8BB2-4498-84A7-C5851F593DF1}")]
+ = std::make_pair(OUString("Medium-Style-4"), OUString("Accent5"));
+ mStyleIdMap[OUString("{16D9F66E-5EB9-4882-86FB-DCBF35E3C3E4}")]
+ = std::make_pair(OUString("Medium-Style-4"), OUString("Accent6"));
+
+ mStyleIdMap[OUString("{E8034E78-7F5D-4C2E-B375-FC64B27BC917}")]
+ = std::make_pair(OUString("Dark-Style-1"), OUString(""));
+ mStyleIdMap[OUString("{125E5076-3810-47DD-B79F-674D7AD40C01}")]
+ = std::make_pair(OUString("Dark-Style-1"), OUString("Accent1"));
+ mStyleIdMap[OUString("{37CE84F3-28C3-443E-9E96-99CF82512B78}")]
+ = std::make_pair(OUString("Dark-Style-1"), OUString("Accent2"));
+ mStyleIdMap[OUString("{D03447BB-5D67-496B-8E87-E561075AD55C}")]
+ = std::make_pair(OUString("Dark-Style-1"), OUString("Accent3"));
+ mStyleIdMap[OUString("{E929F9F4-4A8F-4326-A1B4-22849713DDAB}")]
+ = std::make_pair(OUString("Dark-Style-1"), OUString("Accent4"));
+ mStyleIdMap[OUString("{8FD4443E-F989-4FC4-A0C8-D5A2AF1F390B}")]
+ = std::make_pair(OUString("Dark-Style-1"), OUString("Accent5"));
+ mStyleIdMap[OUString("{AF606853-7671-496A-8E4F-DF71F8EC918B}")]
+ = std::make_pair(OUString("Dark-Style-1"), OUString("Accent6"));
+
+ mStyleIdMap[OUString("{5202B0CA-FC54-4496-8BCA-5EF66A818D29}")]
+ = std::make_pair(OUString("Dark-Style-2"), OUString(""));
+ mStyleIdMap[OUString("{0660B408-B3CF-4A94-85FC-2B1E0A45F4A2}")]
+ = std::make_pair(OUString("Dark-Style-2"), OUString("Accent1"));
+ mStyleIdMap[OUString("{91EBBBCC-DAD2-459C-BE2E-F6DE35CF9A28}")]
+ = std::make_pair(OUString("Dark-Style-2"), OUString("Accent3"));
+ mStyleIdMap[OUString("{46F890A9-2807-4EBB-B81D-B2AA78EC7F39}")]
+ = std::make_pair(OUString("Dark-Style-2"), OUString("Accent5"));
+}
+
+static std::map<OUString, sal_Int32> tokens = { { "", XML_dk1 },
+ { "Accent1", XML_accent1 },
+ { "Accent2", XML_accent2 },
+ { "Accent3", XML_accent3 },
+ { "Accent4", XML_accent4 },
+ { "Accent5", XML_accent5 },
+ { "Accent6", XML_accent6 } };
+
+void setBorderLineType(const oox::drawingml::LinePropertiesPtr& pLineProp, sal_Int32 nToken)
+{
+ pLineProp->maLineFill.moFillType.set(nToken);
+}
+
+void insertBorderLine(TableStylePart& aTableStylePart, sal_Int32 nToken,
+ oox::drawingml::LinePropertiesPtr pLineProp)
+{
+ if (pLineProp->maLineFill.moFillType.has())
+ {
+ aTableStylePart.getLineBorders().insert(
+ std::pair<sal_Int32, ::oox::drawingml::LinePropertiesPtr>(nToken, pLineProp));
+ }
+}
+
+std::unique_ptr<TableStyle> CreateTableStyle(const OUString& styleId)
+{
+ createStyleIdMap();
+ std::unique_ptr<TableStyle> pTableStyle;
+ pTableStyle.reset(new TableStyle());
+
+ // Text Color definitions for table parts
+
+ ::oox::drawingml::Color wholeTblTextColor;
+ ::oox::drawingml::Color firstRowTextColor;
+ ::oox::drawingml::Color firstColTextColor;
+ ::oox::drawingml::Color lastRowTextColor;
+ ::oox::drawingml::Color lastColTextColor;
+ ::oox::drawingml::Color band1HTextColor;
+ ::oox::drawingml::Color band1VTextColor;
+ ::oox::drawingml::Color band2HTextColor;
+ ::oox::drawingml::Color band2VTextColor;
+
+ // Fill properties definitions for table parts
+
+ oox::drawingml::FillPropertiesPtr pWholeTblFillProperties
+ = std::make_shared<oox::drawingml::FillProperties>();
+ oox::drawingml::FillPropertiesPtr pFirstRowFillProperties
+ = std::make_shared<oox::drawingml::FillProperties>();
+ oox::drawingml::FillPropertiesPtr pFirstColFillProperties
+ = std::make_shared<oox::drawingml::FillProperties>();
+ oox::drawingml::FillPropertiesPtr pLastRowFillProperties
+ = std::make_shared<oox::drawingml::FillProperties>();
+ oox::drawingml::FillPropertiesPtr pLastColFillProperties
+ = std::make_shared<oox::drawingml::FillProperties>();
+ oox::drawingml::FillPropertiesPtr pBand1HFillProperties
+ = std::make_shared<oox::drawingml::FillProperties>();
+ oox::drawingml::FillPropertiesPtr pBand1VFillProperties
+ = std::make_shared<oox::drawingml::FillProperties>();
+ oox::drawingml::FillPropertiesPtr pBand2HFillProperties
+ = std::make_shared<oox::drawingml::FillProperties>();
+ oox::drawingml::FillPropertiesPtr pBand2VFillProperties
+ = std::make_shared<oox::drawingml::FillProperties>();
+ oox::drawingml::FillPropertiesPtr pTblBgFillProperties
+ = std::make_shared<oox::drawingml::FillProperties>();
+
+ // Start table border line properties definitions for table parts
+
+ oox::drawingml::LinePropertiesPtr pWholeTblLeftBorder
+ = std::make_shared<oox::drawingml::LineProperties>();
+ oox::drawingml::LinePropertiesPtr pWholeTblRightBorder
+ = std::make_shared<oox::drawingml::LineProperties>();
+ oox::drawingml::LinePropertiesPtr pWholeTblTopBorder
+ = std::make_shared<oox::drawingml::LineProperties>();
+ oox::drawingml::LinePropertiesPtr pWholeTblBottomBorder
+ = std::make_shared<oox::drawingml::LineProperties>();
+ oox::drawingml::LinePropertiesPtr pWholeTblInsideHBorder
+ = std::make_shared<oox::drawingml::LineProperties>();
+ oox::drawingml::LinePropertiesPtr pWholeTblInsideVBorder
+ = std::make_shared<oox::drawingml::LineProperties>();
+
+ oox::drawingml::LinePropertiesPtr pFirstRowLeftBorder
+ = std::make_shared<oox::drawingml::LineProperties>();
+ oox::drawingml::LinePropertiesPtr pFirstRowRightBorder
+ = std::make_shared<oox::drawingml::LineProperties>();
+ oox::drawingml::LinePropertiesPtr pFirstRowTopBorder
+ = std::make_shared<oox::drawingml::LineProperties>();
+ oox::drawingml::LinePropertiesPtr pFirstRowBottomBorder
+ = std::make_shared<oox::drawingml::LineProperties>();
+ oox::drawingml::LinePropertiesPtr pFirstRowInsideHBorder
+ = std::make_shared<oox::drawingml::LineProperties>();
+ oox::drawingml::LinePropertiesPtr pFirstRowInsideVBorder
+ = std::make_shared<oox::drawingml::LineProperties>();
+
+ oox::drawingml::LinePropertiesPtr pFirstColLeftBorder
+ = std::make_shared<oox::drawingml::LineProperties>();
+ oox::drawingml::LinePropertiesPtr pFirstColRightBorder
+ = std::make_shared<oox::drawingml::LineProperties>();
+ oox::drawingml::LinePropertiesPtr pFirstColTopBorder
+ = std::make_shared<oox::drawingml::LineProperties>();
+ oox::drawingml::LinePropertiesPtr pFirstColBottomBorder
+ = std::make_shared<oox::drawingml::LineProperties>();
+ oox::drawingml::LinePropertiesPtr pFirstColInsideHBorder
+ = std::make_shared<oox::drawingml::LineProperties>();
+ oox::drawingml::LinePropertiesPtr pFirstColInsideVBorder
+ = std::make_shared<oox::drawingml::LineProperties>();
+
+ oox::drawingml::LinePropertiesPtr pLastColLeftBorder
+ = std::make_shared<oox::drawingml::LineProperties>();
+ oox::drawingml::LinePropertiesPtr pLastColRightBorder
+ = std::make_shared<oox::drawingml::LineProperties>();
+ oox::drawingml::LinePropertiesPtr pLastColTopBorder
+ = std::make_shared<oox::drawingml::LineProperties>();
+ oox::drawingml::LinePropertiesPtr pLastColBottomBorder
+ = std::make_shared<oox::drawingml::LineProperties>();
+ oox::drawingml::LinePropertiesPtr pLastColInsideHBorder
+ = std::make_shared<oox::drawingml::LineProperties>();
+ oox::drawingml::LinePropertiesPtr pLastColInsideVBorder
+ = std::make_shared<oox::drawingml::LineProperties>();
+
+ oox::drawingml::LinePropertiesPtr pLastRowLeftBorder
+ = std::make_shared<oox::drawingml::LineProperties>();
+ oox::drawingml::LinePropertiesPtr pLastRowRightBorder
+ = std::make_shared<oox::drawingml::LineProperties>();
+ oox::drawingml::LinePropertiesPtr pLastRowTopBorder
+ = std::make_shared<oox::drawingml::LineProperties>();
+ oox::drawingml::LinePropertiesPtr pLastRowBottomBorder
+ = std::make_shared<oox::drawingml::LineProperties>();
+ oox::drawingml::LinePropertiesPtr pLastRowInsideHBorder
+ = std::make_shared<oox::drawingml::LineProperties>();
+ oox::drawingml::LinePropertiesPtr pLastRowInsideVBorder
+ = std::make_shared<oox::drawingml::LineProperties>();
+
+ oox::drawingml::LinePropertiesPtr pBand1HLeftBorder
+ = std::make_shared<oox::drawingml::LineProperties>();
+ oox::drawingml::LinePropertiesPtr pBand1HRightBorder
+ = std::make_shared<oox::drawingml::LineProperties>();
+ oox::drawingml::LinePropertiesPtr pBand1HTopBorder
+ = std::make_shared<oox::drawingml::LineProperties>();
+ oox::drawingml::LinePropertiesPtr pBand1HBottomBorder
+ = std::make_shared<oox::drawingml::LineProperties>();
+ oox::drawingml::LinePropertiesPtr pBand1HInsideHBorder
+ = std::make_shared<oox::drawingml::LineProperties>();
+ oox::drawingml::LinePropertiesPtr pBand1HInsideVBorder
+ = std::make_shared<oox::drawingml::LineProperties>();
+
+ oox::drawingml::LinePropertiesPtr pBand1VLeftBorder
+ = std::make_shared<oox::drawingml::LineProperties>();
+ oox::drawingml::LinePropertiesPtr pBand1VRightBorder
+ = std::make_shared<oox::drawingml::LineProperties>();
+ oox::drawingml::LinePropertiesPtr pBand1VTopBorder
+ = std::make_shared<oox::drawingml::LineProperties>();
+ oox::drawingml::LinePropertiesPtr pBand1VBottomBorder
+ = std::make_shared<oox::drawingml::LineProperties>();
+ oox::drawingml::LinePropertiesPtr pBand1VInsideHBorder
+ = std::make_shared<oox::drawingml::LineProperties>();
+ oox::drawingml::LinePropertiesPtr pBand1VInsideVBorder
+ = std::make_shared<oox::drawingml::LineProperties>();
+
+ oox::drawingml::LinePropertiesPtr pBand2HLeftBorder
+ = std::make_shared<oox::drawingml::LineProperties>();
+ oox::drawingml::LinePropertiesPtr pBand2HRightBorder
+ = std::make_shared<oox::drawingml::LineProperties>();
+ oox::drawingml::LinePropertiesPtr pBand2HTopBorder
+ = std::make_shared<oox::drawingml::LineProperties>();
+ oox::drawingml::LinePropertiesPtr pBand2HBottomBorder
+ = std::make_shared<oox::drawingml::LineProperties>();
+ oox::drawingml::LinePropertiesPtr pBand2HInsideHBorder
+ = std::make_shared<oox::drawingml::LineProperties>();
+ oox::drawingml::LinePropertiesPtr pBand2HInsideVBorder
+ = std::make_shared<oox::drawingml::LineProperties>();
+
+ oox::drawingml::LinePropertiesPtr pBand2VLeftBorder
+ = std::make_shared<oox::drawingml::LineProperties>();
+ oox::drawingml::LinePropertiesPtr pBand2VRightBorder
+ = std::make_shared<oox::drawingml::LineProperties>();
+ oox::drawingml::LinePropertiesPtr pBand2VTopBorder
+ = std::make_shared<oox::drawingml::LineProperties>();
+ oox::drawingml::LinePropertiesPtr pBand2VBottomBorder
+ = std::make_shared<oox::drawingml::LineProperties>();
+ oox::drawingml::LinePropertiesPtr pBand2VInsideHBorder
+ = std::make_shared<oox::drawingml::LineProperties>();
+ oox::drawingml::LinePropertiesPtr pBand2VInsideVBorder
+ = std::make_shared<oox::drawingml::LineProperties>();
+
+ // End table border line properties definitions for table parts
+
+ // Start to set fill types.
+
+ pTblBgFillProperties->moFillType.set(XML_solidFill);
+ pWholeTblFillProperties->moFillType.set(XML_solidFill);
+ pFirstRowFillProperties->moFillType.set(XML_solidFill);
+ pFirstColFillProperties->moFillType.set(XML_solidFill);
+ pLastRowFillProperties->moFillType.set(XML_solidFill);
+ pLastColFillProperties->moFillType.set(XML_solidFill);
+ pBand1HFillProperties->moFillType.set(XML_solidFill);
+ pBand1VFillProperties->moFillType.set(XML_solidFill);
+ pBand2HFillProperties->moFillType.set(XML_solidFill);
+ pBand2VFillProperties->moFillType.set(XML_solidFill);
+
+ // End to set fill types.
+
+ // Define common properties.
+
+ pWholeTblLeftBorder->moLineWidth = 12700;
+ pWholeTblRightBorder->moLineWidth = 12700;
+ pWholeTblTopBorder->moLineWidth = 12700;
+ pWholeTblBottomBorder->moLineWidth = 12700;
+ pWholeTblInsideHBorder->moLineWidth = 12700;
+ pWholeTblInsideVBorder->moLineWidth = 12700;
+
+ pWholeTblLeftBorder->moPresetDash = XML_solid;
+ pWholeTblRightBorder->moPresetDash = XML_solid;
+ pWholeTblTopBorder->moPresetDash = XML_solid;
+ pWholeTblBottomBorder->moPresetDash = XML_solid;
+ pWholeTblInsideHBorder->moPresetDash = XML_solid;
+ pWholeTblInsideVBorder->moPresetDash = XML_solid;
+
+ // Start to handle all style groups.
+
+ OUString style_name = mStyleIdMap[styleId].first;
+ OUString accent_name = mStyleIdMap[styleId].second;
+
+ if (style_name == "Themed-Style-1")
+ {
+ if (!accent_name.isEmpty())
+ {
+ setBorderLineType(pWholeTblLeftBorder, XML_solidFill);
+ setBorderLineType(pWholeTblRightBorder, XML_solidFill);
+ setBorderLineType(pWholeTblTopBorder, XML_solidFill);
+ setBorderLineType(pWholeTblBottomBorder, XML_solidFill);
+ setBorderLineType(pWholeTblInsideHBorder, XML_solidFill);
+ setBorderLineType(pWholeTblInsideVBorder, XML_solidFill);
+ setBorderLineType(pFirstRowLeftBorder, XML_solidFill);
+ setBorderLineType(pFirstRowRightBorder, XML_solidFill);
+ setBorderLineType(pFirstRowTopBorder, XML_solidFill);
+ setBorderLineType(pFirstRowBottomBorder, XML_solidFill);
+ setBorderLineType(pLastRowLeftBorder, XML_solidFill);
+ setBorderLineType(pLastRowRightBorder, XML_solidFill);
+ setBorderLineType(pLastRowTopBorder, XML_solidFill);
+ setBorderLineType(pLastRowBottomBorder, XML_solidFill);
+ setBorderLineType(pFirstColLeftBorder, XML_solidFill);
+ setBorderLineType(pFirstColRightBorder, XML_solidFill);
+ setBorderLineType(pFirstColTopBorder, XML_solidFill);
+ setBorderLineType(pFirstColBottomBorder, XML_solidFill);
+ setBorderLineType(pFirstColInsideHBorder, XML_solidFill);
+ setBorderLineType(pLastColLeftBorder, XML_solidFill);
+ setBorderLineType(pLastColRightBorder, XML_solidFill);
+ setBorderLineType(pLastColTopBorder, XML_solidFill);
+ setBorderLineType(pLastColBottomBorder, XML_solidFill);
+ setBorderLineType(pLastColInsideHBorder, XML_solidFill);
+
+ sal_Int32 accent_val = tokens[mStyleIdMap[styleId].second];
+
+ wholeTblTextColor.setSchemeClr(XML_dk1);
+ firstRowTextColor.setSchemeClr(XML_lt1);
+
+ pWholeTblLeftBorder->maLineFill.maFillColor.setSchemeClr(accent_val);
+ pWholeTblRightBorder->maLineFill.maFillColor.setSchemeClr(accent_val);
+ pWholeTblTopBorder->maLineFill.maFillColor.setSchemeClr(accent_val);
+ pWholeTblBottomBorder->maLineFill.maFillColor.setSchemeClr(accent_val);
+ pWholeTblInsideHBorder->maLineFill.maFillColor.setSchemeClr(accent_val);
+ pWholeTblInsideVBorder->maLineFill.maFillColor.setSchemeClr(accent_val);
+
+ pFirstRowLeftBorder->maLineFill.maFillColor.setSchemeClr(accent_val);
+ pFirstRowRightBorder->maLineFill.maFillColor.setSchemeClr(accent_val);
+ pFirstRowTopBorder->maLineFill.maFillColor.setSchemeClr(accent_val);
+ pFirstRowBottomBorder->maLineFill.maFillColor.setSchemeClr(XML_lt1);
+ pFirstRowFillProperties->maFillColor.setSchemeClr(accent_val);
+
+ pLastRowLeftBorder->maLineFill.maFillColor.setSchemeClr(accent_val);
+ pLastRowRightBorder->maLineFill.maFillColor.setSchemeClr(accent_val);
+ pLastRowTopBorder->maLineFill.maFillColor.setSchemeClr(accent_val);
+ pLastRowBottomBorder->maLineFill.maFillColor.setSchemeClr(accent_val);
+
+ pFirstColLeftBorder->maLineFill.maFillColor.setSchemeClr(accent_val);
+ pFirstColRightBorder->maLineFill.maFillColor.setSchemeClr(accent_val);
+ pFirstColTopBorder->maLineFill.maFillColor.setSchemeClr(accent_val);
+ pFirstColBottomBorder->maLineFill.maFillColor.setSchemeClr(accent_val);
+ pFirstColInsideHBorder->maLineFill.maFillColor.setSchemeClr(accent_val);
+
+ pLastColLeftBorder->maLineFill.maFillColor.setSchemeClr(accent_val);
+ pLastColRightBorder->maLineFill.maFillColor.setSchemeClr(accent_val);
+ pLastColTopBorder->maLineFill.maFillColor.setSchemeClr(accent_val);
+ pLastColBottomBorder->maLineFill.maFillColor.setSchemeClr(accent_val);
+ pLastColInsideHBorder->maLineFill.maFillColor.setSchemeClr(accent_val);
+
+ pBand1HFillProperties->maFillColor.setSchemeClr(accent_val);
+ pBand1VFillProperties->maFillColor.setSchemeClr(accent_val);
+ }
+ else
+ {
+ wholeTblTextColor.setSchemeClr(XML_tx1);
+ }
+
+ pBand1HFillProperties->maFillColor.addTransformation(XML_alpha, 40000);
+ pBand1VFillProperties->maFillColor.addTransformation(XML_alpha, 40000);
+ }
+ else if (style_name == "Themed-Style-2")
+ {
+ setBorderLineType(pWholeTblLeftBorder, XML_solidFill);
+ setBorderLineType(pWholeTblRightBorder, XML_solidFill);
+ setBorderLineType(pWholeTblTopBorder, XML_solidFill);
+ setBorderLineType(pWholeTblBottomBorder, XML_solidFill);
+
+ sal_Int32 accent_val;
+
+ if (!accent_name.isEmpty())
+ {
+ setBorderLineType(pFirstRowBottomBorder, XML_solidFill);
+ setBorderLineType(pLastRowTopBorder, XML_solidFill);
+ setBorderLineType(pFirstColRightBorder, XML_solidFill);
+ setBorderLineType(pLastColLeftBorder, XML_solidFill);
+
+ wholeTblTextColor.setSchemeClr(XML_lt1);
+ firstRowTextColor.setSchemeClr(XML_lt1);
+
+ accent_val = tokens[mStyleIdMap[styleId].second];
+
+ pTblBgFillProperties->maFillColor.setSchemeClr(accent_val);
+ pFirstRowBottomBorder->maLineFill.maFillColor.setSchemeClr(XML_lt1);
+ pLastRowTopBorder->maLineFill.maFillColor.setSchemeClr(XML_lt1);
+ pFirstColRightBorder->maLineFill.maFillColor.setSchemeClr(XML_lt1);
+ pLastColLeftBorder->maLineFill.maFillColor.setSchemeClr(XML_lt1);
+ pBand1HFillProperties->maFillColor.setSchemeClr(XML_lt1);
+ pBand1VFillProperties->maFillColor.setSchemeClr(XML_lt1);
+ }
+ else
+ {
+ setBorderLineType(pWholeTblInsideVBorder, XML_solidFill);
+ setBorderLineType(pWholeTblInsideHBorder, XML_solidFill);
+
+ accent_val = XML_tx1;
+
+ pWholeTblInsideVBorder->maLineFill.maFillColor.setSchemeClr(XML_tx1);
+ pWholeTblInsideHBorder->maLineFill.maFillColor.setSchemeClr(XML_tx1);
+ }
+
+ pWholeTblLeftBorder->maLineFill.maFillColor.setSchemeClr(accent_val);
+ pWholeTblRightBorder->maLineFill.maFillColor.setSchemeClr(accent_val);
+ pWholeTblTopBorder->maLineFill.maFillColor.setSchemeClr(accent_val);
+ pWholeTblBottomBorder->maLineFill.maFillColor.setSchemeClr(accent_val);
+
+ pBand1HFillProperties->maFillColor.addTransformation(XML_alpha, 20000);
+ pBand1VFillProperties->maFillColor.addTransformation(XML_alpha, 20000);
+ pWholeTblLeftBorder->maLineFill.maFillColor.addTransformation(XML_tint, 50000);
+ pWholeTblRightBorder->maLineFill.maFillColor.addTransformation(XML_tint, 50000);
+ pWholeTblTopBorder->maLineFill.maFillColor.addTransformation(XML_tint, 50000);
+ pWholeTblBottomBorder->maLineFill.maFillColor.addTransformation(XML_tint, 50000);
+ }
+ else if (style_name == "Light-Style-1")
+ {
+ setBorderLineType(pWholeTblTopBorder, XML_solidFill);
+ setBorderLineType(pWholeTblBottomBorder, XML_solidFill);
+ setBorderLineType(pFirstRowBottomBorder, XML_solidFill);
+ setBorderLineType(pLastRowTopBorder, XML_solidFill);
+
+ wholeTblTextColor.setSchemeClr(XML_tx1);
+
+ sal_Int32 accent_val;
+
+ if (!accent_name.isEmpty())
+ accent_val = tokens[mStyleIdMap[styleId].second];
+ else
+ accent_val = XML_tx1;
+
+ pWholeTblTopBorder->maLineFill.maFillColor.setSchemeClr(accent_val);
+ pWholeTblBottomBorder->maLineFill.maFillColor.setSchemeClr(accent_val);
+ pFirstRowBottomBorder->maLineFill.maFillColor.setSchemeClr(accent_val);
+ pLastRowTopBorder->maLineFill.maFillColor.setSchemeClr(accent_val);
+
+ firstRowTextColor.setSchemeClr(accent_val);
+
+ pBand1HFillProperties->maFillColor.setSchemeClr(accent_val);
+ pBand1VFillProperties->maFillColor.setSchemeClr(accent_val);
+
+ pBand1HFillProperties->maFillColor.addTransformation(XML_alpha, 20000);
+ pBand1VFillProperties->maFillColor.addTransformation(XML_alpha, 20000);
+ }
+ else if (style_name == "Light-Style-2")
+ {
+ setBorderLineType(pWholeTblLeftBorder, XML_solidFill);
+ setBorderLineType(pWholeTblRightBorder, XML_solidFill);
+ setBorderLineType(pWholeTblTopBorder, XML_solidFill);
+ setBorderLineType(pWholeTblBottomBorder, XML_solidFill);
+ setBorderLineType(pLastRowTopBorder, XML_solidFill);
+ setBorderLineType(pBand1HTopBorder, XML_solidFill);
+ setBorderLineType(pBand1HBottomBorder, XML_solidFill);
+ setBorderLineType(pBand1VLeftBorder, XML_solidFill);
+ setBorderLineType(pBand1VRightBorder, XML_solidFill);
+ setBorderLineType(pBand2VLeftBorder, XML_solidFill);
+ setBorderLineType(pBand2VRightBorder, XML_solidFill);
+
+ wholeTblTextColor.setSchemeClr(XML_tx1);
+ firstRowTextColor.setSchemeClr(XML_bg1);
+
+ sal_Int32 accent_val;
+
+ if (!accent_name.isEmpty())
+ accent_val = tokens[mStyleIdMap[styleId].second];
+ else
+ accent_val = XML_tx1;
+
+ pWholeTblLeftBorder->maLineFill.maFillColor.setSchemeClr(accent_val);
+ pWholeTblRightBorder->maLineFill.maFillColor.setSchemeClr(accent_val);
+ pWholeTblTopBorder->maLineFill.maFillColor.setSchemeClr(accent_val);
+ pWholeTblBottomBorder->maLineFill.maFillColor.setSchemeClr(accent_val);
+
+ pFirstRowFillProperties->maFillColor.setSchemeClr(accent_val);
+ pLastRowTopBorder->maLineFill.maFillColor.setSchemeClr(accent_val);
+
+ pBand1HTopBorder->maLineFill.maFillColor.setSchemeClr(accent_val);
+ pBand1HBottomBorder->maLineFill.maFillColor.setSchemeClr(accent_val);
+
+ pBand1VLeftBorder->maLineFill.maFillColor.setSchemeClr(accent_val);
+ pBand1VRightBorder->maLineFill.maFillColor.setSchemeClr(accent_val);
+
+ pBand2VLeftBorder->maLineFill.maFillColor.setSchemeClr(accent_val);
+ pBand2VRightBorder->maLineFill.maFillColor.setSchemeClr(accent_val);
+ }
+ else if (style_name == "Light-Style-3")
+ {
+ setBorderLineType(pWholeTblLeftBorder, XML_solidFill);
+ setBorderLineType(pWholeTblRightBorder, XML_solidFill);
+ setBorderLineType(pWholeTblTopBorder, XML_solidFill);
+ setBorderLineType(pWholeTblBottomBorder, XML_solidFill);
+ setBorderLineType(pWholeTblInsideHBorder, XML_solidFill);
+ setBorderLineType(pWholeTblInsideVBorder, XML_solidFill);
+ setBorderLineType(pFirstRowBottomBorder, XML_solidFill);
+ setBorderLineType(pLastRowTopBorder, XML_solidFill);
+
+ wholeTblTextColor.setSchemeClr(XML_tx1);
+
+ sal_Int32 accent_val;
+
+ if (!accent_name.isEmpty())
+ accent_val = tokens[mStyleIdMap[styleId].second];
+ else
+ accent_val = XML_tx1;
+
+ pWholeTblLeftBorder->maLineFill.maFillColor.setSchemeClr(accent_val);
+ pWholeTblRightBorder->maLineFill.maFillColor.setSchemeClr(accent_val);
+ pWholeTblTopBorder->maLineFill.maFillColor.setSchemeClr(accent_val);
+ pWholeTblBottomBorder->maLineFill.maFillColor.setSchemeClr(accent_val);
+ pWholeTblInsideHBorder->maLineFill.maFillColor.setSchemeClr(accent_val);
+ pWholeTblInsideVBorder->maLineFill.maFillColor.setSchemeClr(accent_val);
+
+ firstRowTextColor.setSchemeClr(accent_val);
+ pFirstRowBottomBorder->maLineFill.maFillColor.setSchemeClr(accent_val);
+ pLastRowTopBorder->maLineFill.maFillColor.setSchemeClr(accent_val);
+ pBand1HFillProperties->maFillColor.setSchemeClr(accent_val);
+ pBand1VFillProperties->maFillColor.setSchemeClr(accent_val);
+
+ pBand1HFillProperties->maFillColor.addTransformation(XML_alpha, 20000);
+ pBand1VFillProperties->maFillColor.addTransformation(XML_alpha, 20000);
+ }
+ else if (style_name == "Medium-Style-1")
+ {
+ setBorderLineType(pWholeTblLeftBorder, XML_solidFill);
+ setBorderLineType(pWholeTblRightBorder, XML_solidFill);
+ setBorderLineType(pWholeTblTopBorder, XML_solidFill);
+ setBorderLineType(pWholeTblBottomBorder, XML_solidFill);
+ setBorderLineType(pWholeTblInsideHBorder, XML_solidFill);
+ setBorderLineType(pLastRowTopBorder, XML_solidFill);
+
+ wholeTblTextColor.setSchemeClr(XML_dk1);
+ firstRowTextColor.setSchemeClr(XML_lt1);
+ pWholeTblFillProperties->maFillColor.setSchemeClr(XML_lt1);
+ pLastRowFillProperties->maFillColor.setSchemeClr(XML_lt1);
+
+ sal_Int32 accent_val;
+
+ if (!accent_name.isEmpty())
+ accent_val = tokens[mStyleIdMap[styleId].second];
+ else
+ accent_val = XML_dk1;
+
+ pWholeTblLeftBorder->maLineFill.maFillColor.setSchemeClr(accent_val);
+ pWholeTblRightBorder->maLineFill.maFillColor.setSchemeClr(accent_val);
+ pWholeTblTopBorder->maLineFill.maFillColor.setSchemeClr(accent_val);
+ pWholeTblBottomBorder->maLineFill.maFillColor.setSchemeClr(accent_val);
+ pWholeTblInsideHBorder->maLineFill.maFillColor.setSchemeClr(accent_val);
+
+ pFirstRowFillProperties->maFillColor.setSchemeClr(accent_val);
+ pBand1HFillProperties->maFillColor.setSchemeClr(accent_val);
+ pBand1VFillProperties->maFillColor.setSchemeClr(accent_val);
+
+ pLastRowTopBorder->maLineFill.maFillColor.setSchemeClr(accent_val);
+
+ pBand1HFillProperties->maFillColor.addTransformation(XML_tint, 20000);
+ pBand1VFillProperties->maFillColor.addTransformation(XML_tint, 20000);
+ }
+ else if (style_name == "Medium-Style-2")
+ {
+ setBorderLineType(pFirstRowBottomBorder, XML_solidFill);
+ setBorderLineType(pLastRowTopBorder, XML_solidFill);
+ setBorderLineType(pWholeTblLeftBorder, XML_solidFill);
+ setBorderLineType(pWholeTblRightBorder, XML_solidFill);
+ setBorderLineType(pWholeTblTopBorder, XML_solidFill);
+ setBorderLineType(pWholeTblBottomBorder, XML_solidFill);
+ setBorderLineType(pWholeTblInsideHBorder, XML_solidFill);
+ setBorderLineType(pWholeTblInsideVBorder, XML_solidFill);
+
+ wholeTblTextColor.setSchemeClr(XML_dk1);
+ firstRowTextColor.setSchemeClr(XML_lt1);
+ lastRowTextColor.setSchemeClr(XML_lt1);
+ firstColTextColor.setSchemeClr(XML_lt1);
+ lastColTextColor.setSchemeClr(XML_lt1);
+ pFirstRowBottomBorder->maLineFill.maFillColor.setSchemeClr(XML_lt1);
+ pLastRowTopBorder->maLineFill.maFillColor.setSchemeClr(XML_lt1);
+
+ pWholeTblLeftBorder->maLineFill.maFillColor.setSchemeClr(XML_lt1);
+ pWholeTblRightBorder->maLineFill.maFillColor.setSchemeClr(XML_lt1);
+ pWholeTblTopBorder->maLineFill.maFillColor.setSchemeClr(XML_lt1);
+ pWholeTblBottomBorder->maLineFill.maFillColor.setSchemeClr(XML_lt1);
+ pWholeTblInsideHBorder->maLineFill.maFillColor.setSchemeClr(XML_lt1);
+ pWholeTblInsideVBorder->maLineFill.maFillColor.setSchemeClr(XML_lt1);
+
+ sal_Int32 accent_val;
+
+ if (!accent_name.isEmpty())
+ accent_val = tokens[mStyleIdMap[styleId].second];
+ else
+ accent_val = XML_dk1;
+
+ pWholeTblFillProperties->maFillColor.setSchemeClr(accent_val);
+ pFirstRowFillProperties->maFillColor.setSchemeClr(accent_val);
+ pLastRowFillProperties->maFillColor.setSchemeClr(accent_val);
+ pFirstColFillProperties->maFillColor.setSchemeClr(accent_val);
+ pLastColFillProperties->maFillColor.setSchemeClr(accent_val);
+ pBand1HFillProperties->maFillColor.setSchemeClr(accent_val);
+ pBand1VFillProperties->maFillColor.setSchemeClr(accent_val);
+
+ pWholeTblFillProperties->maFillColor.addTransformation(XML_tint, 20000);
+ pBand1HFillProperties->maFillColor.addTransformation(XML_tint, 40000);
+ pBand1VFillProperties->maFillColor.addTransformation(XML_tint, 40000);
+ }
+ else if (style_name == "Medium-Style-3")
+ {
+ setBorderLineType(pWholeTblTopBorder, XML_solidFill);
+ setBorderLineType(pWholeTblBottomBorder, XML_solidFill);
+ setBorderLineType(pFirstRowBottomBorder, XML_solidFill);
+ setBorderLineType(pLastRowTopBorder, XML_solidFill);
+
+ wholeTblTextColor.setSchemeClr(XML_dk1);
+ firstColTextColor.setSchemeClr(XML_lt1);
+ lastColTextColor.setSchemeClr(XML_lt1);
+ pWholeTblTopBorder->maLineFill.maFillColor.setSchemeClr(XML_dk1);
+ pWholeTblBottomBorder->maLineFill.maFillColor.setSchemeClr(XML_dk1);
+ pWholeTblFillProperties->maFillColor.setSchemeClr(XML_lt1);
+ pLastRowFillProperties->maFillColor.setSchemeClr(XML_lt1);
+ pBand1HFillProperties->maFillColor.setSchemeClr(XML_dk1);
+ pBand1VFillProperties->maFillColor.setSchemeClr(XML_dk1);
+
+ firstRowTextColor.setSchemeClr(XML_lt1);
+ pFirstRowBottomBorder->maLineFill.maFillColor.setSchemeClr(XML_dk1);
+ pLastRowTopBorder->maLineFill.maFillColor.setSchemeClr(XML_dk1);
+
+ sal_Int32 accent_val;
+
+ if (!accent_name.isEmpty())
+ accent_val = tokens[mStyleIdMap[styleId].second];
+ else
+ accent_val = XML_dk1;
+
+ pFirstRowFillProperties->maFillColor.setSchemeClr(accent_val);
+ pFirstColFillProperties->maFillColor.setSchemeClr(accent_val);
+ pLastColFillProperties->maFillColor.setSchemeClr(accent_val);
+
+ pBand1HFillProperties->maFillColor.addTransformation(XML_tint, 20000);
+ pBand1VFillProperties->maFillColor.addTransformation(XML_tint, 20000);
+ }
+ else if (style_name == "Medium-Style-4")
+ {
+ setBorderLineType(pWholeTblLeftBorder, XML_solidFill);
+ setBorderLineType(pWholeTblRightBorder, XML_solidFill);
+ setBorderLineType(pWholeTblTopBorder, XML_solidFill);
+ setBorderLineType(pWholeTblBottomBorder, XML_solidFill);
+ setBorderLineType(pWholeTblInsideHBorder, XML_solidFill);
+ setBorderLineType(pWholeTblInsideVBorder, XML_solidFill);
+
+ wholeTblTextColor.setSchemeClr(XML_dk1);
+ pLastRowTopBorder->maLineFill.maFillColor.setSchemeClr(XML_dk1);
+ pLastRowFillProperties->maFillColor.setSchemeClr(XML_dk1);
+
+ sal_Int32 accent_val;
+
+ if (!accent_name.isEmpty())
+ accent_val = tokens[mStyleIdMap[styleId].second];
+ else
+ accent_val = XML_dk1;
+
+ pWholeTblLeftBorder->maLineFill.maFillColor.setSchemeClr(accent_val);
+ pWholeTblRightBorder->maLineFill.maFillColor.setSchemeClr(accent_val);
+ pWholeTblTopBorder->maLineFill.maFillColor.setSchemeClr(accent_val);
+ pWholeTblBottomBorder->maLineFill.maFillColor.setSchemeClr(accent_val);
+ pWholeTblInsideHBorder->maLineFill.maFillColor.setSchemeClr(accent_val);
+ pWholeTblInsideVBorder->maLineFill.maFillColor.setSchemeClr(accent_val);
+ pWholeTblFillProperties->maFillColor.setSchemeClr(accent_val);
+
+ firstRowTextColor.setSchemeClr(accent_val);
+ pFirstRowFillProperties->maFillColor.setSchemeClr(accent_val);
+ pBand1HFillProperties->maFillColor.setSchemeClr(accent_val);
+ pBand1VFillProperties->maFillColor.setSchemeClr(accent_val);
+
+ pFirstRowFillProperties->maFillColor.addTransformation(XML_tint, 20000);
+ pLastRowFillProperties->maFillColor.addTransformation(XML_tint, 20000);
+ pWholeTblFillProperties->maFillColor.addTransformation(XML_tint, 20000);
+ pBand1HFillProperties->maFillColor.addTransformation(XML_tint, 40000);
+ pBand1VFillProperties->maFillColor.addTransformation(XML_tint, 40000);
+ }
+ else if (style_name == "Dark-Style-1")
+ {
+ setBorderLineType(pFirstRowBottomBorder, XML_solidFill);
+ setBorderLineType(pFirstColRightBorder, XML_solidFill);
+ setBorderLineType(pLastColLeftBorder, XML_solidFill);
+ setBorderLineType(pLastRowTopBorder, XML_solidFill);
+
+ sal_Int32 transform_val;
+ wholeTblTextColor.setSchemeClr(XML_dk1);
+ firstRowTextColor.setSchemeClr(XML_lt1);
+ pFirstRowBottomBorder->maLineFill.maFillColor.setSchemeClr(XML_lt1);
+ pFirstColRightBorder->maLineFill.maFillColor.setSchemeClr(XML_lt1);
+ pLastColLeftBorder->maLineFill.maFillColor.setSchemeClr(XML_lt1);
+ pFirstRowFillProperties->maFillColor.setSchemeClr(XML_dk1);
+ pLastRowTopBorder->maLineFill.maFillColor.setSchemeClr(XML_lt1);
+
+ sal_Int32 accent_val;
+
+ if (!accent_name.isEmpty())
+ {
+ accent_val = tokens[mStyleIdMap[styleId].second];
+ transform_val = XML_shade;
+ }
+ else
+ {
+ accent_val = XML_dk1;
+ transform_val = XML_tint;
+ }
+
+ pWholeTblFillProperties->maFillColor.setSchemeClr(accent_val);
+ pLastRowFillProperties->maFillColor.setSchemeClr(accent_val);
+ pFirstColFillProperties->maFillColor.setSchemeClr(accent_val);
+ pLastColFillProperties->maFillColor.setSchemeClr(accent_val);
+ pBand1HFillProperties->maFillColor.setSchemeClr(accent_val);
+ pBand1VFillProperties->maFillColor.setSchemeClr(accent_val);
+
+ pWholeTblFillProperties->maFillColor.addTransformation(transform_val, 20000);
+ pBand1HFillProperties->maFillColor.addTransformation(transform_val, 40000);
+ pBand1VFillProperties->maFillColor.addTransformation(transform_val, 40000);
+ pLastColFillProperties->maFillColor.addTransformation(transform_val, 60000);
+ pFirstColFillProperties->maFillColor.addTransformation(transform_val, 60000);
+ }
+ else if (style_name == "Dark-Style-2")
+ {
+ setBorderLineType(pLastRowTopBorder, XML_solidFill);
+
+ wholeTblTextColor.setSchemeClr(XML_dk1);
+ firstRowTextColor.setSchemeClr(XML_lt1);
+
+ pLastRowTopBorder->maLineFill.maFillColor.setSchemeClr(XML_dk1);
+
+ if (accent_name.isEmpty())
+ pFirstRowFillProperties->maFillColor.setSchemeClr(XML_dk1);
+ else if (accent_name == "Accent1")
+ pFirstRowFillProperties->maFillColor.setSchemeClr(XML_accent2);
+ else if (accent_name == "Accent3")
+ pFirstRowFillProperties->maFillColor.setSchemeClr(XML_accent4);
+ else if (accent_name == "Accent5")
+ pFirstRowFillProperties->maFillColor.setSchemeClr(XML_accent6);
+
+ sal_Int32 accent_val;
+
+ if (!accent_name.isEmpty())
+ accent_val = tokens[mStyleIdMap[styleId].second];
+ else
+ accent_val = XML_dk1;
+
+ pWholeTblFillProperties->maFillColor.setSchemeClr(accent_val);
+ pLastRowFillProperties->maFillColor.setSchemeClr(accent_val);
+ pBand1HFillProperties->maFillColor.setSchemeClr(accent_val);
+ pBand1VFillProperties->maFillColor.setSchemeClr(accent_val);
+
+ pWholeTblFillProperties->maFillColor.addTransformation(XML_tint, 20000);
+ pBand1HFillProperties->maFillColor.addTransformation(XML_tint, 40000);
+ pBand1VFillProperties->maFillColor.addTransformation(XML_tint, 40000);
+ pLastRowFillProperties->maFillColor.addTransformation(XML_tint, 20000);
+ }
+
+ // End to handle all style groups.
+
+ // Create a TableStyle from handled properties.
+
+ pTableStyle->getWholeTbl().getTextColor() = wholeTblTextColor;
+ pTableStyle->getFirstRow().getTextColor() = firstRowTextColor;
+ pTableStyle->getFirstCol().getTextColor() = firstColTextColor;
+ pTableStyle->getLastRow().getTextColor() = lastRowTextColor;
+ pTableStyle->getLastCol().getTextColor() = lastColTextColor;
+ pTableStyle->getBand1H().getTextColor() = band1HTextColor;
+ pTableStyle->getBand1V().getTextColor() = band1VTextColor;
+ pTableStyle->getBand2H().getTextColor() = band2HTextColor;
+ pTableStyle->getBand2V().getTextColor() = band2VTextColor;
+
+ pTableStyle->getBackgroundFillProperties() = pTblBgFillProperties;
+ pTableStyle->getWholeTbl().getFillProperties() = pWholeTblFillProperties;
+ pTableStyle->getFirstRow().getFillProperties() = pFirstRowFillProperties;
+ pTableStyle->getFirstCol().getFillProperties() = pFirstColFillProperties;
+ pTableStyle->getLastRow().getFillProperties() = pLastRowFillProperties;
+ pTableStyle->getLastCol().getFillProperties() = pLastColFillProperties;
+ pTableStyle->getBand1H().getFillProperties() = pBand1HFillProperties;
+ pTableStyle->getBand1V().getFillProperties() = pBand1VFillProperties;
+ pTableStyle->getBand2H().getFillProperties() = pBand2HFillProperties;
+ pTableStyle->getBand2V().getFillProperties() = pBand2VFillProperties;
+
+ insertBorderLine(pTableStyle->getWholeTbl(), XML_left, pWholeTblLeftBorder);
+ insertBorderLine(pTableStyle->getWholeTbl(), XML_right, pWholeTblRightBorder);
+ insertBorderLine(pTableStyle->getWholeTbl(), XML_top, pWholeTblTopBorder);
+ insertBorderLine(pTableStyle->getWholeTbl(), XML_bottom, pWholeTblBottomBorder);
+ insertBorderLine(pTableStyle->getWholeTbl(), XML_insideV, pWholeTblInsideVBorder);
+ insertBorderLine(pTableStyle->getWholeTbl(), XML_insideH, pWholeTblInsideHBorder);
+
+ insertBorderLine(pTableStyle->getFirstRow(), XML_left, pFirstRowLeftBorder);
+ insertBorderLine(pTableStyle->getFirstRow(), XML_right, pFirstRowRightBorder);
+ insertBorderLine(pTableStyle->getFirstRow(), XML_top, pFirstRowTopBorder);
+ insertBorderLine(pTableStyle->getFirstRow(), XML_bottom, pFirstRowBottomBorder);
+ insertBorderLine(pTableStyle->getFirstRow(), XML_insideV, pFirstRowInsideVBorder);
+ insertBorderLine(pTableStyle->getFirstRow(), XML_insideH, pFirstRowInsideHBorder);
+
+ insertBorderLine(pTableStyle->getFirstCol(), XML_left, pFirstColLeftBorder);
+ insertBorderLine(pTableStyle->getFirstCol(), XML_right, pFirstColRightBorder);
+ insertBorderLine(pTableStyle->getFirstCol(), XML_top, pFirstColTopBorder);
+ insertBorderLine(pTableStyle->getFirstCol(), XML_bottom, pFirstColBottomBorder);
+ insertBorderLine(pTableStyle->getFirstCol(), XML_insideV, pFirstColInsideVBorder);
+ insertBorderLine(pTableStyle->getFirstCol(), XML_insideH, pFirstColInsideHBorder);
+
+ insertBorderLine(pTableStyle->getLastRow(), XML_left, pLastRowLeftBorder);
+ insertBorderLine(pTableStyle->getLastRow(), XML_right, pLastRowRightBorder);
+ insertBorderLine(pTableStyle->getLastRow(), XML_top, pLastRowTopBorder);
+ insertBorderLine(pTableStyle->getLastRow(), XML_bottom, pLastRowBottomBorder);
+ insertBorderLine(pTableStyle->getLastRow(), XML_insideV, pLastRowInsideVBorder);
+ insertBorderLine(pTableStyle->getLastRow(), XML_insideH, pLastRowInsideHBorder);
+
+ insertBorderLine(pTableStyle->getLastCol(), XML_left, pLastColLeftBorder);
+ insertBorderLine(pTableStyle->getLastCol(), XML_right, pLastColRightBorder);
+ insertBorderLine(pTableStyle->getLastCol(), XML_top, pLastColTopBorder);
+ insertBorderLine(pTableStyle->getLastCol(), XML_bottom, pLastColBottomBorder);
+ insertBorderLine(pTableStyle->getLastCol(), XML_insideV, pLastColInsideVBorder);
+ insertBorderLine(pTableStyle->getLastCol(), XML_insideH, pLastColInsideHBorder);
+
+ insertBorderLine(pTableStyle->getBand1H(), XML_left, pBand1HLeftBorder);
+ insertBorderLine(pTableStyle->getBand1H(), XML_right, pBand1HRightBorder);
+ insertBorderLine(pTableStyle->getBand1H(), XML_top, pBand1HTopBorder);
+ insertBorderLine(pTableStyle->getBand1H(), XML_bottom, pBand1HBottomBorder);
+ insertBorderLine(pTableStyle->getBand1H(), XML_insideV, pBand1HInsideVBorder);
+ insertBorderLine(pTableStyle->getBand1H(), XML_insideH, pBand1HInsideHBorder);
+
+ insertBorderLine(pTableStyle->getBand1V(), XML_left, pBand1VLeftBorder);
+ insertBorderLine(pTableStyle->getBand1V(), XML_right, pBand1VRightBorder);
+ insertBorderLine(pTableStyle->getBand1V(), XML_top, pBand1VTopBorder);
+ insertBorderLine(pTableStyle->getBand1V(), XML_bottom, pBand1VBottomBorder);
+ insertBorderLine(pTableStyle->getBand1V(), XML_insideV, pBand1VInsideVBorder);
+ insertBorderLine(pTableStyle->getBand1V(), XML_insideH, pBand1VInsideHBorder);
+
+ insertBorderLine(pTableStyle->getBand2H(), XML_left, pBand2HLeftBorder);
+ insertBorderLine(pTableStyle->getBand2H(), XML_right, pBand2HRightBorder);
+ insertBorderLine(pTableStyle->getBand2H(), XML_top, pBand2HTopBorder);
+ insertBorderLine(pTableStyle->getBand2H(), XML_bottom, pBand2HBottomBorder);
+ insertBorderLine(pTableStyle->getBand2H(), XML_insideV, pBand2HInsideVBorder);
+ insertBorderLine(pTableStyle->getBand2H(), XML_insideH, pBand2HInsideHBorder);
+
+ insertBorderLine(pTableStyle->getBand2V(), XML_left, pBand2VLeftBorder);
+ insertBorderLine(pTableStyle->getBand2V(), XML_right, pBand2VRightBorder);
+ insertBorderLine(pTableStyle->getBand2V(), XML_top, pBand2VTopBorder);
+ insertBorderLine(pTableStyle->getBand2V(), XML_bottom, pBand2VBottomBorder);
+ insertBorderLine(pTableStyle->getBand2V(), XML_insideV, pBand2VInsideVBorder);
+ insertBorderLine(pTableStyle->getBand2V(), XML_insideH, pBand2VInsideHBorder);
+
+ return pTableStyle;
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/oox/source/drawingml/table/tablebackgroundstylecontext.cxx b/oox/source/drawingml/table/tablebackgroundstylecontext.cxx
new file mode 100644
index 000000000..ee48a8358
--- /dev/null
+++ b/oox/source/drawingml/table/tablebackgroundstylecontext.cxx
@@ -0,0 +1,74 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ *
+ * This file incorporates work covered by the following license notice:
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed
+ * with this work for additional information regarding copyright
+ * ownership. The ASF licenses this file to you under the Apache
+ * License, Version 2.0 (the "License"); you may not use this file
+ * except in compliance with the License. You may obtain a copy of
+ * the License at http://www.apache.org/licenses/LICENSE-2.0 .
+ */
+
+
+#include <drawingml/table/tablebackgroundstylecontext.hxx>
+#include <drawingml/misccontexts.hxx>
+#include <oox/helper/attributelist.hxx>
+#include <oox/token/namespaces.hxx>
+#include <oox/token/tokens.hxx>
+
+using namespace ::oox::core;
+using namespace ::com::sun::star;
+using namespace ::com::sun::star::uno;
+using namespace ::com::sun::star::xml::sax;
+
+namespace oox::drawingml::table {
+
+TableBackgroundStyleContext::TableBackgroundStyleContext( ContextHandler2Helper const & rParent, TableStyle& rTableStyle )
+: ContextHandler2( rParent )
+, mrTableStyle( rTableStyle )
+{
+}
+
+TableBackgroundStyleContext::~TableBackgroundStyleContext()
+{
+}
+
+ContextHandlerRef
+TableBackgroundStyleContext::onCreateContext( ::sal_Int32 aElementToken, const AttributeList& rAttribs )
+{
+ switch( aElementToken )
+ {
+ // EG_ThemeableFillStyle (choice)
+ case A_TOKEN( fill ): // CT_FillProperties
+ {
+ std::shared_ptr< FillProperties >& rxFillProperties = mrTableStyle.getBackgroundFillProperties();
+ rxFillProperties = std::make_shared<FillProperties>();
+ return new FillPropertiesContext( *this, *rxFillProperties );
+ }
+ case A_TOKEN( fillRef ): // CT_StyleMatrixReference
+ {
+ ShapeStyleRef& rStyleRef = mrTableStyle.getBackgroundFillStyleRef();
+ rStyleRef.mnThemedIdx = rAttribs.getInteger( XML_idx, 0 );
+ return new ColorContext( *this, rStyleRef.maPhClr );
+ }
+ // EG_ThemeableEffectStyle (choice)
+ case A_TOKEN( effect ): // CT_EffectProperties
+ break;
+ case A_TOKEN( effectRef ): // CT_StyleMatrixReference
+ break;
+ }
+
+ return this;
+}
+
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/oox/source/drawingml/table/tablecell.cxx b/oox/source/drawingml/table/tablecell.cxx
new file mode 100644
index 000000000..19347db21
--- /dev/null
+++ b/oox/source/drawingml/table/tablecell.cxx
@@ -0,0 +1,578 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ *
+ * This file incorporates work covered by the following license notice:
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed
+ * with this work for additional information regarding copyright
+ * ownership. The ASF licenses this file to you under the Apache
+ * License, Version 2.0 (the "License"); you may not use this file
+ * except in compliance with the License. You may obtain a copy of
+ * the License at http://www.apache.org/licenses/LICENSE-2.0 .
+ */
+
+#include <drawingml/table/tablecell.hxx>
+#include <drawingml/table/tableproperties.hxx>
+#include <basegfx/color/bcolor.hxx>
+#include <oox/drawingml/shapepropertymap.hxx>
+#include <drawingml/textbody.hxx>
+#include <drawingml/textcharacterproperties.hxx>
+#include <drawingml/textparagraph.hxx>
+#include <oox/drawingml/theme.hxx>
+#include <oox/core/xmlfilterbase.hxx>
+#include <oox/helper/propertyset.hxx>
+#include <oox/token/properties.hxx>
+#include <oox/token/tokens.hxx>
+#include <tools/color.hxx>
+#include <com/sun/star/table/BorderLineStyle.hpp>
+#include <com/sun/star/table/BorderLine2.hpp>
+#include <com/sun/star/drawing/TextVerticalAdjust.hpp>
+#include <com/sun/star/text/XText.hpp>
+#include <com/sun/star/text/WritingMode.hpp>
+
+using namespace ::oox::core;
+using namespace ::com::sun::star;
+using namespace ::com::sun::star::uno;
+using namespace ::com::sun::star::beans;
+using ::com::sun::star::table::BorderLine2;
+
+namespace oox::drawingml::table {
+
+TableCell::TableCell()
+: mpTextBody( std::make_shared<TextBody>() )
+, mnRowSpan ( 1 )
+, mnGridSpan( 1 )
+, mbhMerge( false )
+, mbvMerge( false )
+, mnMarL( 91440 )
+, mnMarR( 91440 )
+, mnMarT( 45720 )
+, mnMarB( 45720 )
+, mnVertToken( XML_horz )
+, mnAnchorToken( XML_t )
+, mbAnchorCtr( false )
+, mnHorzOverflowToken( XML_clip )
+{
+}
+
+static void applyLineAttributes( const ::oox::core::XmlFilterBase& rFilterBase,
+ Reference< XPropertySet > const & rxPropSet, oox::drawingml::LineProperties const & rLineProperties,
+ sal_Int32 nPropId )
+{
+ BorderLine2 aBorderLine;
+ if ( rLineProperties.maLineFill.moFillType.differsFrom( XML_noFill ))
+ {
+ Color aColor = rLineProperties.maLineFill.getBestSolidColor();
+ aBorderLine.Color = sal_Int32(aColor.getColor( rFilterBase.getGraphicHelper() ));
+ aBorderLine.OuterLineWidth = static_cast< sal_Int16 >( GetCoordinate( rLineProperties.moLineWidth.get( 0 ) ) / 4 );
+ aBorderLine.InnerLineWidth = static_cast< sal_Int16 >( GetCoordinate( rLineProperties.moLineWidth.get( 0 ) ) / 4 );
+ aBorderLine.LineWidth = static_cast< sal_Int16 >( GetCoordinate( rLineProperties.moLineWidth.get( 0 ) ) / 2 );
+ aBorderLine.LineDistance = 0;
+ }
+ else
+ {
+ aBorderLine.Color = sal_Int32( COL_AUTO );
+ aBorderLine.OuterLineWidth = static_cast< sal_Int16 >( GetCoordinate( rLineProperties.moLineWidth.get( 0 ) ) / 4 );
+ aBorderLine.InnerLineWidth = static_cast< sal_Int16 >( GetCoordinate( rLineProperties.moLineWidth.get( 0 ) ) / 4 );
+ aBorderLine.LineWidth = static_cast< sal_Int16 >( GetCoordinate( rLineProperties.moLineWidth.get( 0 ) ) / 2 );
+ aBorderLine.LineDistance = 0;
+ }
+
+ if ( rLineProperties.moPresetDash.has() )
+ {
+ switch ( rLineProperties.moPresetDash.get() )
+ {
+ case XML_dot:
+ case XML_sysDot:
+ aBorderLine.LineStyle = ::table::BorderLineStyle::DOTTED;
+ break;
+ case XML_dash:
+ case XML_lgDash:
+ case XML_sysDash:
+ aBorderLine.LineStyle = ::table::BorderLineStyle::DASHED;
+ break;
+ case XML_dashDot:
+ case XML_lgDashDot:
+ case XML_sysDashDot:
+ aBorderLine.LineStyle = ::table::BorderLineStyle::DASH_DOT;
+ break;
+ case XML_lgDashDotDot:
+ case XML_sysDashDotDot:
+ aBorderLine.LineStyle = ::table::BorderLineStyle::DASH_DOT_DOT;
+ break;
+ case XML_solid:
+ aBorderLine.LineStyle = ::table::BorderLineStyle::SOLID;
+ break;
+ default:
+ aBorderLine.LineStyle = ::table::BorderLineStyle::DASHED;
+ break;
+ }
+ }
+ else if ( !rLineProperties.maCustomDash.empty() )
+ {
+ aBorderLine.LineStyle = ::table::BorderLineStyle::DASHED;
+ }
+ else
+ {
+ aBorderLine.LineStyle = ::table::BorderLineStyle::NONE;
+ }
+
+ PropertySet aPropSet( rxPropSet );
+ aPropSet.setProperty( nPropId, aBorderLine );
+}
+
+static void applyBorder( const ::oox::core::XmlFilterBase& rFilterBase, TableStylePart& rTableStylePart, sal_Int32 nLineType, oox::drawingml::LineProperties& rLineProperties )
+{
+ std::map < sal_Int32, ::oox::drawingml::LinePropertiesPtr >& rPartLineBorders( rTableStylePart.getLineBorders() );
+ ::oox::drawingml::ShapeStyleRef& rLineStyleRef = rTableStylePart.getStyleRefs()[ nLineType ];
+ std::map < sal_Int32, ::oox::drawingml::LinePropertiesPtr >::const_iterator aIter( rPartLineBorders.find( nLineType ) );
+ if ( ( aIter != rPartLineBorders.end() ) && aIter->second )
+ rLineProperties.assignUsed( *aIter->second );
+ else if (rLineStyleRef.mnThemedIdx != 0)
+ {
+ if (const Theme* pTheme = rFilterBase.getCurrentTheme())
+ {
+ rLineProperties.assignUsed( *pTheme->getLineStyle(rLineStyleRef.mnThemedIdx) );
+ ::Color nPhClr = rLineStyleRef.maPhClr.getColor( rFilterBase.getGraphicHelper() );
+ rLineProperties.maLineFill.maFillColor.setSrgbClr( nPhClr );
+ }
+ }
+}
+
+static void applyTableStylePart( const ::oox::core::XmlFilterBase& rFilterBase,
+ oox::drawingml::FillProperties& rFillProperties,
+ TextCharacterProperties& aTextCharProps,
+ oox::drawingml::LineProperties& rLeftBorder,
+ oox::drawingml::LineProperties& rRightBorder,
+ oox::drawingml::LineProperties& rTopBorder,
+ oox::drawingml::LineProperties& rBottomBorder,
+ oox::drawingml::LineProperties& rInsideHBorder,
+ oox::drawingml::LineProperties& rInsideVBorder,
+ oox::drawingml::LineProperties& rTopLeftToBottomRightBorder,
+ oox::drawingml::LineProperties& rBottomLeftToTopRightBorder,
+ TableStylePart& rTableStylePart,
+ bool bIsWholeTable = false,
+ sal_Int32 nCol = 0,
+ sal_Int32 nMaxCol = 0,
+ sal_Int32 nRow = 0,
+ sal_Int32 nMaxRow = 0)
+{
+ ::oox::drawingml::FillPropertiesPtr& rPartFillPropertiesPtr( rTableStylePart.getFillProperties() );
+ if ( rPartFillPropertiesPtr )
+ rFillProperties.assignUsed( *rPartFillPropertiesPtr );
+ else
+ {
+ ::oox::drawingml::ShapeStyleRef& rFillStyleRef = rTableStylePart.getStyleRefs()[ XML_fillRef ];
+ const Theme* pTheme = rFilterBase.getCurrentTheme();
+ if (pTheme && rFillStyleRef.mnThemedIdx != 0 )
+ {
+ rFillProperties.assignUsed( *pTheme->getFillStyle( rFillStyleRef.mnThemedIdx ) );
+ ::Color nPhClr = rFillStyleRef.maPhClr.getColor( rFilterBase.getGraphicHelper() );
+ rFillProperties.maFillColor.setSrgbClr( nPhClr );
+ }
+ }
+
+ // Left, right, top and bottom side of the whole table should be mean outer frame of the whole table.
+ // Without this check it means left top right and bottom of whole cells of whole table.
+ if (bIsWholeTable)
+ {
+ if (nCol == 0)
+ applyBorder( rFilterBase, rTableStylePart, XML_left, rLeftBorder );
+ if (nCol == nMaxCol)
+ applyBorder( rFilterBase, rTableStylePart, XML_right, rRightBorder );
+ if (nRow == 0)
+ applyBorder( rFilterBase, rTableStylePart, XML_top, rTopBorder );
+ if (nRow == nMaxRow)
+ applyBorder( rFilterBase, rTableStylePart, XML_bottom, rBottomBorder );
+
+ applyBorder( rFilterBase, rTableStylePart, XML_insideH, rInsideHBorder );
+ applyBorder( rFilterBase, rTableStylePart, XML_insideV, rInsideVBorder );
+ applyBorder( rFilterBase, rTableStylePart, XML_tl2br, rTopLeftToBottomRightBorder );
+ applyBorder( rFilterBase, rTableStylePart, XML_tr2bl, rBottomLeftToTopRightBorder );
+ }
+ else
+ {
+ applyBorder( rFilterBase, rTableStylePart, XML_left, rLeftBorder );
+ applyBorder( rFilterBase, rTableStylePart, XML_right, rRightBorder );
+ applyBorder( rFilterBase, rTableStylePart, XML_top, rTopBorder );
+ applyBorder( rFilterBase, rTableStylePart, XML_bottom, rBottomBorder );
+ applyBorder( rFilterBase, rTableStylePart, XML_tl2br, rTopLeftToBottomRightBorder );
+ applyBorder( rFilterBase, rTableStylePart, XML_tr2bl, rBottomLeftToTopRightBorder );
+ applyBorder( rFilterBase, rTableStylePart, XML_insideH, rInsideHBorder );
+ applyBorder( rFilterBase, rTableStylePart, XML_insideV, rInsideVBorder );
+ }
+
+ aTextCharProps.maLatinFont = rTableStylePart.getLatinFont();
+ aTextCharProps.maAsianFont = rTableStylePart.getAsianFont();
+ aTextCharProps.maComplexFont = rTableStylePart.getComplexFont();
+ aTextCharProps.maSymbolFont = rTableStylePart.getSymbolFont();
+ if ( rTableStylePart.getTextColor().isUsed() )
+ {
+ aTextCharProps.maFillProperties.maFillColor = rTableStylePart.getTextColor();
+ aTextCharProps.maFillProperties.moFillType.set(XML_solidFill);
+ }
+ if( rTableStylePart.getTextBoldStyle() )
+ aTextCharProps.moBold = *rTableStylePart.getTextBoldStyle();
+ if( rTableStylePart.getTextItalicStyle() )
+ aTextCharProps.moItalic = *rTableStylePart.getTextItalicStyle();
+}
+
+static void applyTableCellProperties( const Reference < css::table::XCell >& rxCell, const TableCell& rTableCell )
+{
+ Reference< XPropertySet > xPropSet( rxCell, UNO_QUERY_THROW );
+ xPropSet->setPropertyValue( "TextUpperDistance", Any( static_cast< sal_Int32 >( rTableCell.getTopMargin() / 360 ) ) );
+ xPropSet->setPropertyValue( "TextRightDistance", Any( static_cast< sal_Int32 >( rTableCell.getRightMargin() / 360 ) ) );
+ xPropSet->setPropertyValue( "TextLeftDistance", Any( static_cast< sal_Int32 >( rTableCell.getLeftMargin() / 360 ) ) );
+ xPropSet->setPropertyValue( "TextLowerDistance", Any( static_cast< sal_Int32 >( rTableCell.getBottomMargin() / 360 ) ) );
+
+ drawing::TextVerticalAdjust eVA;
+ switch( rTableCell.getAnchorToken() )
+ {
+ case XML_ctr: eVA = drawing::TextVerticalAdjust_CENTER; break;
+ case XML_b: eVA = drawing::TextVerticalAdjust_BOTTOM; break;
+ case XML_just:
+ case XML_dist:
+ default:
+ case XML_t: eVA = drawing::TextVerticalAdjust_TOP; break;
+ }
+ xPropSet->setPropertyValue( "TextVerticalAdjust", Any( eVA ) );
+}
+
+void TableCell::pushToXCell( const ::oox::core::XmlFilterBase& rFilterBase, const ::oox::drawingml::TextListStylePtr& pMasterTextListStyle,
+ const css::uno::Reference < css::table::XCell >& rxCell, const TableProperties& rTableProperties,
+ const TableStyle& rTableStyle, sal_Int32 nColumn, sal_Int32 nMaxColumn, sal_Int32 nRow, sal_Int32 nMaxRow )
+{
+ TableStyle& rTable( const_cast< TableStyle& >( rTableStyle ) );
+ TableProperties& rProperties( const_cast< TableProperties& >( rTableProperties ) );
+
+ Reference< text::XText > xText( rxCell, UNO_QUERY_THROW );
+ Reference< text::XTextCursor > xAt = xText->createTextCursor();
+
+ applyTableCellProperties( rxCell, *this );
+ TextCharacterProperties aTextStyleProps;
+ xAt->gotoStart( true );
+ xAt->gotoEnd( true );
+
+ Reference< XPropertySet > xPropSet( rxCell, UNO_QUERY_THROW );
+ oox::drawingml::FillProperties aFillProperties;
+ oox::drawingml::LineProperties aLinePropertiesLeft;
+ oox::drawingml::LineProperties aLinePropertiesRight;
+ oox::drawingml::LineProperties aLinePropertiesTop;
+ oox::drawingml::LineProperties aLinePropertiesBottom;
+ oox::drawingml::LineProperties aLinePropertiesInsideH;
+ oox::drawingml::LineProperties aLinePropertiesInsideV;
+ oox::drawingml::LineProperties aLinePropertiesTopLeftToBottomRight;
+ oox::drawingml::LineProperties aLinePropertiesBottomLeftToTopRight;
+
+ applyTableStylePart( rFilterBase, aFillProperties, aTextStyleProps,
+ aLinePropertiesLeft,
+ aLinePropertiesRight,
+ aLinePropertiesTop,
+ aLinePropertiesBottom,
+ aLinePropertiesInsideH,
+ aLinePropertiesInsideV,
+ aLinePropertiesTopLeftToBottomRight,
+ aLinePropertiesBottomLeftToTopRight,
+ rTable.getWholeTbl(),
+ true,
+ nColumn,
+ nMaxColumn,
+ nRow,
+ nMaxRow );
+
+ if ( rProperties.isFirstRow() && ( nRow == 0 ) )
+ {
+ applyTableStylePart( rFilterBase, aFillProperties, aTextStyleProps,
+ aLinePropertiesLeft,
+ aLinePropertiesRight,
+ aLinePropertiesTop,
+ aLinePropertiesBottom,
+ aLinePropertiesInsideH,
+ aLinePropertiesInsideV,
+ aLinePropertiesTopLeftToBottomRight,
+ aLinePropertiesBottomLeftToTopRight,
+ rTable.getFirstRow() );
+ }
+ if ( rProperties.isLastRow() && ( nRow == nMaxRow ) )
+ {
+ applyTableStylePart( rFilterBase, aFillProperties, aTextStyleProps,
+ aLinePropertiesLeft,
+ aLinePropertiesRight,
+ aLinePropertiesTop,
+ aLinePropertiesBottom,
+ aLinePropertiesInsideH,
+ aLinePropertiesInsideV,
+ aLinePropertiesTopLeftToBottomRight,
+ aLinePropertiesBottomLeftToTopRight,
+ rTable.getLastRow() );
+ }
+ if ( rProperties.isFirstCol() && ( nColumn == 0 ) )
+ {
+ applyTableStylePart( rFilterBase, aFillProperties, aTextStyleProps,
+ aLinePropertiesLeft,
+ aLinePropertiesRight,
+ aLinePropertiesTop,
+ aLinePropertiesBottom,
+ aLinePropertiesInsideH,
+ aLinePropertiesInsideV,
+ aLinePropertiesTopLeftToBottomRight,
+ aLinePropertiesBottomLeftToTopRight,
+ rTable.getFirstCol() );
+ }
+ if ( rProperties.isLastCol() && ( nColumn == nMaxColumn ) )
+ {
+ applyTableStylePart( rFilterBase, aFillProperties, aTextStyleProps,
+ aLinePropertiesLeft,
+ aLinePropertiesRight,
+ aLinePropertiesTop,
+ aLinePropertiesBottom,
+ aLinePropertiesInsideH,
+ aLinePropertiesInsideV,
+ aLinePropertiesTopLeftToBottomRight,
+ aLinePropertiesBottomLeftToTopRight,
+ rTable.getLastCol() );
+ }
+ if ( rProperties.isBandRow() )
+ {
+ if ( ( !rProperties.isFirstRow() || ( nRow != 0 ) ) &&
+ ( !rProperties.isLastRow() || ( nRow != nMaxRow ) ) &&
+ ( !rProperties.isFirstCol() || ( nColumn != 0 ) ) &&
+ ( !rProperties.isLastCol() || ( nColumn != nMaxColumn ) ) )
+ {
+ sal_Int32 nBand = nRow;
+ if ( rProperties.isFirstRow() )
+ nBand++;
+ if ( nBand & 1 )
+ {
+ applyTableStylePart( rFilterBase, aFillProperties, aTextStyleProps,
+ aLinePropertiesLeft,
+ aLinePropertiesRight,
+ aLinePropertiesTop,
+ aLinePropertiesBottom,
+ aLinePropertiesInsideH,
+ aLinePropertiesInsideV,
+ aLinePropertiesTopLeftToBottomRight,
+ aLinePropertiesBottomLeftToTopRight,
+ rTable.getBand2H() );
+ }
+ else
+ {
+ applyTableStylePart( rFilterBase, aFillProperties, aTextStyleProps,
+ aLinePropertiesLeft,
+ aLinePropertiesRight,
+ aLinePropertiesTop,
+ aLinePropertiesBottom,
+ aLinePropertiesInsideH,
+ aLinePropertiesInsideV,
+ aLinePropertiesTopLeftToBottomRight,
+ aLinePropertiesBottomLeftToTopRight,
+ rTable.getBand1H() );
+ }
+ }
+ }
+ if ( ( nRow == 0 ) && ( nColumn == 0 ) )
+ {
+ applyTableStylePart( rFilterBase, aFillProperties, aTextStyleProps,
+ aLinePropertiesLeft,
+ aLinePropertiesRight,
+ aLinePropertiesTop,
+ aLinePropertiesBottom,
+ aLinePropertiesInsideH,
+ aLinePropertiesInsideV,
+ aLinePropertiesTopLeftToBottomRight,
+ aLinePropertiesBottomLeftToTopRight,
+ rTable.getNwCell() );
+ }
+ if ( ( nRow == nMaxRow ) && ( nColumn == 0 ) )
+ {
+ applyTableStylePart( rFilterBase, aFillProperties, aTextStyleProps,
+ aLinePropertiesLeft,
+ aLinePropertiesRight,
+ aLinePropertiesTop,
+ aLinePropertiesBottom,
+ aLinePropertiesInsideH,
+ aLinePropertiesInsideV,
+ aLinePropertiesTopLeftToBottomRight,
+ aLinePropertiesBottomLeftToTopRight,
+ rTable.getSwCell() );
+ }
+ if ( ( nRow == 0 ) && ( nColumn == nMaxColumn ) )
+ {
+ applyTableStylePart( rFilterBase, aFillProperties, aTextStyleProps,
+ aLinePropertiesLeft,
+ aLinePropertiesRight,
+ aLinePropertiesTop,
+ aLinePropertiesBottom,
+ aLinePropertiesInsideH,
+ aLinePropertiesInsideV,
+ aLinePropertiesTopLeftToBottomRight,
+ aLinePropertiesBottomLeftToTopRight,
+ rTable.getNeCell() );
+ }
+ if ( ( nRow == nMaxRow ) && ( nColumn == nMaxColumn ) )
+ {
+ applyTableStylePart( rFilterBase, aFillProperties, aTextStyleProps,
+ aLinePropertiesLeft,
+ aLinePropertiesRight,
+ aLinePropertiesTop,
+ aLinePropertiesBottom,
+ aLinePropertiesInsideH,
+ aLinePropertiesInsideV,
+ aLinePropertiesTopLeftToBottomRight,
+ aLinePropertiesBottomLeftToTopRight,
+ rTable.getSeCell() );
+ }
+ if ( rProperties.isBandCol() )
+ {
+ if ( ( !rProperties.isFirstRow() || ( nRow != 0 ) ) &&
+ ( !rProperties.isLastRow() || ( nRow != nMaxRow ) ) &&
+ ( !rProperties.isFirstCol() || ( nColumn != 0 ) ) &&
+ ( !rProperties.isLastCol() || ( nColumn != nMaxColumn ) ) )
+ {
+ sal_Int32 nBand = nColumn;
+ if ( rProperties.isFirstCol() )
+ nBand++;
+ if ( nBand & 1 )
+ {
+ applyTableStylePart( rFilterBase, aFillProperties, aTextStyleProps,
+ aLinePropertiesLeft,
+ aLinePropertiesRight,
+ aLinePropertiesTop,
+ aLinePropertiesBottom,
+ aLinePropertiesInsideH,
+ aLinePropertiesInsideV,
+ aLinePropertiesTopLeftToBottomRight,
+ aLinePropertiesBottomLeftToTopRight,
+ rTable.getBand2V() );
+ }
+ else
+ {
+ applyTableStylePart( rFilterBase, aFillProperties, aTextStyleProps,
+ aLinePropertiesLeft,
+ aLinePropertiesRight,
+ aLinePropertiesTop,
+ aLinePropertiesBottom,
+ aLinePropertiesInsideH,
+ aLinePropertiesInsideV,
+ aLinePropertiesTopLeftToBottomRight,
+ aLinePropertiesBottomLeftToTopRight,
+ rTable.getBand1V() );
+ }
+ }
+ }
+ aLinePropertiesLeft.assignUsed( maLinePropertiesLeft );
+ aLinePropertiesRight.assignUsed( maLinePropertiesRight );
+ aLinePropertiesTop.assignUsed( maLinePropertiesTop );
+ aLinePropertiesBottom.assignUsed( maLinePropertiesBottom );
+ aLinePropertiesInsideH.assignUsed( maLinePropertiesInsideH );
+ aLinePropertiesInsideV.assignUsed( maLinePropertiesInsideV );
+ aLinePropertiesTopLeftToBottomRight.assignUsed( maLinePropertiesTopLeftToBottomRight );
+ aLinePropertiesBottomLeftToTopRight.assignUsed( maLinePropertiesBottomLeftToTopRight );
+
+ applyLineAttributes( rFilterBase, xPropSet, aLinePropertiesLeft, PROP_LeftBorder );
+ applyLineAttributes( rFilterBase, xPropSet, aLinePropertiesRight, PROP_RightBorder );
+ applyLineAttributes( rFilterBase, xPropSet, aLinePropertiesTop, PROP_TopBorder );
+ applyLineAttributes( rFilterBase, xPropSet, aLinePropertiesBottom, PROP_BottomBorder );
+ applyLineAttributes( rFilterBase, xPropSet, aLinePropertiesTopLeftToBottomRight, PROP_DiagonalTLBR );
+ applyLineAttributes( rFilterBase, xPropSet, aLinePropertiesBottomLeftToTopRight, PROP_DiagonalBLTR );
+
+ // Convert insideH to Top and Bottom, InsideV to Left and Right. Exclude the outer borders.
+ if(nRow != 0)
+ {
+ aLinePropertiesInsideH.assignUsed( aLinePropertiesTop );
+ applyLineAttributes( rFilterBase, xPropSet, aLinePropertiesInsideH, PROP_TopBorder );
+ }
+ if(nRow != nMaxRow)
+ {
+ aLinePropertiesInsideH.assignUsed( aLinePropertiesBottom );
+ applyLineAttributes( rFilterBase, xPropSet, aLinePropertiesInsideH, PROP_BottomBorder );
+ }
+ if(nColumn != 0)
+ {
+ aLinePropertiesInsideV.assignUsed( aLinePropertiesLeft );
+ applyLineAttributes( rFilterBase, xPropSet, aLinePropertiesInsideV, PROP_LeftBorder );
+ }
+ if(nColumn != nMaxColumn)
+ {
+ aLinePropertiesInsideV.assignUsed( aLinePropertiesRight );
+ applyLineAttributes( rFilterBase, xPropSet, aLinePropertiesInsideV, PROP_RightBorder );
+ }
+
+ if (rProperties.getBgColor().isUsed() && !maFillProperties.maFillColor.isUsed() && maFillProperties.moFillType.get() == XML_noFill)
+ {
+ maFillProperties.moFillType = XML_solidFill;
+ maFillProperties.maFillColor = rProperties.getBgColor();
+ }
+
+ aFillProperties.assignUsed( maFillProperties );
+ ShapePropertyMap aPropMap( rFilterBase.getModelObjectHelper() );
+
+ Color aBgColor;
+ ::Color nPhClr = API_RGB_TRANSPARENT;
+ std::shared_ptr< ::oox::drawingml::FillProperties >& rBackgroundFillPropertiesPtr( rTable.getBackgroundFillProperties() );
+ ::oox::drawingml::ShapeStyleRef& rBackgroundFillStyle( rTable.getBackgroundFillStyleRef() );
+ if (rBackgroundFillPropertiesPtr)
+ aBgColor = rBackgroundFillPropertiesPtr->getBestSolidColor();
+ else if (rBackgroundFillStyle.mnThemedIdx != 0)
+ {
+ if (const Theme* pTheme = rFilterBase.getCurrentTheme())
+ {
+ aBgColor = pTheme->getFillStyle(rBackgroundFillStyle.mnThemedIdx)->getBestSolidColor();
+ nPhClr = rBackgroundFillStyle.maPhClr.getColor(rFilterBase.getGraphicHelper());
+ }
+ }
+ if (aBgColor.isUsed())
+ {
+ const Color& rCellColor = aFillProperties.getBestSolidColor();
+ const double fTransparency = rCellColor.isUsed() ? 0.01 * rCellColor.getTransparency() : 1.0;
+ ::Color nBgColor( aBgColor.getColor(rFilterBase.getGraphicHelper(), nPhClr) );
+ ::Color nCellColor( rCellColor.getColor(rFilterBase.getGraphicHelper()) );
+ ::Color aResult( basegfx::interpolate(nBgColor.getBColor(), nCellColor.getBColor(), 1.0 - fTransparency) );
+ aFillProperties.maFillColor.clearTransformations();
+ aFillProperties.maFillColor.setSrgbClr(sal_Int32(aResult.GetRGBColor()));
+ aFillProperties.moFillType.set(XML_solidFill);
+ }
+ if (!aFillProperties.moFillType.has())
+ aFillProperties.moFillType.set(XML_noFill);
+
+ // TODO: phClr?
+ aFillProperties.pushToPropMap( aPropMap, rFilterBase.getGraphicHelper() );
+ PropertySet aPropSet{xPropSet};
+ aPropSet.setProperties( aPropMap );
+
+ if ( getVertToken() == XML_eaVert )
+ {
+ xPropSet->setPropertyValue("TextWritingMode", Any(css::text::WritingMode_TB_RL));
+ }
+
+ getTextBody()->insertAt( rFilterBase, xText, xAt, aTextStyleProps, pMasterTextListStyle );
+
+ // tdf#144092 For empty cells push character styles & endParaRPr to the Cell's properties
+ const TextParagraphVector& rParagraphs = getTextBody()->getParagraphs();
+ if (rParagraphs.size() == 1)
+ {
+ const auto pFirstParagraph = rParagraphs.at(0);
+ if (pFirstParagraph->getRuns().empty())
+ {
+ TextCharacterProperties aTextCharacterProps{ pFirstParagraph->getCharacterStyle(
+ aTextStyleProps, *pMasterTextListStyle, getTextBody()->getTextListStyle()) };
+ aTextCharacterProps.assignUsed(pFirstParagraph->getEndProperties());
+ aTextCharacterProps.pushToPropSet(aPropSet, rFilterBase);
+ }
+ }
+
+ if (getVertToken() == XML_vert)
+ xPropSet->setPropertyValue("RotateAngle", Any(short(27000)));
+ else if (getVertToken() == XML_vert270)
+ xPropSet->setPropertyValue("RotateAngle", Any(short(9000)));
+}
+
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/oox/source/drawingml/table/tablecellcontext.cxx b/oox/source/drawingml/table/tablecellcontext.cxx
new file mode 100644
index 000000000..dde824fb7
--- /dev/null
+++ b/oox/source/drawingml/table/tablecellcontext.cxx
@@ -0,0 +1,103 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ *
+ * This file incorporates work covered by the following license notice:
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed
+ * with this work for additional information regarding copyright
+ * ownership. The ASF licenses this file to you under the Apache
+ * License, Version 2.0 (the "License"); you may not use this file
+ * except in compliance with the License. You may obtain a copy of
+ * the License at http://www.apache.org/licenses/LICENSE-2.0 .
+ */
+
+
+#include <drawingml/table/tablecellcontext.hxx>
+#include <drawingml/textbodycontext.hxx>
+#include <drawingml/linepropertiescontext.hxx>
+#include <drawingml/misccontexts.hxx>
+#include <oox/helper/attributelist.hxx>
+#include <oox/token/namespaces.hxx>
+#include <oox/token/tokens.hxx>
+
+using namespace ::oox::core;
+using namespace ::com::sun::star;
+
+namespace oox::drawingml::table {
+
+TableCellContext::TableCellContext( ContextHandler2Helper const & rParent, const AttributeList& rAttribs, TableCell& rTableCell )
+: ContextHandler2( rParent )
+, mrTableCell( rTableCell )
+{
+ if ( rAttribs.hasAttribute( XML_rowSpan ) )
+ mrTableCell.setRowSpan( rAttribs.getString( XML_rowSpan ).get().toInt32() );
+ if ( rAttribs.hasAttribute( XML_gridSpan ) )
+ mrTableCell.setGridSpan( rAttribs.getString( XML_gridSpan ).get().toInt32() );
+
+ mrTableCell.sethMerge( rAttribs.getBool( XML_hMerge, false ) );
+ mrTableCell.setvMerge( rAttribs.getBool( XML_vMerge, false ) );
+}
+
+TableCellContext::~TableCellContext()
+{
+}
+
+ContextHandlerRef
+TableCellContext::onCreateContext( ::sal_Int32 aElementToken, const AttributeList& rAttribs )
+{
+ switch( aElementToken )
+ {
+ case A_TOKEN( txBody ): // CT_TextBody
+ {
+ oox::drawingml::TextBodyPtr xTextBody = std::make_shared<oox::drawingml::TextBody>();
+ mrTableCell.setTextBody( xTextBody );
+ return new oox::drawingml::TextBodyContext( *this, *xTextBody );
+ }
+
+ case A_TOKEN( tcPr ): // CT_TableCellProperties
+ {
+ mrTableCell.setLeftMargin( rAttribs.getInteger( XML_marL, 91440 ) );
+ mrTableCell.setRightMargin( rAttribs.getInteger( XML_marR, 91440 ) );
+ mrTableCell.setTopMargin( rAttribs.getInteger( XML_marT, 45720 ) );
+ mrTableCell.setBottomMargin( rAttribs.getInteger( XML_marB, 45720 ) );
+ mrTableCell.setVertToken( rAttribs.getToken( XML_vert, XML_horz ) ); // ST_TextVerticalType
+ mrTableCell.setAnchorToken( rAttribs.getToken( XML_anchor, XML_t ) ); // ST_TextAnchoringType
+ mrTableCell.setAnchorCtr( rAttribs.getBool( XML_anchorCtr, false ) );
+ mrTableCell.setHorzOverflowToken( rAttribs.getToken( XML_horzOverflow, XML_clip ) ); // ST_TextHorzOverflowType
+ }
+ break;
+ case A_TOKEN( lnL ):
+ return new oox::drawingml::LinePropertiesContext( *this, rAttribs, mrTableCell.maLinePropertiesLeft );
+ case A_TOKEN( lnR ):
+ return new oox::drawingml::LinePropertiesContext( *this, rAttribs, mrTableCell.maLinePropertiesRight );
+ case A_TOKEN( lnT ):
+ return new oox::drawingml::LinePropertiesContext( *this, rAttribs, mrTableCell.maLinePropertiesTop );
+ case A_TOKEN( lnB ):
+ return new oox::drawingml::LinePropertiesContext( *this, rAttribs, mrTableCell.maLinePropertiesBottom );
+ case A_TOKEN( lnTlToBr ):
+ return new oox::drawingml::LinePropertiesContext( *this, rAttribs, mrTableCell.maLinePropertiesTopLeftToBottomRight );
+ case A_TOKEN( lnBlToTr ):
+ return new oox::drawingml::LinePropertiesContext( *this, rAttribs, mrTableCell.maLinePropertiesBottomLeftToTopRight );
+ case A_TOKEN( cell3D ): // CT_Cell3D
+ break;
+
+ case A_TOKEN( extLst ): // CT_OfficeArtExtensionList
+ break;
+
+ default:
+ return FillPropertiesContext::createFillContext( *this, aElementToken, rAttribs, mrTableCell.maFillProperties );
+
+ }
+
+ return this;
+}
+
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/oox/source/drawingml/table/tablecontext.cxx b/oox/source/drawingml/table/tablecontext.cxx
new file mode 100644
index 000000000..84e80dccd
--- /dev/null
+++ b/oox/source/drawingml/table/tablecontext.cxx
@@ -0,0 +1,98 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ *
+ * This file incorporates work covered by the following license notice:
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed
+ * with this work for additional information regarding copyright
+ * ownership. The ASF licenses this file to you under the Apache
+ * License, Version 2.0 (the "License"); you may not use this file
+ * except in compliance with the License. You may obtain a copy of
+ * the License at http://www.apache.org/licenses/LICENSE-2.0 .
+ */
+
+#include <oox/helper/attributelist.hxx>
+#include <drawingml/colorchoicecontext.hxx>
+#include <drawingml/guidcontext.hxx>
+#include <drawingml/table/tablecontext.hxx>
+#include <drawingml/table/tableproperties.hxx>
+#include <drawingml/table/tablestylecontext.hxx>
+#include <drawingml/table/tablerowcontext.hxx>
+#include <drawingml/effectpropertiescontext.hxx>
+#include <oox/token/namespaces.hxx>
+#include <oox/token/tokens.hxx>
+
+using namespace ::oox::core;
+using namespace ::com::sun::star;
+
+namespace oox::drawingml::table {
+
+TableContext::TableContext( ContextHandler2Helper const & rParent, const ShapePtr& pShapePtr )
+: ShapeContext( rParent, ShapePtr(), pShapePtr )
+, mrTableProperties( *pShapePtr->getTableProperties() )
+{
+ pShapePtr->setTableType();
+}
+
+TableContext::~TableContext()
+{
+}
+
+ContextHandlerRef
+TableContext::onCreateContext( ::sal_Int32 aElementToken, const AttributeList& rAttribs )
+{
+ switch( aElementToken )
+ {
+ case A_TOKEN( tblPr ): // CT_TableProperties
+ {
+ mrTableProperties.setFirstRow( rAttribs.getBool( XML_firstRow, false ) );
+ mrTableProperties.setFirstCol( rAttribs.getBool( XML_firstCol, false ) );
+ mrTableProperties.setLastRow( rAttribs.getBool( XML_lastRow, false ) );
+ mrTableProperties.setLastCol( rAttribs.getBool( XML_lastCol, false ) );
+ mrTableProperties.setBandRow( rAttribs.getBool( XML_bandRow, false ) );
+ mrTableProperties.setBandCol( rAttribs.getBool( XML_bandCol, false ) );
+ }
+ break;
+ case A_TOKEN(solidFill):
+ return new ColorContext(*this, mrTableProperties.getBgColor());
+ case A_TOKEN( tableStyle ): // CT_TableStyle
+ {
+ std::shared_ptr< TableStyle >& rTableStyle = mrTableProperties.getTableStyle();
+ rTableStyle = std::make_shared<TableStyle>();
+ return new TableStyleContext( *this, rAttribs, *rTableStyle );
+ }
+ case A_TOKEN( effectLst ): // CT_EffectList
+ {
+ return new EffectPropertiesContext(*this, mpShapePtr->getEffectProperties());
+ }
+ case A_TOKEN( tableStyleId ): // ST_Guid
+ return new oox::drawingml::GuidContext( *this, mrTableProperties.getStyleId() );
+
+ case A_TOKEN( tblGrid ): // CT_TableGrid
+ break;
+ case A_TOKEN( gridCol ): // CT_TableCol
+ {
+ std::vector< sal_Int32 >& rvTableGrid( mrTableProperties.getTableGrid() );
+ rvTableGrid.push_back( rAttribs.getString( XML_w ).get().toInt32() );
+ }
+ break;
+ case A_TOKEN( tr ): // CT_TableRow
+ {
+ std::vector< TableRow >& rvTableRows( mrTableProperties.getTableRows() );
+ rvTableRows.emplace_back();
+ return new TableRowContext( *this, rAttribs, rvTableRows.back() );
+ }
+ }
+
+ return this;
+}
+
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/oox/source/drawingml/table/tablepartstylecontext.cxx b/oox/source/drawingml/table/tablepartstylecontext.cxx
new file mode 100644
index 000000000..2d9717322
--- /dev/null
+++ b/oox/source/drawingml/table/tablepartstylecontext.cxx
@@ -0,0 +1,60 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ *
+ * This file incorporates work covered by the following license notice:
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed
+ * with this work for additional information regarding copyright
+ * ownership. The ASF licenses this file to you under the Apache
+ * License, Version 2.0 (the "License"); you may not use this file
+ * except in compliance with the License. You may obtain a copy of
+ * the License at http://www.apache.org/licenses/LICENSE-2.0 .
+ */
+
+
+#include <drawingml/table/tablepartstylecontext.hxx>
+#include <drawingml/table/tablestyletextstylecontext.hxx>
+#include <drawingml/table/tablestylecellstylecontext.hxx>
+#include <oox/token/namespaces.hxx>
+
+using namespace ::oox::core;
+using namespace ::com::sun::star;
+using namespace ::com::sun::star::uno;
+using namespace ::com::sun::star::xml::sax;
+
+namespace oox::drawingml::table {
+
+TablePartStyleContext::TablePartStyleContext( ContextHandler2Helper const & rParent, TableStylePart& rTableStylePart )
+: ContextHandler2( rParent )
+, mrTableStylePart( rTableStylePart )
+{
+}
+
+TablePartStyleContext::~TablePartStyleContext()
+{
+}
+
+// CT_TablePartStyle
+ContextHandlerRef
+TablePartStyleContext::onCreateContext( ::sal_Int32 aElementToken, const AttributeList& rAttribs )
+{
+ switch( aElementToken )
+ {
+ case A_TOKEN( tcTxStyle ): // CT_TableStyleTextStyle
+ return new TableStyleTextStyleContext( *this, rAttribs, mrTableStylePart );
+ case A_TOKEN( tcStyle ): // CT_TableStyleCellStyle
+ return new TableStyleCellStyleContext( *this, mrTableStylePart );
+ }
+
+ return this;
+}
+
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/oox/source/drawingml/table/tableproperties.cxx b/oox/source/drawingml/table/tableproperties.cxx
new file mode 100644
index 000000000..38f655af1
--- /dev/null
+++ b/oox/source/drawingml/table/tableproperties.cxx
@@ -0,0 +1,216 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ *
+ * This file incorporates work covered by the following license notice:
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed
+ * with this work for additional information regarding copyright
+ * ownership. The ASF licenses this file to you under the Apache
+ * License, Version 2.0 (the "License"); you may not use this file
+ * except in compliance with the License. You may obtain a copy of
+ * the License at http://www.apache.org/licenses/LICENSE-2.0 .
+ */
+
+#include <drawingml/table/tableproperties.hxx>
+#include <drawingml/table/tablestylelist.hxx>
+#include <oox/drawingml/drawingmltypes.hxx>
+#include <com/sun/star/table/XTable.hpp>
+#include <com/sun/star/table/XMergeableCellRange.hpp>
+#include <oox/core/xmlfilterbase.hxx>
+#include "predefined-table-styles.cxx"
+
+using namespace ::oox::core;
+using namespace ::com::sun::star;
+using namespace ::com::sun::star::uno;
+using namespace ::com::sun::star::beans;
+using namespace ::com::sun::star::table;
+
+namespace oox::drawingml::table {
+
+TableProperties::TableProperties()
+: mbFirstRow( false )
+, mbFirstCol( false )
+, mbLastRow( false )
+, mbLastCol( false )
+, mbBandRow( false )
+, mbBandCol( false )
+{
+ maBgColor.setUnused();
+}
+
+static void CreateTableRows( const uno::Reference< XTableRows >& xTableRows, const std::vector< TableRow >& rvTableRows )
+{
+ if ( rvTableRows.size() > 1 )
+ xTableRows->insertByIndex( 0, rvTableRows.size() - 1 );
+ std::vector< TableRow >::const_iterator aTableRowIter( rvTableRows.begin() );
+ uno::Reference< container::XIndexAccess > xIndexAccess( xTableRows, UNO_QUERY_THROW );
+ sal_Int32 nCols = std::min<sal_Int32>(xIndexAccess->getCount(), rvTableRows.size());
+ for (sal_Int32 n = 0; n < nCols; ++n)
+ {
+ Reference< XPropertySet > xPropSet( xIndexAccess->getByIndex( n ), UNO_QUERY_THROW );
+ xPropSet->setPropertyValue( "Height", Any( static_cast< sal_Int32 >( aTableRowIter->getHeight() / 360 ) ) );
+ ++aTableRowIter;
+ }
+}
+
+static void CreateTableColumns( const Reference< XTableColumns >& xTableColumns, const std::vector< sal_Int32 >& rvTableGrid )
+{
+ if ( rvTableGrid.size() > 1 )
+ xTableColumns->insertByIndex( 0, rvTableGrid.size() - 1 );
+ std::vector< sal_Int32 >::const_iterator aTableGridIter( rvTableGrid.begin() );
+ uno::Reference< container::XIndexAccess > xIndexAccess( xTableColumns, UNO_QUERY_THROW );
+ sal_Int32 nCols = std::min<sal_Int32>(xIndexAccess->getCount(), rvTableGrid.size());
+ for (sal_Int32 n = 0; n < nCols; ++n)
+ {
+ Reference< XPropertySet > xPropSet( xIndexAccess->getByIndex( n ), UNO_QUERY_THROW );
+ xPropSet->setPropertyValue( "Width", Any( static_cast< sal_Int32 >( *aTableGridIter++ / 360 ) ) );
+ }
+}
+
+static void MergeCells( const uno::Reference< XTable >& xTable, sal_Int32 nCol, sal_Int32 nRow, sal_Int32 nColSpan, sal_Int32 nRowSpan )
+{
+ if( xTable.is() ) try
+ {
+ Reference< XMergeableCellRange > xRange( xTable->createCursorByRange( xTable->getCellRangeByPosition( nCol, nRow,nCol + nColSpan - 1, nRow + nRowSpan - 1 ) ), UNO_QUERY_THROW );
+ if( xRange->isMergeable() )
+ xRange->merge();
+ }
+ catch( Exception& )
+ {
+ }
+}
+
+const TableStyle& TableProperties::getUsedTableStyle( const ::oox::core::XmlFilterBase& rFilterBase, std::unique_ptr<TableStyle>& rTableStyleToDelete )
+{
+ ::oox::core::XmlFilterBase& rBase( const_cast< ::oox::core::XmlFilterBase& >( rFilterBase ) );
+
+ TableStyle* pTableStyle = nullptr;
+ if ( mpTableStyle )
+ pTableStyle = &*mpTableStyle;
+ else if ( !getStyleId().isEmpty() && rBase.getTableStyles() )
+ {
+ const std::vector< TableStyle >& rTableStyles( rBase.getTableStyles()->getTableStyles() );
+ const OUString aStyleId( getStyleId() );
+
+ for (auto const& tableStyle : rTableStyles)
+ {
+ if ( const_cast< TableStyle& >(tableStyle).getStyleId() == aStyleId )
+ {
+ pTableStyle = &const_cast< TableStyle& >(tableStyle);
+ break; // we get the correct style
+ }
+ }
+ //if the pptx just has table style id, but no table style content, we will create the table style ourselves
+ if (!pTableStyle)
+ {
+ rTableStyleToDelete = CreateTableStyle(aStyleId);
+ pTableStyle = rTableStyleToDelete.get();
+ }
+ }
+
+ if ( !pTableStyle )
+ {
+ static TableStyle theDefaultTableStyle;
+ return theDefaultTableStyle;
+ }
+
+ return *pTableStyle;
+}
+
+void TableProperties::pushToPropSet(const ::oox::core::XmlFilterBase& rFilterBase,
+ const Reference<XPropertySet>& xPropSet,
+ const TextListStylePtr& pMasterTextListStyle)
+{
+ uno::Reference<XColumnRowRange> xColumnRowRange(xPropSet->getPropertyValue("Model"),
+ uno::UNO_QUERY_THROW);
+
+ CreateTableColumns(xColumnRowRange->getColumns(), mvTableGrid);
+ CreateTableRows(xColumnRowRange->getRows(), mvTableRows);
+
+ std::unique_ptr<TableStyle> xTableStyleToDelete;
+ const TableStyle& rTableStyle(getUsedTableStyle(rFilterBase, xTableStyleToDelete));
+ sal_Int32 nRow = 0;
+
+ for (auto& tableRow : mvTableRows)
+ {
+ sal_Int32 nColumn = 0;
+ sal_Int32 nColumnSize = tableRow.getTableCells().size();
+ sal_Int32 nRemovedColumn = 0;
+ sal_Int32 nRemovedRow = 0;
+
+ for (sal_Int32 nColIndex = 0; nColIndex < nColumnSize; nColIndex++)
+ {
+ TableCell& rTableCell(tableRow.getTableCells().at(nColIndex));
+
+ if (!rTableCell.getvMerge() && !rTableCell.gethMerge())
+ {
+ uno::Reference<XTable> xTable(xColumnRowRange, uno::UNO_QUERY_THROW);
+ bool bMerged = false;
+
+ if ((rTableCell.getRowSpan() > 1) || (rTableCell.getGridSpan() > 1))
+ {
+ MergeCells(xTable, nColumn, nRow, rTableCell.getGridSpan(),
+ rTableCell.getRowSpan());
+
+ if (rTableCell.getGridSpan() > 1)
+ {
+ nRemovedColumn = (rTableCell.getGridSpan() - 1);
+ // MergeCells removes columns. Our loop does not know about those
+ // removed columns and we skip handling those removed columns.
+ nColIndex += nRemovedColumn;
+ // It will adjust new column number after push current column's
+ // props with pushToXCell.
+ bMerged = true;
+ }
+
+ if (rTableCell.getRowSpan() > 1)
+ nRemovedRow = (rTableCell.getRowSpan() - 1);
+ }
+
+ Reference<XCellRange> xCellRange(xTable, UNO_QUERY_THROW);
+ Reference<XCell> xCell;
+
+ if (nRemovedColumn)
+ {
+ try
+ {
+ xCell = xCellRange->getCellByPosition(nColumn, nRow);
+ }
+ // Exception can come from TableModel::getCellByPosition when a column
+ // is removed while merging columns. So adjust again here.
+ catch (Exception&)
+ {
+ xCell = xCellRange->getCellByPosition(nColumn - nRemovedColumn, nRow);
+ }
+ }
+ else
+ xCell = xCellRange->getCellByPosition(nColumn, nRow);
+
+
+ sal_Int32 nMaxCol = tableRow.getTableCells().size() - nRemovedColumn - 1;
+ sal_Int32 nMaxRow = mvTableRows.size() - nRemovedRow - 1;
+
+ rTableCell.pushToXCell(rFilterBase, pMasterTextListStyle, xCell, *this, rTableStyle,
+ nColumn, nMaxCol, nRow, nMaxRow);
+
+ if (bMerged)
+ nColumn += nRemovedColumn;
+
+ nRemovedRow = 0;
+ }
+ ++nColumn;
+ }
+ ++nRow;
+ }
+
+ xTableStyleToDelete.reset();
+}
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/oox/source/drawingml/table/tablerow.cxx b/oox/source/drawingml/table/tablerow.cxx
new file mode 100644
index 000000000..3284c7c84
--- /dev/null
+++ b/oox/source/drawingml/table/tablerow.cxx
@@ -0,0 +1,35 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ *
+ * This file incorporates work covered by the following license notice:
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed
+ * with this work for additional information regarding copyright
+ * ownership. The ASF licenses this file to you under the Apache
+ * License, Version 2.0 (the "License"); you may not use this file
+ * except in compliance with the License. You may obtain a copy of
+ * the License at http://www.apache.org/licenses/LICENSE-2.0 .
+ */
+
+#include <drawingml/table/tablerow.hxx>
+
+using namespace ::oox::core;
+using namespace ::com::sun::star;
+using namespace ::com::sun::star::uno;
+using namespace ::com::sun::star::beans;
+
+namespace oox::drawingml::table
+{
+TableRow::TableRow()
+ : mnHeight(0)
+{
+}
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/oox/source/drawingml/table/tablerowcontext.cxx b/oox/source/drawingml/table/tablerowcontext.cxx
new file mode 100644
index 000000000..aafd13b00
--- /dev/null
+++ b/oox/source/drawingml/table/tablerowcontext.cxx
@@ -0,0 +1,65 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ *
+ * This file incorporates work covered by the following license notice:
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed
+ * with this work for additional information regarding copyright
+ * ownership. The ASF licenses this file to you under the Apache
+ * License, Version 2.0 (the "License"); you may not use this file
+ * except in compliance with the License. You may obtain a copy of
+ * the License at http://www.apache.org/licenses/LICENSE-2.0 .
+ */
+
+
+#include <drawingml/table/tablerowcontext.hxx>
+#include <drawingml/table/tablecellcontext.hxx>
+#include <drawingml/table/tablerow.hxx>
+#include <oox/helper/attributelist.hxx>
+#include <oox/token/namespaces.hxx>
+#include <oox/token/tokens.hxx>
+
+using namespace ::oox::core;
+using namespace ::com::sun::star;
+
+namespace oox::drawingml::table {
+
+TableRowContext::TableRowContext( ContextHandler2Helper const & rParent, const AttributeList& rAttribs, TableRow& rTableRow )
+: ContextHandler2( rParent )
+, mrTableRow( rTableRow )
+{
+ rTableRow.setHeight( rAttribs.getString( XML_h ).get().toInt32() );
+}
+
+TableRowContext::~TableRowContext()
+{
+}
+
+ContextHandlerRef
+TableRowContext::onCreateContext( ::sal_Int32 aElementToken, const AttributeList& rAttribs )
+{
+ switch( aElementToken )
+ {
+ case A_TOKEN( tc ): // CT_TableCell
+ {
+ std::vector< TableCell >& rvTableCells = mrTableRow.getTableCells();
+ rvTableCells.emplace_back();
+ return new TableCellContext( *this, rAttribs, rvTableCells.back() );
+ }
+ case A_TOKEN( extLst ): // CT_OfficeArtExtensionList
+ default:
+ break;
+ }
+
+ return this;
+}
+
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/oox/source/drawingml/table/tablestyle.cxx b/oox/source/drawingml/table/tablestyle.cxx
new file mode 100644
index 000000000..e0ae76e9a
--- /dev/null
+++ b/oox/source/drawingml/table/tablestyle.cxx
@@ -0,0 +1,27 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ *
+ * This file incorporates work covered by the following license notice:
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed
+ * with this work for additional information regarding copyright
+ * ownership. The ASF licenses this file to you under the Apache
+ * License, Version 2.0 (the "License"); you may not use this file
+ * except in compliance with the License. You may obtain a copy of
+ * the License at http://www.apache.org/licenses/LICENSE-2.0 .
+ */
+
+#include <drawingml/table/tablestyle.hxx>
+
+namespace oox::drawingml::table
+{
+TableStyle::TableStyle() {}
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/oox/source/drawingml/table/tablestylecellstylecontext.cxx b/oox/source/drawingml/table/tablestylecellstylecontext.cxx
new file mode 100644
index 000000000..a3c86b238
--- /dev/null
+++ b/oox/source/drawingml/table/tablestylecellstylecontext.cxx
@@ -0,0 +1,110 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ *
+ * This file incorporates work covered by the following license notice:
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed
+ * with this work for additional information regarding copyright
+ * ownership. The ASF licenses this file to you under the Apache
+ * License, Version 2.0 (the "License"); you may not use this file
+ * except in compliance with the License. You may obtain a copy of
+ * the License at http://www.apache.org/licenses/LICENSE-2.0 .
+ */
+
+
+#include <drawingml/table/tablestylecellstylecontext.hxx>
+#include <drawingml/misccontexts.hxx>
+#include <drawingml/lineproperties.hxx>
+#include <drawingml/linepropertiescontext.hxx>
+#include <oox/helper/attributelist.hxx>
+#include <oox/token/namespaces.hxx>
+#include <oox/token/tokens.hxx>
+
+using namespace ::oox::core;
+using namespace ::com::sun::star;
+using namespace ::com::sun::star::uno;
+using namespace ::com::sun::star::xml::sax;
+
+namespace oox::drawingml::table {
+
+TableStyleCellStyleContext::TableStyleCellStyleContext( ContextHandler2Helper const & rParent, TableStylePart& rTableStylePart )
+: ContextHandler2( rParent )
+, mrTableStylePart( rTableStylePart )
+, mnLineType( XML_none )
+{
+}
+
+TableStyleCellStyleContext::~TableStyleCellStyleContext()
+{
+}
+
+// CT_TableStyleCellStyle
+ContextHandlerRef
+TableStyleCellStyleContext::onCreateContext( ::sal_Int32 aElementToken, const AttributeList& rAttribs )
+{
+ switch( aElementToken )
+ {
+ case A_TOKEN( tcBdr ): // CT_TableCellBorderStyle
+ break;
+ case A_TOKEN( left ): // CT_ThemeableLineStyle
+ case A_TOKEN( right ):
+ case A_TOKEN( top ):
+ case A_TOKEN( bottom ):
+ case A_TOKEN( insideH ):
+ case A_TOKEN( insideV ):
+ case A_TOKEN( tl2br ):
+ case A_TOKEN( tr2bl ):
+ mnLineType = getBaseToken( aElementToken );
+ break;
+
+ case A_TOKEN( ln ):
+ {
+ if ( mnLineType != XML_none )
+ {
+ std::map < sal_Int32, ::oox::drawingml::LinePropertiesPtr >& rLineBorders = mrTableStylePart.getLineBorders();
+ ::oox::drawingml::LinePropertiesPtr pLineProperties = std::make_shared<oox::drawingml::LineProperties>();
+ rLineBorders[ mnLineType ] = pLineProperties;
+ return new LinePropertiesContext( *this, rAttribs, *pLineProperties );
+ }
+ }
+ break;
+ case A_TOKEN( lnRef ):
+ {
+ if ( mnLineType != XML_none )
+ {
+ ShapeStyleRef& rLineStyleRef = mrTableStylePart.getStyleRefs()[ mnLineType ];
+ rLineStyleRef.mnThemedIdx = rAttribs.getInteger( XML_idx, 0 );
+ return new ColorContext( *this, rLineStyleRef.maPhClr );
+ }
+ }
+ break;
+
+ // EG_ThemeableFillStyle (choice)
+ case A_TOKEN( fill ): // CT_FillProperties
+ {
+ FillPropertiesPtr& rxFillProperties = mrTableStylePart.getFillProperties();
+ rxFillProperties = std::make_shared<FillProperties>();
+ return new FillPropertiesContext( *this, *rxFillProperties );
+ }
+ case A_TOKEN( fillRef ): // CT_StyleMatrixReference
+ {
+ ShapeStyleRef& rStyleRef = mrTableStylePart.getStyleRefs()[ XML_fillRef ];
+ rStyleRef.mnThemedIdx = rAttribs.getInteger( XML_idx, 0 );
+ return new ColorContext( *this, rStyleRef.maPhClr );
+ }
+ case A_TOKEN( cell3D ): // CT_Cell3D
+ break;
+ }
+
+ return this;
+}
+
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/oox/source/drawingml/table/tablestylecontext.cxx b/oox/source/drawingml/table/tablestylecontext.cxx
new file mode 100644
index 000000000..7dc4ce468
--- /dev/null
+++ b/oox/source/drawingml/table/tablestylecontext.cxx
@@ -0,0 +1,89 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ *
+ * This file incorporates work covered by the following license notice:
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed
+ * with this work for additional information regarding copyright
+ * ownership. The ASF licenses this file to you under the Apache
+ * License, Version 2.0 (the "License"); you may not use this file
+ * except in compliance with the License. You may obtain a copy of
+ * the License at http://www.apache.org/licenses/LICENSE-2.0 .
+ */
+
+
+#include <drawingml/table/tablestylecontext.hxx>
+#include <drawingml/table/tablebackgroundstylecontext.hxx>
+#include <drawingml/table/tablepartstylecontext.hxx>
+#include <oox/helper/attributelist.hxx>
+#include <oox/token/namespaces.hxx>
+#include <oox/token/tokens.hxx>
+
+using namespace ::oox::core;
+using namespace ::com::sun::star;
+using namespace ::com::sun::star::uno;
+using namespace ::com::sun::star::xml::sax;
+
+namespace oox::drawingml::table {
+
+TableStyleContext::TableStyleContext( ContextHandler2Helper const & rParent,
+ const AttributeList& rAttribs, TableStyle& rTableStyle )
+: ContextHandler2( rParent )
+, mrTableStyle( rTableStyle )
+{
+ mrTableStyle.getStyleId() = rAttribs.getString( XML_styleId ).get();
+ mrTableStyle.getStyleName() = rAttribs.getString( XML_styleName ).get();
+}
+
+TableStyleContext::~TableStyleContext()
+{
+}
+
+ContextHandlerRef
+TableStyleContext::onCreateContext( ::sal_Int32 aElementToken, const AttributeList& /* rAttribs */ )
+{
+ switch( aElementToken )
+ {
+ case A_TOKEN( tblBg ): // CT_TableBackgroundStyle
+ return new TableBackgroundStyleContext( *this, mrTableStyle );
+ case A_TOKEN( wholeTbl ): // CT_TablePartStyle
+ return new TablePartStyleContext( *this, mrTableStyle.getWholeTbl() );
+ case A_TOKEN( band1H ): // CT_TablePartStyle
+ return new TablePartStyleContext( *this, mrTableStyle.getBand1H() );
+ case A_TOKEN( band2H ): // CT_TablePartStyle
+ return new TablePartStyleContext( *this, mrTableStyle.getBand2H() );
+ case A_TOKEN( band1V ): // CT_TablePartStyle
+ return new TablePartStyleContext( *this, mrTableStyle.getBand1V() );
+ case A_TOKEN( band2V ): // CT_TablePartStyle
+ return new TablePartStyleContext( *this, mrTableStyle.getBand2V() );
+ case A_TOKEN( lastCol ): // CT_TablePartStyle
+ return new TablePartStyleContext( *this, mrTableStyle.getLastCol() );
+ case A_TOKEN( firstCol ): // CT_TablePartStyle
+ return new TablePartStyleContext( *this, mrTableStyle.getFirstCol() );
+ case A_TOKEN( lastRow ): // CT_TablePartStyle
+ return new TablePartStyleContext( *this, mrTableStyle.getLastRow() );
+ case A_TOKEN( seCell ): // CT_TablePartStyle
+ return new TablePartStyleContext( *this, mrTableStyle.getSeCell() );
+ case A_TOKEN( swCell ): // CT_TablePartStyle
+ return new TablePartStyleContext( *this, mrTableStyle.getSwCell() );
+ case A_TOKEN( firstRow ): // CT_TablePartStyle
+ return new TablePartStyleContext( *this, mrTableStyle.getFirstRow() );
+ case A_TOKEN( neCell ): // CT_TablePartStyle
+ return new TablePartStyleContext( *this, mrTableStyle.getNeCell() );
+ case A_TOKEN( nwCell ): // CT_TablePartStyle
+ return new TablePartStyleContext( *this, mrTableStyle.getNwCell() );
+ case A_TOKEN( extLst ): // CT_OfficeArtExtensionList
+ break;
+ }
+ return this;
+}
+
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/oox/source/drawingml/table/tablestylelist.cxx b/oox/source/drawingml/table/tablestylelist.cxx
new file mode 100644
index 000000000..57a0ba489
--- /dev/null
+++ b/oox/source/drawingml/table/tablestylelist.cxx
@@ -0,0 +1,30 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ *
+ * This file incorporates work covered by the following license notice:
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed
+ * with this work for additional information regarding copyright
+ * ownership. The ASF licenses this file to you under the Apache
+ * License, Version 2.0 (the "License"); you may not use this file
+ * except in compliance with the License. You may obtain a copy of
+ * the License at http://www.apache.org/licenses/LICENSE-2.0 .
+ */
+
+#include <drawingml/table/tablestylelist.hxx>
+#include <drawingml/table/tablestyle.hxx>
+
+namespace oox::drawingml::table
+{
+TableStyleList::TableStyleList() {}
+
+TableStyleList::~TableStyleList() {}
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/oox/source/drawingml/table/tablestylelistfragmenthandler.cxx b/oox/source/drawingml/table/tablestylelistfragmenthandler.cxx
new file mode 100644
index 000000000..77dc42677
--- /dev/null
+++ b/oox/source/drawingml/table/tablestylelistfragmenthandler.cxx
@@ -0,0 +1,63 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ *
+ * This file incorporates work covered by the following license notice:
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed
+ * with this work for additional information regarding copyright
+ * ownership. The ASF licenses this file to you under the Apache
+ * License, Version 2.0 (the "License"); you may not use this file
+ * except in compliance with the License. You may obtain a copy of
+ * the License at http://www.apache.org/licenses/LICENSE-2.0 .
+ */
+
+#include <drawingml/table/tablestylelistfragmenthandler.hxx>
+#include <drawingml/table/tablestylecontext.hxx>
+#include <oox/helper/attributelist.hxx>
+#include <oox/token/namespaces.hxx>
+#include <oox/token/tokens.hxx>
+
+using namespace ::oox::core;
+using namespace ::com::sun::star;
+using namespace ::oox::drawingml;
+using namespace ::com::sun::star::uno;
+using namespace ::com::sun::star::xml::sax;
+
+namespace oox::drawingml::table {
+
+TableStyleListFragmentHandler::TableStyleListFragmentHandler( XmlFilterBase& rFilter, const OUString& rFragmentPath, TableStyleList& rTableStyleList ):
+FragmentHandler2( rFilter, rFragmentPath ),
+mrTableStyleList( rTableStyleList )
+{
+}
+
+TableStyleListFragmentHandler::~TableStyleListFragmentHandler()
+{
+}
+
+// CT_TableStyleList
+ContextHandlerRef TableStyleListFragmentHandler::onCreateContext(
+ sal_Int32 aElementToken, const AttributeList& rAttribs )
+{
+ switch( aElementToken )
+ {
+ case A_TOKEN( tblStyleLst ): // CT_TableStyleList
+ mrTableStyleList.getDefaultStyleId() = rAttribs.getString( XML_def ).get();
+ break;
+ case A_TOKEN( tblStyle ): // CT_TableStyle
+ std::vector< TableStyle >& rTableStyles = mrTableStyleList.getTableStyles();
+ rTableStyles.emplace_back();
+ return new TableStyleContext( *this, rAttribs, rTableStyles.back() );
+ }
+ return this;
+}
+
+} // namespace oox::drawingml::table
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/oox/source/drawingml/table/tablestylepart.cxx b/oox/source/drawingml/table/tablestylepart.cxx
new file mode 100644
index 000000000..729604f26
--- /dev/null
+++ b/oox/source/drawingml/table/tablestylepart.cxx
@@ -0,0 +1,33 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ *
+ * This file incorporates work covered by the following license notice:
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed
+ * with this work for additional information regarding copyright
+ * ownership. The ASF licenses this file to you under the Apache
+ * License, Version 2.0 (the "License"); you may not use this file
+ * except in compliance with the License. You may obtain a copy of
+ * the License at http://www.apache.org/licenses/LICENSE-2.0 .
+ */
+
+#include <drawingml/table/tablestylepart.hxx>
+#include <oox/drawingml/drawingmltypes.hxx>
+
+using namespace ::oox::core;
+using namespace ::com::sun::star;
+using namespace ::com::sun::star::uno;
+using namespace ::com::sun::star::beans;
+
+namespace oox::drawingml::table
+{
+TableStylePart::TableStylePart() {}
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/oox/source/drawingml/table/tablestyletextstylecontext.cxx b/oox/source/drawingml/table/tablestyletextstylecontext.cxx
new file mode 100644
index 000000000..d4206439f
--- /dev/null
+++ b/oox/source/drawingml/table/tablestyletextstylecontext.cxx
@@ -0,0 +1,98 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ *
+ * This file incorporates work covered by the following license notice:
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed
+ * with this work for additional information regarding copyright
+ * ownership. The ASF licenses this file to you under the Apache
+ * License, Version 2.0 (the "License"); you may not use this file
+ * except in compliance with the License. You may obtain a copy of
+ * the License at http://www.apache.org/licenses/LICENSE-2.0 .
+ */
+
+
+#include <drawingml/table/tablestyletextstylecontext.hxx>
+#include <drawingml/colorchoicecontext.hxx>
+#include <oox/helper/attributelist.hxx>
+#include <oox/token/namespaces.hxx>
+#include <oox/token/tokens.hxx>
+
+using namespace ::oox::core;
+using namespace ::com::sun::star;
+using namespace ::com::sun::star::uno;
+using namespace ::com::sun::star::xml::sax;
+
+namespace oox::drawingml::table {
+
+TableStyleTextStyleContext::TableStyleTextStyleContext( ContextHandler2Helper const & rParent,
+ const AttributeList& rAttribs, TableStylePart& rTableStylePart )
+: ContextHandler2( rParent )
+, mrTableStylePart( rTableStylePart )
+{
+ if( rAttribs.hasAttribute( XML_b ) ) {
+ sal_Int32 nB = rAttribs.getToken( XML_b, XML_def );
+ if ( nB == XML_on )
+ mrTableStylePart.getTextBoldStyle() = true;
+ else if ( nB == XML_off )
+ mrTableStylePart.getTextBoldStyle() = false;
+ }
+
+ if( rAttribs.hasAttribute( XML_i ) ) {
+ sal_Int32 nI = rAttribs.getToken( XML_i, XML_def );
+ if ( nI == XML_on )
+ mrTableStylePart.getTextItalicStyle() = true;
+ else if ( nI == XML_off )
+ mrTableStylePart.getTextItalicStyle() = false;
+ }
+}
+
+TableStyleTextStyleContext::~TableStyleTextStyleContext()
+{
+}
+
+// CT_TableStyleTextStyle
+ContextHandlerRef
+TableStyleTextStyleContext::onCreateContext( ::sal_Int32 aElementToken, const AttributeList& rAttribs )
+{
+ switch( aElementToken )
+ {
+ // EG_ThemeableFontStyles (choice)
+ case A_TOKEN( font ): // CT_FontCollection
+ return this;
+ case A_TOKEN( ea ): // CT_TextFont
+ mrTableStylePart.getAsianFont().setAttributes( rAttribs );
+ return nullptr;
+ case A_TOKEN( cs ): // CT_TextFont
+ mrTableStylePart.getComplexFont().setAttributes( rAttribs );
+ return nullptr;
+ case A_TOKEN( sym ): // CT_TextFont
+ mrTableStylePart.getSymbolFont().setAttributes( rAttribs );
+ return nullptr;
+ case A_TOKEN( latin ): // CT_TextFont
+ mrTableStylePart.getLatinFont().setAttributes( rAttribs );
+ return nullptr;
+
+ case A_TOKEN( fontRef ): // CT_FontReference
+ {
+ ShapeStyleRef& rFontStyle = mrTableStylePart.getStyleRefs()[ XML_fontRef ];
+ rFontStyle.mnThemedIdx = rAttribs.getToken( XML_idx, XML_none );
+ return new ColorContext( *this, rFontStyle.maPhClr );
+ }
+
+ case A_TOKEN( extLst ): // CT_OfficeArtExtensionList
+ break;
+ }
+
+ return new ColorValueContext( *this, mrTableStylePart.getTextColor() );
+}
+
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/oox/source/drawingml/textbody.cxx b/oox/source/drawingml/textbody.cxx
new file mode 100644
index 000000000..1be15c4f8
--- /dev/null
+++ b/oox/source/drawingml/textbody.cxx
@@ -0,0 +1,158 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ *
+ * This file incorporates work covered by the following license notice:
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed
+ * with this work for additional information regarding copyright
+ * ownership. The ASF licenses this file to you under the Apache
+ * License, Version 2.0 (the "License"); you may not use this file
+ * except in compliance with the License. You may obtain a copy of
+ * the License at http://www.apache.org/licenses/LICENSE-2.0 .
+ */
+
+#include <drawingml/textbody.hxx>
+#include <com/sun/star/beans/XPropertySet.hpp>
+#include <drawingml/textparagraph.hxx>
+#include <oox/helper/propertyset.hxx>
+#include <oox/token/properties.hxx>
+
+using namespace ::com::sun::star::uno;
+using namespace ::com::sun::star::text;
+using namespace ::com::sun::star::beans;
+
+namespace oox::drawingml {
+
+TextBody::TextBody()
+ : mbHasNoninheritedBodyProperties( false )
+{
+}
+
+TextBody::TextBody( const TextBodyPtr& pBody )
+ : mbHasNoninheritedBodyProperties( false )
+{
+ if( pBody ) {
+ maTextProperties = pBody->maTextProperties;
+ maTextListStyle = pBody->maTextListStyle;
+ }
+}
+
+TextParagraph& TextBody::addParagraph()
+{
+ auto xPara = std::make_shared<TextParagraph>();
+ maParagraphs.push_back( xPara );
+ return *xPara;
+}
+
+void TextBody::insertAt(
+ const ::oox::core::XmlFilterBase& rFilterBase,
+ const Reference < XText > & xText,
+ const Reference < XTextCursor > & xAt,
+ const TextCharacterProperties& rTextStyleProperties,
+ const TextListStylePtr& pMasterTextListStylePtr ) const
+{
+ TextListStyle aMasterTextStyle(*pMasterTextListStylePtr);
+
+ Reference<css::beans::XPropertySet> xPropertySet(xAt, UNO_QUERY);
+ float nCharHeight = xPropertySet->getPropertyValue("CharHeight").get<float>();
+ size_t nIndex = 0;
+ for (auto const& paragraph : maParagraphs)
+ {
+ paragraph->insertAt(rFilterBase, xText, xAt, rTextStyleProperties, aMasterTextStyle,
+ maTextListStyle, (nIndex == 0), nCharHeight, getTextProperties().mnFontScale);
+ ++nIndex;
+ }
+}
+
+bool TextBody::isEmpty() const
+{
+ if (maParagraphs.empty())
+ return true;
+ if ( maParagraphs.size() > 1 )
+ return false;
+
+ const TextRunVector& rRuns = maParagraphs[0]->getRuns();
+ if ( rRuns.empty() )
+ return true;
+ if ( rRuns.size() > 1 )
+ return false;
+
+ return rRuns[0]->getText().isEmpty();
+}
+
+OUString TextBody::toString() const
+{
+ if (!isEmpty())
+ {
+ const TextRunVector& rRuns = maParagraphs.front()->getRuns();
+ if(!rRuns.empty())
+ return rRuns.front()->getText();
+ }
+ return OUString();
+}
+
+bool TextBody::hasVisualRunProperties() const
+{
+ for ( auto& pTextParagraph : getParagraphs() )
+ {
+ if ( pTextParagraph->hasVisualRunProperties() )
+ return true;
+ }
+ return false;
+}
+
+bool TextBody::hasParagraphProperties() const
+{
+ for ( auto& pTextParagraph : getParagraphs() )
+ {
+ if ( pTextParagraph->hasProperties() )
+ return true;
+ }
+ return false;
+}
+
+void TextBody::ApplyStyleEmpty(
+ const ::oox::core::XmlFilterBase& rFilterBase,
+ const Reference < XText > & xText,
+ const TextCharacterProperties& rTextStyleProperties,
+ const TextListStylePtr& pMasterTextListStylePtr) const
+{
+ assert(isEmpty());
+
+ if (maParagraphs.empty())
+ return;
+
+ // Apply character properties
+ PropertySet aPropSet(xText);
+ TextCharacterProperties aTextCharacterProps(maParagraphs[0]->getCharacterStyle(
+ rTextStyleProperties, *pMasterTextListStylePtr, maTextListStyle));
+ aTextCharacterProps.pushToPropSet(aPropSet, rFilterBase);
+
+ // Apply paragraph properties
+ TextListStyle aCombinedTextStyle;
+ aCombinedTextStyle.apply(*pMasterTextListStylePtr);
+ aCombinedTextStyle.apply(maTextListStyle);
+
+ TextParagraphProperties* pTextParagraphStyle = maParagraphs[0]->getParagraphStyle(aCombinedTextStyle);
+ if (pTextParagraphStyle)
+ {
+ Reference< XPropertySet > xProps(xText, UNO_QUERY);
+ PropertyMap aioBulletList;
+ aioBulletList.setProperty< sal_Int32 >(PROP_LeftMargin, 0); // Init bullets left margin to 0 (no bullets).
+ float nCharHeight = xProps->getPropertyValue("CharHeight").get<float>();
+ TextParagraphProperties aParaProp;
+ aParaProp.apply(*pTextParagraphStyle);
+ aParaProp.pushToPropSet(&rFilterBase, xProps, aioBulletList, &pTextParagraphStyle->getBulletList(),
+ true, nCharHeight, getTextProperties().mnFontScale, true);
+ }
+}
+
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/oox/source/drawingml/textbodycontext.cxx b/oox/source/drawingml/textbodycontext.cxx
new file mode 100644
index 000000000..b1e5241aa
--- /dev/null
+++ b/oox/source/drawingml/textbodycontext.cxx
@@ -0,0 +1,221 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ *
+ * This file incorporates work covered by the following license notice:
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed
+ * with this work for additional information regarding copyright
+ * ownership. The ASF licenses this file to you under the Apache
+ * License, Version 2.0 (the "License"); you may not use this file
+ * except in compliance with the License. You may obtain a copy of
+ * the License at http://www.apache.org/licenses/LICENSE-2.0 .
+ */
+
+#include <drawingml/textbodycontext.hxx>
+#include <drawingml/textbodypropertiescontext.hxx>
+#include <drawingml/textparagraph.hxx>
+#include <drawingml/textparagraphpropertiescontext.hxx>
+#include <drawingml/textcharacterpropertiescontext.hxx>
+#include <drawingml/textliststylecontext.hxx>
+#include <drawingml/textfield.hxx>
+#include <drawingml/textfieldcontext.hxx>
+#include <oox/drawingml/shape.hxx>
+#include <oox/token/namespaces.hxx>
+#include <oox/helper/attributelist.hxx>
+#include <sax/fastattribs.hxx>
+#include "hyperlinkcontext.hxx"
+
+#include <oox/mathml/import.hxx>
+
+#include <sal/log.hxx>
+
+using namespace ::oox::core;
+using namespace ::com::sun::star::uno;
+using namespace ::com::sun::star::text;
+using namespace ::com::sun::star::xml::sax;
+
+namespace oox::drawingml {
+
+namespace {
+
+// CT_TextParagraph
+class TextParagraphContext : public ContextHandler2
+{
+public:
+ TextParagraphContext( ContextHandler2Helper const & rParent, TextParagraph& rPara );
+
+ virtual ContextHandlerRef onCreateContext( sal_Int32 aElementToken, const AttributeList& rAttribs ) override;
+
+protected:
+ TextParagraph& mrParagraph;
+};
+
+}
+
+TextParagraphContext::TextParagraphContext( ContextHandler2Helper const & rParent, TextParagraph& rPara )
+: ContextHandler2( rParent )
+, mrParagraph( rPara )
+{
+ mbEnableTrimSpace = false;
+}
+
+ContextHandlerRef TextParagraphContext::onCreateContext( sal_Int32 aElementToken, const AttributeList& rAttribs )
+{
+ // EG_TextRun
+ switch( aElementToken )
+ {
+ case A_TOKEN( r ): // "CT_RegularTextRun" Regular Text Run.
+ case W_TOKEN( r ):
+ {
+ TextRunPtr pRun = std::make_shared<TextRun>();
+ mrParagraph.addRun( pRun );
+ return new RegularTextRunContext( *this, pRun );
+ }
+ case A_TOKEN( br ): // "CT_TextLineBreak" Soft return line break (vertical tab).
+ {
+ TextRunPtr pRun = std::make_shared<TextRun>();
+ pRun->setLineBreak();
+ mrParagraph.addRun( pRun );
+ return new RegularTextRunContext( *this, pRun );
+ }
+ case A_TOKEN( fld ): // "CT_TextField" Text Field.
+ {
+ auto pField = std::make_shared<TextField>();
+ mrParagraph.addRun( pField );
+ return new TextFieldContext( *this, rAttribs, *pField );
+ }
+ case A_TOKEN( pPr ):
+ case W_TOKEN( pPr ):
+ mrParagraph.setHasProperties();
+ return new TextParagraphPropertiesContext( *this, rAttribs, mrParagraph.getProperties() );
+ case A_TOKEN( endParaRPr ):
+ return new TextCharacterPropertiesContext( *this, rAttribs, mrParagraph.getEndProperties() );
+ case W_TOKEN( sdt ):
+ case W_TOKEN( sdtContent ):
+ return this;
+ case W_TOKEN( del ):
+ break;
+ case W_TOKEN( ins ):
+ return this;
+ case OOX_TOKEN(a14, m):
+ return CreateLazyMathBufferingContext(*this, mrParagraph);
+ case W_TOKEN( hyperlink ):
+ {
+ TextRunPtr pRun = std::make_shared<TextRun>();
+ mrParagraph.addRun(pRun);
+ // parse hyperlink attributes: use HyperLinkContext for that
+ rtl::Reference<HyperLinkContext> pContext(new HyperLinkContext(
+ *this, rAttribs, pRun->getTextCharacterProperties().maHyperlinkPropertyMap));
+ // but create text run context because HyperLinkContext can't process internal w:r, w:t, etc
+ return new RegularTextRunContext(*this, pRun);
+ }
+ default:
+ SAL_WARN("oox", "TextParagraphContext::onCreateContext: unhandled element: " << getBaseToken(aElementToken));
+ }
+
+ return nullptr;
+}
+
+RegularTextRunContext::RegularTextRunContext( ContextHandler2Helper const & rParent, TextRunPtr const & pRunPtr )
+: ContextHandler2( rParent )
+, mpRunPtr( pRunPtr )
+, mbIsInText( false )
+{
+}
+
+void RegularTextRunContext::onEndElement( )
+{
+ switch( getCurrentElement() )
+ {
+ case A_TOKEN( t ):
+ case W_TOKEN( t ):
+ {
+ mbIsInText = false;
+ break;
+ }
+ case A_TOKEN( r ):
+ break;
+ }
+}
+
+void RegularTextRunContext::onCharacters( const OUString& aChars )
+{
+ if( mbIsInText )
+ {
+ mpRunPtr->getText() += aChars;
+ }
+}
+
+ContextHandlerRef RegularTextRunContext::onCreateContext( sal_Int32 aElementToken, const AttributeList& rAttribs)
+{
+ switch( aElementToken )
+ {
+ case A_TOKEN( rPr ): // "CT_TextCharPropertyBag" The text char properties of this text run.
+ case W_TOKEN( rPr ):
+ return new TextCharacterPropertiesContext( *this, rAttribs, mpRunPtr->getTextCharacterProperties() );
+ case A_TOKEN( t ): // "xsd:string" minOccurs="1" The actual text string.
+ case W_TOKEN( t ):
+ mbIsInText = true;
+ break;
+ case W_TOKEN( drawing ):
+ break;
+ default:
+ SAL_WARN("oox", "RegularTextRunContext::onCreateContext: unhandled element: " << getBaseToken(aElementToken));
+ break;
+ }
+
+ return this;
+}
+
+TextBodyContext::TextBodyContext( ContextHandler2Helper const & rParent, TextBody& rTextBody )
+: ContextHandler2( rParent )
+, mrTextBody( rTextBody )
+{
+}
+
+TextBodyContext::TextBodyContext(ContextHandler2Helper const& rParent, const ShapePtr& pShapePtr)
+ : TextBodyContext(rParent, *pShapePtr->getTextBody())
+{
+ mpShapePtr = pShapePtr;
+}
+
+ContextHandlerRef TextBodyContext::onCreateContext( sal_Int32 aElementToken, const AttributeList& rAttribs )
+{
+ switch( aElementToken )
+ {
+ case A_TOKEN( bodyPr ): // CT_TextBodyPropertyBag
+ if (sax_fastparser::castToFastAttributeList(rAttribs.getFastAttributeList()).getFastAttributeTokens().size() > 0)
+ mrTextBody.setHasNoninheritedBodyProperties();
+ if ( mpShapePtr )
+ return new TextBodyPropertiesContext( *this, rAttribs, mpShapePtr );
+ else
+ return new TextBodyPropertiesContext( *this, rAttribs, mrTextBody.getTextProperties() );
+ case A_TOKEN( lstStyle ): // CT_TextListStyle
+ return new TextListStyleContext( *this, mrTextBody.getTextListStyle() );
+ case A_TOKEN( p ): // CT_TextParagraph
+ case W_TOKEN( p ):
+ return new TextParagraphContext( *this, mrTextBody.addParagraph() );
+ case W_TOKEN( sdt ):
+ case W_TOKEN( sdtContent ):
+ return this;
+ case W_TOKEN( sdtPr ):
+ case W_TOKEN( sdtEndPr ):
+ break;
+ case W_TOKEN( tbl ):
+ break;
+ default:
+ SAL_WARN("oox", "TextBodyContext::onCreateContext: unhandled element: " << getBaseToken(aElementToken));
+ }
+
+ return nullptr;
+}
+
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/oox/source/drawingml/textbodyproperties.cxx b/oox/source/drawingml/textbodyproperties.cxx
new file mode 100644
index 000000000..e44a103e3
--- /dev/null
+++ b/oox/source/drawingml/textbodyproperties.cxx
@@ -0,0 +1,190 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ *
+ * This file incorporates work covered by the following license notice:
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed
+ * with this work for additional information regarding copyright
+ * ownership. The ASF licenses this file to you under the Apache
+ * License, Version 2.0 (the "License"); you may not use this file
+ * except in compliance with the License. You may obtain a copy of
+ * the License at http://www.apache.org/licenses/LICENSE-2.0 .
+ */
+
+#include <com/sun/star/text/WritingMode.hpp>
+#include <com/sun/star/drawing/TextHorizontalAdjust.hpp>
+#include <drawingml/textbodyproperties.hxx>
+#include <oox/token/properties.hxx>
+#include <oox/token/tokens.hxx>
+#include <tools/gen.hxx>
+#include <svx/svdobj.hxx>
+#include <svx/svdotext.hxx>
+#include <svx/svdoashp.hxx>
+#include <svx/sdtditm.hxx>
+
+#include <array>
+
+using namespace ::com::sun::star::drawing;
+using namespace ::com::sun::star::text;
+using namespace css;
+
+namespace oox::drawingml {
+
+TextBodyProperties::TextBodyProperties()
+ : mbAnchorCtr(false)
+ , meVA( TextVerticalAdjust_TOP )
+{
+}
+
+/* For Legacy purposes: TODO: Check if it is required at all! */
+void TextBodyProperties::pushVertSimulation()
+{
+ sal_Int32 tVert = moVert.get( XML_horz );
+ if( !(tVert == XML_vert || tVert == XML_eaVert || tVert == XML_vert270 || tVert == XML_mongolianVert) )
+ return;
+
+ // #160799# fake different vertical text modes by top-bottom writing mode
+ maPropertyMap.setProperty( PROP_TextWritingMode, WritingMode_TB_RL);
+
+ // workaround for TB_LR as using WritingMode2 doesn't work
+ if( meVA != TextVerticalAdjust_CENTER )
+ maPropertyMap.setProperty( PROP_TextHorizontalAdjust,
+ (tVert == XML_vert270) ? TextHorizontalAdjust_RIGHT : TextHorizontalAdjust_LEFT);
+ if( tVert == XML_vert270 )
+ maPropertyMap.setProperty( PROP_TextVerticalAdjust, TextVerticalAdjust_BOTTOM);
+ if( ( tVert == XML_vert && meVA == TextVerticalAdjust_TOP ) ||
+ ( tVert == XML_vert270 && meVA == TextVerticalAdjust_BOTTOM ) )
+ maPropertyMap.setProperty( PROP_TextHorizontalAdjust, TextHorizontalAdjust_RIGHT);
+ else if( meVA == TextVerticalAdjust_CENTER )
+ maPropertyMap.setProperty( PROP_TextHorizontalAdjust, TextHorizontalAdjust_CENTER);
+}
+
+/* Push text distances / insets, taking into consideration Shape Rotation */
+void TextBodyProperties::pushTextDistances(Size const& rTextAreaSize)
+{
+ for (auto & rValue : maTextDistanceValues)
+ rValue.reset();
+
+ sal_Int32 nOff = 0;
+ static constexpr const std::array<sal_Int32, 4> aProps {
+ PROP_TextLeftDistance,
+ PROP_TextUpperDistance,
+ PROP_TextRightDistance,
+ PROP_TextLowerDistance
+ };
+
+ switch (moRotation.get(0))
+ {
+ case 90*1*60000: nOff = 3; break;
+ case 90*2*60000: nOff = 2; break;
+ case 90*3*60000: nOff = 1; break;
+ default: break;
+ }
+
+ for (size_t i = 0; i < aProps.size(); i++)
+ {
+ sal_Int32 nVal = 0;
+
+ // Hack for n#760986
+ // TODO: Preferred method would be to have a textbox on top
+ // of the shape and the place it according to the (off,ext)
+ if (nOff == 0 && moTextOffLeft)
+ nVal = *moTextOffLeft;
+
+ if (nOff == 1 && moTextOffUpper)
+ nVal = *moTextOffUpper;
+
+
+ if (nOff == 2 && moTextOffRight)
+ nVal = *moTextOffRight;
+
+ if (nOff == 3 && moTextOffLower)
+ nVal = *moTextOffLower;
+
+
+ if( nVal < 0 )
+ nVal = 0;
+
+ sal_Int32 nTextOffsetValue = nVal;
+
+ if (moInsets[i])
+ {
+ nTextOffsetValue = *moInsets[i] + nVal;
+ }
+
+ // if inset is set, then always set the value
+ // this prevents the default to be set (0 is a valid value)
+ if (moInsets[i] || nTextOffsetValue)
+ {
+ maTextDistanceValues[nOff] = nTextOffsetValue;
+ }
+
+ nOff = (nOff + 1) % aProps.size();
+ }
+
+ // Check if bottom and top are set
+ if (maTextDistanceValues[1] && maTextDistanceValues[3])
+ {
+ double nHeight = rTextAreaSize.getHeight();
+
+ double nTop = *maTextDistanceValues[1];
+ double nBottom = *maTextDistanceValues[3];
+
+ // Check if top + bottom is more than text area height.
+ // If yes, we need to adjust the values as defined in OOXML.
+ if (nTop + nBottom >= nHeight)
+ {
+ double diffFactor = (nTop + nBottom - nHeight) / 2.0;
+
+ maTextDistanceValues[1] = nTop - diffFactor;
+ maTextDistanceValues[3] = nBottom - diffFactor;
+ }
+ }
+
+ for (size_t i = 0; i < aProps.size(); i++)
+ {
+ if (maTextDistanceValues[i])
+ maPropertyMap.setProperty(aProps[i], *maTextDistanceValues[i]);
+ }
+}
+
+/* Readjust the text distances / insets if necessary to take
+ the text area into account, not just the shape area*/
+void TextBodyProperties::readjustTextDistances(uno::Reference<drawing::XShape> const& xShape)
+{
+ // Only for custom shapes (for now)
+ auto* pCustomShape = dynamic_cast<SdrObjCustomShape*>(SdrObject::getSdrObjectFromXShape(xShape));
+ if (pCustomShape)
+ {
+ sal_Int32 nLower = pCustomShape->GetTextLowerDistance();
+ sal_Int32 nUpper = pCustomShape->GetTextUpperDistance();
+
+ pCustomShape->SetMergedItem(makeSdrTextUpperDistItem(0));
+ pCustomShape->SetMergedItem(makeSdrTextLowerDistItem(0));
+
+ tools::Rectangle aAnchorRect;
+ pCustomShape->TakeTextAnchorRect(aAnchorRect);
+ Size aAnchorSize = aAnchorRect.GetSize();
+
+ pushTextDistances(aAnchorSize);
+ if (maTextDistanceValues[1] && maTextDistanceValues[3])
+ {
+ nLower = *maTextDistanceValues[3];
+ nUpper = *maTextDistanceValues[1];
+ }
+
+ pCustomShape->SetMergedItem(makeSdrTextLowerDistItem(nLower));
+ pCustomShape->SetMergedItem(makeSdrTextUpperDistItem(nUpper));
+ }
+}
+
+
+} // namespace oox::drawingml
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/oox/source/drawingml/textbodypropertiescontext.cxx b/oox/source/drawingml/textbodypropertiescontext.cxx
new file mode 100644
index 000000000..f7d4abd4e
--- /dev/null
+++ b/oox/source/drawingml/textbodypropertiescontext.cxx
@@ -0,0 +1,220 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ *
+ * This file incorporates work covered by the following license notice:
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed
+ * with this work for additional information regarding copyright
+ * ownership. The ASF licenses this file to you under the Apache
+ * License, Version 2.0 (the "License"); you may not use this file
+ * except in compliance with the License. You may obtain a copy of
+ * the License at http://www.apache.org/licenses/LICENSE-2.0 .
+ */
+
+#include <drawingml/textbodypropertiescontext.hxx>
+
+#include <com/sun/star/text/WritingMode.hpp>
+#include <com/sun/star/drawing/TextFitToSizeType.hpp>
+#include <com/sun/star/drawing/TextHorizontalAdjust.hpp>
+#include <com/sun/star/text/XTextColumns.hpp>
+#include <drawingml/textbodyproperties.hxx>
+#include <drawingml/textbody.hxx>
+#include <drawingml/customshapegeometry.hxx>
+#include <drawingml/scene3dcontext.hxx>
+#include <o3tl/unit_conversion.hxx>
+#include <oox/drawingml/drawingmltypes.hxx>
+#include <oox/helper/attributelist.hxx>
+#include <oox/helper/propertymap.hxx>
+#include <oox/token/namespaces.hxx>
+#include <oox/token/properties.hxx>
+#include <oox/token/tokens.hxx>
+#include <svx/SvxXTextColumns.hxx>
+
+using namespace ::oox::core;
+using namespace ::com::sun::star;
+using namespace ::com::sun::star::drawing;
+using namespace ::com::sun::star::text;
+using namespace ::com::sun::star::uno;
+using namespace ::com::sun::star::xml::sax;
+
+namespace oox::drawingml {
+
+// CT_TextBodyProperties
+TextBodyPropertiesContext::TextBodyPropertiesContext(ContextHandler2Helper const& rParent,
+ const AttributeList& rAttribs,
+ const ShapePtr& pShapePtr)
+ : TextBodyPropertiesContext(rParent, rAttribs, pShapePtr->getTextBody()->getTextProperties())
+{
+ mpShapePtr = pShapePtr;
+}
+
+TextBodyPropertiesContext::TextBodyPropertiesContext( ContextHandler2Helper const & rParent,
+ const AttributeList& rAttribs, TextBodyProperties& rTextBodyProp )
+: ContextHandler2( rParent )
+, mrTextBodyProp( rTextBodyProp )
+{
+ // ST_TextWrappingType
+ sal_Int32 nWrappingType = rAttribs.getToken( XML_wrap, XML_square );
+ mrTextBodyProp.maPropertyMap.setProperty( PROP_TextWordWrap, nWrappingType == XML_square );
+
+ // ST_Coordinate
+ OUString sValue;
+ sal_Int32 aIns[] = { XML_lIns, XML_tIns, XML_rIns, XML_bIns };
+ for( sal_Int32 i = 0; i < sal_Int32(SAL_N_ELEMENTS( aIns )); i++)
+ {
+ sValue = rAttribs.getString( aIns[i] ).get();
+ if( !sValue.isEmpty() )
+ mrTextBodyProp.moInsets[i] = GetCoordinate( sValue );
+ }
+
+ mrTextBodyProp.mbAnchorCtr = rAttribs.getBool( XML_anchorCtr, false );
+ if( mrTextBodyProp.mbAnchorCtr )
+ mrTextBodyProp.maPropertyMap.setProperty( PROP_TextHorizontalAdjust, TextHorizontalAdjust_CENTER );
+
+// bool bCompatLineSpacing = rAttribs.getBool( XML_compatLnSpc, false );
+// bool bForceAA = rAttribs.getBool( XML_forceAA, false );
+ bool bFromWordArt = rAttribs.getBool(XML_fromWordArt, false);
+ mrTextBodyProp.maPropertyMap.setProperty(PROP_FromWordArt, bFromWordArt);
+
+ // ST_TextHorzOverflowType
+ mrTextBodyProp.msHorzOverflow = rAttribs.getString(XML_horzOverflow, "");
+ // ST_TextVertOverflowType
+ mrTextBodyProp.msVertOverflow = rAttribs.getString(XML_vertOverflow, "");
+
+ // ST_TextColumnCount
+ if (const sal_Int32 nColumns = rAttribs.getInteger(XML_numCol, 0); nColumns > 0)
+ {
+ css::uno::Reference<css::text::XTextColumns> xCols(SvxXTextColumns_createInstance(),
+ css::uno::UNO_QUERY_THROW);
+ xCols->setColumnCount(nColumns);
+ css::uno::Reference<css::beans::XPropertySet> xProps(xCols, css::uno::UNO_QUERY_THROW);
+ // ST_PositiveCoordinate32
+ const sal_Int32 nSpacing = o3tl::convert(rAttribs.getInteger(XML_spcCol, 0),
+ o3tl::Length::emu, o3tl::Length::mm100);
+ xProps->setPropertyValue("AutomaticDistance", css::uno::Any(nSpacing));
+ mrTextBodyProp.maPropertyMap.setAnyProperty(PROP_TextColumns, css::uno::Any(xCols));
+ }
+
+ // ST_Angle
+ mrTextBodyProp.moRotation = rAttribs.getInteger( XML_rot );
+
+// bool bRtlCol = rAttribs.getBool( XML_rtlCol, false );
+ // ST_PositiveCoordinate
+// sal_Int32 nSpcCol = rAttribs.getInteger( XML_spcCol, 0 );
+// bool bSpcFirstLastPara = rAttribs.getBool( XML_spcFirstLastPara, 0 );
+
+ bool bUpright = rAttribs.getBool(XML_upright, false);
+ if (bUpright)
+ mrTextBodyProp.moUpright = true;
+
+ // ST_TextVerticalType
+ if( rAttribs.hasAttribute( XML_vert ) ) {
+ mrTextBodyProp.moVert = rAttribs.getToken( XML_vert );
+ sal_Int32 tVert = mrTextBodyProp.moVert.get( XML_horz );
+ if (tVert == XML_vert || tVert == XML_eaVert || tVert == XML_mongolianVert)
+ mrTextBodyProp.moRotation = 5400000;
+ else if (tVert == XML_vert270)
+ mrTextBodyProp.moRotation = 5400000 * 3;
+ else {
+ bool bRtl = rAttribs.getBool( XML_rtl, false );
+ mrTextBodyProp.maPropertyMap.setProperty( PROP_TextWritingMode,
+ ( bRtl ? WritingMode_RL_TB : WritingMode_LR_TB ));
+ }
+ }
+
+ // ST_TextAnchoringType
+ if( rAttribs.hasAttribute( XML_anchor ) )
+ {
+ mrTextBodyProp.meVA = GetTextVerticalAdjust( rAttribs.getToken( XML_anchor, XML_t ) );
+ mrTextBodyProp.maPropertyMap.setProperty( PROP_TextVerticalAdjust, mrTextBodyProp.meVA);
+ }
+
+ // Push defaults
+ mrTextBodyProp.maPropertyMap.setProperty( PROP_TextAutoGrowHeight, false);
+ mrTextBodyProp.maPropertyMap.setProperty( PROP_TextFitToSize, drawing::TextFitToSizeType_NONE);
+}
+
+ContextHandlerRef TextBodyPropertiesContext::onCreateContext( sal_Int32 aElementToken, const AttributeList& rAttribs )
+{
+ switch( aElementToken )
+ {
+ // Sequence
+ case A_TOKEN( prstTxWarp ): // CT_PresetTextShape
+ if( mpShapePtr )
+ {
+ const OptValue<OUString> sPrst = rAttribs.getString( XML_prst );
+ if( sPrst.has() )
+ {
+ mrTextBodyProp.msPrst = sPrst.get();
+ if( mrTextBodyProp.msPrst != "textNoShape" )
+ return new PresetTextShapeContext( *this, rAttribs,
+ *( mpShapePtr->getCustomShapeProperties() ) );
+ }
+ }
+ break;
+
+ case A_TOKEN( prot ): // CT_TextProtectionProperty
+ break;
+
+ // EG_TextAutofit
+ case A_TOKEN( noAutofit ):
+ mrTextBodyProp.maPropertyMap.setProperty( PROP_TextAutoGrowHeight, false); // CT_TextNoAutofit
+ break;
+ case A_TOKEN( normAutofit ): // CT_TextNormalAutofit
+ {
+ mrTextBodyProp.maPropertyMap.setProperty( PROP_TextFitToSize, TextFitToSizeType_AUTOFIT);
+ mrTextBodyProp.maPropertyMap.setProperty( PROP_TextAutoGrowHeight, false);
+ mrTextBodyProp.mnFontScale = rAttribs.getInteger(XML_fontScale, 100000);
+ break;
+ }
+ case A_TOKEN( spAutoFit ):
+ {
+ const sal_Int32 tVert = mrTextBodyProp.moVert.get( XML_horz );
+ if( tVert != XML_vert && tVert != XML_eaVert && tVert != XML_vert270 && tVert != XML_mongolianVert )
+ mrTextBodyProp.maPropertyMap.setProperty( PROP_TextAutoGrowHeight, true);
+ }
+ break;
+
+ case A_TOKEN( scene3d ): // CT_Scene3D
+ {
+ if(mpShapePtr && mpShapePtr->getServiceName() == "com.sun.star.drawing.CustomShape")
+ return new SceneText3DPropertiesContext( *this, mpShapePtr->getTextBody()->get3DProperties() );
+
+ break;
+ }
+
+ // EG_Text3D
+ case A_TOKEN( sp3d ): // CT_Shape3D
+ {
+ if (mpShapePtr && mpShapePtr->getServiceName() == "com.sun.star.drawing.CustomShape")
+ {
+ if (rAttribs.hasAttribute(XML_extrusionH))
+ mpShapePtr->getTextBody()->get3DProperties().mnExtrusionH = rAttribs.getInteger(XML_extrusionH, 0);
+ if (rAttribs.hasAttribute(XML_contourW))
+ mpShapePtr->getTextBody()->get3DProperties().mnContourW = rAttribs.getInteger(XML_contourW, 0);
+ if (rAttribs.hasAttribute(XML_z))
+ mpShapePtr->getTextBody()->get3DProperties().mnShapeZ = rAttribs.getInteger(XML_z, 0);
+ if (rAttribs.hasAttribute(XML_prstMaterial))
+ mpShapePtr->getTextBody()->get3DProperties().mnMaterial = rAttribs.getToken(XML_prstMaterial, XML_none);
+ return new SceneText3DPropertiesContext(*this, mpShapePtr->getTextBody()->get3DProperties());
+ }
+ break;
+ }
+
+ case A_TOKEN( flatTx ): // CT_FlatText
+
+ break;
+ }
+
+ return nullptr;
+}
+
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/oox/source/drawingml/textcharacterproperties.cxx b/oox/source/drawingml/textcharacterproperties.cxx
new file mode 100644
index 000000000..e7bc36763
--- /dev/null
+++ b/oox/source/drawingml/textcharacterproperties.cxx
@@ -0,0 +1,248 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ *
+ * This file incorporates work covered by the following license notice:
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed
+ * with this work for additional information regarding copyright
+ * ownership. The ASF licenses this file to you under the Apache
+ * License, Version 2.0 (the "License"); you may not use this file
+ * except in compliance with the License. You may obtain a copy of
+ * the License at http://www.apache.org/licenses/LICENSE-2.0 .
+ */
+
+#include <drawingml/textcharacterproperties.hxx>
+#include <com/sun/star/lang/Locale.hpp>
+#include <com/sun/star/awt/FontSlant.hpp>
+#include <com/sun/star/awt/FontWeight.hpp>
+#include <com/sun/star/i18n/ScriptType.hpp>
+#include <comphelper/sequence.hxx>
+#include <i18nlangtag/languagetag.hxx>
+#include <i18nlangtag/mslangid.hxx>
+#include <editeng/escapementitem.hxx>
+#include <oox/helper/helper.hxx>
+#include <oox/helper/propertyset.hxx>
+#include <oox/core/xmlfilterbase.hxx>
+#include <oox/drawingml/drawingmltypes.hxx>
+#include <oox/token/properties.hxx>
+#include <oox/token/tokens.hxx>
+
+using ::oox::core::XmlFilterBase;
+using namespace ::com::sun::star;
+using namespace ::com::sun::star::uno;
+using namespace ::com::sun::star::beans;
+
+namespace oox::drawingml {
+
+void TextCharacterProperties::assignUsed( const TextCharacterProperties& rSourceProps )
+{
+ // overwrite all properties existing in rSourceProps
+ maHyperlinkPropertyMap.assignUsed( rSourceProps.maHyperlinkPropertyMap );
+ maLatinFont.assignIfUsed( rSourceProps.maLatinFont );
+ maLatinThemeFont.assignIfUsed( rSourceProps.maLatinThemeFont );
+ maAsianFont.assignIfUsed( rSourceProps.maAsianFont );
+ maAsianThemeFont.assignIfUsed( rSourceProps.maAsianThemeFont );
+ maComplexFont.assignIfUsed( rSourceProps.maComplexFont );
+ maComplexThemeFont.assignIfUsed( rSourceProps.maComplexThemeFont );
+ maSymbolFont.assignIfUsed( rSourceProps.maSymbolFont );
+ maHighlightColor.assignIfUsed( rSourceProps.maHighlightColor );
+ maUnderlineColor.assignIfUsed( rSourceProps.maUnderlineColor );
+ moLang.assignIfUsed( rSourceProps.moLang );
+ moHeight.assignIfUsed( rSourceProps.moHeight );
+ moFontScale.assignIfUsed(rSourceProps.moFontScale);
+ moSpacing.assignIfUsed( rSourceProps.moSpacing );
+ moUnderline.assignIfUsed( rSourceProps.moUnderline );
+ moBaseline.assignIfUsed( rSourceProps.moBaseline );
+ moStrikeout.assignIfUsed( rSourceProps.moStrikeout );
+ moCaseMap.assignIfUsed( rSourceProps.moCaseMap );
+ moBold.assignIfUsed( rSourceProps.moBold );
+ moItalic.assignIfUsed( rSourceProps.moItalic );
+ moUnderlineLineFollowText.assignIfUsed( rSourceProps.moUnderlineLineFollowText );
+ moUnderlineFillFollowText.assignIfUsed( rSourceProps.moUnderlineFillFollowText );
+ moTextOutlineProperties.assignIfUsed(rSourceProps.moTextOutlineProperties);
+
+ maTextEffectsProperties = rSourceProps.maTextEffectsProperties;
+ maFillProperties.assignUsed( rSourceProps.maFillProperties );
+}
+
+void TextCharacterProperties::pushToPropMap( PropertyMap& rPropMap, const XmlFilterBase& rFilter ) const
+{
+ OUString aFontName;
+ sal_Int16 nFontPitch = 0;
+ sal_Int16 nFontFamily = 0;
+
+ bool bRet = maLatinFont.getFontData( aFontName, nFontPitch, nFontFamily, rFilter );
+ if (!bRet)
+ // In case there is no direct font, try to look it up as a theme reference.
+ bRet = maLatinThemeFont.getFontData( aFontName, nFontPitch, nFontFamily, rFilter );
+ if (bRet)
+ {
+ rPropMap.setProperty( PROP_CharFontName, aFontName);
+ rPropMap.setProperty( PROP_CharFontPitch, nFontPitch);
+ rPropMap.setProperty( PROP_CharFontFamily, nFontFamily);
+ }
+
+ bRet = maAsianFont.getFontData( aFontName, nFontPitch, nFontFamily, rFilter );
+ if (!bRet)
+ bRet = maAsianThemeFont.getFontData( aFontName, nFontPitch, nFontFamily, rFilter );
+ if (bRet)
+ {
+ rPropMap.setProperty( PROP_CharFontNameAsian, aFontName);
+ rPropMap.setProperty( PROP_CharFontPitchAsian, nFontFamily);
+ rPropMap.setProperty( PROP_CharFontFamilyAsian, nFontPitch);
+ }
+
+ bRet = maComplexFont.getFontData( aFontName, nFontPitch, nFontFamily, rFilter );
+ if (!bRet)
+ bRet = maComplexThemeFont.getFontData( aFontName, nFontPitch, nFontFamily, rFilter );
+ if (bRet)
+ {
+ rPropMap.setProperty( PROP_CharFontNameComplex, aFontName);
+ rPropMap.setProperty( PROP_CharFontPitchComplex, nFontPitch);
+ rPropMap.setProperty( PROP_CharFontFamilyComplex, nFontFamily);
+ }
+
+ if ( maFillProperties.moFillType.has() )
+ {
+ Color aColor = maFillProperties.getBestSolidColor();
+ bool bContoured = false;
+
+ // noFill doesn't exist for characters. Map noFill to 99% transparency
+ if (maFillProperties.moFillType.get() == XML_noFill)
+ aColor.addTransformation(XML_alpha, 1000);
+
+ // tdf#137438 Emulate text outline color/transparency.
+ // If the outline color dominates, then use it as the text color.
+ if (moTextOutlineProperties.has()
+ && moTextOutlineProperties.get().maLineFill.moFillType.has()
+ && moTextOutlineProperties.get().maLineFill.moFillType.get() != XML_noFill)
+ {
+ Color aLineColor = moTextOutlineProperties.get().maLineFill.getBestSolidColor();
+ sal_Int16 nLineTransparency = aLineColor.getTransparency();
+
+ // tdf#127696 If the text color is white (and the outline color doesn't dominate),
+ // then this is contoured text in LO.
+ if (nLineTransparency < aColor.getTransparency()
+ || (bContoured = aColor.getColor(rFilter.getGraphicHelper()) == COL_WHITE))
+ aColor = aLineColor;
+ }
+ rPropMap.setProperty(PROP_CharColor, aColor.getColor(rFilter.getGraphicHelper()));
+ // set color theme index
+ rPropMap.setProperty(PROP_CharColorTheme, aColor.getSchemeColorIndex());
+ rPropMap.setProperty(PROP_CharColorTintOrShade, aColor.getTintOrShade());
+ rPropMap.setProperty(PROP_CharColorLumMod, aColor.getLumMod());
+ rPropMap.setProperty(PROP_CharColorLumOff, aColor.getLumOff());
+ rPropMap.setProperty(PROP_CharContoured, bContoured);
+
+ if (aColor.hasTransparency())
+ {
+ const auto nTransparency = aColor.getTransparency();
+ rPropMap.setProperty(PROP_CharTransparence, nTransparency);
+
+ // WORKAROUND: Fully transparent white has the same value as COL_AUTO, avoid collision
+ if (nTransparency == 100
+ && aColor.getColor(rFilter.getGraphicHelper()).GetRGBColor() == COL_AUTO.GetRGBColor())
+ rPropMap.setProperty(PROP_CharColor, ::Color(ColorTransparency, 0xFFFFFFFE));
+ }
+ }
+
+ if( moLang.has() && !moLang.get().isEmpty() )
+ {
+ LanguageTag aTag(moLang.get());
+ lang::Locale aLocale(aTag.getLocale());
+ switch(MsLangId::getScriptType(aTag.getLanguageType()))
+ {
+ case css::i18n::ScriptType::LATIN:
+ rPropMap.setProperty( PROP_CharLocale, aLocale);break;
+ case css::i18n::ScriptType::ASIAN:
+ rPropMap.setProperty( PROP_CharLocaleAsian, aLocale);break;
+ case css::i18n::ScriptType::COMPLEX:
+ rPropMap.setProperty( PROP_CharLocaleComplex, aLocale);break;
+ }
+ }
+
+ if( moHeight.has() )
+ {
+ float fHeight = GetFontHeight( moHeight.get() );
+ if (moFontScale.has())
+ fHeight *= (moFontScale.get() / 100000);
+ rPropMap.setProperty( PROP_CharHeight, fHeight);
+ rPropMap.setProperty( PROP_CharHeightAsian, fHeight);
+ rPropMap.setProperty( PROP_CharHeightComplex, fHeight);
+ }
+
+ rPropMap.setProperty( PROP_CharKerning, static_cast<sal_Int16>(GetTextSpacingPoint( moSpacing.get( 0 ) )));
+
+ rPropMap.setProperty( PROP_CharUnderline, GetFontUnderline( moUnderline.get( XML_none ) ));
+ rPropMap.setProperty( PROP_CharStrikeout, GetFontStrikeout( moStrikeout.get( XML_noStrike ) ));
+ rPropMap.setProperty( PROP_CharCaseMap, GetCaseMap( moCaseMap.get( XML_none ) ));
+
+ if( moBaseline.has() ) {
+ rPropMap.setProperty( PROP_CharEscapement, sal_Int16(moBaseline.get( 0 ) / 1000));
+ rPropMap.setProperty( PROP_CharEscapementHeight, sal_Int8(DFLT_ESC_PROP));
+ } else {
+ rPropMap.setProperty( PROP_CharEscapement, sal_Int16(0));
+ rPropMap.setProperty( PROP_CharEscapementHeight, sal_Int8(100)); // 100%
+ }
+
+ float fWeight = moBold.get( false ) ? awt::FontWeight::BOLD : awt::FontWeight::NORMAL;
+ rPropMap.setProperty( PROP_CharWeight, fWeight);
+ rPropMap.setProperty( PROP_CharWeightAsian, fWeight);
+ rPropMap.setProperty( PROP_CharWeightComplex, fWeight);
+
+ awt::FontSlant eSlant = moItalic.get( false ) ? awt::FontSlant_ITALIC : awt::FontSlant_NONE;
+ rPropMap.setProperty( PROP_CharPosture, eSlant);
+ rPropMap.setProperty( PROP_CharPostureAsian, eSlant);
+ rPropMap.setProperty( PROP_CharPostureComplex, eSlant);
+
+ bool bUnderlineFillFollowText = moUnderlineFillFollowText.get( false );
+ if( moUnderline.has() && maUnderlineColor.isUsed() && !bUnderlineFillFollowText )
+ {
+ rPropMap.setProperty( PROP_CharUnderlineHasColor, true);
+ rPropMap.setProperty( PROP_CharUnderlineColor, maUnderlineColor.getColor( rFilter.getGraphicHelper() ));
+ }
+ else
+ {
+ rPropMap.setProperty( PROP_CharUnderlineHasColor, false);
+ rPropMap.setProperty( PROP_CharUnderlineColor, sal_Int32(-1));
+ }
+
+ if (maHighlightColor.isUsed() && maHighlightColor.getTransparency() != 100)
+ rPropMap.setProperty( PROP_CharBackColor, maHighlightColor.getColor( rFilter.getGraphicHelper() ));
+ else
+ rPropMap.setProperty( PROP_CharBackColor, sal_Int32(-1));
+}
+
+static void pushToGrabBag( PropertySet& rPropSet, const std::vector<PropertyValue>& aVectorOfPropertyValues )
+{
+ if (!rPropSet.hasProperty(PROP_CharInteropGrabBag) || aVectorOfPropertyValues.empty())
+ return;
+ Sequence<PropertyValue> aGrabBag;
+ Any aAnyGrabBag = rPropSet.getAnyProperty(PROP_CharInteropGrabBag);
+ aAnyGrabBag >>= aGrabBag;
+
+ rPropSet.setAnyProperty(PROP_CharInteropGrabBag, Any(comphelper::concatSequences(aGrabBag, aVectorOfPropertyValues)));
+}
+
+void TextCharacterProperties::pushToPropSet( PropertySet& rPropSet, const XmlFilterBase& rFilter ) const
+{
+ PropertyMap aPropMap;
+ pushToPropMap( aPropMap, rFilter );
+ rPropSet.setProperties( aPropMap );
+ pushToGrabBag(rPropSet, maTextEffectsProperties);
+}
+
+float TextCharacterProperties::getCharHeightPoints( float fDefault ) const
+{
+ return moHeight.has() ? GetFontHeight( moHeight.get() ) : fDefault;
+}
+
+} // namespace oox::drawingml
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/oox/source/drawingml/textcharacterpropertiescontext.cxx b/oox/source/drawingml/textcharacterpropertiescontext.cxx
new file mode 100644
index 000000000..5ec22d45e
--- /dev/null
+++ b/oox/source/drawingml/textcharacterpropertiescontext.cxx
@@ -0,0 +1,334 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ *
+ * This file incorporates work covered by the following license notice:
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed
+ * with this work for additional information regarding copyright
+ * ownership. The ASF licenses this file to you under the Apache
+ * License, Version 2.0 (the "License"); you may not use this file
+ * except in compliance with the License. You may obtain a copy of
+ * the License at http://www.apache.org/licenses/LICENSE-2.0 .
+ */
+
+#include <drawingml/textcharacterpropertiescontext.hxx>
+
+#include <oox/helper/attributelist.hxx>
+#include <drawingml/colorchoicecontext.hxx>
+#include <drawingml/linepropertiescontext.hxx>
+#include <drawingml/misccontexts.hxx>
+#include <drawingml/textcharacterproperties.hxx>
+#include <drawingml/texteffectscontext.hxx>
+#include "hyperlinkcontext.hxx"
+#include <oox/token/namespaces.hxx>
+#include <oox/token/tokens.hxx>
+#include <sax/fastattribs.hxx>
+
+#include <sal/log.hxx>
+
+using namespace ::oox::core;
+using namespace ::com::sun::star::uno;
+using namespace ::com::sun::star::xml::sax;
+using namespace ::com::sun::star::awt;
+
+namespace oox::drawingml {
+
+// CT_TextCharacterProperties
+TextCharacterPropertiesContext::TextCharacterPropertiesContext(
+ ContextHandler2Helper const & rParent,
+ const AttributeList& rAttribs,
+ TextCharacterProperties& rTextCharacterProperties )
+: ContextHandler2( rParent )
+, mrTextCharacterProperties( rTextCharacterProperties )
+{
+ int nVisualTokenAmount = sax_fastparser::castToFastAttributeList(
+ rAttribs.getFastAttributeList() ).getFastAttributeTokens().size();
+
+ if ( rAttribs.hasAttribute( XML_lang ) )
+ {
+ mrTextCharacterProperties.moLang = rAttribs.getString( XML_lang );
+ --nVisualTokenAmount; // Not a visual attribute
+ }
+ if ( rAttribs.hasAttribute( XML_altLang ))
+ {
+ --nVisualTokenAmount; // Not a visual attribute
+ }
+ if ( rAttribs.hasAttribute( XML_sz ) )
+ mrTextCharacterProperties.moHeight = rAttribs.getInteger( XML_sz );
+ if ( rAttribs.hasAttribute( XML_spc ) )
+ mrTextCharacterProperties.moSpacing = rAttribs.getInteger( XML_spc );
+ if ( rAttribs.hasAttribute( XML_u ) )
+ mrTextCharacterProperties.moUnderline = rAttribs.getToken( XML_u );
+ if ( rAttribs.hasAttribute( XML_strike ) )
+ mrTextCharacterProperties.moStrikeout = rAttribs.getToken( XML_strike );
+ if ( rAttribs.hasAttribute( XML_baseline ) && rAttribs.getInteger( XML_baseline ).get() != 0 )
+ mrTextCharacterProperties.moBaseline = rAttribs.getInteger( XML_baseline );
+
+ if ( rAttribs.hasAttribute( XML_b ) )
+ mrTextCharacterProperties.moBold = rAttribs.getBool( XML_b );
+ if ( rAttribs.hasAttribute( XML_i ) )
+ mrTextCharacterProperties.moItalic = rAttribs.getBool( XML_i );
+ if( rAttribs.hasAttribute( XML_cap ) )
+ mrTextCharacterProperties.moCaseMap = rAttribs.getToken( XML_cap );
+ if ( rAttribs.hasAttribute( XML_dirty ) )
+ {
+ --nVisualTokenAmount; // Not a visual attribute
+ }
+ if ( rAttribs.hasAttribute( XML_smtClean ) )
+ {
+ --nVisualTokenAmount; // Not a visual attribute
+ }
+
+ if ( nVisualTokenAmount > 0 )
+ mrTextCharacterProperties.mbHasVisualRunProperties = true;
+
+ /* TODO / unhandled so far:
+ A_TOKEN( kern )
+ XML_altLang
+ A_TOKEN( kumimoji )
+ A_TOKEN( spc )
+ A_TOKEN( normalizeH )
+ A_TOKEN( noProof )
+ A_TOKEN( dirty )
+ A_TOKEN( err )
+ A_TOKEN( smtClean )
+ A_TOKEN( smtId )
+ */
+}
+
+TextCharacterPropertiesContext::~TextCharacterPropertiesContext()
+{
+}
+
+ContextHandlerRef TextCharacterPropertiesContext::onCreateContext( sal_Int32 aElementToken, const AttributeList& rAttribs )
+{
+ if( aElementToken != A_TOKEN(lang) )
+ mrTextCharacterProperties.mbHasVisualRunProperties = true;
+
+ switch( aElementToken )
+ {
+ case A_TOKEN(ln): // CT_LineProperties
+ // TODO still largely unsupported
+ return new LinePropertiesContext(*this, rAttribs, mrTextCharacterProperties.moTextOutlineProperties.use());
+ // EG_FillProperties
+ case A_TOKEN( noFill ):
+ case A_TOKEN( solidFill ):
+ case A_TOKEN( gradFill ):
+ case A_TOKEN( pattFill ):
+ return FillPropertiesContext::createFillContext( *this, aElementToken, rAttribs, mrTextCharacterProperties.maFillProperties );
+ // EG_EffectProperties
+ case A_TOKEN( effectDag ): // CT_EffectContainer 5.1.10.25
+ case A_TOKEN( effectLst ): // CT_EffectList 5.1.10.26
+ break;
+ case A_TOKEN( highlight ): // CT_Color
+ return new ColorContext(*this, mrTextCharacterProperties.maHighlightColor);
+ case W_TOKEN( highlight ):
+ mrTextCharacterProperties.maHighlightColor = rAttribs.getHighlightColor(W_TOKEN(val));
+ break;
+ // EG_TextUnderlineLine
+ case A_TOKEN( uLnTx ): // CT_TextUnderlineLineFollowText
+ mrTextCharacterProperties.moUnderlineLineFollowText = true;
+ break;
+// TODO unsupported yet
+// case A_TOKEN( uLn ): // CT_LineProperties
+// return new LinePropertiesContext( getHandler(), rAttribs, maUnderlineProperties );
+
+ // EG_TextUnderlineFill
+ case A_TOKEN( uFillTx ): // CT_TextUnderlineFillFollowText
+ mrTextCharacterProperties.moUnderlineFillFollowText = true;
+ break;
+ case A_TOKEN( uFill ): // CT_TextUnderlineFillGroupWrapper->EG_FillProperties (not supported)
+ return new SimpleFillPropertiesContext( *this, mrTextCharacterProperties.maUnderlineColor );
+
+ // CT_FontCollection
+ case A_TOKEN( latin ): // CT_TextFont
+ mrTextCharacterProperties.maLatinFont.setAttributes( rAttribs );
+ break;
+ case A_TOKEN( ea ): // CT_TextFont
+ mrTextCharacterProperties.maAsianFont.setAttributes( rAttribs );
+ break;
+ case A_TOKEN( cs ): // CT_TextFont
+ mrTextCharacterProperties.maComplexFont.setAttributes( rAttribs );
+ break;
+ case A_TOKEN( sym ): // CT_TextFont
+ mrTextCharacterProperties.maSymbolFont.setAttributes( rAttribs );
+ break;
+
+ case A_TOKEN( hlinkClick ): // CT_Hyperlink
+ case A_TOKEN( hlinkMouseOver ): // CT_Hyperlink
+ return new HyperLinkContext( *this, rAttribs, mrTextCharacterProperties.maHyperlinkPropertyMap );
+ case W_TOKEN( rFonts ):
+ if( rAttribs.hasAttribute(W_TOKEN(ascii)) )
+ {
+ mrTextCharacterProperties.maLatinFont.setAttributes(rAttribs.getString(W_TOKEN(ascii), OUString()));
+ }
+ if (rAttribs.hasAttribute(W_TOKEN(asciiTheme)))
+ {
+ mrTextCharacterProperties.maLatinThemeFont.setAttributes(rAttribs.getString(W_TOKEN(asciiTheme), OUString()));
+ }
+ if( rAttribs.hasAttribute(W_TOKEN(cs)) )
+ {
+ mrTextCharacterProperties.maComplexFont.setAttributes(rAttribs.getString(W_TOKEN(cs), OUString()));
+ }
+ if (rAttribs.hasAttribute(W_TOKEN(cstheme)))
+ {
+ mrTextCharacterProperties.maComplexThemeFont.setAttributes(rAttribs.getString(W_TOKEN(cstheme), OUString()));
+ }
+ if( rAttribs.hasAttribute(W_TOKEN(eastAsia)) )
+ {
+ mrTextCharacterProperties.maAsianFont.setAttributes(rAttribs.getString(W_TOKEN(eastAsia), OUString()));
+ }
+ if (rAttribs.hasAttribute(W_TOKEN(eastAsiaTheme)))
+ {
+ mrTextCharacterProperties.maAsianThemeFont.setAttributes(rAttribs.getString(W_TOKEN(eastAsiaTheme), OUString()));
+ }
+ break;
+ case W_TOKEN( u ):
+ {
+ // If you add here, check if it is in drawingmltypes.cxx 113.
+ auto attrib = rAttribs.getString(W_TOKEN(val), OUString());
+ if (attrib == "single" || attrib == "words") // TODO: implement words properly. Now it is a single line.
+ mrTextCharacterProperties.moUnderline = XML_sng;
+ else if (attrib == "wavyHeavy")
+ mrTextCharacterProperties.moUnderline = XML_wavyHeavy;
+ else if (attrib == "wavyDouble")
+ mrTextCharacterProperties.moUnderline = XML_wavyDbl;
+ else if (attrib == "wave")
+ mrTextCharacterProperties.moUnderline = XML_wavy;
+ else if (attrib == "thick")
+ mrTextCharacterProperties.moUnderline = XML_heavy;
+ else if (attrib == "dottedHeavy")
+ mrTextCharacterProperties.moUnderline = XML_dottedHeavy;
+ else if (attrib == "dotted")
+ mrTextCharacterProperties.moUnderline = XML_dotted;
+ else if (attrib == "dashDotDotHeavy")
+ mrTextCharacterProperties.moUnderline = XML_dotDotDashHeavy;
+ else if (attrib == "dotDotDash")
+ mrTextCharacterProperties.moUnderline = XML_dotDotDash;
+ else if (attrib == "dashDotHeavy")
+ mrTextCharacterProperties.moUnderline = XML_dotDashHeavy;
+ else if (attrib == "dotDash")
+ mrTextCharacterProperties.moUnderline = XML_dotDash;
+ else if (attrib == "double")
+ mrTextCharacterProperties.moUnderline = XML_dbl;
+ else if (attrib == "dashLongHeavy")
+ mrTextCharacterProperties.moUnderline = XML_dashLongHeavy;
+ else if (attrib == "dashLong")
+ mrTextCharacterProperties.moUnderline = XML_dashLong;
+ else if (attrib == "dashedHeavy")
+ mrTextCharacterProperties.moUnderline = XML_dashHeavy;
+ else if (attrib == "dash")
+ mrTextCharacterProperties.moUnderline = XML_dash;
+ else if (attrib == "none")
+ mrTextCharacterProperties.moUnderline = XML_none;
+ auto colorAttrib = rAttribs.getIntegerHex(W_TOKEN(color));
+ if (colorAttrib.has())
+ {
+ oox::drawingml::Color theColor;
+ theColor.setSrgbClr(colorAttrib.get());
+ mrTextCharacterProperties.maUnderlineColor = theColor;
+ }
+ break;
+ }
+ case W_TOKEN( spacing ):
+ {
+ auto attrib = rAttribs.getInteger(W_TOKEN( val ), 0);
+ mrTextCharacterProperties.moSpacing = attrib;
+ break;
+ }
+ case W_TOKEN( b ):
+ mrTextCharacterProperties.moBold = rAttribs.getBool(W_TOKEN( val ), true);
+ break;
+ case W_TOKEN( i ):
+ mrTextCharacterProperties.moItalic = rAttribs.getBool(W_TOKEN( val ), true);
+ break;
+ case W_TOKEN( bCs ):
+ break;
+ case W_TOKEN( strike ):
+ if (rAttribs.getBool(W_TOKEN(val), true))
+ mrTextCharacterProperties.moStrikeout = XML_sngStrike;
+ break;
+ case W_TOKEN( dstrike ):
+ if (rAttribs.getBool(W_TOKEN(val), true))
+ mrTextCharacterProperties.moStrikeout = XML_dblStrike;
+ break;
+ case W_TOKEN( color ):
+ if (rAttribs.getInteger(W_TOKEN(val)).has())
+ {
+ mrTextCharacterProperties.maFillProperties.maFillColor.setSrgbClr(rAttribs.getIntegerHex(W_TOKEN(val)).get());
+ mrTextCharacterProperties.maFillProperties.moFillType.set(XML_solidFill);
+ }
+ break;
+ case W_TOKEN( sz ):
+ if (rAttribs.getInteger(W_TOKEN(val)).has())
+ {
+ sal_Int32 nVal = rAttribs.getInteger(W_TOKEN(val)).get();
+ // wml has half points, dml has hundred points
+ mrTextCharacterProperties.moHeight = nVal * 50;
+ }
+ break;
+ case W_TOKEN( szCs ):
+ break;
+ case W_TOKEN( caps ):
+ {
+ if( rAttribs.getBool(W_TOKEN( val ), true) )
+ mrTextCharacterProperties.moCaseMap = XML_all;
+ else
+ mrTextCharacterProperties.moCaseMap = XML_none;
+ }
+ break;
+ case W_TOKEN( smallCaps ):
+ {
+ if( rAttribs.getBool(W_TOKEN( val ), true) )
+ mrTextCharacterProperties.moCaseMap = XML_small;
+ else
+ mrTextCharacterProperties.moCaseMap = XML_none;
+ }
+ break;
+ case W_TOKEN(vertAlign):
+ {
+ // Map wordprocessingML <w:vertAlign w:val="..."/> to drawingML
+ // <a:rPr baseline="...">.
+ sal_Int32 nVal = rAttribs.getToken(W_TOKEN(val), 0);
+ if (nVal == XML_superscript)
+ mrTextCharacterProperties.moBaseline = 30000;
+ else if (nVal == XML_subscript)
+ mrTextCharacterProperties.moBaseline = -25000;
+ break;
+ }
+ case W_TOKEN(lang):
+ mrTextCharacterProperties.moLang = rAttribs.getString(W_TOKEN(val), OUString());
+ break;
+ case OOX_TOKEN(w14, glow):
+ case OOX_TOKEN(w14, shadow):
+ case OOX_TOKEN(w14, reflection):
+ case OOX_TOKEN(w14, textOutline):
+ case OOX_TOKEN(w14, textFill):
+ case OOX_TOKEN(w14, scene3d):
+ case OOX_TOKEN(w14, props3d):
+ case OOX_TOKEN(w14, ligatures):
+ case OOX_TOKEN(w14, numForm):
+ case OOX_TOKEN(w14, numSpacing):
+ case OOX_TOKEN(w14, stylisticSets):
+ case OOX_TOKEN(w14, cntxtAlts):
+ {
+ return new TextEffectsContext( *this, aElementToken, mrTextCharacterProperties.maTextEffectsProperties );
+ }
+ break;
+ default:
+ SAL_WARN("oox", "TextCharacterPropertiesContext::onCreateContext: unhandled element: " << getBaseToken(aElementToken));
+ break;
+ }
+
+ return this;
+}
+
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/oox/source/drawingml/texteffectscontext.cxx b/oox/source/drawingml/texteffectscontext.cxx
new file mode 100644
index 000000000..e380b6425
--- /dev/null
+++ b/oox/source/drawingml/texteffectscontext.cxx
@@ -0,0 +1,318 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ *
+ */
+
+#include <drawingml/texteffectscontext.hxx>
+#include <oox/helper/attributelist.hxx>
+#include <oox/token/namespaces.hxx>
+
+#include <map>
+
+namespace oox::drawingml {
+
+namespace
+{
+
+OUString const & lclGetNameForElementId(sal_uInt32 aId)
+{
+ static std::map<sal_uInt32, OUString> const aIdMap
+ {
+ { OOX_TOKEN(w14, srgbClr) , "srgbClr" },
+ { OOX_TOKEN(w14, schemeClr) , "schemeClr" },
+ { OOX_TOKEN(w14, tint) , "tint" },
+ { OOX_TOKEN(w14, shade) , "shade" },
+ { OOX_TOKEN(w14, alpha) , "alpha" },
+ { OOX_TOKEN(w14, hueMod) , "hueMod" },
+ { OOX_TOKEN(w14, sat) , "sat" },
+ { OOX_TOKEN(w14, satOff) , "satOff" },
+ { OOX_TOKEN(w14, satMod) , "satMod" },
+ { OOX_TOKEN(w14, lum) , "lum" },
+ { OOX_TOKEN(w14, lumOff) , "lumOff" },
+ { OOX_TOKEN(w14, lumMod) , "lumMod" },
+ { OOX_TOKEN(w14, noFill) , "noFill" },
+ { OOX_TOKEN(w14, solidFill) , "solidFill" },
+ { OOX_TOKEN(w14, gradFill) , "gradFill" },
+ { OOX_TOKEN(w14, gsLst) , "gsLst" },
+ { OOX_TOKEN(w14, gs) , "gs" },
+ { OOX_TOKEN(w14, pos) , "pos" },
+ { OOX_TOKEN(w14, lin) , "lin" },
+ { OOX_TOKEN(w14, path) , "path" },
+ { OOX_TOKEN(w14, fillToRect) , "fillToRect" },
+ { OOX_TOKEN(w14, prstDash) , "prstDash" },
+ { OOX_TOKEN(w14, round) , "round" },
+ { OOX_TOKEN(w14, bevel) , "bevel" },
+ { OOX_TOKEN(w14, miter) , "miter" },
+ { OOX_TOKEN(w14, camera) , "camera" },
+ { OOX_TOKEN(w14, lightRig) , "lightRig" },
+ { OOX_TOKEN(w14, rot) , "rot" },
+ { OOX_TOKEN(w14, bevelT) , "bevelT" },
+ { OOX_TOKEN(w14, bevelB) , "bevelB" },
+ { OOX_TOKEN(w14, extrusionClr) , "extrusionClr" },
+ { OOX_TOKEN(w14, contourClr) , "contourClr"} ,
+ { OOX_TOKEN(w14, styleSet) , "styleSet" },
+
+ { OOX_TOKEN(w14, glow) , "glow" },
+ { OOX_TOKEN(w14, shadow) , "shadow" },
+ { OOX_TOKEN(w14, reflection) , "reflection" },
+ { OOX_TOKEN(w14, textOutline) , "textOutline" },
+ { OOX_TOKEN(w14, textFill) , "textFill" },
+ { OOX_TOKEN(w14, scene3d) , "scene3d" },
+ { OOX_TOKEN(w14, props3d) , "props3d" },
+ { OOX_TOKEN(w14, ligatures) , "ligatures" },
+ { OOX_TOKEN(w14, numForm) , "numForm" },
+ { OOX_TOKEN(w14, numSpacing) , "numSpacing" },
+ { OOX_TOKEN(w14, stylisticSets), "stylisticSets" },
+ { OOX_TOKEN(w14, cntxtAlts) , "cntxtAlts" },
+ };
+
+ return aIdMap.find(aId)->second;
+}
+
+OUString const & lclGetGrabBagName(sal_uInt32 aId)
+{
+ static std::map<sal_uInt32, OUString> const aGrabBagNameMap
+ {
+ { OOX_TOKEN(w14, glow) , "CharGlowTextEffect" },
+ { OOX_TOKEN(w14, shadow) , "CharShadowTextEffect" },
+ { OOX_TOKEN(w14, reflection) , "CharReflectionTextEffect" },
+ { OOX_TOKEN(w14, textOutline) , "CharTextOutlineTextEffect" },
+ { OOX_TOKEN(w14, textFill) , "CharTextFillTextEffect" },
+ { OOX_TOKEN(w14, scene3d) , "CharScene3DTextEffect" },
+ { OOX_TOKEN(w14, props3d) , "CharProps3DTextEffect" },
+ { OOX_TOKEN(w14, ligatures) , "CharLigaturesTextEffect" },
+ { OOX_TOKEN(w14, numForm) , "CharNumFormTextEffect" },
+ { OOX_TOKEN(w14, numSpacing) , "CharNumSpacingTextEffect" },
+ { OOX_TOKEN(w14, stylisticSets), "CharStylisticSetsTextEffect" },
+ { OOX_TOKEN(w14, cntxtAlts) , "CharCntxtAltsTextEffect" },
+ };
+
+ return aGrabBagNameMap.find(aId)->second;
+}
+
+}
+
+using namespace oox::core;
+using namespace com::sun::star::uno;
+using namespace com::sun::star::beans;
+
+TextEffectsContext::TextEffectsContext(
+ ContextHandler2Helper const & rParent,
+ sal_Int32 aElementToken,
+ std::vector<PropertyValue>& rTextEffectsProperties)
+ : ContextHandler2(rParent)
+ , mrTextEffectsProperties(rTextEffectsProperties)
+ , mnCurrentElement(aElementToken)
+{
+}
+
+TextEffectsContext::~TextEffectsContext()
+{
+}
+
+void TextEffectsContext::pushAttributeToGrabBag (sal_Int32 aAttributeId, const OUString& rElementName, const AttributeList& rAttribs)
+{
+ if (!rAttribs.hasAttribute(aAttributeId))
+ return;
+ OUString aString = rAttribs.getString(aAttributeId).get();
+ mpGrabBagStack->addString(rElementName, aString);
+}
+
+void TextEffectsContext::processAttributes(const AttributeList& rAttribs)
+{
+ mpGrabBagStack->push("attributes");
+ switch(mnCurrentElement)
+ {
+ case OOX_TOKEN(w14, glow):
+ {
+ pushAttributeToGrabBag(OOX_TOKEN(w14, rad), "rad", rAttribs);
+ }
+ break;
+ case OOX_TOKEN(w14, srgbClr):
+ case OOX_TOKEN(w14, schemeClr):
+ case OOX_TOKEN(w14, tint):
+ case OOX_TOKEN(w14, shade):
+ case OOX_TOKEN(w14, alpha):
+ case OOX_TOKEN(w14, hueMod):
+ case OOX_TOKEN(w14, sat):
+ case OOX_TOKEN(w14, satOff):
+ case OOX_TOKEN(w14, satMod):
+ case OOX_TOKEN(w14, lum):
+ case OOX_TOKEN(w14, lumOff):
+ case OOX_TOKEN(w14, lumMod):
+ {
+ pushAttributeToGrabBag(OOX_TOKEN(w14, val), "val", rAttribs);
+ }
+ break;
+ case OOX_TOKEN(w14, shadow):
+ {
+ pushAttributeToGrabBag(OOX_TOKEN(w14, blurRad), "blurRad", rAttribs);
+ pushAttributeToGrabBag(OOX_TOKEN(w14, dist), "dist", rAttribs);
+ pushAttributeToGrabBag(OOX_TOKEN(w14, dir), "dir", rAttribs);
+ pushAttributeToGrabBag(OOX_TOKEN(w14, sx), "sx", rAttribs);
+ pushAttributeToGrabBag(OOX_TOKEN(w14, sy), "sy", rAttribs);
+ pushAttributeToGrabBag(OOX_TOKEN(w14, kx), "kx", rAttribs);
+ pushAttributeToGrabBag(OOX_TOKEN(w14, ky), "ky", rAttribs);
+ pushAttributeToGrabBag(OOX_TOKEN(w14, algn), "algn", rAttribs);
+ }
+ break;
+ case OOX_TOKEN(w14, reflection):
+ {
+ pushAttributeToGrabBag(OOX_TOKEN(w14, blurRad), "blurRad", rAttribs);
+ pushAttributeToGrabBag(OOX_TOKEN(w14, stA), "stA", rAttribs);
+ pushAttributeToGrabBag(OOX_TOKEN(w14, stPos), "stPos", rAttribs);
+ pushAttributeToGrabBag(OOX_TOKEN(w14, endA), "endA", rAttribs);
+ pushAttributeToGrabBag(OOX_TOKEN(w14, endPos), "endPos", rAttribs);
+ pushAttributeToGrabBag(OOX_TOKEN(w14, dist), "dist", rAttribs);
+ pushAttributeToGrabBag(OOX_TOKEN(w14, dir), "dir", rAttribs);
+ pushAttributeToGrabBag(OOX_TOKEN(w14, fadeDir), "fadeDir", rAttribs);
+ pushAttributeToGrabBag(OOX_TOKEN(w14, sx), "sx", rAttribs);
+ pushAttributeToGrabBag(OOX_TOKEN(w14, sy), "sy", rAttribs);
+ pushAttributeToGrabBag(OOX_TOKEN(w14, kx), "kx", rAttribs);
+ pushAttributeToGrabBag(OOX_TOKEN(w14, ky), "ky", rAttribs);
+ pushAttributeToGrabBag(OOX_TOKEN(w14, algn), "algn", rAttribs);
+ }
+ break;
+ case OOX_TOKEN(w14, textOutline):
+ {
+ pushAttributeToGrabBag(OOX_TOKEN(w14, w), "w", rAttribs);
+ pushAttributeToGrabBag(OOX_TOKEN(w14, cap), "cap", rAttribs);
+ pushAttributeToGrabBag(OOX_TOKEN(w14, cmpd), "cmpd", rAttribs);
+ pushAttributeToGrabBag(OOX_TOKEN(w14, algn), "algn", rAttribs);
+ }
+ break;
+ case OOX_TOKEN(w14, prstDash):
+ {
+ pushAttributeToGrabBag(OOX_TOKEN(w14, val), "val", rAttribs);
+ }
+ break;
+ case OOX_TOKEN(w14, gs):
+ {
+ pushAttributeToGrabBag(OOX_TOKEN(w14, pos), "pos", rAttribs);
+ }
+ break;
+ case OOX_TOKEN(w14, lin):
+ {
+ pushAttributeToGrabBag(OOX_TOKEN(w14, ang), "ang", rAttribs);
+ pushAttributeToGrabBag(OOX_TOKEN(w14, scaled), "scaled", rAttribs);
+ }
+ break;
+ case OOX_TOKEN(w14, path):
+ {
+ pushAttributeToGrabBag(OOX_TOKEN(w14, path), "path", rAttribs);
+ }
+ break;
+ case OOX_TOKEN(w14, fillToRect):
+ {
+ pushAttributeToGrabBag(OOX_TOKEN(w14, l), "l", rAttribs);
+ pushAttributeToGrabBag(OOX_TOKEN(w14, t), "t", rAttribs);
+ pushAttributeToGrabBag(OOX_TOKEN(w14, r), "r", rAttribs);
+ pushAttributeToGrabBag(OOX_TOKEN(w14, b), "b", rAttribs);
+ }
+ break;
+ case OOX_TOKEN(w14, miter):
+ {
+ pushAttributeToGrabBag(OOX_TOKEN(w14, lim), "lim", rAttribs);
+ }
+ break;
+ case OOX_TOKEN(w14, camera):
+ {
+ pushAttributeToGrabBag(OOX_TOKEN(w14, prst), "prst", rAttribs);
+ }
+ break;
+ case OOX_TOKEN(w14, lightRig):
+ {
+ pushAttributeToGrabBag(OOX_TOKEN(w14, rig), "rig", rAttribs);
+ pushAttributeToGrabBag(OOX_TOKEN(w14, dir), "dir", rAttribs);
+ }
+ break;
+ case OOX_TOKEN(w14, rot):
+ {
+ pushAttributeToGrabBag(OOX_TOKEN(w14, lat), "lat", rAttribs);
+ pushAttributeToGrabBag(OOX_TOKEN(w14, lon), "lon", rAttribs);
+ pushAttributeToGrabBag(OOX_TOKEN(w14, rev), "rev", rAttribs);
+ }
+ break;
+ case OOX_TOKEN(w14, props3d):
+ {
+ pushAttributeToGrabBag(OOX_TOKEN(w14, extrusionH), "extrusionH", rAttribs);
+ pushAttributeToGrabBag(OOX_TOKEN(w14, contourW), "contourW", rAttribs);
+ pushAttributeToGrabBag(OOX_TOKEN(w14, prstMaterial), "prstMaterial", rAttribs);
+ }
+ break;
+ case OOX_TOKEN(w14, bevelT):
+ case OOX_TOKEN(w14, bevelB):
+ {
+ pushAttributeToGrabBag(OOX_TOKEN(w14, w), "w", rAttribs);
+ pushAttributeToGrabBag(OOX_TOKEN(w14, h), "h", rAttribs);
+ pushAttributeToGrabBag(OOX_TOKEN(w14, prst), "prst", rAttribs);
+ }
+ break;
+ case OOX_TOKEN(w14, ligatures):
+ case OOX_TOKEN(w14, numForm):
+ case OOX_TOKEN(w14, numSpacing):
+ {
+ pushAttributeToGrabBag(OOX_TOKEN(w14, val), "val", rAttribs);
+ }
+ break;
+ case OOX_TOKEN(w14, styleSet):
+ {
+ pushAttributeToGrabBag(OOX_TOKEN(w14, id), "id", rAttribs);
+ pushAttributeToGrabBag(OOX_TOKEN(w14, val), "val", rAttribs);
+ }
+ break;
+ case OOX_TOKEN(w14, cntxtAlts):
+ {
+ pushAttributeToGrabBag(OOX_TOKEN(w14, val), "val", rAttribs);
+ }
+ break;
+ default:
+ break;
+ }
+
+ mpGrabBagStack->pop();
+}
+
+void TextEffectsContext::onStartElement(const oox::AttributeList& rAttribs)
+{
+ if (mpGrabBagStack == nullptr)
+ {
+ OUString aGrabBagName = lclGetGrabBagName(mnCurrentElement);
+ mpGrabBagStack.reset(new GrabBagStack(aGrabBagName));
+ }
+
+ OUString aElementName = lclGetNameForElementId(mnCurrentElement);
+ mpGrabBagStack->push(aElementName);
+ processAttributes(rAttribs);
+}
+
+void TextEffectsContext::onEndElement()
+{
+ mpGrabBagStack->pop();
+
+ if (mpGrabBagStack->isStackEmpty())
+ {
+ Sequence<PropertyValue> aSeq;
+ PropertyValue aPropertyValue = mpGrabBagStack->getRootProperty();
+ aPropertyValue.Value >>= aSeq;
+ aPropertyValue.Value <<= aSeq[0];
+
+ mrTextEffectsProperties.push_back(aPropertyValue);
+ }
+
+}
+
+ContextHandlerRef TextEffectsContext::onCreateContext(sal_Int32 aElementToken, const AttributeList& /*rAttribs*/)
+{
+ mnCurrentElement = aElementToken;
+ return this;
+}
+
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/oox/source/drawingml/textfield.cxx b/oox/source/drawingml/textfield.cxx
new file mode 100644
index 000000000..664c2dd37
--- /dev/null
+++ b/oox/source/drawingml/textfield.cxx
@@ -0,0 +1,274 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ *
+ * This file incorporates work covered by the following license notice:
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed
+ * with this work for additional information regarding copyright
+ * ownership. The ASF licenses this file to you under the Apache
+ * License, Version 2.0 (the "License"); you may not use this file
+ * except in compliance with the License. You may obtain a copy of
+ * the License at http://www.apache.org/licenses/LICENSE-2.0 .
+ */
+
+#include <sal/config.h>
+
+#include <string_view>
+
+#include <drawingml/textfield.hxx>
+
+#include <rtl/ustring.hxx>
+#include <rtl/string.hxx>
+#include <com/sun/star/beans/XPropertySet.hpp>
+#include <com/sun/star/frame/XModel.hpp>
+#include <com/sun/star/lang/XMultiServiceFactory.hpp>
+#include <com/sun/star/text/XTextField.hpp>
+
+#include <o3tl/string_view.hxx>
+#include <oox/helper/helper.hxx>
+#include <oox/helper/propertyset.hxx>
+#include <oox/core/xmlfilterbase.hxx>
+#include <drawingml/textparagraphproperties.hxx>
+#include <drawingml/textcharacterproperties.hxx>
+#include <tools/diagnose_ex.h>
+#include <editeng/flditem.hxx>
+
+using namespace ::com::sun::star;
+using namespace ::com::sun::star::uno;
+using namespace ::com::sun::star::text;
+using namespace ::com::sun::star::beans;
+using namespace ::com::sun::star::frame;
+using namespace ::com::sun::star::lang;
+
+namespace oox::drawingml {
+
+TextField::TextField()
+{
+}
+
+namespace {
+
+/** instantiate the textfields. Because of semantics difference between
+ * OpenXML and OpenOffice, some OpenXML field might cause two fields to be created.
+ * @param aFields the created fields. The list is empty if no field has been created.
+ * @param xModel the model
+ * @param sType the OpenXML field type.
+ */
+void lclCreateTextFields( std::vector< Reference< XTextField > > & aFields,
+ const Reference< XModel > & xModel, std::u16string_view sType )
+{
+ Reference< XInterface > xIface;
+ Reference< XMultiServiceFactory > xFactory( xModel, UNO_QUERY_THROW );
+ if( o3tl::starts_with(sType, u"datetime"))
+ {
+ auto p = sType.substr(8);
+ try
+ {
+ if (o3tl::starts_with(p, u"'"))
+ {
+ xIface = xFactory->createInstance( "com.sun.star.text.TextField.Custom" );
+ aFields.emplace_back( xIface, UNO_QUERY );
+ return;
+ }
+
+ SvxDateFormat eDateFormat = TextField::getLODateFormat(sType);
+ if (eDateFormat != SvxDateFormat::AppDefault)
+ {
+ xIface = xFactory->createInstance( "com.sun.star.text.TextField.DateTime" );
+ aFields.emplace_back( xIface, UNO_QUERY );
+ Reference< XPropertySet > xProps( xIface, UNO_QUERY_THROW );
+ xProps->setPropertyValue("NumberFormat", Any(static_cast<sal_Int32>(eDateFormat)));
+ xProps->setPropertyValue("IsDate", Any(true));
+ xProps->setPropertyValue("IsFixed", Any(false));
+ }
+
+ SvxTimeFormat eTimeFormat = TextField::getLOTimeFormat(sType);
+ if (eTimeFormat != SvxTimeFormat::AppDefault)
+ {
+ xIface = xFactory->createInstance( "com.sun.star.text.TextField.DateTime" );
+ aFields.emplace_back( xIface, UNO_QUERY );
+ Reference< XPropertySet > xProps( xIface, UNO_QUERY_THROW );
+ xProps->setPropertyValue("NumberFormat", Any(static_cast<sal_Int32>(eTimeFormat)));
+ xProps->setPropertyValue("IsDate", Any(false));
+ xProps->setPropertyValue("IsFixed", Any(false));
+ }
+ }
+ catch(const Exception &)
+ {
+ TOOLS_WARN_EXCEPTION("oox", "");
+ }
+ }
+ else if ( sType == u"slidenum" )
+ {
+ xIface = xFactory->createInstance( "com.sun.star.text.TextField.PageNumber" );
+ aFields.emplace_back( xIface, UNO_QUERY );
+ }
+ else if ( sType == u"slidecount" )
+ {
+ xIface = xFactory->createInstance( "com.sun.star.text.TextField.PageCount" );
+ aFields.emplace_back( xIface, UNO_QUERY );
+ }
+ else if ( sType == u"slidename" )
+ {
+ xIface = xFactory->createInstance( "com.sun.star.text.TextField.PageName" );
+ aFields.emplace_back( xIface, uno::UNO_QUERY );
+ }
+ else if ( o3tl::starts_with(sType, u"file") )
+ {
+ int idx = rtl_ustr_toInt32(sType.data() + 4, 10);
+ xIface = xFactory->createInstance( "com.sun.star.text.TextField.FileName" );
+ aFields.emplace_back( xIface, UNO_QUERY );
+ Reference< XPropertySet > xProps( xIface, UNO_QUERY_THROW );
+
+ switch( idx )
+ {
+ case 1: // Path
+ xProps->setPropertyValue("FileFormat", Any(sal_Int16(1)));
+ break;
+ case 2: // File name without extension
+ xProps->setPropertyValue("FileFormat", Any(sal_Int16(2)));
+ break;
+ case 3: // File name with extension
+ xProps->setPropertyValue("FileFormat", Any(sal_Int16(3)));
+ break;
+ default: // Path/File name
+ xProps->setPropertyValue("FileFormat", Any(sal_Int16(0)));
+ }
+ }
+ else if( sType == u"author" )
+ {
+ xIface = xFactory->createInstance( "com.sun.star.text.TextField.Author" );
+ aFields.emplace_back( xIface, UNO_QUERY );
+ }
+}
+
+} // namespace
+
+sal_Int32 TextField::insertAt(
+ const ::oox::core::XmlFilterBase& rFilterBase,
+ const Reference < XText > & xText,
+ const Reference < XTextCursor > &xAt,
+ const TextCharacterProperties& rTextCharacterStyle,
+ float /*nDefaultCharHeight*/) const
+{
+ sal_Int32 nCharHeight = 0;
+ try
+ {
+ PropertyMap aioBulletList;
+ Reference< XPropertySet > xProps( xAt, UNO_QUERY);
+ PropertySet aPropSet( xProps );
+
+ maTextParagraphProperties.pushToPropSet( &rFilterBase, xProps, aioBulletList, nullptr, true, 18 );
+
+ TextCharacterProperties aTextCharacterProps( rTextCharacterStyle );
+ aTextCharacterProps.assignUsed( maTextParagraphProperties.getTextCharacterProperties() );
+ aTextCharacterProps.assignUsed( getTextCharacterProperties() );
+ if ( aTextCharacterProps.moHeight.has() )
+ nCharHeight = aTextCharacterProps.moHeight.get();
+ aTextCharacterProps.pushToPropSet( aPropSet, rFilterBase );
+
+ std::vector< Reference< XTextField > > fields;
+ lclCreateTextFields( fields, rFilterBase.getModel(), msType );
+ if( !fields.empty() )
+ {
+ bool bFirst = true;
+ for (auto const& field : fields)
+ {
+ if( field.is() )
+ {
+ Reference< XTextContent > xContent( field, UNO_QUERY);
+ if( bFirst)
+ {
+ bFirst = false;
+ }
+ else
+ {
+ xText->insertString( xAt, " ", false );
+ }
+ xText->insertTextContent( xAt, xContent, false );
+ }
+ }
+ }
+ else
+ {
+ xText->insertString( xAt, getText(), false );
+ }
+ }
+ catch( const Exception& )
+ {
+ TOOLS_WARN_EXCEPTION("oox", "OOX: TextField::insertAt()");
+ }
+
+ return nCharHeight;
+}
+
+SvxDateFormat TextField::getLODateFormat(std::u16string_view rDateTimeType)
+{
+ auto aDateTimeNum = rDateTimeType.substr(8);
+
+ if( aDateTimeNum.empty() ) // "datetime"
+ return SvxDateFormat::StdSmall;
+
+ int nDateTimeNum = rtl_ustr_toInt32(aDateTimeNum.data(), 10);
+
+ switch( nDateTimeNum )
+ {
+ case 1: // Date dd/mm/yyyy
+ case 8: // DateTime dd/mm/yyyy H:MM PM
+ case 9: // DateTime dd/mm/yyyy H:MM:SS PM
+ return SvxDateFormat::B;
+ case 2: // Date Day, Month dd, yyyy
+ return SvxDateFormat::StdBig;
+ case 3: // Date dd Month yyyy
+ case 4: // Date Month dd, yyyy - no exact map
+ case 6: // Date Month yy - no exact map
+ return SvxDateFormat::D;
+ case 5: // Date dd-Mon-yy - no exact map
+ case 7: // Date Mon-yy - no exact map
+ return SvxDateFormat::C;
+ case 10: // Time H:MM - not a date format
+ case 11: // Time H:MM:SS - not a date format
+ case 12: // Time H:MM PM - not a date format
+ case 13: // Time H:MM:SS PM - not a date format
+ default:
+ return SvxDateFormat::AppDefault;
+ }
+}
+
+SvxTimeFormat TextField::getLOTimeFormat(std::u16string_view rDateTimeType)
+{
+ auto aDateTimeNum = rDateTimeType.substr(8);
+ int nDateTimeNum = rtl_ustr_toInt32(aDateTimeNum.data(), 10);
+
+ switch( nDateTimeNum )
+ {
+ case 8: // DateTime dd/mm/yyyy H:MM PM
+ case 12: // Time H:MM PM
+ return SvxTimeFormat::HH12_MM;
+ case 9: // DateTime dd/mm/yyyy H:MM:SS PM
+ case 13: // Time H:MM:SS PM
+ return SvxTimeFormat::HH12_MM_SS;
+ case 10: // Time H:MM
+ return SvxTimeFormat::HH24_MM;
+ case 11: // Time H:MM:SS
+ return SvxTimeFormat::Standard;
+ case 1: // Date dd/mm/yyyy
+ case 2: // Date Day, Month dd, yyyy
+ case 3: // Date dd Month yyyy
+ case 4: // Date Month dd, yyyy
+ case 5: // Date dd-Mon-yy
+ case 6: // Date Month yy
+ case 7: // Date Mon-yy
+ default:
+ return SvxTimeFormat::AppDefault;
+ }
+}
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/oox/source/drawingml/textfieldcontext.cxx b/oox/source/drawingml/textfieldcontext.cxx
new file mode 100644
index 000000000..8cfb17c08
--- /dev/null
+++ b/oox/source/drawingml/textfieldcontext.cxx
@@ -0,0 +1,78 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ *
+ * This file incorporates work covered by the following license notice:
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed
+ * with this work for additional information regarding copyright
+ * ownership. The ASF licenses this file to you under the Apache
+ * License, Version 2.0 (the "License"); you may not use this file
+ * except in compliance with the License. You may obtain a copy of
+ * the License at http://www.apache.org/licenses/LICENSE-2.0 .
+ */
+
+#include <drawingml/textfieldcontext.hxx>
+#include <drawingml/textparagraphpropertiescontext.hxx>
+#include <drawingml/textcharacterpropertiescontext.hxx>
+#include <drawingml/textfield.hxx>
+#include <oox/helper/attributelist.hxx>
+#include <oox/token/namespaces.hxx>
+#include <oox/token/tokens.hxx>
+
+using namespace ::oox::core;
+using namespace ::com::sun::star::uno;
+using namespace ::com::sun::star::xml::sax;
+
+namespace oox::drawingml {
+
+TextFieldContext::TextFieldContext( ContextHandler2Helper const & rParent,
+ const AttributeList& rAttributes,
+ TextField& rTextField)
+ : ContextHandler2( rParent )
+ , mrTextField( rTextField )
+ , mbIsInText( false )
+{
+ mrTextField.setUuid( rAttributes.getString( XML_id ).get() );
+ mrTextField.setType( rAttributes.getString( XML_type ).get() );
+}
+
+void TextFieldContext::onEndElement( )
+{
+ if( getCurrentElement() == (A_TOKEN( t )) )
+ {
+ mbIsInText = false;
+ }
+}
+
+void TextFieldContext::onCharacters( const OUString& aChars )
+{
+ if( mbIsInText )
+ {
+ mrTextField.getText() += aChars;
+ }
+}
+
+ContextHandlerRef TextFieldContext::onCreateContext( sal_Int32 aElementToken, const AttributeList& rAttribs )
+{
+ switch( aElementToken )
+ {
+ case A_TOKEN( rPr ):
+ return new TextCharacterPropertiesContext( *this, rAttribs, mrTextField.getTextCharacterProperties() );
+ case A_TOKEN( pPr ):
+ return new TextParagraphPropertiesContext( *this, rAttribs, mrTextField.getTextParagraphProperties() );
+ case A_TOKEN( t ):
+ mbIsInText = true;
+ break;
+ }
+ return this;
+}
+
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/oox/source/drawingml/textfont.cxx b/oox/source/drawingml/textfont.cxx
new file mode 100644
index 000000000..41dd0716a
--- /dev/null
+++ b/oox/source/drawingml/textfont.cxx
@@ -0,0 +1,96 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ *
+ * This file incorporates work covered by the following license notice:
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed
+ * with this work for additional information regarding copyright
+ * ownership. The ASF licenses this file to you under the Apache
+ * License, Version 2.0 (the "License"); you may not use this file
+ * except in compliance with the License. You may obtain a copy of
+ * the License at http://www.apache.org/licenses/LICENSE-2.0 .
+ */
+
+#include <drawingml/textfont.hxx>
+#include <com/sun/star/awt/FontFamily.hpp>
+#include <com/sun/star/awt/FontPitch.hpp>
+#include <oox/drawingml/theme.hxx>
+#include <oox/core/xmlfilterbase.hxx>
+#include <oox/helper/attributelist.hxx>
+#include <oox/token/tokens.hxx>
+
+using ::oox::core::XmlFilterBase;
+
+namespace oox::drawingml {
+
+namespace {
+
+sal_Int16 lclGetFontPitch( sal_Int32 nOoxValue )
+{
+ using namespace ::com::sun::star::awt::FontPitch;
+ static const sal_Int16 spnFontPitch[] = { DONTKNOW, FIXED, VARIABLE };
+ return STATIC_ARRAY_SELECT( spnFontPitch, nOoxValue, DONTKNOW );
+}
+
+sal_Int16 lclGetFontFamily( sal_Int32 nOoxValue )
+{
+ using namespace ::com::sun::star::awt::FontFamily;
+ static const sal_Int16 spnFontFamily[] = { DONTKNOW, ROMAN, SWISS, MODERN, SCRIPT, DECORATIVE };
+ return STATIC_ARRAY_SELECT( spnFontFamily, nOoxValue, DONTKNOW );
+}
+
+} // namespace
+
+TextFont::TextFont() :
+ mnPitch( 0 ),
+ mnCharset( WINDOWS_CHARSET_ANSI )
+{
+}
+
+void TextFont::setAttributes( const AttributeList& rAttribs )
+{
+ maTypeface = rAttribs.getString( XML_typeface, OUString() );
+ maPanose = rAttribs.getString( XML_panose, OUString() );
+ mnPitch = rAttribs.getInteger( XML_pitchFamily, 0 );
+ mnCharset = rAttribs.getInteger( XML_charset, WINDOWS_CHARSET_DEFAULT );
+}
+
+void TextFont::setAttributes( const OUString& sFontName )
+{
+ maTypeface = sFontName;
+ maPanose.clear();
+ mnPitch = 0;
+ mnCharset = WINDOWS_CHARSET_DEFAULT;
+}
+
+void TextFont::assignIfUsed( const TextFont& rTextFont )
+{
+ if( !rTextFont.maTypeface.isEmpty() )
+ *this = rTextFont;
+}
+
+bool TextFont::getFontData( OUString& rFontName, sal_Int16& rnFontPitch, sal_Int16& rnFontFamily, const XmlFilterBase& rFilter ) const
+{
+ if( const Theme* pTheme = rFilter.getCurrentTheme() )
+ if( const TextFont* pFont = pTheme->resolveFont( maTypeface ) )
+ return pFont->implGetFontData( rFontName, rnFontPitch, rnFontFamily );
+ return implGetFontData( rFontName, rnFontPitch, rnFontFamily );
+}
+
+bool TextFont::implGetFontData( OUString& rFontName, sal_Int16& rnFontPitch, sal_Int16& rnFontFamily ) const
+{
+ rFontName = maTypeface;
+ rnFontPitch = lclGetFontPitch( extractValue< sal_Int16 >( mnPitch, 0, 4 ) );
+ rnFontFamily = lclGetFontFamily( extractValue< sal_Int16 >( mnPitch, 4, 4 ) );
+ return !rFontName.isEmpty();
+}
+
+} // namespace oox::drawingml
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/oox/source/drawingml/textliststyle.cxx b/oox/source/drawingml/textliststyle.cxx
new file mode 100644
index 000000000..42679ad44
--- /dev/null
+++ b/oox/source/drawingml/textliststyle.cxx
@@ -0,0 +1,81 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ *
+ * This file incorporates work covered by the following license notice:
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed
+ * with this work for additional information regarding copyright
+ * ownership. The ASF licenses this file to you under the Apache
+ * License, Version 2.0 (the "License"); you may not use this file
+ * except in compliance with the License. You may obtain a copy of
+ * the License at http://www.apache.org/licenses/LICENSE-2.0 .
+ */
+
+#include <drawingml/textliststyle.hxx>
+#include <sal/log.hxx>
+
+namespace oox::drawingml {
+
+TextListStyle::TextListStyle()
+ : mbHasListStyleOnImport(false)
+{
+}
+
+TextListStyle::~TextListStyle()
+{
+}
+
+TextListStyle::TextListStyle(const TextListStyle& rStyle)
+ : mbHasListStyleOnImport(false)
+{
+ for ( size_t i = 0; i < NUM_TEXT_LIST_STYLE_ENTRIES; i++ )
+ {
+ maListStyle[i] = rStyle.maListStyle[i];
+ maAggregationListStyle[i] = rStyle.maAggregationListStyle[i];
+ }
+}
+
+TextListStyle& TextListStyle::operator=(const TextListStyle& rStyle)
+{
+ if(this != &rStyle)
+ {
+ for ( size_t i = 0; i < NUM_TEXT_LIST_STYLE_ENTRIES; i++ )
+ {
+ maListStyle[i] = rStyle.maListStyle[i];
+ maAggregationListStyle[i] = rStyle.maAggregationListStyle[i];
+ }
+ }
+ return *this;
+}
+
+static void applyStyleList( const TextParagraphPropertiesArray& rSourceListStyle, TextParagraphPropertiesArray& rDestListStyle )
+{
+ for ( size_t i = 0; i < NUM_TEXT_LIST_STYLE_ENTRIES; i++ )
+ rDestListStyle[i].apply(rSourceListStyle[i]);
+}
+
+void TextListStyle::apply( const TextListStyle& rTextListStyle )
+{
+ applyStyleList( rTextListStyle.getAggregationListStyle(), getAggregationListStyle() );
+ applyStyleList( rTextListStyle.getListStyle(), getListStyle() );
+}
+
+#ifdef DBG_UTIL
+void TextListStyle::dump() const
+{
+ for ( int i = 0; i < NUM_TEXT_LIST_STYLE_ENTRIES; i++ )
+ {
+ SAL_INFO("oox.drawingml", "text list style level: " << i);
+ maListStyle[i].dump();
+ }
+}
+#endif
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/oox/source/drawingml/textliststylecontext.cxx b/oox/source/drawingml/textliststylecontext.cxx
new file mode 100644
index 000000000..62d81f9c7
--- /dev/null
+++ b/oox/source/drawingml/textliststylecontext.cxx
@@ -0,0 +1,78 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ *
+ * This file incorporates work covered by the following license notice:
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed
+ * with this work for additional information regarding copyright
+ * ownership. The ASF licenses this file to you under the Apache
+ * License, Version 2.0 (the "License"); you may not use this file
+ * except in compliance with the License. You may obtain a copy of
+ * the License at http://www.apache.org/licenses/LICENSE-2.0 .
+ */
+
+#include <drawingml/textliststylecontext.hxx>
+#include <drawingml/textparagraphpropertiescontext.hxx>
+#include <oox/helper/attributelist.hxx>
+#include <oox/token/namespaces.hxx>
+
+using namespace ::oox::core;
+using namespace ::com::sun::star::uno;
+using namespace ::com::sun::star::xml::sax;
+
+namespace oox::drawingml {
+
+// CT_TextListStyle
+TextListStyleContext::TextListStyleContext( ContextHandler2Helper const & rParent, TextListStyle& rTextListStyle )
+: ContextHandler2( rParent )
+, mrTextListStyle( rTextListStyle )
+{
+}
+
+TextListStyleContext::~TextListStyleContext()
+{
+}
+
+ContextHandlerRef TextListStyleContext::onCreateContext( sal_Int32 aElementToken, const AttributeList& rAttribs )
+{
+ mrTextListStyle.setHasListStyleOnImport();
+ switch( aElementToken )
+ {
+ case A_TOKEN( defPPr ): // CT_TextParagraphProperties
+ return new TextParagraphPropertiesContext( *this, rAttribs, mrTextListStyle.getListStyle()[ 0 ] );
+ case A_TOKEN( outline1pPr ):
+ return new TextParagraphPropertiesContext( *this, rAttribs, mrTextListStyle.getAggregationListStyle()[ 0 ] );
+ case A_TOKEN( outline2pPr ):
+ return new TextParagraphPropertiesContext( *this, rAttribs, mrTextListStyle.getAggregationListStyle()[ 1 ] );
+ case A_TOKEN( lvl1pPr ):
+ return new TextParagraphPropertiesContext( *this, rAttribs, mrTextListStyle.getListStyle()[ 0 ] );
+ case A_TOKEN( lvl2pPr ):
+ return new TextParagraphPropertiesContext( *this, rAttribs, mrTextListStyle.getListStyle()[ 1 ] );
+ case A_TOKEN( lvl3pPr ):
+ return new TextParagraphPropertiesContext( *this, rAttribs, mrTextListStyle.getListStyle()[ 2 ] );
+ case A_TOKEN( lvl4pPr ):
+ return new TextParagraphPropertiesContext( *this, rAttribs, mrTextListStyle.getListStyle()[ 3 ] );
+ case A_TOKEN( lvl5pPr ):
+ return new TextParagraphPropertiesContext( *this, rAttribs, mrTextListStyle.getListStyle()[ 4 ] );
+ case A_TOKEN( lvl6pPr ):
+ return new TextParagraphPropertiesContext( *this, rAttribs, mrTextListStyle.getListStyle()[ 5 ] );
+ case A_TOKEN( lvl7pPr ):
+ return new TextParagraphPropertiesContext( *this, rAttribs, mrTextListStyle.getListStyle()[ 6 ] );
+ case A_TOKEN( lvl8pPr ):
+ return new TextParagraphPropertiesContext( *this, rAttribs, mrTextListStyle.getListStyle()[ 7 ] );
+ case A_TOKEN( lvl9pPr ):
+ return new TextParagraphPropertiesContext( *this, rAttribs, mrTextListStyle.getListStyle()[ 8 ] );
+ }
+
+ return this;
+}
+
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/oox/source/drawingml/textparagraph.cxx b/oox/source/drawingml/textparagraph.cxx
new file mode 100644
index 000000000..80f9fd373
--- /dev/null
+++ b/oox/source/drawingml/textparagraph.cxx
@@ -0,0 +1,220 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ *
+ * This file incorporates work covered by the following license notice:
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed
+ * with this work for additional information regarding copyright
+ * ownership. The ASF licenses this file to you under the Apache
+ * License, Version 2.0 (the "License"); you may not use this file
+ * except in compliance with the License. You may obtain a copy of
+ * the License at http://www.apache.org/licenses/LICENSE-2.0 .
+ */
+
+#include <drawingml/textparagraph.hxx>
+#include <oox/drawingml/drawingmltypes.hxx>
+#include <drawingml/textcharacterproperties.hxx>
+#include <svtools/unitconv.hxx>
+
+#include <rtl/ustring.hxx>
+#include <sal/log.hxx>
+#include <oox/mathml/importutils.hxx>
+#include <oox/helper/propertyset.hxx>
+#include <com/sun/star/text/XText.hpp>
+#include <com/sun/star/text/XTextCursor.hpp>
+#include <com/sun/star/text/ControlCharacter.hpp>
+#include <oox/token/properties.hxx>
+
+using namespace ::com::sun::star::text;
+using namespace ::com::sun::star::uno;
+using namespace ::com::sun::star::beans;
+
+namespace oox::drawingml {
+
+TextParagraph::TextParagraph()
+ : mbHasProperties( false )
+{
+}
+
+TextParagraph::~TextParagraph()
+{
+}
+
+TextCharacterProperties TextParagraph::getCharacterStyle (
+ const TextCharacterProperties& rTextStyleProperties,
+ const TextListStyle& rMasterTextListStyle,
+ const TextListStyle& rTextListStyle) const
+{
+ const TextParagraphProperties* pMasterTextParagraphStyle = getParagraphStyle(rMasterTextListStyle);
+ const TextParagraphProperties* pTextParagraphStyle = getParagraphStyle(rTextListStyle);
+
+ TextCharacterProperties aTextCharacterStyle;
+ if (pMasterTextParagraphStyle)
+ aTextCharacterStyle.assignUsed(pMasterTextParagraphStyle->getTextCharacterProperties());
+ aTextCharacterStyle.assignUsed(rTextStyleProperties);
+ if (pTextParagraphStyle)
+ aTextCharacterStyle.assignUsed(pTextParagraphStyle->getTextCharacterProperties());
+ aTextCharacterStyle.assignUsed(maProperties.getTextCharacterProperties());
+ return aTextCharacterStyle;
+}
+
+TextParagraphProperties* TextParagraph::getParagraphStyle(
+ const TextListStyle& rTextListStyle) const
+{
+ sal_Int16 nLevel = maProperties.getLevel();
+
+ SAL_INFO("oox", "TextParagraph::getParagraphStyle - level " << nLevel);
+
+ const TextParagraphPropertiesArray& rListStyle = rTextListStyle.getListStyle();
+ if (nLevel >= static_cast< sal_Int16 >(rListStyle.size()))
+ nLevel = 0;
+ const TextParagraphProperties* pTextParagraphStyle = nullptr;
+ if (!rListStyle.empty())
+ pTextParagraphStyle = &rListStyle[nLevel];
+
+ return const_cast<TextParagraphProperties*>(pTextParagraphStyle);
+}
+
+void TextParagraph::insertAt(
+ const ::oox::core::XmlFilterBase& rFilterBase,
+ const Reference < XText > &xText,
+ const Reference < XTextCursor > &xAt,
+ const TextCharacterProperties& rTextStyleProperties,
+ const TextListStyle& rMasterTextListStyle,
+ const TextListStyle& rTextListStyle, bool bFirst,
+ float nDefaultCharHeight, sal_Int32 nAutofitFontScale) const
+{
+ try {
+ sal_Int32 nParagraphSize = 0;
+ TextCharacterProperties aTextCharacterStyle
+ = getCharacterStyle(rTextStyleProperties, rMasterTextListStyle, rTextListStyle);
+
+ if( !bFirst )
+ {
+ xText->insertControlCharacter( xAt, ControlCharacter::APPEND_PARAGRAPH, false );
+ xAt->gotoEnd( true );
+ }
+
+ sal_Int32 nCharHeight = 0;
+ sal_Int32 nCharHeightFirst = 0;
+ if ( maRuns.empty() )
+ {
+ PropertySet aPropSet( xAt );
+
+ TextCharacterProperties aTextCharacterProps( aTextCharacterStyle );
+ aTextCharacterProps.assignUsed( maEndProperties );
+ if ( aTextCharacterProps.moHeight.has() )
+ nCharHeight = nCharHeightFirst = aTextCharacterProps.moHeight.get();
+ aTextCharacterProps.pushToPropSet( aPropSet, rFilterBase );
+ }
+ else
+ {
+ for( TextRunVector::const_iterator aIt = maRuns.begin(), aEnd = maRuns.end(); aIt != aEnd; ++aIt )
+ {
+ sal_Int32 nLen = (*aIt)->getText().getLength();
+ // n#759180: Force use, maEndProperties for the last segment
+ // This is currently applied to only empty runs
+ if( !nLen && ( ( aIt + 1 ) == aEnd ) )
+ (*aIt)->getTextCharacterProperties().assignUsed( maEndProperties );
+ sal_Int32 nCharHeightCurrent = (*aIt)->insertAt( rFilterBase, xText, xAt, aTextCharacterStyle, nDefaultCharHeight );
+ if(aIt == maRuns.begin())
+ nCharHeightFirst = nCharHeightCurrent;
+ nCharHeight = std::max< sal_Int32 >( nCharHeight, nCharHeightCurrent);
+ nParagraphSize += nLen;
+ }
+ }
+ xAt->gotoEnd( true );
+
+ PropertyMap aioBulletList;
+ Reference< XPropertySet > xProps( xAt, UNO_QUERY);
+
+ TextListStyle aCombinedTextStyle;
+ aCombinedTextStyle.apply(rMasterTextListStyle);
+ aCombinedTextStyle.apply(rTextListStyle);
+ TextParagraphProperties* pTextParagraphStyle = getParagraphStyle(aCombinedTextStyle);
+ if ( pTextParagraphStyle )
+ {
+ TextParagraphProperties aParaProp;
+ aParaProp.apply( *pTextParagraphStyle );
+ aParaProp.apply( maProperties );
+
+ // bullets have same color as following texts by default
+ if( !aioBulletList.hasProperty( PROP_BulletColor ) && !maRuns.empty()
+ && (*maRuns.begin())->getTextCharacterProperties().maFillProperties.moFillType.has() )
+ aioBulletList.setProperty( PROP_BulletColor, (*maRuns.begin())->getTextCharacterProperties().maFillProperties.getBestSolidColor().getColor( rFilterBase.getGraphicHelper() ));
+ if( !aioBulletList.hasProperty( PROP_BulletColor ) && aTextCharacterStyle.maFillProperties.moFillType.has() )
+ aioBulletList.setProperty( PROP_BulletColor, aTextCharacterStyle.maFillProperties.getBestSolidColor().getColor( rFilterBase.getGraphicHelper() ));
+ if( !aioBulletList.hasProperty( PROP_GraphicSize ) && !maRuns.empty()
+ && aParaProp.getBulletList().maGraphic.hasValue())
+ {
+ tools::Long nFirstCharHeightMm = TransformMetric(nCharHeightFirst > 0 ? nCharHeightFirst : 1200, FieldUnit::POINT, FieldUnit::MM);
+ float fBulletSizeRel = 1.f;
+ double fBulletAspectRatio = 1.0;
+
+ if( aParaProp.getBulletList().mnSize.hasValue() )
+ fBulletSizeRel = aParaProp.getBulletList().mnSize.get<sal_Int16>() / 100.f;
+
+ if( aParaProp.getBulletList().mnAspectRatio.hasValue() )
+ fBulletAspectRatio = aParaProp.getBulletList().mnAspectRatio.get<double>();
+
+ css::awt::Size aBulletSize;
+ if( fBulletAspectRatio != 1.0 )
+ {
+ aBulletSize.Height = std::lround(fBulletSizeRel * nFirstCharHeightMm * OOX_BULLET_LIST_SCALE_FACTOR);
+ aBulletSize.Width = aBulletSize.Height * fBulletAspectRatio;
+ }
+ else
+ aBulletSize.Width = aBulletSize.Height = std::lround(fBulletSizeRel * nFirstCharHeightMm * OOX_BULLET_LIST_SCALE_FACTOR);
+
+ aioBulletList.setProperty( PROP_GraphicSize, aBulletSize);
+ }
+
+ float fCharacterSize = nCharHeight > 0 ? GetFontHeight ( nCharHeight ) : pTextParagraphStyle->getCharHeightPoints( 12 );
+ aParaProp.pushToPropSet( &rFilterBase, xProps, aioBulletList, &pTextParagraphStyle->getBulletList(), true, fCharacterSize, nAutofitFontScale, true );
+ }
+
+ // empty paragraphs do not have bullets in ppt
+ if ( !nParagraphSize )
+ {
+ xProps->setPropertyValue( "NumberingLevel", Any( static_cast< sal_Int16 >( -1 ) ) );
+ }
+
+// FIXME this is causing a lot of disruption (ie does not work). I wonder what to do -- Hub
+// Reference< XTextRange > xEnd( xAt, UNO_QUERY );
+// Reference< XPropertySet > xProps2( xEnd, UNO_QUERY );
+// mpEndProperties->pushToPropSet( xProps2 );
+ }
+ catch( Exception & )
+ {
+ SAL_INFO("oox", "exception in TextParagraph::insertAt");
+ }
+}
+
+formulaimport::XmlStreamBuilder & TextParagraph::GetMathXml()
+{
+ if (!m_pMathXml)
+ {
+ m_pMathXml.reset(new formulaimport::XmlStreamBuilder);
+ }
+ return *m_pMathXml;
+}
+
+bool TextParagraph::hasVisualRunProperties() const
+{
+ for ( auto& pTextRun : getRuns() )
+ {
+ if ( pTextRun->hasVisualRunProperties() )
+ return true;
+ }
+ return false;
+}
+
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/oox/source/drawingml/textparagraphproperties.cxx b/oox/source/drawingml/textparagraphproperties.cxx
new file mode 100644
index 000000000..0006b7530
--- /dev/null
+++ b/oox/source/drawingml/textparagraphproperties.cxx
@@ -0,0 +1,553 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ *
+ * This file incorporates work covered by the following license notice:
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed
+ * with this work for additional information regarding copyright
+ * ownership. The ASF licenses this file to you under the Apache
+ * License, Version 2.0 (the "License"); you may not use this file
+ * except in compliance with the License. You may obtain a copy of
+ * the License at http://www.apache.org/licenses/LICENSE-2.0 .
+ */
+
+#include <drawingml/textparagraphproperties.hxx>
+
+#include <com/sun/star/text/XNumberingRulesSupplier.hpp>
+#include <com/sun/star/container/XIndexReplace.hpp>
+#include <com/sun/star/text/HoriOrientation.hpp>
+#include <com/sun/star/awt/FontDescriptor.hpp>
+#include <com/sun/star/awt/FontWeight.hpp>
+#include <com/sun/star/awt/XBitmap.hpp>
+#include <com/sun/star/graphic/XGraphic.hpp>
+#include <com/sun/star/beans/PropertyValue.hpp>
+#include <com/sun/star/style/NumberingType.hpp>
+#include <com/sun/star/style/TabStop.hpp>
+#include <com/sun/star/style/ParagraphAdjust.hpp>
+#include <com/sun/star/drawing/XDrawPage.hpp>
+
+#include <osl/diagnose.h>
+
+#include <oox/helper/propertyset.hxx>
+#include <oox/core/xmlfilterbase.hxx>
+#include <oox/token/properties.hxx>
+#include <oox/token/tokens.hxx>
+
+#if OSL_DEBUG_LEVEL > 0
+#include <com/sun/star/lang/XMultiServiceFactory.hpp>
+#include <com/sun/star/text/XText.hpp>
+#include <com/sun/star/drawing/XShape.hpp>
+#include <oox/ppt/pptimport.hxx>
+#include <oox/ppt/slidepersist.hxx>
+#endif
+
+using namespace ::oox::core;
+using namespace ::com::sun::star::uno;
+using namespace ::com::sun::star::beans;
+using namespace ::com::sun::star::style;
+using namespace ::com::sun::star::text;
+using namespace ::com::sun::star::container;
+using ::com::sun::star::awt::FontDescriptor;
+
+namespace oox::drawingml {
+
+BulletList::BulletList( )
+: maBulletColorPtr( std::make_shared<Color>() ),
+ mbBulletColorFollowText ( false ),
+ mbBulletFontFollowText ( false ),
+ mbBulletSizeFollowText ( false )
+{
+}
+
+bool BulletList::is() const
+{
+ return mnNumberingType.hasValue();
+}
+
+void BulletList::setBulletChar( const OUString & sChar )
+{
+ mnNumberingType <<= NumberingType::CHAR_SPECIAL;
+ msBulletChar <<= sChar;
+}
+
+void BulletList::setGraphic( css::uno::Reference< css::graphic::XGraphic > const & rXGraphic )
+{
+ mnNumberingType <<= NumberingType::BITMAP;
+ maGraphic <<= rXGraphic;
+}
+
+void BulletList::setNone( )
+{
+ mnNumberingType <<= NumberingType::NUMBER_NONE;
+}
+
+void BulletList::setSuffixParenBoth()
+{
+ msNumberingSuffix <<= OUString( ")" );
+ msNumberingPrefix <<= OUString( "(" );
+}
+
+void BulletList::setSuffixParenRight()
+{
+ msNumberingSuffix <<= OUString( ")" );
+ msNumberingPrefix <<= OUString();
+}
+
+void BulletList::setSuffixPeriod()
+{
+ msNumberingSuffix <<= OUString( "." );
+ msNumberingPrefix <<= OUString();
+}
+
+void BulletList::setSuffixNone()
+{
+ msNumberingSuffix <<= OUString();
+ msNumberingPrefix <<= OUString();
+}
+
+void BulletList::setSuffixMinusRight()
+{
+ msNumberingSuffix <<= OUString( "-" );
+ msNumberingPrefix <<= OUString();
+}
+
+void BulletList::setType( sal_Int32 nType )
+{
+ OSL_ASSERT((nType & sal_Int32(0xFFFF0000))==0);
+ switch( nType )
+ {
+ case XML_alphaLcParenBoth:
+ mnNumberingType <<= NumberingType::CHARS_LOWER_LETTER;
+ setSuffixParenBoth();
+ break;
+ case XML_alphaLcParenR:
+ mnNumberingType <<= NumberingType::CHARS_LOWER_LETTER;
+ setSuffixParenRight();
+ break;
+ case XML_alphaLcPeriod:
+ mnNumberingType <<= NumberingType::CHARS_LOWER_LETTER;
+ setSuffixPeriod();
+ break;
+ case XML_alphaUcParenBoth:
+ mnNumberingType <<= NumberingType::CHARS_UPPER_LETTER;
+ setSuffixParenBoth();
+ break;
+ case XML_alphaUcParenR:
+ mnNumberingType <<= NumberingType::CHARS_UPPER_LETTER;
+ setSuffixParenRight();
+ break;
+ case XML_alphaUcPeriod:
+ mnNumberingType <<= NumberingType::CHARS_UPPER_LETTER;
+ setSuffixPeriod();
+ break;
+ case XML_arabic1Minus:
+ case XML_arabic2Minus:
+ case XML_arabicDbPeriod:
+ case XML_arabicDbPlain:
+ // TODO
+ break;
+ case XML_arabicParenBoth:
+ mnNumberingType <<= NumberingType::ARABIC;
+ setSuffixParenBoth();
+ break;
+ case XML_arabicParenR:
+ mnNumberingType <<= NumberingType::ARABIC;
+ setSuffixParenRight();
+ break;
+ case XML_arabicPeriod:
+ mnNumberingType <<= NumberingType::ARABIC;
+ setSuffixPeriod();
+ break;
+ case XML_arabicPlain:
+ mnNumberingType <<= NumberingType::ARABIC;
+ setSuffixNone();
+ break;
+ case XML_circleNumDbPlain:
+ case XML_circleNumWdBlackPlain:
+ case XML_circleNumWdWhitePlain:
+ mnNumberingType <<= NumberingType::CIRCLE_NUMBER;
+ break;
+ case XML_ea1ChsPeriod:
+ mnNumberingType <<= NumberingType::NUMBER_UPPER_ZH;
+ setSuffixPeriod();
+ break;
+ case XML_ea1ChsPlain:
+ mnNumberingType <<= NumberingType::NUMBER_UPPER_ZH;
+ setSuffixNone();
+ break;
+ case XML_ea1ChtPeriod:
+ mnNumberingType <<= NumberingType::NUMBER_UPPER_ZH_TW;
+ setSuffixPeriod();
+ break;
+ case XML_ea1ChtPlain:
+ mnNumberingType <<= NumberingType::NUMBER_UPPER_ZH_TW;
+ setSuffixNone();
+ break;
+ case XML_ea1JpnChsDbPeriod:
+ case XML_ea1JpnKorPeriod:
+ case XML_ea1JpnKorPlain:
+ break;
+ case XML_hebrew2Minus:
+ mnNumberingType <<= NumberingType::CHARS_HEBREW;
+ setSuffixMinusRight();
+ break;
+ case XML_hindiAlpha1Period:
+ case XML_hindiAlphaPeriod:
+ case XML_hindiNumParenR:
+ case XML_hindiNumPeriod:
+ // TODO
+ break;
+ case XML_romanLcParenBoth:
+ mnNumberingType <<= NumberingType::ROMAN_LOWER;
+ setSuffixParenBoth();
+ break;
+ case XML_romanLcParenR:
+ mnNumberingType <<= NumberingType::ROMAN_LOWER;
+ setSuffixParenRight();
+ break;
+ case XML_romanLcPeriod:
+ mnNumberingType <<= NumberingType::ROMAN_LOWER;
+ setSuffixPeriod();
+ break;
+ case XML_romanUcParenBoth:
+ mnNumberingType <<= NumberingType::ROMAN_UPPER;
+ setSuffixParenBoth();
+ break;
+ case XML_romanUcParenR:
+ mnNumberingType <<= NumberingType::ROMAN_UPPER;
+ setSuffixParenRight();
+ break;
+ case XML_romanUcPeriod:
+ mnNumberingType <<= NumberingType::ROMAN_UPPER;
+ setSuffixPeriod();
+ break;
+ case XML_thaiAlphaParenBoth:
+ case XML_thaiNumParenBoth:
+ mnNumberingType <<= NumberingType::CHARS_THAI;
+ setSuffixParenBoth();
+ break;
+ case XML_thaiAlphaParenR:
+ case XML_thaiNumParenR:
+ mnNumberingType <<= NumberingType::CHARS_THAI;
+ setSuffixParenRight();
+ break;
+ case XML_thaiAlphaPeriod:
+ case XML_thaiNumPeriod:
+ mnNumberingType <<= NumberingType::CHARS_THAI;
+ setSuffixPeriod();
+ break;
+ }
+}
+
+void BulletList::setBulletSize(sal_Int16 nSize)
+{
+ mnSize <<= nSize;
+}
+
+void BulletList::setBulletAspectRatio(double nAspectRatio)
+{
+ mnAspectRatio <<= nAspectRatio;
+}
+
+void BulletList::setFontSize(sal_Int16 nSize)
+{
+ mnFontSize <<= nSize;
+}
+
+void BulletList::apply( const BulletList& rSource )
+{
+ if ( rSource.maBulletColorPtr->isUsed() )
+ maBulletColorPtr = rSource.maBulletColorPtr;
+ if ( rSource.mbBulletColorFollowText.hasValue() )
+ mbBulletColorFollowText = rSource.mbBulletColorFollowText;
+ if ( rSource.mbBulletFontFollowText.hasValue() )
+ mbBulletFontFollowText = rSource.mbBulletFontFollowText;
+ if ( rSource.mbBulletSizeFollowText.hasValue() )
+ mbBulletSizeFollowText = rSource.mbBulletSizeFollowText;
+ maBulletFont.assignIfUsed( rSource.maBulletFont );
+ if ( rSource.msBulletChar.hasValue() )
+ msBulletChar = rSource.msBulletChar;
+ if ( rSource.mnStartAt.hasValue() )
+ mnStartAt = rSource.mnStartAt;
+ if ( rSource.mnNumberingType.hasValue() )
+ mnNumberingType = rSource.mnNumberingType;
+ if ( rSource.msNumberingPrefix.hasValue() )
+ msNumberingPrefix = rSource.msNumberingPrefix;
+ if ( rSource.msNumberingSuffix.hasValue() )
+ msNumberingSuffix = rSource.msNumberingSuffix;
+ if ( rSource.mnSize.hasValue() )
+ mnSize = rSource.mnSize;
+ if ( rSource.mnAspectRatio.hasValue() )
+ mnAspectRatio = rSource.mnAspectRatio;
+ if ( rSource.mnFontSize.hasValue() )
+ mnFontSize = rSource.mnFontSize;
+ if ( rSource.maStyleName.hasValue() )
+ maStyleName = rSource.maStyleName;
+ if ( rSource.maGraphic.hasValue() )
+ maGraphic = rSource.maGraphic;
+}
+
+void BulletList::pushToPropMap( const ::oox::core::XmlFilterBase* pFilterBase, PropertyMap& rPropMap ) const
+{
+ if( msNumberingPrefix.hasValue() )
+ rPropMap.setAnyProperty( PROP_Prefix, msNumberingPrefix);
+ if( msNumberingSuffix.hasValue() )
+ rPropMap.setAnyProperty( PROP_Suffix, msNumberingSuffix);
+ if( mnStartAt.hasValue() )
+ rPropMap.setAnyProperty( PROP_StartWith, mnStartAt);
+ rPropMap.setProperty( PROP_Adjust, HoriOrientation::LEFT);
+
+ if( mnNumberingType.hasValue() )
+ rPropMap.setAnyProperty( PROP_NumberingType, mnNumberingType);
+
+ OUString aBulletFontName;
+ sal_Int16 nBulletFontPitch = 0;
+ sal_Int16 nBulletFontFamily = 0;
+ float nBulletFontWeight = css::awt::FontWeight::NORMAL;
+ bool bSymbolFont = false;
+ if( pFilterBase) {
+ bool bFollowTextFont = false;
+ mbBulletFontFollowText >>= bFollowTextFont;
+ if (!bFollowTextFont && maBulletFont.getFontData( aBulletFontName, nBulletFontPitch, nBulletFontFamily, *pFilterBase ) )
+ {
+ FontDescriptor aFontDesc;
+ sal_Int16 nFontSize = 0;
+ if( mnFontSize >>= nFontSize )
+ aFontDesc.Height = nFontSize;
+
+ // TODO move the to the TextFont struct.
+ aFontDesc.Name = aBulletFontName;
+ aFontDesc.Pitch = nBulletFontPitch;
+ aFontDesc.Family = nBulletFontFamily;
+ aFontDesc.Weight = nBulletFontWeight;
+ if ( aBulletFontName.equalsIgnoreAsciiCase("Wingdings") ||
+ aBulletFontName.equalsIgnoreAsciiCase("Wingdings 2") ||
+ aBulletFontName.equalsIgnoreAsciiCase("Wingdings 3") ||
+ aBulletFontName.equalsIgnoreAsciiCase("Monotype Sorts") ||
+ aBulletFontName.equalsIgnoreAsciiCase("Monotype Sorts 2") ||
+ aBulletFontName.equalsIgnoreAsciiCase("Webdings") ||
+ aBulletFontName.equalsIgnoreAsciiCase("StarBats") ||
+ aBulletFontName.equalsIgnoreAsciiCase("StarMath") ||
+ aBulletFontName.equalsIgnoreAsciiCase("ZapfDingbats") ) {
+ aFontDesc.CharSet = RTL_TEXTENCODING_SYMBOL;
+ bSymbolFont = true;
+ }
+ rPropMap.setProperty( PROP_BulletFont, aFontDesc);
+ rPropMap.setProperty( PROP_BulletFontName, aBulletFontName);
+ }
+ }
+ if ( msBulletChar.hasValue() ) {
+ OUString sBuChar;
+
+ msBulletChar >>= sBuChar;
+
+ if( pFilterBase && sBuChar.getLength() == 1 && maBulletFont.getFontData( aBulletFontName, nBulletFontPitch, nBulletFontFamily, *pFilterBase ) && bSymbolFont )
+ {
+ sal_Unicode nBuChar = sBuChar.toChar();
+ nBuChar &= 0x00ff;
+ nBuChar |= 0xf000;
+ sBuChar = OUString( &nBuChar, 1 );
+ }
+
+ rPropMap.setProperty( PROP_BulletChar, sBuChar);
+ }
+ if ( maGraphic.hasValue() )
+ {
+ Reference<css::awt::XBitmap> xBitmap(maGraphic, UNO_QUERY);
+ if (xBitmap.is())
+ rPropMap.setProperty(PROP_GraphicBitmap, xBitmap);
+ }
+ bool bFollowTextSize = false;
+ mbBulletSizeFollowText >>= bFollowTextSize;
+ if( !bFollowTextSize && mnSize.hasValue() )
+ rPropMap.setAnyProperty( PROP_BulletRelSize, mnSize);
+ if ( maStyleName.hasValue() )
+ rPropMap.setAnyProperty( PROP_CharStyleName, maStyleName);
+ if (pFilterBase ) {
+ bool bFollowTextColor = false;
+ mbBulletColorFollowText >>= bFollowTextColor;
+ if ( maBulletColorPtr->isUsed() && !bFollowTextColor )
+ rPropMap.setProperty( PROP_BulletColor, maBulletColorPtr->getColor( pFilterBase->getGraphicHelper() ));
+ }
+}
+
+TextParagraphProperties::TextParagraphProperties()
+: mnLevel( 0 )
+{
+}
+
+void TextParagraphProperties::apply( const TextParagraphProperties& rSourceProps )
+{
+ maTextParagraphPropertyMap.assignAll( rSourceProps.maTextParagraphPropertyMap );
+ maBulletList.apply( rSourceProps.maBulletList );
+ maTextCharacterProperties.assignUsed( rSourceProps.maTextCharacterProperties );
+ if ( rSourceProps.maParaTopMargin.bHasValue )
+ maParaTopMargin = rSourceProps.maParaTopMargin;
+ if ( rSourceProps.maParaBottomMargin.bHasValue )
+ maParaBottomMargin = rSourceProps.maParaBottomMargin;
+ if ( rSourceProps.moParaLeftMargin )
+ moParaLeftMargin = rSourceProps.moParaLeftMargin;
+ if ( rSourceProps.moFirstLineIndentation )
+ moFirstLineIndentation = rSourceProps.moFirstLineIndentation;
+ if( rSourceProps.mnLevel )
+ mnLevel = rSourceProps.mnLevel;
+ if( rSourceProps.moParaAdjust )
+ moParaAdjust = rSourceProps.moParaAdjust;
+ if( rSourceProps.maLineSpacing.bHasValue )
+ maLineSpacing = rSourceProps.maLineSpacing;
+}
+
+void TextParagraphProperties::pushToPropSet( const ::oox::core::XmlFilterBase* pFilterBase,
+ const Reference < XPropertySet >& xPropSet, PropertyMap& rioBulletMap, const BulletList* pMasterBuList, bool bApplyBulletMap, float fCharacterSize,
+ sal_Int32 nAutofitFontScale, bool bPushDefaultValues ) const
+{
+ PropertySet aPropSet( xPropSet );
+ aPropSet.setProperties( maTextParagraphPropertyMap );
+
+ sal_Int32 nNumberingType = NumberingType::NUMBER_NONE;
+ if ( maBulletList.mnNumberingType.hasValue() )
+ {
+ maBulletList.mnNumberingType >>= nNumberingType;
+ aPropSet.setProperty< sal_Int16 >( PROP_NumberingLevel, getLevel() );
+ }
+ else if ( pMasterBuList && pMasterBuList->mnNumberingType.hasValue() )
+ pMasterBuList->mnNumberingType >>= nNumberingType;
+ if ( nNumberingType == NumberingType::NUMBER_NONE )
+ aPropSet.setProperty< sal_Int16 >( PROP_NumberingLevel, -1 );
+
+ maBulletList.pushToPropMap( pFilterBase, rioBulletMap );
+
+ if ( maParaTopMargin.bHasValue || bPushDefaultValues )
+ aPropSet.setProperty( PROP_ParaTopMargin, maParaTopMargin.toMargin( fCharacterSize != 0.0 ? fCharacterSize : getCharHeightPoints ( 12.0 ) ) );
+ if ( maParaBottomMargin.bHasValue || bPushDefaultValues )
+ aPropSet.setProperty( PROP_ParaBottomMargin, maParaBottomMargin.toMargin( fCharacterSize != 0.0 ? fCharacterSize : getCharHeightPoints ( 12.0 ) ) );
+
+ std::optional< sal_Int32 > noParaLeftMargin( moParaLeftMargin );
+ std::optional< sal_Int32 > noFirstLineIndentation( moFirstLineIndentation );
+
+ // tdf#149961 Impress scales the indents when text is autofitted while Powerpoint doesn't
+ // Try to counteract this by multiplying indents by the inverse of the autofit font scale.
+ if ( nAutofitFontScale )
+ {
+ if ( noParaLeftMargin ) noParaLeftMargin = *noParaLeftMargin * MAX_PERCENT / nAutofitFontScale;
+ if ( noFirstLineIndentation ) noFirstLineIndentation = *noFirstLineIndentation * MAX_PERCENT / nAutofitFontScale;
+ }
+
+ if ( nNumberingType != NumberingType::NUMBER_NONE )
+ {
+ if ( noParaLeftMargin )
+ {
+ aPropSet.setProperty<sal_Int32>( PROP_ParaLeftMargin, 0);
+ rioBulletMap.setProperty( PROP_LeftMargin, *noParaLeftMargin);
+ noParaLeftMargin.reset();
+ }
+ if ( noFirstLineIndentation )
+ {
+ // Force Paragraph property as zero - impress seems to use the value from previous
+ // (non) bullet line if not set to zero explicitly :(
+ aPropSet.setProperty<sal_Int32>( PROP_ParaFirstLineIndent, 0);
+ rioBulletMap.setProperty( PROP_FirstLineOffset, *noFirstLineIndentation);
+ noFirstLineIndentation.reset();
+ }
+ if ( nNumberingType != NumberingType::BITMAP && !rioBulletMap.hasProperty( PROP_BulletColor ) && pFilterBase )
+ rioBulletMap.setProperty( PROP_BulletColor, maTextCharacterProperties.maFillProperties.getBestSolidColor().getColor( pFilterBase->getGraphicHelper()));
+ }
+
+ if ( bApplyBulletMap )
+ {
+ Reference< XIndexReplace > xNumRule;
+ aPropSet.getProperty( xNumRule, PROP_NumberingRules );
+ OSL_ENSURE( xNumRule.is(), "can't get Numbering rules");
+
+ try
+ {
+ if( xNumRule.is() )
+ {
+ if( !rioBulletMap.empty() )
+ {
+ // fix default bullet size to be 100%
+ if( !rioBulletMap.hasProperty( PROP_BulletRelSize ) )
+ rioBulletMap.setProperty<sal_Int16>( PROP_BulletRelSize, 100);
+ Sequence< PropertyValue > aBulletPropSeq = rioBulletMap.makePropertyValueSequence();
+ xNumRule->replaceByIndex( getLevel(), Any( aBulletPropSeq ) );
+ }
+
+ aPropSet.setProperty( PROP_NumberingRules, xNumRule );
+ }
+ }
+ catch (const Exception &)
+ {
+ // Don't warn for now, expected to fail for Writer.
+ }
+ }
+ if ( noParaLeftMargin )
+ aPropSet.setProperty( PROP_ParaLeftMargin, *noParaLeftMargin);
+ if ( noFirstLineIndentation )
+ {
+ aPropSet.setProperty( PROP_ParaFirstLineIndent, *noFirstLineIndentation );
+ if( bPushDefaultValues )
+ {
+ // Reset TabStops - these would be auto calculated by Impress
+ TabStop aTabStop;
+ aTabStop.Position = 0;
+ Sequence< TabStop > aSeq { aTabStop };
+ aPropSet.setProperty( PROP_ParaTabStops, aSeq );
+ }
+ }
+
+ if ( moParaAdjust )
+ {
+ aPropSet.setProperty( PROP_ParaAdjust, *moParaAdjust);
+ }
+ else
+ {
+ aPropSet.setProperty( PROP_ParaAdjust, css::style::ParagraphAdjust_LEFT);
+ }
+
+ if ( maLineSpacing.bHasValue )
+ {
+ aPropSet.setProperty( PROP_ParaLineSpacing, maLineSpacing.toLineSpacing());
+ }
+ else
+ {
+ aPropSet.setProperty( PROP_ParaLineSpacing, css::style::LineSpacing( css::style::LineSpacingMode::PROP, 100 ));
+ }
+}
+
+float TextParagraphProperties::getCharHeightPoints( float fDefault ) const
+{
+ return maTextCharacterProperties.getCharHeightPoints( fDefault );
+}
+
+#ifdef DBG_UTIL
+// Note: Please don't remove this function. This is required for
+// debugging pptx import problems.
+void TextParagraphProperties::dump() const
+{
+ Reference< css::drawing::XShape > xShape( oox::ppt::PowerPointImport::mpDebugFilterBase->getModelFactory()->createInstance( "com.sun.star.presentation.TitleTextShape" ), UNO_QUERY );
+ Reference< css::text::XText > xText( xShape, UNO_QUERY );
+
+ Reference< css::drawing::XDrawPage > xDebugPage(ppt::SlidePersist::mxDebugPage.get(), UNO_QUERY);
+ if (xDebugPage.is())
+ xDebugPage->add( xShape );
+
+ PropertyMap emptyMap;
+
+ xText->setString( "debug" );
+ Reference< css::text::XTextCursor > xStart = xText->createTextCursor();
+ xStart->gotoEnd( true );
+ Reference< XPropertySet > xPropSet( xStart, UNO_QUERY );
+ pushToPropSet( nullptr, xPropSet, emptyMap, nullptr, false, 0 );
+ PropertySet aPropSet( xPropSet );
+ aPropSet.dump();
+}
+#endif
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/oox/source/drawingml/textparagraphpropertiescontext.cxx b/oox/source/drawingml/textparagraphpropertiescontext.cxx
new file mode 100644
index 000000000..c1b8763a9
--- /dev/null
+++ b/oox/source/drawingml/textparagraphpropertiescontext.cxx
@@ -0,0 +1,375 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ *
+ * This file incorporates work covered by the following license notice:
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed
+ * with this work for additional information regarding copyright
+ * ownership. The ASF licenses this file to you under the Apache
+ * License, Version 2.0 (the "License"); you may not use this file
+ * except in compliance with the License. You may obtain a copy of
+ * the License at http://www.apache.org/licenses/LICENSE-2.0 .
+ */
+
+#include <drawingml/textparagraphpropertiescontext.hxx>
+
+#include <com/sun/star/text/WritingMode2.hpp>
+#include <com/sun/star/style/ParagraphAdjust.hpp>
+#include <com/sun/star/xml/sax/SAXException.hpp>
+#include <com/sun/star/graphic/XGraphic.hpp>
+#include <com/sun/star/awt/Size.hpp>
+#include <com/sun/star/uno/Reference.hxx>
+
+#include <sal/log.hxx>
+#include <tools/diagnose_ex.h>
+#include <tools/UnitConversion.hxx>
+
+#include <drawingml/colorchoicecontext.hxx>
+#include <drawingml/misccontexts.hxx>
+#include <drawingml/textcharacterpropertiescontext.hxx>
+#include <drawingml/fillproperties.hxx>
+#include <oox/helper/attributelist.hxx>
+#include "textspacingcontext.hxx"
+#include "texttabstoplistcontext.hxx"
+#include <oox/token/namespaces.hxx>
+#include <oox/token/properties.hxx>
+#include <oox/token/tokens.hxx>
+
+using namespace ::oox::core;
+using namespace ::com::sun::star::uno;
+using namespace ::com::sun::star::xml::sax;
+using namespace ::com::sun::star::style;
+using namespace ::com::sun::star::text;
+using namespace ::com::sun::star::graphic;
+
+namespace oox::drawingml {
+namespace {
+
+double lclGetGraphicAspectRatio( const Reference< XGraphic >& rxGraphic )
+{
+ double fRatio = 1.0;
+ Reference< com::sun::star::beans::XPropertySet > xGraphicPropertySet( rxGraphic, UNO_QUERY_THROW );
+ css::awt::Size aSizeHmm( 0, 0 );
+ xGraphicPropertySet->getPropertyValue( "Size100thMM" ) >>= aSizeHmm;
+
+ if( aSizeHmm.Width > 0 && aSizeHmm.Height > 0)
+ return double(aSizeHmm.Width)/double(aSizeHmm.Height);
+ else
+ {
+ css::awt::Size aSourceSizePixel( 0, 0 );
+ xGraphicPropertySet->getPropertyValue( "SizePixel" ) >>= aSourceSizePixel;
+
+ if( aSourceSizePixel.Width > 0 && aSourceSizePixel.Height > 0 )
+ return double(aSourceSizePixel.Width)/double(aSourceSizePixel.Height);
+ }
+ return fRatio;
+}
+
+} //namespace
+
+// CT_TextParagraphProperties
+TextParagraphPropertiesContext::TextParagraphPropertiesContext( ContextHandler2Helper const & rParent,
+ const AttributeList& rAttribs,
+ TextParagraphProperties& rTextParagraphProperties )
+: ContextHandler2( rParent )
+, mrTextParagraphProperties( rTextParagraphProperties )
+, mrBulletList( rTextParagraphProperties.getBulletList() )
+{
+ OUString sValue;
+
+ PropertyMap& rPropertyMap( mrTextParagraphProperties.getTextParagraphPropertyMap() );
+
+ // ST_TextAlignType
+ if ( rAttribs.hasAttribute( XML_algn ) )
+ {
+ mrTextParagraphProperties.getParaAdjust() = GetParaAdjust( rAttribs.getToken( XML_algn, XML_l ) );
+ }
+ // TODO see to do the same with RubyAdjust
+
+ // ST_Coordinate32
+// sValue = rAttribs.getString( XML_defTabSz ).get(); SJ: we need to be able to set the default tab size for each text object,
+// this is possible at the moment only for the whole document.
+// sal_Int32 nDefTabSize = ( sValue.getLength() == 0 ? 0 : GetCoordinate( sValue ) );
+ // TODO
+
+// bool bEaLineBrk = rAttribs.getBool( XML_eaLnBrk, true );
+ if ( rAttribs.hasAttribute( XML_latinLnBrk ) )
+ {
+ bool bLatinLineBrk = rAttribs.getBool( XML_latinLnBrk, true );
+ rPropertyMap.setProperty( PROP_ParaIsHyphenation, bLatinLineBrk);
+ }
+ // TODO see what to do with Asian hyphenation
+
+ // ST_TextFontAlignType
+ // TODO
+// sal_Int32 nFontAlign = rAttribs.getToken( XML_fontAlgn, XML_base );
+
+ if ( rAttribs.hasAttribute( XML_hangingPunct ) )
+ {
+ bool bHangingPunct = rAttribs.getBool( XML_hangingPunct, false );
+ rPropertyMap.setProperty( PROP_ParaIsHangingPunctuation, bHangingPunct);
+ }
+
+ // ST_Coordinate
+ if ( rAttribs.hasAttribute( XML_indent ) )
+ {
+ sValue = rAttribs.getString( XML_indent ).get();
+ mrTextParagraphProperties.getFirstLineIndentation() = std::optional< sal_Int32 >( sValue.isEmpty() ? 0 : GetCoordinate( sValue ) );
+ }
+
+ // ST_TextIndentLevelType
+ // -1 is an invalid value and denote the lack of level
+ sal_Int32 nLevel = rAttribs.getInteger( XML_lvl, 0 );
+ if( nLevel > 8 || nLevel < 0 )
+ {
+ nLevel = 0;
+ }
+
+ mrTextParagraphProperties.setLevel( static_cast< sal_Int16 >( nLevel ) );
+
+ char name[] = "Outline X";
+ name[8] = static_cast<char>( '1' + nLevel );
+ const OUString sStyleNameValue( OUString::createFromAscii( name ) );
+ mrBulletList.setStyleName( sStyleNameValue );
+
+ // ST_TextMargin
+ // ParaLeftMargin
+ if ( rAttribs.hasAttribute( XML_marL ) )
+ {
+ sValue = rAttribs.getString( XML_marL ).get();
+ mrTextParagraphProperties.getParaLeftMargin() = std::optional< sal_Int32 >( sValue.isEmpty() ? 0 : GetCoordinate( sValue ) );
+ }
+
+ // ParaRightMargin
+ if ( rAttribs.hasAttribute( XML_marR ) )
+ {
+ sValue = rAttribs.getString( XML_marR ).get();
+ sal_Int32 nMarR = sValue.isEmpty() ? 0 : GetCoordinate( sValue ) ;
+ rPropertyMap.setProperty( PROP_ParaRightMargin, nMarR);
+ }
+
+ if ( rAttribs.hasAttribute( XML_rtl ) )
+ {
+ bool bRtl = rAttribs.getBool( XML_rtl, false );
+ rPropertyMap.setProperty( PROP_WritingMode, ( bRtl ? WritingMode2::RL_TB : WritingMode2::LR_TB ));
+ }
+}
+
+TextParagraphPropertiesContext::~TextParagraphPropertiesContext()
+{
+ PropertyMap& rPropertyMap( mrTextParagraphProperties.getTextParagraphPropertyMap() );
+ if ( mrTextParagraphProperties.getLineSpacing().bHasValue )
+ rPropertyMap.setProperty( PROP_ParaLineSpacing, mrTextParagraphProperties.getLineSpacing().toLineSpacing());
+ else
+ rPropertyMap.setProperty( PROP_ParaLineSpacing, css::style::LineSpacing( css::style::LineSpacingMode::PROP, 100 ));
+
+ ::std::vector< TabStop >::size_type nTabCount = maTabList.size();
+ if( nTabCount != 0 )
+ {
+ Sequence< TabStop > aSeq( nTabCount );
+ TabStop * aArray = aSeq.getArray();
+ OSL_ENSURE( aArray != nullptr, "sequence array is NULL" );
+ ::std::copy( maTabList.begin(), maTabList.end(), aArray );
+ rPropertyMap.setProperty( PROP_ParaTabStops, aSeq);
+ }
+
+ if (mxBlipProps && mxBlipProps->mxFillGraphic.is())
+ {
+ mrBulletList.setGraphic( mxBlipProps->mxFillGraphic );
+ mrBulletList.setBulletAspectRatio( lclGetGraphicAspectRatio(mxBlipProps->mxFillGraphic) );
+ }
+
+ if( mrBulletList.is() )
+ rPropertyMap.setProperty( PROP_IsNumbering, true);
+ sal_Int16 nLevel = mrTextParagraphProperties.getLevel();
+ rPropertyMap.setProperty( PROP_NumberingLevel, nLevel);
+ rPropertyMap.setProperty( PROP_NumberingIsNumber, true);
+
+ if( mrTextParagraphProperties.getParaAdjust() )
+ rPropertyMap.setProperty( PROP_ParaAdjust, *mrTextParagraphProperties.getParaAdjust());
+}
+
+ContextHandlerRef TextParagraphPropertiesContext::onCreateContext( sal_Int32 aElementToken, const AttributeList& rAttribs )
+{
+ switch( aElementToken )
+ {
+ case A_TOKEN( lnSpc ): // CT_TextSpacing
+ return new TextSpacingContext( *this, mrTextParagraphProperties.getLineSpacing() );
+ case A_TOKEN( spcBef ): // CT_TextSpacing
+ return new TextSpacingContext( *this, mrTextParagraphProperties.getParaTopMargin() );
+ case A_TOKEN( spcAft ): // CT_TextSpacing
+ return new TextSpacingContext( *this, mrTextParagraphProperties.getParaBottomMargin() );
+ // EG_TextBulletColor
+ case A_TOKEN( buClrTx ): // CT_TextBulletColorFollowText ???
+ mrBulletList.mbBulletColorFollowText <<= true;
+ break;
+ case A_TOKEN( buClr ): // CT_Color
+ return new ColorContext( *this, *mrBulletList.maBulletColorPtr );
+ // EG_TextBulletSize
+ case A_TOKEN( buSzTx ): // CT_TextBulletSizeFollowText
+ mrBulletList.mbBulletSizeFollowText <<= true;
+ break;
+ case A_TOKEN( buSzPct ): // CT_TextBulletSizePercent
+ mrBulletList.setBulletSize( std::lround( GetPercent( rAttribs.getString( XML_val ).get() ) / 1000.f ) );
+ break;
+ case A_TOKEN( buSzPts ): // CT_TextBulletSizePoint
+ mrBulletList.setBulletSize(0);
+ mrBulletList.setFontSize( static_cast<sal_Int16>(GetTextSize( rAttribs.getString( XML_val ).get() ) ) );
+ break;
+
+ // EG_TextBulletTypeface
+ case A_TOKEN( buFontTx ): // CT_TextBulletTypefaceFollowText
+ mrBulletList.mbBulletFontFollowText <<= true;
+ break;
+ case A_TOKEN( buFont ): // CT_TextFont
+ mrBulletList.maBulletFont.setAttributes( rAttribs );
+ break;
+
+ // EG_TextBullet
+ case A_TOKEN( buNone ): // CT_TextNoBullet
+ mrBulletList.setNone();
+ break;
+ case A_TOKEN( buAutoNum ): // CT_TextAutonumberBullet
+ {
+ try {
+ sal_Int32 nType = rAttribs.getToken( XML_type, 0 );
+ sal_Int32 nStartAt = rAttribs.getInteger( XML_startAt, 1 );
+ if( nStartAt > 32767 )
+ {
+ nStartAt = 32767;
+ }
+ else if( nStartAt < 1 )
+ {
+ nStartAt = 1;
+ }
+ mrBulletList.setStartAt( nStartAt );
+ mrBulletList.setType( nType );
+ }
+ catch(SAXException& /* e */ )
+ {
+ TOOLS_WARN_EXCEPTION("oox", "OOX: SAXException in XML_buAutoNum");
+ }
+ break;
+ }
+ case A_TOKEN( buChar ): // CT_TextCharBullet
+ try {
+
+ mrBulletList.setBulletChar( rAttribs.getString( XML_char ).get() );
+ mrBulletList.setSuffixNone();
+ }
+ catch(SAXException& /* e */)
+ {
+ TOOLS_WARN_EXCEPTION("oox", "OOX: SAXException in XML_buChar");
+ }
+ break;
+ case A_TOKEN( buBlip ): // CT_TextBlipBullet
+ {
+ mxBlipProps = std::make_shared<BlipFillProperties>();
+ return new BlipFillContext( *this, rAttribs, *mxBlipProps );
+ }
+ case A_TOKEN( tabLst ): // CT_TextTabStopList
+ return new TextTabStopListContext( *this, maTabList );
+ case A_TOKEN( defRPr ): // CT_TextCharacterProperties
+ return new TextCharacterPropertiesContext( *this, rAttribs, mrTextParagraphProperties.getTextCharacterProperties() );
+ case W_TOKEN( jc ):
+ {
+ OptValue< OUString > oParaAdjust = rAttribs.getString( W_TOKEN(val) );
+ if( oParaAdjust.has() && !oParaAdjust.get().isEmpty() )
+ {
+ const OUString& sParaAdjust = oParaAdjust.get();
+ if( sParaAdjust == "left" )
+ mrTextParagraphProperties.setParaAdjust(ParagraphAdjust_LEFT);
+ else if ( sParaAdjust == "right" )
+ mrTextParagraphProperties.setParaAdjust(ParagraphAdjust_RIGHT);
+ else if ( sParaAdjust == "center" )
+ mrTextParagraphProperties.setParaAdjust(ParagraphAdjust_CENTER);
+ else if ( sParaAdjust == "both" )
+ mrTextParagraphProperties.setParaAdjust(ParagraphAdjust_BLOCK);
+ }
+ }
+ break;
+ case W_TOKEN( spacing ):
+ {
+ // Spacing before
+ if( !rAttribs.getBool(W_TOKEN(beforeAutospacing), false) )
+ {
+ OptValue<sal_Int32> oBefore = rAttribs.getInteger(W_TOKEN(before));
+ if (oBefore.has())
+ {
+ TextSpacing& rSpacing = mrTextParagraphProperties.getParaTopMargin();
+ rSpacing.nUnit = TextSpacing::Unit::Points;
+ rSpacing.nValue = convertTwipToMm100(oBefore.get());
+ rSpacing.bHasValue = true;
+ }
+ else
+ {
+ OptValue<sal_Int32> oBeforeLines = rAttribs.getInteger(W_TOKEN(beforeLines));
+ if (oBeforeLines.has())
+ {
+ TextSpacing& rSpacing = mrTextParagraphProperties.getParaTopMargin();
+ rSpacing.nUnit = TextSpacing::Unit::Percent;
+ rSpacing.nValue = oBeforeLines.get() * MAX_PERCENT / 100;
+ rSpacing.bHasValue = true;
+ }
+ }
+ }
+
+ // Spacing after
+ if( !rAttribs.getBool(W_TOKEN(afterAutospacing), false) )
+ {
+ OptValue<sal_Int32> oAfter = rAttribs.getInteger(W_TOKEN(after));
+ if (oAfter.has())
+ {
+ TextSpacing& rSpacing = mrTextParagraphProperties.getParaBottomMargin();
+ rSpacing.nUnit = TextSpacing::Unit::Points;
+ rSpacing.nValue = convertTwipToMm100(oAfter.get());
+ rSpacing.bHasValue = true;
+ }
+ else
+ {
+ OptValue<sal_Int32> oAfterLines = rAttribs.getInteger(W_TOKEN(afterLines));
+ if (oAfterLines.has())
+ {
+ TextSpacing& rSpacing = mrTextParagraphProperties.getParaBottomMargin();
+ rSpacing.nUnit = TextSpacing::Unit::Percent;
+ rSpacing.nValue = oAfterLines.get() * MAX_PERCENT / 100;
+ rSpacing.bHasValue = true;
+ }
+ }
+ }
+
+ // Line spacing
+ OptValue<OUString> oLineRule = rAttribs.getString(W_TOKEN(lineRule));
+ OptValue<sal_Int32> oLineSpacing = rAttribs.getInteger(W_TOKEN(line));
+ if (oLineSpacing.has())
+ {
+ TextSpacing& rLineSpacing = mrTextParagraphProperties.getLineSpacing();
+ if( !oLineRule.has() || oLineRule.get() == "auto" )
+ {
+ rLineSpacing.nUnit = TextSpacing::Unit::Percent;
+ rLineSpacing.nValue = oLineSpacing.get() * MAX_PERCENT / 240;
+ }
+ else
+ {
+ rLineSpacing.nUnit = TextSpacing::Unit::Points;
+ rLineSpacing.nValue = convertTwipToMm100(oLineSpacing.get());
+ }
+ rLineSpacing.bHasValue = true;
+ }
+ }
+ break;
+ default:
+ SAL_WARN("oox", "TextParagraphPropertiesContext::onCreateContext: unhandled element: " << getBaseToken(aElementToken));
+ }
+ return this;
+}
+
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/oox/source/drawingml/textrun.cxx b/oox/source/drawingml/textrun.cxx
new file mode 100644
index 000000000..e3bcecb74
--- /dev/null
+++ b/oox/source/drawingml/textrun.cxx
@@ -0,0 +1,190 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ *
+ * This file incorporates work covered by the following license notice:
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed
+ * with this work for additional information regarding copyright
+ * ownership. The ASF licenses this file to you under the Apache
+ * License, Version 2.0 (the "License"); you may not use this file
+ * except in compliance with the License. You may obtain a copy of
+ * the License at http://www.apache.org/licenses/LICENSE-2.0 .
+ */
+
+#include <drawingml/textrun.hxx>
+
+#include <com/sun/star/frame/XModel.hpp>
+#include <com/sun/star/text/ControlCharacter.hpp>
+#include <com/sun/star/beans/XPropertySet.hpp>
+#include <com/sun/star/beans/XPropertyState.hpp>
+#include <com/sun/star/lang/XMultiServiceFactory.hpp>
+#include <com/sun/star/text/XTextField.hpp>
+
+#include <sal/log.hxx>
+
+#include <oox/helper/helper.hxx>
+#include <oox/helper/propertyset.hxx>
+#include <oox/core/xmlfilterbase.hxx>
+#include <oox/token/properties.hxx>
+#include <oox/token/tokens.hxx>
+#include <tools/diagnose_ex.h>
+
+using namespace ::com::sun::star::uno;
+using namespace ::com::sun::star::text;
+using namespace ::com::sun::star::beans;
+using namespace ::com::sun::star::lang;
+
+namespace oox::drawingml {
+
+TextRun::TextRun() :
+ mbIsLineBreak( false )
+{
+}
+
+TextRun::~TextRun()
+{
+}
+
+sal_Int32 TextRun::insertAt(
+ const ::oox::core::XmlFilterBase& rFilterBase,
+ const Reference < XText > & xText,
+ const Reference < XTextCursor > &xAt,
+ const TextCharacterProperties& rTextCharacterStyle,
+ float nDefaultCharHeight) const
+{
+ sal_Int32 nCharHeight = 0;
+ try {
+ Reference< XTextRange > xStart = xAt;
+ PropertySet aPropSet( xStart );
+
+ Reference<XPropertyState> xState(xStart, UNO_QUERY);
+ Any aOldFontName = xState->getPropertyDefault("CharFontName");
+ Any aOldFontPitch = xState->getPropertyDefault("CharFontPitch");
+ Any aOldFontFamily = xState->getPropertyDefault("CharFontFamily");
+
+ TextCharacterProperties aTextCharacterProps( rTextCharacterStyle );
+
+ // If no text color specified lets anyway initialize it as default:
+ // this will help to recover after hyperlink
+ if (!aTextCharacterProps.maFillProperties.maFillColor.isUsed())
+ aTextCharacterProps.maFillProperties.moFillType = XML_solidFill;
+
+ aTextCharacterProps.assignUsed(maTextCharacterProperties);
+ if ( aTextCharacterProps.moHeight.has() )
+ nCharHeight = aTextCharacterProps.moHeight.get();
+ else
+ // UNO API has the character height as float, DML has it as int, but in hundreds.
+ aTextCharacterProps.moHeight = static_cast<sal_Int32>(nDefaultCharHeight * 100);
+ aTextCharacterProps.pushToPropSet( aPropSet, rFilterBase );
+
+ if( maTextCharacterProperties.maHyperlinkPropertyMap.empty() )
+ {
+ if( mbIsLineBreak )
+ {
+ SAL_WARN("oox", "OOX: TextRun::insertAt() insert line break" );
+ xText->insertControlCharacter( xStart, ControlCharacter::LINE_BREAK, false );
+ }
+ else if (!getText().isEmpty())
+ {
+ sal_Int32 nIndex = 0;
+ sal_Int32 nMax = getText().getLength();
+ while(true)
+ {
+ bool bSymbol = (getText()[nIndex] & 0xff00) == 0xf000;
+ sal_Int32 nCount = 1;
+ while(nIndex + nCount < nMax
+ && ((getText()[nIndex + nCount] & 0xff00) == 0xf000) == bSymbol)
+ ++nCount;
+
+ OUString aFontName;
+ sal_Int16 nFontFamily = 0, nFontPitch = 0;
+ bool bReset = false;
+
+ // Direct formatting for symbols.
+ if (bSymbol && aTextCharacterProps.maSymbolFont.getFontData(aFontName, nFontPitch, nFontFamily, rFilterBase))
+
+ {
+ aPropSet.setAnyProperty(PROP_CharFontName, Any(aFontName));
+ aPropSet.setAnyProperty(PROP_CharFontPitch, Any(nFontPitch));
+ aPropSet.setAnyProperty(PROP_CharFontFamily, Any(nFontFamily));
+ bReset = true;
+ }
+
+ OUString aSubString(getText().copy(nIndex, nCount));
+ xText->insertString(xStart, aSubString, false);
+
+ aPropSet = PropertySet(xStart);
+ // Reset to whatever it was.
+ if (bReset)
+ {
+ aPropSet.setAnyProperty(PROP_CharFontName, aOldFontName);
+ aPropSet.setAnyProperty(PROP_CharFontPitch, aOldFontPitch);
+ aPropSet.setAnyProperty(PROP_CharFontFamily, aOldFontFamily);
+ }
+
+ nIndex += nCount;
+
+ if (nIndex >= nMax)
+ break;
+
+ aTextCharacterProps.pushToPropSet(aPropSet, rFilterBase);
+ }
+ }
+ }
+ else
+ {
+ SAL_WARN("oox", "OOX: URL field" );
+ Reference< XMultiServiceFactory > xFactory( rFilterBase.getModel(), UNO_QUERY );
+ Reference< XTextField > xField( xFactory->createInstance( "com.sun.star.text.TextField.URL" ), UNO_QUERY );
+ if( xField.is() )
+ {
+ Reference< XTextCursor > xTextFieldCursor = xText->createTextCursor();
+ xTextFieldCursor->gotoEnd( false );
+
+ PropertySet aFieldProps( xField );
+ aFieldProps.setProperties( maTextCharacterProperties.maHyperlinkPropertyMap );
+ aFieldProps.setProperty( PROP_Representation, getText() );
+ xText->insertTextContent( xStart, xField, false );
+
+ xTextFieldCursor->gotoEnd( true );
+
+ if (!maTextCharacterProperties.maHyperlinkPropertyMap.hasProperty(PROP_CharColor))
+ aTextCharacterProps.maFillProperties.maFillColor.setSchemeClr(XML_hlink);
+
+ aTextCharacterProps.maFillProperties.moFillType.set(XML_solidFill);
+ if ( !maTextCharacterProperties.moUnderline.has() )
+ aTextCharacterProps.moUnderline.set( XML_sng );
+
+ PropertySet aFieldTextPropSet( xTextFieldCursor );
+ aTextCharacterProps.pushToPropSet( aFieldTextPropSet, rFilterBase );
+
+ oox::core::TextField aTextField;
+ aTextField.xText = xText;
+ aTextField.xTextCursor = xTextFieldCursor;
+ aTextField.xTextField = xField;
+ rFilterBase.getTextFieldStack().push_back( aTextField );
+ }
+ else
+ {
+ SAL_WARN("oox", "OOX: URL field couldn't be created" );
+ xText->insertString( xStart, getText(), false );
+ }
+ }
+ }
+ catch( const Exception& )
+ {
+ TOOLS_WARN_EXCEPTION("oox", "OOX: TextRun::insertAt()");
+ }
+
+ return nCharHeight;
+}
+
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/oox/source/drawingml/textspacingcontext.cxx b/oox/source/drawingml/textspacingcontext.cxx
new file mode 100644
index 000000000..f96f1a20c
--- /dev/null
+++ b/oox/source/drawingml/textspacingcontext.cxx
@@ -0,0 +1,63 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ *
+ * This file incorporates work covered by the following license notice:
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed
+ * with this work for additional information regarding copyright
+ * ownership. The ASF licenses this file to you under the Apache
+ * License, Version 2.0 (the "License"); you may not use this file
+ * except in compliance with the License. You may obtain a copy of
+ * the License at http://www.apache.org/licenses/LICENSE-2.0 .
+ */
+
+#include <oox/drawingml/drawingmltypes.hxx>
+#include <oox/helper/attributelist.hxx>
+#include <oox/token/namespaces.hxx>
+#include <oox/token/tokens.hxx>
+#include <drawingml/textspacing.hxx>
+#include "textspacingcontext.hxx"
+
+using namespace ::oox::core;
+using namespace ::com::sun::star::xml::sax;
+using namespace ::com::sun::star::uno;
+
+namespace oox::drawingml {
+
+ TextSpacingContext::TextSpacingContext( ContextHandler2Helper const & rParent, TextSpacing & aSpacing )
+ : ContextHandler2( rParent )
+ , maSpacing( aSpacing )
+ {
+ maSpacing.bHasValue = true;
+ }
+
+ ContextHandlerRef TextSpacingContext::onCreateContext( ::sal_Int32 aElement,
+ const AttributeList& rAttribs )
+ {
+ switch( aElement )
+ {
+ case A_TOKEN( spcPct ):
+ maSpacing.nUnit = TextSpacing::Unit::Percent;
+ maSpacing.nValue = GetPercent( rAttribs.getString( XML_val ).get() );
+ break;
+ case A_TOKEN( spcPts ):
+ maSpacing.nUnit = TextSpacing::Unit::Points;
+ maSpacing.nValue = GetTextSpacingPoint( rAttribs.getString( XML_val ).get() );
+ maSpacing.bExactValue = true;
+ break;
+ default:
+ break;
+ }
+
+ return this;
+ }
+
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/oox/source/drawingml/textspacingcontext.hxx b/oox/source/drawingml/textspacingcontext.hxx
new file mode 100644
index 000000000..5af2c0544
--- /dev/null
+++ b/oox/source/drawingml/textspacingcontext.hxx
@@ -0,0 +1,44 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ *
+ * This file incorporates work covered by the following license notice:
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed
+ * with this work for additional information regarding copyright
+ * ownership. The ASF licenses this file to you under the Apache
+ * License, Version 2.0 (the "License"); you may not use this file
+ * except in compliance with the License. You may obtain a copy of
+ * the License at http://www.apache.org/licenses/LICENSE-2.0 .
+ */
+
+#ifndef INCLUDED_OOX_SOURCE_DRAWINGML_TEXTSPACINGCONTEXT_HXX
+#define INCLUDED_OOX_SOURCE_DRAWINGML_TEXTSPACINGCONTEXT_HXX
+
+#include <oox/core/contexthandler2.hxx>
+
+namespace oox::drawingml
+{
+class TextSpacing;
+
+class TextSpacingContext : public ::oox::core::ContextHandler2
+{
+public:
+ TextSpacingContext(::oox::core::ContextHandler2Helper const& rParent, TextSpacing& aSpacing);
+
+ virtual ::oox::core::ContextHandlerRef
+ onCreateContext(::sal_Int32 Element, const ::oox::AttributeList& rAttribs) override;
+
+private:
+ TextSpacing& maSpacing;
+};
+}
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/oox/source/drawingml/texttabstoplistcontext.cxx b/oox/source/drawingml/texttabstoplistcontext.cxx
new file mode 100644
index 000000000..09809a9d8
--- /dev/null
+++ b/oox/source/drawingml/texttabstoplistcontext.cxx
@@ -0,0 +1,73 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ *
+ * This file incorporates work covered by the following license notice:
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed
+ * with this work for additional information regarding copyright
+ * ownership. The ASF licenses this file to you under the Apache
+ * License, Version 2.0 (the "License"); you may not use this file
+ * except in compliance with the License. You may obtain a copy of
+ * the License at http://www.apache.org/licenses/LICENSE-2.0 .
+ */
+
+#include <rtl/ustring.hxx>
+
+#include <oox/drawingml/drawingmltypes.hxx>
+#include <oox/helper/attributelist.hxx>
+#include <oox/token/namespaces.hxx>
+#include <oox/token/tokens.hxx>
+#include "texttabstoplistcontext.hxx"
+
+using namespace ::oox::core;
+using namespace ::com::sun::star::uno;
+using namespace ::com::sun::star::style;
+using namespace ::com::sun::star::xml::sax;
+
+namespace oox::drawingml {
+
+ TextTabStopListContext::TextTabStopListContext( ContextHandler2Helper const & rParent, std::vector< TabStop > & aTabList )
+ : ContextHandler2( rParent )
+ , maTabList( aTabList )
+ {
+ }
+
+ TextTabStopListContext::~TextTabStopListContext()
+ {
+ }
+
+ ContextHandlerRef TextTabStopListContext::onCreateContext( ::sal_Int32 aElement, const AttributeList& rAttribs )
+ {
+ switch( aElement )
+ {
+ case A_TOKEN( tab ):
+ {
+ OUString sValue;
+ TabStop aTabStop;
+ sValue = rAttribs.getString( XML_pos ).get();
+ if( !sValue.isEmpty() )
+ {
+ aTabStop.Position = GetCoordinate( sValue );
+ }
+ sal_Int32 aToken = rAttribs.getToken( XML_algn, 0 );
+ if( aToken != 0 )
+ {
+ aTabStop.Alignment = GetTabAlign( aToken );
+ }
+ maTabList.push_back(aTabStop);
+ break;
+ }
+ default:
+ break;
+ }
+ return this;
+ }
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/oox/source/drawingml/texttabstoplistcontext.hxx b/oox/source/drawingml/texttabstoplistcontext.hxx
new file mode 100644
index 000000000..e1ca2cb11
--- /dev/null
+++ b/oox/source/drawingml/texttabstoplistcontext.hxx
@@ -0,0 +1,48 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ *
+ * This file incorporates work covered by the following license notice:
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed
+ * with this work for additional information regarding copyright
+ * ownership. The ASF licenses this file to you under the Apache
+ * License, Version 2.0 (the "License"); you may not use this file
+ * except in compliance with the License. You may obtain a copy of
+ * the License at http://www.apache.org/licenses/LICENSE-2.0 .
+ */
+
+#ifndef INCLUDED_OOX_SOURCE_DRAWINGML_TEXTTABSTOPLISTCONTEXT_HXX
+#define INCLUDED_OOX_SOURCE_DRAWINGML_TEXTTABSTOPLISTCONTEXT_HXX
+
+#include <vector>
+
+#include <com/sun/star/style/TabStop.hpp>
+
+#include <oox/core/contexthandler2.hxx>
+
+namespace oox::drawingml {
+
+class TextTabStopListContext final : public ::oox::core::ContextHandler2
+{
+public:
+ TextTabStopListContext( ::oox::core::ContextHandler2Helper const & rParent,
+ ::std::vector< css::style::TabStop > & aTabList );
+ virtual ~TextTabStopListContext() override;
+
+ virtual ::oox::core::ContextHandlerRef onCreateContext( ::sal_Int32 Element, const ::oox::AttributeList& rAttribs ) override;
+
+private:
+ ::std::vector< css::style::TabStop > & maTabList;
+};
+
+}
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/oox/source/drawingml/theme.cxx b/oox/source/drawingml/theme.cxx
new file mode 100644
index 000000000..87bee8895
--- /dev/null
+++ b/oox/source/drawingml/theme.cxx
@@ -0,0 +1,122 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ *
+ * This file incorporates work covered by the following license notice:
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed
+ * with this work for additional information regarding copyright
+ * ownership. The ASF licenses this file to you under the Apache
+ * License, Version 2.0 (the "License"); you may not use this file
+ * except in compliance with the License. You may obtain a copy of
+ * the License at http://www.apache.org/licenses/LICENSE-2.0 .
+ */
+
+#include <oox/drawingml/theme.hxx>
+#include <oox/token/tokens.hxx>
+#include <drawingml/textcharacterproperties.hxx>
+#include <com/sun/star/beans/PropertyValues.hpp>
+#include <com/sun/star/beans/XPropertySet.hpp>
+#include <com/sun/star/drawing/XDrawPage.hpp>
+#include <comphelper/propertyvalue.hxx>
+
+using namespace com::sun::star;
+
+namespace oox::drawingml {
+
+namespace {
+
+template< typename Type >
+const Type* lclGetStyleElement( const RefVector< Type >& rVector, sal_Int32 nIndex )
+{
+ return (rVector.empty() || (nIndex < 1)) ? nullptr :
+ rVector.get( ::std::min( static_cast< sal_Int32 >( nIndex - 1 ), static_cast< sal_Int32 >( rVector.size() - 1 ) ) ).get();
+}
+
+} // namespace
+
+const FillProperties* Theme::getFillStyle( sal_Int32 nIndex ) const
+{
+ return (nIndex >= 1000) ?
+ lclGetStyleElement( maBgFillStyleList, nIndex - 1000 ) :
+ lclGetStyleElement( maFillStyleList, nIndex );
+}
+
+const LineProperties* Theme::getLineStyle( sal_Int32 nIndex ) const
+{
+ return lclGetStyleElement( maLineStyleList, nIndex );
+}
+
+const EffectProperties* Theme::getEffectStyle( sal_Int32 nIndex ) const
+{
+ return lclGetStyleElement( maEffectStyleList, nIndex );
+}
+
+const TextCharacterProperties* Theme::getFontStyle( sal_Int32 nSchemeType ) const
+{
+ return maFontScheme.get( nSchemeType ).get();
+}
+
+const TextFont* Theme::resolveFont( const OUString& rName ) const
+{
+ const TextCharacterProperties* pCharProps = nullptr;
+ /* Resolves the following names:
+ +mj-lt, +mj-ea, +mj-cs -- major Latin, Asian, Complex font
+ +mn-lt, +mn-ea, +mn-cs -- minor Latin, Asian, Complex font
+ */
+ if( (rName.getLength() == 6) && (rName[ 0 ] == '+') && (rName[ 3 ] == '-') )
+ {
+ if( (rName[ 1 ] == 'm') && (rName[ 2 ] == 'j') )
+ pCharProps = maFontScheme.get( XML_major ).get();
+ else if( (rName[ 1 ] == 'm') && (rName[ 2 ] == 'n') )
+ pCharProps = maFontScheme.get( XML_minor ).get();
+ if( pCharProps )
+ {
+ if( (rName[ 4 ] == 'l') && (rName[ 5 ] == 't') )
+ return &pCharProps->maLatinFont;
+ if( (rName[ 4 ] == 'e') && (rName[ 5 ] == 'a') )
+ return &pCharProps->maAsianFont;
+ if( (rName[ 4 ] == 'c') && (rName[ 5 ] == 's') )
+ return &pCharProps->maComplexFont;
+ }
+ }
+
+ // See writerfilter::dmapper::ThemeTable::getFontNameForTheme().
+ if (rName == "majorHAnsi" || rName == "majorAscii" || rName == "majorBidi" || rName == "majorEastAsia")
+ pCharProps = maFontScheme.get(XML_major).get();
+ else if (rName == "minorHAnsi" || rName == "minorAscii" || rName == "minorBidi" || rName == "minorEastAsia")
+ pCharProps = maFontScheme.get(XML_minor).get();
+ if (pCharProps)
+ {
+ if (rName == "majorAscii" || rName == "majorHAnsi" || rName == "minorAscii" || rName == "minorHAnsi")
+ return &pCharProps->maLatinFont;
+ else if (rName == "minorBidi" || rName == "majorBidi")
+ return &pCharProps->maComplexFont;
+ else if (rName == "minorEastAsia" || rName == "majorEastAsia")
+ return &pCharProps->maAsianFont;
+ }
+ return nullptr;
+}
+
+void Theme::addTheme(const css::uno::Reference<css::drawing::XDrawPage>& xDrawPage) const
+{
+ beans::PropertyValue aColorScheme;
+ aColorScheme.Name = "ColorScheme";
+ maClrScheme.ToAny(aColorScheme.Value);
+ beans::PropertyValues aValues = {
+ comphelper::makePropertyValue("Name", maThemeName),
+ comphelper::makePropertyValue("ColorSchemeName", maClrScheme.GetName()),
+ aColorScheme,
+ };
+ uno::Reference<beans::XPropertySet> xPropertySet(xDrawPage, uno::UNO_QUERY);
+ xPropertySet->setPropertyValue("Theme", uno::Any(aValues));
+}
+
+} // namespace oox::drawingml
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/oox/source/drawingml/themeelementscontext.cxx b/oox/source/drawingml/themeelementscontext.cxx
new file mode 100644
index 000000000..0922c4b61
--- /dev/null
+++ b/oox/source/drawingml/themeelementscontext.cxx
@@ -0,0 +1,243 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ *
+ * This file incorporates work covered by the following license notice:
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed
+ * with this work for additional information regarding copyright
+ * ownership. The ASF licenses this file to you under the Apache
+ * License, Version 2.0 (the "License"); you may not use this file
+ * except in compliance with the License. You may obtain a copy of
+ * the License at http://www.apache.org/licenses/LICENSE-2.0 .
+ */
+
+#include <drawingml/themeelementscontext.hxx>
+#include <drawingml/clrschemecontext.hxx>
+#include <drawingml/lineproperties.hxx>
+#include <drawingml/linepropertiescontext.hxx>
+#include <drawingml/fillproperties.hxx>
+#include <drawingml/misccontexts.hxx>
+#include <drawingml/textcharacterproperties.hxx>
+#include <oox/drawingml/theme.hxx>
+#include <oox/helper/attributelist.hxx>
+#include "effectproperties.hxx"
+#include <drawingml/effectpropertiescontext.hxx>
+#include <oox/token/namespaces.hxx>
+#include <oox/token/tokens.hxx>
+
+using namespace ::oox::core;
+using namespace ::com::sun::star::uno;
+using namespace ::com::sun::star::xml::sax;
+
+namespace oox::drawingml {
+
+namespace {
+
+class FillStyleListContext : public ContextHandler2
+{
+public:
+ FillStyleListContext( ContextHandler2Helper const & rParent, FillStyleList& rFillStyleList );
+ virtual ContextHandlerRef onCreateContext( sal_Int32 nElement, const AttributeList& rAttribs ) override;
+
+private:
+ FillStyleList& mrFillStyleList;
+};
+
+}
+
+FillStyleListContext::FillStyleListContext( ContextHandler2Helper const & rParent, FillStyleList& rFillStyleList ) :
+ ContextHandler2( rParent ),
+ mrFillStyleList( rFillStyleList )
+{
+}
+
+ContextHandlerRef FillStyleListContext::onCreateContext( sal_Int32 nElement, const AttributeList& rAttribs )
+{
+ switch( nElement )
+ {
+ case A_TOKEN( noFill ):
+ case A_TOKEN( solidFill ):
+ case A_TOKEN( gradFill ):
+ case A_TOKEN( blipFill ):
+ case A_TOKEN( pattFill ):
+ case A_TOKEN( grpFill ):
+ mrFillStyleList.push_back( std::make_shared<FillProperties>( ) );
+ return FillPropertiesContext::createFillContext( *this, nElement, rAttribs, *mrFillStyleList.back() );
+ }
+ return nullptr;
+}
+
+namespace {
+
+class LineStyleListContext : public ContextHandler2
+{
+public:
+ LineStyleListContext( ContextHandler2Helper const & rParent, LineStyleList& rLineStyleList );
+ virtual ContextHandlerRef onCreateContext( sal_Int32 nElement, const AttributeList& rAttribs ) override;
+
+private:
+ LineStyleList& mrLineStyleList;
+};
+
+}
+
+LineStyleListContext::LineStyleListContext( ContextHandler2Helper const & rParent, LineStyleList& rLineStyleList ) :
+ ContextHandler2( rParent ),
+ mrLineStyleList( rLineStyleList )
+{
+}
+
+ContextHandlerRef LineStyleListContext::onCreateContext( sal_Int32 nElement, const AttributeList& rAttribs )
+{
+ switch( nElement )
+ {
+ case A_TOKEN( ln ):
+ mrLineStyleList.push_back( std::make_shared<LineProperties>( ) );
+ return new LinePropertiesContext( *this, rAttribs, *mrLineStyleList.back() );
+ }
+ return nullptr;
+}
+
+namespace {
+
+class EffectStyleListContext : public ContextHandler2
+{
+public:
+ EffectStyleListContext( ContextHandler2Helper const & rParent, EffectStyleList& rEffectStyleList );
+ virtual ContextHandlerRef onCreateContext( sal_Int32 nElement, const AttributeList& rAttribs ) override;
+
+private:
+ EffectStyleList& mrEffectStyleList;
+};
+
+}
+
+EffectStyleListContext::EffectStyleListContext( ContextHandler2Helper const & rParent, EffectStyleList& rEffectStyleList ) :
+ ContextHandler2( rParent ),
+ mrEffectStyleList( rEffectStyleList )
+{
+}
+
+ContextHandlerRef EffectStyleListContext::onCreateContext( sal_Int32 nElement, const AttributeList& /*rAttribs*/ )
+{
+ switch( nElement )
+ {
+ case A_TOKEN( effectStyle ):
+ mrEffectStyleList.push_back( std::make_shared<EffectProperties>( ) );
+ return this;
+
+ case A_TOKEN( effectLst ): // CT_EffectList
+ if( mrEffectStyleList.back() )
+ return new EffectPropertiesContext( *this, *mrEffectStyleList.back() );
+ break;
+ }
+ return nullptr;
+}
+
+namespace {
+
+class FontSchemeContext : public ContextHandler2
+{
+public:
+ FontSchemeContext( ContextHandler2Helper const & rParent, FontScheme& rFontScheme );
+ virtual ContextHandlerRef onCreateContext( sal_Int32 nElement, const AttributeList& rAttribs ) override;
+ virtual void onEndElement() override;
+
+private:
+ FontScheme& mrFontScheme;
+ TextCharacterPropertiesPtr mxCharProps;
+};
+
+}
+
+FontSchemeContext::FontSchemeContext( ContextHandler2Helper const & rParent, FontScheme& rFontScheme ) :
+ ContextHandler2( rParent ),
+ mrFontScheme( rFontScheme )
+{
+}
+
+ContextHandlerRef FontSchemeContext::onCreateContext( sal_Int32 nElement, const AttributeList& rAttribs )
+{
+ switch( nElement )
+ {
+ case A_TOKEN( majorFont ):
+ mxCharProps = std::make_shared<TextCharacterProperties>();
+ mrFontScheme[ XML_major ] = mxCharProps;
+ return this;
+ case A_TOKEN( minorFont ):
+ mxCharProps = std::make_shared<TextCharacterProperties>();
+ mrFontScheme[ XML_minor ] = mxCharProps;
+ return this;
+
+ case A_TOKEN( latin ):
+ if( mxCharProps )
+ mxCharProps->maLatinFont.setAttributes( rAttribs );
+ break;
+ case A_TOKEN( ea ):
+ if( mxCharProps )
+ mxCharProps->maAsianFont.setAttributes( rAttribs );
+ break;
+ case A_TOKEN( cs ):
+ if( mxCharProps )
+ mxCharProps->maComplexFont.setAttributes( rAttribs );
+ break;
+ }
+ return nullptr;
+}
+
+void FontSchemeContext::onEndElement()
+{
+ switch( getCurrentElement() )
+ {
+ case A_TOKEN( majorFont ):
+ case A_TOKEN( minorFont ):
+ mxCharProps.reset();
+ break;
+ }
+}
+
+ThemeElementsContext::ThemeElementsContext( ContextHandler2Helper const & rParent, Theme& rTheme ) :
+ ContextHandler2( rParent ),
+ mrTheme( rTheme )
+{
+}
+
+ContextHandlerRef ThemeElementsContext::onCreateContext( sal_Int32 nElement, const AttributeList& rAttribs )
+{
+ // CT_BaseStyles
+ switch( nElement )
+ {
+ case A_TOKEN( clrScheme ): // CT_ColorScheme
+ if (rAttribs.hasAttribute(XML_name))
+ {
+ mrTheme.getClrScheme().SetName(rAttribs.getString(XML_name).get());
+ }
+ return new clrSchemeContext( *this, mrTheme.getClrScheme() );
+ case A_TOKEN( fontScheme ): // CT_FontScheme
+ return new FontSchemeContext( *this, mrTheme.getFontScheme() );
+
+ case A_TOKEN( fmtScheme ): // CT_StyleMatrix
+ mrTheme.setStyleName( rAttribs.getString( XML_name ).get() );
+ return this;
+
+ case A_TOKEN( fillStyleLst ): // CT_FillStyleList
+ return new FillStyleListContext( *this, mrTheme.getFillStyleList() );
+ case A_TOKEN( lnStyleLst ): // CT_LineStyleList
+ return new LineStyleListContext( *this, mrTheme.getLineStyleList() );
+ case A_TOKEN( effectStyleLst ): // CT_EffectStyleList
+ return new EffectStyleListContext( *this, mrTheme.getEffectStyleList() );
+ case A_TOKEN( bgFillStyleLst ): // CT_BackgroundFillStyleList
+ return new FillStyleListContext( *this, mrTheme.getBgFillStyleList() );
+ }
+ return nullptr;
+}
+
+} // namespace oox::drawingml
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/oox/source/drawingml/themefragmenthandler.cxx b/oox/source/drawingml/themefragmenthandler.cxx
new file mode 100644
index 000000000..5ab0ee1e6
--- /dev/null
+++ b/oox/source/drawingml/themefragmenthandler.cxx
@@ -0,0 +1,78 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ *
+ * This file incorporates work covered by the following license notice:
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed
+ * with this work for additional information regarding copyright
+ * ownership. The ASF licenses this file to you under the Apache
+ * License, Version 2.0 (the "License"); you may not use this file
+ * except in compliance with the License. You may obtain a copy of
+ * the License at http://www.apache.org/licenses/LICENSE-2.0 .
+ */
+
+#include <oox/drawingml/themefragmenthandler.hxx>
+#include <drawingml/objectdefaultcontext.hxx>
+#include <oox/drawingml/theme.hxx>
+#include <oox/token/namespaces.hxx>
+#include <oox/helper/attributelist.hxx>
+#include <drawingml/themeelementscontext.hxx>
+
+using namespace ::oox::core;
+
+namespace oox::drawingml {
+
+ThemeFragmentHandler::ThemeFragmentHandler( XmlFilterBase& rFilter, const OUString& rFragmentPath, Theme& rTheme ) :
+ FragmentHandler2( rFilter, rFragmentPath ),
+ mrTheme( rTheme )
+{
+}
+
+ThemeFragmentHandler::~ThemeFragmentHandler()
+{
+}
+
+ContextHandlerRef ThemeFragmentHandler::onCreateContext( sal_Int32 nElement, const AttributeList& rAttribs)
+{
+ // CT_OfficeStyleSheet
+ switch( getCurrentElement() )
+ {
+ case XML_ROOT_CONTEXT:
+ switch( nElement )
+ {
+ case A_TOKEN( theme ):
+ {
+ mrTheme.setThemeName(rAttribs.getString(XML_name).get());
+ return this;
+ }
+ }
+ break;
+
+ case A_TOKEN( theme ):
+ switch( nElement )
+ {
+ case A_TOKEN( themeElements ): // CT_BaseStyles
+ return new ThemeElementsContext( *this, mrTheme );
+ case A_TOKEN( objectDefaults ): // CT_ObjectStyleDefaults
+ return new objectDefaultContext( *this, mrTheme );
+ case A_TOKEN( extraClrSchemeLst ): // CT_ColorSchemeList
+ return nullptr;
+ case A_TOKEN( custClrLst ): // CustomColorList
+ return nullptr;
+ case A_TOKEN( ext ): // CT_OfficeArtExtension
+ return nullptr;
+ }
+ break;
+ }
+ return nullptr;
+}
+
+} // namespace oox::drawingml
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/oox/source/drawingml/transform2dcontext.cxx b/oox/source/drawingml/transform2dcontext.cxx
new file mode 100644
index 000000000..08ec71f5a
--- /dev/null
+++ b/oox/source/drawingml/transform2dcontext.cxx
@@ -0,0 +1,129 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ *
+ * This file incorporates work covered by the following license notice:
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed
+ * with this work for additional information regarding copyright
+ * ownership. The ASF licenses this file to you under the Apache
+ * License, Version 2.0 (the "License"); you may not use this file
+ * except in compliance with the License. You may obtain a copy of
+ * the License at http://www.apache.org/licenses/LICENSE-2.0 .
+ */
+
+#include <drawingml/transform2dcontext.hxx>
+#include <oox/helper/attributelist.hxx>
+#include <oox/drawingml/shape.hxx>
+#include <drawingml/customshapeproperties.hxx>
+#include <drawingml/textbody.hxx>
+#include <oox/token/namespaces.hxx>
+
+using namespace ::com::sun::star;
+using ::oox::core::ContextHandlerRef;
+
+namespace oox::drawingml {
+
+/** context to import a CT_Transform2D */
+Transform2DContext::Transform2DContext( ContextHandler2Helper const & rParent, const AttributeList& rAttribs, Shape& rShape, bool btxXfrm ) noexcept
+: ContextHandler2( rParent )
+, mrShape( rShape )
+, mbtxXfrm ( btxXfrm )
+{
+ if( !btxXfrm )
+ {
+ mrShape.setRotation( rAttribs.getInteger( XML_rot, 0 ) ); // 60000ths of a degree Positive angles are clockwise; negative angles are counter-clockwise
+ mrShape.setFlip( rAttribs.getBool( XML_flipH, false ), rAttribs.getBool( XML_flipV, false ) );
+ }
+ else
+ {
+ if (rAttribs.hasAttribute(XML_rot) && mrShape.getTextBody())
+ mrShape.getTextBody()->getTextProperties().moRotation = rAttribs.getInteger( XML_rot ).get();
+ }
+}
+
+ContextHandlerRef Transform2DContext::onCreateContext( sal_Int32 aElementToken, const AttributeList& rAttribs )
+{
+ if( mbtxXfrm )
+ {
+ // Workaround: only for rectangles
+ const sal_Int32 nType = mrShape.getCustomShapeProperties()->getShapePresetType();
+ if( mrShape.getTextBody() && ( nType == XML_rect || nType == XML_roundRect || nType == XML_ellipse ) )
+ {
+ switch( aElementToken )
+ {
+ case A_TOKEN( off ):
+ {
+ const OUString sXValue = rAttribs.getString( XML_x ).get();
+ const OUString sYValue = rAttribs.getString( XML_y ).get();
+
+ if( !sXValue.isEmpty() && nType != XML_ellipse )
+ mrShape.getTextBody()->getTextProperties().moTextOffLeft = GetCoordinate( sXValue.toInt32() - mrShape.getPosition().X );
+ if( !sYValue.isEmpty() )
+ mrShape.getTextBody()->getTextProperties().moTextOffUpper = GetCoordinate( sYValue.toInt32() - mrShape.getPosition().Y );
+ }
+ break;
+ case A_TOKEN( ext ):
+ {
+ const OUString sXValue = rAttribs.getString( XML_cx ).get();
+ const OUString sYValue = rAttribs.getString( XML_cy ).get();
+
+ if( !sXValue.isEmpty() && nType == XML_rect )
+ {
+ mrShape.getTextBody()->getTextProperties().moTextOffRight = GetCoordinate(mrShape.getSize().Width - sXValue.toInt32());
+ if( mrShape.getTextBody()->getTextProperties().moTextOffLeft )
+ *mrShape.getTextBody()->getTextProperties().moTextOffRight -= *mrShape.getTextBody()->getTextProperties().moTextOffLeft;
+ }
+ if( !sYValue.isEmpty() )
+ {
+ mrShape.getTextBody()->getTextProperties().moTextOffLower = GetCoordinate(mrShape.getSize().Height - sYValue.toInt32());
+ if( mrShape.getTextBody()->getTextProperties().moTextOffUpper )
+ *mrShape.getTextBody()->getTextProperties().moTextOffLower -= *mrShape.getTextBody()->getTextProperties().moTextOffUpper;
+
+ }
+ }
+ break;
+ }
+ }
+ return nullptr;
+ }
+
+ switch( aElementToken )
+ {
+ case A_TOKEN( off ): // horz/vert translation
+ mrShape.setPosition( awt::Point( rAttribs.getString( XML_x ).get().toInt32(), rAttribs.getString( XML_y ).get().toInt32() ) );
+ break;
+ case A_TOKEN( ext ): // horz/vert size
+ mrShape.setSize( awt::Size( rAttribs.getString( XML_cx ).get().toInt32(), rAttribs.getString( XML_cy ).get().toInt32() ) );
+ break;
+ case A_TOKEN( chOff ): // horz/vert translation of children
+ mrShape.setChildPosition( awt::Point( rAttribs.getString( XML_x ).get().toInt32(), rAttribs.getString( XML_y ).get().toInt32() ) );
+ break;
+ case A_TOKEN( chExt ): // horz/vert size of children
+ {
+ sal_Int32 nChExtCx = rAttribs.getString(XML_cx).get().toInt32();
+
+ if(nChExtCx == 0)
+ nChExtCx = mrShape.getSize().Width;
+
+ sal_Int32 nChExtCy = rAttribs.getString(XML_cy).get().toInt32();
+
+ if(nChExtCy == 0)
+ nChExtCy = mrShape.getSize().Height;
+
+ mrShape.setChildSize(awt::Size(nChExtCx, nChExtCy));
+ }
+ break;
+ }
+
+ return nullptr;
+}
+
+} // namespace oox::drawingml
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */