23#include <osl/diagnose.h>
42 const auto [nNum, nDen] = o3tl::getConversionMulDiv(eUnit,
o3tl::Length::in);
52 case MapUnit::MapRelative:
54 case MapUnit::Map100thMM:
57 case MapUnit::Map10thMM:
66 case MapUnit::Map1000thInch:
69 case MapUnit::Map100thInch:
72 case MapUnit::Map10thInch:
75 case MapUnit::MapInch:
78 case MapUnit::MapPoint:
81 case MapUnit::MapTwip:
84 case MapUnit::MapPixel:
90 case MapUnit::MapSysFont:
91 case MapUnit::MapAppFont:
111 OSL_FAIL(
"unhandled MapUnit" );
120 if ( rMapMode.
GetMapUnit() != MapUnit::MapRelative )
130 assert(nNumerator != 0);
134 if ( rnMapOffset >= 0 )
137 aX +=
BigInt(nNumerator / 2);
139 aX -=
BigInt((nNumerator + 1) / 2);
143 if (nNumerator >= 0 )
144 aX -=
BigInt((nNumerator - 1) / 2);
146 aX +=
BigInt(nNumerator / 2);
149 rnMapOffset =
static_cast<tools::Long>(aX) + nOrigin;
152 funcCalcOffset(aScaleX, rMapRes.
mnMapOfsX, aOrigin.
X());
153 funcCalcOffset(aScaleY, rMapRes.
mnMapOfsY, aOrigin.
Y());
195 assert(nMapDenom != 0);
198 assert(nMapNum >= 0);
201 || std::abs(
n) < std::numeric_limits<tools::Long>::max() / nMapNum / nDPI);
210 n64 = 2 * n64 / nMapDenom;
224 assert(nMapDenom != 0);
225 return static_cast<double>(
n) * nMapNum * nDPI / nMapDenom;
232 assert(nMapNum != 0);
234 return std::round(
n * nMapDenom / nMapNum / nDPI);
243 sal_Int64 nDenom = nDPI;
252 n64 = 2 * n64 / nDenom;
386 sal_uInt16 nPoints = rLogicPoly.
GetSize();
394 for (
i = 0;
i < nPoints;
i++ )
396 const Point& rPt = pPointAry[
i];
406 for (
i = 0;
i < nPoints;
i++ )
423 sal_uInt32 nPoints = rLogicPoly.
count();
431 for (sal_uInt32 i = 0;
i < nPoints; ++
i)
439 const bool bC1 = aPoly.isPrevControlPointUsed(i);
450 const bool bC2 = aPoly.isNextControlPointUsed(i);
461 aPoly.setB2DPoint(i, aPt);
464 aPoly.setPrevControlPoint(i, aC1);
467 aPoly.setNextControlPoint(i, aC2);
472 for (sal_uInt32 i = 0;
i < nPoints; ++
i)
477 const bool bC1 = aPoly.isPrevControlPointUsed(i);
485 const bool bC2 = aPoly.isNextControlPointUsed(i);
493 aPoly.setB2DPoint(i, aPt);
496 aPoly.setPrevControlPoint(i, aC1);
499 aPoly.setNextControlPoint(i, aC2);
509 return rLogicPolyPoly;
512 sal_uInt16 nPoly = aPolyPoly.
Count();
513 for( sal_uInt16
i = 0;
i < nPoly;
i++ )
527 if( aInfo.GetDotCount() && aInfo.GetDotLen() )
530 aInfo.SetDotCount( 0 );
532 if( aInfo.GetDashCount() && aInfo.GetDashLen() )
535 aInfo.SetDashCount( 0 );
539 if( ( !aInfo.GetDashCount() && !aInfo.GetDotCount() ) || !aInfo.GetDistance() )
628 bool bRelMap = (rNewMapMode.
GetMapUnit() == MapUnit::MapRelative);
643 bool bOldMap =
mbMap;
664 if ( !bOldMap && bRelMap )
743 if ( eOld > MapUnit::MapPixel )
745 SAL_WARN(
"vcl.gdi",
"Not implemented MapUnit" );
747 else if ( eNew > MapUnit::MapPixel )
749 SAL_WARN(
"vcl.gdi",
"Not implemented MapUnit" );
755 const auto& [mul,
div] = o3tl::getConversionMulDiv(eFrom, eTo);
763 if ( eOld == MapUnit::MapPixel )
768 else if ( eNew == MapUnit::MapPixel )
776 MapMode aNewMapMode( MapUnit::MapRelative,
Point( -aPt.
X(), -aPt.
Y() ), aXF, aYF );
806 mpOutDevData->mpViewTransform->set(0, 0, fScaleFactorX);
807 mpOutDevData->mpViewTransform->set(1, 1, fScaleFactorY);
851 const double fZeroPointX((
static_cast<double>(aMapRes.
mnMapOfsX) * fScaleFactorX) +
static_cast<double>(
mnOutOffOrigX));
852 const double fZeroPointY((
static_cast<double>(aMapRes.
mnMapOfsY) * fScaleFactorY) +
static_cast<double>(
mnOutOffOrigY));
854 aTransform.
set(0, 0, fScaleFactorX);
855 aTransform.
set(1, 1, fScaleFactorY);
856 aTransform.
set(0, 2, fZeroPointX);
857 aTransform.
set(1, 2, fZeroPointY);
876 return aTransformation;
931 sal_uInt16 nPoints = rLogicPoly.
GetSize();
937 for (
i = 0;
i < nPoints;
i++ )
939 const Point* pPt = &(pPointAry[
i]);
955 return rLogicPolyPoly;
958 sal_uInt16 nPoly = aPolyPoly.
Count();
959 for( sal_uInt16
i = 0;
i < nPoly;
i++ )
971 aTransformedPoly.
transform( rTransformationMatrix );
972 return aTransformedPoly;
1000 for(RectangleVector::const_reverse_iterator aRectIter(rRectangles.rbegin()); aRectIter != rRectangles.rend(); ++aRectIter)
1010 const MapMode& rMapMode )
const
1027 const MapMode& rMapMode )
const
1044 const MapMode& rMapMode )
const
1070 const MapMode& rMapMode )
const
1081 sal_uInt16 nPoints = rLogicPoly.
GetSize();
1087 for (
i = 0;
i < nPoints;
i++ )
1089 const Point* pPt = &(pPointAry[
i]);
1102 const MapMode& rMapMode )
const
1106 aTransformedPoly.
transform( rTransformationMatrix );
1107 return aTransformedPoly;
1126 assert(floor(rDevicePt.
getX() == rDevicePt.
getX()) && floor(rDevicePt.
getY() == rDevicePt.
getY()));
1176 sal_uInt16 nPoints = rDevicePoly.
GetSize();
1182 for (
i = 0;
i < nPoints;
i++ )
1184 const Point* pPt = &(pPointAry[
i]);
1200 return rDevicePolyPoly;
1203 sal_uInt16 nPoly = aPolyPoly.
Count();
1204 for( sal_uInt16
i = 0;
i < nPoly;
i++ )
1216 aTransformedPoly.
transform( rTransformationMatrix );
1217 return aTransformedPoly;
1225 return rDeviceRegion;
1245 for(RectangleVector::const_reverse_iterator aRectIter(rRectangles.rbegin()); aRectIter != rRectangles.rend(); ++aRectIter)
1255 const MapMode& rMapMode )
const
1273 const MapMode& rMapMode )
const
1291 const MapMode& rMapMode )
const
1318 const MapMode& rMapMode )
const
1330 sal_uInt16 nPoints = rDevicePoly.
GetSize();
1336 for (
i = 0;
i < nPoints;
i++ )
1338 const Point* pPt = &(pPointAry[
i]);
1351 const MapMode& rMapMode )
const
1355 aTransformedPoly.
transform( rTransformationMatrix );
1356 return aTransformedPoly;
1360 const MapMode& rMapMode )
const
1364 aTransformedPoly.
transform( rTransformationMatrix );
1365 return aTransformedPoly;
1368#define ENTER1( rSource, pMapModeSource, pMapModeDest ) \
1369 if ( !pMapModeSource ) \
1370 pMapModeSource = &maMapMode; \
1371 if ( !pMapModeDest ) \
1372 pMapModeDest = &maMapMode; \
1373 if ( *pMapModeSource == *pMapModeDest ) \
1376 ImplMapRes aMapResSource; \
1377 ImplMapRes aMapResDest; \
1379 if ( !mbMap || pMapModeSource != &maMapMode ) \
1381 if ( pMapModeSource->GetMapUnit() == MapUnit::MapRelative ) \
1382 aMapResSource = maMapRes; \
1383 ImplCalcMapResolution( *pMapModeSource, \
1384 mnDPIX, mnDPIY, aMapResSource ); \
1387 aMapResSource = maMapRes; \
1388 if ( !mbMap || pMapModeDest != &maMapMode ) \
1390 if ( pMapModeDest->GetMapUnit() == MapUnit::MapRelative ) \
1391 aMapResDest = maMapRes; \
1392 ImplCalcMapResolution( *pMapModeDest, \
1393 mnDPIX, mnDPIY, aMapResDest ); \
1396 aMapResDest = maMapRes
1400 DBG_ASSERT( eUnitSource != MapUnit::MapSysFont
1401 && eUnitSource != MapUnit::MapAppFont
1402 && eUnitSource != MapUnit::MapRelative,
1403 "Source MapUnit is not permitted" );
1405 && eUnitDest != MapUnit::MapAppFont
1406 && eUnitDest != MapUnit::MapRelative,
1407 "Destination MapUnit is not permitted" );
1416 if (eMapSrc > MapUnit::MapPixel)
1417 SAL_WARN(
"vcl.gdi",
"Invalid source map unit");
1418 else if (eMapDst > MapUnit::MapPixel)
1419 SAL_WARN(
"vcl.gdi",
"Invalid destination map unit");
1420 else if (eMapSrc != eMapDst)
1426 return std::make_pair(eSrc, eDst);
1429std::pair<ImplMapRes, ImplMapRes> ENTER4(
const MapMode& rMMSource,
const MapMode& rMMDest)
1431 std::pair<ImplMapRes, ImplMapRes>
result;
1445 if (
n1 == 0 ||
n2 == 0 ||
n3 == 0 ||
n4 == 0 ||
n5 == 0 )
1447 if (std::numeric_limits<tools::Long>::max() / std::abs(
n2) < std::abs(
n3))
1454 if (std::numeric_limits<tools::Long>::max() / std::abs(
n4) < std::abs(
n5))
1485 if (std::numeric_limits<tools::Long>::max() / std::abs(
n1) < std::abs(
n6))
1490 if (std::numeric_limits<tools::Long>::max() / std::abs(
n4) < std::abs(
n5))
1521 if (std::numeric_limits<tools::Long>::max() / std::abs(
n4) < std::abs(
n5))
1544 if ((n7 - std::numeric_limits<tools::Long>::min()) >= n8_2)
1547 else if ((std::numeric_limits<tools::Long>::max() - n7) >= n8_2)
1564 const auto& [
n2,
n3] = o3tl::getConversionMulDiv(eFrom, eTo);
1581 const MapMode* pMapModeSource,
1582 const MapMode* pMapModeDest )
const
1584 ENTER1( rPtSource, pMapModeSource, pMapModeDest );
1586 return Point(
fn5( rPtSource.
X() + aMapResSource.mnMapOfsX,
1587 aMapResSource.mnMapScNumX, aMapResDest.mnMapScDenomX,
1588 aMapResSource.mnMapScDenomX, aMapResDest.mnMapScNumX ) -
1589 aMapResDest.mnMapOfsX,
1590 fn5( rPtSource.
Y() + aMapResSource.mnMapOfsY,
1591 aMapResSource.mnMapScNumY, aMapResDest.mnMapScDenomY,
1592 aMapResSource.mnMapScDenomY, aMapResDest.mnMapScNumY ) -
1593 aMapResDest.mnMapOfsY );
1597 const MapMode* pMapModeSource,
1598 const MapMode* pMapModeDest )
const
1600 ENTER1( rSzSource, pMapModeSource, pMapModeDest );
1603 aMapResSource.mnMapScNumX, aMapResDest.mnMapScDenomX,
1604 aMapResSource.mnMapScDenomX, aMapResDest.mnMapScNumX ),
1606 aMapResSource.mnMapScNumY, aMapResDest.mnMapScDenomY,
1607 aMapResSource.mnMapScDenomY, aMapResDest.mnMapScNumY ) );
1611 const MapMode* pMapModeSource,
1612 const MapMode* pMapModeDest )
const
1614 ENTER1( rRectSource, pMapModeSource, pMapModeDest );
1617 aMapResSource.mnMapScNumX, aMapResDest.mnMapScDenomX,
1618 aMapResSource.mnMapScDenomX, aMapResDest.mnMapScNumX ) -
1619 aMapResDest.mnMapOfsX,
1620 fn5( rRectSource.
Top() + aMapResSource.mnMapOfsY,
1621 aMapResSource.mnMapScNumY, aMapResDest.mnMapScDenomY,
1622 aMapResSource.mnMapScDenomY, aMapResDest.mnMapScNumY ) -
1623 aMapResDest.mnMapOfsY,
1624 fn5( rRectSource.
Right() + aMapResSource.mnMapOfsX,
1625 aMapResSource.mnMapScNumX, aMapResDest.mnMapScDenomX,
1626 aMapResSource.mnMapScDenomX, aMapResDest.mnMapScNumX ) -
1627 aMapResDest.mnMapOfsX,
1628 fn5( rRectSource.
Bottom() + aMapResSource.mnMapOfsY,
1629 aMapResSource.mnMapScNumY, aMapResDest.mnMapScDenomY,
1630 aMapResSource.mnMapScDenomY, aMapResDest.mnMapScNumY ) -
1631 aMapResDest.mnMapOfsY );
1635 const MapMode& rMapModeSource,
1638 if ( rMapModeSource == rMapModeDest )
1647 const auto& [eFrom, eTo] = getCorrectedUnit(eUnitSource, eUnitDest);
1648 return Point(
fn3(rPtSource.
X(), eFrom, eTo),
fn3(rPtSource.
Y(), eFrom, eTo));
1652 const auto& [aMapResSource, aMapResDest] = ENTER4( rMapModeSource, rMapModeDest );
1654 return Point(
fn5( rPtSource.
X() + aMapResSource.mnMapOfsX,
1655 aMapResSource.mnMapScNumX, aMapResDest.mnMapScDenomX,
1656 aMapResSource.mnMapScDenomX, aMapResDest.mnMapScNumX ) -
1657 aMapResDest.mnMapOfsX,
1658 fn5( rPtSource.
Y() + aMapResSource.mnMapOfsY,
1659 aMapResSource.mnMapScNumY, aMapResDest.mnMapScDenomY,
1660 aMapResSource.mnMapScDenomY, aMapResDest.mnMapScNumY ) -
1661 aMapResDest.mnMapOfsY );
1666 const MapMode& rMapModeSource,
1669 if ( rMapModeSource == rMapModeDest )
1678 const auto& [eFrom, eTo] = getCorrectedUnit(eUnitSource, eUnitDest);
1683 const auto& [aMapResSource, aMapResDest] = ENTER4( rMapModeSource, rMapModeDest );
1686 aMapResSource.mnMapScNumX, aMapResDest.mnMapScDenomX,
1687 aMapResSource.mnMapScDenomX, aMapResDest.mnMapScNumX ),
1689 aMapResSource.mnMapScNumY, aMapResDest.mnMapScDenomY,
1690 aMapResSource.mnMapScDenomY, aMapResDest.mnMapScNumY ) );
1695 const MapMode& rMapModeSource,
1698 if(rMapModeSource == rMapModeDest)
1714 if(rMapModeSource == rMapModeDest)
1725 const auto& [eFrom, eTo] = getCorrectedUnit(eUnitSource, eUnitDest);
1727 ? std::numeric_limits<double>::quiet_NaN()
1729 aTransform.
set(0, 0, fScaleFactor);
1730 aTransform.
set(1, 1, fScaleFactor);
1734 const auto& [aMapResSource, aMapResDest] = ENTER4(rMapModeSource, rMapModeDest);
1736 const double fScaleFactorX((
double(aMapResSource.mnMapScNumX) *
double(aMapResDest.mnMapScDenomX)) / (
double(aMapResSource.mnMapScDenomX) *
double(aMapResDest.mnMapScNumX)));
1737 const double fScaleFactorY((
double(aMapResSource.mnMapScNumY) *
double(aMapResDest.mnMapScDenomY)) / (
double(aMapResSource.mnMapScDenomY) *
double(aMapResDest.mnMapScNumY)));
1738 const double fZeroPointX(
double(aMapResSource.mnMapOfsX) * fScaleFactorX -
double(aMapResDest.mnMapOfsX));
1739 const double fZeroPointY(
double(aMapResSource.mnMapOfsY) * fScaleFactorY -
double(aMapResDest.mnMapOfsY));
1741 aTransform.
set(0, 0, fScaleFactorX);
1742 aTransform.
set(1, 1, fScaleFactorY);
1743 aTransform.
set(0, 2, fZeroPointX);
1744 aTransform.
set(1, 2, fZeroPointY);
1751 const MapMode& rMapModeSource,
1754 if ( rMapModeSource == rMapModeDest )
1765 const auto& [eFrom, eTo] = getCorrectedUnit(eUnitSource, eUnitDest);
1768 auto top =
fn3(rRectSource.
Top(), eFrom, eTo);
1778 const auto& [aMapResSource, aMapResDest] = ENTER4( rMapModeSource, rMapModeDest );
1780 auto left =
fn5( rRectSource.
Left() + aMapResSource.mnMapOfsX,
1781 aMapResSource.mnMapScNumX, aMapResDest.mnMapScDenomX,
1782 aMapResSource.mnMapScDenomX, aMapResDest.mnMapScNumX ) -
1783 aMapResDest.mnMapOfsX;
1784 auto top =
fn5( rRectSource.
Top() + aMapResSource.mnMapOfsY,
1785 aMapResSource.mnMapScNumY, aMapResDest.mnMapScDenomY,
1786 aMapResSource.mnMapScDenomY, aMapResDest.mnMapScNumY ) -
1787 aMapResDest.mnMapOfsY;
1791 aMapResSource.mnMapScNumX, aMapResDest.mnMapScDenomX,
1792 aMapResSource.mnMapScDenomX, aMapResDest.mnMapScNumX ) -
1793 aMapResDest.mnMapOfsX;
1795 aMapResSource.mnMapScNumY, aMapResDest.mnMapScDenomY,
1796 aMapResSource.mnMapScDenomY, aMapResDest.mnMapScNumY ) -
1797 aMapResDest.mnMapOfsY;
1814 if ( eUnitSource == eUnitDest )
1818 const auto& [eFrom, eTo] = getCorrectedUnit(eUnitSource, eUnitDest);
1819 return fn3(nLongSource, eFrom, eTo);
constexpr o3tl::Length MapToO3tlLength(MapUnit eU, o3tl::Length ePixelValue=o3tl::Length::px)
sal_Int32 GetNumerator() const
static Fraction MakeFraction(tools::Long nN1, tools::Long nN2, tools::Long nD1, tools::Long nD2)
sal_Int32 GetDenominator() const
void SetOrigin(const Point &rOrigin)
void SetScaleY(const Fraction &rScaleY)
const Fraction & GetScaleX() const
MapUnit GetMapUnit() const
const Point & GetOrigin() const
const Fraction & GetScaleY() const
void SetScaleX(const Fraction &rScaleX)
SAL_DLLPRIVATE basegfx::B2DPoint ImplLogicToDeviceSubPixel(const Point &rLogicPt) const
SAL_DLLPRIVATE tools::Long ImplLogicYToDevicePixel(tools::Long nY) const
Convert a logical Y coordinate to a device pixel's Y coordinate.
void EnableMapMode(bool bEnable=true)
basegfx::B2DHomMatrix GetViewTransformation() const
tools::Long mnOutOffY
Output offset for device output in pixel (pseudo window offset within window system's frames)
SAL_DLLPRIVATE tools::Long ImplDevicePixelToLogicHeight(tools::Long nHeight) const
Convert device pixels to a height in logical units.
virtual void SetMetafileMapMode(const MapMode &rNewMapMode, bool bIsRecord)
SAL_DLLPRIVATE tools::Rectangle ImplLogicToDevicePixel(const tools::Rectangle &rLogicRect) const
Convert a logical rectangle to a rectangle in physical device pixel units.
basegfx::B2DHomMatrix GetInverseViewTransformation() const
SAL_DLLPRIVATE double ImplLogicHeightToDeviceSubPixel(tools::Long nHeight) const
tools::Long mnOutOffX
Output offset for device output in pixel (pseudo window offset within window system's frames)
tools::Long mnOutOffLogicX
Additional output offset in logical coordinates, applied in PixelToLogic (used by SetPixelOffset/GetP...
SAL_WARN_UNUSED_RESULT Point PixelToLogic(const Point &rDevicePt) const
std::unique_ptr< ImplOutDevData > mpOutDevData
SAL_DLLPRIVATE tools::Long ImplLogicHeightToDevicePixel(tools::Long nHeight) const
Convert a logical height to a height in units of device pixels.
SAL_WARN_UNUSED_RESULT Point LogicToLogic(const Point &rPtSource, const MapMode *pMapModeSource, const MapMode *pMapModeDest) const
virtual void ImplInitMapModeObjects()
SAL_DLLPRIVATE Point SubPixelToLogic(const basegfx::B2DPoint &rDevicePt) const
SAL_DLLPRIVATE tools::Long ImplLogicWidthToDevicePixel(tools::Long nWidth) const
Convert a logical width to a width in units of device pixels.
void SetPixelOffset(const Size &rOffset)
Set an offset in pixel.
SAL_DLLPRIVATE double ImplLogicWidthToDeviceSubPixel(tools::Long nWidth) const
void SetRelativeMapMode(const MapMode &rNewMapMode)
SAL_WARN_UNUSED_RESULT Point LogicToPixel(const Point &rLogicPt) const
SAL_DLLPRIVATE void ImplInvalidateViewTransform()
Invalidate the view transformation.
SAL_DLLPRIVATE tools::Long ImplDevicePixelToLogicWidth(tools::Long nWidth) const
Convert device pixels to a width in logical units.
SAL_DLLPRIVATE tools::Rectangle ImplDevicePixelToLogic(const tools::Rectangle &rPixelRect) const
Convert a rectangle in physical pixel units to a rectangle in physical pixel units and coords.
tools::Long mnOutOffOrigX
Additional output pixel offset, applied in LogicToPixel (used by SetPixelOffset/GetPixelOffset)
VclPtr< VirtualDevice > mpAlphaVDev
tools::Long mnOutOffOrigY
Additional output pixel offset, applied in LogicToPixel (used by SetPixelOffset/GetPixelOffset)
SAL_DLLPRIVATE basegfx::B2DHomMatrix ImplGetDeviceTransformation() const
Get device transformation.
tools::Long mnOutOffLogicY
Additional output offset in logical coordinates, applied in PixelToLogic (used by SetPixelOffset/GetP...
SAL_DLLPRIVATE vcl::Region ImplPixelToDevicePixel(const vcl::Region &rRegion) const
Convert a region in pixel units to a region in device pixel units and coords.
SAL_DLLPRIVATE tools::Long ImplLogicXToDevicePixel(tools::Long nX) const
Convert a logical X coordinate to a device pixel's X coordinate.
constexpr tools::Long Y() const
void setX(tools::Long nX)
void setY(tools::Long nY)
tools::Long AdjustY(tools::Long nVertMove)
tools::Long AdjustX(tools::Long nHorzMove)
constexpr tools::Long X() const
A construction helper for ScopedVclPtr.
constexpr tools::Long Height() const
constexpr tools::Long Width() const
void set(sal_uInt16 nRow, sal_uInt16 nColumn, double fValue)
void translate(double fX, double fY)
void transform(const basegfx::B2DHomMatrix &rMatrix)
void transform(const basegfx::B2DHomMatrix &rMatrix)
void Move(tools::Long nHorzMove, tools::Long nVertMove)
const RegionBand * getRegionBand() const
const std::optional< basegfx::B2DPolyPolygon > & getB2DPolyPolygon() const
void Union(const tools::Rectangle &rRegion)
void GetRegionRectangles(RectangleVector &rTarget) const
const std::optional< tools::PolyPolygon > & getPolyPolygon() const
static SAL_DLLPRIVATE void ImplInitAppFontData(vcl::Window const *pWindow)
#define DBG_ASSERT(sCon, aError)
#define SAL_WARN(area, stream)
#define ENTER1(rSource, pMapModeSource, pMapModeDest)
static tools::Long ImplSubPixelToLogic(double n, tools::Long nDPI, tools::Long nMapNum, tools::Long nMapDenom)
static tools::Long ImplLogicToPixel(tools::Long n, tools::Long nDPI, tools::Long nMapNum, tools::Long nMapDenom)
static void verifyUnitSourceDest(MapUnit eUnitSource, MapUnit eUnitDest)
static double ImplLogicToSubPixel(tools::Long n, tools::Long nDPI, tools::Long nMapNum, tools::Long nMapDenom)
static tools::Long fn3(const tools::Long n1, const o3tl::Length eFrom, const o3tl::Length eTo)
static tools::Long fn5(const tools::Long n1, const tools::Long n2, const tools::Long n3, const tools::Long n4, const tools::Long n5)
static tools::Long ImplPixelToLogic(tools::Long n, tools::Long nDPI, tools::Long nMapNum, tools::Long nMapDenom)
static void ImplCalcMapResolution(const MapMode &rMapMode, tools::Long nDPIX, tools::Long nDPIY, ImplMapRes &rMapRes)
static auto setMapRes(ImplMapRes &rMapRes, const o3tl::Length eUnit)
constexpr Point convert(const Point &rPoint, o3tl::Length eFrom, o3tl::Length eTo)
double div(const double &fNumerator, const double &fDenominator)
std::vector< tools::Rectangle > RectangleVector
tools::Long mnMapScDenomX
Scaling factor - denominator in X direction.
tools::Long mnMapScDenomY
Scaling factor - denominator in Y direction.
tools::Long mnMapScNumY
Scaling factor - numerator in Y direction.
tools::Long mnMapOfsY
Offset in Y direction.
tools::Long mnMapScNumX
Scaling factor - numerator in X direction.
tools::Long mnMapOfsX
Offset in X direction.
ImplSVFrameData maFrameData
VclPtr< vcl::Window > mpFirstFrame
ImplSVData * ImplGetSVData()