1 /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
3 * This file is part of the LibreOffice project.
5 * This Source Code Form is subject to the terms of the Mozilla Public
6 * License, v. 2.0. If a copy of the MPL was not distributed with this
7 * file, You can obtain one at http://mozilla.org/MPL/2.0/.
9 * This file incorporates work covered by the following license notice:
11 * Licensed to the Apache Software Foundation (ASF) under one or more
12 * contributor license agreements. See the NOTICE file distributed
13 * with this work for additional information regarding copyright
14 * ownership. The ASF licenses this file to you under the Apache
15 * License, Version 2.0 (the "License"); you may not use this file
16 * except in compliance with the License. You may obtain a copy of
17 * the License at http://www.apache.org/licenses/LICENSE-2.0 .
20 #ifndef INCLUDED_SVX_SOURCE_SVDRAW_SVDDRGM1_HXX
21 #define INCLUDED_SVX_SOURCE_SVDRAW_SVDDRGM1_HXX
23 #include <svx/xpoly.hxx>
24 #include <svx/svdhdl.hxx>
25 #include <svx/svddrgv.hxx>
26 #include <svx/svddrgmt.hxx>
30 class SdrDragMovHdl
: public SdrDragMethod
33 // define nothing, override to do so
34 virtual void createSdrDragEntries() override
;
37 explicit SdrDragMovHdl(SdrDragView
& rNewView
);
39 virtual OUString
GetSdrDragComment() const override
;
40 virtual bool BeginSdrDrag() override
;
41 virtual void MoveSdrDrag(const Point
& rPnt
) override
;
42 virtual bool EndSdrDrag(bool bCopy
) override
;
43 virtual void CancelSdrDrag() override
;
44 virtual PointerStyle
GetSdrDragPointer() const override
;
47 class SdrDragRotate
: public SdrDragMethod
57 explicit SdrDragRotate(SdrDragView
& rNewView
);
59 virtual OUString
GetSdrDragComment() const override
;
60 virtual bool BeginSdrDrag() override
;
61 virtual void MoveSdrDrag(const Point
& rPnt
) override
;
62 virtual bool EndSdrDrag(bool bCopy
) override
;
63 virtual PointerStyle
GetSdrDragPointer() const override
;
65 virtual basegfx::B2DHomMatrix
getCurrentTransformation() const override
;
66 virtual void applyCurrentTransformationToSdrObject(SdrObject
& rTarget
) override
;
69 class SdrDragShear
: public SdrDragMethod
76 bool bVertical
; // contort vertically
77 bool bResize
; // shear and resize
78 bool bUpSideDown
; // mirror and shear/slant
82 SdrDragShear(SdrDragView
& rNewView
,bool bSlant1
);
84 virtual OUString
GetSdrDragComment() const override
;
85 virtual bool BeginSdrDrag() override
;
86 virtual void MoveSdrDrag(const Point
& rPnt
) override
;
87 virtual bool EndSdrDrag(bool bCopy
) override
;
88 virtual PointerStyle
GetSdrDragPointer() const override
;
90 virtual basegfx::B2DHomMatrix
getCurrentTransformation() const override
;
91 virtual void applyCurrentTransformationToSdrObject(SdrObject
& rTarget
) override
;
94 class SdrDragMirror
: public SdrDragMethod
102 bool ImpCheckSide(const Point
& rPnt
) const;
105 explicit SdrDragMirror(SdrDragView
& rNewView
);
107 virtual OUString
GetSdrDragComment() const override
;
108 virtual bool BeginSdrDrag() override
;
109 virtual void MoveSdrDrag(const Point
& rPnt
) override
;
110 virtual bool EndSdrDrag(bool bCopy
) override
;
111 virtual PointerStyle
GetSdrDragPointer() const override
;
113 virtual basegfx::B2DHomMatrix
getCurrentTransformation() const override
;
114 virtual void applyCurrentTransformationToSdrObject(SdrObject
& rTarget
) override
;
117 class SdrDragGradient
: public SdrDragMethod
120 // Handles to work on
121 SdrHdlGradient
* pIAOHandle
;
123 // is this for gradient (or for transparency)?
124 bool bIsGradient
: 1;
127 SdrDragGradient(SdrDragView
& rNewView
, bool bGrad
= true);
129 bool IsGradient() const { return bIsGradient
; }
131 virtual OUString
GetSdrDragComment() const override
;
132 virtual bool BeginSdrDrag() override
;
133 virtual void MoveSdrDrag(const Point
& rPnt
) override
;
134 virtual bool EndSdrDrag(bool bCopy
) override
;
135 virtual PointerStyle
GetSdrDragPointer() const override
;
136 virtual void CancelSdrDrag() override
;
139 class SdrDragCrook
: public SdrDragMethod
142 tools::Rectangle aMarkRect
;
148 bool bContortionAllowed
;
149 bool bNoContortionAllowed
;
163 tools::Long nMarkSize
;
166 // helpers for applyCurrentTransformationToPolyPolygon
167 void MovAllPoints(basegfx::B2DPolyPolygon
& rTarget
);
168 void MovCrookPoint(Point
& rPnt
, Point
* pC1
, Point
* pC2
);
171 // needs to add drag geometry to the default
172 virtual void createSdrDragEntries() override
;
175 explicit SdrDragCrook(SdrDragView
& rNewView
);
177 virtual OUString
GetSdrDragComment() const override
;
178 virtual bool BeginSdrDrag() override
;
179 virtual void MoveSdrDrag(const Point
& rPnt
) override
;
180 virtual bool EndSdrDrag(bool bCopy
) override
;
181 virtual PointerStyle
GetSdrDragPointer() const override
;
183 virtual void applyCurrentTransformationToSdrObject(SdrObject
& rTarget
) override
;
184 virtual void applyCurrentTransformationToPolyPolygon(basegfx::B2DPolyPolygon
& rTarget
) override
;
187 class SdrDragDistort
: public SdrDragMethod
190 tools::Rectangle aMarkRect
;
191 XPolygon aDistortedRect
;
193 bool bContortionAllowed
;
194 bool bNoContortionAllowed
;
197 // helper for applyCurrentTransformationToPolyPolygon
198 void MovAllPoints(basegfx::B2DPolyPolygon
& rTarget
);
201 // needs to add drag geometry to the default
202 virtual void createSdrDragEntries() override
;
205 explicit SdrDragDistort(SdrDragView
& rNewView
);
207 virtual OUString
GetSdrDragComment() const override
;
208 virtual bool BeginSdrDrag() override
;
209 virtual void MoveSdrDrag(const Point
& rPnt
) override
;
210 virtual bool EndSdrDrag(bool bCopy
) override
;
211 virtual PointerStyle
GetSdrDragPointer() const override
;
213 virtual void applyCurrentTransformationToSdrObject(SdrObject
& rTarget
) override
;
214 virtual void applyCurrentTransformationToPolyPolygon(basegfx::B2DPolyPolygon
& rTarget
) override
;
217 // derive from SdrDragObjOwn to have handles aligned to object when it
218 // is sheared or rotated
219 class SdrDragCrop
: public SdrDragObjOwn
222 explicit SdrDragCrop(SdrDragView
& rNewView
);
224 virtual OUString
GetSdrDragComment() const override
;
225 virtual bool BeginSdrDrag() override
;
226 virtual bool EndSdrDrag(bool bCopy
) override
;
227 virtual PointerStyle
GetSdrDragPointer() const override
;
230 #endif // INCLUDED_SVX_SOURCE_SVDRAW_SVDDRGM1_HXX
232 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */