summaryrefslogtreecommitdiff
path: root/vcl/source/filter/wmf/winmtf.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'vcl/source/filter/wmf/winmtf.cxx')
-rw-r--r--vcl/source/filter/wmf/winmtf.cxx28
1 files changed, 13 insertions, 15 deletions
diff --git a/vcl/source/filter/wmf/winmtf.cxx b/vcl/source/filter/wmf/winmtf.cxx
index f21d54a69ba3..f87336c20973 100644
--- a/vcl/source/filter/wmf/winmtf.cxx
+++ b/vcl/source/filter/wmf/winmtf.cxx
@@ -304,14 +304,11 @@ Color WinMtf::ReadColor()
Point WinMtfOutput::ImplScale( const Point& rPt) // Hack to set varying defaults for incompletely defined files.
{
- if (mbIsMapDevSet)
- return rPt; //fdo#73764
-
- if (mbIsMapWinSet)
+ if (!mbIsMapDevSet)
return Point(rPt.X() * UNDOCUMENTED_WIN_RCL_RELATION - mrclFrame.Left(),
rPt.Y() * UNDOCUMENTED_WIN_RCL_RELATION - mrclFrame.Top());
-
- return ImplMap(rPt);
+ else
+ return rPt;
}
@@ -816,17 +813,18 @@ void WinMtfOutput::MoveClipRegion( const Size& rSize )
void WinMtfOutput::SetClipPath( const PolyPolygon& rPolyPolygon, sal_Int32 nClippingMode, sal_Bool bIsMapped )
{
- mbClipNeedsUpdate=true;
- if ( bIsMapped )
- {
- PolyPolygon aPP( rPolyPolygon );
- aClipPath.setClipPath( ImplScale( aPP ), nClippingMode );
- }
- else
+
+ mbClipNeedsUpdate = true;
+ PolyPolygon aPolyPolygon(rPolyPolygon);
+
+ if (!bIsMapped)
{
- PolyPolygon aPP( rPolyPolygon );
- aClipPath.setClipPath( ImplMap( aPP ), nClippingMode );
+ if (!mbIsMapDevSet && (mnMapMode == MM_ISOTROPIC || mnMapMode == MM_ANISOTROPIC))
+ aPolyPolygon = ImplScale(aPolyPolygon);
+ else
+ aPolyPolygon = ImplMap(aPolyPolygon);
}
+ aClipPath.setClipPath(aPolyPolygon, nClippingMode);
}