LibreOffice Module chart2 (master) 1
dlg_ObjectProperties.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 <sal/config.h>
21
22#include <cstddef>
23
25#include <strings.hrc>
26#include "tp_AxisLabel.hxx"
27#include "tp_DataLabel.hxx"
28#include "tp_LegendPosition.hxx"
29#include "tp_PointGeometry.hxx"
30#include "tp_Scale.hxx"
31#include "tp_AxisPositions.hxx"
32#include "tp_ErrorBars.hxx"
33#include "tp_Trendline.hxx"
34#include "tp_SeriesToAxis.hxx"
35#include "tp_TitleRotation.hxx"
36#include "tp_PolarOptions.hxx"
38#include "tp_DataTable.hxx"
39#include <ResId.hxx>
41#include <ChartModelHelper.hxx>
42#include <ChartType.hxx>
43#include <ChartTypeHelper.hxx>
45#include <DataSeries.hxx>
46#include <DiagramHelper.hxx>
47#include <Diagram.hxx>
49#include <Axis.hxx>
50#include <AxisHelper.hxx>
52#include <ChartModel.hxx>
53#include <CommonConverters.hxx>
56
57#include <com/sun/star/chart2/AxisType.hpp>
58#include <com/sun/star/chart2/XAxis.hpp>
59#include <svl/intitem.hxx>
60#include <svl/ctloptions.hxx>
61
62#include <svx/svxids.hrc>
63
64#include <svx/drawitem.hxx>
65#include <svx/ofaitem.hxx>
67
68#include <svx/dialogs.hrc>
69#include <editeng/flstitem.hxx>
70
71#include <svx/flagsdef.hxx>
72#include <svx/numinf.hxx>
73
74#include <svl/cjkoptions.hxx>
75#include <utility>
77
78namespace com::sun::star::chart2 { class XChartType; }
79namespace com::sun::star::chart2 { class XDataSeries; }
80
81namespace chart
82{
83
84using namespace ::com::sun::star;
85using namespace ::com::sun::star::chart2;
86using ::com::sun::star::uno::Reference;
87using ::com::sun::star::uno::Sequence;
88using ::com::sun::star::uno::Exception;
89using ::com::sun::star::beans::XPropertySet;
90
92 : m_aObjectCID(std::move( aObjectCID ))
93 , m_eObjectType( ObjectIdentifier::getObjectType( m_aObjectCID ) )
94 , m_bAffectsMultipleObjects(false)
95 , m_bHasGeometryProperties(false)
96 , m_bHasStatisticProperties(false)
97 , m_bProvidesSecondaryYAxis(false)
98 , m_bProvidesOverlapAndGapWidth(false)
99 , m_bProvidesBarConnectors(false)
100 , m_bHasAreaProperties(false)
101 , m_bHasSymbolProperties(false)
102 , m_bHasNumberProperties(false)
103 , m_bProvidesStartingAngle(false)
104 , m_bProvidesMissingValueTreatments(false)
105 , m_bIsPieChartDataPoint(false)
106 , m_bHasScaleProperties(false)
107 , m_bCanAxisLabelsBeStaggered(false)
108 , m_bSupportingAxisPositioning(false)
109 , m_bShowAxisOrigin(false)
110 , m_bIsCrossingAxisIsCategoryAxis(false)
111 , m_bSupportingCategoryPositioning(false)
112 , m_bComplexCategoriesAxis( false )
113 , m_nNbPoints( 0 )
114{
115 std::u16string_view aParticleID = ObjectIdentifier::getParticleID( m_aObjectCID );
116 m_bAffectsMultipleObjects = (aParticleID == u"ALLELEMENTS");
117}
119{
120}
121
123{
124 m_xChartDocument = xChartModel;
125 rtl::Reference< Diagram > xDiagram = xChartModel->getFirstChartDiagram();
127 rtl::Reference< ChartType > xChartType = ChartModelHelper::getChartTypeOfSeries( xChartModel, xSeries );
128 sal_Int32 nDimensionCount = 0;
129 if (xDiagram)
130 nDimensionCount = xDiagram->getDimension();
131
132 bool bHasSeriesProperties = (m_eObjectType==OBJECTTYPE_DATA_SERIES);
133 bool bHasDataPointproperties = (m_eObjectType==OBJECTTYPE_DATA_POINT);
134
135 if( bHasSeriesProperties || bHasDataPointproperties )
136 {
140 m_bIsPieChartDataPoint = bHasDataPointproperties && ChartTypeHelper::isSupportingStartingAngle( xChartType );
141
142 if( bHasSeriesProperties )
143 {
149
151 .hasElements();
152 }
153 }
154
159
161 {
162 //show scale properties only for a single axis not for multiselection
164
166 {
168 if( xAxis.is() )
169 {
170 //no scale page for series axis
171 ScaleData aData( xAxis->getScaleData() );
172 if( aData.AxisType == chart2::AxisType::SERIES )
173 m_bHasScaleProperties = false;
174 if( aData.AxisType != chart2::AxisType::SERIES )
176
177 //is the crossing main axis a category axes?:
179 uno::Reference< XAxis > xCrossingMainAxis( AxisHelper::getCrossingMainAxis( xAxis, xCooSys ) );
180 if( xCrossingMainAxis.is() )
181 {
182 ScaleData aScale( xCrossingMainAxis->getScaleData() );
183 m_bIsCrossingAxisIsCategoryAxis = ( aScale.AxisType == chart2::AxisType::CATEGORY );
185 {
186 if (xChartModel)
188 }
189 }
190
191 sal_Int32 nCooSysIndex=0;
192 sal_Int32 nDimensionIndex=0;
193 sal_Int32 nAxisIndex=0;
194 if( AxisHelper::getIndicesForAxis( xAxis, xDiagram, nCooSysIndex, nDimensionIndex, nAxisIndex ) )
195 {
196 xChartType = AxisHelper::getFirstChartTypeWithSeriesAttachedToAxisIndex( xDiagram, nAxisIndex );
197 //show positioning controls only if they make sense
198 m_bSupportingAxisPositioning = ChartTypeHelper::isSupportingAxisPositioning( xChartType, nDimensionCount, nDimensionIndex );
199
200 //show axis origin only for secondary y axis
201 if( nDimensionIndex==1 && nAxisIndex==1 && ChartTypeHelper::isSupportingBaseValue( xChartType ) )
202 m_bShowAxisOrigin = true;
203
204 if ( nDimensionIndex == 0 && ( aData.AxisType == chart2::AxisType::CATEGORY || aData.AxisType == chart2::AxisType::DATE ) )
205 {
206 if (xChartModel)
207 {
208 ExplicitCategoriesProvider aExplicitCategoriesProvider( xCooSys, *xChartModel );
209 m_bComplexCategoriesAxis = aExplicitCategoriesProvider.hasComplexCategories();
210 }
211
214 }
215 }
216 }
217 }
218
219 //no staggering of labels for 3D axis
220 m_bCanAxisLabelsBeStaggered = nDimensionCount==2;
221 }
222
224 {
225 const std::vector< uno::Reference< chart2::data::XLabeledDataSequence > > & aDataSeqs( xSeries->getDataSequences2());
226 Sequence< double > aXValues, aYValues;
227 bool bXValuesFound = false, bYValuesFound = false;
228 m_nNbPoints = 0;
229 for( std::size_t i=0;
230 ! (bXValuesFound && bYValuesFound) && i<aDataSeqs.size();
231 ++i )
232 {
233 try
234 {
235 Reference< data::XDataSequence > xSeq( aDataSeqs[i]->getValues());
236 Reference< XPropertySet > xProp( xSeq, uno::UNO_QUERY_THROW );
237 OUString aRole;
238 if( xProp->getPropertyValue( "Role" ) >>= aRole )
239 {
240 if( !bXValuesFound && aRole == "values-x" )
241 {
242 aXValues = DataSequenceToDoubleSequence( xSeq );
243 bXValuesFound = true;
244 }
245 else if( !bYValuesFound && aRole == "values-y" )
246 {
247 aYValues = DataSequenceToDoubleSequence( xSeq );
248 bYValuesFound = true;
249 }
250 }
251 }
252 catch( const Exception & )
253 {
254 DBG_UNHANDLED_EXCEPTION("chart2");
255 }
256 }
257 if( !bXValuesFound && bYValuesFound )
258 {
259 // initialize with 1, 2, ...
260 //first category (index 0) matches with real number 1.0
261 aXValues.realloc( aYValues.getLength() );
262 auto pXValues = aXValues.getArray();
263 for( sal_Int32 i=0; i<aXValues.getLength(); ++i )
264 pXValues[i] = i+1;
265 bXValuesFound = true;
266 }
267
268 if( bXValuesFound && bYValuesFound &&
269 aXValues.hasElements() &&
270 aYValues.hasElements() )
271 {
274 m_nNbPoints = aValues.second.size();
275 }
276 }
277
278 //create gui name for this object
279 {
281 {
283 }
285 {
287 }
289 {
291 }
292 else
293 {
294 switch( m_eObjectType )
295 {
307 else
309 break;
310 default:
312 break;
313 }
314 }
315 }
316}
317
318const sal_uInt16 nNoArrowNoShadowDlg = 1101;
319
321 std::optional<Graphic> oAutoSymbolGraphic )
322{
323 m_oSymbolShapeProperties.emplace(std::move(rSymbolShapeProperties));
324 m_oAutoSymbolGraphic = std::move(oAutoSymbolGraphic);
325}
326
328{
330}
331
333 const SfxItemSet* pAttr,
334 const ObjectPropertiesDialogParameter* pDialogParameter,
335 const ViewElementListProvider* pViewElementListProvider,
336 const uno::Reference< util::XNumberFormatsSupplier >& xNumberFormatsSupplier)
337 : SfxTabDialogController(pParent, "modules/schart/ui/attributedialog.ui", "AttributeDialog", pAttr)
338 , m_pParameter( pDialogParameter )
339 , m_pViewElementListProvider( pViewElementListProvider )
340 , m_pNumberFormatter(nullptr)
341 , m_fAxisMinorStepWidthForErrorBarDecimals(0.1)
342 , m_bOKPressed(false)
343{
344 NumberFormatterWrapper aNumberFormatterWrapper( xNumberFormatsSupplier );
345 m_pNumberFormatter = aNumberFormatterWrapper.getSvNumberFormatter();
346
347 m_xDialog->set_title(pDialogParameter->getLocalizedName());
348
349 switch (pDialogParameter->getObjectType())
350 {
351 case OBJECTTYPE_TITLE:
352 AddTabPage("border", SchResId(STR_PAGE_BORDER), RID_SVXPAGE_LINE);
353 AddTabPage("area", SchResId(STR_PAGE_AREA), RID_SVXPAGE_AREA);
354 AddTabPage("transparent", SchResId(STR_PAGE_TRANSPARENCY), RID_SVXPAGE_TRANSPARENCE);
355 AddTabPage("fontname", SchResId(STR_PAGE_FONT), RID_SVXPAGE_CHAR_NAME);
356 AddTabPage("effects", SchResId(STR_PAGE_FONT_EFFECTS), RID_SVXPAGE_CHAR_EFFECTS);
357 AddTabPage("alignment", SchResId(STR_PAGE_ALIGNMENT), SchAlignmentTabPage::Create);
359 AddTabPage("asian", SchResId(STR_PAGE_ASIAN), RID_SVXPAGE_PARA_ASIAN);
360 break;
361
363 AddTabPage("border", SchResId(STR_PAGE_BORDER), RID_SVXPAGE_LINE);
364 AddTabPage("area", SchResId(STR_PAGE_AREA), RID_SVXPAGE_AREA);
365 AddTabPage("transparent", SchResId(STR_PAGE_TRANSPARENCY), RID_SVXPAGE_TRANSPARENCE);
366 AddTabPage("fontname", SchResId(STR_PAGE_FONT), RID_SVXPAGE_CHAR_NAME);
367 AddTabPage("effects", SchResId(STR_PAGE_FONT_EFFECTS), RID_SVXPAGE_CHAR_EFFECTS);
368 AddTabPage("legendpos", SchResId(STR_PAGE_POSITION), SchLegendPosTabPage::Create);
370 AddTabPage("asian", SchResId(STR_PAGE_ASIAN), RID_SVXPAGE_PARA_ASIAN);
371 break;
372
376 AddTabPage("options", SchResId(STR_PAGE_OPTIONS),SchOptionTabPage::Create);
378 AddTabPage("polaroptions", SchResId(STR_PAGE_OPTIONS), PolarOptionsTabPage::Create);
380 AddTabPage("datapointoption", SchResId(STR_PAGE_OPTIONS), DataPointOptionTabPage::Create);
381
383 AddTabPage("layout", SchResId(STR_PAGE_LAYOUT), SchLayoutTabPage::Create);
384
386 {
387 AddTabPage("area", SchResId(STR_PAGE_AREA), RID_SVXPAGE_AREA);
388 AddTabPage("transparent", SchResId(STR_PAGE_TRANSPARENCY), RID_SVXPAGE_TRANSPARENCE);
389 }
390 AddTabPage("border", SchResId( m_pParameter->HasAreaProperties() ? STR_PAGE_BORDER : STR_PAGE_LINE ), RID_SVXPAGE_LINE);
391 break;
392
395 AddTabPage("border", SchResId(STR_PAGE_BORDER), RID_SVXPAGE_LINE);
396 AddTabPage("datalabels", SchResId(STR_OBJECT_DATALABELS), DataLabelsTabPage::Create);
397 AddTabPage("fontname", SchResId(STR_PAGE_FONT), RID_SVXPAGE_CHAR_NAME);
398 AddTabPage("effects", SchResId(STR_PAGE_FONT_EFFECTS), RID_SVXPAGE_CHAR_EFFECTS);
400 AddTabPage("asian", SchResId(STR_PAGE_ASIAN), RID_SVXPAGE_PARA_ASIAN);
401
402 break;
403
404 case OBJECTTYPE_AXIS:
405 {
407 {
408 AddTabPage("scale", SchResId(STR_PAGE_SCALE), ScaleTabPage::Create);
409 //no positioning page for z axes so far as the tickmarks are not shown so far
410 AddTabPage("axispos", SchResId(STR_PAGE_POSITIONING), AxisPositionsTabPage::Create);
411 }
412 AddTabPage("border", SchResId(STR_PAGE_LINE), RID_SVXPAGE_LINE);
413 AddTabPage("axislabel", SchResId(STR_OBJECT_LABEL), SchAxisLabelTabPage::Create);
415 AddTabPage("numberformat", SchResId(STR_PAGE_NUMBERS), RID_SVXPAGE_NUMBERFORMAT);
416 AddTabPage("fontname", SchResId(STR_PAGE_FONT), RID_SVXPAGE_CHAR_NAME);
417 AddTabPage("effects", SchResId(STR_PAGE_FONT_EFFECTS), RID_SVXPAGE_CHAR_EFFECTS);
419 AddTabPage("asian", SchResId(STR_PAGE_ASIAN), RID_SVXPAGE_PARA_ASIAN);
420 break;
421 }
422
424 AddTabPage("xerrorbar", SchResId(STR_PAGE_XERROR_BARS), ErrorBarsTabPage::Create);
425 AddTabPage("border", SchResId(STR_PAGE_LINE), RID_SVXPAGE_LINE);
426 break;
427
429 AddTabPage("yerrorbar", SchResId(STR_PAGE_YERROR_BARS), ErrorBarsTabPage::Create);
430 AddTabPage("border", SchResId(STR_PAGE_LINE), RID_SVXPAGE_LINE);
431 break;
432
434 break;
435
436 case OBJECTTYPE_GRID:
440 AddTabPage("border", SchResId(STR_PAGE_LINE), RID_SVXPAGE_LINE);
441 break;
442
444 AddTabPage("trendline", SchResId(STR_PAGE_TRENDLINE_TYPE), TrendlineTabPage::Create);
445 AddTabPage("border", SchResId(STR_PAGE_LINE), RID_SVXPAGE_LINE);
446 break;
447
450 case OBJECTTYPE_PAGE:
454 AddTabPage("border", SchResId(STR_PAGE_BORDER), RID_SVXPAGE_LINE);
455 AddTabPage("area", SchResId(STR_PAGE_AREA), RID_SVXPAGE_AREA);
456 AddTabPage("transparent", SchResId(STR_PAGE_TRANSPARENCY), RID_SVXPAGE_TRANSPARENCE);
457 break;
458
462 // nothing
463 break;
465 AddTabPage("datatable", SchResId(STR_DATA_TABLE), DataTableTabPage::Create);
466 AddTabPage("border", SchResId(STR_PAGE_LINE), RID_SVXPAGE_LINE);
467 AddTabPage("area", SchResId(STR_PAGE_AREA), RID_SVXPAGE_AREA);
468 AddTabPage("fontname", SchResId(STR_PAGE_FONT), RID_SVXPAGE_CHAR_NAME);
469 AddTabPage("effects", SchResId(STR_PAGE_FONT_EFFECTS), RID_SVXPAGE_CHAR_EFFECTS);
470 break;
472 AddTabPage("border", SchResId(STR_PAGE_BORDER), RID_SVXPAGE_LINE);
473 AddTabPage("area", SchResId(STR_PAGE_AREA), RID_SVXPAGE_AREA);
474 AddTabPage("transparent", SchResId(STR_PAGE_TRANSPARENCY), RID_SVXPAGE_TRANSPARENCE);
475 AddTabPage("fontname", SchResId(STR_PAGE_FONT), RID_SVXPAGE_CHAR_NAME);
476 AddTabPage("effects", SchResId(STR_PAGE_FONT_EFFECTS), RID_SVXPAGE_CHAR_EFFECTS);
477 AddTabPage("numberformat", SchResId(STR_PAGE_NUMBERS), RID_SVXPAGE_NUMBERFORMAT);
479 {
480 /* When rotation is supported for equation text boxes, use
481 SchAlignmentTabPage::Create here. The special
482 SchAlignmentTabPage::CreateWithoutRotation can be deleted. */
483 AddTabPage("alignment", SchResId(STR_PAGE_ALIGNMENT), SchAlignmentTabPage::CreateWithoutRotation);
484 }
485 break;
486 default:
487 break;
488 }
489
490 // used to find out if user left the dialog with OK. When OK is pressed but
491 // no changes were done, Cancel is returned by the SfxTabDialog. See method
492 // DialogWasClosedWithOK.
493 GetOKButton().connect_clicked(LINK(this, SchAttribTabDlg, OKPressed));
494}
495
497{
498}
499
500void SchAttribTabDlg::PageCreated(const OUString& rId, SfxTabPage &rPage)
501{
502 SfxAllItemSet aSet(*(GetInputSetImpl()->GetPool()));
503 if (rId == "border")
504 {
508 aSet.Put (SfxUInt16Item(SID_PAGE_TYPE,0));
509 aSet.Put (SfxUInt16Item(SID_DLG_TYPE,nNoArrowNoShadowDlg));
510
512 {
513 aSet.Put(OfaPtrItem(SID_OBJECT_LIST,m_pViewElementListProvider->GetSymbolList()));
515 aSet.Put(SfxTabDialogItem(SID_ATTR_SET, *m_oSymbolShapeProperties));
518 }
519 rPage.PageCreated(aSet);
520 }
521 else if (rId == "area")
522 {
528 aSet.Put(SfxUInt16Item(SID_PAGE_TYPE,0));
529 aSet.Put(SfxUInt16Item(SID_DLG_TYPE,nNoArrowNoShadowDlg));
530 rPage.PageCreated(aSet);
531 }
532 else if (rId == "transparent")
533 {
534 aSet.Put (SfxUInt16Item(SID_PAGE_TYPE,0));
535 aSet.Put (SfxUInt16Item(SID_DLG_TYPE,nNoArrowNoShadowDlg));
536 rPage.PageCreated(aSet);
537 }
538 else if (rId == "fontname")
539 {
540 aSet.Put (SvxFontListItem(m_pViewElementListProvider->getFontList(), SID_ATTR_CHAR_FONTLIST));
541 rPage.PageCreated(aSet);
542 }
543 else if (rId == "effects")
544 {
545 aSet.Put (SfxUInt16Item(SID_DISABLE_CTL,DISABLE_CASEMAP));
546 rPage.PageCreated(aSet);
547 }
548 else if (rId == "axislabel")
549 {
550 bool bShowStaggeringControls = m_pParameter->CanAxisLabelsBeStaggered();
551 auto & rLabelPage = static_cast<SchAxisLabelTabPage&>(rPage);
552 rLabelPage.ShowStaggeringControls( bShowStaggeringControls );
553 rLabelPage.SetComplexCategories( m_pParameter->IsComplexCategoriesAxis() );
554 }
555 else if (rId == "axispos")
556 {
557 AxisPositionsTabPage* pPage = dynamic_cast< AxisPositionsTabPage* >( &rPage );
558 if(pPage)
559 {
562 {
565 }
568 }
569 }
570 else if (rId == "scale")
571 {
572 ScaleTabPage* pScaleTabPage = dynamic_cast< ScaleTabPage* >( &rPage );
573 if(pScaleTabPage)
574 {
575 pScaleTabPage->SetNumFormatter( m_pNumberFormatter );
576 pScaleTabPage->ShowAxisOrigin( m_pParameter->ShowAxisOrigin() );
577 }
578 }
579 else if (rId == "datalabels")
580 {
581 DataLabelsTabPage* pLabelPage = dynamic_cast< DataLabelsTabPage* >( &rPage );
582 if( pLabelPage )
584 }
585 else if (rId == "numberformat")
586 {
587 aSet.Put (SvxNumberInfoItem( m_pNumberFormatter, SID_ATTR_NUMBERFORMAT_INFO));
588 rPage.PageCreated(aSet);
589 }
590 else if (rId == "xerrorbar")
591 {
592 ErrorBarsTabPage * pTabPage = dynamic_cast< ErrorBarsTabPage * >( &rPage );
593 OSL_ASSERT( pTabPage );
594 if( pTabPage )
595 {
599 }
600 }
601 else if (rId == "yerrorbar")
602 {
603 ErrorBarsTabPage * pTabPage = dynamic_cast< ErrorBarsTabPage * >( &rPage );
604 OSL_ASSERT( pTabPage );
605 if( pTabPage )
606 {
610 }
611 }
612 else if (rId == "options")
613 {
614 SchOptionTabPage* pTabPage = dynamic_cast< SchOptionTabPage* >( &rPage );
615 if( pTabPage && m_pParameter )
618 }
619 else if (rId == "trendline")
620 {
621 TrendlineTabPage* pTrendlineTabPage = dynamic_cast< TrendlineTabPage* >( &rPage );
622 if(pTrendlineTabPage)
623 {
624 pTrendlineTabPage->SetNumFormatter( m_pNumberFormatter );
625 pTrendlineTabPage->SetNbPoints( m_pParameter->getNbPoints() );
626 }
627 }
628}
629
630IMPL_LINK(SchAttribTabDlg, OKPressed, weld::Button&, rButton, void)
631{
632 m_bOKPressed = true;
633 OkHdl(rButton);
634}
635
636} //namespace chart
637
638/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
Reference< XExecutableDialog > m_xDialog
const SfxPoolItem * Put(const SfxPoolItem &rItem, sal_uInt16 nWhich)
void AddTabPage(const OUString &rName, CreateTabPage pCreateFunc, GetTabPageRanges pRangesFunc)
virtual weld::Button & GetOKButton() const override
SfxItemSet * GetInputSetImpl()
virtual void PageCreated(const SfxAllItemSet &aSet)
static bool IsCTLFontEnabled()
static rtl::Reference< ::chart::Axis > getCrossingMainAxis(const rtl::Reference< ::chart::Axis > &xAxis, const rtl::Reference< ::chart::BaseCoordinateSystem > &xCooSys)
Definition: AxisHelper.cxx:595
static rtl::Reference< ::chart::BaseCoordinateSystem > getCoordinateSystemOfAxis(const rtl::Reference< ::chart::Axis > &xAxis, const rtl::Reference< ::chart::Diagram > &xDiagram)
Definition: AxisHelper.cxx:982
static rtl::Reference< ::chart::ChartType > getFirstChartTypeWithSeriesAttachedToAxisIndex(const rtl::Reference< ::chart::Diagram > &xDiagram, const sal_Int32 nAttachedAxisIndex)
static bool getIndicesForAxis(const rtl::Reference< ::chart::Axis > &xAxis, const rtl::Reference< ::chart::BaseCoordinateSystem > &xCooSys, sal_Int32 &rOutDimensionIndex, sal_Int32 &rOutAxisIndex)
void SetNumFormatter(SvNumberFormatter *pFormatter)
void SetCrossingAxisIsCategoryAxis(bool bCrossingAxisIsCategoryAxis)
void SupportCategoryPositioning(bool bSupportCategoryPositioning)
void SupportAxisPositioning(bool bSupportAxisPositioning)
void SetCategories(const css::uno::Sequence< OUString > &rCategories)
static std::unique_ptr< SfxTabPage > Create(weld::Container *pPage, weld::DialogController *pController, const SfxItemSet *rInAttrs)
static rtl::Reference< ChartType > getChartTypeOfSeries(const rtl::Reference<::chart::ChartModel > &xModel, const rtl::Reference< ::chart::DataSeries > &xGivenDataSeries)
static bool isSupportingAxisPositioning(const rtl::Reference< ::chart::ChartType > &xChartType, sal_Int32 nDimensionCount, sal_Int32 nDimensionIndex)
static bool isSupportingBaseValue(const rtl::Reference< ::chart::ChartType > &xChartType)
static css::uno::Sequence< sal_Int32 > getSupportedMissingValueTreatments(const rtl::Reference< ::chart::ChartType > &xChartType)
static bool isSupportingAreaProperties(const rtl::Reference< ::chart::ChartType > &xChartType, sal_Int32 nDimensionCount)
static bool isSupportingBarConnectors(const rtl::Reference< ::chart::ChartType > &xChartType, sal_Int32 nDimensionCount)
static bool isSupportingCategoryPositioning(const rtl::Reference< ::chart::ChartType > &xChartType, sal_Int32 nDimensionCount)
static bool isSupportingOverlapAndGapWidthProperties(const rtl::Reference< ::chart::ChartType > &xChartType, sal_Int32 nDimensionCount)
static bool isSupportingStatisticProperties(const rtl::Reference< ::chart::ChartType > &xChartType, sal_Int32 nDimensionCount)
static bool isSupportingStartingAngle(const rtl::Reference< ::chart::ChartType > &xChartType)
static bool isSupportingGeometryProperties(const rtl::Reference< ::chart::ChartType > &xChartType, sal_Int32 nDimensionCount)
static bool isSupportingSymbolProperties(const rtl::Reference< ::chart::ChartType > &xChartType, sal_Int32 nDimensionCount)
static bool isSupportingSecondaryAxis(const rtl::Reference< ::chart::ChartType > &xChartType, sal_Int32 nDimensionCount)
static std::unique_ptr< SfxTabPage > Create(weld::Container *pPage, weld::DialogController *pController, const SfxItemSet *rInAttrs)
void SetNumberFormatter(SvNumberFormatter *pFormatter)
static std::unique_ptr< SfxTabPage > Create(weld::Container *pPage, weld::DialogController *pController, const SfxItemSet *rInAttrs)
static std::unique_ptr< SfxTabPage > Create(weld::Container *pPage, weld::DialogController *pController, const SfxItemSet *rInAttrs)
static css::uno::Sequence< OUString > getExplicitSimpleCategories(ChartModel &rModel)
static std::unique_ptr< SfxTabPage > Create(weld::Container *pPage, weld::DialogController *pController, const SfxItemSet *rInAttrs)
void SetAxisMinorStepWidthForErrorBarDecimals(double fMinorStepWidth)
void SetErrorBarType(ErrorBarResources::tErrorBarType eNewType)
void SetChartDocumentForRangeChoosing(const rtl::Reference<::chart::ChartModel > &xChartDocument)
SvNumberFormatter * getSvNumberFormatter() const
static rtl::Reference< ::chart::DataSeries > getDataSeriesForCID(std::u16string_view rObjectCID, const rtl::Reference<::chart::ChartModel > &xChartModel)
static std::u16string_view getParticleID(std::u16string_view rCID)
static rtl::Reference< ::chart::Axis > getAxisForCID(std::u16string_view rObjectCID, const rtl::Reference<::chart::ChartModel > &xChartModel)
static OUString getName_ObjectForSeries(ObjectType eObjectType, std::u16string_view rSeriesCID, const rtl::Reference<::chart::ChartModel > &xChartDocument)
static OUString getName(ObjectType eObjectType, bool bPlural=false)
static OUString getAxisName(std::u16string_view rObjectCID, const rtl::Reference<::chart::ChartModel > &xChartModel)
static OUString getGridName(std::u16string_view rObjectCID, const rtl::Reference<::chart::ChartModel > &xChartModel)
static OUString getTitleName(std::u16string_view rObjectCID, const rtl::Reference<::chart::ChartModel > &xChartModel)
static OUString getName_ObjectForAllSeries(ObjectType eObjectType)
void init(const rtl::Reference<::chart::ChartModel > &xModel)
rtl::Reference<::chart::ChartModel > m_xChartDocument
const css::uno::Sequence< OUString > & GetCategories() const
css::uno::Sequence< OUString > m_aCategories
const rtl::Reference<::chart::ChartModel > & getDocument() const
static std::unique_ptr< SfxTabPage > Create(weld::Container *pPage, weld::DialogController *pController, const SfxItemSet *rInAttrs)
void SetNumFormatter(SvNumberFormatter *pFormatter)
Definition: tp_Scale.cxx:499
void ShowAxisOrigin(bool bShowOrigin)
Definition: tp_Scale.cxx:586
static std::unique_ptr< SfxTabPage > Create(weld::Container *pPage, weld::DialogController *pController, const SfxItemSet *rInAttrs)
Definition: tp_Scale.cxx:229
static std::unique_ptr< SfxTabPage > CreateWithoutRotation(weld::Container *pPage, weld::DialogController *pController, const SfxItemSet *rInAttrs)
static std::unique_ptr< SfxTabPage > Create(weld::Container *pPage, weld::DialogController *pController, const SfxItemSet *rInAttrs)
const ObjectPropertiesDialogParameter *const m_pParameter
SchAttribTabDlg(weld::Window *pParent, const SfxItemSet *pAttr, const ObjectPropertiesDialogParameter *pDialogParameter, const ViewElementListProvider *pViewElementListProvider, const css::uno::Reference< css::util::XNumberFormatsSupplier > &xNumberFormatsSupplier)
virtual void PageCreated(const OUString &rId, SfxTabPage &rPage) override
virtual ~SchAttribTabDlg() override
std::optional< Graphic > m_oAutoSymbolGraphic
const ViewElementListProvider *const m_pViewElementListProvider
std::optional< SfxItemSet > m_oSymbolShapeProperties
SvNumberFormatter * m_pNumberFormatter
void setSymbolInformation(SfxItemSet &&rSymbolShapeProperties, std::optional< Graphic > oAutoSymbolGraphic)
void SetAxisMinorStepWidthForErrorBarDecimals(double fMinorStepWidth)
void ShowStaggeringControls(bool bShowStaggeringControls)
static std::unique_ptr< SfxTabPage > Create(weld::Container *pPage, weld::DialogController *pController, const SfxItemSet *rInAttrs)
static std::unique_ptr< SfxTabPage > Create(weld::Container *pPage, weld::DialogController *pController, const SfxItemSet *rInAttrs)
static std::unique_ptr< SfxTabPage > Create(weld::Container *pPage, weld::DialogController *pController, const SfxItemSet *rInAttrs)
static std::unique_ptr< SfxTabPage > Create(weld::Container *pPage, weld::DialogController *pController, const SfxItemSet *rInAttrs)
void Init(bool bProvidesSecondaryYAxis, bool bProvidesOverlapAndGapWidth, bool bProvidesBarConnectors)
static std::unique_ptr< SfxTabPage > Create(weld::Container *pPage, weld::DialogController *pController, const SfxItemSet *rInAttrs)
void SetNumFormatter(SvNumberFormatter *pFormatter)
void SetNbPoints(sal_Int32 nNbPoints)
XGradientListRef GetGradientList() const
void connect_clicked(const Link< Button &, void > &rLink)
#define DBG_UNHANDLED_EXCEPTION(...)
float u
#define DISABLE_CASEMAP
constexpr OUStringLiteral aData
bool IsAsianTypographyEnabled()
std::pair< std::vector< double >, std::vector< double > > tDoubleVectorPair
tDoubleVectorPair cleanup(const css::uno::Sequence< double > &rXValues, const css::uno::Sequence< double > &rYValues, Pred aPred)
takes the given x- and y-values and copies them into the resulting pair, which contains x-values in t...
@ OBJECTTYPE_DATA_SERIES
@ OBJECTTYPE_DATA_LABELS
@ OBJECTTYPE_DATA_TABLE
@ OBJECTTYPE_DIAGRAM
@ OBJECTTYPE_LEGEND_ENTRY
@ OBJECTTYPE_DATA_ERRORS_X
@ OBJECTTYPE_DATA_STOCK_LOSS
@ OBJECTTYPE_DIAGRAM_FLOOR
@ OBJECTTYPE_DATA_POINT
@ OBJECTTYPE_DATA_STOCK_RANGE
@ OBJECTTYPE_UNKNOWN
@ OBJECTTYPE_SUBGRID
@ OBJECTTYPE_DATA_ERRORS_Y
@ OBJECTTYPE_AXIS_UNITLABEL
@ OBJECTTYPE_DATA_CURVE_EQUATION
@ OBJECTTYPE_DATA_STOCK_GAIN
@ OBJECTTYPE_DATA_AVERAGE_LINE
@ OBJECTTYPE_DATA_ERRORS_Z
@ OBJECTTYPE_DATA_CURVE
@ OBJECTTYPE_DATA_LABEL
@ OBJECTTYPE_DIAGRAM_WALL
const sal_uInt16 nNoArrowNoShadowDlg
OOO_DLLPUBLIC_CHARTTOOLS css::uno::Sequence< double > DataSequenceToDoubleSequence(const css::uno::Reference< css::chart2::data::XDataSequence > &xDataSequence)
chart2::XDataSequence -> uno::Sequence< double >
OUString OOO_DLLPUBLIC_CHARTTOOLS SchResId(TranslateId aId)
Definition: ResId.cxx:24
IMPL_LINK(StackingResourceGroup, StackingChangeHdl, weld::Toggleable &, rRadio, void)
@ Exception
int i