Kaydet (Commit) fc83bf8b authored tarafından Tomaž Vajngerl's avatar Tomaž Vajngerl

fdo#72590 scale or map only when EMR_EXTSELECTCLIPRGN action

Change-Id: Ie42c855e696922b38760876d4090d572deaa689a
üst 10cd5567
...@@ -1000,21 +1000,21 @@ bool EnhWMFReader::ReadEnhWMF() ...@@ -1000,21 +1000,21 @@ bool EnhWMFReader::ReadEnhWMF()
case EMR_SELECTCLIPPATH : case EMR_SELECTCLIPPATH :
{ {
sal_Int32 nClippingMode; sal_Int32 nClippingMode;
pWMF->ReadInt32( nClippingMode ); pWMF->ReadInt32(nClippingMode);
pOut->SetClipPath( pOut->GetPathObj(), nClippingMode, true ); pOut->SetClipPath(pOut->GetPathObj(), nClippingMode, true);
} }
break; break;
case EMR_EXTSELECTCLIPRGN : case EMR_EXTSELECTCLIPRGN :
{ {
sal_Int32 iMode, cbRgnData; sal_Int32 nClippingMode, cbRgnData;
pWMF->ReadInt32( cbRgnData ) pWMF->ReadInt32(cbRgnData);
.ReadInt32( iMode ); pWMF->ReadInt32(nClippingMode);
PolyPolygon aPolyPoly; PolyPolygon aPolyPoly;
if ( cbRgnData ) if (cbRgnData)
ImplReadRegion( aPolyPoly, *pWMF, nRecSize ); ImplReadRegion(aPolyPoly, *pWMF, nRecSize);
pOut->SetClipPath( aPolyPoly, iMode, true ); pOut->SetClipPath(aPolyPoly, nClippingMode, false);
} }
break; break;
......
...@@ -294,16 +294,13 @@ Color WinMtf::ReadColor() ...@@ -294,16 +294,13 @@ Color WinMtf::ReadColor()
return Color( (sal_uInt8)nColor, (sal_uInt8)( nColor >> 8 ), (sal_uInt8)( nColor >> 16 ) ); return Color( (sal_uInt8)nColor, (sal_uInt8)( nColor >> 8 ), (sal_uInt8)( nColor >> 16 ) );
}; };
Point WinMtfOutput::ImplScale( const Point& rPt) // Hack to set varying defaults for incompletely defined files. Point WinMtfOutput::ImplScale(const Point& rPoint) // Hack to set varying defaults for incompletely defined files.
{ {
if (mbIsMapDevSet) if (!mbIsMapDevSet)
return rPt; //fdo#73764 return Point(rPoint.X() * UNDOCUMENTED_WIN_RCL_RELATION - mrclFrame.Left(),
rPoint.Y() * UNDOCUMENTED_WIN_RCL_RELATION - mrclFrame.Top());
if (mbIsMapWinSet) else
return Point(rPt.X() * UNDOCUMENTED_WIN_RCL_RELATION - mrclFrame.Left(), return rPoint;
rPt.Y() * UNDOCUMENTED_WIN_RCL_RELATION - mrclFrame.Top());
return ImplMap(rPt);
} }
Point WinMtfOutput::ImplMap( const Point& rPt ) Point WinMtfOutput::ImplMap( const Point& rPt )
...@@ -782,16 +779,16 @@ void WinMtfOutput::MoveClipRegion( const Size& rSize ) ...@@ -782,16 +779,16 @@ void WinMtfOutput::MoveClipRegion( const Size& rSize )
void WinMtfOutput::SetClipPath( const PolyPolygon& rPolyPolygon, sal_Int32 nClippingMode, bool bIsMapped ) void WinMtfOutput::SetClipPath( const PolyPolygon& rPolyPolygon, sal_Int32 nClippingMode, bool bIsMapped )
{ {
mbClipNeedsUpdate = true; mbClipNeedsUpdate = true;
if (bIsMapped) PolyPolygon aPolyPolygon(rPolyPolygon);
{
PolyPolygon aPP( rPolyPolygon ); if (!bIsMapped)
aClipPath.setClipPath( ImplScale( aPP ), nClippingMode );
}
else
{ {
PolyPolygon aPP( rPolyPolygon ); if (!mbIsMapDevSet && (mnMapMode == MM_ISOTROPIC || mnMapMode == MM_ANISOTROPIC))
aClipPath.setClipPath( ImplMap( aPP ), nClippingMode ); aPolyPolygon = ImplScale(aPolyPolygon);
else
aPolyPolygon = ImplMap(aPolyPolygon);
} }
aClipPath.setClipPath(aPolyPolygon, nClippingMode);
} }
WinMtfOutput::WinMtfOutput( GDIMetaFile& rGDIMetaFile ) : WinMtfOutput::WinMtfOutput( GDIMetaFile& rGDIMetaFile ) :
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment