[Libreoffice-commits] core.git: Branch 'feature/chart-style-experiment-markus' - 2 commits - chart2/source

Markus Mohrhard (via logerrit) logerrit at kemper.freedesktop.org
Tue Aug 6 21:12:27 UTC 2019


 chart2/source/inc/ChartStyle.hxx    |   43 +++++++----
 chart2/source/inc/Legend.hxx        |  134 ++++++++++++++++++++++++++++++++++++
 chart2/source/model/main/Legend.cxx |  116 +++++++++++++------------------
 chart2/source/model/main/Legend.hxx |  107 ----------------------------
 chart2/source/tools/ChartStyle.cxx  |  111 +++++++++++++++++------------
 5 files changed, 277 insertions(+), 234 deletions(-)

New commits:
commit d63f1346a6c5767d995c787fe2bb36b023a64788
Author:     Markus Mohrhard <markus.mohrhard at googlemail.com>
AuthorDate: Wed Aug 7 05:10:41 2019 +0800
Commit:     Markus Mohrhard <markus.mohrhard at googlemail.com>
CommitDate: Wed Aug 7 05:10:41 2019 +0800

    store the first style in ChartStyle
    
    Change-Id: Ib72b2c9aeb3ba2c09e8be6edbbd713cb2512b3e7

diff --git a/chart2/source/inc/ChartStyle.hxx b/chart2/source/inc/ChartStyle.hxx
index f01fa6769524..2c1fb3d9e7f8 100644
--- a/chart2/source/inc/ChartStyle.hxx
+++ b/chart2/source/inc/ChartStyle.hxx
@@ -33,13 +33,24 @@
 
 namespace chart2
 {
+namespace impl
+{
+typedef ::cppu::WeakImplHelper<css::style::XStyle> ChartObjectStyle_Base;
+}
 
-class ChartObjectStyle : public chart::MutexContainer, public property::OPropertySet, public css::style::XStyle
+class ChartObjectStyle : public chart::MutexContainer,
+                         public impl::ChartObjectStyle_Base,
+                         public property::OPropertySet
 {
 public:
-    ChartObjectStyle(::cppu::IPropertyArrayHelper& rArrayHelper, const chart::tPropertyValueMap& rPropertyMap);
+    ChartObjectStyle(css::uno::Reference<css::beans::XPropertySetInfo> xPropertySetInfo,
+                     ::cppu::IPropertyArrayHelper& rArrayHelper,
+                     const chart::tPropertyValueMap& rPropertyMap);
     virtual ~ChartObjectStyle();
 
+    /// merge XInterface implementations
+    DECLARE_XINTERFACE()
+
     virtual sal_Bool SAL_CALL isUserDefined() override;
     virtual sal_Bool SAL_CALL isInUse() override;
 
@@ -47,32 +58,34 @@ public:
     virtual void SAL_CALL setParentStyle(const OUString&) override;
 
     // ____ OPropertySet ____
-    virtual css::uno::Any GetDefaultValue( sal_Int32 nHandle ) const override;
+    virtual css::uno::Any GetDefaultValue(sal_Int32 nHandle) const override;
 
     // ____ OPropertySet ____
-    virtual ::cppu::IPropertyArrayHelper & SAL_CALL getInfoHelper() override;
+    virtual ::cppu::IPropertyArrayHelper& SAL_CALL getInfoHelper() override;
 
     // ____ XPropertySet ____
-    virtual css::uno::Reference< css::beans::XPropertySetInfo > SAL_CALL
-        getPropertySetInfo() override;
+    virtual css::uno::Reference<css::beans::XPropertySetInfo>
+        SAL_CALL getPropertySetInfo() override;
 
-private:
+    virtual OUString SAL_CALL getName();
 
+    virtual void SAL_CALL setName(const OUString&);
+
+private:
     ::cppu::IPropertyArrayHelper& mrArrayHelper;
     const chart::tPropertyValueMap& mrPropertyMap;
+    css::uno::Reference<css::beans::XPropertySetInfo> mxPropSetInfo;
 };
 
-class ChartStyle : public cppu::WeakImplHelper<
-                      css::chart2::XChartStyle
-                    , css::lang::XServiceInfo >
+class ChartStyle : public cppu::WeakImplHelper<css::chart2::XChartStyle, css::lang::XServiceInfo>
 {
 public:
     explicit ChartStyle();
     virtual ~ChartStyle();
     /// XServiceInfo declarations
     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;
+    virtual sal_Bool SAL_CALL supportsService(const OUString& ServiceName) override;
+    virtual css::uno::Sequence<OUString> SAL_CALL getSupportedServiceNames() override;
 
     // _____ XChartStyle _____
     virtual css::uno::Reference<css::beans::XPropertySet>
@@ -82,6 +95,8 @@ private:
     sal_Int16 m_nNumObjects;
 
     std::map<sal_Int16, css::uno::Reference<css::beans::XPropertySet>> m_xChartStyle;
+
+    void register_styles();
 };
 
 } // namespace chart2
