xref: /trunk/main/sw/source/ui/ribbar/conpoly.cxx (revision 372e31e8)
1 /**************************************************************
2  *
3  * Licensed to the Apache Software Foundation (ASF) under one
4  * or more contributor license agreements.  See the NOTICE file
5  * distributed with this work for additional information
6  * regarding copyright ownership.  The ASF licenses this file
7  * to you under the Apache License, Version 2.0 (the
8  * "License"); you may not use this file except in compliance
9  * with the License.  You may obtain a copy of the License at
10  *
11  *   http://www.apache.org/licenses/LICENSE-2.0
12  *
13  * Unless required by applicable law or agreed to in writing,
14  * software distributed under the License is distributed on an
15  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16  * KIND, either express or implied.  See the License for the
17  * specific language governing permissions and limitations
18  * under the License.
19  *
20  *************************************************************/
21 
22 // MARKER(update_precomp.py): autogen include statement, do not remove
23 #include "precompiled_sw.hxx"
24 
25 #include <svx/svdmark.hxx>
26 #include <svx/svdview.hxx>
27 #include <svx/svdopath.hxx>
28 
29 #include "view.hxx"
30 #include "edtwin.hxx"
31 #include "wrtsh.hxx"
32 #include "drawbase.hxx"
33 #include "conpoly.hxx"
34 #include <basegfx/polygon/b2dpolygon.hxx>
35 
36 /*************************************************************************
37 |* C'Tor
38 \************************************************************************/
39 
ConstPolygon(SwWrtShell * pWrtShell,SwEditWin * pEditWin,SwView * pSwView)40 ConstPolygon::ConstPolygon(SwWrtShell* pWrtShell, SwEditWin* pEditWin, SwView* pSwView) :
41 				SwDrawBase(pWrtShell, pEditWin, pSwView)
42 {
43 }
44 
45 /*************************************************************************
46 |* MouseButtonDown-event
47 \************************************************************************/
48 
MouseButtonDown(const MouseEvent & rMEvt)49 sal_Bool ConstPolygon::MouseButtonDown(const MouseEvent& rMEvt)
50 {
51 	sal_Bool bReturn;
52 
53 	if ((bReturn = SwDrawBase::MouseButtonDown(rMEvt)) == sal_True)
54 		aLastPos = rMEvt.GetPosPixel();
55 
56 	return (bReturn);
57 }
58 
59 /*************************************************************************
60 |* MouseMove-event
61 \************************************************************************/
62 
MouseMove(const MouseEvent & rMEvt)63 sal_Bool ConstPolygon::MouseMove(const MouseEvent& rMEvt)
64 {
65 	sal_Bool bReturn = sal_False;
66 
67 	bReturn = SwDrawBase::MouseMove(rMEvt);
68 
69 	return bReturn;
70 }
71 
72 /*************************************************************************
73 |* MouseButtonUp-event
74 \************************************************************************/
75 
MouseButtonUp(const MouseEvent & rMEvt)76 sal_Bool ConstPolygon::MouseButtonUp(const MouseEvent& rMEvt)
77 {
78 	sal_Bool bReturn = sal_False;
79 
80     if (m_pSh->IsDrawCreate())
81 	{
82 		if (rMEvt.IsLeft() && rMEvt.GetClicks() == 1 &&
83                                         m_pWin->GetSdrDrawMode() != OBJ_FREELINE)
84 		{
85             if (!m_pSh->EndCreate(SDRCREATE_NEXTPOINT))
86 			{
87                 m_pSh->BreakCreate();
88 				EnterSelectMode(rMEvt);
89 				return sal_True;
90 			}
91 		}
92 		else
93 		{
94             Point aPnt(m_pWin->PixelToLogic(rMEvt.GetPosPixel()));
95 			bReturn = SwDrawBase::MouseButtonUp(rMEvt);
96 
97 			// #i85045# removed double mechanism to check for AutoClose polygon
98 			// after construction; the method here did not check for already closed and
99 			// also worked only for a single polygon. Removing.
100 		}
101 	}
102 	else
103 		bReturn = SwDrawBase::MouseButtonUp(rMEvt);
104 
105 	return (bReturn);
106 }
107 
108 /*************************************************************************
109 |* activate function
110 \************************************************************************/
111 
Activate(const sal_uInt16 nSlotId)112 void ConstPolygon::Activate(const sal_uInt16 nSlotId)
113 {
114 	switch (nSlotId)
115 	{
116 		case SID_DRAW_POLYGON_NOFILL:
117             m_pWin->SetSdrDrawMode(OBJ_PLIN);
118 			break;
119 
120 		case SID_DRAW_BEZIER_NOFILL:
121             m_pWin->SetSdrDrawMode(OBJ_PATHLINE);
122 			break;
123 
124 		case SID_DRAW_FREELINE_NOFILL:
125             m_pWin->SetSdrDrawMode(OBJ_FREELINE);
126 			break;
127 
128 		default:
129 			break;
130 	}
131 
132 	SwDrawBase::Activate(nSlotId);
133 }
134 
135 /* vim: set noet sw=4 ts=4: */
136