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)
 
SVX_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)
 
SVX_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)
 
SVX_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)
 
SVX_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)
 
SVX_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)
 
SVX_DLLPUBLIC long BigMulDiv (long nVal, long nMul, long nDiv)
 
SVX_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

SVX_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 360 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 161 of file svdtrans.cxx.

References Point::AdjustX(), Point::AdjustY(), FRound(), GetCrookAngle(), RotatePoint(), Point::setX(), Point::setY(), Point::X(), and Point::Y().

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 368 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 376 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 
)
SVX_DLLPUBLIC long GetAngle ( const Point rPnt)
sal_uInt16 GetAngleSector ( long  nAngle)

Normalize angle to 0.00..359.99.

Definition at line 414 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.

References Point::setX(), Point::setY(), Point::X(), and Point::Y().

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 424 of file svdtrans.cxx.

References FRound(), nx, ny, Point::X(), x, y, and Point::Y().

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

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

Definition at line 645 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 137 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 31 of file svdtrans.cxx.

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

Referenced by SdrEdgeObj::NbcMove().

long NormAngle18000 ( long  a)
SVX_DLLPUBLIC long NormAngle36000 ( long  a)
void OrthoDistance4 ( const Point rPt0,
Point rPt,
bool  bBigOrtho 
)
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 63 of file svdtrans.cxx.

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

Referenced by SdrCaptionObj::NbcResize().

SVX_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 71 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(), Point::setX(), Point::setY(), Point::X(), and Point::Y().

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().

SVX_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 95 of file svdtrans.cxx.

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

void ShearPoint ( Point rPnt,
const Point rRef,
double  tn,
bool  bVShear = false 
)
inline
SVX_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 153 of file svdtrans.cxx.

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

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