diff --git a/chart2/source/inc/Legend.hxx b/chart2/source/inc/Legend.hxx
new file mode 100644
index 000000000000..b3685eb5862a
--- /dev/null
+++ b/chart2/source/inc/Legend.hxx
@@ -0,0 +1,134 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ *
+ * This file incorporates work covered by the following license notice:
+ *
+ *   Licensed to the Apache Software Foundation (ASF) under one or more
+ *   contributor license agreements. See the NOTICE file distributed
+ *   with this work for additional information regarding copyright
+ *   ownership. The ASF licenses this file to you under the Apache
+ *   License, Version 2.0 (the "License"); you may not use this file
+ *   except in compliance with the License. You may obtain a copy of
+ *   the License at http://www.apache.org/licenses/LICENSE-2.0 .
+ */
+#ifndef INCLUDED_CHART2_SOURCE_MODEL_MAIN_LEGEND_HXX
+#define INCLUDED_CHART2_SOURCE_MODEL_MAIN_LEGEND_HXX
+
+#include <OPropertySet.hxx>
+#include <MutexContainer.hxx>
+#include <PropertyHelper.hxx>
+#include <cppuhelper/implbase.hxx>
+#include <comphelper/uno3.hxx>
+#include <com/sun/star/chart2/XLegend.hpp>
+#include <com/sun/star/lang/XServiceInfo.hpp>
+#include <com/sun/star/util/XCloneable.hpp>
+#include <com/sun/star/util/XModifyBroadcaster.hpp>
+#include <com/sun/star/util/XModifyListener.hpp>
+
+namespace chart
+{
+namespace impl
+{
+typedef ::cppu::WeakImplHelper<css::chart2::XLegend, css::lang::XServiceInfo, css::util::XCloneable,
+                               css::util::XModifyBroadcaster, css::util::XModifyListener>
+    Legend_Base;
+}
+
+namespace legend
+{
+struct StaticLegendInfo_Initializer
+{
+    css::uno::Reference<css::beans::XPropertySetInfo>* operator()();
+};
+
+struct StaticLegendInfo
+    : public rtl::StaticAggregate<css::uno::Reference<css::beans::XPropertySetInfo>,
+                                  StaticLegendInfo_Initializer>
+{
+};
+
+struct StaticLegendDefaults_Initializer
+{
+    ::chart::tPropertyValueMap* operator()();
+};
+
+struct StaticLegendDefaults
+    : public rtl::StaticAggregate<::chart::tPropertyValueMap, StaticLegendDefaults_Initializer>
+{
+};
+
+struct StaticLegendInfoHelper_Initializer
+{
+    ::cppu::OPropertyArrayHelper* operator()();
+};
+
+struct StaticLegendInfoHelper
+    : public rtl::StaticAggregate<::cppu::OPropertyArrayHelper, StaticLegendInfoHelper_Initializer>
+{
+};
+}
+
+class Legend final : public MutexContainer,
+                     public impl::Legend_Base,
+                     public ::property::OPropertySet
+{
+public:
+    explicit Legend();
+    virtual ~Legend() override;
+
+    /// XServiceInfo declarations
+    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;
+
+    /// merge XInterface implementations
+    DECLARE_XINTERFACE()
+    /// merge XTypeProvider implementations
+    DECLARE_XTYPEPROVIDER()
+
+private:
+    explicit Legend(const Legend& rOther);
+
+    // ____ OPropertySet ____
+    virtual css::uno::Any GetDefaultValue(sal_Int32 nHandle) const override;
+
+    // ____ OPropertySet ____
+    virtual ::cppu::IPropertyArrayHelper& SAL_CALL getInfoHelper() override;
+
+    // ____ XPropertySet ____
+    virtual css::uno::Reference<css::beans::XPropertySetInfo>
+        SAL_CALL getPropertySetInfo() override;
+
+    // ____ XCloneable ____
+    virtual css::uno::Reference<css::util::XCloneable> SAL_CALL createClone() override;
+
+    // ____ XModifyBroadcaster ____
+    virtual void SAL_CALL
+    addModifyListener(const css::uno::Reference<css::util::XModifyListener>& aListener) override;
+    virtual void SAL_CALL
+    removeModifyListener(const css::uno::Reference<css::util::XModifyListener>& aListener) 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;
+
+    // ____ OPropertySet ____
+    virtual void firePropertyChangeEvent() override;
+    using OPropertySet::disposing;
+
+    css::uno::Reference<css::util::XModifyListener> m_xModifyEventForwarder;
+};
+
+} //  namespace chart
+
+// INCLUDED_CHART2_SOURCE_MODEL_MAIN_LEGEND_HXX
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/chart2/source/model/main/Legend.cxx b/chart2/source/model/main/Legend.cxx
index 654ccc45cbcd..b1d18c25f89c 100644
--- a/chart2/source/model/main/Legend.cxx
+++ b/chart2/source/model/main/Legend.cxx
@@ -98,83 +98,67 @@ void lcl_AddPropertiesToVector(
 
 }
 
