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

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, Point::X(), x, y, and Point::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 
)
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().