From 267c6f2ac71f92999e969232431ba04678e7437e Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Mon, 15 Apr 2024 07:54:39 +0200 Subject: Adding upstream version 4:24.2.0. Signed-off-by: Daniel Baumann --- oox/source/drawingml/ThemeFilterBase.cxx | 50 + .../drawingml/ThemeOverrideFragmentHandler.cxx | 48 + oox/source/drawingml/chart/axiscontext.cxx | 298 + oox/source/drawingml/chart/axisconverter.cxx | 437 + oox/source/drawingml/chart/axismodel.cxx | 63 + oox/source/drawingml/chart/chartcontextbase.cxx | 107 + oox/source/drawingml/chart/chartconverter.cxx | 149 + .../drawingml/chart/chartdrawingfragment.cxx | 244 + oox/source/drawingml/chart/chartspaceconverter.cxx | 308 + oox/source/drawingml/chart/chartspacefragment.cxx | 143 + oox/source/drawingml/chart/chartspacemodel.cxx | 41 + oox/source/drawingml/chart/converterbase.cxx | 446 + oox/source/drawingml/chart/datasourcecontext.cxx | 335 + oox/source/drawingml/chart/datasourceconverter.cxx | 111 + oox/source/drawingml/chart/datasourcemodel.cxx | 46 + oox/source/drawingml/chart/datatablecontext.cxx | 73 + oox/source/drawingml/chart/datatableconverter.cxx | 69 + oox/source/drawingml/chart/modelbase.cxx | 54 + oox/source/drawingml/chart/objectformatter.cxx | 1176 ++ oox/source/drawingml/chart/plotareacontext.cxx | 175 + oox/source/drawingml/chart/plotareaconverter.cxx | 484 + oox/source/drawingml/chart/plotareamodel.cxx | 52 + oox/source/drawingml/chart/seriescontext.cxx | 749 + oox/source/drawingml/chart/seriesconverter.cxx | 923 + oox/source/drawingml/chart/seriesmodel.cxx | 127 + oox/source/drawingml/chart/titlecontext.cxx | 176 + oox/source/drawingml/chart/titleconverter.cxx | 363 + oox/source/drawingml/chart/titlemodel.cxx | 61 + oox/source/drawingml/chart/typegroupcontext.cxx | 371 + oox/source/drawingml/chart/typegroupconverter.cxx | 605 + oox/source/drawingml/chart/typegroupmodel.cxx | 67 + oox/source/drawingml/clrscheme.cxx | 196 + oox/source/drawingml/clrschemecontext.cxx | 129 + oox/source/drawingml/color.cxx | 1011 + oox/source/drawingml/colorchoicecontext.cxx | 339 + oox/source/drawingml/connectorhelper.cxx | 440 + oox/source/drawingml/connectorshapecontext.cxx | 119 + oox/source/drawingml/customshapegeometry.cxx | 1296 ++ oox/source/drawingml/customshapepresetdata.cxx | 974 + oox/source/drawingml/customshapeproperties.cxx | 384 + oox/source/drawingml/customshapes/README.md | 19 + oox/source/drawingml/customshapes/cshape.pptx | Bin 0 -> 48204 bytes oox/source/drawingml/customshapes/generate.sh | 38 + .../drawingml/customshapes/generatePresetsData.pl | 74 + .../drawingml/customshapes/generatePresetsPPTXs.pl | 193 + .../customshapes/oox-drawingml-cs-presets | 3179 +++ .../customshapes/presetShapeDefinitions.xml | 19898 +++++++++++++++++++ .../drawingml/diagram/constraintlistcontext.cxx | 78 + .../drawingml/diagram/constraintlistcontext.hxx | 43 + oox/source/drawingml/diagram/datamodel.cxx | 468 + oox/source/drawingml/diagram/datamodel.hxx | 81 + oox/source/drawingml/diagram/datamodelcontext.cxx | 384 + oox/source/drawingml/diagram/datamodelcontext.hxx | 45 + oox/source/drawingml/diagram/diagram.cxx | 453 + oox/source/drawingml/diagram/diagram.hxx | 171 + .../drawingml/diagram/diagramdefinitioncontext.cxx | 100 + .../drawingml/diagram/diagramdefinitioncontext.hxx | 44 + .../drawingml/diagram/diagramfragmenthandler.cxx | 235 + .../drawingml/diagram/diagramfragmenthandler.hxx | 103 + oox/source/drawingml/diagram/diagramhelper.cxx | 271 + oox/source/drawingml/diagram/diagramhelper.hxx | 94 + .../drawingml/diagram/diagramlayoutatoms.cxx | 2045 ++ .../drawingml/diagram/diagramlayoutatoms.hxx | 373 + .../drawingml/diagram/layoutatomvisitorbase.cxx | 176 + .../drawingml/diagram/layoutatomvisitorbase.hxx | 98 + .../drawingml/diagram/layoutatomvisitors.cxx | 269 + .../drawingml/diagram/layoutatomvisitors.hxx | 97 + oox/source/drawingml/diagram/layoutnodecontext.cxx | 310 + oox/source/drawingml/diagram/layoutnodecontext.hxx | 43 + oox/source/drawingml/diagram/rulelistcontext.cxx | 58 + oox/source/drawingml/diagram/rulelistcontext.hxx | 42 + oox/source/drawingml/drawingmltypes.cxx | 461 + oox/source/drawingml/effectproperties.cxx | 137 + oox/source/drawingml/effectproperties.hxx | 93 + oox/source/drawingml/effectpropertiescontext.cxx | 217 + oox/source/drawingml/embeddedwavaudiofile.cxx | 37 + oox/source/drawingml/fillproperties.cxx | 1065 + oox/source/drawingml/fontworkhelpers.cxx | 1669 ++ oox/source/drawingml/graphicshapecontext.cxx | 341 + oox/source/drawingml/guidcontext.cxx | 40 + oox/source/drawingml/hyperlinkcontext.cxx | 168 + oox/source/drawingml/hyperlinkcontext.hxx | 48 + oox/source/drawingml/lineproperties.cxx | 567 + oox/source/drawingml/linepropertiescontext.cxx | 275 + oox/source/drawingml/misccontexts.cxx | 703 + oox/source/drawingml/objectdefaultcontext.cxx | 53 + oox/source/drawingml/presetgeometrynames.cxx | 114 + oox/source/drawingml/scene3dcontext.cxx | 189 + oox/source/drawingml/shape.cxx | 2486 +++ oox/source/drawingml/shape3dproperties.cxx | 392 + oox/source/drawingml/shapecontext.cxx | 144 + oox/source/drawingml/shapegroupcontext.cxx | 127 + oox/source/drawingml/shapepropertiescontext.cxx | 103 + oox/source/drawingml/shapepropertymap.cxx | 248 + oox/source/drawingml/shapestylecontext.cxx | 70 + oox/source/drawingml/spdefcontext.cxx | 62 + .../drawingml/table/predefined-table-styles.cxx | 985 + .../table/tablebackgroundstylecontext.cxx | 74 + oox/source/drawingml/table/tablecell.cxx | 620 + oox/source/drawingml/table/tablecellcontext.cxx | 102 + oox/source/drawingml/table/tablecontext.cxx | 98 + .../drawingml/table/tablepartstylecontext.cxx | 60 + oox/source/drawingml/table/tableproperties.cxx | 216 + oox/source/drawingml/table/tablerow.cxx | 35 + oox/source/drawingml/table/tablerowcontext.cxx | 65 + oox/source/drawingml/table/tablestyle.cxx | 27 + .../drawingml/table/tablestylecellstylecontext.cxx | 110 + oox/source/drawingml/table/tablestylecontext.cxx | 89 + oox/source/drawingml/table/tablestylelist.cxx | 30 + .../table/tablestylelistfragmenthandler.cxx | 63 + oox/source/drawingml/table/tablestylepart.cxx | 33 + .../drawingml/table/tablestyletextstylecontext.cxx | 98 + oox/source/drawingml/textbody.cxx | 158 + oox/source/drawingml/textbodycontext.cxx | 222 + oox/source/drawingml/textbodyproperties.cxx | 190 + oox/source/drawingml/textbodypropertiescontext.cxx | 283 + oox/source/drawingml/textcharacterproperties.cxx | 254 + .../drawingml/textcharacterpropertiescontext.cxx | 337 + oox/source/drawingml/texteffectscontext.cxx | 320 + oox/source/drawingml/textfield.cxx | 274 + oox/source/drawingml/textfieldcontext.cxx | 78 + oox/source/drawingml/textfont.cxx | 113 + oox/source/drawingml/textliststyle.cxx | 81 + oox/source/drawingml/textliststylecontext.cxx | 78 + oox/source/drawingml/textparagraph.cxx | 220 + oox/source/drawingml/textparagraphproperties.cxx | 558 + .../drawingml/textparagraphpropertiescontext.cxx | 379 + oox/source/drawingml/textrun.cxx | 189 + oox/source/drawingml/textspacingcontext.cxx | 63 + oox/source/drawingml/textspacingcontext.hxx | 44 + oox/source/drawingml/texttabstoplistcontext.cxx | 73 + oox/source/drawingml/texttabstoplistcontext.hxx | 48 + oox/source/drawingml/theme.cxx | 128 + oox/source/drawingml/themeelementscontext.cxx | 364 + oox/source/drawingml/themefragmenthandler.cxx | 82 + oox/source/drawingml/transform2dcontext.cxx | 393 + 136 files changed, 60164 insertions(+) create mode 100644 oox/source/drawingml/ThemeFilterBase.cxx create mode 100644 oox/source/drawingml/ThemeOverrideFragmentHandler.cxx create mode 100644 oox/source/drawingml/chart/axiscontext.cxx create mode 100644 oox/source/drawingml/chart/axisconverter.cxx create mode 100644 oox/source/drawingml/chart/axismodel.cxx create mode 100644 oox/source/drawingml/chart/chartcontextbase.cxx create mode 100644 oox/source/drawingml/chart/chartconverter.cxx create mode 100644 oox/source/drawingml/chart/chartdrawingfragment.cxx create mode 100644 oox/source/drawingml/chart/chartspaceconverter.cxx create mode 100644 oox/source/drawingml/chart/chartspacefragment.cxx create mode 100644 oox/source/drawingml/chart/chartspacemodel.cxx create mode 100644 oox/source/drawingml/chart/converterbase.cxx create mode 100644 oox/source/drawingml/chart/datasourcecontext.cxx create mode 100644 oox/source/drawingml/chart/datasourceconverter.cxx create mode 100644 oox/source/drawingml/chart/datasourcemodel.cxx create mode 100644 oox/source/drawingml/chart/datatablecontext.cxx create mode 100644 oox/source/drawingml/chart/datatableconverter.cxx create mode 100644 oox/source/drawingml/chart/modelbase.cxx create mode 100644 oox/source/drawingml/chart/objectformatter.cxx create mode 100644 oox/source/drawingml/chart/plotareacontext.cxx create mode 100644 oox/source/drawingml/chart/plotareaconverter.cxx create mode 100644 oox/source/drawingml/chart/plotareamodel.cxx create mode 100644 oox/source/drawingml/chart/seriescontext.cxx create mode 100644 oox/source/drawingml/chart/seriesconverter.cxx create mode 100644 oox/source/drawingml/chart/seriesmodel.cxx create mode 100644 oox/source/drawingml/chart/titlecontext.cxx create mode 100644 oox/source/drawingml/chart/titleconverter.cxx create mode 100644 oox/source/drawingml/chart/titlemodel.cxx create mode 100644 oox/source/drawingml/chart/typegroupcontext.cxx create mode 100644 oox/source/drawingml/chart/typegroupconverter.cxx create mode 100644 oox/source/drawingml/chart/typegroupmodel.cxx create mode 100644 oox/source/drawingml/clrscheme.cxx create mode 100644 oox/source/drawingml/clrschemecontext.cxx create mode 100644 oox/source/drawingml/color.cxx create mode 100644 oox/source/drawingml/colorchoicecontext.cxx create mode 100644 oox/source/drawingml/connectorhelper.cxx create mode 100644 oox/source/drawingml/connectorshapecontext.cxx create mode 100644 oox/source/drawingml/customshapegeometry.cxx create mode 100644 oox/source/drawingml/customshapepresetdata.cxx create mode 100644 oox/source/drawingml/customshapeproperties.cxx create mode 100644 oox/source/drawingml/customshapes/README.md create mode 100644 oox/source/drawingml/customshapes/cshape.pptx create mode 100755 oox/source/drawingml/customshapes/generate.sh create mode 100755 oox/source/drawingml/customshapes/generatePresetsData.pl create mode 100755 oox/source/drawingml/customshapes/generatePresetsPPTXs.pl create mode 100644 oox/source/drawingml/customshapes/oox-drawingml-cs-presets create mode 100644 oox/source/drawingml/customshapes/presetShapeDefinitions.xml create mode 100644 oox/source/drawingml/diagram/constraintlistcontext.cxx create mode 100644 oox/source/drawingml/diagram/constraintlistcontext.hxx create mode 100644 oox/source/drawingml/diagram/datamodel.cxx create mode 100644 oox/source/drawingml/diagram/datamodel.hxx create mode 100644 oox/source/drawingml/diagram/datamodelcontext.cxx create mode 100644 oox/source/drawingml/diagram/datamodelcontext.hxx create mode 100644 oox/source/drawingml/diagram/diagram.cxx create mode 100644 oox/source/drawingml/diagram/diagram.hxx create mode 100644 oox/source/drawingml/diagram/diagramdefinitioncontext.cxx create mode 100644 oox/source/drawingml/diagram/diagramdefinitioncontext.hxx create mode 100644 oox/source/drawingml/diagram/diagramfragmenthandler.cxx create mode 100644 oox/source/drawingml/diagram/diagramfragmenthandler.hxx create mode 100644 oox/source/drawingml/diagram/diagramhelper.cxx create mode 100644 oox/source/drawingml/diagram/diagramhelper.hxx create mode 100644 oox/source/drawingml/diagram/diagramlayoutatoms.cxx create mode 100644 oox/source/drawingml/diagram/diagramlayoutatoms.hxx create mode 100644 oox/source/drawingml/diagram/layoutatomvisitorbase.cxx create mode 100644 oox/source/drawingml/diagram/layoutatomvisitorbase.hxx create mode 100644 oox/source/drawingml/diagram/layoutatomvisitors.cxx create mode 100644 oox/source/drawingml/diagram/layoutatomvisitors.hxx create mode 100644 oox/source/drawingml/diagram/layoutnodecontext.cxx create mode 100644 oox/source/drawingml/diagram/layoutnodecontext.hxx create mode 100644 oox/source/drawingml/diagram/rulelistcontext.cxx create mode 100644 oox/source/drawingml/diagram/rulelistcontext.hxx create mode 100644 oox/source/drawingml/drawingmltypes.cxx create mode 100644 oox/source/drawingml/effectproperties.cxx create mode 100644 oox/source/drawingml/effectproperties.hxx create mode 100644 oox/source/drawingml/effectpropertiescontext.cxx create mode 100644 oox/source/drawingml/embeddedwavaudiofile.cxx create mode 100644 oox/source/drawingml/fillproperties.cxx create mode 100644 oox/source/drawingml/fontworkhelpers.cxx create mode 100644 oox/source/drawingml/graphicshapecontext.cxx create mode 100644 oox/source/drawingml/guidcontext.cxx create mode 100644 oox/source/drawingml/hyperlinkcontext.cxx create mode 100644 oox/source/drawingml/hyperlinkcontext.hxx create mode 100644 oox/source/drawingml/lineproperties.cxx create mode 100644 oox/source/drawingml/linepropertiescontext.cxx create mode 100644 oox/source/drawingml/misccontexts.cxx create mode 100644 oox/source/drawingml/objectdefaultcontext.cxx create mode 100644 oox/source/drawingml/presetgeometrynames.cxx create mode 100644 oox/source/drawingml/scene3dcontext.cxx create mode 100644 oox/source/drawingml/shape.cxx create mode 100644 oox/source/drawingml/shape3dproperties.cxx create mode 100644 oox/source/drawingml/shapecontext.cxx create mode 100644 oox/source/drawingml/shapegroupcontext.cxx create mode 100644 oox/source/drawingml/shapepropertiescontext.cxx create mode 100644 oox/source/drawingml/shapepropertymap.cxx create mode 100644 oox/source/drawingml/shapestylecontext.cxx create mode 100644 oox/source/drawingml/spdefcontext.cxx create mode 100644 oox/source/drawingml/table/predefined-table-styles.cxx create mode 100644 oox/source/drawingml/table/tablebackgroundstylecontext.cxx create mode 100644 oox/source/drawingml/table/tablecell.cxx create mode 100644 oox/source/drawingml/table/tablecellcontext.cxx create mode 100644 oox/source/drawingml/table/tablecontext.cxx create mode 100644 oox/source/drawingml/table/tablepartstylecontext.cxx create mode 100644 oox/source/drawingml/table/tableproperties.cxx create mode 100644 oox/source/drawingml/table/tablerow.cxx create mode 100644 oox/source/drawingml/table/tablerowcontext.cxx create mode 100644 oox/source/drawingml/table/tablestyle.cxx create mode 100644 oox/source/drawingml/table/tablestylecellstylecontext.cxx create mode 100644 oox/source/drawingml/table/tablestylecontext.cxx create mode 100644 oox/source/drawingml/table/tablestylelist.cxx create mode 100644 oox/source/drawingml/table/tablestylelistfragmenthandler.cxx create mode 100644 oox/source/drawingml/table/tablestylepart.cxx create mode 100644 oox/source/drawingml/table/tablestyletextstylecontext.cxx create mode 100644 oox/source/drawingml/textbody.cxx create mode 100644 oox/source/drawingml/textbodycontext.cxx create mode 100644 oox/source/drawingml/textbodyproperties.cxx create mode 100644 oox/source/drawingml/textbodypropertiescontext.cxx create mode 100644 oox/source/drawingml/textcharacterproperties.cxx create mode 100644 oox/source/drawingml/textcharacterpropertiescontext.cxx create mode 100644 oox/source/drawingml/texteffectscontext.cxx create mode 100644 oox/source/drawingml/textfield.cxx create mode 100644 oox/source/drawingml/textfieldcontext.cxx create mode 100644 oox/source/drawingml/textfont.cxx create mode 100644 oox/source/drawingml/textliststyle.cxx create mode 100644 oox/source/drawingml/textliststylecontext.cxx create mode 100644 oox/source/drawingml/textparagraph.cxx create mode 100644 oox/source/drawingml/textparagraphproperties.cxx create mode 100644 oox/source/drawingml/textparagraphpropertiescontext.cxx create mode 100644 oox/source/drawingml/textrun.cxx create mode 100644 oox/source/drawingml/textspacingcontext.cxx create mode 100644 oox/source/drawingml/textspacingcontext.hxx create mode 100644 oox/source/drawingml/texttabstoplistcontext.cxx create mode 100644 oox/source/drawingml/texttabstoplistcontext.hxx create mode 100644 oox/source/drawingml/theme.cxx create mode 100644 oox/source/drawingml/themeelementscontext.cxx create mode 100644 oox/source/drawingml/themefragmenthandler.cxx create mode 100644 oox/source/drawingml/transform2dcontext.cxx (limited to 'oox/source/drawingml') diff --git a/oox/source/drawingml/ThemeFilterBase.cxx b/oox/source/drawingml/ThemeFilterBase.cxx new file mode 100644 index 0000000000..eddb49eb16 --- /dev/null +++ b/oox/source/drawingml/ThemeFilterBase.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/. + */ + +#include +#include + +using namespace css; + +namespace oox::drawingml +{ +ThemeFilterBase::ThemeFilterBase(const uno::Reference& rxContext) + : XmlFilterBase(rxContext) +{ +} + +ThemeFilterBase::~ThemeFilterBase() = default; + +const oox::drawingml::Theme* ThemeFilterBase::getCurrentTheme() const { return mpTheme.get(); } + +std::shared_ptr ThemeFilterBase::getCurrentThemePtr() const +{ + return mpTheme; +} + +void ThemeFilterBase::setCurrentTheme(const ::oox::drawingml::ThemePtr& pTheme) +{ + mpTheme = pTheme; +} + +oox::vml::Drawing* ThemeFilterBase::getVmlDrawing() { return nullptr; } + +oox::drawingml::table::TableStyleListPtr ThemeFilterBase::getTableStyles() +{ + return oox::drawingml::table::TableStyleListPtr(); +} + +oox::drawingml::chart::ChartConverter* ThemeFilterBase::getChartConverter() { return nullptr; } + +oox::ole::VbaProject* ThemeFilterBase::implCreateVbaProject() const { return nullptr; } + +OUString ThemeFilterBase::getImplementationName() { return OUString(); } +} + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/oox/source/drawingml/ThemeOverrideFragmentHandler.cxx b/oox/source/drawingml/ThemeOverrideFragmentHandler.cxx new file mode 100644 index 0000000000..72f93a7e25 --- /dev/null +++ b/oox/source/drawingml/ThemeOverrideFragmentHandler.cxx @@ -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/. + */ + +#include +#include +#include + +using namespace ::oox::core; + +namespace oox::drawingml +{ + +ThemeOverrideFragmentHandler::ThemeOverrideFragmentHandler(XmlFilterBase& rFilter, const OUString& rFragmentPath, Theme& rOoxTheme, model::Theme& rTheme) + : FragmentHandler2(rFilter, rFragmentPath) + , mrOoxTheme(rOoxTheme) + , mrTheme(rTheme) +{ +} + +ThemeOverrideFragmentHandler::~ThemeOverrideFragmentHandler() +{ +} + +ContextHandlerRef ThemeOverrideFragmentHandler::onCreateContext(sal_Int32 nElement, const AttributeList& /*rAttribute*/) +{ + // CT_OfficeStyleSheet + switch (getCurrentElement()) + { + case XML_ROOT_CONTEXT: + switch (nElement) + { + case A_TOKEN( themeOverride ): // CT_BaseStylesOverride + return new ThemeElementsContext(*this, mrOoxTheme, 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 0000000000..b90857785e --- /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 + +#include +#include +#include +#include +#include +#include +#include +#include + +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 0000000000..9e749d6b54 --- /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 +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +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 std::optional< double >& rofValue ) +{ + if( rofValue.has_value() ) orAny <<= rofValue.value(); else orAny.clear(); +} + +bool lclIsLogarithmicScale( const AxisModel& rAxisModel ) +{ + return rAxisModel.mofLogBase.has_value() && (2.0 <= rAxisModel.mofLogBase.value()) && (rAxisModel.mofLogBase.value() <= 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 std::optional< double >& rofUnit, sal_Int32 nTimeUnit ) +{ + if( rofUnit.has_value() && (1.0 <= rofUnit.value()) && (rofUnit.value() <= SAL_MAX_INT32) ) + orInterval <<= css::chart::TimeInterval( static_cast< sal_Int32 >( rofUnit.value() ), 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& 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& rxCoordSystem, + RefVector& 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_value() ) + aScaleData.TimeIncrement.TimeResolution <<= lclGetApiTimeUnit( mrModel.monBaseTimeUnit.value() ); + 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().moTextAreaRotation.has_value()) + bTextOverlap + = mrModel.mxTextProp->getTextProperties().moTextAreaRotation.value() == 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_value() && aScaleData.Scaling.is() ) + rIncrementData.Distance <<= aScaleData.Scaling->doScaling( mrModel.mofMajorUnit.value() ); + 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_value() ) + rIntervalCount <<= sal_Int32( 9 ); + } + else if( mrModel.mofMajorUnit.has_value() && mrModel.mofMinorUnit.has_value() && (0.0 < mrModel.mofMinorUnit.value()) && (mrModel.mofMinorUnit.value() <= mrModel.mofMajorUnit.value()) ) + { + double fCount = mrModel.mofMajorUnit.value() / mrModel.mofMinorUnit.value() + 0.5; + if( (1.0 <= fCount) && (fCount < 1001.0) ) + rIntervalCount <<= static_cast< sal_Int32 >( fCount ); + } + else if( !mrModel.mofMinorUnit.has_value() ) + { + // 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_value(); + 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.value() : (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 0000000000..0159810dfc --- /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 +#include + +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 0000000000..5423c52b3d --- /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 + +#include +#include +#include +#include +#include + +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 0000000000..3f004ffd2c --- /dev/null +++ b/oox/source/drawingml/chart/chartconverter.cxx @@ -0,0 +1,149 @@ +/* -*- 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 + +#include +#include +#include +#include +#include +#include +#include +#include + +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 = ';'; + +static OUString lclGenerateApiArray(const std::vector& rRow, sal_Int32 nStart, sal_Int32 nCount) +{ + OSL_ENSURE( !rRow.empty(), "ChartConverter::lclGenerateApiArray - missing matrix values" ); + OUStringBuffer aBuffer(( OUStringChar(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 ) + { + // Code similar to sc/source/filter/oox/formulabase.cxx + aBuffer.append( "\"" + aString.replaceAll(u"\"", u"\"\"") + "\"" ); + } + 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 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 0000000000..b9977c933b --- /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 + +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +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( false ); + return this; + case CDR_TOKEN( relSizeAnchor ): + mxAnchor = std::make_shared( true ); + return this; + } + break; + + case CDR_TOKEN( absSizeAnchor ): + case CDR_TOKEN( relSizeAnchor ): + switch( nElement ) + { + case CDR_TOKEN( sp ): + mxShape = std::make_shared( "com.sun.star.drawing.CustomShape" ); + return new ShapeContext( *this, ShapePtr(), mxShape ); + case CDR_TOKEN( cxnSp ): + mxShape = std::make_shared( "com.sun.star.drawing.ConnectorShape" ); + return new ConnectorShapeContext(*this, ShapePtr(), mxShape, + mxShape->getConnectorShapeProperties()); + case CDR_TOKEN( pic ): + mxShape = std::make_shared( "com.sun.star.drawing.GraphicObjectShape" ); + return new GraphicShapeContext( *this, ShapePtr(), mxShape ); + case CDR_TOKEN( graphicFrame ): + if( !mbOleSupport ) + return nullptr; + mxShape = std::make_shared( "com.sun.star.drawing.GraphicObjectShape" ); + return new GraphicalObjectFrameContext( *this, ShapePtr(), mxShape, true ); + case CDR_TOKEN( grpSp ): + mxShape = std::make_shared( "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 0000000000..c83ed37e9c --- /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 + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +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 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& xCT = xChartTypeSequence[0]; + + if ( xCT->getChartType() != "com.sun.star.chart2.LineChartType" ) + return false; + + Reference xDSCont(xCT, uno::UNO_QUERY); + + if (!xDSCont.is()) + return false; + + const Sequence > aDataSeriesSeq = xDSCont->getDataSeries(); + + bool bHasNoGapBlankValue = false; + bool bHasEmptyCell = false; + + for (const auto& rDataSeries : aDataSeriesSeq) + { + uno::Reference xDSrc(rDataSeries, uno::UNO_QUERY); + if (!xDSrc.is()) + return false; + + const uno::Sequence > aDataSeqs = xDSrc->getDataSequences(); + for (const auto& rDataSeq : aDataSeqs) + { + Reference xValues = rDataSeq->getValues(); + if(!xValues.is()) + return false; + Reference xPropSet(xValues, uno::UNO_QUERY); + if (!xPropSet.is()) + continue; + + OUString aRoleName; + xPropSet->getPropertyValue("Role") >>= aRoleName; + if (aRoleName == "values-y") + { + const uno::Sequence 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_value() ) + { + bIsMonthBasedTimeUnit = mrModel.mxPlotArea->maAxes[0]->monBaseTimeUnit.value() == 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 0000000000..f43908d65c --- /dev/null +++ b/oox/source/drawingml/chart/chartspacefragment.cxx @@ -0,0 +1,143 @@ +/* -*- 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 + +#include +#include +#include +#include +#include +#include +#include +#include + +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.getStringDefaulted( R_TOKEN( id )) ); + return nullptr; + case C_TOKEN( pivotSource ): + mrModel.mbPivotChart = true; + return nullptr; + case C_TOKEN (externalData): + mrModel.maSheetPath = getFragmentPathFromRelId(rAttribs.getStringDefaulted(R_TOKEN(id))); + return nullptr; + case C_TOKEN(clrMapOvr): + if (mrModel.mpClrMap) + for (auto nClrToken : { + XML_bg1, + XML_tx1, + XML_bg2, + XML_tx2, + XML_accent1, + XML_accent2, + XML_accent3, + XML_accent4, + XML_accent5, + XML_accent6, + XML_hlink, + XML_folHlink, + }) + if (auto oMappedToken = rAttribs.getToken(nClrToken)) + mrModel.mpClrMap->setColorMap(nClrToken, *oMappedToken); + 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 0000000000..3aa7366ff8 --- /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 +#include + +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 0000000000..d7130ec979 --- /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 + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + + +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( rFilter, rChartConverter, rChartModel, rxChartDoc, rChartSize ) ) +{ +} + +ConverterRoot::~ConverterRoot() +{ +} + +Reference< XInterface > ConverterRoot::createInstance( const OUString& rServiceName ) const +{ + Reference< XInterface > xInt; + try + { + Reference 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(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(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 0000000000..f4660f5db7 --- /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 + +#include + +#include +#include +#include +#include +#include +#include +#include + +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 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 0000000000..c07ea397d5 --- /dev/null +++ b/oox/source/drawingml/chart/datasourceconverter.cxx @@ -0,0 +1,111 @@ +/* -*- 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 + +#include +#include +#include +#include +#include + +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(mrModel.mnPointCount, 1); + OUStringBuffer aTitle; + bool bFirst = true; + for (auto const& elem : mrModel.maData) + { + Any aAny = elem.second; + if(aAny.has()) + { + if(!bFirst) + aTitle.append(" "); + + aTitle.append(aAny.get()); + bFirst = false; + } + } + + if(!bFirst) + { + mrModel.maData.clear(); + mrModel.maData.insert(std::make_pair(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 ); + + const sal_Int32 nKey = getFormatter().getNumberFormatKey(mrModel.maFormatCode); + if (nKey >= 0) + aSeqProp.setProperty(PROP_NumberFormatKey, nKey); + + 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 0000000000..51514437d3 --- /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 +#include + +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 0000000000..c277dae5f4 --- /dev/null +++ b/oox/source/drawingml/chart/datatablecontext.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 +#include +#include +#include +#include +#include +#include +#include + +namespace oox::drawingml::chart +{ +using ::oox::core::ContextHandler2Helper; +using ::oox::core::ContextHandlerRef; + +DataTableContext::DataTableContext(ContextHandler2Helper& rParent, DataTableModel& rModel) + : ContextBase(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; + case C_TOKEN(spPr): + return new ShapePropertiesContext(*this, mrModel.mxShapeProp.create()); + case C_TOKEN(txPr): + return new TextBodyContext(*this, mrModel.mxTextProp.create()); + } + 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 0000000000..4e42b7468e --- /dev/null +++ b/oox/source/drawingml/chart/datatableconverter.cxx @@ -0,0 +1,69 @@ +/* -*- 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 + +#include +#include +#include +#include + +using namespace css; + +namespace oox::drawingml::chart +{ +DataTableConverter::DataTableConverter(const ConverterRoot& rParent, DataTableModel& rModel) + : ConverterBase(rParent, rModel) +{ +} + +DataTableConverter::~DataTableConverter() = default; + +void DataTableConverter::convertFromModel(uno::Reference const& rxDiagram) +{ + if (!rxDiagram.is()) + return; + + try + { + uno::Reference xDataTable( + createInstance("com.sun.star.chart2.DataTable"), uno::UNO_QUERY_THROW); + rxDiagram->setDataTable(xDataTable); + + PropertySet aPropSet(xDataTable); + if (mrModel.mbShowHBorder) + aPropSet.setProperty(PROP_HBorder, mrModel.mbShowHBorder); + if (mrModel.mbShowVBorder) + aPropSet.setProperty(PROP_VBorder, mrModel.mbShowVBorder); + if (mrModel.mbShowOutline) + aPropSet.setProperty(PROP_Outline, mrModel.mbShowOutline); + if (mrModel.mbShowKeys) + aPropSet.setProperty(PROP_Keys, mrModel.mbShowKeys); + + getFormatter().convertFormatting(aPropSet, mrModel.mxShapeProp, mrModel.mxTextProp, + OBJECTTYPE_DATATABLE); + } + catch (uno::Exception&) + { + } +} + +} // 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 0000000000..04fb08b0d7 --- /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 + +#include +#include + +namespace oox::drawingml::chart { + +NumberFormat::NumberFormat() : + mbSourceLinked( true ) +{ +} + +void NumberFormat::setAttributes( const AttributeList& rAttribs ) +{ + mbSourceLinked = rAttribs.getBool( XML_sourceLinked, true); + maFormatCode = rAttribs.getStringDefaulted( XML_formatCode); +} + +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 0000000000..2013ea4617 --- /dev/null +++ b/oox/source/drawingml/chart/objectformatter.cxx @@ -0,0 +1,1176 @@ +/* -*- 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 + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include + +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, + PROP_INVALID, PROP_INVALID, PROP_INVALID, PROP_INVALID, PROP_INVALID +}; + +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, + 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, + PROP_INVALID, PROP_INVALID, PROP_INVALID, PROP_INVALID, PROP_INVALID +}; + +/** 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_FRAME( OBJECTTYPE_DATATABLE, saCommonPropInfo, spOtherTexts, spDataTableLines, nullptr ) +}; + +#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%/( 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(); + 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_value() ) + mxAutoLine->moLineWidth = mxAutoLine->moLineWidth.value() * 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(); + 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(); + 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 = XML_solidFill; + } + mxAutoText->moHeight = pAutoTextEntry->mnDefFontSize; + mxAutoText->moBold = pAutoTextEntry->mbBold; + + if( const TextCharacterProperties* pTextProps = lclGetTextProperties( rxGlobalTextProp ) ) + { + mxAutoText->assignUsed( *pTextProps ); + if( pTextProps->moHeight.has_value() ) + mxAutoText->moHeight = pTextProps->moHeight.value() * 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( *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( 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.value_or( 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().moTextAreaRotation.value_or( 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_value(); +} + +sal_Int32 ObjectFormatter::getNumberFormatKey(const OUString& sNumberFormat) +{ + if (!mxData->mxNumFmts.is() || sNumberFormat.isEmpty()) + return -1; + + sal_Int32 nIndex = -1; + try + { + const bool bGeneral = sNumberFormat.equalsIgnoreAsciiCase("general"); + nIndex = bGeneral ? mxData->mxNumTypes->getStandardIndex(mxData->maFromLocale) + : mxData->mxNumFmts->addNewConverted(sNumberFormat, mxData->maEnUsLocale, + mxData->maFromLocale); + } + catch (Exception&) + { + DBG_UNHANDLED_EXCEPTION("oox.drawingml"); + } + + return nIndex; +} + +} // 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 0000000000..4afddee470 --- /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 + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +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 0000000000..96e51c577d --- /dev/null +++ b/oox/source/drawingml/chart/plotareaconverter.cxx @@ -0,0 +1,484 @@ +/* -*- 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 + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +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( *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.value_or( 0 ) ); + // X rotation a.k.a. elevation (map OOXML [0..90] to Chart2 [-90,0]) + nRotationX = getLimitedValue< sal_Int32, sal_Int32 >( mrModel.monRotationX.value_or( 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.value_or( 20 ); + // X rotation a.k.a. elevation (OOXML [-90..90], Chart2 [-179,180]) + nRotationX = getLimitedValue< sal_Int32, sal_Int32 >( mrModel.monRotationX.value_or( 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::vectorrValAxisIds; + std::vectorrRealValAxisIds; + + 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& 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; + } + + if (mrModel.mxDataTable) + { + DataTableConverter dataTableConverter(*this, *mrModel.mxDataTable); + 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 0000000000..cb4f6383dd --- /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 +#include +#include + +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 0000000000..5afc32c149 --- /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 + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +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 0000000000..db3916b74f --- /dev/null +++ b/oox/source/drawingml/chart/seriesconverter.cxx @@ -0,0 +1,923 @@ +/* -*- 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 + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +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 , data point has , this + will reset for this point, unless is repeated + in the data point). The elements , , + , , and are not affected at all. */ + bool bHasAnyElement = true; + if (bMSO2007Doc) + { + bHasAnyElement = rDataLabel.moaSeparator.has_value() || rDataLabel.monLabelPos.has_value() || + rDataLabel.mobShowCatName.has_value() || rDataLabel.mobShowLegendKey.has_value() || + rDataLabel.mobShowPercent.has_value() || rDataLabel.mobShowSerName.has_value() || + rDataLabel.mobShowVal.has_value(); + } + + bool bShowValue = !rDataLabel.mbDeleted && rDataLabel.mobShowVal.value_or( !bMSO2007Doc ); + bool bShowPercent = !rDataLabel.mbDeleted && rDataLabel.mobShowPercent.value_or( !bMSO2007Doc ) && (rTypeInfo.meTypeCategory == TYPECATEGORY_PIE); + bool bShowCateg = !rDataLabel.mbDeleted && rDataLabel.mobShowCatName.value_or( !bMSO2007Doc ); + bool bShowSerName = !rDataLabel.mbDeleted && rDataLabel.mobShowSerName.value_or( !bMSO2007Doc ); + bool bShowSymbol = !rDataLabel.mbDeleted && rDataLabel.mobShowLegendKey.value_or( !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_value() ) ) + rPropSet.setProperty( PROP_LabelSeparator, rDataLabel.moaSeparator.value_or( "\n" ) ); + else if( bDataSeriesLabel || rDataLabel.moaSeparator.has_value() ) + rPropSet.setProperty( PROP_LabelSeparator, rDataLabel.moaSeparator.value_or( "; " ) ); + + // data label placement (do not overwrite series placement, if no explicit point placement is present) + if( !(bDataSeriesLabel || rDataLabel.monLabelPos.has_value()) ) + return; + + namespace csscd = ::com::sun::star::chart::DataLabelPlacement; + sal_Int32 nPlacement = -1; + switch( rDataLabel.monLabelPos.value_or( 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.has_value() && rLP.maLineFill.moFillType.value() == XML_noFill) + return; + + if (rLP.moLineWidth.has_value()) + { + sal_Int32 nWidth = convertEmuToHmm(rLP.moLineWidth.value()); + 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_value() && rFP.moFillType.value() == 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_value() && rFP.moFillType.value() == 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.value(), 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 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; + + std::optional< OUString > oaLabelText; + std::optional< OUString > oaCellRange; + if (mrModel.mobShowDataLabelsRange.value_or(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()) + { + oaLabelText.emplace(); + rKV->second >>= *oaLabelText; + } + } + } + + 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() ); + + if (TextField* pField = dynamic_cast(pRun.get())) + { + DataPointCustomLabelFieldType eType = lcl_ConvertFieldNameToFieldEnum( pField->getType() ); + + if (eType == DataPointCustomLabelFieldType::DataPointCustomLabelFieldType_CELLRANGE && oaCellRange.has_value()) + { + xCustomLabel->setCellRange( oaCellRange.value() ); + xCustomLabel->setString( oaLabelText.value_or("") ); + xCustomLabel->setDataLabelsRange( true ); + } + else + xCustomLabel->setString( pField->getText() ); + + xCustomLabel->setFieldType( eType ); + xCustomLabel->setGuid( pField->getUuid() ); + } + else + { + 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 text props (if not set) from text props (if set). +void InheritFromDataLabelsTextProps(const DataLabelsModel& rLabels, const DataLabelModel& rLabel) +{ + // See if contains text properties to inherit. + if (!rLabels.mxTextProp.is() || rLabels.mxTextProp->getParagraphs().empty()) + { + return; + } + + const std::shared_ptr& rLabelsParagraph = rLabels.mxTextProp->getParagraphs()[0]; + + // See if lacks text properties. + if (rLabel.mxTextProp.is()) + { + return; + } + + if (!rLabel.mxText || !rLabel.mxText->mxTextBody + || rLabel.mxText->mxTextBody->getParagraphs().empty()) + { + return; + } + + const std::shared_ptr& 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 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_value(); + aPropSet.setProperty( PROP_ForceIntercept, hasIntercept); + if (hasIntercept) + aPropSet.setProperty( PROP_InterceptValue, mrModel.mfIntercept.value()); + + // Extrapolation + if (mrModel.mfForward.has_value()) + aPropSet.setProperty( PROP_ExtrapolateForward, mrModel.mfForward.value() ); + if (mrModel.mfBackward.has_value()) + aPropSet.setProperty( PROP_ExtrapolateBackward, mrModel.mfBackward.value() ); + + // 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.has_value() && mrModel.monMarkerSymbol.value() != rSeries.mnMarkerSymbol ) || + ( mrModel.monMarkerSize.has_value() && mrModel.monMarkerSize.value() != rSeries.mnMarkerSize ) ) + rTypeGroup.convertMarker( aPropSet, mrModel.monMarkerSymbol.value_or( rSeries.mnMarkerSymbol ), + mrModel.monMarkerSize.value_or( rSeries.mnMarkerSize ), mrModel.mxMarkerProp ); + + // data point pie explosion + if( mrModel.monExplosion.has_value() && mrModel.monExplosion.value() != rSeries.mnExplosion ) + rTypeGroup.convertPieExplosion( aPropSet, mrModel.monExplosion.value() ); + + // 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(); + } + // 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.value_or( 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 0000000000..95b0deb225 --- /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 +#include + +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 0000000000..04a4ea7069 --- /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 + +#include +#include +#include +#include +#include +#include +#include + +#include + + +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 and embedded 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 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 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 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 0000000000..91684393c6 --- /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 + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +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& rxDiagram) +{ + Reference xCooSysContainer(rxDiagram, UNO_QUERY_THROW); + const Sequence> 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(rCooSys, UNO_QUERY_THROW); + const Sequence> xChartTypeSequence(xChartTypeContainer->getChartTypes()); + if (!xChartTypeSequence.hasElements()) + continue; + + for (const auto& rCT : xChartTypeSequence) + { + Reference 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> 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 xDSrc(rDataSeries, UNO_QUERY); + if (!xDSrc.is()) + continue; + + const Sequence > aDataSeqs = xDSrc->getDataSequences(); + std::vector deletedLegendEntries; + sal_Int32 j = 0; + for (const auto& rDataSeq : aDataSeqs) + { + Reference 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 0000000000..0bbaa7ee68 --- /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 +#include + +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 0000000000..96c4d6fc2b --- /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 + +#include +#include +#include +#include +#include +#include + +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 0000000000..e8d8bb47bc --- /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 + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +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(mrModel.maAxisIds.size())) && (static_cast(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(*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; nCTIdxgetChartType() == 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 0000000000..9479f93c49 --- /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 +#include + +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 0000000000..7a0b12fe3f --- /dev/null +++ b/oox/source/drawingml/clrscheme.cxx @@ -0,0 +1,196 @@ +/* -*- 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 + +#include +#include + +#include +#include +#include +#include + +#include +#include +#include + +using namespace com::sun::star; + +namespace oox::drawingml { + +namespace +{ + +constexpr frozen::unordered_map constPredefinedClrNames +{ + { dk1, u"dk1" }, + { lt1, u"lt1" }, + { dk2, u"dk2" }, + { lt2, u"lt2" }, + { accent1, u"accent1" }, + { accent2, u"accent2" }, + { accent3, u"accent3" }, + { accent4, u"accent4" }, + { accent5, u"accent5" }, + { accent6, u"accent6" }, + { hlink, u"hlink" }, + { folHlink, u"folHlink" } +}; + +} // end anonymous namespace + +std::u16string_view getPredefinedClrNames(PredefinedClrSchemeId eID) +{ + std::u16string_view empty; + auto iterator = constPredefinedClrNames.find(eID); + if (iterator == constPredefinedClrNames.end()) + return empty; + return iterator->second; +} + +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& 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; + case XML_background1 : nSchemeClrToken = XML_lt1; break; + case XML_background2 : nSchemeClrToken = XML_lt2; break; + case XML_text1 : nSchemeClrToken = XML_dk1; break; + case XML_text2 : nSchemeClrToken = XML_dk2; break; + case XML_light1 : nSchemeClrToken = XML_lt1; break; + case XML_light2 : nSchemeClrToken = XML_lt2; break; + case XML_dark1 : nSchemeClrToken = XML_dk1; break; + case XML_dark2 : nSchemeClrToken = XML_dk2; break; + case XML_hyperlink : nSchemeClrToken = XML_hlink; break; + case XML_followedHyperlink: nSchemeClrToken = XML_folHlink; 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 aRet; + + for (const auto& rIndexAndColor : maClrScheme) + { + aRet.push_back(static_cast(rIndexAndColor.second)); + } + + rVal <<= comphelper::containerToSequence(aRet); +} + +void ClrScheme::fill(model::ColorSet& rColorSet) const +{ + for (const auto& [nToken, rColor] : maClrScheme) + { + switch (nToken) + { + case XML_tx1: + case XML_dk1: rColorSet.add(model::ThemeColorType::Dark1, rColor); break; + case XML_bg1: + case XML_lt1: rColorSet.add(model::ThemeColorType::Light1, rColor); break; + case XML_tx2: + case XML_dk2: rColorSet.add(model::ThemeColorType::Dark2, rColor); break; + case XML_bg2: + case XML_lt2: rColorSet.add(model::ThemeColorType::Light2, rColor); break; + case XML_accent1: rColorSet.add(model::ThemeColorType::Accent1, rColor); break; + case XML_accent2: rColorSet.add(model::ThemeColorType::Accent2, rColor); break; + case XML_accent3: rColorSet.add(model::ThemeColorType::Accent3, rColor); break; + case XML_accent4: rColorSet.add(model::ThemeColorType::Accent4, rColor); break; + case XML_accent5: rColorSet.add(model::ThemeColorType::Accent5, rColor); break; + case XML_accent6: rColorSet.add(model::ThemeColorType::Accent6, rColor); break; + case XML_hlink: rColorSet.add(model::ThemeColorType::Hyperlink, rColor); break; + case XML_folHlink: rColorSet.add(model::ThemeColorType::FollowedHyperlink, rColor); break; + default: break; + } + } +} + +} + +/* 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 0000000000..6023703dbe --- /dev/null +++ b/oox/source/drawingml/clrschemecontext.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 +#include +#include +#include +#include + +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, model::ColorSet& rColorSet, sal_Int32 nColorToken) + : ColorContext(rParent, *this, nullptr) + , mrClrScheme(rClrScheme) + , mrColorSet(rColorSet) + , mnColorToken(nColorToken) +{ +} + +clrSchemeColorContext::~clrSchemeColorContext() +{ + ::Color aColor = getColor(getFilter().getGraphicHelper()); + mrClrScheme.setColor(mnColorToken, aColor); + switch (mnColorToken) + { + case XML_tx1: + case XML_dk1: mrColorSet.add(model::ThemeColorType::Dark1, aColor); break; + case XML_bg1: + case XML_lt1: mrColorSet.add(model::ThemeColorType::Light1, aColor); break; + case XML_tx2: + case XML_dk2: mrColorSet.add(model::ThemeColorType::Dark2, aColor); break; + case XML_bg2: + case XML_lt2: mrColorSet.add(model::ThemeColorType::Light2, aColor); break; + case XML_accent1: mrColorSet.add(model::ThemeColorType::Accent1, aColor); break; + case XML_accent2: mrColorSet.add(model::ThemeColorType::Accent2, aColor); break; + case XML_accent3: mrColorSet.add(model::ThemeColorType::Accent3, aColor); break; + case XML_accent4: mrColorSet.add(model::ThemeColorType::Accent4, aColor); break; + case XML_accent5: mrColorSet.add(model::ThemeColorType::Accent5, aColor); break; + case XML_accent6: mrColorSet.add(model::ThemeColorType::Accent6, aColor); break; + case XML_hlink: mrColorSet.add(model::ThemeColorType::Hyperlink, aColor); break; + case XML_folHlink: mrColorSet.add(model::ThemeColorType::FollowedHyperlink, aColor); break; + default: break; + } +} + +clrSchemeContext::clrSchemeContext(ContextHandler2Helper const & rParent, ClrScheme& rClrScheme, model::ColorSet& rColorSet) + : ContextHandler2(rParent) + , mrClrScheme(rClrScheme) + , mrColorSet(rColorSet) +{ +} + +ContextHandlerRef clrSchemeContext::onCreateContext( + sal_Int32 nElement, const AttributeList& ) +{ + switch( nElement ) + { + case A_TOKEN( dk1 ): + case A_TOKEN( tx1 ): + case A_TOKEN( lt1 ): + case A_TOKEN( bg1 ): + case A_TOKEN( dk2 ): + case A_TOKEN( tx2 ): + case A_TOKEN( lt2 ): + case A_TOKEN( bg2 ): + 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, mrColorSet, 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 0000000000..9462fc0309 --- /dev/null +++ b/oox/source/drawingml/color.cxx @@ -0,0 +1,1011 @@ +/* -*- 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 +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +namespace oox::drawingml { + +namespace +{ + +// predefined colors in DrawingML (map XML token identifiers to RGB values) +constexpr frozen::unordered_map constDmlColors +{ + {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)} +}; + +constexpr ::Color lookupDmlColor(sal_Int32 nToken) +{ + auto iterator = constDmlColors.find(nToken); + if (iterator == constDmlColors.end()) + return API_RGB_TRANSPARENT; + return iterator->second; +} + +constexpr frozen::unordered_map constVmlColors +{ + {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)} +}; + +constexpr ::Color lookupVmlColor(sal_Int32 nToken) +{ + auto iterator = constVmlColors.find(nToken); + if (iterator == constVmlColors.end()) + return API_RGB_TRANSPARENT; + return iterator->second; +} + +constexpr frozen::unordered_map constHighlightColors +{ + // 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)} +}; + +constexpr ::Color lookupHighlightColor(sal_Int32 nToken) +{ + auto iterator = constHighlightColors.find(nToken); + if (iterator == constHighlightColors.end()) + return API_RGB_TRANSPARENT; + return iterator->second; +} + +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 ); +} + +constexpr frozen::unordered_map constSchemeColorNameToIndex +{ + { u"dk1", model::ThemeColorType::Dark1 }, + { u"lt1", model::ThemeColorType::Light1 }, + { u"dk2", model::ThemeColorType::Dark2 }, + { u"lt2", model::ThemeColorType::Light2 }, + { u"accent1", model::ThemeColorType::Accent1 }, + { u"accent2", model::ThemeColorType::Accent2 }, + { u"accent3", model::ThemeColorType::Accent3 }, + { u"accent4", model::ThemeColorType::Accent4 }, + { u"accent5", model::ThemeColorType::Accent5 }, + { u"accent6", model::ThemeColorType::Accent6 }, + { u"hlink", model::ThemeColorType::Hyperlink }, + { u"folHlink", model::ThemeColorType::FollowedHyperlink }, + { u"tx1", model::ThemeColorType::Dark1 }, + { u"bg1", model::ThemeColorType::Light1 }, + { u"tx2", model::ThemeColorType::Dark2 }, + { u"bg2", model::ThemeColorType::Light2 }, + { u"dark1", model::ThemeColorType::Dark1}, + { u"light1", model::ThemeColorType::Light1}, + { u"dark2", model::ThemeColorType::Dark2 }, + { u"light2", model::ThemeColorType::Light2 }, + { u"text1", model::ThemeColorType::Dark1 }, + { u"background1", model::ThemeColorType::Light1 }, + { u"text2", model::ThemeColorType::Dark2 }, + { u"background2", model::ThemeColorType::Light2 }, + { u"hyperlink", model::ThemeColorType::Hyperlink }, + { u"followedHyperlink", model::ThemeColorType::FollowedHyperlink } +}; + +constexpr frozen::unordered_map constThemeColorTokenMap +{ + { XML_dk1, model::ThemeColorType::Dark1 }, + { XML_lt1, model::ThemeColorType::Light1 }, + { XML_dk2, model::ThemeColorType::Dark2 }, + { XML_lt2, model::ThemeColorType::Light2 }, + { XML_accent1, model::ThemeColorType::Accent1 }, + { XML_accent2, model::ThemeColorType::Accent2 }, + { XML_accent3, model::ThemeColorType::Accent3 }, + { XML_accent4, model::ThemeColorType::Accent4 }, + { XML_accent5, model::ThemeColorType::Accent5 }, + { XML_accent6, model::ThemeColorType::Accent6 }, + { XML_hlink, model::ThemeColorType::Hyperlink }, + { XML_folHlink, model::ThemeColorType::FollowedHyperlink }, + { XML_tx1, model::ThemeColorType::Dark1 }, + { XML_bg1, model::ThemeColorType::Light1 }, + { XML_tx2, model::ThemeColorType::Dark2 }, + { XML_bg2, model::ThemeColorType::Light2 }, + { XML_dark1, model::ThemeColorType::Dark1 }, + { XML_light1, model::ThemeColorType::Light1 }, + { XML_dark2, model::ThemeColorType::Dark2 }, + { XML_light2, model::ThemeColorType::Light2 }, + { XML_text1, model::ThemeColorType::Dark1 }, + { XML_background1, model::ThemeColorType::Light1 }, + { XML_text2, model::ThemeColorType::Dark2 }, + { XML_background2, model::ThemeColorType::Light2 }, + { XML_hyperlink, model::ThemeColorType::Hyperlink }, + { XML_followedHyperlink, model::ThemeColorType::FollowedHyperlink }, +}; + +} // end anonymous namespace + +model::ThemeColorType schemeNameToThemeColorType(OUString const& rSchemeName) +{ + auto aIterator = constSchemeColorNameToIndex.find(rSchemeName); + if (aIterator == constSchemeColorNameToIndex.end()) + return model::ThemeColorType::Unknown; + else + return aIterator->second; +} + +model::ThemeColorType schemeTokenToThemeColorType(sal_uInt32 nToken) +{ + auto aIterator = constThemeColorTokenMap.find(nToken); + if (aIterator == constThemeColorTokenMap.end()) + return model::ThemeColorType::Unknown; + else + return aIterator->second; +} + +Color::Color() : + meMode( COLOR_UNUSED ), + mnC1( 0 ), + mnC2( 0 ), + mnC3( 0 ), + mnAlpha( MAX_PERCENT ), + meThemeColorType( model::ThemeColorType::Unknown ) +{ +} + +::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 = lookupDmlColor(nToken); + 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 = lookupVmlColor(nToken); + 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 = lookupHighlightColor(nToken); + 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; + if (meMode == COLOR_SCHEME) + meThemeColorType = schemeTokenToThemeColorType(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 = std::round(std::abs(fTint) * 100'000.0); + if (fTint > 0.0) + { + maTransforms.emplace_back(XML_lumMod, 100'000 - nValue); + maTransforms.emplace_back(XML_lumOff, nValue); + } + else if (fTint < 0.0) + { + maTransforms.emplace_back(XML_lumMod, 100'000 - 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; +} + +model::ComplexColor Color::getComplexColor() const +{ + auto aComplexColor = model::ComplexColor::Theme(model::convertToThemeColorType(getSchemeColorIndex())); + + if (getTintOrShade() > 0) + { + aComplexColor.addTransformation({model::TransformationType::Tint, getTintOrShade()}); + } + else if (getTintOrShade() < 0) + { + sal_Int16 nShade = o3tl::narrowing(-getTintOrShade()); + aComplexColor.addTransformation({model::TransformationType::Shade, nShade}); + } + + if (getLumMod() != 10000) + aComplexColor.addTransformation({model::TransformationType::LumMod, getLumMod()}); + + if (getLumOff() != 0) + aComplexColor.addTransformation({model::TransformationType::LumOff, getLumOff()}); + + return aComplexColor; +} + +::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 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 +{ + auto eThemeType = schemeNameToThemeColorType(msSchemeName); + return sal_Int16(eThemeType); +} + +model::ComplexColor Color::createComplexColor(const GraphicHelper& /*rGraphicHelper*/, sal_Int16 nPhClrTheme) const +{ + model::ComplexColor aNewComplexColor; + if (meMode == COLOR_PH) + { + auto eTheme = model::convertToThemeColorType(nPhClrTheme); + aNewComplexColor.setThemeColor(eTheme); + } + else if (meMode == COLOR_SCHEME) + { + auto eTheme = getThemeColorType(); + aNewComplexColor.setThemeColor(eTheme); + } + else if (meMode == COLOR_RGB) + { + ::Color aColor(ColorTransparency, lclRgbComponentsToRgb(mnC1, mnC2, mnC3)); + aNewComplexColor = model::ComplexColor::createRGB(aColor); + } + else + { + // TODO - Add other options + return aNewComplexColor; + } + + for(auto const& aTransform : maTransforms) + { + sal_Int16 nValue = sal_Int16(aTransform.mnValue / 10); + + switch (aTransform.mnToken) + { + case XML_lumMod: + if (nValue != 10'000) + aNewComplexColor.addTransformation({model::TransformationType::LumMod, nValue}); + break; + case XML_lumOff: + if (nValue != 0) + aNewComplexColor.addTransformation({model::TransformationType::LumOff, nValue}); + break; + case XML_tint: + if (nValue != 0) + aNewComplexColor.addTransformation({model::TransformationType::Tint, nValue}); + break; + case XML_shade: + if (nValue != 0) + aNewComplexColor.addTransformation({model::TransformationType::Shade, nValue}); + break; + } + } + + return aNewComplexColor; +} + +// 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 0000000000..4db601aed0 --- /dev/null +++ b/oox/source/drawingml/colorchoicecontext.cxx @@ -0,0 +1,339 @@ +/* -*- 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 +#include +#include +#include +#include +#include +#include +#include +#include +#include + +namespace oox::drawingml { + +namespace +{ + +constexpr frozen::unordered_map constSystemColorMap +{ + { XML_scrollBar, model::SystemColorType::ScrollBar }, + { XML_background, model::SystemColorType::Background }, + { XML_activeCaption, model::SystemColorType::ActiveCaption }, + { XML_inactiveCaption, model::SystemColorType::InactiveCaption }, + { XML_menu, model::SystemColorType::Menu }, + { XML_window, model::SystemColorType::Window }, + { XML_windowFrame, model::SystemColorType::WindowFrame }, + { XML_menuText, model::SystemColorType::MenuText }, + { XML_windowText, model::SystemColorType::WindowText }, + { XML_captionText, model::SystemColorType::CaptionText }, + { XML_activeBorder, model::SystemColorType::ActiveBorder }, + { XML_inactiveBorder, model::SystemColorType::InactiveBorder }, + { XML_appWorkspace, model::SystemColorType::AppWorkspace }, + { XML_highlight, model::SystemColorType::Highlight }, + { XML_highlightText, model::SystemColorType::HighlightText }, + { XML_btnFace, model::SystemColorType::ButtonFace }, + { XML_btnShadow, model::SystemColorType::ButtonShadow }, + { XML_grayText, model::SystemColorType::GrayText }, + { XML_btnText, model::SystemColorType::ButtonText }, + { XML_inactiveCaptionText, model::SystemColorType::InactiveCaptionText }, + { XML_btnHighlight, model::SystemColorType::ButtonHighlight }, + { XML_3dDkShadow, model::SystemColorType::DarkShadow3D }, + { XML_3dLight, model::SystemColorType::Light3D }, + { XML_infoText, model::SystemColorType::InfoText }, + { XML_infoBk, model::SystemColorType::InfoBack }, + { XML_hotLight, model::SystemColorType::HotLight }, + { XML_gradientActiveCaption, model::SystemColorType::GradientActiveCaption }, + { XML_gradientInactiveCaption, model::SystemColorType::GradientInactiveCaption }, + { XML_menuHighlight, model::SystemColorType::MenuHighlight }, + { XML_menuBar, model::SystemColorType::MenuBar } +}; + +constexpr frozen::unordered_map constTransformTypeMap +{ + { XML_alpha, model::TransformationType::Alpha }, + { XML_alphaMod, model::TransformationType::AlphaMod }, + { XML_alphaOff, model::TransformationType::AlphaOff }, + { XML_blue, model::TransformationType::Blue }, + { XML_blueMod, model::TransformationType::BlueMod }, + { XML_blueOff, model::TransformationType::BlueOff }, + { XML_hue, model::TransformationType::Hue }, + { XML_hueMod, model::TransformationType::HueMod}, + { XML_hueOff, model::TransformationType::HueOff }, + { XML_lum, model::TransformationType::Lum }, + { XML_lumMod, model::TransformationType::LumMod }, + { XML_lumOff, model::TransformationType::LumOff }, + { XML_green, model::TransformationType::Green }, + { XML_greenMod, model::TransformationType::GreenMod }, + { XML_greenOff, model::TransformationType::GreenOff }, + { XML_red, model::TransformationType::Red }, + { XML_redMod, model::TransformationType::RedMod }, + { XML_redOff, model::TransformationType::RedOff }, + { XML_sat, model::TransformationType::Sat }, + { XML_satMod, model::TransformationType::SatMod }, + { XML_satOff, model::TransformationType::SatMod }, + { XML_shade, model::TransformationType::Shade }, + { XML_tint, model::TransformationType::Tint }, + { XML_comp, model::TransformationType::Comp }, + { XML_gamma, model::TransformationType::Gamma }, + { XML_gray, model::TransformationType::Gray }, + { XML_inv, model::TransformationType::Inv }, + { XML_invGamma, model::TransformationType::InvGamma } +}; + +} + +ColorValueContext::ColorValueContext(ContextHandler2Helper const & rParent, Color& rColor, model::ComplexColor* pComplexColor) + : ContextHandler2(rParent) + , mrColor(rColor) + , mpComplexColor(pComplexColor) +{ +} + +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 ) ); + if (mpComplexColor) + { + mpComplexColor->setCRGB( + 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)); + if (mpComplexColor) + { + mpComplexColor->setRGB(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 ) ); + + if (mpComplexColor) + { + mpComplexColor->setHSL( + rAttribs.getInteger(XML_hue, 0), + rAttribs.getInteger(XML_sat, 0), + rAttribs.getInteger(XML_lum, 0)); + } + } + break; + + case A_TOKEN(sysClr): + { + sal_Int32 nToken = rAttribs.getToken(XML_val, XML_TOKEN_INVALID); + sal_Int32 nLastColor = rAttribs.getIntegerHex(XML_lastClr, -1); + + mrColor.setSysClr(nToken, nLastColor); + + if (mpComplexColor) + { + auto aIterator = constSystemColorMap.find(nToken); + if (aIterator != constSystemColorMap.end()) + { + auto const& aPair = *aIterator; + model::SystemColorType eType = aPair.second; + mpComplexColor->setSystemColor(eType, nLastColor); + } + } + } + break; + + case A_TOKEN(schemeClr): + { + auto nToken = rAttribs.getToken(XML_val, XML_TOKEN_INVALID); + mrColor.setSchemeClr(nToken); + std::optional sSchemeName = rAttribs.getString(XML_val); + if (sSchemeName.has_value()) + { + mrColor.setSchemeName(*sSchemeName); + + if (mpComplexColor) + { + if (nToken == XML_phClr) + { + mpComplexColor->setThemePlaceholder(); + } + else + { + model::ThemeColorType eType = schemeNameToThemeColorType(*sSchemeName); + mpComplexColor->setThemeColor(eType); + } + } + } + } + break; + + case A_TOKEN(prstClr): + { + sal_Int32 nToken = rAttribs.getToken(XML_val, XML_TOKEN_INVALID); + mrColor.setPrstClr(nToken); + if (mpComplexColor) + { + // TODO - just converted to RGB for now + ::Color nRgbValue = Color::getDmlPresetColor(nToken, API_RGB_TRANSPARENT); + mpComplexColor->setColor(nRgbValue); + } + } + 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.getStringDefaulted( XML_val); + 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; + } + + if (mpComplexColor) + { + auto aIterator = constTransformTypeMap.find(getBaseToken(nElement)); + if (aIterator != constTransformTypeMap.end()) + { + auto const& aPair = *aIterator; + model::TransformationType eType = aPair.second; + + OUString aValueString = rAttribs.getStringDefaulted(XML_val); + sal_Int32 nValue = 0; + if (aValueString.endsWith("%")) + nValue = aValueString.toDouble() * PER_PERCENT; + else + nValue = rAttribs.getInteger(XML_val, 0); + + mpComplexColor->addTransformation({eType, sal_Int16(nValue / 10)}); + } + } + + return nullptr; +} + +ColorContext::ColorContext(ContextHandler2Helper const & rParent, Color& rColor, model::ComplexColor* pComplexColor) + : ContextHandler2(rParent) + , mrColor(rColor) + , mpComplexColor(pComplexColor) +{ +} + +::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, mpComplexColor); + } + return nullptr; +} + +ColorsContext::ColorsContext(ContextHandler2Helper const& rParent, std::vector& 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(), nullptr); + } + } + return nullptr; +} + +} // namespace oox::drawingml + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/oox/source/drawingml/connectorhelper.cxx b/oox/source/drawingml/connectorhelper.cxx new file mode 100644 index 0000000000..e54b586c23 --- /dev/null +++ b/oox/source/drawingml/connectorhelper.cxx @@ -0,0 +1,440 @@ +/* -*- 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 + +#include + +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include + +using namespace ::com::sun::star; + +// These shapes have no gluepoints defined in their mso_CustomShape struct, thus the gluepoint +// adaption to default gluepoints will be done. Other shapes having no gluepoint defined in the +// mso_CustomShape struct, have gluepoints in order top-left-bottom-right in OOXML. But the shapes +// below have order right-bottom-left-top. Adding gluepoints to mso_CustomShape structs does not +// solve the problem because MS binary gluepoints and OOXML gluepoints are different. + +bool ConnectorHelper::hasClockwiseCxn(const OUString& rShapeType) +{ + static const std::set aWithClockwiseCxnSet({ u"accentBorderCallout1"_ustr, + u"accentBorderCallout2"_ustr, + u"accentBorderCallout3"_ustr, + u"accentCallout1"_ustr, + u"accentCallout2"_ustr, + u"accentCallout3"_ustr, + u"actionButtonBackPrevious"_ustr, + u"actionButtonBeginning"_ustr, + u"actionButtonBlank"_ustr, + u"actionButtonDocument"_ustr, + u"actionButtonEnd"_ustr, + u"actionButtonForwardNext"_ustr, + u"actionButtonHelp"_ustr, + u"actionButtonHome"_ustr, + u"actionButtonInformation"_ustr, + u"actionButtonMovie"_ustr, + u"actionButtonReturn"_ustr, + u"actionButtonSound"_ustr, + u"borderCallout1"_ustr, + u"borderCallout2"_ustr, + u"borderCallout3"_ustr, + u"callout1"_ustr, + u"callout2"_ustr, + u"callout3"_ustr, + u"cloud"_ustr, + u"corner"_ustr, + u"diagStripe"_ustr, + u"flowChartOfflineStorage"_ustr, + u"halfFrame"_ustr, + u"mathDivide"_ustr, + u"mathMinus"_ustr, + u"mathPlus"_ustr, + u"nonIsoscelesTrapezoid"_ustr, + u"pie"_ustr, + u"round2DiagRect"_ustr, + u"round2SameRect"_ustr, + u"snip1Rect"_ustr, + u"snip2DiagRect"_ustr, + u"snip2SameRect"_ustr, + u"snipRoundRect"_ustr }); + return aWithClockwiseCxnSet.contains(rShapeType); +} + +basegfx::B2DHomMatrix +ConnectorHelper::getConnectorTransformMatrix(const oox::drawingml::ShapePtr& pConnector) +{ + basegfx::B2DHomMatrix aTransform; // ctor generates unit matrix + if (!pConnector) + return aTransform; + if (pConnector->getFlipH()) + aTransform.scale(-1.0, 1.0); + if (pConnector->getFlipV()) + aTransform.scale(1.0, -1.0); + if (pConnector->getRotation() == 0) + return aTransform; + if (pConnector->getRotation() == 5400000) + aTransform *= basegfx::B2DHomMatrix(0, -1, 0, 1, 0, 0); + else if (pConnector->getRotation() == 10800000) + aTransform *= basegfx::B2DHomMatrix(-1, 0, 0, 0, -1, 0); + else if (pConnector->getRotation() == 16200000) + aTransform *= basegfx::B2DHomMatrix(0, 1, 0, -1, 0, 0); + else + SAL_WARN("oox", "tdf#157888 LibreOffice cannot handle such connector rotation"); + return aTransform; +} + +void ConnectorHelper::getOOXHandlePositionsHmm(const oox::drawingml::ShapePtr& pConnector, + std::vector& rHandlePositions) +{ + rHandlePositions.clear(); + + if (!pConnector) + return; + + if (pConnector->getConnectorName() == u"bentConnector2"_ustr + || pConnector->getConnectorName() == u"curvedConnector2"_ustr) + return; // These have no handles. + + // Convert string attribute to number. Set default 50000 if missing. + std::vector aAdjustmentOOXVec; // 1/100000 of shape size + for (size_t i = 0; i < 3; i++) + { + if (i < pConnector->getConnectorAdjustments().size()) + aAdjustmentOOXVec.push_back(pConnector->getConnectorAdjustments()[i].toInt32()); + else + aAdjustmentOOXVec.push_back(50000); + } + + // Handle positions depend on EdgeKind and ShapeSize. bendConnector and curvedConnector use the + // same handle positions. The formulas here correspond to guides in the bendConnector in + // presetShapeDefinitions.xml. + const double fWidth = pConnector->getSize().Width; // EMU + const double fHeight = pConnector->getSize().Height; // EMU + const double fPosX = pConnector->getPosition().X; // EMU + const double fPosY = pConnector->getPosition().Y; // EMU + + if (pConnector->getConnectorName() == u"bentConnector3"_ustr + || pConnector->getConnectorName() == u"curvedConnector3"_ustr) + { + double fAdj1 = aAdjustmentOOXVec[0]; + double fX1 = fAdj1 / 100000.0 * fWidth; + double fY1 = fHeight / 2.0; + rHandlePositions.push_back({ fX1, fY1 }); + } + else if (pConnector->getConnectorName() == u"bentConnector4"_ustr + || pConnector->getConnectorName() == u"curvedConnector4"_ustr) + { + double fAdj1 = aAdjustmentOOXVec[0]; + double fAdj2 = aAdjustmentOOXVec[1]; + double fX1 = fAdj1 / 100000.0 * fWidth; + double fX2 = (fX1 + fWidth) / 2.0; + double fY2 = fAdj2 / 100000.0 * fHeight; + double fY1 = fY2 / 2.0; + rHandlePositions.push_back({ fX1, fY1 }); + rHandlePositions.push_back({ fX2, fY2 }); + } + else if (pConnector->getConnectorName() == u"bentConnector5"_ustr + || pConnector->getConnectorName() == u"curvedConnector5"_ustr) + { + double fAdj1 = aAdjustmentOOXVec[0]; + double fAdj2 = aAdjustmentOOXVec[1]; + double fAdj3 = aAdjustmentOOXVec[2]; + double fX1 = fAdj1 / 100000.0 * fWidth; + double fX3 = fAdj3 / 100000.0 * fWidth; + double fX2 = (fX1 + fX3) / 2.0; + double fY2 = fAdj2 / 100000.0 * fHeight; + double fY1 = fY2 / 2.0; + double fY3 = (fHeight + fY2) / 2.0; + rHandlePositions.push_back({ fX1, fY1 }); + rHandlePositions.push_back({ fX2, fY2 }); + rHandlePositions.push_back({ fX3, fY3 }); + } + + // The presetGeometry has the first segment horizontal and start point left/top with + // coordinates (0|0). Other layouts are done by flipping and rotating. + basegfx::B2DHomMatrix aTransform; + const basegfx::B2DPoint aB2DCenter(fWidth / 2.0, fHeight / 2.0); + aTransform.translate(-aB2DCenter); + aTransform *= getConnectorTransformMatrix(pConnector); + aTransform.translate(aB2DCenter); + + // Make coordinates absolute + aTransform.translate(fPosX, fPosY); + + // Actually transform the handle coordinates + for (auto& rElem : rHandlePositions) + rElem *= aTransform; + + // Convert EMU -> Hmm + for (auto& rElem : rHandlePositions) + rElem /= 360.0; +} + +void ConnectorHelper::getLOBentHandlePositionsHmm(const oox::drawingml::ShapePtr& pConnector, + std::vector& rHandlePositions) +{ + // This method is intended for Edgekind css::drawing::ConnectorType_STANDARD. Those connectors + // correspond to OOX bentConnector, aka "ElbowConnector". + rHandlePositions.clear(); + + if (!pConnector) + return; + uno::Reference xConnector(pConnector->getXShape()); + if (!xConnector.is()) + return; + + // Get the EdgeTrack polygon. We cannot use UNO "PolyPolygonBezier" because that includes + // the yet not known anchor position in Writer. Thus get the polygon directly from the object. + SdrEdgeObj* pEdgeObj = dynamic_cast(SdrObject::getSdrObjectFromXShape(xConnector)); + if (!pEdgeObj) + return; + basegfx::B2DPolyPolygon aB2DPolyPolygon(pEdgeObj->GetEdgeTrackPath()); + if (aB2DPolyPolygon.count() == 0) + return; + + basegfx::B2DPolygon aEdgePolygon = aB2DPolyPolygon.getB2DPolygon(0); + if (aEdgePolygon.count() < 4 || aEdgePolygon.areControlPointsUsed()) + return; + + // We need Hmm, the polygon might be e.g. in Twips, in Writer for example + MapUnit eMapUnit = pEdgeObj->getSdrModelFromSdrObject().GetItemPool().GetMetric(0); + if (eMapUnit != MapUnit::Map100thMM) + { + const auto eFrom = MapToO3tlLength(eMapUnit); + if (eFrom == o3tl::Length::invalid) + return; + const double fConvert(o3tl::convert(1.0, eFrom, o3tl::Length::mm100)); + aEdgePolygon.transform(basegfx::B2DHomMatrix(fConvert, 0.0, 0.0, 0.0, fConvert, 0.0)); + } + + // LO has the handle in the middle of a segment, but not for first and last segment. + for (sal_uInt32 i = 1; i < aEdgePolygon.count() - 2; i++) + { + const basegfx::B2DPoint aBeforePt(aEdgePolygon.getB2DPoint(i)); + const basegfx::B2DPoint aAfterPt(aEdgePolygon.getB2DPoint(i + 1)); + rHandlePositions.push_back((aBeforePt + aAfterPt) / 2.0); + } +} + +void ConnectorHelper::getLOCurvedHandlePositionsHmm( + const oox::drawingml::ShapePtr& pConnector, std::vector& rHandlePositions) +{ + // This method is intended for Edgekind css::drawing::ConnectorType_Curve for which OoXML + // compatible routing is enabled. + rHandlePositions.clear(); + + if (!pConnector) + return; + uno::Reference xConnector(pConnector->getXShape()); + if (!xConnector.is()) + return; + + // Get the EdgeTrack polygon. We cannot use UNO "PolyPolygonBezier" because that includes + // the yet not known anchor position in Writer. Thus get the polygon directly from the object. + SdrEdgeObj* pEdgeObj = dynamic_cast(SdrObject::getSdrObjectFromXShape(xConnector)); + if (!pEdgeObj) + return; + basegfx::B2DPolyPolygon aB2DPolyPolygon(pEdgeObj->GetEdgeTrackPath()); + if (aB2DPolyPolygon.count() == 0) + return; + + basegfx::B2DPolygon aEdgePolygon = aB2DPolyPolygon.getB2DPolygon(0); + if (aEdgePolygon.count() < 3 || !aEdgePolygon.areControlPointsUsed()) + return; + + // We need Hmm, the polygon might be e.g. in Twips, in Writer for example + MapUnit eMapUnit = pEdgeObj->getSdrModelFromSdrObject().GetItemPool().GetMetric(0); + if (eMapUnit != MapUnit::Map100thMM) + { + const auto eFrom = MapToO3tlLength(eMapUnit); + if (eFrom == o3tl::Length::invalid) + return; + const double fConvert(o3tl::convert(1.0, eFrom, o3tl::Length::mm100)); + aEdgePolygon.transform(basegfx::B2DHomMatrix(fConvert, 0.0, 0.0, 0.0, fConvert, 0.0)); + } + + // The OOXML compatible routing has the handles as polygon points, but not start or + // end point. + for (sal_uInt32 i = 1; i < aEdgePolygon.count() - 1; i++) + { + rHandlePositions.push_back(aEdgePolygon.getB2DPoint(i)); + } +} + +void ConnectorHelper::applyConnections(oox::drawingml::ShapePtr& pConnector, + oox::drawingml::ShapeIdMap& rShapeMap) +{ + uno::Reference xConnector(pConnector->getXShape()); + if (!xConnector.is()) + return; + uno::Reference xPropSet(xConnector, uno::UNO_QUERY); + if (!xPropSet.is()) + return; + + // MS Office allows route between shapes with small distance. LO default is 5mm. + xPropSet->setPropertyValue("EdgeNode1HorzDist", uno::Any(sal_Int32(0))); + xPropSet->setPropertyValue("EdgeNode1VertDist", uno::Any(sal_Int32(0))); + xPropSet->setPropertyValue("EdgeNode2HorzDist", uno::Any(sal_Int32(0))); + xPropSet->setPropertyValue("EdgeNode2VertDist", uno::Any(sal_Int32(0))); + + // A OOXML curvedConnector uses a routing method which is basically incompatible with the + // traditional way of LibreOffice. A compatible way was added and needs to be enabled before + // connections are set, so that the method is used in the default routing. + xPropSet->setPropertyValue("EdgeOOXMLCurve", uno::Any(true)); + + oox::drawingml::ConnectorShapePropertiesList aConnectorShapeProperties + = pConnector->getConnectorShapeProperties(); + // It contains maximal two items, each a struct with mbStartShape, maDestShapeId, mnDestGlueId + for (const auto& aIt : aConnectorShapeProperties) + { + const auto& pItem = rShapeMap.find(aIt.maDestShapeId); + if (pItem == rShapeMap.end()) + continue; + + uno::Reference xShape(pItem->second->getXShape(), uno::UNO_QUERY); + if (xShape.is()) + { + // Connect to the found shape. + if (aIt.mbStartShape) + xPropSet->setPropertyValue("StartShape", uno::Any(xShape)); + else + xPropSet->setPropertyValue("EndShape", uno::Any(xShape)); + + // The first four glue points are the default glue points, which are set by LibreOffice. + // They do not belong to the preset geometry of the shape. + // Adapt gluepoint index to LibreOffice + uno::Reference xSupplier(xShape, uno::UNO_QUERY); + css::uno::Reference xGluePoints( + xSupplier->getGluePoints(), uno::UNO_QUERY); + sal_Int32 nCountGluePoints = xGluePoints->getIdentifiers().getLength(); + sal_Int32 nGlueId = aIt.mnDestGlueId; + + if (nCountGluePoints > 4) + nGlueId += 4; + else + { + // In these cases the mso_CustomShape struct defines no gluepoints (Why not?), thus + // our default gluepoints are used. The order of the default gluepoints might differ + // from the order of the OOXML gluepoints. We try to change nGlueId so, that the + // connector attaches to a default gluepoint at the same side as it attaches in OOXML. + const OUString sShapeType + = pItem->second->getCustomShapeProperties()->getShapePresetTypeName(); + if (ConnectorHelper::hasClockwiseCxn(sShapeType)) + nGlueId = (nGlueId + 1) % 4; + else + { + bool bFlipH = pItem->second->getFlipH(); + bool bFlipV = pItem->second->getFlipV(); + if (bFlipH == bFlipV) + { + // change id of the left and right glue points of the bounding box (1 <-> 3) + if (nGlueId == 1) + nGlueId = 3; // Right + else if (nGlueId == 3) + nGlueId = 1; // Left + } + } + } + + if (aIt.mbStartShape) + xPropSet->setPropertyValue("StartGluePointIndex", uno::Any(nGlueId)); + else + xPropSet->setPropertyValue("EndGluePointIndex", uno::Any(nGlueId)); + } + } +} + +void ConnectorHelper::applyBentHandleAdjustments(oox::drawingml::ShapePtr pConnector) +{ + uno::Reference xConnector(pConnector->getXShape(), uno::UNO_QUERY); + if (!xConnector.is()) + return; + uno::Reference xPropSet(xConnector, uno::UNO_QUERY); + if (!xPropSet.is()) + return; + + std::vector aOOXMLHandles; + ConnectorHelper::getOOXHandlePositionsHmm(pConnector, aOOXMLHandles); + std::vector aLODefaultHandles; + ConnectorHelper::getLOBentHandlePositionsHmm(pConnector, aLODefaultHandles); + + if (aOOXMLHandles.size() == aLODefaultHandles.size()) + { + bool bUseYforHori + = basegfx::fTools::equalZero(getConnectorTransformMatrix(pConnector).get(0, 0)); + for (size_t i = 0; i < aOOXMLHandles.size(); i++) + { + basegfx::B2DVector aDiff(aOOXMLHandles[i] - aLODefaultHandles[i]); + sal_Int32 nDiff; + if ((i == 1 && !bUseYforHori) || (i != 1 && bUseYforHori)) + nDiff = basegfx::fround(aDiff.getY()); + else + nDiff = basegfx::fround(aDiff.getX()); + xPropSet->setPropertyValue("EdgeLine" + OUString::number(i + 1) + "Delta", + uno::Any(nDiff)); + } + } +} + +void ConnectorHelper::applyCurvedHandleAdjustments(oox::drawingml::ShapePtr pConnector) +{ + uno::Reference xConnector(pConnector->getXShape(), uno::UNO_QUERY); + if (!xConnector.is()) + return; + uno::Reference xPropSet(xConnector, uno::UNO_QUERY); + if (!xPropSet.is()) + return; + + std::vector aOOXMLHandles; + ConnectorHelper::getOOXHandlePositionsHmm(pConnector, aOOXMLHandles); + std::vector aLODefaultHandles; + ConnectorHelper::getLOCurvedHandlePositionsHmm(pConnector, aLODefaultHandles); + + if (aOOXMLHandles.size() == aLODefaultHandles.size()) + { + bool bUseYforHori + = basegfx::fTools::equalZero(getConnectorTransformMatrix(pConnector).get(0, 0)); + for (size_t i = 0; i < aOOXMLHandles.size(); i++) + { + basegfx::B2DVector aDiff(aOOXMLHandles[i] - aLODefaultHandles[i]); + sal_Int32 nDiff; + if ((i == 1 && !bUseYforHori) || (i != 1 && bUseYforHori)) + nDiff = basegfx::fround(aDiff.getY()); + else + nDiff = basegfx::fround(aDiff.getX()); + xPropSet->setPropertyValue("EdgeLine" + OUString::number(i + 1) + "Delta", + uno::Any(nDiff)); + } + } +} + +/* vim:set shiftwidth=4 softtabstop=4 expandtab cinoptions=b1,g0,N-s cinkeys+=0=break: */ diff --git a/oox/source/drawingml/connectorshapecontext.cxx b/oox/source/drawingml/connectorshapecontext.cxx new file mode 100644 index 0000000000..18820410dd --- /dev/null +++ b/oox/source/drawingml/connectorshapecontext.cxx @@ -0,0 +1,119 @@ +/* -*- 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 +#include + +#include +#include +#include +#include +#include +#include + +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 { + +ConnectorShapePropertiesContext::ConnectorShapePropertiesContext( + ContextHandler2Helper const& rParent, ShapePtr& pShapePtr, + std::vector& 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_extLst: + case XML_ext: + break; + case XML_decorative: + { + mpConnectorShapePtr->setDecorative(rAttribs.getBool(XML_val, false)); + break; + } + case XML_cNvPr: + mpConnectorShapePtr->setId(rAttribs.getStringDefaulted(XML_id)); + mpConnectorShapePtr->setName(rAttribs.getStringDefaulted(XML_name)); + break; + case XML_stCxn: + { + ConnectorShapeProperties aConnectorShapeProps; + aConnectorShapeProps.mbStartShape = true; + aConnectorShapeProps.maDestShapeId = rAttribs.getStringDefaulted(XML_id); + aConnectorShapeProps.mnDestGlueId = rAttribs.getInteger(XML_idx, 0); + mrConnectorShapePropertiesList.push_back(aConnectorShapeProps); + break; + } + case XML_endCxn: + { + ConnectorShapeProperties aConnectorShapeProps; + aConnectorShapeProps.mbStartShape = false; + aConnectorShapeProps.maDestShapeId = rAttribs.getStringDefaulted(XML_id); + aConnectorShapeProps.mnDestGlueId = rAttribs.getInteger(XML_idx, 0); + mrConnectorShapePropertiesList.push_back(aConnectorShapeProps); + break; + } + default: + break; + } + + return this; +} + +ConnectorShapeContext::ConnectorShapeContext( + ContextHandler2Helper const& rParent, const ShapePtr& pMasterShapePtr, + const ShapePtr& pGroupShapePtr, + std::vector& 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 0000000000..01b86b4eea --- /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 +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +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.getStringDefaulted( XML_name ); + aGuide.maFormula = convertToOOEquation( mrCustomShapeProperties, rAttribs.getStringDefaulted( XML_fmla ) ); + 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.getStringDefaulted( XML_x ) ); + rAdjPoint2D.Second = GetAdjCoordinate( rCustomShapeProperties, rAttribs.getStringDefaulted( XML_y ) ); +} + +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.getStringDefaulted( XML_gdRefX) ); + } + if ( rAttribs.hasAttribute( XML_minX ) ) + { + mrAdjustHandle.min1 = GetAdjCoordinate( mrCustomShapeProperties, rAttribs.getStringDefaulted( XML_minX) ); + } + if ( rAttribs.hasAttribute( XML_maxX ) ) + { + mrAdjustHandle.max1 = GetAdjCoordinate( mrCustomShapeProperties, rAttribs.getStringDefaulted( XML_maxX) ); + } + if ( rAttribs.hasAttribute( XML_gdRefY ) ) + { + mrAdjustHandle.gdRef2 = GetGeomGuideName( rAttribs.getStringDefaulted( XML_gdRefY) ); + } + if ( rAttribs.hasAttribute( XML_minY ) ) + { + mrAdjustHandle.min2 = GetAdjCoordinate( mrCustomShapeProperties, rAttribs.getStringDefaulted( XML_minY) ); + } + if ( rAttribs.hasAttribute( XML_maxY ) ) + { + mrAdjustHandle.max2 = GetAdjCoordinate( mrCustomShapeProperties, rAttribs.getStringDefaulted( 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.getStringDefaulted( XML_gdRefR) ); + } + if ( rAttribs.hasAttribute( XML_minR ) ) + { + mrAdjustHandle.min1 = GetAdjCoordinate( mrCustomShapeProperties, rAttribs.getStringDefaulted( XML_minR) ); + } + if ( rAttribs.hasAttribute( XML_maxR ) ) + { + mrAdjustHandle.max1 = GetAdjCoordinate( mrCustomShapeProperties, rAttribs.getStringDefaulted( XML_maxR) ); + } + if ( rAttribs.hasAttribute( XML_gdRefAng ) ) + { + mrAdjustHandle.polar = true ; + mrAdjustHandle.gdRef2 = GetGeomGuideName( rAttribs.getStringDefaulted( XML_gdRefAng) ); + } + if ( rAttribs.hasAttribute( XML_minAng ) ) + { + mrAdjustHandle.min2 = GetAdjCoordinate( mrCustomShapeProperties, rAttribs.getStringDefaulted( XML_minAng) ); + } + if ( rAttribs.hasAttribute( XML_maxAng ) ) + { + mrAdjustHandle.max2 = GetAdjCoordinate( mrCustomShapeProperties, rAttribs.getStringDefaulted( 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.getStringDefaulted( XML_ang ) ); +} + +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.getHyper( XML_w, 0 ); + rPath2D.h = rAttribs.getHyper( XML_h, 0 ); + 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.getStringDefaulted( XML_wR ) ); + aScale.Second = GetAdjCoordinate( mrCustomShapeProperties, rAttribs.getStringDefaulted( XML_hR ) ); + + CustomShapeGuide aGuide; + sal_Int32 nArcNum = mrCustomShapeProperties.getArcNum(); + + // start angle + aGuide.maName = "arctosa" + OUString::number( nArcNum ); + aGuide.maFormula = "(" + + GetFormulaParameter( GetAdjCoordinate( mrCustomShapeProperties, rAttribs.getStringDefaulted( XML_stAng ) ) ) + + ")/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.getStringDefaulted( XML_swAng ) ) ) + + ")/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.getStringDefaulted( XML_l ) ); + aGeomRect.t = GetAdjCoordinate( mrCustomShapeProperties, rAttribs.getStringDefaulted( XML_t ) ); + aGeomRect.r = GetAdjCoordinate( mrCustomShapeProperties, rAttribs.getStringDefaulted( XML_r ) ); + aGeomRect.b = GetAdjCoordinate( mrCustomShapeProperties, rAttribs.getStringDefaulted( XML_b ) ); + 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 0000000000..3215b9834a --- /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 +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include + +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& 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& 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(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(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(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(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(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(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& 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& 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(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(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& 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 lcl_parseHandle(std::string_view rValue) +{ + std::vector 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>& 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 aHandle = lcl_parseHandle( + rValue.substr(nStart + strlen("{ "), i - nStart - strlen(" },"))); + rHandles.push_back(aHandle); + } + } + } +} + +void lcl_parseEquations(std::vector& 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& rPath, + std::string_view rValue) +{ + std::vector 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& 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& rPath, + std::string_view rValue) +{ + std::vector 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& 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& rPath, std::string_view rValue) +{ + std::vector 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& 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& rPath, std::string_view rValue) +{ + std::vector 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& 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& rPath, + std::string_view rValue) +{ + std::vector 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& 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& 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 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(0)); + } + else if (std::string_view(aLine) == "Equations") + { + aStream.ReadLine(aLine); + if (std::string_view(aLine) != "([]string) {}") + { + std::vector 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(0)); + } + else if (std::string_view(aLine) == "Handles") + { + aStream.ReadLine(aLine); + if (std::string_view(aLine) != "([][]com.sun.star.beans.PropertyValue) {}") + { + std::vector> 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(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 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 0000000000..321bc9bf53 --- /dev/null +++ b/oox/source/drawingml/customshapeproperties.cxx @@ -0,0 +1,384 @@ +/* -*- 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 +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include + +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 ) +, mnTextPreRotateAngle ( 0 ) +, mnTextCameraZRotateAngle ( 0 ) +, mnArcNum ( 0 ) +{ +} + +OUString CustomShapeProperties::getShapePresetTypeName() const +{ + return StaticTokenMap().getUnicodeTokenName(mnShapePresetType); +} + +sal_Int32 CustomShapeProperties::SetCustomShapeGuideValue( std::vector< CustomShapeGuide >& rGuideList, const CustomShapeGuide& rGuide ) +{ + std::vector::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, mnTextPreRotateAngle ); + aPropertyMap.setProperty( PROP_TextCameraZRotateAngle, mnTextCameraZRotateAngle ); + if (moTextAreaRotateAngle.has_value()) + aPropertyMap.setProperty(PROP_TextRotateAngle, moTextAreaRotateAngle.value()); + Sequence< PropertyValue > aSeq = aPropertyMap.makePropertyValueSequence(); + aPropSet.setProperty( PROP_CustomShapeGeometry, aSeq ); + + if ( !maAdjustmentGuideList.empty() ) + { + static constexpr OUString sCustomShapeGeometry(u"CustomShapeGeometry"_ustr); + static constexpr 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( mnTextPreRotateAngle ) + aPropertyMap.setProperty( PROP_TextPreRotateAngle, mnTextPreRotateAngle ); + if (moTextAreaRotateAngle.has_value()) + aPropertyMap.setProperty(PROP_TextRotateAngle, moTextAreaRotateAngle.value()); + // 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::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_value() ) { + Sequence< EnhancedCustomShapeTextFrame > aTextFrames{ + { /* tl */ { maTextRect.value().l, maTextRect.value().t }, + /* br */ { maTextRect.value().r, maTextRect.value().b } } + }; + aPath.setProperty( PROP_TextFrames, aTextFrames); + } + + if (!maConnectionSiteList.empty()) + { + css::uno::Sequence seqGluePoints; + seqGluePoints.realloc(maConnectionSiteList.size()); + sal_Int32 nId = 0; + for (auto& rGluePoint : asNonConstRange(seqGluePoints)) + { + rGluePoint.First.Value = maConnectionSiteList[nId].pos.First.Value; + rGluePoint.First.Type = maConnectionSiteList[nId].pos.First.Type; + rGluePoint.Second.Value = maConnectionSiteList[nId].pos.Second.Value; + rGluePoint.Second.Type = maConnectionSiteList[nId].pos.Second.Type; + nId++; + } + aPath.setProperty(PROP_GluePoints, seqGluePoints); + } + + 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::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_value() ) + { + sal_Int32 nIndex = GetCustomShapeGuideValue( maAdjustmentGuideList, maAdjustHandleList[ i ].gdRef1.value() ); + if ( nIndex >= 0 ) + aHandle.setProperty( PROP_RefR, nIndex); + } + if ( maAdjustHandleList[ i ].gdRef2.has_value() ) + { + sal_Int32 nIndex = GetCustomShapeGuideValue( maAdjustmentGuideList, maAdjustHandleList[ i ].gdRef2.value() ); + if ( nIndex >= 0 ) + aHandle.setProperty( PROP_RefAngle, nIndex); + } + if ( maAdjustHandleList[ i ].min1.has_value() ) + aHandle.setProperty( PROP_RadiusRangeMinimum, maAdjustHandleList[ i ].min1.value()); + if ( maAdjustHandleList[ i ].max1.has_value() ) + aHandle.setProperty( PROP_RadiusRangeMaximum, maAdjustHandleList[ i ].max1.value()); + + /* 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_value() ) + { + // 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.value() ); + if ( nIndex >= 0 ) + aHandle.setProperty( PROP_RefX, nIndex); + } + if ( maAdjustHandleList[ i ].gdRef2.has_value() ) + { + sal_Int32 nIndex = GetCustomShapeGuideValue( maAdjustmentGuideList, maAdjustHandleList[ i ].gdRef2.value() ); + if ( nIndex >= 0 ) + aHandle.setProperty( PROP_RefY, nIndex); + } + if ( maAdjustHandleList[ i ].min1.has_value() ) + aHandle.setProperty( PROP_RangeXMinimum, maAdjustHandleList[ i ].min1.value()); + if ( maAdjustHandleList[ i ].max1.has_value() ) + aHandle.setProperty( PROP_RangeXMaximum, maAdjustHandleList[ i ].max1.value()); + if ( maAdjustHandleList[ i ].min2.has_value() ) + aHandle.setProperty( PROP_RangeYMinimum, maAdjustHandleList[ i ].min2.value()); + if ( maAdjustHandleList[ i ].max2.has_value() ) + aHandle.setProperty( PROP_RangeYMaximum, maAdjustHandleList[ i ].max2.value()); + } + 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 0000000000..4b79fefc6a --- /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 0000000000..ec42eb93f3 Binary files /dev/null and b/oox/source/drawingml/customshapes/cshape.pptx differ diff --git a/oox/source/drawingml/customshapes/generate.sh b/oox/source/drawingml/customshapes/generate.sh new file mode 100755 index 0000000000..b0e661ec19 --- /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 0000000000..99b2ff1530 --- /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, ") + { + 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 0000000000..246bfddcdc --- /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, ") + { + 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 " + + + + + + + + + + + + + + + + +"; + + $id = 16; + $col = 0; + $row = 0; + $size = 500000; + foreach $shape (keys %$shapes) + { + if (defined $type) { + if ($shape ne $type) { next; } +# +# + $size *= 10; + $col = 0.5; + $row = 0.25; + } + + if ($col > 15) { + $col = 0; + $row ++; + } + + print OUT " + + + + + + + + + + +"; + if ($preset) { + print OUT " +"; + } else { + print OUT " +"; + print OUT @{$shapes->{$shape}}; + print OUT " +"; + } + print OUT " + + + + + + + + + + + + +"; + } + + print OUT " + + + + + + + + + + + + +"; + + 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 0000000000..a88d300400 --- /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 0000000000..7123e27ccd --- /dev/null +++ b/oox/source/drawingml/customshapes/presetShapeDefinitions.xml @@ -0,0 +1,19898 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/oox/source/drawingml/diagram/constraintlistcontext.cxx b/oox/source/drawingml/diagram/constraintlistcontext.cxx new file mode 100644 index 0000000000..9233c9235c --- /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 +#include +#include + +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(mpNode->getLayoutNode()); + LayoutAtom::connect(mpNode, pNode); + + Constraint& rConstraint = pNode->getConstraint(); + rConstraint.mnFor = rAttribs.getToken( XML_for, XML_none ); + rConstraint.msForName = rAttribs.getStringDefaulted( 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.getStringDefaulted( 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 0000000000..ba3b593555 --- /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 +#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 0000000000..97691af43f --- /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 +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include + +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(this)->maPointShapeMap[rPoint.msModelId] = ShapePtr(); + } + + const ShapePtr& rShapePtr = maPointShapeMap.find(rPoint.msModelId)->second; + + if(!rShapePtr && bCreateOnDemand) + { + const_cast(rShapePtr) = std::make_shared(); + + // 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()); + rNewShape.setTextBody(aNewTextBody); + TextRunPtr pTextRun = std::make_shared(); + 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()); + 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 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() ) +{ +} + +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 0000000000..23104812ed --- /dev/null +++ b/oox/source/drawingml/diagram/datamodel.hxx @@ -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 . + */ + +#ifndef INCLUDED_OOX_SOURCE_DRAWINGML_DIAGRAM_DATAMODEL_HXX +#define INCLUDED_OOX_SOURCE_DRAWINGML_DIAGRAM_DATAMODEL_HXX + +#include +#include +#include + +#include + +#include +#include +#include +#include + +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); + +private: + // 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 0000000000..ba1826a94c --- /dev/null +++ b/oox/source/drawingml/diagram/datamodelcontext.cxx @@ -0,0 +1,384 @@ +/* -*- 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 +#include +#include +#include +#include +#include + +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(rAttribs.getToken( XML_type, XML_parOf )); + rConnection.msModelId = rAttribs.getStringDefaulted( XML_modelId ); + rConnection.msSourceId = rAttribs.getStringDefaulted( XML_srcId ); + rConnection.msDestId = rAttribs.getStringDefaulted( XML_destId ); + rConnection.msPresId = rAttribs.getStringDefaulted( XML_presId ); + rConnection.msSibTransId = rAttribs.getStringDefaulted( XML_sibTransId ); + rConnection.msParTransId = rAttribs.getStringDefaulted( XML_parTransId ); + 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 std::optional< sal_Int32 > aOptVal(rAttribs.getToken( XML_val )); + if(aOptVal.has_value()) + mrPoint.moHierarchyBranch = aOptVal.value(); + 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.getStringDefaulted( XML_csCatId); + mrPoint.msColorTransformTypeId = rAttribs.getStringDefaulted( XML_csTypeId); + mrPoint.msLayoutCategoryId = rAttribs.getStringDefaulted( XML_loCatId); + mrPoint.msLayoutTypeId = rAttribs.getStringDefaulted( XML_loTypeId); + mrPoint.msPlaceholderText = rAttribs.getStringDefaulted( XML_phldrT); + mrPoint.msPresentationAssociationId = rAttribs.getStringDefaulted( XML_presAssocID); + mrPoint.msPresentationLayoutName = rAttribs.getStringDefaulted( XML_presName); + mrPoint.msPresentationLayoutStyleLabel = rAttribs.getStringDefaulted( XML_presStyleLbl); + mrPoint.msQuickStyleCategoryId = rAttribs.getStringDefaulted( XML_qsCatId); + mrPoint.msQuickStyleTypeId = rAttribs.getStringDefaulted( 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.getStringDefaulted( XML_modelId ); + + // the default type is XML_node + const sal_Int32 nType = rAttribs.getToken( XML_type, XML_node ); + mrPoint.mnXMLType = static_cast(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.getStringDefaulted( XML_cxnId ); + } + + 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(); + 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(), nullptr); + 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.getStringDefaulted( XML_relId ) ); + 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 0000000000..9a5c323de8 --- /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 +#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 0000000000..029c2c56e9 --- /dev/null +++ b/oox/source/drawingml/diagram/diagram.cxx @@ -0,0 +1,453 @@ +/* -*- 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 +#include "diagram.hxx" +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#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& 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& rChildren = pShape->getChildren(); + + std::erase_if(rChildren, + [](const ShapePtr& aChild) { + return aChild->getServiceName() + == "com.sun.star.drawing.GroupShape" + && aChild->getChildren().empty(); + }); + + 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("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 Diagram::getDomsAsPropertyValues() const +{ + sal_Int32 length = maMainDomMap.size(); + + if (maDataRelsMap.hasElements()) + ++length; + + uno::Sequence 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, css::uno::Reference>; + +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; + double nMinScale = 100.0; + for (const auto& rShapePair : rShapePairs) + { + uno::Reference xPropertySet(rShapePair.second, uno::UNO_QUERY); + if (xPropertySet.is()) + { + double nTextFitToSizeScale = 0.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.0) + { + for (const auto& rShapePair : rShapePairs) + { + uno::Reference 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 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 loadFragment( + core::XmlFilterBase& rFilter, + const rtl::Reference< core::FragmentHandler >& rxHandler ) +{ + return loadFragment( rFilter, rxHandler->getFragmentPath() ); +} + +static void importFragment( core::XmlFilterBase& rFilter, + const uno::Reference& rXDom, + const OUString& rDocName, + const DiagramPtr& pDiagram, + const rtl::Reference< core::FragmentHandler >& rxHandler ) +{ + DiagramDomMap& rMainDomMap = pDiagram->getDomMap(); + rMainDomMap[rDocName] = rXDom; + + uno::Reference 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 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(); + + OoxDiagramDataPtr pData = std::make_shared(); + pDiagram->setData( pData ); + + DiagramLayoutPtr pLayout = std::make_shared(*pDiagram); + pDiagram->setLayout( pLayout ); + + try + { + // 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 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()); + } + catch (...) + { + // unset DiagramFontHeights at filter if there was a failure + // to avoid dangling pointer + rFilter.setDiagramFontHeights(nullptr); + throw; + } +} + +const oox::drawingml::Color& +DiagramColor::getColorByIndex(const std::vector& 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 0000000000..f58c762f6a --- /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 +#include +#include + +#include + +#include "datamodel.hxx" +#include + +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 > 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 DiagramQStyleMap; + +struct DiagramColor +{ + std::vector maFillColors; + std::vector maLineColors; + std::vector maEffectColors; + std::vector maTextFillColors; + std::vector maTextLineColors; + std::vector maTextEffectColors; + + static const oox::drawingml::Color& + getColorByIndex(const std::vector& rColors, sal_Int32 nIndex); +}; + +typedef std::map 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 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 0000000000..42d78d1f3b --- /dev/null +++ b/oox/source/drawingml/diagram/diagramdefinitioncontext.cxx @@ -0,0 +1,100 @@ +/* -*- 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 +#include +#include + +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, + DiagramLayoutPtr pLayout ) + : ContextHandler2( rParent ) + , mpLayout(std::move( pLayout )) +{ + mpLayout->setDefStyle( rAttributes.getStringDefaulted( XML_defStyle ) ); + OUString sValue = rAttributes.getStringDefaulted( XML_minVer ); + if( sValue.isEmpty() ) + { + sValue = "http://schemas.openxmlformats.org/drawingml/2006/diagram"; + } + mpLayout->setMinVer( sValue ); + mpLayout->setUniqueId( rAttributes.getStringDefaulted( XML_uniqueId ) ); +} + +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.getStringDefaulted( XML_val ) ); + break; + case DGM_TOKEN( desc ): + mpLayout->setDesc( rAttribs.getStringDefaulted( XML_val ) ); + break; + case DGM_TOKEN( layoutNode ): + { + LayoutNodePtr pNode = std::make_shared(mpLayout->getDiagram()); + mpLayout->getNode() = pNode; + pNode->setChildOrder( rAttribs.getToken( XML_chOrder, XML_b ) ); + pNode->setMoveWith( rAttribs.getStringDefaulted( XML_moveWith ) ); + pNode->setStyleLabel( rAttribs.getStringDefaulted( XML_styleLbl ) ); + 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(); + return new DataModelContext( *this, mpLayout->getSampData() ); + case DGM_TOKEN( styleData ): + mpLayout->getStyleData() = std::make_shared(); + 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 0000000000..0222998527 --- /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 +#include "diagram.hxx" + +namespace oox::drawingml { + +class DiagramDefinitionContext : public ::oox::core::ContextHandler2 +{ +public: + DiagramDefinitionContext( ::oox::core::ContextHandler2Helper const & rParent, const ::oox::AttributeList& rAttributes, 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 0000000000..b65fca3f98 --- /dev/null +++ b/oox/source/drawingml/diagram/diagramfragmenthandler.cxx @@ -0,0 +1,235 @@ +/* -*- 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 +#include +#include +#include + +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, + OoxDiagramDataPtr xDataPtr ) + : FragmentHandler2( rFilter, rFragmentPath ) + , mpDataPtr(std::move( xDataPtr )) +{ +} + +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, + DiagramLayoutPtr xDataPtr ) + : FragmentHandler2( rFilter, rFragmentPath ) + , mpDataPtr(std::move( xDataPtr )) +{ +} + +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.getStringDefaulted( XML_name); + 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.getStringDefaulted( XML_name); + 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 0000000000..caecb4886a --- /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 + +#include "diagram.hxx" + +namespace oox::drawingml { + +class DiagramDataFragmentHandler : public ::oox::core::FragmentHandler2 +{ +public: + DiagramDataFragmentHandler(oox::core::XmlFilterBase& rFilter, const OUString& rFragmentPath, OoxDiagramDataPtr xDataPtr); + 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, DiagramLayoutPtr xDataPtr); + 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 0000000000..3b25951bb9 --- /dev/null +++ b/oox/source/drawingml/diagram/diagramhelper.cxx @@ -0,0 +1,271 @@ +/* -*- 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 +#include +#include +#include +#include +#include +#include +#include +#include + +using namespace ::com::sun::star; + +namespace oox::drawingml { + +bool AdvancedDiagramHelper::hasDiagramData() const +{ + return mpDiagramPtr && mpDiagramPtr->getData(); +} + +AdvancedDiagramHelper::AdvancedDiagramHelper( + std::shared_ptr< Diagram > xDiagramPtr, + std::shared_ptr<::oox::drawingml::Theme> xTheme, + css::awt::Size aImportSize) +: svx::diagram::IDiagramHelper() +, mpDiagramPtr(std::move(xDiagramPtr)) +, mpThemePtr(std::move(xTheme)) +, 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( "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 xContext(comphelper::getProcessComponentContext()); + rtl::Reference 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 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> AdvancedDiagramHelper::getChildren(const OUString& rParentId) const +{ + if(hasDiagramData()) + { + return mpDiagramPtr->getData()->getChildren(rParentId); + } + + return std::vector>(); +} + +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); +} + +const 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(this)->mpThemePtr = std::make_shared(); + auto pTheme = std::make_shared(); + mpThemePtr->setTheme(pTheme); + + // import Theme ModelData + rxFilter->importFragment( + new ThemeFragmentHandler(*rxFilter, OUString(), *mpThemePtr, *pTheme), + 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 0000000000..626d40382d --- /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 +#include +#include +#include +#include + +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( + std::shared_ptr< Diagram > xDiagramPtr, + std::shared_ptr<::oox::drawingml::Theme> xTheme, + 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> 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); + const 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 0000000000..6ee4b88322 --- /dev/null +++ b/oox/source/drawingml/diagram/diagramlayoutatoms.cxx @@ -0,0 +1,2045 @@ +/* -*- 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 + +#include "layoutatomvisitorbase.hxx" + +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +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. +std::optional findProperty(const oox::drawingml::LayoutPropertyMap& rProperties, + const OUString& rInternalName, sal_Int32 nProperty) +{ + std::optional 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& 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 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 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(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(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(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( + 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& 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::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(pDirectChild.get()); + if (!pLayoutNode) + { + continue; + } + + if (pLayoutNode->getName() != aCurrShape->getInternalName()) + { + continue; + } + + for (const auto& pChild : pLayoutNode->getChildren()) + { + auto pConstraintAtom = dynamic_cast(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 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 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& 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& 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& rConstraints, + const std::vector& rRules) +{ + if (mnType != XML_lin) + { + // TODO Handle spacing from constraints for non-lin algorithms as well. + std::erase_if( + rShape->getChildren(), + [](const ShapePtr& aChild) { + return aChild->getServiceName() == "com.sun.star.drawing.GroupShape" + && aChild->getChildren().empty(); + }); + } + + 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 aDirectConstraints; + const LayoutNode& rLayoutNode = getLayoutNode(); + for (const auto& pChild : rLayoutNode.getChildren()) + { + auto pConstraintAtom = dynamic_cast(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 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(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& 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 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 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) + { + std::optional oWidth = findProperty(aProperties, aCurrShape->getInternalName(), XML_w); + bScaleDownEmptySpacing = oWidth.has_value() && oWidth.value() > 0; + } + if (!bScaleDownEmptySpacing && (nDir == XML_fromT || nDir == XML_fromB)) + { + std::optional oHeight = findProperty(aProperties, aCurrShape->getInternalName(), XML_h); + bScaleDownEmptySpacing = oHeight.has_value() && oHeight.value() > 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. + std::erase_if( + rShape->getChildren(), + [](const ShapePtr& aChild) { + return aChild->getServiceName() + == "com.sun.star.drawing.GroupShape" + && aChild->getChildren().empty(); + }); + 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()) + { + std::optional oWidth = findProperty(aProperties, aCurrShape->getInternalName(), XML_w); + std::optional oHeight = findProperty(aProperties, aCurrShape->getInternalName(), XML_h); + awt::Size aSize = aChildSize; + if (oWidth.has_value()) + aSize.Width = oWidth.value(); + if (oHeight.has_value()) + aSize.Height = oHeight.value(); + 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(rShape->getSize().Width) / aTotalSize.Width; + if (nIncY && aTotalSize.Height > rShape->getSize().Height) + fHeightScale = static_cast(rShape->getSize().Height) / aTotalSize.Height; + aSpaceSize.Width *= fWidthScale; + aSpaceSize.Height *= fHeightScale; + + for (auto& aCurrShape : rShape->getChildren()) + { + // Extract properties relevant for this shape from constraints. + std::optional oWidth = findProperty(aProperties, aCurrShape->getInternalName(), XML_w); + std::optional oHeight = findProperty(aProperties, aCurrShape->getInternalName(), XML_h); + + awt::Size aSize = aChildSize; + if (oWidth.has_value()) + aSize.Width = oWidth.value(); + if (oHeight.has_value()) + aSize.Height = oHeight.value(); + 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(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_value()) + 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().moTextPreRotation = n90x * 90 * PER_DEGREE; + } + break; + case XML_grav: + { + if (nShapeRot > (90 * PER_DEGREE) && nShapeRot < (270 * PER_DEGREE)) + pTextBody->getTextProperties().moTextPreRotation = -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"•"_ustr); + 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::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(); + + // 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 + // 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(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 0000000000..5458999029 --- /dev/null +++ b/oox/source/drawingml/diagram/diagramlayoutatoms.hxx @@ -0,0 +1,373 @@ +/* -*- 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 +#include + +#include +#include + +#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 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 LayoutProperty; +typedef std::map 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& 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 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& rConstraints, bool bRequireForName) const; +private: + Constraint maConstraint; +}; + +/// Represents one element. +class RuleAtom + : public LayoutAtom +{ +public: + RuleAtom(LayoutNode& rLayoutNode) : LayoutAtom(rLayoutNode) {} + virtual void accept( LayoutAtomVisitor& ) override; + Rule& getRule() + { return maRule; } + void parseRule(std::vector& rRules) const; +private: + Rule maRule; +}; + +class AlgAtom + : public LayoutAtom +{ +public: + AlgAtom(LayoutNode& rLayoutNode) : LayoutAtom(rLayoutNode), mnType(0), maMap() {} + + typedef std::map 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& rConstraints, + const std::vector& 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& 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& 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 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 & 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 mpNodeShapes; + sal_Int32 mnChildOrder; +}; + +typedef std::shared_ptr< LayoutNode > LayoutNodePtr; + +class ShapeAtom + : public LayoutAtom +{ +public: + ShapeAtom(LayoutNode& rLayoutNode, ShapePtr pShape) : LayoutAtom(rLayoutNode), mpShapeTemplate(std::move(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 0000000000..b7f5a59630 --- /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 + +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(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; mnCurrIdx0; 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(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 0000000000..49c83f6745 --- /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 0000000000..f34d93d98f --- /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 + +#include + +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(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(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(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 0000000000..7c10fc436d --- /dev/null +++ b/oox/source/drawingml/diagram/layoutatomvisitors.hxx @@ -0,0 +1,97 @@ +/* -*- 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 +#include +#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, + ShapePtr xParentShape) : + LayoutAtomVisitorBase(rDgm, pRootPoint), + mpParentShape(std::move(xParentShape)) + {} + + 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 maConstraints; + std::vector 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 0000000000..45756e20bd --- /dev/null +++ b/oox/source/drawingml/diagram/layoutnodecontext.cxx @@ -0,0 +1,310 @@ +/* -*- 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 +#include +#include +#include "constraintlistcontext.hxx" +#include "rulelistcontext.hxx" +#include +#include +#include +#include + +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, LayoutAtomPtr pNode ) + : ContextHandler2( rParent ) + , mpNode(std::move( pNode )) + { + msName = rAttribs.getStringDefaulted( XML_name ); + } + + virtual ContextHandlerRef + onCreateContext( ::sal_Int32 aElement, + const AttributeList& rAttribs ) override + { + switch( aElement ) + { + case DGM_TOKEN( if ): + { + // CT_When + ConditionAtomPtr pNode = std::make_shared(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(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.getStringDefaulted(XML_ref)); + 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.getStringDefaulted( XML_val ); + 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.getStringDefaulted( XML_name ) ); +} + +LayoutNodeContext::~LayoutNodeContext() +{ +} + +ContextHandlerRef +LayoutNodeContext::onCreateContext( ::sal_Int32 aElement, + const AttributeList& rAttribs ) +{ + switch( aElement ) + { + case DGM_TOKEN( layoutNode ): + { + LayoutNodePtr pNode = std::make_shared(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(pAtom.get()); + if (pLayoutNode) + { + pNode->setChildOrder(pLayoutNode->getChildOrder()); + break; + } + } + } + + pNode->setMoveWith( rAttribs.getStringDefaulted( XML_moveWith ) ); + pNode->setStyleLabel( rAttribs.getStringDefaulted( XML_styleLbl ) ); + return new LayoutNodeContext( *this, rAttribs, pNode ); + } + case DGM_TOKEN( shape ): + { + ShapePtr pShape; + + if( rAttribs.hasAttribute( XML_type ) ) + { + pShape = std::make_shared("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("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(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(mpNode->getLayoutNode()); + LayoutAtom::connect(mpNode, pAtom); + return new AlgorithmContext( *this, rAttribs, pAtom ); + } + case DGM_TOKEN( choose ): + { + // CT_Choose + LayoutAtomPtr pAtom = std::make_shared(mpNode->getLayoutNode()); + LayoutAtom::connect(mpNode, pAtom); + return new ChooseContext( *this, rAttribs, pAtom ); + } + case DGM_TOKEN( forEach ): + { + // CT_ForEach + ForEachAtomPtr pAtom = std::make_shared(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(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 0000000000..3499f57045 --- /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 +#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 0000000000..2a1c450d01 --- /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 +#include +#include + +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(mpNode->getLayoutNode()); + LayoutAtom::connect(mpNode, pNode); + + Rule& rRule = pNode->getRule(); + rRule.msForName = rAttribs.getStringDefaulted(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 0000000000..83a86c49e0 --- /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 +#include "diagramlayoutatoms.hxx" + +namespace oox::drawingml +{ +/// Handles one 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 0000000000..30fed83f43 --- /dev/null +++ b/oox/source/drawingml/drawingmltypes.cxx @@ -0,0 +1,461 @@ +/* -*- 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 +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include + +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; +} + +std::optional GetTextVerticalType(sal_Int32 nRotateAngle) +{ + switch (nRotateAngle) + { + case 9000: + return "vert270"; + case 27000: + return "vert"; + default: + return {}; + } +} + +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; +} + +void fillRelativeRectangle(model::RelativeRectangle& rRelativeRectangle, const Reference& xAttribs) +{ + rRelativeRectangle.mnLeft = GetST_Percentage(xAttribs->getOptionalValue(XML_l)); + rRelativeRectangle.mnTop = GetST_Percentage(xAttribs->getOptionalValue(XML_t)); + rRelativeRectangle.mnRight = GetST_Percentage(xAttribs->getOptionalValue(XML_r)); + rRelativeRectangle.mnBottom = GetST_Percentage(xAttribs->getOptionalValue(XML_b)); +} + +/** 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; +} + + +model::RectangleAlignment convertToRectangleAlignment(sal_Int32 nToken) +{ + switch (nToken) + { + case XML_tl: return model::RectangleAlignment::TopLeft; + case XML_t: return model::RectangleAlignment::Top; + case XML_tr: return model::RectangleAlignment::TopRight; + case XML_l: return model::RectangleAlignment::Left; + case XML_ctr: return model::RectangleAlignment::Center; + case XML_r: return model::RectangleAlignment::Right; + case XML_bl: return model::RectangleAlignment::BottomLeft; + case XML_b: return model::RectangleAlignment::Bottom; + case XML_br: return model::RectangleAlignment::BottomRight; + default: + break; + } + return model::RectangleAlignment::Unset; +} + +} // 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 0000000000..8424e3436c --- /dev/null +++ b/oox/source/drawingml/effectproperties.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/. + */ + +#include "effectproperties.hxx" +#include +#include +#include + +#include +#include +#include + +#include + +namespace oox::drawingml { + +void EffectGlowProperties ::assignUsed(const EffectGlowProperties& rSourceProps) +{ + assignIfUsed( moGlowRad, rSourceProps.moGlowRad ); + moGlowColor.assignIfUsed( rSourceProps.moGlowColor ); +} + +void EffectSoftEdgeProperties::assignUsed(const EffectSoftEdgeProperties& rSourceProps) +{ + assignIfUsed(moRad, rSourceProps.moRad); +} + +void EffectShadowProperties::assignUsed(const EffectShadowProperties& rSourceProps) +{ + assignIfUsed( moShadowDist, rSourceProps.moShadowDist ); + assignIfUsed( moShadowDir, rSourceProps.moShadowDir ); + assignIfUsed( moShadowSx, rSourceProps.moShadowSx ); + assignIfUsed( moShadowSy, rSourceProps.moShadowSy ); + moShadowColor.assignIfUsed( rSourceProps.moShadowColor ); + assignIfUsed( moShadowBlur, rSourceProps.moShadowBlur ); + assignIfUsed( moShadowAlignment, rSourceProps.moShadowAlignment ); + +} + +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(*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(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)); + rPropMap.setProperty( + PROP_ShadowAlignment, + static_cast(maShadow.moShadowAlignment.value_or(model::RectangleAlignment::Bottom))); + + } + } +} + +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 0000000000..992e2bddf3 --- /dev/null +++ b/oox/source/drawingml/effectproperties.hxx @@ -0,0 +1,93 @@ +/* -*- 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 +#include + +#include +#include +#include + +namespace model { +enum class RectangleAlignment; +} + +namespace oox::drawingml { + +struct EffectGlowProperties +{ + std::optional< sal_Int64 > moGlowRad; // size of glow effect + Color moGlowColor; + // TODO saturation and luminance missing + + void assignUsed( const EffectGlowProperties& rSourceProps ); +}; + +struct EffectSoftEdgeProperties +{ + std::optional moRad; // size of effect + + void assignUsed(const EffectSoftEdgeProperties& rSourceProps); +}; + +struct EffectShadowProperties +{ + std::optional< sal_Int64 > moShadowDist; + std::optional< sal_Int64 > moShadowDir; + std::optional< sal_Int64 > moShadowSx; + std::optional< sal_Int64 > moShadowSy; + Color moShadowColor; + std::optional< sal_Int64 > moShadowBlur; // size of blur effect + std::optional< model::RectangleAlignment > moShadowAlignment; + + /** 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> 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 0000000000..ff5a046927 --- /dev/null +++ b/oox/source/drawingml/effectpropertiescontext.cxx @@ -0,0 +1,217 @@ +/* -*- 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 +#include "effectproperties.hxx" +#include +#include +#include +#include +#include + +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, model::EffectStyle* pEffectStyle) noexcept + : ContextHandler2(rParent) + , mpEffectStyle(pEffectStyle) + , mrEffectProperties(rEffectProperties) +{ +} + +EffectPropertiesContext::~EffectPropertiesContext() +{ +} + +void EffectPropertiesContext::saveUnsupportedAttribs( Effect& rEffect, const AttributeList& rAttribs ) +{ + if( rAttribs.hasAttribute( XML_algn ) ) + rEffect.maAttribs["algn"] <<= rAttribs.getStringDefaulted( 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()); + 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 ); + mrEffectProperties.maShadow.moShadowAlignment = convertToRectangleAlignment( rAttribs.getToken(XML_algn, XML_b) ); + + model::ComplexColor* pColor = nullptr; + if (mpEffectStyle) + { + auto& rEffect = mpEffectStyle->maEffectList.emplace_back(); + rEffect.meType = model::EffectType::OuterShadow; + rEffect.mnBlurRadius = rAttribs.getInteger(XML_blurRad, 0); // ST_PositiveCoordinate, default 0 + rEffect.mnDistance = rAttribs.getInteger(XML_dist, 0); // ST_PositiveCoordinate, default 0 + rEffect.mnDirection = rAttribs.getInteger(XML_dir, 0); // ST_PositiveFixedAngle, default 0 + rEffect.mnScaleX = GetPercent( rAttribs.getStringDefaulted(XML_sx)); // ST_Percentage, default 100% + rEffect.mnScaley = GetPercent( rAttribs.getStringDefaulted(XML_sy)); // ST_Percentage, default 100% + rEffect.mnScewX = rAttribs.getInteger(XML_kx, 0); // ST_FixedAngle, default 0 + rEffect.mnScewY = rAttribs.getInteger(XML_ky, 0); // ST_FixedAngle, default 0 + // ST_RectAlignment, default "b" - Bottom + rEffect.meAlignment = convertToRectangleAlignment(rAttribs.getToken(XML_algn, XML_b)); + rEffect.mbRotateWithShape = rAttribs.getBool(XML_rotWithShape, true); // boolean, default "true" + pColor = &rEffect.maColor; + } + return new ColorContext(*this, mrEffectProperties.m_Effects[nPos]->moColor, pColor); + } + 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 ); + + model::ComplexColor* pColor = nullptr; + if (mpEffectStyle) + { + auto& rEffect = mpEffectStyle->maEffectList.emplace_back(); + rEffect.meType = model::EffectType::InnerShadow; + rEffect.mnBlurRadius = rAttribs.getInteger(XML_blurRad, 0); // ST_PositiveCoordinate, default 0 + rEffect.mnDistance = rAttribs.getInteger(XML_dist, 0); // ST_PositiveCoordinate, default 0 + rEffect.mnDirection = rAttribs.getInteger(XML_dir, 0); // ST_PositiveFixedAngle, default 0 + pColor = &rEffect.maColor; + } + return new ColorContext(*this, mrEffectProperties.m_Effects[nPos]->moColor, pColor); + } + break; + case A_TOKEN( glow ): + { + mrEffectProperties.maGlow.moGlowRad = rAttribs.getInteger( XML_rad, 0 ); + // undo push_back to effects + mrEffectProperties.m_Effects.pop_back(); + + model::ComplexColor* pColor = nullptr; + if (mpEffectStyle) + { + auto& rEffect = mpEffectStyle->maEffectList.emplace_back(); + rEffect.meType = model::EffectType::Glow; + rEffect.mnRadius = rAttribs.getInteger(XML_rad, 0); //ST_PositiveCoordinate, default 0 + pColor = &rEffect.maColor; + } + return new ColorContext(*this, mrEffectProperties.maGlow.moGlowColor, pColor); + + } + case A_TOKEN( softEdge ): + { + mrEffectProperties.maSoftEdge.moRad = rAttribs.getInteger(XML_rad, 0); + if (mpEffectStyle) + { + auto& rEffect = mpEffectStyle->maEffectList.emplace_back(); + rEffect.meType = model::EffectType::SoftEdge; + rEffect.mnRadius = rAttribs.getInteger(XML_rad, 0); // ST_PositiveCoordinate, default 0 + } + return this; // no inner elements + } + case A_TOKEN( reflection ): + { + mrEffectProperties.m_Effects[nPos]->msName = "reflection"; + saveUnsupportedAttribs(*mrEffectProperties.m_Effects[nPos], rAttribs); + + model::ComplexColor* pColor = nullptr; + if (mpEffectStyle) + { + auto& rEffect = mpEffectStyle->maEffectList.emplace_back(); + rEffect.meType = model::EffectType::Reflection; + rEffect.mnBlurRadius = rAttribs.getInteger(XML_blurRad, 0); // ST_PositiveCoordinate, default 0 + rEffect.mnDistance = rAttribs.getInteger(XML_dist, 0); // ST_PositiveCoordinate, default 0 + rEffect.mnDirection = rAttribs.getInteger(XML_dir, 0); // ST_PositiveFixedAngle, default 0 + rEffect.mnScaleX = GetPercent(rAttribs.getStringDefaulted(XML_sx)); // ST_Percentage, default 100% + rEffect.mnScaley = GetPercent(rAttribs.getStringDefaulted(XML_sy)); // ST_Percentage, default 100% + rEffect.mnScewX = rAttribs.getInteger(XML_kx, 0); // ST_FixedAngle, default 0 + rEffect.mnScewY = rAttribs.getInteger(XML_ky, 0); // ST_FixedAngle, default 0 + // ST_RectAlignment, default "b" - Bottom + rEffect.meAlignment = convertToRectangleAlignment(rAttribs.getToken(XML_algn, XML_b)); + rEffect.mbRotateWithShape = rAttribs.getBool(XML_rotWithShape, true); // boolean, default "true" + + rEffect.mnEndAlpha = GetPositiveFixedPercentage(rAttribs.getStringDefaulted(XML_endA)); // ST_PositiveFixedPercentage, default 100% + rEffect.mnEndPosition = GetPositiveFixedPercentage(rAttribs.getStringDefaulted(XML_endPos)); // ST_PositiveFixedPercentage, default 0% + rEffect.mnStartAlpha = GetPositiveFixedPercentage(rAttribs.getStringDefaulted(XML_stA)); // ST_PositiveFixedPercentage, default 0% + rEffect.mnStartPosition = GetPositiveFixedPercentage(rAttribs.getStringDefaulted(XML_stPos)); // ST_PositiveFixedPercentage, default 100% + rEffect.mnFadeDirection = rAttribs.getInteger(XML_fadeDir, 5400000); // ST_PositiveFixedAngle, default 5400000 + + pColor = &rEffect.maColor; + } + return new ColorContext(*this, mrEffectProperties.m_Effects[nPos]->moColor, pColor); + } + case A_TOKEN( blur ): + { + mrEffectProperties.m_Effects[nPos]->msName = "blur"; + saveUnsupportedAttribs(*mrEffectProperties.m_Effects[nPos], rAttribs); + + model::ComplexColor* pColor = nullptr; + if (mpEffectStyle) + { + auto& rEffect = mpEffectStyle->maEffectList.emplace_back(); + rEffect.meType = model::EffectType::Blur; + rEffect.mnRadius = rAttribs.getInteger(XML_rad, 0); // ST_PositiveCoordinate, default 0 + rEffect.mbGrow = rAttribs.getBool(XML_grow, true); // boolean, default true + pColor = &rEffect.maColor; + } + return new ColorContext(*this, mrEffectProperties.m_Effects[nPos]->moColor, pColor); + } + 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 0000000000..e55ada369a --- /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 +#include +#include +#include + +namespace oox::drawingml +{ +// CT_EmbeddedWAVAudioFile +OUString getEmbeddedWAVAudioFile(const core::Relations& rRelations, const AttributeList& rAttribs) +{ + if (rAttribs.getBool(XML_builtIn, false)) + return rAttribs.getStringDefaulted(XML_name); + else + return rRelations.getFragmentPathFromRelId(rAttribs.getStringDefaulted(R_TOKEN(embed))); +} +} + +/* 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 0000000000..dec9ab9672 --- /dev/null +++ b/oox/source/drawingml/fillproperties.cxx @@ -0,0 +1,1065 @@ +/* -*- 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 + +#include + +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include + + +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 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 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 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; +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 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 >= MAX_PERCENT || aSrcRect.Y1 + aSrcRect.Y2 >= MAX_PERCENT) + return {}; // Cropped everything + return getQuotients(aSrcRect, MAX_PERCENT, MAX_PERCENT); +} + +// ECMA-376 Part 1 20.1.8.30 fillRect (Fill Rectangle) +std::optional 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, -MAX_PERCENT + aFillRect.X1 + aFillRect.X2, + -MAX_PERCENT + aFillRect.Y1 + aFillRect.Y2); +} + +// Crops a piece of the bitmap. lclCropGraphic doesn't handle growing. +Reference lclCropGraphic(uno::Reference const& xGraphic, + std::optional 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 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 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 lclApplyBlackWhiteEffect(const BlipFillProperties& aBlipProps, + const uno::Reference& xGraphic) +{ + const auto& oBiLevelThreshold = aBlipProps.moBiLevelThreshold; + if (oBiLevelThreshold.has_value()) + { + sal_uInt8 nThreshold + = static_cast(oBiLevelThreshold.value() * 255 / MAX_PERCENT); + + ::Graphic aGraphic(xGraphic); + ::Graphic aReturnGraphic; + + BitmapEx aBitmapEx(aGraphic.GetBitmapEx()); + AlphaMask aMask(aBitmapEx.GetAlphaMask()); + + 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 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 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 applyBrightnessContrast(uno::Reference const & xGraphic, sal_Int32 brightness, sal_Int32 contrast) +{ + uno::Reference 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; +} + +} // namespace + +void GradientFillProperties::assignUsed( const GradientFillProperties& rSourceProps ) +{ + if( !rSourceProps.maGradientStops.empty() ) + maGradientStops = rSourceProps.maGradientStops; + assignIfUsed( moFillToRect, rSourceProps.moFillToRect ); + assignIfUsed( moTileRect, rSourceProps.moTileRect ); + assignIfUsed( moGradientPath, rSourceProps.moGradientPath ); + assignIfUsed( moShadeAngle, rSourceProps.moShadeAngle ); + assignIfUsed( moShadeFlip, rSourceProps.moShadeFlip ); + assignIfUsed( moShadeScaled, rSourceProps.moShadeScaled ); + assignIfUsed( moRotateWithShape, rSourceProps.moRotateWithShape ); +} + +void PatternFillProperties::assignUsed( const PatternFillProperties& rSourceProps ) +{ + maPattFgColor.assignIfUsed( rSourceProps.maPattFgColor ); + maPattBgColor.assignIfUsed( rSourceProps.maPattBgColor ); + assignIfUsed( moPattPreset, rSourceProps.moPattPreset ); +} + +void BlipFillProperties::assignUsed( const BlipFillProperties& rSourceProps ) +{ + if(rSourceProps.mxFillGraphic.is()) + mxFillGraphic = rSourceProps.mxFillGraphic; + assignIfUsed( moBitmapMode, rSourceProps.moBitmapMode ); + assignIfUsed( moFillRect, rSourceProps.moFillRect ); + assignIfUsed( moTileOffsetX, rSourceProps.moTileOffsetX ); + assignIfUsed( moTileOffsetY, rSourceProps.moTileOffsetY ); + assignIfUsed( moTileScaleX, rSourceProps.moTileScaleX ); + assignIfUsed( moTileScaleY, rSourceProps.moTileScaleY ); + assignIfUsed( moTileAlign, rSourceProps.moTileAlign ); + assignIfUsed( moTileFlip, rSourceProps.moTileFlip ); + assignIfUsed( moRotateWithShape, rSourceProps.moRotateWithShape ); + assignIfUsed( moColorEffect, rSourceProps.moColorEffect ); + assignIfUsed( moBrightness, rSourceProps.moBrightness ); + assignIfUsed( moContrast, rSourceProps.moContrast ); + assignIfUsed( moBiLevelThreshold, 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 ); + assignIfUsed(moAlphaModFix, rSourceProps.moAlphaModFix); +} + +void FillProperties::assignUsed( const FillProperties& rSourceProps ) +{ + assignIfUsed( moFillType, rSourceProps.moFillType ); + maFillColor.assignIfUsed( rSourceProps.maFillColor ); + assignIfUsed( moUseBgFill, rSourceProps.moUseBgFill ); + maGradientProps.assignUsed( rSourceProps.maGradientProps ); + maPatternProps.assignUsed( rSourceProps.maPatternProps ); + maBlipProps.assignUsed( rSourceProps.maBlipProps ); +} + +Color FillProperties::getBestSolidColor() const +{ + Color aSolidColor; + if( moFillType.has_value() ) switch( moFillType.value() ) + { + 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, + const css::awt::Size& rSize, sal_Int16 nPhClrTheme, bool bFlipH, + bool bFlipV, bool bIsCustomShape) const +{ + if( !moFillType.has_value() ) + return; + + FillStyle eFillStyle = FillStyle_NONE; + OSL_ASSERT((moFillType.value() & sal_Int32(0xFFFF0000))==0); + switch( moFillType.value() ) + { + case XML_noFill: + { + eFillStyle = FillStyle_NONE; + rPropMap.setProperty(ShapeProperty::FillUseSlideBackground, moUseBgFill.value_or(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() ); + + model::ComplexColor aComplexColor; + if (aFillColor == nPhClr) + { + aComplexColor.setThemeColor(model::convertToThemeColorType(nPhClrTheme)); + } + else + { + aComplexColor = maFillColor.getComplexColor(); + } + rPropMap.setProperty(PROP_FillComplexColor, model::color::createXComplexColor(aComplexColor)); + + eFillStyle = FillStyle_SOLID; + } + break; + + case XML_gradFill: + // do not create gradient struct if property is not supported... + if( rPropMap.supportsProperty( ShapeProperty::FillGradient ) ) + { + // prepare ColorStops + basegfx::BColorStops aColorStops; + basegfx::BColorStops aTransparencyStops; + bool bContainsTransparency(false); + + // convert to BColorStops, check for contained transparency + for (const auto& rCandidate : maGradientProps.maGradientStops) + { + const ::Color aColor(rCandidate.second.getColor(rGraphicHelper, nPhClr)); + aColorStops.emplace_back(rCandidate.first, aColor.getBColor()); + bContainsTransparency = bContainsTransparency || rCandidate.second.hasTransparency(); + } + + // if we have transparency, convert to BColorStops + if (bContainsTransparency) + { + for (const auto& rCandidate : maGradientProps.maGradientStops) + { + const double fTrans(rCandidate.second.getTransparency() * (1.0/100.0)); + aTransparencyStops.emplace_back(rCandidate.first, basegfx::BColor(fTrans, fTrans, fTrans)); + } + } + + // prepare BGradient with some defaults + // CAUTION: This used awt::Gradient2 before who's empty constructor + // (see workdir/UnoApiHeadersTarget/offapi/normal/com/sun/ + // star/awt/Gradient.hpp) initializes all to zeros, so reflect + // this here. OTOH set all that were set, e.g. Start/EndIntens + // were set to 100, so just use default of BGradient constructor + basegfx::BGradient aGradient( + aColorStops, + awt::GradientStyle_LINEAR, + Degree10(900), + 0, // border + 0, // OfsX -> 0, not 50 (!) + 0); // OfsY -> 0, not 50 (!) + + // "rotate with shape" set to false -> do not rotate + if (!maGradientProps.moRotateWithShape.value_or(true)) + { + nShapeRotation = 0; + } + + if (maGradientProps.moGradientPath.has_value()) + { + IntegerRectangle2D aFillToRect = maGradientProps.moFillToRect.value_or( IntegerRectangle2D( 0, 0, MAX_PERCENT, MAX_PERCENT ) ); + sal_Int32 nCenterX = (MAX_PERCENT + aFillToRect.X1 - aFillToRect.X2) / 2; + aGradient.SetXOffset(getLimitedValue( + nCenterX / PER_PERCENT, 0, 100)); + sal_Int32 nCenterY = (MAX_PERCENT + aFillToRect.Y1 - aFillToRect.Y2) / 2; + aGradient.SetYOffset(getLimitedValue( + nCenterY / PER_PERCENT, 0, 100)); + + if( maGradientProps.moGradientPath.value() == 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.SetGradientStyle(awt::GradientStyle_LINEAR); + if( 100 == aGradient.GetXOffset() && 100 == aGradient.GetYOffset() ) + aGradient.SetAngle( Degree10(450) ); + else if( 0 == aGradient.GetXOffset() && 100 == aGradient.GetYOffset() ) + aGradient.SetAngle( Degree10(3150) ); + else if( 100 == aGradient.GetXOffset() && 0 == aGradient.GetYOffset() ) + aGradient.SetAngle( Degree10(1350) ); + else if( 0 == aGradient.GetXOffset() && 0 == aGradient.GetYOffset() ) + aGradient.SetAngle( Degree10(2250) ); + else + aGradient.SetGradientStyle(awt::GradientStyle_RADIAL); + } + else + { + aGradient.SetGradientStyle(awt::GradientStyle_RECT); + } + + aColorStops.reverseColorStops(); + aGradient.SetColorStops(aColorStops); + aTransparencyStops.reverseColorStops(); + } + else if (!maGradientProps.maGradientStops.empty()) + { + // aGradient.SetGradientStyle(awt::GradientStyle_LINEAR); + sal_Int32 nShadeAngle(maGradientProps.moShadeAngle.value_or( 0 )); + // Adjust for flips + if ( bFlipH ) + nShadeAngle = 180*60000 - nShadeAngle; + if ( bFlipV ) + nShadeAngle = -nShadeAngle; + const sal_Int32 nDmlAngle = nShadeAngle + nShapeRotation; + + // convert DrawingML angle (in 1/60000 degrees) to API angle (in 1/10 degrees) + aGradient.SetAngle(Degree10(static_cast< sal_Int16 >( (8100 - (nDmlAngle / (PER_DEGREE / 10))) % 3600 ))); + } + + if (awt::GradientStyle_RECT == aGradient.GetGradientStyle()) + { + // MCGR: tdf#155362: better support border + // CAUTION: Need to handle TransparencyStops if used + aGradient.tryToRecreateBorder(aTransparencyStops.empty() ? nullptr : &aTransparencyStops); + } + + // push gradient or named gradient to property map + if (rPropMap.setProperty(ShapeProperty::FillGradient, model::gradient::createUnoGradient2(aGradient))) + { + eFillStyle = FillStyle_GRADIENT; + } + + // push gradient transparency to property map if it exists + if (!aTransparencyStops.empty()) + { + aGradient.SetColorStops(aTransparencyStops); + rPropMap.setProperty(ShapeProperty::GradientTransparency, model::gradient::createUnoGradient2(aGradient)); + } + } + 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 xGraphic = lclCheckAndApplyDuotoneTransform(maBlipProps, maBlipProps.mxFillGraphic, rGraphicHelper, nPhClr); + // TODO: "rotate with shape" is not possible with our current core + + if (xGraphic.is()) + { + if (maBlipProps.moColorEffect.value_or(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.value_or( XML_TOKEN_INVALID ) ); + + // additional settings for repeated bitmap + if( eBitmapMode == BitmapMode_REPEAT ) + { + // anchor position inside bitmap + RectanglePoint eRectPoint = lclGetRectanglePoint( maBlipProps.moTileAlign.value_or( 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.value_or( 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.value_or( 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 ); + + awt::Size aBmpSize(nFillBmpSizeX, nFillBmpSizeY); + // offset of the first bitmap tile (given as EMUs), convert to percent + sal_Int16 nTileOffsetX = getDoubleIntervalValue< sal_Int16 >(std::round(maBlipProps.moTileOffsetX.value_or( 0 ) / 3.6 / aBmpSize.Width), 0, 100 ); + rPropMap.setProperty( ShapeProperty::FillBitmapOffsetX, nTileOffsetX ); + sal_Int16 nTileOffsetY = getDoubleIntervalValue< sal_Int16 >(std::round(maBlipProps.moTileOffsetY.value_or( 0 ) / 3.6 / aBmpSize.Height), 0, 100 ); + rPropMap.setProperty( ShapeProperty::FillBitmapOffsetY, nTileOffsetY ); + } + } + else if ( eBitmapMode == BitmapMode_STRETCH && maBlipProps.moFillRect.has_value() ) + { + geometry::IntegerRectangle2D aFillRect( maBlipProps.moFillRect.value() ); + awt::Size aOriginalSize( rGraphicHelper.getOriginalSize( xGraphic ) ); + if ( aOriginalSize.Width && aOriginalSize.Height ) + { + text::GraphicCrop aGraphCrop( 0, 0, 0, 0 ); + if ( aFillRect.X1 ) + aGraphCrop.Left = o3tl::convert(aFillRect.X1, aOriginalSize.Width, MAX_PERCENT); + if ( aFillRect.Y1 ) + aGraphCrop.Top = o3tl::convert(aFillRect.Y1, aOriginalSize.Height, MAX_PERCENT); + if ( aFillRect.X2 ) + aGraphCrop.Right = o3tl::convert(aFillRect.X2, aOriginalSize.Width, MAX_PERCENT); + if ( aFillRect.Y2 ) + aGraphCrop.Bottom = o3tl::convert(aFillRect.Y2, aOriginalSize.Height, MAX_PERCENT); + + 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 (bHasCropValues) + { + if (bIsCustomShape && 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 if ((aFillRect.X1 != 0 && aFillRect.X2 != 0 + && aFillRect.X1 != aFillRect.X2) + || (aFillRect.Y1 != 0 && aFillRect.Y2 != 0 + && aFillRect.Y1 != aFillRect.Y2)) + { + rPropMap.setProperty(PROP_GraphicCrop, aGraphCrop); + } + else + { + double nL = aFillRect.X1 / static_cast(MAX_PERCENT); + double nT = aFillRect.Y1 / static_cast(MAX_PERCENT); + double nR = aFillRect.X2 / static_cast(MAX_PERCENT); + double nB = aFillRect.Y2 / static_cast(MAX_PERCENT); + + sal_Int32 nSizeX; + if (nL || nR) + nSizeX = rSize.Width * (1 - (nL + nR)); + else + nSizeX = rSize.Width; + rPropMap.setProperty(ShapeProperty::FillBitmapSizeX, nSizeX); + + sal_Int32 nSizeY; + if (nT || nB) + nSizeY = rSize.Height * (1 - (nT + nB)); + else + nSizeY = rSize.Height; + rPropMap.setProperty(ShapeProperty::FillBitmapSizeY, nSizeY); + + RectanglePoint eRectPoint; + if (!aFillRect.X1 && aFillRect.X2) + { + if (!aFillRect.Y1 && aFillRect.Y2) + eRectPoint = lclGetRectanglePoint(XML_tl); + else if (aFillRect.Y1 && !aFillRect.Y2) + eRectPoint = lclGetRectanglePoint(XML_bl); + else + eRectPoint = lclGetRectanglePoint(XML_l); + } + else if (aFillRect.X1 && !aFillRect.X2) + { + if (!aFillRect.Y1 && aFillRect.Y2) + eRectPoint = lclGetRectanglePoint(XML_tr); + else if (aFillRect.Y1 && !aFillRect.Y2) + eRectPoint = lclGetRectanglePoint(XML_br); + else + eRectPoint = lclGetRectanglePoint(XML_r); + } + else + { + if (!aFillRect.Y1 && aFillRect.Y2) + eRectPoint = lclGetRectanglePoint(XML_t); + else if (aFillRect.Y1 && !aFillRect.Y2) + eRectPoint = lclGetRectanglePoint(XML_b); + else + eRectPoint = lclGetRectanglePoint(XML_ctr); + } + rPropMap.setProperty(ShapeProperty::FillBitmapRectanglePoint, eRectPoint); + eBitmapMode = BitmapMode_NO_REPEAT; + } + } + } + } + rPropMap.setProperty(ShapeProperty::FillBitmapMode, eBitmapMode); + } + + if (maBlipProps.moAlphaModFix.has_value()) + rPropMap.setProperty(ShapeProperty::FillTransparency, static_cast(100 - (maBlipProps.moAlphaModFix.value() / PER_PERCENT))); + } + break; + + case XML_pattFill: + { + if( rPropMap.supportsProperty( ShapeProperty::FillHatch ) ) + { + Color aColor( maPatternProps.maPattFgColor ); + if( aColor.isUsed() && maPatternProps.moPattPreset.has_value() ) + { + eFillStyle = FillStyle_HATCH; + rPropMap.setProperty( ShapeProperty::FillHatch, createHatch( maPatternProps.moPattPreset.value(), 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.value_or( 0 ) / PER_PERCENT, -100, 100 ); + sal_Int16 nContrast = getLimitedValue< sal_Int16, sal_Int32 >( maBlipProps.moContrast.value_or( 0 ) / PER_PERCENT, -100, 100 ); + ColorMode eColorMode = ColorMode_STANDARD; + + switch( maBlipProps.moColorEffect.value_or( 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 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 != 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_value() ) + { + geometry::IntegerRectangle2D oClipRect( maBlipProps.moClipRect.value() ); + awt::Size aOriginalSize( rGraphicHelper.getOriginalSize( xGraphic ) ); + if ( aOriginalSize.Width && aOriginalSize.Height ) + { + text::GraphicCrop aGraphCrop( 0, 0, 0, 0 ); + if ( oClipRect.X1 ) + aGraphCrop.Left = o3tl::convert(oClipRect.X1, aOriginalSize.Width, MAX_PERCENT); + if ( oClipRect.Y1 ) + aGraphCrop.Top = o3tl::convert(oClipRect.Y1, aOriginalSize.Height, MAX_PERCENT); + if ( oClipRect.X2 ) + aGraphCrop.Right = o3tl::convert(oClipRect.X2, aOriginalSize.Width, MAX_PERCENT); + if ( oClipRect.Y2 ) + aGraphCrop.Bottom = o3tl::convert(oClipRect.Y2, aOriginalSize.Height, MAX_PERCENT); + rPropMap.setProperty(PROP_GraphicCrop, aGraphCrop); + + if(mbIsCustomShape) + { + // Positive GraphicCrop values means "crop" here. + if (aGraphCrop.Left > 0 || aGraphCrop.Right > 0 || aGraphCrop.Top > 0 || aGraphCrop.Bottom > 0) + 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(); + 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_value() ) + { + rPropMap.setProperty( + mbIsCustomShape ? PROP_FillTransparence : PROP_Transparency, + static_cast(100 - (maBlipProps.moAlphaModFix.value() / 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(); +} + +constexpr auto constEffectTokenForEffectNameMap = frozen::make_unordered_map( +{ + // effects + { u"artisticBlur", XML_artisticBlur }, + { u"artisticCement", XML_artisticCement }, + { u"artisticChalkSketch", XML_artisticChalkSketch }, + { u"artisticCrisscrossEtching", XML_artisticCrisscrossEtching }, + { u"artisticCutout", XML_artisticCutout }, + { u"artisticFilmGrain", XML_artisticFilmGrain }, + { u"artisticGlass", XML_artisticGlass }, + { u"artisticGlowDiffused", XML_artisticGlowDiffused }, + { u"artisticGlowEdges", XML_artisticGlowEdges }, + { u"artisticLightScreen", XML_artisticLightScreen }, + { u"artisticLineDrawing", XML_artisticLineDrawing }, + { u"artisticMarker", XML_artisticMarker }, + { u"artisticMosiaicBubbles", XML_artisticMosiaicBubbles }, + { u"artisticPaintStrokes", XML_artisticPaintStrokes }, + { u"artisticPaintBrush", XML_artisticPaintBrush }, + { u"artisticPastelsSmooth", XML_artisticPastelsSmooth }, + { u"artisticPencilGrayscale", XML_artisticPencilGrayscale }, + { u"artisticPencilSketch", XML_artisticPencilSketch }, + { u"artisticPhotocopy", XML_artisticPhotocopy }, + { u"artisticPlasticWrap", XML_artisticPlasticWrap }, + { u"artisticTexturizer", XML_artisticTexturizer }, + { u"artisticWatercolorSponge", XML_artisticWatercolorSponge }, + { u"brightnessContrast", XML_brightnessContrast }, + { u"colorTemperature", XML_colorTemperature }, + { u"saturation", XML_saturation }, + { u"sharpenSoften", XML_sharpenSoften }, + + // attributes + { u"visible", XML_visible }, + { u"trans", XML_trans }, + { u"crackSpacing", XML_crackSpacing }, + { u"pressure", XML_pressure }, + { u"numberOfShades", XML_numberOfShades }, + { u"grainSize", XML_grainSize }, + { u"intensity", XML_intensity }, + { u"smoothness", XML_smoothness }, + { u"gridSize", XML_gridSize }, + { u"pencilSize", XML_pencilSize }, + { u"size", XML_size }, + { u"brushSize", XML_brushSize }, + { u"scaling", XML_scaling }, + { u"detail", XML_detail }, + { u"bright", XML_bright }, + { u"contrast", XML_contrast }, + { u"colorTemp", XML_colorTemp }, + { u"sat", XML_sat }, + { u"amount", XML_amount } +}); + +sal_Int32 ArtisticEffectProperties::getEffectToken(const OUString& sName) +{ + auto const aIterator = constEffectTokenForEffectNameMap.find(sName); + + if (aIterator != constEffectTokenForEffectNameMap.end()) + return aIterator->second; + + 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/fontworkhelpers.cxx b/oox/source/drawingml/fontworkhelpers.cxx new file mode 100644 index 0000000000..a72534fd53 --- /dev/null +++ b/oox/source/drawingml/fontworkhelpers.cxx @@ -0,0 +1,1669 @@ +/* -*- 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/. + * + * 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 + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include + +using namespace com::sun::star; + +void FontworkHelpers::resetPropertyValueInVec(std::vector& 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); +} + +void FontworkHelpers::putCustomShapeIntoTextPathMode( + const css::uno::Reference& xShape, + const oox::drawingml::CustomShapePropertiesPtr& pCustomShapePropertiesPtr, + const OUString& sMSPresetType, const bool bFromWordArt) +{ + if (!xShape.is() || !pCustomShapePropertiesPtr || sMSPresetType == u"textNoShape") + return; + + uno::Reference xDefaulter(xShape, uno::UNO_QUERY); + if (!xDefaulter.is()) + return; + + uno::Reference xSet(xShape, uno::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. + const OUString sFontworkType = PresetGeometryTypeNames::GetFontworkType(sMSPresetType); + auto aAdjGdList = pCustomShapePropertiesPtr->getAdjustmentGuideList(); + uno::Sequence 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 ((sFontworkType == "fontwork-arch-down-curve") + || (sFontworkType == "fontwork-arch-down-pour" && aEntry.maName == "adj1") + || (sFontworkType == "fontwork-arch-up-curve") + || (sFontworkType == "fontwork-arch-up-pour" && aEntry.maName == "adj1") + || (sFontworkType == "fontwork-open-circle-curve") + || (sFontworkType == "fontwork-open-circle-pour" && aEntry.maName == "adj1") + || (sFontworkType == "fontwork-circle-curve") + || (sFontworkType == "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 ((sFontworkType == "mso-spt158" && aEntry.maName == "adj2") // textDoubleWave1 + || (sFontworkType == "fontwork-wave" && aEntry.maName == "adj2") // textWave1 + || (sFontworkType == "mso-spt157" && aEntry.maName == "adj2") // textWave2 + || (sFontworkType == "mso-spt159" && aEntry.maName == "adj2")) // textWave4 + { + fValue = (fValue + 50000.0) * 0.216; + } + else if ((sFontworkType == "fontwork-arch-down-pour" && aEntry.maName == "adj2") + || (sFontworkType == "fontwork-arch-up-pour" && aEntry.maName == "adj2") + || (sFontworkType == "fontwork-open-circle-pour" && aEntry.maName == "adj2") + || (sFontworkType == "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 attributes in CustomShapeGeometry + xDefaulter->createCustomShapeDefaults(sFontworkType); + + auto aGeomPropSeq + = xSet->getPropertyValue("CustomShapeGeometry").get>(); + auto aGeomPropVec + = comphelper::sequenceToContainer>(aGeomPropSeq); + + // Reset old properties + static constexpr OUString sTextPath(u"TextPath"_ustr); + static constexpr OUString sAdjustmentValues(u"AdjustmentValues"_ustr); + static constexpr OUString sPresetTextWarp(u"PresetTextWarp"_ustr); + + resetPropertyValueInVec(aGeomPropVec, u"CoordinateSize"_ustr); + resetPropertyValueInVec(aGeomPropVec, u"Equations"_ustr); + resetPropertyValueInVec(aGeomPropVec, u"Path"_ustr); + resetPropertyValueInVec(aGeomPropVec, sAdjustmentValues); + resetPropertyValueInVec(aGeomPropVec, u"ViewBox"_ustr); + resetPropertyValueInVec(aGeomPropVec, u"Handles"_ustr); + resetPropertyValueInVec(aGeomPropVec, sTextPath); + resetPropertyValueInVec(aGeomPropVec, sPresetTextWarp); + + bool bScaleX(false); + if (!bFromWordArt + && (sMSPresetType == u"textArchDown" || sMSPresetType == u"textArchUp" + || sMSPresetType == u"textCircle" || sMSPresetType == u"textButton")) + { + bScaleX = true; + } + + // Apply new properties + uno::Sequence aPropertyValues(comphelper::InitPropertySequence( + { { sTextPath, uno::Any(true) }, + { u"TextPathMode"_ustr, uno::Any(drawing::EnhancedCustomShapeTextPathMode_PATH) }, + { u"ScaleX"_ustr, uno::Any(bScaleX) } })); + aGeomPropVec.push_back(comphelper::makePropertyValue(sTextPath, aPropertyValues)); + + aGeomPropVec.push_back(comphelper::makePropertyValue(sPresetTextWarp, sMSPresetType)); + + if (!aAdjGdList.empty()) + { + aGeomPropVec.push_back(comphelper::makePropertyValue(sAdjustmentValues, aAdjustment)); + } + + xSet->setPropertyValue(u"CustomShapeGeometry"_ustr, + uno::Any(comphelper::containerToSequence(aGeomPropVec))); +} + +OString FontworkHelpers::GetVMLFontworkShapetypeMarkup(const MSO_SPT eShapeType) +{ + // The markup is taken from VML in DOCX documents. Using the generated 'vml-shape-types' file + // does not work. + + static const std::map aTypeToMarkupMap{ + { mso_sptTextSimple, + "" }, + { mso_sptTextOctagon, + "" }, + { mso_sptTextHexagon, + "" }, + { mso_sptTextCurve, + "" }, + { mso_sptTextWave, + "" }, + { mso_sptTextRing, + "" }, + { mso_sptTextOnCurve, + "" }, + { mso_sptTextOnRing, + "" }, + { mso_sptTextPlainText, + "" }, + { mso_sptTextStop, + "" }, + { mso_sptTextTriangle, + "" }, + { mso_sptTextTriangleInverted, + "" }, + { mso_sptTextChevron, + "" }, + { mso_sptTextChevronInverted, + "" }, + { mso_sptTextRingInside, + "" }, + { mso_sptTextRingOutside, + "" }, + { mso_sptTextArchUpCurve, + "" }, + { mso_sptTextArchDownCurve, + "" }, + { mso_sptTextCircleCurve, + "" }, + { mso_sptTextButtonCurve, + "" }, + { mso_sptTextArchUpPour, + "" }, + { mso_sptTextArchDownPour, + "" }, + { mso_sptTextCirclePour, + "" }, + { mso_sptTextButtonPour, + "" }, + { mso_sptTextCurveUp, + "" }, + { mso_sptTextCurveDown, + "" }, + { mso_sptTextCascadeUp, + "" }, + { mso_sptTextCascadeDown, + "" }, + { mso_sptTextWave1, + "" }, + { mso_sptTextWave2, + "" }, + { mso_sptTextWave3, + "" }, + { mso_sptTextWave4, + "" }, + { mso_sptTextInflate, + "" }, + { mso_sptTextDeflate, + "" }, + { mso_sptTextInflateBottom, + "" }, + { mso_sptTextDeflateBottom, + "" }, + { mso_sptTextInflateTop, + "" }, + { mso_sptTextDeflateTop, + "" }, + { mso_sptTextDeflateInflate, + "" }, + { mso_sptTextDeflateInflateDeflate, + "" }, + { mso_sptTextFadeRight, + "" }, + { mso_sptTextFadeLeft, + "" }, + { mso_sptTextFadeUp, + "" }, + { mso_sptTextFadeDown, + "" }, + { mso_sptTextSlantUp, + "" }, + { mso_sptTextSlantDown, + "" }, + { mso_sptTextCanUp, + "" }, + { mso_sptTextCanDown, + "" } + }; + + auto i(aTypeToMarkupMap.find(eShapeType)); + return i == aTypeToMarkupMap.end() ? OString() : i->second; +} + +void FontworkHelpers::collectCharColorProps(const uno::Reference& rXText, + std::vector& rCharPropVec) +{ + if (!rXText.is()) + return; + uno::Reference rXTextCursor = rXText->createTextCursor(); + rXTextCursor->gotoStart(false); + rXTextCursor->gotoEnd(true); + uno::Reference paraEnumAccess(rXText, uno::UNO_QUERY); + if (!paraEnumAccess.is()) + return; + uno::Reference paraEnum(paraEnumAccess->createEnumeration()); + while (paraEnum->hasMoreElements()) + { + uno::Reference xParagraph(paraEnum->nextElement(), uno::UNO_QUERY); + uno::Reference runEnumAccess(xParagraph, uno::UNO_QUERY); + if (!runEnumAccess.is()) + continue; + uno::Reference runEnum = runEnumAccess->createEnumeration(); + while (runEnum->hasMoreElements()) + { + uno::Reference xRun(runEnum->nextElement(), uno::UNO_QUERY); + if (xRun->getString().isEmpty()) + continue; + uno::Reference xRunPropSet(xRun, uno::UNO_QUERY); + if (!xRunPropSet.is()) + continue; + auto xRunPropSetInfo = xRunPropSet->getPropertySetInfo(); + if (!xRunPropSetInfo.is()) + continue; + + // We have found a non-empty run. Collect its simple color properties. + const std::array aNamesArray + = { u"CharColor"_ustr, u"CharLumMod"_ustr, u"CharLumOff"_ustr, + u"CharColorTheme"_ustr, u"CharComplexColor"_ustr, u"CharTransparence"_ustr }; + for (const auto& propName : aNamesArray) + { + if (xRunPropSetInfo->hasPropertyByName(propName)) + rCharPropVec.push_back(comphelper::makePropertyValue( + propName, xRunPropSet->getPropertyValue(propName))); + } + return; + } + } +} + +void FontworkHelpers::applyPropsToRuns(const std::vector& rTextPropVec, + uno::Reference& rXText) +{ + if (!rXText.is()) + return; + uno::Reference xTextCursor = rXText->createTextCursor(); + xTextCursor->gotoStart(false); + xTextCursor->gotoEnd(true); + uno::Reference paraEnumAccess(rXText, uno::UNO_QUERY); + if (!paraEnumAccess.is()) + return; + uno::Reference paraEnum(paraEnumAccess->createEnumeration()); + while (paraEnum->hasMoreElements()) + { + uno::Reference xParagraph(paraEnum->nextElement(), uno::UNO_QUERY); + uno::Reference runEnumAccess(xParagraph, uno::UNO_QUERY); + if (!runEnumAccess.is()) + continue; + uno::Reference runEnum = runEnumAccess->createEnumeration(); + while (runEnum->hasMoreElements()) + { + uno::Reference xRun(runEnum->nextElement(), uno::UNO_QUERY); + uno::Reference xRunPropSet(xRun, uno::UNO_QUERY); + if (!xRunPropSet.is()) + continue; + auto xRunPropSetInfo = xRunPropSet->getPropertySetInfo(); + if (!xRunPropSetInfo.is()) + continue; + + for (const beans::PropertyValue& rProp : rTextPropVec) + { + if (xRunPropSetInfo->hasPropertyByName(rProp.Name) + && !(xRunPropSetInfo->getPropertyByName(rProp.Name).Attributes + & beans::PropertyAttribute::READONLY) + && rProp.Name != u"CharInteropGrabBag") + { + xRunPropSet->setPropertyValue(rProp.Name, rProp.Value); + } + } + } + } +} +namespace +{ +constexpr const std::array aCharPropNames{ + u"CharColorLumMod", u"CharColorLumOff", u"CharColorTheme", u"CharComplexColor", + u"CharTransparence" +}; + +constexpr const std::array aShapePropNames{ + u"FillColorLumMod", u"FillColorLumOff", u"FillColorTheme", u"FillComplexColor", + u"FillTransparence" +}; +} + +void FontworkHelpers::createCharFillPropsFromShape( + const uno::Reference& rXPropSet, + std::vector& rCharPropVec) +{ + auto xPropSetInfo = rXPropSet->getPropertySetInfo(); + if (!xPropSetInfo.is()) + return; + // CharColor contains the color including all color transformations + // FillColor contains darken and lighten but not transparency + sal_Int32 nColorRGB = 0; + if (xPropSetInfo->hasPropertyByName(u"FillColor"_ustr) + && (rXPropSet->getPropertyValue(u"FillColor"_ustr) >>= nColorRGB)) + { + ::Color aColor(ColorTransparency, nColorRGB); + sal_Int16 nTransPercent = 0; + if (xPropSetInfo->hasPropertyByName(u"FillTransparence"_ustr) + && (rXPropSet->getPropertyValue(u"FillTransparence"_ustr) >>= nTransPercent)) + { + sal_uInt8 nAlpha = 255 - sal_uInt8(std::lround(double(nTransPercent) * 2.55)); + aColor.SetAlpha(nAlpha); + } + rCharPropVec.push_back(comphelper::makePropertyValue(u"CharColor"_ustr, sal_Int32(aColor))); + } + + for (size_t i = 0; i < 5; i++) + { + OUString aPropertyName(aShapePropNames[i]); + if (xPropSetInfo->hasPropertyByName(aPropertyName)) + rCharPropVec.push_back(comphelper::makePropertyValue( + OUString(aCharPropNames[i]), rXPropSet->getPropertyValue(aPropertyName))); + } +} + +bool FontworkHelpers::createPrstDashFromLineDash(const drawing::LineDash& rLineDash, + const drawing::LineCap& rLineCap, + OUString& rsPrstDash) +{ + bool bIsConverted = false; + + bool bIsRelative(rLineDash.Style == drawing::DashStyle_RECTRELATIVE + || rLineDash.Style == drawing::DashStyle_ROUNDRELATIVE); + if (bIsRelative && rLineDash.Dots == 1) + { // The length were tweaked on import in case of prstDash. Revert it here. + sal_uInt32 nDotLen = rLineDash.DotLen; + sal_uInt32 nDashLen = rLineDash.DashLen; + sal_uInt32 nDistance = rLineDash.Distance; + if (rLineCap != drawing::LineCap_BUTT && nDistance >= 99) + { + nDistance -= 99; + nDotLen += 99; + if (nDashLen > 0) + nDashLen += 99; + } + + // LO uses length 0 for 100%, if the attribute is missing in ODF. + // Other applications might write 100%. Make is unique for the conditions. + if (nDotLen == 0) + nDotLen = 100; + if (nDashLen == 0 && rLineDash.Dashes > 0) + nDashLen = 100; + + bIsConverted = true; + if (nDotLen == 100 && rLineDash.Dashes == 0 && nDashLen == 0 && nDistance == 300) + rsPrstDash = u"dot"_ustr; + else if (nDotLen == 400 && rLineDash.Dashes == 0 && nDashLen == 0 && nDistance == 300) + rsPrstDash = u"dash"_ustr; + else if (nDotLen == 400 && rLineDash.Dashes == 1 && nDashLen == 100 && nDistance == 300) + rsPrstDash = u"dashDot"_ustr; + else if (nDotLen == 800 && rLineDash.Dashes == 0 && nDashLen == 0 && nDistance == 300) + rsPrstDash = u"lgDash"_ustr; + else if (nDotLen == 800 && rLineDash.Dashes == 1 && nDashLen == 100 && nDistance == 300) + rsPrstDash = u"lgDashDot"_ustr; + else if (nDotLen == 800 && rLineDash.Dashes == 2 && nDashLen == 100 && nDistance == 300) + rsPrstDash = u"lgDashDotDot"_ustr; + else if (nDotLen == 100 && rLineDash.Dashes == 0 && nDashLen == 0 && nDistance == 100) + rsPrstDash = u"sysDot"_ustr; + else if (nDotLen == 300 && rLineDash.Dashes == 0 && nDashLen == 0 && nDistance == 100) + rsPrstDash = u"sysDash"_ustr; + else if (nDotLen == 300 && rLineDash.Dashes == 1 && nDashLen == 100 && nDistance == 100) + rsPrstDash = u"sysDashDot"_ustr; + else if (nDotLen == 300 && rLineDash.Dashes == 2 && nDashLen == 100 && nDistance == 100) + rsPrstDash = "sysDashDotDot"; + else + bIsConverted = false; + } + return bIsConverted; +} + +bool FontworkHelpers::getThemeColorFromShape( + OUString const& rPropertyName, const uno::Reference& xPropertySet, + model::ComplexColor& rComplexColor) +{ + auto xPropSetInfo = xPropertySet->getPropertySetInfo(); + if (!xPropSetInfo.is()) + return false; + uno::Reference xComplexColor; + if (xPropSetInfo->hasPropertyByName(rPropertyName) + && (xPropertySet->getPropertyValue(rPropertyName) >>= xComplexColor) && xComplexColor.is()) + { + rComplexColor = model::color::getFromXComplexColor(xComplexColor); + return rComplexColor.isValidThemeType(); + } + return false; +} + +namespace +{ +// Contains information about one gradient stop. Each gradient has at least 2 of these. +struct GradientStopColor +{ + // RGBColor contains no transformations. In case TTColor has other type than + // ThemeColorType::Unknown, it has precedence. The color transformations in TTColor are used + // for RGBColor as well. + model::ComplexColor TTColor; // ThemeColorType and color transformations + ::Color RGBColor; +}; +} + +// 'first' contains the position in the range 0 (=0%) to 100000 (=100%) in the gradient as needed for +// the 'pos' attribute in element in oox, 'second' contains color and color transformations +// at this position. The map contains all information needed for a element in oox. +typedef std::multimap ColorMapType; + +namespace +{ +constexpr const std::array W14ColorNames{ + u"tx1", u"bg1", u"tx2", u"bg2", u"accent1", u"accent2", + u"accent3", u"accent4", u"accent5", u"accent6", u"hlink", u"folHlink" +}; + +constexpr const std::array WColorNames{ + u"text1", u"background1", u"text2", u"background2", u"accent1", u"accent2", + u"accent3", u"accent4", u"accent5", u"accent6", u"hyperlink", u"followedHyperlink" +}; + +// Returns the string to be used in w14:schemeClr in case of w14:textOutline or w14:textFill +OUString lcl_getW14MarkupStringForThemeColor(const model::ComplexColor& rComplexColor) +{ + const sal_uInt8 nClrNameIndex = std::clamp( + sal_Int32(rComplexColor.getThemeColorType()), sal_Int32(model::ThemeColorType::Dark1), + sal_Int32(model::ThemeColorType::FollowedHyperlink)); + return OUString(W14ColorNames[nClrNameIndex]); +} + +// Returns the string to be used in w:themeColor. It is exported via CharThemeColor. +OUString lcl_getWMarkupStringForThemeColor(const model::ComplexColor& rComplexColor) +{ + const sal_uInt8 nClrNameIndex = std::clamp( + sal_Int32(rComplexColor.getThemeColorType()), sal_Int32(model::ThemeColorType::Dark1), + sal_Int32(model::ThemeColorType::FollowedHyperlink)); + return OUString(WColorNames[nClrNameIndex]); +} + +// Puts the value of the first occurrence of rType in rComplexColor into rValue and returns true. +// If such does not exist, rValue is unchanged and the method returns false. +bool lcl_getThemeColorTransformationValue(const model::ComplexColor& rComplexColor, + const model::TransformationType& rType, sal_Int16& rValue) +{ + const std::vector aTransVec(rComplexColor.getTransformations()); + auto bItemFound + = [rType](const model::Transformation& rTrans) { return rType == rTrans.meType; }; + auto pIt = std::find_if(aTransVec.begin(), aTransVec.end(), bItemFound); + if (pIt == aTransVec.end()) + return false; + rValue = (*pIt).mnValue; + return true; +} + +// Adds the child elements 'lumMod' and 'lumOff' to 'schemeClr' maCurrentElement of pGrabStack, +// if such exist in rComplexColor. 'alpha' is contained in the maTransformations of rComplexColor +// in case of gradient fill. +void lcl_addColorTransformationToGrabBagStack(const model::ComplexColor& rComplexColor, + std::unique_ptr& pGrabBagStack) +{ + if (pGrabBagStack == nullptr) + return; + for (auto const& rColorTransform : rComplexColor.getTransformations()) + { + switch (rColorTransform.meType) + { + case model::TransformationType::LumMod: + pGrabBagStack->push("lumMod"); + pGrabBagStack->push("attributes"); + pGrabBagStack->addInt32("val", rColorTransform.mnValue * 10); + pGrabBagStack->pop(); + pGrabBagStack->pop(); + break; + case model::TransformationType::LumOff: + pGrabBagStack->push("lumOff"); + pGrabBagStack->push("attributes"); + pGrabBagStack->addInt32("val", rColorTransform.mnValue * 10); + pGrabBagStack->pop(); + pGrabBagStack->pop(); + break; + case model::TransformationType::Alpha: + pGrabBagStack->push("alpha"); + pGrabBagStack->push("attributes"); + // model::TransformationType::Alpha is designed to be used with a:alpha, which has + // opacity. But w14:alpha uses transparency. So convert it here. + pGrabBagStack->addInt32("val", + oox::drawingml::MAX_PERCENT - rColorTransform.mnValue * 10); + pGrabBagStack->pop(); + pGrabBagStack->pop(); + break; + default: // other child elements can be added later if needed for Fontwork + break; + } + } +} + +void lcl_getGradientsFromShape(const uno::Reference& rXPropSet, + const uno::Reference& rXPropSetInfo, + awt::Gradient2& rColorGradient, bool& rbHasColorGradient, + awt::Gradient2& rTransparenceGradient, + bool& rbHasTransparenceGradient) +{ + OUString sColorGradientName; + rbHasColorGradient + = rXPropSetInfo->hasPropertyByName(u"FillGradientName"_ustr) + && (rXPropSet->getPropertyValue(u"FillGradientName"_ustr) >>= sColorGradientName) + && !sColorGradientName.isEmpty() && rXPropSetInfo->hasPropertyByName(u"FillGradient"_ustr) + && (rXPropSet->getPropertyValue(u"FillGradient"_ustr) >>= rColorGradient); + + OUString sTransparenceGradientName; + rbHasTransparenceGradient + = rXPropSetInfo->hasPropertyByName(u"FillTransparenceGradientName"_ustr) + && (rXPropSet->getPropertyValue(u"FillTransparenceGradientName"_ustr) + >>= sTransparenceGradientName) + && !sTransparenceGradientName.isEmpty() + && rXPropSetInfo->hasPropertyByName(u"FillTransparenceGradient"_ustr) + && (rXPropSet->getPropertyValue(u"FillTransparenceGradient"_ustr) + >>= rTransparenceGradient); +} + +ColorMapType lcl_createColorMapFromShapeProps( + const uno::Reference& rXPropSet, + const uno::Reference& rXPropSetInfo, + const awt::Gradient2& rColorGradient, const bool& rbHasColorGradient, + const awt::Gradient2& rTransparenceGradient, const bool& rbHasTransparenceGradient) +{ + // LibreOffice can use color gradients and transparency gradients with different geometries. + // That is not possible in OOXML, so a fill might look different in Word. But a round-trip + // with gradients imported from Word, should work well. + + // Word has transparency not as separate gradient but as color transformation in a color + // gradient. Thus we synchronize the gradients. Then they have same offsets and count. + basegfx::BColor aSingleColor; + basegfx::BGradient aColorBGradient; + basegfx::BColorStops aColorStops; + if (rbHasColorGradient) + { + aColorBGradient = model::gradient::getFromUnoGradient2(rColorGradient); + aColorBGradient.tryToApplyStartEndIntensity(); + aColorBGradient.tryToApplyBorder(); + aColorBGradient.tryToApplyAxial(); + basegfx::utils::prepareColorStops(aColorBGradient, aColorStops, aSingleColor); + // All gradient styles but LINEAR and AXIAL (which is already converted to LINEAR) need the + // stops sequence reverse. + if (awt::GradientStyle_LINEAR != aColorBGradient.GetGradientStyle()) + aColorStops.reverseColorStops(); + } + else + { + sal_Int32 nFillColor(0); + if (rXPropSetInfo->hasPropertyByName("FillColor")) + rXPropSet->getPropertyValue(u"FillColor"_ustr) >>= nFillColor; + aSingleColor = ::Color(ColorTransparency, nFillColor).getBColor().clamp(); + } + + basegfx::BColor aSingleTrans; + basegfx::BGradient aTransBGradient; + basegfx::BColorStops aTransStops; + if (rbHasTransparenceGradient) + { + aTransBGradient = model::gradient::getFromUnoGradient2(rTransparenceGradient); + aTransBGradient.tryToApplyStartEndIntensity(); // usually 100%, but might be set by macro + aTransBGradient.tryToApplyBorder(); + aTransBGradient.tryToApplyAxial(); + basegfx::utils::prepareColorStops(aTransBGradient, aTransStops, aSingleTrans); + // All gradient styles but LINEAR and AXIAL (which is already converted to LINEAR) need the + // stops sequence reverse. + if (awt::GradientStyle_LINEAR != aTransBGradient.GetGradientStyle()) + aTransStops.reverseColorStops(); + } + else + { + sal_Int16 nAPITrans(0); + if (rXPropSetInfo->hasPropertyByName(u"FillTransparence"_ustr)) + rXPropSet->getPropertyValue(u"FillTransparence"_ustr) >>= nAPITrans; + // API transparency is in range 0..100, BColor in range [0.0, 1.0]. + aSingleTrans = basegfx::BColor(nAPITrans * 0.01).clamp(); + } + + basegfx::utils::synchronizeColorStops(aColorStops, aTransStops, aSingleColor, aSingleTrans); + + ColorMapType aColorMap; + + // If we have no color gradient, the fix fill color might be a theme color. In that case we use + // it instead of the color from the color stop. + GradientStopColor aFixColor; + bool bUseThemeColor(!rbHasColorGradient + && FontworkHelpers::getThemeColorFromShape("FillComplexColor", rXPropSet, + aFixColor.TTColor)); + + for (auto itC = aColorStops.begin(), itT = aTransStops.begin(); + itC != aColorStops.end() && itT != aTransStops.end(); ++itC, ++itT) + { + GradientStopColor aNextStopColor = aFixColor; + if (!bUseThemeColor) + { + aNextStopColor.TTColor = model::ComplexColor(); + aNextStopColor.RGBColor = ::Color((*itC).getStopColor()); + } + // model::TransformationType::Alpha is opacity in range 0..10000, + // BColor is transparency in range [0.0, 1.0] + sal_Int16 nAlpha = std::clamp( + 10000 - std::lround((*itT).getStopColor().luminance() * 10000.0), 0, 10000); + if (nAlpha < 10000) + aNextStopColor.TTColor.addTransformation({ model::TransformationType::Alpha, nAlpha }); + sal_Int32 nPosition + = static_cast(std::lround((*itC).getStopOffset() * 100000.0)); + aColorMap.insert(std::pair{ nPosition, aNextStopColor }); + } + + // If a gradient has only two stops, MS Office renders it with a non-linear method which looks + // different than gradient in LibreOffice (see tdf#128795). For more than two stops rendering is + // the same as in LibreOffice, even if two stops are identical. + if (aColorMap.size() == 2) + { + auto it = aColorMap.begin(); + aColorMap.insert(std::pair{ 0, (*it).second }); + } + return aColorMap; +} +} // end namespace + +void FontworkHelpers::createCharInteropGrabBagUpdatesFromShapeProps( + const uno::Reference& rXPropSet, + std::vector& rUpdatePropVec) +{ + auto xPropSetInfo = rXPropSet->getPropertySetInfo(); + if (!xPropSetInfo.is()) + return; + + // GrabBagStack is a special tool for handling the hierarchy in a GrabBag + std::unique_ptr pGrabBagStack; + + // CharTextFillTextEffect + pGrabBagStack.reset(new oox::GrabBagStack("textFill")); + drawing::FillStyle eFillStyle = drawing::FillStyle_SOLID; + if (xPropSetInfo->hasPropertyByName(u"FillStyle"_ustr)) + rXPropSet->getPropertyValue(u"FillStyle"_ustr) >>= eFillStyle; + + // We might have a solid fill but a transparency gradient. That needs to be exported as gradFill + // too, because Word has transparency not separated but in the color stops in a color gradient. + // A gradient exists, if the GradientName is not empty. + OUString sTransparenceGradientName; + if (eFillStyle == drawing::FillStyle_SOLID + && xPropSetInfo->hasPropertyByName(u"FillTransparenceGradientName"_ustr) + && (rXPropSet->getPropertyValue(u"FillTransparenceGradientName"_ustr) + >>= sTransparenceGradientName) + && !sTransparenceGradientName.isEmpty()) + eFillStyle = drawing::FillStyle_GRADIENT; + + switch (eFillStyle) + { + case drawing::FillStyle_NONE: + { + pGrabBagStack->appendElement("noFill", uno::Any()); + break; + } + case drawing::FillStyle_GRADIENT: + { + awt::Gradient2 aColorGradient; + bool bHasColorGradient(false); + awt::Gradient2 aTransparenceGradient; + bool bHasTransparenceGradient(false); + lcl_getGradientsFromShape(rXPropSet, xPropSetInfo, aColorGradient, bHasColorGradient, + aTransparenceGradient, bHasTransparenceGradient); + // aColorMap contains the color stops suitable to generate gsLst + ColorMapType aColorMap = lcl_createColorMapFromShapeProps( + rXPropSet, xPropSetInfo, aColorGradient, bHasColorGradient, aTransparenceGradient, + bHasTransparenceGradient); + pGrabBagStack->push("gradFill"); + pGrabBagStack->push("gsLst"); + for (auto it = aColorMap.begin(); it != aColorMap.end(); ++it) + { + pGrabBagStack->push("gs"); + pGrabBagStack->push("attributes"); + pGrabBagStack->addInt32("pos", (*it).first); + pGrabBagStack->pop(); + if ((*it).second.TTColor.getThemeColorType() == model::ThemeColorType::Unknown) + { + pGrabBagStack->push("srgbClr"); + pGrabBagStack->push("attributes"); + pGrabBagStack->addString("val", (*it).second.RGBColor.AsRGBHexString()); + pGrabBagStack->pop(); // maCurrentElement:'srgbClr', maPropertyList:'attributes' + } + else + { + pGrabBagStack->push("schemeClr"); + pGrabBagStack->push("attributes"); + pGrabBagStack->addString( + "val", lcl_getW14MarkupStringForThemeColor((*it).second.TTColor)); + pGrabBagStack->pop(); + // maCurrentElement:'schemeClr', maPropertyList:'attributes' + } + + lcl_addColorTransformationToGrabBagStack((*it).second.TTColor, pGrabBagStack); + pGrabBagStack->pop(); + // maCurrentElement:'gs', maPropertyList:'attributes', 'srgbClr' or 'schemeClr' + pGrabBagStack->pop(); // maCurrentElement:'gsLst', maPropertyList: at least two 'gs' + } + pGrabBagStack->pop(); // maCurrentElement:'gradFill', maPropertyList: gsLst + + // Kind of gradient + awt::GradientStyle eGradientStyle = awt::GradientStyle_LINEAR; + if (bHasColorGradient) + eGradientStyle = aColorGradient.Style; + else if (bHasTransparenceGradient) + eGradientStyle = aTransparenceGradient.Style; + // write 'lin' or 'path'. LibreOffice has nothing which corresponds to 'shape'. + if (eGradientStyle == awt::GradientStyle_LINEAR + || eGradientStyle == awt::GradientStyle_AXIAL) + { + // API angle is in 1/10th deg and describes counter-clockwise rotation of line of + // equal color. OOX angle is in 1/60000th deg and describes clockwise rotation of + // color transition direction. + sal_Int32 nAngleOOX = 0; + if (bHasColorGradient) + nAngleOOX = ((3600 - aColorGradient.Angle + 900) % 3600) * 6000; + else if (bHasTransparenceGradient) + nAngleOOX = ((3600 - aTransparenceGradient.Angle + 900) % 3600) * 6000; + pGrabBagStack->push("lin"); + pGrabBagStack->push("attributes"); + pGrabBagStack->addInt32("ang", nAngleOOX); + // LibreOffice cannot scale a gradient to the shape size. + pGrabBagStack->addString("scaled", "0"); + } + else + { + // Same rendering as in LibreOffice is not possible: + // (1) The gradient type 'path' in Word has no rotation. + // (2) To get the same size of gradient area, the element 'tileRect' is needed, but + // that is not available for element. + // So we can only set a reasonably suitable focus point. + pGrabBagStack->push("path"); + pGrabBagStack->push("attributes"); + if (eGradientStyle == awt::GradientStyle_RADIAL + || eGradientStyle == awt::GradientStyle_ELLIPTICAL) + pGrabBagStack->addString("path", "circle"); + else + pGrabBagStack->addString("path", "rect"); + pGrabBagStack->pop(); + pGrabBagStack->push("fillToRect"); + pGrabBagStack->push("attributes"); + sal_Int32 nLeftPercent + = bHasColorGradient ? aColorGradient.XOffset : aTransparenceGradient.XOffset; + sal_Int32 nTopPercent + = bHasColorGradient ? aColorGradient.YOffset : aTransparenceGradient.YOffset; + pGrabBagStack->addInt32("l", nLeftPercent * 1000); + pGrabBagStack->addInt32("t", nTopPercent * 1000); + pGrabBagStack->addInt32("r", (100 - nLeftPercent) * 1000); + pGrabBagStack->addInt32("b", (100 - nTopPercent) * 1000); + } + // all remaining pop() calls are in the final getRootProperty() method + break; + } + case drawing::FillStyle_SOLID: + { + pGrabBagStack->push("solidFill"); + model::ComplexColor aComplexColor; + // It is either "schemeClr" or "srgbClr". + if (FontworkHelpers::getThemeColorFromShape("FillComplexColor", rXPropSet, + aComplexColor)) + { + pGrabBagStack->push("schemeClr"); + pGrabBagStack->push("attributes"); + pGrabBagStack->addString("val", lcl_getW14MarkupStringForThemeColor(aComplexColor)); + pGrabBagStack->pop(); // maCurrentElement:'schemeClr', maPropertyList:'attributes' + lcl_addColorTransformationToGrabBagStack(aComplexColor, pGrabBagStack); + // maCurrentElement:'schemeClr', maPropertyList:'attributes', maybe 'lumMod' and + // maybe 'lumOff' + } + else + { + pGrabBagStack->push("srgbClr"); + sal_Int32 nFillColor(0); + if (xPropSetInfo->hasPropertyByName(u"FillColor"_ustr)) + rXPropSet->getPropertyValue(u"FillColor"_ustr) >>= nFillColor; + pGrabBagStack->push("attributes"); + ::Color aColor(ColorTransparency, nFillColor); + pGrabBagStack->addString("val", aColor.AsRGBHexString()); + pGrabBagStack->pop(); + // maCurrentElement:'srgbClr', maPropertyList:'attributes' + } + + sal_Int16 nFillTransparence(0); + if (xPropSetInfo->hasPropertyByName(u"FillTransparence"_ustr)) + rXPropSet->getPropertyValue(u"FillTransparence"_ustr) >>= nFillTransparence; + if (nFillTransparence != 0) + { + pGrabBagStack->push("alpha"); + pGrabBagStack->push("attributes"); + pGrabBagStack->addInt32("val", nFillTransparence * 1000); + } + // all remaining pop() calls are in the final getRootProperty() method + break; + } + default: // BITMAP is VML only export and does not arrive here. HATCH has to be VML only + // export too, but is not yet implemented. + break; + } + // resolve the stack and put resulting PropertyValue into the update vector + beans::PropertyValue aCharTextFillTextEffect; + aCharTextFillTextEffect.Name = "CharTextFillTextEffect"; + aCharTextFillTextEffect.Value <<= pGrabBagStack->getRootProperty(); + rUpdatePropVec.push_back(aCharTextFillTextEffect); + + // CharTextOutlineTextEffect + pGrabBagStack.reset(new oox::GrabBagStack("textOutline")); + + // attributes + pGrabBagStack->push("attributes"); + // line width + sal_Int32 nLineWidth(0); + if (xPropSetInfo->hasPropertyByName(u"LineWidth"_ustr)) + rXPropSet->getPropertyValue(u"LineWidth"_ustr) >>= nLineWidth; + pGrabBagStack->addInt32("w", nLineWidth * 360); + // cap for dashes + drawing::LineCap eLineCap = drawing::LineCap_BUTT; + if (xPropSetInfo->hasPropertyByName(u"LineCap"_ustr)) + rXPropSet->getPropertyValue(u"LineCap"_ustr) >>= eLineCap; + OUString sCap = u"flat"_ustr; + if (eLineCap == drawing::LineCap_ROUND) + sCap = u"rnd"_ustr; + else if (eLineCap == drawing::LineCap_SQUARE) + sCap = u"sq"_ustr; + pGrabBagStack->addString("cap", sCap); + // LO has no compound lines and always centers the lines + pGrabBagStack->addString("cmpd", u"sng"_ustr); + pGrabBagStack->addString("alng", u"ctr"_ustr); + pGrabBagStack->pop(); + // maCurrentElement:'textOutline', maPropertyList:'attributes' + + // style + drawing::LineStyle eLineStyle = drawing::LineStyle_NONE; + if (xPropSetInfo->hasPropertyByName(u"LineStyle"_ustr)) + rXPropSet->getPropertyValue(u"LineStyle"_ustr) >>= eLineStyle; + // 'dashed' is not a separate style in Word. Word has a style 'gradFill', but that is not yet + // implemented in LO. So only 'noFill' and 'solidFill'. + if (eLineStyle == drawing::LineStyle_NONE) + { + pGrabBagStack->appendElement("noFill", uno::Any()); + } + else + { + pGrabBagStack->push("solidFill"); + // It is either "schemeClr" or "srgbClr". + model::ComplexColor aComplexColor; + if (FontworkHelpers::getThemeColorFromShape("LineComplexColor", rXPropSet, aComplexColor)) + { + pGrabBagStack->push("schemeClr"); + pGrabBagStack->push("attributes"); + pGrabBagStack->addString("val", lcl_getW14MarkupStringForThemeColor(aComplexColor)); + pGrabBagStack->pop(); + lcl_addColorTransformationToGrabBagStack(aComplexColor, pGrabBagStack); + // maCurrentElement:'schemeClr', maPropertylist:'attributes' + } + else // not a theme color + { + pGrabBagStack->push("srgbClr"); + pGrabBagStack->push("attributes"); + sal_Int32 nLineColor(0); + if (xPropSetInfo->hasPropertyByName(u"LineColor"_ustr)) + rXPropSet->getPropertyValue(u"LineColor"_ustr) >>= nLineColor; + ::Color aColor(ColorTransparency, nLineColor); + pGrabBagStack->addString("val", aColor.AsRGBHexString()); + pGrabBagStack->pop(); + // maCurrentElement:'srgbClr', maPropertylist:'attributes' + } + + sal_Int16 nLineTransparence(0); + if (xPropSetInfo->hasPropertyByName(u"LineTransparence"_ustr)) + rXPropSet->getPropertyValue(u"LineTransparence"_ustr) >>= nLineTransparence; + if (nLineTransparence != 0) + { + pGrabBagStack->push("alpha"); + pGrabBagStack->push("attributes"); + pGrabBagStack->addInt32("val", nLineTransparence * 1000); + pGrabBagStack->pop(); // maCurrentElement: 'alpha' + pGrabBagStack->pop(); // maCurrentElement: 'srgbClr' or 'schemeClr' + } + pGrabBagStack->pop(); + // maCurrentElement:'solidFill', maPropertyList:either 'srgbClr' or 'schemeClr + pGrabBagStack->pop(); + } + // maCurrentElement:'textOutline', maPropertyList:'attributes' and either 'noFill' or 'solidFill' + + // prstDash + if (eLineStyle == drawing::LineStyle_DASH) + { + pGrabBagStack->push("prstDash"); + OUString sPrstDash = u"sysDot"_ustr; + drawing::LineDash aLineDash; + if (xPropSetInfo->hasPropertyByName(u"LineDash"_ustr) + && (rXPropSet->getPropertyValue(u"LineDash"_ustr) >>= aLineDash)) + { + // The outline of abc-transform in Word is not able to use custDash. But we know the line + // is dashed. We keep "sysDot" as fallback in case no prstDash is detected. + FontworkHelpers::createPrstDashFromLineDash(aLineDash, eLineCap, sPrstDash); + } + else + { + // ToDo: There may be a named dash style, but that is unlikely for Fontwork shapes. So + // I skip it for now and use the "sysDot" fallback. + } + pGrabBagStack->push("attributes"); + pGrabBagStack->addString("val", sPrstDash); + pGrabBagStack->pop(); // maCurrentElement:'prstDash' + pGrabBagStack->pop(); // maCurrentElement:'textOutline' + } + // maCurrentElement:'textOutline', maPropertyList:'attributes', either 'noFill' or 'solidFill', + // and maybe 'prstDash'. + + // LineJoint, can be 'round', 'bevel' or 'miter' in Word + drawing::LineJoint eLineJoint = drawing::LineJoint_NONE; + if (xPropSetInfo->hasPropertyByName(u"LineJoint"_ustr)) + rXPropSet->getPropertyValue(u"LineJoint"_ustr) >>= eLineJoint; + if (eLineJoint == drawing::LineJoint_NONE || eLineJoint == drawing::LineJoint_BEVEL) + pGrabBagStack->appendElement("bevel", uno::Any()); + else if (eLineJoint == drawing::LineJoint_ROUND) + pGrabBagStack->appendElement("round", uno::Any()); + else // MITER or deprecated MIDDLE + { + pGrabBagStack->push("miter"); + pGrabBagStack->push("attributes"); + pGrabBagStack->addInt32("lim", 0); // As of Feb. 2023 LO cannot render other values. + pGrabBagStack->pop(); // maCurrentElement:'attributes' + pGrabBagStack->pop(); // maCurrentElement:'miter' + } + // maCurrentElement:'textOutline', maPropertyList:'attributes', either 'noFill' or + // 'solidFill', maybe 'prstDash', and either 'bevel', 'round' or 'miter'. + + // resolve the stack and put resulting PropertyValue into the update vector + beans::PropertyValue aCharTextOutlineTextEffect; + aCharTextOutlineTextEffect.Name = "CharTextOutlineTextEffect"; + aCharTextOutlineTextEffect.Value <<= pGrabBagStack->getRootProperty(); + rUpdatePropVec.push_back(aCharTextOutlineTextEffect); + + // CharThemeOriginalColor, CharThemeColor, and CharThemeColorShade or CharThemeColorTint will be + // used for element. That is evaluated by applications, which do not understand w14 + // namespace, or if w14:textFill is omitted. + model::ComplexColor aComplexColor; + if (FontworkHelpers::getThemeColorFromShape("FillComplexColor", rXPropSet, aComplexColor)) + { + // CharThemeColor + beans::PropertyValue aCharThemeColor; + aCharThemeColor.Name = u"CharThemeColor"_ustr; + aCharThemeColor.Value <<= lcl_getWMarkupStringForThemeColor(aComplexColor); + rUpdatePropVec.push_back(aCharThemeColor); + + // CharThemeColorShade or CharThemeColorTint + // MS Office uses themeTint and themeShade on the luminance in a HSL color space, see 2.1.72 + // in [MS-OI29500]. That is different from OOXML specification. + // We made two assumption here: (1) If LumOff exists and is not zero, it is a 'tint'. + // (2) LumMod + LumOff == 10000; + sal_Int16 nLumMod; + if (lcl_getThemeColorTransformationValue(aComplexColor, model::TransformationType::LumMod, + nLumMod)) + { + sal_Int16 nLumOff; + bool bIsTint = lcl_getThemeColorTransformationValue( + aComplexColor, model::TransformationType::LumOff, nLumOff) + && nLumOff != 0; + sal_uInt8 nValue + = std::clamp(lround(double(nLumMod) * 255.0 / 10000.0), 0, 255); + OUString sValue = OUString::number(nValue, 16); + + beans::PropertyValue aCharThemeTintOrShade; + aCharThemeTintOrShade.Name = bIsTint ? u"CharThemeColorTint" : u"CharThemeColorShade"; + aCharThemeTintOrShade.Value <<= sValue; + rUpdatePropVec.push_back(aCharThemeTintOrShade); + } + } + // ToDo: Are FillColorLumMod, FillColorLumOff and FillColorTheme possible without + // FillComplexColor? If yes, we need an 'else' part here. + + // CharThemeOriginalColor. + beans::PropertyValue aCharThemeOriginalColor; + sal_Int32 nFillColor(0); + if (xPropSetInfo->hasPropertyByName(u"FillColor"_ustr)) + rXPropSet->getPropertyValue(u"FillColor"_ustr) >>= nFillColor; + aCharThemeOriginalColor.Name = u"CharThemeOriginalColor"_ustr; + ::Color aColor(ColorTransparency, nFillColor); + aCharThemeOriginalColor.Value <<= aColor.AsRGBHEXString(); + rUpdatePropVec.push_back(aCharThemeOriginalColor); +} + +void FontworkHelpers::applyUpdatesToCharInteropGrabBag( + const std::vector& rUpdatePropVec, uno::Reference& rXText) +{ + if (!rXText.is()) + return; + uno::Reference rXTextCursor = rXText->createTextCursor(); + rXTextCursor->gotoStart(false); + rXTextCursor->gotoEnd(true); + uno::Reference paraEnumAccess(rXText, uno::UNO_QUERY); + if (!paraEnumAccess.is()) + return; + uno::Reference paraEnum(paraEnumAccess->createEnumeration()); + while (paraEnum->hasMoreElements()) + { + uno::Reference xParagraph(paraEnum->nextElement(), uno::UNO_QUERY); + uno::Reference runEnumAccess(xParagraph, uno::UNO_QUERY); + if (!runEnumAccess.is()) + continue; + uno::Reference runEnum = runEnumAccess->createEnumeration(); + while (runEnum->hasMoreElements()) + { + uno::Reference xRun(runEnum->nextElement(), uno::UNO_QUERY); + if (xRun->getString().isEmpty()) + continue; + uno::Reference xRunPropSet(xRun, uno::UNO_QUERY); + if (!xRunPropSet.is()) + continue; + auto xRunPropSetInfo = xRunPropSet->getPropertySetInfo(); + if (!xRunPropSetInfo.is()) + continue; + + // Now apply the updates to the CharInteropGrabBag of this run + uno::Sequence aCharInteropGrabBagSeq; + if (xRunPropSetInfo->hasPropertyByName("CharInteropGrabBag")) + xRunPropSet->getPropertyValue("CharInteropGrabBag") >>= aCharInteropGrabBagSeq; + comphelper::SequenceAsHashMap aGrabBagMap(aCharInteropGrabBagSeq); + for (const auto& rProp : rUpdatePropVec) + { + aGrabBagMap[rProp.Name] = rProp.Value; // [] inserts if not exists + } + xRunPropSet->setPropertyValue("CharInteropGrabBag", + uno::Any(aGrabBagMap.getAsConstPropertyValueList())); + } + } +} + +/* vim:set shiftwidth=4 softtabstop=4 expandtab cinoptions=b1,g0,N-s cinkeys+=0=break: */ diff --git a/oox/source/drawingml/graphicshapecontext.cxx b/oox/source/drawingml/graphicshapecontext.cxx new file mode 100644 index 0000000000..4fb6af74e1 --- /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 + +#include + +#include + +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +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 +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, nullptr); + case XML_wavAudioFile: + { + OUString const path(getEmbeddedWAVAudioFile(getRelations(), rAttribs)); + Reference 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.getStringDefaulted(R_TOKEN(link)) ); + if (!rPath.isEmpty()) + { + Reference 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.getStringDefaulted(R_TOKEN(link))); + 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.getStringDefaulted( XML_uri ) ); + 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(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.getStringDefaulted( R_TOKEN( id )) ); + 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.getStringDefaulted( R_TOKEN( dm ) ); + msLo = rAttribs.getStringDefaulted( R_TOKEN( lo ) ); + msQs = rAttribs.getStringDefaulted( R_TOKEN( qs ) ); + msCs = rAttribs.getStringDefaulted( R_TOKEN( cs ) ); + 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.getStringDefaulted( R_TOKEN( id )) ); + } + 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 0000000000..022359562e --- /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 + +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 0000000000..48a7465bd1 --- /dev/null +++ b/oox/source/drawingml/hyperlinkcontext.cxx @@ -0,0 +1,168 @@ +/* -*- 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 + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +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.getStringDefaulted( R_TOKEN( id ) ); + 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.getStringDefaulted( R_TOKEN( tooltip ) ); + if ( !sTooltip.isEmpty() ) + maProperties.setProperty(PROP_Representation, sTooltip); + OUString sFrame = rAttribs.getStringDefaulted( R_TOKEN( tgtFrame ) ); + if( !sFrame.isEmpty() ) + maProperties.setProperty(PROP_TargetFrame, sFrame); + OUString aAction = rAttribs.getStringDefaulted( XML_action ); + 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 constexpr OUString sPPAction( u"ppaction://"_ustr ); + 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 constexpr OUString sJump( u"jump="_ustr ); + 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 = "#" + URLResId(STR_SLIDE_NAME) + " " + 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 0000000000..6c7fe6c80a --- /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 + +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 0000000000..d52bf07498 --- /dev/null +++ b/oox/source/drawingml/lineproperties.cxx @@ -0,0 +1,567 @@ +/* -*- 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 + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +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", "Sparse Dash" 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.value_or( 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.value_or( XML_med ) ); + sal_Int32 nWidth = lclGetArrowSize( rArrowProps.moArrowWidth.value_or( XML_med ) ); + + sal_Int32 nNameIndex = nWidth * 3 + nLength + 1; + aBuffer.append( " " + OUString::number( nNameIndex )); + if (bIsArrow) + { + // Arrow marker form depends also on line width + aBuffer.append(" " + OUString::number(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( 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.value() & sal_Int32(0xFFFF0000))==0); + switch( rArrowProps.moArrowType.value() ) + { + 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 ) +{ + assignIfUsed( moArrowType, rSourceProps.moArrowType ); + assignIfUsed( moArrowWidth, rSourceProps.moArrowWidth ); + assignIfUsed( moArrowLength, 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; + assignIfUsed( moLineWidth, rSourceProps.moLineWidth ); + assignIfUsed( moPresetDash, rSourceProps.moPresetDash ); + assignIfUsed( moLineCompound, rSourceProps.moLineCompound ); + assignIfUsed( moLineCap, rSourceProps.moLineCap ); + assignIfUsed( moLineJoint, rSourceProps.moLineJoint ); +} + +void LineProperties::pushToPropMap( ShapePropertyMap& rPropMap, + const GraphicHelper& rGraphicHelper, ::Color nPhClr, sal_Int16 nPhClrTheme) const +{ + // line fill type must exist, otherwise ignore other properties + if( !maLineFill.moFillType.has_value() ) + return; + + // line style (our core only supports none and solid) + drawing::LineStyle eLineStyle = (maLineFill.moFillType.value() == 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_value() ? lclGetLineCap( moLineCap.value() ) : LineCap_BUTT; + if( moLineCap.has_value() ) + 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.has_value() && moPresetDash.value() != XML_solid) || !maCustomDash.empty()) ) + { + LineDash aLineDash; + aLineDash.Style = lclGetDashStyle( moLineCap.value_or( XML_flat ) ); + + if(moPresetDash.has_value() && moPresetDash.value() != XML_solid) + lclConvertPresetDash(aLineDash, moPresetDash.value_or(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_value() ) + rPropMap.setProperty( ShapeProperty::LineJoint, lclGetLineJoint( moLineJoint.value() ) ); + + // line color and transparence + Color aLineColor = maLineFill.getBestSolidColor(); + if (aLineColor.isUsed()) + { + ::Color aColor = aLineColor.getColor(rGraphicHelper, nPhClr); + rPropMap.setProperty(ShapeProperty::LineColor, aColor); + if( aLineColor.hasTransparency() ) + rPropMap.setProperty( ShapeProperty::LineTransparency, aLineColor.getTransparency() ); + + model::ComplexColor aComplexColor; + + if (aColor == nPhClr) + { + aComplexColor.setThemeColor(model::convertToThemeColorType(nPhClrTheme)); + rPropMap.setProperty(PROP_LineComplexColor, model::color::createXComplexColor(aComplexColor)); + } + else + { + aComplexColor.setThemeColor(model::convertToThemeColorType(aLineColor.getSchemeColorIndex())); + if (aLineColor.getLumMod() != 10000) + aComplexColor.addTransformation({model::TransformationType::LumMod, aLineColor.getLumMod()}); + if (aLineColor.getLumOff() != 0) + aComplexColor.addTransformation({model::TransformationType::LumOff, aLineColor.getLumOff()}); + if (aLineColor.getTintOrShade() > 0) + aComplexColor.addTransformation({model::TransformationType::Tint, aLineColor.getTintOrShade()}); + if (aLineColor.getTintOrShade() < 0) + { + sal_Int16 nShade = o3tl::narrowing(-aLineColor.getTintOrShade()); + aComplexColor.addTransformation({model::TransformationType::Shade, nShade}); + } + rPropMap.setProperty(PROP_LineComplexColor, model::color::createXComplexColor(aComplexColor)); + } + } + + // 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 + if (maLineFill.moFillType.value() == XML_noFill) + return drawing::LineStyle_NONE; + if ((moPresetDash.has_value() && moPresetDash.value() != XML_solid) || + (!moPresetDash && !maCustomDash.empty())) + return drawing::LineStyle_DASH; + return drawing::LineStyle_SOLID; +} + +drawing::LineCap LineProperties::getLineCap() const +{ + if( moLineCap.has_value() ) + return lclGetLineCap( moLineCap.value() ); + + return drawing::LineCap_BUTT; +} + +drawing::LineJoint LineProperties::getLineJoint() const +{ + if( moLineJoint.has_value() ) + return lclGetLineJoint( moLineJoint.value() ); + + return drawing::LineJoint_NONE; +} + +sal_Int32 LineProperties::getLineWidth() const +{ + return convertEmuToHmm( moLineWidth.value_or( 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 0000000000..dbcae7caf5 --- /dev/null +++ b/oox/source/drawingml/linepropertiescontext.cxx @@ -0,0 +1,275 @@ +/* -*- 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 +#include +#include +#include +#include +#include +#include + +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, model::LineStyle* pLineStyle) noexcept + : ContextHandler2(rParent) + , mpLineStyle(pLineStyle) + , mrLineProperties(rLineProperties) +{ + mrLineProperties.moLineWidth = rAttribs.getInteger( XML_w ); + mrLineProperties.moLineCompound = rAttribs.getToken( XML_cmpd ); + mrLineProperties.moLineCap = rAttribs.getToken( XML_cap ); + + if (mpLineStyle) + { + mpLineStyle->mnWidth = rAttribs.getInteger(XML_w, 0); + + switch (rAttribs.getToken(XML_cap, XML_TOKEN_INVALID)) + { + case XML_rnd: mpLineStyle->meCapType = model::CapType::Round; break; + case XML_sq: mpLineStyle->meCapType = model::CapType::Square; break; + case XML_flat: mpLineStyle->meCapType = model::CapType::Flat; break; + default: + mpLineStyle->meCapType = model::CapType::Unset; break; + } + + switch (rAttribs.getToken(XML_cmpd, XML_TOKEN_INVALID)) + { + case XML_sng: mpLineStyle->meCompoundLineType = model::CompoundLineType::Single; break; + case XML_dbl: mpLineStyle->meCompoundLineType = model::CompoundLineType::Double; break; + case XML_thickThin: mpLineStyle->meCompoundLineType = model::CompoundLineType::ThickThin_Double; break; + case XML_thinThick: mpLineStyle->meCompoundLineType = model::CompoundLineType::ThinThick_Double; break; + case XML_tri: mpLineStyle->meCompoundLineType = model::CompoundLineType::Triple; break; + default: + mpLineStyle->meCompoundLineType = model::CompoundLineType::Unset; break; + } + + switch (rAttribs.getToken(XML_algn, XML_TOKEN_INVALID)) + { + case XML_ctr: mpLineStyle->mePenAlignment = model::PenAlignmentType::Center; break; + case XML_in: mpLineStyle->mePenAlignment = model::PenAlignmentType::Inset; break; + default: + mpLineStyle->mePenAlignment = model::PenAlignmentType::Unset; break; + } + } +} + +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 ): + { + model::FillStyle* pFillStyle = nullptr; + if (mpLineStyle) + { + pFillStyle = &mpLineStyle->maLineFillStyle; + } + return FillPropertiesContext::createFillContext(*this, nElement, rAttribs, mrLineProperties.maLineFill, pFillStyle); + } + break; + + // LineDashPropertiesGroup + case A_TOKEN( prstDash ): // CT_PresetLineDashProperties + { + mrLineProperties.moPresetDash = rAttribs.getToken( XML_val ); + + if (mpLineStyle) + { + auto& rLineDash = mpLineStyle->maLineDash; + switch (rAttribs.getToken(XML_val, XML_TOKEN_INVALID)) + { + case XML_solid: rLineDash.mePresetType = model::PresetDashType::Solid; break; + case XML_dot: rLineDash.mePresetType = model::PresetDashType::Dot; break; + case XML_dash: rLineDash.mePresetType = model::PresetDashType::Dash; break; + case XML_lgDash: rLineDash.mePresetType = model::PresetDashType::LargeDash; break; + case XML_dashDot: rLineDash.mePresetType = model::PresetDashType::DashDot; break; + case XML_lgDashDot: rLineDash.mePresetType = model::PresetDashType::LargeDashDot; break; + case XML_lgDashDotDot: rLineDash.mePresetType = model::PresetDashType::LargeDashDotDot; break; + case XML_sysDash: rLineDash.mePresetType = model::PresetDashType::SystemDash; break; + case XML_sysDot: rLineDash.mePresetType = model::PresetDashType::SystemDot; break; + case XML_sysDashDot: rLineDash.mePresetType = model::PresetDashType::SystemDashDot; break; + case XML_sysDashDotDot: rLineDash.mePresetType = model::PresetDashType::SystemDashDotDot; break; + default: + rLineDash.mePresetType = model::PresetDashType::Unset; break; + } + } + } + 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 nDashLength = 0; + aStr = rAttribs.getStringDefaulted( XML_d); + if ( aStr.endsWith("%") ) + { + // Ends with a '%' + aStr = aStr.copy(0, aStr.getLength() - 1); + aStr = aStr.trim(); + nDashLength = aStr.toInt32(); + + // Convert to 1000th of a percent + nDashLength *= 1000; + } + else + { + nDashLength = rAttribs.getInteger( XML_d, 0 ); + } + + sal_Int32 nSpaceLength = 0; + aStr = rAttribs.getStringDefaulted( XML_sp); + if ( aStr.endsWith("%") ) + { + // Ends with a '%' + aStr = aStr.copy(0, aStr.getLength() - 1); + aStr = aStr.trim(); + nSpaceLength = aStr.toInt32(); + + // Convert to 1000th of a percent + nSpaceLength *= 1000; + } + else + { + nSpaceLength = rAttribs.getInteger( XML_sp, 0 ); + } + + mrLineProperties.maCustomDash.emplace_back( nDashLength, nSpaceLength ); + + if (mpLineStyle) + { + mpLineStyle->maLineDash.maCustomList.push_back({ nDashLength, nSpaceLength }); + } + } + break; + + // LineJoinPropertiesGroup + case A_TOKEN( round ): + case A_TOKEN( bevel ): + case A_TOKEN( miter ): + { + sal_Int32 nToken = getBaseToken(nElement); + mrLineProperties.moLineJoint = nToken; + + if (mpLineStyle) + { + switch (nToken) + { + case XML_round: mpLineStyle->maLineJoin.meType = model::LineJoinType::Round; break; + case XML_bevel: mpLineStyle->maLineJoin.meType = model::LineJoinType::Bevel; break; + case XML_miter: mpLineStyle->maLineJoin.meType = model::LineJoinType::Miter; break; + default: + mpLineStyle->maLineJoin.meType = model::LineJoinType::Miter; + } + if (nToken == XML_miter) + { + sal_Int32 nMiterLimit = rAttribs.getInteger(XML_lim, 0); + mpLineStyle->maLineJoin.mnMiterLimit = nMiterLimit; + } + } + } + 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 ); + + if (mpLineStyle) + { + model::LineEndType eLineEndType = model::LineEndType::None; + switch (rAttribs.getToken(XML_type, XML_none)) + { + case XML_triangle: eLineEndType = model::LineEndType::Triangle; break; + case XML_stealth: eLineEndType = model::LineEndType::Stealth; break; + case XML_diamond: eLineEndType = model::LineEndType::Diamond; break; + case XML_oval: eLineEndType = model::LineEndType::Oval; break; + case XML_arrow: eLineEndType = model::LineEndType::Arrow; break; + default: + case XML_none: eLineEndType = model::LineEndType::None; break; + } + + model::LineEndLength eLineEndLength = model::LineEndLength::Unset; + switch (rAttribs.getToken(XML_len, XML_TOKEN_INVALID)) + { + case XML_sm: eLineEndLength = model::LineEndLength::Small; break; + case XML_med: eLineEndLength = model::LineEndLength::Medium; break; + case XML_lg: eLineEndLength = model::LineEndLength::Large; break; + default: + break; + } + + model::LineEndWidth eLineEndWidth = model::LineEndWidth::Unset; + switch (rAttribs.getToken(XML_w, XML_TOKEN_INVALID)) + { + case XML_sm: eLineEndWidth = model::LineEndWidth::Small; break; + case XML_med: eLineEndWidth = model::LineEndWidth::Medium; break; + case XML_lg: eLineEndWidth = model::LineEndWidth::Large; break; + default: + break; + } + + if (nElement == A_TOKEN(tailEnd)) + { + mpLineStyle->maTailEnd.meType = eLineEndType; + mpLineStyle->maTailEnd.meLength = eLineEndLength; + mpLineStyle->maTailEnd.meWidth = eLineEndWidth; + } + else if (nElement == A_TOKEN(headEnd)) + { + mpLineStyle->maHeadEnd.meType = eLineEndType; + mpLineStyle->maHeadEnd.meLength = eLineEndLength; + mpLineStyle->maHeadEnd.meWidth = eLineEndWidth; + } + } + } + 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 0000000000..93d2c8ee41 --- /dev/null +++ b/oox/source/drawingml/misccontexts.cxx @@ -0,0 +1,703 @@ +/* -*- 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 +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +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, model::SolidFill* pSolidFill) + : ColorContext(rParent, rFillProps.maFillColor, pSolidFill ? &pSolidFill->maColor : nullptr) +{ +} + +SolidFillContext::~SolidFillContext() +{} + +GradientFillContext::GradientFillContext(ContextHandler2Helper const & rParent, + const AttributeList& rAttribs, GradientFillProperties& rGradientProps, model::GradientFill* pGradientFill) + : ContextHandler2(rParent) + , mpGradientFill(pGradientFill) + , mrGradientProps(rGradientProps) +{ + auto oRotateWithShape = rAttribs.getBool(XML_rotWithShape); + mrGradientProps.moShadeFlip = rAttribs.getToken( XML_flip ); + mrGradientProps.moRotateWithShape = oRotateWithShape; + if (mpGradientFill && oRotateWithShape.has_value()) + mpGradientFill->mbRotateWithShape = *oRotateWithShape; +} + +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(rAttribs.getDouble(XML_pos, 0.0) / 100000.0, 0.0, 1.0); + auto aElement = mrGradientProps.maGradientStops.emplace(fPosition, Color()); + + model::ComplexColor* pComplexColor = nullptr; + if (mpGradientFill) + { + model::GradientStop& rStop = mpGradientFill->maGradientStops.emplace_back(); + rStop.mfPosition = fPosition; + pComplexColor = &rStop.maColor; + } + + return new ColorContext(*this, aElement->second, pComplexColor); + } + break; + + case A_TOKEN( lin ): + { + mrGradientProps.moShadeAngle = rAttribs.getInteger(XML_ang); + mrGradientProps.moShadeScaled = rAttribs.getBool(XML_scaled); + + if (mpGradientFill) + { + mpGradientFill->meGradientType = model::GradientType::Linear; + mpGradientFill->maLinearGradient.mnAngle = rAttribs.getInteger(XML_ang, 0); + mpGradientFill->maLinearGradient.mbScaled = rAttribs.getBool(XML_scaled, false); + } + } + break; + + case A_TOKEN( path ): + { + // always set a path type, this disables linear gradient in conversion + sal_Int32 nToken = rAttribs.getToken(XML_path, XML_rect); + mrGradientProps.moGradientPath = nToken; + if (mpGradientFill) + { + switch (nToken) + { + case XML_rect: + mpGradientFill->meGradientType = model::GradientType::Rectangle; + break; + case XML_circle: + mpGradientFill->meGradientType = model::GradientType::Circle; + break; + case XML_shape: + mpGradientFill->meGradientType = model::GradientType::Shape; + break; + default: + break; + } + } + return this; // for fillToRect element + } + case A_TOKEN( fillToRect ): + { + mrGradientProps.moFillToRect = GetRelativeRect( rAttribs.getFastAttributeList() ); + if (mpGradientFill) + fillRelativeRectangle(mpGradientFill->maFillToRectangle, rAttribs.getFastAttributeList()); + } + break; + + case A_TOKEN( tileRect ): + mrGradientProps.moTileRect = GetRelativeRect(rAttribs.getFastAttributeList()); + if (mpGradientFill) + fillRelativeRectangle(mpGradientFill->maTileRectangle, rAttribs.getFastAttributeList()); + break; + } + return nullptr; +} + + +namespace +{ + +constexpr frozen::unordered_map constPatternPresetMap +{ + { XML_pct5, model::PatternPreset::Percent_5 }, + { XML_pct10, model::PatternPreset::Percent_10 }, + { XML_pct20, model::PatternPreset::Percent_20 }, + { XML_pct25, model::PatternPreset::Percent_25 }, + { XML_pct30, model::PatternPreset::Percent_30 }, + { XML_pct40, model::PatternPreset::Percent_40 }, + { XML_pct50, model::PatternPreset::Percent_50 }, + { XML_pct60, model::PatternPreset::Percent_60 }, + { XML_pct70, model::PatternPreset::Percent_70 }, + { XML_pct75, model::PatternPreset::Percent_75 }, + { XML_pct80, model::PatternPreset::Percent_80 }, + { XML_pct90, model::PatternPreset::Percent_90 }, + { XML_horz, model::PatternPreset::Horizontal }, + { XML_vert, model::PatternPreset::Vertical }, + { XML_ltHorz, model::PatternPreset::LightHorizontal }, + { XML_ltVert, model::PatternPreset::LightVertical }, + { XML_dkHorz, model::PatternPreset::DarkHorizontal }, + { XML_dkVert, model::PatternPreset::DarkVertical }, + { XML_narHorz, model::PatternPreset::NarrowHorizontal }, + { XML_narVert, model::PatternPreset::NarrowVertical }, + { XML_dashHorz, model::PatternPreset::DashedHorizontal }, + { XML_dashVert, model::PatternPreset::DashedVertical }, + { XML_cross, model::PatternPreset::Cross }, + { XML_dnDiag, model::PatternPreset::DownwardDiagonal }, + { XML_upDiag, model::PatternPreset::UpwardDiagonal }, + { XML_ltDnDiag, model::PatternPreset::LightDownwardDiagonal }, + { XML_ltUpDiag, model::PatternPreset::LightUpwardDiagonal }, + { XML_dkDnDiag, model::PatternPreset::DarkDownwardDiagonal }, + { XML_dkUpDiag, model::PatternPreset::DarkUpwardDiagonal }, + { XML_wdDnDiag, model::PatternPreset::WideDownwardDiagonal }, + { XML_wdUpDiag, model::PatternPreset::WideUpwardDiagonal }, + { XML_dashDnDiag, model::PatternPreset::DashedDownwardDiagonal }, + { XML_dashUpDiag, model::PatternPreset::DashedUpwardDiagonal }, + { XML_diagCross, model::PatternPreset::DiagonalCross }, + { XML_smCheck, model::PatternPreset::SmallCheckerBoard }, + { XML_lgCheck, model::PatternPreset::LargeCheckerBoard }, + { XML_smGrid, model::PatternPreset::SmallGrid }, + { XML_lgGrid, model::PatternPreset::LargeGrid }, + { XML_dotGrid, model::PatternPreset::DottedGrid }, + { XML_smConfetti, model::PatternPreset::SmallConfetti }, + { XML_lgConfetti, model::PatternPreset::LargeConfetti }, + { XML_horzBrick, model::PatternPreset::HorizontalBrick }, + { XML_diagBrick, model::PatternPreset::DiagonalBrick }, + { XML_solidDmnd, model::PatternPreset::SolidDiamond }, + { XML_openDmnd, model::PatternPreset::OpenDiamond }, + { XML_dotDmnd, model::PatternPreset::DottedDiamond }, + { XML_plaid, model::PatternPreset::Plaid }, + { XML_sphere, model::PatternPreset::Sphere }, + { XML_weave, model::PatternPreset::Weave }, + { XML_divot, model::PatternPreset::Divot }, + { XML_shingle, model::PatternPreset::Shingle }, + { XML_wave, model::PatternPreset::Wave }, + { XML_trellis, model::PatternPreset::Trellis }, + { XML_zigZag, model::PatternPreset::ZigZag } +}; + +} // end anonymous namespace +PatternFillContext::PatternFillContext(ContextHandler2Helper const & rParent, + const AttributeList& rAttribs, PatternFillProperties& rPatternProps, model::PatternFill* pPatternFill) + : ContextHandler2(rParent) + , mpPatternFill(pPatternFill) + , mrPatternProps(rPatternProps) +{ + mrPatternProps.moPattPreset = rAttribs.getToken(XML_prst); + + if (mpPatternFill) + { + sal_Int32 nToken = rAttribs.getToken(XML_prst, XML_TOKEN_INVALID); + + auto aIterator = constPatternPresetMap.find(nToken); + if (aIterator != constPatternPresetMap.end()) + { + auto const& aPair = *aIterator; + model::PatternPreset ePatternPreset = aPair.second; + mpPatternFill->mePatternPreset = ePatternPreset; + } + } +} + +ContextHandlerRef PatternFillContext::onCreateContext( + sal_Int32 nElement, const AttributeList& ) +{ + model::ComplexColor* pComplexColor = nullptr; + switch( nElement ) + { + case A_TOKEN( bgClr ): + if (mpPatternFill) + pComplexColor = &mpPatternFill->maBackgroundColor; + return new ColorContext(*this, mrPatternProps.maPattBgColor, pComplexColor); + case A_TOKEN( fgClr ): + if (mpPatternFill) + pComplexColor = &mpPatternFill->maForegroundColor; + return new ColorContext(*this, mrPatternProps.maPattFgColor, pComplexColor); + } + return nullptr; +} + +ColorChangeContext::ColorChangeContext( ContextHandler2Helper const & rParent, + const AttributeList& rAttribs, BlipFillProperties& rBlipProps, model::BlipFill* pBlipFill) + : ContextHandler2(rParent) + , mpBlipFill(pBlipFill) + , mrBlipProps(rBlipProps) +{ + mrBlipProps.maColorChangeFrom.setUnused(); + mrBlipProps.maColorChangeTo.setUnused(); + mbUseAlpha = rAttribs.getBool( XML_useA, true ); + if (mpBlipFill) + { + auto& rEffect = mpBlipFill->maBlipEffects.emplace_back(); + rEffect.meType = model::BlipEffectType::ColorChange; + rEffect.mbUseAlpha = mbUseAlpha; + } +} + +ColorChangeContext::~ColorChangeContext() +{ + if( !mbUseAlpha ) + mrBlipProps.maColorChangeTo.clearTransparence(); +} + +ContextHandlerRef ColorChangeContext::onCreateContext( + sal_Int32 nElement, const AttributeList& ) +{ + model::ComplexColor* pComplexColor = nullptr; + switch (nElement) + { + case A_TOKEN(clrFrom): + if (mpBlipFill) + { + auto& rEffect = mpBlipFill->maBlipEffects.back(); + pComplexColor = &rEffect.getColorFrom(); + } + return new ColorContext(*this, mrBlipProps.maColorChangeFrom, pComplexColor); + case A_TOKEN(clrTo): + if (mpBlipFill) + { + auto& rEffect = mpBlipFill->maBlipEffects.back(); + pComplexColor = &rEffect.getColorTo(); + } + return new ColorContext(*this, mrBlipProps.maColorChangeTo, pComplexColor); + } + return nullptr; +} + +BlipContext::BlipContext(ContextHandler2Helper const & rParent, const AttributeList& rAttribs, + BlipFillProperties& rBlipProps, model::BlipFill* pBlipFill) + : ContextHandler2(rParent) + , mpBlipFill(pBlipFill) + , mrBlipProps(rBlipProps) +{ + if( rAttribs.hasAttribute( R_TOKEN( embed ) ) ) + { + // internal picture URL + OUString aFragmentPath = getFragmentPathFromRelId( rAttribs.getStringDefaulted( R_TOKEN( embed )) ); + if (!aFragmentPath.isEmpty()) + { + auto xGraphic = getFilter().getGraphicHelper().importEmbeddedGraphic(aFragmentPath); + mrBlipProps.mxFillGraphic = xGraphic; + if (mpBlipFill) + mpBlipFill->mxGraphic = xGraphic; + } + } + 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.getStringDefaulted( R_TOKEN( link )); + OUString aTargetLink = getFilter().getAbsoluteUrl( getRelations().getExternalTargetFromRelId( aRelId ) ); + GraphicExternalLink aLink(aTargetLink); + Graphic aGraphic(aLink); + auto xGraphic = aGraphic.GetXGraphic(); + mrBlipProps.mxFillGraphic = xGraphic; + if (mpBlipFill) + mpBlipFill->mxGraphic = xGraphic; + } +} + +ContextHandlerRef BlipContext::onCreateContext( + sal_Int32 nElement, const AttributeList& rAttribs ) +{ + switch( nElement ) + { + case A_TOKEN( biLevel ): + { + sal_Int32 nTreshold = rAttribs.getInteger(XML_thresh, 0); + + mrBlipProps.moBiLevelThreshold = nTreshold; + mrBlipProps.moColorEffect = getBaseToken(nElement); + + if (mpBlipFill) + { + auto& rEffect = mpBlipFill->maBlipEffects.emplace_back(); + rEffect.meType = model::BlipEffectType::BiLevel; + rEffect.mnThreshold = nTreshold; + } + } + break; + + case A_TOKEN( grayscl ): + { + mrBlipProps.moColorEffect = getBaseToken( nElement ); + if (mpBlipFill) + { + auto& rEffect = mpBlipFill->maBlipEffects.emplace_back(); + rEffect.meType = model::BlipEffectType::Grayscale; + } + } + break; + + case A_TOKEN( clrChange ): + { + return new ColorChangeContext(*this, rAttribs, mrBlipProps, mpBlipFill); + } + break; + case A_TOKEN( duotone ): + return new DuotoneContext( *this, mrBlipProps ); + + case A_TOKEN( extLst ): + return new BlipExtensionContext(*this, mrBlipProps, mpBlipFill); + + case A_TOKEN( lum ): + { + mrBlipProps.moBrightness = rAttribs.getInteger( XML_bright ); + mrBlipProps.moContrast = rAttribs.getInteger( XML_contrast ); + + if (mpBlipFill) + { + auto& rEffect = mpBlipFill->maBlipEffects.emplace_back(); + rEffect.meType = model::BlipEffectType::Luminance; + rEffect.mnBrightness = rAttribs.getInteger(XML_bright, 0); + rEffect.mnContrast = rAttribs.getInteger(XML_contrast, 0); + } + } + break; + case A_TOKEN( alphaModFix ): + { + mrBlipProps.moAlphaModFix = rAttribs.getInteger(XML_amt); + if (mpBlipFill) + { + auto& rEffect = mpBlipFill->maBlipEffects.emplace_back(); + rEffect.meType = model::BlipEffectType::AlphaModulateFixed; + rEffect.mnAmount = rAttribs.getInteger(XML_amt, 100 * 1000); + } + } + 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++], nullptr); + return nullptr; +} + +BlipFillContext::BlipFillContext(ContextHandler2Helper const & rParent, const AttributeList& rAttribs, + BlipFillProperties& rBlipProps, model::BlipFill* pBlipFill) + : ContextHandler2( rParent ) + , mpBlipFill(pBlipFill) + , mrBlipProps(rBlipProps) +{ + mrBlipProps.moRotateWithShape = rAttribs.getBool( XML_rotWithShape ); + if (mpBlipFill) + mpBlipFill->mbRotateWithShape = rAttribs.getBool(XML_rotWithShape, false); +} + +ContextHandlerRef BlipFillContext::onCreateContext( + sal_Int32 nElement, const AttributeList& rAttribs ) +{ + switch( nElement ) + { + case A_TOKEN( blip ): + return new BlipContext(*this, rAttribs, mrBlipProps, mpBlipFill); + + case A_TOKEN( srcRect ): + { + mrBlipProps.moClipRect = GetRelativeRect( rAttribs.getFastAttributeList() ); + + if (mpBlipFill) + fillRelativeRectangle(mpBlipFill->maClipRectangle, 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 ); + + if (mpBlipFill) + { + mpBlipFill->meMode = model::BitmapMode::Tile; + mpBlipFill->mnTileOffsetX = rAttribs.getInteger(XML_tx, 0); + mpBlipFill->mnTileOffsetY = rAttribs.getInteger(XML_ty, 0); + mpBlipFill->mnTileScaleX = rAttribs.getInteger(XML_sx, 0); + mpBlipFill->mnTileScaleY = rAttribs.getInteger(XML_sy, 0); + + switch (rAttribs.getToken(XML_flip, XML_none)) + { + case XML_x: mpBlipFill->meTileFlipMode = model::FlipMode::X; break; + case XML_y: mpBlipFill->meTileFlipMode = model::FlipMode::Y; break; + case XML_xy: mpBlipFill->meTileFlipMode = model::FlipMode::XY; break; + default: + case XML_none: mpBlipFill->meTileFlipMode = model::FlipMode::None; break; + } + mpBlipFill->meTileAlignment = convertToRectangleAlignment(rAttribs.getToken(XML_algn, XML_TOKEN_INVALID)); + } + } + break; + + case A_TOKEN( stretch ): + { + mrBlipProps.moBitmapMode = getBaseToken( nElement ); + if (mpBlipFill) + { + mpBlipFill->meMode = model::BitmapMode::Stretch; + } + return this; // for fillRect element + } + break; + + case A_TOKEN( fillRect ): + { + mrBlipProps.moFillRect = GetRelativeRect( rAttribs.getFastAttributeList() ); + + if (mpBlipFill) + fillRelativeRectangle(mpBlipFill->maFillRectangle, 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, &maFillStyle); +} + +ContextHandlerRef FillPropertiesContext::createFillContext( + ContextHandler2Helper const & rParent, sal_Int32 nElement, + const AttributeList& rAttribs, FillProperties& rFillProps, + model::FillStyle* pFillStyle) +{ + switch( nElement ) + { + case A_TOKEN( noFill ): + { + rFillProps.moFillType = getBaseToken(nElement); + if (pFillStyle) + { + pFillStyle->mpFill = std::make_shared(); + } + return nullptr; + } + case A_TOKEN( solidFill ): + { + rFillProps.moFillType = getBaseToken(nElement); + model::SolidFill* pSolidFill = nullptr; + if (pFillStyle) + { + pFillStyle->mpFill = std::make_shared(); + pSolidFill = static_cast(pFillStyle->mpFill.get()); + } + return new SolidFillContext(rParent, rFillProps, pSolidFill); + } + case A_TOKEN( gradFill ): + { + rFillProps.moFillType = getBaseToken(nElement); + model::GradientFill* pGradientFill = nullptr; + if (pFillStyle) + { + pFillStyle->mpFill = std::make_shared(); + pGradientFill = static_cast(pFillStyle->mpFill.get()); + } + return new GradientFillContext(rParent, rAttribs, rFillProps.maGradientProps, pGradientFill); + } + case A_TOKEN( pattFill ): + { + rFillProps.moFillType = getBaseToken( nElement ); + model::PatternFill* pPatternFill = nullptr; + if (pFillStyle) + { + auto pFill = std::make_shared(); + pPatternFill = pFill.get(); + pFillStyle->mpFill = pFill; + } + return new PatternFillContext(rParent, rAttribs, rFillProps.maPatternProps, pPatternFill); + } + case A_TOKEN( blipFill ): + { + rFillProps.moFillType = getBaseToken( nElement ); + model::BlipFill* pBlipFill = nullptr; + if (pFillStyle) + { + pFillStyle->mpFill = std::make_unique(); + pBlipFill = static_cast(pFillStyle->mpFill.get()); + } + return new BlipFillContext( rParent, rAttribs, rFillProps.maBlipProps, pBlipFill); + } + case A_TOKEN( grpFill ): + { + // TODO + rFillProps.moFillType = getBaseToken( nElement ); + return nullptr; + }; + } + 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, model::BlipFill* pBlipFill) + : ContextHandler2(rParent) + , mrBlipProps(rBlipProps) + , mpBlipFill(pBlipFill) +{ +} + +BlipExtensionContext::~BlipExtensionContext() +{ +} + +ContextHandlerRef BlipExtensionContext::onCreateContext(sal_Int32 nElement, const AttributeList& rAttribs) +{ + switch( nElement ) + { + case A_TOKEN(ext): + return new BlipExtensionContext(*this, mrBlipProps, mpBlipFill); + + case OOX_TOKEN(a14, imgProps): + return new ArtisticEffectContext(*this, mrBlipProps.maEffect); + + // Import the SVG Blip + case OOX_TOKEN(asvg, svgBlip): + { + if (rAttribs.hasAttribute(R_TOKEN(embed))) + { + OUString aFragmentPath = getFragmentPathFromRelId(rAttribs.getStringDefaulted(R_TOKEN(embed))); + if (!aFragmentPath.isEmpty()) + { + // Read the graphic from the fragment path + auto xGraphic = getFilter().getGraphicHelper().importEmbeddedGraphic(aFragmentPath); + + // Overwrite the fill graphic with the one contining SVG + mrBlipProps.mxFillGraphic = xGraphic; + if (mpBlipFill) + mpBlipFill->mxGraphic = xGraphic; + } + } + // TODO - link + } + break; + } + 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.getStringDefaulted( R_TOKEN( embed )) ); + 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 0000000000..bdb30090eb --- /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 +#include +#include +#include + +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 0000000000..fd2807f9d1 --- /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 +#include +#include +#include +#include +#include + +namespace +{ +typedef std::unordered_map + 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(std::u16string_view rMsoType) +{ + static const PresetGeometryHashMap s_HashMap = []() { + PresetGeometryHashMap aH; + for (const auto& item : pPresetGeometryNameArray) + aH[item.pMsoName] = item.pFontworkType; + return aH; + }(); + const char* pRetValue = ""; + size_t i, nLen = rMsoType.size(); + std::unique_ptr pBuf(new char[nLen + 1]); + for (i = 0; i < nLen; i++) + pBuf[i] = static_cast(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(std::u16string_view rFontworkType) +{ + static const PresetGeometryHashMap s_HashMapInv = []() { + PresetGeometryHashMap aHInv; + for (const auto& item : pPresetGeometryNameArray) + aHInv[item.pFontworkType] = item.pMsoName; + return aHInv; + }(); + const char* pRetValue = ""; + size_t i, nLen = rFontworkType.size(); + std::unique_ptr pBuf(new char[nLen + 1]); + for (i = 0; i < nLen; i++) + pBuf[i] = static_cast(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 0000000000..10b4fbff60 --- /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 +#include +#include +#include +#include + +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 = aProps; + else + mr3DProperties.maBottomBevelProperties = 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 = aProps; + else + mr3DProperties.maBottomBevelProperties = 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 0000000000..c42a9f7820 --- /dev/null +++ b/oox/source/drawingml/shape.cxx @@ -0,0 +1,2486 @@ +/* -*- 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 + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "effectproperties.hxx" +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "diagram/datamodel.hxx" +#include "diagram/diagramhelper.hxx" + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +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() ) +, mpShapeRefLinePropPtr( std::make_shared() ) +, mpFillPropertiesPtr( std::make_shared() ) +, mpShapeRefFillPropPtr( std::make_shared() ) +, mpGraphicPropertiesPtr( std::make_shared() ) +, mpCustomShapePropertiesPtr( std::make_shared() ) +, mp3DPropertiesPtr( std::make_shared() ) +, mpEffectPropertiesPtr( std::make_shared() ) +, mpShapeRefEffectPropPtr( std::make_shared() ) +, mpMasterTextListStyle( std::make_shared() ) +, mnSubType( 0 ) +, meFrameType( FRAMETYPE_GENERIC ) +, mnRotation( 0 ) +, mnDiagramRotation( 0 ) +, mbFlipH( false ) +, mbFlipV( false ) +, mbHidden( false ) +, mbHiddenMasterShape( false ) +, mbLocked( false ) +, mbWPGChild(false) +, mbLockedCanvas( false ) +, mbWordprocessingCanvas(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 ) +, mbWordprocessingCanvas(pSourceShape->mbWordprocessingCanvas) +, 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(SdrObject::getSdrObjectFromXShape(mxShape)); + + if(pAnchorObj) + { + 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(); + 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(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( 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 (mbWordprocessingCanvas && !mbWPGChild) + { + // This is a drawing canvas. In case the canvas has no fill and no stroke, Word does + // not render shadow or glow, even if it is set for the canvas. Thus we disable shadow + // and glow in this case for the ersatz background shape of the drawing canvas. + try + { + oox::drawingml::ShapePtr pBgShape = getChildren().front(); + const Reference& xBgShape = pBgShape->getXShape(); + Reference xBgProps(xBgShape, uno::UNO_QUERY); + drawing::FillStyle eFillStyle = drawing::FillStyle_NONE; + xBgProps->getPropertyValue("FillStyle") >>= eFillStyle; + drawing::LineStyle eLineStyle = drawing::LineStyle_NONE; + xBgProps->getPropertyValue("LineStyle") >>= eLineStyle; + if (eFillStyle == drawing::FillStyle_NONE + && eLineStyle == drawing::LineStyle_NONE) + { + xBgProps->setPropertyValue(UNO_NAME_SHADOW, uno::Any(false)); + xBgProps->setPropertyValue(u"GlowEffectRadius"_ustr, uno::Any(sal_Int32(0))); + } + } + catch (const Exception&) + { + TOOLS_WARN_EXCEPTION("oox.drawingml", "Shape::addShape mbWordprocessingCanvas"); + } + } + + 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 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)); + } + + // tdf#145147 Set the Hyperlink property to the child wps shape. + if (getShapeProperties().hasProperty(PROP_URL)) try + { + uno::Any aAny = getShapeProperties().getProperty(PROP_URL); + OUString sUrl = aAny.get(); + if (!sUrl.isEmpty()) + xChildWPSProperties->setPropertyValue(UNO_NAME_HYPERLINK, aAny); + } + catch (const Exception&) + { + } + } + + 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(&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::setWordprocessingCanvas(bool bWordprocessingCanvas) +{ + mbWordprocessingCanvas = bWordprocessingCanvas; +} + +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( *rReferencedShape.mpTextBody ); + else + mpTextBody.reset(); + maShapeProperties = rReferencedShape.maShapeProperties; + mpShapeRefLinePropPtr = std::make_shared( rReferencedShape.getActualLineProperties(nullptr) ); + mpShapeRefFillPropPtr = std::make_shared( rReferencedShape.getActualFillProperties(nullptr, nullptr) ); + mpCustomShapePropertiesPtr = std::make_shared( *rReferencedShape.mpCustomShapePropertiesPtr ); + mpTablePropertiesPtr = rReferencedShape.mpTablePropertiesPtr ? std::make_shared( *rReferencedShape.mpTablePropertiesPtr ) : nullptr; + mpShapeRefEffectPropPtr = std::make_shared( rReferencedShape.getActualEffectProperties(nullptr) ); + mpMasterTextListStyle = std::make_shared( *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 const& xShape) + : m_xLockable(xShape, UNO_QUERY) + { + if (m_xLockable.is()) { + m_xLockable->addActionLock(); + } + } + ~ActionLockGuard() + { + if (m_xLockable.is()) { + m_xLockable->removeActionLock(); + } + } +private: + Reference 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 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; +} + +// LO does not interpret properties in styles belonging to the text content of a FontWork shape, +// but only those in the shape style. This method copies properties from the text content styles to +// the shape style. +static void lcl_copyCharPropsToShape(const uno::Reference& xShape, + const TextBodyPtr& pTextBody, + const ::oox::core::XmlFilterBase& rFilter) +{ + if (!xShape.is() || !pTextBody) + return; + + Reference xSet(xShape, UNO_QUERY); + if (!xSet.is()) + return; + + // Content stretches or scales to given width and height, thus disable autogrow. + xSet->setPropertyValue(UNO_NAME_TEXT_AUTOGROWHEIGHT, uno::Any(false)); + xSet->setPropertyValue(UNO_NAME_TEXT_AUTOGROWWIDTH, uno::Any(false)); + + // LibreOffice is not able (as of Nov 2022) to use different styles for the paragraphs or + // characters in FontWork, since that was not allowed in old binary WordArt. We use the + // properties of the first non empty paragraph for now. + const TextParagraphVector& rParagraphs = pTextBody->getParagraphs(); + auto aParaIt = std::find_if_not(rParagraphs.cbegin(), rParagraphs.cend(), + [](const std::shared_ptr pParagraph) { + return pParagraph->getRuns().empty(); + }); + if (aParaIt != rParagraphs.cend()) + { + std::shared_ptr pParagraph = *aParaIt; + const TextRunVector& rRuns = pParagraph->getRuns(); + auto aRunIt = std::find_if_not( + rRuns.cbegin(), rRuns.cend(), + [](const std::shared_ptr pRun) { return pRun->getText().isEmpty(); }); + if (aRunIt != rRuns.cend()) + { + std::shared_ptr pRun = *aRunIt; + TextCharacterProperties& rCharProps = pRun->getTextCharacterProperties(); + + // set language + if (rCharProps.moLang.has_value() && !rCharProps.moLang.value().isEmpty()) + { + LanguageTag aTag(rCharProps.moLang.value()); + css::lang::Locale aLocale(aTag.getLocale(false)); + switch (MsLangId::getScriptType(aTag.getLanguageType())) + { + case css::i18n::ScriptType::LATIN: + xSet->setPropertyValue(u"CharLocale"_ustr, uno::Any(aLocale)); + break; + case css::i18n::ScriptType::ASIAN: + xSet->setPropertyValue(u"CharLocaleAsian"_ustr, uno::Any(aLocale)); + break; + case css::i18n::ScriptType::COMPLEX: + xSet->setPropertyValue(u"CharLocaleComplex"_ustr, uno::Any(aLocale)); + break; + default:; + } + } + + // Font Weight, Posture, Height + if (rCharProps.moBold.has_value() && rCharProps.moBold.value()) + { + xSet->setPropertyValue(UNO_NAME_CHAR_WEIGHT, uno::Any(css::awt::FontWeight::BOLD)); + } + if (rCharProps.moItalic.has_value() && rCharProps.moItalic.value()) + { + xSet->setPropertyValue(UNO_NAME_CHAR_POSTURE, + uno::Any(css::awt::FontSlant::FontSlant_ITALIC)); + } + if (rCharProps.moHeight.has_value()) + { + sal_Int32 nHeight = rCharProps.moHeight.value() / 100; + xSet->setPropertyValue(UNO_NAME_CHAR_HEIGHT, uno::Any(nHeight)); + } + + // Put theme fonts into shape properties + OUString sFontName; + sal_Int16 nFontPitch = 0; + sal_Int16 nFontFamily = 0; + bool bRet(false); + if (const Theme* pTheme = rFilter.getCurrentTheme()) + { + // minor Latin + if (const TextFont* pFont = pTheme->resolveFont(u"+mn-lt")) + { + bRet = pFont->getFontData(sFontName, nFontPitch, nFontFamily, nullptr, rFilter); + if (bRet) + { + xSet->setPropertyValue(u"CharFontName"_ustr, uno::Any(sFontName)); + xSet->setPropertyValue(u"CharFontPitch"_ustr, uno::Any(nFontPitch)); + xSet->setPropertyValue(u"CharFontFamily"_ustr, uno::Any(nFontFamily)); + } + } + // minor Asian + if (const TextFont* pFont = pTheme->resolveFont(u"+mn-ea")) + { + bRet = pFont->getFontData(sFontName, nFontPitch, nFontFamily, nullptr, rFilter); + if (bRet) + { + xSet->setPropertyValue(u"CharFontNameAsian"_ustr, uno::Any(sFontName)); + xSet->setPropertyValue(u"CharFontPitchAsian"_ustr, uno::Any(nFontPitch)); + xSet->setPropertyValue(u"CharFontFamilyAsian"_ustr, uno::Any(nFontFamily)); + } + } + // minor Complex + if (const TextFont* pFont = pTheme->resolveFont(u"+mn-cs")) + { + bRet = pFont->getFontData(sFontName, nFontPitch, nFontFamily, nullptr, rFilter); + if (bRet) + { + xSet->setPropertyValue(u"CharFontNameComplex"_ustr, uno::Any(sFontName)); + xSet->setPropertyValue(u"CharFontPitchComplex"_ustr, uno::Any(nFontPitch)); + xSet->setPropertyValue(u"CharFontFamilyComplex"_ustr, uno::Any(nFontFamily)); + } + } + } + + // Replace theme fonts with formatting at run if any. ToDo: Inspect paragraph too? + // Latin + bRet = rCharProps.maLatinFont.getFontData(sFontName, nFontPitch, nFontFamily, nullptr, rFilter); + if (!bRet) + // In case there is no direct font, try to look it up as a theme reference. + bRet = rCharProps.maLatinThemeFont.getFontData(sFontName, nFontPitch, nFontFamily, nullptr, + rFilter); + + if (bRet) + { + xSet->setPropertyValue(u"CharFontName"_ustr, uno::Any(sFontName)); + xSet->setPropertyValue(u"CharFontPitch"_ustr, uno::Any(nFontPitch)); + xSet->setPropertyValue(u"CharFontFamily"_ustr, uno::Any(nFontFamily)); + } + // Asian + bRet = rCharProps.maAsianFont.getFontData(sFontName, nFontPitch, nFontFamily, nullptr, rFilter); + if (!bRet) + // In case there is no direct font, try to look it up as a theme reference. + bRet = rCharProps.maAsianThemeFont.getFontData(sFontName, nFontPitch, nFontFamily, nullptr, + rFilter); + if (bRet) + { + xSet->setPropertyValue(u"CharFontNameAsian"_ustr, uno::Any(sFontName)); + xSet->setPropertyValue(u"CharFontPitchAsian"_ustr, uno::Any(nFontPitch)); + xSet->setPropertyValue(u"CharFontFamilyAsian"_ustr, uno::Any(nFontFamily)); + } + // Complex + bRet + = rCharProps.maComplexFont.getFontData(sFontName, nFontPitch, nFontFamily, nullptr, rFilter); + if (!bRet) + // In case there is no direct font, try to look it up as a theme reference. + bRet = rCharProps.maComplexThemeFont.getFontData(sFontName, nFontPitch, nFontFamily, nullptr, + rFilter); + if (bRet) + { + xSet->setPropertyValue(u"CharFontNameComplex"_ustr, uno::Any(sFontName)); + xSet->setPropertyValue(u"CharFontPitchComplex"_ustr, uno::Any(nFontPitch)); + xSet->setPropertyValue(u"CharFontFamilyComplex"_ustr, uno::Any(nFontFamily)); + } + + // LO uses shape properties, MS Office character properties. Copy them from char to shape. + // Outline + if (rCharProps.moTextOutlineProperties.has_value()) + { + oox::drawingml::ShapePropertyMap aStrokeShapeProps(rFilter.getModelObjectHelper()); + rCharProps.moTextOutlineProperties.value().pushToPropMap( + aStrokeShapeProps, rFilter.getGraphicHelper()); + for (const auto& rProp : aStrokeShapeProps.makePropertyValueSequence()) + { + xSet->setPropertyValue(rProp.Name, rProp.Value); + } + } + else + { + xSet->setPropertyValue(UNO_NAME_LINESTYLE, uno::Any(drawing::LineStyle_NONE)); + } + + // Fill + // ToDo: Replace flip and rotate constants in parameters with actual values. + // tdf#155327 If color is not explicitly set, MS Office uses scheme color 'tx1'. + oox::drawingml::ShapePropertyMap aFillShapeProps(rFilter.getModelObjectHelper()); + if (!rCharProps.maFillProperties.moFillType.has_value()) + rCharProps.maFillProperties.moFillType = XML_solidFill; + if (!rCharProps.maFillProperties.maFillColor.isUsed()) + rCharProps.maFillProperties.maFillColor.setSchemeClr(XML_tx1); + rCharProps.maFillProperties.pushToPropMap(aFillShapeProps, rFilter.getGraphicHelper(), + /*nShapeRotation*/ 0, + /*nPhClr*/ API_RGB_TRANSPARENT, + /*aShapeSize*/ css::awt::Size(0, 0), + /*nPhClrTheme*/ -1, + /*bFlipH*/ false, /*bFlipV*/ false, + /*bIsCustomShape*/ true); + for (const auto& rProp : aFillShapeProps.makePropertyValueSequence()) + { + xSet->setPropertyValue(rProp.Name, rProp.Value); + } + + // ToDo: Import WordArt glow and simple shadow effects. They are available in LO. + } + + // LO does not evaluate paragraph alignment in text path mode. Use text area anchor instead. + { + 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)); + } + } + + // Vertical adjustment is only meaningful for OOXML WordArt shapes of 'Follow Path' kinds. We set + // it so, that text position is approximately same as in MS Office. + const OUString sMSPresetType = pTextBody->getTextProperties().msPrst; + const OUString sFontworkType = PresetGeometryTypeNames::GetFontworkType(sMSPresetType); + SdrObject* pShape = SdrObject::getSdrObjectFromXShape(xShape); + assert(pShape); + if (sFontworkType == "fontwork-arch-up-curve" || sFontworkType == "fontwork-circle-curve") + pShape->SetMergedItem(SdrTextVertAdjustItem(SdrTextVertAdjust::SDRTEXTVERTADJUST_BOTTOM)); + else if (sFontworkType == "fontwork-arch-down-curve") + pShape->SetMergedItem(SdrTextVertAdjustItem(SdrTextVertAdjust::SDRTEXTVERTADJUST_TOP)); + else + pShape->SetMergedItem(SdrTextVertAdjustItem(SdrTextVertAdjust::SDRTEXTVERTADJUST_CENTER)); +} + +// 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(elem)); + } + maSize.Height = 0; + for (auto const& elem : mpTablePropertiesPtr->getTableRows()) + { + // WARN: If some rows can't fit the content, this is not the final height + 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 bNeedsMSOWidthHeightToggle + = (nDeg >= 45 && nDeg < 135) || (nDeg >= 225 && nDeg < 315); + if (bNeedsMSOWidthHeightToggle) + lcl_doSpecialMSOWidthHeightToggle(aTransformation); + + aTransformation.scale(fFactorX, fFactorY); + + if (bNeedsMSOWidthHeightToggle) + { + 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.value_or(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(aPoint.getX()), static_cast(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 = 0; + aMatrix.Line3.Column2 = 0; + aMatrix.Line3.Column3 = 1; + + 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 (m_isDecorative) + { + xSet->setPropertyValue("Decorative", Any(m_isDecorative)); + } + 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 const xObj( + xSet->getPropertyValue("EmbeddedObject"), uno::UNO_QUERY); + if (xObj.is()) + { + uno::Reference const xMathModel(xObj->getComponent()); + oox::FormulaImExportBase *const pMagic( + dynamic_cast(xMathModel.get())); + assert(pMagic); + pMagic->readFormulaOoxml(*pMathXml); + } + } + + const GraphicHelper& rGraphicHelper = rFilterBase.getGraphicHelper(); + + ::Color nLinePhClr(ColorTransparency, 0xffffffff); + ::Color nFillPhClr(ColorTransparency, 0xffffffff); + sal_Int16 nFillPhClrTheme = -1; + sal_Int16 nLinePhClrTheme = -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 ); + nLinePhClrTheme = pLineRef->maPhClr.getSchemeColorIndex(); + + // Store style-related properties to InteropGrabBag to be able to export them back + uno::Sequence 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.value_or(false)) + { + nFillPhClr = pFillRef->maPhClr.getColor(rGraphicHelper); + nFillPhClrTheme = pFillRef->maPhClr.getSchemeColorIndex(); + } + + OUString sColorScheme = pFillRef->maPhClr.getSchemeColorName(); + if( !sColorScheme.isEmpty() ) + { + uno::Sequence 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 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_value() ) + aShapeProps.setProperty(PROP_CharHeight, GetFontHeight( mpMasterTextListStyle->getListStyle()[0].getTextCharacterProperties().moHeight.value() )); + } + + // 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(SdrObject::getSdrObjectFromXShape(mxShape)) ) + { + // Disable layouting until table height is expanded to fit the content + pTableShape->SetSkipChangeLayout(true); + } + } + + FillProperties aFillProperties = getActualFillProperties(pTheme, &rShapeOrParentShapeFillProps); + if (getFillProperties().moFillType.has_value() && getFillProperties().moFillType.value() == XML_grpFill) + getFillProperties().assignUsed(aFillProperties); + if(!bIsCroppedGraphic) + aFillProperties.pushToPropMap(aShapeProps, rGraphicHelper, mnRotation, nFillPhClr, + css::awt::Size(aShapeRectHmm.Width, aShapeRectHmm.Height), + nFillPhClrTheme, mbFlipH, mbFlipV, bIsCustomShape); + + LineProperties aLineProperties = getActualLineProperties(pTheme); + aLineProperties.pushToPropMap( aShapeProps, rGraphicHelper, nLinePhClr, nLinePhClrTheme); + 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 propertySet (mxShape, uno::UNO_QUERY); + uno::Sequence 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"; + pGrabBag[length].Value <<= mpCustomShapePropertiesPtr->getShapePresetTypeName(); + 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 propertySet (mxShape, uno::UNO_QUERY); + uno::Sequence 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(); + uno::Reference xBitmap = rFilterBase.getModelObjectHelper().getFillBitmap(aFillBitmapName); + uno::Reference 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 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(); + aBorderLine.Color = aShapeProps.getProperty(PROP_LineColor).get(); + if (aLineProperties.moLineWidth.has_value()) + aBorderLine.LineWidth = convertEmuToHmm(aLineProperties.moLineWidth.value()); + aShapeProps.setProperty(nBorder, aBorderLine); + } + aShapeProps.erase(PROP_LineColor); + } + if(mnRotation) + { + uno::Reference xPropertySet(mxShape, uno::UNO_QUERY); + static constexpr OUString aGrabBagPropName = u"FrameInteropGrabBag"_ustr; + uno::Sequence 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 oShadowDistance; + if (aShapeProps.hasProperty(PROP_ShadowXDistance)) + { + oShadowDistance = aShapeProps.getProperty(PROP_ShadowXDistance).get(); + 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 oShadowColor; + if (aShapeProps.hasProperty(PROP_ShadowColor)) + { + oShadowColor = aShapeProps.getProperty(PROP_ShadowColor).get(); + aShapeProps.erase(PROP_ShadowColor); + } + if (aShapeProps.hasProperty(PROP_Shadow)) + aShapeProps.erase(PROP_Shadow); + + if (oShadowDistance || oShadowColor || aEffectProperties.maShadow.moShadowDir.has_value()) + { + css::table::ShadowFormat aFormat; + if (oShadowColor) + aFormat.Color = *oShadowColor; + if (aEffectProperties.maShadow.moShadowDir.has_value()) + { + css::table::ShadowLocation nLocation = css::table::ShadowLocation_NONE; + switch (aEffectProperties.maShadow.moShadowDir.value()) + { + 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) + { + // This introduces a TextBox in a shape in Writer. ToDo: Can we restrict it to cases + // where the TextBox edit engine is really needed? tdf#82627 + aShapeProps.setProperty(PROP_TextBox, true); + } + + if (aServiceName != "com.sun.star.text.TextFrame" && isLinkedTxbx()) + { + uno::Reference propertySet (mxShape, uno::UNO_QUERY); + uno::Sequence 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 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 exports desired row heights (i.e. what user attempted to set it as, not how it appears visually) + // Expand table height if there are rows that can't fit the content + if (auto* pTableShape = dynamic_cast(SdrObject::getSdrObjectFromXShape(mxShape))) + { + tools::Rectangle aArea{}; + pTableShape->LayoutTableHeight(aArea); + sal_Int32 nCorrectedHeight = aArea.GetHeight(); + 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)); + } + } + + if (mbWordprocessingCanvas) + { + putPropertyToGrabBag("WordprocessingCanvas", Any(true)); + } + + // Store original fill and line colors of the shape and the theme color name to InteropGrabBag + std::vector aProperties + { + comphelper::makePropertyValue("EmuLineWidth", aLineProperties.moLineWidth.value_or(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 aGradientStops; + size_t i = 0; + for( const auto& [rPos, rColor] : aFillProperties.maGradientProps.maGradientStops ) + { // for each stop in the gradient definition: + + // save position + std::vector 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_value() ) + 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 aEffects; + for (auto const& it : aEffectProperties.m_Effects) + { + PropertyValue aEffect = it->getEffect(); + if( !aEffect.Name.isEmpty() ) + { + std::vector 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 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 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 ) ); + } + else if (mbWordprocessingCanvas) + { + putPropertyToGrabBag("WordprocessingCanvas", Any(true)); + putPropertyToGrabBag("mso-edit-as", Any(OUString("canvas"))); // for export VML Fallback + } + + // 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) + { + msConnectorName = mpCustomShapePropertiesPtr->getShapePresetTypeName(); + + auto aAdjustmentList = mpCustomShapePropertiesPtr->getAdjustmentGuideList(); + for (size_t i = 0; i < aAdjustmentList.size(); i++) + maConnectorAdjustmentList.push_back(aAdjustmentList[i].maFormula); + + 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 = getTextBody()->get3DProperties().maCameraRotation.mnRevolution.value_or(0); + mpCustomShapePropertiesPtr->setTextCameraZRotateAngle( nTextCameraZRotation / 60000 ); + + // TextPreRotateAngle. Text rotates inside the text area. Might be used for diagram layout 'upr' and 'grav'. + sal_Int32 nTextPreRotateAngle = static_cast< sal_Int32 >( getTextBody()->getTextProperties().moTextPreRotation.value_or( 0 ) ); + + nTextPreRotateAngle -= mnDiagramRotation; // Use of mnDiagramRotation is unclear. It seems to be always 0 here. + + // TextRotateAngle. The text area rotates. + sal_Int32 nTextAreaRotateAngle = getTextBody()->getTextProperties().moTextAreaRotation.value_or(0); + if (getTextBody()->getTextProperties().moUpright) + { + // When upright is set, any text area transformation and shape rotation is ignored + // in MS Office. To simulate this behaviour, we rotate the text area into the + // opposite direction of the shape rotation by as much as the shape was rotated + // and so compensate the shape rotation, which is added in rendering. + nTextAreaRotateAngle = -mnRotation; + // If 45° <= shape rotation < 135° or 225° <= shape rotation < 315°, + // then MS Office adds an additional 90° rotation to the text area. + const sal_Int32 nDeg(mnRotation / 60000); + if ((nDeg >= 45 && nDeg < 135) || (nDeg >= 225 && nDeg < 315)) + { + nTextAreaRotateAngle += 5400000; + nTextPreRotateAngle -= 5400000; // compensate the additional text area rotation + } + putPropertyToGrabBag("Upright", Any(true)); + } + /* OOX measures text rotation clockwise in 1/60000th degrees, + relative to the containing shape. set*Angle wants degrees counter-clockwise. */ + mpCustomShapePropertiesPtr->setTextPreRotateAngle(-nTextPreRotateAngle / 60000); + if (nTextAreaRotateAngle != 0) + mpCustomShapePropertiesPtr->setTextAreaRotateAngle(-nTextAreaRotateAngle / 60000); + + auto sHorzOverflow = getTextBody()->getTextProperties().msHorzOverflow; + if (!sHorzOverflow.isEmpty()) + putPropertyToGrabBag("horzOverflow", uno::Any(getTextBody()->getTextProperties().msHorzOverflow)); + if (XML_ellipsis == getTextBody()->getTextProperties().moVertOverflow) + putPropertyToGrabBag("vertOverflow", uno::Any(OUString{"ellipsis"})); + } + + // 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); + + // Consider WordArt + if (mpTextBody && !mpTextBody->getTextProperties().msPrst.isEmpty() + && mpTextBody->getTextProperties().msPrst != u"textNoShape") + { + bool bFromWordArt(aShapeProps.hasProperty(PROP_FromWordArt) + ? aShapeProps.getProperty(PROP_FromWordArt).get() + : false); + FontworkHelpers::putCustomShapeIntoTextPathMode( + mxShape, mpCustomShapePropertiesPtr, mpTextBody->getTextProperties().msPrst, + bFromWordArt); + } + } + 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 = 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& 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); + } + } + + // MS Office has e.g. fill and stroke of WordArt in the character properties, + // LibreOffice uses shape properties. + if (!mpTextBody->getTextProperties().msPrst.isEmpty() + && mpTextBody->getTextProperties().msPrst != u"textNoShape") + { + lcl_copyCharPropsToShape(mxShape, mpTextBody, 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_value() + && aServiceName != "com.sun.star.drawing.GroupShape") + { + uno::Reference propertySet (mxShape, uno::UNO_QUERY); + propertySet->setPropertyValue("GlowEffectRadius", Any(convertEmuToHmm(aEffectProperties.maGlow.moGlowRad.value()))); + 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_value()) + { + uno::Reference propertySet(mxShape, uno::UNO_QUERY); + propertySet->setPropertyValue( + "SoftEdgeRadius", Any(convertEmuToHmm(aEffectProperties.maSoftEdge.moRad.value()))); + } + + // 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) + { + // tdf#151518. The method readjustTextDistances is fix for tdf#148321, but conflicts with + // text position in some of the SmartArt types in Writer. So exclude Writer here. + OUString sDocumentService; + rFilterBase.getMediaDescriptor()[utl::MediaDescriptor::PROP_DOCUMENTSERVICE] >>= sDocumentService; + if (sDocumentService != u"com.sun.star.text.TextDocument") + 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 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 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(renderDiagramToGraphic(rFilterBase)); + Reference xShapes(mxShape, UNO_QUERY_THROW); + tools::Rectangle aBackgroundRect + = SdrObject::getSdrObjectFromXShape( + Reference(xShapes->getByIndex(0), UNO_QUERY_THROW)) + ->GetLogicRect(); + while (xShapes->hasElements()) + xShapes->remove(Reference(xShapes->getByIndex(0), UNO_QUERY_THROW)); + xShapes->add(xShape); + SdrObject::getSdrObjectFromXShape( + Reference(xShapes->getByIndex(0), UNO_QUERY_THROW)) + ->NbcSetLogicRect(aBackgroundRect); + } + 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); + oox::ppt::PowerPointImport* pPowerPointImport + = dynamic_cast(&rFilter); + + ClrMapPtr pClrMap; // The original color map + if (pPowerPointImport) + { + // Use a copy of current color map, which the fragment may override locally + pClrMap = pPowerPointImport->getActualSlidePersist()->getClrMap(); + aModel.mpClrMap = pClrMap ? std::make_shared(*pClrMap) + : std::make_shared(); + pPowerPointImport->getActualSlidePersist()->setClrMap(aModel.mpClrMap); + } + + rtl::Reference pChartSpaceFragment = new chart::ChartSpaceFragment( + rFilter, mxChartShapeInfo->maFragmentPath, aModel ); + const OUString aThemeOverrideFragmentPath( pChartSpaceFragment-> + getFragmentPathFromFirstTypeFromOfficeDoc(u"themeOverride") ); + rFilter.importFragment( pChartSpaceFragment ); + + // 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(*pTheme); + rFilter.importFragment( + new ThemeOverrideFragmentHandler(rFilter, aThemeOverrideFragmentPath, *pThemeOverride, *pThemeOverride->getTheme()), + 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 (pPowerPointImport) + { + if (!aThemeOverrideFragmentPath.isEmpty()) + { + // Restore the original theme. + pPowerPointImport->getActualSlidePersist()->setTheme(pTheme); + } + // Restore the original color map + pPowerPointImport->getActualSlidePersist()->setClrMap(pClrMap); + } +#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 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_value() && getFillProperties().moFillType.value() == 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(); + 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 0000000000..3f9ac87158 --- /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 +#include +#include + +#include +#include +#include + +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 aSeq(6); + auto pSeq = aSeq.getArray(); + sal_Int32 nSize = 0; + if( mfFieldOfVision.has_value() ) + { + pSeq[nSize].Name = "fov"; + pSeq[nSize].Value <<= *mfFieldOfVision; + nSize++; + } + if( mfZoom.has_value() ) + { + pSeq[nSize].Name = "zoom"; + pSeq[nSize].Value <<= *mfZoom; + nSize++; + } + if( mnPreset.has_value() ) + { + pSeq[nSize].Name = "prst"; + pSeq[nSize].Value <<= getCameraPrstName( *mnPreset ); + nSize++; + } + if( maCameraRotation.mnLatitude.has_value() ) + { + pSeq[nSize].Name = "rotLat"; + pSeq[nSize].Value <<= *maCameraRotation.mnLatitude; + nSize++; + } + if( maCameraRotation.mnLongitude.has_value() ) + { + pSeq[nSize].Name = "rotLon"; + pSeq[nSize].Value <<= *maCameraRotation.mnLongitude; + nSize++; + } + if( maCameraRotation.mnRevolution.has_value() ) + { + pSeq[nSize].Name = "rotRev"; + pSeq[nSize].Value <<= *maCameraRotation.mnRevolution; + nSize++; + } + aSeq.realloc( nSize ); + return aSeq; +} + +css::uno::Sequence< css::beans::PropertyValue > Generic3DProperties::getLightRigAttributes() +{ + css::uno::Sequence aSeq(5); + auto pSeq = aSeq.getArray(); + sal_Int32 nSize = 0; + if( mnLightRigDirection.has_value() ) + { + pSeq[nSize].Name = "dir"; + pSeq[nSize].Value <<= getLightRigDirName( *mnLightRigDirection ); + nSize++; + } + if( mnLightRigType.has_value() ) + { + pSeq[nSize].Name = "rig"; + pSeq[nSize].Value <<= getLightRigName( *mnLightRigType ); + nSize++; + } + if( maLightRigRotation.mnLatitude.has_value() ) + { + pSeq[nSize].Name = "rotLat"; + pSeq[nSize].Value <<= *maLightRigRotation.mnLatitude; + nSize++; + } + if( maLightRigRotation.mnLongitude.has_value() ) + { + pSeq[nSize].Name = "rotLon"; + pSeq[nSize].Value <<= *maLightRigRotation.mnLongitude; + nSize++; + } + if( maLightRigRotation.mnRevolution.has_value() ) + { + pSeq[nSize].Name = "rotRev"; + pSeq[nSize].Value <<= *maLightRigRotation.mnRevolution; + nSize++; + } + aSeq.realloc( nSize ); + return aSeq; +} + +css::uno::Sequence< css::beans::PropertyValue > Generic3DProperties::getBevelAttributes( BevelProperties rProps ) +{ + css::uno::Sequence aSeq(3); + auto pSeq = aSeq.getArray(); + sal_Int32 nSize = 0; + if( rProps.mnPreset.has_value() ) + { + pSeq[nSize].Name = "prst"; + pSeq[nSize].Value <<= getBevelPresetTypeString( *rProps.mnPreset ); + nSize++; + } + if( rProps.mnWidth.has_value() ) + { + pSeq[nSize].Name = "w"; + pSeq[nSize].Value <<= *rProps.mnWidth; + nSize++; + } + if( rProps.mnHeight.has_value() ) + { + pSeq[nSize].Name = "h"; + pSeq[nSize].Value <<= *rProps.mnHeight; + 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 aSeq(8); + auto pSeq = aSeq.getArray(); + sal_Int32 nSize = 0; + if( mnExtrusionH.has_value() ) + { + pSeq[nSize].Name = "extrusionH"; + pSeq[nSize].Value <<= *mnExtrusionH; + nSize++; + } + if( mnContourW.has_value() ) + { + pSeq[nSize].Name = "contourW"; + pSeq[nSize].Value <<= *mnContourW; + nSize++; + } + if( mnShapeZ.has_value() ) + { + pSeq[nSize].Name = "z"; + pSeq[nSize].Value <<= *mnShapeZ; + nSize++; + } + if( mnMaterial.has_value() ) + { + pSeq[nSize].Name = "prstMaterial"; + pSeq[nSize].Value <<= getPresetMaterialTypeString( *mnMaterial ); + nSize++; + } + if( maTopBevelProperties.has_value() ) + { + pSeq[nSize].Name = "bevelT"; + pSeq[nSize].Value <<= getBevelAttributes( *maTopBevelProperties ); + nSize++; + } + if( maBottomBevelProperties.has_value() ) + { + pSeq[nSize].Name = "bevelB"; + pSeq[nSize].Value <<= getBevelAttributes( *maBottomBevelProperties ); + 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 0000000000..73fdab7950 --- /dev/null +++ b/oox/source/drawingml/shapecontext.cxx @@ -0,0 +1,144 @@ +/* -*- 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 +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include "hyperlinkcontext.hxx" +#include +#include +#include +#include +#include + +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 pMasterShapePtr, ShapePtr pShapePtr ) +: ContextHandler2( rParent ) +, mpMasterShapePtr(std::move( pMasterShapePtr )) +, mpShapePtr(std::move( 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_extLst: + case XML_ext: + break; + case XML_decorative: + { + mpShapePtr->setDecorative(rAttribs.getBool(XML_val, false)); + } + break; + case XML_cNvPr: + { + mpShapePtr->setHidden( rAttribs.getBool( XML_hidden, false ) ); + mpShapePtr->setId( rAttribs.getStringDefaulted( XML_id ) ); + mpShapePtr->setName( rAttribs.getStringDefaulted( XML_name ) ); + mpShapePtr->setDescription( rAttribs.getStringDefaulted( XML_descr ) ); + 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.getInteger( XML_idx, 0 ) ); + 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() ); + return new TextBodyContext( *this, mpShapePtr ); + } + case XML_txXfrm: // diagram shape. [MS-ODRAWXML] + { + const TextBodyPtr& rShapePtr = mpShapePtr->getTextBody(); + if (rShapePtr) + return new oox::drawingml::Transform2DContext( *this, rAttribs, *mpShapePtr, true ); + } + break; + case XML_cNvSpPr: + break; + case XML_spLocks: + break; + case XML_bodyPr: + if (!mpShapePtr->getTextBody()) + mpShapePtr->setTextBody( std::make_shared() ); + 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_INFO("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 0000000000..ddd3152074 --- /dev/null +++ b/oox/source/drawingml/shapegroupcontext.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 +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +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 pGroupShapePtr ) +: FragmentHandler2( rParent ) +, mpGroupShapePtr(std::move( 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_extLst: + case XML_ext: + break; + case XML_decorative: + { + mpGroupShapePtr->setDecorative(rAttribs.getBool(XML_val, false)); + } + break; + case XML_cNvPr: + { + mpGroupShapePtr->setHidden( rAttribs.getBool( XML_hidden, false ) ); + mpGroupShapePtr->setId( rAttribs.getStringDefaulted( XML_id ) ); + mpGroupShapePtr->setName( rAttribs.getStringDefaulted( XML_name ) ); + break; + } + case XML_ph: + mpGroupShapePtr->setSubType( rAttribs.getToken( XML_type, FastToken::DONTKNOW ) ); + if( rAttribs.hasAttribute( XML_idx ) ) + mpGroupShapePtr->setSubTypeIndex( rAttribs.getInteger( XML_idx, 0 ) ); + 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("com.sun.star.drawing.ConnectorShape"); + pShape->setLockedCanvas(mpGroupShapePtr->getLockedCanvas()); + pShape->setWordprocessingCanvas(mpGroupShapePtr->isInWordprocessingCanvas()); + return new ConnectorShapeContext(*this, mpGroupShapePtr, pShape, + pShape->getConnectorShapeProperties()); + } + case XML_grpSp: // group shape + return new ShapeGroupContext( *this, mpGroupShapePtr, std::make_shared( "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( "com.sun.star.drawing.CustomShape", getBaseToken(aElementToken) == XML_sp ) ); + case XML_pic: // CT_Picture + return new GraphicShapeContext( *this, mpGroupShapePtr, std::make_shared( "com.sun.star.drawing.GraphicObjectShape" ) ); + case XML_graphicFrame: // CT_GraphicalObjectFrame + return new GraphicalObjectFrameContext( *this, mpGroupShapePtr, std::make_shared( "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 0000000000..a637f011d5 --- /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 + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +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(); + + 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(), nullptr); +} + +} + +/* 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 0000000000..253b9259f7 --- /dev/null +++ b/oox/source/drawingml/shapepropertymap.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 + +#include +#include +#include +#include +#include +#include + +#include +#include + +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::Gradient2 >() ) + { + OUString aGradientName = mrModelObjHelper.insertFillGradient( rValue.get< awt::Gradient2 >() ); + return !aGradientName.isEmpty() && setProperty( nPropId, aGradientName ); + } + else 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()) + { + OUString aHatchName = mrModelObjHelper.insertFillHatch(rValue.get()); + 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::Gradient2 >() ) + { + OUString aGradientName = mrModelObjHelper.insertTransGrandient( rValue.get< awt::Gradient2 >() ); + return !aGradientName.isEmpty() && setProperty( nPropId, aGradientName ); + } + else 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>()) + { + auto xGraphic = rValue.get>(); + OUString aBitmapName = mrModelObjHelper.insertFillBitmapXGraphic(xGraphic); + return !aBitmapName.isEmpty() && setProperty(nPropId, aBitmapName); + } + + return false; +} + +bool ShapePropertyMap::setFillBitmapName(const Any& rValue) +{ + if (rValue.has>()) + { + auto xGraphic = rValue.get>(); + 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 0000000000..f0bc061a58 --- /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 + +#include +#include +#include +#include + +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 0000000000..3697bdfe85 --- /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 +#include +#include +#include +#include +#include + +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(); + 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 0000000000..4517590368 --- /dev/null +++ b/oox/source/drawingml/table/predefined-table-styles.cxx @@ -0,0 +1,985 @@ +/* -*- 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 +#include +#include +#include +#include + +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> 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")); +} + +constexpr frozen::unordered_map tokens{ + { u"Accent1", XML_accent1 }, { u"Accent2", XML_accent2 }, { u"Accent3", XML_accent3 }, + { u"Accent4", XML_accent4 }, { u"Accent5", XML_accent5 }, { u"Accent6", XML_accent6 } +}; + +sal_Int32 resolveToken(OUString const& rString) +{ + auto iterator = tokens.find(rString); + if (iterator != tokens.end()) + return iterator->second; + return XML_dk1; +} + +void setBorderLineType(const oox::drawingml::LinePropertiesPtr& pLineProp, sal_Int32 nToken) +{ + pLineProp->maLineFill.moFillType = nToken; +} + +void insertBorderLine(TableStylePart& aTableStylePart, sal_Int32 nToken, + oox::drawingml::LinePropertiesPtr pLineProp) +{ + if (pLineProp->maLineFill.moFillType.has_value()) + { + aTableStylePart.getLineBorders().insert( + std::pair(nToken, pLineProp)); + } +} + +std::unique_ptr CreateTableStyle(const OUString& styleId) +{ + createStyleIdMap(); + std::unique_ptr 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::FillPropertiesPtr pFirstRowFillProperties + = std::make_shared(); + oox::drawingml::FillPropertiesPtr pFirstColFillProperties + = std::make_shared(); + oox::drawingml::FillPropertiesPtr pLastRowFillProperties + = std::make_shared(); + oox::drawingml::FillPropertiesPtr pLastColFillProperties + = std::make_shared(); + oox::drawingml::FillPropertiesPtr pBand1HFillProperties + = std::make_shared(); + oox::drawingml::FillPropertiesPtr pBand1VFillProperties + = std::make_shared(); + oox::drawingml::FillPropertiesPtr pBand2HFillProperties + = std::make_shared(); + oox::drawingml::FillPropertiesPtr pBand2VFillProperties + = std::make_shared(); + oox::drawingml::FillPropertiesPtr pTblBgFillProperties + = std::make_shared(); + + // Start table border line properties definitions for table parts + + oox::drawingml::LinePropertiesPtr pWholeTblLeftBorder + = std::make_shared(); + oox::drawingml::LinePropertiesPtr pWholeTblRightBorder + = std::make_shared(); + oox::drawingml::LinePropertiesPtr pWholeTblTopBorder + = std::make_shared(); + oox::drawingml::LinePropertiesPtr pWholeTblBottomBorder + = std::make_shared(); + oox::drawingml::LinePropertiesPtr pWholeTblInsideHBorder + = std::make_shared(); + oox::drawingml::LinePropertiesPtr pWholeTblInsideVBorder + = std::make_shared(); + + oox::drawingml::LinePropertiesPtr pFirstRowLeftBorder + = std::make_shared(); + oox::drawingml::LinePropertiesPtr pFirstRowRightBorder + = std::make_shared(); + oox::drawingml::LinePropertiesPtr pFirstRowTopBorder + = std::make_shared(); + oox::drawingml::LinePropertiesPtr pFirstRowBottomBorder + = std::make_shared(); + oox::drawingml::LinePropertiesPtr pFirstRowInsideHBorder + = std::make_shared(); + oox::drawingml::LinePropertiesPtr pFirstRowInsideVBorder + = std::make_shared(); + + oox::drawingml::LinePropertiesPtr pFirstColLeftBorder + = std::make_shared(); + oox::drawingml::LinePropertiesPtr pFirstColRightBorder + = std::make_shared(); + oox::drawingml::LinePropertiesPtr pFirstColTopBorder + = std::make_shared(); + oox::drawingml::LinePropertiesPtr pFirstColBottomBorder + = std::make_shared(); + oox::drawingml::LinePropertiesPtr pFirstColInsideHBorder + = std::make_shared(); + oox::drawingml::LinePropertiesPtr pFirstColInsideVBorder + = std::make_shared(); + + oox::drawingml::LinePropertiesPtr pLastColLeftBorder + = std::make_shared(); + oox::drawingml::LinePropertiesPtr pLastColRightBorder + = std::make_shared(); + oox::drawingml::LinePropertiesPtr pLastColTopBorder + = std::make_shared(); + oox::drawingml::LinePropertiesPtr pLastColBottomBorder + = std::make_shared(); + oox::drawingml::LinePropertiesPtr pLastColInsideHBorder + = std::make_shared(); + oox::drawingml::LinePropertiesPtr pLastColInsideVBorder + = std::make_shared(); + + oox::drawingml::LinePropertiesPtr pLastRowLeftBorder + = std::make_shared(); + oox::drawingml::LinePropertiesPtr pLastRowRightBorder + = std::make_shared(); + oox::drawingml::LinePropertiesPtr pLastRowTopBorder + = std::make_shared(); + oox::drawingml::LinePropertiesPtr pLastRowBottomBorder + = std::make_shared(); + oox::drawingml::LinePropertiesPtr pLastRowInsideHBorder + = std::make_shared(); + oox::drawingml::LinePropertiesPtr pLastRowInsideVBorder + = std::make_shared(); + + oox::drawingml::LinePropertiesPtr pBand1HLeftBorder + = std::make_shared(); + oox::drawingml::LinePropertiesPtr pBand1HRightBorder + = std::make_shared(); + oox::drawingml::LinePropertiesPtr pBand1HTopBorder + = std::make_shared(); + oox::drawingml::LinePropertiesPtr pBand1HBottomBorder + = std::make_shared(); + oox::drawingml::LinePropertiesPtr pBand1HInsideHBorder + = std::make_shared(); + oox::drawingml::LinePropertiesPtr pBand1HInsideVBorder + = std::make_shared(); + + oox::drawingml::LinePropertiesPtr pBand1VLeftBorder + = std::make_shared(); + oox::drawingml::LinePropertiesPtr pBand1VRightBorder + = std::make_shared(); + oox::drawingml::LinePropertiesPtr pBand1VTopBorder + = std::make_shared(); + oox::drawingml::LinePropertiesPtr pBand1VBottomBorder + = std::make_shared(); + oox::drawingml::LinePropertiesPtr pBand1VInsideHBorder + = std::make_shared(); + oox::drawingml::LinePropertiesPtr pBand1VInsideVBorder + = std::make_shared(); + + oox::drawingml::LinePropertiesPtr pBand2HLeftBorder + = std::make_shared(); + oox::drawingml::LinePropertiesPtr pBand2HRightBorder + = std::make_shared(); + oox::drawingml::LinePropertiesPtr pBand2HTopBorder + = std::make_shared(); + oox::drawingml::LinePropertiesPtr pBand2HBottomBorder + = std::make_shared(); + oox::drawingml::LinePropertiesPtr pBand2HInsideHBorder + = std::make_shared(); + oox::drawingml::LinePropertiesPtr pBand2HInsideVBorder + = std::make_shared(); + + oox::drawingml::LinePropertiesPtr pBand2VLeftBorder + = std::make_shared(); + oox::drawingml::LinePropertiesPtr pBand2VRightBorder + = std::make_shared(); + oox::drawingml::LinePropertiesPtr pBand2VTopBorder + = std::make_shared(); + oox::drawingml::LinePropertiesPtr pBand2VBottomBorder + = std::make_shared(); + oox::drawingml::LinePropertiesPtr pBand2VInsideHBorder + = std::make_shared(); + oox::drawingml::LinePropertiesPtr pBand2VInsideVBorder + = std::make_shared(); + + // End table border line properties definitions for table parts + + // Start to set fill types. + + pTblBgFillProperties->moFillType = XML_solidFill; + pWholeTblFillProperties->moFillType = XML_solidFill; + pFirstRowFillProperties->moFillType = XML_solidFill; + pFirstColFillProperties->moFillType = XML_solidFill; + pLastRowFillProperties->moFillType = XML_solidFill; + pLastColFillProperties->moFillType = XML_solidFill; + pBand1HFillProperties->moFillType = XML_solidFill; + pBand1VFillProperties->moFillType = XML_solidFill; + pBand2HFillProperties->moFillType = XML_solidFill; + pBand2VFillProperties->moFillType = 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 = resolveToken(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 = resolveToken(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 = resolveToken(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 = resolveToken(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 = resolveToken(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 = resolveToken(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 = resolveToken(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 = resolveToken(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 = resolveToken(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 = resolveToken(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 = resolveToken(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->getStyleId() = styleId; + pTableStyle->getStyleName() = style_name; + + 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 0000000000..ee48a8358f --- /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 +#include +#include +#include +#include + +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(); + 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 0000000000..687c987fe2 --- /dev/null +++ b/oox/source/drawingml/table/tablecell.cxx @@ -0,0 +1,620 @@ +/* -*- 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 +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +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() ) +, 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 const& rxPropSet, + oox::drawingml::table::TableStyle const& rTableStyle, + oox::drawingml::LineProperties const& rLineProperties, + sal_Int32 nPropId) +{ + BorderLine2 aBorderLine; + TableStyle& rTable(const_cast(rTableStyle)); + if (!rTable.getStyleId().isEmpty()) + { + Color aColor = rLineProperties.maLineFill.getBestSolidColor(); + aBorderLine.Color = sal_Int32(aColor.getColor(rFilterBase.getGraphicHelper())); + aBorderLine.OuterLineWidth = static_cast(GetCoordinate(rLineProperties.moLineWidth.value_or(0)) / 4); + aBorderLine.InnerLineWidth = static_cast(GetCoordinate(rLineProperties.moLineWidth.value_or(0)) / 4); + aBorderLine.LineWidth = static_cast(GetCoordinate(rLineProperties.moLineWidth.value_or(0)) / 2); + aBorderLine.LineDistance = 0; + } + else + { + if (rLineProperties.maLineFill.moFillType.has_value()) + { + if (rLineProperties.maLineFill.moFillType.value() != XML_noFill) + { + Color aColor = rLineProperties.maLineFill.getBestSolidColor(); + aBorderLine.Color = sal_Int32(aColor.getColor(rFilterBase.getGraphicHelper())); + } + else + aBorderLine.Color = sal_Int32(COL_AUTO); + } + else + aBorderLine.Color = sal_Int32(COL_BLACK); + + aBorderLine.OuterLineWidth = static_cast(GetCoordinate(rLineProperties.moLineWidth.value_or(12700)) / 4); + aBorderLine.InnerLineWidth = static_cast(GetCoordinate(rLineProperties.moLineWidth.value_or(12700)) / 4); + aBorderLine.LineWidth = static_cast(GetCoordinate(rLineProperties.moLineWidth.value_or(12700)) / 2); + aBorderLine.LineDistance = 0; + } + + if ( rLineProperties.moPresetDash.has_value() ) + { + switch ( rLineProperties.moPresetDash.value() ) + { + 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 = 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, rTable, aLinePropertiesLeft, PROP_LeftBorder ); + applyLineAttributes( rFilterBase, xPropSet, rTable, aLinePropertiesRight, PROP_RightBorder ); + applyLineAttributes( rFilterBase, xPropSet, rTable, aLinePropertiesTop, PROP_TopBorder ); + applyLineAttributes( rFilterBase, xPropSet, rTable, aLinePropertiesBottom, PROP_BottomBorder ); + applyLineAttributes( rFilterBase, xPropSet, rTable, aLinePropertiesTopLeftToBottomRight, PROP_DiagonalTLBR ); + applyLineAttributes( rFilterBase, xPropSet, rTable, 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, rTable, aLinePropertiesInsideH, PROP_TopBorder ); + } + if(nRow != nMaxRow) + { + aLinePropertiesInsideH.assignUsed( aLinePropertiesBottom ); + applyLineAttributes( rFilterBase, xPropSet, rTable, aLinePropertiesInsideH, PROP_BottomBorder ); + } + if(nColumn != 0) + { + aLinePropertiesInsideV.assignUsed( aLinePropertiesLeft ); + applyLineAttributes( rFilterBase, xPropSet, rTable, aLinePropertiesInsideV, PROP_LeftBorder ); + } + if(nColumn != nMaxColumn) + { + aLinePropertiesInsideV.assignUsed( aLinePropertiesRight ); + applyLineAttributes( rFilterBase, xPropSet, rTable, aLinePropertiesInsideV, PROP_RightBorder ); + } + + if (rProperties.getBgColor().isUsed() && !maFillProperties.maFillColor.isUsed() && + maFillProperties.moFillType.value_or(0) == 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 = XML_solidFill; + } + if (!aFillProperties.moFillType.has_value()) + aFillProperties.moFillType = 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))); + } + else if ( getVertToken() != XML_horz && getVertToken() != XML_eaVert ) + { + // put the vert value in the grab bag for roundtrip + const OUString aTokenName(StaticTokenMap().getUnicodeTokenName(getVertToken())); + Sequence aGrabBag; + xPropSet->getPropertyValue("CellInteropGrabBag") >>= aGrabBag; + PropertyValue aPropertyValue = comphelper::makePropertyValue("mso-tcPr-vert-value", aTokenName); + if (aGrabBag.hasElements()) + { + sal_Int32 nLength = aGrabBag.getLength(); + aGrabBag.realloc(nLength + 1); + aGrabBag.getArray()[nLength] = aPropertyValue; + } + else + { + aGrabBag = { aPropertyValue }; + } + xPropSet->setPropertyValue("CellInteropGrabBag", Any(aGrabBag)); + } +} + +} + +/* 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 0000000000..3c4780f34e --- /dev/null +++ b/oox/source/drawingml/table/tablecellcontext.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 +#include +#include +#include +#include +#include +#include + +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.getInteger( XML_rowSpan, 0 ) ); + if ( rAttribs.hasAttribute( XML_gridSpan ) ) + mrTableCell.setGridSpan( rAttribs.getInteger( XML_gridSpan, 0 ) ); + + 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(); + 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, nullptr); + } + + 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 0000000000..c3bd979cfa --- /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 +#include +#include +#include +#include +#include +#include +#include +#include +#include + +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(); + 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.getInteger( XML_w, 0 ) ); + } + 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 0000000000..2d97173223 --- /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 +#include +#include +#include + +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 0000000000..38f655af1e --- /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 +#include +#include +#include +#include +#include +#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(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(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& 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& xPropSet, + const TextListStylePtr& pMasterTextListStyle) +{ + uno::Reference xColumnRowRange(xPropSet->getPropertyValue("Model"), + uno::UNO_QUERY_THROW); + + CreateTableColumns(xColumnRowRange->getColumns(), mvTableGrid); + CreateTableRows(xColumnRowRange->getRows(), mvTableRows); + + std::unique_ptr 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(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(xTable, UNO_QUERY_THROW); + Reference 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 0000000000..3284c7c840 --- /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 + +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 0000000000..cf0afa4a25 --- /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 +#include +#include +#include +#include +#include + +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.getInteger( XML_h, 0 ) ); +} + +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 0000000000..e0ae76e9a8 --- /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 + +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 0000000000..a3c86b2380 --- /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 +#include +#include +#include +#include +#include +#include + +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(); + 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(); + 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 0000000000..23208cc2c5 --- /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 +#include +#include +#include +#include +#include + +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.getStringDefaulted( XML_styleId ); + mrTableStyle.getStyleName() = rAttribs.getStringDefaulted( XML_styleName ); +} + +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 0000000000..57a0ba4894 --- /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 +#include + +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 0000000000..c41f937fd2 --- /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 +#include +#include +#include +#include + +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.getStringDefaulted( XML_def ); + 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 0000000000..729604f26f --- /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 +#include + +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 0000000000..d4206439f1 --- /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 +#include +#include +#include +#include + +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 0000000000..266ff44b22 --- /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 +#include +#include +#include +#include + +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(); + 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 xPropertySet(xAt, UNO_QUERY); + float nCharHeight = xPropertySet->getPropertyValue("CharHeight").get(); + size_t nIndex = 0; + for (auto const& paragraph : maParagraphs) + { + paragraph->insertAt(rFilterBase, xText, xAt, rTextStyleProperties, aMasterTextStyle, + maTextListStyle, (nIndex == 0), nCharHeight); + ++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(); + TextParagraphProperties aParaProp; + aParaProp.apply(*pTextParagraphStyle); + aParaProp.pushToPropSet(&rFilterBase, xProps, aioBulletList, &pTextParagraphStyle->getBulletList(), + true, nCharHeight, 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 0000000000..39eda41d5c --- /dev/null +++ b/oox/source/drawingml/textbodycontext.cxx @@ -0,0 +1,222 @@ +/* -*- 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 +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "hyperlinkcontext.hxx" + +#include + +#include +#include + +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(); + 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(); + pRun->setLineBreak(); + mrParagraph.addRun( pRun ); + return new RegularTextRunContext( *this, pRun ); + } + case A_TOKEN( fld ): // "CT_TextField" Text Field. + { + auto pField = std::make_shared(); + 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(); + mrParagraph.addRun(pRun); + // parse hyperlink attributes: use HyperLinkContext for that + rtl::Reference 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 pRunPtr ) +: ContextHandler2( rParent ) +, mpRunPtr(std::move( 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 0000000000..ff501e40c4 --- /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 +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include + +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.value_or( 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 text rotation */ +void TextBodyProperties::pushTextDistances(Size const& rTextAreaSize) +{ + for (auto & rValue : maTextDistanceValues) + rValue.reset(); + + sal_Int32 nOff = 0; + static constexpr const std::array aProps { + PROP_TextLeftDistance, + PROP_TextUpperDistance, + PROP_TextRightDistance, + PROP_TextLowerDistance + }; + + switch (moTextPreRotation.value_or(0)) + { + case 90*1*60000: nOff = 3; break; + case 90*2*60000: nOff = 2; break; + case 90*3*60000: nOff = 1; break; + default: break; + } + + if (moVert && (moVert.value() == XML_eaVert || moVert.value() == XML_vert)) + nOff = (nOff + 3) % aProps.size(); + else if (moVert && moVert.value() == XML_vert270) + nOff = (nOff + 1) % aProps.size(); + + 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; + + 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 const& xShape) +{ + // Only for custom shapes (for now) + auto* pCustomShape = dynamic_cast(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 0000000000..46576c069c --- /dev/null +++ b/oox/source/drawingml/textbodypropertiescontext.cxx @@ -0,0 +1,283 @@ +/* -*- 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 + +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +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(std::size( aIns )); i++) + { + sValue = rAttribs.getStringDefaulted( aIns[i] ); + if( !sValue.isEmpty() ) + mrTextBodyProp.moInsets[i] = GetCoordinate( sValue ); + } + +// 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.getStringDefaulted(XML_horzOverflow); + // ST_TextVertOverflowType + if( rAttribs.hasAttribute(XML_vertOverflow) ) + { + mrTextBodyProp.moVertOverflow = rAttribs.getToken(XML_vertOverflow); + switch( mrTextBodyProp.moVertOverflow.value_or(XML_overflow) ) + { + case XML_ellipsis: + case XML_clip: + mrTextBodyProp.maPropertyMap.setProperty(PROP_TextClipVerticalOverflow, true); + break; + default: + break; + } + } + + // ST_TextColumnCount + if (const sal_Int32 nColumns = rAttribs.getInteger(XML_numCol, 0); nColumns > 0) + { + css::uno::Reference xCols(SvxXTextColumns_createInstance(), + css::uno::UNO_QUERY_THROW); + xCols->setColumnCount(nColumns); + css::uno::Reference 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 + if (rAttribs.getInteger(XML_rot).has_value()) + mrTextBodyProp.moTextAreaRotation = rAttribs.getInteger(XML_rot).value(); + +// 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.value_or( XML_horz ); + if (tVert == XML_eaVert) + { + mrTextBodyProp.maPropertyMap.setProperty(PROP_TextWritingMode, WritingMode_TB_RL); + mrTextBodyProp.maPropertyMap.setProperty(PROP_WritingMode, text::WritingMode2::TB_RL); + } + else if (tVert == XML_vert) + { + mrTextBodyProp.maPropertyMap.setProperty(PROP_WritingMode, text::WritingMode2::TB_RL90); + } + else if (tVert == XML_mongolianVert) + { + // rendering not yet implemented for shape text, only for frames + mrTextBodyProp.maPropertyMap.setProperty(PROP_WritingMode, text::WritingMode2::TB_LR); + } + else if (tVert == XML_vert270) + { + mrTextBodyProp.maPropertyMap.setProperty(PROP_WritingMode, text::WritingMode2::BT_LR); + } + else { + bool bRtl = rAttribs.getBool( XML_rtl, false ); + mrTextBodyProp.maPropertyMap.setProperty( PROP_TextWritingMode, + ( bRtl ? WritingMode_RL_TB : WritingMode_LR_TB )); + mrTextBodyProp.maPropertyMap.setProperty(PROP_WritingMode, + ( bRtl ? text::WritingMode2::RL_TB : text::WritingMode2::LR_TB)); + } + } + + // ST_TextAnchoringType + mrTextBodyProp.mbAnchorCtr = rAttribs.getBool(XML_anchorCtr, false ); + if (rAttribs.hasAttribute(XML_anchor)) + mrTextBodyProp.meVA = GetTextVerticalAdjust( rAttribs.getToken(XML_anchor, XML_t)); + // else meVA is initialized to TextVerticalAdjust_TOP + + sal_Int32 tVert = mrTextBodyProp.moVert.value_or(XML_horz); + if (tVert == XML_eaVert || tVert == XML_mongolianVert) + { + if (mrTextBodyProp.mbAnchorCtr) + mrTextBodyProp.maPropertyMap.setProperty(PROP_TextVerticalAdjust, + TextVerticalAdjust_CENTER); + else + mrTextBodyProp.maPropertyMap.setProperty(PROP_TextVerticalAdjust, + TextVerticalAdjust_TOP); + + if (mrTextBodyProp.meVA == TextVerticalAdjust_CENTER) + mrTextBodyProp.maPropertyMap.setProperty(PROP_TextHorizontalAdjust, + TextHorizontalAdjust_CENTER); + else if (mrTextBodyProp.meVA == TextVerticalAdjust_TOP) + { + mrTextBodyProp.maPropertyMap.setProperty( + PROP_TextHorizontalAdjust, + tVert == XML_eaVert ? TextHorizontalAdjust_RIGHT : TextHorizontalAdjust_LEFT); + } + else // meVA == TextVerticalAdjust_BOTTOM + { + mrTextBodyProp.maPropertyMap.setProperty( + PROP_TextHorizontalAdjust, + tVert == XML_eaVert ? TextHorizontalAdjust_LEFT : TextHorizontalAdjust_RIGHT); + } + } + else + { + if (mrTextBodyProp.mbAnchorCtr) + mrTextBodyProp.maPropertyMap.setProperty(PROP_TextHorizontalAdjust, + TextHorizontalAdjust_CENTER); + else // BLOCK is nearer to rendering in MS Office than LEFT, see tdf#137023 + mrTextBodyProp.maPropertyMap.setProperty(PROP_TextHorizontalAdjust, + TextHorizontalAdjust_BLOCK); + 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 std::optional sPrst = rAttribs.getString( XML_prst ); + if( sPrst.has_value() ) + { + mrTextBodyProp.msPrst = sPrst.value(); + 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.value_or( 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 0000000000..d123f36072 --- /dev/null +++ b/oox/source/drawingml/textcharacterproperties.cxx @@ -0,0 +1,254 @@ +/* -*- 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 +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +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 ); + assignIfUsed( moLang, rSourceProps.moLang ); + assignIfUsed( moHeight, rSourceProps.moHeight ); + assignIfUsed( moFontScale, rSourceProps.moFontScale); + assignIfUsed( moSpacing, rSourceProps.moSpacing ); + assignIfUsed( moUnderline, rSourceProps.moUnderline ); + assignIfUsed( moBaseline, rSourceProps.moBaseline ); + assignIfUsed( moStrikeout, rSourceProps.moStrikeout ); + assignIfUsed( moCaseMap, rSourceProps.moCaseMap ); + assignIfUsed( moBold, rSourceProps.moBold ); + assignIfUsed( moItalic, rSourceProps.moItalic ); + assignIfUsed( moUnderlineLineFollowText, rSourceProps.moUnderlineLineFollowText ); + assignIfUsed( moUnderlineFillFollowText, rSourceProps.moUnderlineFillFollowText ); + assignIfUsed( moTextOutlineProperties, 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, nullptr, 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, nullptr, rFilter ); + if (bRet) + { + rPropMap.setProperty( PROP_CharFontName, aFontName); + rPropMap.setProperty( PROP_CharFontPitch, nFontPitch); + rPropMap.setProperty( PROP_CharFontFamily, nFontFamily); + } + + bRet = maAsianFont.getFontData( aFontName, nFontPitch, nFontFamily, nullptr, rFilter ); + if (!bRet) + bRet = maAsianThemeFont.getFontData( aFontName, nFontPitch, nFontFamily, nullptr, rFilter ); + if (bRet) + { + rPropMap.setProperty( PROP_CharFontNameAsian, aFontName); + rPropMap.setProperty( PROP_CharFontPitchAsian, nFontFamily); + rPropMap.setProperty( PROP_CharFontFamilyAsian, nFontPitch); + } + + bRet = maComplexFont.getFontData( aFontName, nFontPitch, nFontFamily, nullptr, rFilter ); + if (!bRet) + bRet = maComplexThemeFont.getFontData( aFontName, nFontPitch, nFontFamily, nullptr, rFilter ); + if (bRet) + { + rPropMap.setProperty( PROP_CharFontNameComplex, aFontName); + rPropMap.setProperty( PROP_CharFontPitchComplex, nFontPitch); + rPropMap.setProperty( PROP_CharFontFamilyComplex, nFontFamily); + } + + if ( maFillProperties.moFillType.has_value() ) + { + Color aColor = maFillProperties.getBestSolidColor(); + bool bContoured = false; + + // noFill doesn't exist for characters. Map noFill to 99% transparency + if (maFillProperties.moFillType.value() == 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_value() + && moTextOutlineProperties.value().maLineFill.moFillType.has_value() + && moTextOutlineProperties.value().maLineFill.moFillType.value() != XML_noFill) + { + Color aLineColor = moTextOutlineProperties.value().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 theme color + model::ComplexColor aComplexColor = aColor.getComplexColor(); + rPropMap.setProperty(PROP_CharComplexColor, model::color::createXComplexColor(aComplexColor)); + 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_value() && !moLang.value().isEmpty() ) + { + LanguageTag aTag(moLang.value()); + 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_value() ) + { + float fHeight = GetFontHeight( moHeight.value() ); + if (moFontScale.has_value()) + fHeight *= (moFontScale.value() / 100000); + rPropMap.setProperty( PROP_CharHeight, fHeight); + rPropMap.setProperty( PROP_CharHeightAsian, fHeight); + rPropMap.setProperty( PROP_CharHeightComplex, fHeight); + } + + rPropMap.setProperty( PROP_CharKerning, static_cast(GetTextSpacingPoint( moSpacing.value_or( 0 ) ))); + + rPropMap.setProperty( PROP_CharUnderline, GetFontUnderline( moUnderline.value_or( XML_none ) )); + rPropMap.setProperty( PROP_CharStrikeout, GetFontStrikeout( moStrikeout.value_or( XML_noStrike ) )); + rPropMap.setProperty( PROP_CharCaseMap, GetCaseMap( moCaseMap.value_or( XML_none ) )); + + if( moBaseline.has_value() ) { + rPropMap.setProperty( PROP_CharEscapement, sal_Int16(moBaseline.value_or( 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.value_or( 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.value_or( 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.value_or( false ); + if( moUnderline.has_value() && maUnderlineColor.isUsed() && !bUnderlineFillFollowText ) + { + rPropMap.setProperty( PROP_CharUnderlineHasColor, true); + rPropMap.setProperty( PROP_CharUnderlineColor, maUnderlineColor.getColor( rFilter.getGraphicHelper() )); + model::ComplexColor aComplexColor = maUnderlineColor.getComplexColor(); + rPropMap.setProperty( PROP_CharUnderlineComplexColor, model::color::createXComplexColor(aComplexColor)); + } + 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() )); + model::ComplexColor aComplexColor = maHighlightColor.getComplexColor(); + rPropMap.setProperty(PROP_CharBackgroundComplexColor, model::color::createXComplexColor(aComplexColor)); + } + else + rPropMap.setProperty( PROP_CharBackColor, sal_Int32(-1)); +} + +static void pushToGrabBag( PropertySet& rPropSet, const std::vector& aVectorOfPropertyValues ) +{ + if (!rPropSet.hasProperty(PROP_CharInteropGrabBag) || aVectorOfPropertyValues.empty()) + return; + Sequence 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_value() ? GetFontHeight( moHeight.value() ) : 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 0000000000..fb4390e4c7 --- /dev/null +++ b/oox/source/drawingml/textcharacterpropertiescontext.cxx @@ -0,0 +1,337 @@ +/* -*- 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 + +#include +#include +#include +#include +#include +#include +#include "hyperlinkcontext.hxx" +#include +#include +#include + +#include + +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, 0 ) != 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 + if (!mrTextCharacterProperties.moTextOutlineProperties.has_value()) + mrTextCharacterProperties.moTextOutlineProperties.emplace(); + return new LinePropertiesContext(*this, rAttribs, *mrTextCharacterProperties.moTextOutlineProperties); + // EG_FillProperties + case A_TOKEN( noFill ): + case A_TOKEN( solidFill ): + case A_TOKEN( gradFill ): + case A_TOKEN( pattFill ): + case A_TOKEN( blipFill ): // Fontwork uses blibFill. + return FillPropertiesContext::createFillContext(*this, aElementToken, rAttribs, mrTextCharacterProperties.maFillProperties, nullptr); + // 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.getStringDefaulted(W_TOKEN(ascii))); + } + if (rAttribs.hasAttribute(W_TOKEN(asciiTheme))) + { + mrTextCharacterProperties.maLatinThemeFont.setAttributes(rAttribs.getStringDefaulted(W_TOKEN(asciiTheme))); + } + if( rAttribs.hasAttribute(W_TOKEN(cs)) ) + { + mrTextCharacterProperties.maComplexFont.setAttributes(rAttribs.getStringDefaulted(W_TOKEN(cs))); + } + if (rAttribs.hasAttribute(W_TOKEN(cstheme))) + { + mrTextCharacterProperties.maComplexThemeFont.setAttributes(rAttribs.getStringDefaulted(W_TOKEN(cstheme))); + } + if( rAttribs.hasAttribute(W_TOKEN(eastAsia)) ) + { + mrTextCharacterProperties.maAsianFont.setAttributes(rAttribs.getStringDefaulted(W_TOKEN(eastAsia))); + } + if (rAttribs.hasAttribute(W_TOKEN(eastAsiaTheme))) + { + mrTextCharacterProperties.maAsianThemeFont.setAttributes(rAttribs.getStringDefaulted(W_TOKEN(eastAsiaTheme))); + } + break; + case W_TOKEN( u ): + { + // If you add here, check if it is in drawingmltypes.cxx 113. + auto attrib = rAttribs.getStringDefaulted(W_TOKEN(val)); + 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_value()) + { + oox::drawingml::Color theColor; + theColor.setSrgbClr(colorAttrib.value()); + 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_value()) + { + mrTextCharacterProperties.maFillProperties.maFillColor.setSrgbClr(rAttribs.getIntegerHex(W_TOKEN(val), 0)); + mrTextCharacterProperties.maFillProperties.moFillType = XML_solidFill; + } + break; + case W_TOKEN( sz ): + if (rAttribs.getInteger(W_TOKEN(val)).has_value()) + { + sal_Int32 nVal = rAttribs.getInteger(W_TOKEN(val), 0); + // 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 to drawingML + // . + 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.getStringDefaulted(W_TOKEN(val)); + 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 0000000000..25df357f5a --- /dev/null +++ b/oox/source/drawingml/texteffectscontext.cxx @@ -0,0 +1,320 @@ +/* -*- 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 +#include +#include + +#include + +namespace oox::drawingml { + +namespace +{ + +OUString const & lclGetNameForElementId(sal_uInt32 aId) +{ + static std::map 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" }, + }; + const auto iter = aIdMap.find(aId); + assert(iter != aIdMap.end()); + return iter->second; +} + +OUString const & lclGetGrabBagName(sal_uInt32 aId) +{ + static std::map 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" }, + }; + const auto iter = aGrabBagNameMap.find(aId); + assert(iter != aGrabBagNameMap.end()); + return iter->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& 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.getStringDefaulted(aAttributeId); + 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 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 0000000000..ce38159c5e --- /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 + +#include + +#include + +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include + +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(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(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 = o3tl::toInt32(sType.substr(4)); + 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_value() ) + nCharHeight = aTextCharacterProps.moHeight.value(); + 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 = o3tl::toInt32(aDateTimeNum); + + 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 = o3tl::toInt32(aDateTimeNum); + + 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 0000000000..b356d6fa61 --- /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 +#include +#include +#include +#include +#include +#include + +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.getStringDefaulted( XML_id ) ); + mrTextField.setType( rAttributes.getStringDefaulted( XML_type ) ); +} + +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 0000000000..40cd842f94 --- /dev/null +++ b/oox/source/drawingml/textfont.cxx @@ -0,0 +1,113 @@ +/* -*- 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 +#include +#include +#include +#include +#include +#include +#include + +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() : + mnPitchFamily(0), + mnCharset( WINDOWS_CHARSET_ANSI ) +{ +} + +void TextFont::setAttributes( const AttributeList& rAttribs ) +{ + maTypeface = rAttribs.getStringDefaulted( XML_typeface); + maPanose = rAttribs.getStringDefaulted( XML_panose); + mnPitchFamily = rAttribs.getInteger( XML_pitchFamily, 0 ); + mnCharset = rAttribs.getInteger( XML_charset, WINDOWS_CHARSET_DEFAULT ); +} + +void TextFont::setAttributes( const OUString& sFontName ) +{ + maTypeface = sFontName; + maPanose.clear(); + mnPitchFamily = 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, bool* pbSymbol, const XmlFilterBase& rFilter ) const +{ + if( const Theme* pTheme = rFilter.getCurrentTheme() ) + if( const TextFont* pFont = pTheme->resolveFont( maTypeface ) ) + return pFont->implGetFontData( rFontName, rnFontPitch, rnFontFamily, pbSymbol ); + return implGetFontData( rFontName, rnFontPitch, rnFontFamily, pbSymbol ); +} + +bool TextFont::implGetFontData( OUString& rFontName, sal_Int16& rnFontPitch, sal_Int16& rnFontFamily, bool* pbSymbol ) const +{ + rFontName = maTypeface; + resolvePitch(mnPitchFamily, rnFontPitch, rnFontFamily); + if (pbSymbol) + *pbSymbol = mnCharset == WINDOWS_CHARSET_SYMBOL; + return !rFontName.isEmpty(); +} + +void TextFont::fillThemeFont(model::ThemeFont& rThemeFont) const +{ + rThemeFont.maTypeface = maTypeface; + rThemeFont.maPanose = maPanose; + rThemeFont.maCharset = mnCharset; + resolvePitch(mnPitchFamily, rThemeFont.maPitch, rThemeFont.maFamily); +} + +void TextFont::resolvePitch(sal_Int32 nOoxPitchFamily, sal_Int16& rnFontPitch, sal_Int16& rnFontFamily) +{ + rnFontPitch = lclGetFontPitch(extractValue(nOoxPitchFamily, 0, 4)); + rnFontFamily = lclGetFontFamily(extractValue(nOoxPitchFamily, 4, 4)); +} + + +} // 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 0000000000..42679ad445 --- /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 +#include + +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 0000000000..62d81f9c7f --- /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 +#include +#include +#include + +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 0000000000..e33cbb690e --- /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 +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include + +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(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) 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_value() ) + nCharHeight = nCharHeightFirst = aTextCharacterProps.moHeight.value(); + 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_value() ) + aioBulletList.setProperty( PROP_BulletColor, (*maRuns.begin())->getTextCharacterProperties().maFillProperties.getBestSolidColor().getColor( rFilterBase.getGraphicHelper() )); + if( !aioBulletList.hasProperty( PROP_BulletColor ) && aTextCharacterStyle.maFillProperties.moFillType.has_value() ) + 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() / 100.f; + + if( aParaProp.getBulletList().mnAspectRatio.hasValue() ) + fBulletAspectRatio = aParaProp.getBulletList().mnAspectRatio.get(); + + 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, 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 0000000000..f011878f3d --- /dev/null +++ b/oox/source/drawingml/textparagraphproperties.cxx @@ -0,0 +1,558 @@ +/* -*- 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 + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include + +#include +#include +#include +#include + +#if OSL_DEBUG_LEVEL > 0 +#include +#include +#include +#include +#include +#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() ), + 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, &bSymbolFont, *pFilterBase ) ) + { + FontDescriptor aFontDesc; + sal_Int16 nFontSize = 0; + if( mnFontSize >>= nFontSize ) + aFontDesc.Height = nFontSize; + + // TODO It is likely that bSymbolFont from getFontData is sufficient to check here + // and looking at the font name is not necessary, if it is necessary then moving + // the name lookup into getFontData is likely the best fix + aFontDesc.Name = aBulletFontName; + aFontDesc.Pitch = nBulletFontPitch; + aFontDesc.Family = nBulletFontFamily; + aFontDesc.Weight = nBulletFontWeight; + if ( bSymbolFont || + 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, nullptr, *pFilterBase ) && bSymbolFont ) + { + sal_Unicode nBuChar = sBuChar.toChar(); + nBuChar &= 0x00ff; + nBuChar |= 0xf000; + sBuChar = OUString( &nBuChar, 1 ); + } + + rPropMap.setProperty( PROP_BulletChar, sBuChar); + } + if ( maGraphic.hasValue() ) + { + Reference 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.moDefaultTabSize ) + moDefaultTabSize = rSourceProps.moDefaultTabSize; + 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, + 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.hasProperty(PROP_NumberingLevel) ) + 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 ); + + if ( nNumberingType != NumberingType::NUMBER_NONE ) + { + if ( noParaLeftMargin ) + { + aPropSet.setProperty( 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( 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( 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 ); + } + } + else + aPropSet.setProperty( PROP_ParaFirstLineIndent, 0); + + if ( moDefaultTabSize ) + { + aPropSet.setProperty( PROP_ParaTabStopDefaultDistance, *moDefaultTabSize ); + } + + 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 0000000000..2146d9ed04 --- /dev/null +++ b/oox/source/drawingml/textparagraphpropertiescontext.cxx @@ -0,0 +1,379 @@ +/* -*- 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 + +#include +#include +#include +#include +#include +#include + +#include +#include +#include + +#include +#include +#include +#include +#include +#include "textspacingcontext.hxx" +#include "texttabstoplistcontext.hxx" +#include +#include +#include + +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 + if ( rAttribs.hasAttribute(XML_defTabSz)) + { + sValue = rAttribs.getStringDefaulted(XML_defTabSz); + if(!sValue.isEmpty()) + { + mrTextParagraphProperties.getDefaultTabSize() = GetCoordinate(sValue); + } + } + +// 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.getStringDefaulted( XML_indent ); + 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( '1' + nLevel ); + const OUString sStyleNameValue( OUString::createFromAscii( name ) ); + mrBulletList.setStyleName( sStyleNameValue ); + + // ST_TextMargin + // ParaLeftMargin + if ( rAttribs.hasAttribute( XML_marL ) ) + { + sValue = rAttribs.getStringDefaulted( XML_marL ); + mrTextParagraphProperties.getParaLeftMargin() = std::optional< sal_Int32 >( sValue.isEmpty() ? 0 : GetCoordinate( sValue ) ); + } + + // ParaRightMargin + if ( rAttribs.hasAttribute( XML_marR ) ) + { + sValue = rAttribs.getStringDefaulted( XML_marR ); + 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.getStringDefaulted( XML_val ) ) / 1000.f ) ); + break; + case A_TOKEN( buSzPts ): // CT_TextBulletSizePoint + mrBulletList.setBulletSize(0); + mrBulletList.setFontSize( static_cast(GetTextSize( rAttribs.getStringDefaulted( XML_val ) ) ) ); + 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.getStringDefaulted( XML_char ) ); + 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(); + return new BlipFillContext(*this, rAttribs, *mxBlipProps, nullptr); + } + 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 ): + { + std::optional< OUString > oParaAdjust = rAttribs.getString( W_TOKEN(val) ); + if( oParaAdjust.has_value() && !oParaAdjust.value().isEmpty() ) + { + const OUString& sParaAdjust = oParaAdjust.value(); + 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) ) + { + std::optional oBefore = rAttribs.getInteger(W_TOKEN(before)); + if (oBefore.has_value()) + { + TextSpacing& rSpacing = mrTextParagraphProperties.getParaTopMargin(); + rSpacing.nUnit = TextSpacing::Unit::Points; + rSpacing.nValue = convertTwipToMm100(oBefore.value()); + rSpacing.bHasValue = true; + } + else + { + std::optional oBeforeLines = rAttribs.getInteger(W_TOKEN(beforeLines)); + if (oBeforeLines.has_value()) + { + TextSpacing& rSpacing = mrTextParagraphProperties.getParaTopMargin(); + rSpacing.nUnit = TextSpacing::Unit::Percent; + rSpacing.nValue = oBeforeLines.value() * MAX_PERCENT / 100; + rSpacing.bHasValue = true; + } + } + } + + // Spacing after + if( !rAttribs.getBool(W_TOKEN(afterAutospacing), false) ) + { + std::optional oAfter = rAttribs.getInteger(W_TOKEN(after)); + if (oAfter.has_value()) + { + TextSpacing& rSpacing = mrTextParagraphProperties.getParaBottomMargin(); + rSpacing.nUnit = TextSpacing::Unit::Points; + rSpacing.nValue = convertTwipToMm100(oAfter.value()); + rSpacing.bHasValue = true; + } + else + { + std::optional oAfterLines = rAttribs.getInteger(W_TOKEN(afterLines)); + if (oAfterLines.has_value()) + { + TextSpacing& rSpacing = mrTextParagraphProperties.getParaBottomMargin(); + rSpacing.nUnit = TextSpacing::Unit::Percent; + rSpacing.nValue = oAfterLines.value() * MAX_PERCENT / 100; + rSpacing.bHasValue = true; + } + } + } + + // Line spacing + std::optional oLineRule = rAttribs.getString(W_TOKEN(lineRule)); + std::optional oLineSpacing = rAttribs.getInteger(W_TOKEN(line)); + if (oLineSpacing.has_value()) + { + TextSpacing& rLineSpacing = mrTextParagraphProperties.getLineSpacing(); + if( !oLineRule.has_value() || oLineRule.value() == "auto" ) + { + rLineSpacing.nUnit = TextSpacing::Unit::Percent; + rLineSpacing.nValue = oLineSpacing.value() * MAX_PERCENT / 240; + } + else + { + rLineSpacing.nUnit = TextSpacing::Unit::Points; + rLineSpacing.nValue = convertTwipToMm100(oLineSpacing.value()); + } + 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 0000000000..3eca13d4ad --- /dev/null +++ b/oox/source/drawingml/textrun.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 + +#include +#include +#include +#include +#include +#include +#include + +#include + +#include +#include +#include +#include +#include +#include + +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 xState(xStart, UNO_QUERY); + Any aOldFontName = xState->getPropertyDefault("CharFontName"); + Any aOldFontPitch = xState->getPropertyDefault("CharFontPitch"); + Any aOldFontFamily = xState->getPropertyDefault("CharFontFamily"); + Any aOldFontCharSet = xState->getPropertyDefault("CharFontCharSet"); + + 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_value() ) + nCharHeight = aTextCharacterProps.moHeight.value(); + else + // UNO API has the character height as float, DML has it as int, but in hundreds. + aTextCharacterProps.moHeight = static_cast(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 bSymbolEnc(false); + bool bReset = false; + + // Direct formatting for symbols. + if (bSymbol && aTextCharacterProps.maSymbolFont.getFontData(aFontName, nFontPitch, nFontFamily, &bSymbolEnc, rFilterBase)) + + { + aPropSet.setAnyProperty(PROP_CharFontName, Any(aFontName)); + aPropSet.setAnyProperty(PROP_CharFontPitch, Any(nFontPitch)); + aPropSet.setAnyProperty(PROP_CharFontFamily, Any(nFontFamily)); + aPropSet.setAnyProperty(PROP_CharFontCharSet, Any(bSymbolEnc ? css::awt::CharSet::SYMBOL : css::awt::CharSet::DONTKNOW)); + 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); + aPropSet.setAnyProperty(PROP_CharFontCharSet, aOldFontCharSet); + } + + 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 = XML_solidFill; + if ( !maTextCharacterProperties.moUnderline.has_value() ) + aTextCharacterProps.moUnderline = XML_sng; + + PropertySet aFieldTextPropSet( xTextFieldCursor ); + aTextCharacterProps.pushToPropSet( aFieldTextPropSet, rFilterBase ); + } + 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 0000000000..388f4fc78c --- /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 +#include +#include +#include +#include +#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.getStringDefaulted( XML_val ) ); + break; + case A_TOKEN( spcPts ): + maSpacing.nUnit = TextSpacing::Unit::Points; + maSpacing.nValue = GetTextSpacingPoint( rAttribs.getStringDefaulted( XML_val ) ); + 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 0000000000..5af2c05440 --- /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 + +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 0000000000..bfd9bfcc7e --- /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 + +#include +#include +#include +#include +#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.getStringDefaulted( XML_pos ); + 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 0000000000..e1ca2cb116 --- /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 + +#include + +#include + +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 0000000000..32ae9b4349 --- /dev/null +++ b/oox/source/drawingml/theme.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 +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +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( std::u16string_view 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.size() == 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 == u"majorHAnsi" || rName == u"majorAscii" || rName == u"majorBidi" || rName == u"majorEastAsia") + pCharProps = maFontScheme.get(XML_major).get(); + else if (rName == u"minorHAnsi" || rName == u"minorAscii" || rName == u"minorBidi" || rName == u"minorEastAsia") + pCharProps = maFontScheme.get(XML_minor).get(); + if (pCharProps) + { + if (rName == u"majorAscii" || rName == u"majorHAnsi" || rName == u"minorAscii" || rName == u"minorHAnsi") + return &pCharProps->maLatinFont; + else if (rName == u"minorBidi" || rName == u"majorBidi") + return &pCharProps->maComplexFont; + else if (rName == u"minorEastAsia" || rName == u"majorEastAsia") + return &pCharProps->maAsianFont; + } + return nullptr; +} + +void Theme::addTheme(const css::uno::Reference& xDrawPage) const +{ + SAL_WARN_IF(!xDrawPage.is(), "oox", "DrawPage is not set"); + + SdrPage* pPage = GetSdrPageFromXDrawPage(xDrawPage); + + SAL_WARN_IF(!pPage, "oox", "Can't get SdrPage from XDrawPage"); + + if (!pPage) + return; + + pPage->getSdrPageProperties().setTheme(getTheme()); +} + +} // 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 0000000000..bdc752b985 --- /dev/null +++ b/oox/source/drawingml/themeelementscontext.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 +#include +#include +#include +#include +#include +#include +#include +#include +#include "effectproperties.hxx" +#include +#include +#include + +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, model::FormatScheme& rFormatScheme); + virtual ContextHandlerRef onCreateContext( sal_Int32 nElement, const AttributeList& rAttribs ) override; + +protected: + FillStyleList& mrFillStyleList; + model::FormatScheme& mrFormatScheme; + virtual model::FillStyle* createAndAddFillStyle() + { + return mrFormatScheme.addFillStyle(); + } +}; + +} + +FillStyleListContext::FillStyleListContext(ContextHandler2Helper const & rParent, FillStyleList& rFillStyleList, model::FormatScheme& rFormatScheme) + : ContextHandler2(rParent) + , mrFillStyleList(rFillStyleList) + , mrFormatScheme(rFormatScheme) +{ +} + +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()); + model::FillStyle* pFillStyle = createAndAddFillStyle(); + return FillPropertiesContext::createFillContext(*this, nElement, rAttribs, *mrFillStyleList.back(), pFillStyle); + } + } + return nullptr; +} + +namespace +{ + +class BackgroundFillStyleListContext : public FillStyleListContext +{ +public: + BackgroundFillStyleListContext(ContextHandler2Helper const & rParent, FillStyleList& rFillStyleList, model::FormatScheme& rFormatScheme) + : FillStyleListContext(rParent, rFillStyleList, rFormatScheme) + {} + +protected: + model::FillStyle* createAndAddFillStyle() override + { + return mrFormatScheme.addBackgroundFillStyle(); + } +}; + +} // end anonymous ns + +namespace { + +class LineStyleListContext : public ContextHandler2 +{ +public: + LineStyleListContext(ContextHandler2Helper const & rParent, LineStyleList& rLineStyleList, model::FormatScheme& rFormatScheme); + virtual ContextHandlerRef onCreateContext( sal_Int32 nElement, const AttributeList& rAttribs ) override; + +private: + model::FormatScheme& mrFormatScheme; + LineStyleList& mrLineStyleList; +}; + +} + +LineStyleListContext::LineStyleListContext( ContextHandler2Helper const & rParent, LineStyleList& rLineStyleList, model::FormatScheme& rFormatScheme) + : ContextHandler2(rParent) + , mrFormatScheme(rFormatScheme) + , mrLineStyleList(rLineStyleList) +{ +} + +ContextHandlerRef LineStyleListContext::onCreateContext( sal_Int32 nElement, const AttributeList& rAttribs ) +{ + switch (nElement) + { + case A_TOKEN(ln): + { + mrLineStyleList.push_back( std::make_shared( ) ); + model::LineStyle* pLineStyle = mrFormatScheme.addLineStyle(); + return new LinePropertiesContext(*this, rAttribs, *mrLineStyleList.back(), pLineStyle); + } + } + return nullptr; +} + +namespace { + +class EffectStyleListContext : public ContextHandler2 +{ +public: + EffectStyleListContext(ContextHandler2Helper const & rParent, EffectStyleList& rEffectStyleList, model::FormatScheme& rFormatScheme); + virtual ContextHandlerRef onCreateContext( sal_Int32 nElement, const AttributeList& rAttribs ) override; + +private: + model::FormatScheme& mrFormatScheme; + model::EffectStyle* mpEffectStyle; + EffectStyleList& mrEffectStyleList; +}; + +} + +EffectStyleListContext::EffectStyleListContext( ContextHandler2Helper const & rParent, EffectStyleList& rEffectStyleList, model::FormatScheme& rFormatScheme) + : ContextHandler2(rParent) + , mrFormatScheme(rFormatScheme) + , mpEffectStyle(nullptr) + , mrEffectStyleList(rEffectStyleList) +{ +} + +ContextHandlerRef EffectStyleListContext::onCreateContext( sal_Int32 nElement, const AttributeList& /*rAttribs*/ ) +{ + switch( nElement ) + { + case A_TOKEN( effectStyle ): + { + mpEffectStyle = mrFormatScheme.addEffectStyle(); + mrEffectStyleList.push_back( std::make_shared( ) ); + return this; + } + case A_TOKEN( effectLst ): // CT_EffectList + { + if( mrEffectStyleList.back() ) + return new EffectPropertiesContext(*this, *mrEffectStyleList.back(), mpEffectStyle); + } + break; + } + return nullptr; +} + +namespace +{ + +class FontSchemeContext : public ContextHandler2 +{ +public: + FontSchemeContext(ContextHandler2Helper const & rParent, const AttributeList& rAttribs, FontScheme& rFontScheme, + std::map>>& rSupplementalFontMap, + model::Theme& rTheme); + ~FontSchemeContext(); + virtual ContextHandlerRef onCreateContext( sal_Int32 nElement, const AttributeList& rAttribs ) override; + virtual void onEndElement() override; + +private: + FontScheme& mrFontScheme; + TextCharacterPropertiesPtr mxCharProps; + std::map>>& mrSupplementalFontMap; + sal_Int32 maCurrentFont = 0; + model::Theme& mrTheme; + model::FontScheme maFontScheme; +}; + +} // end anonymous ns + +FontSchemeContext::FontSchemeContext(ContextHandler2Helper const & rParent, const AttributeList& rAttribs, FontScheme& rFontScheme, + std::map>>& rSupplementalFontMap, + model::Theme& rTheme) + : ContextHandler2(rParent) + , mrFontScheme(rFontScheme) + , mrSupplementalFontMap(rSupplementalFontMap) + , mrTheme(rTheme) + , maFontScheme(rAttribs.getStringDefaulted(XML_name)) +{ +} + +FontSchemeContext::~FontSchemeContext() +{ + mrTheme.setFontScheme(maFontScheme); +} + +namespace +{ + +void fillThemeFont(model::ThemeFont& rThemeFont, const AttributeList& rAttribs) +{ + rThemeFont.maTypeface = rAttribs.getStringDefaulted(XML_typeface); + rThemeFont.maPanose = rAttribs.getStringDefaulted(XML_panose); + rThemeFont.maCharset = rAttribs.getInteger(XML_charset, WINDOWS_CHARSET_DEFAULT); + sal_Int32 nPitchFamily = rAttribs.getInteger(XML_pitchFamily, 0); + TextFont::resolvePitch(nPitchFamily, rThemeFont.maPitch, rThemeFont.maFamily); +} + +} // end anonymous ns + +ContextHandlerRef FontSchemeContext::onCreateContext( sal_Int32 nElement, const AttributeList& rAttribs ) +{ + switch( nElement ) + { + case A_TOKEN( majorFont ): + mxCharProps = std::make_shared(); + mrFontScheme[ XML_major ] = mxCharProps; + maCurrentFont = XML_major; + return this; + case A_TOKEN( minorFont ): + mxCharProps = std::make_shared(); + mrFontScheme[ XML_minor ] = mxCharProps; + maCurrentFont = XML_minor; + return this; + case A_TOKEN( latin ): + { + if (mxCharProps) + mxCharProps->maLatinFont.setAttributes(rAttribs); + + model::ThemeFont aThemeFont; + fillThemeFont(aThemeFont, rAttribs); + if (maCurrentFont == XML_major) + maFontScheme.setMajorLatin(aThemeFont); + else if (maCurrentFont == XML_minor) + maFontScheme.setMinorLatin(aThemeFont); + } + break; + case A_TOKEN( ea ): + { + if( mxCharProps ) + mxCharProps->maAsianFont.setAttributes( rAttribs ); + model::ThemeFont aThemeFont; + fillThemeFont(aThemeFont, rAttribs); + if (maCurrentFont == XML_major) + maFontScheme.setMajorAsian(aThemeFont); + else if (maCurrentFont == XML_minor) + maFontScheme.setMinorAsian(aThemeFont); + } + break; + case A_TOKEN( cs ): + { + if( mxCharProps ) + mxCharProps->maComplexFont.setAttributes( rAttribs ); + model::ThemeFont aThemeFont; + fillThemeFont(aThemeFont, rAttribs); + if (maCurrentFont == XML_major) + maFontScheme.setMajorComplex(aThemeFont); + else if (maCurrentFont == XML_minor) + maFontScheme.setMinorComplex(aThemeFont); + } + break; + case A_TOKEN(font): + { + OUString aScript = rAttribs.getStringDefaulted(XML_script); + OUString aTypeface = rAttribs.getStringDefaulted(XML_typeface); + mrSupplementalFontMap[maCurrentFont].emplace_back(std::pair{aScript, aTypeface}); + if (maCurrentFont == XML_major) + maFontScheme.addMajorSupplementalFont({aScript, aTypeface}); + else if (maCurrentFont == XML_minor) + maFontScheme.addMinorSupplementalFont({aScript, aTypeface}); + } + 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& rOoxTheme, model::Theme& rTheme) + : ContextHandler2(rParent) + , mrOoxTheme(rOoxTheme) + , mrTheme(rTheme) +{ +} + +ContextHandlerRef ThemeElementsContext::onCreateContext(sal_Int32 nElement, const AttributeList& rAttribs) +{ + // CT_BaseStyles + switch (nElement) + { + case A_TOKEN( clrScheme ): // CT_ColorScheme + { + OUString aColorSchemeName = rAttribs.getStringDefaulted(XML_name); + mrTheme.setColorSet(std::make_shared(aColorSchemeName)); + if (rAttribs.hasAttribute(XML_name)) + mrOoxTheme.getClrScheme().SetName(rAttribs.getStringDefaulted(XML_name)); + return new clrSchemeContext(*this, mrOoxTheme.getClrScheme(), *mrTheme.getColorSet()); + } + case A_TOKEN( fontScheme ): // CT_FontScheme + { + if (rAttribs.hasAttribute(XML_name)) + mrOoxTheme.setFontSchemeName(rAttribs.getStringDefaulted(XML_name)); + + return new FontSchemeContext(*this, rAttribs, mrOoxTheme.getFontScheme(), mrOoxTheme.getSupplementalFontMap(), mrTheme); + } + + case A_TOKEN( fmtScheme ): // CT_StyleMatrix + { + if (rAttribs.hasAttribute(XML_name)) + mrOoxTheme.setFormatSchemeName(rAttribs.getStringDefaulted(XML_name)); + return this; + } + + case A_TOKEN( fillStyleLst ): // CT_FillStyleList + return new FillStyleListContext(*this, mrOoxTheme.getFillStyleList(), mrTheme.getFormatScheme()); + case A_TOKEN( lnStyleLst ): // CT_LineStyleList + return new LineStyleListContext(*this, mrOoxTheme.getLineStyleList(), mrTheme.getFormatScheme()); + case A_TOKEN( effectStyleLst ): // CT_EffectStyleList + return new EffectStyleListContext(*this, mrOoxTheme.getEffectStyleList(), mrTheme.getFormatScheme()); + case A_TOKEN( bgFillStyleLst ): // CT_BackgroundFillStyleList + return new BackgroundFillStyleListContext( *this, mrOoxTheme.getBgFillStyleList(), mrTheme.getFormatScheme()); + } + 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 0000000000..ed654aac9d --- /dev/null +++ b/oox/source/drawingml/themefragmenthandler.cxx @@ -0,0 +1,82 @@ +/* -*- 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 +#include +#include +#include +#include +#include + +using namespace ::oox::core; + +namespace oox::drawingml +{ + +ThemeFragmentHandler::ThemeFragmentHandler(XmlFilterBase& rFilter, const OUString& rFragmentPath, Theme& rOoxTheme, model::Theme& rTheme) + : FragmentHandler2(rFilter, rFragmentPath) + , mrOoxTheme(rOoxTheme) + , mrTheme(rTheme) +{ +} + +ThemeFragmentHandler::~ThemeFragmentHandler() +{ +} + +ContextHandlerRef ThemeFragmentHandler::onCreateContext( sal_Int32 nElement, const AttributeList& /*rAttribs*/) +{ + // CT_OfficeStyleSheet + if (getCurrentElement() == A_TOKEN(theme)) + { + switch (nElement) + { + case A_TOKEN( themeElements ): // CT_BaseStyles + return new ThemeElementsContext(*this, mrOoxTheme, mrTheme); + case A_TOKEN( objectDefaults ): // CT_ObjectStyleDefaults + return new objectDefaultContext(*this, mrOoxTheme); + case A_TOKEN( extraClrSchemeLst ): // CT_ColorSchemeList + return nullptr; + case A_TOKEN( custClrLst ): // CustomColorList + return nullptr; + case A_TOKEN( ext ): // CT_OfficeArtExtension + return nullptr; + } + } + else if (getCurrentElement() == XML_ROOT_CONTEXT) + { + return this; + } + + return nullptr; +} + +void ThemeFragmentHandler::onStartElement(const AttributeList& rAttribs) +{ + if (getCurrentElement() == A_TOKEN(theme)) + { + OUString aName = rAttribs.getStringDefaulted(XML_name); + mrOoxTheme.setThemeName(aName); + mrTheme.SetName(aName); + } +} + +} // 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 0000000000..1cd67d1192 --- /dev/null +++ b/oox/source/drawingml/transform2dcontext.cxx @@ -0,0 +1,393 @@ +/* -*- 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 + +#include + +#include +#include +#include +#include +#include +#include +#include +#include + +#include + +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 ) +: 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()) + { + mno_txXfrmRot = rAttribs.getInteger(XML_rot, 0); + sal_Int32 nTextAreaRot = mrShape.getTextBody()->getTextProperties().moTextAreaRotation.value_or(0); + mrShape.getTextBody()->getTextProperties().moTextAreaRotation = mno_txXfrmRot.value() + nTextAreaRot; + } + } +} + +namespace +{ +bool ConstructPresetTextRectangle(Shape& rShape, awt::Rectangle& rRect) +{ + // When we are here, we have neither xShape nor a SdrObject. So need to manually calc the text + // area rectangle defined in the preset in OOXML standard, but only for those types of shapes + // where we know, that MS Office SmartArt presets do not use the default text area rectangle. + const sal_Int32 nType = rShape.getCustomShapeProperties()->getShapePresetType(); + switch (nType) + { + case XML_ellipse: + // The preset text rectangle touches the perimeter of the ellipse at 45deg. + rRect.X = rShape.getPosition().X + rShape.getSize().Width * ((1.0 - M_SQRT1_2) / 2.0); + rRect.Y = rShape.getPosition().Y + rShape.getSize().Height * ((1.0 - M_SQRT1_2) / 2.0); + rRect.Width = rShape.getSize().Width * M_SQRT1_2; + rRect.Height = rShape.getSize().Height * M_SQRT1_2; + return true; + case XML_roundRect: + case XML_round2SameRect: + { + // Second handle of round2SameRect used in preset diagrams has value 0. + auto aAdjGdList = rShape.getCustomShapeProperties()->getAdjustmentGuideList(); + double fAdj = aAdjGdList.empty() ? 16667 : aAdjGdList[0].maFormula.toDouble(); + sal_Int32 nWidth = rShape.getSize().Width; + sal_Int32 nHeight = rShape.getSize().Height; + if (nWidth == 0 || nHeight == 0) + return false; + double fMaxAdj = 50000.0 * nWidth / std::min(nWidth, nHeight); + fAdj = std::clamp(fAdj, 0, fMaxAdj); + sal_Int32 nTextLeft = std::min(nWidth, nHeight) * fAdj / 100000.0 * 0.29289; + sal_Int32 nTextTop = nTextLeft; + rRect.X = rShape.getPosition().X + nTextLeft; + rRect.Y = rShape.getPosition().Y + nTextTop; + rRect.Width = nWidth - 2 * nTextLeft; + rRect.Height = nHeight - (nType == XML_roundRect ? 2 : 1) * nTextTop; + return true; + } + case XML_trapezoid: + { + auto aAdjGdList = rShape.getCustomShapeProperties()->getAdjustmentGuideList(); + double fAdj = aAdjGdList.empty() ? 25000 : aAdjGdList[0].maFormula.toDouble(); + sal_Int32 nWidth = rShape.getSize().Width; + sal_Int32 nHeight = rShape.getSize().Height; + if (nWidth == 0 || nHeight == 0) + return false; + double fMaxAdj = 50000.0 * nWidth / std::min(nWidth, nHeight); + fAdj = std::clamp(fAdj, 0, fMaxAdj); + sal_Int32 nTextLeft = nWidth / 3.0 * fAdj / fMaxAdj; + sal_Int32 nTextTop = nHeight / 3.0 * fAdj / fMaxAdj; + rRect.X = rShape.getPosition().X + nTextLeft; + rRect.Y = rShape.getPosition().Y + nTextTop; + rRect.Width = nWidth - 2 * nTextLeft; + rRect.Height = nHeight - 2 * nTextTop; + return true; + } + case XML_flowChartManualOperation: + { + sal_Int32 nWidth = rShape.getSize().Width; + sal_Int32 nTextLeft = nWidth / 5; + rRect.X = rShape.getPosition().X + nTextLeft; + rRect.Y = rShape.getPosition().Y; + rRect.Width = nWidth - 2 * nTextLeft; + rRect.Height = rShape.getSize().Height; + return true; + } + case XML_pie: + case XML_rect: + case XML_wedgeRectCallout: + { + // When tdf#149918 is fixed, pie will need its own case + rRect.X = rShape.getPosition().X; + rRect.Y = rShape.getPosition().Y; + rRect.Width = rShape.getSize().Width; + rRect.Height = rShape.getSize().Height; + return true; + } + case XML_gear6: + { + // The identifiers here reflect the guides name value in presetShapeDefinitions.xml + double w = rShape.getSize().Width; + double h = rShape.getSize().Height; + if (w <= 0 || h <= 0) + return false; + double a1(15000.0); + double a2(3526.0); + auto aAdjGdList = rShape.getCustomShapeProperties()->getAdjustmentGuideList(); + if (aAdjGdList.size() == 2) + { + a1 = aAdjGdList[0].maFormula.toDouble(); + a2 = aAdjGdList[1].maFormula.toDouble(); + a1 = std::clamp(a1, 0, 20000); + a2 = std::clamp(a2, 0, 5358); + } + double th = std::min(w, h) * a1 / 100000.0; + double l2 = std::min(w, h) * a2 / 100000.0 / 2.0; + double l3 = th / 2.0 + l2; + + double rh = h / 2.0 - th; + double rw = w / 2.0 - th; + + double maxr = std::min(rw, rh); + double ha = atan2(l3, maxr); + + double aA1 = basegfx::deg2rad(330) - ha; + double ta11 = rw * cos(aA1); + double ta12 = rh * sin(aA1); + double bA1 = atan2(ta12, ta11); + double cta1 = rh * cos(bA1); + double sta1 = rw * sin(bA1); + double ma1 = std::hypot(cta1, sta1); + double na1 = rw * rh / ma1; + double dxa1 = na1 * cos(bA1); + double dya1 = na1 * sin(bA1); + + double xA1 = w / 2.0 + dxa1; // r + double yA1 = h / 2.0 + dya1; // t + double yD2 = h - yA1; // b + double xD5 = w - xA1; // l + + rRect.X = rShape.getPosition().X + xD5; + rRect.Y = rShape.getPosition().Y + yA1; + rRect.Width = xA1 - xD5; + rRect.Height = yD2 - yA1; + return true; + } + case XML_hexagon: + { + auto aAdjGdList = rShape.getCustomShapeProperties()->getAdjustmentGuideList(); + double fAdj = aAdjGdList.empty() ? 25000 : aAdjGdList[0].maFormula.toDouble(); + sal_Int32 nWidth = rShape.getSize().Width; + sal_Int32 nHeight = rShape.getSize().Height; + if (nWidth == 0 || nHeight == 0) + return false; + double fMaxAdj = 50000.0 * nWidth / std::min(nWidth, nHeight); + fAdj = std::clamp(fAdj, 0, fMaxAdj); + double fFactor = fAdj / fMaxAdj / 6.0 + 1.0 / 12.0; + sal_Int32 nTextLeft = nWidth * fFactor; + sal_Int32 nTextTop = nHeight * fFactor; + rRect.X = rShape.getPosition().X + nTextLeft; + rRect.Y = rShape.getPosition().Y + nTextTop; + rRect.Width = nWidth - 2 * nTextLeft; + rRect.Height = nHeight - 2 * nTextTop; + return true; + } + case XML_round1Rect: + { + sal_Int32 nWidth = rShape.getSize().Width; + sal_Int32 nHeight = rShape.getSize().Height; + if (nWidth == 0 || nHeight == 0) + return false; + auto aAdjGdList = rShape.getCustomShapeProperties()->getAdjustmentGuideList(); + double fAdj = aAdjGdList.empty() ? 16667.0 : aAdjGdList[0].maFormula.toDouble(); + fAdj = std::clamp(fAdj, 0.0, 50000.0); + double fDx = std::min(nWidth, nHeight) * fAdj / 100000.0 * 0.29289; + rRect.X = rShape.getPosition().X; + rRect.Y = rShape.getPosition().Y; + rRect.Width = nWidth - fDx; + rRect.Height = nHeight; + return true; + } + case XML_rightArrow: + { + // The identifiers here reflect the guides name value in presetShapeDefinitions.xml + sal_Int32 nWidth = rShape.getSize().Width; + sal_Int32 nHeight = rShape.getSize().Height; + if (nWidth == 0 || nHeight == 0) + return false; + double a1(50000.0); + double a2(50000.0); + auto aAdjGdList = rShape.getCustomShapeProperties()->getAdjustmentGuideList(); + if (aAdjGdList.size() == 2) + { + a1 = aAdjGdList[0].maFormula.toDouble(); + a2 = aAdjGdList[1].maFormula.toDouble(); + a1 = std::clamp(a1, 0, 100000); + } + double maxAdj2 = 100000.0 * nWidth / std::min(nWidth, nHeight); + a2 = std::clamp(a2, 0, maxAdj2); + double dx1 = std::min(nWidth, nHeight) * a2 / 100000.0; + double x1 = nWidth - dx1; + double dy1 = nHeight * a1 / 200000.0; + double y1 = nHeight / 2.0 - dy1; // top + double y2 = nHeight / 2.0 + dy1; // bottom + double dx2 = y1 * dx1 / (nHeight / 2.0); + double x2 = x1 + dx2; // right + rRect.X = rShape.getPosition().X; // left = 0 + rRect.Y = rShape.getPosition().Y + y1; + rRect.Width = x2; + rRect.Height = y2 - y1; + return true; + } + default: + return false; + } +} + +basegfx::B2DPoint getCenter(const awt::Rectangle& rRect) +{ + return basegfx::B2DPoint(rRect.X + rRect.Width / 2.0, rRect.Y + rRect.Height / 2.0); +} +} // end namespace + +ContextHandlerRef Transform2DContext::onCreateContext( sal_Int32 aElementToken, const AttributeList& rAttribs ) +{ + if (mbtxXfrm) + { + // The child elements and of a element describe the position and + // size of the text area rectangle. We cannot change the text area rectangle directly, because + // currently we depend on the geometry definition of the preset. As workaround we change the + // indents to move and scale the text block. The needed shifts are calculated here as moTextOff + // and used in TextBodyProperties::pushTextDistances(). + awt::Rectangle aPresetTextRectangle; + if (!ConstructPresetTextRectangle(mrShape, aPresetTextRectangle)) + return nullptr; // faulty shape or text area calculation not implemented + + switch (aElementToken) + { + case A_TOKEN(off): + { + // need too, so only save values here. + const OUString sXValue = rAttribs.getStringDefaulted(XML_x); + const OUString sYValue = rAttribs.getStringDefaulted(XML_y); + if (!sXValue.isEmpty() && !sYValue.isEmpty()) + { + mno_txXfrmOffX = sXValue.toInt32(); + mno_txXfrmOffY = sYValue.toInt32(); + } + } + break; + case A_TOKEN(ext): + { + // Build text frame from txXfrm element + awt::Rectangle aUnrotatedTxXfrm = aPresetTextRectangle; // dummy initialize + const OUString sCXValue = rAttribs.getStringDefaulted(XML_cx); + const OUString sCYValue = rAttribs.getStringDefaulted(XML_cy); + if (!sCXValue.isEmpty() && !sCYValue.isEmpty()) + { + aUnrotatedTxXfrm.Width = sCXValue.toInt32(); + aUnrotatedTxXfrm.Height = sCYValue.toInt32(); + } + if (mno_txXfrmOffX.has_value() && mno_txXfrmOffY.has_value()) + { + aUnrotatedTxXfrm.X = mno_txXfrmOffX.value(); + aUnrotatedTxXfrm.Y = mno_txXfrmOffY.value(); + } + + // Has the txXfrm an own rotation beyond compensation of the shape rotation? + // Happens e.g. in diagram type 'Detailed Process'. + sal_Int32 nAngleDiff + = (mrShape.getRotation() + mno_txXfrmRot.value_or(0)) % 21600000; + if (nAngleDiff != 0) + { + // Rectangle aUnrotatedTxXfrm rotates around its center not around text area + // center from preset. We shift aUnrotatedTxXfrm so that it is at the original + // position after rotation of text area rectangle from preset. + basegfx::B2DPoint aXfrmCenter(getCenter(aUnrotatedTxXfrm)); + basegfx::B2DPoint aPresetCenter(getCenter(aPresetTextRectangle)); + + if (!aXfrmCenter.equal(aPresetCenter)) + { + double fAngleRad = basegfx::deg2rad(nAngleDiff / 60000.0); + basegfx::B2DHomMatrix aRotMatrix( + basegfx::utils::createRotateAroundPoint(aPresetCenter, -fAngleRad)); + basegfx::B2DPoint aNewCenter(aRotMatrix * aXfrmCenter); + aUnrotatedTxXfrm.X += aNewCenter.getX() - aXfrmCenter.getX(); + aUnrotatedTxXfrm.Y += aNewCenter.getY() - aXfrmCenter.getY(); + } + } + + if(mrShape.getTextBody()) + { + // Calculate indent offsets + sal_Int32 nOffsetLeft = aUnrotatedTxXfrm.X - aPresetTextRectangle.X; + sal_Int32 nOffsetTop = aUnrotatedTxXfrm.Y - aPresetTextRectangle.Y; + sal_Int32 nOffsetRight + = aPresetTextRectangle.Width - aUnrotatedTxXfrm.Width - nOffsetLeft; + sal_Int32 nOffsetBottom + = aPresetTextRectangle.Height - aUnrotatedTxXfrm.Height - nOffsetTop; + + if (nOffsetLeft) + mrShape.getTextBody()->getTextProperties().moTextOffLeft + = GetCoordinate(nOffsetLeft); + if (nOffsetTop) + mrShape.getTextBody()->getTextProperties().moTextOffUpper + = GetCoordinate(nOffsetTop); + if (nOffsetRight) + mrShape.getTextBody()->getTextProperties().moTextOffRight + = GetCoordinate(nOffsetRight); + if (nOffsetBottom) + mrShape.getTextBody()->getTextProperties().moTextOffLower + = GetCoordinate(nOffsetBottom); + } + } + break; + } + return nullptr; + } // end of case mbtxXfrm + + switch( aElementToken ) + { + case A_TOKEN( off ): // horz/vert translation + mrShape.setPosition( awt::Point( rAttribs.getInteger( XML_x, 0 ), rAttribs.getInteger( XML_y, 0 ) ) ); + break; + case A_TOKEN( ext ): // horz/vert size + mrShape.setSize( awt::Size( rAttribs.getInteger( XML_cx, 0 ), rAttribs.getInteger( XML_cy, 0 ) ) ); + break; + case A_TOKEN( chOff ): // horz/vert translation of children + mrShape.setChildPosition( awt::Point( rAttribs.getInteger( XML_x, 0 ), rAttribs.getInteger( XML_y, 0 ) ) ); + break; + case A_TOKEN( chExt ): // horz/vert size of children + { + sal_Int32 nChExtCx = rAttribs.getInteger(XML_cx, 0); + + if(nChExtCx == 0) + nChExtCx = mrShape.getSize().Width; + + sal_Int32 nChExtCy = rAttribs.getInteger(XML_cy, 0); + + 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: */ -- cgit v1.2.3