-struct StaticLegendDefaults_Initializer
+static Sequence< Property > lcl_GetPropertySequence()
 {
-    ::chart::tPropertyValueMap* operator()()
-    {
-        static ::chart::tPropertyValueMap aStaticDefaults;
-        lcl_AddDefaultsToMap( aStaticDefaults );
-        return &aStaticDefaults;
-    }
-private:
-    static void lcl_AddDefaultsToMap( ::chart::tPropertyValueMap & rOutMap )
-    {
-        ::chart::LinePropertiesHelper::AddDefaultsToMap( rOutMap );
-        ::chart::FillProperties::AddDefaultsToMap( rOutMap );
-        ::chart::CharacterProperties::AddDefaultsToMap( rOutMap );
-
-        ::chart::PropertyHelper::setPropertyValueDefault( rOutMap, PROP_LEGEND_ANCHOR_POSITION, chart2::LegendPosition_LINE_END );
-        ::chart::PropertyHelper::setPropertyValueDefault( rOutMap, PROP_LEGEND_EXPANSION, css::chart::ChartLegendExpansion_HIGH );
-        ::chart::PropertyHelper::setPropertyValueDefault( rOutMap, PROP_LEGEND_SHOW, true );
-
-        float fDefaultCharHeight = 10.0;
-        ::chart::PropertyHelper::setPropertyValue( rOutMap, ::chart::CharacterProperties::PROP_CHAR_CHAR_HEIGHT, fDefaultCharHeight );
-        ::chart::PropertyHelper::setPropertyValue( rOutMap, ::chart::CharacterProperties::PROP_CHAR_ASIAN_CHAR_HEIGHT, fDefaultCharHeight );
-        ::chart::PropertyHelper::setPropertyValue( rOutMap, ::chart::CharacterProperties::PROP_CHAR_COMPLEX_CHAR_HEIGHT, fDefaultCharHeight );
-    }
-};
+    std::vector< css::beans::Property > aProperties;
+    lcl_AddPropertiesToVector( aProperties );
+    ::chart::LinePropertiesHelper::AddPropertiesToVector( aProperties );
+    ::chart::FillProperties::AddPropertiesToVector( aProperties );
+    ::chart::CharacterProperties::AddPropertiesToVector( aProperties );
+    ::chart::UserDefinedProperties::AddPropertiesToVector( aProperties );
 
