LibreOffice Module svx (master)  1
Functions
svdtrans.cxx File Reference
#include <svx/svdtrans.hxx>
#include <math.h>
#include <svx/xpoly.hxx>
#include <vcl/virdev.hxx>
#include <tools/bigint.hxx>
#include <unotools/syslocale.hxx>
#include <unotools/localedatawrapper.hxx>
#include <sal/log.hxx>
Include dependency graph for svdtrans.cxx:

Go to the source code of this file.

Functions

void MoveXPoly (XPolygon &rPoly, const Size &S)
 
void ResizeRect (tools::Rectangle &rRect, const Point &rRef, const Fraction &rxFact, const Fraction &ryFact)
 
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 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 ShearPoly (tools::Polygon &rPoly, const Point &rRef, double tn)
 
void ShearXPoly (XPolygon &rPoly, const Point &rRef, double tn, bool bVShear)
 
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)
 
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)
 
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)
 
long BigMulDiv (long nVal, long nMul, long nDiv)
 
static FrPair GetInchOrMM (MapUnit eU)
 
static FrPair GetInchOrMM (FieldUnit eU)
 
FrPair GetMapFactor (MapUnit eS, MapUnit eD)
 
FrPair GetMapFactor (FieldUnit eS, FieldUnit eD)
 
static void GetMeterOrInch (MapUnit eMU, short &rnComma, long &rnMul, long &rnDiv, bool &rbMetr, bool &rbInch)
 

Function Documentation

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

static FrPair GetInchOrMM ( MapUnit  eU)
static

Definition at line 578 of file svdtrans.cxx.

References Point.

Referenced by GetMapFactor().

static FrPair GetInchOrMM ( FieldUnit  eU)
static

Definition at line 610 of file svdtrans.cxx.

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, x, and y.

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

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

static void GetMeterOrInch ( MapUnit  eMU,
short &  rnComma,
long &  rnMul,
long &  rnDiv,
bool &  rbMetr,
bool &  rbInch 
)
static

Definition at line 666 of file svdtrans.cxx.

Referenced by SdrFormatter::Undirty().

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 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)
long NormAngle36000 ( long  a)
void OrthoDistance4 ( const Point &  rPt0,
Point &  rPt,
bool  bBigOrtho 
)

Definition at line 544 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 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().

void ResizeRect ( tools::Rectangle rRect,
const Point &  rRef,
const Fraction rxFact,
const Fraction ryFact 
)
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 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 ShearPoly ( tools::Polygon rPoly,
const Point &  rRef,
double  tn 
)
void ShearXPoly ( XPolygon rPoly,
const Point &  rRef,
double  tn,
bool  bVShear 
)

Definition at line 153 of file svdtrans.cxx.

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

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