LibreOffice Module svx (master)  1
Classes | Macros | Functions
svdtrans.hxx File Reference
#include <rtl/ustring.hxx>
#include <svx/svxdllapi.h>
#include <tools/fldunit.hxx>
#include <tools/fract.hxx>
#include <tools/gen.hxx>
#include <tools/helpers.hxx>
#include <tools/mapunit.hxx>
#include <tools/poly.hxx>
Include dependency graph for svdtrans.hxx:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

class  GeoStat
 The transformation of a rectangle into a polygon, by using angle parameters from GeoStat. More...
 
class  FrPair
 
class  SdrFormatter
 

Macros

#define SDRMAXSHEAR   8900
 

Functions

void MovePoly (tools::Polygon &rPoly, const Size &S)
 
void MoveXPoly (XPolygon &rPoly, const Size &S)
 
SVXCORE_DLLPUBLIC void ResizeRect (tools::Rectangle &rRect, const Point &rRef, const Fraction &xFact, const Fraction &yFact)
 
void ResizePoint (Point &rPnt, const Point &rRef, const Fraction &xFract, const Fraction &yFract)
 
void ResizePoly (tools::Polygon &rPoly, const Point &rRef, const Fraction &xFact, const Fraction &yFact)
 
void ResizeXPoly (XPolygon &rPoly, const Point &rRef, const Fraction &xFact, const Fraction &yFact)
 
void RotatePoint (Point &rPnt, const Point &rRef, double sn, double cs)
 
SVXCORE_DLLPUBLIC void RotatePoly (tools::Polygon &rPoly, const Point &rRef, double sn, double cs)
 
void RotateXPoly (XPolygon &rPoly, const Point &rRef, double sn, double cs)
 
void RotateXPoly (XPolyPolygon &rPoly, const Point &rRef, double sn, double cs)
 
void MirrorPoint (Point &rPnt, const Point &rRef1, const Point &rRef2)
 
void MirrorXPoly (XPolygon &rPoly, const Point &rRef1, const Point &rRef2)
 
void ShearPoint (Point &rPnt, const Point &rRef, double tn, bool bVShear=false)
 
SVXCORE_DLLPUBLIC void ShearPoly (tools::Polygon &rPoly, const Point &rRef, double tn)
 
void ShearXPoly (XPolygon &rPoly, const Point &rRef, double tn, bool bVShear=false)
 
double GetCrookAngle (Point &rPnt, const Point &rCenter, const Point &rRad, bool bVertical)
 rPnt.X/rPnt.Y is set to rCenter.X or rCenter.Y! We then only need to rotate rPnt by rCenter. More...
 
double CrookRotateXPoint (Point &rPnt, Point *pC1, Point *pC2, const Point &rCenter, const Point &rRad, double &rSin, double &rCos, bool bVert)
 The following methods accept a point of an XPolygon, whereas the neighbouring control points of the actual point are passed in pC1/pC2. More...
 
double CrookSlantXPoint (Point &rPnt, Point *pC1, Point *pC2, const Point &rCenter, const Point &rRad, double &rSin, double &rCos, bool bVert)
 
double CrookStretchXPoint (Point &rPnt, Point *pC1, Point *pC2, const Point &rCenter, const Point &rRad, double &rSin, double &rCos, bool bVert, const tools::Rectangle &rRefRect)
 
void CrookRotatePoly (XPolygon &rPoly, const Point &rCenter, const Point &rRad, bool bVert)
 
void CrookSlantPoly (XPolygon &rPoly, const Point &rCenter, const Point &rRad, bool bVert)
 
void CrookStretchPoly (XPolygon &rPoly, const Point &rCenter, const Point &rRad, bool bVert, const tools::Rectangle &rRefRect)
 
void CrookRotatePoly (XPolyPolygon &rPoly, const Point &rCenter, const Point &rRad, bool bVert)
 
void CrookSlantPoly (XPolyPolygon &rPoly, const Point &rCenter, const Point &rRad, bool bVert)
 
void CrookStretchPoly (XPolyPolygon &rPoly, const Point &rCenter, const Point &rRad, bool bVert, const tools::Rectangle &rRefRect)
 