-struct StaticLegendDefaults : public rtl::StaticAggregate< ::chart::tPropertyValueMap, StaticLegendDefaults_Initializer >
-{
-};
+    std::sort( aProperties.begin(), aProperties.end(),
+                 ::chart::PropertyNameLess() );
 
-struct StaticLegendInfoHelper_Initializer
-{
-    ::cppu::OPropertyArrayHelper* operator()()
-    {
-        static ::cppu::OPropertyArrayHelper aPropHelper( lcl_GetPropertySequence() );
-        return &aPropHelper;
-    }
-
-private:
-    static Sequence< Property > lcl_GetPropertySequence()
-    {
-        std::vector< css::beans::Property > aProperties;
-        lcl_AddPropertiesToVector( aProperties );
-        ::chart::LinePropertiesHelper::AddPropertiesToVector( aProperties );
-        ::chart::FillProperties::AddPropertiesToVector( aProperties );
-        ::chart::CharacterProperties::AddPropertiesToVector( aProperties );
-        ::chart::UserDefinedProperties::AddPropertiesToVector( aProperties );
+    return comphelper::containerToSequence( aProperties );
+}
 
-        std::sort( aProperties.begin(), aProperties.end(),
-                     ::chart::PropertyNameLess() );
+void lcl_AddDefaultsToMap( ::chart::tPropertyValueMap & rOutMap )
+{
+    ::chart::LinePropertiesHelper::AddDefaultsToMap( rOutMap );
+    ::chart::FillProperties::AddDefaultsToMap( rOutMap );
+    ::chart::CharacterProperties::AddDefaultsToMap( rOutMap );
+
+    ::chart::PropertyHelper::setPropertyValueDefault( rOutMap, PROP_LEGEND_ANCHOR_POSITION, chart2::LegendPosition_LINE_END );
+    ::chart::PropertyHelper::setPropertyValueDefault( rOutMap, PROP_LEGEND_EXPANSION, css::chart::ChartLegendExpansion_HIGH );
+    ::chart::PropertyHelper::setPropertyValueDefault( rOutMap, PROP_LEGEND_SHOW, true );
+
+    float fDefaultCharHeight = 10.0;
+    ::chart::PropertyHelper::setPropertyValue( rOutMap, ::chart::CharacterProperties::PROP_CHAR_CHAR_HEIGHT, fDefaultCharHeight );
+    ::chart::PropertyHelper::setPropertyValue( rOutMap, ::chart::CharacterProperties::PROP_CHAR_ASIAN_CHAR_HEIGHT, fDefaultCharHeight );
+    ::chart::PropertyHelper::setPropertyValue( rOutMap, ::chart::CharacterProperties::PROP_CHAR_COMPLEX_CHAR_HEIGHT, fDefaultCharHeight );
+}
 
-        return comphelper::containerToSequence( aProperties );
-    }
-};
+} // anonymous namespace
 
-struct StaticLegendInfoHelper : public rtl::StaticAggregate< ::cppu::OPropertyArrayHelper, StaticLegendInfoHelper_Initializer >
+namespace chart
 {
-};
 
-struct StaticLegendInfo_Initializer
+namespace legend
 {
-    uno::Reference< beans::XPropertySetInfo >* operator()()
-    {
-        static uno::Reference< beans::XPropertySetInfo > xPropertySetInfo(
-            ::cppu::OPropertySetHelper::createPropertySetInfo(*StaticLegendInfoHelper::get() ) );
-        return &xPropertySetInfo;
-    }
-};
 
