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