LibreOffice Module svx (master) 1
|
#include <svx/svdtrans.hxx>
#include <math.h>
#include <svx/xpoly.hxx>
#include <rtl/ustrbuf.hxx>
#include <vcl/virdev.hxx>
#include <tools/bigint.hxx>
#include <tools/UnitConversion.hxx>
#include <unotools/syslocale.hxx>
#include <unotools/localedatawrapper.hxx>
#include <sal/log.hxx>
Go to the source code of this file.
Namespaces | |
namespace | svx |
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) |
Degree100 | 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... | |
Degree100 | NormAngle18000 (Degree100 a) |
Degree100 | NormAngle36000 (Degree100 a) |
Normalize angle to -180.00..179.99. More... | |
sal_uInt16 | GetAngleSector (Degree100 nAngle) |
Normalize angle to 0.00..359.99. More... | |
tools::Long | GetLen (const Point &rPnt) |
Determine sector within the cartesian coordinate system. More... | |
tools::Polygon | Rect2Poly (const tools::Rectangle &rRect, const GeoStat &rGeo) |
tools::Rectangle | svx::polygonToRectangle (const tools::Polygon &rPolygon, GeoStat &rGeo) |
void | OrthoDistance8 (const Point &rPt0, Point &rPt, bool bBigOrtho) |
void | OrthoDistance4 (const Point &rPt0, Point &rPt, bool bBigOrtho) |
tools::Long | BigMulDiv (tools::Long nVal, tools::Long nMul, tools::Long nDiv) |
static FrPair | toPair (o3tl::Length eFrom, o3tl::Length eTo) |
static FrPair | GetInchOrMM (MapUnit eU) |
FrPair | GetMapFactor (MapUnit eS, MapUnit eD) |
FrPair | GetMapFactor (FieldUnit eS, FieldUnit eD) |
tools::Long BigMulDiv | ( | tools::Long | nVal, |
tools::Long | nMul, | ||
tools::Long | nDiv | ||
) |
Definition at line 567 of file svdtrans.cxx.
References BigInt::Scale().
Referenced by SdrCircObj::applySpecialDrag(), ImpCaptParams::CalcEscPos(), GetAnglePnt(), SdrFormatter::GetStr(), SdrEdgeObj::ImpCalcEdgeTrack(), SdrMeasureObj::NbcRotate(), and SdrMeasureObj::TakeRepresentation().
Definition at line 292 of file svdtrans.cxx.
References CrookRotateXPoint(), XPolygon::GetPointCount(), i, and XPolygon::IsControl().
Referenced by CrookRotatePoly(), and SdrEditView::ImpCrookObj().
void CrookRotatePoly | ( | XPolyPolygon & | rPoly, |
const Point & | rCenter, | ||
const Point & | rRad, | ||
bool | bVert | ||
) |
Definition at line 362 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.
Definition at line 163 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().
Definition at line 315 of file svdtrans.cxx.
References CrookSlantXPoint(), XPolygon::GetPointCount(), i, and XPolygon::IsControl().
Referenced by CrookSlantPoly(), and SdrEditView::ImpCrookObj().
void CrookSlantPoly | ( | XPolyPolygon & | rPoly, |
const Point & | rCenter, | ||
const Point & | rRad, | ||
bool | bVert | ||
) |
Definition at line 370 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 | ||
) |
Definition at line 217 of file svdtrans.cxx.
References Point::AdjustX(), Point::AdjustY(), GetCrookAngle(), RotatePoint(), Point::setX(), Point::setY(), Point::X(), and Point::Y().
Referenced by CrookSlantPoly(), CrookStretchXPoint(), SdrEditView::ImpCrookObj(), SdrDragCrook::MovAllPoints(), and SdrDragCrook::MovCrookPoint().
void CrookStretchPoly | ( | XPolygon & | rPoly, |
const Point & | rCenter, | ||
const Point & | rRad, | ||
bool | bVert, | ||
const tools::Rectangle & | rRefRect | ||
) |
Definition at line 338 of file svdtrans.cxx.
References CrookStretchXPoint(), XPolygon::GetPointCount(), i, and XPolygon::IsControl().
Referenced by CrookStretchPoly(), and SdrEditView::ImpCrookObj().
void CrookStretchPoly | ( | XPolyPolygon & | rPoly, |
const Point & | rCenter, | ||
const Point & | rRad, | ||
bool | bVert, | ||
const tools::Rectangle & | rRefRect | ||
) |
Definition at line 378 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 | ||
) |
Definition at line 272 of file svdtrans.cxx.
References a, tools::Rectangle::Bottom(), CrookSlantXPoint(), FRound(), Point::setY(), tools::Rectangle::Top(), and Point::Y().
Referenced by CrookStretchPoly(), SdrEditView::ImpCrookObj(), SdrDragCrook::MovAllPoints(), and SdrDragCrook::MovCrookPoint().
The Y axis points down! The function negates the Y axis, when calculating the angle, such that GetAngle(Point(0,-1))=90 deg.
GetAngle(Point(0,0)) returns 0.
Definition at line 387 of file svdtrans.cxx.
References a, FRound(), Point::X(), and Point::Y().
Referenced by SdrCircObj::applySpecialDrag(), E3dDragMethod::BeginSdrDrag(), SdrDragRotate::BeginSdrDrag(), SdrDragShear::BeginSdrDrag(), SdrDragMirror::BeginSdrDrag(), ImpSdrGDIMetaFileImport::DoAction(), SdrMeasureObj::GetRotateAngle(), ImpPathForDragAndCreate::getSpecialDragComment(), SdrMeasureObj::ImpCalcGeometrics(), SdrDragMirror::ImpCheckSide(), SdrMeasureObj::ImpEvalDrag(), SdrPathObj::ImpForceLineAngle(), SdrGluePointList::Mirror(), MirrorPoint(), ImpPathForDragAndCreate::movePathDrag(), E3dDragRotate::MoveSdrDrag(), SdrDragMovHdl::MoveSdrDrag(), SdrDragRotate::MoveSdrDrag(), SdrDragShear::MoveSdrDrag(), SdrDragCrook::MoveSdrDrag(), SdrCircObj::NbcMirror(), svx::polygonToRectangle(), and XFillGradientItem::QueryValue().
sal_uInt16 GetAngleSector | ( | Degree100 | nAngle | ) |
Normalize angle to 0.00..359.99.
Definition at line 416 of file svdtrans.cxx.
References NormAngle36000().
Referenced by SdrDragRotate::MoveSdrDrag().
Definition at line 583 of file svdtrans.cxx.
References o3tl::cm, o3tl::in, o3tl::in10, o3tl::in100, o3tl::in1000, o3tl::mm, o3tl::mm10, o3tl::mm100, o3tl::pt, toPair(), o3tl::twip, Point::X(), and Point::Y().
Referenced by GetMapFactor().
tools::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 418 of file svdtrans.cxx.
References FRound(), nx, ny, x, Point::X(), y, and Point::Y().
Referenced by ImpPathForDragAndCreate::getSpecialDragComment(), SdrMeasureObj::ImpCalcGeometrics(), SdrMeasureObj::NbcRotate(), and SdrMeasureObj::TakeRepresentation().
Definition at line 635 of file svdtrans.cxx.
References FieldToO3tlLength(), o3tl::in, o3tl::invalid, IsInch(), o3tl::mm, and toPair().
Definition at line 618 of file svdtrans.cxx.
References GetInchOrMM(), o3tl::invalid, IsInch(), MapToO3tlLength(), toPair(), FrPair::X(), and FrPair::Y().
Referenced by sdr::properties::DefaultProperties::DefaultProperties(), SdrExchangeView::ImpPasteObject(), SdrExchangeView::Paste(), and SdrMeasureObj::TakeRepresentation().
Definition at line 105 of file svdtrans.cxx.
References a, Point::AdjustX(), Point::AdjustY(), GetAngle(), RotatePoint(), Point::setX(), Point::setY(), toRadians(), Point::X(), and Point::Y().
Referenced by SvxCustomShape::getPosition(), SdrObjGroup::Mirror(), SdrGluePoint::Mirror(), MirrorXPoly(), SdrCircObj::NbcMirror(), SdrEdgeObj::NbcMirror(), SdrObjGroup::NbcMirror(), SdrMeasureObj::NbcMirror(), SdrTextObj::NbcMirror(), and SdrObjCustomShape::TRGetBaseGeometry().
Definition at line 139 of file svdtrans.cxx.
References XPolygon::GetPointCount(), i, MirrorPoint(), and nCount.
Referenced by SdrEdgeObj::NbcMirror().
Definition at line 33 of file svdtrans.cxx.
References XPolygon::Move(), and S.
Referenced by SdrEdgeObj::NbcMove().
Definition at line 401 of file svdtrans.cxx.
References a.
Referenced by SdrDragShear::GetSdrDragComment(), SdrDragRotate::MoveSdrDrag(), SdrDragShear::MoveSdrDrag(), SdrDragCrook::MoveSdrDrag(), and svx::polygonToRectangle().
Normalize angle to -180.00..179.99.
Definition at line 408 of file svdtrans.cxx.
References a.
Referenced by SdrCircObj::applySpecialDrag(), SdrDragMirror::BeginSdrDrag(), SdrGluePoint::EscAngleToDir(), GetAngleSector(), SdrHdl::GetPointer(), SdrDragRotate::GetSdrDragComment(), SdrMeasureObj::ImpCalcGeometrics(), SdrDragMirror::ImpCheckSide(), E3dDragRotate::MoveSdrDrag(), SdrDragMovHdl::MoveSdrDrag(), SdrDragRotate::MoveSdrDrag(), SdrDragShear::MoveSdrDrag(), SdrDragCrook::MoveSdrDrag(), SdrCircObj::NbcMirror(), SdrTextObj::NbcMirror(), SdrCircObj::NbcResize(), SdrTextObj::NbcResize(), SdrTextObj::NbcRotate(), svx::sidebar::PosSizePropertyPanel::NotifyItemUpdate(), svx::polygonToRectangle(), SdrCircObj::SdrCircObj(), SdrGluePoint::SetAlignAngle(), svx::DialControl::SetRotation(), SdrObjCustomShape::TRSetBaseGeometry(), SdrPathObj::TRSetBaseGeometry(), and SdrTextObj::TRSetBaseGeometry().
Definition at line 553 of file svdtrans.cxx.
References Point::setX(), Point::setY(), Point::X(), and Point::Y().
Referenced by SdrCreateView::MovCreateObj(), and SdrDragObjOwn::MoveSdrDrag().
Definition at line 537 of file svdtrans.cxx.
References Point::setX(), Point::setY(), Point::X(), and Point::Y().
Referenced by SdrCreateView::MovCreateObj(), SdrDragMove::MoveSdrDrag(), SdrDragObjOwn::MoveSdrDrag(), SdrDragMovHdl::MoveSdrDrag(), and SdrDragDistort::MoveSdrDrag().
tools::Polygon Rect2Poly | ( | const tools::Rectangle & | rRect, |
const GeoStat & | rGeo | ||
) |
Definition at line 467 of file svdtrans.cxx.
References tools::Rectangle::BottomLeft(), tools::Rectangle::BottomRight(), GeoStat::m_nRotationAngle, GeoStat::m_nShearAngle, GeoStat::mfCosRotationAngle, GeoStat::mfSinRotationAngle, GeoStat::mfTanShearAngle, RotatePoly(), ShearPoly(), tools::Rectangle::TopLeft(), and tools::Rectangle::TopRight().
Referenced by SvxCustomShape::getPosition(), SdrTextObj::NbcMirror(), SdrTextObj::NbcResize(), SdrTextObj::NbcShear(), SdrTextObj::RecalcSnapRect(), and SdrObjCustomShape::TRGetBaseGeometry().
void ResizePoly | ( | tools::Polygon & | rPoly, |
const Point & | rRef, | ||
const Fraction & | xFact, | ||
const Fraction & | yFact | ||
) |
Definition at line 65 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 | ||
) |
Definition at line 38 of file svdtrans.cxx.
References tools::Rectangle::AdjustBottom(), tools::Rectangle::AdjustRight(), tools::Rectangle::Bottom(), FRound(), Fraction::IsValid(), tools::Rectangle::Left(), tools::Rectangle::Normalize(), tools::Rectangle::Right(), SAL_WARN, tools::Rectangle::SetBottom(), tools::Rectangle::SetLeft(), tools::Rectangle::SetRight(), tools::Rectangle::SetTop(), tools::Rectangle::Top(), Point::X(), and Point::Y().
Referenced by E3dScene::NbcResize(), SdrObject::NbcResize(), SdrObjGroup::NbcResize(), sdr::table::SdrTableObj::NbcResize(), SdrTextObj::NbcResize(), SdrExchangeView::Paste(), and SdrObjGroup::Resize().
void ResizeXPoly | ( | XPolygon & | rPoly, |
const Point & | rRef, | ||
const Fraction & | xFact, | ||
const Fraction & | yFact | ||
) |
Definition at line 73 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 | ||
) |
Definition at line 81 of file svdtrans.cxx.
References tools::Polygon::GetSize(), i, nCount, and RotatePoint().
Referenced by SvxGrafAttrHelper::ExecuteGrafAttr(), Rect2Poly(), SdrTextObj::TakeContour(), and SdrTextObj::TakeXorPoly().
Definition at line 89 of file svdtrans.cxx.
References XPolygon::GetPointCount(), i, nCount, and RotatePoint().
Referenced by SdrRectObj::ImpCalcXPoly(), SdrDragCrook::MovAllPoints(), SdrEdgeObj::NbcRotate(), RotateXPoly(), and SdrPathObj::TakeUnrotatedSnapRect().
void RotateXPoly | ( | XPolyPolygon & | rPoly, |
const Point & | rRef, | ||
double | sn, | ||
double | cs | ||
) |
Definition at line 97 of file svdtrans.cxx.
References XPolyPolygon::Count(), i, nCount, and RotateXPoly().
void ShearPoly | ( | tools::Polygon & | rPoly, |
const Point & | rRef, | ||
double | tn | ||
) |
Definition at line 147 of file svdtrans.cxx.
References tools::Polygon::GetSize(), i, nCount, and ShearPoint().
Referenced by SvxGrafAttrHelper::ExecuteGrafAttr(), Rect2Poly(), and SdrTextObj::TakeXorPoly().
Definition at line 155 of file svdtrans.cxx.
References XPolygon::GetPointCount(), i, nCount, and ShearPoint().
Referenced by SdrRectObj::ImpCalcXPoly(), and SdrEdgeObj::NbcShear().
|
static |
Definition at line 574 of file svdtrans.cxx.
Referenced by GetInchOrMM(), and GetMapFactor().