-struct StaticLegendInfo : public rtl::StaticAggregate< uno::Reference< beans::XPropertySetInfo >, StaticLegendInfo_Initializer >
+::cppu::OPropertyArrayHelper* StaticLegendInfoHelper_Initializer::operator()()
 {
-};
+    static ::cppu::OPropertyArrayHelper aPropHelper( lcl_GetPropertySequence() );
+    return &aPropHelper;
+}
 
-} // anonymous namespace
 
-namespace chart
+uno::Reference< beans::XPropertySetInfo >* StaticLegendInfo_Initializer::operator()()
+{
+    static uno::Reference< beans::XPropertySetInfo > xPropertySetInfo(
+        ::cppu::OPropertySetHelper::createPropertySetInfo(*StaticLegendInfoHelper::get() ) );
+    return &xPropertySetInfo;
+}
+
+::chart::tPropertyValueMap* StaticLegendDefaults_Initializer::operator()()
 {
+    static ::chart::tPropertyValueMap aStaticDefaults;
+    lcl_AddDefaultsToMap( aStaticDefaults );
+    return &aStaticDefaults;
+}
+
+}
 
 Legend::Legend() :
         ::property::OPropertySet( m_aMutex ),
@@ -247,7 +231,7 @@ void Legend::firePropertyChangeEvent()
 // ____ OPropertySet ____
 Any Legend::GetDefaultValue( sal_Int32 nHandle ) const
 {
-    const tPropertyValueMap& rStaticDefaults = *StaticLegendDefaults::get();
+    const tPropertyValueMap& rStaticDefaults = *legend::StaticLegendDefaults::get();
     tPropertyValueMap::const_iterator aFound( rStaticDefaults.find( nHandle ) );
     if( aFound == rStaticDefaults.end() )
         return uno::Any();
@@ -256,13 +240,13 @@ Any Legend::GetDefaultValue( sal_Int32 nHandle ) const
 
 ::cppu::IPropertyArrayHelper & SAL_CALL Legend::getInfoHelper()
 {
-    return *StaticLegendInfoHelper::get();
+    return *legend::StaticLegendInfoHelper::get();
 }
 
 // ____ XPropertySet ____
 Reference< beans::XPropertySetInfo > SAL_CALL Legend::getPropertySetInfo()
 {
-    return *StaticLegendInfo::get();
+    return *legend::StaticLegendInfo::get();
 }
 
 // implement XServiceInfo methods basing upon getSupportedServiceNames_Static
diff --git a/chart2/source/model/main/Legend.hxx b/chart2/source/model/main/Legend.hxx
deleted file mode 100644
index 516324f2e107..000000000000
--- a/chart2/source/model/main/Legend.hxx
+++ /dev/null
@@ -1,107 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*
- * This file is part of the LibreOffice project.
- *
- * This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/.
- *
- * This file incorporates work covered by the following license notice:
- *
- *   Licensed to the Apache Software Foundation (ASF) under one or more
- *   contributor license agreements. See the NOTICE file distributed
- *   with this work for additional information regarding copyright
- *   ownership. The ASF licenses this file to you under the Apache
- *   License, Version 2.0 (the "License"); you may not use this file
- *   except in compliance with the License. You may obtain a copy of
- *   the License at http://www.apache.org/licenses/LICENSE-2.0 .
- */
-#ifndef INCLUDED_CHART2_SOURCE_MODEL_MAIN_LEGEND_HXX
-#define INCLUDED_CHART2_SOURCE_MODEL_MAIN_LEGEND_HXX
-
-#include <OPropertySet.hxx>
-#include <MutexContainer.hxx>
-#include <cppuhelper/implbase.hxx>
-#include <comphelper/uno3.hxx>
-#include <com/sun/star/chart2/XLegend.hpp>
-#include <com/sun/star/lang/XServiceInfo.hpp>
-#include <com/sun/star/util/XCloneable.hpp>
-#include <com/sun/star/util/XModifyBroadcaster.hpp>
-#include <com/sun/star/util/XModifyListener.hpp>
-
-namespace chart
-{
-
-namespace impl
-{
-typedef ::cppu::WeakImplHelper<
-        css::chart2::XLegend,
-        css::lang::XServiceInfo,
-        css::util::XCloneable,
-        css::util::XModifyBroadcaster,
-        css::util::XModifyListener >
-    Legend_Base;
-}
-
-class Legend final :
-    public MutexContainer,
-    public impl::Legend_Base,
-    public ::property::OPropertySet
-{
-public:
-    explicit Legend();
-    virtual ~Legend() override;
-
-    /// XServiceInfo declarations
-    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;
-
-    /// merge XInterface implementations
-     DECLARE_XINTERFACE()
-    /// merge XTypeProvider implementations
-     DECLARE_XTYPEPROVIDER()
-
-private:
-    explicit Legend( const Legend & rOther );
-
-    // ____ OPropertySet ____
-    virtual css::uno::Any GetDefaultValue( sal_Int32 nHandle ) const override;
-
-    // ____ OPropertySet ____
-    virtual ::cppu::IPropertyArrayHelper & SAL_CALL getInfoHelper() override;
-
-    // ____ XPropertySet ____
-    virtual css::uno::Reference< css::beans::XPropertySetInfo > SAL_CALL
-        getPropertySetInfo() override;
-
-    // ____ XCloneable ____
-    virtual css::uno::Reference< css::util::XCloneable > SAL_CALL createClone() override;
-
-    // ____ XModifyBroadcaster ____
-    virtual void SAL_CALL addModifyListener(
-        const css::uno::Reference< css::util::XModifyListener >& aListener ) override;
-    virtual void SAL_CALL removeModifyListener(
-        const css::uno::Reference< css::util::XModifyListener >& aListener ) 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;
-
-    // ____ OPropertySet ____
-    virtual void firePropertyChangeEvent() override;
-    using OPropertySet::disposing;
-
-    css::uno::Reference< css::util::XModifyListener > m_xModifyEventForwarder;
-};
-
-} //  namespace chart
-
-// INCLUDED_CHART2_SOURCE_MODEL_MAIN_LEGEND_HXX
-#endif
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/chart2/source/tools/ChartStyle.cxx b/chart2/source/tools/ChartStyle.cxx
index c3a6569e323f..7ec585b330f3 100644
--- a/chart2/source/tools/ChartStyle.cxx
+++ b/chart2/source/tools/ChartStyle.cxx
@@ -22,99 +22,116 @@
 #include <cppuhelper/supportsservice.hxx>
 #include <vector>
 
-namespace com { namespace sun { namespace star { namespace uno { class XComponentContext; } } } }
+#include <Legend.hxx>
 
-namespace chart2
+namespace com
 {
-
-ChartObjectStyle::ChartObjectStyle(::cppu::IPropertyArrayHelper& rArrayHelper, const chart::tPropertyValueMap& rPropertyMap):
-    OPropertySet( m_aMutex ),
-    mrArrayHelper(rArrayHelper),
-    mrPropertyMap(rPropertyMap)
+namespace sun
 {
-}
-
-ChartObjectStyle::~ChartObjectStyle()
+namespace star
 {
-}
-
-sal_Bool SAL_CALL ChartObjectStyle::isInUse()
+namespace uno
 {
-    return true;
+class XComponentContext;
+}
+}
 }
