xref: /trunk/main/sd/source/ui/func/fuconrec.cxx (revision cf6516809c57e1bb0a940545cca99cdad54d4ce2)
15b190011SAndrew Rist /**************************************************************
2cdf0e10cSrcweir  *
35b190011SAndrew Rist  * Licensed to the Apache Software Foundation (ASF) under one
45b190011SAndrew Rist  * or more contributor license agreements.  See the NOTICE file
55b190011SAndrew Rist  * distributed with this work for additional information
65b190011SAndrew Rist  * regarding copyright ownership.  The ASF licenses this file
75b190011SAndrew Rist  * to you under the Apache License, Version 2.0 (the
85b190011SAndrew Rist  * "License"); you may not use this file except in compliance
95b190011SAndrew Rist  * with the License.  You may obtain a copy of the License at
10cdf0e10cSrcweir  *
115b190011SAndrew Rist  *   http://www.apache.org/licenses/LICENSE-2.0
12cdf0e10cSrcweir  *
135b190011SAndrew Rist  * Unless required by applicable law or agreed to in writing,
145b190011SAndrew Rist  * software distributed under the License is distributed on an
155b190011SAndrew Rist  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
165b190011SAndrew Rist  * KIND, either express or implied.  See the License for the
175b190011SAndrew Rist  * specific language governing permissions and limitations
185b190011SAndrew Rist  * under the License.
19cdf0e10cSrcweir  *
205b190011SAndrew Rist  *************************************************************/
215b190011SAndrew Rist 
225b190011SAndrew Rist 
23cdf0e10cSrcweir 
24cdf0e10cSrcweir // MARKER(update_precomp.py): autogen include statement, do not remove
25cdf0e10cSrcweir #include "precompiled_sd.hxx"
26cdf0e10cSrcweir 
27cdf0e10cSrcweir #include "fuconrec.hxx"
28cdf0e10cSrcweir #include <svx/svdpagv.hxx>
29cdf0e10cSrcweir 
30cdf0e10cSrcweir 
31cdf0e10cSrcweir #include <svx/svxids.hrc>
32cdf0e10cSrcweir #include <svx/dialogs.hrc>
33cdf0e10cSrcweir #include <svx/dialmgr.hxx>
34cdf0e10cSrcweir 
35cdf0e10cSrcweir #include "app.hrc"
36cdf0e10cSrcweir #include <svl/aeitem.hxx>
37cdf0e10cSrcweir #include <svx/xlnstwit.hxx>
38cdf0e10cSrcweir #include <svx/xlnedwit.hxx>
39cdf0e10cSrcweir #include <svx/xlnedit.hxx>
40cdf0e10cSrcweir #include <svx/xlnstit.hxx>
41cdf0e10cSrcweir #include <svx/xlnwtit.hxx>
42cdf0e10cSrcweir #include <sfx2/viewfrm.hxx>
43cdf0e10cSrcweir #include <svx/sdtmfitm.hxx>
44cdf0e10cSrcweir #include <svx/sxekitm.hxx>
45cdf0e10cSrcweir #include <svx/sderitm.hxx>
46cdf0e10cSrcweir #include <sfx2/dispatch.hxx>
47cdf0e10cSrcweir #include <svx/svdopath.hxx>
48cdf0e10cSrcweir #include <svx/svdocirc.hxx>
49cdf0e10cSrcweir #include <svl/intitem.hxx>
50cdf0e10cSrcweir #include <sfx2/request.hxx>
51cdf0e10cSrcweir #include <editeng/adjitem.hxx>
52cdf0e10cSrcweir #include <svx/xtable.hxx>
53cdf0e10cSrcweir 
54cdf0e10cSrcweir // #88751#
55cdf0e10cSrcweir #include <svx/svdocapt.hxx>
56cdf0e10cSrcweir 
57cdf0e10cSrcweir // #97016#
58cdf0e10cSrcweir #include <svx/svdomeas.hxx>
59cdf0e10cSrcweir #include "ViewShell.hxx"
60cdf0e10cSrcweir #include "ViewShellBase.hxx"
61cdf0e10cSrcweir #include "ToolBarManager.hxx"
62cdf0e10cSrcweir // #109583#
63cdf0e10cSrcweir #include <editeng/writingmodeitem.hxx>
64cdf0e10cSrcweir #include <basegfx/polygon/b2dpolygontools.hxx>
65cdf0e10cSrcweir #include <basegfx/polygon/b2dpolygon.hxx>
66cdf0e10cSrcweir 
67cdf0e10cSrcweir #include "sdresid.hxx"
68cdf0e10cSrcweir #include "View.hxx"
69cdf0e10cSrcweir #include "sdpage.hxx"
70cdf0e10cSrcweir #include "Window.hxx"
71cdf0e10cSrcweir #include "stlpool.hxx"
72cdf0e10cSrcweir #include "drawdoc.hxx"
73cdf0e10cSrcweir #include "res_bmp.hrc"
74cdf0e10cSrcweir #include "glob.hrc"
75cdf0e10cSrcweir 
76cdf0e10cSrcweir namespace sd {
77cdf0e10cSrcweir 
78cdf0e10cSrcweir TYPEINIT1( FuConstructRectangle, FuConstruct );
79cdf0e10cSrcweir 
80cdf0e10cSrcweir /*************************************************************************
81cdf0e10cSrcweir |*
82cdf0e10cSrcweir |* Konstruktor
83cdf0e10cSrcweir |*
84cdf0e10cSrcweir \************************************************************************/
85cdf0e10cSrcweir 
FuConstructRectangle(ViewShell * pViewSh,::sd::Window * pWin,::sd::View * pView,SdDrawDocument * pDoc,SfxRequest & rReq)86cdf0e10cSrcweir FuConstructRectangle::FuConstructRectangle (
87cdf0e10cSrcweir     ViewShell*  pViewSh,
88cdf0e10cSrcweir     ::sd::Window*       pWin,
89cdf0e10cSrcweir     ::sd::View*         pView,
90cdf0e10cSrcweir     SdDrawDocument* pDoc,
91cdf0e10cSrcweir     SfxRequest&     rReq)
92cdf0e10cSrcweir     : FuConstruct(pViewSh, pWin, pView, pDoc, rReq)
93cdf0e10cSrcweir {
94cdf0e10cSrcweir }
95cdf0e10cSrcweir 
Create(ViewShell * pViewSh,::sd::Window * pWin,::sd::View * pView,SdDrawDocument * pDoc,SfxRequest & rReq,bool bPermanent)96cdf0e10cSrcweir FunctionReference FuConstructRectangle::Create( ViewShell* pViewSh, ::sd::Window* pWin, ::sd::View* pView, SdDrawDocument* pDoc, SfxRequest& rReq, bool bPermanent )
97cdf0e10cSrcweir {
98cdf0e10cSrcweir     FuConstructRectangle* pFunc;
99cdf0e10cSrcweir     FunctionReference xFunc( pFunc = new FuConstructRectangle( pViewSh, pWin, pView, pDoc, rReq ) );
100cdf0e10cSrcweir     xFunc->DoExecute(rReq);
101cdf0e10cSrcweir     pFunc->SetPermanent(bPermanent);
102cdf0e10cSrcweir     return xFunc;
103cdf0e10cSrcweir }
104cdf0e10cSrcweir 
DoExecute(SfxRequest & rReq)105cdf0e10cSrcweir void FuConstructRectangle::DoExecute( SfxRequest& rReq )
106cdf0e10cSrcweir {
107cdf0e10cSrcweir     FuConstruct::DoExecute( rReq );
108cdf0e10cSrcweir 
109cdf0e10cSrcweir     mpViewShell->GetViewShellBase().GetToolBarManager()->SetToolBar(
110cdf0e10cSrcweir         ToolBarManager::TBG_FUNCTION,
111cdf0e10cSrcweir         ToolBarManager::msDrawingObjectToolBar);
112cdf0e10cSrcweir 
113cdf0e10cSrcweir     const SfxItemSet *pArgs = rReq.GetArgs ();
114cdf0e10cSrcweir 
115cdf0e10cSrcweir     if (pArgs)
116cdf0e10cSrcweir     {
117cdf0e10cSrcweir         switch (nSlotId)
118cdf0e10cSrcweir         {
119cdf0e10cSrcweir             case SID_DRAW_ELLIPSE :
120cdf0e10cSrcweir             {
121cdf0e10cSrcweir                 SFX_REQUEST_ARG (rReq, pCenterX, SfxUInt32Item, ID_VAL_CENTER_X, sal_False);
122cdf0e10cSrcweir                 SFX_REQUEST_ARG (rReq, pCenterY, SfxUInt32Item, ID_VAL_CENTER_Y, sal_False);
123cdf0e10cSrcweir                 SFX_REQUEST_ARG (rReq, pAxisX, SfxUInt32Item, ID_VAL_AXIS_X, sal_False);
124cdf0e10cSrcweir                 SFX_REQUEST_ARG (rReq, pAxisY, SfxUInt32Item, ID_VAL_AXIS_Y, sal_False);
125cdf0e10cSrcweir 
126cdf0e10cSrcweir                 Rectangle   aNewRectangle (pCenterX->GetValue () - pAxisX->GetValue () / 2,
127cdf0e10cSrcweir                                            pCenterY->GetValue () - pAxisY->GetValue () / 2,
128cdf0e10cSrcweir                                            pCenterX->GetValue () + pAxisX->GetValue () / 2,
129cdf0e10cSrcweir                                            pCenterY->GetValue () + pAxisY->GetValue () / 2);
130cdf0e10cSrcweir                 SdrCircObj  *pNewCircle = new SdrCircObj (OBJ_CIRC, aNewRectangle);
131cdf0e10cSrcweir                 SdrPageView *pPV = mpView->GetSdrPageView();
132cdf0e10cSrcweir 
133cdf0e10cSrcweir                 mpView->InsertObjectAtView(pNewCircle, *pPV, SDRINSERT_SETDEFLAYER | SDRINSERT_SETDEFATTR);
134cdf0e10cSrcweir             }
135cdf0e10cSrcweir             break;
136cdf0e10cSrcweir 
137cdf0e10cSrcweir             case SID_DRAW_RECT :
138cdf0e10cSrcweir             {
139cdf0e10cSrcweir                 SFX_REQUEST_ARG (rReq, pMouseStartX, SfxUInt32Item, ID_VAL_MOUSESTART_X, sal_False);
140cdf0e10cSrcweir                 SFX_REQUEST_ARG (rReq, pMouseStartY, SfxUInt32Item, ID_VAL_MOUSESTART_Y, sal_False);
141cdf0e10cSrcweir                 SFX_REQUEST_ARG (rReq, pMouseEndX, SfxUInt32Item, ID_VAL_MOUSEEND_X, sal_False);
142cdf0e10cSrcweir                 SFX_REQUEST_ARG (rReq, pMouseEndY, SfxUInt32Item, ID_VAL_MOUSEEND_Y, sal_False);
143cdf0e10cSrcweir 
144cdf0e10cSrcweir                 Rectangle   aNewRectangle (pMouseStartX->GetValue (),
145cdf0e10cSrcweir                                            pMouseStartY->GetValue (),
146cdf0e10cSrcweir                                            pMouseEndX->GetValue (),
147cdf0e10cSrcweir                                            pMouseEndY->GetValue ());
148cdf0e10cSrcweir                 SdrRectObj  *pNewRect = new SdrRectObj (aNewRectangle);
149cdf0e10cSrcweir                 SdrPageView *pPV = mpView->GetSdrPageView();
150cdf0e10cSrcweir 
151cdf0e10cSrcweir                 mpView->InsertObjectAtView(pNewRect, *pPV, SDRINSERT_SETDEFLAYER | SDRINSERT_SETDEFATTR);
152cdf0e10cSrcweir             }
153cdf0e10cSrcweir             break;
154cdf0e10cSrcweir         }
155cdf0e10cSrcweir     }
156cdf0e10cSrcweir 
157cdf0e10cSrcweir     if (nSlotId == SID_TOOL_CONNECTOR               ||
158cdf0e10cSrcweir         nSlotId == SID_CONNECTOR_ARROW_START        ||
159cdf0e10cSrcweir         nSlotId == SID_CONNECTOR_ARROW_END          ||
160cdf0e10cSrcweir         nSlotId == SID_CONNECTOR_ARROWS             ||
161cdf0e10cSrcweir         nSlotId == SID_CONNECTOR_CIRCLE_START       ||
162cdf0e10cSrcweir         nSlotId == SID_CONNECTOR_CIRCLE_END         ||
163cdf0e10cSrcweir         nSlotId == SID_CONNECTOR_CIRCLES            ||
164cdf0e10cSrcweir         nSlotId == SID_CONNECTOR_LINE               ||
165cdf0e10cSrcweir         nSlotId == SID_CONNECTOR_LINE_ARROW_START   ||
166cdf0e10cSrcweir         nSlotId == SID_CONNECTOR_LINE_ARROW_END     ||
167cdf0e10cSrcweir         nSlotId == SID_CONNECTOR_LINE_ARROWS        ||
168cdf0e10cSrcweir         nSlotId == SID_CONNECTOR_LINE_CIRCLE_START  ||
169cdf0e10cSrcweir         nSlotId == SID_CONNECTOR_LINE_CIRCLE_END    ||
170cdf0e10cSrcweir         nSlotId == SID_CONNECTOR_LINE_CIRCLES       ||
171cdf0e10cSrcweir         nSlotId == SID_CONNECTOR_CURVE              ||
172cdf0e10cSrcweir         nSlotId == SID_CONNECTOR_CURVE_ARROW_START  ||
173cdf0e10cSrcweir         nSlotId == SID_CONNECTOR_CURVE_ARROW_END    ||
174cdf0e10cSrcweir         nSlotId == SID_CONNECTOR_CURVE_ARROWS       ||
175cdf0e10cSrcweir         nSlotId == SID_CONNECTOR_CURVE_CIRCLE_START ||
176cdf0e10cSrcweir         nSlotId == SID_CONNECTOR_CURVE_CIRCLE_END   ||
177cdf0e10cSrcweir         nSlotId == SID_CONNECTOR_CURVE_CIRCLES      ||
178cdf0e10cSrcweir         nSlotId == SID_CONNECTOR_LINES              ||
179cdf0e10cSrcweir         nSlotId == SID_CONNECTOR_LINES_ARROW_START  ||
180cdf0e10cSrcweir         nSlotId == SID_CONNECTOR_LINES_ARROW_END    ||
181cdf0e10cSrcweir         nSlotId == SID_CONNECTOR_LINES_ARROWS       ||
182cdf0e10cSrcweir         nSlotId == SID_CONNECTOR_LINES_CIRCLE_START ||
183cdf0e10cSrcweir         nSlotId == SID_CONNECTOR_LINES_CIRCLE_END   ||
184cdf0e10cSrcweir         nSlotId == SID_CONNECTOR_LINES_CIRCLES      ||
185cdf0e10cSrcweir         nSlotId == SID_LINE_ARROW_START             ||
186cdf0e10cSrcweir         nSlotId == SID_LINE_ARROW_END               ||
187cdf0e10cSrcweir         nSlotId == SID_LINE_ARROWS                  ||
188cdf0e10cSrcweir         nSlotId == SID_LINE_ARROW_CIRCLE            ||
189cdf0e10cSrcweir         nSlotId == SID_LINE_CIRCLE_ARROW            ||
190cdf0e10cSrcweir         nSlotId == SID_LINE_ARROW_SQUARE            ||
191cdf0e10cSrcweir         nSlotId == SID_LINE_SQUARE_ARROW )
192cdf0e10cSrcweir     {
193cdf0e10cSrcweir         mpView->UnmarkAll();
194cdf0e10cSrcweir     }
195cdf0e10cSrcweir }
196cdf0e10cSrcweir 
197cdf0e10cSrcweir /*************************************************************************
198cdf0e10cSrcweir |*
199cdf0e10cSrcweir |* MouseButtonDown-event
200cdf0e10cSrcweir |*
201cdf0e10cSrcweir \************************************************************************/
202cdf0e10cSrcweir 
MouseButtonDown(const MouseEvent & rMEvt)203cdf0e10cSrcweir sal_Bool FuConstructRectangle::MouseButtonDown(const MouseEvent& rMEvt)
204cdf0e10cSrcweir {
205cdf0e10cSrcweir     sal_Bool bReturn = FuConstruct::MouseButtonDown(rMEvt);
206cdf0e10cSrcweir 
207cdf0e10cSrcweir     if ( rMEvt.IsLeft() && !mpView->IsAction() )
208cdf0e10cSrcweir     {
209cdf0e10cSrcweir         Point aPnt( mpWindow->PixelToLogic( rMEvt.GetPosPixel() ) );
210cdf0e10cSrcweir 
211cdf0e10cSrcweir         mpWindow->CaptureMouse();
212cdf0e10cSrcweir         sal_uInt16 nDrgLog = sal_uInt16 ( mpWindow->PixelToLogic(Size(DRGPIX,0)).Width() );
213cdf0e10cSrcweir 
214cdf0e10cSrcweir         if (mpView->GetCurrentObjIdentifier() == OBJ_CAPTION)
215cdf0e10cSrcweir         {
216cdf0e10cSrcweir             Size aCaptionSize(846, 846);    // (4x2)cm
217cdf0e10cSrcweir             bReturn = mpView->BegCreateCaptionObj(aPnt, aCaptionSize,
218cdf0e10cSrcweir                                                 (OutputDevice*) NULL, nDrgLog);
219cdf0e10cSrcweir         }
220cdf0e10cSrcweir         else
221cdf0e10cSrcweir         {
222cdf0e10cSrcweir             mpView->BegCreateObj(aPnt, (OutputDevice*) NULL, nDrgLog);
223cdf0e10cSrcweir         }
224cdf0e10cSrcweir 
225cdf0e10cSrcweir         SdrObject* pObj = mpView->GetCreateObj();
226cdf0e10cSrcweir 
227cdf0e10cSrcweir         if (pObj)
228cdf0e10cSrcweir         {
229cdf0e10cSrcweir             SfxItemSet aAttr(mpDoc->GetPool());
230cdf0e10cSrcweir             SetStyleSheet(aAttr, pObj);
231cdf0e10cSrcweir             SetAttributes(aAttr, pObj);
232cdf0e10cSrcweir             SetLineEnds(aAttr, pObj);
233cdf0e10cSrcweir             pObj->SetMergedItemSet(aAttr);
234cdf0e10cSrcweir 
235cdf0e10cSrcweir             if( nSlotId == SID_DRAW_CAPTION_VERTICAL )
236cdf0e10cSrcweir                 ( (SdrTextObj*) pObj)->SetVerticalWriting( sal_True );
237cdf0e10cSrcweir         }
238cdf0e10cSrcweir     }
239cdf0e10cSrcweir     return bReturn;
240cdf0e10cSrcweir }
241cdf0e10cSrcweir 
242cdf0e10cSrcweir /*************************************************************************
243cdf0e10cSrcweir |*
244cdf0e10cSrcweir |* MouseMove-event
245cdf0e10cSrcweir |*
246cdf0e10cSrcweir \************************************************************************/
247cdf0e10cSrcweir 
MouseMove(const MouseEvent & rMEvt)248cdf0e10cSrcweir sal_Bool FuConstructRectangle::MouseMove(const MouseEvent& rMEvt)
249cdf0e10cSrcweir {
250cdf0e10cSrcweir     return FuConstruct::MouseMove(rMEvt);
251cdf0e10cSrcweir }
252cdf0e10cSrcweir 
253cdf0e10cSrcweir /*************************************************************************
254cdf0e10cSrcweir |*
255cdf0e10cSrcweir |* MouseButtonUp-event
256cdf0e10cSrcweir |*
257cdf0e10cSrcweir \************************************************************************/
258cdf0e10cSrcweir 
MouseButtonUp(const MouseEvent & rMEvt)259cdf0e10cSrcweir sal_Bool FuConstructRectangle::MouseButtonUp(const MouseEvent& rMEvt)
260cdf0e10cSrcweir {
261cdf0e10cSrcweir     sal_Bool bReturn(sal_False);
262cdf0e10cSrcweir 
263cdf0e10cSrcweir     if(mpView->IsCreateObj() && rMEvt.IsLeft())
264cdf0e10cSrcweir     {
265cdf0e10cSrcweir         SdrObject* pObj = mpView->GetCreateObj();
266cdf0e10cSrcweir 
267cdf0e10cSrcweir         if(pObj && mpView->EndCreateObj(SDRCREATE_FORCEEND))
268cdf0e10cSrcweir         {
269cdf0e10cSrcweir             if(SID_DRAW_MEASURELINE == nSlotId)
270cdf0e10cSrcweir             {
271cdf0e10cSrcweir                 SdrLayerAdmin& rAdmin = mpDoc->GetLayerAdmin();
272cdf0e10cSrcweir                 String aStr(SdResId(STR_LAYER_MEASURELINES));
273cdf0e10cSrcweir                 pObj->SetLayer(rAdmin.GetLayerID(aStr, sal_False));
274cdf0e10cSrcweir             }
275cdf0e10cSrcweir 
276cdf0e10cSrcweir             // #88751# init text position when vertica caption object is created
277cdf0e10cSrcweir             if(pObj->ISA(SdrCaptionObj) && SID_DRAW_CAPTION_VERTICAL == nSlotId)
278cdf0e10cSrcweir             {
279cdf0e10cSrcweir                 // draw text object, needs to be initialized when vertical text is used
280cdf0e10cSrcweir                 SfxItemSet aSet(pObj->GetMergedItemSet());
281cdf0e10cSrcweir 
282cdf0e10cSrcweir                 aSet.Put(SdrTextVertAdjustItem(SDRTEXTVERTADJUST_CENTER));
283cdf0e10cSrcweir                 aSet.Put(SdrTextHorzAdjustItem(SDRTEXTHORZADJUST_RIGHT));
284cdf0e10cSrcweir 
285cdf0e10cSrcweir                 // #109583#
286cdf0e10cSrcweir                 // Correct the value of SDRATTR_TEXTDIRECTION to avoid SetItemSet
287cdf0e10cSrcweir                 // calling SetVerticalWriting() again since this item may not yet
288*6362920dSJohn Bampton                 // be set at the object and thus may differ from vertical state of
289cdf0e10cSrcweir                 // the object.
290cdf0e10cSrcweir                 aSet.Put(SvxWritingModeItem(com::sun::star::text::WritingMode_TB_RL, SDRATTR_TEXTDIRECTION));
291cdf0e10cSrcweir                 pObj->SetMergedItemSet(aSet);
292cdf0e10cSrcweir             }
293cdf0e10cSrcweir 
294cdf0e10cSrcweir             bReturn = sal_True;
295cdf0e10cSrcweir         }
296cdf0e10cSrcweir     }
297cdf0e10cSrcweir 
298cdf0e10cSrcweir     bReturn = FuConstruct::MouseButtonUp (rMEvt) || bReturn;
299cdf0e10cSrcweir 
300cdf0e10cSrcweir     if (!bPermanent)
301cdf0e10cSrcweir         mpViewShell->GetViewFrame()->GetDispatcher()->Execute(SID_OBJECT_SELECT, SFX_CALLMODE_ASYNCHRON);
302cdf0e10cSrcweir 
303cdf0e10cSrcweir     return bReturn;
304cdf0e10cSrcweir }
305cdf0e10cSrcweir 
306cdf0e10cSrcweir /*************************************************************************
307cdf0e10cSrcweir |*
308cdf0e10cSrcweir |* Tastaturereignisse bearbeiten
309cdf0e10cSrcweir |*
310cdf0e10cSrcweir |* Wird ein KeyEvent bearbeitet, so ist der Return-Wert sal_True, andernfalls
311cdf0e10cSrcweir |* sal_False.
312cdf0e10cSrcweir |*
313cdf0e10cSrcweir \************************************************************************/
314cdf0e10cSrcweir 
KeyInput(const KeyEvent & rKEvt)315cdf0e10cSrcweir sal_Bool FuConstructRectangle::KeyInput(const KeyEvent& rKEvt)
316cdf0e10cSrcweir {
317cdf0e10cSrcweir     sal_Bool bReturn = FuConstruct::KeyInput(rKEvt);
318cdf0e10cSrcweir     return(bReturn);
319cdf0e10cSrcweir }
320cdf0e10cSrcweir 
321cdf0e10cSrcweir /*************************************************************************
322cdf0e10cSrcweir |*
323cdf0e10cSrcweir |* Function aktivieren
324cdf0e10cSrcweir |*
325cdf0e10cSrcweir \************************************************************************/
326cdf0e10cSrcweir 
Activate()327cdf0e10cSrcweir void FuConstructRectangle::Activate()
328cdf0e10cSrcweir {
329cdf0e10cSrcweir     SdrObjKind aObjKind;
330cdf0e10cSrcweir 
331cdf0e10cSrcweir     switch (nSlotId)
332cdf0e10cSrcweir     {
333cdf0e10cSrcweir         case SID_LINE_ARROW_START:
334cdf0e10cSrcweir         case SID_LINE_ARROW_END:
335cdf0e10cSrcweir         case SID_LINE_ARROWS:
336cdf0e10cSrcweir         case SID_LINE_ARROW_CIRCLE:
337cdf0e10cSrcweir         case SID_LINE_CIRCLE_ARROW:
338cdf0e10cSrcweir         case SID_LINE_ARROW_SQUARE:
339cdf0e10cSrcweir         case SID_LINE_SQUARE_ARROW:
340cdf0e10cSrcweir             mpView->SetGlueVisible();
341cdf0e10cSrcweir             // keine break !
342cdf0e10cSrcweir         case SID_DRAW_LINE :
343cdf0e10cSrcweir         case SID_DRAW_XLINE:
344cdf0e10cSrcweir             aObjKind = OBJ_LINE;
345cdf0e10cSrcweir             break;
346cdf0e10cSrcweir 
347cdf0e10cSrcweir         case SID_DRAW_MEASURELINE:
348cdf0e10cSrcweir         {
349cdf0e10cSrcweir             aObjKind = OBJ_MEASURE;
350cdf0e10cSrcweir         }
351cdf0e10cSrcweir         break;
352cdf0e10cSrcweir 
353cdf0e10cSrcweir         case SID_DRAW_RECT             :
354cdf0e10cSrcweir         case SID_DRAW_RECT_NOFILL      :
355cdf0e10cSrcweir         case SID_DRAW_RECT_ROUND       :
356cdf0e10cSrcweir         case SID_DRAW_RECT_ROUND_NOFILL:
357cdf0e10cSrcweir         case SID_DRAW_SQUARE           :
358cdf0e10cSrcweir         case SID_DRAW_SQUARE_NOFILL    :
359cdf0e10cSrcweir         case SID_DRAW_SQUARE_ROUND     :
360cdf0e10cSrcweir         case SID_DRAW_SQUARE_ROUND_NOFILL:
361cdf0e10cSrcweir         {
362cdf0e10cSrcweir             aObjKind = OBJ_RECT;
363cdf0e10cSrcweir         }
364cdf0e10cSrcweir         break;
365cdf0e10cSrcweir 
366cdf0e10cSrcweir         case SID_DRAW_ELLIPSE       :
367cdf0e10cSrcweir         case SID_DRAW_ELLIPSE_NOFILL:
368cdf0e10cSrcweir         case SID_DRAW_CIRCLE        :
369cdf0e10cSrcweir         case SID_DRAW_CIRCLE_NOFILL :
370cdf0e10cSrcweir         {
371cdf0e10cSrcweir             aObjKind = OBJ_CIRC;
372cdf0e10cSrcweir         }
373cdf0e10cSrcweir         break;
374cdf0e10cSrcweir 
375cdf0e10cSrcweir         case SID_DRAW_CAPTION:
376cdf0e10cSrcweir         case SID_DRAW_CAPTION_VERTICAL:
377cdf0e10cSrcweir         {
378cdf0e10cSrcweir             aObjKind = OBJ_CAPTION;
379cdf0e10cSrcweir         }
380cdf0e10cSrcweir         break;
381cdf0e10cSrcweir 
382cdf0e10cSrcweir         case SID_TOOL_CONNECTOR:
383cdf0e10cSrcweir         case SID_CONNECTOR_ARROW_START:
384cdf0e10cSrcweir         case SID_CONNECTOR_ARROW_END:
385cdf0e10cSrcweir         case SID_CONNECTOR_ARROWS:
386cdf0e10cSrcweir         case SID_CONNECTOR_CIRCLE_START:
387cdf0e10cSrcweir         case SID_CONNECTOR_CIRCLE_END:
388cdf0e10cSrcweir         case SID_CONNECTOR_CIRCLES:
389cdf0e10cSrcweir         case SID_CONNECTOR_LINE:
390cdf0e10cSrcweir         case SID_CONNECTOR_LINE_ARROW_START:
391cdf0e10cSrcweir         case SID_CONNECTOR_LINE_ARROW_END:
392cdf0e10cSrcweir         case SID_CONNECTOR_LINE_ARROWS:
393cdf0e10cSrcweir         case SID_CONNECTOR_LINE_CIRCLE_START:
394cdf0e10cSrcweir         case SID_CONNECTOR_LINE_CIRCLE_END:
395cdf0e10cSrcweir         case SID_CONNECTOR_LINE_CIRCLES:
396cdf0e10cSrcweir         case SID_CONNECTOR_CURVE:
397cdf0e10cSrcweir         case SID_CONNECTOR_CURVE_ARROW_START:
398cdf0e10cSrcweir         case SID_CONNECTOR_CURVE_ARROW_END:
399cdf0e10cSrcweir         case SID_CONNECTOR_CURVE_ARROWS:
400cdf0e10cSrcweir         case SID_CONNECTOR_CURVE_CIRCLE_START:
401cdf0e10cSrcweir         case SID_CONNECTOR_CURVE_CIRCLE_END:
402cdf0e10cSrcweir         case SID_CONNECTOR_CURVE_CIRCLES:
403cdf0e10cSrcweir         case SID_CONNECTOR_LINES:
404cdf0e10cSrcweir         case SID_CONNECTOR_LINES_ARROW_START:
405cdf0e10cSrcweir         case SID_CONNECTOR_LINES_ARROW_END:
406cdf0e10cSrcweir         case SID_CONNECTOR_LINES_ARROWS:
407cdf0e10cSrcweir         case SID_CONNECTOR_LINES_CIRCLE_START:
408cdf0e10cSrcweir         case SID_CONNECTOR_LINES_CIRCLE_END:
409cdf0e10cSrcweir         case SID_CONNECTOR_LINES_CIRCLES:
410cdf0e10cSrcweir         {
411cdf0e10cSrcweir             aObjKind = OBJ_EDGE;
412cdf0e10cSrcweir             mpView->SetGlueVisible();
413cdf0e10cSrcweir         }
414cdf0e10cSrcweir         break;
415cdf0e10cSrcweir 
416cdf0e10cSrcweir         default:
417cdf0e10cSrcweir         {
418cdf0e10cSrcweir             aObjKind = OBJ_RECT;
419cdf0e10cSrcweir         }
420cdf0e10cSrcweir         break;
421cdf0e10cSrcweir     }
422cdf0e10cSrcweir 
423cdf0e10cSrcweir     mpView->SetCurrentObj((sal_uInt16)aObjKind);
424cdf0e10cSrcweir 
425cdf0e10cSrcweir     FuConstruct::Activate();
426cdf0e10cSrcweir }
427cdf0e10cSrcweir 
428cdf0e10cSrcweir /*************************************************************************
429cdf0e10cSrcweir |*
430cdf0e10cSrcweir |* Function deaktivieren
431cdf0e10cSrcweir |*
432cdf0e10cSrcweir \************************************************************************/
433cdf0e10cSrcweir 
Deactivate()434cdf0e10cSrcweir void FuConstructRectangle::Deactivate()
435cdf0e10cSrcweir {
436cdf0e10cSrcweir     if( nSlotId == SID_TOOL_CONNECTOR               ||
437cdf0e10cSrcweir         nSlotId == SID_CONNECTOR_ARROW_START        ||
438cdf0e10cSrcweir         nSlotId == SID_CONNECTOR_ARROW_END          ||
439cdf0e10cSrcweir         nSlotId == SID_CONNECTOR_ARROWS             ||
440cdf0e10cSrcweir         nSlotId == SID_CONNECTOR_CIRCLE_START       ||
441cdf0e10cSrcweir         nSlotId == SID_CONNECTOR_CIRCLE_END         ||
442cdf0e10cSrcweir         nSlotId == SID_CONNECTOR_CIRCLES            ||
443cdf0e10cSrcweir         nSlotId == SID_CONNECTOR_LINE               ||
444cdf0e10cSrcweir         nSlotId == SID_CONNECTOR_LINE_ARROW_START   ||
445cdf0e10cSrcweir         nSlotId == SID_CONNECTOR_LINE_ARROW_END     ||
446cdf0e10cSrcweir         nSlotId == SID_CONNECTOR_LINE_ARROWS        ||
447cdf0e10cSrcweir         nSlotId == SID_CONNECTOR_LINE_CIRCLE_START  ||
448cdf0e10cSrcweir         nSlotId == SID_CONNECTOR_LINE_CIRCLE_END    ||
449cdf0e10cSrcweir         nSlotId == SID_CONNECTOR_LINE_CIRCLES       ||
450cdf0e10cSrcweir         nSlotId == SID_CONNECTOR_CURVE              ||
451cdf0e10cSrcweir         nSlotId == SID_CONNECTOR_CURVE_ARROW_START  ||
452cdf0e10cSrcweir         nSlotId == SID_CONNECTOR_CURVE_ARROW_END    ||
453cdf0e10cSrcweir         nSlotId == SID_CONNECTOR_CURVE_ARROWS       ||
454cdf0e10cSrcweir         nSlotId == SID_CONNECTOR_CURVE_CIRCLE_START ||
455cdf0e10cSrcweir         nSlotId == SID_CONNECTOR_CURVE_CIRCLE_END   ||
456cdf0e10cSrcweir         nSlotId == SID_CONNECTOR_CURVE_CIRCLES      ||
457cdf0e10cSrcweir         nSlotId == SID_CONNECTOR_LINES              ||
458cdf0e10cSrcweir         nSlotId == SID_CONNECTOR_LINES_ARROW_START  ||
459cdf0e10cSrcweir         nSlotId == SID_CONNECTOR_LINES_ARROW_END    ||
460cdf0e10cSrcweir         nSlotId == SID_CONNECTOR_LINES_ARROWS       ||
461cdf0e10cSrcweir         nSlotId == SID_CONNECTOR_LINES_CIRCLE_START ||
462cdf0e10cSrcweir         nSlotId == SID_CONNECTOR_LINES_CIRCLE_END   ||
463cdf0e10cSrcweir         nSlotId == SID_CONNECTOR_LINES_CIRCLES      ||
464cdf0e10cSrcweir         nSlotId == SID_LINE_ARROW_START             ||
465cdf0e10cSrcweir         nSlotId == SID_LINE_ARROW_END               ||
466cdf0e10cSrcweir         nSlotId == SID_LINE_ARROWS                  ||
467cdf0e10cSrcweir         nSlotId == SID_LINE_ARROW_CIRCLE            ||
468cdf0e10cSrcweir         nSlotId == SID_LINE_CIRCLE_ARROW            ||
469cdf0e10cSrcweir         nSlotId == SID_LINE_ARROW_SQUARE            ||
470cdf0e10cSrcweir         nSlotId == SID_LINE_SQUARE_ARROW )
471cdf0e10cSrcweir     {
472cdf0e10cSrcweir         mpView->SetGlueVisible( sal_False );
473cdf0e10cSrcweir     }
474cdf0e10cSrcweir     FuConstruct::Deactivate();
475cdf0e10cSrcweir }
476cdf0e10cSrcweir 
477cdf0e10cSrcweir 
478cdf0e10cSrcweir /*************************************************************************
479cdf0e10cSrcweir |*
480cdf0e10cSrcweir |* Attribute fuer das zu erzeugende Objekt setzen
481cdf0e10cSrcweir |*
482cdf0e10cSrcweir \************************************************************************/
483cdf0e10cSrcweir 
SetAttributes(SfxItemSet & rAttr,SdrObject * pObj)484cdf0e10cSrcweir void FuConstructRectangle::SetAttributes(SfxItemSet& rAttr, SdrObject* pObj)
485cdf0e10cSrcweir {
486cdf0e10cSrcweir     if (nSlotId == SID_DRAW_RECT_ROUND        ||
487cdf0e10cSrcweir         nSlotId == SID_DRAW_RECT_ROUND_NOFILL ||
488cdf0e10cSrcweir         nSlotId == SID_DRAW_SQUARE_ROUND      ||
489cdf0e10cSrcweir         nSlotId == SID_DRAW_SQUARE_ROUND_NOFILL)
490cdf0e10cSrcweir     {
491cdf0e10cSrcweir         /**********************************************************************
492cdf0e10cSrcweir         * Abgerundete Ecken
493cdf0e10cSrcweir         **********************************************************************/
494cdf0e10cSrcweir         rAttr.Put(SdrEckenradiusItem(500));
495cdf0e10cSrcweir     }
496cdf0e10cSrcweir     else if (nSlotId == SID_CONNECTOR_LINE              ||
497cdf0e10cSrcweir              nSlotId == SID_CONNECTOR_LINE_ARROW_START  ||
498cdf0e10cSrcweir              nSlotId == SID_CONNECTOR_LINE_ARROW_END    ||
499cdf0e10cSrcweir              nSlotId == SID_CONNECTOR_LINE_ARROWS       ||
500cdf0e10cSrcweir              nSlotId == SID_CONNECTOR_LINE_CIRCLE_START ||
501cdf0e10cSrcweir              nSlotId == SID_CONNECTOR_LINE_CIRCLE_END   ||
502cdf0e10cSrcweir              nSlotId == SID_CONNECTOR_LINE_CIRCLES)
503cdf0e10cSrcweir     {
504cdf0e10cSrcweir         /**********************************************************************
505cdf0e10cSrcweir         * Direkt-Verbinder
506cdf0e10cSrcweir         **********************************************************************/
507cdf0e10cSrcweir         rAttr.Put(SdrEdgeKindItem(SDREDGE_ONELINE));
508cdf0e10cSrcweir     }
509cdf0e10cSrcweir     else if (nSlotId == SID_CONNECTOR_LINES              ||
510cdf0e10cSrcweir              nSlotId == SID_CONNECTOR_LINES_ARROW_START  ||
511cdf0e10cSrcweir              nSlotId == SID_CONNECTOR_LINES_ARROW_END    ||
512cdf0e10cSrcweir              nSlotId == SID_CONNECTOR_LINES_ARROWS       ||
513cdf0e10cSrcweir              nSlotId == SID_CONNECTOR_LINES_CIRCLE_START ||
514cdf0e10cSrcweir              nSlotId == SID_CONNECTOR_LINES_CIRCLE_END   ||
515cdf0e10cSrcweir              nSlotId == SID_CONNECTOR_LINES_CIRCLES)
516cdf0e10cSrcweir     {
517cdf0e10cSrcweir         /**********************************************************************
518cdf0e10cSrcweir         * Linien-Verbinder
519cdf0e10cSrcweir         **********************************************************************/
520cdf0e10cSrcweir         rAttr.Put(SdrEdgeKindItem(SDREDGE_THREELINES));
521cdf0e10cSrcweir     }
522cdf0e10cSrcweir     else if (nSlotId == SID_CONNECTOR_CURVE              ||
523cdf0e10cSrcweir              nSlotId == SID_CONNECTOR_CURVE_ARROW_START  ||
524cdf0e10cSrcweir              nSlotId == SID_CONNECTOR_CURVE_ARROW_END    ||
525cdf0e10cSrcweir              nSlotId == SID_CONNECTOR_CURVE_ARROWS       ||
526cdf0e10cSrcweir              nSlotId == SID_CONNECTOR_CURVE_CIRCLE_START ||
527cdf0e10cSrcweir              nSlotId == SID_CONNECTOR_CURVE_CIRCLE_END   ||
528cdf0e10cSrcweir              nSlotId == SID_CONNECTOR_CURVE_CIRCLES)
529cdf0e10cSrcweir     {
530cdf0e10cSrcweir         /**********************************************************************
531cdf0e10cSrcweir         * Kurven-Verbinder
532cdf0e10cSrcweir         **********************************************************************/
533cdf0e10cSrcweir         rAttr.Put(SdrEdgeKindItem(SDREDGE_BEZIER));
534cdf0e10cSrcweir     }
535cdf0e10cSrcweir     else if ( nSlotId == SID_DRAW_CAPTION || nSlotId == SID_DRAW_CAPTION_VERTICAL )
536cdf0e10cSrcweir     {
537cdf0e10cSrcweir         /**********************************************************************
538cdf0e10cSrcweir         * Legendenobjekt
539cdf0e10cSrcweir         **********************************************************************/
540cdf0e10cSrcweir         Size aSize(pObj->GetLogicRect().GetSize());
541cdf0e10cSrcweir         rAttr.Put( SdrTextMinFrameHeightItem( aSize.Height() ) );
542cdf0e10cSrcweir         rAttr.Put( SdrTextMinFrameWidthItem( aSize.Width() ) );
543cdf0e10cSrcweir         rAttr.Put( SdrTextAutoGrowHeightItem( sal_True ) );
544cdf0e10cSrcweir         rAttr.Put( SdrTextAutoGrowWidthItem( sal_True ) );
545cdf0e10cSrcweir 
546cdf0e10cSrcweir         // #103516# Support full with for vertical caption objects, too
547cdf0e10cSrcweir         if(SID_DRAW_CAPTION == nSlotId)
548cdf0e10cSrcweir             rAttr.Put( SdrTextHorzAdjustItem( SDRTEXTHORZADJUST_BLOCK ) );
549cdf0e10cSrcweir         else
550cdf0e10cSrcweir             rAttr.Put( SdrTextVertAdjustItem( SDRTEXTVERTADJUST_BLOCK ) );
551cdf0e10cSrcweir 
552cdf0e10cSrcweir         rAttr.Put( SvxAdjustItem( SVX_ADJUST_CENTER, EE_PARA_JUST ) );
553cdf0e10cSrcweir         rAttr.Put( SdrTextLeftDistItem( 100 ) );
554cdf0e10cSrcweir         rAttr.Put( SdrTextRightDistItem( 100 ) );
555cdf0e10cSrcweir         rAttr.Put( SdrTextUpperDistItem( 100 ) );
556cdf0e10cSrcweir         rAttr.Put( SdrTextLowerDistItem( 100 ) );
557cdf0e10cSrcweir     }
558cdf0e10cSrcweir     else if (nSlotId == SID_DRAW_MEASURELINE)
559cdf0e10cSrcweir     {
560cdf0e10cSrcweir         /**********************************************************************
561cdf0e10cSrcweir         * Masslinie
562cdf0e10cSrcweir         **********************************************************************/
563cdf0e10cSrcweir         SdPage* pPage = (SdPage*) mpView->GetSdrPageView()->GetPage();
564cdf0e10cSrcweir         String aName(SdResId(STR_POOLSHEET_MEASURE));
565cdf0e10cSrcweir         SfxStyleSheet* pSheet = (SfxStyleSheet*) pPage->GetModel()->
566cdf0e10cSrcweir                                      GetStyleSheetPool()->
567cdf0e10cSrcweir                                      Find(aName, SD_STYLE_FAMILY_GRAPHICS);
568cdf0e10cSrcweir         DBG_ASSERT(pSheet, "Objektvorlage nicht gefunden");
569cdf0e10cSrcweir 
570cdf0e10cSrcweir         if (pSheet)
571cdf0e10cSrcweir         {
572cdf0e10cSrcweir             pObj->SetStyleSheet(pSheet, sal_False);
573cdf0e10cSrcweir         }
574cdf0e10cSrcweir 
575cdf0e10cSrcweir         SdrLayerAdmin& rAdmin = mpDoc->GetLayerAdmin();
576cdf0e10cSrcweir         String aStr(SdResId(STR_LAYER_MEASURELINES));
577cdf0e10cSrcweir         pObj->SetLayer(rAdmin.GetLayerID(aStr, sal_False));
578cdf0e10cSrcweir     }
579cdf0e10cSrcweir     else if (nSlotId == OBJ_CUSTOMSHAPE )
580cdf0e10cSrcweir     {
581cdf0e10cSrcweir     }
582cdf0e10cSrcweir }
583cdf0e10cSrcweir 
584cdf0e10cSrcweir 
585cdf0e10cSrcweir /*************************************************************************
586cdf0e10cSrcweir |*
587cdf0e10cSrcweir |* Linienanfaenge und -enden fuer das zu erzeugende Objekt setzen
588cdf0e10cSrcweir |*
589cdf0e10cSrcweir \************************************************************************/
590cdf0e10cSrcweir 
getPolygon(sal_uInt16 nResId,SdrModel * pDoc)591cdf0e10cSrcweir ::basegfx::B2DPolyPolygon getPolygon( sal_uInt16 nResId, SdrModel* pDoc )
592cdf0e10cSrcweir {
593cdf0e10cSrcweir     ::basegfx::B2DPolyPolygon aRetval;
594c7be74b1SArmin Le Grand     XLineEndListSharedPtr aLineEndList = pDoc->GetLineEndListFromSdrModel();
595cdf0e10cSrcweir 
596c7be74b1SArmin Le Grand     if( aLineEndList.get() )
597cdf0e10cSrcweir     {
598cdf0e10cSrcweir         String aArrowName( SVX_RES(nResId) );
599c7be74b1SArmin Le Grand         long nCount = aLineEndList->Count();
600cdf0e10cSrcweir         long nIndex;
601cdf0e10cSrcweir         for( nIndex = 0L; nIndex < nCount; nIndex++ )
602cdf0e10cSrcweir         {
603c7be74b1SArmin Le Grand             XLineEndEntry* pEntry = aLineEndList->GetLineEnd(nIndex);
604cdf0e10cSrcweir             if( pEntry->GetName() == aArrowName )
605cdf0e10cSrcweir             {
606cdf0e10cSrcweir                 aRetval = pEntry->GetLineEnd();
607cdf0e10cSrcweir                 break;
608cdf0e10cSrcweir             }
609cdf0e10cSrcweir         }
610cdf0e10cSrcweir     }
611cdf0e10cSrcweir 
612cdf0e10cSrcweir     return aRetval;
613cdf0e10cSrcweir }
614cdf0e10cSrcweir 
SetLineEnds(SfxItemSet & rAttr,SdrObject * pObj)615cdf0e10cSrcweir void FuConstructRectangle::SetLineEnds(SfxItemSet& rAttr, SdrObject* pObj)
616cdf0e10cSrcweir {
617cdf0e10cSrcweir     if ( (pObj->GetObjIdentifier() == OBJ_EDGE &&
618cdf0e10cSrcweir           nSlotId != SID_TOOL_CONNECTOR        &&
619cdf0e10cSrcweir           nSlotId != SID_CONNECTOR_LINE        &&
620cdf0e10cSrcweir           nSlotId != SID_CONNECTOR_LINES       &&
621cdf0e10cSrcweir           nSlotId != SID_CONNECTOR_CURVE)      ||
622cdf0e10cSrcweir           nSlotId == SID_LINE_ARROW_START      ||
623cdf0e10cSrcweir           nSlotId == SID_LINE_ARROW_END        ||
624cdf0e10cSrcweir           nSlotId == SID_LINE_ARROWS           ||
625cdf0e10cSrcweir           nSlotId == SID_LINE_ARROW_CIRCLE     ||
626cdf0e10cSrcweir           nSlotId == SID_LINE_CIRCLE_ARROW     ||
627cdf0e10cSrcweir           nSlotId == SID_LINE_ARROW_SQUARE     ||
628cdf0e10cSrcweir           nSlotId == SID_LINE_SQUARE_ARROW )
629cdf0e10cSrcweir     {
630cdf0e10cSrcweir         /**************************************************************
631cdf0e10cSrcweir         * Linienanfaenge und -enden attributieren
632cdf0e10cSrcweir         **************************************************************/
633cdf0e10cSrcweir 
634cdf0e10cSrcweir         // Pfeilspitze
635cdf0e10cSrcweir         ::basegfx::B2DPolyPolygon aArrow( getPolygon( RID_SVXSTR_ARROW, mpDoc ) );
636cdf0e10cSrcweir         if( !aArrow.count() )
637cdf0e10cSrcweir         {
638cdf0e10cSrcweir             ::basegfx::B2DPolygon aNewArrow;
639cdf0e10cSrcweir             aNewArrow.append(::basegfx::B2DPoint(10.0, 0.0));
640cdf0e10cSrcweir             aNewArrow.append(::basegfx::B2DPoint(0.0, 30.0));
641cdf0e10cSrcweir             aNewArrow.append(::basegfx::B2DPoint(20.0, 30.0));
642cdf0e10cSrcweir             aNewArrow.setClosed(true);
643cdf0e10cSrcweir             aArrow.append(aNewArrow);
644cdf0e10cSrcweir         }
645cdf0e10cSrcweir 
646cdf0e10cSrcweir         // Kreis
647cdf0e10cSrcweir         ::basegfx::B2DPolyPolygon aCircle( getPolygon( RID_SVXSTR_CIRCLE, mpDoc ) );
648cdf0e10cSrcweir         if( !aCircle.count() )
649cdf0e10cSrcweir         {
650cdf0e10cSrcweir             ::basegfx::B2DPolygon aNewCircle;
651cdf0e10cSrcweir             aNewCircle = ::basegfx::tools::createPolygonFromEllipse(::basegfx::B2DPoint(0.0, 0.0), 250.0, 250.0);
652cdf0e10cSrcweir             aNewCircle.setClosed(true);
653cdf0e10cSrcweir             aCircle.append(aNewCircle);
654cdf0e10cSrcweir         }
655cdf0e10cSrcweir 
656cdf0e10cSrcweir         // Quadrat
657cdf0e10cSrcweir         ::basegfx::B2DPolyPolygon aSquare( getPolygon( RID_SVXSTR_SQUARE, mpDoc ) );
658cdf0e10cSrcweir         if( !aSquare.count() )
659cdf0e10cSrcweir         {
660cdf0e10cSrcweir             ::basegfx::B2DPolygon aNewSquare;
661cdf0e10cSrcweir             aNewSquare.append(::basegfx::B2DPoint(0.0, 0.0));
662cdf0e10cSrcweir             aNewSquare.append(::basegfx::B2DPoint(10.0, 0.0));
663cdf0e10cSrcweir             aNewSquare.append(::basegfx::B2DPoint(10.0, 10.0));
664cdf0e10cSrcweir             aNewSquare.append(::basegfx::B2DPoint(0.0, 10.0));
665cdf0e10cSrcweir             aNewSquare.setClosed(true);
666cdf0e10cSrcweir             aSquare.append(aNewSquare);
667cdf0e10cSrcweir         }
668cdf0e10cSrcweir 
669cdf0e10cSrcweir         SfxItemSet aSet( mpDoc->GetPool() );
670cdf0e10cSrcweir         mpView->GetAttributes( aSet );
671cdf0e10cSrcweir 
672cdf0e10cSrcweir         // #i3908# Here, the default Line Start/End width for arrow construction is
673cdf0e10cSrcweir         // set. To have the same value in all situations (construction) in i3908
674cdf0e10cSrcweir         // it was decided to change the default to 0.03 cm for all situations.
675cdf0e10cSrcweir         long nWidth = 300; // (1/100th mm)
676cdf0e10cSrcweir 
677cdf0e10cSrcweir         // Linienstaerke ermitteln und daraus die Linienendenstaerke berechnen
678cdf0e10cSrcweir         if( aSet.GetItemState( XATTR_LINEWIDTH ) != SFX_ITEM_DONTCARE )
679cdf0e10cSrcweir         {
680cdf0e10cSrcweir             long nValue = ( ( const XLineWidthItem& ) aSet.Get( XATTR_LINEWIDTH ) ).GetValue();
681cdf0e10cSrcweir             if( nValue > 0 )
682cdf0e10cSrcweir                 nWidth = nValue * 3;
683cdf0e10cSrcweir         }
684cdf0e10cSrcweir 
685cdf0e10cSrcweir         switch (nSlotId)
686cdf0e10cSrcweir         {
687cdf0e10cSrcweir             case SID_CONNECTOR_ARROWS:
688cdf0e10cSrcweir             case SID_CONNECTOR_LINE_ARROWS:
689cdf0e10cSrcweir             case SID_CONNECTOR_LINES_ARROWS:
690cdf0e10cSrcweir             case SID_CONNECTOR_CURVE_ARROWS:
691cdf0e10cSrcweir             case SID_LINE_ARROWS:
692cdf0e10cSrcweir             {
693cdf0e10cSrcweir                 // Verbinder mit Pfeil-Enden
694cdf0e10cSrcweir                 rAttr.Put(XLineStartItem(SVX_RESSTR(RID_SVXSTR_ARROW), aArrow));
695cdf0e10cSrcweir                 rAttr.Put(XLineStartWidthItem(nWidth));
696cdf0e10cSrcweir                 rAttr.Put(XLineEndItem(SVX_RESSTR(RID_SVXSTR_ARROW), aArrow));
697cdf0e10cSrcweir                 rAttr.Put(XLineEndWidthItem(nWidth));
698cdf0e10cSrcweir             }
699cdf0e10cSrcweir             break;
700cdf0e10cSrcweir 
701cdf0e10cSrcweir             case SID_CONNECTOR_ARROW_START:
702cdf0e10cSrcweir             case SID_CONNECTOR_LINE_ARROW_START:
703cdf0e10cSrcweir             case SID_CONNECTOR_LINES_ARROW_START:
704cdf0e10cSrcweir             case SID_CONNECTOR_CURVE_ARROW_START:
705cdf0e10cSrcweir             case SID_LINE_ARROW_START:
706cdf0e10cSrcweir             case SID_LINE_ARROW_CIRCLE:
707cdf0e10cSrcweir             case SID_LINE_ARROW_SQUARE:
708cdf0e10cSrcweir             {
709cdf0e10cSrcweir                 // Verbinder mit Pfeil-Anfang
710cdf0e10cSrcweir                 rAttr.Put(XLineStartItem(SVX_RESSTR(RID_SVXSTR_ARROW), aArrow));
711cdf0e10cSrcweir                 rAttr.Put(XLineStartWidthItem(nWidth));
712cdf0e10cSrcweir             }
713cdf0e10cSrcweir             break;
714cdf0e10cSrcweir 
715cdf0e10cSrcweir             case SID_CONNECTOR_ARROW_END:
716cdf0e10cSrcweir             case SID_CONNECTOR_LINE_ARROW_END:
717cdf0e10cSrcweir             case SID_CONNECTOR_LINES_ARROW_END:
718cdf0e10cSrcweir             case SID_CONNECTOR_CURVE_ARROW_END:
719cdf0e10cSrcweir             case SID_LINE_ARROW_END:
720cdf0e10cSrcweir             case SID_LINE_CIRCLE_ARROW:
721cdf0e10cSrcweir             case SID_LINE_SQUARE_ARROW:
722cdf0e10cSrcweir             {
723cdf0e10cSrcweir                 // Verbinder mit Pfeil-Ende
724cdf0e10cSrcweir                 rAttr.Put(XLineEndItem(SVX_RESSTR(RID_SVXSTR_ARROW), aArrow));
725cdf0e10cSrcweir                 rAttr.Put(XLineEndWidthItem(nWidth));
726cdf0e10cSrcweir             }
727cdf0e10cSrcweir             break;
728cdf0e10cSrcweir 
729cdf0e10cSrcweir             case SID_CONNECTOR_CIRCLES:
730cdf0e10cSrcweir             case SID_CONNECTOR_LINE_CIRCLES:
731cdf0e10cSrcweir             case SID_CONNECTOR_LINES_CIRCLES:
732cdf0e10cSrcweir             case SID_CONNECTOR_CURVE_CIRCLES:
733cdf0e10cSrcweir             {
734cdf0e10cSrcweir                 // Verbinder mit Kreis-Enden
735cdf0e10cSrcweir                 rAttr.Put(XLineStartItem(SVX_RESSTR(RID_SVXSTR_CIRCLE), aCircle));
736cdf0e10cSrcweir                 rAttr.Put(XLineStartWidthItem(nWidth));
737cdf0e10cSrcweir                 rAttr.Put(XLineEndItem(SVX_RESSTR(RID_SVXSTR_CIRCLE), aCircle));
738cdf0e10cSrcweir                 rAttr.Put(XLineEndWidthItem(nWidth));
739cdf0e10cSrcweir             }
740cdf0e10cSrcweir             break;
741cdf0e10cSrcweir 
742cdf0e10cSrcweir             case SID_CONNECTOR_CIRCLE_START:
743cdf0e10cSrcweir             case SID_CONNECTOR_LINE_CIRCLE_START:
744cdf0e10cSrcweir             case SID_CONNECTOR_LINES_CIRCLE_START:
745cdf0e10cSrcweir             case SID_CONNECTOR_CURVE_CIRCLE_START:
746cdf0e10cSrcweir             {
747cdf0e10cSrcweir                 // Verbinder mit Kreis-Anfang
748cdf0e10cSrcweir                 rAttr.Put(XLineStartItem(SVX_RESSTR(RID_SVXSTR_CIRCLE), aCircle));
749cdf0e10cSrcweir                 rAttr.Put(XLineStartWidthItem(nWidth));
750cdf0e10cSrcweir             }
751cdf0e10cSrcweir             break;
752cdf0e10cSrcweir 
753cdf0e10cSrcweir             case SID_CONNECTOR_CIRCLE_END:
754cdf0e10cSrcweir             case SID_CONNECTOR_LINE_CIRCLE_END:
755cdf0e10cSrcweir             case SID_CONNECTOR_LINES_CIRCLE_END:
756cdf0e10cSrcweir             case SID_CONNECTOR_CURVE_CIRCLE_END:
757cdf0e10cSrcweir             {
758cdf0e10cSrcweir                 // Verbinder mit Kreis-Ende
759cdf0e10cSrcweir                 rAttr.Put(XLineEndItem(SVX_RESSTR(RID_SVXSTR_CIRCLE), aCircle));
760cdf0e10cSrcweir                 rAttr.Put(XLineEndWidthItem(nWidth));
761cdf0e10cSrcweir             }
762cdf0e10cSrcweir             break;
763cdf0e10cSrcweir         };
764cdf0e10cSrcweir 
765cdf0e10cSrcweir         // Und nochmal fuer die noch fehlenden Enden
766cdf0e10cSrcweir         switch (nSlotId)
767cdf0e10cSrcweir         {
768cdf0e10cSrcweir             case SID_LINE_ARROW_CIRCLE:
769cdf0e10cSrcweir             {
770cdf0e10cSrcweir                 // Kreis-Ende
771cdf0e10cSrcweir                 rAttr.Put(XLineEndItem(SVX_RESSTR(RID_SVXSTR_CIRCLE), aCircle));
772cdf0e10cSrcweir                 rAttr.Put(XLineEndWidthItem(nWidth));
773cdf0e10cSrcweir             }
774cdf0e10cSrcweir             break;
775cdf0e10cSrcweir 
776cdf0e10cSrcweir             case SID_LINE_CIRCLE_ARROW:
777cdf0e10cSrcweir             {
778cdf0e10cSrcweir                 // Kreis-Anfang
779cdf0e10cSrcweir                 rAttr.Put(XLineStartItem(SVX_RESSTR(RID_SVXSTR_CIRCLE), aCircle));
780cdf0e10cSrcweir                 rAttr.Put(XLineStartWidthItem(nWidth));
781cdf0e10cSrcweir             }
782cdf0e10cSrcweir             break;
783cdf0e10cSrcweir 
784cdf0e10cSrcweir             case SID_LINE_ARROW_SQUARE:
785cdf0e10cSrcweir             {
786cdf0e10cSrcweir                 // Quadrat-Ende
787cdf0e10cSrcweir                 rAttr.Put(XLineEndItem(SVX_RESSTR(RID_SVXSTR_SQUARE), aSquare));
788cdf0e10cSrcweir                 rAttr.Put(XLineEndWidthItem(nWidth));
789cdf0e10cSrcweir             }
790cdf0e10cSrcweir             break;
791cdf0e10cSrcweir 
792cdf0e10cSrcweir             case SID_LINE_SQUARE_ARROW:
793cdf0e10cSrcweir             {
794cdf0e10cSrcweir                 // Quadrat-Anfang
795cdf0e10cSrcweir                 rAttr.Put(XLineStartItem(SVX_RESSTR(RID_SVXSTR_SQUARE), aSquare));
796cdf0e10cSrcweir                 rAttr.Put(XLineStartWidthItem(nWidth));
797cdf0e10cSrcweir             }
798cdf0e10cSrcweir             break;
799cdf0e10cSrcweir         }
800cdf0e10cSrcweir     }
801cdf0e10cSrcweir }
802cdf0e10cSrcweir 
803cdf0e10cSrcweir // #97016#
CreateDefaultObject(const sal_uInt16 nID,const Rectangle & rRectangle)804cdf0e10cSrcweir SdrObject* FuConstructRectangle::CreateDefaultObject(const sal_uInt16 nID, const Rectangle& rRectangle)
805cdf0e10cSrcweir {
806cdf0e10cSrcweir     DBG_ASSERT( (nID != SID_DRAW_FONTWORK) && (nID != SID_DRAW_FONTWORK_VERTICAL ), "FuConstRectangle::CreateDefaultObject can not create Fontwork shapes!" );
807cdf0e10cSrcweir 
808cdf0e10cSrcweir     // case SID_DRAW_LINE:
809cdf0e10cSrcweir     // case SID_DRAW_XLINE:
810cdf0e10cSrcweir     // case SID_DRAW_MEASURELINE:
811cdf0e10cSrcweir     // case SID_LINE_ARROW_START:
812cdf0e10cSrcweir     // case SID_LINE_ARROW_END:
813cdf0e10cSrcweir     // case SID_LINE_ARROWS:
814cdf0e10cSrcweir     // case SID_LINE_ARROW_CIRCLE:
815cdf0e10cSrcweir     // case SID_LINE_CIRCLE_ARROW:
816cdf0e10cSrcweir     // case SID_LINE_ARROW_SQUARE:
817cdf0e10cSrcweir     // case SID_LINE_SQUARE_ARROW:
818cdf0e10cSrcweir     // case SID_DRAW_RECT:
819cdf0e10cSrcweir     // case SID_DRAW_RECT_NOFILL:
820cdf0e10cSrcweir     // case SID_DRAW_RECT_ROUND:
821cdf0e10cSrcweir     // case SID_DRAW_RECT_ROUND_NOFILL:
822cdf0e10cSrcweir     // case SID_DRAW_SQUARE:
823cdf0e10cSrcweir     // case SID_DRAW_SQUARE_NOFILL:
824cdf0e10cSrcweir     // case SID_DRAW_SQUARE_ROUND:
825cdf0e10cSrcweir     // case SID_DRAW_SQUARE_ROUND_NOFILL:
826cdf0e10cSrcweir     // case SID_DRAW_ELLIPSE:
827cdf0e10cSrcweir     // case SID_DRAW_ELLIPSE_NOFILL:
828cdf0e10cSrcweir     // case SID_DRAW_CIRCLE:
829cdf0e10cSrcweir     // case SID_DRAW_CIRCLE_NOFILL:
830cdf0e10cSrcweir     // case SID_DRAW_CAPTION:
831cdf0e10cSrcweir     // case SID_DRAW_CAPTION_VERTICAL:
832cdf0e10cSrcweir     // case SID_TOOL_CONNECTOR:
833cdf0e10cSrcweir     // case SID_CONNECTOR_ARROW_START:
834cdf0e10cSrcweir     // case SID_CONNECTOR_ARROW_END:
835cdf0e10cSrcweir     // case SID_CONNECTOR_ARROWS:
836cdf0e10cSrcweir     // case SID_CONNECTOR_CIRCLE_START:
837cdf0e10cSrcweir     // case SID_CONNECTOR_CIRCLE_END:
838cdf0e10cSrcweir     // case SID_CONNECTOR_CIRCLES:
839cdf0e10cSrcweir     // case SID_CONNECTOR_LINE:
840cdf0e10cSrcweir     // case SID_CONNECTOR_LINE_ARROW_START:
841cdf0e10cSrcweir     // case SID_CONNECTOR_LINE_ARROW_END:
842cdf0e10cSrcweir     // case SID_CONNECTOR_LINE_ARROWS:
843cdf0e10cSrcweir     // case SID_CONNECTOR_LINE_CIRCLE_START:
844cdf0e10cSrcweir     // case SID_CONNECTOR_LINE_CIRCLE_END:
845cdf0e10cSrcweir     // case SID_CONNECTOR_LINE_CIRCLES:
846cdf0e10cSrcweir     // case SID_CONNECTOR_CURVE:
847cdf0e10cSrcweir     // case SID_CONNECTOR_CURVE_ARROW_START:
848cdf0e10cSrcweir     // case SID_CONNECTOR_CURVE_ARROW_END:
849cdf0e10cSrcweir     // case SID_CONNECTOR_CURVE_ARROWS:
850cdf0e10cSrcweir     // case SID_CONNECTOR_CURVE_CIRCLE_START:
851cdf0e10cSrcweir     // case SID_CONNECTOR_CURVE_CIRCLE_END:
852cdf0e10cSrcweir     // case SID_CONNECTOR_CURVE_CIRCLES:
853cdf0e10cSrcweir     // case SID_CONNECTOR_LINES:
854cdf0e10cSrcweir     // case SID_CONNECTOR_LINES_ARROW_START:
855cdf0e10cSrcweir     // case SID_CONNECTOR_LINES_ARROW_END:
856cdf0e10cSrcweir     // case SID_CONNECTOR_LINES_ARROWS:
857cdf0e10cSrcweir     // case SID_CONNECTOR_LINES_CIRCLE_START:
858cdf0e10cSrcweir     // case SID_CONNECTOR_LINES_CIRCLE_END:
859cdf0e10cSrcweir     // case SID_CONNECTOR_LINES_CIRCLES:
860cdf0e10cSrcweir 
861cdf0e10cSrcweir     SdrObject* pObj = SdrObjFactory::MakeNewObject(
862cdf0e10cSrcweir         mpView->GetCurrentObjInventor(), mpView->GetCurrentObjIdentifier(),
863cdf0e10cSrcweir         0L, mpDoc);
864cdf0e10cSrcweir 
865cdf0e10cSrcweir     if(pObj)
866cdf0e10cSrcweir     {
867cdf0e10cSrcweir         Rectangle aRect(rRectangle);
868cdf0e10cSrcweir 
869cdf0e10cSrcweir         if(SID_DRAW_SQUARE == nID ||
870cdf0e10cSrcweir             SID_DRAW_SQUARE_NOFILL == nID ||
871cdf0e10cSrcweir             SID_DRAW_SQUARE_ROUND == nID ||
872cdf0e10cSrcweir             SID_DRAW_SQUARE_ROUND_NOFILL == nID ||
873cdf0e10cSrcweir             SID_DRAW_CIRCLE == nID ||
874cdf0e10cSrcweir             SID_DRAW_CIRCLE_NOFILL == nID)
875cdf0e10cSrcweir         {
876cdf0e10cSrcweir             // force quadratic
877cdf0e10cSrcweir             ImpForceQuadratic(aRect);
878cdf0e10cSrcweir         }
879cdf0e10cSrcweir 
880cdf0e10cSrcweir         Point aStart = aRect.TopLeft();
881cdf0e10cSrcweir         Point aEnd = aRect.BottomRight();
882cdf0e10cSrcweir 
883cdf0e10cSrcweir         switch(nID)
884cdf0e10cSrcweir         {
885cdf0e10cSrcweir             case SID_DRAW_LINE:
886cdf0e10cSrcweir             case SID_DRAW_XLINE:
887cdf0e10cSrcweir             case SID_LINE_ARROW_START:
888cdf0e10cSrcweir             case SID_LINE_ARROW_END:
889cdf0e10cSrcweir             case SID_LINE_ARROWS:
890cdf0e10cSrcweir             case SID_LINE_ARROW_CIRCLE:
891cdf0e10cSrcweir             case SID_LINE_CIRCLE_ARROW:
892cdf0e10cSrcweir             case SID_LINE_ARROW_SQUARE:
893cdf0e10cSrcweir             case SID_LINE_SQUARE_ARROW:
894cdf0e10cSrcweir             {
895cdf0e10cSrcweir                 if(pObj->ISA(SdrPathObj))
896cdf0e10cSrcweir                 {
897cdf0e10cSrcweir                     sal_Int32 nYMiddle((aRect.Top() + aRect.Bottom()) / 2);
898cdf0e10cSrcweir 
899cdf0e10cSrcweir                     ::basegfx::B2DPolygon aB2DPolygon;
900cdf0e10cSrcweir                     aB2DPolygon.append(::basegfx::B2DPoint(aStart.X(), nYMiddle));
901cdf0e10cSrcweir                     aB2DPolygon.append(::basegfx::B2DPoint(aEnd.X(), nYMiddle));
902cdf0e10cSrcweir                     ((SdrPathObj*)pObj)->SetPathPoly(::basegfx::B2DPolyPolygon(aB2DPolygon));
903cdf0e10cSrcweir                 }
904cdf0e10cSrcweir                 else
905cdf0e10cSrcweir                 {
906cdf0e10cSrcweir                     DBG_ERROR("Object is NO line object");
907cdf0e10cSrcweir                 }
908cdf0e10cSrcweir 
909cdf0e10cSrcweir                 break;
910cdf0e10cSrcweir             }
911cdf0e10cSrcweir 
912cdf0e10cSrcweir             case SID_DRAW_MEASURELINE:
913cdf0e10cSrcweir             {
914cdf0e10cSrcweir                 if(pObj->ISA(SdrMeasureObj))
915cdf0e10cSrcweir                 {
916cdf0e10cSrcweir                     sal_Int32 nYMiddle((aRect.Top() + aRect.Bottom()) / 2);
917cdf0e10cSrcweir                     ((SdrMeasureObj*)pObj)->SetPoint(Point(aStart.X(), nYMiddle), 0);
918cdf0e10cSrcweir                     ((SdrMeasureObj*)pObj)->SetPoint(Point(aEnd.X(), nYMiddle), 1);
919cdf0e10cSrcweir                 }
920cdf0e10cSrcweir                 else
921cdf0e10cSrcweir                 {
922cdf0e10cSrcweir                     DBG_ERROR("Object is NO measure object");
923cdf0e10cSrcweir                 }
924cdf0e10cSrcweir 
925cdf0e10cSrcweir                 break;
926cdf0e10cSrcweir             }
927cdf0e10cSrcweir 
928cdf0e10cSrcweir             case SID_TOOL_CONNECTOR:
929cdf0e10cSrcweir             case SID_CONNECTOR_ARROW_START:
930cdf0e10cSrcweir             case SID_CONNECTOR_ARROW_END:
931cdf0e10cSrcweir             case SID_CONNECTOR_ARROWS:
932cdf0e10cSrcweir             case SID_CONNECTOR_CIRCLE_START:
933cdf0e10cSrcweir             case SID_CONNECTOR_CIRCLE_END:
934cdf0e10cSrcweir             case SID_CONNECTOR_CIRCLES:
935cdf0e10cSrcweir             case SID_CONNECTOR_LINE:
936cdf0e10cSrcweir             case SID_CONNECTOR_LINE_ARROW_START:
937cdf0e10cSrcweir             case SID_CONNECTOR_LINE_ARROW_END:
938cdf0e10cSrcweir             case SID_CONNECTOR_LINE_ARROWS:
939cdf0e10cSrcweir             case SID_CONNECTOR_LINE_CIRCLE_START:
940cdf0e10cSrcweir             case SID_CONNECTOR_LINE_CIRCLE_END:
941cdf0e10cSrcweir             case SID_CONNECTOR_LINE_CIRCLES:
942cdf0e10cSrcweir             case SID_CONNECTOR_CURVE:
943cdf0e10cSrcweir             case SID_CONNECTOR_CURVE_ARROW_START:
944cdf0e10cSrcweir             case SID_CONNECTOR_CURVE_ARROW_END:
945cdf0e10cSrcweir             case SID_CONNECTOR_CURVE_ARROWS:
946cdf0e10cSrcweir             case SID_CONNECTOR_CURVE_CIRCLE_START:
947cdf0e10cSrcweir             case SID_CONNECTOR_CURVE_CIRCLE_END:
948cdf0e10cSrcweir             case SID_CONNECTOR_CURVE_CIRCLES:
949cdf0e10cSrcweir             case SID_CONNECTOR_LINES:
950cdf0e10cSrcweir             case SID_CONNECTOR_LINES_ARROW_START:
951cdf0e10cSrcweir             case SID_CONNECTOR_LINES_ARROW_END:
952cdf0e10cSrcweir             case SID_CONNECTOR_LINES_ARROWS:
953cdf0e10cSrcweir             case SID_CONNECTOR_LINES_CIRCLE_START:
954cdf0e10cSrcweir             case SID_CONNECTOR_LINES_CIRCLE_END:
955cdf0e10cSrcweir             case SID_CONNECTOR_LINES_CIRCLES:
956cdf0e10cSrcweir             {
957cdf0e10cSrcweir                 if(pObj->ISA(SdrEdgeObj))
958cdf0e10cSrcweir                 {
959cdf0e10cSrcweir                     ((SdrEdgeObj*)pObj)->SetTailPoint(sal_False, aStart);
960cdf0e10cSrcweir                     ((SdrEdgeObj*)pObj)->SetTailPoint(sal_True, aEnd);
961cdf0e10cSrcweir                 }
962cdf0e10cSrcweir                 else
963cdf0e10cSrcweir                 {
964cdf0e10cSrcweir                     DBG_ERROR("Object is NO connector object");
965cdf0e10cSrcweir                 }
966cdf0e10cSrcweir 
967cdf0e10cSrcweir                 break;
968cdf0e10cSrcweir             }
969cdf0e10cSrcweir             case SID_DRAW_CAPTION:
970cdf0e10cSrcweir             case SID_DRAW_CAPTION_VERTICAL:
971cdf0e10cSrcweir             {
972cdf0e10cSrcweir                 if(pObj->ISA(SdrCaptionObj))
973cdf0e10cSrcweir                 {
974cdf0e10cSrcweir                     sal_Bool bIsVertical(SID_DRAW_CAPTION_VERTICAL == nID);
975cdf0e10cSrcweir 
976cdf0e10cSrcweir                     ((SdrTextObj*)pObj)->SetVerticalWriting(bIsVertical);
977cdf0e10cSrcweir 
978cdf0e10cSrcweir                     if(bIsVertical)
979cdf0e10cSrcweir                     {
980cdf0e10cSrcweir                         SfxItemSet aSet(pObj->GetMergedItemSet());
981cdf0e10cSrcweir                         aSet.Put(SdrTextVertAdjustItem(SDRTEXTVERTADJUST_CENTER));
982cdf0e10cSrcweir                         aSet.Put(SdrTextHorzAdjustItem(SDRTEXTHORZADJUST_RIGHT));
983cdf0e10cSrcweir                         pObj->SetMergedItemSet(aSet);
984cdf0e10cSrcweir                     }
985cdf0e10cSrcweir 
986cdf0e10cSrcweir                     // For task #105815# the default text is not inserted anymore.
987cdf0e10cSrcweir                     //  String aText(SdResId(STR_POOLSHEET_TEXT));
988cdf0e10cSrcweir                     //  ((SdrCaptionObj*)pObj)->SetText(aText);
989cdf0e10cSrcweir 
990cdf0e10cSrcweir                     ((SdrCaptionObj*)pObj)->SetLogicRect(aRect);
991cdf0e10cSrcweir                     ((SdrCaptionObj*)pObj)->SetTailPos(
992cdf0e10cSrcweir                         aRect.TopLeft() - Point(aRect.GetWidth() / 2, aRect.GetHeight() / 2));
993cdf0e10cSrcweir                 }
994cdf0e10cSrcweir                 else
995cdf0e10cSrcweir                 {
996cdf0e10cSrcweir                     DBG_ERROR("Object is NO caption object");
997cdf0e10cSrcweir                 }
998cdf0e10cSrcweir 
999cdf0e10cSrcweir                 break;
1000cdf0e10cSrcweir             }
1001cdf0e10cSrcweir 
1002cdf0e10cSrcweir             default:
1003cdf0e10cSrcweir             {
1004cdf0e10cSrcweir                 pObj->SetLogicRect(aRect);
1005cdf0e10cSrcweir 
1006cdf0e10cSrcweir                 break;
1007cdf0e10cSrcweir             }
1008cdf0e10cSrcweir         }
1009cdf0e10cSrcweir 
1010cdf0e10cSrcweir         SfxItemSet aAttr(mpDoc->GetPool());
1011cdf0e10cSrcweir         SetStyleSheet(aAttr, pObj);
1012cdf0e10cSrcweir         SetAttributes(aAttr, pObj);
1013cdf0e10cSrcweir         SetLineEnds(aAttr, pObj);
1014cdf0e10cSrcweir         pObj->SetMergedItemSet(aAttr);
1015cdf0e10cSrcweir     }
1016cdf0e10cSrcweir 
1017cdf0e10cSrcweir     return pObj;
1018cdf0e10cSrcweir }
1019cdf0e10cSrcweir 
1020cdf0e10cSrcweir } // end of namespace sd
1021