xref: /aoo42x/main/sd/source/ui/func/fuconrec.cxx (revision c7be74b1)
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
105b190011SAndrew Rist  *
115b190011SAndrew Rist  *   http://www.apache.org/licenses/LICENSE-2.0
125b190011SAndrew Rist  *
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.
195b190011SAndrew Rist  *
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
288cdf0e10cSrcweir 				// be set at the object and thus may differ from verical 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;
594*c7be74b1SArmin Le Grand 	XLineEndListSharedPtr aLineEndList = pDoc->GetLineEndListFromSdrModel();
595cdf0e10cSrcweir 
596*c7be74b1SArmin Le Grand 	if( aLineEndList.get() )
597cdf0e10cSrcweir 	{
598cdf0e10cSrcweir 		String aArrowName( SVX_RES(nResId) );
599*c7be74b1SArmin Le Grand 		long nCount = aLineEndList->Count();
600cdf0e10cSrcweir 		long nIndex;
601cdf0e10cSrcweir 		for( nIndex = 0L; nIndex < nCount; nIndex++ )
602cdf0e10cSrcweir 		{
603*c7be74b1SArmin 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