summaryrefslogtreecommitdiffstats
path: root/chart2/inc
diff options
context:
space:
mode:
Diffstat (limited to 'chart2/inc')
-rw-r--r--chart2/inc/ChartModel.hxx491
-rw-r--r--chart2/inc/ChartTypeManager.hxx74
-rw-r--r--chart2/inc/ChartView.hxx256
-rw-r--r--chart2/inc/SpecialCharacters.hxx18
-rw-r--r--chart2/inc/bitmaps.hlst132
-rw-r--r--chart2/inc/chart.hrc24
-rw-r--r--chart2/inc/pch/precompiled_chartcontroller.cxx12
-rw-r--r--chart2/inc/pch/precompiled_chartcontroller.hxx515
-rw-r--r--chart2/inc/pch/precompiled_chartcore.cxx12
-rw-r--r--chart2/inc/pch/precompiled_chartcore.hxx303
-rw-r--r--chart2/inc/strings.hrc198
-rw-r--r--chart2/inc/unonames.hxx38
12 files changed, 2073 insertions, 0 deletions
diff --git a/chart2/inc/ChartModel.hxx b/chart2/inc/ChartModel.hxx
new file mode 100644
index 0000000000..1255c4982d
--- /dev/null
+++ b/chart2/inc/ChartModel.hxx
@@ -0,0 +1,491 @@
+/* -*- 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 <LifeTime.hxx>
+
+#include <com/sun/star/frame/XStorable2.hpp>
+#include <com/sun/star/util/XModifiable.hpp>
+#include <com/sun/star/util/XCloseable.hpp>
+#include <com/sun/star/util/XUpdatable.hpp>
+#include <com/sun/star/document/XDocumentPropertiesSupplier.hpp>
+#include <com/sun/star/document/XUndoManagerSupplier.hpp>
+#include <com/sun/star/lang/XMultiServiceFactory.hpp>
+#include <com/sun/star/lang/XServiceInfo.hpp>
+#include <com/sun/star/lang/XInitialization.hpp>
+#include <com/sun/star/util/XCloneable.hpp>
+#include <com/sun/star/embed/XVisualObject.hpp>
+#include <com/sun/star/document/XStorageBasedDocument.hpp>
+#include <com/sun/star/lang/XUnoTunnel.hpp>
+#include <com/sun/star/util/XNumberFormatsSupplier.hpp>
+#include <com/sun/star/container/XChild.hpp>
+#include <com/sun/star/chart2/data/XDataSource.hpp>
+#include <com/sun/star/qa/XDumper.hpp>
+
+// public API
+#include <com/sun/star/chart2/data/XDataReceiver.hpp>
+
+#include <com/sun/star/chart2/XChartDocument.hpp>
+#include <com/sun/star/chart2/XTitled.hpp>
+
+#include <com/sun/star/frame/XLoadable.hpp>
+#include <com/sun/star/datatransfer/XTransferable.hpp>
+
+#include <osl/mutex.hxx>
+#include <rtl/ref.hxx>
+#include <cppuhelper/implbase.hxx>
+#include <comphelper/interfacecontainer2.hxx>
+#include <vcl/GraphicObject.hxx>
+
+#include <memory>
+
+typedef struct _xmlTextWriter* xmlTextWriterPtr;
+
+namespace com::sun::star::awt { class XRequestCallback; }
+namespace com::sun::star::chart2::data { class XDataProvider; }
+namespace com::sun::star::document { class XFilter; }
+namespace com::sun::star::embed { class XStorage; }
+namespace com::sun::star::frame { class XModel; }
+namespace com::sun::star::uno { class XComponentContext; }
+namespace com::sun::star::uno { class XAggregation; }
+
+class SvNumberFormatter;
+class SvNumberFormatsSupplierObj;
+
+namespace chart
+{
+class Diagram;
+class ChartTypeManager;
+class ChartTypeTemplate;
+class InternalDataProvider;
+class NameContainer;
+class PageBackground;
+class RangeHighlighter;
+class Title;
+
+namespace impl
+{
+
+// Note: needed for queryInterface (if it calls the base-class implementation)
+typedef cppu::WeakImplHelper<
+// css::frame::XModel //comprehends XComponent (required interface), base of XChartDocument
+ css::util::XCloseable //comprehends XCloseBroadcaster
+ ,css::frame::XStorable2 //(extension of XStorable)
+ ,css::util::XModifiable //comprehends XModifyBroadcaster (required interface)
+ ,css::lang::XServiceInfo
+ ,css::lang::XInitialization
+ ,css::chart2::XChartDocument // derived from XModel
+ ,css::chart2::data::XDataReceiver // public API
+ ,css::chart2::XTitled
+ ,css::frame::XLoadable
+ ,css::util::XCloneable
+ ,css::embed::XVisualObject
+ ,css::lang::XMultiServiceFactory
+ ,css::document::XStorageBasedDocument
+ ,css::lang::XUnoTunnel
+ ,css::util::XNumberFormatsSupplier
+ ,css::container::XChild
+ ,css::util::XModifyListener
+ ,css::datatransfer::XTransferable
+ ,css::document::XDocumentPropertiesSupplier
+ ,css::chart2::data::XDataSource
+ ,css::document::XUndoManagerSupplier
+ ,css::util::XUpdatable
+ ,css::qa::XDumper
+ >
+ ChartModel_Base;
+}
+
+class UndoManager;
+class ChartView;
+
+class OOO_DLLPUBLIC_CHARTTOOLS SAL_LOPLUGIN_ANNOTATE("crosscast") ChartModel final :
+ public impl::ChartModel_Base
+{
+
+private:
+ mutable ::apphelper::CloseableLifeTimeManager m_aLifeTimeManager;
+
+ mutable ::osl::Mutex m_aModelMutex;
+ bool volatile m_bReadOnly;
+ bool volatile m_bModified;
+ sal_Int32 m_nInLoad;
+ bool volatile m_bUpdateNotificationsPending;
+
+ bool mbTimeBased;
+
+ mutable rtl::Reference<ChartView> mxChartView;
+
+ OUString m_aResource;
+ css::uno::Sequence< css::beans::PropertyValue > m_aMediaDescriptor;
+ css::uno::Reference< css::document::XDocumentProperties > m_xDocumentProperties;
+ ::rtl::Reference< UndoManager > m_pUndoManager;
+
+ ::comphelper::OInterfaceContainerHelper2 m_aControllers;
+ css::uno::Reference< css::frame::XController > m_xCurrentController;
+ sal_uInt16 m_nControllerLockCount;
+
+ css::uno::Reference< css::uno::XComponentContext > m_xContext;
+ css::uno::Reference< css::uno::XAggregation > m_xOldModelAgg;
+
+ css::uno::Reference< css::embed::XStorage > m_xStorage;
+ //the content of this should be always synchronized with the current m_xViewWindow size. The variable is necessary to hold the information as long as no view window exists.
+ css::awt::Size m_aVisualAreaSize;
+ css::uno::Reference< css::frame::XModel > m_xParent;
+ rtl::Reference< ::chart::RangeHighlighter > m_xRangeHighlighter;
+ css::uno::Reference<css::awt::XRequestCallback> m_xPopupRequest;
+ std::vector< GraphicObject > m_aGraphicObjectVector;
+
+ css::uno::Reference< css::chart2::data::XDataProvider > m_xDataProvider;
+ /** is only valid if m_xDataProvider is set. If m_xDataProvider is set to an
+ external data provider this reference must be set to 0
+ */
+ rtl::Reference< InternalDataProvider > m_xInternalDataProvider;
+
+ rtl::Reference< SvNumberFormatsSupplierObj > m_xOwnNumberFormatsSupplier;
+ css::uno::Reference< css::util::XNumberFormatsSupplier >
+ m_xNumberFormatsSupplier;
+ std::unique_ptr< SvNumberFormatter > m_apSvNumberFormatter; // #i113784# avoid memory leak
+
+ rtl::Reference< ::chart::ChartTypeManager >
+ m_xChartTypeManager;
+
+ // Diagram Access
+ rtl::Reference< ::chart::Diagram > m_xDiagram;
+
+ rtl::Reference< ::chart::Title > m_xTitle;
+
+ rtl::Reference< ::chart::PageBackground > m_xPageBackground;
+
+ rtl::Reference< ::chart::NameContainer > m_xXMLNamespaceMap;
+
+private:
+ //private methods
+
+ OUString impl_g_getLocation();
+
+ bool
+ impl_isControllerConnected( const css::uno::Reference< com::sun::star::frame::XController >& xController );
+
+ /// @throws css::uno::RuntimeException
+ css::uno::Reference< css::frame::XController >
+ impl_getCurrentController();
+
+ /// @throws css::uno::RuntimeException
+ void
+ impl_notifyModifiedListeners();
+ /// @throws css::uno::RuntimeException
+ void
+ impl_notifyCloseListeners();
+ /// @throws css::uno::RuntimeException
+ void
+ impl_notifyStorageChangeListeners();
+
+ void impl_store(
+ const css::uno::Sequence< css::beans::PropertyValue >& rMediaDescriptor,
+ const css::uno::Reference< css::embed::XStorage > & xStorage );
+ void impl_load(
+ const css::uno::Sequence< css::beans::PropertyValue >& rMediaDescriptor,
+ const css::uno::Reference< css::embed::XStorage >& xStorage );
+ void impl_loadGraphics(
+ const css::uno::Reference< ::com::sun::star::embed::XStorage >& xStorage );
+ css::uno::Reference< css::document::XFilter >
+ impl_createFilter( const css::uno::Sequence< css::beans::PropertyValue > & rMediaDescriptor );
+
+ rtl::Reference< ::chart::ChartTypeTemplate > impl_createDefaultChartTypeTemplate();
+ css::uno::Reference< css::chart2::data::XDataSource > impl_createDefaultData();
+
+ void impl_adjustAdditionalShapesPositionAndSize(
+ const css::awt::Size& aVisualAreaSize );
+
+ void insertDefaultChart();
+
+public:
+ ChartModel() = delete;
+ ChartModel(css::uno::Reference< css::uno::XComponentContext > xContext);
+ explicit ChartModel( const ChartModel & rOther );
+ virtual ~ChartModel() override;
+
+ // css::lang::XServiceInfo
+
+ virtual OUString SAL_CALL getImplementationName() override;
+ virtual sal_Bool SAL_CALL supportsService( const OUString& ServiceName ) override;
+ virtual css::uno::Sequence< OUString > SAL_CALL getSupportedServiceNames() override;
+
+ // css::lang::XInitialization
+ virtual void SAL_CALL initialize( const css::uno::Sequence< css::uno::Any >& aArguments ) override;
+
+ // css::frame::XModel (required interface)
+
+ virtual sal_Bool SAL_CALL
+ attachResource( const OUString& rURL,
+ const css::uno::Sequence< css::beans::PropertyValue >& rMediaDescriptor ) override;
+
+ virtual OUString SAL_CALL
+ getURL() override;
+
+ virtual css::uno::Sequence< css::beans::PropertyValue > SAL_CALL
+ getArgs() override;
+
+ virtual void SAL_CALL
+ connectController( const css::uno::Reference< css::frame::XController >& xController ) override;
+
+ virtual void SAL_CALL
+ disconnectController( const css::uno::Reference< css::frame::XController >& xController ) override;
+
+ virtual void SAL_CALL
+ lockControllers() override;
+
+ virtual void SAL_CALL
+ unlockControllers() override;
+
+ virtual sal_Bool SAL_CALL
+ hasControllersLocked() override;
+
+ virtual css::uno::Reference< css::frame::XController > SAL_CALL
+ getCurrentController() override;
+
+ virtual void SAL_CALL
+ setCurrentController( const css::uno::Reference< css::frame::XController >& xController ) override;
+
+ virtual css::uno::Reference< css::uno::XInterface > SAL_CALL
+ getCurrentSelection() override;
+
+ // css::lang::XComponent (base of XModel)
+ virtual void SAL_CALL
+ dispose() override;
+
+ virtual void SAL_CALL
+ addEventListener( const css::uno::Reference< css::lang::XEventListener > & xListener ) override;
+
+ virtual void SAL_CALL
+ removeEventListener( const css::uno::Reference< css::lang::XEventListener > & xListener ) override;
+
+ // css::util::XCloseable
+ virtual void SAL_CALL
+ close( sal_Bool bDeliverOwnership ) override;
+
+ // css::util::XCloseBroadcaster (base of XCloseable)
+ virtual void SAL_CALL
+ addCloseListener( const css::uno::Reference< css::util::XCloseListener > & xListener ) override;
+
+ virtual void SAL_CALL
+ removeCloseListener( const css::uno::Reference< css::util::XCloseListener > & xListener ) override;
+
+ // css::frame::XStorable2 (extension of XStorable)
+ virtual void SAL_CALL storeSelf(
+ const css::uno::Sequence< css::beans::PropertyValue >& rMediaDescriptor ) override;
+
+ // css::frame::XStorable (required interface)
+ virtual sal_Bool SAL_CALL
+ hasLocation() override;
+
+ virtual OUString SAL_CALL
+ getLocation() override;
+
+ virtual sal_Bool SAL_CALL
+ isReadonly() override;
+
+ virtual void SAL_CALL
+ store() override;
+
+ virtual void SAL_CALL
+ storeAsURL( const OUString& rURL,
+ const css::uno::Sequence< css::beans::PropertyValue >& rMediaDescriptor ) override;
+
+ virtual void SAL_CALL
+ storeToURL( const OUString& rURL,
+ const css::uno::Sequence< css::beans::PropertyValue >& rMediaDescriptor ) override;
+
+ // css::util::XModifiable (required interface)
+ virtual sal_Bool SAL_CALL
+ isModified() override;
+
+ virtual void SAL_CALL
+ setModified( sal_Bool bModified ) override;
+
+ // css::util::XModifyBroadcaster (base of XModifiable)
+ virtual void SAL_CALL
+ addModifyListener( const css::uno::Reference< css::util::XModifyListener >& xListener ) override;
+
+ virtual void SAL_CALL
+ removeModifyListener( const css::uno::Reference< css::util::XModifyListener >& xListener ) override;
+
+ // ____ XModifyListener ____
+ virtual void SAL_CALL modified(
+ const css::lang::EventObject& aEvent ) override;
+
+ // ____ XEventListener (base of XModifyListener) ____
+ virtual void SAL_CALL disposing(
+ const css::lang::EventObject& Source ) override;
+
+ // ____ datatransferable::XTransferable ____
+ virtual css::uno::Any SAL_CALL getTransferData(
+ const css::datatransfer::DataFlavor& aFlavor ) override;
+ virtual css::uno::Sequence< css::datatransfer::DataFlavor > SAL_CALL getTransferDataFlavors() override;
+ virtual sal_Bool SAL_CALL isDataFlavorSupported(
+ const css::datatransfer::DataFlavor& aFlavor ) override;
+
+ // lang::XTypeProvider (override method of WeakImplHelper)
+ virtual css::uno::Sequence< css::uno::Type > SAL_CALL
+ getTypes() override;
+
+ // ____ document::XDocumentPropertiesSupplier ____
+ virtual css::uno::Reference< css::document::XDocumentProperties > SAL_CALL
+ getDocumentProperties( ) override;
+
+ // ____ document::XUndoManagerSupplier ____
+ virtual css::uno::Reference< css::document::XUndoManager > SAL_CALL
+ getUndoManager( ) override;
+
+ // css::chart2::XChartDocument
+ virtual css::uno::Reference< css::chart2::XDiagram > SAL_CALL
+ getFirstDiagram() override;
+ virtual void SAL_CALL setFirstDiagram(
+ const css::uno::Reference< css::chart2::XDiagram >& xDiagram ) override;
+ virtual void SAL_CALL
+ createInternalDataProvider( sal_Bool bCloneExistingData ) override;
+ virtual sal_Bool SAL_CALL hasInternalDataProvider() override;
+ virtual css::uno::Reference< css::chart2::data::XDataProvider > SAL_CALL
+ getDataProvider() override;
+ virtual void SAL_CALL
+ setChartTypeManager( const css::uno::Reference< css::chart2::XChartTypeManager >& xNewManager ) override;
+ virtual css::uno::Reference< css::chart2::XChartTypeManager > SAL_CALL
+ getChartTypeManager() override;
+ virtual css::uno::Reference< css::beans::XPropertySet > SAL_CALL
+ getPageBackground() override;
+
+ virtual void SAL_CALL createDefaultChart() override;
+
+ // ____ XDataReceiver (public API) ____
+ virtual void SAL_CALL
+ attachDataProvider( const css::uno::Reference< css::chart2::data::XDataProvider >& xProvider ) override;
+ virtual void SAL_CALL setArguments(
+ const css::uno::Sequence< css::beans::PropertyValue >& aArguments ) override;
+ virtual css::uno::Sequence< OUString > SAL_CALL getUsedRangeRepresentations() override;
+ virtual css::uno::Reference< css::chart2::data::XDataSource > SAL_CALL getUsedData() override;
+ virtual void SAL_CALL attachNumberFormatsSupplier( const css::uno::Reference<
+ css::util::XNumberFormatsSupplier >& xSupplier ) override;
+ virtual css::uno::Reference< css::chart2::data::XRangeHighlighter > SAL_CALL getRangeHighlighter() override;
+ virtual css::uno::Reference<css::awt::XRequestCallback> SAL_CALL getPopupRequest() override;
+
+ // ____ XTitled ____
+ virtual css::uno::Reference< css::chart2::XTitle > SAL_CALL getTitleObject() override;
+ virtual void SAL_CALL setTitleObject( const css::uno::Reference< css::chart2::XTitle >& Title ) override;
+
+ // ____ XInterface (for old API wrapper) ____
+ virtual css::uno::Any SAL_CALL queryInterface( const css::uno::Type& aType ) override;
+
+ // ____ XLoadable ____
+ virtual void SAL_CALL initNew() override;
+ virtual void SAL_CALL load( const css::uno::Sequence< css::beans::PropertyValue >& rMediaDescriptor ) override;
+
+ // ____ XCloneable ____
+ virtual css::uno::Reference< css::util::XCloneable > SAL_CALL createClone() override;
+
+ // ____ XVisualObject ____
+ virtual void SAL_CALL setVisualAreaSize(
+ ::sal_Int64 nAspect,
+ const css::awt::Size& aSize ) override;
+ virtual css::awt::Size SAL_CALL getVisualAreaSize(
+ ::sal_Int64 nAspect ) override;
+ virtual css::embed::VisualRepresentation SAL_CALL getPreferredVisualRepresentation(
+ ::sal_Int64 nAspect ) override;
+ virtual ::sal_Int32 SAL_CALL getMapUnit(
+ ::sal_Int64 nAspect ) override;
+
+ // ____ XMultiServiceFactory ____
+ virtual css::uno::Reference< css::uno::XInterface > SAL_CALL
+ createInstance( const OUString& aServiceSpecifier ) override;
+ virtual css::uno::Reference< css::uno::XInterface > SAL_CALL
+ createInstanceWithArguments( const OUString& ServiceSpecifier
+ , const css::uno::Sequence< css::uno::Any >& Arguments ) override;
+ virtual css::uno::Sequence< OUString > SAL_CALL
+ getAvailableServiceNames() override;
+
+ // ____ XStorageBasedDocument ____
+ virtual void SAL_CALL loadFromStorage(
+ const css::uno::Reference< css::embed::XStorage >& xStorage,
+ const css::uno::Sequence< css::beans::PropertyValue >& rMediaDescriptor ) override;
+ virtual void SAL_CALL storeToStorage(
+ const css::uno::Reference< css::embed::XStorage >& xStorage,
+ const css::uno::Sequence< css::beans::PropertyValue >& rMediaDescriptor ) override;
+ virtual void SAL_CALL switchToStorage(
+ const css::uno::Reference< css::embed::XStorage >& xStorage ) override;
+ virtual css::uno::Reference< css::embed::XStorage > SAL_CALL getDocumentStorage() override;
+ virtual void SAL_CALL addStorageChangeListener(
+ const css::uno::Reference< css::document::XStorageChangeListener >& xListener ) override;
+ virtual void SAL_CALL removeStorageChangeListener(
+ const css::uno::Reference< css::document::XStorageChangeListener >& xListener ) override;
+
+ // for SvNumberFormatsSupplierObj
+ // ____ XUnoTunnel ___
+ virtual ::sal_Int64 SAL_CALL getSomething( const css::uno::Sequence< ::sal_Int8 >& aIdentifier ) override;
+
+ // ____ XNumberFormatsSupplier ____
+ virtual css::uno::Reference< css::beans::XPropertySet > SAL_CALL getNumberFormatSettings() override;
+ virtual css::uno::Reference< css::util::XNumberFormats > SAL_CALL getNumberFormats() override;
+
+ // ____ XChild ____
+ virtual css::uno::Reference< css::uno::XInterface > SAL_CALL getParent() override;
+ virtual void SAL_CALL setParent(
+ const css::uno::Reference< css::uno::XInterface >& Parent ) override;
+
+ // ____ XDataSource ____ allows access to the currently used data and data ranges
+ virtual css::uno::Sequence< css::uno::Reference< css::chart2::data::XLabeledDataSequence > > SAL_CALL getDataSequences() override;
+
+ // XUpdatable
+ virtual void SAL_CALL update() override;
+
+ // XDumper
+ virtual OUString SAL_CALL dump(OUString const & kind) override;
+
+ // normal methods
+ css::uno::Reference< css::util::XNumberFormatsSupplier > const &
+ getNumberFormatsSupplier();
+
+ ChartView* getChartView() const;
+
+ const rtl::Reference< ::chart::Diagram > & getFirstChartDiagram() { return m_xDiagram; }
+
+ bool isTimeBased() const { return mbTimeBased;}
+
+ void setTimeBasedRange(sal_Int32 nStart, sal_Int32 nEnd);
+
+ bool isDataFromSpreadsheet();
+
+ bool isDataFromPivotTable() const;
+
+ void removeDataProviders();
+
+ const rtl::Reference< ::chart::ChartTypeManager > & getTypeManager() const { return m_xChartTypeManager; }
+
+ rtl::Reference< ::chart::Title > getTitleObject2() const;
+ void setTitleObject( const rtl::Reference< ::chart::Title >& Title );
+
+private:
+ void dumpAsXml(xmlTextWriterPtr pWriter) const;
+
+ sal_Int32 mnStart;
+ sal_Int32 mnEnd;
+};
+
+} // namespace chart
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/chart2/inc/ChartTypeManager.hxx b/chart2/inc/ChartTypeManager.hxx
new file mode 100644
index 0000000000..71fbf471e6
--- /dev/null
+++ b/chart2/inc/ChartTypeManager.hxx
@@ -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 .
+ */
+#pragma once
+
+#include <cppuhelper/implbase.hxx>
+#include <com/sun/star/lang/XMultiServiceFactory.hpp>
+#include <com/sun/star/lang/XServiceInfo.hpp>
+#include <com/sun/star/chart2/XChartTypeManager.hpp>
+#include <charttoolsdllapi.hxx>
+#include <rtl/ref.hxx>
+
+namespace com::sun::star::uno { class XComponentContext; }
+
+namespace chart
+{
+class ChartTypeTemplate;
+
+class OOO_DLLPUBLIC_CHARTTOOLS ChartTypeManager final :
+ public ::cppu::WeakImplHelper<
+ css::lang::XServiceInfo,
+ css::lang::XMultiServiceFactory,
+ css::chart2::XChartTypeManager >
+{
+public:
+ explicit ChartTypeManager(
+ css::uno::Reference< css::uno::XComponentContext > xContext );
+ virtual ~ChartTypeManager() override;
+
+ virtual OUString SAL_CALL
+ getImplementationName()
+ override;
+ virtual sal_Bool SAL_CALL
+ supportsService( const OUString& ServiceName )
+ override;
+ virtual css::uno::Sequence< OUString > SAL_CALL
+ getSupportedServiceNames()
+ override;
+
+ // ____ XMultiServiceFactory ____
+ virtual css::uno::Reference< css::uno::XInterface > SAL_CALL createInstance( const OUString& aServiceSpecifier ) override;
+ virtual css::uno::Reference< css::uno::XInterface > SAL_CALL createInstanceWithArguments(
+ const OUString& ServiceSpecifier,
+ const css::uno::Sequence< css::uno::Any >& Arguments ) override;
+ virtual css::uno::Sequence< OUString > SAL_CALL getAvailableServiceNames() override;
+
+ // ____ XChartTypeManager ____
+ // currently empty
+
+ rtl::Reference< ::chart::ChartTypeTemplate > createTemplate( const OUString& aServiceSpecifier );
+
+private:
+ css::uno::Reference< css::uno::XComponentContext >
+ m_xContext;
+};
+
+} // namespace chart
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/chart2/inc/ChartView.hxx b/chart2/inc/ChartView.hxx
new file mode 100644
index 0000000000..cbee98d8cb
--- /dev/null
+++ b/chart2/inc/ChartView.hxx
@@ -0,0 +1,256 @@
+/* -*- 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 <chartview/ExplicitValueProvider.hxx>
+#include <cppuhelper/implbase.hxx>
+#include <comphelper/interfacecontainer4.hxx>
+
+#include <svl/lstner.hxx>
+#include <com/sun/star/awt/Size.hpp>
+#include <com/sun/star/awt/Rectangle.hpp>
+#include <com/sun/star/beans/XPropertySet.hpp>
+#include <com/sun/star/datatransfer/XTransferable.hpp>
+#include <com/sun/star/lang/XInitialization.hpp>
+#include <com/sun/star/lang/XMultiServiceFactory.hpp>
+#include <com/sun/star/lang/XServiceInfo.hpp>
+#include <com/sun/star/qa/XDumper.hpp>
+#include <com/sun/star/util/XModeChangeBroadcaster.hpp>
+#include <com/sun/star/util/XModifyListener.hpp>
+#include <com/sun/star/util/XUpdatable2.hpp>
+#include <rtl/ref.hxx>
+#include <svx/unopage.hxx>
+#include <svx/unoshape.hxx>
+
+#include <vector>
+#include <memory>
+#include <mutex>
+
+#include <vcl/timer.hxx>
+
+namespace com::sun::star::drawing { class XDrawPage; }
+namespace com::sun::star::drawing { class XShapes; }
+namespace com::sun::star::io { class XOutputStream; }
+namespace com::sun::star::uno { class XComponentContext; }
+namespace com::sun::star::util { class XUpdatable2; }
+
+class SdrPage;
+
+namespace chart {
+
+class VCoordinateSystem;
+class DrawModelWrapper;
+class VDataSeries;
+struct CreateShapeParam2D;
+
+struct TimeBasedInfo
+{
+ TimeBasedInfo():
+ bTimeBased(false),
+ nFrame(0) {}
+
+ bool bTimeBased;
+ size_t nFrame;
+ Timer maTimer { "chart2 TimeBasedInfo" };
+
+ // only valid when we are in the time based mode
+ std::vector< std::vector< VDataSeries* > > m_aDataSeriesList;
+};
+
+/**
+ * The ChartView is responsible to manage the generation of Drawing Objects
+ * for visualization on a given OutputDevice. The ChartModel is responsible
+ * to notify changes to the view. The view than changes to state dirty. The
+ * view can be updated with call 'update'.
+ *
+ * The View is not responsible to handle single user events (that is instead
+ * done by the ChartWindow).
+ */
+class OOO_DLLPUBLIC_CHARTVIEW ChartView final : public ::cppu::WeakImplHelper<
+ css::lang::XInitialization
+ ,css::lang::XServiceInfo
+ ,css::datatransfer::XTransferable
+ ,css::util::XModifyListener
+ ,css::util::XModeChangeBroadcaster
+ ,css::util::XUpdatable2
+ ,css::beans::XPropertySet
+ ,css::lang::XMultiServiceFactory
+ ,css::qa::XDumper
+ >
+ , public ExplicitValueProvider
+ , private SfxListener
+{
+private:
+ void init();
+
+public:
+ ChartView() = delete;
+ ChartView(css::uno::Reference<css::uno::XComponentContext> xContext, ChartModel& rModel);
+
+ virtual ~ChartView() override;
+
+ // ___lang::XServiceInfo___
+ virtual OUString SAL_CALL getImplementationName() override;
+ virtual sal_Bool SAL_CALL supportsService( const OUString& ServiceName ) override;
+ virtual css::uno::Sequence< OUString > SAL_CALL getSupportedServiceNames() override;
+
+ // ___lang::XInitialization___
+ virtual void SAL_CALL initialize( const css::uno::Sequence< css::uno::Any >& aArguments ) override;
+
+ // ___ExplicitValueProvider___
+ virtual bool getExplicitValuesForAxis(
+ rtl::Reference< Axis > xAxis
+ , ExplicitScaleData& rExplicitScale
+ , ExplicitIncrementData& rExplicitIncrement ) override;
+ virtual rtl::Reference< SvxShape >
+ getShapeForCID( const OUString& rObjectCID ) override;
+
+ virtual css::awt::Rectangle getRectangleOfObject( const OUString& rObjectCID, bool bSnapRect=false ) override;
+
+ virtual css::awt::Rectangle getDiagramRectangleExcludingAxes() override;
+
+ std::shared_ptr< DrawModelWrapper > getDrawModelWrapper() override;
+
+ // ___XTransferable___
+ virtual css::uno::Any SAL_CALL getTransferData( const css::datatransfer::DataFlavor& aFlavor ) override;
+ virtual css::uno::Sequence< css::datatransfer::DataFlavor > SAL_CALL getTransferDataFlavors( ) override;
+ virtual sal_Bool SAL_CALL isDataFlavorSupported( const css::datatransfer::DataFlavor& aFlavor ) override;
+
+ // css::util::XEventListener (base of XCloseListener and XModifyListener)
+ virtual void SAL_CALL
+ disposing( const css::lang::EventObject& Source ) override;
+
+ // css::util::XModifyListener
+ virtual void SAL_CALL modified(
+ const css::lang::EventObject& aEvent ) override;
+
+ //SfxListener
+ virtual void Notify( SfxBroadcaster& rBC, const SfxHint& rHint ) override;
+
+ // css::util::XModeChangeBroadcaster
+
+ virtual void SAL_CALL addModeChangeListener( const css::uno::Reference< css::util::XModeChangeListener >& _rxListener ) override;
+ virtual void SAL_CALL removeModeChangeListener( const css::uno::Reference< css::util::XModeChangeListener >& _rxListener ) override;
+ virtual void SAL_CALL addModeChangeApproveListener( const css::uno::Reference< css::util::XModeChangeApproveListener >& _rxListener ) override;
+ virtual void SAL_CALL removeModeChangeApproveListener( const css::uno::Reference< css::util::XModeChangeApproveListener >& _rxListener ) override;
+
+ // css::util::XUpdatable
+ virtual void SAL_CALL update() override;
+
+ // util::XUpdatable2
+ virtual void SAL_CALL updateSoft() override;
+ virtual void SAL_CALL updateHard() override;
+
+ // css::beans::XPropertySet
+ virtual css::uno::Reference< css::beans::XPropertySetInfo > SAL_CALL getPropertySetInfo( ) override;
+ virtual void SAL_CALL setPropertyValue( const OUString& aPropertyName, const css::uno::Any& aValue ) override;
+ virtual css::uno::Any SAL_CALL getPropertyValue( const OUString& PropertyName ) override;
+ virtual void SAL_CALL addPropertyChangeListener( const OUString& aPropertyName, const css::uno::Reference< css::beans::XPropertyChangeListener >& xListener ) override;
+ virtual void SAL_CALL removePropertyChangeListener( const OUString& aPropertyName, const css::uno::Reference< css::beans::XPropertyChangeListener >& aListener ) override;
+ virtual void SAL_CALL addVetoableChangeListener( const OUString& PropertyName, const css::uno::Reference< css::beans::XVetoableChangeListener >& aListener ) override;
+ virtual void SAL_CALL removeVetoableChangeListener( const OUString& PropertyName, const css::uno::Reference< css::beans::XVetoableChangeListener >& aListener ) override;
+
+ // css::lang::XMultiServiceFactory
+ virtual css::uno::Reference< css::uno::XInterface > SAL_CALL createInstance( const OUString& aServiceSpecifier ) override;
+ virtual css::uno::Reference< css::uno::XInterface > SAL_CALL createInstanceWithArguments(
+ const OUString& ServiceSpecifier, const css::uno::Sequence< css::uno::Any >& Arguments ) override;
+ virtual css::uno::Sequence< OUString > SAL_CALL getAvailableServiceNames() override;
+
+ // XDumper
+ virtual OUString SAL_CALL dump(OUString const & kind) override;
+
+ void setViewDirty();
+
+ css::uno::Reference<css::uno::XComponentContext> const& getComponentContext() { return m_xCC;}
+
+ void dumpAsXml(xmlTextWriterPtr pWriter) const;
+
+private: //methods
+ void createShapes();
+ void createShapes2D( const css::awt::Size& rPageSize );
+ bool createAxisTitleShapes2D( CreateShapeParam2D& rParam, const css::awt::Size& rPageSize, bool bHasRelativeSize );
+ void getMetaFile( const css::uno::Reference< css::io::XOutputStream >& xOutStream
+ , bool bUseHighContrast );
+ SdrPage* getSdrPage();
+
+ void impl_deleteCoordinateSystems();
+ void impl_notifyModeChangeListener( const OUString& rNewMode );
+
+ void impl_refreshAddIn();
+
+ void impl_updateView( bool bCheckLockedCtrler = true );
+
+ css::awt::Rectangle impl_createDiagramAndContent( const CreateShapeParam2D& rParam, const css::awt::Size& rPageSize );
+
+ DECL_LINK( UpdateTimeBased, Timer*, void );
+
+private: //member
+ std::mutex m_aMutex;
+
+ css::uno::Reference< css::uno::XComponentContext> m_xCC;
+
+ ChartModel& mrChartModel;
+
+ css::uno::Reference< css::lang::XMultiServiceFactory>
+ m_xShapeFactory;
+ rtl::Reference<SvxDrawPage>
+ m_xDrawPage;
+ rtl::Reference<SvxShapeGroupAnyD>
+ mxRootShape;
+
+ css::uno::Reference< css::uno::XInterface > m_xDashTable;
+ css::uno::Reference< css::uno::XInterface > m_xGradientTable;
+ css::uno::Reference< css::uno::XInterface > m_xHatchTable;
+ css::uno::Reference< css::uno::XInterface > m_xBitmapTable;
+ css::uno::Reference< css::uno::XInterface > m_xTransGradientTable;
+ css::uno::Reference< css::uno::XInterface > m_xMarkerTable;
+
+ std::shared_ptr< DrawModelWrapper > m_pDrawModelWrapper;
+
+ std::vector< std::unique_ptr<VCoordinateSystem> > m_aVCooSysList;
+
+ comphelper::OInterfaceContainerHelper4<css::util::XModeChangeListener>
+ m_aModeChangeListeners;
+
+ bool m_bViewDirty; //states whether the view needs to be rebuild
+ bool m_bInViewUpdate;
+ bool m_bViewUpdatePending;
+ bool m_bRefreshAddIn;
+
+ //better performance for big data
+ css::awt::Size m_aPageResolution;
+ bool m_bPointsWereSkipped;
+
+ //#i75867# poor quality of ole's alternative view with 3D scenes and zoomfactors besides 100%
+ sal_Int32 m_nScaleXNumerator;
+ sal_Int32 m_nScaleXDenominator;
+ sal_Int32 m_nScaleYNumerator;
+ sal_Int32 m_nScaleYDenominator;
+
+ bool m_bSdrViewIsInEditMode;
+
+ css::awt::Rectangle m_aResultingDiagramRectangleExcludingAxes;
+
+ TimeBasedInfo maTimeBased;
+ std::mutex maTimeMutex;
+};
+
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/chart2/inc/SpecialCharacters.hxx b/chart2/inc/SpecialCharacters.hxx
new file mode 100644
index 0000000000..26d2b11873
--- /dev/null
+++ b/chart2/inc/SpecialCharacters.hxx
@@ -0,0 +1,18 @@
+/* -*- 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/.
+ */
+
+#pragma once
+
+#include <sal/types.h>
+
+const sal_Unicode aMinusSign = 0x2212;
+const sal_Unicode aSuperscriptFigures[10]
+ = { 0x2070, 0x00B9, 0x00B2, 0x00B3, 0x2074, 0x2075, 0x2076, 0x2077, 0x2078, 0x2079 };
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/chart2/inc/bitmaps.hlst b/chart2/inc/bitmaps.hlst
new file mode 100644
index 0000000000..5ef14f869f
--- /dev/null
+++ b/chart2/inc/bitmaps.hlst
@@ -0,0 +1,132 @@
+/* -*- 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/.
+ */
+
+#pragma once
+
+inline constexpr OUString BMP_TYPE_COLUMN = u"chart2/res/typecolumn_16.png"_ustr;
+inline constexpr OUString BMP_TYPE_BAR = u"chart2/res/typebar_16.png"_ustr;
+inline constexpr OUString BMP_TYPE_PIE = u"chart2/res/typepie_16.png"_ustr;
+inline constexpr OUString BMP_TYPE_LINE = u"chart2/res/typepointline_16.png"_ustr;
+inline constexpr OUString BMP_TYPE_XY = u"chart2/res/typexy_16.png"_ustr;
+inline constexpr OUString BMP_TYPE_AREA = u"chart2/res/typearea_16.png"_ustr;
+inline constexpr OUString BMP_TYPE_NET = u"chart2/res/typenet_16.png"_ustr;
+inline constexpr OUString BMP_TYPE_STOCK = u"chart2/res/typestock_16.png"_ustr;
+inline constexpr OUString BMP_TYPE_COLUMN_LINE = u"chart2/res/typecolumnline_16.png"_ustr;
+inline constexpr OUString BMP_TYPE_BUBBLE = u"chart2/res/typebubble_16.png"_ustr;
+inline constexpr OUString BMP_BUBBLE_1 = u"chart2/res/bubble_52x60.png"_ustr;
+inline constexpr OUString BMP_AREAS_2D = u"chart2/res/areas_52x60.png"_ustr;
+inline constexpr OUString BMP_AREAS_2D_1 = u"chart2/res/areaspiled_52x60.png"_ustr;
+inline constexpr OUString BMP_AREAS_2D_3 = u"chart2/res/areasfull_52x60.png"_ustr;
+inline constexpr OUString BMP_AREAS_3D = u"chart2/res/areaspiled3d_52x60.png"_ustr;
+inline constexpr OUString BMP_AREAS_3D_1 = u"chart2/res/areas3d_52x60.png"_ustr;
+inline constexpr OUString BMP_AREAS_3D_2 = u"chart2/res/areasfull3d_52x60.png"_ustr;
+inline constexpr OUString BMP_BARS_2D_1 = u"chart2/res/bar_52x60.png"_ustr;
+inline constexpr OUString BMP_BARS_2D_2 = u"chart2/res/barstack_52x60.png"_ustr;
+inline constexpr OUString BMP_BARS_2D_3 = u"chart2/res/barpercent_52x60.png"_ustr;
+inline constexpr OUString BMP_BARS_3D = u"chart2/res/bar3ddeep_52x60.png"_ustr;
+inline constexpr OUString BMP_BARS_3D_1 = u"chart2/res/bar3d_52x60.png"_ustr;
+inline constexpr OUString BMP_BARS_3D_2 = u"chart2/res/barstack3d_52x60.png"_ustr;
+inline constexpr OUString BMP_BARS_3D_3 = u"chart2/res/barpercent3d_52x60.png"_ustr;
+inline constexpr OUString BMP_CIRCLES_2D = u"chart2/res/pie_52x60.png"_ustr;
+inline constexpr OUString BMP_CIRCLES_2D_EXPLODED = u"chart2/res/pieexploded_52x60.png"_ustr;
+inline constexpr OUString BMP_CIRCLES_3D = u"chart2/res/pie3d_52x60.png"_ustr;
+inline constexpr OUString BMP_CIRCLES_3D_EXPLODED = u"chart2/res/pie3dexploded_52x60.png"_ustr;
+inline constexpr OUString BMP_DONUT_2D = u"chart2/res/donut_52x60.png"_ustr;
+inline constexpr OUString BMP_DONUT_2D_EXPLODED = u"chart2/res/donutexploded_52x60.png"_ustr;
+inline constexpr OUString BMP_DONUT_3D = u"chart2/res/donut3d_52x60.png"_ustr;
+inline constexpr OUString BMP_DONUT_3D_EXPLODED = u"chart2/res/donut3dexploded_52x60.png"_ustr;
+inline constexpr OUString BMP_COLUMNS_2D_1 = u"chart2/res/columns_52x60.png"_ustr;
+inline constexpr OUString BMP_COLUMNS_2D_2 = u"chart2/res/columnstack_52x60.png"_ustr;
+inline constexpr OUString BMP_COLUMNS_2D_3 = u"chart2/res/columnpercent_52x60.png"_ustr;
+inline constexpr OUString BMP_COLUMN_LINE = u"chart2/res/columnline_52x60.png"_ustr;
+inline constexpr OUString BMP_COLUMN_LINE_STACKED = u"chart2/res/columnstackline_52x60.png"_ustr;
+inline constexpr OUString BMP_COLUMNS_3D = u"chart2/res/columns3ddeep_52x60.png"_ustr;
+inline constexpr OUString BMP_COLUMNS_3D_1 = u"chart2/res/columns3d_52x60.png"_ustr;
+inline constexpr OUString BMP_COLUMNS_3D_2 = u"chart2/res/columnstack3d_52x60.png"_ustr;
+inline constexpr OUString BMP_COLUMNS_3D_3 = u"chart2/res/columnpercent3d_52x60.png"_ustr;
+inline constexpr OUString BMP_KEGELQ_3D_1 = u"chart2/res/conehori_52x60.png"_ustr;
+inline constexpr OUString BMP_KEGELQ_3D_2 = u"chart2/res/conehoristack_52x60.png"_ustr;
+inline constexpr OUString BMP_KEGELQ_3D_3 = u"chart2/res/conehoripercent_52x60.png"_ustr;
+inline constexpr OUString BMP_KEGELQ_3D_4 = u"chart2/res/conehorideep_52x60.png"_ustr;
+inline constexpr OUString BMP_KEGEL_3D_1 = u"chart2/res/cone_52x60.png"_ustr;
+inline constexpr OUString BMP_KEGEL_3D_2 = u"chart2/res/conestack_52x60.png"_ustr;
+inline constexpr OUString BMP_KEGEL_3D_3 = u"chart2/res/conepercent_52x60.png"_ustr;
+inline constexpr OUString BMP_KEGEL_3D_4 = u"chart2/res/conedeep_52x60.png"_ustr;
+inline constexpr OUString BMP_POINTS_XVALUES = u"chart2/res/valueaxisdirectpoints_52x60.png"_ustr;
+inline constexpr OUString BMP_POINTS_XCATEGORY = u"chart2/res/nostackdirectpoints_52x60.png"_ustr;
+inline constexpr OUString BMP_POINTS_STACKED = u"chart2/res/stackdirectpoints_52x60.png"_ustr;
+inline constexpr OUString BMP_LINE_P_XVALUES = u"chart2/res/valueaxisdirectboth_52x60.png"_ustr;
+inline constexpr OUString BMP_LINE_O_XVALUES = u"chart2/res/valueaxisdirectlines_52x60.png"_ustr;
+inline constexpr OUString BMP_LINE3D_XVALUES = u"chart2/res/valueaxisdirect3d_52x60.png"_ustr;
+inline constexpr OUString BMP_LINE_P_XCATEGORY = u"chart2/res/nostackdirectboth_52x60.png"_ustr;
+inline constexpr OUString BMP_LINE_O_XCATEGORY = u"chart2/res/nostackdirectlines_52x60.png"_ustr;
+inline constexpr OUString BMP_LINE3D_XCATEGORY = u"chart2/res/nostackdirect3d_52x60.png"_ustr;
+inline constexpr OUString BMP_LINE_P_STACKED = u"chart2/res/stackdirectboth_52x60.png"_ustr;
+inline constexpr OUString BMP_LINE_O_STACKED = u"chart2/res/stackdirectlines_52x60.png"_ustr;
+inline constexpr OUString BMP_LINE3D_STACKED = u"chart2/res/stackdirect3d_52x60.png"_ustr;
+inline constexpr OUString BMP_LINE_P_XVALUES_SMOOTH = u"chart2/res/valueaxissmoothboth_52x60.png"_ustr;
+inline constexpr OUString BMP_LINE_O_XVALUES_SMOOTH = u"chart2/res/valueaxissmoothlines_52x60.png"_ustr;
+inline constexpr OUString BMP_LINE3D_XVALUES_SMOOTH = u"chart2/res/valueaxissmooth3d_52x60.png"_ustr;
+inline constexpr OUString BMP_LINE_P_XCATEGORY_SMOOTH = u"chart2/res/nostacksmoothboth_52x60.png"_ustr;
+inline constexpr OUString BMP_LINE_O_XCATEGORY_SMOOTH = u"chart2/res/nostacksmoothlines_52x60.png"_ustr;
+inline constexpr OUString BMP_LINE3D_XCATEGORY_SMOOTH = u"chart2/res/nostacksmooth3d_52x60.png"_ustr;
+inline constexpr OUString BMP_LINE_P_STACKED_SMOOTH = u"chart2/res/stacksmoothboth_52x60.png"_ustr;
+inline constexpr OUString BMP_LINE_O_STACKED_SMOOTH = u"chart2/res/stacksmoothlines_52x60.png"_ustr;
+inline constexpr OUString BMP_LINE3D_STACKED_SMOOTH = u"chart2/res/stacksmooth3d_52x60.png"_ustr;
+inline constexpr OUString BMP_LINE_P_XVALUES_STEPPED = u"chart2/res/valueaxissteppedboth_52x60.png"_ustr;
+inline constexpr OUString BMP_LINE_O_XVALUES_STEPPED = u"chart2/res/valueaxissteppedlines_52x60.png"_ustr;
+inline constexpr OUString BMP_LINE3D_XVALUES_STEPPED = u"chart2/res/valueaxisstepped3d_52x60.png"_ustr;
+inline constexpr OUString BMP_LINE_P_XCATEGORY_STEPPED = u"chart2/res/nostacksteppedboth_52x60.png"_ustr;
+inline constexpr OUString BMP_LINE_O_XCATEGORY_STEPPED = u"chart2/res/nostacksteppedlines_52x60.png"_ustr;
+inline constexpr OUString BMP_LINE3D_XCATEGORY_STEPPED = u"chart2/res/nostackstepped3d_52x60.png"_ustr;
+inline constexpr OUString BMP_LINE_P_STACKED_STEPPED = u"chart2/res/stacksteppedboth_52x60.png"_ustr;
+inline constexpr OUString BMP_LINE_O_STACKED_STEPPED = u"chart2/res/stacksteppedlines_52x60.png"_ustr;
+inline constexpr OUString BMP_LINE3D_STACKED_STEPPED = u"chart2/res/stackstepped3d_52x60.png"_ustr;
+inline constexpr OUString BMP_NET = u"chart2/res/net_52x60.png"_ustr;
+inline constexpr OUString BMP_NET_STACK = u"chart2/res/netstack_52x60.png"_ustr;
+inline constexpr OUString BMP_NET_SYMB = u"chart2/res/netpoint_52x60.png"_ustr;
+inline constexpr OUString BMP_NET_SYMB_STACK = u"chart2/res/netpointstack_52x60.png"_ustr;
+inline constexpr OUString BMP_NET_LINESYMB = u"chart2/res/netlinepoint_52x60.png"_ustr;
+inline constexpr OUString BMP_NET_LINESYMB_STACK = u"chart2/res/netlinepointstack_52x60.png"_ustr;
+inline constexpr OUString BMP_NET_FILL = u"chart2/res/netfill_52x60.png"_ustr;
+inline constexpr OUString BMP_NET_FILL_STACK = u"chart2/res/netstackfill_52x60.png"_ustr;
+inline constexpr OUString BMP_PYRAMIDQ_3D_1 = u"chart2/res/pyramindhori_52x60.png"_ustr;
+inline constexpr OUString BMP_PYRAMIDQ_3D_2 = u"chart2/res/pyramindhoristack_52x60.png"_ustr;
+inline constexpr OUString BMP_PYRAMIDQ_3D_3 = u"chart2/res/pyramindhoripercent_52x60.png"_ustr;
+inline constexpr OUString BMP_PYRAMIDQ_3D_4 = u"chart2/res/pyramindhorideep_52x60.png"_ustr;
+inline constexpr OUString BMP_PYRAMID_3D_1 = u"chart2/res/pyramind_52x60.png"_ustr;
+inline constexpr OUString BMP_PYRAMID_3D_2 = u"chart2/res/pyramindstack_52x60.png"_ustr;
+inline constexpr OUString BMP_PYRAMID_3D_3 = u"chart2/res/pyramindpercent_52x60.png"_ustr;
+inline constexpr OUString BMP_PYRAMID_3D_4 = u"chart2/res/pyraminddeep_52x60.png"_ustr;
+inline constexpr OUString BMP_ROEHRE_3D_1 = u"chart2/res/cylinderhori_52x60.png"_ustr;
+inline constexpr OUString BMP_ROEHRE_3D_2 = u"chart2/res/cylinderhoristack_52x60.png"_ustr;
+inline constexpr OUString BMP_ROEHRE_3D_3 = u"chart2/res/cylinderhoriprocent_52x60.png"_ustr;
+inline constexpr OUString BMP_ROEHRE_3D_4 = u"chart2/res/cylinderhorideep_52x60.png"_ustr;
+inline constexpr OUString BMP_SAEULE_3D_1 = u"chart2/res/cylinder_52x60.png"_ustr;
+inline constexpr OUString BMP_SAEULE_3D_2 = u"chart2/res/cylinderstack_52x60.png"_ustr;
+inline constexpr OUString BMP_SAEULE_3D_3 = u"chart2/res/cylinderpercent_52x60.png"_ustr;
+inline constexpr OUString BMP_SAEULE_3D_4 = u"chart2/res/cylinderdeep_52x60.png"_ustr;
+inline constexpr OUString BMP_STOCK_1 = u"chart2/res/stock_52x60.png"_ustr;
+inline constexpr OUString BMP_STOCK_2 = u"chart2/res/stockblock_52x60.png"_ustr;
+inline constexpr OUString BMP_STOCK_3 = u"chart2/res/stockcolumns_52x60.png"_ustr;
+inline constexpr OUString BMP_STOCK_4 = u"chart2/res/stockcolumnsattach_52x60.png"_ustr;
+inline constexpr OUString BMP_INDICATE_BOTH_VERTI = u"chart2/res/errorbothverti_30.png"_ustr;
+inline constexpr OUString BMP_INDICATE_DOWN = u"chart2/res/errordown_30.png"_ustr;
+inline constexpr OUString BMP_INDICATE_UP = u"chart2/res/errorup_30.png"_ustr;
+inline constexpr OUString BMP_INDICATE_BOTH_HORI = u"chart2/res/errorbothhori_30.png"_ustr;
+inline constexpr OUString BMP_INDICATE_RIGHT = u"chart2/res/errorright_30.png"_ustr;
+inline constexpr OUString BMP_INDICATE_LEFT = u"chart2/res/errorleft_30.png"_ustr;
+inline constexpr OUString BMP_REGRESSION_LINEAR = u"chart2/res/reglin.png"_ustr;
+inline constexpr OUString BMP_REGRESSION_LOG = u"chart2/res/reglog.png"_ustr;
+inline constexpr OUString BMP_REGRESSION_EXP = u"chart2/res/regexp.png"_ustr;
+inline constexpr OUString BMP_REGRESSION_POWER = u"chart2/res/regpow.png"_ustr;
+inline constexpr OUString BMP_REGRESSION_POLYNOMIAL = u"chart2/res/regpoly.png"_ustr;
+inline constexpr OUString BMP_REGRESSION_MOVING_AVERAGE = u"chart2/res/regavg.png"_ustr;
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab cinoptions=b1,g0,N-s cinkeys+=0=break: */
diff --git a/chart2/inc/chart.hrc b/chart2/inc/chart.hrc
new file mode 100644
index 0000000000..b8b6a7e8b2
--- /dev/null
+++ b/chart2/inc/chart.hrc
@@ -0,0 +1,24 @@
+/* -*- 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/.
+ */
+
+#pragma once
+
+#include <unotools/resmgr.hxx>
+
+#define NC_(Context, String) TranslateId(Context, u8##String)
+
+const TranslateId CHART_TYPE[] =
+{
+ NC_("tp_ChartType|liststore1", "Bar"),
+ NC_("tp_ChartType|liststore1", "Cylinder"),
+ NC_("tp_ChartType|liststore1", "Cone"),
+ NC_("tp_ChartType|liststore1", "Pyramid")
+};
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab cinoptions=b1,g0,N-s cinkeys+=0=break: */
diff --git a/chart2/inc/pch/precompiled_chartcontroller.cxx b/chart2/inc/pch/precompiled_chartcontroller.cxx
new file mode 100644
index 0000000000..44d47c4a42
--- /dev/null
+++ b/chart2/inc/pch/precompiled_chartcontroller.cxx
@@ -0,0 +1,12 @@
+/* -*- 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 "precompiled_chartcontroller.hxx"
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/chart2/inc/pch/precompiled_chartcontroller.hxx b/chart2/inc/pch/precompiled_chartcontroller.hxx
new file mode 100644
index 0000000000..77745b0537
--- /dev/null
+++ b/chart2/inc/pch/precompiled_chartcontroller.hxx
@@ -0,0 +1,515 @@
+/* -*- 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 has been autogenerated by update_pch.sh. It is possible to edit it
+ manually (such as when an include file has been moved/renamed/removed). All such
+ manual changes will be rewritten by the next run of update_pch.sh (which presumably
+ also fixes all possible problems, so it's usually better to use it).
+
+ Generated on 2023-07-19 09:20:36 using:
+ ./bin/update_pch chart2 chartcontroller --cutoff=6 --exclude:system --include:module --include:local
+
+ If after updating build fails, use the following command to locate conflicting headers:
+ ./bin/update_pch_bisect ./chart2/inc/pch/precompiled_chartcontroller.hxx "make chart2.build" --find-conflicts
+*/
+
+#include <sal/config.h>
+#if PCH_LEVEL >= 1
+#include <algorithm>
+#include <array>
+#include <cassert>
+#include <cmath>
+#include <cstddef>
+#include <cstdlib>
+#include <cstring>
+#include <deque>
+#include <float.h>
+#include <functional>
+#include <initializer_list>
+#include <iomanip>
+#include <iterator>
+#include <limits.h>
+#include <limits>
+#include <map>
+#include <math.h>
+#include <memory>
+#include <mutex>
+#include <new>
+#include <numeric>
+#include <optional>
+#include <ostream>
+#include <set>
+#include <span>
+#include <stddef.h>
+#include <stdexcept>
+#include <string.h>
+#include <string>
+#include <string_view>
+#include <type_traits>
+#include <typeinfo>
+#include <unordered_map>
+#include <unordered_set>
+#include <utility>
+#include <vector>
+#include <boost/property_tree/json_parser.hpp>
+#include <boost/property_tree/ptree_fwd.hpp>
+#endif // PCH_LEVEL >= 1
+#if PCH_LEVEL >= 2
+#include <osl/diagnose.h>
+#include <osl/diagnose.hxx>
+#include <osl/doublecheckedlocking.h>
+#include <osl/endian.h>
+#include <osl/getglobalmutex.hxx>
+#include <osl/interlck.h>
+#include <osl/mutex.h>
+#include <osl/mutex.hxx>
+#include <rtl/alloc.h>
+#include <rtl/character.hxx>
+#include <rtl/instance.hxx>
+#include <rtl/locale.h>
+#include <rtl/math.h>
+#include <rtl/math.hxx>
+#include <rtl/ref.hxx>
+#include <rtl/strbuf.h>
+#include <rtl/strbuf.hxx>
+#include <rtl/string.h>
+#include <rtl/string.hxx>
+#include <rtl/stringconcat.hxx>
+#include <rtl/stringutils.hxx>
+#include <rtl/textcvt.h>
+#include <rtl/textenc.h>
+#include <rtl/ustrbuf.h>
+#include <rtl/ustrbuf.hxx>
+#include <rtl/ustring.h>
+#include <rtl/ustring.hxx>
+#include <sal/backtrace.hxx>
+#include <sal/detail/log.h>
+#include <sal/log.hxx>
+#include <sal/macros.h>
+#include <sal/saldllapi.h>
+#include <sal/types.h>
+#include <sal/typesizes.h>
+#include <vcl/BinaryDataContainer.hxx>
+#include <vcl/GraphicAttributes.hxx>
+#include <vcl/GraphicExternalLink.hxx>
+#include <vcl/GraphicObject.hxx>
+#include <vcl/IDialogRenderable.hxx>
+#include <vcl/Scanline.hxx>
+#include <vcl/WindowPosSize.hxx>
+#include <vcl/alpha.hxx>
+#include <vcl/animate/Animation.hxx>
+#include <vcl/animate/AnimationFrame.hxx>
+#include <vcl/bitmap.hxx>
+#include <vcl/bitmap/BitmapTypes.hxx>
+#include <vcl/bitmapex.hxx>
+#include <vcl/builderpage.hxx>
+#include <vcl/cairo.hxx>
+#include <vcl/checksum.hxx>
+#include <vcl/customweld.hxx>
+#include <vcl/dllapi.h>
+#include <vcl/dockwin.hxx>
+#include <vcl/event.hxx>
+#include <vcl/fntstyle.hxx>
+#include <vcl/font.hxx>
+#include <vcl/gdimtf.hxx>
+#include <vcl/gfxlink.hxx>
+#include <vcl/gradient.hxx>
+#include <vcl/graph.hxx>
+#include <vcl/idle.hxx>
+#include <vcl/image.hxx>
+#include <vcl/kernarray.hxx>
+#include <vcl/keycod.hxx>
+#include <vcl/keycodes.hxx>
+#include <vcl/mapmod.hxx>
+#include <vcl/metaactiontypes.hxx>
+#include <vcl/outdev.hxx>
+#include <vcl/region.hxx>
+#include <vcl/rendercontext/AddFontSubstituteFlags.hxx>
+#include <vcl/rendercontext/AntialiasingFlags.hxx>
+#include <vcl/rendercontext/DrawGridFlags.hxx>
+#include <vcl/rendercontext/DrawImageFlags.hxx>
+#include <vcl/rendercontext/DrawModeFlags.hxx>
+#include <vcl/rendercontext/DrawTextFlags.hxx>
+#include <vcl/rendercontext/GetDefaultFontFlags.hxx>
+#include <vcl/rendercontext/ImplMapRes.hxx>
+#include <vcl/rendercontext/InvertFlags.hxx>
+#include <vcl/rendercontext/RasterOp.hxx>
+#include <vcl/rendercontext/SalLayoutFlags.hxx>
+#include <vcl/rendercontext/State.hxx>
+#include <vcl/rendercontext/SystemTextColorFlags.hxx>
+#include <vcl/salnativewidgets.hxx>
+#include <vcl/settings.hxx>
+#include <vcl/svapp.hxx>
+#include <vcl/syswin.hxx>
+#include <vcl/task.hxx>
+#include <vcl/timer.hxx>
+#include <vcl/toolboxid.hxx>
+#include <vcl/uitest/factory.hxx>
+#include <vcl/vclenum.hxx>
+#include <vcl/vclptr.hxx>
+#include <vcl/vclreferencebase.hxx>
+#include <vcl/vectorgraphicdata.hxx>
+#include <vcl/wall.hxx>
+#include <vcl/weld.hxx>
+#include <vcl/window.hxx>
+#include <vcl/windowstate.hxx>
+#include <vcl/wintypes.hxx>
+#endif // PCH_LEVEL >= 2
+#if PCH_LEVEL >= 3
+#include <basegfx/basegfxdllapi.h>
+#include <basegfx/color/bcolor.hxx>
+#include <basegfx/matrix/b2dhommatrix.hxx>
+#include <basegfx/matrix/b3dhommatrix.hxx>
+#include <basegfx/matrix/hommatrixtemplate.hxx>
+#include <basegfx/numeric/ftools.hxx>
+#include <basegfx/point/b2dpoint.hxx>
+#include <basegfx/point/b2ipoint.hxx>
+#include <basegfx/point/b3dpoint.hxx>
+#include <basegfx/polygon/b2dpolygon.hxx>
+#include <basegfx/polygon/b2dpolypolygon.hxx>
+#include <basegfx/range/Range2D.hxx>
+#include <basegfx/range/b2drange.hxx>
+#include <basegfx/range/b2drectangle.hxx>
+#include <basegfx/range/b3drange.hxx>
+#include <basegfx/range/basicrange.hxx>
+#include <basegfx/tuple/Size2D.hxx>
+#include <basegfx/tuple/Tuple2D.hxx>
+#include <basegfx/tuple/Tuple3D.hxx>
+#include <basegfx/tuple/b2dtuple.hxx>
+#include <basegfx/tuple/b2ituple.hxx>
+#include <basegfx/tuple/b3dtuple.hxx>
+#include <basegfx/utils/bgradient.hxx>
+#include <basegfx/utils/common.hxx>
+#include <basegfx/vector/b2dsize.hxx>
+#include <basegfx/vector/b2dvector.hxx>
+#include <basegfx/vector/b2enums.hxx>
+#include <basegfx/vector/b2isize.hxx>
+#include <basegfx/vector/b2ivector.hxx>
+#include <basegfx/vector/b3dvector.hxx>
+#include <chartview/ChartSfxItemIds.hxx>
+#include <chartview/DrawModelWrapper.hxx>
+#include <chartview/ExplicitValueProvider.hxx>
+#include <com/sun/star/awt/DeviceInfo.hpp>
+#include <com/sun/star/awt/Gradient2.hpp>
+#include <com/sun/star/awt/GradientStyle.hpp>
+#include <com/sun/star/awt/Key.hpp>
+#include <com/sun/star/awt/KeyGroup.hpp>
+#include <com/sun/star/awt/Size.hpp>
+#include <com/sun/star/beans/Property.hpp>
+#include <com/sun/star/beans/PropertyAttribute.hpp>
+#include <com/sun/star/beans/PropertyState.hpp>
+#include <com/sun/star/beans/PropertyValue.hpp>
+#include <com/sun/star/beans/XFastPropertySet.hpp>
+#include <com/sun/star/beans/XMultiPropertySet.hpp>
+#include <com/sun/star/beans/XMultiPropertyStates.hpp>
+#include <com/sun/star/beans/XPropertiesChangeListener.hpp>
+#include <com/sun/star/beans/XPropertySet.hpp>
+#include <com/sun/star/beans/XPropertySetInfo.hpp>
+#include <com/sun/star/beans/XPropertySetOption.hpp>
+#include <com/sun/star/beans/XPropertyState.hpp>
+#include <com/sun/star/beans/XVetoableChangeListener.hpp>
+#include <com/sun/star/chart/ErrorBarStyle.hpp>
+#include <com/sun/star/chart2/AxisType.hpp>
+#include <com/sun/star/chart2/RelativePosition.hpp>
+#include <com/sun/star/chart2/XDataSeries.hpp>
+#include <com/sun/star/container/XIndexReplace.hpp>
+#include <com/sun/star/container/XNameContainer.hpp>
+#include <com/sun/star/drawing/DashStyle.hpp>
+#include <com/sun/star/drawing/HatchStyle.hpp>
+#include <com/sun/star/drawing/LineCap.hpp>
+#include <com/sun/star/drawing/TextFitToSizeType.hpp>
+#include <com/sun/star/drawing/XDrawPage.hpp>
+#include <com/sun/star/embed/XStorage.hpp>
+#include <com/sun/star/form/FormComponentType.hpp>
+#include <com/sun/star/frame/XFrame.hpp>
+#include <com/sun/star/frame/XModel3.hpp>
+#include <com/sun/star/frame/XStatusListener.hpp>
+#include <com/sun/star/frame/XToolbarController.hpp>
+#include <com/sun/star/graphic/XGraphic.hpp>
+#include <com/sun/star/graphic/XPrimitive2D.hpp>
+#include <com/sun/star/i18n/CharacterIteratorMode.hpp>
+#include <com/sun/star/i18n/ForbiddenCharacters.hpp>
+#include <com/sun/star/i18n/LanguageCountryInfo.hpp>
+#include <com/sun/star/i18n/LocaleDataItem2.hpp>
+#include <com/sun/star/i18n/LocaleItem.hpp>
+#include <com/sun/star/i18n/WordType.hpp>
+#include <com/sun/star/i18n/reservedWords.hpp>
+#include <com/sun/star/io/XInputStream.hpp>
+#include <com/sun/star/io/XOutputStream.hpp>
+#include <com/sun/star/io/XSeekable.hpp>
+#include <com/sun/star/io/XStream.hpp>
+#include <com/sun/star/io/XTruncate.hpp>
+#include <com/sun/star/lang/DisposedException.hpp>
+#include <com/sun/star/lang/EventObject.hpp>
+#include <com/sun/star/lang/Locale.hpp>
+#include <com/sun/star/lang/XComponent.hpp>
+#include <com/sun/star/lang/XInitialization.hpp>
+#include <com/sun/star/lang/XServiceInfo.hpp>
+#include <com/sun/star/lang/XTypeProvider.hpp>
+#include <com/sun/star/lang/XUnoTunnel.hpp>
+#include <com/sun/star/style/NumberingType.hpp>
+#include <com/sun/star/style/XStyle.hpp>
+#include <com/sun/star/text/textfield/Type.hpp>
+#include <com/sun/star/uno/Any.h>
+#include <com/sun/star/uno/Any.hxx>
+#include <com/sun/star/uno/Reference.h>
+#include <com/sun/star/uno/Reference.hxx>
+#include <com/sun/star/uno/RuntimeException.hpp>
+#include <com/sun/star/uno/Sequence.h>
+#include <com/sun/star/uno/Sequence.hxx>
+#include <com/sun/star/uno/Type.h>
+#include <com/sun/star/uno/Type.hxx>
+#include <com/sun/star/uno/TypeClass.hdl>
+#include <com/sun/star/uno/XAggregation.hpp>
+#include <com/sun/star/uno/XInterface.hpp>
+#include <com/sun/star/uno/XWeak.hpp>
+#include <com/sun/star/uno/genfunc.h>
+#include <com/sun/star/uno/genfunc.hxx>
+#include <com/sun/star/util/Date.hpp>
+#include <com/sun/star/util/DateTime.hpp>
+#include <com/sun/star/util/NumberFormat.hpp>
+#include <com/sun/star/util/Time.hpp>
+#include <com/sun/star/util/XAccounting.hpp>
+#include <com/sun/star/util/XModifyBroadcaster.hpp>
+#include <com/sun/star/util/XModifyListener.hpp>
+#include <com/sun/star/util/XUpdatable.hpp>
+#include <com/sun/star/view/XSelectionSupplier.hpp>
+#include <comphelper/broadcasthelper.hxx>
+#include <comphelper/compbase.hxx>
+#include <comphelper/comphelperdllapi.h>
+#include <comphelper/diagnose_ex.hxx>
+#include <comphelper/errcode.hxx>
+#include <comphelper/interfacecontainer2.hxx>
+#include <comphelper/interfacecontainer4.hxx>
+#include <comphelper/lok.hxx>
+#include <comphelper/multicontainer2.hxx>
+#include <comphelper/propagg.hxx>
+#include <comphelper/proparrhlp.hxx>
+#include <comphelper/propertycontainer.hxx>
+#include <comphelper/propertycontainerhelper.hxx>
+#include <comphelper/propstate.hxx>
+#include <comphelper/sequence.hxx>
+#include <comphelper/servicehelper.hxx>
+#include <comphelper/uno3.hxx>
+#include <comphelper/unoimplbase.hxx>
+#include <cppu/cppudllapi.h>
+#include <cppu/unotype.hxx>
+#include <cppuhelper/basemutex.hxx>
+#include <cppuhelper/cppuhelperdllapi.h>
+#include <cppuhelper/implbase.hxx>
+#include <cppuhelper/implbase_ex.hxx>
+#include <cppuhelper/implbase_ex_post.hxx>
+#include <cppuhelper/implbase_ex_pre.hxx>
+#include <cppuhelper/interfacecontainer.h>
+#include <cppuhelper/propshlp.hxx>
+#include <cppuhelper/queryinterface.hxx>
+#include <cppuhelper/supportsservice.hxx>
+#include <cppuhelper/weak.hxx>
+#include <cppuhelper/weakagg.hxx>
+#include <cppuhelper/weakref.hxx>
+#include <docmodel/color/ComplexColor.hxx>
+#include <docmodel/color/Transformation.hxx>
+#include <docmodel/dllapi.h>
+#include <docmodel/theme/ThemeColorType.hxx>
+#include <drawinglayer/drawinglayerdllapi.h>
+#include <drawinglayer/geometry/viewinformation2d.hxx>
+#include <drawinglayer/primitive2d/CommonTypes.hxx>
+#include <drawinglayer/primitive2d/Primitive2DContainer.hxx>
+#include <drawinglayer/primitive2d/Primitive2DVisitor.hxx>
+#include <drawinglayer/primitive2d/baseprimitive2d.hxx>
+#include <editeng/colritem.hxx>
+#include <editeng/editdata.hxx>
+#include <editeng/editengdllapi.h>
+#include <editeng/editobj.hxx>
+#include <editeng/editstat.hxx>
+#include <editeng/editview.hxx>
+#include <editeng/eedata.hxx>
+#include <editeng/eeitem.hxx>
+#include <editeng/flditem.hxx>
+#include <editeng/forbiddencharacterstable.hxx>
+#include <editeng/macros.hxx>
+#include <editeng/outliner.hxx>
+#include <editeng/outlobj.hxx>
+#include <editeng/overflowingtxt.hxx>
+#include <editeng/paragraphdata.hxx>
+#include <editeng/svxenum.hxx>
+#include <editeng/svxfont.hxx>
+#include <i18nlangtag/i18nlangtagdllapi.h>
+#include <i18nlangtag/lang.h>
+#include <i18nlangtag/languagetag.hxx>
+#include <o3tl/cow_wrapper.hxx>
+#include <o3tl/deleter.hxx>
+#include <o3tl/enumarray.hxx>
+#include <o3tl/hash_combine.hxx>
+#include <o3tl/safeint.hxx>
+#include <o3tl/sorted_vector.hxx>
+#include <o3tl/strong_int.hxx>
+#include <o3tl/typed_flags_set.hxx>
+#include <o3tl/underlyingenumvalue.hxx>
+#include <o3tl/unit_conversion.hxx>
+#include <salhelper/salhelperdllapi.h>
+#include <salhelper/simplereferenceobject.hxx>
+#include <sfx2/basedlgs.hxx>
+#include <sfx2/dllapi.h>
+#include <sfx2/shell.hxx>
+#include <sfx2/tabdlg.hxx>
+#include <sfx2/viewsh.hxx>
+#include <sot/formats.hxx>
+#include <sot/sotdllapi.h>
+#include <svl/SfxBroadcaster.hxx>
+#include <svl/eitem.hxx>
+#include <svl/hint.hxx>
+#include <svl/intitem.hxx>
+#include <svl/itempool.hxx>
+#include <svl/itemset.hxx>
+#include <svl/languageoptions.hxx>
+#include <svl/lstner.hxx>
+#include <svl/poolitem.hxx>
+#include <svl/setitem.hxx>
+#include <svl/stritem.hxx>
+#include <svl/style.hxx>
+#include <svl/stylesheetuser.hxx>
+#include <svl/svldllapi.h>
+#include <svl/typedwhich.hxx>
+#include <svl/undo.hxx>
+#include <svl/whichranges.hxx>
+#include <svtools/colorcfg.hxx>
+#include <svtools/svtdllapi.h>
+#include <svx/ActionDescriptionProvider.hxx>
+#include <svx/XPropertyEntry.hxx>
+#include <svx/chrtitem.hxx>
+#include <svx/ipolypolygoneditorcontroller.hxx>
+#include <svx/itextprovider.hxx>
+#include <svx/sdangitm.hxx>
+#include <svx/sdr/animation/scheduler.hxx>
+#include <svx/sdr/overlay/overlayobject.hxx>
+#include <svx/sdr/overlay/overlayobjectlist.hxx>
+#include <svx/sdr/properties/defaultproperties.hxx>
+#include <svx/sdr/properties/properties.hxx>
+#include <svx/sdrobjectuser.hxx>
+#include <svx/sdtaditm.hxx>
+#include <svx/sdtaitm.hxx>
+#include <svx/sdtakitm.hxx>
+#include <svx/selectioncontroller.hxx>
+#include <svx/svddef.hxx>
+#include <svx/svddrag.hxx>
+#include <svx/svdedtv.hxx>
+#include <svx/svdedxv.hxx>
+#include <svx/svdglev.hxx>
+#include <svx/svdglue.hxx>
+#include <svx/svdhdl.hxx>
+#include <svx/svdhlpln.hxx>
+#include <svx/svdlayer.hxx>
+#include <svx/svdmark.hxx>
+#include <svx/svdmodel.hxx>
+#include <svx/svdmrkv.hxx>
+#include <svx/svdoattr.hxx>
+#include <svx/svdobj.hxx>
+#include <svx/svdobjkind.hxx>
+#include <svx/svdoedge.hxx>
+#include <svx/svdotext.hxx>
+#include <svx/svdpntv.hxx>
+#include <svx/svdpoev.hxx>
+#include <svx/svdsnpv.hxx>
+#include <svx/svdsob.hxx>
+#include <svx/svdtext.hxx>
+#include <svx/svdtrans.hxx>
+#include <svx/svdtypes.hxx>
+#include <svx/svdundo.hxx>
+#include <svx/svxdllapi.h>
+#include <svx/xdash.hxx>
+#include <svx/xdef.hxx>
+#include <svx/xhatch.hxx>
+#include <svx/xit.hxx>
+#include <svx/xpoly.hxx>
+#include <svx/xtable.hxx>
+#include <tools/color.hxx>
+#include <tools/date.hxx>
+#include <tools/datetime.hxx>
+#include <tools/degree.hxx>
+#include <tools/fldunit.hxx>
+#include <tools/fontenum.hxx>
+#include <tools/fract.hxx>
+#include <tools/gen.hxx>
+#include <tools/helpers.hxx>
+#include <tools/lineend.hxx>
+#include <tools/link.hxx>
+#include <tools/long.hxx>
+#include <tools/mapunit.hxx>
+#include <tools/poly.hxx>
+#include <tools/ref.hxx>
+#include <tools/solar.h>
+#include <tools/stream.hxx>
+#include <tools/time.hxx>
+#include <tools/toolsdllapi.h>
+#include <tools/weakbase.h>
+#include <typelib/typeclass.h>
+#include <typelib/typedescription.h>
+#include <typelib/uik.h>
+#include <uno/any2.h>
+#include <uno/data.h>
+#include <uno/sequence2.h>
+#include <unotools/eventlisteneradapter.hxx>
+#include <unotools/fontdefs.hxx>
+#include <unotools/localedatawrapper.hxx>
+#include <unotools/options.hxx>
+#include <unotools/resmgr.hxx>
+#include <unotools/syslocale.hxx>
+#include <unotools/tempfile.hxx>
+#include <unotools/unotoolsdllapi.h>
+#include <unotools/weakref.hxx>
+#endif // PCH_LEVEL >= 3
+#if PCH_LEVEL >= 4
+#include <Axis.hxx>
+#include <AxisHelper.hxx>
+#include <BaseCoordinateSystem.hxx>
+#include <CharacterPropertyItemConverter.hxx>
+#include <ChartController.hxx>
+#include <ChartModel.hxx>
+#include <ChartModelHelper.hxx>
+#include <ChartType.hxx>
+#include <ChartTypeHelper.hxx>
+#include <ChartTypeManager.hxx>
+#include <ChartTypeTemplate.hxx>
+#include <ChartView.hxx>
+#include <ChartWindow.hxx>
+#include <CommonConverters.hxx>
+#include <ControllerLockGuard.hxx>
+#include <DataSeries.hxx>
+#include <DataSeriesHelper.hxx>
+#include <DataSourceHelper.hxx>
+#include <Diagram.hxx>
+#include <DiagramHelper.hxx>
+#include <DrawViewWrapper.hxx>
+#include <FastPropertyIdRanges.hxx>
+#include <FillProperties.hxx>
+#include <GraphicPropertyItemConverter.hxx>
+#include <ItemConverter.hxx>
+#include <ItemPropertyMap.hxx>
+#include <Legend.hxx>
+#include <LegendHelper.hxx>
+#include <LinePropertiesHelper.hxx>
+#include <ObjectIdentifier.hxx>
+#include <ObjectNameProvider.hxx>
+#include <RegressionCurveHelper.hxx>
+#include <RegressionCurveModel.hxx>
+#include <ResId.hxx>
+#include <StatisticsHelper.hxx>
+#include <ThreeDHelper.hxx>
+#include <TitleHelper.hxx>
+#include <UserDefinedProperties.hxx>
+#include <ViewElementListProvider.hxx>
+#include <WrappedProperty.hxx>
+#include <charttoolsdllapi.hxx>
+#include <servicenames.hxx>
+#include <unonames.hxx>
+#endif // PCH_LEVEL >= 4
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/chart2/inc/pch/precompiled_chartcore.cxx b/chart2/inc/pch/precompiled_chartcore.cxx
new file mode 100644
index 0000000000..10d8b365b8
--- /dev/null
+++ b/chart2/inc/pch/precompiled_chartcore.cxx
@@ -0,0 +1,12 @@
+/* -*- 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 "precompiled_chartcore.hxx"
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/chart2/inc/pch/precompiled_chartcore.hxx b/chart2/inc/pch/precompiled_chartcore.hxx
new file mode 100644
index 0000000000..9e7d56b2f7
--- /dev/null
+++ b/chart2/inc/pch/precompiled_chartcore.hxx
@@ -0,0 +1,303 @@
+/* -*- 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 has been autogenerated by update_pch.sh. It is possible to edit it
+ manually (such as when an include file has been moved/renamed/removed). All such
+ manual changes will be rewritten by the next run of update_pch.sh (which presumably
+ also fixes all possible problems, so it's usually better to use it).
+
+ Generated on 2023-07-19 09:21:03 using:
+ ./bin/update_pch chart2 chartcore --cutoff=3 --exclude:system --exclude:module --include:local
+
+ If after updating build fails, use the following command to locate conflicting headers:
+ ./bin/update_pch_bisect ./chart2/inc/pch/precompiled_chartcore.hxx "make chart2.build" --find-conflicts
+*/
+
+#include <sal/config.h>
+#if PCH_LEVEL >= 1
+#include <algorithm>
+#include <cassert>
+#include <cmath>
+#include <cstddef>
+#include <cstdlib>
+#include <functional>
+#include <iterator>
+#include <limits>
+#include <map>
+#include <memory>
+#include <mutex>
+#include <new>
+#include <optional>
+#include <ostream>
+#include <set>
+#include <span>
+#include <string_view>
+#include <type_traits>
+#include <unordered_map>
+#include <utility>
+#include <vector>
+#include <boost/property_tree/ptree_fwd.hpp>
+#endif // PCH_LEVEL >= 1
+#if PCH_LEVEL >= 2
+#include <osl/conditn.hxx>
+#include <osl/diagnose.h>
+#include <osl/mutex.hxx>
+#include <rtl/alloc.h>
+#include <rtl/character.hxx>
+#include <rtl/instance.hxx>
+#include <rtl/locale.h>
+#include <rtl/math.h>
+#include <rtl/math.hxx>
+#include <rtl/ref.hxx>
+#include <rtl/strbuf.hxx>
+#include <rtl/string.hxx>
+#include <rtl/stringconcat.hxx>
+#include <rtl/stringutils.hxx>
+#include <rtl/textenc.h>
+#include <rtl/ustrbuf.hxx>
+#include <rtl/ustring.h>
+#include <rtl/ustring.hxx>
+#include <rtl/uuid.h>
+#include <sal/log.hxx>
+#include <sal/macros.h>
+#include <sal/types.h>
+#include <vcl/dllapi.h>
+#include <vcl/settings.hxx>
+#include <vcl/svapp.hxx>
+#endif // PCH_LEVEL >= 2
+#if PCH_LEVEL >= 3
+#include <basegfx/basegfxdllapi.h>
+#include <basegfx/numeric/ftools.hxx>
+#include <basegfx/point/b2dpoint.hxx>
+#include <basegfx/point/b2ipoint.hxx>
+#include <basegfx/polygon/b2dpolygon.hxx>
+#include <basegfx/polygon/b2dpolypolygon.hxx>
+#include <basegfx/range/b2drange.hxx>
+#include <basegfx/tuple/b2dtuple.hxx>
+#include <basegfx/tuple/b2ituple.hxx>
+#include <basegfx/vector/b2dsize.hxx>
+#include <basegfx/vector/b2enums.hxx>
+#include <basegfx/vector/b2ivector.hxx>
+#include <chartview/DrawModelWrapper.hxx>
+#include <com/sun/star/awt/Point.hpp>
+#include <com/sun/star/awt/Size.hpp>
+#include <com/sun/star/beans/PropertyAttribute.hpp>
+#include <com/sun/star/beans/PropertyState.hpp>
+#include <com/sun/star/beans/PropertyValue.hpp>
+#include <com/sun/star/beans/XFastPropertySet.hpp>
+#include <com/sun/star/beans/XMultiPropertySet.hpp>
+#include <com/sun/star/beans/XMultiPropertyStates.hpp>
+#include <com/sun/star/beans/XPropertySet.hpp>
+#include <com/sun/star/beans/XPropertySetOption.hpp>
+#include <com/sun/star/beans/XPropertyState.hpp>
+#include <com/sun/star/chart/ChartAxisPosition.hpp>
+#include <com/sun/star/chart/ChartDataRowSource.hpp>
+#include <com/sun/star/chart/ChartLegendExpansion.hpp>
+#include <com/sun/star/chart/DataLabelPlacement.hpp>
+#include <com/sun/star/chart/ErrorBarStyle.hpp>
+#include <com/sun/star/chart/MissingValueTreatment.hpp>
+#include <com/sun/star/chart/TimeUnit.hpp>
+#include <com/sun/star/chart2/AxisType.hpp>
+#include <com/sun/star/chart2/CurveStyle.hpp>
+#include <com/sun/star/chart2/DataPointGeometry3D.hpp>
+#include <com/sun/star/chart2/DataPointLabel.hpp>
+#include <com/sun/star/chart2/LegendPosition.hpp>
+#include <com/sun/star/chart2/MovingAverageType.hpp>
+#include <com/sun/star/chart2/RelativePosition.hpp>
+#include <com/sun/star/chart2/RelativeSize.hpp>
+#include <com/sun/star/chart2/StackingDirection.hpp>
+#include <com/sun/star/chart2/Symbol.hpp>
+#include <com/sun/star/chart2/SymbolStyle.hpp>
+#include <com/sun/star/chart2/XDataSeries.hpp>
+#include <com/sun/star/chart2/XFormattedString2.hpp>
+#include <com/sun/star/chart2/data/XDataSequence.hpp>
+#include <com/sun/star/chart2/data/XDataSource.hpp>
+#include <com/sun/star/chart2/data/XNumericalDataSequence.hpp>
+#include <com/sun/star/chart2/data/XPivotTableDataProvider.hpp>
+#include <com/sun/star/chart2/data/XTextualDataSequence.hpp>
+#include <com/sun/star/container/NoSuchElementException.hpp>
+#include <com/sun/star/container/XNameContainer.hpp>
+#include <com/sun/star/drawing/BitmapMode.hpp>
+#include <com/sun/star/drawing/DoubleSequence.hpp>
+#include <com/sun/star/drawing/FillStyle.hpp>
+#include <com/sun/star/drawing/HomogenMatrix.hpp>
+#include <com/sun/star/drawing/LineCap.hpp>
+#include <com/sun/star/drawing/LineDash.hpp>
+#include <com/sun/star/drawing/LineJoint.hpp>
+#include <com/sun/star/drawing/LineStyle.hpp>
+#include <com/sun/star/drawing/Position3D.hpp>
+#include <com/sun/star/drawing/RectanglePoint.hpp>
+#include <com/sun/star/drawing/ShadeMode.hpp>
+#include <com/sun/star/drawing/TextHorizontalAdjust.hpp>
+#include <com/sun/star/drawing/TextVerticalAdjust.hpp>
+#include <com/sun/star/drawing/XShapes.hpp>
+#include <com/sun/star/embed/Aspects.hpp>
+#include <com/sun/star/embed/XStorage.hpp>
+#include <com/sun/star/frame/XModel.hpp>
+#include <com/sun/star/io/XInputStream.hpp>
+#include <com/sun/star/io/XOutputStream.hpp>
+#include <com/sun/star/io/XSeekable.hpp>
+#include <com/sun/star/lang/IndexOutOfBoundsException.hpp>
+#include <com/sun/star/lang/Locale.hpp>
+#include <com/sun/star/lang/XComponent.hpp>
+#include <com/sun/star/lang/XServiceInfo.hpp>
+#include <com/sun/star/lang/XServiceName.hpp>
+#include <com/sun/star/lang/XTypeProvider.hpp>
+#include <com/sun/star/lang/XUnoTunnel.hpp>
+#include <com/sun/star/style/ParagraphAdjust.hpp>
+#include <com/sun/star/text/WritingMode2.hpp>
+#include <com/sun/star/uno/Any.h>
+#include <com/sun/star/uno/Any.hxx>
+#include <com/sun/star/uno/Reference.h>
+#include <com/sun/star/uno/Reference.hxx>
+#include <com/sun/star/uno/RuntimeException.hpp>
+#include <com/sun/star/uno/Sequence.h>
+#include <com/sun/star/uno/Sequence.hxx>
+#include <com/sun/star/uno/Type.h>
+#include <com/sun/star/uno/XComponentContext.hpp>
+#include <com/sun/star/uno/XInterface.hpp>
+#include <com/sun/star/util/CloseVetoException.hpp>
+#include <com/sun/star/util/XCloneable.hpp>
+#include <com/sun/star/util/XModifyListener.hpp>
+#include <com/sun/star/view/XSelectionSupplier.hpp>
+#include <comphelper/comphelperdllapi.h>
+#include <comphelper/diagnose_ex.hxx>
+#include <comphelper/errcode.hxx>
+#include <comphelper/interfacecontainer4.hxx>
+#include <comphelper/processfactory.hxx>
+#include <comphelper/property.hxx>
+#include <comphelper/scopeguard.hxx>
+#include <comphelper/sequence.hxx>
+#include <comphelper/servicehelper.hxx>
+#include <comphelper/uno3.hxx>
+#include <cppu/cppudllapi.h>
+#include <cppuhelper/basemutex.hxx>
+#include <cppuhelper/cppuhelperdllapi.h>
+#include <cppuhelper/implbase.hxx>
+#include <cppuhelper/implbase_ex.hxx>
+#include <cppuhelper/interfacecontainer.h>
+#include <cppuhelper/propshlp.hxx>
+#include <cppuhelper/queryinterface.hxx>
+#include <cppuhelper/supportsservice.hxx>
+#include <cppuhelper/weak.hxx>
+#include <cppuhelper/weakref.hxx>
+#include <editeng/editengdllapi.h>
+#include <editeng/unoprnms.hxx>
+#include <i18nlangtag/i18nlangtagdllapi.h>
+#include <i18nlangtag/lang.h>
+#include <i18nlangtag/languagetag.hxx>
+#include <libxml/xmlwriter.h>
+#include <o3tl/cow_wrapper.hxx>
+#include <o3tl/safeint.hxx>
+#include <o3tl/string_view.hxx>
+#include <o3tl/typed_flags_set.hxx>
+#include <officecfg/Office/Compatibility.hxx>
+#include <salhelper/simplereferenceobject.hxx>
+#include <svl/cintitem.hxx>
+#include <svl/eitem.hxx>
+#include <svl/intitem.hxx>
+#include <svl/numformat.hxx>
+#include <svl/poolitem.hxx>
+#include <svl/svldllapi.h>
+#include <svl/typedwhich.hxx>
+#include <svx/svdpage.hxx>
+#include <svx/svxdllapi.h>
+#include <svx/unoshape.hxx>
+#include <tools/UnitConversion.hxx>
+#include <tools/color.hxx>
+#include <tools/gen.hxx>
+#include <tools/helpers.hxx>
+#include <tools/lineend.hxx>
+#include <tools/link.hxx>
+#include <tools/long.hxx>
+#include <tools/ref.hxx>
+#include <tools/stream.hxx>
+#include <tools/toolsdllapi.h>
+#include <unotools/options.hxx>
+#include <unotools/unotoolsdllapi.h>
+#endif // PCH_LEVEL >= 3
+#if PCH_LEVEL >= 4
+#include <Axis.hxx>
+#include <AxisHelper.hxx>
+#include <AxisIndexDefines.hxx>
+#include <BaseCoordinateSystem.hxx>
+#include <BaseGFXHelper.hxx>
+#include <CartesianCoordinateSystem.hxx>
+#include <CharacterProperties.hxx>
+#include <ChartModel.hxx>
+#include <ChartModelHelper.hxx>
+#include <ChartType.hxx>
+#include <ChartTypeHelper.hxx>
+#include <ChartTypeManager.hxx>
+#include <ChartTypeTemplate.hxx>
+#include <ChartView.hxx>
+#include <ChartViewHelper.hxx>
+#include <Clipping.hxx>
+#include <CloneHelper.hxx>
+#include <CommonConverters.hxx>
+#include <CommonFunctors.hxx>
+#include <ControllerLockGuard.hxx>
+#include <DataSeries.hxx>
+#include <DataSeriesHelper.hxx>
+#include <DataSeriesProperties.hxx>
+#include <DataSource.hxx>
+#include <DataSourceHelper.hxx>
+#include <DataTable.hxx>
+#include <DateHelper.hxx>
+#include <Diagram.hxx>
+#include <DiagramHelper.hxx>
+#include <ExplicitCategoriesProvider.hxx>
+#include <FillProperties.hxx>
+#include <FormattedString.hxx>
+#include <GridProperties.hxx>
+#include <InternalDataProvider.hxx>
+#include <LabelPositionHelper.hxx>
+#include <LabeledDataSequence.hxx>
+#include <Legend.hxx>
+#include <LinePropertiesHelper.hxx>
+#include <MediaDescriptorHelper.hxx>
+#include <ModifyListenerHelper.hxx>
+#include <NumberFormatterWrapper.hxx>
+#include <ObjectIdentifier.hxx>
+#include <PlottingPositionHelper.hxx>
+#include <PolarCoordinateSystem.hxx>
+#include <PolarLabelPositionHelper.hxx>
+#include <PropertyHelper.hxx>
+#include <PropertyMapper.hxx>
+#include <RangeHighlighter.hxx>
+#include <ReferenceSizeProvider.hxx>
+#include <RegressionCalculationHelper.hxx>
+#include <RegressionCurveCalculator.hxx>
+#include <RegressionCurveHelper.hxx>
+#include <RegressionCurveModel.hxx>
+#include <RelativePositionHelper.hxx>
+#include <RelativeSizeHelper.hxx>
+#include <ResId.hxx>
+#include <ScaleAutomatism.hxx>
+#include <ShapeFactory.hxx>
+#include <SpecialCharacters.hxx>
+#include <Stripe.hxx>
+#include <ThreeDHelper.hxx>
+#include <Title.hxx>
+#include <TitleHelper.hxx>
+#include <UserDefinedProperties.hxx>
+#include <VLineProperties.hxx>
+#include <VSeriesPlotter.hxx>
+#include <ViewDefines.hxx>
+#include <WrappedProperty.hxx>
+#include <charttoolsdllapi.hxx>
+#include <defines.hxx>
+#include <servicenames.hxx>
+#include <servicenames_charttypes.hxx>
+#include <servicenames_coosystems.hxx>
+#include <unonames.hxx>
+#endif // PCH_LEVEL >= 4
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/chart2/inc/strings.hrc b/chart2/inc/strings.hrc
new file mode 100644
index 0000000000..8c22e850b9
--- /dev/null
+++ b/chart2/inc/strings.hrc
@@ -0,0 +1,198 @@
+/* -*- 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 CHART_STRINGS_HRC
+#define CHART_STRINGS_HRC
+
+#define NC_(Context, String) TranslateId(Context, u8##String)
+
+#define STR_DLG_CHART_WIZARD NC_("STR_DLG_CHART_WIZARD", "Chart Wizard")
+#define STR_DLG_SMOOTH_LINE_PROPERTIES NC_("STR_DLG_SMOOTH_LINE_PROPERTIES", "Smooth Lines")
+#define STR_DLG_STEPPED_LINE_PROPERTIES NC_("STR_DLG_STEPPED_LINE_PROPERTIES", "Stepped Lines")
+#define STR_DLG_REMOVE_DATA_TABLE NC_("STR_DLG_REMOVE_DATA_TABLE", "This chart currently contains an internal data table. Do you want to proceed, deleting the internal data table, and set a new data range?")
+#define STR_PAGE_CHARTTYPE NC_("STR_PAGE_CHARTTYPE", "Chart Type")
+#define STR_PAGE_DATA_RANGE NC_("STR_PAGE_DATA_RANGE", "Data Range")
+#define STR_PAGE_CHART_ELEMENTS NC_("STR_PAGE_CHART_ELEMENTS", "Chart Elements")
+#define STR_PAGE_LINE NC_("STR_PAGE_LINE", "Line")
+#define STR_PAGE_BORDER NC_("STR_PAGE_BORDER", "Borders")
+#define STR_PAGE_AREA NC_("STR_PAGE_AREA", "Area")
+#define STR_PAGE_TRANSPARENCY NC_("STR_PAGE_TRANSPARENCY", "Transparency")
+#define STR_PAGE_FONT NC_("STR_PAGE_FONT", "Font")
+#define STR_PAGE_FONT_EFFECTS NC_("STR_PAGE_FONT_EFFECTS", "Font Effects")
+#define STR_PAGE_NUMBERS NC_("STR_PAGE_NUMBERS", "Numbers")
+#define STR_PAGE_POSITION NC_("STR_PAGE_POSITION", "Position")
+#define STR_PAGE_LAYOUT NC_("STR_PAGE_LAYOUT", "Layout")
+#define STR_PAGE_OPTIONS NC_("STR_PAGE_OPTIONS", "Options")
+#define STR_PAGE_SCALE NC_("STR_PAGE_SCALE", "Scale")
+#define STR_PAGE_POSITIONING NC_("STR_PAGE_POSITIONING", "Positioning")
+#define STR_PAGE_TRENDLINE_TYPE NC_("STR_PAGE_TRENDLINE_TYPE", "Type")
+#define STR_PAGE_XERROR_BARS NC_("STR_PAGE_XERROR_BARS", "X Error Bars")
+#define STR_PAGE_YERROR_BARS NC_("STR_PAGE_YERROR_BARS", "Y Error Bars")
+#define STR_PAGE_ALIGNMENT NC_("STR_PAGE_ALIGNMENT", "Alignment")
+#define STR_PAGE_PERSPECTIVE NC_("STR_PAGE_PERSPECTIVE", "Perspective")
+#define STR_PAGE_APPEARANCE NC_("STR_PAGE_APPEARANCE", "Appearance")
+#define STR_PAGE_ILLUMINATION NC_("STR_PAGE_ILLUMINATION", "Illumination")
+#define STR_PAGE_ASIAN NC_("STR_PAGE_ASIAN", "Asian Typography")
+#define STR_OBJECT_AVERAGE_LINE_WITH_PARAMETERS NC_("STR_OBJECT_AVERAGE_LINE_WITH_PARAMETERS", "Mean value line with value %AVERAGE_VALUE and standard deviation %STD_DEVIATION")
+#define STR_OBJECT_AXIS NC_("STR_OBJECT_AXIS", "Axis")
+#define STR_OBJECT_AXIS_X NC_("STR_OBJECT_AXIS_X", "X Axis")
+#define STR_OBJECT_AXIS_Y NC_("STR_OBJECT_AXIS_Y", "Y Axis")
+#define STR_OBJECT_AXIS_Z NC_("STR_OBJECT_AXIS_Z", "Z Axis")
+#define STR_OBJECT_SECONDARY_X_AXIS NC_("STR_OBJECT_SECONDARY_X_AXIS", "Secondary X Axis")
+#define STR_OBJECT_SECONDARY_Y_AXIS NC_("STR_OBJECT_SECONDARY_Y_AXIS", "Secondary Y Axis")
+#define STR_OBJECT_AXES NC_("STR_OBJECT_AXES", "Axes")
+#define STR_OBJECT_GRIDS NC_("STR_OBJECT_GRIDS", "Grids")
+#define STR_OBJECT_GRID NC_("STR_OBJECT_GRID", "Grid")
+#define STR_OBJECT_GRID_MAJOR_X NC_("STR_OBJECT_GRID_MAJOR_X", "X Axis Major Grid")
+#define STR_OBJECT_GRID_MAJOR_Y NC_("STR_OBJECT_GRID_MAJOR_Y", "Y Axis Major Grid")
+#define STR_OBJECT_GRID_MAJOR_Z NC_("STR_OBJECT_GRID_MAJOR_Z", "Z Axis Major Grid")
+#define STR_OBJECT_GRID_MINOR_X NC_("STR_OBJECT_GRID_MINOR_X", "X Axis Minor Grid")
+#define STR_OBJECT_GRID_MINOR_Y NC_("STR_OBJECT_GRID_MINOR_Y", "Y Axis Minor Grid")
+#define STR_OBJECT_GRID_MINOR_Z NC_("STR_OBJECT_GRID_MINOR_Z", "Z Axis Minor Grid")
+#define STR_OBJECT_LEGEND NC_("STR_OBJECT_LEGEND", "Legend")
+#define STR_OBJECT_TITLE NC_("STR_OBJECT_TITLE", "Title")
+#define STR_OBJECT_TITLES NC_("STR_OBJECT_TITLES", "Titles")
+#define STR_OBJECT_TITLE_MAIN NC_("STR_OBJECT_TITLE_MAIN", "Main Title")
+#define STR_OBJECT_TITLE_SUB NC_("STR_OBJECT_TITLE_SUB", "Subtitle")
+#define STR_OBJECT_TITLE_X_AXIS NC_("STR_OBJECT_TITLE_X_AXIS", "X Axis Title")
+#define STR_OBJECT_TITLE_Y_AXIS NC_("STR_OBJECT_TITLE_Y_AXIS", "Y Axis Title")
+#define STR_OBJECT_TITLE_Z_AXIS NC_("STR_OBJECT_TITLE_Z_AXIS", "Z Axis Title")
+#define STR_OBJECT_TITLE_SECONDARY_X_AXIS NC_("STR_OBJECT_TITLE_SECONDARY_X_AXIS", "Secondary X Axis Title")
+#define STR_OBJECT_TITLE_SECONDARY_Y_AXIS NC_("STR_OBJECT_TITLE_SECONDARY_Y_AXIS", "Secondary Y Axis Title")
+#define STR_OBJECT_LABEL NC_("STR_OBJECT_LABEL", "Label")
+#define STR_OBJECT_DATALABELS NC_("STR_OBJECT_DATALABELS", "Data Labels")
+#define STR_OBJECT_DATAPOINT NC_("STR_OBJECT_DATAPOINT", "Data Point")
+#define STR_OBJECT_DATAPOINTS NC_("STR_OBJECT_DATAPOINTS", "Data Points")
+#define STR_OBJECT_LEGEND_SYMBOL NC_("STR_OBJECT_LEGEND_SYMBOL", "Legend Key")
+#define STR_OBJECT_DATASERIES NC_("STR_OBJECT_DATASERIES", "Data Series")
+#define STR_OBJECT_DATASERIES_PLURAL NC_("STR_OBJECT_DATASERIES_PLURAL", "Data Series")
+#define STR_OBJECT_CURVE NC_("STR_OBJECT_CURVE", "Trend Line")
+#define STR_OBJECT_CURVES NC_("STR_OBJECT_CURVES", "Trend Lines")
+#define STR_OBJECT_CURVE_WITH_PARAMETERS NC_("STR_OBJECT_CURVE_WITH_PARAMETERS", "Trend line %FORMULA with accuracy R² = %RSQUARED")
+#define STR_OBJECT_MOVING_AVERAGE_WITH_PARAMETERS NC_("STR_OBJECT_MOVING_AVERAGE_WITH_PARAMETERS", "Moving average trend line with period = %PERIOD")
+#define STR_OBJECT_AVERAGE_LINE NC_("STR_OBJECT_AVERAGE_LINE", "Mean Value Line")
+#define STR_OBJECT_CURVE_EQUATION NC_("STR_OBJECT_CURVE_EQUATION", "Equation")
+#define STR_OBJECT_ERROR_BARS_X NC_("STR_OBJECT_ERROR_BARS_X", "X Error Bars")
+#define STR_OBJECT_ERROR_BARS_Y NC_("STR_OBJECT_ERROR_BARS_Y", "Y Error Bars")
+#define STR_OBJECT_ERROR_BARS_Z NC_("STR_OBJECT_ERROR_BARS_Z", "Z Error Bars")
+#define STR_OBJECT_STOCK_LOSS NC_("STR_OBJECT_STOCK_LOSS", "Stock Loss")
+#define STR_OBJECT_STOCK_GAIN NC_("STR_OBJECT_STOCK_GAIN", "Stock Gain")
+#define STR_OBJECT_PAGE NC_("STR_OBJECT_PAGE", "Chart Area")
+#define STR_OBJECT_DIAGRAM NC_("STR_OBJECT_DIAGRAM", "Chart")
+#define STR_OBJECT_DIAGRAM_WALL NC_("STR_OBJECT_DIAGRAM_WALL", "Chart Wall")
+#define STR_OBJECT_DIAGRAM_FLOOR NC_("STR_OBJECT_DIAGRAM_FLOOR", "Chart Floor")
+#define STR_OBJECT_SHAPE NC_("STR_OBJECT_SHAPE", "Drawing Object")
+#define STR_TIP_DATASERIES NC_("STR_TIP_DATASERIES", "Data Series '%SERIESNAME'")
+#define STR_TIP_DATAPOINT_INDEX NC_("STR_TIP_DATAPOINT_INDEX", "Data Point %POINTNUMBER")
+#define STR_TIP_DATAPOINT_VALUES NC_("STR_TIP_DATAPOINT_VALUES", "Values: %POINTVALUES")
+#define STR_TIP_DATAPOINT NC_("STR_TIP_DATAPOINT", "Data Point %POINTNUMBER, data series %SERIESNUMBER, values: %POINTVALUES")
+#define STR_STATUS_DATAPOINT_MARKED NC_("STR_STATUS_DATAPOINT_MARKED", "Data point %POINTNUMBER in data series %SERIESNUMBER selected, values: %POINTVALUES")
+#define STR_STATUS_OBJECT_MARKED NC_("STR_STATUS_OBJECT_MARKED", "%OBJECTNAME selected")
+#define STR_STATUS_PIE_SEGMENT_EXPLODED NC_("STR_STATUS_PIE_SEGMENT_EXPLODED", "Pie exploded by %PERCENTVALUE percent")
+#define STR_OBJECT_FOR_SERIES NC_("STR_OBJECT_FOR_SERIES", "%OBJECTNAME for Data Series '%SERIESNAME'")
+#define STR_OBJECT_FOR_ALL_SERIES NC_("STR_OBJECT_FOR_ALL_SERIES", "%OBJECTNAME for all Data Series")
+#define STR_ACTION_EDIT_CHARTTYPE NC_("STR_ACTION_EDIT_CHARTTYPE", "Edit chart type")
+#define STR_ACTION_EDIT_DATA_RANGES NC_("STR_ACTION_EDIT_DATA_RANGES", "Edit data ranges")
+#define STR_ACTION_EDIT_3D_VIEW NC_("STR_ACTION_EDIT_3D_VIEW", "Edit 3D view")
+#define STR_ACTION_EDIT_CHART_DATA NC_("STR_ACTION_EDIT_CHART_DATA", "Edit chart data")
+#define STR_ACTION_TOGGLE_LEGEND NC_("STR_ACTION_TOGGLE_LEGEND", "Legend on/off")
+#define STR_ACTION_TOGGLE_GRID_HORZ NC_("STR_ACTION_TOGGLE_GRID_HORZ", "Horizontal grid major/major&minor/off")
+#define STR_ACTION_TOGGLE_GRID_VERTICAL NC_("STR_ACTION_TOGGLE_GRID_VERTICAL", "Vertical grid major/major&minor/off")
+#define STR_ACTION_SCALE_TEXT NC_("STR_ACTION_SCALE_TEXT", "Scale Text")
+#define STR_ACTION_REARRANGE_CHART NC_("STR_ACTION_REARRANGE_CHART", "Automatic Layout")
+#define STR_ACTION_NOTPOSSIBLE NC_("STR_ACTION_NOTPOSSIBLE", "This function cannot be completed with the selected objects.")
+#define STR_ACTION_EDIT_TEXT NC_("STR_ACTION_EDIT_TEXT", "Edit text")
+#define STR_COLUMN_LABEL NC_("STR_COLUMN_LABEL", "Column %COLUMNNUMBER")
+#define STR_ROW_LABEL NC_("STR_ROW_LABEL", "Row %ROWNUMBER")
+#define STR_DATA_ROLE_LABEL NC_("STR_DATA_ROLE_LABEL", "Name")
+#define STR_DATA_ROLE_X NC_("STR_DATA_ROLE_X", "X-Values")
+#define STR_DATA_ROLE_Y NC_("STR_DATA_ROLE_Y", "Y-Values")
+#define STR_DATA_ROLE_SIZE NC_("STR_DATA_ROLE_SIZE", "Bubble Sizes")
+#define STR_DATA_ROLE_X_ERROR NC_("STR_DATA_ROLE_X_ERROR", "X-Error-Bars")
+#define STR_DATA_ROLE_X_ERROR_POSITIVE NC_("STR_DATA_ROLE_X_ERROR_POSITIVE", "Positive X-Error-Bars")
+#define STR_DATA_ROLE_X_ERROR_NEGATIVE NC_("STR_DATA_ROLE_X_ERROR_NEGATIVE", "Negative X-Error-Bars")
+#define STR_DATA_ROLE_Y_ERROR NC_("STR_DATA_ROLE_Y_ERROR", "Y-Error-Bars")
+#define STR_DATA_ROLE_Y_ERROR_POSITIVE NC_("STR_DATA_ROLE_Y_ERROR_POSITIVE", "Positive Y-Error-Bars")
+#define STR_DATA_ROLE_Y_ERROR_NEGATIVE NC_("STR_DATA_ROLE_Y_ERROR_NEGATIVE", "Negative Y-Error-Bars")
+#define STR_DATA_ROLE_FIRST NC_("STR_DATA_ROLE_FIRST", "Open Values")
+#define STR_DATA_ROLE_LAST NC_("STR_DATA_ROLE_LAST", "Close Values")
+#define STR_DATA_ROLE_MIN NC_("STR_DATA_ROLE_MIN", "Low Values")
+#define STR_DATA_ROLE_MAX NC_("STR_DATA_ROLE_MAX", "High Values")
+#define STR_DATA_ROLE_CATEGORIES NC_("STR_DATA_ROLE_CATEGORIES", "Categories")
+#define STR_DATA_UNNAMED_SERIES NC_("STR_DATA_UNNAMED_SERIES", "Series")
+#define STR_DATA_UNNAMED_SERIES_WITH_INDEX NC_("STR_DATA_UNNAMED_SERIES_WITH_INDEX", "Series%NUMBER")
+#define STR_DATA_SELECT_RANGE_FOR_SERIES NC_("STR_DATA_SELECT_RANGE_FOR_SERIES", "Select Range for %VALUETYPE of %SERIESNAME")
+#define STR_DATA_SELECT_RANGE_FOR_CATEGORIES NC_("STR_DATA_SELECT_RANGE_FOR_CATEGORIES", "Select Range for Categories")
+#define STR_DATA_SELECT_RANGE_FOR_DATALABELS NC_("STR_DATA_SELECT_RANGE_FOR_DATALABELS", "Select Range for data labels")
+#define STR_DATA_EDITOR_INCORRECT_INPUT NC_("STR_DATA_EDITOR_INCORRECT_INPUT", "Your last input is incorrect.\nIgnore this change and close the dialog?")
+#define STR_TEXT_DIRECTION_LTR NC_("STR_TEXT_DIRECTION_LTR", "Left-to-right")
+#define STR_TEXT_DIRECTION_RTL NC_("STR_TEXT_DIRECTION_RTL", "Right-to-left")
+#define STR_TEXT_DIRECTION_SUPER NC_("STR_TEXT_DIRECTION_SUPER", "Use superordinate object settings")
+#define STR_PROPERTY_ROLE_FILLCOLOR NC_("STR_PROPERTY_ROLE_FILLCOLOR", "Fill Color")
+#define STR_PROPERTY_ROLE_BORDERCOLOR NC_("STR_PROPERTY_ROLE_BORDERCOLOR", "Border Color")
+#define STR_DATA_TABLE NC_("STR_DATA_TABLE", "Data Table")
+
+#define STR_CONTROLTEXT_ERROR_BARS_FROM_DATA NC_("STR_CONTROLTEXT_ERROR_BARS_FROM_DATA", "From Data Table")
+#define STR_REGRESSION_LINEAR NC_("STR_REGRESSION_LINEAR", "Linear")
+#define STR_REGRESSION_LOG NC_("STR_REGRESSION_LOG", "Logarithmic")
+#define STR_REGRESSION_EXP NC_("STR_REGRESSION_EXP", "Exponential")
+#define STR_REGRESSION_POWER NC_("STR_REGRESSION_POWER", "Power")
+#define STR_REGRESSION_POLYNOMIAL NC_("STR_REGRESSION_POLYNOMIAL", "Polynomial")
+#define STR_REGRESSION_MOVING_AVERAGE NC_("STR_REGRESSION_MOVING_AVERAGE", "Moving average")
+#define STR_REGRESSION_MEAN NC_("STR_REGRESSION_MEAN", "Mean")
+
+#define STR_TYPE_COLUMN NC_("STR_TYPE_COLUMN", "Column")
+#define STR_TYPE_BAR NC_("STR_TYPE_BAR", "Bar")
+#define STR_TYPE_AREA NC_("STR_TYPE_AREA", "Area")
+#define STR_TYPE_PIE NC_("STR_TYPE_PIE", "Pie")
+#define STR_PIE_EXPLODED NC_("STR_PIE_EXPLODED", "Exploded Pie Chart")
+#define STR_DONUT_EXPLODED NC_("STR_DONUT_EXPLODED", "Exploded Donut Chart")
+#define STR_DONUT NC_("STR_DONUT", "Donut")
+#define STR_TYPE_LINE NC_("STR_TYPE_LINE", "Line")
+#define STR_TYPE_XY NC_("STR_TYPE_XY", "XY (Scatter)")
+#define STR_POINTS_AND_LINES NC_("STR_POINTS_AND_LINES", "Points and Lines")
+#define STR_POINTS_ONLY NC_("STR_POINTS_ONLY", "Points Only")
+#define STR_LINES_ONLY NC_("STR_LINES_ONLY", "Lines Only")
+#define STR_LINES_3D NC_("STR_LINES_3D", "3D Lines")
+#define STR_TYPE_COMBI_COLUMN_LINE NC_("STR_TYPE_COMBI_COLUMN_LINE", "Column and Line")
+#define STR_LINE_COLUMN NC_("STR_LINE_COLUMN", "Columns and Lines")
+#define STR_LINE_STACKEDCOLUMN NC_("STR_LINE_STACKEDCOLUMN", "Stacked Columns and Lines")
+#define STR_TYPE_NET NC_("STR_TYPE_NET", "Net")
+#define STR_TYPE_STOCK NC_("STR_TYPE_STOCK", "Stock")
+#define STR_STOCK_1 NC_("STR_STOCK_1", "Stock Chart 1")
+#define STR_STOCK_2 NC_("STR_STOCK_2", "Stock Chart 2")
+#define STR_STOCK_3 NC_("STR_STOCK_3", "Stock Chart 3")
+#define STR_STOCK_4 NC_("STR_STOCK_4", "Stock Chart 4")
+#define STR_NORMAL NC_("STR_NORMAL", "Normal")
+#define STR_STACKED NC_("STR_STACKED", "Stacked")
+#define STR_PERCENT NC_("STR_PERCENT", "Percent Stacked")
+#define STR_DEEP NC_("STR_DEEP", "Deep")
+#define STR_FILLED NC_("STR_FILLED", "Filled")
+#define STR_TYPE_BUBBLE NC_("STR_TYPE_BUBBLE", "Bubble")
+#define STR_BUBBLE_1 NC_("STR_BUBBLE_1", "Bubble Chart")
+
+#define STR_INVALID_NUMBER NC_("STR_INVALID_NUMBER", "Numbers are required. Check your input.")
+#define STR_STEP_GT_ZERO NC_("STR_STEP_GT_ZERO", "The major interval requires a positive number. Check your input.")
+#define STR_BAD_LOGARITHM NC_("STR_BAD_LOGARITHM", "The logarithmic scale requires positive numbers. Check your input.")
+#define STR_MIN_GREATER_MAX NC_("STR_MIN_GREATER_MAX", "The minimum must be lower than the maximum. Check your input.")
+#define STR_INVALID_INTERVALS NC_("STR_INVALID_INTERVALS", "The major interval needs to be greater than the minor interval. Check your input.")
+#define STR_INVALID_TIME_UNIT NC_("STR_INVALID_TIME_UNIT", "The major and minor interval need to be greater or equal to the resolution. Check your input.")
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/chart2/inc/unonames.hxx b/chart2/inc/unonames.hxx
new file mode 100644
index 0000000000..abe1908449
--- /dev/null
+++ b/chart2/inc/unonames.hxx
@@ -0,0 +1,38 @@
+/* -*- 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/.
+ */
+
+#pragma once
+
+#include <rtl/ustring.hxx>
+
+inline constexpr OUString CHART_UNONAME_SORT_BY_XVALUES = u"SortByXValues"_ustr;
+inline constexpr OUString CHART_UNONAME_SPLINE_TYPE = u"SplineType"_ustr;
+inline constexpr OUString CHART_UNONAME_SPLINE_ORDER = u"SplineOrder"_ustr;
+inline constexpr OUString CHART_UNONAME_SPLINE_RESOLUTION = u"SplineResolution"_ustr;
+inline constexpr OUString CHART_UNONAME_CURVE_STYLE = u"CurveStyle"_ustr;
+inline constexpr OUString CHART_UNONAME_CURVE_RESOLUTION = u"CurveResolution"_ustr;
+inline constexpr OUString CHART_UNONAME_NUMFMT = u"NumberFormat"_ustr;
+inline constexpr OUString CHART_UNONAME_LINK_TO_SRC_NUMFMT = u"LinkNumberFormatToSource"_ustr;
+inline constexpr OUString CHART_UNONAME_ERRORBAR_X = u"ErrorBarX"_ustr;
+inline constexpr OUString CHART_UNONAME_ERRORBAR_Y = u"ErrorBarY"_ustr;
+inline constexpr OUString CHART_UNONAME_LABEL = u"Label"_ustr;
+inline constexpr OUString CHART_UNONAME_LABEL_SEP = u"LabelSeparator"_ustr;
+inline constexpr OUString CHART_UNONAME_LABEL_BORDER_STYLE = u"LabelBorderStyle"_ustr;
+inline constexpr OUString CHART_UNONAME_LABEL_BORDER_WIDTH = u"LabelBorderWidth"_ustr;
+inline constexpr OUString CHART_UNONAME_LABEL_BORDER_COLOR = u"LabelBorderColor"_ustr;
+inline constexpr OUString CHART_UNONAME_LABEL_BORDER_DASH = u"LabelBorderDash"_ustr;
+inline constexpr OUString CHART_UNONAME_LABEL_BORDER_DASHNAME = u"LabelBorderDashName"_ustr;
+inline constexpr OUString CHART_UNONAME_LABEL_BORDER_TRANS = u"LabelBorderTransparency"_ustr;
+inline constexpr OUString CHART_UNONAME_LABEL_FILL_STYLE = u"LabelFillStyle"_ustr;
+inline constexpr OUString CHART_UNONAME_LABEL_FILL_BACKGROUND = u"LabelFillBackground"_ustr;
+inline constexpr OUString CHART_UNONAME_LABEL_FILL_HATCH_NAME = u"LabelFillHatchName"_ustr;
+inline constexpr OUString CHART_UNONAME_LABEL_FILL_COLOR = u"LabelFillColor"_ustr;
+inline constexpr OUString CHART_UNONAME_CUSTOM_LABEL_FIELDS = u"CustomLabelFields"_ustr;
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */