LibreOffice Module reportdesign (master)  1
UITools.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 
21 #include <memory>
24 #include <SectionView.hxx>
25 #include <UITools.hxx>
26 #include <Formula.hxx>
27 #include <FunctionHelper.hxx>
28 #include <reportformula.hxx>
29 
30 #include <tools/diagnose_ex.h>
31 
32 #include <vcl/settings.hxx>
33 #include <vcl/syswin.hxx>
34 #include <vcl/svapp.hxx>
35 #include <vcl/unohelp.hxx>
36 #include <vcl/window.hxx>
37 
38 #include <com/sun/star/lang/NullPointerException.hpp>
39 #include <com/sun/star/beans/NamedValue.hpp>
40 #include <com/sun/star/beans/PropertyAttribute.hpp>
41 #include <svx/svdpool.hxx>
42 
44 #include <editeng/brushitem.hxx>
45 #include <editeng/fontitem.hxx>
47 #include <editeng/postitem.hxx>
48 #include <editeng/udlnitem.hxx>
50 #include <editeng/contouritem.hxx>
51 #include <editeng/langitem.hxx>
52 #include <editeng/wghtitem.hxx>
53 #include <editeng/fhgtitem.hxx>
54 #include <editeng/shdditem.hxx>
56 #include <editeng/wrlmitem.hxx>
57 #include <editeng/cmapitem.hxx>
58 #include <editeng/kernitem.hxx>
59 #include <editeng/blinkitem.hxx>
60 #include <editeng/flstitem.hxx>
61 #include <editeng/autokernitem.hxx>
62 #include <editeng/colritem.hxx>
63 #include <editeng/justifyitem.hxx>
64 #include <svx/drawitem.hxx>
65 #include <editeng/twolinesitem.hxx>
69 #include <editeng/memberids.h>
70 #include <svx/xgrscit.hxx>
71 #include <svx/svditer.hxx>
72 #include <svx/xtable.hxx>
73 #include <svx/svdview.hxx>
74 #include <svx/svdpage.hxx>
75 #include <svx/svxdlg.hxx>
76 #include <svx/unoprov.hxx>
77 #include <svx/svxids.hrc>
78 
79 #include <unotools/charclass.hxx>
80 #include <svtools/ctrltool.hxx>
81 #include <svl/itempool.hxx>
82 #include <svl/itemset.hxx>
83 #include <svl/sharedstringpool.hxx>
84 
87 
89 #include <connectivity/dbtools.hxx>
90 
91 #include <com/sun/star/style/VerticalAlignment.hpp>
92 #include <com/sun/star/report/XShape.hpp>
93 #include <com/sun/star/sdb/XParametersSupplier.hpp>
94 #include <com/sun/star/sdb/SQLContext.hpp>
96 #include <dlgpage.hxx>
97 #include <strings.hxx>
98 #include <core_resource.hxx>
99 #include <RptObject.hxx>
100 #include <RptDef.hxx>
101 #include <strings.hrc>
102 #include <ReportDefinition.hxx>
103 #include <RptModel.hxx>
104 
105 #include <svx/xflbckit.hxx>
106 #include <svx/xflbmpit.hxx>
107 #include <svx/xflbmsli.hxx>
108 #include <svx/xflbmsxy.hxx>
109 #include <svx/xflbmtit.hxx>
110 #include <svx/xflboxy.hxx>
111 #include <svx/xflbstit.hxx>
112 #include <svx/xflbtoxy.hxx>
113 
114 #include <svx/xbtmpit.hxx>
115 #include <svx/xfillit0.hxx>
116 #include <svx/xfltrit.hxx>
117 #include <svx/xflclit.hxx>
118 #include <svx/xflgrit.hxx>
119 #include <svx/xflhtit.hxx>
120 #include <svx/xflftrit.hxx>
121 #include <svx/xsflclit.hxx>
122 
123 #define ITEMID_FONT XATTR_FILL_LAST + 1
124 #define ITEMID_FONTHEIGHT XATTR_FILL_LAST + 2
125 #define ITEMID_LANGUAGE XATTR_FILL_LAST + 3
126 
127 #define ITEMID_POSTURE XATTR_FILL_LAST + 4
128 #define ITEMID_WEIGHT XATTR_FILL_LAST + 5
129 #define ITEMID_SHADOWED XATTR_FILL_LAST + 6
130 #define ITEMID_WORDLINEMODE XATTR_FILL_LAST + 7
131 #define ITEMID_CONTOUR XATTR_FILL_LAST + 8
132 #define ITEMID_CROSSEDOUT XATTR_FILL_LAST + 9
133 #define ITEMID_UNDERLINE XATTR_FILL_LAST + 10
134 
135 #define ITEMID_COLOR XATTR_FILL_LAST + 11
136 #define ITEMID_KERNING XATTR_FILL_LAST + 12
137 #define ITEMID_CASEMAP XATTR_FILL_LAST + 13
138 
139 #define ITEMID_ESCAPEMENT XATTR_FILL_LAST + 14
140 #define ITEMID_FONTLIST XATTR_FILL_LAST + 15
141 #define ITEMID_AUTOKERN XATTR_FILL_LAST + 16
142 #define ITEMID_COLOR_TABLE XATTR_FILL_LAST + 17
143 #define ITEMID_BLINK XATTR_FILL_LAST + 18
144 #define ITEMID_EMPHASISMARK XATTR_FILL_LAST + 19
145 #define ITEMID_TWOLINES XATTR_FILL_LAST + 20
146 #define ITEMID_CHARROTATE XATTR_FILL_LAST + 21
147 #define ITEMID_CHARSCALE_W XATTR_FILL_LAST + 22
148 #define ITEMID_CHARRELIEF XATTR_FILL_LAST + 23
149 #define ITEMID_CHARHIDDEN XATTR_FILL_LAST + 24
150 #define ITEMID_BRUSH XATTR_FILL_LAST + 25
151 #define ITEMID_HORJUSTIFY XATTR_FILL_LAST + 26
152 #define ITEMID_VERJUSTIFY XATTR_FILL_LAST + 27
153 #define ITEMID_FONT_ASIAN XATTR_FILL_LAST + 28
154 #define ITEMID_FONTHEIGHT_ASIAN XATTR_FILL_LAST + 29
155 #define ITEMID_LANGUAGE_ASIAN XATTR_FILL_LAST + 30
156 #define ITEMID_POSTURE_ASIAN XATTR_FILL_LAST + 31
157 #define ITEMID_WEIGHT_ASIAN XATTR_FILL_LAST + 32
158 #define ITEMID_FONT_COMPLEX XATTR_FILL_LAST + 33
159 #define ITEMID_FONTHEIGHT_COMPLEX XATTR_FILL_LAST + 34
160 #define ITEMID_LANGUAGE_COMPLEX XATTR_FILL_LAST + 35
161 #define ITEMID_POSTURE_COMPLEX XATTR_FILL_LAST + 36
162 #define ITEMID_WEIGHT_COMPLEX XATTR_FILL_LAST + 37
163 
164 #define WESTERN 0
165 #define ASIAN 1
166 #define COMPLEX 2
167 
168 namespace rptui
169 {
170 using namespace ::com::sun::star;
171 using namespace formula;
172 
173 void adjustSectionName(const uno::Reference< report::XGroup >& _xGroup,sal_Int32 _nPos)
174 {
175  OSL_ENSURE(_xGroup.is(),"Group is NULL -> GPF");
176  if ( _xGroup->getHeaderOn() && _xGroup->getHeader()->getName().isEmpty() )
177  {
178  OUString sName = RptResId(RID_STR_GROUPHEADER) + OUString::number(_nPos);
179  _xGroup->getHeader()->setName(sName);
180  }
181 
182  if ( _xGroup->getFooterOn() && _xGroup->getFooter()->getName().isEmpty() )
183  {
184  OUString sName = RptResId(RID_STR_GROUPFOOTER) + OUString::number(_nPos);
185  _xGroup->getFooter()->setName(sName);
186  }
187 }
188 
189 ::rtl::Reference< comphelper::OPropertyChangeMultiplexer> addStyleListener(const uno::Reference< report::XReportDefinition >& _xReportDefinition,::comphelper::OPropertyChangeListener* _pListener)
190 {
192  if ( _xReportDefinition.is() )
193  {
194  uno::Reference<beans::XPropertySet> xPageStyle(getUsedStyle(_xReportDefinition),uno::UNO_QUERY);
195  if ( xPageStyle.is() )
196  {
197  pRet = new comphelper::OPropertyChangeMultiplexer(_pListener,xPageStyle);
198  pRet->addProperty(PROPERTY_LEFTMARGIN);
199  pRet->addProperty(PROPERTY_RIGHTMARGIN);
200  pRet->addProperty(PROPERTY_PAPERSIZE);
201  pRet->addProperty(PROPERTY_BACKCOLOR);
202  }
203  }
204  return pRet;
205 }
206 
207 
208 namespace
209 {
210 
211  vcl::Font lcl_getReportControlFont( const uno::Reference<report::XReportControlFormat >& _rxReportControlFormat, awt::FontDescriptor& _out_rControlFont ,sal_uInt16 _nWichFont)
212  {
213  if ( !_rxReportControlFormat.is() )
214  throw uno::RuntimeException();
215 
216  switch(_nWichFont)
217  {
218  case WESTERN:
219  _out_rControlFont = _rxReportControlFormat->getFontDescriptor();
220  break;
221  case ASIAN:
222  _out_rControlFont = _rxReportControlFormat->getFontDescriptorAsian();
223  break;
224  case COMPLEX:
225  _out_rControlFont = _rxReportControlFormat->getFontDescriptorComplex();
226  break;
227 
228  }
229 
231  return VCLUnoHelper::CreateFont( _out_rControlFont, aDefaultFont );
232  }
233 
234 
235  vcl::Font lcl_getReportControlFont( const uno::Reference<report::XReportControlFormat >& _rxReportControlFormat,sal_uInt16 _nWhich )
236  {
237  awt::FontDescriptor aAwtFont;
238  return lcl_getReportControlFont( _rxReportControlFormat, aAwtFont, _nWhich );
239  }
240 
241  vcl::Font lcl_setFont(const uno::Reference<report::XReportControlFormat >& _rxReportControlFormat,
242  SfxItemSet& _rItemSet,sal_uInt16 _nWhich,sal_uInt16 _nFont, sal_uInt16 _nFontHeight,sal_uInt16 _nLanguage,sal_uInt16 _nPosture, sal_uInt16 _nWeight)
243  {
244  // fill it
245  awt::FontDescriptor aControlFont;
246  const vcl::Font aFont( lcl_getReportControlFont( _rxReportControlFormat, aControlFont,_nWhich ) );
247 
248  SvxFontItem aFontItem(_nFont);
249  aFontItem.PutValue( uno::makeAny( aControlFont ), 0 );
250  _rItemSet.Put(aFontItem);
251 
252  _rItemSet.Put(SvxFontHeightItem(OutputDevice::LogicToLogic(Size(0, aFont.GetFontHeight()), MapMode(MapUnit::MapPoint), MapMode(MapUnit::MapTwip)).Height(), 100, _nFontHeight));
253  lang::Locale aLocale;
254  switch(_nWhich)
255  {
256  default:
257  aLocale = _rxReportControlFormat->getCharLocale();
258  break;
259  case ASIAN:
260  aLocale = _rxReportControlFormat->getCharLocaleAsian();
261  break;
262  case COMPLEX:
263  aLocale = _rxReportControlFormat->getCharLocaleComplex();
264  break;
265  }
266 
267  _rItemSet.Put(SvxLanguageItem(LanguageTag(aLocale).makeFallback().getLanguageType(),_nLanguage));
268 
269  _rItemSet.Put(SvxPostureItem(aFont.GetItalic(),_nPosture));
270  _rItemSet.Put(SvxWeightItem(aFont.GetWeight(),_nWeight));
271  return aFont;
272  }
273 
274  void lcl_fillShapeToItems( const uno::Reference<report::XShape >& _xShape,SfxItemSet& _rItemSet )
275  {
276  uno::Reference< beans::XPropertySetInfo> xInfo = _xShape->getPropertySetInfo();
278  const SfxItemPropertyMap& rPropertyMap = aMap.GetPropertySet(SVXMAP_CUSTOMSHAPE, SdrObject::GetGlobalDrawObjectItemPool())->getPropertyMap();
279  for (const auto pProp : rPropertyMap.getPropertyEntries())
280  {
281  if ( xInfo->hasPropertyByName(pProp->aName) )
282  {
283  const SfxPoolItem* pItem = _rItemSet.GetItem(pProp->nWID);
284  if ( pItem )
285  {
286  ::std::unique_ptr<SfxPoolItem> pClone(pItem->CloneSetWhich(pProp->nWID));
287  pClone->PutValue(_xShape->getPropertyValue(pProp->aName), pProp->nMemberId);
288  _rItemSet.Put(std::move(pClone));
289  }
290  }
291  }
292  }
293 
294  void lcl_fillItemsToShape( const uno::Reference<report::XShape >& _xShape,const SfxItemSet& _rItemSet )
295  {
296  const uno::Reference< beans::XPropertySetInfo> xInfo = _xShape->getPropertySetInfo();
298  const SfxItemPropertyMap& rPropertyMap = aMap.GetPropertySet(SVXMAP_CUSTOMSHAPE, SdrObject::GetGlobalDrawObjectItemPool())->getPropertyMap();
299  for (const auto pProp : rPropertyMap.getPropertyEntries())
300  {
301  if ( SfxItemState::SET == _rItemSet.GetItemState(pProp->nWID) && xInfo->hasPropertyByName(pProp->aName) )
302  {
303  if ( ( pProp->nFlags & beans::PropertyAttribute::READONLY ) != beans::PropertyAttribute::READONLY )
304  {
305  const SfxPoolItem* pItem = _rItemSet.GetItem(pProp->nWID);
306  if ( pItem )
307  {
308  uno::Any aValue;
309  pItem->QueryValue(aValue, pProp->nMemberId);
310  try
311  {
312  _xShape->setPropertyValue(pProp->aName, aValue);
313  }
314  catch(uno::Exception&)
315  { // shapes have a bug so we ignore this one.
316  }
317  }
318  }
319  }
320  }
321  }
322 
323  void lcl_CharPropertiesToItems( const uno::Reference<report::XReportControlFormat >& _rxReportControlFormat,
324  SfxItemSet& _rItemSet )
325  {
326  if ( !_rxReportControlFormat.is() )
327  throw lang::NullPointerException();
328 
329  uno::Reference< beans::XPropertySet > xSet(_rxReportControlFormat,uno::UNO_QUERY_THROW);
330 
331  // fill it
332  const vcl::Font aFont( lcl_setFont(_rxReportControlFormat, _rItemSet,WESTERN,ITEMID_FONT,ITEMID_FONTHEIGHT,ITEMID_LANGUAGE,ITEMID_POSTURE,ITEMID_WEIGHT ) );
333 
334  _rItemSet.Put(SvxShadowedItem(_rxReportControlFormat->getCharShadowed(),ITEMID_SHADOWED));
335  _rItemSet.Put(SvxWordLineModeItem(aFont.IsWordLineMode(),ITEMID_WORDLINEMODE));
336  _rItemSet.Put(SvxContourItem(_rxReportControlFormat->getCharContoured(),ITEMID_CONTOUR));
337  _rItemSet.Put(SvxAutoKernItem(_rxReportControlFormat->getCharAutoKerning(),ITEMID_AUTOKERN));
338  _rItemSet.Put(SvxCrossedOutItem(aFont.GetStrikeout(),ITEMID_CROSSEDOUT));
339  _rItemSet.Put(SvxCaseMapItem(static_cast<SvxCaseMap>(_rxReportControlFormat->getCharCaseMap()),ITEMID_CASEMAP));
340 
341  _rItemSet.Put(SvxEscapementItem(_rxReportControlFormat->getCharEscapement(),_rxReportControlFormat->getCharEscapementHeight(),ITEMID_ESCAPEMENT));
342  _rItemSet.Put(SvxBlinkItem(_rxReportControlFormat->getCharFlash(),ITEMID_BLINK));
343  _rItemSet.Put(SvxCharHiddenItem(_rxReportControlFormat->getCharHidden(),ITEMID_CHARHIDDEN));
344  _rItemSet.Put(SvxTwoLinesItem(_rxReportControlFormat->getCharCombineIsOn(),_rxReportControlFormat->getCharCombinePrefix().toChar(),_rxReportControlFormat->getCharCombineSuffix().toChar(),ITEMID_TWOLINES));
345  SvxUnderlineItem aUnderLineItem(aFont.GetUnderline(),ITEMID_UNDERLINE);
346  aUnderLineItem.SetColor(Color(ColorTransparency, _rxReportControlFormat->getCharUnderlineColor()));
347  _rItemSet.Put(aUnderLineItem);
348  _rItemSet.Put(SvxKerningItem(_rxReportControlFormat->getCharKerning(),ITEMID_KERNING));
349  _rItemSet.Put(SvxEmphasisMarkItem(static_cast<FontEmphasisMark>(_rxReportControlFormat->getCharEmphasis()),ITEMID_EMPHASISMARK));
350  _rItemSet.Put(SvxCharReliefItem(static_cast<FontRelief>(_rxReportControlFormat->getCharRelief()),ITEMID_CHARRELIEF));
351  _rItemSet.Put(SvxColorItem(::Color(ColorTransparency, _rxReportControlFormat->getCharColor()),ITEMID_COLOR));
352  _rItemSet.Put(SvxCharRotateItem(Degree10(_rxReportControlFormat->getCharRotation()),false,ITEMID_CHARROTATE));
353  _rItemSet.Put(SvxCharScaleWidthItem(_rxReportControlFormat->getCharScaleWidth(),ITEMID_CHARSCALE_W));
354 
355  SvxHorJustifyItem aHorJustifyItem(ITEMID_HORJUSTIFY);
356  aHorJustifyItem.PutValue(xSet->getPropertyValue(PROPERTY_PARAADJUST),MID_HORJUST_ADJUST);
357  _rItemSet.Put(aHorJustifyItem);
358  SvxVerJustifyItem aVerJustifyItem(ITEMID_VERJUSTIFY);
359  aVerJustifyItem.PutValue(xSet->getPropertyValue(PROPERTY_VERTICALALIGN),MID_HORJUST_ADJUST);
360  _rItemSet.Put(aVerJustifyItem);
361 
362  uno::Reference< report::XShape> xShape(_rxReportControlFormat,uno::UNO_QUERY);
363  if ( !xShape.is() )
364  _rItemSet.Put(SvxBrushItem(::Color(ColorTransparency, _rxReportControlFormat->getControlBackground()),ITEMID_BRUSH));
365 
368  }
369 
370 
371  void lcl_pushBack( uno::Sequence< beans::NamedValue >& _out_rProperties, const OUString& _sName, const uno::Any& _rValue )
372  {
373  sal_Int32 nLen( _out_rProperties.getLength() );
374  _out_rProperties.realloc( nLen + 1 );
375  _out_rProperties[ nLen ] = beans::NamedValue( _sName, _rValue );
376  }
377 
378 
379  void lcl_initAwtFont( const vcl::Font& _rOriginalFont, const SfxItemSet& _rItemSet, awt::FontDescriptor& _out_rAwtFont,
380  sal_uInt16 _nFont, sal_uInt16 _nFontHeight,sal_uInt16 _nPosture, sal_uInt16 _nWeight)
381  {
382  vcl::Font aNewFont( _rOriginalFont );
383  const SfxPoolItem* pItem( nullptr );
384  if ( SfxItemState::SET == _rItemSet.GetItemState( _nFont,true,&pItem) )
385  if ( auto pFontItem = dynamic_cast< const SvxFontItem *>( pItem ) )
386  {
387  aNewFont.SetFamilyName(pFontItem->GetFamilyName());
388  aNewFont.SetStyleName(pFontItem->GetStyleName());
389  aNewFont.SetFamily(pFontItem->GetFamily());
390  aNewFont.SetPitch(pFontItem->GetPitch());
391  aNewFont.SetCharSet(pFontItem->GetCharSet());
392  }
393  if ( SfxItemState::SET == _rItemSet.GetItemState( _nFontHeight,true,&pItem) )
394  if ( auto pFontItem = dynamic_cast< const SvxFontHeightItem *>( pItem ) )
395  {
396  aNewFont.SetFontHeight(OutputDevice::LogicToLogic(Size(0, pFontItem->GetHeight()), MapMode(MapUnit::MapTwip), MapMode(MapUnit::MapPoint)).Height());
397  }
398  if ( SfxItemState::SET == _rItemSet.GetItemState( _nPosture,true,&pItem) )
399  if ( auto pFontItem = dynamic_cast< const SvxPostureItem *>( pItem ) )
400  {
401  aNewFont.SetItalic(pFontItem->GetPosture());
402  }
403  if ( SfxItemState::SET == _rItemSet.GetItemState( _nWeight,true,&pItem) )
404  if ( auto pFontItem = dynamic_cast< const SvxWeightItem *>( pItem ) )
405  {
406  aNewFont.SetWeight(pFontItem->GetWeight());
407  }
408  if ( SfxItemState::SET == _rItemSet.GetItemState( ITEMID_WORDLINEMODE,true,&pItem) )
409  if ( auto pFontItem = dynamic_cast< const SvxWordLineModeItem *>( pItem ) )
410  {
411  aNewFont.SetWordLineMode(pFontItem->GetValue());
412  }
413  if ( SfxItemState::SET == _rItemSet.GetItemState( ITEMID_CROSSEDOUT,true,&pItem) )
414  if ( auto pFontItem = dynamic_cast< const SvxCrossedOutItem *>( pItem ) )
415  {
416  aNewFont.SetStrikeout(pFontItem->GetStrikeout());
417  }
418 
419  if ( SfxItemState::SET == _rItemSet.GetItemState( ITEMID_CHARROTATE,true,&pItem) )
420  if ( auto pRotateItem = dynamic_cast< const SvxCharRotateItem *>( pItem ) )
421  {
422  aNewFont.SetOrientation(pRotateItem->GetValue());
423  }
424  if ( SfxItemState::SET == _rItemSet.GetItemState( ITEMID_CHARSCALE_W,true,&pItem) )
425  if ( auto pCharItem = dynamic_cast< const SvxCharScaleWidthItem *>( pItem ) )
426  {
427  aNewFont.SetWidthType(vcl::unohelper::ConvertFontWidth(pCharItem->GetValue()));
428  }
429  if ( SfxItemState::SET == _rItemSet.GetItemState( ITEMID_UNDERLINE,true,&pItem) )
430  if ( auto pFontItem = dynamic_cast< const SvxUnderlineItem *>( pItem ) )
431  {
432  aNewFont.SetUnderline(pFontItem->GetLineStyle());
433  }
434  if ( SfxItemState::SET == _rItemSet.GetItemState( ITEMID_COLOR,true,&pItem) )
435  if ( auto pFontItem = dynamic_cast< const SvxColorItem *>( pItem ) )
436  {
437  aNewFont.SetColor(pFontItem->GetValue());
438  }
439 
440  _out_rAwtFont = VCLUnoHelper::CreateFontDescriptor( aNewFont );
441  }
442 
443 
444  void lcl_itemsToCharProperties( const vcl::Font& _rOriginalControlFont,const vcl::Font& _rOriginalControlFontAsian,const vcl::Font& _rOriginalControlFontComplex, const SfxItemSet& _rItemSet, uno::Sequence< beans::NamedValue >& _out_rProperties )
445  {
446  const SfxPoolItem* pItem( nullptr );
447 
448  // create an AWT font
449  awt::FontDescriptor aAwtFont;
450  lcl_initAwtFont( _rOriginalControlFont, _rItemSet, aAwtFont,ITEMID_FONT,ITEMID_FONTHEIGHT,ITEMID_POSTURE, ITEMID_WEIGHT);
451  lcl_pushBack( _out_rProperties, "Font", uno::makeAny( aAwtFont ) );
452  lcl_initAwtFont( _rOriginalControlFontAsian, _rItemSet, aAwtFont,ITEMID_FONT_ASIAN,ITEMID_FONTHEIGHT_ASIAN,ITEMID_POSTURE_ASIAN, ITEMID_WEIGHT_ASIAN);
453  lcl_pushBack( _out_rProperties, "FontAsian", uno::makeAny( aAwtFont ) );
454  lcl_initAwtFont( _rOriginalControlFontComplex, _rItemSet, aAwtFont,ITEMID_FONT_COMPLEX,ITEMID_FONTHEIGHT_COMPLEX,ITEMID_POSTURE_COMPLEX, ITEMID_WEIGHT_COMPLEX);
455  lcl_pushBack( _out_rProperties, "FontComplex", uno::makeAny( aAwtFont ) );
456 
457  // properties which cannot be represented in an AWT font need to be preserved directly
458  if ( SfxItemState::SET == _rItemSet.GetItemState( ITEMID_SHADOWED,true,&pItem) )
459  if (auto pShadowedItem = dynamic_cast<const SvxShadowedItem *>( pItem ))
460  lcl_pushBack( _out_rProperties, PROPERTY_CHARSHADOWED, uno::makeAny( pShadowedItem->GetValue() ) );
461  if ( SfxItemState::SET == _rItemSet.GetItemState( ITEMID_CONTOUR,true,&pItem) )
462  if (auto pContourItem = dynamic_cast<const SvxContourItem *>( pItem ))
463  lcl_pushBack( _out_rProperties, PROPERTY_CHARCONTOURED, uno::makeAny( pContourItem->GetValue() ) );
464  if ( SfxItemState::SET == _rItemSet.GetItemState( ITEMID_UNDERLINE,true,&pItem) )
465  if (auto pUnderlineItem = dynamic_cast< const SvxUnderlineItem *>( pItem ))
466  lcl_pushBack( _out_rProperties, PROPERTY_CHARUNDERLINECOLOR, uno::makeAny( pUnderlineItem->GetColor() ) );
467  if ( SfxItemState::SET == _rItemSet.GetItemState( ITEMID_HORJUSTIFY,true,&pItem) )
468  if (auto pJustifyItem = dynamic_cast< const SvxHorJustifyItem *>( pItem ))
469  {
470  uno::Any aValue;
471  pJustifyItem->QueryValue(aValue,MID_HORJUST_ADJUST);
472  lcl_pushBack( _out_rProperties, PROPERTY_PARAADJUST, aValue );
473  }
474  if ( SfxItemState::SET == _rItemSet.GetItemState( ITEMID_VERJUSTIFY,true,&pItem) )
475  if (auto pJustifyItem = dynamic_cast< const SvxVerJustifyItem *>( pItem ))
476  {
477  uno::Any aValue;
478  pJustifyItem->QueryValue(aValue,MID_HORJUST_ADJUST);
479  lcl_pushBack( _out_rProperties, PROPERTY_VERTICALALIGN, aValue );
480  }
481  if ( SfxItemState::SET == _rItemSet.GetItemState( ITEMID_CHARRELIEF,true,&pItem) )
482  if (auto pReliefItem = dynamic_cast< const SvxCharReliefItem *>( pItem ))
483  lcl_pushBack( _out_rProperties, PROPERTY_CHARRELIEF, uno::makeAny( static_cast< sal_Int16 >( pReliefItem->GetEnumValue() ) ) );
484  if ( SfxItemState::SET == _rItemSet.GetItemState( ITEMID_CHARHIDDEN,true,&pItem) )
485  if (auto pHiddenItem = dynamic_cast< const SvxCharHiddenItem *>( pItem ))
486  lcl_pushBack( _out_rProperties, PROPERTY_CHARHIDDEN, uno::makeAny( pHiddenItem->GetValue() ) );
487  if ( SfxItemState::SET == _rItemSet.GetItemState( ITEMID_AUTOKERN,true,&pItem) )
488  if (auto pKernItem = dynamic_cast< const SvxAutoKernItem *>( pItem ))
489  lcl_pushBack( _out_rProperties, PROPERTY_CHARAUTOKERNING, uno::makeAny( pKernItem->GetValue() ) );
490  if ( SfxItemState::SET == _rItemSet.GetItemState( ITEMID_BRUSH,true,&pItem) )
491  if (auto pBrushItem = dynamic_cast< const SvxBrushItem *>( pItem ))
492  lcl_pushBack( _out_rProperties, PROPERTY_CONTROLBACKGROUND, uno::makeAny( pBrushItem->GetColor() ) );
493  if ( SfxItemState::SET == _rItemSet.GetItemState( ITEMID_BLINK,true,&pItem) )
494  if (auto pBlinkItem = dynamic_cast< const SvxBlinkItem *>( pItem ))
495  lcl_pushBack( _out_rProperties, PROPERTY_CHARFLASH, uno::makeAny( pBlinkItem->GetValue() ) );
496  if ( SfxItemState::SET == _rItemSet.GetItemState( ITEMID_EMPHASISMARK,true,&pItem) )
497  if (auto pMarkItem = dynamic_cast< const SvxEmphasisMarkItem *>( pItem ))
498  lcl_pushBack( _out_rProperties, PROPERTY_CHAREMPHASIS, uno::makeAny( static_cast< sal_Int16 >( pMarkItem->GetEmphasisMark() ) ) );
499  if ( SfxItemState::SET == _rItemSet.GetItemState( ITEMID_TWOLINES,true,&pItem) )
500  if (auto pLinesItem = dynamic_cast< const SvxTwoLinesItem *>( pItem ))
501  {
502  lcl_pushBack( _out_rProperties, PROPERTY_CHARCOMBINEISON, uno::makeAny( pLinesItem->GetValue() ) );
503  lcl_pushBack( _out_rProperties, PROPERTY_CHARCOMBINEPREFIX, uno::makeAny( OUString( pLinesItem->GetStartBracket() ) ) );
504  lcl_pushBack( _out_rProperties, PROPERTY_CHARCOMBINESUFFIX, uno::makeAny( OUString( pLinesItem->GetEndBracket() ) ) );
505  }
506  if ( SfxItemState::SET == _rItemSet.GetItemState( ITEMID_COLOR,true,&pItem) )
507  if (auto pColorItem = dynamic_cast< const SvxColorItem *>( pItem ))
508  lcl_pushBack( _out_rProperties, PROPERTY_CHARCOLOR, uno::makeAny( pColorItem->GetValue() ) );
509  if ( SfxItemState::SET == _rItemSet.GetItemState( ITEMID_KERNING,true,&pItem) )
510  if (auto pKernItem = dynamic_cast< const SvxKerningItem *>( pItem ))
511  lcl_pushBack( _out_rProperties, PROPERTY_CHARKERNING, uno::makeAny( pKernItem->GetValue() ) );
512  if ( SfxItemState::SET == _rItemSet.GetItemState( ITEMID_CASEMAP,true,&pItem) )
513  if (auto pCaseMapItem = dynamic_cast< const SvxCaseMapItem *>( pItem ))
514  lcl_pushBack( _out_rProperties, PROPERTY_CHARCASEMAP, uno::makeAny( pCaseMapItem->GetEnumValue() ) );
515  struct Items {
516  sal_uInt16 nWhich;
517  OUString sPropertyName;
518  };
519  const Items pItems[] = { {ITEMID_LANGUAGE,OUString(PROPERTY_CHARLOCALE)}
522  };
523  for(const auto & k : pItems)
524  {
525  if ( SfxItemState::SET == _rItemSet.GetItemState( k.nWhich,true,&pItem) )
526  if (auto pLanguageItem = dynamic_cast< const SvxLanguageItem *>( pItem ))
527  {
528  lang::Locale aCharLocale( LanguageTag( pLanguageItem->GetLanguage()).getLocale());
529  lcl_pushBack( _out_rProperties, k.sPropertyName, uno::makeAny( aCharLocale ) );
530  }
531  }
532  if ( SfxItemState::SET == _rItemSet.GetItemState( ITEMID_ESCAPEMENT,true,&pItem) )
533  if (auto pEscapementItem = dynamic_cast< const SvxEscapementItem *>( pItem ))
534  {
535  lcl_pushBack( _out_rProperties, PROPERTY_CHARESCAPEMENT, uno::makeAny( pEscapementItem->GetEsc() ) );
536  lcl_pushBack( _out_rProperties, PROPERTY_CHARESCAPEMENTHEIGHT, uno::makeAny(static_cast<sal_Int8>(pEscapementItem->GetProportionalHeight())) );
537  }
538  }
539 
540 
541  template< class ATTRIBUTE_TYPE >
542  void lcl_applyFontAttribute( const ::comphelper::NamedValueCollection& _rAttrValues, const char* _pAttributeName,
543  const uno::Reference<report::XReportControlFormat >& _rxReportControlFormat,
544  void (SAL_CALL report::XReportControlFormat::*pSetter)( ATTRIBUTE_TYPE ) )
545  {
546  ATTRIBUTE_TYPE aAttributeValue = ATTRIBUTE_TYPE();
547  if ( _rAttrValues.get_ensureType( _pAttributeName, aAttributeValue ) )
548  (_rxReportControlFormat.get()->*pSetter)( aAttributeValue );
549  }
550 
551 
552  void lcl_applyFontAttribute( const ::comphelper::NamedValueCollection& _rAttrValues, const char* _pAttributeName,
553  const uno::Reference<report::XReportControlFormat >& _rxReportControlFormat,
554  void (SAL_CALL report::XReportControlFormat::*pSetter)( const OUString& ) )
555  {
556  OUString aAttributeValue;
557  if ( _rAttrValues.get_ensureType( _pAttributeName, aAttributeValue ) )
558  (_rxReportControlFormat.get()->*pSetter)( aAttributeValue );
559  }
560 
561 
562  void lcl_applyFontAttribute( const ::comphelper::NamedValueCollection& _rAttrValues, const char* _pAttributeName,
563  const uno::Reference<report::XReportControlFormat >& _rxReportControlFormat,
564  void (SAL_CALL report::XReportControlFormat::*pSetter)( const lang::Locale& ) )
565  {
566  lang::Locale aAttributeValue;
567  if ( _rAttrValues.get_ensureType( _pAttributeName, aAttributeValue ) )
568  (_rxReportControlFormat.get()->*pSetter)( aAttributeValue );
569  }
570 }
571 
572 
573 bool openCharDialog( const uno::Reference<report::XReportControlFormat >& _rxReportControlFormat,
574  const uno::Reference< awt::XWindow>& _rxParentWindow, uno::Sequence< beans::NamedValue >& _out_rNewValues )
575 {
576  OSL_PRECOND( _rxReportControlFormat.is() && _rxParentWindow.is(), "openCharDialog: invalid parameters!" );
577  if ( !_rxReportControlFormat.is() || !_rxParentWindow.is() )
578  return false;
579 
580  _out_rNewValues = uno::Sequence< beans::NamedValue >();
581 
582 
583  // UNO->ItemSet
584  static SfxItemInfo aItemInfos[] =
585  {
586  { XATTR_FILLSTYLE, true },
587  { XATTR_FILLCOLOR, true },
588  { XATTR_FILLGRADIENT, true },
589  { XATTR_FILLHATCH, true },
590  { XATTR_FILLBITMAP, true },
591  { XATTR_FILLTRANSPARENCE, true },
592  { XATTR_GRADIENTSTEPCOUNT, true },
593  { XATTR_FILLBMP_TILE, true },
594  { XATTR_FILLBMP_POS, true },
595  { XATTR_FILLBMP_SIZEX, true },
596  { XATTR_FILLBMP_SIZEY, true },
597  { XATTR_FILLFLOATTRANSPARENCE, true },
598  { XATTR_SECONDARYFILLCOLOR, true },
599  { XATTR_FILLBMP_SIZELOG, true },
600  { XATTR_FILLBMP_TILEOFFSETX, true },
601  { XATTR_FILLBMP_TILEOFFSETY, true },
602  { XATTR_FILLBMP_STRETCH, true },
603  { XATTR_FILLBMP_POSOFFSETX, true },
604  { XATTR_FILLBMP_POSOFFSETY, true },
605  { XATTR_FILLBACKGROUND, true },
606 
607  { SID_ATTR_CHAR_FONT, true },
608  { SID_ATTR_CHAR_FONTHEIGHT, true },
609  { SID_ATTR_CHAR_LANGUAGE, true },
610  { SID_ATTR_CHAR_POSTURE, true },
611  { SID_ATTR_CHAR_WEIGHT, true },
612  { SID_ATTR_CHAR_SHADOWED, true },
613  { SID_ATTR_CHAR_WORDLINEMODE, true },
614  { SID_ATTR_CHAR_CONTOUR, true },
615  { SID_ATTR_CHAR_STRIKEOUT, true },
616  { SID_ATTR_CHAR_UNDERLINE, true },
617  { SID_ATTR_CHAR_COLOR, true },
618  { SID_ATTR_CHAR_KERNING, true },
619  { SID_ATTR_CHAR_CASEMAP, true },
620  { SID_ATTR_CHAR_ESCAPEMENT, true },
621  { SID_ATTR_CHAR_FONTLIST, true },
622  { SID_ATTR_CHAR_AUTOKERN, true },
623  { SID_COLOR_TABLE, true },
624  { SID_ATTR_FLASH, true },
625  { SID_ATTR_CHAR_EMPHASISMARK, true },
626  { SID_ATTR_CHAR_TWO_LINES, true },
627  { SID_ATTR_CHAR_ROTATED, true },
628  { SID_ATTR_CHAR_SCALEWIDTH, true },
629  { SID_ATTR_CHAR_RELIEF, true },
630  { SID_ATTR_CHAR_HIDDEN, true },
631  { SID_ATTR_BRUSH, true },
632  { SID_ATTR_ALIGN_HOR_JUSTIFY, true },
633  { SID_ATTR_ALIGN_VER_JUSTIFY, true },
634 
635  // Asian
636  { SID_ATTR_CHAR_CJK_FONT, true },
637  { SID_ATTR_CHAR_CJK_FONTHEIGHT, true },
638  { SID_ATTR_CHAR_CJK_LANGUAGE, true },
639  { SID_ATTR_CHAR_CJK_POSTURE, true },
640  { SID_ATTR_CHAR_CJK_WEIGHT, true },
641  // Complex
642  { SID_ATTR_CHAR_CTL_FONT, true },
643  { SID_ATTR_CHAR_CTL_FONTHEIGHT, true },
644  { SID_ATTR_CHAR_CTL_LANGUAGE, true },
645  { SID_ATTR_CHAR_CTL_POSTURE, true },
646  { SID_ATTR_CHAR_CTL_WEIGHT, true }
647  };
650  const Graphic aNullGraphic;
651  const ::Color aNullLineCol(COL_DEFAULT_SHAPE_STROKE); // #i121448# Use defined default color
652  const ::Color aNullFillCol(COL_DEFAULT_SHAPE_FILLING); // #i121448# Use defined default color
653  const XGradient aNullGrad(COL_BLACK, COL_WHITE);
654  const XHatch aNullHatch(aNullLineCol);
655  std::vector<SfxPoolItem*> pDefaults
656  {
657  new XFillStyleItem,
658  new XFillColorItem("", aNullFillCol),
659  new XFillGradientItem(aNullGrad),
660  new XFillHatchItem(aNullHatch),
661  new XFillBitmapItem(aNullGraphic),
664  new XFillBmpTileItem,
665  new XFillBmpPosItem,
666  new XFillBmpSizeXItem,
667  new XFillBmpSizeYItem,
668  new XFillFloatTransparenceItem(aNullGrad, false),
669  new XSecondaryFillColorItem("", aNullFillCol),
677 
683 
684  new SvxShadowedItem(false,ITEMID_SHADOWED),
686  new SvxContourItem(false,ITEMID_CONTOUR),
689 
692  new SvxCaseMapItem(SvxCaseMap::NotMapped,ITEMID_CASEMAP),
694  new SvxFontListItem(&aFontList,ITEMID_FONTLIST),
695  new SvxAutoKernItem(false,ITEMID_AUTOKERN),
696  new SvxColorListItem(pColorList,ITEMID_COLOR_TABLE),
697  new SvxBlinkItem(false,ITEMID_BLINK),
698  new SvxEmphasisMarkItem(FontEmphasisMark::NONE,ITEMID_EMPHASISMARK),
699  new SvxTwoLinesItem(true,0,0,ITEMID_TWOLINES),
700  new SvxCharRotateItem(0_deg10,false,ITEMID_CHARROTATE),
702  new SvxCharReliefItem(FontRelief::NONE,ITEMID_CHARRELIEF),
707 // Asian
713 // Complex
719 
720  };
721 
722  OSL_ASSERT( pDefaults.size() == SAL_N_ELEMENTS(aItemInfos) );
723 
724  static const WhichRangesContainer pRanges(svl::Items<
726  >);
727 
728  rtl::Reference<SfxItemPool> pPool(new SfxItemPool("ReportCharProperties", XATTR_FILL_FIRST,ITEMID_WEIGHT_COMPLEX, aItemInfos, &pDefaults));
729  // not needed for font height pPool->SetDefaultMetric( MapUnit::Map100thMM ); // ripped, don't understand why
730  pPool->FreezeIdRanges(); // the same
731  bool bSuccess = false;
732  try
733  {
734  SfxItemSet aDescriptor( *pPool, pRanges );
735  lcl_CharPropertiesToItems( _rxReportControlFormat, aDescriptor );
736 
737  { // want the dialog to be destroyed before our set
738  ORptPageDialog aDlg(Application::GetFrameWeld(_rxParentWindow), &aDescriptor, "CharDialog");
739  uno::Reference< report::XShape > xShape( _rxReportControlFormat, uno::UNO_QUERY );
740  if ( xShape.is() )
741  aDlg.RemoveTabPage("background");
742  bSuccess = aDlg.run() == RET_OK;
743  if ( bSuccess )
744  {
745  lcl_itemsToCharProperties( lcl_getReportControlFont( _rxReportControlFormat,WESTERN ),
746  lcl_getReportControlFont( _rxReportControlFormat,ASIAN ),
747  lcl_getReportControlFont( _rxReportControlFormat,COMPLEX ), *aDlg.GetOutputItemSet(), _out_rNewValues );
748  }
749  }
750  }
751  catch(uno::Exception&)
752  {
753  DBG_UNHANDLED_EXCEPTION("reportdesign");
754  }
755 
756  pPool.clear();
757  for (SfxPoolItem* pDefault : pDefaults)
758  delete pDefault;
759 
760  return bSuccess;
761 }
762 
763 bool openAreaDialog( const uno::Reference<report::XShape >& _xShape,const uno::Reference< awt::XWindow>& _rxParentWindow )
764 {
765  OSL_PRECOND( _xShape.is() && _rxParentWindow.is(), "openAreaDialog: invalid parameters!" );
766  if ( !_xShape.is() || !_rxParentWindow.is() )
767  return false;
768 
769  std::shared_ptr<rptui::OReportModel> pModel = ::reportdesign::OReportDefinition::getSdrModel(_xShape->getSection()->getReportDefinition());
770 
771  weld::Window* pParent = Application::GetFrameWeld(_rxParentWindow);
772 
773  bool bSuccess = false;
774  try
775  {
776  SfxItemPool& rItemPool = pModel->GetItemPool();
777  SfxItemSet aDescriptor( rItemPool, rItemPool.GetFirstWhich(), rItemPool.GetLastWhich() );
778  lcl_fillShapeToItems(_xShape, aDescriptor);
779 
780  { // want the dialog to be destroyed before our set
782  ScopedVclPtr<AbstractSvxAreaTabDialog> pDialog(pFact->CreateSvxAreaTabDialog(pParent, &aDescriptor, pModel.get(), true));
783  if ( RET_OK == pDialog->Execute() )
784  {
785  bSuccess = true;
786  lcl_fillItemsToShape(_xShape,*pDialog->GetOutputItemSet());
787  }
788  }
789  }
790  catch(uno::Exception&)
791  {
792  DBG_UNHANDLED_EXCEPTION("reportdesign");
793  }
794 
795  return bSuccess;
796 }
797 
798 
799 void applyCharacterSettings( const uno::Reference< report::XReportControlFormat >& _rxReportControlFormat, const uno::Sequence< beans::NamedValue >& _rSettings )
800 {
801  ::comphelper::NamedValueCollection aSettings( _rSettings );
802 
803  try
804  {
805  awt::FontDescriptor aAwtFont;
806  if ( aSettings.get( "Font" ) >>= aAwtFont )
807  {
808  OUString sTemp = aAwtFont.Name;
809  aAwtFont.Name.clear(); // hack to
810  _rxReportControlFormat->setFontDescriptor( aAwtFont );
811  _rxReportControlFormat->setCharFontName( sTemp );
812  }
813  if ( aSettings.get( "FontAsian" ) >>= aAwtFont )
814  {
815  OUString sTemp = aAwtFont.Name;
816  aAwtFont.Name.clear(); // hack to
817  _rxReportControlFormat->setFontDescriptorAsian( aAwtFont );
818  _rxReportControlFormat->setCharFontNameAsian( sTemp );
819  }
820  if ( aSettings.get( "FontComplex" ) >>= aAwtFont )
821  {
822  OUString sTemp = aAwtFont.Name;
823  aAwtFont.Name.clear(); // hack to
824  _rxReportControlFormat->setFontDescriptorComplex( aAwtFont );
825  _rxReportControlFormat->setCharFontNameComplex( sTemp );
826  }
827 
828  lcl_applyFontAttribute( aSettings, PROPERTY_CHARSHADOWED, _rxReportControlFormat, &report::XReportControlFormat::setCharShadowed );
829  lcl_applyFontAttribute( aSettings, PROPERTY_CHARCONTOURED, _rxReportControlFormat, &report::XReportControlFormat::setCharContoured );
830  lcl_applyFontAttribute( aSettings, PROPERTY_CHARUNDERLINECOLOR, _rxReportControlFormat, &report::XReportControlFormat::setCharUnderlineColor );
831  lcl_applyFontAttribute( aSettings, PROPERTY_PARAADJUST, _rxReportControlFormat, &report::XReportControlFormat::setParaAdjust );
832  lcl_applyFontAttribute( aSettings, PROPERTY_VERTICALALIGN, _rxReportControlFormat, &report::XReportControlFormat::setVerticalAlign );
833  lcl_applyFontAttribute( aSettings, PROPERTY_CHARRELIEF, _rxReportControlFormat, &report::XReportControlFormat::setCharRelief );
834  lcl_applyFontAttribute( aSettings, PROPERTY_CHARHIDDEN, _rxReportControlFormat, &report::XReportControlFormat::setCharHidden );
835  lcl_applyFontAttribute( aSettings, PROPERTY_CHARAUTOKERNING, _rxReportControlFormat, &report::XReportControlFormat::setCharAutoKerning );
836  lcl_applyFontAttribute( aSettings, PROPERTY_CONTROLBACKGROUND, _rxReportControlFormat, &report::XReportControlFormat::setControlBackground );
837  lcl_applyFontAttribute( aSettings, PROPERTY_CHARFLASH, _rxReportControlFormat, &report::XReportControlFormat::setCharFlash );
838  lcl_applyFontAttribute( aSettings, PROPERTY_CHAREMPHASIS, _rxReportControlFormat, &report::XReportControlFormat::setCharEmphasis );
839  lcl_applyFontAttribute( aSettings, PROPERTY_CHARCOMBINEISON, _rxReportControlFormat, &report::XReportControlFormat::setCharCombineIsOn );
840  lcl_applyFontAttribute( aSettings, PROPERTY_CHARCOMBINEPREFIX, _rxReportControlFormat, &report::XReportControlFormat::setCharCombinePrefix );
841  lcl_applyFontAttribute( aSettings, PROPERTY_CHARCOMBINESUFFIX, _rxReportControlFormat, &report::XReportControlFormat::setCharCombineSuffix );
842  lcl_applyFontAttribute( aSettings, PROPERTY_CHARCOLOR, _rxReportControlFormat, &report::XReportControlFormat::setCharColor );
843  lcl_applyFontAttribute( aSettings, PROPERTY_CHARKERNING, _rxReportControlFormat, &report::XReportControlFormat::setCharKerning );
844  lcl_applyFontAttribute( aSettings, PROPERTY_CHARCASEMAP, _rxReportControlFormat, &report::XReportControlFormat::setCharCaseMap );
845  lcl_applyFontAttribute( aSettings, PROPERTY_CHARLOCALE, _rxReportControlFormat, &report::XReportControlFormat::setCharLocale );
846  lcl_applyFontAttribute( aSettings, PROPERTY_CHARESCAPEMENT, _rxReportControlFormat, &report::XReportControlFormat::setCharEscapement );
847  lcl_applyFontAttribute( aSettings, PROPERTY_CHARESCAPEMENTHEIGHT, _rxReportControlFormat, &report::XReportControlFormat::setCharEscapementHeight );
848  lcl_applyFontAttribute( aSettings, PROPERTY_CHARLOCALEASIAN, _rxReportControlFormat, &report::XReportControlFormat::setCharLocaleAsian );
849  lcl_applyFontAttribute( aSettings, PROPERTY_CHARLOCALECOMPLEX, _rxReportControlFormat, &report::XReportControlFormat::setCharLocaleComplex );
850  }
851  catch( const uno::Exception& )
852  {
853  DBG_UNHANDLED_EXCEPTION("reportdesign");
854  }
855 }
856 
857 void notifySystemWindow(vcl::Window const * _pWindow, vcl::Window* _pToRegister, const ::comphelper::mem_fun1_t<TaskPaneList,vcl::Window*>& rMemFunc)
858 {
859  OSL_ENSURE(_pWindow,"Window can not be null!");
860  SystemWindow* pSystemWindow = _pWindow ? _pWindow->GetSystemWindow() : nullptr;
861  if ( pSystemWindow )
862  {
863  rMemFunc( pSystemWindow->GetTaskPaneList(), _pToRegister );
864  }
865 }
866 
867 SdrObject* isOver(const tools::Rectangle& _rRect, SdrPage const & _rPage, SdrView const & _rView, bool _bAllObjects, SdrObject const * _pIgnore, sal_Int16 _nIgnoreType)
868 {
869  SdrObject* pOverlappedObj = nullptr;
870  SdrObjListIter aIter(&_rPage,SdrIterMode::DeepNoGroups);
871 
872  while( !pOverlappedObj )
873  {
874  SdrObject* pObjIter = aIter.Next();
875  if( !pObjIter )
876  break;
877  if ( _pIgnore != pObjIter
878  && (_bAllObjects || !_rView.IsObjMarked(pObjIter))
879  && (dynamic_cast<OUnoObject*>(pObjIter) != nullptr || dynamic_cast<OOle2Obj*>(pObjIter) != nullptr))
880  {
881  if (_nIgnoreType == ISOVER_IGNORE_CUSTOMSHAPES && pObjIter->GetObjIdentifier() == OBJ_CUSTOMSHAPE)
882  {
883  continue;
884  }
885 
886  if (dynamic_cast<OUnoObject*>(pObjIter) != nullptr || dynamic_cast<OOle2Obj*>(pObjIter) != nullptr)
887  {
888  tools::Rectangle aRect = _rRect.GetIntersection(pObjIter->GetLastBoundRect());
889  if ( !aRect.IsEmpty() && (aRect.Left() != aRect.Right() && aRect.Top() != aRect.Bottom() ) )
890  pOverlappedObj = pObjIter;
891  }
892  }
893  }
894  return pOverlappedObj;
895 }
896 
897 static bool checkArrayForOccurrence(SdrObject const * _pObjToCheck, std::unique_ptr<SdrUnoObj, SdrObjectFreeOp> _pIgnore[], int _nListLength)
898 {
899  for(int i=0;i<_nListLength;i++)
900  {
901  SdrObject *pIgnore = _pIgnore[i].get();
902  if (pIgnore == _pObjToCheck)
903  {
904  return true;
905  }
906  }
907  return false;
908 }
909 
910 SdrObject* isOver(const tools::Rectangle& _rRect,SdrPage const & _rPage,SdrView const & _rView,bool _bAllObjects, std::unique_ptr<SdrUnoObj, SdrObjectFreeOp> _pIgnoreList[], int _nIgnoreListLength)
911 {
912  SdrObject* pOverlappedObj = nullptr;
913  SdrObjListIter aIter(&_rPage,SdrIterMode::DeepNoGroups);
914 
915  while( !pOverlappedObj )
916  {
917  SdrObject* pObjIter = aIter.Next();
918  if( !pObjIter )
919  break;
920  if (checkArrayForOccurrence(pObjIter, _pIgnoreList, _nIgnoreListLength))
921  {
922  continue;
923  }
924 
925  if ( (_bAllObjects || !_rView.IsObjMarked(pObjIter))
926  && (dynamic_cast<OUnoObject*>(pObjIter) != nullptr || dynamic_cast<OOle2Obj*>(pObjIter) != nullptr) )
927  {
928  tools::Rectangle aRect = _rRect.GetIntersection(pObjIter->GetLastBoundRect());
929  if ( !aRect.IsEmpty() && (aRect.Left() != aRect.Right() && aRect.Top() != aRect.Bottom() ) )
930  pOverlappedObj = pObjIter;
931  }
932  }
933  return pOverlappedObj;
934 }
935 
936 
937 SdrObject* isOver(SdrObject const * _pObj,SdrPage const & _rPage,SdrView const & _rView)
938 {
939  SdrObject* pOverlappedObj = nullptr;
940  if (dynamic_cast<OUnoObject const *>(_pObj) != nullptr || dynamic_cast<OOle2Obj const *>(_pObj) != nullptr) // this doesn't need to be done for shapes
941  {
942  tools::Rectangle aRect = _pObj->GetCurrentBoundRect();
943  pOverlappedObj = isOver(aRect,_rPage,_rView,false/*_bUnMarkedObjects*/,_pObj);
944  }
945  return pOverlappedObj;
946 }
947 
948 
949 uno::Sequence< OUString > getParameterNames( const uno::Reference< sdbc::XRowSet >& _rxRowSet )
950 {
951  uno::Sequence< OUString > aNames;
952 
953  try
954  {
955  uno::Reference< sdb::XParametersSupplier > xSuppParams( _rxRowSet, uno::UNO_QUERY_THROW );
956  uno::Reference< container::XIndexAccess > xParams( xSuppParams->getParameters() );
957  if ( xParams.is() )
958  {
959  sal_Int32 count( xParams->getCount() );
960  aNames.realloc( count );
961 
962  uno::Reference< beans::XPropertySet > xParam;
963  OUString sParamName;
964  for ( sal_Int32 i=0; i<count; ++i )
965  {
966  xParam.set( xParams->getByIndex(i), uno::UNO_QUERY_THROW );
967  OSL_VERIFY( xParam->getPropertyValue( PROPERTY_NAME ) >>= sParamName );
968  aNames[i] = sParamName;
969  }
970  }
971  }
972  catch( const uno::Exception& )
973  {
974  DBG_UNHANDLED_EXCEPTION("reportdesign");
975  }
976 
977  return aNames;
978 }
979 
981 {
982  if (_pControl)
983  {
984  uno::Reference< report::XReportComponent > xComponent( _pControl->getUnoShape(), uno::UNO_QUERY);
985  if (xComponent.is())
986  {
987  tools::Rectangle aRect(VCLPoint(xComponent->getPosition()),VCLSize(xComponent->getSize()));
988  aRect.setHeight(aRect.getHeight() + 1);
989  aRect.setWidth(aRect.getWidth() + 1);
990  return aRect;
991  }
992  }
993  return tools::Rectangle();
994 }
995 
996 // check overlapping
997 void correctOverlapping(SdrObject* _pControl,OReportSection const & _aReportSection,bool _bInsert)
998 {
999  OSectionView& rSectionView = _aReportSection.getSectionView();
1000  uno::Reference< report::XReportComponent> xComponent(_pControl->getUnoShape(),uno::UNO_QUERY);
1001  tools::Rectangle aRect = getRectangleFromControl(_pControl);
1002 
1003  bool bOverlapping = true;
1004  while ( bOverlapping )
1005  {
1006  SdrObject* pOverlappedObj = isOver(aRect,*_aReportSection.getPage(),rSectionView,true, _pControl);
1007  bOverlapping = pOverlappedObj != nullptr;
1008  if ( bOverlapping )
1009  {
1010  const tools::Rectangle& aLogicRect = pOverlappedObj->GetLogicRect();
1011  aRect.Move(0,aLogicRect.Top() + aLogicRect.getHeight() - aRect.Top());
1012  xComponent->setPositionY(aRect.Top());
1013  }
1014  }
1015  if (_bInsert) // now insert objects
1016  rSectionView.InsertObjectAtView(_pControl,*rSectionView.GetSdrPageView(), SdrInsertFlags::ADDMARK);
1017 }
1018 
1019 void setZoomFactor(const Fraction& _aZoom, vcl::Window& _rWindow)
1020 {
1021  MapMode aMapMode( _rWindow.GetMapMode() );
1022  aMapMode.SetScaleX(_aZoom);
1023  aMapMode.SetScaleY(_aZoom);
1024  _rWindow.SetMapMode(aMapMode);
1025 }
1026 
1027 bool openDialogFormula_nothrow( OUString& _in_out_rFormula
1028  , const css::uno::Reference< css::uno::XComponentContext >& _xContext
1029  , const uno::Reference< awt::XWindow>& _xInspectorWindow
1030  , const css::uno::Reference < css::beans::XPropertySet >& _xRowSet
1031  )
1032 {
1033  OSL_PRECOND( _xInspectorWindow.is(), "openDialogFormula_nothrow: invalid parameters!" );
1034  if ( !_xInspectorWindow.is() )
1035  return false;
1036  bool bSuccess = false;
1037  ::dbtools::SQLExceptionInfo aErrorInfo;
1038  uno::Reference< awt::XWindow > xInspectorWindow;
1039  uno::Reference< lang::XMultiComponentFactory > xFactory;
1040  uno::Reference<lang::XMultiServiceFactory> xServiceFactory;
1041  try
1042  {
1043  xFactory = _xContext->getServiceManager();
1044  xServiceFactory.set(xFactory,uno::UNO_QUERY);
1045 
1046  uno::Reference< report::meta::XFunctionManager> xMgr(xFactory->createInstanceWithContext("org.libreoffice.report.pentaho.SOFunctionManager",_xContext),uno::UNO_QUERY);
1047  if ( xMgr.is() )
1048  {
1049  auto pFormulaManager = std::make_shared<FunctionManager>(xMgr);
1050  ReportFormula aFormula( _in_out_rFormula );
1051 
1052  LanguageTag aLangTag(LANGUAGE_SYSTEM);
1053  CharClass aCC(_xContext, aLangTag);
1054  svl::SharedStringPool aStringPool(aCC);
1055 
1056  FormulaDialog aDlg(
1057  Application::GetFrameWeld(_xInspectorWindow), xServiceFactory, pFormulaManager,
1058  aFormula.getUndecoratedContent(), _xRowSet, aStringPool);
1059 
1060  bSuccess = aDlg.run() == RET_OK;
1061  if ( bSuccess )
1062  {
1063  OUString sFormula = aDlg.getCurrentFormula();
1064  if ( sFormula[0] == '=' )
1065  _in_out_rFormula = OUString::Concat("rpt:") + sFormula.subView(1);
1066  else
1067  _in_out_rFormula = "rpt:" + sFormula;
1068  }
1069  }
1070  }
1071  catch (const sdb::SQLContext& e) { aErrorInfo = e; }
1072  catch (const sdbc::SQLWarning& e) { aErrorInfo = e; }
1073  catch (const sdbc::SQLException& e) { aErrorInfo = e; }
1074  catch( const uno::Exception& )
1075  {
1076  TOOLS_WARN_EXCEPTION( "reportdesign", "GeometryHandler::impl_dialogFilter_nothrow" );
1077  }
1078 
1079  if ( aErrorInfo.isValid() )
1080  ::dbtools::showError( aErrorInfo, xInspectorWindow, _xContext );
1081 
1082  return bSuccess;
1083 }
1084 
1085 } // namespace rptui
1086 
1087 
1088 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
#define LANGUAGE_GERMAN
#define ITEMID_CASEMAP
Definition: UITools.cxx:137
#define ITEMID_FONTHEIGHT
Definition: UITools.cxx:124
virtual const tools::Rectangle & GetCurrentBoundRect() const
#define ITEMID_AUTOKERN
Definition: UITools.cxx:141
SystemWindow * GetSystemWindow() const
constexpr TypedWhichId< XFillBmpTileOffsetYItem > XATTR_FILLBMP_TILEOFFSETY(XATTR_FILL_FIRST+15)
#define PROPERTY_RIGHTMARGIN
Definition: strings.hxx:105
SdrObject * isOver(const tools::Rectangle &_rRect, SdrPage const &_rPage, SdrView const &_rView, bool _bAllObjects=false, SdrObject const *_pIgnore=nullptr, sal_Int16 _nIgnoreType=0)
checks whether the given rectangle overlapps another OUnoObject object in that view.
Definition: UITools.cxx:867
static constexpr auto Items
#define PROPERTY_CHARSHADOWED
Definition: strings.hxx:237
SAL_WARN_UNUSED_RESULT Point LogicToLogic(const Point &rPtSource, const MapMode *pMapModeSource, const MapMode *pMapModeDest) const
tools::Long getWidth() const
#define ITEMID_FONT_COMPLEX
Definition: UITools.cxx:158
const SfxItemSet * GetOutputItemSet() const
#define COL_DEFAULT_SHAPE_FILLING
void SetColor(const Color &rCol)
static XColorListRef CreateStdColorList()
void notifySystemWindow(vcl::Window const *pWindow, vcl::Window *pToRegister, const ::comphelper::mem_fun1_t< TaskPaneList, vcl::Window * > &rMemFunc)
notifySystemWindow adds or remove the given window _pToRegister at the Systemwindow found when search...
Definition: UITools.cxx:857
constexpr TypedWhichId< SfxMetricItem > XATTR_FILLBMP_SIZEX(XATTR_FILL_FIRST+9)
#define ITEMID_SHADOWED
Definition: UITools.cxx:129
static SvxAbstractDialogFactory * Create()
#define PROPERTY_CHARCOMBINEPREFIX
Definition: strings.hxx:234
const StyleSettings & GetStyleSettings() const
constexpr TypedWhichId< XFillStyleItem > XATTR_FILLSTYLE(XATTR_FILL_FIRST)
#define PROPERTY_CHARESCAPEMENT
Definition: strings.hxx:231
#define ITEMID_EMPHASISMARK
Definition: UITools.cxx:144
#define PROPERTY_CHARCOMBINEISON
Definition: strings.hxx:233
sal_uInt16 GetLastWhich() const
void RemoveTabPage(const OString &rName)
OUString RptResId(std::string_view aId)
#define ASIAN
Definition: UITools.cxx:165
#define ITEMID_VERJUSTIFY
Definition: UITools.cxx:152
#define ITEMID_CHARROTATE
Definition: UITools.cxx:146
constexpr TypedWhichId< XFillHatchItem > XATTR_FILLHATCH(XATTR_FILL_FIRST+3)
#define PROPERTY_CHARHIDDEN
Definition: strings.hxx:236
#define ITEMID_FONTHEIGHT_COMPLEX
Definition: UITools.cxx:159
virtual SdrObjKind GetObjIdentifier() const
uno::Reference< style::XStyle > getUsedStyle(const uno::Reference< report::XReportDefinition > &_xReport)
Definition: RptObject.cxx:1197
constexpr TypedWhichId< XFillBackgroundItem > XATTR_FILLBACKGROUND(XATTR_FILL_FIRST+19)
#define PROPERTY_CHARUNDERLINECOLOR
Definition: strings.hxx:89
tools::Rectangle getRectangleFromControl(SdrObject *pControl)
returns a Rectangle of a given SdrObject
Definition: UITools.cxx:980
bool InsertObjectAtView(SdrObject *pObj, SdrPageView &rPV, SdrInsertFlags nOptions=SdrInsertFlags::NONE)
#define PROPERTY_CHARCASEMAP
Definition: strings.hxx:232
static OutputDevice * GetDefaultDevice()
tools::Long getHeight() const
HashMap_OWString_Interface aMap
#define ITEMID_WEIGHT_COMPLEX
Definition: UITools.cxx:162
bool openDialogFormula_nothrow(OUString &_in_out_rFormula, const css::uno::Reference< css::uno::XComponentContext > &_xContext, const css::uno::Reference< css::awt::XWindow > &_xWindow, const css::uno::Reference< css::beans::XPropertySet > &_xRowSet)
opens the formula dialog
virtual css::uno::Reference< css::uno::XInterface > getUnoShape()
tools::Long Left() const
LINESTYLE_NONE
virtual bool QueryValue(css::uno::Any &rVal, sal_uInt8 nMemberId=0) const
#define ITEMID_FONTLIST
Definition: UITools.cxx:140
#define PROPERTY_LEFTMARGIN
Definition: strings.hxx:104
tools::Long Bottom() const
static bool checkArrayForOccurrence(SdrObject const *_pObjToCheck, std::unique_ptr< SdrUnoObj, SdrObjectFreeOp > _pIgnore[], int _nListLength)
Definition: UITools.cxx:897
#define PROPERTY_VERTICALALIGN
Definition: strings.hxx:86
VCL_DLLPUBLIC float ConvertFontWidth(FontWidth eWidth)
#define ITEMID_BLINK
Definition: UITools.cxx:143
#define ITEMID_CROSSEDOUT
Definition: UITools.cxx:132
tools::Rectangle GetIntersection(const tools::Rectangle &rRect) const
#define WESTERN
Definition: UITools.cxx:164
virtual bool PutValue(const css::uno::Any &rVal, sal_uInt8 nMemberId)
#define PROPERTY_CHARCOLOR
Definition: strings.hxx:85
#define PROPERTY_CHARKERNING
Definition: strings.hxx:240
const char * sName
constexpr bool IsEmpty() const
#define SAL_N_ELEMENTS(arr)
#define MID_HORJUST_ADJUST
#define PROPERTY_CHARESCAPEMENTHEIGHT
Definition: strings.hxx:229
#define ITEMID_UNDERLINE
Definition: UITools.cxx:133
#define PROPERTY_CONTROLBACKGROUND
Definition: strings.hxx:40
virtual short run() override
#define DBG_UNHANDLED_EXCEPTION(...)
#define PROPERTY_NAME
Definition: strings.hxx:36
#define ITEMID_FONT_ASIAN
Definition: UITools.cxx:153
#define TOOLS_WARN_EXCEPTION(area, stream)
#define PROPERTY_CHARRELIEF
Definition: strings.hxx:84
constexpr TypedWhichId< XFillTransparenceItem > XATTR_FILLTRANSPARENCE(XATTR_FILL_FIRST+5)
constexpr TypedWhichId< XFillGradientItem > XATTR_FILLGRADIENT(XATTR_FILL_FIRST+2)
SfxItemState GetItemState(sal_uInt16 nWhich, bool bSrchInParent=true, const SfxPoolItem **ppItem=nullptr) const
int i
#define PROPERTY_PAPERSIZE
Definition: strings.hxx:62
constexpr TypedWhichId< XSecondaryFillColorItem > XATTR_SECONDARYFILLCOLOR(XATTR_FILL_FIRST+12)
#define ITEMID_WEIGHT_ASIAN
Definition: UITools.cxx:157
void correctOverlapping(SdrObject *pControl, OReportSection const &_aReportSection, bool _bInsert=true)
ensures that no control overlaps the given one.
Definition: UITools.cxx:997
constexpr TypedWhichId< XFillBitmapItem > XATTR_FILLBITMAP(XATTR_FILL_FIRST+4)
#define ITEMID_WEIGHT
Definition: UITools.cxx:128
#define LANGUAGE_SYSTEM
const MapMode & GetMapMode() const
void adjustSectionName(const css::uno::Reference< css::report::XGroup > &_xGroup, sal_Int32 _nPos)
set the name of the header and footer of the group by the expression appended by the localized name o...
static weld::Window * GetFrameWeld(const css::uno::Reference< css::awt::XWindow > &rWindow)
#define ITEMID_POSTURE_ASIAN
Definition: UITools.cxx:156
constexpr TypedWhichId< XFillBmpPosItem > XATTR_FILLBMP_POS(XATTR_FILL_FIRST+8)
constexpr sal_uInt16 XATTR_FILL_FIRST(XATTRSET_LINE+1)
WEIGHT_NORMAL
#define ITEMID_BRUSH
Definition: UITools.cxx:150
#define ITEMID_FONT
Definition: UITools.cxx:123
inline::Point VCLPoint(const css::awt::Point &rAWTPoint)
bool openCharDialog(const css::uno::Reference< css::report::XReportControlFormat > &_xReportControlFormat, const css::uno::Reference< css::awt::XWindow > &_xWindow, css::uno::Sequence< css::beans::NamedValue > &_out_rNewValues)
opens the common character font dialog
#define PROPERTY_PARAADJUST
Definition: strings.hxx:79
#define ITEMID_KERNING
Definition: UITools.cxx:136
const AllSettings & GetSettings() const
ITALIC_NONE
#define PROPERTY_CHARCOMBINESUFFIX
Definition: strings.hxx:235
tools::Long Top() const
std::unique_ptr< SfxPoolItem > CloneSetWhich(sal_uInt16 nNewWhich) const
const LanguageTag & getLocale()
static std::shared_ptr< rptui::OReportModel > getSdrModel(const css::uno::Reference< css::report::XReportDefinition > &_xReportDefinition)
#define ITEMID_LANGUAGE_COMPLEX
Definition: UITools.cxx:160
virtual const tools::Rectangle & GetLastBoundRect() const
SdrObject * Next()
constexpr TypedWhichId< XFillColorItem > XATTR_FILLCOLOR(XATTR_FILL_FIRST+1)
const SfxPoolItem * Put(const SfxPoolItem &rItem, sal_uInt16 nWhich)
inline::Size VCLSize(const css::awt::Size &rAWTSize)
constexpr TypedWhichId< XGradientStepCountItem > XATTR_GRADIENTSTEPCOUNT(XATTR_FILL_FIRST+6)
#define COL_DEFAULT_SHAPE_STROKE
#define ITEMID_COLOR_TABLE
Definition: UITools.cxx:142
void applyCharacterSettings(const css::uno::Reference< css::report::XReportControlFormat > &_rxReportControlFormat, const css::uno::Sequence< css::beans::NamedValue > &_rSettings)
applies the character settings previously obtained via openCharDialog
#define PROPERTY_CHARLOCALEASIAN
Definition: strings.hxx:169
const sal_Int16 ISOVER_IGNORE_CUSTOMSHAPES
Definition: UITools.hxx:131
void showError(const SQLExceptionInfo &_rInfo, const Reference< XWindow > &_xParent, const Reference< XComponentContext > &_rxContext)
constexpr TypedWhichId< XFillFloatTransparenceItem > XATTR_FILLFLOATTRANSPARENCE(XATTR_FILL_FIRST+11)
#define ITEMID_LANGUAGE_ASIAN
Definition: UITools.cxx:155
static SdrItemPool & GetGlobalDrawObjectItemPool()
::rtl::Reference< comphelper::OPropertyChangeMultiplexer > addStyleListener(const css::uno::Reference< css::report::XReportDefinition > &_xReportDefinition,::comphelper::OPropertyChangeListener *_pListener)
add a listener for the properties size, left margin, right margin to the page style ...
#define PROPERTY_CHARLOCALECOMPLEX
Definition: strings.hxx:185
constexpr TypedWhichId< XFillBmpPosOffsetYItem > XATTR_FILLBMP_POSOFFSETY(XATTR_FILL_FIRST+18)
static vcl::Font CreateFont(const css::awt::FontDescriptor &rDescr, const vcl::Font &rInitFont)
#define PROPERTY_CHARLOCALE
Definition: strings.hxx:230
void setWidth(tools::Long n)
constexpr TypedWhichId< XFillBmpStretchItem > XATTR_FILLBMP_STRETCH(XATTR_FILL_FIRST+16)
#define ITEMID_TWOLINES
Definition: UITools.cxx:145
virtual VclPtr< AbstractSvxAreaTabDialog > CreateSvxAreaTabDialog(weld::Window *pParent, const SfxItemSet *pAttr, SdrModel *pModel, bool bShadow)=0
#define PROPERTY_CHARCONTOURED
Definition: strings.hxx:238
sal_uInt16 GetFirstWhich() const
const ::std::vector< Color > ImpSvNumberformatScan::StandardColor COL_WHITE
#define ITEMID_LANGUAGE
Definition: UITools.cxx:125
RET_OK
SfxItemInfo const aItemInfos[]
constexpr TypedWhichId< XFillBmpPosOffsetXItem > XATTR_FILLBMP_POSOFFSETX(XATTR_FILL_FIRST+17)
#define ITEMID_COLOR
Definition: UITools.cxx:135
const o3tl::sorted_vector< const SfxItemPropertyMapEntry *, SfxItemPropertyMapCompare > & getPropertyEntries() const
constexpr TypedWhichId< XFillBmpTileItem > XATTR_FILLBMP_TILE(XATTR_FILL_FIRST+7)
#define ITEMID_FONTHEIGHT_ASIAN
Definition: UITools.cxx:154
css::uno::Sequence< OUString > getParameterNames(const css::uno::Reference< css::sdbc::XRowSet > &_rxRowSet)
retrieves the names of the parameters of the command which the given RowSet is bound to ...
const ::std::vector< Color > ImpSvNumberformatScan::StandardColor COL_BLACK
#define ITEMID_CHARHIDDEN
Definition: UITools.cxx:149
constexpr TypedWhichId< XFillBmpSizeLogItem > XATTR_FILLBMP_SIZELOG(XATTR_FILL_FIRST+13)
OReportPage * getPage() const
SdrPageView * GetSdrPageView() const
const vcl::Font & GetAppFont() const
OBJ_CUSTOMSHAPE
void Move(tools::Long nHorzMoveDelta, tools::Long nVertMoveDelta)
#define PROPERTY_CHARAUTOKERNING
Definition: strings.hxx:239
#define ITEMID_CHARSCALE_W
Definition: UITools.cxx:147
#define ITEMID_HORJUSTIFY
Definition: UITools.cxx:151
Reference< XSingleServiceFactory > xFactory
#define ITEMID_POSTURE_COMPLEX
Definition: UITools.cxx:161
const SvxItemPropertySet * GetPropertySet(sal_uInt16 nPropertyId, SfxItemPool &rPool)
TaskPaneList * GetTaskPaneList()
void setZoomFactor(const Fraction &_aZoom, vcl::Window &_rWindow)
sets the map mode at the window
Definition: UITools.cxx:1019
virtual const tools::Rectangle & GetLogicRect() const
#define ITEMID_POSTURE
Definition: UITools.cxx:127
const SfxItemPropertyMap & getPropertyMap() const
bool openAreaDialog(const css::uno::Reference< css::report::XShape > &_xShape, const css::uno::Reference< css::awt::XWindow > &_xWindow)
opens the area dialog for shapes
const css::uno::Any & get(const char *_pAsciiValueName) const
#define ITEMID_CHARRELIEF
Definition: UITools.cxx:148
#define PROPERTY_BACKCOLOR
Definition: strings.hxx:38
STRIKEOUT_NONE
constexpr TypedWhichId< XFillBmpTileOffsetXItem > XATTR_FILLBMP_TILEOFFSETX(XATTR_FILL_FIRST+14)
#define PROPERTY_CHAREMPHASIS
Definition: strings.hxx:141
#define ITEMID_WORDLINEMODE
Definition: UITools.cxx:130
static css::awt::FontDescriptor CreateFontDescriptor(const vcl::Font &rFont)
const SfxPoolItem * GetItem(sal_uInt16 nWhich, bool bSearchInParent=true) const
constexpr TypedWhichId< XFillBmpSizeYItem > XATTR_FILLBMP_SIZEY(XATTR_FILL_FIRST+10)
void SetMapMode()
#define ITEMID_CONTOUR
Definition: UITools.cxx:131
#define COMPLEX
Definition: UITools.cxx:166
tools::Long Right() const
#define ITEMID_ESCAPEMENT
Definition: UITools.cxx:139
void setHeight(tools::Long n)
#define PROPERTY_CHARFLASH
Definition: strings.hxx:228
OSectionView & getSectionView() const
bool IsObjMarked(SdrObject const *pObj) const