-
-sal_Bool SAL_CALL ChartObjectStyle::isUserDefined()
-{
-    return true;
 }
 
-OUString SAL_CALL ChartObjectStyle::getParentStyle()
+namespace chart2
+{
+ChartObjectStyle::ChartObjectStyle(css::uno::Reference<css::beans::XPropertySetInfo> xPropSetInfo,
+                                   ::cppu::IPropertyArrayHelper& rArrayHelper,
+                                   const chart::tPropertyValueMap& rPropertyMap)
+    : OPropertySet(m_aMutex)
+    , mrArrayHelper(rArrayHelper)
+    , mrPropertyMap(rPropertyMap)
+    , mxPropSetInfo(xPropSetInfo)
 {
-    return "";
 }
 
-void SAL_CALL ChartObjectStyle::setParentStyle(const OUString&)
+ChartObjectStyle::~ChartObjectStyle() {}
+
+sal_Bool SAL_CALL ChartObjectStyle::isInUse() { return true; }
+
+sal_Bool SAL_CALL ChartObjectStyle::isUserDefined() { return true; }
+
+OUString SAL_CALL ChartObjectStyle::getParentStyle() { return ""; }
+
+void SAL_CALL ChartObjectStyle::setParentStyle(const OUString&) {}
+
+css::uno::Reference<css::beans::XPropertySetInfo> SAL_CALL ChartObjectStyle::getPropertySetInfo()
 {
+    return mxPropSetInfo;
 }
 
+OUString SAL_CALL ChartObjectStyle::getName() { return OUString(); }
+
+void SAL_CALL ChartObjectStyle::setName(const OUString&) {}
+
 // ____ OPropertySet ____
-css::uno::Any ChartObjectStyle::GetDefaultValue( sal_Int32 nHandle ) const
+css::uno::Any ChartObjectStyle::GetDefaultValue(sal_Int32 nHandle) const
 {
-    chart::tPropertyValueMap::const_iterator aFound( mrPropertyMap.find( nHandle ) );
-    if( aFound == mrPropertyMap.end() )
+    chart::tPropertyValueMap::const_iterator aFound(mrPropertyMap.find(nHandle));
+    if (aFound == mrPropertyMap.end())
         return css::uno::Any();
     return (*aFound).second;
 }
 
-::cppu::IPropertyArrayHelper & SAL_CALL ChartObjectStyle::getInfoHelper()
-{
-    return mrArrayHelper;
-}
-
-// ____ XPropertySet ____
-css::uno::Reference< css::beans::XPropertySetInfo > SAL_CALL ChartObjectStyle::getPropertySetInfo()
-{
-    //return *mrArrayHelper;
-    return css::uno::Reference<css::beans::XPropertySetInfo>();
-}
+::cppu::IPropertyArrayHelper& SAL_CALL ChartObjectStyle::getInfoHelper() { return mrArrayHelper; }
 
 ChartStyle::ChartStyle()
-    : m_nNumObjects( css::chart2::ChartObjectType::UNKNOWN )
+    : m_nNumObjects(css::chart2::ChartObjectType::UNKNOWN)
 {
+    register_styles();
 }
 
 ChartStyle::~ChartStyle() {}
 
-css::uno::Reference< css::beans::XPropertySet> ChartStyle::getStyleForObject( const sal_Int16 nChartObjectType )
+css::uno::Reference<css::beans::XPropertySet>
+ChartStyle::getStyleForObject(const sal_Int16 nChartObjectType)
 {
     auto itr = m_xChartStyle.find(nChartObjectType);
     if (itr == m_xChartStyle.end())
-        throw css::lang::IllegalArgumentException( "Unknown Chart Object Style requested", nullptr, 0 );
+        throw css::lang::IllegalArgumentException("Unknown Chart Object Style requested", nullptr,
+                                                  0);
 
     return itr->second;
 }
 
+void ChartStyle::register_styles()
+{
+    m_xChartStyle[css::chart2::ChartObjectType::LEGEND] = new ChartObjectStyle(
+        *chart::legend::StaticLegendInfo::get(), *chart::legend::StaticLegendInfoHelper::get(),
+        *chart::legend::StaticLegendDefaults::get());
+}
+
 // _____ XServiceInfo _____
 OUString SAL_CALL ChartStyle::getImplementationName()
 {
     return OUString("com.sun.star.comp.chart2.ChartStyle");
 }
 
-sal_Bool SAL_CALL ChartStyle::supportsService( const OUString& rServiceName )
+sal_Bool SAL_CALL ChartStyle::supportsService(const OUString& rServiceName)
 {
     return cppu::supportsService(this, rServiceName);
 }
 
-css::uno::Sequence< OUString > SAL_CALL ChartStyle::getSupportedServiceNames()
+css::uno::Sequence<OUString> SAL_CALL ChartStyle::getSupportedServiceNames()
 {
     return { "com.sun.star.chart2.ChartStyle" };
 }
+//
+// needed by MSC compiler
+using impl::ChartObjectStyle_Base;
+
+IMPLEMENT_FORWARD_XINTERFACE2(ChartObjectStyle, ChartObjectStyle_Base, ::property::OPropertySet)
 
 } //  namespace chart2
 
