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