Fraction->double in ImplMapRes
Change-Id: Ic391d65eae0d971b5dedf98bd88ae1a1a551988d Reviewed-on: https://gerrit.libreoffice.org/c/core/+/202327 Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk> Tested-by: Jenkins
This commit is contained in:
committed by
Noel Grandin
parent
31820f4fbc
commit
e8702e6a5d
@@ -27,10 +27,8 @@ struct ImplMapRes
|
||||
|
||||
tools::Long mnMapOfsX = 0; ///< Offset in X direction
|
||||
tools::Long mnMapOfsY = 0; ///< Offset in Y direction
|
||||
tools::Long mnMapScNumX = 1; ///< Scaling factor - numerator in X direction
|
||||
tools::Long mnMapScNumY = 1; ///< Scaling factor - numerator in Y direction
|
||||
tools::Long mnMapScDenomX = 1; ///< Scaling factor - denominator in X direction
|
||||
tools::Long mnMapScDenomY = 1; ///< Scaling factor - denominator in Y direction
|
||||
double mfMapScX = 1; ///< Scaling factor in X direction
|
||||
double mfMapScY = 1; ///< Scaling factor in Y direction
|
||||
};
|
||||
|
||||
/* vim:set shiftwidth=4 softtabstop=4 expandtab cinoptions=b1,g0,N-s cinkeys+=0=break: */
|
||||
|
||||
@@ -829,11 +829,9 @@ bool OutputDevice::ImplNewFont() const
|
||||
|
||||
bool OutputDevice::AttemptOLEFontScaleFix(vcl::Font& rFont, tools::Long nHeight) const
|
||||
{
|
||||
const float fDenominator = static_cast<float>(maMapRes.mnMapScNumY) * maMapRes.mnMapScDenomX;
|
||||
if (fDenominator == 0.0)
|
||||
if (maMapRes.mfMapScY == 0.0)
|
||||
return false;
|
||||
const float fNumerator = static_cast<float>(maMapRes.mnMapScNumX) * maMapRes.mnMapScDenomY;
|
||||
const float fStretch = fNumerator / fDenominator;
|
||||
const double fStretch = maMapRes.mfMapScX / maMapRes.mfMapScY;
|
||||
const int nOrigWidth = mpFontInstance->mxFontMetric->GetWidth();
|
||||
const int nNewWidth = static_cast<int>(nOrigWidth * fStretch + 0.5);
|
||||
|
||||
|
||||
+138
-314
@@ -41,8 +41,7 @@
|
||||
static auto setMapRes(ImplMapRes& rMapRes, const o3tl::Length eUnit)
|
||||
{
|
||||
const auto [nNum, nDen] = o3tl::getConversionMulDiv(eUnit, o3tl::Length::in);
|
||||
rMapRes.mnMapScNumX = rMapRes.mnMapScNumY = nNum;
|
||||
rMapRes.mnMapScDenomX = rMapRes.mnMapScDenomY = nDen;
|
||||
rMapRes.mfMapScX = rMapRes.mfMapScY = double(nNum) / nDen;
|
||||
};
|
||||
|
||||
static void ImplCalcMapResolution( const MapMode& rMapMode,
|
||||
@@ -83,10 +82,8 @@ static void ImplCalcMapResolution( const MapMode& rMapMode,
|
||||
setMapRes(rMapRes, o3tl::Length::twip);
|
||||
break;
|
||||
case MapUnit::MapPixel:
|
||||
rMapRes.mnMapScNumX = 1;
|
||||
rMapRes.mnMapScDenomX = nDPIX;
|
||||
rMapRes.mnMapScNumY = 1;
|
||||
rMapRes.mnMapScDenomY = nDPIY;
|
||||
rMapRes.mfMapScX = 1.0 / nDPIX;
|
||||
rMapRes.mfMapScY = 1.0 / nDPIY;
|
||||
break;
|
||||
case MapUnit::MapSysFont:
|
||||
case MapUnit::MapAppFont:
|
||||
@@ -102,10 +99,8 @@ static void ImplCalcMapResolution( const MapMode& rMapMode,
|
||||
vcl::Window::ImplInitAppFontData( pWin );
|
||||
}
|
||||
}
|
||||
rMapRes.mnMapScNumX = pSVData->maGDIData.mnAppFontX;
|
||||
rMapRes.mnMapScDenomX = nDPIX * 40;
|
||||
rMapRes.mnMapScNumY = pSVData->maGDIData.mnAppFontY;
|
||||
rMapRes.mnMapScDenomY = nDPIY * 80;
|
||||
rMapRes.mfMapScX = double(pSVData->maGDIData.mnAppFontX) / (nDPIX * 40);
|
||||
rMapRes.mfMapScY = double(pSVData->maGDIData.mnAppFontY) / (nDPIY * 80);
|
||||
}
|
||||
break;
|
||||
default:
|
||||
@@ -156,18 +151,8 @@ static void ImplCalcMapResolution( const MapMode& rMapMode,
|
||||
|
||||
// calculate scaling factor according to MapMode
|
||||
// aTemp? = rMapRes.mnMapSc? * aScale?
|
||||
Fraction aTempX = Fraction::MakeFraction( rMapRes.mnMapScNumX,
|
||||
aScaleX.GetNumerator(),
|
||||
rMapRes.mnMapScDenomX,
|
||||
aScaleX.GetDenominator() );
|
||||
Fraction aTempY = Fraction::MakeFraction( rMapRes.mnMapScNumY,
|
||||
aScaleY.GetNumerator(),
|
||||
rMapRes.mnMapScDenomY,
|
||||
aScaleY.GetDenominator() );
|
||||
rMapRes.mnMapScNumX = aTempX.GetNumerator();
|
||||
rMapRes.mnMapScDenomX = aTempX.GetDenominator();
|
||||
rMapRes.mnMapScNumY = aTempY.GetNumerator();
|
||||
rMapRes.mnMapScDenomY = aTempY.GetDenominator();
|
||||
rMapRes.mfMapScX = double(aScaleX) * rMapRes.mfMapScX;
|
||||
rMapRes.mfMapScY = double(aScaleY) * rMapRes.mfMapScY;
|
||||
}
|
||||
|
||||
// #i75163#
|
||||
@@ -189,88 +174,46 @@ void OutputDevice::ImplInvalidateViewTransform()
|
||||
}
|
||||
}
|
||||
|
||||
static tools::Long ImplLogicToPixel(tools::Long n, tools::Long nDPI, tools::Long nMapNum,
|
||||
tools::Long nMapDenom)
|
||||
static tools::Long ImplLogicToPixel(tools::Long n, tools::Long nDPI, double fMap)
|
||||
{
|
||||
assert(nDPI > 0);
|
||||
assert(nMapDenom != 0);
|
||||
if constexpr (sizeof(tools::Long) >= 8)
|
||||
{
|
||||
assert(nMapNum >= 0);
|
||||
//detect overflows
|
||||
assert(nMapNum == 0
|
||||
|| std::abs(n) < std::numeric_limits<tools::Long>::max() / nMapNum / nDPI);
|
||||
}
|
||||
sal_Int64 n64 = n;
|
||||
n64 *= nMapNum;
|
||||
n64 *= nDPI;
|
||||
if (nMapDenom == 1)
|
||||
n = static_cast<tools::Long>(n64);
|
||||
else
|
||||
{
|
||||
n64 = 2 * n64 / nMapDenom;
|
||||
if (n64 < 0)
|
||||
--n64;
|
||||
else
|
||||
++n64;
|
||||
n = static_cast<tools::Long>(n64 / 2);
|
||||
}
|
||||
return n;
|
||||
assert(fMap >= 0);
|
||||
double nRes = n * fMap * nDPI;
|
||||
//detect overflows
|
||||
assert(std::abs(nRes) < static_cast<double>(std::numeric_limits<tools::Long>::max()));
|
||||
return std::llround(nRes);
|
||||
}
|
||||
|
||||
static double ImplLogicToSubPixel(tools::Long n, tools::Long nDPI, tools::Long nMapNum,
|
||||
tools::Long nMapDenom)
|
||||
static double ImplLogicToSubPixel(tools::Long n, tools::Long nDPI, double fMap)
|
||||
{
|
||||
assert(nDPI > 0);
|
||||
assert(nMapDenom != 0);
|
||||
return static_cast<double>(n) * nMapNum * nDPI / nMapDenom;
|
||||
assert(fMap != 0);
|
||||
return n * fMap * nDPI;
|
||||
}
|
||||
|
||||
static tools::Long ImplSubPixelToLogic(double n, tools::Long nDPI, tools::Long nMapNum,
|
||||
tools::Long nMapDenom)
|
||||
static tools::Long ImplSubPixelToLogic(double n, tools::Long nDPI, double fMap)
|
||||
{
|
||||
assert(nDPI > 0);
|
||||
assert(nMapNum != 0);
|
||||
assert(fMap != 0);
|
||||
|
||||
return std::round(n * nMapDenom / nMapNum / nDPI);
|
||||
return std::llround(n / fMap / nDPI);
|
||||
}
|
||||
|
||||
static tools::Long ImplPixelToLogic(tools::Long n, tools::Long nDPI, tools::Long nMapNum,
|
||||
tools::Long nMapDenom)
|
||||
static tools::Long ImplPixelToLogic(tools::Long n, tools::Long nDPI, double fMap)
|
||||
{
|
||||
assert(nDPI > 0);
|
||||
if (nMapNum == 0)
|
||||
return 0;
|
||||
sal_Int64 nDenom = nDPI;
|
||||
nDenom *= nMapNum;
|
||||
|
||||
sal_Int64 n64 = n;
|
||||
n64 *= nMapDenom;
|
||||
if (nDenom == 1)
|
||||
n = static_cast<tools::Long>(n64);
|
||||
else
|
||||
{
|
||||
n64 = 2 * n64 / nDenom;
|
||||
if (n64 < 0)
|
||||
--n64;
|
||||
else
|
||||
++n64;
|
||||
n = static_cast<tools::Long>(n64 / 2);
|
||||
}
|
||||
return n;
|
||||
}
|
||||
|
||||
static double ImplPixelToLogicDouble(double n, tools::Long nDPI, tools::Long nMapNum,
|
||||
tools::Long nMapDenom)
|
||||
{
|
||||
assert(nDPI > 0);
|
||||
if (nMapNum == 0)
|
||||
if (fMap == 0)
|
||||
return 0;
|
||||
|
||||
n *= nMapDenom;
|
||||
n /= nDPI;
|
||||
n /= nMapNum;
|
||||
return n;
|
||||
return std::llround(n / fMap / nDPI);
|
||||
}
|
||||
|
||||
static double ImplPixelToLogicDouble(double n, tools::Long nDPI, double fMap)
|
||||
{
|
||||
assert(nDPI > 0);
|
||||
if (fMap == 0)
|
||||
return 0;
|
||||
return n / fMap / nDPI;
|
||||
}
|
||||
|
||||
tools::Long OutputDevice::ImplLogicXToDevicePixel( tools::Long nX ) const
|
||||
@@ -279,7 +222,7 @@ tools::Long OutputDevice::ImplLogicXToDevicePixel( tools::Long nX ) const
|
||||
return nX+mnOutOffX;
|
||||
|
||||
return ImplLogicToPixel( nX + maMapRes.mnMapOfsX, mnDPIX,
|
||||
maMapRes.mnMapScNumX, maMapRes.mnMapScDenomX )+mnOutOffX+mnOutOffOrigX;
|
||||
maMapRes.mfMapScX )+mnOutOffX+mnOutOffOrigX;
|
||||
}
|
||||
|
||||
tools::Long OutputDevice::ImplLogicYToDevicePixel( tools::Long nY ) const
|
||||
@@ -288,7 +231,7 @@ tools::Long OutputDevice::ImplLogicYToDevicePixel( tools::Long nY ) const
|
||||
return nY+mnOutOffY;
|
||||
|
||||
return ImplLogicToPixel( nY + maMapRes.mnMapOfsY, mnDPIY,
|
||||
maMapRes.mnMapScNumY, maMapRes.mnMapScDenomY )+mnOutOffY+mnOutOffOrigY;
|
||||
maMapRes.mfMapScY )+mnOutOffY+mnOutOffOrigY;
|
||||
}
|
||||
|
||||
tools::Long OutputDevice::ImplLogicWidthToDevicePixel( tools::Long nWidth ) const
|
||||
@@ -296,7 +239,7 @@ tools::Long OutputDevice::ImplLogicWidthToDevicePixel( tools::Long nWidth ) cons
|
||||
if ( !mbMap )
|
||||
return nWidth;
|
||||
|
||||
return ImplLogicToPixel(nWidth, mnDPIX, maMapRes.mnMapScNumX, maMapRes.mnMapScDenomX);
|
||||
return ImplLogicToPixel(nWidth, mnDPIX, maMapRes.mfMapScX);
|
||||
}
|
||||
|
||||
tools::Long OutputDevice::ImplLogicHeightToDevicePixel( tools::Long nHeight ) const
|
||||
@@ -304,7 +247,7 @@ tools::Long OutputDevice::ImplLogicHeightToDevicePixel( tools::Long nHeight ) co
|
||||
if ( !mbMap )
|
||||
return nHeight;
|
||||
|
||||
return ImplLogicToPixel(nHeight, mnDPIY, maMapRes.mnMapScNumY, maMapRes.mnMapScDenomY);
|
||||
return ImplLogicToPixel(nHeight, mnDPIY, maMapRes.mfMapScY);
|
||||
}
|
||||
|
||||
tools::Long OutputDevice::ImplDevicePixelToLogicWidth( tools::Long nWidth ) const
|
||||
@@ -312,7 +255,7 @@ tools::Long OutputDevice::ImplDevicePixelToLogicWidth( tools::Long nWidth ) cons
|
||||
if ( !mbMap )
|
||||
return nWidth;
|
||||
|
||||
return ImplPixelToLogic(nWidth, mnDPIX, maMapRes.mnMapScNumX, maMapRes.mnMapScDenomX);
|
||||
return ImplPixelToLogic(nWidth, mnDPIX, maMapRes.mfMapScX);
|
||||
}
|
||||
|
||||
SAL_DLLPRIVATE double OutputDevice::ImplDevicePixelToLogicWidthDouble(double nWidth) const
|
||||
@@ -320,7 +263,7 @@ SAL_DLLPRIVATE double OutputDevice::ImplDevicePixelToLogicWidthDouble(double nWi
|
||||
if (!mbMap)
|
||||
return nWidth;
|
||||
|
||||
return ImplPixelToLogicDouble(nWidth, mnDPIX, maMapRes.mnMapScNumX, maMapRes.mnMapScDenomX);
|
||||
return ImplPixelToLogicDouble(nWidth, mnDPIX, maMapRes.mfMapScX);
|
||||
}
|
||||
|
||||
tools::Long OutputDevice::ImplDevicePixelToLogicHeight( tools::Long nHeight ) const
|
||||
@@ -328,7 +271,7 @@ tools::Long OutputDevice::ImplDevicePixelToLogicHeight( tools::Long nHeight ) co
|
||||
if ( !mbMap )
|
||||
return nHeight;
|
||||
|
||||
return ImplPixelToLogic(nHeight, mnDPIY, maMapRes.mnMapScNumY, maMapRes.mnMapScDenomY);
|
||||
return ImplPixelToLogic(nHeight, mnDPIY, maMapRes.mfMapScY);
|
||||
}
|
||||
|
||||
double OutputDevice::ImplDevicePixelToLogicHeightDouble(double nHeight) const
|
||||
@@ -336,7 +279,7 @@ double OutputDevice::ImplDevicePixelToLogicHeightDouble(double nHeight) const
|
||||
if (!mbMap)
|
||||
return nHeight;
|
||||
|
||||
return ImplPixelToLogicDouble(nHeight, mnDPIY, maMapRes.mnMapScNumY, maMapRes.mnMapScDenomY);
|
||||
return ImplPixelToLogicDouble(nHeight, mnDPIY, maMapRes.mfMapScY);
|
||||
}
|
||||
|
||||
Point OutputDevice::ImplLogicToDevicePixel( const Point& rLogicPt ) const
|
||||
@@ -345,9 +288,9 @@ Point OutputDevice::ImplLogicToDevicePixel( const Point& rLogicPt ) const
|
||||
return Point( rLogicPt.X()+mnOutOffX, rLogicPt.Y()+mnOutOffY );
|
||||
|
||||
return Point( ImplLogicToPixel( rLogicPt.X() + maMapRes.mnMapOfsX, mnDPIX,
|
||||
maMapRes.mnMapScNumX, maMapRes.mnMapScDenomX )+mnOutOffX+mnOutOffOrigX,
|
||||
maMapRes.mfMapScX )+mnOutOffX+mnOutOffOrigX,
|
||||
ImplLogicToPixel( rLogicPt.Y() + maMapRes.mnMapOfsY, mnDPIY,
|
||||
maMapRes.mnMapScNumY, maMapRes.mnMapScDenomY )+mnOutOffY+mnOutOffOrigY );
|
||||
maMapRes.mfMapScY )+mnOutOffY+mnOutOffOrigY );
|
||||
}
|
||||
|
||||
Size OutputDevice::ImplLogicToDevicePixel( const Size& rLogicSize ) const
|
||||
@@ -356,9 +299,9 @@ Size OutputDevice::ImplLogicToDevicePixel( const Size& rLogicSize ) const
|
||||
return rLogicSize;
|
||||
|
||||
return Size( ImplLogicToPixel( rLogicSize.Width(), mnDPIX,
|
||||
maMapRes.mnMapScNumX, maMapRes.mnMapScDenomX ),
|
||||
maMapRes.mfMapScX ),
|
||||
ImplLogicToPixel( rLogicSize.Height(), mnDPIY,
|
||||
maMapRes.mnMapScNumY, maMapRes.mnMapScDenomY ) );
|
||||
maMapRes.mfMapScY ) );
|
||||
}
|
||||
|
||||
tools::Rectangle OutputDevice::ImplLogicToDevicePixel( const tools::Rectangle& rLogicRect ) const
|
||||
@@ -392,10 +335,10 @@ tools::Rectangle OutputDevice::ImplLogicToDevicePixel( const tools::Rectangle& r
|
||||
else
|
||||
{
|
||||
aRetval = tools::Rectangle(
|
||||
ImplLogicToPixel( rLogicRect.Left()+maMapRes.mnMapOfsX, mnDPIX, maMapRes.mnMapScNumX, maMapRes.mnMapScDenomX )+mnOutOffX+mnOutOffOrigX,
|
||||
ImplLogicToPixel( rLogicRect.Top()+maMapRes.mnMapOfsY, mnDPIY, maMapRes.mnMapScNumY, maMapRes.mnMapScDenomY )+mnOutOffY+mnOutOffOrigY,
|
||||
rLogicRect.IsWidthEmpty() ? 0 : ImplLogicToPixel( rLogicRect.Right()+maMapRes.mnMapOfsX, mnDPIX, maMapRes.mnMapScNumX, maMapRes.mnMapScDenomX )+mnOutOffX+mnOutOffOrigX,
|
||||
rLogicRect.IsHeightEmpty() ? 0 : ImplLogicToPixel( rLogicRect.Bottom()+maMapRes.mnMapOfsY, mnDPIY, maMapRes.mnMapScNumY, maMapRes.mnMapScDenomY )+mnOutOffY+mnOutOffOrigY );
|
||||
ImplLogicToPixel( rLogicRect.Left()+maMapRes.mnMapOfsX, mnDPIX, maMapRes.mfMapScX )+mnOutOffX+mnOutOffOrigX,
|
||||
ImplLogicToPixel( rLogicRect.Top()+maMapRes.mnMapOfsY, mnDPIY, maMapRes.mfMapScY )+mnOutOffY+mnOutOffOrigY,
|
||||
rLogicRect.IsWidthEmpty() ? 0 : ImplLogicToPixel( rLogicRect.Right()+maMapRes.mnMapOfsX, mnDPIX, maMapRes.mfMapScX )+mnOutOffX+mnOutOffOrigX,
|
||||
rLogicRect.IsHeightEmpty() ? 0 : ImplLogicToPixel( rLogicRect.Bottom()+maMapRes.mnMapOfsY, mnDPIY, maMapRes.mfMapScY )+mnOutOffY+mnOutOffOrigY );
|
||||
}
|
||||
|
||||
if(rLogicRect.IsWidthEmpty())
|
||||
@@ -425,9 +368,9 @@ tools::Polygon OutputDevice::ImplLogicToDevicePixel( const tools::Polygon& rLogi
|
||||
{
|
||||
const Point& rPt = pPointAry[i];
|
||||
Point aPt(ImplLogicToPixel( rPt.X()+maMapRes.mnMapOfsX, mnDPIX,
|
||||
maMapRes.mnMapScNumX, maMapRes.mnMapScDenomX )+mnOutOffX+mnOutOffOrigX,
|
||||
maMapRes.mfMapScX )+mnOutOffX+mnOutOffOrigX,
|
||||
ImplLogicToPixel( rPt.Y()+maMapRes.mnMapOfsY, mnDPIY,
|
||||
maMapRes.mnMapScNumY, maMapRes.mnMapScDenomY )+mnOutOffY+mnOutOffOrigY);
|
||||
maMapRes.mfMapScY )+mnOutOffY+mnOutOffOrigY);
|
||||
aPoly[i] = aPt;
|
||||
}
|
||||
}
|
||||
@@ -462,9 +405,9 @@ basegfx::B2DPolygon OutputDevice::ImplLogicToDevicePixel(const basegfx::B2DPolyg
|
||||
{
|
||||
const basegfx::B2DPoint& rPt = aPoly.getB2DPoint(i);
|
||||
basegfx::B2DPoint aPt(ImplLogicToPixel( rPt.getX()+maMapRes.mnMapOfsX, mnDPIX,
|
||||
maMapRes.mnMapScNumX, maMapRes.mnMapScDenomX )+mnOutOffX+mnOutOffOrigX,
|
||||
maMapRes.mfMapScX )+mnOutOffX+mnOutOffOrigX,
|
||||
ImplLogicToPixel( rPt.getY()+maMapRes.mnMapOfsY, mnDPIY,
|
||||
maMapRes.mnMapScNumY, maMapRes.mnMapScDenomY )+mnOutOffY+mnOutOffOrigY);
|
||||
maMapRes.mfMapScY )+mnOutOffY+mnOutOffOrigY);
|
||||
|
||||
const bool bC1 = aPoly.isPrevControlPointUsed(i);
|
||||
if (bC1)
|
||||
@@ -472,9 +415,9 @@ basegfx::B2DPolygon OutputDevice::ImplLogicToDevicePixel(const basegfx::B2DPolyg
|
||||
const basegfx::B2DPoint aB2DC1(aPoly.getPrevControlPoint(i));
|
||||
|
||||
aC1 = basegfx::B2DPoint(ImplLogicToPixel( aB2DC1.getX()+maMapRes.mnMapOfsX, mnDPIX,
|
||||
maMapRes.mnMapScNumX, maMapRes.mnMapScDenomX )+mnOutOffX+mnOutOffOrigX,
|
||||
maMapRes.mfMapScX )+mnOutOffX+mnOutOffOrigX,
|
||||
ImplLogicToPixel( aB2DC1.getY()+maMapRes.mnMapOfsY, mnDPIY,
|
||||
maMapRes.mnMapScNumY, maMapRes.mnMapScDenomY )+mnOutOffY+mnOutOffOrigY);
|
||||
maMapRes.mfMapScY )+mnOutOffY+mnOutOffOrigY);
|
||||
}
|
||||
|
||||
const bool bC2 = aPoly.isNextControlPointUsed(i);
|
||||
@@ -483,9 +426,9 @@ basegfx::B2DPolygon OutputDevice::ImplLogicToDevicePixel(const basegfx::B2DPolyg
|
||||
const basegfx::B2DPoint aB2DC2(aPoly.getNextControlPoint(i));
|
||||
|
||||
aC2 = basegfx::B2DPoint(ImplLogicToPixel( aB2DC2.getX()+maMapRes.mnMapOfsX, mnDPIX,
|
||||
maMapRes.mnMapScNumX, maMapRes.mnMapScDenomX )+mnOutOffX+mnOutOffOrigX,
|
||||
maMapRes.mfMapScX )+mnOutOffX+mnOutOffOrigX,
|
||||
ImplLogicToPixel( aB2DC2.getY()+maMapRes.mnMapOfsY, mnDPIY,
|
||||
maMapRes.mnMapScNumY, maMapRes.mnMapScDenomY )+mnOutOffY+mnOutOffOrigY);
|
||||
maMapRes.mfMapScY )+mnOutOffY+mnOutOffOrigY);
|
||||
}
|
||||
|
||||
aPoly.setB2DPoint(i, aPt);
|
||||
@@ -591,10 +534,10 @@ tools::Rectangle OutputDevice::ImplDevicePixelToLogic( const tools::Rectangle& r
|
||||
else
|
||||
{
|
||||
aRetval = tools::Rectangle(
|
||||
ImplPixelToLogic( rPixelRect.Left()-mnOutOffX-mnOutOffOrigX, mnDPIX, maMapRes.mnMapScNumX, maMapRes.mnMapScDenomX )-maMapRes.mnMapOfsX,
|
||||
ImplPixelToLogic( rPixelRect.Top()-mnOutOffY-mnOutOffOrigY, mnDPIY, maMapRes.mnMapScNumY, maMapRes.mnMapScDenomY )-maMapRes.mnMapOfsY,
|
||||
rPixelRect.IsWidthEmpty() ? 0 : ImplPixelToLogic( rPixelRect.Right()-mnOutOffX-mnOutOffOrigX, mnDPIX, maMapRes.mnMapScNumX, maMapRes.mnMapScDenomX )-maMapRes.mnMapOfsX,
|
||||
rPixelRect.IsHeightEmpty() ? 0 : ImplPixelToLogic( rPixelRect.Bottom()-mnOutOffY-mnOutOffOrigY, mnDPIY, maMapRes.mnMapScNumY, maMapRes.mnMapScDenomY )-maMapRes.mnMapOfsY );
|
||||
ImplPixelToLogic( rPixelRect.Left()-mnOutOffX-mnOutOffOrigX, mnDPIX, maMapRes.mfMapScX )-maMapRes.mnMapOfsX,
|
||||
ImplPixelToLogic( rPixelRect.Top()-mnOutOffY-mnOutOffOrigY, mnDPIY, maMapRes.mfMapScY )-maMapRes.mnMapOfsY,
|
||||
rPixelRect.IsWidthEmpty() ? 0 : ImplPixelToLogic( rPixelRect.Right()-mnOutOffX-mnOutOffOrigX, mnDPIX, maMapRes.mfMapScX )-maMapRes.mnMapOfsX,
|
||||
rPixelRect.IsHeightEmpty() ? 0 : ImplPixelToLogic( rPixelRect.Bottom()-mnOutOffY-mnOutOffOrigY, mnDPIY, maMapRes.mfMapScY )-maMapRes.mnMapOfsY );
|
||||
}
|
||||
|
||||
if(rPixelRect.IsWidthEmpty())
|
||||
@@ -683,10 +626,8 @@ void OutputDevice::SetMapMode( const MapMode& rNewMapMode )
|
||||
}
|
||||
if ( !bOldMap && bRelMap )
|
||||
{
|
||||
maMapRes.mnMapScNumX = 1;
|
||||
maMapRes.mnMapScNumY = 1;
|
||||
maMapRes.mnMapScDenomX = mnDPIX;
|
||||
maMapRes.mnMapScDenomY = mnDPIY;
|
||||
maMapRes.mfMapScX = 1.0 / mnDPIX;
|
||||
maMapRes.mfMapScY = 1.0 / mnDPIY;
|
||||
maMapRes.mnMapOfsX = 0;
|
||||
maMapRes.mnMapOfsY = 0;
|
||||
}
|
||||
@@ -720,9 +661,9 @@ void OutputDevice::SetMapMode( const MapMode& rNewMapMode )
|
||||
|
||||
// #106426# Adapt logical offset when changing mapmode
|
||||
mnOutOffLogicX = ImplPixelToLogic( mnOutOffOrigX, mnDPIX,
|
||||
maMapRes.mnMapScNumX, maMapRes.mnMapScDenomX );
|
||||
maMapRes.mfMapScX );
|
||||
mnOutOffLogicY = ImplPixelToLogic( mnOutOffOrigY, mnDPIY,
|
||||
maMapRes.mnMapScNumY, maMapRes.mnMapScDenomY );
|
||||
maMapRes.mfMapScY );
|
||||
|
||||
// #i75163#
|
||||
ImplInvalidateViewTransform();
|
||||
@@ -801,9 +742,9 @@ void OutputDevice::SetRelativeMapMode( const MapMode& rNewMapMode )
|
||||
|
||||
// #106426# Adapt logical offset when changing MapMode
|
||||
mnOutOffLogicX = ImplPixelToLogic( mnOutOffOrigX, mnDPIX,
|
||||
maMapRes.mnMapScNumX, maMapRes.mnMapScDenomX );
|
||||
maMapRes.mfMapScX );
|
||||
mnOutOffLogicY = ImplPixelToLogic( mnOutOffOrigY, mnDPIY,
|
||||
maMapRes.mnMapScNumY, maMapRes.mnMapScDenomY );
|
||||
maMapRes.mfMapScY );
|
||||
}
|
||||
|
||||
// #i75163#
|
||||
@@ -815,8 +756,8 @@ basegfx::B2DHomMatrix OutputDevice::GetViewTransformation() const
|
||||
{
|
||||
mpOutDevData->mpViewTransform = new basegfx::B2DHomMatrix;
|
||||
|
||||
const double fScaleFactorX(static_cast<double>(mnDPIX) * static_cast<double>(maMapRes.mnMapScNumX) / static_cast<double>(maMapRes.mnMapScDenomX));
|
||||
const double fScaleFactorY(static_cast<double>(mnDPIY) * static_cast<double>(maMapRes.mnMapScNumY) / static_cast<double>(maMapRes.mnMapScDenomY));
|
||||
const double fScaleFactorX(static_cast<double>(mnDPIX) * maMapRes.mfMapScX);
|
||||
const double fScaleFactorY(static_cast<double>(mnDPIY) * maMapRes.mfMapScY);
|
||||
const double fZeroPointX((static_cast<double>(maMapRes.mnMapOfsX) * fScaleFactorX) + static_cast<double>(mnOutOffOrigX));
|
||||
const double fZeroPointY((static_cast<double>(maMapRes.mnMapOfsY) * fScaleFactorY) + static_cast<double>(mnOutOffOrigY));
|
||||
|
||||
@@ -863,8 +804,8 @@ basegfx::B2DHomMatrix OutputDevice::GetViewTransformation( const MapMode& rMapMo
|
||||
|
||||
basegfx::B2DHomMatrix aTransform;
|
||||
|
||||
const double fScaleFactorX(static_cast<double>(mnDPIX) * static_cast<double>(aMapRes.mnMapScNumX) / static_cast<double>(aMapRes.mnMapScDenomX));
|
||||
const double fScaleFactorY(static_cast<double>(mnDPIY) * static_cast<double>(aMapRes.mnMapScNumY) / static_cast<double>(aMapRes.mnMapScDenomY));
|
||||
const double fScaleFactorX(static_cast<double>(mnDPIX) * aMapRes.mfMapScX);
|
||||
const double fScaleFactorY(static_cast<double>(mnDPIY) * aMapRes.mfMapScY);
|
||||
const double fZeroPointX((static_cast<double>(aMapRes.mnMapOfsX) * fScaleFactorX) + static_cast<double>(mnOutOffOrigX));
|
||||
const double fZeroPointY((static_cast<double>(aMapRes.mnMapOfsY) * fScaleFactorY) + static_cast<double>(mnOutOffOrigY));
|
||||
|
||||
@@ -900,9 +841,9 @@ Point OutputDevice::LogicToPixel( const Point& rLogicPt ) const
|
||||
return rLogicPt;
|
||||
|
||||
return Point( ImplLogicToPixel( rLogicPt.X() + maMapRes.mnMapOfsX, mnDPIX,
|
||||
maMapRes.mnMapScNumX, maMapRes.mnMapScDenomX )+mnOutOffOrigX,
|
||||
maMapRes.mfMapScX )+mnOutOffOrigX,
|
||||
ImplLogicToPixel( rLogicPt.Y() + maMapRes.mnMapOfsY, mnDPIY,
|
||||
maMapRes.mnMapScNumY, maMapRes.mnMapScDenomY )+mnOutOffOrigY );
|
||||
maMapRes.mfMapScY )+mnOutOffOrigY );
|
||||
}
|
||||
|
||||
Size OutputDevice::LogicToPixel( const Size& rLogicSize ) const
|
||||
@@ -912,9 +853,9 @@ Size OutputDevice::LogicToPixel( const Size& rLogicSize ) const
|
||||
return rLogicSize;
|
||||
|
||||
return Size( ImplLogicToPixel( rLogicSize.Width(), mnDPIX,
|
||||
maMapRes.mnMapScNumX, maMapRes.mnMapScDenomX ),
|
||||
maMapRes.mfMapScX ),
|
||||
ImplLogicToPixel( rLogicSize.Height(), mnDPIY,
|
||||
maMapRes.mnMapScNumY, maMapRes.mnMapScDenomY ) );
|
||||
maMapRes.mfMapScY ) );
|
||||
}
|
||||
|
||||
tools::Rectangle OutputDevice::LogicToPixel( const tools::Rectangle& rLogicRect ) const
|
||||
@@ -924,10 +865,10 @@ tools::Rectangle OutputDevice::LogicToPixel( const tools::Rectangle& rLogicRect
|
||||
return rLogicRect;
|
||||
|
||||
tools::Rectangle aRetval(
|
||||
ImplLogicToPixel( rLogicRect.Left() + maMapRes.mnMapOfsX, mnDPIX, maMapRes.mnMapScNumX, maMapRes.mnMapScDenomX )+mnOutOffOrigX,
|
||||
ImplLogicToPixel( rLogicRect.Top() + maMapRes.mnMapOfsY, mnDPIY, maMapRes.mnMapScNumY, maMapRes.mnMapScDenomY )+mnOutOffOrigY,
|
||||
rLogicRect.IsWidthEmpty() ? 0 : ImplLogicToPixel( rLogicRect.Right() + maMapRes.mnMapOfsX, mnDPIX, maMapRes.mnMapScNumX, maMapRes.mnMapScDenomX )+mnOutOffOrigX,
|
||||
rLogicRect.IsHeightEmpty() ? 0 : ImplLogicToPixel( rLogicRect.Bottom() + maMapRes.mnMapOfsY, mnDPIY, maMapRes.mnMapScNumY, maMapRes.mnMapScDenomY )+mnOutOffOrigY );
|
||||
ImplLogicToPixel( rLogicRect.Left() + maMapRes.mnMapOfsX, mnDPIX, maMapRes.mfMapScX )+mnOutOffOrigX,
|
||||
ImplLogicToPixel( rLogicRect.Top() + maMapRes.mnMapOfsY, mnDPIY, maMapRes.mfMapScY )+mnOutOffOrigY,
|
||||
rLogicRect.IsWidthEmpty() ? 0 : ImplLogicToPixel( rLogicRect.Right() + maMapRes.mnMapOfsX, mnDPIX, maMapRes.mfMapScX )+mnOutOffOrigX,
|
||||
rLogicRect.IsHeightEmpty() ? 0 : ImplLogicToPixel( rLogicRect.Bottom() + maMapRes.mnMapOfsY, mnDPIY, maMapRes.mfMapScY )+mnOutOffOrigY );
|
||||
|
||||
if(rLogicRect.IsWidthEmpty())
|
||||
aRetval.SetWidthEmpty();
|
||||
@@ -956,9 +897,9 @@ tools::Polygon OutputDevice::LogicToPixel( const tools::Polygon& rLogicPoly ) co
|
||||
const Point* pPt = &(pPointAry[i]);
|
||||
Point aPt;
|
||||
aPt.setX( ImplLogicToPixel( pPt->X() + maMapRes.mnMapOfsX, mnDPIX,
|
||||
maMapRes.mnMapScNumX, maMapRes.mnMapScDenomX )+mnOutOffOrigX );
|
||||
maMapRes.mfMapScX )+mnOutOffOrigX );
|
||||
aPt.setY( ImplLogicToPixel( pPt->Y() + maMapRes.mnMapOfsY, mnDPIY,
|
||||
maMapRes.mnMapScNumY, maMapRes.mnMapScDenomY )+mnOutOffOrigY );
|
||||
maMapRes.mfMapScY )+mnOutOffOrigY );
|
||||
aPoly[i] = aPt;
|
||||
}
|
||||
|
||||
@@ -1035,9 +976,9 @@ Point OutputDevice::LogicToPixel( const Point& rLogicPt,
|
||||
ImplCalcMapResolution(rMapMode, mnDPIX, mnDPIY, aMapRes);
|
||||
|
||||
return Point( ImplLogicToPixel( rLogicPt.X() + aMapRes.mnMapOfsX, mnDPIX,
|
||||
aMapRes.mnMapScNumX, aMapRes.mnMapScDenomX )+mnOutOffOrigX,
|
||||
aMapRes.mfMapScX )+mnOutOffOrigX,
|
||||
ImplLogicToPixel( rLogicPt.Y() + aMapRes.mnMapOfsY, mnDPIY,
|
||||
aMapRes.mnMapScNumY, aMapRes.mnMapScDenomY )+mnOutOffOrigY );
|
||||
aMapRes.mfMapScY )+mnOutOffOrigY );
|
||||
}
|
||||
|
||||
Size OutputDevice::LogicToPixel( const Size& rLogicSize,
|
||||
@@ -1052,9 +993,9 @@ Size OutputDevice::LogicToPixel( const Size& rLogicSize,
|
||||
ImplCalcMapResolution(rMapMode, mnDPIX, mnDPIY, aMapRes);
|
||||
|
||||
return Size( ImplLogicToPixel( rLogicSize.Width(), mnDPIX,
|
||||
aMapRes.mnMapScNumX, aMapRes.mnMapScDenomX ),
|
||||
aMapRes.mfMapScX ),
|
||||
ImplLogicToPixel( rLogicSize.Height(), mnDPIY,
|
||||
aMapRes.mnMapScNumY, aMapRes.mnMapScDenomY ) );
|
||||
aMapRes.mfMapScY ) );
|
||||
}
|
||||
|
||||
tools::Rectangle OutputDevice::LogicToPixel( const tools::Rectangle& rLogicRect,
|
||||
@@ -1069,10 +1010,10 @@ tools::Rectangle OutputDevice::LogicToPixel( const tools::Rectangle& rLogicRect,
|
||||
ImplCalcMapResolution(rMapMode, mnDPIX, mnDPIY, aMapRes);
|
||||
|
||||
tools::Rectangle aRetval(
|
||||
ImplLogicToPixel( rLogicRect.Left() + aMapRes.mnMapOfsX, mnDPIX, aMapRes.mnMapScNumX, aMapRes.mnMapScDenomX )+mnOutOffOrigX,
|
||||
ImplLogicToPixel( rLogicRect.Top() + aMapRes.mnMapOfsY, mnDPIY, aMapRes.mnMapScNumY, aMapRes.mnMapScDenomY )+mnOutOffOrigY,
|
||||
rLogicRect.IsWidthEmpty() ? 0 : ImplLogicToPixel( rLogicRect.Right() + aMapRes.mnMapOfsX, mnDPIX, aMapRes.mnMapScNumX, aMapRes.mnMapScDenomX )+mnOutOffOrigX,
|
||||
rLogicRect.IsHeightEmpty() ? 0 : ImplLogicToPixel( rLogicRect.Bottom() + aMapRes.mnMapOfsY, mnDPIY, aMapRes.mnMapScNumY, aMapRes.mnMapScDenomY )+mnOutOffOrigY );
|
||||
ImplLogicToPixel( rLogicRect.Left() + aMapRes.mnMapOfsX, mnDPIX, aMapRes.mfMapScX )+mnOutOffOrigX,
|
||||
ImplLogicToPixel( rLogicRect.Top() + aMapRes.mnMapOfsY, mnDPIY, aMapRes.mfMapScY )+mnOutOffOrigY,
|
||||
rLogicRect.IsWidthEmpty() ? 0 : ImplLogicToPixel( rLogicRect.Right() + aMapRes.mnMapOfsX, mnDPIX, aMapRes.mfMapScX )+mnOutOffOrigX,
|
||||
rLogicRect.IsHeightEmpty() ? 0 : ImplLogicToPixel( rLogicRect.Bottom() + aMapRes.mnMapOfsY, mnDPIY, aMapRes.mfMapScY )+mnOutOffOrigY );
|
||||
|
||||
if(rLogicRect.IsWidthEmpty())
|
||||
aRetval.SetWidthEmpty();
|
||||
@@ -1106,9 +1047,9 @@ tools::Polygon OutputDevice::LogicToPixel( const tools::Polygon& rLogicPoly,
|
||||
const Point* pPt = &(pPointAry[i]);
|
||||
Point aPt;
|
||||
aPt.setX( ImplLogicToPixel( pPt->X() + aMapRes.mnMapOfsX, mnDPIX,
|
||||
aMapRes.mnMapScNumX, aMapRes.mnMapScDenomX )+mnOutOffOrigX );
|
||||
aMapRes.mfMapScX )+mnOutOffOrigX );
|
||||
aPt.setY( ImplLogicToPixel( pPt->Y() + aMapRes.mnMapOfsY, mnDPIY,
|
||||
aMapRes.mnMapScNumY, aMapRes.mnMapScDenomY )+mnOutOffOrigY );
|
||||
aMapRes.mfMapScY )+mnOutOffOrigY );
|
||||
aPoly[i] = aPt;
|
||||
}
|
||||
|
||||
@@ -1131,9 +1072,9 @@ Point OutputDevice::PixelToLogic( const Point& rDevicePt ) const
|
||||
return rDevicePt;
|
||||
|
||||
return Point( ImplPixelToLogic( rDevicePt.X(), mnDPIX,
|
||||
maMapRes.mnMapScNumX, maMapRes.mnMapScDenomX ) - maMapRes.mnMapOfsX - mnOutOffLogicX,
|
||||
maMapRes.mfMapScX ) - maMapRes.mnMapOfsX - mnOutOffLogicX,
|
||||
ImplPixelToLogic( rDevicePt.Y(), mnDPIY,
|
||||
maMapRes.mnMapScNumY, maMapRes.mnMapScDenomY ) - maMapRes.mnMapOfsY - mnOutOffLogicY );
|
||||
maMapRes.mfMapScY ) - maMapRes.mnMapOfsY - mnOutOffLogicY );
|
||||
}
|
||||
|
||||
Point OutputDevice::SubPixelToLogic(const basegfx::B2DPoint& rDevicePt) const
|
||||
@@ -1145,9 +1086,9 @@ Point OutputDevice::SubPixelToLogic(const basegfx::B2DPoint& rDevicePt) const
|
||||
}
|
||||
|
||||
return Point(ImplSubPixelToLogic(rDevicePt.getX(), mnDPIX,
|
||||
maMapRes.mnMapScNumX, maMapRes.mnMapScDenomX) - maMapRes.mnMapOfsX - mnOutOffLogicX,
|
||||
maMapRes.mfMapScX) - maMapRes.mnMapOfsX - mnOutOffLogicX,
|
||||
ImplSubPixelToLogic(rDevicePt.getY(), mnDPIY,
|
||||
maMapRes.mnMapScNumY, maMapRes.mnMapScDenomY) - maMapRes.mnMapOfsY - mnOutOffLogicY);
|
||||
maMapRes.mfMapScY) - maMapRes.mnMapOfsY - mnOutOffLogicY);
|
||||
}
|
||||
|
||||
Size OutputDevice::PixelToLogic( const Size& rDeviceSize ) const
|
||||
@@ -1157,9 +1098,9 @@ Size OutputDevice::PixelToLogic( const Size& rDeviceSize ) const
|
||||
return rDeviceSize;
|
||||
|
||||
return Size( ImplPixelToLogic( rDeviceSize.Width(), mnDPIX,
|
||||
maMapRes.mnMapScNumX, maMapRes.mnMapScDenomX ),
|
||||
maMapRes.mfMapScX ),
|
||||
ImplPixelToLogic( rDeviceSize.Height(), mnDPIY,
|
||||
maMapRes.mnMapScNumY, maMapRes.mnMapScDenomY ) );
|
||||
maMapRes.mfMapScY ) );
|
||||
}
|
||||
|
||||
tools::Rectangle OutputDevice::PixelToLogic( const tools::Rectangle& rDeviceRect ) const
|
||||
@@ -1169,10 +1110,10 @@ tools::Rectangle OutputDevice::PixelToLogic( const tools::Rectangle& rDeviceRect
|
||||
return rDeviceRect;
|
||||
|
||||
tools::Rectangle aRetval(
|
||||
ImplPixelToLogic( rDeviceRect.Left(), mnDPIX, maMapRes.mnMapScNumX, maMapRes.mnMapScDenomX ) - maMapRes.mnMapOfsX - mnOutOffLogicX,
|
||||
ImplPixelToLogic( rDeviceRect.Top(), mnDPIY, maMapRes.mnMapScNumY, maMapRes.mnMapScDenomY ) - maMapRes.mnMapOfsY - mnOutOffLogicY,
|
||||
rDeviceRect.IsWidthEmpty() ? 0 : ImplPixelToLogic( rDeviceRect.Right(), mnDPIX, maMapRes.mnMapScNumX, maMapRes.mnMapScDenomX ) - maMapRes.mnMapOfsX - mnOutOffLogicX,
|
||||
rDeviceRect.IsHeightEmpty() ? 0 : ImplPixelToLogic( rDeviceRect.Bottom(), mnDPIY, maMapRes.mnMapScNumY, maMapRes.mnMapScDenomY ) - maMapRes.mnMapOfsY - mnOutOffLogicY );
|
||||
ImplPixelToLogic( rDeviceRect.Left(), mnDPIX, maMapRes.mfMapScX ) - maMapRes.mnMapOfsX - mnOutOffLogicX,
|
||||
ImplPixelToLogic( rDeviceRect.Top(), mnDPIY, maMapRes.mfMapScY ) - maMapRes.mnMapOfsY - mnOutOffLogicY,
|
||||
rDeviceRect.IsWidthEmpty() ? 0 : ImplPixelToLogic( rDeviceRect.Right(), mnDPIX, maMapRes.mfMapScX ) - maMapRes.mnMapOfsX - mnOutOffLogicX,
|
||||
rDeviceRect.IsHeightEmpty() ? 0 : ImplPixelToLogic( rDeviceRect.Bottom(), mnDPIY, maMapRes.mfMapScY ) - maMapRes.mnMapOfsY - mnOutOffLogicY );
|
||||
|
||||
if(rDeviceRect.IsWidthEmpty())
|
||||
aRetval.SetWidthEmpty();
|
||||
@@ -1201,9 +1142,9 @@ tools::Polygon OutputDevice::PixelToLogic( const tools::Polygon& rDevicePoly ) c
|
||||
const Point* pPt = &(pPointAry[i]);
|
||||
Point aPt;
|
||||
aPt.setX( ImplPixelToLogic( pPt->X(), mnDPIX,
|
||||
maMapRes.mnMapScNumX, maMapRes.mnMapScDenomX ) - maMapRes.mnMapOfsX - mnOutOffLogicX );
|
||||
maMapRes.mfMapScX ) - maMapRes.mnMapOfsX - mnOutOffLogicX );
|
||||
aPt.setY( ImplPixelToLogic( pPt->Y(), mnDPIY,
|
||||
maMapRes.mnMapScNumY, maMapRes.mnMapScDenomY ) - maMapRes.mnMapOfsY - mnOutOffLogicY );
|
||||
maMapRes.mfMapScY ) - maMapRes.mnMapOfsY - mnOutOffLogicY );
|
||||
aPoly[i] = aPt;
|
||||
}
|
||||
|
||||
@@ -1289,9 +1230,9 @@ Point OutputDevice::PixelToLogic( const Point& rDevicePt,
|
||||
ImplCalcMapResolution(rMapMode, mnDPIX, mnDPIY, aMapRes);
|
||||
|
||||
return Point( ImplPixelToLogic( rDevicePt.X(), mnDPIX,
|
||||
aMapRes.mnMapScNumX, aMapRes.mnMapScDenomX ) - aMapRes.mnMapOfsX - mnOutOffLogicX,
|
||||
aMapRes.mfMapScX ) - aMapRes.mnMapOfsX - mnOutOffLogicX,
|
||||
ImplPixelToLogic( rDevicePt.Y(), mnDPIY,
|
||||
aMapRes.mnMapScNumY, aMapRes.mnMapScDenomY ) - aMapRes.mnMapOfsY - mnOutOffLogicY );
|
||||
aMapRes.mfMapScY ) - aMapRes.mnMapOfsY - mnOutOffLogicY );
|
||||
}
|
||||
|
||||
Size OutputDevice::PixelToLogic( const Size& rDeviceSize,
|
||||
@@ -1307,9 +1248,9 @@ Size OutputDevice::PixelToLogic( const Size& rDeviceSize,
|
||||
ImplCalcMapResolution(rMapMode, mnDPIX, mnDPIY, aMapRes);
|
||||
|
||||
return Size( ImplPixelToLogic( rDeviceSize.Width(), mnDPIX,
|
||||
aMapRes.mnMapScNumX, aMapRes.mnMapScDenomX ),
|
||||
aMapRes.mfMapScX ),
|
||||
ImplPixelToLogic( rDeviceSize.Height(), mnDPIY,
|
||||
aMapRes.mnMapScNumY, aMapRes.mnMapScDenomY ) );
|
||||
aMapRes.mfMapScY ) );
|
||||
}
|
||||
|
||||
tools::Rectangle OutputDevice::PixelToLogic( const tools::Rectangle& rDeviceRect,
|
||||
@@ -1325,10 +1266,10 @@ tools::Rectangle OutputDevice::PixelToLogic( const tools::Rectangle& rDeviceRect
|
||||
ImplCalcMapResolution(rMapMode, mnDPIX, mnDPIY, aMapRes);
|
||||
|
||||
tools::Rectangle aRetval(
|
||||
ImplPixelToLogic( rDeviceRect.Left(), mnDPIX, aMapRes.mnMapScNumX, aMapRes.mnMapScDenomX ) - aMapRes.mnMapOfsX - mnOutOffLogicX,
|
||||
ImplPixelToLogic( rDeviceRect.Top(), mnDPIY, aMapRes.mnMapScNumY, aMapRes.mnMapScDenomY ) - aMapRes.mnMapOfsY - mnOutOffLogicY,
|
||||
rDeviceRect.IsWidthEmpty() ? 0 : ImplPixelToLogic( rDeviceRect.Right(), mnDPIX, aMapRes.mnMapScNumX, aMapRes.mnMapScDenomX ) - aMapRes.mnMapOfsX - mnOutOffLogicX,
|
||||
rDeviceRect.IsHeightEmpty() ? 0 : ImplPixelToLogic( rDeviceRect.Bottom(), mnDPIY, aMapRes.mnMapScNumY, aMapRes.mnMapScDenomY ) - aMapRes.mnMapOfsY - mnOutOffLogicY );
|
||||
ImplPixelToLogic( rDeviceRect.Left(), mnDPIX, aMapRes.mfMapScX ) - aMapRes.mnMapOfsX - mnOutOffLogicX,
|
||||
ImplPixelToLogic( rDeviceRect.Top(), mnDPIY, aMapRes.mfMapScY ) - aMapRes.mnMapOfsY - mnOutOffLogicY,
|
||||
rDeviceRect.IsWidthEmpty() ? 0 : ImplPixelToLogic( rDeviceRect.Right(), mnDPIX, aMapRes.mfMapScX ) - aMapRes.mnMapOfsX - mnOutOffLogicX,
|
||||
rDeviceRect.IsHeightEmpty() ? 0 : ImplPixelToLogic( rDeviceRect.Bottom(), mnDPIY, aMapRes.mfMapScY ) - aMapRes.mnMapOfsY - mnOutOffLogicY );
|
||||
|
||||
if(rDeviceRect.IsWidthEmpty())
|
||||
aRetval.SetWidthEmpty();
|
||||
@@ -1363,9 +1304,9 @@ tools::Polygon OutputDevice::PixelToLogic( const tools::Polygon& rDevicePoly,
|
||||
const Point* pPt = &(pPointAry[i]);
|
||||
Point aPt;
|
||||
aPt.setX( ImplPixelToLogic( pPt->X(), mnDPIX,
|
||||
aMapRes.mnMapScNumX, aMapRes.mnMapScDenomX ) - aMapRes.mnMapOfsX - mnOutOffLogicX );
|
||||
aMapRes.mfMapScX ) - aMapRes.mnMapOfsX - mnOutOffLogicX );
|
||||
aPt.setY( ImplPixelToLogic( pPt->Y(), mnDPIY,
|
||||
aMapRes.mnMapScNumY, aMapRes.mnMapScDenomY ) - aMapRes.mnMapOfsY - mnOutOffLogicY );
|
||||
aMapRes.mfMapScY ) - aMapRes.mnMapOfsY - mnOutOffLogicY );
|
||||
aPoly[i] = aPt;
|
||||
}
|
||||
|
||||
@@ -1460,114 +1401,13 @@ std::pair<ImplMapRes, ImplMapRes> ENTER4(const MapMode& rMMSource, const MapMode
|
||||
}
|
||||
}
|
||||
|
||||
// return (n1 * n2 * n3) / (n4 * n5)
|
||||
static tools::Long fn5( const tools::Long n1,
|
||||
const tools::Long n2,
|
||||
const tools::Long n3,
|
||||
const tools::Long n4,
|
||||
const tools::Long n5 )
|
||||
const double n2,
|
||||
const double n3 )
|
||||
{
|
||||
if ( n1 == 0 || n2 == 0 || n3 == 0 || n4 == 0 || n5 == 0 )
|
||||
if (n3 == 0.0)
|
||||
return 0;
|
||||
if (std::numeric_limits<tools::Long>::max() / std::abs(n2) < std::abs(n3))
|
||||
{
|
||||
// a6 is skipped
|
||||
BigInt a7 = n2;
|
||||
a7 *= n3;
|
||||
a7 *= n1;
|
||||
|
||||
if (std::numeric_limits<tools::Long>::max() / std::abs(n4) < std::abs(n5))
|
||||
{
|
||||
BigInt a8 = n4;
|
||||
a8 *= n5;
|
||||
|
||||
BigInt a9 = a8;
|
||||
a9 /= 2;
|
||||
if ( a7.IsNeg() )
|
||||
a7 -= a9;
|
||||
else
|
||||
a7 += a9;
|
||||
|
||||
a7 /= a8;
|
||||
} // of if
|
||||
else
|
||||
{
|
||||
tools::Long n8 = n4 * n5;
|
||||
|
||||
if ( a7.IsNeg() )
|
||||
a7 -= n8 / 2;
|
||||
else
|
||||
a7 += n8 / 2;
|
||||
|
||||
a7 /= n8;
|
||||
} // of else
|
||||
return static_cast<tools::Long>(a7);
|
||||
}
|
||||
|
||||
tools::Long n6 = n2 * n3;
|
||||
if (std::numeric_limits<tools::Long>::max() / std::abs(n1) < std::abs(n6))
|
||||
{
|
||||
BigInt a7 = n1;
|
||||
a7 *= n6;
|
||||
|
||||
if (std::numeric_limits<tools::Long>::max() / std::abs(n4) < std::abs(n5))
|
||||
{
|
||||
BigInt a8 = n4;
|
||||
a8 *= n5;
|
||||
|
||||
BigInt a9 = a8;
|
||||
a9 /= 2;
|
||||
if ( a7.IsNeg() )
|
||||
a7 -= a9;
|
||||
else
|
||||
a7 += a9;
|
||||
|
||||
a7 /= a8;
|
||||
} // of if
|
||||
else
|
||||
{
|
||||
tools::Long n8 = n4 * n5;
|
||||
|
||||
if ( a7.IsNeg() )
|
||||
a7 -= n8 / 2;
|
||||
else
|
||||
a7 += n8 / 2;
|
||||
|
||||
a7 /= n8;
|
||||
} // of else
|
||||
return static_cast<tools::Long>(a7);
|
||||
}
|
||||
|
||||
tools::Long n7 = n1 * n6;
|
||||
if (std::numeric_limits<tools::Long>::max() / std::abs(n4) < std::abs(n5))
|
||||
{
|
||||
BigInt a7 = n7;
|
||||
BigInt a8 = n4;
|
||||
a8 *= n5;
|
||||
|
||||
BigInt a9 = a8;
|
||||
a9 /= 2;
|
||||
if ( a7.IsNeg() )
|
||||
a7 -= a9;
|
||||
else
|
||||
a7 += a9;
|
||||
|
||||
a7 /= a8;
|
||||
return static_cast<tools::Long>(a7);
|
||||
}
|
||||
|
||||
const tools::Long n8 = n4 * n5;
|
||||
const tools::Long n8_2 = n8 / 2;
|
||||
|
||||
if( n7 < 0 )
|
||||
{
|
||||
if ((n7 - std::numeric_limits<tools::Long>::min()) >= n8_2)
|
||||
n7 -= n8_2;
|
||||
}
|
||||
else if ((std::numeric_limits<tools::Long>::max() - n7) >= n8_2)
|
||||
n7 += n8_2;
|
||||
|
||||
return n7 / n8;
|
||||
return std::llround(n1 * n2 / n3);
|
||||
}
|
||||
|
||||
static tools::Long fn3(const tools::Long n1, const o3tl::Length eFrom, const o3tl::Length eTo)
|
||||
@@ -1601,12 +1441,10 @@ Point OutputDevice::LogicToLogic( const Point& rPtSource,
|
||||
ENTER1( rPtSource, pMapModeSource, pMapModeDest );
|
||||
|
||||
return Point( fn5( rPtSource.X() + aMapResSource.mnMapOfsX,
|
||||
aMapResSource.mnMapScNumX, aMapResDest.mnMapScDenomX,
|
||||
aMapResSource.mnMapScDenomX, aMapResDest.mnMapScNumX ) -
|
||||
aMapResSource.mfMapScX, aMapResDest.mfMapScX ) -
|
||||
aMapResDest.mnMapOfsX,
|
||||
fn5( rPtSource.Y() + aMapResSource.mnMapOfsY,
|
||||
aMapResSource.mnMapScNumY, aMapResDest.mnMapScDenomY,
|
||||
aMapResSource.mnMapScDenomY, aMapResDest.mnMapScNumY ) -
|
||||
aMapResSource.mfMapScY, aMapResDest.mfMapScY ) -
|
||||
aMapResDest.mnMapOfsY );
|
||||
}
|
||||
|
||||
@@ -1617,11 +1455,9 @@ Size OutputDevice::LogicToLogic( const Size& rSzSource,
|
||||
ENTER1( rSzSource, pMapModeSource, pMapModeDest );
|
||||
|
||||
return Size( fn5( rSzSource.Width(),
|
||||
aMapResSource.mnMapScNumX, aMapResDest.mnMapScDenomX,
|
||||
aMapResSource.mnMapScDenomX, aMapResDest.mnMapScNumX ),
|
||||
aMapResSource.mfMapScX, aMapResDest.mfMapScX ),
|
||||
fn5( rSzSource.Height(),
|
||||
aMapResSource.mnMapScNumY, aMapResDest.mnMapScDenomY,
|
||||
aMapResSource.mnMapScDenomY, aMapResDest.mnMapScNumY ) );
|
||||
aMapResSource.mfMapScY, aMapResDest.mfMapScY ) );
|
||||
}
|
||||
|
||||
tools::Rectangle OutputDevice::LogicToLogic( const tools::Rectangle& rRectSource,
|
||||
@@ -1631,20 +1467,16 @@ tools::Rectangle OutputDevice::LogicToLogic( const tools::Rectangle& rRectSource
|
||||
ENTER1( rRectSource, pMapModeSource, pMapModeDest );
|
||||
|
||||
return tools::Rectangle( fn5( rRectSource.Left() + aMapResSource.mnMapOfsX,
|
||||
aMapResSource.mnMapScNumX, aMapResDest.mnMapScDenomX,
|
||||
aMapResSource.mnMapScDenomX, aMapResDest.mnMapScNumX ) -
|
||||
aMapResSource.mfMapScX, aMapResDest.mfMapScX ) -
|
||||
aMapResDest.mnMapOfsX,
|
||||
fn5( rRectSource.Top() + aMapResSource.mnMapOfsY,
|
||||
aMapResSource.mnMapScNumY, aMapResDest.mnMapScDenomY,
|
||||
aMapResSource.mnMapScDenomY, aMapResDest.mnMapScNumY ) -
|
||||
aMapResSource.mfMapScY, aMapResDest.mfMapScY ) -
|
||||
aMapResDest.mnMapOfsY,
|
||||
fn5( rRectSource.Right() + aMapResSource.mnMapOfsX,
|
||||
aMapResSource.mnMapScNumX, aMapResDest.mnMapScDenomX,
|
||||
aMapResSource.mnMapScDenomX, aMapResDest.mnMapScNumX ) -
|
||||
aMapResSource.mfMapScX, aMapResDest.mfMapScX ) -
|
||||
aMapResDest.mnMapOfsX,
|
||||
fn5( rRectSource.Bottom() + aMapResSource.mnMapOfsY,
|
||||
aMapResSource.mnMapScNumY, aMapResDest.mnMapScDenomY,
|
||||
aMapResSource.mnMapScDenomY, aMapResDest.mnMapScNumY ) -
|
||||
aMapResSource.mfMapScY, aMapResDest.mfMapScY ) -
|
||||
aMapResDest.mnMapOfsY );
|
||||
}
|
||||
|
||||
@@ -1669,12 +1501,10 @@ Point OutputDevice::LogicToLogic( const Point& rPtSource,
|
||||
const auto [aMapResSource, aMapResDest] = ENTER4( rMapModeSource, rMapModeDest );
|
||||
|
||||
return Point( fn5( rPtSource.X() + aMapResSource.mnMapOfsX,
|
||||
aMapResSource.mnMapScNumX, aMapResDest.mnMapScDenomX,
|
||||
aMapResSource.mnMapScDenomX, aMapResDest.mnMapScNumX ) -
|
||||
aMapResSource.mfMapScX, aMapResDest.mfMapScX ) -
|
||||
aMapResDest.mnMapOfsX,
|
||||
fn5( rPtSource.Y() + aMapResSource.mnMapOfsY,
|
||||
aMapResSource.mnMapScNumY, aMapResDest.mnMapScDenomY,
|
||||
aMapResSource.mnMapScDenomY, aMapResDest.mnMapScNumY ) -
|
||||
aMapResSource.mfMapScY, aMapResDest.mfMapScY ) -
|
||||
aMapResDest.mnMapOfsY );
|
||||
}
|
||||
}
|
||||
@@ -1700,11 +1530,9 @@ Size OutputDevice::LogicToLogic( const Size& rSzSource,
|
||||
const auto [aMapResSource, aMapResDest] = ENTER4( rMapModeSource, rMapModeDest );
|
||||
|
||||
return Size( fn5( rSzSource.Width(),
|
||||
aMapResSource.mnMapScNumX, aMapResDest.mnMapScDenomX,
|
||||
aMapResSource.mnMapScDenomX, aMapResDest.mnMapScNumX ),
|
||||
aMapResSource.mfMapScX, aMapResDest.mfMapScX ),
|
||||
fn5( rSzSource.Height(),
|
||||
aMapResSource.mnMapScNumY, aMapResDest.mnMapScDenomY,
|
||||
aMapResSource.mnMapScDenomY, aMapResDest.mnMapScNumY ) );
|
||||
aMapResSource.mfMapScY, aMapResDest.mfMapScY ) );
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1750,8 +1578,8 @@ basegfx::B2DHomMatrix OutputDevice::LogicToLogic(const MapMode& rMapModeSource,
|
||||
{
|
||||
const auto [aMapResSource, aMapResDest] = ENTER4(rMapModeSource, rMapModeDest);
|
||||
|
||||
const double fScaleFactorX((double(aMapResSource.mnMapScNumX) * double(aMapResDest.mnMapScDenomX)) / (double(aMapResSource.mnMapScDenomX) * double(aMapResDest.mnMapScNumX)));
|
||||
const double fScaleFactorY((double(aMapResSource.mnMapScNumY) * double(aMapResDest.mnMapScDenomY)) / (double(aMapResSource.mnMapScDenomY) * double(aMapResDest.mnMapScNumY)));
|
||||
const double fScaleFactorX(aMapResSource.mfMapScX / aMapResDest.mfMapScX);
|
||||
const double fScaleFactorY(aMapResSource.mfMapScY / aMapResDest.mfMapScY);
|
||||
const double fZeroPointX(double(aMapResSource.mnMapOfsX) * fScaleFactorX - double(aMapResDest.mnMapOfsX));
|
||||
const double fZeroPointY(double(aMapResSource.mnMapOfsY) * fScaleFactorY - double(aMapResDest.mnMapOfsY));
|
||||
|
||||
@@ -1795,22 +1623,18 @@ tools::Rectangle OutputDevice::LogicToLogic( const tools::Rectangle& rRectSource
|
||||
const auto [aMapResSource, aMapResDest] = ENTER4( rMapModeSource, rMapModeDest );
|
||||
|
||||
auto left = fn5( rRectSource.Left() + aMapResSource.mnMapOfsX,
|
||||
aMapResSource.mnMapScNumX, aMapResDest.mnMapScDenomX,
|
||||
aMapResSource.mnMapScDenomX, aMapResDest.mnMapScNumX ) -
|
||||
aMapResSource.mfMapScX, aMapResDest.mfMapScX ) -
|
||||
aMapResDest.mnMapOfsX;
|
||||
auto top = fn5( rRectSource.Top() + aMapResSource.mnMapOfsY,
|
||||
aMapResSource.mnMapScNumY, aMapResDest.mnMapScDenomY,
|
||||
aMapResSource.mnMapScDenomY, aMapResDest.mnMapScNumY ) -
|
||||
aMapResSource.mfMapScY, aMapResDest.mfMapScY ) -
|
||||
aMapResDest.mnMapOfsY;
|
||||
|
||||
// tdf#141761 see comments above, IsEmpty() removed
|
||||
auto right = rRectSource.IsWidthEmpty() ? 0 : fn5( rRectSource.Right() + aMapResSource.mnMapOfsX,
|
||||
aMapResSource.mnMapScNumX, aMapResDest.mnMapScDenomX,
|
||||
aMapResSource.mnMapScDenomX, aMapResDest.mnMapScNumX ) -
|
||||
aMapResSource.mfMapScX, aMapResDest.mfMapScX ) -
|
||||
aMapResDest.mnMapOfsX;
|
||||
auto bottom = rRectSource.IsHeightEmpty() ? 0 : fn5( rRectSource.Bottom() + aMapResSource.mnMapOfsY,
|
||||
aMapResSource.mnMapScNumY, aMapResDest.mnMapScDenomY,
|
||||
aMapResSource.mnMapScDenomY, aMapResDest.mnMapScNumY ) -
|
||||
aMapResSource.mfMapScY, aMapResDest.mfMapScY ) -
|
||||
aMapResDest.mnMapOfsY;
|
||||
|
||||
aRetval = tools::Rectangle(left, top, right, bottom);
|
||||
@@ -1842,9 +1666,9 @@ void OutputDevice::SetPixelOffset( const Size& rOffset )
|
||||
mnOutOffOrigY = rOffset.Height();
|
||||
|
||||
mnOutOffLogicX = ImplPixelToLogic( mnOutOffOrigX, mnDPIX,
|
||||
maMapRes.mnMapScNumX, maMapRes.mnMapScDenomX );
|
||||
maMapRes.mfMapScX );
|
||||
mnOutOffLogicY = ImplPixelToLogic( mnOutOffOrigY, mnDPIY,
|
||||
maMapRes.mnMapScNumY, maMapRes.mnMapScDenomY );
|
||||
maMapRes.mfMapScY );
|
||||
}
|
||||
|
||||
|
||||
@@ -1854,7 +1678,7 @@ double OutputDevice::ImplLogicWidthToDeviceSubPixel(tools::Long nWidth) const
|
||||
return nWidth;
|
||||
|
||||
return ImplLogicToSubPixel(nWidth, mnDPIX,
|
||||
maMapRes.mnMapScNumX, maMapRes.mnMapScDenomX);
|
||||
maMapRes.mfMapScX);
|
||||
}
|
||||
|
||||
double OutputDevice::ImplLogicHeightToDeviceSubPixel(tools::Long nHeight) const
|
||||
@@ -1863,7 +1687,7 @@ double OutputDevice::ImplLogicHeightToDeviceSubPixel(tools::Long nHeight) const
|
||||
return nHeight;
|
||||
|
||||
return ImplLogicToSubPixel(nHeight, mnDPIY,
|
||||
maMapRes.mnMapScNumY, maMapRes.mnMapScDenomY);
|
||||
maMapRes.mfMapScY);
|
||||
}
|
||||
|
||||
basegfx::B2DPoint OutputDevice::ImplLogicToDeviceSubPixel(const Point& rPoint) const
|
||||
@@ -1872,10 +1696,10 @@ basegfx::B2DPoint OutputDevice::ImplLogicToDeviceSubPixel(const Point& rPoint) c
|
||||
return basegfx::B2DPoint(rPoint.X() + mnOutOffX, rPoint.Y() + mnOutOffY);
|
||||
|
||||
return basegfx::B2DPoint(ImplLogicToSubPixel(rPoint.X() + maMapRes.mnMapOfsX, mnDPIX,
|
||||
maMapRes.mnMapScNumX, maMapRes.mnMapScDenomX)
|
||||
maMapRes.mfMapScX)
|
||||
+ mnOutOffX + mnOutOffOrigX,
|
||||
ImplLogicToSubPixel(rPoint.Y() + maMapRes.mnMapOfsY, mnDPIY,
|
||||
maMapRes.mnMapScNumY, maMapRes.mnMapScDenomY)
|
||||
maMapRes.mfMapScY)
|
||||
+ mnOutOffY + mnOutOffOrigY);
|
||||
}
|
||||
|
||||
|
||||
@@ -126,10 +126,8 @@ OutputDevice::OutputDevice(OutDevType eOutDevType) :
|
||||
// struct ImplMapRes
|
||||
maMapRes.mnMapOfsX = 0;
|
||||
maMapRes.mnMapOfsY = 0;
|
||||
maMapRes.mnMapScNumX = 1;
|
||||
maMapRes.mnMapScNumY = 1;
|
||||
maMapRes.mnMapScDenomX = 1;
|
||||
maMapRes.mnMapScDenomY = 1;
|
||||
maMapRes.mfMapScX = 1;
|
||||
maMapRes.mfMapScY = 1;
|
||||
|
||||
// struct ImplOutDevData- see #i82615#
|
||||
mpOutDevData.reset(new ImplOutDevData);
|
||||
|
||||
Reference in New Issue
Block a user