-extern "C" SAL_DLLPUBLIC_EXPORT css::uno::XInterface *
-com_sun_star_comp_chart2_ChartStyle_get_implementation(css::uno::XComponentContext *,
-        css::uno::Sequence<css::uno::Any> const &)
+extern "C" SAL_DLLPUBLIC_EXPORT css::uno::XInterface*
+com_sun_star_comp_chart2_ChartStyle_get_implementation(css::uno::XComponentContext*,
+                                                       css::uno::Sequence<css::uno::Any> const&)
 {
     return cppu::acquire(new chart2::ChartStyle);
 }
commit 53b123e26d3fdf98e5287b2278843b6749c35806
Author:     Markus Mohrhard <markus.mohrhard at googlemail.com>
AuthorDate: Wed Aug 7 04:33:44 2019 +0800
Commit:     Markus Mohrhard <markus.mohrhard at googlemail.com>
CommitDate: Wed Aug 7 04:37:02 2019 +0800

    use a map instead of a vector
    
    Change-Id: I9248557b4500cfcaf81ea70b1d5b2f1a92d504f3

diff --git a/chart2/source/inc/ChartStyle.hxx b/chart2/source/inc/ChartStyle.hxx
index 533af66ac483..f01fa6769524 100644
--- a/chart2/source/inc/ChartStyle.hxx
+++ b/chart2/source/inc/ChartStyle.hxx
@@ -25,7 +25,7 @@
 #include <com/sun/star/chart2/XChartStyle.hpp>
 #include <com/sun/star/lang/XServiceInfo.hpp>
 #include <com/sun/star/style/XStyle.hpp>
