LibreOffice Module chart2 (master) 1
ChartItemPool.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 "ChartItemPool.hxx"
22#include <DataSeries.hxx>
23#include <FormattedString.hxx>
24#include <Legend.hxx>
25#include <Axis.hxx>
26#include <svx/chrtitem.hxx>
27#include <svx/sdangitm.hxx>
28#include <svx/svdpool.hxx>
29#include <svx/svx3ditems.hxx>
30#include <svl/intitem.hxx>
31#include <editeng/editeng.hxx>
32#include <editeng/brushitem.hxx>
33#include <editeng/eeitem.hxx>
34#include <editeng/sizeitem.hxx>
35#include <svl/stritem.hxx>
36#include <svl/ilstitem.hxx>
38#include <editeng/editids.hrc>
39#include <svx/svxids.hrc>
40#include <vector>
41
42#include <com/sun/star/chart2/LegendPosition.hpp>
43#include <com/sun/star/chart2/MovingAverageType.hpp>
44#include <com/sun/star/frame/XTerminateListener.hpp>
45#include <com/sun/star/frame/Desktop.hpp>
46
47namespace chart
48{
49
51 SfxItemPool( "ChartItemPool" , SCHATTR_START, SCHATTR_END, nullptr, nullptr ),
52 pItemInfos(new SfxItemInfo[SCHATTR_END - SCHATTR_START + 1])
53{
54 /**************************************************************************
55 * PoolDefaults
56 **************************************************************************/
57 std::vector<SfxPoolItem*>* ppPoolDefaults = new std::vector<SfxPoolItem*>(SCHATTR_END - SCHATTR_START + 1);
58 std::vector<SfxPoolItem*>& rPoolDefaults = *ppPoolDefaults;
72
73 //legend
74 rPoolDefaults[SCHATTR_LEGEND_POS - SCHATTR_START] = new SfxInt32Item(SCHATTR_LEGEND_POS, sal_Int32(css::chart2::LegendPosition_LINE_END) );
77
78 //text
81
82 //statistic
84 rPoolDefaults[SCHATTR_STAT_KIND_ERROR - SCHATTR_START] = new SvxChartKindErrorItem (SvxChartKindError::NONE, SCHATTR_STAT_KIND_ERROR);
89 rPoolDefaults[SCHATTR_STAT_INDICATE - SCHATTR_START] = new SvxChartIndicateItem (SvxChartIndicate::NONE, SCHATTR_STAT_INDICATE);
93
94 rPoolDefaults[SCHATTR_STYLE_DEEP - SCHATTR_START] = new SfxBoolItem (SCHATTR_STYLE_DEEP, false);
95 rPoolDefaults[SCHATTR_STYLE_3D - SCHATTR_START] = new SfxBoolItem (SCHATTR_STYLE_3D, false);
101 rPoolDefaults[SCHATTR_STYLE_SPLINES - SCHATTR_START] = new SfxInt32Item (SCHATTR_STYLE_SPLINES, 0); //Bug: was Bool! test ->Fileformat (touches only 5's)
104
105 rPoolDefaults[SCHATTR_AXIS - SCHATTR_START] = new SfxInt32Item(SCHATTR_AXIS,2); //2 = Y-Axis!!!
106
107 //axis scale
127
128 //axis position
137
138 //axis label
140 rPoolDefaults[SCHATTR_AXIS_LABEL_ORDER - SCHATTR_START] = new SvxChartTextOrderItem(SvxChartTextOrder::SideBySide, SCHATTR_AXIS_LABEL_ORDER);
143
149
150 // new for New Chart
158 rPoolDefaults[SCHATTR_STARTING_ANGLE - SCHATTR_START] = new SdrAngleItem( SCHATTR_STARTING_ANGLE, 9000_deg100 );
159 rPoolDefaults[SCHATTR_CLOCKWISE - SCHATTR_START] = new SfxBoolItem( SCHATTR_CLOCKWISE, false );
160
165
167
168 rPoolDefaults[SCHATTR_REGRESSION_TYPE - SCHATTR_START] = new SvxChartRegressItem (SvxChartRegress::NONE, SCHATTR_REGRESSION_TYPE);
180 rPoolDefaults[SCHATTR_REGRESSION_MOVING_TYPE - SCHATTR_START] = new SfxInt32Item(SCHATTR_REGRESSION_MOVING_TYPE, css::chart2::MovingAverageType::Prior);
181
186
187 /**************************************************************************
188 * ItemInfos
189 **************************************************************************/
190 const sal_uInt16 nMax = SCHATTR_END - SCHATTR_START + 1;
191 for( sal_uInt16 i = 0; i < nMax; i++ )
192 {
193 pItemInfos[i]._nSID = 0;
194 pItemInfos[i]._bPoolable = true;
195 }
196
197 // slot ids differing from which ids
198 pItemInfos[SCHATTR_SYMBOL_BRUSH - SCHATTR_START]._nSID = SID_ATTR_BRUSH;
199 pItemInfos[SCHATTR_STYLE_SYMBOL - SCHATTR_START]._nSID = SID_ATTR_SYMBOLTYPE;
200 pItemInfos[SCHATTR_SYMBOL_SIZE - SCHATTR_START]._nSID = SID_ATTR_SYMBOLSIZE;
201
202 SetDefaults(ppPoolDefaults);
204}
205
207 SfxItemPool(rPool)
208{
209}
210
212{
213 Delete();
214 // release and delete static pool default items
215 ReleaseDefaults(true);
216}
217
219{
220 return new ChartItemPool(*this);
221}
222
223MapUnit ChartItemPool::GetMetric(sal_uInt16 /* nWhich */) const
224{
225 return MapUnit::Map100thMM;
226}
227
229{
230 // There are various default values which want to call
231 // OutputDevice::GetDefaultFont. Unfortunately, when processing
232 // UNO methods which may get called from out of process, this
233 // happens on a thread that does not take the SolarMutex, which
234 // causes trouble in ImplFontCache.
235 // Trying to take the SolarMutex when initialising these default
236 // leads to ABBA deadlocks.
237 // So rather just trigger the initialisation of these things here.
242
243 return new ChartItemPool();
244}
245
246} // namespace chart
247
248/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
constexpr TypedWhichId< SfxInt32Item > SCHATTR_AXIS_TICKS(SCHATTR_AXIS_POSITION_START)
constexpr TypedWhichId< SfxBoolItem > SCHATTR_AXIS_LABEL_BREAK(SCHATTR_AXIS_LABEL_START+3)
constexpr TypedWhichId< SfxStringItem > SCHATTR_STAT_RANGE_POS(SCHATTR_STAT_START+7)
constexpr TypedWhichId< SvxChartRegressItem > SCHATTR_REGRESSION_TYPE(SCHATTR_REGRESSION_START)
constexpr TypedWhichId< SfxInt32Item > SCHATTR_NUM_OF_LINES_FOR_BAR(SCHATTR_CHARTTYPE_START+3)
constexpr TypedWhichId< SfxBoolItem > SCHATTR_AXIS_AUTO_DATEAXIS(SCHATTR_AXIS_START+15)
constexpr TypedWhichId< SfxBoolItem > SCHATTR_AXIS_LABEL_OVERLAP(SCHATTR_AXIS_LABEL_START+2)
constexpr TypedWhichId< SfxBoolItem > SCHATTR_TEXT_STACKED(SCHATTR_TEXT_START+1)
constexpr TypedWhichId< SvxDoubleItem > SCHATTR_REGRESSION_EXTRAPOLATE_FORWARD(SCHATTR_REGRESSION_START+5)
constexpr sal_uInt16 SCHATTR_START
constexpr TypedWhichId< SfxBoolItem > SCHATTR_REGRESSION_SHOW_EQUATION(SCHATTR_REGRESSION_START+1)
constexpr TypedWhichId< SfxInt32Item > SCHATTR_AXIS_STEP_HELP(SCHATTR_AXIS_START+10)
constexpr TypedWhichId< SvxChartIndicateItem > SCHATTR_STAT_INDICATE(SCHATTR_STAT_START+6)
constexpr TypedWhichId< SfxBoolItem > SCHATTR_DATADESCR_SHOW_SYMBOL(SCHATTR_DATADESCR_START+3)
constexpr TypedWhichId< SfxBoolItem > SCHATTR_AXIS_AUTO_MAX(SCHATTR_AXIS_START+4)
constexpr TypedWhichId< SfxBoolItem > SCHATTR_STYLE_DEEP(SCHATTR_STYLE_START)
constexpr TypedWhichId< SvxChartTextOrderItem > SCHATTR_AXIS_LABEL_ORDER(SCHATTR_AXIS_LABEL_START+1)
constexpr TypedWhichId< SfxBoolItem > SCHATTR_STOCK_UPDOWN(SCHATTR_AXIS_END+3)
constexpr TypedWhichId< SfxBoolItem > SCHATTR_AXIS_AUTO_STEP_MAIN(SCHATTR_AXIS_START+6)
constexpr TypedWhichId< SvxSizeItem > SCHATTR_SYMBOL_SIZE(SCHATTR_AXIS_END+4)
constexpr TypedWhichId< SfxBoolItem > SCHATTR_STOCK_VOLUME(SCHATTR_AXIS_END+2)
constexpr TypedWhichId< SfxUInt32Item > SCHATTR_AXIS_CROSSING_MAIN_AXIS_NUMBERFORMAT(SCHATTR_AXIS_POSITION_START+4)
constexpr TypedWhichId< SfxInt32Item > SCHATTR_DATADESCR_PLACEMENT(SCHATTR_DATADESCR_START+6)
constexpr TypedWhichId< SfxBoolItem > SCHATTR_DATA_TABLE_OUTLINE(SCHATTR_DATA_TABLE_START+2)
constexpr TypedWhichId< SfxBoolItem > SCHATTR_AXIS_AUTO_STEP_HELP(SCHATTR_AXIS_START+9)
constexpr TypedWhichId< SfxBoolItem > SCHATTR_REGRESSION_SET_INTERCEPT(SCHATTR_REGRESSION_START+7)
constexpr TypedWhichId< SfxBoolItem > SCHATTR_STYLE_STACKED(SCHATTR_STYLE_START+6)
constexpr TypedWhichId< SfxBoolItem > SCHATTR_DATADESCR_CUSTOM_LEADER_LINES(SCHATTR_DATADESCR_START+9)
constexpr TypedWhichId< SfxInt32Item > SCHATTR_SPLINE_ORDER(SCHATTR_CHARTTYPE_START+4)
constexpr TypedWhichId< SvxDoubleItem > SCHATTR_AXIS_MIN(SCHATTR_AXIS_START+3)
constexpr TypedWhichId< SfxInt32Item > SCHATTR_MISSING_VALUE_TREATMENT(SCHATTR_CHARTTYPE_START+9)
constexpr TypedWhichId< SfxBoolItem > SCHATTR_AXIS_REVERSE(SCHATTR_AXIS_START+1)
constexpr TypedWhichId< SfxBoolItem > SCHATTR_STAT_ERRORBAR_TYPE(SCHATTR_STAT_START+9)
constexpr TypedWhichId< SvxDoubleItem > SCHATTR_STAT_BIGERROR(SCHATTR_STAT_START+3)
constexpr TypedWhichId< SfxInt32Item > SCHATTR_AXISTYPE(SCHATTR_AXIS_START)
constexpr TypedWhichId< SfxInt32Item > SCHATTR_REGRESSION_MOVING_TYPE(SCHATTR_REGRESSION_START+12)
constexpr TypedWhichId< SfxBoolItem > SCHATTR_AXIS_SHOWDESCR(SCHATTR_AXIS_LABEL_START)
constexpr TypedWhichId< SfxInt32Item > SCHATTR_AXIS(SCHATTR_STYLE_END+1)
constexpr TypedWhichId< SfxStringItem > SCHATTR_REGRESSION_CURVE_NAME(SCHATTR_REGRESSION_START+9)
constexpr TypedWhichId< SfxBoolItem > SCHATTR_DATADESCR_SHOW_DATA_SERIES_NAME(SCHATTR_DATADESCR_START+12)
constexpr TypedWhichId< SfxStringItem > SCHATTR_REGRESSION_YNAME(SCHATTR_REGRESSION_START+11)
constexpr TypedWhichId< SfxIntegerListItem > SCHATTR_AVAILABLE_MISSING_VALUE_TREATMENTS(SCHATTR_CHARTTYPE_START+10)
constexpr TypedWhichId< SfxInt32Item > SCHATTR_SPLINE_RESOLUTION(SCHATTR_CHARTTYPE_START+5)
constexpr TypedWhichId< SfxBoolItem > SCHATTR_STYLE_PERCENT(SCHATTR_STYLE_START+5)
constexpr TypedWhichId< SvxChartKindErrorItem > SCHATTR_STAT_KIND_ERROR(SCHATTR_STAT_START+1)
constexpr TypedWhichId< SfxInt32Item > SCHATTR_REGRESSION_DEGREE(SCHATTR_REGRESSION_START+3)
constexpr TypedWhichId< SfxBoolItem > SCHATTR_PERCENT_NUMBERFORMAT_SOURCE(SCHATTR_DATADESCR_START+11)
constexpr TypedWhichId< SfxInt32Item > SCHATTR_STYLE_SYMBOL(SCHATTR_STYLE_START+8)
constexpr TypedWhichId< SfxBoolItem > SCHATTR_AXIS_AUTO_MIN(SCHATTR_AXIS_START+2)
constexpr TypedWhichId< SfxBoolItem > SCHATTR_AXIS_SHIFTED_CATEGORY_POSITION(SCHATTR_AXIS_POSITION_START+5)
constexpr TypedWhichId< SfxInt32Item > SCHATTR_STYLE_BASETYPE(SCHATTR_STYLE_START+3)
constexpr TypedWhichId< SvxDoubleItem > SCHATTR_AXIS_POSITION_VALUE(SCHATTR_AXIS_POSITION_START+3)
constexpr TypedWhichId< SfxStringItem > SCHATTR_DATADESCR_SEPARATOR(SCHATTR_DATADESCR_START+5)
constexpr TypedWhichId< SfxUInt32Item > SCHATTR_PERCENT_NUMBERFORMAT_VALUE(SCHATTR_DATADESCR_START+10)
#define CHAXIS_MARK_OUTER
constexpr TypedWhichId< SvxDoubleItem > SCHATTR_AXIS_ORIGIN(SCHATTR_AXIS_START+18)
constexpr TypedWhichId< SfxIntegerListItem > SCHATTR_DATADESCR_AVAILABLE_PLACEMENTS(SCHATTR_DATADESCR_START+7)
constexpr TypedWhichId< SfxInt32Item > SCHATTR_AXIS_HELP_TIME_UNIT(SCHATTR_AXIS_START+11)
constexpr TypedWhichId< SdrAngleItem > SCHATTR_TEXT_DEGREES(SCHATTR_TEXT_START)
constexpr TypedWhichId< SfxBoolItem > SCHATTR_DATA_TABLE_HORIZONTAL_BORDER(SCHATTR_DATA_TABLE_START+0)
constexpr TypedWhichId< SfxBoolItem > SCHATTR_HIDE_LEGEND_ENTRY(SCHATTR_CHARTTYPE_START+12)
constexpr TypedWhichId< SfxBoolItem > SCHATTR_STYLE_3D(SCHATTR_STYLE_START+1)
constexpr TypedWhichId< SfxBoolItem > SCHATTR_CLOCKWISE(SCHATTR_CHARTTYPE_START+8)
constexpr TypedWhichId< SfxInt32Item > SCHATTR_BAR_GAPWIDTH(SCHATTR_CHARTTYPE_START+1)
constexpr TypedWhichId< SfxInt32Item > SCHATTR_AXIS_TIME_RESOLUTION(SCHATTR_AXIS_START+13)
constexpr TypedWhichId< SfxBoolItem > SCHATTR_REGRESSION_SHOW_COEFF(SCHATTR_REGRESSION_START+2)
constexpr TypedWhichId< SfxBoolItem > SCHATTR_BAR_CONNECT(SCHATTR_CHARTTYPE_START+2)
constexpr TypedWhichId< SvxDoubleItem > SCHATTR_AXIS_STEP_MAIN(SCHATTR_AXIS_START+7)
constexpr TypedWhichId< SfxInt32Item > SCHATTR_STYLE_SPLINES(SCHATTR_STYLE_START+7)
constexpr TypedWhichId< SvxDoubleItem > SCHATTR_REGRESSION_EXTRAPOLATE_BACKWARD(SCHATTR_REGRESSION_START+6)
constexpr TypedWhichId< SfxBoolItem > SCHATTR_DATADESCR_NO_PERCENTVALUE(SCHATTR_DATADESCR_START+8)
constexpr TypedWhichId< SfxBoolItem > SCHATTR_AXIS_AUTO_ORIGIN(SCHATTR_AXIS_START+17)
constexpr TypedWhichId< SvxDoubleItem > SCHATTR_AXIS_MAX(SCHATTR_AXIS_START+5)
constexpr TypedWhichId< SfxBoolItem > SCHATTR_HIDE_DATA_POINT_LEGEND_ENTRY(SCHATTR_AXIS_END+5)
constexpr TypedWhichId< SfxStringItem > SCHATTR_STAT_RANGE_NEG(SCHATTR_STAT_START+8)
constexpr TypedWhichId< SfxBoolItem > SCHATTR_DATA_TABLE_KEYS(SCHATTR_DATA_TABLE_START+3)
constexpr TypedWhichId< SfxBoolItem > SCHATTR_STYLE_VERTICAL(SCHATTR_STYLE_START+2)
constexpr TypedWhichId< SfxBoolItem > SCHATTR_AXIS_ALLOW_DATEAXIS(SCHATTR_AXIS_START+16)
constexpr TypedWhichId< SfxBoolItem > SCHATTR_DATADESCR_SHOW_NUMBER(SCHATTR_DATADESCR_START)
constexpr TypedWhichId< SfxInt32Item > SCHATTR_LEGEND_POS(SCHATTR_LEGEND_START)
constexpr TypedWhichId< SfxBoolItem > SCHATTR_STAT_AVERAGE(SCHATTR_STAT_START)
constexpr TypedWhichId< SvxBrushItem > SCHATTR_SYMBOL_BRUSH(SCHATTR_AXIS_END+1)
constexpr TypedWhichId< SfxBoolItem > SCHATTR_STYLE_LINES(SCHATTR_STYLE_START+4)
constexpr TypedWhichId< SfxInt32Item > SCHATTR_AXIS_HELPTICKS(SCHATTR_AXIS_POSITION_START+1)
constexpr TypedWhichId< SfxInt32Item > SCHATTR_AXIS_POSITION(SCHATTR_AXIS_POSITION_START+2)
constexpr TypedWhichId< SfxInt32Item > SCHATTR_AXIS_MAIN_TIME_UNIT(SCHATTR_AXIS_START+8)
constexpr TypedWhichId< SfxStringItem > SCHATTR_REGRESSION_XNAME(SCHATTR_REGRESSION_START+10)
constexpr TypedWhichId< SvxDoubleItem > SCHATTR_STAT_CONSTPLUS(SCHATTR_STAT_START+4)
constexpr TypedWhichId< SfxInt32Item > SCHATTR_AXIS_LABEL_POSITION(SCHATTR_AXIS_POSITION_START+6)
constexpr sal_uInt16 SCHATTR_END(SCHATTR_DATA_TABLE_END)
constexpr TypedWhichId< SdrAngleItem > SCHATTR_STARTING_ANGLE(SCHATTR_CHARTTYPE_START+7)
constexpr TypedWhichId< SvxDoubleItem > SCHATTR_REGRESSION_INTERCEPT_VALUE(SCHATTR_REGRESSION_START+8)
constexpr TypedWhichId< SfxBoolItem > SCHATTR_DATADESCR_WRAP_TEXT(SCHATTR_DATADESCR_START+4)
constexpr TypedWhichId< SfxBoolItem > SCHATTR_DATADESCR_SHOW_PERCENTAGE(SCHATTR_DATADESCR_START+1)
constexpr TypedWhichId< SfxBoolItem > SCHATTR_LEGEND_SHOW(SCHATTR_LEGEND_START+1)
constexpr TypedWhichId< SfxInt32Item > SCHATTR_STYLE_SHAPE(SCHATTR_STYLE_START+9)
constexpr TypedWhichId< SfxBoolItem > SCHATTR_GROUP_BARS_PER_AXIS(SCHATTR_CHARTTYPE_START+6)
constexpr TypedWhichId< SfxBoolItem > SCHATTR_AXIS_LOGARITHM(SCHATTR_AXIS_START+14)
constexpr TypedWhichId< SfxBoolItem > SCHATTR_DATADESCR_SHOW_CATEGORY(SCHATTR_DATADESCR_START+2)
constexpr TypedWhichId< SfxBoolItem > SCHATTR_AXIS_AUTO_TIME_RESOLUTION(SCHATTR_AXIS_START+12)
constexpr TypedWhichId< SvxDoubleItem > SCHATTR_STAT_CONSTMINUS(SCHATTR_STAT_START+5)
constexpr TypedWhichId< SfxInt32Item > SCHATTR_AXIS_MARK_POSITION(SCHATTR_AXIS_POSITION_START+7)
constexpr TypedWhichId< SfxBoolItem > SCHATTR_LEGEND_NO_OVERLAY(SCHATTR_LEGEND_START+2)
constexpr TypedWhichId< SfxBoolItem > SCHATTR_INCLUDE_HIDDEN_CELLS(SCHATTR_CHARTTYPE_START+11)
constexpr TypedWhichId< SvxDoubleItem > SCHATTR_STAT_PERCENT(SCHATTR_STAT_START+2)
constexpr TypedWhichId< SfxInt32Item > SCHATTR_AXIS_FOR_ALL_SERIES(SCHATTR_MISC_START)
#define CHART_AXIS_REALNUMBER
constexpr TypedWhichId< SfxInt32Item > SCHATTR_BAR_OVERLAP(SCHATTR_CHARTTYPE_START)
constexpr TypedWhichId< SfxInt32Item > SCHATTR_REGRESSION_PERIOD(SCHATTR_REGRESSION_START+4)
constexpr TypedWhichId< SfxBoolItem > SCHATTR_DATA_TABLE_VERTICAL_BORDER(SCHATTR_DATA_TABLE_START+1)
void Delete()
void SetDefaults(std::vector< SfxPoolItem * > *pDefaults)
void SetItemInfos(const SfxItemInfo *pInfos)
void ReleaseDefaults(bool bDelete=false)
virtual rtl::Reference< SfxItemPool > Clone() const override
virtual ~ChartItemPool() override
MapUnit GetMetric(sal_uInt16 nWhich) const override
static rtl::Reference< SfxItemPool > CreateChartItemPool()
creates a pure chart item pool
std::unique_ptr< SfxItemInfo[]> pItemInfos
MapUnit
OOO_DLLPUBLIC_CHARTTOOLSconst ::chart::tPropertyValueMap & StaticFormattedStringDefaults()
OOO_DLLPUBLIC_CHARTTOOLSconst ::chart::tPropertyValueMap & StaticAxisDefaults()
Definition: Axis.cxx:212
OOO_DLLPUBLIC_CHARTTOOLS const tPropertyValueMap & StaticDataSeriesDefaults()
Definition: DataSeries.cxx:51
OOO_DLLPUBLIC_CHARTTOOLSconst ::chart::tPropertyValueMap & StaticLegendDefaults()
Definition: Legend.cxx:112
int i