1*b1cdbd2cSJim Jagielski /************************************************************** 2*b1cdbd2cSJim Jagielski * 3*b1cdbd2cSJim Jagielski * Licensed to the Apache Software Foundation (ASF) under one 4*b1cdbd2cSJim Jagielski * or more contributor license agreements. See the NOTICE file 5*b1cdbd2cSJim Jagielski * distributed with this work for additional information 6*b1cdbd2cSJim Jagielski * regarding copyright ownership. The ASF licenses this file 7*b1cdbd2cSJim Jagielski * to you under the Apache License, Version 2.0 (the 8*b1cdbd2cSJim Jagielski * "License"); you may not use this file except in compliance 9*b1cdbd2cSJim Jagielski * with the License. You may obtain a copy of the License at 10*b1cdbd2cSJim Jagielski * 11*b1cdbd2cSJim Jagielski * http://www.apache.org/licenses/LICENSE-2.0 12*b1cdbd2cSJim Jagielski * 13*b1cdbd2cSJim Jagielski * Unless required by applicable law or agreed to in writing, 14*b1cdbd2cSJim Jagielski * software distributed under the License is distributed on an 15*b1cdbd2cSJim Jagielski * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16*b1cdbd2cSJim Jagielski * KIND, either express or implied. See the License for the 17*b1cdbd2cSJim Jagielski * specific language governing permissions and limitations 18*b1cdbd2cSJim Jagielski * under the License. 19*b1cdbd2cSJim Jagielski * 20*b1cdbd2cSJim Jagielski *************************************************************/ 21*b1cdbd2cSJim Jagielski 22*b1cdbd2cSJim Jagielski 23*b1cdbd2cSJim Jagielski 24*b1cdbd2cSJim Jagielski #ifndef _SVDDRGM1_HXX 25*b1cdbd2cSJim Jagielski #define _SVDDRGM1_HXX 26*b1cdbd2cSJim Jagielski 27*b1cdbd2cSJim Jagielski #include <svx/xpoly.hxx> 28*b1cdbd2cSJim Jagielski #include <svx/svdhdl.hxx> 29*b1cdbd2cSJim Jagielski #include <svx/svddrgv.hxx> 30*b1cdbd2cSJim Jagielski #include <svx/svddrgmt.hxx> 31*b1cdbd2cSJim Jagielski 32*b1cdbd2cSJim Jagielski //////////////////////////////////////////////////////////////////////////////////////////////////// 33*b1cdbd2cSJim Jagielski // predeclarations 34*b1cdbd2cSJim Jagielski 35*b1cdbd2cSJim Jagielski class SdrDragView; 36*b1cdbd2cSJim Jagielski class SdrDragStat; 37*b1cdbd2cSJim Jagielski 38*b1cdbd2cSJim Jagielski //////////////////////////////////////////////////////////////////////////////////////////////////// 39*b1cdbd2cSJim Jagielski // SdrDragMovHdl 40*b1cdbd2cSJim Jagielski 41*b1cdbd2cSJim Jagielski class SdrDragMovHdl : public SdrDragMethod 42*b1cdbd2cSJim Jagielski { 43*b1cdbd2cSJim Jagielski private: 44*b1cdbd2cSJim Jagielski bool bMirrObjShown; 45*b1cdbd2cSJim Jagielski 46*b1cdbd2cSJim Jagielski protected: 47*b1cdbd2cSJim Jagielski // define nothing, overload to do so 48*b1cdbd2cSJim Jagielski virtual void createSdrDragEntries(); 49*b1cdbd2cSJim Jagielski 50*b1cdbd2cSJim Jagielski public: 51*b1cdbd2cSJim Jagielski TYPEINFO(); 52*b1cdbd2cSJim Jagielski SdrDragMovHdl(SdrDragView& rNewView); 53*b1cdbd2cSJim Jagielski 54*b1cdbd2cSJim Jagielski virtual void TakeSdrDragComment(String& rStr) const; 55*b1cdbd2cSJim Jagielski virtual bool BeginSdrDrag(); 56*b1cdbd2cSJim Jagielski virtual void MoveSdrDrag(const Point& rPnt); 57*b1cdbd2cSJim Jagielski virtual bool EndSdrDrag(bool bCopy); 58*b1cdbd2cSJim Jagielski virtual void CancelSdrDrag(); 59*b1cdbd2cSJim Jagielski virtual Pointer GetSdrDragPointer() const; 60*b1cdbd2cSJim Jagielski }; 61*b1cdbd2cSJim Jagielski 62*b1cdbd2cSJim Jagielski //////////////////////////////////////////////////////////////////////////////////////////////////// 63*b1cdbd2cSJim Jagielski // SdrDragRotate 64*b1cdbd2cSJim Jagielski 65*b1cdbd2cSJim Jagielski class SdrDragRotate : public SdrDragMethod 66*b1cdbd2cSJim Jagielski { 67*b1cdbd2cSJim Jagielski private: 68*b1cdbd2cSJim Jagielski double nSin; 69*b1cdbd2cSJim Jagielski double nCos; 70*b1cdbd2cSJim Jagielski long nWink0; 71*b1cdbd2cSJim Jagielski long nWink; 72*b1cdbd2cSJim Jagielski bool bRight; 73*b1cdbd2cSJim Jagielski 74*b1cdbd2cSJim Jagielski public: 75*b1cdbd2cSJim Jagielski TYPEINFO(); 76*b1cdbd2cSJim Jagielski SdrDragRotate(SdrDragView& rNewView); 77*b1cdbd2cSJim Jagielski 78*b1cdbd2cSJim Jagielski virtual void TakeSdrDragComment(String& rStr) const; 79*b1cdbd2cSJim Jagielski virtual bool BeginSdrDrag(); 80*b1cdbd2cSJim Jagielski virtual void MoveSdrDrag(const Point& rPnt); 81*b1cdbd2cSJim Jagielski virtual bool EndSdrDrag(bool bCopy); 82*b1cdbd2cSJim Jagielski virtual Pointer GetSdrDragPointer() const; 83*b1cdbd2cSJim Jagielski 84*b1cdbd2cSJim Jagielski virtual basegfx::B2DHomMatrix getCurrentTransformation(); 85*b1cdbd2cSJim Jagielski virtual void applyCurrentTransformationToSdrObject(SdrObject& rTarget); 86*b1cdbd2cSJim Jagielski }; 87*b1cdbd2cSJim Jagielski 88*b1cdbd2cSJim Jagielski //////////////////////////////////////////////////////////////////////////////////////////////////// 89*b1cdbd2cSJim Jagielski // SdrDragShear 90*b1cdbd2cSJim Jagielski 91*b1cdbd2cSJim Jagielski class SdrDragShear : public SdrDragMethod 92*b1cdbd2cSJim Jagielski { 93*b1cdbd2cSJim Jagielski private: 94*b1cdbd2cSJim Jagielski Fraction aFact; 95*b1cdbd2cSJim Jagielski long nWink0; 96*b1cdbd2cSJim Jagielski long nWink; 97*b1cdbd2cSJim Jagielski double nTan; 98*b1cdbd2cSJim Jagielski bool bVertical; // Vertikales verzerren 99*b1cdbd2cSJim Jagielski bool bResize; // Shear mit Resize 100*b1cdbd2cSJim Jagielski bool bUpSideDown; // Beim Shear/Slant gespiegelt 101*b1cdbd2cSJim Jagielski bool bSlant; 102*b1cdbd2cSJim Jagielski 103*b1cdbd2cSJim Jagielski public: 104*b1cdbd2cSJim Jagielski TYPEINFO(); 105*b1cdbd2cSJim Jagielski SdrDragShear(SdrDragView& rNewView,bool bSlant1); 106*b1cdbd2cSJim Jagielski 107*b1cdbd2cSJim Jagielski virtual void TakeSdrDragComment(String& rStr) const; 108*b1cdbd2cSJim Jagielski virtual bool BeginSdrDrag(); 109*b1cdbd2cSJim Jagielski virtual void MoveSdrDrag(const Point& rPnt); 110*b1cdbd2cSJim Jagielski virtual bool EndSdrDrag(bool bCopy); 111*b1cdbd2cSJim Jagielski virtual Pointer GetSdrDragPointer() const; 112*b1cdbd2cSJim Jagielski 113*b1cdbd2cSJim Jagielski virtual basegfx::B2DHomMatrix getCurrentTransformation(); 114*b1cdbd2cSJim Jagielski virtual void applyCurrentTransformationToSdrObject(SdrObject& rTarget); 115*b1cdbd2cSJim Jagielski }; 116*b1cdbd2cSJim Jagielski 117*b1cdbd2cSJim Jagielski //////////////////////////////////////////////////////////////////////////////////////////////////// 118*b1cdbd2cSJim Jagielski // SdrDragMirror 119*b1cdbd2cSJim Jagielski 120*b1cdbd2cSJim Jagielski class SdrDragMirror : public SdrDragMethod 121*b1cdbd2cSJim Jagielski { 122*b1cdbd2cSJim Jagielski private: 123*b1cdbd2cSJim Jagielski Point aDif; 124*b1cdbd2cSJim Jagielski long nWink; 125*b1cdbd2cSJim Jagielski bool bMirrored; 126*b1cdbd2cSJim Jagielski bool bSide0; 127*b1cdbd2cSJim Jagielski 128*b1cdbd2cSJim Jagielski bool ImpCheckSide(const Point& rPnt) const; 129*b1cdbd2cSJim Jagielski 130*b1cdbd2cSJim Jagielski public: 131*b1cdbd2cSJim Jagielski TYPEINFO(); 132*b1cdbd2cSJim Jagielski SdrDragMirror(SdrDragView& rNewView); 133*b1cdbd2cSJim Jagielski 134*b1cdbd2cSJim Jagielski virtual void TakeSdrDragComment(String& rStr) const; 135*b1cdbd2cSJim Jagielski virtual bool BeginSdrDrag(); 136*b1cdbd2cSJim Jagielski virtual void MoveSdrDrag(const Point& rPnt); 137*b1cdbd2cSJim Jagielski virtual bool EndSdrDrag(bool bCopy); 138*b1cdbd2cSJim Jagielski virtual Pointer GetSdrDragPointer() const; 139*b1cdbd2cSJim Jagielski 140*b1cdbd2cSJim Jagielski virtual basegfx::B2DHomMatrix getCurrentTransformation(); 141*b1cdbd2cSJim Jagielski virtual void applyCurrentTransformationToSdrObject(SdrObject& rTarget); 142*b1cdbd2cSJim Jagielski }; 143*b1cdbd2cSJim Jagielski 144*b1cdbd2cSJim Jagielski //////////////////////////////////////////////////////////////////////////////////////////////////// 145*b1cdbd2cSJim Jagielski // SdrDragGradient 146*b1cdbd2cSJim Jagielski 147*b1cdbd2cSJim Jagielski class SdrDragGradient : public SdrDragMethod 148*b1cdbd2cSJim Jagielski { 149*b1cdbd2cSJim Jagielski private: 150*b1cdbd2cSJim Jagielski // Handles to work on 151*b1cdbd2cSJim Jagielski SdrHdlGradient* pIAOHandle; 152*b1cdbd2cSJim Jagielski 153*b1cdbd2cSJim Jagielski // is this for gradient (or for transparence) ? 154*b1cdbd2cSJim Jagielski unsigned bIsGradient : 1; 155*b1cdbd2cSJim Jagielski 156*b1cdbd2cSJim Jagielski public: 157*b1cdbd2cSJim Jagielski TYPEINFO(); 158*b1cdbd2cSJim Jagielski SdrDragGradient(SdrDragView& rNewView, bool bGrad = true); 159*b1cdbd2cSJim Jagielski IsGradient() const160*b1cdbd2cSJim Jagielski bool IsGradient() const { return bIsGradient; } 161*b1cdbd2cSJim Jagielski 162*b1cdbd2cSJim Jagielski virtual void TakeSdrDragComment(String& rStr) const; 163*b1cdbd2cSJim Jagielski virtual bool BeginSdrDrag(); 164*b1cdbd2cSJim Jagielski virtual void MoveSdrDrag(const Point& rPnt); 165*b1cdbd2cSJim Jagielski virtual bool EndSdrDrag(bool bCopy); 166*b1cdbd2cSJim Jagielski virtual Pointer GetSdrDragPointer() const; 167*b1cdbd2cSJim Jagielski virtual void CancelSdrDrag(); 168*b1cdbd2cSJim Jagielski }; 169*b1cdbd2cSJim Jagielski 170*b1cdbd2cSJim Jagielski //////////////////////////////////////////////////////////////////////////////////////////////////// 171*b1cdbd2cSJim Jagielski // SdrDragCrook 172*b1cdbd2cSJim Jagielski 173*b1cdbd2cSJim Jagielski class SdrDragCrook : public SdrDragMethod 174*b1cdbd2cSJim Jagielski { 175*b1cdbd2cSJim Jagielski private: 176*b1cdbd2cSJim Jagielski Rectangle aMarkRect; 177*b1cdbd2cSJim Jagielski Point aMarkCenter; 178*b1cdbd2cSJim Jagielski Point aCenter; 179*b1cdbd2cSJim Jagielski Point aStart; 180*b1cdbd2cSJim Jagielski Fraction aFact; 181*b1cdbd2cSJim Jagielski Point aRad; 182*b1cdbd2cSJim Jagielski bool bContortionAllowed; 183*b1cdbd2cSJim Jagielski bool bNoContortionAllowed; 184*b1cdbd2cSJim Jagielski bool bContortion; 185*b1cdbd2cSJim Jagielski bool bResizeAllowed; 186*b1cdbd2cSJim Jagielski bool bResize; 187*b1cdbd2cSJim Jagielski bool bRotateAllowed; 188*b1cdbd2cSJim Jagielski bool bRotate; 189*b1cdbd2cSJim Jagielski bool bVertical; 190*b1cdbd2cSJim Jagielski bool bValid; 191*b1cdbd2cSJim Jagielski bool bLft; 192*b1cdbd2cSJim Jagielski bool bRgt; 193*b1cdbd2cSJim Jagielski bool bUpr; 194*b1cdbd2cSJim Jagielski bool bLwr; 195*b1cdbd2cSJim Jagielski bool bAtCenter; 196*b1cdbd2cSJim Jagielski long nWink; 197*b1cdbd2cSJim Jagielski long nMarkSize; 198*b1cdbd2cSJim Jagielski SdrCrookMode eMode; 199*b1cdbd2cSJim Jagielski 200*b1cdbd2cSJim Jagielski // helpers for applyCurrentTransformationToPolyPolygon 201*b1cdbd2cSJim Jagielski void _MovAllPoints(basegfx::B2DPolyPolygon& rTarget); 202*b1cdbd2cSJim Jagielski void _MovCrookPoint(Point& rPnt, Point* pC1, Point* pC2); 203*b1cdbd2cSJim Jagielski 204*b1cdbd2cSJim Jagielski protected: 205*b1cdbd2cSJim Jagielski // needs to add drag geometry to the default 206*b1cdbd2cSJim Jagielski virtual void createSdrDragEntries(); 207*b1cdbd2cSJim Jagielski 208*b1cdbd2cSJim Jagielski public: 209*b1cdbd2cSJim Jagielski TYPEINFO(); 210*b1cdbd2cSJim Jagielski SdrDragCrook(SdrDragView& rNewView); 211*b1cdbd2cSJim Jagielski 212*b1cdbd2cSJim Jagielski virtual void TakeSdrDragComment(String& rStr) const; 213*b1cdbd2cSJim Jagielski virtual bool BeginSdrDrag(); 214*b1cdbd2cSJim Jagielski virtual void MoveSdrDrag(const Point& rPnt); 215*b1cdbd2cSJim Jagielski virtual bool EndSdrDrag(bool bCopy); 216*b1cdbd2cSJim Jagielski virtual Pointer GetSdrDragPointer() const; 217*b1cdbd2cSJim Jagielski 218*b1cdbd2cSJim Jagielski virtual void applyCurrentTransformationToSdrObject(SdrObject& rTarget); 219*b1cdbd2cSJim Jagielski virtual void applyCurrentTransformationToPolyPolygon(basegfx::B2DPolyPolygon& rTarget); 220*b1cdbd2cSJim Jagielski }; 221*b1cdbd2cSJim Jagielski 222*b1cdbd2cSJim Jagielski //////////////////////////////////////////////////////////////////////////////////////////////////// 223*b1cdbd2cSJim Jagielski // SdrDragDistort 224*b1cdbd2cSJim Jagielski 225*b1cdbd2cSJim Jagielski class SdrDragDistort : public SdrDragMethod 226*b1cdbd2cSJim Jagielski { 227*b1cdbd2cSJim Jagielski private: 228*b1cdbd2cSJim Jagielski Rectangle aMarkRect; 229*b1cdbd2cSJim Jagielski XPolygon aDistortedRect; 230*b1cdbd2cSJim Jagielski sal_uInt16 nPolyPt; 231*b1cdbd2cSJim Jagielski bool bContortionAllowed; 232*b1cdbd2cSJim Jagielski bool bNoContortionAllowed; 233*b1cdbd2cSJim Jagielski bool bContortion; 234*b1cdbd2cSJim Jagielski 235*b1cdbd2cSJim Jagielski // helper for applyCurrentTransformationToPolyPolygon 236*b1cdbd2cSJim Jagielski void _MovAllPoints(basegfx::B2DPolyPolygon& rTarget); 237*b1cdbd2cSJim Jagielski 238*b1cdbd2cSJim Jagielski protected: 239*b1cdbd2cSJim Jagielski // needs to add drag geometry to the default 240*b1cdbd2cSJim Jagielski virtual void createSdrDragEntries(); 241*b1cdbd2cSJim Jagielski 242*b1cdbd2cSJim Jagielski public: 243*b1cdbd2cSJim Jagielski TYPEINFO(); 244*b1cdbd2cSJim Jagielski SdrDragDistort(SdrDragView& rNewView); 245*b1cdbd2cSJim Jagielski 246*b1cdbd2cSJim Jagielski virtual void TakeSdrDragComment(String& rStr) const; 247*b1cdbd2cSJim Jagielski virtual bool BeginSdrDrag(); 248*b1cdbd2cSJim Jagielski virtual void MoveSdrDrag(const Point& rPnt); 249*b1cdbd2cSJim Jagielski virtual bool EndSdrDrag(bool bCopy); 250*b1cdbd2cSJim Jagielski virtual Pointer GetSdrDragPointer() const; 251*b1cdbd2cSJim Jagielski 252*b1cdbd2cSJim Jagielski virtual void applyCurrentTransformationToSdrObject(SdrObject& rTarget); 253*b1cdbd2cSJim Jagielski virtual void applyCurrentTransformationToPolyPolygon(basegfx::B2DPolyPolygon& rTarget); 254*b1cdbd2cSJim Jagielski }; 255*b1cdbd2cSJim Jagielski 256*b1cdbd2cSJim Jagielski //////////////////////////////////////////////////////////////////////////////////////////////////// 257*b1cdbd2cSJim Jagielski // SdrDragCrop 258*b1cdbd2cSJim Jagielski 259*b1cdbd2cSJim Jagielski // derive from SdrDragObjOwn to have handles aligned to object when it 260*b1cdbd2cSJim Jagielski // is sheared or rotated 261*b1cdbd2cSJim Jagielski class SdrDragCrop : public SdrDragObjOwn 262*b1cdbd2cSJim Jagielski { 263*b1cdbd2cSJim Jagielski public: 264*b1cdbd2cSJim Jagielski TYPEINFO(); 265*b1cdbd2cSJim Jagielski SdrDragCrop(SdrDragView& rNewView); 266*b1cdbd2cSJim Jagielski 267*b1cdbd2cSJim Jagielski virtual void TakeSdrDragComment(String& rStr) const; 268*b1cdbd2cSJim Jagielski virtual bool BeginSdrDrag(); 269*b1cdbd2cSJim Jagielski virtual bool EndSdrDrag(bool bCopy); 270*b1cdbd2cSJim Jagielski virtual Pointer GetSdrDragPointer() const; 271*b1cdbd2cSJim Jagielski }; 272*b1cdbd2cSJim Jagielski 273*b1cdbd2cSJim Jagielski //////////////////////////////////////////////////////////////////////////////////////////////////// 274*b1cdbd2cSJim Jagielski #endif //_SVDDRGM1_HXX 275*b1cdbd2cSJim Jagielski 276*b1cdbd2cSJim Jagielski // eof 277