22 #ifndef INCLUDED_XMLOFF_SOURCE_CHART_PROPERTYMAP_HXX
23 #define XML_SCH_CREATE_GLOBAL_MAPS
25 #undef XML_SCH_CREATE_GLOBAL_MAPS
48 #include <com/sun/star/awt/Size.hpp>
49 #include <com/sun/star/drawing/LineStyle.hpp>
50 #include <com/sun/star/drawing/FillStyle.hpp>
51 #include <com/sun/star/chart/ChartAxisMarks.hpp>
52 #include <com/sun/star/chart/ChartDataCaption.hpp>
53 #include <com/sun/star/chart2/MovingAverageType.hpp>
54 #include <com/sun/star/chart2/XChartDocument.hpp>
55 #include <com/sun/star/chart2/data/XRangeXMLConversion.hpp>
56 #include <com/sun/star/graphic/XGraphic.hpp>
58 #include <rtl/ustrbuf.hxx>
60 #define SCH_XML_SETFLAG( status, flag ) (status)|= (flag)
61 #define SCH_XML_UNSETFLAG( status, flag ) (status) = ((status) | (flag)) - (flag)
71 {
XML_NONE, drawing::LineStyle_NONE },
73 {
XML_DASH, drawing::LineStyle_DASH },
79 {
XML_NONE, drawing::FillStyle_NONE },
222 bool bEnableFoFontFamily,
223 std::vector< XMLPropertyState >& rProperties,
224 const uno::Reference< beans::XPropertySet >& rPropSet )
const
226 OUString aAutoPropName;
227 bool bCheckAuto =
false;
230 for(
auto& rProperty : rProperties )
239 aAutoPropName =
"AutoMin";
243 aAutoPropName =
"AutoMax";
247 aAutoPropName =
"AutoStepMain";
251 aAutoPropName =
"AutoStepHelp";
256 aAutoPropName =
"AutoOrigin";
262 rProperty.mnIndex = -1;
272 rProperty.mnIndex = -1;
283 uno::Any aAny = rPropSet->getPropertyValue( aAutoPropName );
286 rProperty.mnIndex = -1;
288 catch(
const beans::UnknownPropertyException&)
302 const ::std::vector< XMLPropertyState > *pProperties,
303 sal_uInt32 nIdx )
const
309 uno::Reference<graphic::XGraphic>
xGraphic;
310 rProperty.
maValue >>= xGraphic;
312 OUString sInternalURL;
317 OUString aOutMimeType;
320 if (!sInternalURL.isEmpty())
326 sal_uInt32 nPropIndex = rProperty.
mnIndex;
344 rProperty.
maValue >>= aSeparator;
346 if( !aSeparator.isEmpty() )
348 sal_uInt32 nPropIndex = rProperty.
mnIndex;
362 nFlags, pProperties, nIdx );
369 OUString convertRange(
const OUString & rRange,
const uno::Reference< chart2::XChartDocument > & xDoc )
371 OUString aResult = rRange;
374 uno::Reference< chart2::data::XRangeXMLConversion > xConversion(
375 xDoc->getDataProvider(), uno::UNO_QUERY );
378 if( xConversion.is())
379 aResult = xConversion->convertRangeToXML( rRange );
381 catch (css::lang::IllegalArgumentException&)
394 const ::std::vector< XMLPropertyState > *pProperties,
395 sal_uInt32 nIdx )
const
397 bool bHandled =
false;
407 OUStringBuffer sValueBuffer;
417 bValue = (( nValue & chart::ChartAxisMarks::INNER ) == chart::ChartAxisMarks::INNER );
423 bValue = (( nValue & chart::ChartAxisMarks::OUTER ) == chart::ChartAxisMarks::OUTER );
430 double fVal =
static_cast<double>(nValue) / 100.0;
437 if( ( nValue & chart::ChartDataCaption::VALUE ) == chart::ChartDataCaption::VALUE )
439 if( ( nValue & chart::ChartDataCaption::PERCENT ) == chart::ChartDataCaption::PERCENT )
450 else if(( nValue & chart::ChartDataCaption::PERCENT ) == chart::ChartDataCaption::PERCENT )
458 bValue = (( nValue & chart::ChartDataCaption::TEXT ) == chart::ChartDataCaption::TEXT );
463 bValue = (( nValue & chart::ChartDataCaption::SYMBOL ) == chart::ChartDataCaption::SYMBOL );
468 bValue = (( nValue & chart::ChartDataCaption::DATA_SERIES ) == chart::ChartDataCaption::DATA_SERIES );
492 rProperty.
maValue >>= aRangeStr;
493 sValueBuffer.append(convertRange(aRangeStr,
mxChartDoc));
500 OUString aServiceName;
501 rProperty.
maValue >>= aServiceName;
502 if (aServiceName ==
"com.sun.star.chart2.LinearRegressionCurve")
504 else if (aServiceName ==
"com.sun.star.chart2.LogarithmicRegressionCurve")
506 else if (aServiceName ==
"com.sun.star.chart2.ExponentialRegressionCurve")
508 else if (aServiceName ==
"com.sun.star.chart2.PotentialRegressionCurve")
524 if (nValue == MovingAverageType::Prior)
526 else if (nValue == MovingAverageType::Central)
528 else if (nValue == MovingAverageType::AveragedAbscissa)
540 if( !sValueBuffer.isEmpty())
542 OUString sValue = sValueBuffer.makeStringAndClear();
543 sAttrName = rNamespaceMap.
GetQNameByKey( nNameSpace, sAttrName );
563 mrImport( const_cast<
SvXMLImport & > ( _rImport ))
568 uno::Reference< frame::XModel > xEmptyModel;
587 ::std::vector< XMLPropertyState >& rProperties,
593 bool bRet = (nContextId != 0);
629 nValue =
static_cast<sal_Int32
>( fVal * 100.0 );
638 SCH_XML_UNSETFLAG( nValue, chart::ChartDataCaption::VALUE | chart::ChartDataCaption::PERCENT );
640 SCH_XML_SETFLAG( nValue, chart::ChartDataCaption::VALUE | chart::ChartDataCaption::PERCENT );
703 rProperty.
maValue <<= OUString(
"com.sun.star.chart2.LinearRegressionCurve");
705 rProperty.
maValue <<= OUString(
"com.sun.star.chart2.LogarithmicRegressionCurve");
707 rProperty.
maValue <<= OUString(
"com.sun.star.chart2.ExponentialRegressionCurve");
709 rProperty.
maValue <<= OUString(
"com.sun.star.chart2.PotentialRegressionCurve");
711 rProperty.
maValue <<= OUString(
"com.sun.star.chart2.PolynomialRegressionCurve");
713 rProperty.
maValue <<= OUString(
"com.sun.star.chart2.MovingAverageRegressionCurve");
720 rProperty.
maValue <<= MovingAverageType::Prior;
722 rProperty.
maValue <<= MovingAverageType::Central;
724 rProperty.
maValue <<= MovingAverageType::AveragedAbscissa;
726 rProperty.
maValue <<= MovingAverageType::Prior;
#define XML_SCH_CONTEXT_SPECIAL_TICKS_MIN_OUTER
virtual const XMLPropertyHandler * GetPropertyHandler(sal_Int32 nType) const override
This method retrieves a PropertyHandler for the given XML-type.
bool convertMeasureToCore(sal_Int32 &rValue, std::u16string_view rString, sal_Int32 nMin=SAL_MIN_INT32, sal_Int32 nMax=SAL_MAX_INT32) const
convert string to measure with meCoreMeasureUnit, using optional min and max values ...
#define XML_SCH_TYPE_SYMBOL_TYPE
#define XML_SCH_TYPE_ERROR_BAR_STYLE
#define XML_SCH_CONTEXT_SPECIAL_LABEL_SEPARATOR
virtual void handleElementItem(SvXMLExport &rExport, const XMLPropertyState &rProperty, SvXmlExportFlags nFlags, const ::std::vector< XMLPropertyState > *pProperties, sal_uInt32 nIdx) const
this method is called for every item that has the MID_FLAG_ELEMENT_EXPORT flag set ...
virtual const XMLPropertyHandler * GetPropertyHandler(sal_Int32 nType) const
This method retrieves a PropertyHandler for the given XML-type.
#define XML_SCH_CONTEXT_SPECIAL_MOVING_AVERAGE_TYPE
the SvXMLTypeConverter converts values of various types from their internal representation to the tex...
#define XML_SCH_TYPE_AXIS_POSITION_VALUE
#define XML_SCH_TYPE_TEXT_ORIENTATION
#define XML_SCH_TYPE_NAMED_SYMBOL
constexpr sal_uInt16 XML_NAMESPACE_XLINK
bool IsXMLToken(std::u16string_view rString, enum XMLTokenEnum eToken)
compare eToken to the string
static SvXMLExportPropertyMapper * CreateShapePropMapper(SvXMLExport &rExport)
returns the export property mapper for external chaining
XMLChartExportPropertyMapper(const rtl::Reference< XMLPropertySetMapper > &rMapper, SvXMLExport &rExport)
css::uno::Reference< css::graphic::XGraphic > loadGraphicByURL(OUString const &rURL)
virtual void handleSpecialItem(SvXMLAttributeList &rAttrList, const XMLPropertyState &rProperty, const SvXMLUnitConverter &rUnitConverter, const SvXMLNamespaceMap &rNamespaceMap, const ::std::vector< XMLPropertyState > *pProperties, sal_uInt32 nIdx) const
this method is called for every item that has the MID_FLAG_SPECIAL_ITEM_EXPORT flag set ...
#define XML_SCH_CONTEXT_SPECIAL_DATA_LABEL_NUMBER
#define XML_SCH_CONTEXT_SPECIAL_DATA_LABEL_TEXT
#define XML_SCH_TYPE_TICK_MARK_POSITION
#define XML_SCH_CONTEXT_STEP_HELP_COUNT
static void convertDouble(OUStringBuffer &rBuffer, double fNumber, bool bWriteUnits, sal_Int16 nSourceUnit, sal_Int16 nTargetUnit)
PropertyHandler for a generic xml enumeration type:
#define XML_SCH_CONTEXT_LINES_USED
css::uno::Any const & rValue
#define XML_SCH_CONTEXT_SPECIAL_TICKS_MAJ_INNER
#define XML_SCH_CONTEXT_SPECIAL_SYMBOL_IMAGE
#define XML_SCH_TYPE_SOLID_TYPE
virtual void ContextFilter(bool bEnableFoFontFamily,::std::vector< XMLPropertyState > &rProperties, const css::uno::Reference< css::beans::XPropertySet > &rPropSet) const
Application-specific filter.
#define XML_SCH_CONTEXT_SPECIAL_TEXT_ROTATION
#define XML_SCH_TYPE_LABEL_BORDER_OPACITY
void AddAttribute(sal_uInt16 nPrefix, const char *pName, const OUString &rValue)
#define XML_SCH_CONTEXT_SPECIAL_SYMBOL_IMAGE_NAME
virtual ~XMLChartPropHdlFactory() override
#define XML_SCH_CONTEXT_STEP_MAIN
#define XML_SCH_CONTEXT_SPECIAL_SYMBOL_WIDTH
OUString AddEmbeddedXGraphic(css::uno::Reference< css::graphic::XGraphic > const &rxGraphic, OUString &rOutMimeType, OUString const &rRequestedName=OUString())
#define XML_SCH_TYPE_LABEL_PLACEMENT_TYPE
#define XML_SCH_CONTEXT_MIN
#define XML_SCH_TYPE_ERROR_INDICATOR_UPPER
virtual bool handleSpecialItem(XMLPropertyState &rProperty,::std::vector< XMLPropertyState > &rProperties, const OUString &rValue, const SvXMLUnitConverter &rUnitConverter, const SvXMLNamespaceMap &rNamespaceMap) const override
this method is called for every item that has the MID_FLAG_SPECIAL_ITEM_IMPORT flag set ...
SvtSaveOptions::ODFSaneDefaultVersion getSaneDefaultVersion() const
returns the deterministic version for odf export
#define XML_SCH_TYPE_INTERPOLATION
virtual void handleElementItem(SvXMLExport &rExport, const XMLPropertyState &rProperty, SvXmlExportFlags nFlags, const ::std::vector< XMLPropertyState > *pProperties, sal_uInt32 nIdx) const override
this method is called for every item that has the MID_FLAG_ELEMENT_EXPORT flag set ...
#define XML_SCH_CONTEXT_ORIGIN
virtual bool handleSpecialItem(XMLPropertyState &rProperty,::std::vector< XMLPropertyState > &rProperties, const OUString &rValue, const SvXMLUnitConverter &rUnitConverter, const SvXMLNamespaceMap &rNamespaceMap) const
this method is called for every item that has the MID_FLAG_SPECIAL_ITEM_IMPORT flag set ...
void setChartDoc(const css::uno::Reference< css::chart2::XChartDocument > &xChartDoc)
SvXMLExport const *const m_pExport
#define XML_SCH_CONTEXT_SPECIAL_ERRORBAR_RANGE
virtual ~XMLChartExportPropertyMapper() override
#define XML_SCH_TYPE_LABEL_BORDER_STYLE
#define XML_SCH_TYPE_LABEL_FILL_STYLE
rtl::Reference< XMLPropertySetMapper > maPropMapper
OUString GetQNameByKey(sal_uInt16 nKey, const OUString &rLocalName, bool bCache=true) const
#define XML_SCH_TYPE_AXIS_POSITION
void ChainExportMapper(const rtl::Reference< SvXMLExportPropertyMapper > &rMapper)
#define XML_SCH_TYPE_DATAROWSOURCE
static bool convertBool(bool &rBool, std::u16string_view rString)
virtual void finished(::std::vector< XMLPropertyState > &rProperties, sal_Int32 nStartIndex, sal_Int32 nEndIndex) const override
This method is called when all attributes have benn processed.
#define XML_SCH_CONTEXT_SPECIAL_DATA_LABEL_SERIES
#define XML_SCH_CONTEXT_MAX
Map an XMLTokenEnum to an enum value.
XMLChartPropHdlFactory(SvXMLExport const *)
#define XML_SCH_CONTEXT_SPECIAL_REGRESSION_TYPE
XMLChartPropertySetMapper(SvXMLExport const *pExport)
const OUString & GetXMLToken(enum XMLTokenEnum eToken)
return the OUString representation for eToken
#define SCH_XML_UNSETFLAG(status, flag)
Handling of tokens in XML:
#define XML_SCH_CONTEXT_SPECIAL_TICKS_MAJ_OUTER
Smart struct to transport an Any with an index to the appropriate property-name.
virtual ~XMLChartImportPropertyMapper() override
virtual ~XMLChartPropertySetMapper() override
#define XML_SCH_CONTEXT_SPECIAL_NUMBER_FORMAT
#define XML_SCH_CONTEXT_STOCK_WITH_VOLUME
virtual void handleSpecialItem(SvXMLAttributeList &rAttrList, const XMLPropertyState &rProperty, const SvXMLUnitConverter &rUnitConverter, const SvXMLNamespaceMap &rNamespaceMap, const ::std::vector< XMLPropertyState > *pProperties, sal_uInt32 nIdx) const override
this method is called for every item that has the MID_FLAG_SPECIAL_ITEM_EXPORT flag set ...
bool AddEmbeddedXGraphicAsBase64(css::uno::Reference< css::graphic::XGraphic > const &rxGraphic)
#define XML_SCH_CONTEXT_SPECIAL_DATA_LABEL_SYMBOL
void AddAttribute(const OUString &sName, const OUString &sValue)
static SvXMLExportPropertyMapper * CreateParaExtPropMapper(SvXMLExport &rExport)
Abstract base-class for different XML-types.
virtual void ContextFilter(bool bEnableFoFontFamily,::std::vector< XMLPropertyState > &rProperties, const css::uno::Reference< css::beans::XPropertySet > &rPropSet) const override
Application-specific filter.
#define XML_SCH_TYPE_AXIS_ARRANGEMENT
#define XML_SCH_TYPE_AXIS_LABEL_POSITION
#define SCH_XML_SETFLAG(status, flag)
#define XML_SCH_CONTEXT_SPECIAL_TICKS_MIN_INNER
#define XML_SCH_CONTEXT_SPECIAL_SYMBOL_HEIGHT
void ChainImportMapper(const rtl::Reference< SvXMLImportPropertyMapper > &rMapper)
css::uno::Any const SvXMLExport & rExport
#define XML_SCH_TYPE_ERROR_INDICATOR_LOWER
SvXMLExportFlags getExportFlags() const
#define XML_SCH_TYPE_MISSING_VALUE_TREATMENT
Reference< XGraphic > xGraphic
css::uno::Reference< css::chart2::XChartDocument > mxChartDoc
static SvXMLImportPropertyMapper * CreateShapePropMapper(const css::uno::Reference< css::frame::XModel > &rModel, SvXMLImport &rImport)
creates a property mapper for external chaining
void convertMeasureToXML(OUStringBuffer &rBuffer, sal_Int32 nMeasure) const
convert measure to string: from meCoreMeasureUnit to meXMLMeasureUnit
constexpr sal_uInt16 XML_NAMESPACE_STYLE
const rtl::Reference< XMLPropertySetMapper > & getPropertySetMapper() const
XMLChartImportPropertyMapper(const rtl::Reference< XMLPropertySetMapper > &rMapper, const SvXMLImport &rImport)
void PutHdlCache(sal_Int32 nType, const XMLPropertyHandler *pHdl) const
Puts a PropertyHandler into the internal cache.