summaryrefslogtreecommitdiffstats
path: root/reportdesign/source/core/inc
diff options
context:
space:
mode:
Diffstat (limited to 'reportdesign/source/core/inc')
-rw-r--r--reportdesign/source/core/inc/FixedLine.hxx169
-rw-r--r--reportdesign/source/core/inc/FixedText.hxx185
-rw-r--r--reportdesign/source/core/inc/FormatCondition.hxx146
-rw-r--r--reportdesign/source/core/inc/FormattedField.hxx192
-rw-r--r--reportdesign/source/core/inc/Function.hxx134
-rw-r--r--reportdesign/source/core/inc/Functions.hxx99
-rw-r--r--reportdesign/source/core/inc/Group.hxx168
-rw-r--r--reportdesign/source/core/inc/Groups.hxx100
-rw-r--r--reportdesign/source/core/inc/ImageControl.hxx171
-rw-r--r--reportdesign/source/core/inc/ReportComponent.hxx82
-rw-r--r--reportdesign/source/core/inc/ReportControlModel.hxx138
-rw-r--r--reportdesign/source/core/inc/ReportDrawPage.hxx42
-rw-r--r--reportdesign/source/core/inc/ReportEngineJFree.hxx133
-rw-r--r--reportdesign/source/core/inc/ReportHelperImpl.hxx1293
-rw-r--r--reportdesign/source/core/inc/ReportUndoFactory.hxx74
-rw-r--r--reportdesign/source/core/inc/RptObjectListener.hxx50
-rw-r--r--reportdesign/source/core/inc/Section.hxx232
-rw-r--r--reportdesign/source/core/inc/Shape.hxx209
-rw-r--r--reportdesign/source/core/inc/Tools.hxx155
-rw-r--r--reportdesign/source/core/inc/conditionupdater.hxx62
20 files changed, 3834 insertions, 0 deletions
diff --git a/reportdesign/source/core/inc/FixedLine.hxx b/reportdesign/source/core/inc/FixedLine.hxx
new file mode 100644
index 000000000..7014ef153
--- /dev/null
+++ b/reportdesign/source/core/inc/FixedLine.hxx
@@ -0,0 +1,169 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.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_REPORTDESIGN_SOURCE_CORE_INC_FIXEDLINE_HXX
+#define INCLUDED_REPORTDESIGN_SOURCE_CORE_INC_FIXEDLINE_HXX
+
+#include <cppuhelper/propertysetmixin.hxx>
+#include <com/sun/star/report/XFixedLine.hpp>
+#include "ReportControlModel.hxx"
+#include <comphelper/uno3.hxx>
+#include <cppuhelper/compbase.hxx>
+#include <cppuhelper/basemutex.hxx>
+#include <com/sun/star/lang/XServiceInfo.hpp>
+#include <ReportHelperDefines.hxx>
+
+
+namespace reportdesign
+{
+ typedef ::cppu::PropertySetMixin< css::report::XFixedLine > FixedLinePropertySet;
+ typedef ::cppu::WeakComponentImplHelper< css::report::XFixedLine
+ ,css::lang::XServiceInfo > FixedLineBase;
+
+ /** \class OFixedLine Defines the implementation of a \interface com:::sun::star::report::XFixedLine
+ * \ingroup reportdesign_api
+ *
+ */
+ class OFixedLine final : public cppu::BaseMutex,
+ public FixedLineBase,
+ public FixedLinePropertySet
+ {
+ friend class OShapeHelper;
+ OReportControlModel m_aProps;
+ css::drawing::LineStyle m_LineStyle;
+ css::drawing::LineDash m_LineDash;
+ sal_Int32 m_nOrientation;
+ ::sal_Int32 m_LineColor;
+ ::sal_Int16 m_LineTransparence;
+ ::sal_Int32 m_LineWidth;
+
+ private:
+ OFixedLine(const OFixedLine&) = delete;
+ OFixedLine& operator=(const OFixedLine&) = delete;
+
+ template <typename T> void set( const OUString& _sProperty
+ ,const T& Value
+ ,T& _member)
+ {
+ BoundListeners l;
+ {
+ ::osl::MutexGuard aGuard(m_aMutex);
+ prepareSet(_sProperty, css::uno::Any(_member), css::uno::Any(Value), &l);
+ _member = Value;
+ }
+ l.notify();
+ }
+ virtual ~OFixedLine() override;
+ public:
+ explicit OFixedLine(css::uno::Reference< css::uno::XComponentContext > const & _xContext);
+ explicit OFixedLine(css::uno::Reference< css::uno::XComponentContext > const & _xContext
+ ,const css::uno::Reference< css::lang::XMultiServiceFactory > & _xFactory
+ ,css::uno::Reference< css::drawing::XShape >& _xShape
+ ,sal_Int32 _nOrientation);
+
+ DECLARE_XINTERFACE( )
+ // css::lang::XServiceInfo
+ virtual sal_Bool SAL_CALL supportsService( const OUString& ServiceName ) override;
+ virtual OUString SAL_CALL getImplementationName( ) override;
+ virtual css::uno::Sequence< OUString > SAL_CALL getSupportedServiceNames( ) override;
+
+ /// @throws css::uno::RuntimeException
+ static css::uno::Sequence< OUString > getSupportedServiceNames_Static();
+ /// @throws css::uno::RuntimeException
+ static OUString getImplementationName_Static();
+ static css::uno::Reference< css::uno::XInterface >
+ create(css::uno::Reference< css::uno::XComponentContext > const & xContext);
+ // 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;
+
+ // XReportComponent
+ REPORTCOMPONENT_HEADER()
+
+ // XShape
+ SHAPE_HEADER()
+
+ // XShapeDescriptor
+ virtual OUString SAL_CALL getShapeType( ) override;
+
+ // XReportControlModel
+ REPORTCONTROLMODEL_HEADER()
+
+ // XFixedLine
+ virtual ::sal_Int32 SAL_CALL getOrientation() override;
+ virtual void SAL_CALL setOrientation( ::sal_Int32 _orientation ) override;
+ virtual css::drawing::LineStyle SAL_CALL getLineStyle() override;
+ virtual void SAL_CALL setLineStyle( css::drawing::LineStyle _linestyle ) override;
+ virtual css::drawing::LineDash SAL_CALL getLineDash() override;
+ virtual void SAL_CALL setLineDash( const css::drawing::LineDash& _linedash ) override;
+ virtual ::sal_Int32 SAL_CALL getLineColor() override;
+ virtual void SAL_CALL setLineColor( ::sal_Int32 _linecolor ) override;
+ virtual ::sal_Int16 SAL_CALL getLineTransparence() override;
+ virtual void SAL_CALL setLineTransparence( ::sal_Int16 _linetransparence ) override;
+ virtual ::sal_Int32 SAL_CALL getLineWidth() override;
+ virtual void SAL_CALL setLineWidth( ::sal_Int32 _linewidth ) override;
+
+ // css::report::XReportControlFormat
+ REPORTCONTROLFORMAT_HEADER()
+
+ // XCloneable
+ virtual css::uno::Reference< css::util::XCloneable > SAL_CALL createClone( ) override;
+
+ // XComponent
+ virtual void SAL_CALL dispose() override;
+ virtual void SAL_CALL addEventListener(const css::uno::Reference< css::lang::XEventListener > & aListener) override
+ {
+ cppu::WeakComponentImplHelperBase::addEventListener(aListener);
+ }
+ virtual void SAL_CALL removeEventListener(const css::uno::Reference< css::lang::XEventListener > & aListener) override
+ {
+ cppu::WeakComponentImplHelperBase::removeEventListener(aListener);
+ }
+
+ // 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;
+
+ // XContainer
+ virtual void SAL_CALL addContainerListener( const css::uno::Reference< css::container::XContainerListener >& xListener ) override;
+ virtual void SAL_CALL removeContainerListener( const css::uno::Reference< css::container::XContainerListener >& xListener ) override;
+
+ // XElementAccess
+ virtual css::uno::Type SAL_CALL getElementType( ) override;
+ virtual sal_Bool SAL_CALL hasElements( ) override;
+
+ // XIndexReplace
+ virtual void SAL_CALL replaceByIndex( ::sal_Int32 Index, const css::uno::Any& Element ) override;
+
+ // XIndexContainer
+ virtual void SAL_CALL insertByIndex( ::sal_Int32 Index, const css::uno::Any& Element ) override;
+ virtual void SAL_CALL removeByIndex( ::sal_Int32 Index ) override;
+
+ // XIndexAccess
+ virtual ::sal_Int32 SAL_CALL getCount( ) override;
+ virtual css::uno::Any SAL_CALL getByIndex( ::sal_Int32 Index ) override;
+ };
+}
+#endif // INCLUDED_REPORTDESIGN_SOURCE_CORE_INC_FIXEDLINE_HXX
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/reportdesign/source/core/inc/FixedText.hxx b/reportdesign/source/core/inc/FixedText.hxx
new file mode 100644
index 000000000..6cc63bfeb
--- /dev/null
+++ b/reportdesign/source/core/inc/FixedText.hxx
@@ -0,0 +1,185 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.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_REPORTDESIGN_SOURCE_CORE_INC_FIXEDTEXT_HXX
+#define INCLUDED_REPORTDESIGN_SOURCE_CORE_INC_FIXEDTEXT_HXX
+
+#include <cppuhelper/propertysetmixin.hxx>
+#include <com/sun/star/report/XFixedText.hpp>
+#include "ReportControlModel.hxx"
+#include <comphelper/uno3.hxx>
+#include <cppuhelper/compbase.hxx>
+#include <cppuhelper/basemutex.hxx>
+#include <com/sun/star/lang/XServiceInfo.hpp>
+#include <ReportHelperDefines.hxx>
+
+
+namespace reportdesign
+{
+ typedef ::cppu::PropertySetMixin< css::report::XFixedText > FixedTextPropertySet;
+ typedef ::cppu::WeakComponentImplHelper< css::report::XFixedText
+ ,css::lang::XServiceInfo > FixedTextBase;
+
+ /** \class OFixedText Defines the implementation of a \interface com:::sun::star::report::XFixedText
+ * \ingroup reportdesign_api
+ *
+ */
+ class OFixedText final : public cppu::BaseMutex,
+ public FixedTextBase,
+ public FixedTextPropertySet
+ {
+ friend class OShapeHelper;
+ OReportControlModel m_aProps;
+ OUString m_sLabel;
+ private:
+ OFixedText(const OFixedText&) = delete;
+ OFixedText& operator=(const OFixedText&) = delete;
+
+ // internally, we store PROPERTY_PARAADJUST as css::style::ParagraphAdjust, but externally the property is visible as a sal_Int16
+ void set( const OUString& _sProperty
+ ,sal_Int16 Value
+ ,css::style::ParagraphAdjust& _member)
+ {
+ BoundListeners l;
+ {
+ ::osl::MutexGuard aGuard(m_aMutex);
+ if ( static_cast<sal_Int16>(_member) != Value )
+ {
+ prepareSet(_sProperty, css::uno::Any(static_cast<sal_Int16>(_member)), css::uno::Any(Value), &l);
+ _member = static_cast<css::style::ParagraphAdjust>(Value);
+ }
+ }
+ l.notify();
+ }
+ template <typename T> void set( const OUString& _sProperty
+ ,const T& Value
+ ,T& _member)
+ {
+ BoundListeners l;
+ {
+ ::osl::MutexGuard aGuard(m_aMutex);
+ if ( _member != Value )
+ {
+ prepareSet(_sProperty, css::uno::Any(_member), css::uno::Any(Value), &l);
+ _member = Value;
+ }
+ }
+ l.notify();
+ }
+ void set( const OUString& _sProperty
+ ,bool Value
+ ,bool& _member)
+ {
+ BoundListeners l;
+ {
+ ::osl::MutexGuard aGuard(m_aMutex);
+ if ( _member != Value )
+ {
+ prepareSet(_sProperty, css::uno::Any(_member), css::uno::Any(Value), &l);
+ _member = Value;
+ }
+ }
+ l.notify();
+ }
+ virtual ~OFixedText() override;
+ public:
+ explicit OFixedText(css::uno::Reference< css::uno::XComponentContext > const & _xContext);
+ explicit OFixedText(css::uno::Reference< css::uno::XComponentContext > const & _xContext
+ ,const css::uno::Reference< css::lang::XMultiServiceFactory > & _xFactory
+ ,css::uno::Reference< css::drawing::XShape >& _xShape);
+
+ DECLARE_XINTERFACE( )
+ // css::lang::XServiceInfo
+ virtual sal_Bool SAL_CALL supportsService( const OUString& ServiceName ) override;
+ virtual OUString SAL_CALL getImplementationName( ) override;
+ virtual css::uno::Sequence< OUString > SAL_CALL getSupportedServiceNames( ) override;
+
+ /// @throws css::uno::RuntimeException
+ static css::uno::Sequence< OUString > getSupportedServiceNames_Static();
+ /// @throws css::uno::RuntimeException
+ static OUString getImplementationName_Static();
+ static css::uno::Reference< css::uno::XInterface >
+ create(css::uno::Reference< css::uno::XComponentContext > const & xContext);
+ // 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;
+
+ // XReportComponent
+ REPORTCOMPONENT_HEADER()
+ // XShape
+ SHAPE_HEADER()
+
+ // XShapeDescriptor
+ virtual OUString SAL_CALL getShapeType( ) override;
+
+ // XReportControlModel
+ REPORTCONTROLMODEL_HEADER()
+
+ // XCloneable
+ virtual css::uno::Reference< css::util::XCloneable > SAL_CALL createClone( ) override;
+
+ // XFixedText
+ virtual OUString SAL_CALL getLabel() override;
+ virtual void SAL_CALL setLabel( const OUString& _label ) override;
+
+ // css::report::XReportControlFormat
+ REPORTCONTROLFORMAT_HEADER()
+
+ // XComponent
+ virtual void SAL_CALL dispose() override;
+ virtual void SAL_CALL addEventListener(const css::uno::Reference< css::lang::XEventListener > & aListener) override
+ {
+ cppu::WeakComponentImplHelperBase::addEventListener(aListener);
+ }
+ virtual void SAL_CALL removeEventListener(const css::uno::Reference< css::lang::XEventListener > & aListener) override
+ {
+ cppu::WeakComponentImplHelperBase::removeEventListener(aListener);
+ }
+
+ // 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;
+ // XContainer
+ virtual void SAL_CALL addContainerListener( const css::uno::Reference< css::container::XContainerListener >& xListener ) override;
+ virtual void SAL_CALL removeContainerListener( const css::uno::Reference< css::container::XContainerListener >& xListener ) override;
+
+ // XElementAccess
+ virtual css::uno::Type SAL_CALL getElementType( ) override;
+ virtual sal_Bool SAL_CALL hasElements( ) override;
+
+ // XIndexReplace
+ virtual void SAL_CALL replaceByIndex( ::sal_Int32 Index, const css::uno::Any& Element ) override;
+
+ // XIndexContainer
+ virtual void SAL_CALL insertByIndex( ::sal_Int32 Index, const css::uno::Any& Element ) override;
+ virtual void SAL_CALL removeByIndex( ::sal_Int32 Index ) override;
+
+ // XIndexAccess
+ virtual ::sal_Int32 SAL_CALL getCount( ) override;
+ virtual css::uno::Any SAL_CALL getByIndex( ::sal_Int32 Index ) override;
+ };
+}
+#endif // INCLUDED_REPORTDESIGN_SOURCE_CORE_INC_FIXEDTEXT_HXX
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/reportdesign/source/core/inc/FormatCondition.hxx b/reportdesign/source/core/inc/FormatCondition.hxx
new file mode 100644
index 000000000..07b2db006
--- /dev/null
+++ b/reportdesign/source/core/inc/FormatCondition.hxx
@@ -0,0 +1,146 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.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_REPORTDESIGN_SOURCE_CORE_INC_FORMATCONDITION_HXX
+#define INCLUDED_REPORTDESIGN_SOURCE_CORE_INC_FORMATCONDITION_HXX
+
+#include <cppuhelper/propertysetmixin.hxx>
+#include <com/sun/star/report/XFormatCondition.hpp>
+#include "ReportControlModel.hxx"
+#include <comphelper/uno3.hxx>
+#include <cppuhelper/compbase.hxx>
+#include <cppuhelper/basemutex.hxx>
+#include <com/sun/star/lang/XServiceInfo.hpp>
+#include <ReportHelperDefines.hxx>
+
+namespace reportdesign
+{
+ typedef ::cppu::PropertySetMixin< css::report::XFormatCondition > FormatConditionPropertySet;
+ typedef ::cppu::WeakComponentImplHelper< css::report::XFormatCondition
+ ,css::lang::XServiceInfo > FormatConditionBase;
+
+ /** \class OFormatCondition Defines the implementation of a \interface com:::sun::star::report::XFormatCondition
+ * \ingroup reportdesign_api
+ *
+ */
+ class OFormatCondition final : public cppu::BaseMutex,
+ public FormatConditionBase,
+ public FormatConditionPropertySet
+ {
+ OFormatProperties m_aFormatProperties;
+ OUString m_sFormula;
+ bool m_bEnabled;
+ private:
+ OFormatCondition(const OFormatCondition&) = delete;
+ OFormatCondition& operator=(const OFormatCondition&) = delete;
+
+ // internally, we store PROPERTY_PARAADJUST as css::style::ParagraphAdjust, but externally the property is visible as a sal_Int16
+ void set( const OUString& _sProperty
+ ,sal_Int16 Value
+ ,css::style::ParagraphAdjust& _member)
+ {
+ BoundListeners l;
+ {
+ ::osl::MutexGuard aGuard(m_aMutex);
+ if ( static_cast<sal_Int16>(_member) != Value )
+ {
+ prepareSet(_sProperty, css::uno::Any(static_cast<sal_Int16>(_member)), css::uno::Any(Value), &l);
+ _member = static_cast<css::style::ParagraphAdjust>(Value);
+ }
+ }
+ l.notify();
+ }
+ template <typename T> void set( const OUString& _sProperty
+ ,const T& Value
+ ,T& _member)
+ {
+ BoundListeners l;
+ {
+ ::osl::MutexGuard aGuard(m_aMutex);
+ if ( _member != Value )
+ {
+ prepareSet(_sProperty, css::uno::Any(_member), css::uno::Any(Value), &l);
+ _member = Value;
+ }
+ }
+ l.notify();
+ }
+ void set( const OUString& _sProperty
+ ,bool Value
+ ,bool& _member)
+ {
+ BoundListeners l;
+ {
+ ::osl::MutexGuard aGuard(m_aMutex);
+ if ( _member != Value )
+ {
+ prepareSet(_sProperty, css::uno::Any(_member), css::uno::Any(Value), &l);
+ _member = Value;
+ }
+ }
+ l.notify();
+ }
+ virtual ~OFormatCondition() override;
+ public:
+ explicit OFormatCondition(css::uno::Reference< css::uno::XComponentContext > const & _xContext
+ );
+
+ DECLARE_XINTERFACE( )
+ // css::lang::XServiceInfo
+ virtual sal_Bool SAL_CALL supportsService( const OUString& ServiceName ) override;
+ virtual OUString SAL_CALL getImplementationName( ) override;
+ virtual css::uno::Sequence< OUString > SAL_CALL getSupportedServiceNames( ) override;
+
+ /// @throws css::uno::RuntimeException
+ static css::uno::Sequence< OUString > getSupportedServiceNames_Static();
+ /// @throws css::uno::RuntimeException
+ static OUString getImplementationName_Static();
+ static css::uno::Reference< css::uno::XInterface >
+ create(css::uno::Reference< css::uno::XComponentContext > const & xContext);
+ // 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;
+
+ // XFormatCondition
+ virtual sal_Bool SAL_CALL getEnabled() override;
+ virtual void SAL_CALL setEnabled( sal_Bool _enabled ) override;
+ virtual OUString SAL_CALL getFormula() override;
+ virtual void SAL_CALL setFormula( const OUString& _formula ) override;
+
+ // XReportControlFormat
+ REPORTCONTROLFORMAT_HEADER()
+ // XComponent
+ virtual void SAL_CALL dispose() override;
+ virtual void SAL_CALL addEventListener(const css::uno::Reference< css::lang::XEventListener > & aListener) override
+ {
+ cppu::WeakComponentImplHelperBase::addEventListener(aListener);
+ }
+ virtual void SAL_CALL removeEventListener(const css::uno::Reference< css::lang::XEventListener > & aListener) override
+ {
+ cppu::WeakComponentImplHelperBase::removeEventListener(aListener);
+ }
+ };
+}
+#endif // INCLUDED_REPORTDESIGN_SOURCE_CORE_INC_FORMATCONDITION_HXX
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/reportdesign/source/core/inc/FormattedField.hxx b/reportdesign/source/core/inc/FormattedField.hxx
new file mode 100644
index 000000000..e777f7b5e
--- /dev/null
+++ b/reportdesign/source/core/inc/FormattedField.hxx
@@ -0,0 +1,192 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.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_REPORTDESIGN_SOURCE_CORE_INC_FORMATTEDFIELD_HXX
+#define INCLUDED_REPORTDESIGN_SOURCE_CORE_INC_FORMATTEDFIELD_HXX
+
+#include <cppuhelper/propertysetmixin.hxx>
+#include <com/sun/star/report/XFormattedField.hpp>
+#include "ReportControlModel.hxx"
+#include <comphelper/uno3.hxx>
+#include <cppuhelper/compbase.hxx>
+#include <cppuhelper/basemutex.hxx>
+#include <com/sun/star/lang/XServiceInfo.hpp>
+#include <ReportHelperDefines.hxx>
+
+
+namespace reportdesign
+{
+ typedef ::cppu::PropertySetMixin< css::report::XFormattedField > FormattedFieldPropertySet;
+ typedef ::cppu::WeakComponentImplHelper< css::report::XFormattedField
+ ,css::lang::XServiceInfo > FormattedFieldBase;
+
+ /** \class OFormattedField Defines the implementation of a \interface com:::sun::star::report::XFormattedField
+ * \ingroup reportdesign_api
+ *
+ */
+ class OFormattedField final : public cppu::BaseMutex,
+ public FormattedFieldBase,
+ public FormattedFieldPropertySet
+ {
+ friend class OShapeHelper;
+
+ OReportControlModel m_aProps;
+ css::uno::Reference< css::util::XNumberFormatsSupplier >
+ m_xFormatsSupplier;
+ ::sal_Int32 m_nFormatKey;
+
+ private:
+ OFormattedField(const OFormattedField&) = delete;
+ OFormattedField& operator=(const OFormattedField&) = delete;
+
+ // internally, we store PROPERTY_PARAADJUST as css::style::ParagraphAdjust, but externally the property is visible as a sal_Int16
+ void set( const OUString& _sProperty
+ ,sal_Int16 Value
+ ,css::style::ParagraphAdjust& _member)
+ {
+ BoundListeners l;
+ {
+ ::osl::MutexGuard aGuard(m_aMutex);
+ if ( static_cast<sal_Int16>(_member) != Value )
+ {
+ prepareSet(_sProperty, css::uno::Any(static_cast<sal_Int16>(_member)), css::uno::Any(Value), &l);
+ _member = static_cast<css::style::ParagraphAdjust>(Value);
+ }
+ }
+ l.notify();
+ }
+ template <typename T> void set( const OUString& _sProperty
+ ,const T& Value
+ ,T& _member)
+ {
+ BoundListeners l;
+ {
+ ::osl::MutexGuard aGuard(m_aMutex);
+ if ( _member != Value )
+ {
+ prepareSet(_sProperty, css::uno::Any(_member), css::uno::Any(Value), &l);
+ _member = Value;
+ }
+ }
+ l.notify();
+ }
+ void set( const OUString& _sProperty
+ ,bool Value
+ ,bool& _member)
+ {
+ BoundListeners l;
+ {
+ ::osl::MutexGuard aGuard(m_aMutex);
+ if ( _member != Value )
+ {
+ prepareSet(_sProperty, css::uno::Any(_member), css::uno::Any(Value), &l);
+ _member = Value;
+ }
+ }
+ l.notify();
+ }
+ virtual ~OFormattedField() override;
+ public:
+ explicit OFormattedField(css::uno::Reference< css::uno::XComponentContext > const & _xContext);
+ explicit OFormattedField(css::uno::Reference< css::uno::XComponentContext > const & _xContext
+ ,const css::uno::Reference< css::lang::XMultiServiceFactory > & _xFactory
+ ,css::uno::Reference< css::drawing::XShape >& _xShape);
+
+ DECLARE_XINTERFACE( )
+ // css::lang::XServiceInfo
+ virtual sal_Bool SAL_CALL supportsService( const OUString& ServiceName ) override;
+ virtual OUString SAL_CALL getImplementationName( ) override;
+ virtual css::uno::Sequence< OUString > SAL_CALL getSupportedServiceNames( ) override;
+
+ /// @throws css::uno::RuntimeException
+ static css::uno::Sequence< OUString > getSupportedServiceNames_Static();
+ /// @throws css::uno::RuntimeException
+ static OUString getImplementationName_Static();
+ static css::uno::Reference< css::uno::XInterface >
+ create(css::uno::Reference< css::uno::XComponentContext > const & xContext);
+ // 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;
+
+ // XContainer
+ virtual void SAL_CALL addContainerListener( const css::uno::Reference< css::container::XContainerListener >& xListener ) override;
+ virtual void SAL_CALL removeContainerListener( const css::uno::Reference< css::container::XContainerListener >& xListener ) override;
+
+ // XElementAccess
+ virtual css::uno::Type SAL_CALL getElementType( ) override;
+ virtual sal_Bool SAL_CALL hasElements( ) override;
+
+ // XIndexReplace
+ virtual void SAL_CALL replaceByIndex( ::sal_Int32 Index, const css::uno::Any& Element ) override;
+
+ // XIndexContainer
+ virtual void SAL_CALL insertByIndex( ::sal_Int32 Index, const css::uno::Any& Element ) override;
+ virtual void SAL_CALL removeByIndex( ::sal_Int32 Index ) override;
+
+ // XIndexAccess
+ virtual ::sal_Int32 SAL_CALL getCount( ) override;
+ virtual css::uno::Any SAL_CALL getByIndex( ::sal_Int32 Index ) override;
+
+ // XReportComponent
+ REPORTCOMPONENT_HEADER()
+
+ // XShape
+ SHAPE_HEADER()
+
+ // XShapeDescriptor
+ virtual OUString SAL_CALL getShapeType( ) override;
+
+ // XReportControlModel
+ REPORTCONTROLMODEL_HEADER()
+
+ // XReportControlFormat
+ REPORTCONTROLFORMAT_HEADER()
+
+ // XCloneable
+ virtual css::uno::Reference< css::util::XCloneable > SAL_CALL createClone( ) override;
+
+ // XFormattedField
+ virtual ::sal_Int32 SAL_CALL getFormatKey() override;
+ virtual void SAL_CALL setFormatKey(::sal_Int32 the_value) override;
+ virtual css::uno::Reference< css::util::XNumberFormatsSupplier > SAL_CALL getFormatsSupplier() override;
+ virtual void SAL_CALL setFormatsSupplier( const css::uno::Reference< css::util::XNumberFormatsSupplier >& _formatssupplier ) override;
+
+ // XComponent
+ virtual void SAL_CALL dispose() override;
+ virtual void SAL_CALL addEventListener(const css::uno::Reference< css::lang::XEventListener > & aListener) override
+ {
+ cppu::WeakComponentImplHelperBase::addEventListener(aListener);
+ }
+ virtual void SAL_CALL removeEventListener(const css::uno::Reference< css::lang::XEventListener > & aListener) override
+ {
+ cppu::WeakComponentImplHelperBase::removeEventListener(aListener);
+ }
+
+ // 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;
+ };
+}
+#endif // INCLUDED_REPORTDESIGN_SOURCE_CORE_INC_FORMATTEDFIELD_HXX
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/reportdesign/source/core/inc/Function.hxx b/reportdesign/source/core/inc/Function.hxx
new file mode 100644
index 000000000..891b5427d
--- /dev/null
+++ b/reportdesign/source/core/inc/Function.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_REPORTDESIGN_SOURCE_CORE_INC_FUNCTION_HXX
+#define INCLUDED_REPORTDESIGN_SOURCE_CORE_INC_FUNCTION_HXX
+
+#include <comphelper/uno3.hxx>
+#include <cppuhelper/propertysetmixin.hxx>
+#include <com/sun/star/report/XFunction.hpp>
+#include <com/sun/star/report/XFunctions.hpp>
+#include <cppuhelper/basemutex.hxx>
+#include <cppuhelper/compbase.hxx>
+#include <com/sun/star/lang/XServiceInfo.hpp>
+
+namespace reportdesign
+{
+ typedef ::cppu::PropertySetMixin< css::report::XFunction > FunctionPropertySet;
+ typedef ::cppu::WeakComponentImplHelper< css::report::XFunction
+ ,css::lang::XServiceInfo > FunctionBase;
+
+ /** \class OFunction Defines the implementation of a \interface com:::sun::star::report::XFunction
+ * \ingroup reportdesign_api
+ *
+ */
+ class OFunction : public cppu::BaseMutex,
+ public FunctionBase,
+ public FunctionPropertySet
+ {
+ css::beans::Optional< OUString> m_sInitialFormula;
+ css::uno::WeakReference< css::report::XFunctions > m_xParent;
+ OUString m_sName;
+ OUString m_sFormula;
+ bool m_bPreEvaluated;
+ bool m_bDeepTraversing;
+ private:
+ OFunction(const OFunction&) = delete;
+ OFunction& operator=(const OFunction&) = delete;
+
+ template <typename T> void set( const OUString& _sProperty
+ ,const T& Value
+ ,T& _member)
+ {
+ BoundListeners l;
+ {
+ ::osl::MutexGuard aGuard(m_aMutex);
+ prepareSet(_sProperty, css::uno::Any(_member), css::uno::Any(Value), &l);
+ _member = Value;
+ }
+ l.notify();
+ }
+ void set( const OUString& _sProperty
+ ,bool Value
+ ,bool& _member)
+ {
+ BoundListeners l;
+ {
+ ::osl::MutexGuard aGuard(m_aMutex);
+ prepareSet(_sProperty, css::uno::Any(_member), css::uno::Any(Value), &l);
+ _member = Value;
+ }
+ l.notify();
+ }
+ protected:
+ virtual ~OFunction() override;
+ public:
+ explicit OFunction(css::uno::Reference< css::uno::XComponentContext > const & _xContext);
+
+ DECLARE_XINTERFACE( )
+ // css::lang::XServiceInfo
+ virtual sal_Bool SAL_CALL supportsService( const OUString& ServiceName ) override;
+ virtual OUString SAL_CALL getImplementationName( ) override;
+ virtual css::uno::Sequence< OUString > SAL_CALL getSupportedServiceNames( ) override;
+
+ /// @throws css::uno::RuntimeException
+ static css::uno::Sequence< OUString > getSupportedServiceNames_Static();
+ /// @throws css::uno::RuntimeException
+ static OUString getImplementationName_Static();
+ static css::uno::Reference< css::uno::XInterface >
+ create(css::uno::Reference< css::uno::XComponentContext > const & xContext);
+ // 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::report::XFunction:
+ virtual sal_Bool SAL_CALL getPreEvaluated() override;
+ virtual void SAL_CALL setPreEvaluated(sal_Bool the_value) override;
+ virtual sal_Bool SAL_CALL getDeepTraversing() override;
+ virtual void SAL_CALL setDeepTraversing(sal_Bool the_value) override;
+ virtual OUString SAL_CALL getName() override;
+ virtual void SAL_CALL setName(const OUString & the_value) override;
+ virtual OUString SAL_CALL getFormula() override;
+ virtual void SAL_CALL setFormula(const OUString & the_value) override;
+ virtual css::beans::Optional< OUString> SAL_CALL getInitialFormula() override;
+ virtual void SAL_CALL setInitialFormula(const css::beans::Optional< OUString> & the_value) override;
+
+ // XComponent
+ virtual void SAL_CALL dispose() override;
+ virtual void SAL_CALL addEventListener(const css::uno::Reference< css::lang::XEventListener > & aListener) override
+ {
+ cppu::WeakComponentImplHelperBase::addEventListener(aListener);
+ }
+ virtual void SAL_CALL removeEventListener(const css::uno::Reference< css::lang::XEventListener > & aListener) override
+ {
+ cppu::WeakComponentImplHelperBase::removeEventListener(aListener);
+ }
+
+ // 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;
+ };
+}
+#endif // INCLUDED_REPORTDESIGN_SOURCE_CORE_INC_FUNCTION_HXX
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/reportdesign/source/core/inc/Functions.hxx b/reportdesign/source/core/inc/Functions.hxx
new file mode 100644
index 000000000..94a54beeb
--- /dev/null
+++ b/reportdesign/source/core/inc/Functions.hxx
@@ -0,0 +1,99 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ *
+ * This file incorporates work covered by the following license notice:
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed
+ * with this work for additional information regarding copyright
+ * ownership. The ASF licenses this file to you under the Apache
+ * License, Version 2.0 (the "License"); you may not use this file
+ * except in compliance with the License. You may obtain a copy of
+ * the License at http://www.apache.org/licenses/LICENSE-2.0 .
+ */
+#ifndef INCLUDED_REPORTDESIGN_SOURCE_CORE_INC_FUNCTIONS_HXX
+#define INCLUDED_REPORTDESIGN_SOURCE_CORE_INC_FUNCTIONS_HXX
+
+#include <com/sun/star/report/XFunctions.hpp>
+#include <com/sun/star/report/XFunctionsSupplier.hpp>
+#include <cppuhelper/compbase.hxx>
+#include <comphelper/interfacecontainer3.hxx>
+#include <cppuhelper/basemutex.hxx>
+#include <com/sun/star/uno/XComponentContext.hpp>
+#include <vector>
+
+
+namespace reportdesign
+{
+ typedef ::cppu::WeakComponentImplHelper< css::report::XFunctions> FunctionsBase;
+ /** \class OFunctions Defines the implementation of a \interface com:::sun::star::report::XFunctions
+ * \ingroup reportdesign_api
+ *
+ */
+ class OFunctions : public cppu::BaseMutex,
+ public FunctionsBase
+ {
+ typedef ::std::vector< css::uno::Reference< css::report::XFunction > > TFunctions;
+ ::comphelper::OInterfaceContainerHelper3<css::container::XContainerListener> m_aContainerListeners;
+ css::uno::Reference< css::uno::XComponentContext > m_xContext;
+ css::uno::WeakReference< css::report::XFunctionsSupplier > m_xParent;
+ TFunctions m_aFunctions;
+ private:
+ OFunctions& operator=(const OFunctions&) = delete;
+ OFunctions(const OFunctions&) = delete;
+ void checkIndex(sal_Int32 _nIndex);
+ protected:
+ // TODO: VirtualFunctionFinder: This is virtual function!
+
+ virtual ~OFunctions() override;
+
+ /** this function is called upon disposing the component
+ */
+ // TODO: VirtualFunctionFinder: This is virtual function!
+
+ virtual void SAL_CALL disposing() override;
+ public:
+ explicit OFunctions( const css::uno::Reference< css::report::XFunctionsSupplier >& _xParent
+ ,const css::uno::Reference< css::uno::XComponentContext >& context);
+
+ // XFunctions
+ // Methods
+ virtual css::uno::Reference< css::report::XFunction > SAL_CALL createFunction( ) override;
+ // XIndexContainer
+ virtual void SAL_CALL insertByIndex( ::sal_Int32 Index, const css::uno::Any& Element ) override;
+ virtual void SAL_CALL removeByIndex( ::sal_Int32 Index ) override;
+ // XIndexReplace
+ virtual void SAL_CALL replaceByIndex( ::sal_Int32 Index, const css::uno::Any& Element ) override;
+ // XIndexAccess
+ virtual ::sal_Int32 SAL_CALL getCount( ) override;
+ virtual css::uno::Any SAL_CALL getByIndex( ::sal_Int32 Index ) override;
+ // XElementAccess
+ virtual css::uno::Type SAL_CALL getElementType( ) override;
+ virtual sal_Bool SAL_CALL hasElements( ) 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;
+ // XContainer
+ virtual void SAL_CALL addContainerListener( const css::uno::Reference< css::container::XContainerListener >& xListener ) override;
+ virtual void SAL_CALL removeContainerListener( const css::uno::Reference< css::container::XContainerListener >& xListener ) override;
+
+ // XComponent
+ virtual void SAL_CALL dispose() override;
+ virtual void SAL_CALL addEventListener(const css::uno::Reference< css::lang::XEventListener > & aListener) override
+ {
+ cppu::WeakComponentImplHelperBase::addEventListener(aListener);
+ }
+ virtual void SAL_CALL removeEventListener(const css::uno::Reference< css::lang::XEventListener > & aListener) override
+ {
+ cppu::WeakComponentImplHelperBase::removeEventListener(aListener);
+ }
+ };
+}
+#endif // INCLUDED_REPORTDESIGN_SOURCE_CORE_INC_FUNCTIONS_HXX
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/reportdesign/source/core/inc/Group.hxx b/reportdesign/source/core/inc/Group.hxx
new file mode 100644
index 000000000..a30debf41
--- /dev/null
+++ b/reportdesign/source/core/inc/Group.hxx
@@ -0,0 +1,168 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ *
+ * This file incorporates work covered by the following license notice:
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed
+ * with this work for additional information regarding copyright
+ * ownership. The ASF licenses this file to you under the Apache
+ * License, Version 2.0 (the "License"); you may not use this file
+ * except in compliance with the License. You may obtain a copy of
+ * the License at http://www.apache.org/licenses/LICENSE-2.0 .
+ */
+#ifndef INCLUDED_REPORTDESIGN_SOURCE_CORE_INC_GROUP_HXX
+#define INCLUDED_REPORTDESIGN_SOURCE_CORE_INC_GROUP_HXX
+
+#include <com/sun/star/report/XGroup.hpp>
+#include <cppuhelper/compbase.hxx>
+#include <comphelper/broadcasthelper.hxx>
+#include <cppuhelper/propertysetmixin.hxx>
+#include <com/sun/star/uno/XComponentContext.hpp>
+#include <GroupProperties.hxx>
+#include <comphelper/uno3.hxx>
+#include <com/sun/star/lang/XServiceInfo.hpp>
+
+namespace reportdesign
+{
+ typedef ::cppu::WeakComponentImplHelper< css::report::XGroup
+ , css::lang::XServiceInfo> GroupBase;
+ typedef ::cppu::PropertySetMixin< css::report::XGroup> GroupPropertySet;
+
+ /** \class OGroup Defines the implementation of a \interface com:::sun::star::report::XGroup
+ * \ingroup reportdesign_api
+ *
+ */
+ class OGroup : public comphelper::OMutexAndBroadcastHelper
+ ,public GroupBase
+ ,public GroupPropertySet
+ {
+ css::uno::Reference< css::uno::XComponentContext > m_xContext;
+ css::uno::WeakReference< css::report::XGroups > m_xParent;
+ css::uno::Reference< css::report::XSection> m_xHeader;
+ css::uno::Reference< css::report::XSection> m_xFooter;
+ css::uno::Reference< css::report::XFunctions > m_xFunctions;
+ ::rptshared::GroupProperties m_aProps;
+
+ private:
+ OGroup& operator=(const OGroup&) = delete;
+ OGroup(const OGroup&) = delete;
+
+ template <typename T> void set( const OUString& _sProperty
+ ,const T& Value
+ ,T& _member)
+ {
+ BoundListeners l;
+ {
+ ::osl::MutexGuard aGuard(m_aMutex);
+ if ( _member != Value )
+ {
+ prepareSet(_sProperty, css::uno::Any(_member), css::uno::Any(Value), &l);
+ _member = Value;
+ }
+ }
+ l.notify();
+ }
+ void set( const OUString& _sProperty
+ ,bool Value
+ ,bool& _member)
+ {
+ BoundListeners l;
+ {
+ ::osl::MutexGuard aGuard(m_aMutex);
+ if ( _member != Value )
+ {
+ prepareSet(_sProperty, css::uno::Any(_member), css::uno::Any(Value), &l);
+ _member = Value;
+ }
+ }
+ l.notify();
+ }
+ void setSection( const OUString& _sProperty
+ ,bool _bOn
+ ,const OUString& _sName
+ ,css::uno::Reference< css::report::XSection>& _member);
+ protected:
+ // TODO: VirtualFunctionFinder: This is virtual function!
+
+ virtual ~OGroup() override;
+
+ /** this function is called upon disposing the component
+ */
+ // TODO: VirtualFunctionFinder: This is virtual function!
+
+ virtual void SAL_CALL disposing() override;
+ public:
+ OGroup(const css::uno::Reference< css::report::XGroups >& _xParent
+ ,const css::uno::Reference< css::uno::XComponentContext >& context);
+
+ DECLARE_XINTERFACE( )
+ // css::lang::XServiceInfo
+ virtual sal_Bool SAL_CALL supportsService( const OUString& ServiceName ) override;
+ virtual OUString SAL_CALL getImplementationName( ) override;
+ virtual css::uno::Sequence< OUString > SAL_CALL getSupportedServiceNames( ) override;
+
+ /// @throws css::uno::RuntimeException
+ static css::uno::Sequence< OUString > getSupportedServiceNames_Static();
+
+ // 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;
+
+ // XGroup
+ virtual sal_Bool SAL_CALL getSortAscending() override;
+ virtual void SAL_CALL setSortAscending( sal_Bool _sortascending ) override;
+ virtual sal_Bool SAL_CALL getHeaderOn() override;
+ virtual void SAL_CALL setHeaderOn( sal_Bool _headeron ) override;
+ virtual sal_Bool SAL_CALL getFooterOn() override;
+ virtual void SAL_CALL setFooterOn( sal_Bool _footeron ) override;
+ virtual css::uno::Reference< css::report::XSection > SAL_CALL getHeader() override;
+ virtual css::uno::Reference< css::report::XSection > SAL_CALL getFooter() override;
+ virtual ::sal_Int16 SAL_CALL getGroupOn() override;
+ virtual void SAL_CALL setGroupOn( ::sal_Int16 _groupon ) override;
+ virtual ::sal_Int32 SAL_CALL getGroupInterval() override;
+ virtual void SAL_CALL setGroupInterval( ::sal_Int32 _groupinterval ) override;
+ virtual ::sal_Int16 SAL_CALL getKeepTogether() override;
+ virtual void SAL_CALL setKeepTogether( ::sal_Int16 _keeptogether ) override;
+ virtual css::uno::Reference< css::report::XGroups > SAL_CALL getGroups() override;
+ virtual OUString SAL_CALL getExpression() override;
+ virtual void SAL_CALL setExpression( const OUString& _expression ) override;
+ virtual sal_Bool SAL_CALL getStartNewColumn() override;
+ virtual void SAL_CALL setStartNewColumn( sal_Bool _startnewcolumn ) override;
+ virtual sal_Bool SAL_CALL getResetPageNumber() override;
+ virtual void SAL_CALL setResetPageNumber( sal_Bool _resetpagenumber ) override;
+
+ //XFunctionsSupplier
+ virtual css::uno::Reference< css::report::XFunctions > SAL_CALL getFunctions() 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;
+
+ // XComponent
+ virtual void SAL_CALL dispose() override;
+ virtual void SAL_CALL addEventListener(const css::uno::Reference< css::lang::XEventListener > & aListener) override
+ {
+ cppu::WeakComponentImplHelperBase::addEventListener(aListener);
+ }
+ virtual void SAL_CALL removeEventListener(const css::uno::Reference< css::lang::XEventListener > & aListener) override
+ {
+ cppu::WeakComponentImplHelperBase::removeEventListener(aListener);
+ }
+ };
+
+} // namespace reportdesign
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/reportdesign/source/core/inc/Groups.hxx b/reportdesign/source/core/inc/Groups.hxx
new file mode 100644
index 000000000..9897abd3a
--- /dev/null
+++ b/reportdesign/source/core/inc/Groups.hxx
@@ -0,0 +1,100 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ *
+ * This file incorporates work covered by the following license notice:
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed
+ * with this work for additional information regarding copyright
+ * ownership. The ASF licenses this file to you under the Apache
+ * License, Version 2.0 (the "License"); you may not use this file
+ * except in compliance with the License. You may obtain a copy of
+ * the License at http://www.apache.org/licenses/LICENSE-2.0 .
+ */
+#ifndef INCLUDED_REPORTDESIGN_SOURCE_CORE_INC_GROUPS_HXX
+#define INCLUDED_REPORTDESIGN_SOURCE_CORE_INC_GROUPS_HXX
+
+#include <com/sun/star/report/XGroups.hpp>
+#include <cppuhelper/compbase.hxx>
+#include <cppuhelper/basemutex.hxx>
+#include <comphelper/interfacecontainer3.hxx>
+#include <com/sun/star/uno/XComponentContext.hpp>
+#include <vector>
+
+
+namespace reportdesign
+{
+ typedef ::cppu::WeakComponentImplHelper< css::report::XGroups> GroupsBase;
+ /** \class OGroups Defines the implementation of a \interface com:::sun::star::report::XGroups
+ * \ingroup reportdesign_api
+ *
+ */
+ class OGroups : public cppu::BaseMutex,
+ public GroupsBase
+ {
+ typedef ::std::vector< css::uno::Reference< css::report::XGroup > > TGroups;
+ ::comphelper::OInterfaceContainerHelper3<css::container::XContainerListener> m_aContainerListeners;
+ css::uno::Reference< css::uno::XComponentContext > m_xContext;
+ css::uno::WeakReference< css::report::XReportDefinition > m_xParent;
+ TGroups m_aGroups;
+ private:
+ OGroups& operator=(const OGroups&) = delete;
+ OGroups(const OGroups&) = delete;
+ void checkIndex(sal_Int32 _nIndex);
+ protected:
+ // TODO: VirtualFunctionFinder: This is virtual function!
+
+ virtual ~OGroups() override;
+
+ /** this function is called upon disposing the component
+ */
+ // TODO: VirtualFunctionFinder: This is virtual function!
+
+ virtual void SAL_CALL disposing() override;
+ public:
+ OGroups( const css::uno::Reference< css::report::XReportDefinition >& _xParent
+ ,const css::uno::Reference< css::uno::XComponentContext >& context);
+
+ // XGroups
+ // Attributes
+ virtual css::uno::Reference< css::report::XReportDefinition > SAL_CALL getReportDefinition() override;
+ // Methods
+ virtual css::uno::Reference< css::report::XGroup > SAL_CALL createGroup( ) override;
+ // XIndexContainer
+ virtual void SAL_CALL insertByIndex( ::sal_Int32 Index, const css::uno::Any& Element ) override;
+ virtual void SAL_CALL removeByIndex( ::sal_Int32 Index ) override;
+ // XIndexReplace
+ virtual void SAL_CALL replaceByIndex( ::sal_Int32 Index, const css::uno::Any& Element ) override;
+ // XIndexAccess
+ virtual ::sal_Int32 SAL_CALL getCount( ) override;
+ virtual css::uno::Any SAL_CALL getByIndex( ::sal_Int32 Index ) override;
+ // XElementAccess
+ virtual css::uno::Type SAL_CALL getElementType( ) override;
+ virtual sal_Bool SAL_CALL hasElements( ) 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;
+ // XContainer
+ virtual void SAL_CALL addContainerListener( const css::uno::Reference< css::container::XContainerListener >& xListener ) override;
+ virtual void SAL_CALL removeContainerListener( const css::uno::Reference< css::container::XContainerListener >& xListener ) override;
+
+ // XComponent
+ virtual void SAL_CALL dispose() override;
+ virtual void SAL_CALL addEventListener(const css::uno::Reference< css::lang::XEventListener > & aListener) override
+ {
+ cppu::WeakComponentImplHelperBase::addEventListener(aListener);
+ }
+ virtual void SAL_CALL removeEventListener(const css::uno::Reference< css::lang::XEventListener > & aListener) override
+ {
+ cppu::WeakComponentImplHelperBase::removeEventListener(aListener);
+ }
+ };
+}
+#endif // INCLUDED_REPORTDESIGN_SOURCE_CORE_INC_GROUPS_HXX
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/reportdesign/source/core/inc/ImageControl.hxx b/reportdesign/source/core/inc/ImageControl.hxx
new file mode 100644
index 000000000..748659913
--- /dev/null
+++ b/reportdesign/source/core/inc/ImageControl.hxx
@@ -0,0 +1,171 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ *
+ * This file incorporates work covered by the following license notice:
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed
+ * with this work for additional information regarding copyright
+ * ownership. The ASF licenses this file to you under the Apache
+ * License, Version 2.0 (the "License"); you may not use this file
+ * except in compliance with the License. You may obtain a copy of
+ * the License at http://www.apache.org/licenses/LICENSE-2.0 .
+ */
+#ifndef INCLUDED_REPORTDESIGN_SOURCE_CORE_INC_IMAGECONTROL_HXX
+#define INCLUDED_REPORTDESIGN_SOURCE_CORE_INC_IMAGECONTROL_HXX
+
+#include <comphelper/uno3.hxx>
+#include <cppuhelper/propertysetmixin.hxx>
+#include <com/sun/star/report/XImageControl.hpp>
+#include "ReportControlModel.hxx"
+#include <cppuhelper/compbase.hxx>
+#include <cppuhelper/basemutex.hxx>
+#include <com/sun/star/lang/XServiceInfo.hpp>
+#include <ReportHelperDefines.hxx>
+
+namespace reportdesign
+{
+ typedef ::cppu::PropertySetMixin< css::report::XImageControl > ImageControlPropertySet;
+ typedef ::cppu::WeakComponentImplHelper< css::report::XImageControl
+ ,css::lang::XServiceInfo > ImageControlBase;
+
+ /** \class OImageControl Defines the implementation of a \interface com:::sun::star::report::XImageControl
+ * \ingroup reportdesign_api
+ *
+ */
+ class OImageControl : public cppu::BaseMutex,
+ public ImageControlBase,
+ public ImageControlPropertySet
+ {
+ friend class OShapeHelper;
+ OReportControlModel m_aProps;
+ OUString m_aImageURL;
+ sal_Int16 m_nScaleMode;
+ bool m_bPreserveIRI;
+ private:
+ OImageControl(const OImageControl&) = delete;
+ OImageControl& operator=(const OImageControl&) = delete;
+
+ template <typename T> void set( const OUString& _sProperty
+ ,const T& Value
+ ,T& _member)
+ {
+ BoundListeners l;
+ {
+ ::osl::MutexGuard aGuard(m_aMutex);
+ prepareSet(_sProperty, css::uno::Any(_member), css::uno::Any(Value), &l);
+ _member = Value;
+ }
+ l.notify();
+ }
+ void set( const OUString& _sProperty
+ ,bool Value
+ ,bool& _member)
+ {
+ BoundListeners l;
+ {
+ ::osl::MutexGuard aGuard(m_aMutex);
+ prepareSet(_sProperty, css::uno::Any(_member), css::uno::Any(Value), &l);
+ _member = Value;
+ }
+ l.notify();
+ }
+ protected:
+ virtual ~OImageControl() override;
+ public:
+ explicit OImageControl(css::uno::Reference< css::uno::XComponentContext > const & _xContext);
+ explicit OImageControl(css::uno::Reference< css::uno::XComponentContext > const & _xContext
+ ,const css::uno::Reference< css::lang::XMultiServiceFactory > & _xFactory
+ ,css::uno::Reference< css::drawing::XShape >& _xShape);
+
+ DECLARE_XINTERFACE( )
+ // css::lang::XServiceInfo
+ virtual sal_Bool SAL_CALL supportsService( const OUString& ServiceName ) override;
+ virtual OUString SAL_CALL getImplementationName( ) override;
+ virtual css::uno::Sequence< OUString > SAL_CALL getSupportedServiceNames( ) override;
+
+ /// @throws css::uno::RuntimeException
+ static css::uno::Sequence< OUString > getSupportedServiceNames_Static();
+ /// @throws css::uno::RuntimeException
+ static OUString getImplementationName_Static();
+ static css::uno::Reference< css::uno::XInterface >
+ create(css::uno::Reference< css::uno::XComponentContext > const & xContext);
+ // 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;
+
+ // XReportComponent
+ REPORTCOMPONENT_HEADER()
+ // XShape
+ SHAPE_HEADER()
+
+ // XShapeDescriptor
+ virtual OUString SAL_CALL getShapeType( ) override;
+
+ // XReportControlModel
+ REPORTCONTROLMODEL_HEADER()
+
+ // XReportControlFormat
+ REPORTCONTROLFORMAT_HEADER()
+
+ // XCloneable
+ virtual css::uno::Reference< css::util::XCloneable > SAL_CALL createClone( ) override;
+
+ // XImageControl
+ virtual OUString SAL_CALL getImageURL() override;
+ virtual void SAL_CALL setImageURL( const OUString& _imageurl ) override;
+ virtual sal_Bool SAL_CALL getPreserveIRI() override;
+ virtual void SAL_CALL setPreserveIRI( sal_Bool _preserveiri ) override;
+ virtual ::sal_Int16 SAL_CALL getScaleMode() override;
+ virtual void SAL_CALL setScaleMode( ::sal_Int16 _scalemode ) override;
+
+ // XImageProducerSupplier
+ virtual css::uno::Reference< css::awt::XImageProducer > SAL_CALL getImageProducer( ) override;
+
+ // XComponent
+ virtual void SAL_CALL dispose() override;
+ virtual void SAL_CALL addEventListener(const css::uno::Reference< css::lang::XEventListener > & aListener) override
+ {
+ cppu::WeakComponentImplHelperBase::addEventListener(aListener);
+ }
+ virtual void SAL_CALL removeEventListener(const css::uno::Reference< css::lang::XEventListener > & aListener) override
+ {
+ cppu::WeakComponentImplHelperBase::removeEventListener(aListener);
+ }
+
+ // 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;
+ // XContainer
+ virtual void SAL_CALL addContainerListener( const css::uno::Reference< css::container::XContainerListener >& xListener ) override;
+ virtual void SAL_CALL removeContainerListener( const css::uno::Reference< css::container::XContainerListener >& xListener ) override;
+
+ // XElementAccess
+ virtual css::uno::Type SAL_CALL getElementType( ) override;
+ virtual sal_Bool SAL_CALL hasElements( ) override;
+
+ // XIndexReplace
+ virtual void SAL_CALL replaceByIndex( ::sal_Int32 Index, const css::uno::Any& Element ) override;
+
+ // XIndexContainer
+ virtual void SAL_CALL insertByIndex( ::sal_Int32 Index, const css::uno::Any& Element ) override;
+ virtual void SAL_CALL removeByIndex( ::sal_Int32 Index ) override;
+
+ // XIndexAccess
+ virtual ::sal_Int32 SAL_CALL getCount( ) override;
+ virtual css::uno::Any SAL_CALL getByIndex( ::sal_Int32 Index ) override;
+ };
+}
+#endif // INCLUDED_REPORTDESIGN_SOURCE_CORE_INC_IMAGECONTROL_HXX
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/reportdesign/source/core/inc/ReportComponent.hxx b/reportdesign/source/core/inc/ReportComponent.hxx
new file mode 100644
index 000000000..b6f966040
--- /dev/null
+++ b/reportdesign/source/core/inc/ReportComponent.hxx
@@ -0,0 +1,82 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ *
+ * This file incorporates work covered by the following license notice:
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed
+ * with this work for additional information regarding copyright
+ * ownership. The ASF licenses this file to you under the Apache
+ * License, Version 2.0 (the "License"); you may not use this file
+ * except in compliance with the License. You may obtain a copy of
+ * the License at http://www.apache.org/licenses/LICENSE-2.0 .
+ */
+
+#ifndef INCLUDED_REPORTDESIGN_SOURCE_CORE_INC_REPORTCOMPONENT_HXX
+#define INCLUDED_REPORTDESIGN_SOURCE_CORE_INC_REPORTCOMPONENT_HXX
+
+#include <com/sun/star/uno/XComponentContext.hpp>
+#include <com/sun/star/container/XChild.hpp>
+#include <com/sun/star/drawing/XShape.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/uno/XAggregation.hpp>
+#include <com/sun/star/report/XReportComponent.hpp>
+#include <com/sun/star/lang/XMultiServiceFactory.hpp>
+#include <cppuhelper/weakref.hxx>
+
+namespace reportdesign
+{
+ class OReportComponentProperties
+ {
+ public:
+ css::uno::WeakReference<css::container::XChild> m_xParent;
+ css::uno::Reference<css::uno::XComponentContext> m_xContext;
+ css::uno::Reference<css::lang::XMultiServiceFactory> m_xFactory;
+ css::uno::Reference<css::drawing::XShape> m_xShape;
+ css::uno::Reference<css::uno::XAggregation> m_xProxy;
+ css::uno::Reference<css::beans::XPropertySet> m_xProperty;
+ css::uno::Reference<css::lang::XTypeProvider> m_xTypeProvider;
+ css::uno::Reference<css::lang::XUnoTunnel> m_xUnoTunnel;
+ css::uno::Reference<css::lang::XServiceInfo> m_xServiceInfo;
+ css::uno::Sequence<OUString> m_aMasterFields;
+ css::uno::Sequence<OUString> m_aDetailFields;
+ OUString m_sName;
+ ::sal_Int32 m_nHeight;
+ ::sal_Int32 m_nWidth;
+ ::sal_Int32 m_nPosX;
+ ::sal_Int32 m_nPosY;
+ ::sal_Int32 m_nBorderColor;
+ ::sal_Int16 m_nBorder;
+ bool m_bPrintRepeatedValues;
+ bool m_bAutoGrow;
+
+ OReportComponentProperties(
+ css::uno::Reference<css::uno::XComponentContext> const& xContext)
+ : m_xContext(xContext)
+ , m_nHeight(0)
+ , m_nWidth(0)
+ , m_nPosX(0)
+ , m_nPosY(0)
+ , m_nBorderColor(0)
+ , m_nBorder(2)
+ , m_bPrintRepeatedValues(true)
+ , m_bAutoGrow(false)
+ {}
+ ~OReportComponentProperties();
+
+ void setShape(css::uno::Reference<css::drawing::XShape>& xShape,
+ const css::uno::Reference<css::report::XReportComponent>& xTunnel,
+ oslInterlockedCount& rRefCount);
+ };
+}
+
+#endif // INCLUDED_REPORTDESIGN_SOURCE_CORE_INC_REPORTCOMPONENT_HXX
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/reportdesign/source/core/inc/ReportControlModel.hxx b/reportdesign/source/core/inc/ReportControlModel.hxx
new file mode 100644
index 000000000..98d209fc6
--- /dev/null
+++ b/reportdesign/source/core/inc/ReportControlModel.hxx
@@ -0,0 +1,138 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.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_REPORTDESIGN_SOURCE_CORE_INC_REPORTCONTROLMODEL_HXX
+#define INCLUDED_REPORTDESIGN_SOURCE_CORE_INC_REPORTCONTROLMODEL_HXX
+
+#include "ReportComponent.hxx"
+#include <com/sun/star/style/VerticalAlignment.hpp>
+#include <com/sun/star/awt/FontDescriptor.hpp>
+#include <com/sun/star/report/XFormatCondition.hpp>
+#include <com/sun/star/container/XContainer.hpp>
+#include <com/sun/star/lang/Locale.hpp>
+#include <com/sun/star/style/ParagraphAdjust.hpp>
+#include <comphelper/interfacecontainer3.hxx>
+
+
+namespace reportdesign
+{
+ struct OFormatProperties
+ {
+ css::style::ParagraphAdjust nAlign;
+ css::awt::FontDescriptor aFontDescriptor;
+ css::awt::FontDescriptor aAsianFontDescriptor;
+ css::awt::FontDescriptor aComplexFontDescriptor;
+ css::lang::Locale aCharLocale;
+ css::lang::Locale aCharLocaleAsian;
+ css::lang::Locale aCharLocaleComplex;
+ ::sal_Int16 nFontEmphasisMark;
+ ::sal_Int16 nFontRelief;
+ ::sal_Int32 nTextColor;
+ ::sal_Int32 nTextLineColor;
+ ::sal_Int32 nBackgroundColor;
+ OUString sCharCombinePrefix;
+ OUString sCharCombineSuffix;
+ OUString sHyperLinkURL;
+ OUString sHyperLinkTarget;
+ OUString sHyperLinkName;
+ OUString sVisitedCharStyleName;
+ OUString sUnvisitedCharStyleName;
+ css::style::VerticalAlignment aVerticalAlignment;
+ ::sal_Int16 nCharEscapement;
+ ::sal_Int16 nCharCaseMap;
+ ::sal_Int16 nCharKerning;
+ ::sal_Int8 nCharEscapementHeight;
+ bool m_bBackgroundTransparent;
+ bool bCharFlash;
+ bool bCharAutoKerning;
+ bool bCharCombineIsOn;
+ bool bCharHidden;
+ bool bCharShadowed;
+ bool bCharContoured;
+ OFormatProperties();
+ };
+ class OReportControlModel
+ {
+ void checkIndex(sal_Int32 _nIndex);
+ OReportControlModel(OReportControlModel const &) = delete;
+ void operator =(OReportControlModel const &) = delete;
+ public:
+ ::comphelper::OInterfaceContainerHelper3<css::container::XContainerListener> aContainerListeners;
+ OReportComponentProperties aComponent;
+ OFormatProperties aFormatProperties;
+ css::container::XContainer* m_pOwner;
+ ::std::vector< css::uno::Reference< css::report::XFormatCondition> >
+ m_aFormatConditions;
+ osl::Mutex& m_rMutex;
+ OUString aDataField;
+ OUString aConditionalPrintExpression;
+ bool bPrintWhenGroupChange;
+
+ OReportControlModel(osl::Mutex& _rMutex
+ ,css::container::XContainer* _pOwner
+ ,css::uno::Reference< css::uno::XComponentContext > const & _xContext)
+ :aContainerListeners(_rMutex)
+ ,aComponent(_xContext)
+ ,m_pOwner(_pOwner)
+ ,m_rMutex(_rMutex)
+ ,bPrintWhenGroupChange(true)
+ {}
+
+ // XContainer
+ /// @throws css::uno::RuntimeException
+ void addContainerListener( const css::uno::Reference< css::container::XContainerListener >& xListener );
+ /// @throws css::uno::RuntimeException
+ void removeContainerListener( const css::uno::Reference< css::container::XContainerListener >& xListener );
+
+ // XElementAccess
+ /// @throws css::uno::RuntimeException
+ bool hasElements( );
+
+ // XIndexReplace
+ /// @throws css::lang::IllegalArgumentException
+ /// @throws css::lang::IndexOutOfBoundsException
+ /// @throws css::lang::WrappedTargetException
+ /// @throws css::uno::RuntimeException
+ void replaceByIndex( ::sal_Int32 Index, const css::uno::Any& Element );
+
+ // XIndexContainer
+ /// @throws css::lang::IllegalArgumentException
+ /// @throws css::lang::IndexOutOfBoundsException
+ /// @throws css::lang::WrappedTargetException
+ /// @throws css::uno::RuntimeException
+ void insertByIndex( ::sal_Int32 Index, const css::uno::Any& Element );
+ /// @throws css::lang::IndexOutOfBoundsException
+ /// @throws css::lang::WrappedTargetException
+ /// @throws css::uno::RuntimeException
+ void removeByIndex( ::sal_Int32 Index );
+
+ // XIndexAccess
+ /// @throws css::uno::RuntimeException
+ ::sal_Int32 getCount( );
+ /// @throws css::lang::IndexOutOfBoundsException
+ /// @throws css::lang::WrappedTargetException
+ /// @throws css::uno::RuntimeException
+ css::uno::Any getByIndex( ::sal_Int32 Index );
+
+ static bool isInterfaceForbidden(const css::uno::Type& _rType);
+ };
+}
+#endif // INCLUDED_REPORTDESIGN_SOURCE_CORE_INC_REPORTCONTROLMODEL_HXX
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/reportdesign/source/core/inc/ReportDrawPage.hxx b/reportdesign/source/core/inc/ReportDrawPage.hxx
new file mode 100644
index 000000000..e1b432247
--- /dev/null
+++ b/reportdesign/source/core/inc/ReportDrawPage.hxx
@@ -0,0 +1,42 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ *
+ * This file incorporates work covered by the following license notice:
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed
+ * with this work for additional information regarding copyright
+ * ownership. The ASF licenses this file to you under the Apache
+ * License, Version 2.0 (the "License"); you may not use this file
+ * except in compliance with the License. You may obtain a copy of
+ * the License at http://www.apache.org/licenses/LICENSE-2.0 .
+ */
+
+#ifndef INCLUDED_REPORTDESIGN_SOURCE_CORE_INC_REPORTDRAWPAGE_HXX
+#define INCLUDED_REPORTDESIGN_SOURCE_CORE_INC_REPORTDRAWPAGE_HXX
+
+#include <svx/unopage.hxx>
+#include <com/sun/star/report/XSection.hpp>
+
+namespace reportdesign
+{
+ class OReportDrawPage : public SvxDrawPage
+ {
+ css::uno::WeakReference< css::report::XSection > m_xSection;
+ OReportDrawPage(const OReportDrawPage&) = delete;
+ void operator =(const OReportDrawPage&) = delete;
+ protected:
+ virtual SdrObject *CreateSdrObject_( const css::uno::Reference< css::drawing::XShape > & xShape ) override;
+ virtual css::uno::Reference< css::drawing::XShape > CreateShape( SdrObject *pObj ) const override;
+ public:
+ OReportDrawPage(SdrPage* pPage,const css::uno::Reference< css::report::XSection >& _xSection);
+ };
+}
+#endif // INCLUDED_REPORTDESIGN_SOURCE_CORE_INC_REPORTDRAWPAGE_HXX
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/reportdesign/source/core/inc/ReportEngineJFree.hxx b/reportdesign/source/core/inc/ReportEngineJFree.hxx
new file mode 100644
index 000000000..e0ab1d60b
--- /dev/null
+++ b/reportdesign/source/core/inc/ReportEngineJFree.hxx
@@ -0,0 +1,133 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ *
+ * 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_REPORTDESIGN_SOURCE_CORE_INC_REPORTENGINEJFREE_HXX
+#define INCLUDED_REPORTDESIGN_SOURCE_CORE_INC_REPORTENGINEJFREE_HXX
+
+#include <sal/config.h>
+
+#include <com/sun/star/report/XReportEngine.hpp>
+#include <cppuhelper/compbase.hxx>
+#include <comphelper/broadcasthelper.hxx>
+#include <comphelper/uno3.hxx>
+#include <cppuhelper/propertysetmixin.hxx>
+#include <com/sun/star/uno/XComponentContext.hpp>
+#include <com/sun/star/lang/XServiceInfo.hpp>
+
+namespace reportdesign
+{
+ typedef ::cppu::WeakComponentImplHelper< css::report::XReportEngine
+ ,css::lang::XServiceInfo> ReportEngineBase;
+ typedef ::cppu::PropertySetMixin<css::report::XReportEngine> ReportEnginePropertySet;
+
+ class OReportEngineJFree : public comphelper::OMutexAndBroadcastHelper,
+ public ReportEngineBase,
+ public ReportEnginePropertySet
+ {
+ css::uno::Reference< css::uno::XComponentContext > m_xContext;
+ css::uno::Reference< css::report::XReportDefinition > m_xReport;
+ css::uno::Reference< css::task::XStatusIndicator> m_StatusIndicator;
+ css::uno::Reference< css::sdbc::XConnection > m_xActiveConnection;
+ ::sal_Int32 m_nMaxRows;
+ private:
+ OReportEngineJFree(const OReportEngineJFree&) = delete;
+ OReportEngineJFree& operator=(const OReportEngineJFree&) = delete;
+ template <typename T> void set( const OUString& _sProperty
+ ,const T& Value
+ ,T& _member)
+ {
+ BoundListeners l;
+ {
+ ::osl::MutexGuard aGuard(m_aMutex);
+ prepareSet(_sProperty, css::uno::Any(_member), css::uno::Any(Value), &l);
+ _member = Value;
+ }
+ l.notify();
+ }
+
+ /** returns the file url for a new model
+ *
+ * \return The new file url.
+ */
+ OUString getNewOutputName();
+
+ protected:
+ // TODO: VirtualFunctionFinder: This is virtual function!
+
+ virtual ~OReportEngineJFree() override;
+ public:
+ OReportEngineJFree(const css::uno::Reference< css::uno::XComponentContext >& context);
+
+ DECLARE_XINTERFACE( )
+ // css::lang::XServiceInfo
+ virtual sal_Bool SAL_CALL supportsService( const OUString& ServiceName ) override;
+ virtual OUString SAL_CALL getImplementationName( ) override;
+ virtual css::uno::Sequence< OUString > SAL_CALL getSupportedServiceNames( ) override;
+
+ /// @throws css::uno::RuntimeException
+ static css::uno::Sequence< OUString > getSupportedServiceNames_Static();
+ /// @throws css::uno::RuntimeException
+ static OUString getImplementationName_Static();
+ static css::uno::Reference< css::uno::XInterface >
+ create(css::uno::Reference< css::uno::XComponentContext > const & xContext);
+ private:
+ // 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;
+
+ // XReportEngine
+ // Attributes
+ virtual css::uno::Reference< css::report::XReportDefinition > SAL_CALL getReportDefinition() override ;
+ virtual void SAL_CALL setReportDefinition( const css::uno::Reference< css::report::XReportDefinition >& _reportdefinition ) override;
+ virtual css::uno::Reference< css::sdbc::XConnection > SAL_CALL getActiveConnection() override;
+ virtual void SAL_CALL setActiveConnection( const css::uno::Reference< css::sdbc::XConnection >& _activeconnection ) override;
+ virtual css::uno::Reference< css::task::XStatusIndicator > SAL_CALL getStatusIndicator() override ;
+ virtual void SAL_CALL setStatusIndicator( const css::uno::Reference< css::task::XStatusIndicator >& _statusindicator ) override ;
+ virtual ::sal_Int32 SAL_CALL getMaxRows() override;
+ virtual void SAL_CALL setMaxRows( ::sal_Int32 MaxRows ) override;
+ // Methods
+ virtual css::uno::Reference< css::frame::XModel > SAL_CALL createDocumentModel( ) override ;
+ virtual css::uno::Reference< css::frame::XModel > SAL_CALL createDocumentAlive( const css::uno::Reference< css::frame::XFrame >& _frame ) override ;
+ /// @throws css::lang::DisposedException
+ /// @throws css::lang::IllegalArgumentException
+ /// @throws css::uno::Exception
+ /// @throws css::uno::RuntimeException
+ css::uno::Reference< css::frame::XModel > createDocumentAlive( const css::uno::Reference< css::frame::XFrame >& _frame ,bool _bHidden) ;
+ virtual css::util::URL SAL_CALL createDocument( ) override ;
+ virtual void SAL_CALL interrupt( ) override ;
+
+ // XComponent
+ virtual void SAL_CALL dispose() override;
+ virtual void SAL_CALL addEventListener(const css::uno::Reference< css::lang::XEventListener > & aListener) override
+ {
+ cppu::WeakComponentImplHelperBase::addEventListener(aListener);
+ }
+ virtual void SAL_CALL removeEventListener(const css::uno::Reference< css::lang::XEventListener > & aListener) override
+ {
+ cppu::WeakComponentImplHelperBase::removeEventListener(aListener);
+ }
+ };
+}
+#endif // INCLUDED_REPORTDESIGN_SOURCE_CORE_INC_REPORTENGINEJFREE_HXX
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/reportdesign/source/core/inc/ReportHelperImpl.hxx b/reportdesign/source/core/inc/ReportHelperImpl.hxx
new file mode 100644
index 000000000..4d5a1f41e
--- /dev/null
+++ b/reportdesign/source/core/inc/ReportHelperImpl.hxx
@@ -0,0 +1,1293 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.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_REPORTDESIGN_SOURCE_CORE_INC_REPORTHELPERIMPL_HXX
+#define INCLUDED_REPORTDESIGN_SOURCE_CORE_INC_REPORTHELPERIMPL_HXX
+// css::report::XReportComponent:
+#define REPORTCOMPONENT_IMPL3(clazz,arg) \
+OUString SAL_CALL clazz::getName() \
+{ \
+ ::osl::MutexGuard aGuard(m_aMutex); \
+ return (arg).m_sName; \
+} \
+void SAL_CALL clazz::setName( const OUString& _name ) \
+{ \
+ set(PROPERTY_NAME,_name,(arg).m_sName); \
+} \
+::sal_Int32 SAL_CALL clazz::getHeight() \
+{ \
+ return getSize().Height; \
+} \
+void SAL_CALL clazz::setHeight( ::sal_Int32 _height ) \
+{ \
+ awt::Size aSize = getSize(); \
+ aSize.Height = _height; \
+ setSize(aSize); \
+} \
+::sal_Int32 SAL_CALL clazz::getPositionX() \
+{ \
+ return getPosition().X; \
+} \
+void SAL_CALL clazz::setPositionX( ::sal_Int32 _positionx ) \
+{ \
+ awt::Point aPos = getPosition(); \
+ aPos.X = _positionx; \
+ setPosition(aPos); \
+} \
+::sal_Int32 SAL_CALL clazz::getPositionY() \
+{ \
+ return getPosition().Y; \
+} \
+void SAL_CALL clazz::setPositionY( ::sal_Int32 _positiony ) \
+{ \
+ awt::Point aPos = getPosition(); \
+ aPos.Y = _positiony; \
+ setPosition(aPos); \
+} \
+::sal_Int32 SAL_CALL clazz::getWidth() \
+{ \
+ return getSize().Width; \
+} \
+void SAL_CALL clazz::setWidth( ::sal_Int32 _width ) \
+{ \
+ awt::Size aSize = getSize(); \
+ aSize.Width = _width; \
+ setSize(aSize); \
+} \
+uno::Reference< report::XSection > SAL_CALL clazz::getSection() \
+{ \
+ ::osl::MutexGuard aGuard(m_aMutex); \
+ uno::Reference< container::XChild > xParent(getParent( ),uno::UNO_QUERY); \
+ return lcl_getSection(xParent); \
+} \
+sal_Bool SAL_CALL clazz::getAutoGrow() \
+{ \
+ ::osl::MutexGuard aGuard(m_aMutex); \
+ return (arg).m_bAutoGrow; \
+} \
+void SAL_CALL clazz::setAutoGrow(sal_Bool _autogrow) \
+{ \
+ set(PROPERTY_AUTOGROW,static_cast<bool>(_autogrow),(arg).m_bAutoGrow); \
+}
+
+#define REPORTCOMPONENT_IMPL(clazz,arg) \
+REPORTCOMPONENT_IMPL3(clazz,arg)\
+sal_Bool SAL_CALL clazz::getPrintRepeatedValues() \
+{ \
+ ::osl::MutexGuard aGuard(m_aMutex); \
+ return (arg).m_bPrintRepeatedValues; \
+} \
+void SAL_CALL clazz::setPrintRepeatedValues( sal_Bool _printrepeatedvalues ) \
+{ \
+ set(PROPERTY_PRINTREPEATEDVALUES,_printrepeatedvalues,(arg).m_bPrintRepeatedValues); \
+}
+
+#define REPORTCOMPONENT_IMPL2(clazz,arg) \
+::sal_Int16 SAL_CALL clazz::getControlBorder() \
+{ \
+ ::osl::MutexGuard aGuard(m_aMutex); \
+ return (arg).m_nBorder; \
+} \
+void SAL_CALL clazz::setControlBorder( ::sal_Int16 _border )\
+{ \
+ set(PROPERTY_CONTROLBORDER,_border,(arg).m_nBorder); \
+} \
+::sal_Int32 SAL_CALL clazz::getControlBorderColor() \
+{ \
+ ::osl::MutexGuard aGuard(m_aMutex); \
+ return (arg).m_nBorderColor; \
+} \
+void SAL_CALL clazz::setControlBorderColor( ::sal_Int32 _bordercolor ) \
+{ \
+ set(PROPERTY_CONTROLBORDERCOLOR,_bordercolor,(arg).m_nBorderColor); \
+}
+
+#define REPORTCOMPONENT_MASTERDETAIL(clazz,arg) \
+css::uno::Sequence< OUString > SAL_CALL clazz::getMasterFields() \
+{ \
+ ::osl::MutexGuard aGuard(m_aMutex); \
+ return (arg).m_aMasterFields; \
+} \
+void SAL_CALL clazz::setMasterFields( const css::uno::Sequence< OUString >& _masterfields )\
+{ \
+ ::osl::MutexGuard aGuard(m_aMutex); \
+ set(PROPERTY_MASTERFIELDS,_masterfields,(arg).m_aMasterFields); \
+} \
+css::uno::Sequence< OUString > SAL_CALL clazz::getDetailFields()\
+{ \
+ ::osl::MutexGuard aGuard(m_aMutex); \
+ return (arg).m_aDetailFields; \
+} \
+void SAL_CALL clazz::setDetailFields( const css::uno::Sequence< OUString >& _detailfields )\
+{ \
+ ::osl::MutexGuard aGuard(m_aMutex); \
+ set(PROPERTY_DETAILFIELDS,_detailfields,(arg).m_aDetailFields); \
+}
+
+#define REPORTCOMPONENT_NOMASTERDETAIL(clazz) \
+css::uno::Sequence< OUString > SAL_CALL clazz::getMasterFields() \
+{ \
+ throw css::beans::UnknownPropertyException();\
+} \
+void SAL_CALL clazz::setMasterFields( const css::uno::Sequence< OUString >& )\
+{ \
+ throw css::beans::UnknownPropertyException();\
+} \
+css::uno::Sequence< OUString > SAL_CALL clazz::getDetailFields()\
+{ \
+ throw css::beans::UnknownPropertyException();\
+} \
+void SAL_CALL clazz::setDetailFields( const css::uno::Sequence< OUString >& )\
+{ \
+ throw css::beans::UnknownPropertyException();\
+}
+
+// css::report::XReportControlFormat:
+#define REPORTCONTROLFORMAT_IMPL1(clazz,varName) \
+::sal_Int32 SAL_CALL clazz::getControlBackground() \
+{ \
+ ::osl::MutexGuard aGuard(m_aMutex); \
+ return varName.m_bBackgroundTransparent ? sal_Int32(COL_TRANSPARENT) : varName.nBackgroundColor; \
+} \
+ \
+void SAL_CALL clazz::setControlBackground( ::sal_Int32 _backgroundcolor )\
+{ \
+ bool bTransparent = _backgroundcolor == static_cast<sal_Int32>(COL_TRANSPARENT);\
+ setControlBackgroundTransparent(bTransparent);\
+ if ( !bTransparent )\
+ set(PROPERTY_CONTROLBACKGROUND,_backgroundcolor,varName.nBackgroundColor);\
+} \
+ \
+sal_Bool SAL_CALL clazz::getControlBackgroundTransparent() \
+{ \
+ ::osl::MutexGuard aGuard(m_aMutex); \
+ return varName.m_bBackgroundTransparent; \
+} \
+ \
+void SAL_CALL clazz::setControlBackgroundTransparent( sal_Bool _controlbackgroundtransparent ) \
+{ \
+ set(PROPERTY_CONTROLBACKGROUNDTRANSPARENT,_controlbackgroundtransparent,varName.m_bBackgroundTransparent);\
+ if ( _controlbackgroundtransparent )\
+ set(PROPERTY_CONTROLBACKGROUND,static_cast<sal_Int32>(COL_TRANSPARENT),varName.nBackgroundColor);\
+}
+
+#define REPORTCONTROLFORMAT_IMPL2(clazz,varName) \
+::sal_Int16 SAL_CALL clazz::getCharStrikeout() \
+{ \
+ ::osl::MutexGuard aGuard(m_aMutex); \
+ return varName.aFontDescriptor.Strikeout; \
+} \
+ \
+void SAL_CALL clazz::setCharStrikeout(::sal_Int16 the_value) \
+{ \
+ set(PROPERTY_CHARSTRIKEOUT,the_value,varName.aFontDescriptor.Strikeout); \
+} \
+ \
+sal_Bool SAL_CALL clazz::getCharWordMode() \
+{ \
+ ::osl::MutexGuard aGuard(m_aMutex); \
+ return varName.aFontDescriptor.WordLineMode; \
+} \
+ \
+void SAL_CALL clazz::setCharWordMode(sal_Bool the_value) \
+{ \
+ set(PROPERTY_CHARWORDMODE,the_value,varName.aFontDescriptor.WordLineMode); \
+} \
+ \
+::sal_Int16 SAL_CALL clazz::getCharRotation() \
+{ \
+ ::osl::MutexGuard aGuard(m_aMutex); \
+ return static_cast<sal_Int16>(varName.aFontDescriptor.Orientation); \
+} \
+ \
+void SAL_CALL clazz::setCharRotation(::sal_Int16 the_value) \
+{ \
+ float newValue = the_value; \
+ set(PROPERTY_CHARROTATION,newValue,varName.aFontDescriptor.Orientation); \
+} \
+ \
+::sal_Int16 SAL_CALL clazz::getCharScaleWidth() \
+{ \
+ ::osl::MutexGuard aGuard(m_aMutex); \
+ return static_cast<sal_Int16>(varName.aFontDescriptor.CharacterWidth); \
+} \
+ \
+void SAL_CALL clazz::setCharScaleWidth(::sal_Int16 the_value) \
+{ \
+ float newValue = the_value; \
+ set(PROPERTY_CHARSCALEWIDTH,newValue,varName.aFontDescriptor.CharacterWidth); \
+} \
+sal_Int16 SAL_CALL clazz::getParaAdjust() \
+{ \
+ ::osl::MutexGuard aGuard(m_aMutex); \
+ return static_cast<sal_Int16>(varName.nAlign); \
+} \
+ \
+void SAL_CALL clazz::setParaAdjust( sal_Int16 _align ) \
+{ \
+ set(PROPERTY_PARAADJUST,_align,varName.nAlign); \
+} \
+ \
+awt::FontDescriptor SAL_CALL clazz::getFontDescriptor() \
+{ \
+ ::osl::MutexGuard aGuard(m_aMutex); \
+ return varName.aFontDescriptor; \
+} \
+ \
+void SAL_CALL clazz::setFontDescriptor( const awt::FontDescriptor& _fontdescriptor ) \
+{ \
+ set(PROPERTY_FONTDESCRIPTOR,_fontdescriptor,varName.aFontDescriptor); \
+} \
+awt::FontDescriptor SAL_CALL clazz::getFontDescriptorAsian() \
+{ \
+ ::osl::MutexGuard aGuard(m_aMutex); \
+ return varName.aAsianFontDescriptor; \
+} \
+ \
+void SAL_CALL clazz::setFontDescriptorAsian( const awt::FontDescriptor& _fontdescriptor ) \
+{ \
+ set(PROPERTY_FONTDESCRIPTORASIAN,_fontdescriptor,varName.aAsianFontDescriptor); \
+} \
+awt::FontDescriptor SAL_CALL clazz::getFontDescriptorComplex() \
+{ \
+ ::osl::MutexGuard aGuard(m_aMutex); \
+ return varName.aComplexFontDescriptor; \
+} \
+ \
+void SAL_CALL clazz::setFontDescriptorComplex( const awt::FontDescriptor& _fontdescriptor ) \
+{ \
+ set(PROPERTY_FONTDESCRIPTORCOMPLEX,_fontdescriptor,varName.aComplexFontDescriptor); \
+} \
+ \
+::sal_Int16 SAL_CALL clazz::getControlTextEmphasis() \
+{ \
+ ::osl::MutexGuard aGuard(m_aMutex); \
+ return varName.nFontEmphasisMark; \
+} \
+ \
+void SAL_CALL clazz::setControlTextEmphasis( ::sal_Int16 _fontemphasismark ) \
+{ \
+ set(PROPERTY_CONTROLTEXTEMPHASISMARK,_fontemphasismark,varName.nFontEmphasisMark); \
+} \
+ \
+::sal_Int16 SAL_CALL clazz::getCharRelief() \
+{ \
+ ::osl::MutexGuard aGuard(m_aMutex); \
+ return varName.nFontRelief; \
+} \
+ \
+void SAL_CALL clazz::setCharRelief( ::sal_Int16 _fontrelief ) \
+{ \
+ set(PROPERTY_CHARRELIEF,_fontrelief,varName.nFontRelief); \
+} \
+ \
+::sal_Int32 SAL_CALL clazz::getCharColor() \
+{ \
+ ::osl::MutexGuard aGuard(m_aMutex); \
+ return varName.nTextColor; \
+} \
+ \
+void SAL_CALL clazz::setCharColor( ::sal_Int32 _textcolor ) \
+{ \
+ set(PROPERTY_CHARCOLOR,_textcolor,varName.nTextColor); \
+} \
+ \
+::sal_Int32 SAL_CALL clazz::getCharUnderlineColor() \
+{ \
+ ::osl::MutexGuard aGuard(m_aMutex); \
+ return varName.nTextLineColor; \
+} \
+ \
+void SAL_CALL clazz::setCharUnderlineColor( ::sal_Int32 _textlinecolor ) \
+{ \
+ set(PROPERTY_CHARUNDERLINECOLOR,_textlinecolor,varName.nTextLineColor); \
+} \
+ \
+style::VerticalAlignment SAL_CALL clazz::getVerticalAlign() \
+{ \
+ ::osl::MutexGuard aGuard(m_aMutex); \
+ return varName.aVerticalAlignment; \
+} \
+ \
+void SAL_CALL clazz::setVerticalAlign( style::VerticalAlignment _verticalalign ) \
+{ \
+ set(PROPERTY_VERTICALALIGN,_verticalalign,varName.aVerticalAlignment); \
+} \
+ \
+::sal_Int16 SAL_CALL clazz::getCharEmphasis() \
+{ \
+ return getControlTextEmphasis(); \
+} \
+ \
+void SAL_CALL clazz::setCharEmphasis( ::sal_Int16 _charemphasis ) \
+{ \
+ set(PROPERTY_CHAREMPHASIS,_charemphasis,varName.nFontEmphasisMark); \
+} \
+ \
+OUString SAL_CALL clazz::getCharFontName() \
+{ \
+ ::osl::MutexGuard aGuard(m_aMutex); \
+ return varName.aFontDescriptor.Name; \
+} \
+ \
+void SAL_CALL clazz::setCharFontName( const OUString& _charfontname ) \
+{ \
+ set(PROPERTY_CHARFONTNAME,_charfontname,varName.aFontDescriptor.Name); \
+} \
+ \
+OUString SAL_CALL clazz::getCharFontStyleName() \
+{ \
+ ::osl::MutexGuard aGuard(m_aMutex); \
+ return varName.aFontDescriptor.StyleName; \
+} \
+ \
+void SAL_CALL clazz::setCharFontStyleName( const OUString& _charfontstylename ) \
+{ \
+ set(PROPERTY_CHARFONTSTYLENAME,_charfontstylename,varName.aFontDescriptor.StyleName); \
+} \
+ \
+::sal_Int16 SAL_CALL clazz::getCharFontFamily() \
+{ \
+ ::osl::MutexGuard aGuard(m_aMutex); \
+ return varName.aFontDescriptor.Family; \
+} \
+ \
+void SAL_CALL clazz::setCharFontFamily( ::sal_Int16 _charfontfamily ) \
+{ \
+ set(PROPERTY_CHARFONTFAMILY,_charfontfamily,varName.aFontDescriptor.Family); \
+} \
+ \
+::sal_Int16 SAL_CALL clazz::getCharFontCharSet() \
+{ \
+ ::osl::MutexGuard aGuard(m_aMutex); \
+ return varName.aFontDescriptor.CharSet; \
+} \
+ \
+void SAL_CALL clazz::setCharFontCharSet( ::sal_Int16 _charfontcharset ) \
+{ \
+ set(PROPERTY_CHARFONTCHARSET,_charfontcharset,varName.aFontDescriptor.CharSet); \
+} \
+ \
+::sal_Int16 SAL_CALL clazz::getCharFontPitch() \
+{ \
+ ::osl::MutexGuard aGuard(m_aMutex); \
+ return varName.aFontDescriptor.Pitch; \
+} \
+ \
+void SAL_CALL clazz::setCharFontPitch( ::sal_Int16 _charfontpitch ) \
+{ \
+ set(PROPERTY_CHARFONTPITCH,_charfontpitch,varName.aFontDescriptor.Pitch); \
+} \
+ \
+float SAL_CALL clazz::getCharHeight() \
+{ \
+ ::osl::MutexGuard aGuard(m_aMutex); \
+ return varName.aFontDescriptor.Height; \
+} \
+ \
+void SAL_CALL clazz::setCharHeight( float _charheight ) \
+{ \
+ set(PROPERTY_CHARHEIGHT,static_cast<sal_Int16>(_charheight),varName.aFontDescriptor.Height); \
+} \
+ \
+::sal_Int16 SAL_CALL clazz::getCharUnderline() \
+{ \
+ ::osl::MutexGuard aGuard(m_aMutex); \
+ return varName.aFontDescriptor.Underline; \
+} \
+ \
+void SAL_CALL clazz::setCharUnderline( ::sal_Int16 _charunderline ) \
+{ \
+ set(PROPERTY_CHARUNDERLINE,_charunderline,varName.aFontDescriptor.Underline); \
+} \
+ \
+float SAL_CALL clazz::getCharWeight() \
+{ \
+ ::osl::MutexGuard aGuard(m_aMutex); \
+ return varName.aFontDescriptor.Weight; \
+} \
+ \
+void SAL_CALL clazz::setCharWeight( float _charweight ) \
+{ \
+ set(PROPERTY_CHARWEIGHT,_charweight,varName.aFontDescriptor.Weight); \
+} \
+ \
+awt::FontSlant SAL_CALL clazz::getCharPosture() \
+{ \
+ ::osl::MutexGuard aGuard(m_aMutex); \
+ return varName.aFontDescriptor.Slant; \
+} \
+ \
+void SAL_CALL clazz::setCharPosture( awt::FontSlant _charposture ) \
+{ \
+ set(PROPERTY_CHARPOSTURE,_charposture,varName.aFontDescriptor.Slant); \
+}\
+sal_Bool SAL_CALL clazz::getCharFlash()\
+{ \
+ ::osl::MutexGuard aGuard(m_aMutex); \
+ return varName.bCharFlash; \
+} \
+void SAL_CALL clazz::setCharFlash(sal_Bool the_value)\
+{ \
+ set(PROPERTY_CHARFLASH,the_value,varName.bCharFlash); \
+}\
+sal_Bool SAL_CALL clazz::getCharAutoKerning()\
+{ \
+ ::osl::MutexGuard aGuard(m_aMutex); \
+ return varName.bCharAutoKerning; \
+} \
+void SAL_CALL clazz::setCharAutoKerning(sal_Bool the_value)\
+{ \
+ set(PROPERTY_CHARAUTOKERNING,the_value,varName.bCharAutoKerning); \
+}\
+::sal_Int8 SAL_CALL clazz::getCharEscapementHeight() \
+{ \
+ ::osl::MutexGuard aGuard(m_aMutex); \
+ return varName.nCharEscapementHeight; \
+} \
+void SAL_CALL clazz::setCharEscapementHeight(::sal_Int8 the_value) \
+{ \
+ set(PROPERTY_CHARESCAPEMENTHEIGHT,the_value,varName.nCharEscapementHeight); \
+}\
+lang::Locale SAL_CALL clazz::getCharLocale() \
+{ \
+ ::osl::MutexGuard aGuard(m_aMutex); \
+ return varName.aCharLocale; \
+} \
+void SAL_CALL clazz::setCharLocale(const lang::Locale & the_value) \
+{ \
+ BoundListeners l; \
+ { \
+ ::osl::MutexGuard aGuard(m_aMutex); \
+ if ( varName.aCharLocale.Language != the_value.Language \
+ || varName.aCharLocale.Country != the_value.Country \
+ || varName.aCharLocale.Variant != the_value.Variant ) \
+ { \
+ prepareSet(PROPERTY_CHARLOCALE, css::uno::Any(varName.aCharLocale), css::uno::Any(the_value), &l); \
+ varName.aCharLocale = the_value; \
+ } \
+ } \
+ l.notify(); \
+}\
+::sal_Int16 SAL_CALL clazz::getCharEscapement() \
+{ \
+ ::osl::MutexGuard aGuard(m_aMutex); \
+ return varName.nCharEscapement; \
+} \
+void SAL_CALL clazz::setCharEscapement(::sal_Int16 the_value) \
+{ \
+ set(PROPERTY_CHARESCAPEMENT,the_value,varName.nCharEscapement); \
+}\
+::sal_Int16 SAL_CALL clazz::getCharCaseMap() \
+{ \
+ ::osl::MutexGuard aGuard(m_aMutex); \
+ return varName.nCharCaseMap; \
+} \
+void SAL_CALL clazz::setCharCaseMap(::sal_Int16 the_value) \
+{ \
+ set(PROPERTY_CHARCASEMAP,the_value,varName.nCharCaseMap); \
+}\
+sal_Bool SAL_CALL clazz::getCharCombineIsOn() \
+{ \
+ ::osl::MutexGuard aGuard(m_aMutex); \
+ return varName.bCharCombineIsOn; \
+} \
+void SAL_CALL clazz::setCharCombineIsOn(sal_Bool the_value) \
+{ \
+ set(PROPERTY_CHARCOMBINEISON,the_value,varName.bCharCombineIsOn); \
+}\
+OUString SAL_CALL clazz::getCharCombinePrefix() \
+{ \
+ ::osl::MutexGuard aGuard(m_aMutex); \
+ return varName.sCharCombinePrefix; \
+} \
+void SAL_CALL clazz::setCharCombinePrefix(const OUString & the_value) \
+{ \
+ set(PROPERTY_CHARCOMBINEPREFIX,the_value,varName.sCharCombinePrefix); \
+}\
+OUString SAL_CALL clazz::getCharCombineSuffix() \
+{ \
+ ::osl::MutexGuard aGuard(m_aMutex); \
+ return varName.sCharCombineSuffix; \
+} \
+void SAL_CALL clazz::setCharCombineSuffix(const OUString & the_value) \
+{ \
+ set(PROPERTY_CHARCOMBINESUFFIX,the_value,varName.sCharCombineSuffix); \
+}\
+sal_Bool SAL_CALL clazz::getCharHidden() \
+{ \
+ ::osl::MutexGuard aGuard(m_aMutex); \
+ return varName.bCharHidden; \
+} \
+void SAL_CALL clazz::setCharHidden(sal_Bool the_value) \
+{ \
+ set(PROPERTY_CHARHIDDEN,the_value,varName.bCharHidden); \
+}\
+sal_Bool SAL_CALL clazz::getCharShadowed() \
+{ \
+ ::osl::MutexGuard aGuard(m_aMutex); \
+ return varName.bCharShadowed; \
+} \
+void SAL_CALL clazz::setCharShadowed(sal_Bool the_value) \
+{ \
+ set(PROPERTY_CHARSHADOWED,the_value,varName.bCharShadowed); \
+}\
+sal_Bool SAL_CALL clazz::getCharContoured() \
+{ \
+ ::osl::MutexGuard aGuard(m_aMutex); \
+ return varName.bCharContoured; \
+} \
+void SAL_CALL clazz::setCharContoured(sal_Bool the_value) \
+{ \
+ set(PROPERTY_CHARCONTOURED,the_value,varName.bCharContoured); \
+}\
+OUString SAL_CALL clazz::getHyperLinkURL() \
+{ \
+ ::osl::MutexGuard aGuard(m_aMutex); \
+ return varName.sHyperLinkURL; \
+} \
+void SAL_CALL clazz::setHyperLinkURL(const OUString & the_value) \
+{ \
+ set(PROPERTY_HYPERLINKURL,the_value,varName.sHyperLinkURL); \
+}\
+OUString SAL_CALL clazz::getHyperLinkTarget() \
+{ \
+ ::osl::MutexGuard aGuard(m_aMutex); \
+ return varName.sHyperLinkTarget; \
+} \
+void SAL_CALL clazz::setHyperLinkTarget(const OUString & the_value) \
+{ \
+ set(PROPERTY_HYPERLINKTARGET,the_value,varName.sHyperLinkTarget); \
+}\
+OUString SAL_CALL clazz::getHyperLinkName() \
+{ \
+ ::osl::MutexGuard aGuard(m_aMutex); \
+ return varName.sHyperLinkName; \
+} \
+void SAL_CALL clazz::setHyperLinkName(const OUString & the_value) \
+{ \
+ set(PROPERTY_HYPERLINKNAME,the_value,varName.sHyperLinkName); \
+}\
+OUString SAL_CALL clazz::getVisitedCharStyleName() \
+{ \
+ ::osl::MutexGuard aGuard(m_aMutex); \
+ return varName.sVisitedCharStyleName; \
+} \
+void SAL_CALL clazz::setVisitedCharStyleName(const OUString & the_value) \
+{ \
+ set(PROPERTY_VISITEDCHARSTYLENAME,the_value,varName.sVisitedCharStyleName); \
+}\
+OUString SAL_CALL clazz::getUnvisitedCharStyleName() \
+{ \
+ ::osl::MutexGuard aGuard(m_aMutex); \
+ return varName.sUnvisitedCharStyleName; \
+} \
+void SAL_CALL clazz::setUnvisitedCharStyleName(const OUString & the_value) \
+{ \
+ set(PROPERTY_UNVISITEDCHARSTYLENAME,the_value,varName.sUnvisitedCharStyleName); \
+}\
+::sal_Int16 SAL_CALL clazz::getCharKerning()\
+{ \
+ ::osl::MutexGuard aGuard(m_aMutex); \
+ return varName.nCharKerning; \
+}\
+void SAL_CALL clazz::setCharKerning(::sal_Int16 the_value)\
+{ \
+ set(PROPERTY_CHARKERNING,the_value,varName.nCharKerning); \
+}\
+float SAL_CALL clazz::getCharHeightAsian()\
+ { \
+ ::osl::MutexGuard aGuard(m_aMutex); \
+ return varName.aAsianFontDescriptor.Height; \
+}\
+void SAL_CALL clazz::setCharHeightAsian( float the_value )\
+{ \
+ set(PROPERTY_CHARHEIGHTASIAN,static_cast<sal_Int16>(the_value),varName.aAsianFontDescriptor.Height); \
+}\
+float SAL_CALL clazz::getCharWeightAsian()\
+ { \
+ ::osl::MutexGuard aGuard(m_aMutex); \
+ return varName.aAsianFontDescriptor.Weight; \
+}\
+void SAL_CALL clazz::setCharWeightAsian( float the_value )\
+{ \
+ set(PROPERTY_CHARWEIGHTASIAN,the_value,varName.aAsianFontDescriptor.Weight); \
+}\
+OUString SAL_CALL clazz::getCharFontNameAsian()\
+{ \
+ ::osl::MutexGuard aGuard(m_aMutex); \
+ return varName.aAsianFontDescriptor.Name; \
+}\
+void SAL_CALL clazz::setCharFontNameAsian( const OUString& the_value )\
+{ \
+ set(PROPERTY_CHARFONTNAMEASIAN,the_value,varName.aAsianFontDescriptor.Name); \
+}\
+OUString SAL_CALL clazz::getCharFontStyleNameAsian()\
+{ \
+ ::osl::MutexGuard aGuard(m_aMutex); \
+ return varName.aAsianFontDescriptor.StyleName; \
+}\
+void SAL_CALL clazz::setCharFontStyleNameAsian( const OUString& the_value )\
+{ \
+ set(PROPERTY_CHARFONTSTYLENAMEASIAN,the_value,varName.aAsianFontDescriptor.StyleName); \
+}\
+::sal_Int16 SAL_CALL clazz::getCharFontFamilyAsian()\
+{ \
+ ::osl::MutexGuard aGuard(m_aMutex); \
+ return varName.aAsianFontDescriptor.Family; \
+}\
+void SAL_CALL clazz::setCharFontFamilyAsian( ::sal_Int16 the_value )\
+{ \
+ set(PROPERTY_CHARFONTFAMILYASIAN,the_value,varName.aAsianFontDescriptor.Family); \
+}\
+::sal_Int16 SAL_CALL clazz::getCharFontCharSetAsian()\
+{ \
+ ::osl::MutexGuard aGuard(m_aMutex); \
+ return varName.aAsianFontDescriptor.CharSet; \
+}\
+void SAL_CALL clazz::setCharFontCharSetAsian( ::sal_Int16 the_value )\
+{ \
+ set(PROPERTY_CHARFONTCHARSETASIAN,the_value,varName.aAsianFontDescriptor.CharSet); \
+}\
+::sal_Int16 SAL_CALL clazz::getCharFontPitchAsian()\
+{ \
+ ::osl::MutexGuard aGuard(m_aMutex); \
+ return varName.aAsianFontDescriptor.Pitch; \
+}\
+void SAL_CALL clazz::setCharFontPitchAsian( ::sal_Int16 the_value )\
+{ \
+ set(PROPERTY_CHARFONTPITCHASIAN,the_value,varName.aAsianFontDescriptor.Pitch); \
+}\
+css::awt::FontSlant SAL_CALL clazz::getCharPostureAsian()\
+{ \
+ ::osl::MutexGuard aGuard(m_aMutex); \
+ return varName.aAsianFontDescriptor.Slant; \
+}\
+void SAL_CALL clazz::setCharPostureAsian( css::awt::FontSlant the_value )\
+{ \
+ set(PROPERTY_CHARPOSTUREASIAN,the_value,varName.aAsianFontDescriptor.Slant); \
+}\
+css::lang::Locale SAL_CALL clazz::getCharLocaleAsian()\
+{ \
+ ::osl::MutexGuard aGuard(m_aMutex); \
+ return varName.aCharLocaleAsian; \
+}\
+void SAL_CALL clazz::setCharLocaleAsian( const css::lang::Locale& the_value )\
+{ \
+ BoundListeners l; \
+ { \
+ ::osl::MutexGuard aGuard(m_aMutex); \
+ if ( varName.aCharLocaleAsian.Language != the_value.Language \
+ || varName.aCharLocaleAsian.Country != the_value.Country \
+ || varName.aCharLocaleAsian.Variant != the_value.Variant ) \
+ { \
+ prepareSet(PROPERTY_CHARLOCALEASIAN, css::uno::Any(varName.aCharLocaleAsian), css::uno::Any(the_value), &l); \
+ varName.aCharLocaleAsian = the_value; \
+ } \
+ } \
+ l.notify(); \
+}\
+float SAL_CALL clazz::getCharHeightComplex()\
+{ \
+ ::osl::MutexGuard aGuard(m_aMutex); \
+ return varName.aComplexFontDescriptor.Height; \
+}\
+void SAL_CALL clazz::setCharHeightComplex( float the_value )\
+{ \
+ set(PROPERTY_CHARHEIGHTCOMPLEX,static_cast<sal_Int16>(the_value),varName.aComplexFontDescriptor.Height); \
+}\
+float SAL_CALL clazz::getCharWeightComplex()\
+{ \
+ ::osl::MutexGuard aGuard(m_aMutex); \
+ return varName.aComplexFontDescriptor.Weight; \
+}\
+void SAL_CALL clazz::setCharWeightComplex( float the_value )\
+{ \
+ set(PROPERTY_CHARWEIGHTCOMPLEX,the_value,varName.aComplexFontDescriptor.Weight); \
+}\
+OUString SAL_CALL clazz::getCharFontNameComplex()\
+{ \
+ ::osl::MutexGuard aGuard(m_aMutex); \
+ return varName.aComplexFontDescriptor.Name; \
+}\
+void SAL_CALL clazz::setCharFontNameComplex( const OUString& the_value )\
+{ \
+ set(PROPERTY_CHARFONTNAMECOMPLEX,the_value,varName.aComplexFontDescriptor.Name); \
+}\
+OUString SAL_CALL clazz::getCharFontStyleNameComplex()\
+{ \
+ ::osl::MutexGuard aGuard(m_aMutex); \
+ return varName.aComplexFontDescriptor.StyleName; \
+}\
+void SAL_CALL clazz::setCharFontStyleNameComplex( const OUString& the_value )\
+{ \
+ set(PROPERTY_CHARFONTSTYLENAMECOMPLEX,the_value,varName.aComplexFontDescriptor.StyleName); \
+}\
+::sal_Int16 SAL_CALL clazz::getCharFontFamilyComplex()\
+{ \
+ ::osl::MutexGuard aGuard(m_aMutex); \
+ return varName.aComplexFontDescriptor.Family; \
+}\
+void SAL_CALL clazz::setCharFontFamilyComplex( ::sal_Int16 the_value )\
+{ \
+ set(PROPERTY_CHARFONTFAMILYCOMPLEX,the_value,varName.aComplexFontDescriptor.Family); \
+}\
+::sal_Int16 SAL_CALL clazz::getCharFontCharSetComplex()\
+{ \
+ ::osl::MutexGuard aGuard(m_aMutex); \
+ return varName.aComplexFontDescriptor.CharSet; \
+}\
+void SAL_CALL clazz::setCharFontCharSetComplex( ::sal_Int16 the_value )\
+{ \
+ set(PROPERTY_CHARFONTCHARSETCOMPLEX,the_value,varName.aComplexFontDescriptor.CharSet); \
+}\
+::sal_Int16 SAL_CALL clazz::getCharFontPitchComplex()\
+{ \
+ ::osl::MutexGuard aGuard(m_aMutex); \
+ return varName.aComplexFontDescriptor.Pitch; \
+}\
+void SAL_CALL clazz::setCharFontPitchComplex( ::sal_Int16 the_value )\
+{ \
+ set(PROPERTY_CHARFONTPITCHCOMPLEX,the_value,varName.aComplexFontDescriptor.Pitch); \
+}\
+css::awt::FontSlant SAL_CALL clazz::getCharPostureComplex()\
+{ \
+ ::osl::MutexGuard aGuard(m_aMutex); \
+ return varName.aComplexFontDescriptor.Slant; \
+}\
+void SAL_CALL clazz::setCharPostureComplex( css::awt::FontSlant the_value )\
+{ \
+ set(PROPERTY_CHARPOSTURECOMPLEX,the_value,varName.aComplexFontDescriptor.Slant); \
+}\
+css::lang::Locale SAL_CALL clazz::getCharLocaleComplex()\
+{ \
+ ::osl::MutexGuard aGuard(m_aMutex); \
+ return varName.aCharLocaleComplex; \
+}\
+void SAL_CALL clazz::setCharLocaleComplex( const css::lang::Locale& the_value )\
+{ \
+ BoundListeners l; \
+ { \
+ ::osl::MutexGuard aGuard(m_aMutex); \
+ if ( varName.aCharLocaleComplex.Language != the_value.Language \
+ || varName.aCharLocaleComplex.Country != the_value.Country \
+ || varName.aCharLocaleComplex.Variant != the_value.Variant ) \
+ { \
+ prepareSet(PROPERTY_CHARLOCALECOMPLEX, css::uno::Any(varName.aCharLocaleComplex), css::uno::Any(the_value), &l); \
+ varName.aCharLocaleComplex = the_value; \
+ } \
+ } \
+ l.notify(); \
+}\
+
+
+#define NO_REPORTCONTROLFORMAT_IMPL(clazz) \
+sal_Int16 SAL_CALL clazz::getParaAdjust()\
+{\
+ throw beans::UnknownPropertyException();\
+}\
+void SAL_CALL clazz::setParaAdjust(sal_Int16 /*the_value*/)\
+{\
+ throw beans::UnknownPropertyException();\
+}\
+::sal_Int16 SAL_CALL clazz::getCharStrikeout()\
+{\
+ throw beans::UnknownPropertyException();\
+}\
+void SAL_CALL clazz::setCharStrikeout(::sal_Int16 /*the_value*/)\
+{\
+ throw beans::UnknownPropertyException();\
+}\
+sal_Bool SAL_CALL clazz::getCharWordMode()\
+{\
+ throw beans::UnknownPropertyException();\
+}\
+void SAL_CALL clazz::setCharWordMode(sal_Bool /*the_value*/)\
+{\
+ throw beans::UnknownPropertyException();\
+}\
+::sal_Int16 SAL_CALL clazz::getCharRotation()\
+{\
+ throw beans::UnknownPropertyException();\
+}\
+void SAL_CALL clazz::setCharRotation(::sal_Int16 /*the_value*/)\
+{\
+ throw beans::UnknownPropertyException();\
+}\
+::sal_Int16 SAL_CALL clazz::getCharScaleWidth()\
+{\
+ throw beans::UnknownPropertyException();\
+}\
+void SAL_CALL clazz::setCharScaleWidth(::sal_Int16 /*the_value*/)\
+{\
+ throw beans::UnknownPropertyException();\
+}\
+sal_Bool SAL_CALL clazz::getCharFlash()\
+{ \
+ throw beans::UnknownPropertyException();\
+} \
+void SAL_CALL clazz::setCharFlash(sal_Bool /*the_value*/)\
+{ \
+ throw beans::UnknownPropertyException();\
+}\
+sal_Bool SAL_CALL clazz::getCharAutoKerning()\
+{ \
+ throw beans::UnknownPropertyException();\
+} \
+void SAL_CALL clazz::setCharAutoKerning(sal_Bool /*the_value*/)\
+{ \
+ throw beans::UnknownPropertyException();\
+}\
+::sal_Int8 SAL_CALL clazz::getCharEscapementHeight() \
+{ \
+ throw beans::UnknownPropertyException();\
+} \
+void SAL_CALL clazz::setCharEscapementHeight(::sal_Int8 /*the_value*/) \
+{ \
+ throw beans::UnknownPropertyException();\
+}\
+lang::Locale SAL_CALL clazz::getCharLocale() \
+{ \
+ throw beans::UnknownPropertyException();\
+} \
+void SAL_CALL clazz::setCharLocale(const lang::Locale & /*the_value*/) \
+{ \
+ throw beans::UnknownPropertyException();\
+}\
+::sal_Int16 SAL_CALL clazz::getCharEscapement() \
+{ \
+ throw beans::UnknownPropertyException();\
+} \
+void SAL_CALL clazz::setCharEscapement(::sal_Int16 /*the_value*/) \
+{ \
+ throw beans::UnknownPropertyException();\
+}\
+::sal_Int16 SAL_CALL clazz::getCharCaseMap() \
+{ \
+ throw beans::UnknownPropertyException();\
+} \
+void SAL_CALL clazz::setCharCaseMap(::sal_Int16 /*the_value*/) \
+{ \
+ throw beans::UnknownPropertyException();\
+}\
+sal_Bool SAL_CALL clazz::getCharCombineIsOn() \
+{ \
+ throw beans::UnknownPropertyException();\
+} \
+void SAL_CALL clazz::setCharCombineIsOn(sal_Bool /*the_value*/) \
+{ \
+ throw beans::UnknownPropertyException();\
+}\
+OUString SAL_CALL clazz::getCharCombinePrefix() \
+{ \
+ throw beans::UnknownPropertyException();\
+} \
+void SAL_CALL clazz::setCharCombinePrefix(const OUString & /*the_value*/) \
+{ \
+ throw beans::UnknownPropertyException();\
+}\
+OUString SAL_CALL clazz::getCharCombineSuffix() \
+{ \
+ throw beans::UnknownPropertyException();\
+} \
+void SAL_CALL clazz::setCharCombineSuffix(const OUString & /*the_value*/) \
+{ \
+ throw beans::UnknownPropertyException();\
+}\
+sal_Bool SAL_CALL clazz::getCharHidden() \
+{ \
+ throw beans::UnknownPropertyException();\
+} \
+void SAL_CALL clazz::setCharHidden(sal_Bool /*the_value*/) \
+{ \
+ throw beans::UnknownPropertyException();\
+}\
+sal_Bool SAL_CALL clazz::getCharShadowed() \
+{ \
+ throw beans::UnknownPropertyException();\
+} \
+void SAL_CALL clazz::setCharShadowed(sal_Bool /*the_value*/) \
+{ \
+ throw beans::UnknownPropertyException();\
+}\
+sal_Bool SAL_CALL clazz::getCharContoured() \
+{ \
+ throw beans::UnknownPropertyException();\
+} \
+void SAL_CALL clazz::setCharContoured(sal_Bool /*the_value*/) \
+{ \
+ throw beans::UnknownPropertyException();\
+}\
+OUString SAL_CALL clazz::getVisitedCharStyleName() \
+{ \
+ throw beans::UnknownPropertyException();\
+} \
+void SAL_CALL clazz::setVisitedCharStyleName(const OUString & /*the_value*/) \
+{ \
+ throw beans::UnknownPropertyException();\
+}\
+OUString SAL_CALL clazz::getUnvisitedCharStyleName() \
+{ \
+ throw beans::UnknownPropertyException();\
+} \
+void SAL_CALL clazz::setUnvisitedCharStyleName(const OUString & /*the_value*/) \
+{ \
+ throw beans::UnknownPropertyException();\
+}\
+::sal_Int16 SAL_CALL clazz::getCharKerning()\
+{ \
+ throw beans::UnknownPropertyException();\
+}\
+void SAL_CALL clazz::setCharKerning(::sal_Int16 /*the_value*/)\
+{ \
+ throw beans::UnknownPropertyException();\
+}\
+\
+awt::FontDescriptor SAL_CALL clazz::getFontDescriptor()\
+{\
+ throw beans::UnknownPropertyException();\
+}\
+\
+void SAL_CALL clazz::setFontDescriptor( const awt::FontDescriptor& /*_fontdescriptor*/ )\
+{\
+ throw beans::UnknownPropertyException();\
+}\
+awt::FontDescriptor SAL_CALL clazz::getFontDescriptorAsian()\
+{\
+ throw beans::UnknownPropertyException();\
+}\
+\
+void SAL_CALL clazz::setFontDescriptorAsian( const awt::FontDescriptor& /*_fontdescriptor*/ )\
+{\
+ throw beans::UnknownPropertyException();\
+}\
+awt::FontDescriptor SAL_CALL clazz::getFontDescriptorComplex()\
+{\
+throw beans::UnknownPropertyException();\
+}\
+\
+void SAL_CALL clazz::setFontDescriptorComplex( const awt::FontDescriptor& /*_fontdescriptor*/ )\
+{\
+throw beans::UnknownPropertyException();\
+}\
+\
+::sal_Int16 SAL_CALL clazz::getControlTextEmphasis()\
+{\
+ throw beans::UnknownPropertyException();\
+}\
+\
+void SAL_CALL clazz::setControlTextEmphasis( ::sal_Int16 /*_fontemphasismark*/ )\
+{\
+ throw beans::UnknownPropertyException();\
+}\
+\
+::sal_Int16 SAL_CALL clazz::getCharRelief()\
+{\
+ throw beans::UnknownPropertyException();\
+}\
+\
+void SAL_CALL clazz::setCharRelief( ::sal_Int16 /*_fontrelief*/ )\
+{\
+ throw beans::UnknownPropertyException();\
+}\
+\
+::sal_Int32 SAL_CALL clazz::getCharColor()\
+{\
+ throw beans::UnknownPropertyException();\
+}\
+\
+void SAL_CALL clazz::setCharColor( ::sal_Int32 /*_textcolor*/ )\
+{\
+ throw beans::UnknownPropertyException();\
+}\
+\
+::sal_Int32 SAL_CALL clazz::getCharUnderlineColor()\
+{\
+ throw beans::UnknownPropertyException();\
+}\
+\
+void SAL_CALL clazz::setCharUnderlineColor( ::sal_Int32 /*_textlinecolor*/ )\
+{\
+ throw beans::UnknownPropertyException();\
+}\
+\
+style::VerticalAlignment SAL_CALL clazz::getVerticalAlign()\
+{\
+ ::osl::MutexGuard aGuard(m_aMutex);\
+ return m_aProps.aFormatProperties.aVerticalAlignment;\
+}\
+\
+void SAL_CALL clazz::setVerticalAlign( style::VerticalAlignment _verticalalign )\
+{\
+ set(PROPERTY_VERTICALALIGN,_verticalalign,m_aProps.aFormatProperties.aVerticalAlignment);\
+}\
+\
+::sal_Int16 SAL_CALL clazz::getCharEmphasis()\
+{\
+ throw beans::UnknownPropertyException();\
+}\
+\
+void SAL_CALL clazz::setCharEmphasis( ::sal_Int16 /*_charemphasis*/ )\
+{\
+ throw beans::UnknownPropertyException();\
+}\
+\
+OUString SAL_CALL clazz::getCharFontName()\
+{\
+ throw beans::UnknownPropertyException();\
+}\
+\
+void SAL_CALL clazz::setCharFontName( const OUString& /*_charfontname*/ )\
+{\
+ throw beans::UnknownPropertyException();\
+}\
+\
+OUString SAL_CALL clazz::getCharFontStyleName()\
+{\
+ throw beans::UnknownPropertyException();\
+}\
+\
+void SAL_CALL clazz::setCharFontStyleName( const OUString& /*_charfontstylename*/ )\
+{\
+ throw beans::UnknownPropertyException();\
+}\
+\
+::sal_Int16 SAL_CALL clazz::getCharFontFamily()\
+{\
+ throw beans::UnknownPropertyException();\
+}\
+\
+void SAL_CALL clazz::setCharFontFamily( ::sal_Int16 /*_charfontfamily*/ )\
+{\
+ throw beans::UnknownPropertyException();\
+}\
+\
+::sal_Int16 SAL_CALL clazz::getCharFontCharSet()\
+{\
+ throw beans::UnknownPropertyException();\
+}\
+\
+void SAL_CALL clazz::setCharFontCharSet( ::sal_Int16 /*_charfontcharset*/ )\
+{\
+ throw beans::UnknownPropertyException();\
+}\
+\
+::sal_Int16 SAL_CALL clazz::getCharFontPitch()\
+{\
+ throw beans::UnknownPropertyException();\
+}\
+\
+void SAL_CALL clazz::setCharFontPitch( ::sal_Int16 /*_charfontpitch*/ )\
+{\
+ throw beans::UnknownPropertyException();\
+}\
+\
+float SAL_CALL clazz::getCharHeight()\
+{\
+ throw beans::UnknownPropertyException();\
+}\
+\
+void SAL_CALL clazz::setCharHeight( float /*_charheight*/ )\
+{\
+ throw beans::UnknownPropertyException();\
+}\
+\
+::sal_Int16 SAL_CALL clazz::getCharUnderline()\
+{\
+ throw beans::UnknownPropertyException();\
+}\
+\
+void SAL_CALL clazz::setCharUnderline( ::sal_Int16 /*_charunderline*/ )\
+{\
+ throw beans::UnknownPropertyException();\
+}\
+\
+float SAL_CALL clazz::getCharWeight()\
+{\
+ throw beans::UnknownPropertyException();\
+}\
+\
+void SAL_CALL clazz::setCharWeight( float /*_charweight*/ )\
+{\
+ throw beans::UnknownPropertyException();\
+}\
+\
+awt::FontSlant SAL_CALL clazz::getCharPosture()\
+{\
+ throw beans::UnknownPropertyException();\
+}\
+\
+void SAL_CALL clazz::setCharPosture( awt::FontSlant /*_charposture*/ )\
+{\
+ throw beans::UnknownPropertyException();\
+}\
+ float SAL_CALL clazz::getCharHeightAsian()\
+ {\
+ throw beans::UnknownPropertyException();\
+}\
+ void SAL_CALL clazz::setCharHeightAsian( float )\
+ {\
+ throw beans::UnknownPropertyException();\
+}\
+ float SAL_CALL clazz::getCharWeightAsian()\
+ {\
+ throw beans::UnknownPropertyException();\
+}\
+ void SAL_CALL clazz::setCharWeightAsian( float )\
+ {\
+ throw beans::UnknownPropertyException();\
+}\
+ OUString SAL_CALL clazz::getCharFontNameAsian()\
+ {\
+ throw beans::UnknownPropertyException();\
+}\
+ void SAL_CALL clazz::setCharFontNameAsian( const OUString& )\
+ {\
+ throw beans::UnknownPropertyException();\
+}\
+ OUString SAL_CALL clazz::getCharFontStyleNameAsian()\
+ {\
+ throw beans::UnknownPropertyException();\
+}\
+ void SAL_CALL clazz::setCharFontStyleNameAsian( const OUString& )\
+ {\
+ throw beans::UnknownPropertyException();\
+}\
+ ::sal_Int16 SAL_CALL clazz::getCharFontFamilyAsian()\
+ {\
+ throw beans::UnknownPropertyException();\
+}\
+ void SAL_CALL clazz::setCharFontFamilyAsian( ::sal_Int16 )\
+ {\
+ throw beans::UnknownPropertyException();\
+}\
+ ::sal_Int16 SAL_CALL clazz::getCharFontCharSetAsian()\
+ {\
+ throw beans::UnknownPropertyException();\
+}\
+ void SAL_CALL clazz::setCharFontCharSetAsian( ::sal_Int16 )\
+ {\
+ throw beans::UnknownPropertyException();\
+}\
+ ::sal_Int16 SAL_CALL clazz::getCharFontPitchAsian()\
+ {\
+ throw beans::UnknownPropertyException();\
+}\
+ void SAL_CALL clazz::setCharFontPitchAsian( ::sal_Int16 )\
+ {\
+ throw beans::UnknownPropertyException();\
+}\
+ css::awt::FontSlant SAL_CALL clazz::getCharPostureAsian()\
+ {\
+ throw beans::UnknownPropertyException();\
+}\
+ void SAL_CALL clazz::setCharPostureAsian( css::awt::FontSlant )\
+ {\
+ throw beans::UnknownPropertyException();\
+}\
+ css::lang::Locale SAL_CALL clazz::getCharLocaleAsian()\
+ {\
+ throw beans::UnknownPropertyException();\
+}\
+ void SAL_CALL clazz::setCharLocaleAsian( const css::lang::Locale& )\
+ {\
+ throw beans::UnknownPropertyException();\
+}\
+ float SAL_CALL clazz::getCharHeightComplex()\
+ {\
+ throw beans::UnknownPropertyException();\
+}\
+ void SAL_CALL clazz::setCharHeightComplex( float )\
+ {\
+ throw beans::UnknownPropertyException();\
+}\
+ float SAL_CALL clazz::getCharWeightComplex()\
+ {\
+ throw beans::UnknownPropertyException();\
+}\
+ void SAL_CALL clazz::setCharWeightComplex( float )\
+ {\
+ throw beans::UnknownPropertyException();\
+}\
+ OUString SAL_CALL clazz::getCharFontNameComplex()\
+ {\
+ throw beans::UnknownPropertyException();\
+}\
+ void SAL_CALL clazz::setCharFontNameComplex( const OUString& )\
+ {\
+ throw beans::UnknownPropertyException();\
+}\
+ OUString SAL_CALL clazz::getCharFontStyleNameComplex()\
+ {\
+ throw beans::UnknownPropertyException();\
+}\
+ void SAL_CALL clazz::setCharFontStyleNameComplex( const OUString& )\
+ {\
+ throw beans::UnknownPropertyException();\
+}\
+ ::sal_Int16 SAL_CALL clazz::getCharFontFamilyComplex()\
+ {\
+ throw beans::UnknownPropertyException();\
+}\
+ void SAL_CALL clazz::setCharFontFamilyComplex( ::sal_Int16 )\
+ {\
+ throw beans::UnknownPropertyException();\
+}\
+ ::sal_Int16 SAL_CALL clazz::getCharFontCharSetComplex()\
+ {\
+ throw beans::UnknownPropertyException();\
+}\
+ void SAL_CALL clazz::setCharFontCharSetComplex( ::sal_Int16 )\
+ {\
+ throw beans::UnknownPropertyException();\
+}\
+ ::sal_Int16 SAL_CALL clazz::getCharFontPitchComplex()\
+ {\
+ throw beans::UnknownPropertyException();\
+}\
+ void SAL_CALL clazz::setCharFontPitchComplex( ::sal_Int16 )\
+ {\
+ throw beans::UnknownPropertyException();\
+}\
+ css::awt::FontSlant SAL_CALL clazz::getCharPostureComplex()\
+ {\
+ throw beans::UnknownPropertyException();\
+}\
+ void SAL_CALL clazz::setCharPostureComplex( css::awt::FontSlant )\
+ {\
+ throw beans::UnknownPropertyException();\
+}\
+ css::lang::Locale SAL_CALL clazz::getCharLocaleComplex()\
+ {\
+ throw beans::UnknownPropertyException();\
+}\
+ void SAL_CALL clazz::setCharLocaleComplex( const css::lang::Locale& )\
+ {\
+ throw beans::UnknownPropertyException();\
+}
+
+
+// css::report::XReportControlFormat:
+#define REPORTCONTROLFORMAT_IMPL(clazz,varName) \
+ REPORTCONTROLFORMAT_IMPL1(clazz,varName) \
+ REPORTCONTROLFORMAT_IMPL2(clazz,varName)
+
+
+#endif // INCLUDED_REPORTDESIGN_SOURCE_CORE_INC_REPORTHELPERIMPL_HXX
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/reportdesign/source/core/inc/ReportUndoFactory.hxx b/reportdesign/source/core/inc/ReportUndoFactory.hxx
new file mode 100644
index 000000000..c5721c0bc
--- /dev/null
+++ b/reportdesign/source/core/inc/ReportUndoFactory.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 .
+ */
+#ifndef INCLUDED_REPORTDESIGN_SOURCE_CORE_INC_REPORTUNDOFACTORY_HXX
+#define INCLUDED_REPORTDESIGN_SOURCE_CORE_INC_REPORTUNDOFACTORY_HXX
+
+#include <svx/svdundo.hxx>
+#include <memory>
+
+namespace rptui
+{
+ class OReportUndoFactory : public SdrUndoFactory
+ {
+ ::std::unique_ptr<SdrUndoFactory> m_pUndoFactory;
+
+ OReportUndoFactory(const OReportUndoFactory&) = delete;
+ OReportUndoFactory& operator=(const OReportUndoFactory&) = delete;
+ public:
+ OReportUndoFactory();
+ virtual ~OReportUndoFactory() override;
+
+ // shapes
+ virtual std::unique_ptr<SdrUndoAction> CreateUndoMoveObject( SdrObject& rObject, const Size& rDist ) override;
+ virtual std::unique_ptr<SdrUndoAction> CreateUndoGeoObject( SdrObject& rObject ) override;
+ virtual std::unique_ptr<SdrUndoAction> CreateUndoAttrObject( SdrObject& rObject, bool bStyleSheet1 = false, bool bSaveText = false ) override;
+ virtual std::unique_ptr<SdrUndoAction> CreateUndoRemoveObject(SdrObject& rObject) override;
+ virtual std::unique_ptr<SdrUndoAction> CreateUndoInsertObject( SdrObject& rObject, bool bOrdNumDirect = false) override;
+ virtual std::unique_ptr<SdrUndoAction> CreateUndoDeleteObject( SdrObject& rObject, bool bOrdNumDirect = false) override;
+ virtual std::unique_ptr<SdrUndoAction> CreateUndoNewObject( SdrObject& rObject, bool bOrdNumDirect = false) override;
+ virtual std::unique_ptr<SdrUndoAction> CreateUndoCopyObject( SdrObject& rObject, bool bOrdNumDirect = false) override;
+
+ virtual std::unique_ptr<SdrUndoAction> CreateUndoObjectOrdNum( SdrObject& rObject, sal_uInt32 nOldOrdNum1, sal_uInt32 nNewOrdNum1) override;
+
+ virtual std::unique_ptr<SdrUndoAction> CreateUndoReplaceObject( SdrObject& rOldObject, SdrObject& rNewObject ) override;
+ virtual std::unique_ptr<SdrUndoAction> CreateUndoObjectLayerChange( SdrObject& rObject, SdrLayerID aOldLayer, SdrLayerID aNewLayer ) override;
+ virtual std::unique_ptr<SdrUndoAction> CreateUndoObjectSetText( SdrObject& rNewObj, sal_Int32 nText ) override;
+
+ // layer
+ virtual std::unique_ptr<SdrUndoAction> CreateUndoNewLayer(sal_uInt16 nLayerNum, SdrLayerAdmin& rNewLayerAdmin, SdrModel& rNewModel) override;
+ virtual std::unique_ptr<SdrUndoAction> CreateUndoDeleteLayer(sal_uInt16 nLayerNum, SdrLayerAdmin& rNewLayerAdmin, SdrModel& rNewModel) override;
+
+ // page
+ virtual std::unique_ptr<SdrUndoAction> CreateUndoDeletePage(SdrPage& rPage) override;
+ virtual std::unique_ptr<SdrUndoAction> CreateUndoNewPage(SdrPage& rPage) override;
+ virtual std::unique_ptr<SdrUndoAction> CreateUndoCopyPage(SdrPage& rPage) override;
+ virtual std::unique_ptr<SdrUndoAction> CreateUndoSetPageNum(SdrPage& rNewPg, sal_uInt16 nOldPageNum1, sal_uInt16 nNewPageNum1) override;
+
+ // master page
+ virtual std::unique_ptr<SdrUndoAction> CreateUndoPageRemoveMasterPage(SdrPage& rChangedPage) override;
+ virtual std::unique_ptr<SdrUndoAction> CreateUndoPageChangeMasterPage(SdrPage& rChangedPage) override;
+
+ };
+
+} // rptui
+
+
+#endif // INCLUDED_REPORTDESIGN_SOURCE_CORE_INC_REPORTUNDOFACTORY_HXX
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/reportdesign/source/core/inc/RptObjectListener.hxx b/reportdesign/source/core/inc/RptObjectListener.hxx
new file mode 100644
index 000000000..d27a4bf33
--- /dev/null
+++ b/reportdesign/source/core/inc/RptObjectListener.hxx
@@ -0,0 +1,50 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ *
+ * This file incorporates work covered by the following license notice:
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed
+ * with this work for additional information regarding copyright
+ * ownership. The ASF licenses this file to you under the Apache
+ * License, Version 2.0 (the "License"); you may not use this file
+ * except in compliance with the License. You may obtain a copy of
+ * the License at http://www.apache.org/licenses/LICENSE-2.0 .
+ */
+
+#ifndef INCLUDED_REPORTDESIGN_SOURCE_CORE_INC_RPTOBJECTLISTENER_HXX
+#define INCLUDED_REPORTDESIGN_SOURCE_CORE_INC_RPTOBJECTLISTENER_HXX
+
+#include <cppuhelper/implbase.hxx>
+#include <com/sun/star/beans/XPropertyChangeListener.hpp>
+
+namespace rptui
+{
+class OObjectBase;
+
+class OObjectListener: public ::cppu::WeakImplHelper< css::beans::XPropertyChangeListener >
+{
+private:
+ OObjectBase* m_pObject;
+ OObjectListener(const OObjectListener&) = delete;
+ void operator =(const OObjectListener&) = delete;
+protected:
+ virtual ~OObjectListener() override;
+public:
+ OObjectListener(OObjectBase* _pObject);
+
+ // XEventListener
+ virtual void SAL_CALL disposing( const css::lang::EventObject& Source ) override;
+
+ // XPropertyChangeListener
+ virtual void SAL_CALL propertyChange( const css::beans::PropertyChangeEvent& evt ) override;
+};
+}
+#endif // INCLUDED_REPORTDESIGN_SOURCE_CORE_INC_RPTOBJECTLISTENER_HXX
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/reportdesign/source/core/inc/Section.hxx b/reportdesign/source/core/inc/Section.hxx
new file mode 100644
index 000000000..5417af2a9
--- /dev/null
+++ b/reportdesign/source/core/inc/Section.hxx
@@ -0,0 +1,232 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.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_REPORTDESIGN_SOURCE_CORE_INC_SECTION_HXX
+#define INCLUDED_REPORTDESIGN_SOURCE_CORE_INC_SECTION_HXX
+
+#include <com/sun/star/report/XSection.hpp>
+#include <cppuhelper/compbase.hxx>
+#include <comphelper/broadcasthelper.hxx>
+#include <comphelper/uno3.hxx>
+#include <cppuhelper/propertysetmixin.hxx>
+#include <comphelper/interfacecontainer3.hxx>
+#include <com/sun/star/uno/XComponentContext.hpp>
+#include <com/sun/star/drawing/XDrawPage.hpp>
+#include <com/sun/star/drawing/XShapeGrouper.hpp>
+#include <com/sun/star/drawing/XShapes.hpp>
+#include <com/sun/star/form/XFormsSupplier2.hpp>
+#include <com/sun/star/lang/XUnoTunnel.hpp>
+#include <com/sun/star/lang/XServiceInfo.hpp>
+
+namespace reportdesign
+{
+ typedef ::cppu::WeakComponentImplHelper
+ < css::report::XSection
+ , css::lang::XServiceInfo
+ , css::lang::XUnoTunnel
+ // SvxDrawPage forward
+ , css::drawing::XDrawPage
+ , css::drawing::XShapeGrouper
+ // SvxFmDrawPage forward
+ , css::form::XFormsSupplier2
+ > SectionBase;
+ typedef ::cppu::PropertySetMixin<css::report::XSection> SectionPropertySet;
+
+ class OSection : public comphelper::OMutexAndBroadcastHelper,
+ public SectionBase,
+ public SectionPropertySet
+ {
+ ::comphelper::OInterfaceContainerHelper3<css::container::XContainerListener> m_aContainerListeners;
+ css::uno::Reference< css::drawing::XDrawPage > m_xDrawPage;
+ css::uno::Reference< css::drawing::XShapeGrouper > m_xDrawPage_ShapeGrouper;
+ css::uno::Reference< css::form::XFormsSupplier2 > m_xDrawPage_FormSupplier;
+ css::uno::Reference< css::lang::XUnoTunnel > m_xDrawPage_Tunnel;
+ css::uno::WeakReference< css::report::XGroup > m_xGroup;
+ css::uno::WeakReference< css::report::XReportDefinition > m_xReportDefinition;
+ OUString m_sName;
+ OUString m_sConditionalPrintExpression;
+ ::sal_uInt32 m_nHeight;
+ ::sal_Int32 m_nBackgroundColor;
+ ::sal_Int16 m_nForceNewPage;
+ ::sal_Int16 m_nNewRowOrCol;
+ bool m_bKeepTogether;
+ bool m_bRepeatSection;
+ bool m_bVisible;
+ bool m_bBacktransparent;
+ bool m_bInRemoveNotify;
+ bool m_bInInsertNotify;
+
+ private:
+ OSection(const OSection&) = delete;
+ OSection& operator=(const OSection&) = delete;
+
+ template <typename T> void set( const OUString& _sProperty
+ ,const T& Value
+ ,T& _member)
+ {
+ BoundListeners l;
+ {
+ ::osl::MutexGuard aGuard(m_aMutex);
+ if ( _member != Value )
+ {
+ prepareSet(_sProperty, css::uno::Any(_member), css::uno::Any(Value), &l);
+ _member = Value;
+ }
+ }
+ l.notify();
+ }
+ void set( const OUString& _sProperty
+ ,bool Value
+ ,bool& _member)
+ {
+ BoundListeners l;
+ {
+ ::osl::MutexGuard aGuard(m_aMutex);
+ if ( _member != Value )
+ {
+ prepareSet(_sProperty, css::uno::Any(_member), css::uno::Any(Value), &l);
+ _member = Value;
+ }
+ }
+ l.notify();
+ }
+
+ /** checks if this section is either the page header or footer and if so it throws an UnknownPropertyException
+ *
+ */
+ void checkNotPageHeaderFooter();
+
+ void init();
+ protected:
+ // TODO: VirtualFunctionFinder: This is virtual function!
+
+ virtual ~OSection() override;
+
+ /** this function is called upon disposing the component
+ */
+ // TODO: VirtualFunctionFinder: This is virtual function!
+
+ virtual void SAL_CALL disposing() override;
+ private:
+ OSection(const css::uno::Reference< css::report::XReportDefinition >& xParentDef
+ ,const css::uno::Reference< css::report::XGroup >& xParentGroup
+ ,const css::uno::Reference< css::uno::XComponentContext >& context,
+ css::uno::Sequence< OUString> const&);
+ public:
+ static css::uno::Reference< css::report::XSection>
+ createOSection(const css::uno::Reference< css::report::XReportDefinition >& _xParent
+ ,const css::uno::Reference< css::uno::XComponentContext >& context,bool _bPageSection=false);
+ static css::uno::Reference< css::report::XSection>
+ createOSection(const css::uno::Reference< css::report::XGroup >& _xParent
+ ,const css::uno::Reference< css::uno::XComponentContext >& context);
+
+ DECLARE_XINTERFACE( )
+
+ // css::lang::XServiceInfo
+ virtual sal_Bool SAL_CALL supportsService( const OUString& ServiceName ) override;
+ virtual OUString SAL_CALL getImplementationName( ) override;
+ virtual css::uno::Sequence< OUString > SAL_CALL getSupportedServiceNames( ) override;
+
+ /// @throws css::uno::RuntimeException
+ static css::uno::Sequence< OUString > getSupportedServiceNames_Static();
+ // 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;
+
+ // XSection
+ virtual sal_Bool SAL_CALL getVisible() override;
+ virtual void SAL_CALL setVisible( sal_Bool _visible ) override;
+ virtual OUString SAL_CALL getName() override;
+ virtual void SAL_CALL setName( const OUString& _name ) override;
+ virtual ::sal_uInt32 SAL_CALL getHeight() override;
+ virtual void SAL_CALL setHeight( ::sal_uInt32 _height ) override;
+ virtual ::sal_Int32 SAL_CALL getBackColor() override;
+ virtual void SAL_CALL setBackColor( ::sal_Int32 _backgroundcolor ) override;
+ virtual sal_Bool SAL_CALL getBackTransparent() override;
+ virtual void SAL_CALL setBackTransparent( sal_Bool _backtransparent ) override;
+ virtual OUString SAL_CALL getConditionalPrintExpression() override;
+ virtual void SAL_CALL setConditionalPrintExpression( const OUString& _conditionalprintexpression ) override;
+ virtual ::sal_Int16 SAL_CALL getForceNewPage() override;
+ virtual void SAL_CALL setForceNewPage( ::sal_Int16 _forcenewpage ) override;
+ virtual ::sal_Int16 SAL_CALL getNewRowOrCol() override;
+ virtual void SAL_CALL setNewRowOrCol( ::sal_Int16 _newroworcol ) override;
+ virtual sal_Bool SAL_CALL getKeepTogether() override;
+ virtual void SAL_CALL setKeepTogether( sal_Bool _keeptogether ) override;
+ virtual sal_Bool SAL_CALL getCanGrow() override;
+ virtual void SAL_CALL setCanGrow( sal_Bool _cangrow ) override;
+ virtual sal_Bool SAL_CALL getCanShrink() override;
+ virtual void SAL_CALL setCanShrink( sal_Bool _canshrink ) override;
+ virtual sal_Bool SAL_CALL getRepeatSection() override;
+ virtual void SAL_CALL setRepeatSection( sal_Bool _repeatsection ) override;
+ virtual css::uno::Reference< css::report::XGroup > SAL_CALL getGroup() override;
+ virtual css::uno::Reference< css::report::XReportDefinition > SAL_CALL getReportDefinition() 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;
+ // XContainer
+ virtual void SAL_CALL addContainerListener( const css::uno::Reference< css::container::XContainerListener >& xListener ) override;
+ virtual void SAL_CALL removeContainerListener( const css::uno::Reference< css::container::XContainerListener >& xListener ) override;
+ // XElementAccess
+ virtual css::uno::Type SAL_CALL getElementType( ) override;
+ virtual sal_Bool SAL_CALL hasElements( ) override;
+ // XShapes
+ virtual void SAL_CALL add( const css::uno::Reference< css::drawing::XShape >& xShape ) override;
+ virtual void SAL_CALL remove( const css::uno::Reference< css::drawing::XShape >& xShape ) override;
+ // XShapeGrouper
+ virtual css::uno::Reference< css::drawing::XShapeGroup > SAL_CALL group( const css::uno::Reference< css::drawing::XShapes >& xShapes ) override;
+ virtual void SAL_CALL ungroup( const css::uno::Reference< css::drawing::XShapeGroup >& aGroup ) override;
+
+ // XFormsSupplier
+ virtual css::uno::Reference< css::container::XNameContainer > SAL_CALL getForms() override;
+ // XFormsSupplier2
+ virtual sal_Bool SAL_CALL hasForms() override;
+
+ // XIndexAccess
+ virtual ::sal_Int32 SAL_CALL getCount( ) override;
+ virtual css::uno::Any SAL_CALL getByIndex( ::sal_Int32 Index ) override;
+ // XEnumerationAccess
+ virtual css::uno::Reference< css::container::XEnumeration > SAL_CALL createEnumeration( ) override;
+
+ // XComponent
+ virtual void SAL_CALL dispose() override;
+ virtual void SAL_CALL addEventListener(const css::uno::Reference< css::lang::XEventListener > & aListener) override
+ {
+ cppu::WeakComponentImplHelperBase::addEventListener(aListener);
+ }
+ virtual void SAL_CALL removeEventListener(const css::uno::Reference< css::lang::XEventListener > & aListener) override
+ {
+ cppu::WeakComponentImplHelperBase::removeEventListener(aListener);
+ }
+
+ // css::lang::XUnoTunnel
+ virtual sal_Int64 SAL_CALL getSomething( const css::uno::Sequence< sal_Int8 >& aIdentifier ) override;
+ static const css::uno::Sequence< sal_Int8 > & getUnoTunnelId();
+
+ void notifyElementAdded(const css::uno::Reference< css::drawing::XShape >& xShape);
+ void notifyElementRemoved(const css::uno::Reference< css::drawing::XShape >& xShape);
+ };
+}
+#endif // INCLUDED_REPORTDESIGN_SOURCE_CORE_INC_SECTION_HXX
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/reportdesign/source/core/inc/Shape.hxx b/reportdesign/source/core/inc/Shape.hxx
new file mode 100644
index 000000000..73f6c63f6
--- /dev/null
+++ b/reportdesign/source/core/inc/Shape.hxx
@@ -0,0 +1,209 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.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_REPORTDESIGN_SOURCE_CORE_INC_SHAPE_HXX
+#define INCLUDED_REPORTDESIGN_SOURCE_CORE_INC_SHAPE_HXX
+
+#include <cppuhelper/propertysetmixin.hxx>
+#include <com/sun/star/report/XShape.hpp>
+#include "ReportControlModel.hxx"
+#include <cppuhelper/compbase.hxx>
+#include <cppuhelper/basemutex.hxx>
+#include <com/sun/star/lang/XServiceInfo.hpp>
+#include <ReportHelperDefines.hxx>
+#include <comphelper/propagg.hxx>
+#include <memory>
+
+namespace reportdesign
+{
+ typedef ::cppu::PropertySetMixin< css::report::XShape > ShapePropertySet;
+ typedef ::cppu::WeakComponentImplHelper< css::report::XShape
+ ,css::lang::XServiceInfo > ShapeBase;
+
+ /** \class OShape Defines the implementation of a \interface com:::sun::star::report::XShape
+ * \ingroup reportdesign_api
+ *
+ */
+ class OShape : public cppu::BaseMutex,
+ public ShapeBase,
+ public ShapePropertySet
+ {
+ friend class OShapeHelper;
+ ::std::unique_ptr< ::comphelper::OPropertyArrayAggregationHelper> m_pAggHelper;
+ OReportControlModel m_aProps;
+ css::drawing::HomogenMatrix3 m_Transformation;
+ sal_Int32 m_nZOrder;
+ bool m_bOpaque;
+
+ OUString m_sServiceName;
+ OUString m_CustomShapeEngine;
+ OUString m_CustomShapeData;
+ css::uno::Sequence< css::beans::PropertyValue > m_CustomShapeGeometry;
+
+ private:
+ OShape(const OShape&) = delete;
+ OShape& operator=(const OShape&) = delete;
+
+ // internally, we store PROPERTY_PARAADJUST as css::style::ParagraphAdjust, but externally the property is visible as a sal_Int16
+ void set( const OUString& _sProperty
+ ,sal_Int16 Value
+ ,css::style::ParagraphAdjust& _member)
+ {
+ BoundListeners l;
+ {
+ ::osl::MutexGuard aGuard(m_aMutex);
+ if ( static_cast<sal_Int16>(_member) != Value )
+ {
+ prepareSet(_sProperty, css::uno::Any(static_cast<sal_Int16>(_member)), css::uno::Any(Value), &l);
+ _member = static_cast<css::style::ParagraphAdjust>(Value);
+ }
+ }
+ l.notify();
+ }
+ template <typename T> void set( const OUString& _sProperty
+ ,const T& Value
+ ,T& _member)
+ {
+ BoundListeners l;
+ {
+ ::osl::MutexGuard aGuard(m_aMutex);
+ if ( _member != Value )
+ {
+ prepareSet(_sProperty, css::uno::Any(_member), css::uno::Any(Value), &l);
+ _member = Value;
+ }
+ }
+ l.notify();
+ }
+ void set( const OUString& _sProperty
+ ,bool Value
+ ,bool& _member)
+ {
+ BoundListeners l;
+ {
+ ::osl::MutexGuard aGuard(m_aMutex);
+ if ( _member != Value )
+ {
+ prepareSet(_sProperty, css::uno::Any(_member), css::uno::Any(Value), &l);
+ _member = Value;
+ }
+ }
+ l.notify();
+ }
+ cppu::IPropertyArrayHelper& getInfoHelper();
+ protected:
+ virtual ~OShape() override;
+ public:
+ explicit OShape(css::uno::Reference< css::uno::XComponentContext > const & _xContext);
+ explicit OShape(css::uno::Reference< css::uno::XComponentContext > const & _xContext
+ ,const css::uno::Reference< css::lang::XMultiServiceFactory > & _xFactory
+ ,css::uno::Reference< css::drawing::XShape >& _xShape
+ ,const OUString& _sServiceName);
+
+ DECLARE_XINTERFACE( )
+ // css::lang::XServiceInfo
+ virtual sal_Bool SAL_CALL supportsService( const OUString& ServiceName ) override;
+ virtual OUString SAL_CALL getImplementationName( ) override;
+ virtual css::uno::Sequence< OUString > SAL_CALL getSupportedServiceNames( ) override;
+
+ /// @throws css::uno::RuntimeException
+ static css::uno::Sequence< OUString > getSupportedServiceNames_Static();
+ /// @throws css::uno::RuntimeException
+ static OUString getImplementationName_Static();
+ static css::uno::Reference< css::uno::XInterface >
+ create(css::uno::Reference< css::uno::XComponentContext > const & xContext);
+ // 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;
+
+ // XReportComponent
+ REPORTCOMPONENT_HEADER()
+
+ // XShape
+ SHAPE_HEADER()
+
+ virtual OUString SAL_CALL getCustomShapeEngine() override;
+ virtual void SAL_CALL setCustomShapeEngine( const OUString& _customshapeengine ) override;
+ virtual OUString SAL_CALL getCustomShapeData() override;
+ virtual void SAL_CALL setCustomShapeData( const OUString& _customshapedata ) override;
+ virtual css::uno::Sequence< css::beans::PropertyValue > SAL_CALL getCustomShapeGeometry() override;
+ virtual void SAL_CALL setCustomShapeGeometry( const css::uno::Sequence< css::beans::PropertyValue >& _customshapegeometry ) override;
+
+ virtual sal_Bool SAL_CALL getOpaque() override;
+ virtual void SAL_CALL setOpaque( sal_Bool _opaque ) override;
+
+ // XShapeDescriptor
+ virtual OUString SAL_CALL getShapeType( ) override;
+
+ // XReportControlModel
+ REPORTCONTROLMODEL_HEADER()
+
+ // XReportControlFormat
+ REPORTCONTROLFORMAT_HEADER()
+ // XShape
+ virtual ::sal_Int32 SAL_CALL getZOrder() override;
+ virtual void SAL_CALL setZOrder( ::sal_Int32 _zorder ) override;
+ virtual css::drawing::HomogenMatrix3 SAL_CALL getTransformation() override;
+ virtual void SAL_CALL setTransformation( const css::drawing::HomogenMatrix3& _transformation ) override;
+
+ // XCloneable
+ virtual css::uno::Reference< css::util::XCloneable > SAL_CALL createClone( ) override;
+
+ // XComponent
+ virtual void SAL_CALL dispose() override;
+ virtual void SAL_CALL addEventListener(const css::uno::Reference< css::lang::XEventListener > & aListener) override
+ {
+ cppu::WeakComponentImplHelperBase::addEventListener(aListener);
+ }
+ virtual void SAL_CALL removeEventListener(const css::uno::Reference< css::lang::XEventListener > & aListener) override
+ {
+ cppu::WeakComponentImplHelperBase::removeEventListener(aListener);
+ }
+
+ // 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;
+
+ // XContainer
+ virtual void SAL_CALL addContainerListener( const css::uno::Reference< css::container::XContainerListener >& xListener ) override;
+ virtual void SAL_CALL removeContainerListener( const css::uno::Reference< css::container::XContainerListener >& xListener ) override;
+
+ // XElementAccess
+ virtual css::uno::Type SAL_CALL getElementType( ) override;
+ virtual sal_Bool SAL_CALL hasElements( ) override;
+
+ // XIndexReplace
+ virtual void SAL_CALL replaceByIndex( ::sal_Int32 Index, const css::uno::Any& Element ) override;
+
+ // XIndexContainer
+ virtual void SAL_CALL insertByIndex( ::sal_Int32 Index, const css::uno::Any& Element ) override;
+ virtual void SAL_CALL removeByIndex( ::sal_Int32 Index ) override;
+
+ // XIndexAccess
+ virtual ::sal_Int32 SAL_CALL getCount( ) override;
+ virtual css::uno::Any SAL_CALL getByIndex( ::sal_Int32 Index ) override;
+ };
+}
+#endif // INCLUDED_REPORTDESIGN_SOURCE_CORE_INC_SHAPE_HXX
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/reportdesign/source/core/inc/Tools.hxx b/reportdesign/source/core/inc/Tools.hxx
new file mode 100644
index 000000000..3e0a699ce
--- /dev/null
+++ b/reportdesign/source/core/inc/Tools.hxx
@@ -0,0 +1,155 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.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_REPORTDESIGN_SOURCE_CORE_INC_TOOLS_HXX
+#define INCLUDED_REPORTDESIGN_SOURCE_CORE_INC_TOOLS_HXX
+
+#include <com/sun/star/report/XSection.hpp>
+#include <com/sun/star/awt/Point.hpp>
+#include <com/sun/star/awt/Size.hpp>
+#include <com/sun/star/container/XChild.hpp>
+#include <com/sun/star/lang/XMultiServiceFactory.hpp>
+
+
+#include <strings.hxx>
+#include <osl/diagnose.h>
+#include <comphelper/uno3.hxx>
+
+namespace reportdesign
+{
+ /** uses the XChild interface to get the section from any child of it.
+ *
+ * \param _xReportComponent A report component which is a child of the section.
+ * \return The section where this report component resists in.
+ */
+ css::uno::Reference< css::report::XSection> lcl_getSection(const css::uno::Reference< css::uno::XInterface>& _xReportComponent);
+
+ /** throws an illegal argument exception. The message text is the resource RID_STR_ERROR_WRONG_ARGUMENT + the type as reference.
+ *
+ * \param _sTypeName The reference where to look for the correct values.
+ * \param ExceptionContext_ The exception context.
+ * \param ArgumentPosition_ The argument position.
+ */
+ void throwIllegallArgumentException(std::u16string_view _sTypeName
+ ,const css::uno::Reference< css::uno::XInterface >& ExceptionContext_
+ ,sal_Int16 ArgumentPosition_);
+
+ /** clones the given object
+ *
+ * \param _xReportComponent the object to be cloned
+ * \param _xFactory the factory to create the clone
+ * \param _sServiceName the service of the to be cloned object
+ * \return the clone
+ */
+ css::uno::Reference< css::util::XCloneable > cloneObject(
+ const css::uno::Reference< css::report::XReportComponent>& _xReportComponent
+ ,const css::uno::Reference< css::lang::XMultiServiceFactory>& _xFactory
+ ,const OUString& _sServiceName);
+
+ class OShapeHelper
+ {
+ public:
+ template<typename T> static void setSize(const css::awt::Size& aSize,T* _pShape)
+ {
+ OSL_ENSURE(aSize.Width >= 0 && aSize.Height >= 0,"Illegal width or height!");
+
+ ::osl::MutexGuard aGuard(_pShape->m_aMutex);
+ if ( _pShape->m_aProps.aComponent.m_xShape.is() )
+ {
+ css::awt::Size aOldSize = _pShape->m_aProps.aComponent.m_xShape->getSize();
+ if ( aOldSize.Height != aSize.Height || aOldSize.Width != aSize.Width )
+ {
+ _pShape->m_aProps.aComponent.m_nWidth = aOldSize.Width;
+ _pShape->m_aProps.aComponent.m_nHeight = aOldSize.Height;
+ _pShape->m_aProps.aComponent.m_xShape->setSize(aSize);
+ }
+ }
+ _pShape->set(PROPERTY_WIDTH,aSize.Width,_pShape->m_aProps.aComponent.m_nWidth);
+ _pShape->set(PROPERTY_HEIGHT,aSize.Height,_pShape->m_aProps.aComponent.m_nHeight);
+ }
+ template<typename T> static css::awt::Size getSize( T* _pShape )
+ {
+ ::osl::MutexGuard aGuard(_pShape->m_aMutex);
+ if ( _pShape->m_aProps.aComponent.m_xShape.is() )
+ {
+ css::awt::Size aSize = _pShape->m_aProps.aComponent.m_xShape->getSize();
+ OSL_ENSURE(aSize.Width >= 0 && aSize.Height >= 0,"Illegal width or height!");
+ return aSize;
+ }
+ return css::awt::Size(_pShape->m_aProps.aComponent.m_nWidth,_pShape->m_aProps.aComponent.m_nHeight);
+ }
+
+ template<typename T> static void setPosition( const css::awt::Point& _aPosition ,T* _pShape)
+ {
+ // we know it is not allowed that the position in smaller 0, but in NbcMove() it will handled right.
+ // only at 'Undo' it is possible to short set the position smaller 0
+ // OSL_ENSURE(_aPosition.X >= 0 && _aPosition.Y >= 0,"set to Illegal position!");
+ ::osl::MutexGuard aGuard(_pShape->m_aMutex);
+ css::awt::Point aOldPos;
+ aOldPos.X = _pShape->m_aProps.aComponent.m_nPosX;
+ aOldPos.Y = _pShape->m_aProps.aComponent.m_nPosY;
+
+ css::awt::Point aPosition(_aPosition);
+ if ( _pShape->m_aProps.aComponent.m_xShape.is() )
+ {
+ aOldPos = _pShape->m_aProps.aComponent.m_xShape->getPosition();
+ if ( aOldPos.X != aPosition.X || aOldPos.Y != aPosition.Y )
+ {
+ _pShape->m_aProps.aComponent.m_nPosX = aOldPos.X;
+ _pShape->m_aProps.aComponent.m_nPosY = aOldPos.Y;
+ _pShape->m_aProps.aComponent.m_xShape->setPosition(aPosition);
+ }
+ }
+ _pShape->set(PROPERTY_POSITIONX,aPosition.X,aOldPos.X);
+ _pShape->set(PROPERTY_POSITIONY,aPosition.Y,aOldPos.Y);
+ }
+ template<typename T> static css::awt::Point getPosition(T* _pShape)
+ {
+ ::osl::MutexGuard aGuard(_pShape->m_aMutex);
+ if ( _pShape->m_aProps.aComponent.m_xShape.is() )
+ {
+ css::awt::Point aPosition = _pShape->m_aProps.aComponent.m_xShape->getPosition();
+ return aPosition;
+ }
+ return css::awt::Point(_pShape->m_aProps.aComponent.m_nPosX,_pShape->m_aProps.aComponent.m_nPosY);
+ }
+ template<typename T> static void setParent( const css::uno::Reference< css::uno::XInterface >& Parent, T* _pShape)
+ {
+ ::osl::MutexGuard aGuard(_pShape->m_aMutex);
+ _pShape->m_aProps.aComponent.m_xParent = css::uno::Reference< css::container::XChild >(Parent,css::uno::UNO_QUERY);
+ css::uno::Reference< css::container::XChild > xChild;
+ comphelper::query_aggregation(_pShape->m_aProps.aComponent.m_xProxy,xChild);
+ if ( xChild.is() )
+ xChild->setParent(Parent);
+ }
+ template<typename T> static css::uno::Reference< css::uno::XInterface > getParent( T* _pShape )
+ {
+ ::osl::MutexGuard aGuard(_pShape->m_aMutex);
+ css::uno::Reference< css::container::XChild > xChild;
+ comphelper::query_aggregation(_pShape->m_aProps.aComponent.m_xProxy,xChild);
+ if ( xChild.is() )
+ return xChild->getParent();
+ return _pShape->m_aProps.aComponent.m_xParent;
+ }
+ };
+
+} // namespace reportdesign
+
+#endif // INCLUDED_REPORTDESIGN_SOURCE_CORE_INC_TOOLS_HXX
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/reportdesign/source/core/inc/conditionupdater.hxx b/reportdesign/source/core/inc/conditionupdater.hxx
new file mode 100644
index 000000000..8102f6766
--- /dev/null
+++ b/reportdesign/source/core/inc/conditionupdater.hxx
@@ -0,0 +1,62 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ *
+ * This file incorporates work covered by the following license notice:
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed
+ * with this work for additional information regarding copyright
+ * ownership. The ASF licenses this file to you under the Apache
+ * License, Version 2.0 (the "License"); you may not use this file
+ * except in compliance with the License. You may obtain a copy of
+ * the License at http://www.apache.org/licenses/LICENSE-2.0 .
+ */
+
+#ifndef INCLUDED_REPORTDESIGN_SOURCE_CORE_INC_CONDITIONUPDATER_HXX
+#define INCLUDED_REPORTDESIGN_SOURCE_CORE_INC_CONDITIONUPDATER_HXX
+
+#include <conditionalexpression.hxx>
+
+#include <com/sun/star/beans/PropertyChangeEvent.hpp>
+#include <com/sun/star/report/XReportControlModel.hpp>
+
+
+namespace rptui
+{
+
+ class ConditionUpdater
+ {
+ public:
+ ConditionUpdater();
+ ~ConditionUpdater();
+ ConditionUpdater(const ConditionUpdater&) = delete;
+ ConditionUpdater& operator=(const ConditionUpdater&) = delete;
+
+ /// notifies the object about the change of a property value, somewhere in the report definition
+ void notifyPropertyChange( const css::beans::PropertyChangeEvent& _rEvent );
+
+ private:
+ /// does late initializations, return whether or not successful
+ void impl_lateInit_nothrow();
+
+ void impl_adjustFormatConditions_nothrow(
+ const css::uno::Reference< css::report::XReportControlModel >& _rxRptControlModel,
+ const OUString& _rOldDataSource,
+ const OUString& _rNewDataSource
+ );
+
+ private:
+ ConditionalExpressions m_aConditionalExpressions;
+ };
+
+} // namespace rptui
+
+
+#endif // INCLUDED_REPORTDESIGN_SOURCE_CORE_INC_CONDITIONUPDATER_HXX
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */