LibreOffice Module chart2 (master) 1
Axis.cxx
Go to the documentation of this file.
1/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2/*
3 * This file is part of the LibreOffice project.
4 *
5 * This Source Code Form is subject to the terms of the Mozilla Public
6 * License, v. 2.0. If a copy of the MPL was not distributed with this
7 * file, You can obtain one at http://mozilla.org/MPL/2.0/.
8 *
9 * This file incorporates work covered by the following license notice:
10 *
11 * Licensed to the Apache Software Foundation (ASF) under one or more
12 * contributor license agreements. See the NOTICE file distributed
13 * with this work for additional information regarding copyright
14 * ownership. The ASF licenses this file to you under the Apache
15 * License, Version 2.0 (the "License"); you may not use this file
16 * except in compliance with the License. You may obtain a copy of
17 * the License at http://www.apache.org/licenses/LICENSE-2.0 .
18 */
19
20#include <Axis.hxx>
21#include <GridProperties.hxx>
25#include <PropertyHelper.hxx>
26#include <CloneHelper.hxx>
27#include <AxisHelper.hxx>
30#include <Title.hxx>
31#include <unonames.hxx>
32
33#include <com/sun/star/chart/ChartAxisArrangeOrderType.hpp>
34#include <com/sun/star/chart/ChartAxisLabelPosition.hpp>
35#include <com/sun/star/chart/ChartAxisMarkPosition.hpp>
36#include <com/sun/star/chart/ChartAxisPosition.hpp>
37#include <com/sun/star/beans/PropertyAttribute.hpp>
38#include <com/sun/star/awt/Size.hpp>
41#include <rtl/ref.hxx>
42
43#include <vector>
44#include <algorithm>
45
46using namespace ::com::sun::star;
47using namespace ::com::sun::star::beans::PropertyAttribute;
48
49using ::com::sun::star::uno::Sequence;
50using ::com::sun::star::uno::Reference;
51using ::com::sun::star::beans::Property;
52using ::osl::MutexGuard;
53
54namespace
55{
56
57enum
58{
59 PROP_AXIS_SHOW,
60 PROP_AXIS_CROSSOVER_POSITION,
61 PROP_AXIS_CROSSOVER_VALUE,
62 PROP_AXIS_DISPLAY_LABELS,
63 PROP_AXIS_NUMBERFORMAT,
64 PROP_AXIS_LINK_NUMBERFORMAT_TO_SOURCE,
65 PROP_AXIS_LABEL_POSITION,
66 PROP_AXIS_TEXT_ROTATION,
67 PROP_AXIS_TEXT_BREAK,
68 PROP_AXIS_TEXT_OVERLAP,
69 PROP_AXIS_TEXT_STACKED,
70 PROP_AXIS_TEXT_ARRANGE_ORDER,
71 PROP_AXIS_REFERENCE_DIAGRAM_SIZE,
72
73 PROP_AXIS_MAJOR_TICKMARKS,
74 PROP_AXIS_MINOR_TICKMARKS,
75 PROP_AXIS_MARK_POSITION,
76
77 PROP_AXIS_DISPLAY_UNITS,
78 PROP_AXIS_BUILTINUNIT,
79
80 PROP_AXIS_TRY_STAGGERING_FIRST,
81 PROP_AXIS_MAJOR_ORIGIN
82};
83
84void lcl_AddPropertiesToVector(
85 std::vector< Property > & rOutProperties )
86{
87 rOutProperties.emplace_back( "Show",
88 PROP_AXIS_SHOW,
90 beans::PropertyAttribute::BOUND
91 | beans::PropertyAttribute::MAYBEDEFAULT );
92
93 rOutProperties.emplace_back( "CrossoverPosition",
94 PROP_AXIS_CROSSOVER_POSITION,
96 beans::PropertyAttribute::MAYBEDEFAULT );
97
98 rOutProperties.emplace_back( "CrossoverValue",
99 PROP_AXIS_CROSSOVER_VALUE,
101 beans::PropertyAttribute::MAYBEVOID );
102
103 rOutProperties.emplace_back( "DisplayLabels",
104 PROP_AXIS_DISPLAY_LABELS,
106 beans::PropertyAttribute::BOUND
107 | beans::PropertyAttribute::MAYBEDEFAULT );
108
109 rOutProperties.emplace_back( CHART_UNONAME_NUMFMT,
110 PROP_AXIS_NUMBERFORMAT,
112 beans::PropertyAttribute::BOUND
113 | beans::PropertyAttribute::MAYBEDEFAULT );
114
115 rOutProperties.emplace_back( CHART_UNONAME_LINK_TO_SRC_NUMFMT,
116 PROP_AXIS_LINK_NUMBERFORMAT_TO_SOURCE,
118 beans::PropertyAttribute::BOUND
119 | beans::PropertyAttribute::MAYBEDEFAULT );
120
121 rOutProperties.emplace_back( "LabelPosition",
122 PROP_AXIS_LABEL_POSITION,
124 beans::PropertyAttribute::MAYBEDEFAULT );
125
126 rOutProperties.emplace_back( "TextRotation",
127 PROP_AXIS_TEXT_ROTATION,
129 beans::PropertyAttribute::BOUND
130 | beans::PropertyAttribute::MAYBEDEFAULT );
131
132 rOutProperties.emplace_back( "TextBreak",
133 PROP_AXIS_TEXT_BREAK,
135 beans::PropertyAttribute::BOUND
136 | beans::PropertyAttribute::MAYBEDEFAULT );
137
138 rOutProperties.emplace_back( "TextOverlap",
139 PROP_AXIS_TEXT_OVERLAP,
141 beans::PropertyAttribute::BOUND
142 | beans::PropertyAttribute::MAYBEDEFAULT );
143
144 rOutProperties.emplace_back( "StackCharacters",
145 PROP_AXIS_TEXT_STACKED,
147 beans::PropertyAttribute::BOUND
148 | beans::PropertyAttribute::MAYBEDEFAULT );
149
150 rOutProperties.emplace_back( "ArrangeOrder",
151 PROP_AXIS_TEXT_ARRANGE_ORDER,
153 beans::PropertyAttribute::BOUND
154 | beans::PropertyAttribute::MAYBEDEFAULT );
155
156 rOutProperties.emplace_back( "ReferencePageSize",
157 PROP_AXIS_REFERENCE_DIAGRAM_SIZE,
159 beans::PropertyAttribute::BOUND
160 | beans::PropertyAttribute::MAYBEVOID );
161
162 rOutProperties.emplace_back( "MajorTickmarks",
163 PROP_AXIS_MAJOR_TICKMARKS,
165 beans::PropertyAttribute::BOUND
166 | beans::PropertyAttribute::MAYBEDEFAULT );
167
168 rOutProperties.emplace_back( "MinorTickmarks",
169 PROP_AXIS_MINOR_TICKMARKS,
171 beans::PropertyAttribute::BOUND
172 | beans::PropertyAttribute::MAYBEDEFAULT );
173
174 rOutProperties.emplace_back( "MarkPosition",
175 PROP_AXIS_MARK_POSITION,
177 beans::PropertyAttribute::MAYBEDEFAULT );
178
179 //Properties for display units:
180 rOutProperties.emplace_back( "DisplayUnits",
181 PROP_AXIS_DISPLAY_UNITS,
183 beans::PropertyAttribute::BOUND
184 | beans::PropertyAttribute::MAYBEDEFAULT );
185
186 //Properties for labels:
187 rOutProperties.emplace_back( "BuiltInUnit",
188 PROP_AXIS_BUILTINUNIT,
190 beans::PropertyAttribute::BOUND
191 | beans::PropertyAttribute::MAYBEDEFAULT );
192
193 // Compatibility option: starting from LibreOffice 5.1 the rotated
194 // layout is preferred to staggering for axis labels.
195 rOutProperties.emplace_back( "TryStaggeringFirst",
196 PROP_AXIS_TRY_STAGGERING_FIRST,
198 beans::PropertyAttribute::BOUND
199 | beans::PropertyAttribute::MAYBEDEFAULT );
200
201 rOutProperties.emplace_back( "MajorOrigin",
202 PROP_AXIS_MAJOR_ORIGIN,
204 beans::PropertyAttribute::BOUND
205 | beans::PropertyAttribute::MAYBEVOID );
206
207}
208} // namespace
209
210namespace chart
211{
213{
214 static ::chart::tPropertyValueMap aStaticDefaults = []()
215 {
219
221 ::chart::PropertyHelper::setPropertyValueDefault( aMap, PROP_AXIS_CROSSOVER_POSITION, css::chart::ChartAxisPosition_ZERO );
222 ::chart::PropertyHelper::setPropertyValueDefault( aMap, PROP_AXIS_DISPLAY_LABELS, true );
223 ::chart::PropertyHelper::setPropertyValueDefault( aMap, PROP_AXIS_LINK_NUMBERFORMAT_TO_SOURCE, true );
224 ::chart::PropertyHelper::setPropertyValueDefault( aMap, PROP_AXIS_LABEL_POSITION, css::chart::ChartAxisLabelPosition_NEAR_AXIS );
225 ::chart::PropertyHelper::setPropertyValueDefault< double >( aMap, PROP_AXIS_TEXT_ROTATION, 0.0 );
226 ::chart::PropertyHelper::setPropertyValueDefault( aMap, PROP_AXIS_TEXT_BREAK, false );
227 ::chart::PropertyHelper::setPropertyValueDefault( aMap, PROP_AXIS_TEXT_OVERLAP, false );
228 ::chart::PropertyHelper::setPropertyValueDefault( aMap, PROP_AXIS_TEXT_STACKED, false );
229 ::chart::PropertyHelper::setPropertyValueDefault( aMap, PROP_AXIS_TEXT_ARRANGE_ORDER, css::chart::ChartAxisArrangeOrderType_AUTO );
230
231 float fDefaultCharHeight = 10.0;
235
236 ::chart::PropertyHelper::setPropertyValueDefault< sal_Int32 >( aMap, PROP_AXIS_MAJOR_TICKMARKS, 2 /* CHAXIS_MARK_OUTER */ );
237 ::chart::PropertyHelper::setPropertyValueDefault< sal_Int32 >( aMap, PROP_AXIS_MINOR_TICKMARKS, 0 /* CHAXIS_MARK_NONE */ );
238 ::chart::PropertyHelper::setPropertyValueDefault( aMap, PROP_AXIS_MARK_POSITION, css::chart::ChartAxisMarkPosition_AT_LABELS_AND_AXIS );
239 ::chart::PropertyHelper::setPropertyValueDefault( aMap, PROP_AXIS_DISPLAY_UNITS, false );
240 ::chart::PropertyHelper::setPropertyValueDefault( aMap, PROP_AXIS_TRY_STAGGERING_FIRST, false );
241 return aMap;
242 }();
243 return aStaticDefaults;
244};
245} // namespace chart
246
247namespace
248{
249::cppu::OPropertyArrayHelper& StaticAxisInfoHelper()
250{
251 static ::cppu::OPropertyArrayHelper aPropHelper = []()
252 {
253 std::vector< css::beans::Property > aProperties;
254 lcl_AddPropertiesToVector( aProperties );
258
259 std::sort( aProperties.begin(), aProperties.end(),
261
262 return comphelper::containerToSequence( aProperties );
263 }();
264 return aPropHelper;
265};
266
267std::vector< rtl::Reference< ::chart::GridProperties > > lcl_CloneSubGrids(
268 const std::vector< rtl::Reference< ::chart::GridProperties > > & rSource )
269{
270 std::vector< rtl::Reference< ::chart::GridProperties > > aDestination;
271 aDestination.reserve( rSource.size());
272 for( rtl::Reference< ::chart::GridProperties > const & i : rSource )
273 {
274 aDestination.push_back(new ::chart::GridProperties(*i));
275 }
276 return aDestination;
277}
278
279} // anonymous namespace
280
281namespace chart
282{
283
285 m_xModifyEventForwarder( new ModifyEventForwarder() ),
286 m_aScaleData( AxisHelper::createDefaultScale() ),
287 m_xGrid( new GridProperties() )
288{
289 osl_atomic_increment(&m_refCount);
291 ::chart::LinePropertiesHelper::PROP_LINE_COLOR, uno::Any( static_cast< sal_Int32 >( 0xb3b3b3 ) ) ); // gray30
292
293 if( m_xGrid.is())
295 if( m_aScaleData.Categories.is())
297
299 osl_atomic_decrement(&m_refCount);
300}
301
302Axis::Axis( const Axis & rOther ) :
303 impl::Axis_Base(rOther),
304 ::property::OPropertySet( rOther ),
305 m_xModifyEventForwarder( new ModifyEventForwarder() ),
306 m_aScaleData( rOther.m_aScaleData )
307{
308 if (rOther.m_xGrid)
309 m_xGrid = new ::chart::GridProperties(*rOther.m_xGrid);
310 if( m_xGrid.is())
312
313 if( m_aScaleData.Categories.is())
315
316 if( !rOther.m_aSubGridProperties.empty() )
317 m_aSubGridProperties = lcl_CloneSubGrids( rOther.m_aSubGridProperties );
319
320 if ( rOther.m_xTitle )
321 m_xTitle = new Title( *rOther.m_xTitle );
322 if( m_xTitle.is())
324}
325
326// late initialization to call after copy-constructing
328{
329 if( m_aScaleData.Categories.is())
331}
332
334{
335 try
336 {
340 if( m_aScaleData.Categories.is())
341 {
343 m_aScaleData.Categories.set(nullptr);
344 }
345 }
346 catch( const uno::Exception & )
347 {
348 DBG_UNHANDLED_EXCEPTION("chart2");
349 }
350
351 m_aSubGridProperties.clear();
352 m_xGrid = nullptr;
353 m_xTitle = nullptr;
354}
355
357{
358 Reference< util::XModifyListener > xModifyEventForwarder;
360 std::vector< rtl::Reference< GridProperties > > aOldBroadcasters;
361 std::vector< rtl::Reference< GridProperties > > aNewBroadcasters;
362 {
363 MutexGuard aGuard( m_aMutex );
364 xModifyEventForwarder = m_xModifyEventForwarder;
365 xEventListener = this;
366
367 sal_Int32 nNewSubIncCount = m_aScaleData.IncrementData.SubIncrements.getLength();
368 sal_Int32 nOldSubIncCount = m_aSubGridProperties.size();
369
370 if( nOldSubIncCount > nNewSubIncCount )
371 {
372 // remove superfluous entries
373 for( sal_Int32 i = nNewSubIncCount; i < nOldSubIncCount; ++i )
374 aOldBroadcasters.push_back( m_aSubGridProperties[ i ] );
375 m_aSubGridProperties.resize( nNewSubIncCount );
376 }
377 else if( nOldSubIncCount < nNewSubIncCount )
378 {
379 m_aSubGridProperties.resize( nNewSubIncCount );
380
381 // allocate new entries
382 for( sal_Int32 i = nOldSubIncCount; i < nNewSubIncCount; ++i )
383 {
386 LinePropertiesHelper::SetLineColor( m_aSubGridProperties[ i ], static_cast<sal_Int32>(0xdddddd) ); //gray2
387 aNewBroadcasters.push_back( m_aSubGridProperties[ i ] );
388 }
389 }
390 }
391 //don't keep the mutex locked while calling out
392 for (auto const& oldBroadcaster : aOldBroadcasters)
393 ModifyListenerHelper::removeListener(oldBroadcaster, xModifyEventForwarder );
394 for (auto const& newBroadcaster : aNewBroadcasters)
395 ModifyListenerHelper::addListener( newBroadcaster, xModifyEventForwarder );
396}
397
398// ____ XAxis ____
399void SAL_CALL Axis::setScaleData( const chart2::ScaleData& rScaleData )
400{
401 Reference< util::XModifyListener > xModifyEventForwarder;
404 Reference< chart2::data::XLabeledDataSequence > xNewCategories = rScaleData.Categories;
405 {
406 MutexGuard aGuard( m_aMutex );
407 xModifyEventForwarder = m_xModifyEventForwarder;
408 xEventListener = this;
409 xOldCategories = m_aScaleData.Categories;
410 m_aScaleData = rScaleData;
411 }
413
414 //don't keep the mutex locked while calling out
415 if( xOldCategories.is() && xOldCategories != xNewCategories )
416 {
417 ModifyListenerHelper::removeListener( xOldCategories, xModifyEventForwarder );
418 EventListenerHelper::removeListener( xOldCategories, xEventListener );
419 }
420 if( xNewCategories.is() && xOldCategories != xNewCategories )
421 {
423 EventListenerHelper::addListener( xNewCategories, xEventListener );
424 }
426}
427
428chart2::ScaleData SAL_CALL Axis::getScaleData()
429{
430 MutexGuard aGuard( m_aMutex );
431 return m_aScaleData;
432}
433
435{
436 MutexGuard aGuard( m_aMutex );
437 return m_xGrid;
438}
440{
441 MutexGuard aGuard( m_aMutex );
442 return m_xGrid;
443}
445{
446 MutexGuard aGuard( m_aMutex );
447 return comphelper::containerToSequence<Reference< beans::XPropertySet >>(m_aSubGridProperties);
448}
449
450std::vector< rtl::Reference< GridProperties > > Axis::getSubGridProperties2()
451{
452 MutexGuard aGuard( m_aMutex );
454}
455
457{
458 OSL_FAIL( "Not implemented yet" );
460}
461
462// ____ XTitled ____
464{
465 MutexGuard aGuard( m_aMutex );
466 return m_xTitle;
467}
468
470{
471 MutexGuard aGuard( m_aMutex );
472 return m_xTitle;
473}
474
475void SAL_CALL Axis::setTitleObject( const Reference< chart2::XTitle >& xNewTitle )
476{
477 rtl::Reference<Title> xTitle = dynamic_cast<Title*>(xNewTitle.get());
478 assert(!xNewTitle || xTitle);
479 setTitleObject(xTitle);
480}
481
482void Axis::setTitleObject( const rtl::Reference< Title >& xNewTitle )
483{
484 Reference< util::XModifyListener > xModifyEventForwarder;
485 rtl::Reference< Title > xOldTitle;
486 {
487 MutexGuard aGuard( m_aMutex );
488 xOldTitle = m_xTitle;
489 xModifyEventForwarder = m_xModifyEventForwarder;
490 m_xTitle = xNewTitle;
491 }
492
493 //don't keep the mutex locked while calling out
494 if( xOldTitle.is() && xOldTitle != xNewTitle )
495 ModifyListenerHelper::removeListener( xOldTitle, xModifyEventForwarder );
496 if( xNewTitle.is() && xOldTitle != xNewTitle )
497 ModifyListenerHelper::addListener( xNewTitle, xModifyEventForwarder );
499}
500
501// ____ XCloneable ____
503{
504 rtl::Reference<Axis> pNewAxis( new Axis( *this ));
505 // do initialization that uses uno references to the clone
506 pNewAxis->Init();
507 return pNewAxis;
508}
509
510// ____ XModifyBroadcaster ____
512{
513 m_xModifyEventForwarder->addModifyListener( aListener );
514}
515
517{
518 m_xModifyEventForwarder->removeModifyListener( aListener );
519}
520
521// ____ XModifyListener ____
522void SAL_CALL Axis::modified( const lang::EventObject& aEvent )
523{
524 m_xModifyEventForwarder->modified( aEvent );
525}
526
527// ____ XEventListener (base of XModifyListener) ____
528void SAL_CALL Axis::disposing( const lang::EventObject& Source )
529{
530 if( Source.Source == m_aScaleData.Categories )
531 m_aScaleData.Categories = nullptr;
532}
533
534// ____ OPropertySet ____
536{
538}
539
541{
542 m_xModifyEventForwarder->modified( lang::EventObject( static_cast< uno::XWeak* >( this )));
543}
544
545// ____ OPropertySet ____
546void Axis::GetDefaultValue( sal_Int32 nHandle, uno::Any& rAny ) const
547{
548 const tPropertyValueMap& rStaticDefaults = StaticAxisDefaults();
549 tPropertyValueMap::const_iterator aFound( rStaticDefaults.find( nHandle ) );
550 if( aFound == rStaticDefaults.end() )
551 rAny.clear();
552 else
553 rAny = (*aFound).second;
554}
555
557{
558 return StaticAxisInfoHelper();
559}
560
561// ____ XPropertySet ____
563{
564 static uno::Reference< beans::XPropertySetInfo > xPropertySetInfo(
565 ::cppu::OPropertySetHelper::createPropertySetInfo(StaticAxisInfoHelper() ) );
566 return xPropertySetInfo;
567}
568
569using impl::Axis_Base;
570
573
574// implement XServiceInfo methods basing upon getSupportedServiceNames_Static
575OUString SAL_CALL Axis::getImplementationName()
576{
577 return "com.sun.star.comp.chart2.Axis";
578}
579
580sal_Bool SAL_CALL Axis::supportsService( const OUString& rServiceName )
581{
582 return cppu::supportsService(this, rServiceName);
583}
584
585css::uno::Sequence< OUString > SAL_CALL Axis::getSupportedServiceNames()
586{
587 return {
588 "com.sun.star.chart2.Axis",
589 "com.sun.star.beans.PropertySet" };
590}
591
592} // namespace chart
593
594extern "C" SAL_DLLPUBLIC_EXPORT css::uno::XInterface *
596 css::uno::Sequence<css::uno::Any> const &)
597{
598 return cppu::acquire(new ::chart::Axis);
599}
600
601/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
SAL_DLLPUBLIC_EXPORT css::uno::XInterface * com_sun_star_comp_chart2_Axis_get_implementation(css::uno::XComponentContext *, css::uno::Sequence< css::uno::Any > const &)
Definition: Axis.cxx:595
PropertiesInfo aProperties
AnyEventRef aEvent
virtual css::uno::Sequence< OUString > SAL_CALL getSupportedServiceNames() override
Definition: Axis.cxx:585
rtl::Reference< ::chart::GridProperties > m_xGrid
Definition: Axis.hxx:134
virtual css::uno::Reference< css::beans::XPropertySet > SAL_CALL getGridProperties() override
Definition: Axis.cxx:434
virtual void SAL_CALL removeModifyListener(const css::uno::Reference< css::util::XModifyListener > &aListener) override
Definition: Axis.cxx:516
virtual sal_Bool SAL_CALL supportsService(const OUString &ServiceName) override
Definition: Axis.cxx:580
virtual void firePropertyChangeEvent() override
implement this method in derived classes to get called when properties change.
Definition: Axis.cxx:535
css::chart2::ScaleData m_aScaleData
Definition: Axis.hxx:132
virtual css::chart2::ScaleData SAL_CALL getScaleData() override
Definition: Axis.cxx:428
void AllocateSubGrids()
Definition: Axis.cxx:356
virtual ::cppu::IPropertyArrayHelper &SAL_CALL getInfoHelper() override
The InfoHelper table contains all property names and types of this object.
Definition: Axis.cxx:556
std::vector< rtl::Reference< ::chart::GridProperties > > m_aSubGridProperties
Definition: Axis.hxx:136
rtl::Reference< ::chart::GridProperties > getGridProperties2()
Definition: Axis.cxx:439
virtual ~Axis() override
Definition: Axis.cxx:333
virtual void GetDefaultValue(sal_Int32 nHandle, css::uno::Any &rAny) const override
implement this method to provide default values for all properties supporting defaults.
Definition: Axis.cxx:546
void fireModifyEvent()
Definition: Axis.cxx:540
virtual void SAL_CALL addModifyListener(const css::uno::Reference< css::util::XModifyListener > &aListener) override
Definition: Axis.cxx:511
std::vector< rtl::Reference< ::chart::GridProperties > > getSubGridProperties2()
Definition: Axis.cxx:450
virtual void SAL_CALL setScaleData(const css::chart2::ScaleData &rScaleData) override
Definition: Axis.cxx:399
virtual void SAL_CALL modified(const css::lang::EventObject &aEvent) override
Definition: Axis.cxx:522
rtl::Reference< ::chart::Title > getTitleObject2() const
Definition: Axis.cxx:469
rtl::Reference< ModifyEventForwarder > m_xModifyEventForwarder
Definition: Axis.hxx:130
virtual void SAL_CALL setTitleObject(const css::uno::Reference< css::chart2::XTitle > &Title) override
virtual css::uno::Reference< css::util::XCloneable > SAL_CALL createClone() override
Definition: Axis.cxx:502
virtual css::uno::Reference< css::beans::XPropertySetInfo > SAL_CALL getPropertySetInfo() override
Definition: Axis.cxx:562
virtual css::uno::Sequence< css::uno::Reference< css::beans::XPropertySet > > SAL_CALL getSubTickProperties() override
Definition: Axis.cxx:456
virtual css::uno::Sequence< css::uno::Reference< css::beans::XPropertySet > > SAL_CALL getSubGridProperties() override
Definition: Axis.cxx:444
virtual css::uno::Reference< css::chart2::XTitle > SAL_CALL getTitleObject() override
Definition: Axis.cxx:463
void Init()
Definition: Axis.cxx:327
rtl::Reference< ::chart::Title > m_xTitle
Definition: Axis.hxx:138
This helper class serves as forwarder of modify events.
mutable::osl::Mutex m_aMutex
static css::uno::Reference< css::beans::XPropertySetInfo > SAL_CALL createPropertySetInfo(IPropertyArrayHelper &rProperties)
void SAL_CALL disposing()
virtual void SAL_CALL setFastPropertyValue_NoBroadcast(sal_Int32 nHandle, const css::uno::Any &rValue) override
The same as setFastPropertyValue; nHandle is always valid.
#define DBG_UNHANDLED_EXCEPTION(...)
ULONG m_refCount
OOO_DLLPUBLIC_CHARTTOOLS void AddDefaultsToMap(::chart::tPropertyValueMap &rOutMap)
OOO_DLLPUBLIC_CHARTTOOLS void AddPropertiesToVector(std::vector< css::beans::Property > &rOutProperties)
void addListener(const InterfaceRef &xObject, const css::uno::Reference< css::lang::XEventListener > &xListener)
void removeListener(const InterfaceRef &xObject, const css::uno::Reference< css::lang::XEventListener > &xListener)
void SetLineColor(const css::uno::Reference< css::beans::XPropertySet > &xGridProperties, sal_Int32 nColor)
void SetLineInvisible(const css::uno::Reference< css::beans::XPropertySet > &xLineProperties)
void removeListener(const InterfaceRef &xObject, const css::uno::Reference< css::util::XModifyListener > &xListener)
void removeListenerFromAllElements(const Container &rContainer, const css::uno::Reference< css::util::XModifyListener > &xListener)
void addListenerToAllElements(const Container &rContainer, const css::uno::Reference< css::util::XModifyListener > &xListener)
void addListener(const InterfaceRef &xObject, const css::uno::Reference< css::util::XModifyListener > &xListener)
void setPropertyValueDefault(tPropertyValueMap &rOutMap, tPropertyValueMapKey key, const Value &value)
Calls setPropertyValue() but asserts that the given property hasn't been set before.
void setPropertyValue(tPropertyValueMap &rOutMap, tPropertyValueMapKey key, const Value &value)
Set a property to a certain value in the given map.
::cppu::WeakImplHelper< css::chart2::XAxis, css::chart2::XTitled, css::lang::XServiceInfo, css::util::XCloneable, css::util::XModifyBroadcaster, css::util::XModifyListener > Axis_Base
Definition: Axis.hxx:47
std::unordered_map< tPropertyValueMapKey, css::uno::Any > tPropertyValueMap
OOO_DLLPUBLIC_CHARTTOOLSconst ::chart::tPropertyValueMap & StaticAxisDefaults()
Definition: Axis.cxx:212
css::uno::Sequence< DstElementType > containerToSequence(const SrcType &i_Container)
bool CPPUHELPER_DLLPUBLIC supportsService(css::lang::XServiceInfo *implementation, rtl::OUString const &name)
int i
IMPLEMENT_FORWARD_XTYPEPROVIDER2(ChildWindowPane, ChildWindowPaneInterfaceBase, Pane)
IMPLEMENT_FORWARD_XINTERFACE2(ChildWindowPane, ChildWindowPaneInterfaceBase, Pane)
HashMap_OWString_Interface aMap
sal_Int32 nHandle
unsigned char sal_Bool
constexpr OUStringLiteral CHART_UNONAME_LINK_TO_SRC_NUMFMT
Definition: unonames.hxx:21
constexpr OUStringLiteral CHART_UNONAME_NUMFMT
Definition: unonames.hxx:20