From f59b7f548242b6079b9af303cc74b672d94e74db Mon Sep 17 00:00:00 2001 From: Radek Doulik Date: Wed, 15 Sep 2010 11:31:43 +0200 Subject: [PATCH] emf+-use-canvas-only-for-emf+.diff: emf+ import - use canvas rendering only for emf+ --- svtools/source/filter.vcl/wmf/winmtf.cxx | 1 + vcl/inc/vcl/gdimtf.hxx | 3 +++ vcl/source/gdi/gdimtf.cxx | 14 +++++++++++--- 3 files changed, 15 insertions(+), 3 deletions(-) diff --git a/svtools/source/filter.vcl/wmf/winmtf.cxx b/svtools/source/filter.vcl/wmf/winmtf.cxx index 4579c5bda9f6..eba616f2fea4 100644 --- a/svtools/source/filter.vcl/wmf/winmtf.cxx +++ b/svtools/source/filter.vcl/wmf/winmtf.cxx @@ -2230,6 +2230,7 @@ void WinMtfOutput::PassEMFPlusHeaderInfo() mem << one << zero << zero << one << zero << zero; mpGDIMetaFile->AddAction( new MetaCommentAction( "EMF_PLUS_HEADER_INFO", 0, (const BYTE*) mem.GetData(), mem.GetEndOfData() ) ); + mpGDIMetaFile->UseCanvas( TRUE ); } void WinMtfOutput::PassEMFPlus( void* pBuffer, UINT32 nLength ) diff --git a/vcl/inc/vcl/gdimtf.hxx b/vcl/inc/vcl/gdimtf.hxx index 5660bb139f3b..e1eb25d4b46a 100644 --- a/vcl/inc/vcl/gdimtf.hxx +++ b/vcl/inc/vcl/gdimtf.hxx @@ -107,6 +107,7 @@ private: ImpLabelList* pLabelList; BOOL bPause; BOOL bRecord; + BOOL bUseCanvas; //#if 0 // _SOLAR__PRIVATE @@ -246,6 +247,8 @@ public: friend VCL_DLLPUBLIC SvStream& operator<<( SvStream& rOStm, const GDIMetaFile& rGDIMetaFile ); BOOL CreateThumbnail( sal_uInt32 nMaximumExtent, BitmapEx& rBmpEx, const BitmapEx* pOverlay = NULL, const Rectangle* pOverlayRect = NULL ) const; + + void UseCanvas( BOOL _bUseCanvas ); }; #endif // _SV_GDIMTF_HXX diff --git a/vcl/source/gdi/gdimtf.cxx b/vcl/source/gdi/gdimtf.cxx index 8f0f7abfdf19..b811fbc18a3a 100644 --- a/vcl/source/gdi/gdimtf.cxx +++ b/vcl/source/gdi/gdimtf.cxx @@ -212,7 +212,8 @@ GDIMetaFile::GDIMetaFile() : pOutDev ( NULL ), pLabelList ( NULL ), bPause ( FALSE ), - bRecord ( FALSE ) + bRecord ( FALSE ), + bUseCanvas ( FALSE ) { } @@ -227,7 +228,8 @@ GDIMetaFile::GDIMetaFile( const GDIMetaFile& rMtf ) : pNext ( rMtf.pNext ), pOutDev ( NULL ), bPause ( FALSE ), - bRecord ( FALSE ) + bRecord ( FALSE ), + bUseCanvas ( rMtf.bUseCanvas ) { // RefCount der MetaActions erhoehen for( void* pAct = First(); pAct; pAct = Next() ) @@ -281,6 +283,7 @@ GDIMetaFile& GDIMetaFile::operator=( const GDIMetaFile& rMtf ) pOutDev = NULL; bPause = FALSE; bRecord = FALSE; + bUseCanvas = rMtf.bUseCanvas; if( rMtf.bRecord ) { @@ -568,7 +571,7 @@ void GDIMetaFile::Play( OutputDevice* pOut, const Point& rPos, { GDIMetaFile* pMtf = pOut->GetConnectMetaFile(); - if( !pMtf && ImplPlayWithRenderer( pOut, rPos, aDestSize ) ) + if( bUseCanvas && !pMtf && ImplPlayWithRenderer( pOut, rPos, aDestSize ) ) return; Size aTmpPrefSize( pOut->LogicToPixel( GetPrefSize(), aDrawMap ) ); @@ -3117,3 +3120,8 @@ BOOL GDIMetaFile::CreateThumbnail( sal_uInt32 nMaximumExtent, return !rBmpEx.IsEmpty(); } + +void GDIMetaFile::UseCanvas( BOOL _bUseCanvas ) +{ + bUseCanvas = _bUseCanvas; +}