LibreOffice Module chart2 (master) 1
DrawCommandDispatch.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
21#include <ChartController.hxx>
22#include <DrawViewWrapper.hxx>
24
25#include <com/sun/star/frame/CommandGroup.hpp>
27#include <o3tl/string_view.hxx>
28#include <vcl/svapp.hxx>
29#include <svl/itempool.hxx>
30#include <editeng/eeitem.hxx>
31#include <svx/strings.hrc>
32#include <svx/dialmgr.hxx>
33#include <svx/fmmodel.hxx>
34#include <svx/gallery.hxx>
35#include <svx/svdoashp.hxx>
36#include <svx/svdocapt.hxx>
37#include <svx/svdopath.hxx>
38#include <svx/svdpage.hxx>
39#include <svx/unoapi.hxx>
40#include <svx/xlnedit.hxx>
41#include <svx/xlnedwit.hxx>
42#include <svx/xlnwtit.hxx>
43#include <svx/xtable.hxx>
44#include <svx/sdtagitm.hxx>
46
47using namespace ::com::sun::star;
48using namespace ::com::sun::star::frame;
49
50using ::com::sun::star::uno::Reference;
51using ::com::sun::star::uno::Sequence;
52
53
54namespace chart
55{
56
58 ChartController* pController )
59 :FeatureCommandDispatchBase( rxContext )
60 ,m_pChartController( pController )
61{
62}
63
65{
66}
67
68bool DrawCommandDispatch::isFeatureSupported( const OUString& rCommandURL )
69{
71 OUString aBaseCommand;
72 OUString aCustomShapeType;
73 return parseCommandURL( rCommandURL, &nFeatureId, &aBaseCommand, &aCustomShapeType );
74}
75
76static ::basegfx::B2DPolyPolygon getPolygon(TranslateId pResId, const SdrModel& rModel)
77{
79 XLineEndListRef pLineEndList = rModel.GetLineEndList();
80 if ( pLineEndList.is() )
81 {
82 OUString aName(SvxResId(pResId));
83 tools::Long nCount = pLineEndList->Count();
84 for ( tools::Long nIndex = 0; nIndex < nCount; ++nIndex )
85 {
86 const XLineEndEntry* pEntry = pLineEndList->GetLineEnd(nIndex);
87 if ( pEntry->GetName() == aName )
88 {
89 aReturn = pEntry->GetLineEnd();
90 break;
91 }
92 }
93 }
94 return aReturn;
95}
96
98{
99 if ( !m_pChartController )
100 return;
101
104 if ( !(pDrawModelWrapper && pDrawViewWrapper && pDrawViewWrapper->GetCurrentObjIdentifier() == SdrObjKind::CustomShape) )
105 return;
106
107 bool bAttributesAppliedFromGallery = false;
109 {
110 std::vector< OUString > aObjList;
112 {
113 for ( size_t i = 0; i < aObjList.size(); ++i )
114 {
116 {
117 FmFormModel aModel;
118 SfxItemPool& rPool(aModel.GetItemPool());
119 rPool.FreezeIdRanges();
120
122 {
123 const SdrObject* pSourceObj = aModel.GetPage( 0 )->GetObj( 0 );
124 if ( pSourceObj )
125 {
126 const SfxItemSet& rSource = pSourceObj->GetMergedItemSet();
128 // Ranges from SdrAttrObj:
134 // Graphic attributes, 3D
135 // properties, CustomShape
136 // properties:
139 // Range from SdrTextObj:
141 aDest(pObj->getSdrModelFromSdrObject().GetItemPool());
142 aDest.Set( rSource );
143 pObj->SetMergedItemSet( aDest );
144 Degree100 nAngle = pSourceObj->GetRotateAngle();
145 if ( nAngle )
146 pObj->NbcRotate( pObj->GetSnapRect().Center(), nAngle );
147 bAttributesAppliedFromGallery = true;
148 }
149 }
150 break;
151 }
152 }
153 }
154 }
155 if ( !bAttributesAppliedFromGallery )
156 {
160
161 o3tl::unsafe_downcast< SdrObjCustomShape* >( pObj )->MergeDefaultAttributes( &m_aCustomShapeType );
162 }
163}
164
166{
168 return;
169
172 if ( !(pDrawModelWrapper && pDrawViewWrapper) )
173 return;
174
175 ::basegfx::B2DPolyPolygon aArrow( getPolygon( RID_SVXSTR_ARROW, pDrawModelWrapper->getSdrModel() ) );
176 if ( !aArrow.count() )
177 {
178 ::basegfx::B2DPolygon aNewArrow;
179 aNewArrow.append( ::basegfx::B2DPoint( 10.0, 0.0 ) );
180 aNewArrow.append( ::basegfx::B2DPoint( 0.0, 30.0) );
181 aNewArrow.append( ::basegfx::B2DPoint( 20.0, 30.0 ) );
182 aNewArrow.setClosed( true );
183 aArrow.append( aNewArrow );
184 }
185
186 SfxItemSet aSet(pDrawViewWrapper->GetModel().GetItemPool());
187 pDrawViewWrapper->GetAttributes( aSet );
188
189 tools::Long nWidth = 300; // (1/100th mm)
190 if ( aSet.GetItemState( XATTR_LINEWIDTH ) != SfxItemState::DONTCARE )
191 {
192 tools::Long nValue = aSet.Get( XATTR_LINEWIDTH ).GetValue();
193 if ( nValue > 0 )
194 {
195 nWidth = nValue * 3;
196 }
197 }
198
199 rAttr.Put( XLineEndItem( SvxResId( RID_SVXSTR_ARROW ), aArrow ) );
200 rAttr.Put( XLineEndWidthItem( nWidth ) );
201}
202
203// WeakComponentImplHelperBase
204void DrawCommandDispatch::disposing(std::unique_lock<std::mutex>& /*rGuard*/)
205{
206}
207
208// XEventListener
209void DrawCommandDispatch::disposing( const lang::EventObject& /* Source */ )
210{
211}
212
214{
215 FeatureState aReturn;
216 aReturn.bEnabled = false;
217 aReturn.aState <<= false;
218
220 OUString aBaseCommand;
221 OUString aCustomShapeType;
222 if ( parseCommandURL( rCommand, &nFeatureId, &aBaseCommand, &aCustomShapeType ) )
223 {
224 switch ( nFeatureId )
225 {
240 {
241 aReturn.bEnabled = true;
242 aReturn.aState <<= false;
243 }
244 break;
245 default:
246 {
247 aReturn.bEnabled = false;
248 aReturn.aState <<= false;
249 }
250 break;
251 }
252 }
253
254 return aReturn;
255}
256
257void DrawCommandDispatch::execute( const OUString& rCommand, const Sequence< beans::PropertyValue>& rArgs )
258{
260 SdrObjKind eKind = SdrObjKind::NONE;
261
263 OUString aBaseCommand;
264 OUString aCustomShapeType;
265 if ( !parseCommandURL( rCommand, &nFeatureId, &aBaseCommand, &aCustomShapeType ) )
266 return;
267
268 bool bCreate = false;
269 m_nFeatureId = nFeatureId;
270 m_aCustomShapeType = aCustomShapeType;
271
272 switch ( nFeatureId )
273 {
275 {
276 eDrawMode = CHARTDRAW_SELECT;
277 eKind = SdrObjKind::NONE;
278 }
279 break;
282 {
283 eDrawMode = CHARTDRAW_INSERT;
284 eKind = SdrObjKind::Line;
285 }
286 break;
288 {
289 eDrawMode = CHARTDRAW_INSERT;
290 eKind = SdrObjKind::Rectangle;
291 }
292 break;
294 {
295 eDrawMode = CHARTDRAW_INSERT;
296 eKind = SdrObjKind::CircleOrEllipse;
297 }
298 break;
300 {
301 eDrawMode = CHARTDRAW_INSERT;
302 eKind = SdrObjKind::FreehandLine;
303 }
304 break;
306 {
307 eDrawMode = CHARTDRAW_INSERT;
308 eKind = SdrObjKind::Text;
309 bCreate = true;
310 }
311 break;
313 {
314 eDrawMode = CHARTDRAW_INSERT;
315 eKind = SdrObjKind::Caption;
316 }
317 break;
324 {
325 eDrawMode = CHARTDRAW_INSERT;
326 eKind = SdrObjKind::CustomShape;
327 }
328 break;
329 default:
330 {
331 eDrawMode = CHARTDRAW_SELECT;
332 eKind = SdrObjKind::NONE;
333 }
334 break;
335 }
336
337 if ( !m_pChartController )
338 return;
339
341 if ( !pDrawViewWrapper )
342 return;
343
344 SolarMutexGuard aGuard;
345 m_pChartController->setDrawMode( eDrawMode );
346 setInsertObj(eKind);
347 if ( bCreate )
348 {
349 pDrawViewWrapper->SetCreateMode();
350 }
351
352 const beans::PropertyValue* pIter = rArgs.getConstArray();
353 const beans::PropertyValue* pEnd = pIter + rArgs.getLength();
354 const beans::PropertyValue* pKeyModifier = std::find_if(pIter, pEnd,
355 [](const beans::PropertyValue& lhs)
356 {return lhs.Name == "KeyModifier";} );
357 sal_Int16 nKeyModifier = 0;
358 if ( !(pKeyModifier != pEnd && ( pKeyModifier->Value >>= nKeyModifier ) && nKeyModifier == KEY_MOD1) )
359 return;
360
361 if ( eDrawMode != CHARTDRAW_INSERT )
362 return;
363
365 if ( pObj )
366 {
367 SdrPageView* pPageView = pDrawViewWrapper->GetSdrPageView();
368 if (pDrawViewWrapper->InsertObjectAtView(pObj.get(), *pPageView))
369 m_pChartController->SetAndApplySelection(Reference<drawing::XShape>(pObj->getUnoShape(), uno::UNO_QUERY));
370 if ( nFeatureId == ChartCommandID::DrawText )
371 {
373 }
374 }
375}
376
378{
379 implDescribeSupportedFeature( ".uno:SelectObject", ChartCommandID::DrawObjectSelect, CommandGroup::INSERT );
380 implDescribeSupportedFeature( ".uno:Line", ChartCommandID::DrawLine, CommandGroup::INSERT );
381 implDescribeSupportedFeature( ".uno:LineArrowEnd", ChartCommandID::DrawLineArrowEnd, CommandGroup::INSERT );
382 implDescribeSupportedFeature( ".uno:Rect", ChartCommandID::DrawRect, CommandGroup::INSERT );
383 implDescribeSupportedFeature( ".uno:Ellipse", ChartCommandID::DrawEllipse, CommandGroup::INSERT );
384 implDescribeSupportedFeature( ".uno:Freeline_Unfilled", ChartCommandID::DrawFreelineNoFill, CommandGroup::INSERT );
385 implDescribeSupportedFeature( ".uno:DrawText", ChartCommandID::DrawText, CommandGroup::INSERT );
386 implDescribeSupportedFeature( ".uno:DrawCaption", ChartCommandID::DrawCaption, CommandGroup::INSERT );
387 implDescribeSupportedFeature( ".uno:BasicShapes", ChartCommandID::DrawToolboxCsBasic, CommandGroup::INSERT );
388 implDescribeSupportedFeature( ".uno:SymbolShapes", ChartCommandID::DrawToolboxCsSymbol, CommandGroup::INSERT );
389 implDescribeSupportedFeature( ".uno:ArrowShapes", ChartCommandID::DrawToolboxCsArrow, CommandGroup::INSERT );
390 implDescribeSupportedFeature( ".uno:FlowChartShapes", ChartCommandID::DrawToolboxCsFlowchart, CommandGroup::INSERT );
391 implDescribeSupportedFeature( ".uno:CalloutShapes", ChartCommandID::DrawToolboxCsCallout, CommandGroup::INSERT );
392 implDescribeSupportedFeature( ".uno:StarShapes", ChartCommandID::DrawToolboxCsStar, CommandGroup::INSERT );
393}
394
396{
397 DrawViewWrapper* pDrawViewWrapper = ( m_pChartController ? m_pChartController->GetDrawViewWrapper() : nullptr );
398 if ( pDrawViewWrapper )
399 {
400 pDrawViewWrapper->SetCurrentObj( eObj /*, Inventor */);
401 }
402}
403
405{
407 DrawViewWrapper* pDrawViewWrapper = ( m_pChartController ? m_pChartController->GetDrawViewWrapper() : nullptr );
408 DrawModelWrapper* pDrawModelWrapper = ( m_pChartController ? m_pChartController->GetDrawModelWrapper() : nullptr );
409
410 if ( pDrawViewWrapper && pDrawModelWrapper )
411 {
412 Reference< drawing::XDrawPage > xDrawPage( pDrawModelWrapper->getMainDrawPage() );
413 SdrPage* pPage = GetSdrPageFromXDrawPage( xDrawPage );
414 if ( pPage )
415 {
416 SolarMutexGuard aGuard;
417
419 pDrawModelWrapper->getSdrModel(),
420 pDrawViewWrapper->GetCurrentObjInventor(),
421 pDrawViewWrapper->GetCurrentObjIdentifier());
422
423 if ( pObj )
424 {
425 Size aObjectSize( 4000, 2500 );
426 tools::Rectangle aPageRect( tools::Rectangle( Point( 0, 0 ), pPage->GetSize() ) );
427 Point aObjectPos = aPageRect.Center();
428 aObjectPos.AdjustX( -(aObjectSize.Width() / 2) );
429 aObjectPos.AdjustY( -(aObjectSize.Height() / 2) );
430 tools::Rectangle aRect( aObjectPos, aObjectSize );
431
432 switch ( nID )
433 {
436 {
437 if ( auto const pathObj = dynamic_cast<SdrPathObj*>( pObj.get()) )
438 {
439 Point aStart = aRect.TopLeft();
440 Point aEnd = aRect.BottomRight();
441 sal_Int32 nYMiddle( ( aRect.Top() + aRect.Bottom() ) / 2 );
443 aPoly.append( basegfx::B2DPoint( aStart.X(), nYMiddle ) );
444 aPoly.append( basegfx::B2DPoint( aEnd.X(), nYMiddle ) );
445 pathObj->SetPathPoly(basegfx::B2DPolyPolygon(aPoly));
446 SfxItemSet aSet( pDrawModelWrapper->GetItemPool() );
447 setLineEnds( aSet );
448 pObj->SetMergedItemSet( aSet );
449 }
450 }
451 break;
453 {
454 if ( auto const pathObj = dynamic_cast<SdrPathObj*>( pObj.get()) )
455 {
456 basegfx::B2DPolygon aInnerPoly;
457 aInnerPoly.append( basegfx::B2DPoint( aRect.Left(), aRect.Bottom() ) );
458 aInnerPoly.appendBezierSegment(
459 basegfx::B2DPoint( aRect.Left(), aRect.Top() ),
460 basegfx::B2DPoint( aRect.Center().X(), aRect.Top() ),
461 basegfx::B2DPoint( aRect.Center().X(), aRect.Center().Y() ) );
462 aInnerPoly.appendBezierSegment(
463 basegfx::B2DPoint( aRect.Center().X(), aRect.Bottom() ),
464 basegfx::B2DPoint( aRect.Right(), aRect.Bottom() ),
465 basegfx::B2DPoint( aRect.Right(), aRect.Top() ) );
467 aPoly.append( aInnerPoly );
468 pathObj->SetPathPoly(aPoly);
469 }
470 }
471 break;
474 {
475 if ( SdrTextObj* pTextObj = DynCastSdrTextObj( pObj.get()) )
476 {
477 pTextObj->SetLogicRect( aRect );
478 bool bVertical = ( nID == ChartCommandID::DrawTextVertical );
479 pTextObj->SetVerticalWriting( bVertical );
480 if ( bVertical )
481 {
482 SfxItemSet aSet( pDrawModelWrapper->GetItemPool() );
483 aSet.Put( makeSdrTextAutoGrowWidthItem( true ) );
484 aSet.Put( makeSdrTextAutoGrowHeightItem( false ) );
487 pTextObj->SetMergedItemSet( aSet );
488 }
489 }
490 }
491 break;
494 {
495 if ( SdrCaptionObj* pCaptionObj = dynamic_cast<SdrCaptionObj*>( pObj.get()) )
496 {
497 bool bIsVertical( nID == ChartCommandID::DrawCaptionVertical );
498 pCaptionObj->SetVerticalWriting( bIsVertical );
499 if ( bIsVertical )
500 {
501 SfxItemSet aSet( pObj->GetMergedItemSet() );
504 pObj->SetMergedItemSet( aSet );
505 }
506 pCaptionObj->SetLogicRect( aRect );
507 pCaptionObj->SetTailPos(
508 aRect.TopLeft() - Point( aRect.GetWidth() / 2, aRect.GetHeight() / 2 ) );
509 }
510 }
511 break;
512 default:
513 {
514 pObj->SetLogicRect( aRect );
515 SfxItemSet aSet( pDrawModelWrapper->GetItemPool() );
516 setAttributes( pObj.get() );
517 pObj->SetMergedItemSet( aSet );
518 }
519 break;
520 }
521 }
522 }
523 }
524
525 return pObj;
526}
527
528bool DrawCommandDispatch::parseCommandURL( const OUString& rCommandURL, ChartCommandID* pnFeatureId,
529 OUString* pBaseCommand, OUString* pCustomShapeType )
530{
531 bool bFound = true;
533 OUString aBaseCommand;
534 OUString aType;
535
536 sal_Int32 nIndex = std::min(sal_Int32(1), rCommandURL.getLength());
537 std::u16string_view aToken = o3tl::getToken(rCommandURL, 0, '.', nIndex );
538 if ( nIndex == -1 || aToken.empty() )
539 {
540 aBaseCommand = rCommandURL;
541 SupportedFeatures::const_iterator aIter = m_aSupportedFeatures.find( aBaseCommand );
542 if ( aIter != m_aSupportedFeatures.end() )
543 {
544 nFeatureId = aIter->second.nFeatureId;
545
546 switch ( nFeatureId )
547 {
549 {
550 aType = "diamond";
551 }
552 break;
554 {
555 aType = "smiley";
556 }
557 break;
559 {
560 aType = "left-right-arrow";
561 }
562 break;
564 {
565 aType = "flowchart-internal-storage";
566 }
567 break;
569 {
570 aType = "round-rectangular-callout";
571 }
572 break;
574 {
575 aType = "star5";
576 }
577 break;
578 default:
579 {
580 }
581 break;
582 }
583 }
584 else
585 {
586 bFound = false;
587 }
588 }
589 else
590 {
591 aBaseCommand = rCommandURL.copy( 0, nIndex - 1 );
592 SupportedFeatures::const_iterator aIter = m_aSupportedFeatures.find( aBaseCommand );
593 if ( aIter != m_aSupportedFeatures.end() )
594 {
595 nFeatureId = aIter->second.nFeatureId;
596 aType = rCommandURL.getToken( 0, '.', nIndex );
597 }
598 else
599 {
600 bFound = false;
601 }
602 }
603
604 *pnFeatureId = nFeatureId;
605 *pBaseCommand = aBaseCommand;
606 *pCustomShapeType = aType;
607
608 return bFound;
609}
610
611} // namespace chart
612
613/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
static sal_uInt32 GetSdrObjCount(std::u16string_view rThemeName)
static bool FillObjListTitle(const sal_uInt32 nThemeId, std::vector< OUString > &rList)
static bool GetSdrObj(std::u16string_view rThemeName, sal_uInt32 nSdrModelPos, SdrModel *pModel, BitmapEx *pThumb=nullptr)
constexpr tools::Long Y() const
tools::Long AdjustY(tools::Long nVertMove)
tools::Long AdjustX(tools::Long nHorzMove)
constexpr tools::Long X() const
SdrInventor GetCurrentObjInventor() const
SdrObjKind GetCurrentObjIdentifier() const
void SetCreateMode(bool bOn=true)
void SetCurrentObj(SdrObjKind nIdent, SdrInventor nInvent=SdrInventor::Default)
bool InsertObjectAtView(SdrObject *pObj, SdrPageView &rPV, SdrInsertFlags nOptions=SdrInsertFlags::NONE)
XLineEndListRef GetLineEndList() const
const SfxItemPool & GetItemPool() const
const SdrPage * GetPage(sal_uInt16 nPgNum) const
static rtl::Reference< SdrObject > MakeNewObject(SdrModel &rSdrModel, SdrInventor nInventor, SdrObjKind nObjIdentifier, const tools::Rectangle *pSnapRect=nullptr)
SdrObject * GetObj(size_t nNum) const
virtual Degree100 GetRotateAngle() const
void SetMergedItemSet(const SfxItemSet &rSet, bool bClearAllItems=false)
SdrModel & getSdrModelFromSdrObject() const
virtual const tools::Rectangle & GetSnapRect() const
const SfxItemSet & GetMergedItemSet() const
void SetMergedItem(const SfxPoolItem &rItem)
virtual void NbcRotate(const Point &rRef, Degree100 nAngle, double sn, double cs)=0
Size GetSize() const
SdrPageView * GetSdrPageView() const
SdrModel & GetModel() const
void GetAttributes(SfxItemSet &rTargetSet, bool bOnlyHardAttr=false) const
void FreezeIdRanges()
SfxItemState GetItemState(sal_uInt16 nWhich, bool bSrchInParent=true, const SfxPoolItem **ppItem=nullptr) const
const SfxPoolItem * Put(const SfxPoolItem &rItem, sal_uInt16 nWhich)
const SfxPoolItem & Get(sal_uInt16 nWhich, bool bSrchInParent=true) const
constexpr tools::Long Height() const
constexpr tools::Long Width() const
const basegfx::B2DPolyPolygon & GetLineEnd() const
const OUString & GetName() const
void append(const B2DPolygon &rPolygon, sal_uInt32 nCount=1)
sal_uInt32 count() const
void append(const basegfx::B2DPoint &rPoint, sal_uInt32 nCount)
void setClosed(bool bNew)
void appendBezierSegment(const basegfx::B2DPoint &rNextControlPoint, const basegfx::B2DPoint &rPrevControlPoint, const basegfx::B2DPoint &rPoint)
DrawViewWrapper * GetDrawViewWrapper()
void StartTextEdit(const Point *pMousePixel=nullptr)
void setDrawMode(ChartDrawMode eMode)
DrawModelWrapper * GetDrawModelWrapper()
void SetAndApplySelection(const css::uno::Reference< css::drawing::XShape > &rxShape)
virtual ~DrawCommandDispatch() override
virtual FeatureState getState(const OUString &rCommand) override
rtl::Reference< SdrObject > createDefaultObject(const ChartCommandID nID)
virtual void disposing(std::unique_lock< std::mutex > &rGuard) override
is called when this is disposed
DrawCommandDispatch(const css::uno::Reference< css::uno::XComponentContext > &rxContext, ChartController *pController)
void setLineEnds(SfxItemSet &rAttr)
ChartController * m_pChartController
void setAttributes(SdrObject *pObj)
void setInsertObj(SdrObjKind eObj)
virtual void describeSupportedFeatures() override
bool parseCommandURL(const OUString &rCommandURL, ChartCommandID *pnFeatureId, OUString *pBaseCommand, OUString *pCustomShapeType)
virtual void execute(const OUString &rCommand, const css::uno::Sequence< css::beans::PropertyValue > &rArgs) override
virtual bool isFeatureSupported(const OUString &rCommandURL) override
const rtl::Reference< SvxDrawPage > & getMainDrawPage()
This is a base class for CommandDispatch implementations with feature support.
void implDescribeSupportedFeature(const char *pAsciiCommandURL, ChartCommandID nId, sal_Int16 nGroup)
describes a feature supported by the controller
constexpr Point Center() const
constexpr tools::Long GetWidth() const
constexpr tools::Long Top() const
constexpr Point TopLeft() const
constexpr tools::Long Right() const
constexpr Point BottomRight() const
constexpr tools::Long GetHeight() const
constexpr tools::Long Left() const
constexpr tools::Long Bottom() const
int nCount
SVXCORE_DLLPUBLIC OUString SvxResId(TranslateId aId)
constexpr sal_uInt16 EE_ITEMS_END(EE_FEATURE_END)
constexpr sal_uInt16 EE_ITEMS_START(OWN_ATTR_VALUE_END+1)
std::deque< AttachedObject_Impl > aObjList
sal_Int16 nValue
#define GALLERY_THEME_POWERPOINT
sal_Int32 nIndex
OUString aName
constexpr sal_uInt16 KEY_MOD1
@ CHARTDRAW_INSERT
@ CHARTDRAW_SELECT
::basegfx::B2DPolyPolygon getPolygon(TranslateId pResId, const SdrModel &rModel)
int i
bool equalsIgnoreAsciiCase(std::u16string_view s1, std::u16string_view s2)
std::basic_string_view< charT, traits > getToken(std::basic_string_view< charT, traits > sv, charT delimiter, std::size_t &position)
long Long
SdrOnOffItem makeSdrTextAutoGrowHeightItem(bool bAuto)
SdrOnOffItem makeSdrTextAutoGrowWidthItem(bool bAuto)
SDRTEXTVERTADJUST_CENTER
SDRTEXTVERTADJUST_TOP
SDRTEXTHORZADJUST_BLOCK
SDRTEXTHORZADJUST_RIGHT
constexpr sal_uInt16 SDRATTR_START(XATTR_START)
constexpr sal_uInt16 SDRATTR_CUSTOMSHAPE_LAST(SDRATTR_CUSTOMSHAPE_GEOMETRY)
constexpr sal_uInt16 SDRATTR_MISC_LAST(SDRATTR_TEXT_CLIPVERTOVERFLOW)
constexpr sal_uInt16 SDRATTR_MISC_FIRST(SDRATTR_CAPTION_LAST+1)
constexpr sal_uInt16 SDRATTR_GRAF_FIRST(SDRATTR_NOTPERSIST_LAST+1)
constexpr sal_uInt16 SDRATTR_SHADOW_LAST(SDRATTR_SHADOWALIGNMENT)
constexpr TypedWhichId< SvxWritingModeItem > SDRATTR_TEXTDIRECTION(SDRATTR_NOTPERSIST_FIRST+34)
SVXCORE_DLLPUBLIC SdrTextObj * DynCastSdrTextObj(SdrObject *)
SdrObjKind
SVXCORE_DLLPUBLIC SdrPage * GetSdrPageFromXDrawPage(const css::uno::Reference< css::drawing::XDrawPage > &xDrawPage) noexcept
constexpr TypedWhichId< XLineWidthItem > XATTR_LINEWIDTH(XATTR_LINE_FIRST+2)