/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
/*
* This file is part of the LibreOffice project .
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License , v . 2 . 0 . If a copy of the MPL was not distributed with this
* file , You can obtain one at http : //mozilla.org/MPL/2.0/.
*
* This file incorporates work covered by the following license notice :
*
* Licensed to the Apache Software Foundation ( ASF ) under one or more
* contributor license agreements . See the NOTICE file distributed
* with this work for additional information regarding copyright
* ownership . The ASF licenses this file to you under the Apache
* License , Version 2 . 0 ( the " License " ) ; you may not use this file
* except in compliance with the License . You may obtain a copy of
* the License at http : //www.apache.org/licenses/LICENSE-2.0 .
*/
#ifndef INCLUDED_SVX_SOURCE_SVDRAW_SVDDRGM1_HXX
#define INCLUDED_SVX_SOURCE_SVDRAW_SVDDRGM1_HXX
#include <svx/xpoly.hxx>
#include <svx/svdhdl.hxx>
#include <svx/svddrgv.hxx>
#include <svx/svddrgmt.hxx>
class SdrDragView;
class SdrDragMovHdl : public SdrDragMethod
{
protected :
// define nothing, override to do so
virtual void createSdrDragEntries() override;
public :
explicit SdrDragMovHdl(SdrDragView& rNewView);
virtual OUString GetSdrDragComment() const override;
virtual bool BeginSdrDrag() override;
virtual void MoveSdrDrag(const Point& rPnt) override;
virtual bool EndSdrDrag(bool bCopy) override;
virtual void CancelSdrDrag() override;
virtual PointerStyle GetSdrDragPointer() const override;
};
class SdrDragRotate : public SdrDragMethod
{
private :
double nSin;
double nCos;
Degree100 nAngle0;
Degree100 nAngle;
bool bRight;
public :
explicit SdrDragRotate(SdrDragView& rNewView);
virtual OUString GetSdrDragComment() const override;
virtual bool BeginSdrDrag() override;
virtual void MoveSdrDrag(const Point& rPnt) override;
virtual bool EndSdrDrag(bool bCopy) override;
virtual PointerStyle GetSdrDragPointer() const override;
virtual basegfx::B2DHomMatrix getCurrentTransformation() const override;
virtual void applyCurrentTransformationToSdrObject(SdrObject& rTarget) override;
};
class SdrDragShear : public SdrDragMethod
{
private :
Fraction aFact;
Degree100 nAngle0;
Degree100 nAngle;
double nTan;
bool bVertical; // contort vertically
bool bResize; // shear and resize
bool bUpSideDown; // mirror and shear/slant
bool bSlant;
public :
SdrDragShear(SdrDragView& rNewView,bool bSlant1);
virtual OUString GetSdrDragComment() const override;
virtual bool BeginSdrDrag() override;
virtual void MoveSdrDrag(const Point& rPnt) override;
virtual bool EndSdrDrag(bool bCopy) override;
virtual PointerStyle GetSdrDragPointer() const override;
virtual basegfx::B2DHomMatrix getCurrentTransformation() const override;
virtual void applyCurrentTransformationToSdrObject(SdrObject& rTarget) override;
};
class SdrDragMirror : public SdrDragMethod
{
private :
Point aDif;
Degree100 nAngle;
bool bMirrored;
bool bSide0;
bool ImpCheckSide(const Point& rPnt) const ;
public :
explicit SdrDragMirror(SdrDragView& rNewView);
virtual OUString GetSdrDragComment() const override;
virtual bool BeginSdrDrag() override;
virtual void MoveSdrDrag(const Point& rPnt) override;
virtual bool EndSdrDrag(bool bCopy) override;
virtual PointerStyle GetSdrDragPointer() const override;
virtual basegfx::B2DHomMatrix getCurrentTransformation() const override;
virtual void applyCurrentTransformationToSdrObject(SdrObject& rTarget) override;
};
class SdrDragGradient : public SdrDragMethod
{
private :
// Handles to work on
SdrHdlGradient* pIAOHandle;
// is this for gradient (or for transparency)?
bool bIsGradient : 1 ;
public :
SdrDragGradient(SdrDragView& rNewView, bool bGrad = true );
bool IsGradient() const { return bIsGradient; }
virtual OUString GetSdrDragComment() const override;
virtual bool BeginSdrDrag() override;
virtual void MoveSdrDrag(const Point& rPnt) override;
virtual bool EndSdrDrag(bool bCopy) override;
virtual PointerStyle GetSdrDragPointer() const override;
virtual void CancelSdrDrag() override;
};
class SdrDragCrook : public SdrDragMethod
{
private :
tools::Rectangle aMarkRect;
Point aMarkCenter;
Point aCenter;
Point aStart;
Fraction aFact;
Point aRad;
bool bContortionAllowed;
bool bNoContortionAllowed;
bool bContortion;
bool bResizeAllowed;
bool bResize;
bool bRotateAllowed;
bool bRotate;
bool bVertical;
bool bValid;
bool bLft;
bool bRgt;
bool bUpr;
bool bLwr;
bool bAtCenter;
Degree100 nAngle;
tools::Long nMarkSize;
SdrCrookMode eMode;
// helpers for applyCurrentTransformationToPolyPolygon
void MovAllPoints(basegfx::B2DPolyPolygon& rTarget);
void MovCrookPoint(Point& rPnt, Point* pC1, Point* pC2);
protected :
// needs to add drag geometry to the default
virtual void createSdrDragEntries() override;
public :
explicit SdrDragCrook(SdrDragView& rNewView);
virtual OUString GetSdrDragComment() const override;
virtual bool BeginSdrDrag() override;
virtual void MoveSdrDrag(const Point& rPnt) override;
virtual bool EndSdrDrag(bool bCopy) override;
virtual PointerStyle GetSdrDragPointer() const override;
virtual void applyCurrentTransformationToSdrObject(SdrObject& rTarget) override;
virtual void applyCurrentTransformationToPolyPolygon(basegfx::B2DPolyPolygon& rTarget) override;
};
class SdrDragDistort : public SdrDragMethod
{
private :
tools::Rectangle aMarkRect;
XPolygon aDistortedRect;
sal_uInt16 nPolyPt;
bool bContortionAllowed;
bool bNoContortionAllowed;
bool bContortion;
// helper for applyCurrentTransformationToPolyPolygon
void MovAllPoints(basegfx::B2DPolyPolygon& rTarget);
protected :
// needs to add drag geometry to the default
virtual void createSdrDragEntries() override;
public :
explicit SdrDragDistort(SdrDragView& rNewView);
virtual OUString GetSdrDragComment() const override;
virtual bool BeginSdrDrag() override;
virtual void MoveSdrDrag(const Point& rPnt) override;
virtual bool EndSdrDrag(bool bCopy) override;
virtual PointerStyle GetSdrDragPointer() const override;
virtual void applyCurrentTransformationToSdrObject(SdrObject& rTarget) override;
virtual void applyCurrentTransformationToPolyPolygon(basegfx::B2DPolyPolygon& rTarget) override;
};
// derive from SdrDragObjOwn to have handles aligned to object when it
// is sheared or rotated
class SdrDragCrop : public SdrDragObjOwn
{
public :
explicit SdrDragCrop(SdrDragView& rNewView);
virtual OUString GetSdrDragComment() const override;
virtual bool BeginSdrDrag() override;
virtual bool EndSdrDrag(bool bCopy) override;
virtual PointerStyle GetSdrDragPointer() const override;
};
#endif // INCLUDED_SVX_SOURCE_SVDRAW_SVDDRGM1_HXX
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
Messung V0.5 in Prozent C=93 H=100 G=96
¤ Dauer der Verarbeitung: 0.12 Sekunden
(vorverarbeitet am 2026-09-28)
¤
*© Formatika GbR, Deutschland