LibreOffice Module chart2 (master) 1
PropertyMapper.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 <PropertyMapper.hxx>
21#include <unonames.hxx>
22
23#include <com/sun/star/beans/XMultiPropertySet.hpp>
24#include <com/sun/star/beans/XPropertySet.hpp>
25#include <com/sun/star/drawing/TextVerticalAdjust.hpp>
26#include <com/sun/star/drawing/TextHorizontalAdjust.hpp>
27#include <com/sun/star/drawing/LineJoint.hpp>
28#include <com/sun/star/style/ParagraphAdjust.hpp>
30#include <svx/unoshape.hxx>
31
32namespace chart
33{
34using namespace ::com::sun::star;
35
37 SvxShape& xTarget
38 , const uno::Reference< beans::XPropertySet >& xSource
39 , const tPropertyNameMap& rMap )
40{
41 if( !xSource.is() )
42 return;
43
44 sal_Int32 nPropertyCount = rMap.size();
45 tNameSequence aNames(nPropertyCount);
46 tAnySequence aValues(nPropertyCount);
47 auto pNames = aNames.getArray();
48 auto pValues = aValues.getArray();
49 sal_Int32 nN=0;
50
51 for (auto const& elem : rMap)
52 {
53 const OUString & rTarget = elem.first;
54 const OUString & rSource = elem.second;
55 try
56 {
57 uno::Any aAny( xSource->getPropertyValue(rSource) );
58 if( aAny.hasValue() )
59 {
60 //do not set empty anys because of performance (otherwise SdrAttrObj::ItemChange will take much longer)
61 pNames[nN] = rTarget;
62 pValues[nN] = std::move(aAny);
63 ++nN;
64 }
65 }
66 catch( const uno::Exception& )
67 {
68 TOOLS_WARN_EXCEPTION("chart2", "" );
69 }
70 }
71 if (nN == 0)
72 return;
73 //reduce to real property count
74 aNames.realloc(nN);
75 aValues.realloc(nN);
76
77 uno::Reference< beans::XMultiPropertySet > xShapeMultiProp( xTarget, uno::UNO_QUERY_THROW );
78 try
79 {
80 xShapeMultiProp->setPropertyValues( aNames, aValues );
81 }
82 catch( const uno::Exception& )
83 {
84 TOOLS_WARN_EXCEPTION("chart2", "" ); //if this occurs more often think of removing the XMultiPropertySet completely for better performance
85 }
86}
87
89 const uno::Reference< beans::XPropertySet >& xTarget
90 , const uno::Reference< beans::XPropertySet >& xSource
91 , const tPropertyNameMap& rMap )
92{
93 if( !xTarget.is() || !xSource.is() )
94 return;
95
96 tNameSequence aNames;
97 tAnySequence aValues;
98 sal_Int32 nN=0;
99 sal_Int32 nPropertyCount = rMap.size();
100 aNames.realloc(nPropertyCount);
101 auto pNames = aNames.getArray();
102 aValues.realloc(nPropertyCount);
103 auto pValues = aValues.getArray();
104
105 for (auto const& elem : rMap)
106 {
107 const OUString & rTarget = elem.first;
108 const OUString & rSource = elem.second;
109 try
110 {
111 uno::Any aAny( xSource->getPropertyValue(rSource) );
112 if( aAny.hasValue() )
113 {
114 //do not set empty anys because of performance (otherwise SdrAttrObj::ItemChange will take much longer)
115 pNames[nN] = rTarget;
116 pValues[nN] = aAny;
117 ++nN;
118 }
119 }
120 catch( const uno::Exception& )
121 {
122 TOOLS_WARN_EXCEPTION("chart2", "" );
123 }
124 }
125 if (nN == 0)
126 return;
127
128 uno::Reference< beans::XMultiPropertySet > xShapeMultiProp( xTarget, uno::UNO_QUERY );
129 if (xShapeMultiProp)
130 try
131 {
132 //reduce to real property count
133 aNames.realloc(nN);
134 aValues.realloc(nN);
135 xShapeMultiProp->setPropertyValues( aNames, aValues );
136 return; // successful
137 }
138 catch( const uno::Exception& )
139 {
140 TOOLS_WARN_EXCEPTION("chart2", "" ); //if this occurs more often think of removing the XMultiPropertySet completely for better performance
141 }
142
143 // fall back to one at a time
144 try
145 {
146 for( sal_Int32 i = 0; i < nN; i++ )
147 {
148 try
149 {
150 xTarget->setPropertyValue( aNames[i], aValues[i] );
151 }
152 catch( const uno::Exception& )
153 {
154 TOOLS_WARN_EXCEPTION("chart2", "" );
155 }
156 }
157 }
158 catch( const uno::Exception& )
159 {
160 TOOLS_WARN_EXCEPTION("chart2", "" );
161 }
162}
163
165 tPropertyNameValueMap& rValueMap
166 , const tPropertyNameMap& rNameMap
167 , const uno::Reference< beans::XPropertySet >& xSourceProp
168 )
169{
170 uno::Reference< beans::XMultiPropertySet > xMultiPropSet(xSourceProp, uno::UNO_QUERY);
171 if((false) && xMultiPropSet.is())
172 {
173 uno::Sequence< OUString > aPropSourceNames(rNameMap.size());
174 auto aPropSourceNamesRange = asNonConstRange(aPropSourceNames);
175 uno::Sequence< OUString > aPropTargetNames(rNameMap.size());
176 auto aPropTargetNamesRange = asNonConstRange(aPropTargetNames);
177 sal_Int32 i = 0;
178 for (auto const& elem : rNameMap)
179 {
180 aPropTargetNamesRange[i] = elem.first;
181 aPropSourceNamesRange[i] = elem.second;
182 ++i;
183 }
184
185 uno::Sequence< uno::Any > xValues = xMultiPropSet->getPropertyValues(aPropSourceNames);
186 sal_Int32 n = rNameMap.size();
187 for(i = 0;i < n; ++i)
188 {
189 if( xValues[i].hasValue() )
190 rValueMap.emplace( aPropTargetNames[i], xValues[i] );
191 }
192 }
193 else
194 {
195 for (auto const& elem : rNameMap)
196 {
197 const OUString & rTarget = elem.first;
198 const OUString & rSource = elem.second;
199 try
200 {
201 uno::Any aAny( xSourceProp->getPropertyValue(rSource) );
202 if( aAny.hasValue() )
203 rValueMap.emplace( rTarget, aAny );
204 }
205 catch( const uno::Exception& )
206 {
207 TOOLS_WARN_EXCEPTION("chart2", "" );
208 }
209 }
210 }
211}
212
214 tNameSequence& rNames
215 , tAnySequence& rValues
216 , const tPropertyNameValueMap& rValueMap
217 )
218{
219 sal_Int32 nPropertyCount = rValueMap.size();
220 rNames.realloc(nPropertyCount);
221 auto pNames = rNames.getArray();
222 rValues.realloc(nPropertyCount);
223 auto pValues = rValues.getArray();
224
225 //fill sequences
226 sal_Int32 nN=0;
227 for (auto const& elem : rValueMap)
228 {
229 const uno::Any& rAny = elem.second;
230 if( rAny.hasValue() )
231 {
232 //do not set empty anys because of performance (otherwise SdrAttrObj::ItemChange will take much longer)
233 pNames[nN] = elem.first;
234 pValues[nN] = rAny;
235 ++nN;
236 }
237 }
238 //reduce to real property count
239 rNames.realloc(nN);
240 rValues.realloc(nN);
241}
242
244 , const tNameSequence& rPropNames
245 , std::u16string_view rPropName )
246{
247 sal_Int32 nCount = rPropNames.getLength();
248 for( sal_Int32 nN = 0; nN < nCount; nN++ )
249 {
250 if(rPropNames[nN] == rPropName)
251 return &rPropValues.getArray()[nN];
252 }
253 return nullptr;
254}
255
257 , const tNameSequence& rPropNames
258 , bool bLimitedHeight)
259{
260 return PropertyMapper::getValuePointer( rPropValues, rPropNames
261 , bLimitedHeight ? OUString("TextMaximumFrameHeight") : OUString("TextMaximumFrameWidth") );
262}
263
265{
266 //shape property -- chart model object property
267 static tPropertyNameMap s_aShapePropertyMapForCharacterProperties{
268 {"CharColor", "CharColor"},
269 {"CharContoured", "CharContoured"},
270 {"CharEmphasis", "CharEmphasis"},//the service style::CharacterProperties describes a property called 'CharEmphasize' which is nowhere implemented
271
272 {"CharFontFamily", "CharFontFamily"},
273 {"CharFontFamilyAsian", "CharFontFamilyAsian"},
274 {"CharFontFamilyComplex", "CharFontFamilyComplex"},
275 {"CharFontCharSet", "CharFontCharSet"},
276 {"CharFontCharSetAsian", "CharFontCharSetAsian"},
277 {"CharFontCharSetComplex", "CharFontCharSetComplex"},
278 {"CharFontName", "CharFontName"},
279 {"CharFontNameAsian", "CharFontNameAsian"},
280 {"CharFontNameComplex", "CharFontNameComplex"},
281 {"CharFontPitch", "CharFontPitch"},
282 {"CharFontPitchAsian", "CharFontPitchAsian"},
283 {"CharFontPitchComplex", "CharFontPitchComplex"},
284 {"CharFontStyleName", "CharFontStyleName"},
285 {"CharFontStyleNameAsian", "CharFontStyleNameAsian"},
286 {"CharFontStyleNameComplex", "CharFontStyleNameComplex"},
287
288 {"CharHeight", "CharHeight"},
289 {"CharHeightAsian", "CharHeightAsian"},
290 {"CharHeightComplex", "CharHeightComplex"},
291 {"CharKerning", "CharKerning"},
292 {"CharLocale", "CharLocale"},
293 {"CharLocaleAsian", "CharLocaleAsian"},
294 {"CharLocaleComplex", "CharLocaleComplex"},
295 {"CharPosture", "CharPosture"},
296 {"CharPostureAsian", "CharPostureAsian"},
297 {"CharPostureComplex", "CharPostureComplex"},
298 {"CharRelief", "CharRelief"},
299 {"CharShadowed", "CharShadowed"},
300 {"CharStrikeout", "CharStrikeout"},
301 {"CharUnderline", "CharUnderline"},
302 {"CharUnderlineColor", "CharUnderlineColor"},
303 {"CharUnderlineHasColor", "CharUnderlineHasColor"},
304 {"CharOverline", "CharOverline"},
305 {"CharOverlineColor", "CharOverlineColor"},
306 {"CharOverlineHasColor", "CharOverlineHasColor"},
307 {"CharWeight", "CharWeight"},
308 {"CharWeightAsian", "CharWeightAsian"},
309 {"CharWeightComplex", "CharWeightComplex"},
310 {"CharWordMode", "CharWordMode"},
311
312 {"WritingMode", "WritingMode"},
313
314 {"ParaIsCharacterDistance", "ParaIsCharacterDistance"}};
315
316 return s_aShapePropertyMapForCharacterProperties;
317}
318
320{
321 //shape property -- chart model object property
322 static tPropertyNameMap s_aShapePropertyMapForParagraphProperties{
323 {"ParaAdjust", "ParaAdjust"},
324 {"ParaBottomMargin", "ParaBottomMargin"},
325 {"ParaIsHyphenation", "ParaIsHyphenation"},
326 {"ParaLastLineAdjust", "ParaLastLineAdjust"},
327 {"ParaLeftMargin", "ParaLeftMargin"},
328 {"ParaRightMargin", "ParaRightMargin"},
329 {"ParaTopMargin", "ParaTopMargin"}};
330 return s_aShapePropertyMapForParagraphProperties;
331}
332
334{
335 //shape property -- chart model object property
336 static tPropertyNameMap s_aShapePropertyMapForFillProperties{
337 {"FillBackground", "FillBackground"},
338 {"FillBitmapName", "FillBitmapName"},
339 {"FillColor", "FillColor"},
340 {"FillGradientName", "FillGradientName"},
341 {"FillGradientStepCount", "FillGradientStepCount"},
342 {"FillHatchName", "FillHatchName"},
343 {"FillStyle", "FillStyle"},
344 {"FillTransparence", "FillTransparence"},
345 {"FillTransparenceGradientName", "FillTransparenceGradientName"},
346 //bitmap properties
347 {"FillBitmapMode", "FillBitmapMode"},
348 {"FillBitmapSizeX", "FillBitmapSizeX"},
349 {"FillBitmapSizeY", "FillBitmapSizeY"},
350 {"FillBitmapLogicalSize", "FillBitmapLogicalSize"},
351 {"FillBitmapOffsetX", "FillBitmapOffsetX"},
352 {"FillBitmapOffsetY", "FillBitmapOffsetY"},
353 {"FillBitmapRectanglePoint", "FillBitmapRectanglePoint"},
354 {"FillBitmapPositionOffsetX", "FillBitmapPositionOffsetX"},
355 {"FillBitmapPositionOffsetY", "FillBitmapPositionOffsetY"}};
356 return s_aShapePropertyMapForFillProperties;
357}
358
360{
361 //shape property -- chart model object property
362 static tPropertyNameMap s_aShapePropertyMapForLineProperties{
363 {"LineColor", "LineColor"},
364 {"LineDashName", "LineDashName"},
365 {"LineJoint", "LineJoint"},
366 {"LineStyle", "LineStyle"},
367 {"LineTransparence", "LineTransparence"},
368 {"LineWidth", "LineWidth"},
369 {"LineCap", "LineCap"}};
370 return s_aShapePropertyMapForLineProperties;
371}
372
373namespace {
374 tPropertyNameMap getPropertyNameMapForFillAndLineProperties_() {
376 auto const & add
378 map.insert(add.begin(), add.end());
379 return map;
380 }
381}
383{
384 static tPropertyNameMap s_aShapePropertyMapForFillAndLineProperties
385 = getPropertyNameMapForFillAndLineProperties_();
386 return s_aShapePropertyMapForFillAndLineProperties;
387}
388
389namespace {
390 tPropertyNameMap getPropertyNameMapForTextShapeProperties_() {
392 auto const & add1
394 map.insert(add1.begin(), add1.end());
395 auto const & add2
397 map.insert(add2.begin(), add2.end());
398 return map;
399 }
400}
402{
403 static tPropertyNameMap s_aShapePropertyMapForTextShapeProperties
404 = getPropertyNameMapForTextShapeProperties_();
405 return s_aShapePropertyMapForTextShapeProperties;
406}
407
409{
410 //shape property -- chart model object property
411 static tPropertyNameMap s_aShapePropertyMapForLineSeriesProperties{
412 {"LineColor", "Color"},
413 {"LineDashName", "LineDashName"},
414 {"LineStyle", "LineStyle"},
415 {"LineTransparence", "Transparency"},
416 {"LineWidth", "LineWidth"},
417 {"LineCap", "LineCap"}};
418 return s_aShapePropertyMapForLineSeriesProperties;
419}
420
421namespace {
422 tPropertyNameMap getPropertyNameMapForTextLabelProperties_() {
424 map.insert({
428 {"LineTransparence", CHART_UNONAME_LABEL_BORDER_TRANS},
429 {"FillStyle", CHART_UNONAME_LABEL_FILL_STYLE},
430 {"FillColor", CHART_UNONAME_LABEL_FILL_COLOR},
431 {"FillBackground", CHART_UNONAME_LABEL_FILL_BACKGROUND},
432 {"FillHatchName", CHART_UNONAME_LABEL_FILL_HATCH_NAME}
433 });
434 // fix the spelling!
435 return map;
436 }
437}
439{
440 // target name (drawing layer) : source name (chart model)
441 static tPropertyNameMap aMap = getPropertyNameMapForTextLabelProperties_();
442 return aMap;
443}
444
446{
447 //shape property -- chart model object property
448 static tPropertyNameMap s_aShapePropertyMapForFilledSeriesProperties{
449 {"FillBackground", "FillBackground"},
450 {"FillBitmapName", "FillBitmapName"},
451 {"FillColor", "Color"},
452 {"FillGradientName", "GradientName"},
453 {"FillGradientStepCount", "GradientStepCount"},
454 {"FillHatchName", "HatchName"},
455 {"FillStyle", "FillStyle"},
456 {"FillTransparence", "Transparency"},
457 {"FillTransparenceGradientName", "TransparencyGradientName"},
458 //bitmap properties
459 {"FillBitmapMode", "FillBitmapMode"},
460 {"FillBitmapSizeX", "FillBitmapSizeX"},
461 {"FillBitmapSizeY", "FillBitmapSizeY"},
462 {"FillBitmapLogicalSize", "FillBitmapLogicalSize"},
463 {"FillBitmapOffsetX", "FillBitmapOffsetX"},
464 {"FillBitmapOffsetY", "FillBitmapOffsetY"},
465 {"FillBitmapRectanglePoint", "FillBitmapRectanglePoint"},
466 {"FillBitmapPositionOffsetX", "FillBitmapPositionOffsetX"},
467 {"FillBitmapPositionOffsetY", "FillBitmapPositionOffsetY"},
468 //line properties
469 {"LineColor", "BorderColor"},
470 {"LineDashName", "BorderDashName"},
471 {"LineStyle", "BorderStyle"},
472 {"LineTransparence", "BorderTransparency"},
473 {"LineWidth", "BorderWidth"},
474 {"LineCap", "LineCap"}};
475 return s_aShapePropertyMapForFilledSeriesProperties;
476}
477
479 const tNameSequence& rNames
480 , const tAnySequence& rValues
481 , SvxShape& xTarget )
482{
483 try
484 {
485 xTarget.setPropertyValues( rNames, rValues );
486 }
487 catch( const uno::Exception& )
488 {
489 TOOLS_WARN_EXCEPTION("chart2", "" ); //if this occurs more often think of removing the XMultiPropertySet completely for better performance
490 }
491}
492
495 , tNameSequence& rPropNames, tAnySequence& rPropValues
496 , bool bName
497 , sal_Int32 nLimitedSpace
498 , bool bLimitedHeight
499 , bool bSupportsLabelBorder)
500{
501 //fill character properties into the ValueMap
502 tPropertyNameValueMap aValueMap;
504
505 PropertyMapper::getValueMap(aValueMap, aNameMap, xSourceProp);
506
507 //some more shape properties apart from character properties, position-matrix and label string
508 aValueMap.emplace( "TextHorizontalAdjust", uno::Any(drawing::TextHorizontalAdjust_CENTER) ); // drawing::TextHorizontalAdjust - needs to be overwritten
509 aValueMap.emplace( "TextVerticalAdjust", uno::Any(drawing::TextVerticalAdjust_CENTER) ); //drawing::TextVerticalAdjust - needs to be overwritten
510 aValueMap.emplace( "TextAutoGrowHeight", uno::Any(true) ); // sal_Bool
511 aValueMap.emplace( "TextAutoGrowWidth", uno::Any(true) ); // sal_Bool
512 aValueMap.emplace( "ParaAdjust", uno::Any(style::ParagraphAdjust_CENTER) ); // style::ParagraphAdjust_CENTER - needs to be overwritten
513 if( bName )
514 aValueMap.emplace( "Name", uno::Any( OUString() ) ); //CID OUString - needs to be overwritten for each point
515
516 if( nLimitedSpace > 0 )
517 {
518 if(bLimitedHeight)
519 aValueMap.emplace( "TextMaximumFrameHeight", uno::Any(nLimitedSpace) ); //sal_Int32
520 else
521 aValueMap.emplace( "TextMaximumFrameWidth", uno::Any(nLimitedSpace) ); //sal_Int32
522 aValueMap.emplace( "ParaIsHyphenation", uno::Any(true) );
523 }
524
525 PropertyMapper::getMultiPropertyListsFromValueMap( rPropNames, rPropValues, aValueMap );
526}
527
530 , tNameSequence& rPropNames, tAnySequence& rPropValues )
531{
532 //fill character, line and fill properties into the ValueMap
533 tPropertyNameValueMap aValueMap;
536 , xSourceProp );
537
538 // auto-grow makes sure the shape has the correct size after setting text
539 aValueMap.emplace( "TextHorizontalAdjust", uno::Any( drawing::TextHorizontalAdjust_CENTER ));
540 aValueMap.emplace( "TextVerticalAdjust", uno::Any( drawing::TextVerticalAdjust_CENTER ));
541 aValueMap.emplace( "TextAutoGrowHeight", uno::Any( true ));
542 aValueMap.emplace( "TextAutoGrowWidth", uno::Any( true ));
543
544 // set some distance to the border, in case it is shown
545 const sal_Int32 nWidthDist = 250;
546 const sal_Int32 nHeightDist = 125;
547 aValueMap.emplace( "TextLeftDistance", uno::Any( nWidthDist ));
548 aValueMap.emplace( "TextRightDistance", uno::Any( nWidthDist ));
549 aValueMap.emplace( "TextUpperDistance", uno::Any( nHeightDist ));
550 aValueMap.emplace( "TextLowerDistance", uno::Any( nHeightDist ));
551
552 // use a line-joint showing the border of thick lines like two rectangles
553 // filled in between.
554 aValueMap["LineJoint"] <<= drawing::LineJoint_ROUND;
555
556 PropertyMapper::getMultiPropertyListsFromValueMap( rPropNames, rPropValues, aValueMap );
557}
558
559} //namespace chart
560
561/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
const PropertyValue * pValues
static const tPropertyNameMap & getPropertyNameMapForFillAndLineProperties()
static css::uno::Any * getValuePointerForLimitedSpace(tAnySequence &rPropValues, const tNameSequence &rPropNames, bool bLimitedHeight)
static const tPropertyNameMap & getPropertyNameMapForTextShapeProperties()
static css::uno::Any * getValuePointer(tAnySequence &rPropValues, const tNameSequence &rPropNames, std::u16string_view rPropName)
static void setMultiProperties(const tNameSequence &rNames, const tAnySequence &rValues, SvxShape &xTarget)
static const tPropertyNameMap & getPropertyNameMapForLineProperties()
static const tPropertyNameMap & getPropertyNameMapForFilledSeriesProperties()
static const tPropertyNameMap & getPropertyNameMapForTextLabelProperties()
static const tPropertyNameMap & getPropertyNameMapForCharacterProperties()
static void getMultiPropertyListsFromValueMap(tNameSequence &rNames, tAnySequence &rValues, const tPropertyNameValueMap &rValueMap)
static const tPropertyNameMap & getPropertyNameMapForFillProperties()
static const tPropertyNameMap & getPropertyNameMapForLineSeriesProperties()
static void getPreparedTextShapePropertyLists(const css::uno::Reference< css::beans::XPropertySet > &xSourceProp, tNameSequence &rPropNames, tAnySequence &rPropValues)
adds line-, fill- and character properties and sets some suitable defaults for auto-grow properties
static void getTextLabelMultiPropertyLists(const css::uno::Reference< css::beans::XPropertySet > &xSourceProp, tNameSequence &rPropNames, tAnySequence &rPropValues, bool bName=true, sal_Int32 nLimitedSpace=-1, bool bLimitedHeight=false, bool bSupportsLabelBorder=true)
static void getValueMap(tPropertyNameValueMap &rValueMap, const tPropertyNameMap &rNameMap, const css::uno::Reference< css::beans::XPropertySet > &xSourceProp)
Fetch property values from the source object and map it to the destination container.
static const tPropertyNameMap & getPropertyNameMapForParagraphProperties()
static void setMappedProperties(const css::uno::Reference< css::beans::XPropertySet > &xTarget, const css::uno::Reference< css::beans::XPropertySet > &xSource, const tPropertyNameMap &rMap)
int nCount
#define TOOLS_WARN_EXCEPTION(area, stream)
Reference< XInterface > xTarget
FilterGroup & rTarget
sal_Int64 n
css::uno::Sequence< OUString > tNameSequence
std::unordered_map< OUString, OUString > tPropertyNameMap
css::uno::Sequence< css::uno::Any > tAnySequence
std::unordered_map< OUString, css::uno::Any > tPropertyNameValueMap
int i
HashMap_OWString_Interface aMap
std::map< OUString, rtl::Reference< Entity > > map
bool hasValue()
constexpr OUStringLiteral CHART_UNONAME_LABEL_BORDER_WIDTH
Definition: unonames.hxx:27
constexpr OUStringLiteral CHART_UNONAME_LABEL_BORDER_TRANS
Definition: unonames.hxx:31
constexpr OUStringLiteral CHART_UNONAME_LABEL_FILL_COLOR
Definition: unonames.hxx:35
constexpr OUStringLiteral CHART_UNONAME_LABEL_FILL_STYLE
Definition: unonames.hxx:32
constexpr OUStringLiteral CHART_UNONAME_LABEL_FILL_BACKGROUND
Definition: unonames.hxx:33
constexpr OUStringLiteral CHART_UNONAME_LABEL_BORDER_COLOR
Definition: unonames.hxx:28
constexpr OUStringLiteral CHART_UNONAME_LABEL_BORDER_STYLE
Definition: unonames.hxx:26
constexpr OUStringLiteral CHART_UNONAME_LABEL_FILL_HATCH_NAME
Definition: unonames.hxx:34