-#include <vector>
+#include <map>
 
 #include "PropertyHelper.hxx"
 #include "OPropertySet.hxx"
@@ -81,7 +81,7 @@ public:
 private:
     sal_Int16 m_nNumObjects;
 
-    std::vector<css::uno::Reference<css::beans::XPropertySet>> m_xChartStyle;
+    std::map<sal_Int16, css::uno::Reference<css::beans::XPropertySet>> m_xChartStyle;
 };
 
 } // namespace chart2
diff --git a/chart2/source/tools/ChartStyle.cxx b/chart2/source/tools/ChartStyle.cxx
index 8e7a37b52352..c3a6569e323f 100644
--- a/chart2/source/tools/ChartStyle.cxx
+++ b/chart2/source/tools/ChartStyle.cxx
@@ -80,7 +80,6 @@ css::uno::Reference< css::beans::XPropertySetInfo > SAL_CALL ChartObjectStyle::g
 
 ChartStyle::ChartStyle()
     : m_nNumObjects( css::chart2::ChartObjectType::UNKNOWN )
-    , m_xChartStyle( std::vector< css::uno::Reference < css::beans::XPropertySet > >( m_nNumObjects, css::uno::Reference < css::beans::XPropertySet > ()))
 {
 }
 
@@ -88,10 +87,11 @@ ChartStyle::~ChartStyle() {}
 
 css::uno::Reference< css::beans::XPropertySet> ChartStyle::getStyleForObject( const sal_Int16 nChartObjectType )
 {
-    if ( nChartObjectType >= 0 && nChartObjectType < m_nNumObjects )
-        return m_xChartStyle[nChartObjectType];
-    else
+    auto itr = m_xChartStyle.find(nChartObjectType);
+    if (itr == m_xChartStyle.end())
         throw css::lang::IllegalArgumentException( "Unknown Chart Object Style requested", nullptr, 0 );
+
+    return itr->second;
 }
 
 // _____ XServiceInfo _____


More information about the Libreoffice-commits mailing list