SVXCORE_DLLPUBLIC long GetAngle (const Point &rPnt)
 The Y axis points down! The function negates the Y axis, when calculating the angle, such that GetAngle(Point(0,-1))=90 deg. More...
 
long NormAngle18000 (long a)
 
SVXCORE_DLLPUBLIC long NormAngle36000 (long a)
 Normalize angle to -180.00..179.99. More...
 
sal_uInt16 GetAngleSector (long nAngle)
 Normalize angle to 0.00..359.99. More...
 
long GetLen (const Point &rPnt)
 Determine sector within the cartesian coordinate system. More...
 
tools::Polygon Rect2Poly (const tools::Rectangle &rRect, const GeoStat &rGeo)
 
void Poly2Rect (const tools::Polygon &rPol, tools::Rectangle &rRect, GeoStat &rGeo)
 
void OrthoDistance8 (const Point &rPt0, Point &rPt, bool bBigOrtho)
 
void OrthoDistance4 (const Point &rPt0, Point &rPt, bool bBigOrtho)
 
SVXCORE_DLLPUBLIC long BigMulDiv (long nVal, long nMul, long nDiv)
 
SVXCORE_DLLPUBLIC FrPair GetMapFactor (MapUnit eS, MapUnit eD)
 
FrPair GetMapFactor (FieldUnit eS, FieldUnit eD)
 
bool IsMetric (MapUnit eU)
 
bool IsInch (MapUnit eU)
 
bool IsMetric (FieldUnit eU)
 
bool IsInch (FieldUnit eU)
 

Macro Definition Documentation

#define SDRMAXSHEAR   8900

Function Documentation

SVXCORE_DLLPUBLIC long BigMulDiv ( long  nVal,
long  nMul,
long  nDiv 
)
void CrookRotatePoly ( XPolygon rPoly,
const Point &  rCenter,
const Point &  rRad,
bool  bVert 
)
void CrookRotatePoly ( XPolyPolygon rPoly,
const Point &  rCenter,
const Point &  rRad,
bool  bVert 
)

Definition at line 361 of file svdtrans.cxx.

References XPolyPolygon::Count(), and CrookRotatePoly().

double CrookRotateXPoint ( Point &  rPnt,
Point *  pC1,
Point *  pC2,
const Point &  rCenter,
const Point &  rRad,
double &  rSin,
double &  rCos,
bool  bVert 
)

The following methods accept a point of an XPolygon, whereas the neighbouring control points of the actual point are passed in pC1/pC2.

Via rSin/rCos, sin(nAngle) and cos(nAngle) are returned.

Returns
the returned angle is in rad

Definition at line 162 of file svdtrans.cxx.

References FRound(), GetCrookAngle(), and RotatePoint().

Referenced by CrookRotatePoly(), SdrEditView::ImpCrookObj(), SdrDragCrook::MovAllPoints(), and SdrDragCrook::MovCrookPoint().

void CrookSlantPoly ( XPolygon rPoly,
const Point &  rCenter,
const Point &  rRad,
bool  bVert 
)
void CrookSlantPoly ( XPolyPolygon rPoly,
const Point &  rCenter,
const Point &  rRad,
bool  bVert 
)

Definition at line 369 of file svdtrans.cxx.

References XPolyPolygon::Count(), and CrookSlantPoly().

double CrookSlantXPoint ( Point &  rPnt,
Point *  pC1,
Point *  pC2,
const Point &  rCenter,
const Point &  rRad,
double &  rSin,
double &  rCos,
bool  bVert 
)
void CrookStretchPoly ( XPolygon rPoly,
const Point &  rCenter,
const Point &  rRad,
bool  bVert,
const tools::Rectangle rRefRect 
)
void CrookStretchPoly ( XPolyPolygon rPoly,
const Point &  rCenter,
const Point &  rRad,
bool  bVert,
const tools::Rectangle rRefRect 
)

Definition at line 377 of file svdtrans.cxx.

References XPolyPolygon::Count(), and CrookStretchPoly().

double CrookStretchXPoint ( Point &  rPnt,
Point *  pC1,
Point *  pC2,
const Point &  rCenter,
const Point &  rRad,
double &  rSin,
double &  rCos,
bool  bVert,
const tools::Rectangle rRefRect 
)
SVXCORE_DLLPUBLIC long GetAngle ( const Point &  rPnt)
sal_uInt16 GetAngleSector ( long  nAngle)

Normalize angle to 0.00..359.99.

Definition at line 415 of file svdtrans.cxx.

Referenced by SdrDragRotate::MoveSdrDrag().

double GetCrookAngle ( Point &  rPnt,
const Point &  rCenter,
const Point &  rRad,
bool  bVertical 
)
inline

rPnt.X/rPnt.Y is set to rCenter.X or rCenter.Y! We then only need to rotate rPnt by rCenter.

Returns
the returned angle is in rad

Definition at line 135 of file svdtrans.hxx.

Referenced by CrookRotateXPoint(), and CrookSlantXPoint().

long GetLen ( const Point &  rPnt)

Determine sector within the cartesian coordinate system.

Calculates the length of (0,0) via a^2 + b^2 = c^2 In order to avoid overflows, we ignore some decimal places.

Definition at line 425 of file svdtrans.cxx.

References FRound(), nx, ny, x, and y.

Referenced by ImpPathForDragAndCreate::getSpecialDragComment(), SdrMeasureObj::ImpCalcGeometrics(), SdrMeasureObj::NbcRotate(), and SdrMeasureObj::TakeRepresentation().

SVXCORE_DLLPUBLIC FrPair GetMapFactor ( MapUnit  eS,
MapUnit  eD 
)
FrPair GetMapFactor ( FieldUnit  eS,
FieldUnit  eD 
)

Definition at line 646 of file svdtrans.cxx.

References GetInchOrMM(), IsInch(), FrPair::X(), and FrPair::Y().

bool IsInch ( MapUnit  eU)
inline

Definition at line 259 of file svdtrans.hxx.

Referenced by GetMapFactor(), and SdrModel::ImpSetUIUnit().

bool IsInch ( FieldUnit  eU)
inline

Definition at line 269 of file svdtrans.hxx.

bool IsMetric ( MapUnit  eU)
inline
bool IsMetric ( FieldUnit  eU)
inline

Definition at line 264 of file svdtrans.hxx.

void MirrorPoint ( Point &  rPnt,
const Point &  rRef1,
const Point &  rRef2 
)
void MirrorXPoly ( XPolygon rPoly,
const Point &  rRef1,
const Point &  rRef2 
)

Definition at line 138 of file svdtrans.cxx.

References XPolygon::GetPointCount(), i, MirrorPoint(), and nCount.

Referenced by SdrEdgeObj::NbcMirror().

void MovePoly ( tools::Polygon rPoly,
const Size S 
)
inline

Definition at line 51 of file svdtrans.hxx.

References Size::Height(), tools::Polygon::Move(), and Size::Width().

Referenced by SdrCaptionObj::NbcMove().

void MoveXPoly ( XPolygon rPoly,
const Size S 
)

Definition at line 32 of file svdtrans.cxx.

References Size::Height(), XPolygon::Move(), and Size::Width().

Referenced by SdrEdgeObj::NbcMove().

long NormAngle18000 ( long  a)
SVXCORE_DLLPUBLIC long NormAngle36000 ( long  a)
void OrthoDistance4 ( const Point &  rPt0,
Point &  rPt,
bool  bBigOrtho 
)

Definition at line 545 of file svdtrans.cxx.

Referenced by SdrCreateView::MovCreateObj(), and SdrDragObjOwn::MoveSdrDrag().

void OrthoDistance8 ( const Point &  rPt0,
Point &  rPt,
bool  bBigOrtho 
)
void Poly2Rect ( const tools::Polygon rPol,
tools::Rectangle rRect,
GeoStat rGeo 
)
tools::Polygon Rect2Poly ( const tools::Rectangle rRect,
const GeoStat rGeo 
)
void ResizePoint ( Point &  rPnt,
const Point &  rRef,
const Fraction xFract,
const Fraction yFract 
)
inline
void ResizePoly ( tools::Polygon rPoly,
const Point &  rRef,
const Fraction xFact,
const Fraction yFact 
)

Definition at line 64 of file svdtrans.cxx.

References tools::Polygon::GetSize(), i, nCount, and ResizePoint().

Referenced by SdrCaptionObj::NbcResize().

SVXCORE_DLLPUBLIC void ResizeRect ( tools::Rectangle rRect,
const Point &  rRef,
const Fraction xFact,
const Fraction yFact 
)
void ResizeXPoly ( XPolygon rPoly,
const Point &  rRef,
const Fraction xFact,
const Fraction yFact 
)

Definition at line 72 of file svdtrans.cxx.

References XPolygon::GetPointCount(), i, nCount, and ResizePoint().

Referenced by SdrEdgeObj::NbcResize().

void RotatePoint ( Point &  rPnt,
const Point &  rRef,
double  sn,
double  cs 
)
inline

Definition at line 114 of file svdtrans.hxx.

References FRound().

Referenced by SdrRectObj::AddToHdlList(), SdrCircObj::AddToHdlList(), SdrTextObj::AddToHdlList(), SdrObjCustomShape::AdjustTextFrameWidthAndHeight(), SdrTextObj::AdjustTextFrameWidthAndHeight(), SdrRectObj::applySpecialDrag(), SdrCircObj::applySpecialDrag(), SdrTextObj::applySpecialDrag(), EnhancedCustomShape3d::Create3DObject(), CrookRotateXPoint(), CrookSlantXPoint(), SdrObjCustomShape::DragResizeCustomShape(), SvxGrafAttrHelper::ExecuteGrafAttr(), SdrRectObj::GetCornerGluePoint(), EnhancedCustomShape2d::GetHandlePosition(), SvxIMapInfo::GetHitIMapObject(), SdrTextObj::GetSnapPoint(), SdrRectObj::getSpecialDragComment(), SdrRectObj::GetVertexGluePoint(), SdrObjCustomShape::GetVertexGluePoint(), SdrMeasureObj::ImpCalcGeometrics(), SdrObjCustomShape::ImpCheckCustomGluePointsAreAdded(), SdrTextObj::ImpDragCalcRect(), SdrMeasureObj::ImpEvalDrag(), ImpRotate(), MirrorPoint(), SdrDragMovHdl::MoveSdrDrag(), SdrCircObj::NbcMirror(), SdrObjGroup::NbcRotate(), SdrMeasureObj::NbcRotate(), SdrEdgeObj::NbcRotate(), SdrTextObj::NbcRotate(), Poly2Rect(), SdrObjGroup::Rotate(), SdrGluePoint::Rotate(), RotatePoly(), RotateXPoly(), EnhancedCustomShape2d::SetHandleControllerPosition(), SdrObjCustomShape::TakeTextAnchorRect(), SdrTextObj::TakeTextAnchorRect(), SdrObjCustomShape::TakeTextEditArea(), SdrTextObj::TakeTextEditArea(), SdrObjCustomShape::TakeTextRect(), SdrTextObj::TakeTextRect(), SdrPathObj::TakeUnrotatedSnapRect(), SdrMeasureObj::TakeUnrotatedSnapRect(), SdrRectObj::TakeUnrotatedSnapRect(), and SdrCircObj::TakeUnrotatedSnapRect().

SVXCORE_DLLPUBLIC void RotatePoly ( tools::Polygon rPoly,
const Point &  rRef,
double  sn,
double  cs 
)
void RotateXPoly ( XPolygon rPoly,
const Point &  rRef,
double  sn,
double  cs 
)
void RotateXPoly ( XPolyPolygon rPoly,
const Point &  rRef,
double  sn,
double  cs 
)

Definition at line 96 of file svdtrans.cxx.

References XPolyPolygon::Count(), i, nCount, and RotateXPoly().

void ShearPoint ( Point &  rPnt,
const Point &  rRef,
double  tn,
bool  bVShear = false 
)
inline
SVXCORE_DLLPUBLIC void ShearPoly ( tools::Polygon rPoly,
const Point &  rRef,
double  tn 
)
void ShearXPoly ( XPolygon rPoly,
const Point &  rRef,
double  tn,
bool  bVShear = false 
)

Definition at line 154 of file svdtrans.cxx.

References XPolygon::GetPointCount(), i, nCount, and ShearPoint().

Referenced by SdrRectObj::ImpCalcXPoly(), and SdrEdgeObj::NbcShear().