diff options
Diffstat (limited to 'vcl')
| -rw-r--r-- | vcl/inc/vcl/gdimtf.hxx | 49 | ||||
| -rw-r--r-- | vcl/inc/vcl/metaact.hxx | 2 | ||||
| -rw-r--r-- | vcl/source/gdi/cvtgrf.cxx | 14 | ||||
| -rw-r--r-- | vcl/source/gdi/cvtsvm.cxx | 46 | ||||
| -rw-r--r-- | vcl/source/gdi/gdimtf.cxx | 550 | ||||
| -rw-r--r-- | vcl/source/gdi/impvect.cxx | 6 | ||||
| -rw-r--r-- | vcl/source/gdi/pdfextoutdevdata.cxx | 10 | ||||
| -rw-r--r-- | vcl/source/gdi/pdfwriter_impl2.cxx | 104 | ||||
| -rw-r--r-- | vcl/source/gdi/print2.cxx | 146 |
9 files changed, 500 insertions, 427 deletions
diff --git a/vcl/inc/vcl/gdimtf.hxx b/vcl/inc/vcl/gdimtf.hxx index 2f5f0a2940..fcc60ab4e7 100644 --- a/vcl/inc/vcl/gdimtf.hxx +++ b/vcl/inc/vcl/gdimtf.hxx @@ -32,9 +32,9 @@ #include <vcl/dllapi.h> #include <tools/gen.hxx> #include <tools/link.hxx> -#include <tools/list.hxx> #include <tools/string.hxx> #include <vcl/mapmod.hxx> +#include <vector> class OutputDevice; class ImpLabelList; @@ -51,8 +51,8 @@ class Gradient; // - GDIMetaFile-Types - // --------------------- -#define GDI_METAFILE_END ((sal_uLong)0xFFFFFFFF) -#define GDI_METAFILE_LABEL_NOTFOUND ((sal_uLong)0xFFFFFFFF) +#define GDI_METAFILE_END ((size_t)0xFFFFFFFF) +#define GDI_METAFILE_LABEL_NOTFOUND ((size_t)0xFFFFFFFF) #ifndef METAFILE_END #define METAFILE_END GDI_METAFILE_END @@ -93,9 +93,11 @@ typedef BitmapEx (*BmpExchangeFnc)( const BitmapEx& rBmpEx, const void* pBmpPara // - GDIMetaFile - // --------------- -class VCL_DLLPUBLIC GDIMetaFile : protected List +class VCL_DLLPUBLIC GDIMetaFile { private: + ::std::vector< MetaAction* > aList; + size_t nCurrentActionElement; MapMode aPrefMapMode; Size aPrefSize; @@ -134,7 +136,7 @@ private: const OutputDevice& rMapDev, const PolyPolygon& rPolyPoly, const Gradient& rGrad ); - SAL_DLLPRIVATE bool ImplPlayWithRenderer( OutputDevice* pOut, const Point& rPos, Size rDestSize ); + SAL_DLLPRIVATE bool ImplPlayWithRenderer( OutputDevice* pOut, const Point& rPos, Size rDestSize ); SAL_DLLPRIVATE void ImplDelegate2PluggableRenderer( const MetaCommentAction* pAct, OutputDevice* pOut ); @@ -148,9 +150,7 @@ public: GDIMetaFile( const GDIMetaFile& rMtf ); virtual ~GDIMetaFile(); - using List::operator==; - using List::operator!=; - GDIMetaFile& operator=( const GDIMetaFile& rMtf ); + GDIMetaFile& operator=( const GDIMetaFile& rMtf ); sal_Bool operator==( const GDIMetaFile& rMtf ) const; sal_Bool operator!=( const GDIMetaFile& rMtf ) const { return !( *this == rMtf ); } @@ -186,10 +186,10 @@ public: void Record( OutputDevice* pOutDev ); sal_Bool IsRecord() const { return bRecord; } - void Play( GDIMetaFile& rMtf, sal_uLong nPos = GDI_METAFILE_END ); - void Play( OutputDevice* pOutDev, sal_uLong nPos = GDI_METAFILE_END ); + void Play( GDIMetaFile& rMtf, size_t nPos = GDI_METAFILE_END ); + void Play( OutputDevice* pOutDev, size_t nPos = GDI_METAFILE_END ); void Play( OutputDevice* pOutDev, const Point& rPos, - const Size& rSize, sal_uLong nPos = GDI_METAFILE_END ); + const Size& rSize, size_t nPos = GDI_METAFILE_END ); void Pause( sal_Bool bPause ); sal_Bool IsPause() const { return bPause; } @@ -198,22 +198,25 @@ public: void WindStart(); void WindEnd(); - void Wind( sal_uLong nAction ); + void Wind( size_t nAction ); void WindPrev(); void WindNext(); - sal_uLong GetActionCount() const { return Count(); } + size_t GetActionSize() const; + size_t GetActionPos( const String& rLabel ); + void AddAction( MetaAction* pAction ); - void AddAction( MetaAction* pAction, sal_uLong nPos ); - void RemoveAction( sal_uLong nPos ); - MetaAction* CopyAction( sal_uLong nPos ) const; - MetaAction* GetCurAction() const { return (MetaAction*) GetCurObject(); } - MetaAction* GetAction( sal_uLong nAction ) const { return (MetaAction*) GetObject( nAction ); } - MetaAction* FirstAction() { return (MetaAction*) First(); } - MetaAction* NextAction() { return (MetaAction*) Next(); } - MetaAction* ReplaceAction( MetaAction* pAction, sal_uLong nAction ) { return (MetaAction*) Replace( pAction, nAction ); } - - sal_uLong GetActionPos( const String& rLabel ); + void AddAction( MetaAction* pAction, size_t nPos ); + void RemoveAction( size_t nPos ); + void push_back( MetaAction* pAction ); + + MetaAction* FirstAction(); + MetaAction* NextAction(); + MetaAction* GetAction( size_t nAction ) const; + MetaAction* CopyAction( size_t nPos ) const; + MetaAction* GetCurAction() const { return GetAction( nCurrentActionElement ); } + MetaAction* ReplaceAction( MetaAction* pAction, sal_uLong nAction ); + sal_Bool InsertLabel( const String& rLabel, sal_uLong nActionPos ); void RemoveLabel( const String& rLabel ); void RenameLabel( const String& rLabel, const String& rNewLabel ); diff --git a/vcl/inc/vcl/metaact.hxx b/vcl/inc/vcl/metaact.hxx index acd2a41b08..7937592e74 100644 --- a/vcl/inc/vcl/metaact.hxx +++ b/vcl/inc/vcl/metaact.hxx @@ -2,7 +2,7 @@ /************************************************************************* * * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * + * * Copyright 2000, 2010 Oracle and/or its affiliates. * * OpenOffice.org - a multi-platform office productivity suite diff --git a/vcl/source/gdi/cvtgrf.cxx b/vcl/source/gdi/cvtgrf.cxx index a20fd2eb0c..42147218ee 100644 --- a/vcl/source/gdi/cvtgrf.cxx +++ b/vcl/source/gdi/cvtgrf.cxx @@ -2,7 +2,7 @@ /************************************************************************* * * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * + * * Copyright 2000, 2010 Oracle and/or its affiliates. * * OpenOffice.org - a multi-platform office productivity suite @@ -76,7 +76,7 @@ sal_uLong GraphicConverter::ImplConvert( sal_uLong nInFormat, void* pInBuffer, s SvMemoryStream aOStm( 64535, 64535 ); mpConvertData = new ConvertData( aGraphic, aOStm, nOutFormat ); - + if( maFilterHdl.IsSet() && maFilterHdl.Call( mpConvertData ) ) { nRetBufSize = aOStm.Seek( STREAM_SEEK_TO_END ); @@ -94,7 +94,7 @@ sal_uLong GraphicConverter::ImplConvert( sal_uLong nInFormat, void* pInBuffer, s aIStm.SetBuffer( (char*) pInBuffer, nInBufSize, sal_False, nInBufSize ); mpConvertData = new ConvertData( Graphic(), aIStm, nInFormat ); - + if( maFilterHdl.IsSet() && maFilterHdl.Call( mpConvertData ) ) { SvMemoryStream aOStm( 645535, 64535 ); @@ -140,7 +140,7 @@ sal_uLong GraphicConverter::Import( SvStream& rIStm, Graphic& rGraphic, sal_uLon if( pCvt && pCvt->GetFilterHdl().IsSet() ) { ConvertData aData( rGraphic, rIStm, nFormat ); - + if( pCvt->GetFilterHdl().Call( &aData ) ) { rGraphic = aData.maGraphic; @@ -149,7 +149,7 @@ sal_uLong GraphicConverter::Import( SvStream& rIStm, Graphic& rGraphic, sal_uLon else if( rIStm.GetError() ) nRet = rIStm.GetError(); } - + return nRet; } @@ -163,13 +163,13 @@ sal_uLong GraphicConverter::Export( SvStream& rOStm, const Graphic& rGraphic, sa if( pCvt && pCvt->GetFilterHdl().IsSet() ) { ConvertData aData( rGraphic, rOStm, nFormat ); - + if( pCvt->GetFilterHdl().Call( &aData ) ) nRet = ERRCODE_NONE; else if( rOStm.GetError() ) nRet = rOStm.GetError(); } - + return nRet; } diff --git a/vcl/source/gdi/cvtsvm.cxx b/vcl/source/gdi/cvtsvm.cxx index e1cd8be702..cc5e891c7f 100644 --- a/vcl/source/gdi/cvtsvm.cxx +++ b/vcl/source/gdi/cvtsvm.cxx @@ -2,7 +2,7 @@ /************************************************************************* * * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * + * * Copyright 2000, 2010 Oracle and/or its affiliates. * * OpenOffice.org - a multi-platform office productivity suite @@ -337,7 +337,7 @@ void ImplReadUnicodeComment( sal_uInt32 nStrmPos, SvStream& rIStm, String& rStri sal_uInt16 nType; sal_uInt32 nActionSize; xub_StrLen nStringLen; - + rIStm.Seek( nStrmPos ); rIStm >> nType >> nActionSize; @@ -401,7 +401,7 @@ bool ImplWriteExtendedPolyPolygonAction(SvStream& rOStm, const PolyPolygon& rPol if((bOnlyWhenCurve && nAllFlagCount) || (!bOnlyWhenCurve && nAllPointCount)) { rOStm << (sal_Int16) GDI_EXTENDEDPOLYGON_ACTION; - + const sal_Int32 nActionSize( 4 + // Action size 2 + // PolygonCount @@ -528,7 +528,7 @@ void SVMConverter::ImplConvertFromSVM1( SvStream& rIStm, GDIMetaFile& rMtf ) // check header-magic and version if( rIStm.GetError() - || ( memcmp( aCode, "SVGDI", sizeof( aCode ) ) != 0 ) + || ( memcmp( aCode, "SVGDI", sizeof( aCode ) ) != 0 ) || ( nVersion != 200 ) ) { rIStm.SetError( SVSTREAM_FILEFORMAT_ERROR ); @@ -562,12 +562,12 @@ void SVMConverter::ImplConvertFromSVM1( SvStream& rIStm, GDIMetaFile& rMtf ) rMtf.SetPrefSize( aPrefSz ); rMtf.SetPrefMapMode( aMapMode ); - sal_uInt32 nLastPolygonAction(0); + size_t nLastPolygonAction(0); for( sal_Int32 i = 0L; i < nActions; i++ ) { rIStm >> nType; - sal_Int32 nActBegin = rIStm.Tell(); + sal_Int32 nActBegin = rIStm.Tell(); rIStm >> nActionSize; DBG_ASSERT( ( nType <= 33 ) || ( nType >= 1024 ), "Unknown GDIMetaAction while converting!" ); @@ -631,7 +631,7 @@ void SVMConverter::ImplConvertFromSVM1( SvStream& rIStm, GDIMetaFile& rMtf ) ImplReadExtendedPolyPolygonAction(rIStm, aInputPolyPolygon); // now check if it can be set somewhere - if(nLastPolygonAction < rMtf.GetActionCount()) + if(nLastPolygonAction < rMtf.GetActionSize()) { MetaPolyLineAction* pPolyLineAction = dynamic_cast< MetaPolyLineAction* >(rMtf.GetAction(nLastPolygonAction)); @@ -644,7 +644,7 @@ void SVMConverter::ImplConvertFromSVM1( SvStream& rIStm, GDIMetaFile& rMtf ) { rMtf.ReplaceAction( new MetaPolyLineAction( - aInputPolyPolygon.GetObject(0), + aInputPolyPolygon.GetObject(0), pPolyLineAction->GetLineInfo()), nLastPolygonAction); pPolyLineAction->Delete(); @@ -779,7 +779,7 @@ void SVMConverter::ImplConvertFromSVM1( SvStream& rIStm, GDIMetaFile& rMtf ) case( GDI_POLYLINE_ACTION ): { ImplReadPoly( rIStm, aActionPoly ); - nLastPolygonAction = rMtf.GetActionCount(); + nLastPolygonAction = rMtf.GetActionSize(); if( bFatLine ) rMtf.AddAction( new MetaPolyLineAction( aActionPoly, aLineInfo ) ); @@ -802,7 +802,7 @@ void SVMConverter::ImplConvertFromSVM1( SvStream& rIStm, GDIMetaFile& rMtf ) } else { - nLastPolygonAction = rMtf.GetActionCount(); + nLastPolygonAction = rMtf.GetActionSize(); rMtf.AddAction( new MetaPolygonAction( aActionPoly ) ); } } @@ -826,7 +826,7 @@ void SVMConverter::ImplConvertFromSVM1( SvStream& rIStm, GDIMetaFile& rMtf ) } else { - nLastPolygonAction = rMtf.GetActionCount(); + nLastPolygonAction = rMtf.GetActionSize(); rMtf.AddAction( new MetaPolyPolygonAction( aPolyPoly ) ); } } @@ -868,7 +868,7 @@ void SVMConverter::ImplConvertFromSVM1( SvStream& rIStm, GDIMetaFile& rMtf ) eActualCharSet = aFont.GetCharSet(); if ( eActualCharSet == RTL_TEXTENCODING_DONTKNOW ) eActualCharSet = gsl_getSystemTextEncoding(); - + rMtf.AddAction( new MetaFontAction( aFont ) ); rMtf.AddAction( new MetaTextAlignAction( aFont.GetAlign() ) ); rMtf.AddAction( new MetaTextColorAction( aFont.GetColor() ) ); @@ -883,7 +883,7 @@ void SVMConverter::ImplConvertFromSVM1( SvStream& rIStm, GDIMetaFile& rMtf ) { ByteString aByteStr; sal_Int32 nIndex, nLen; - + rIStm >> aPt >> nIndex >> nLen >> nTmp; if ( nTmp && ( static_cast< sal_uInt32 >( nTmp ) < ( SAL_MAX_UINT16 - 1 ) ) ) { @@ -926,7 +926,7 @@ void SVMConverter::ImplConvertFromSVM1( SvStream& rIStm, GDIMetaFile& rMtf ) sal_Int32* pTmpAry = new sal_Int32[nStrLen]; aFontVDev.GetTextArray( aStr, pTmpAry, (sal_uInt16) nIndex, (sal_uInt16) nLen ); - + // now, the difference between the // last and the second last DX array // is the advancement for the last @@ -1425,7 +1425,7 @@ sal_uLong SVMConverter::ImplWriteActions( SvStream& rOStm, GDIMetaFile& rMtf, rtl_TextEncoding& rActualCharSet ) { sal_uLong nCount = 0; - for( sal_uLong i = 0, nActionCount = rMtf.GetActionCount(); i < nActionCount; i++ ) + for( size_t i = 0, nActionCount = rMtf.GetActionSize(); i < nActionCount; i++ ) { const MetaAction* pAction = rMtf.GetAction( i ); @@ -1496,12 +1496,12 @@ sal_uLong SVMConverter::ImplWriteActions( SvStream& rOStm, GDIMetaFile& rMtf, { ImplWritePopAction( rOStm ); nCount += 3; - + if(bLineJoin) { nCount += 1; } - + if(bLineDashDot) { nCount += 1; @@ -1650,13 +1650,13 @@ sal_uLong SVMConverter::ImplWriteActions( SvStream& rOStm, GDIMetaFile& rMtf, { ImplWritePopAction( rOStm ); nCount += 3; - + if(bLineJoin) { nCount += 1; } } - + if(bLineDashDot) { nCount += 1; @@ -1682,7 +1682,7 @@ sal_uLong SVMConverter::ImplWriteActions( SvStream& rOStm, GDIMetaFile& rMtf, rOStm << aSimplePoly[ n ]; nCount++; - + const PolyPolygon aPolyPolygon(pAct->GetPolygon()); if(ImplWriteExtendedPolyPolygonAction(rOStm, aPolyPolygon, true)) { @@ -1696,7 +1696,7 @@ sal_uLong SVMConverter::ImplWriteActions( SvStream& rOStm, GDIMetaFile& rMtf, MetaPolyPolygonAction* pAct = (MetaPolyPolygonAction*) pAction; ImplWritePolyPolyAction( rOStm, pAct->GetPolyPolygon() ); nCount++; - + if(ImplWriteExtendedPolyPolygonAction(rOStm, pAct->GetPolyPolygon(), true)) { nCount++; @@ -2379,8 +2379,8 @@ sal_uLong SVMConverter::ImplWriteActions( SvStream& rOStm, GDIMetaFile& rMtf, rOStm.SeekRel( 4 ); // write data - rOStm << rStartPt << nWidth << - static_cast<sal_uInt32>(eStrikeout) << + rOStm << rStartPt << nWidth << + static_cast<sal_uInt32>(eStrikeout) << static_cast<sal_uInt32>(eUnderline); rOStm << (sal_Int32) 0; // number of actions that follow this comment diff --git a/vcl/source/gdi/gdimtf.cxx b/vcl/source/gdi/gdimtf.cxx index 5c787bb1f6..37638d5acd 100644 --- a/vcl/source/gdi/gdimtf.cxx +++ b/vcl/source/gdi/gdimtf.cxx @@ -2,7 +2,7 @@ /************************************************************************* * * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * + * * Copyright 2000, 2010 Oracle and/or its affiliates. * * OpenOffice.org - a multi-platform office productivity suite @@ -31,6 +31,7 @@ #include <rtl/crc.h> #include <tools/stream.hxx> #include <tools/vcompat.hxx> +#include <tools/list.hxx> #include <vcl/metaact.hxx> #include <vcl/salbtype.hxx> #include <vcl/outdev.hxx> @@ -209,7 +210,6 @@ sal_uLong ImpLabelList::ImplGetLabelPos( const String& rLabelName ) // --------------- GDIMetaFile::GDIMetaFile() : - List ( 0x3EFF, 64, 64 ), aPrefSize ( 1, 1 ), pPrev ( NULL ), pNext ( NULL ), @@ -224,7 +224,6 @@ GDIMetaFile::GDIMetaFile() : // ------------------------------------------------------------------------ GDIMetaFile::GDIMetaFile( const GDIMetaFile& rMtf ) : - List ( rMtf ), aPrefMapMode ( rMtf.aPrefMapMode ), aPrefSize ( rMtf.aPrefSize ), aHookHdlLink ( rMtf.aHookHdlLink ), @@ -236,8 +235,11 @@ GDIMetaFile::GDIMetaFile( const GDIMetaFile& rMtf ) : bUseCanvas ( rMtf.bUseCanvas ) { // RefCount der MetaActions erhoehen - for( void* pAct = First(); pAct; pAct = Next() ) - ( (MetaAction*) pAct )->Duplicate(); + for( size_t i = 0, n = rMtf.GetActionSize(); i < n; ++i ) + { + rMtf.GetAction( i )->Duplicate(); + aList.push_back( rMtf.GetAction( i ) ); + } if( rMtf.pLabelList ) pLabelList = new ImpLabelList( *rMtf.pLabelList ); @@ -262,17 +264,62 @@ GDIMetaFile::~GDIMetaFile() // ------------------------------------------------------------------------ +size_t GDIMetaFile::GetActionSize() const +{ + return aList.size(); +} + +// ------------------------------------------------------------------------ + +MetaAction* GDIMetaFile::GetAction( size_t nAction ) const +{ + return (nAction < aList.size()) ? aList[ nAction ] : NULL; +} + +// ------------------------------------------------------------------------ + +MetaAction* GDIMetaFile::FirstAction() +{ + nCurrentActionElement = 0; + return aList.empty() ? NULL : aList[ 0 ]; +} + +// ------------------------------------------------------------------------ + +MetaAction* GDIMetaFile::NextAction() +{ + return ( nCurrentActionElement + 1 < aList.size() ) ? aList[ ++nCurrentActionElement ] : NULL; +} + +// ------------------------------------------------------------------------ + +MetaAction* GDIMetaFile::ReplaceAction( MetaAction* pAction, size_t nAction ) +{ + if ( nAction < aList.size() ) + { + ::std::vector< MetaAction* >::iterator it = aList.begin(); + ::std::advance( it, nAction ); + (*it)->Delete(); + *it = pAction; + } + return pAction; +} + + +// ------------------------------------------------------------------------ + GDIMetaFile& GDIMetaFile::operator=( const GDIMetaFile& rMtf ) { if( this != &rMtf ) { Clear(); - List::operator=( rMtf ); - // RefCount der MetaActions erhoehen - for( void* pAct = First(); pAct; pAct = Next() ) - ( (MetaAction*) pAct )->Duplicate(); + for( size_t i = 0, n = rMtf.GetActionSize(); i < n; ++i ) + { + rMtf.GetAction( i )->Duplicate(); + aList.push_back( rMtf.GetAction( i ) ); + } if( rMtf.pLabelList ) pLabelList = new ImpLabelList( *rMtf.pLabelList ); @@ -305,20 +352,20 @@ GDIMetaFile& GDIMetaFile::operator=( const GDIMetaFile& rMtf ) sal_Bool GDIMetaFile::operator==( const GDIMetaFile& rMtf ) const { - const sal_uLong nObjCount = Count(); - sal_Bool bRet = sal_False; + const size_t nObjCount = aList.size(); + sal_Bool bRet = sal_False; if( this == &rMtf ) bRet = sal_True; - else if( rMtf.GetActionCount() == nObjCount && - rMtf.GetPrefSize() == aPrefSize && + else if( rMtf.GetActionSize() == nObjCount && + rMtf.GetPrefSize() == aPrefSize && rMtf.GetPrefMapMode() == aPrefMapMode ) { bRet = sal_True; - for( sal_uLong n = 0UL; n < nObjCount; n++ ) + for( size_t n = 0; n < nObjCount; n++ ) { - if( GetObject( n ) != rMtf.GetObject( n ) ) + if( aList[ n ] != rMtf.GetAction( n ) ) { bRet = sal_False; break; @@ -333,20 +380,20 @@ sal_Bool GDIMetaFile::operator==( const GDIMetaFile& rMtf ) const sal_Bool GDIMetaFile::IsEqual( const GDIMetaFile& rMtf ) const { - const sal_uLong nObjCount = Count(); + const size_t nObjCount = aList.size(); sal_Bool bRet = sal_False; if( this == &rMtf ) bRet = sal_True; - else if( rMtf.GetActionCount() == nObjCount && - rMtf.GetPrefSize() == aPrefSize && + else if( rMtf.GetActionSize() == nObjCount && + rMtf.GetPrefSize() == aPrefSize && rMtf.GetPrefMapMode() == aPrefMapMode ) { bRet = sal_True; - for( sal_uLong n = 0UL; n < nObjCount; n++ ) + for( size_t n = 0; n < nObjCount; n++ ) { - if(!((MetaAction*)GetObject( n ))->IsEqual(*((MetaAction*)rMtf.GetObject( n )))) + if( !aList[ n ]->IsEqual( *(rMtf.GetAction( n )) ) ) { bRet = sal_False; break; @@ -364,10 +411,9 @@ void GDIMetaFile::Clear() if( bRecord ) Stop(); - for( void* pAct = First(); pAct; pAct = Next() ) - ( (MetaAction*) pAct )->Delete(); - - List::Clear(); + for( size_t i = 0, n = aList.size(); i < n; ++i ) + aList[ i ]->Delete(); + aList.clear(); delete pLabelList; pLabelList = NULL; @@ -422,7 +468,7 @@ void GDIMetaFile::Record( OutputDevice* pOut ) if( bRecord ) Stop(); - Last(); + nCurrentActionElement = aList.empty() ? 0 : (aList.size() - 1); pOutDev = pOut; bRecord = sal_True; Linker( pOut, sal_True ); @@ -430,19 +476,19 @@ void GDIMetaFile::Record( OutputDevice* pOut ) // ------------------------------------------------------------------------ -void GDIMetaFile::Play( GDIMetaFile& rMtf, sal_uLong nPos ) +void GDIMetaFile::Play( GDIMetaFile& rMtf, size_t nPos ) { if ( !bRecord && !rMtf.bRecord ) { MetaAction* pAction = GetCurAction(); - const sal_uLong nObjCount = Count(); + const size_t nObjCount = aList.size(); rMtf.UseCanvas( rMtf.GetUseCanvas() || bUseCanvas ); if( nPos > nObjCount ) nPos = nObjCount; - for( sal_uLong nCurPos = GetCurPos(); nCurPos < nPos; nCurPos++ ) + for( size_t nCurPos = nCurrentActionElement; nCurPos < nPos; nCurPos++ ) { if( !Hook() ) { @@ -450,20 +496,21 @@ void GDIMetaFile::Play( GDIMetaFile& rMtf, sal_uLong nPos ) rMtf.AddAction( pAction ); } - pAction = (MetaAction*) Next(); + pAction = NextAction(); } } } // ------------------------------------------------------------------------ -void GDIMetaFile::Play( OutputDevice* pOut, sal_uLong nPos ) +void GDIMetaFile::Play( OutputDevice* pOut, size_t nPos ) { if( !bRecord ) { MetaAction* pAction = GetCurAction(); - const sal_uLong nObjCount = Count(); - sal_uLong i = 0, nSyncCount = ( pOut->GetOutDevType() == OUTDEV_WINDOW ) ? 0x000000ff : 0xffffffff; + const size_t nObjCount = aList.size(); + size_t i = 0; + size_t nSyncCount = ( pOut->GetOutDevType() == OUTDEV_WINDOW ) ? 0x000000ff : 0xffffffff; if( nPos > nObjCount ) nPos = nObjCount; @@ -476,7 +523,7 @@ void GDIMetaFile::Play( OutputDevice* pOut, sal_uLong nPos ) pOut->SetLayoutMode( 0 ); pOut->SetDigitLanguage( 0 ); - for( sal_uLong nCurPos = GetCurPos(); nCurPos < nPos; nCurPos++ ) + for( size_t nCurPos = nCurrentActionElement; nCurPos < nPos; nCurPos++ ) { if( !Hook() ) { @@ -496,7 +543,7 @@ void GDIMetaFile::Play( OutputDevice* pOut, sal_uLong nPos ) ( (Window*) pOut )->Flush(), i = 0; } - pAction = (MetaAction*) Next(); + pAction = NextAction(); } pOut->Pop(); @@ -680,7 +727,7 @@ void GDIMetaFile::Play( OutputDevice* pOut, const Point& rPos, aScaleX *= aDrawMap.GetScaleX(); aDrawMap.SetScaleX( aScaleX ); aScaleY *= aDrawMap.GetScaleY(); aDrawMap.SetScaleY( aScaleY ); - + // #i47260# Convert logical output position to offset within // the metafile's mapmode. Therefore, disable pixel offset on // outdev, it's inverse mnOutOffLogicX/Y is calculated for a @@ -758,7 +805,7 @@ void GDIMetaFile::Stop() void GDIMetaFile::WindStart() { if( !bRecord ) - First(); + nCurrentActionElement = 0; } // ------------------------------------------------------------------------ @@ -766,15 +813,15 @@ void GDIMetaFile::WindStart() void GDIMetaFile::WindEnd() { if( !bRecord ) - Last(); + nCurrentActionElement = aList.empty() ? 0 : (aList.size() - 1); } // ------------------------------------------------------------------------ -void GDIMetaFile::Wind( sal_uLong nActionPos ) +void GDIMetaFile::Wind( size_t nActionPos ) { if( !bRecord ) - Seek( nActionPos ); + nCurrentActionElement = nActionPos < aList.size() ? nActionPos : nCurrentActionElement; } // ------------------------------------------------------------------------ @@ -782,7 +829,7 @@ void GDIMetaFile::Wind( sal_uLong nActionPos ) void GDIMetaFile::WindPrev() { if( !bRecord ) - Prev(); + nCurrentActionElement = ( nCurrentActionElement > 0 ) ? --nCurrentActionElement : 0; } // ------------------------------------------------------------------------ @@ -790,14 +837,15 @@ void GDIMetaFile::WindPrev() void GDIMetaFile::WindNext() { if( !bRecord ) - Next(); + if ( nCurrentActionElement + 1 < aList.size() ) + ++nCurrentActionElement; } // ------------------------------------------------------------------------ void GDIMetaFile::AddAction( MetaAction* pAction ) { - Insert( pAction, LIST_APPEND ); + aList.push_back( pAction ); if( pPrev ) { @@ -808,9 +856,18 @@ void GDIMetaFile::AddAction( MetaAction* pAction ) // ------------------------------------------------------------------------ -void GDIMetaFile::AddAction( MetaAction* pAction, sal_uLong nPos ) +void GDIMetaFile::AddAction( MetaAction* pAction, size_t nPos ) { - Insert( pAction, nPos ); + if ( nPos < aList.size() ) + { + ::std::vector< MetaAction* >::iterator it = aList.begin(); + ::std::advance( it, nPos ); + aList.insert( it, pAction ); + } + else + { + aList.push_back( pAction ); + } if( pPrev ) { @@ -821,10 +878,24 @@ void GDIMetaFile::AddAction( MetaAction* pAction, sal_uLong nPos ) // ------------------------------------------------------------------------ +void GDIMetaFile::push_back( MetaAction* pAction ) +{ + aList.push_back( pAction ); +} + +// ------------------------------------------------------------------------ + // @since #110496# -void GDIMetaFile::RemoveAction( sal_uLong nPos ) +void GDIMetaFile::RemoveAction( size_t nPos ) { - Remove( nPos ); + if ( nPos < aList.size() ) + { + ::std::vector< MetaAction* >::iterator it = aList.begin(); + ::std::advance( it, nPos ); + (*it)->Delete(); + aList.erase( it ); + + } if( pPrev ) pPrev->RemoveAction( nPos ); @@ -832,9 +903,9 @@ void GDIMetaFile::RemoveAction( sal_uLong nPos ) // ------------------------------------------------------------------------ -MetaAction* GDIMetaFile::CopyAction( sal_uLong nPos ) const +MetaAction* GDIMetaFile::CopyAction( size_t nPos ) const { - return ( (MetaAction*) GetObject( nPos ) )->Clone(); + return ( nPos < aList.size() ) ? aList[ nPos ]->Clone() : NULL; } // ------------------------------------------------------------------------ @@ -997,21 +1068,21 @@ void GDIMetaFile::Move( long nX, long nY ) aMapVDev.EnableOutput( sal_False ); aMapVDev.SetMapMode( GetPrefMapMode() ); - - for( MetaAction* pAct = (MetaAction*) First(); pAct; pAct = (MetaAction*) Next() ) + + for( MetaAction* pAct = FirstAction(); pAct; pAct = NextAction() ) { const long nType = pAct->GetType(); MetaAction* pModAct; if( pAct->GetRefCount() > 1 ) { - Replace( pModAct = pAct->Clone(), GetCurPos() ); + aList[ nCurrentActionElement ] = pModAct = pAct->Clone(); pAct->Delete(); } else pModAct = pAct; - if( ( META_MAPMODE_ACTION == nType ) || + if( ( META_MAPMODE_ACTION == nType ) || ( META_PUSH_ACTION == nType ) || ( META_POP_ACTION == nType ) ) { @@ -1032,21 +1103,21 @@ void GDIMetaFile::Move( long nX, long nY, long nDPIX, long nDPIY ) aMapVDev.EnableOutput( sal_False ); aMapVDev.SetReferenceDevice( nDPIX, nDPIY ); aMapVDev.SetMapMode( GetPrefMapMode() ); - - for( MetaAction* pAct = (MetaAction*) First(); pAct; pAct = (MetaAction*) Next() ) + + for( MetaAction* pAct = FirstAction(); pAct; pAct = NextAction() ) { const long nType = pAct->GetType(); MetaAction* pModAct; if( pAct->GetRefCount() > 1 ) { - Replace( pModAct = pAct->Clone(), GetCurPos() ); + aList[ nCurrentActionElement ] = pModAct = pAct->Clone(); pAct->Delete(); } else pModAct = pAct; - if( ( META_MAPMODE_ACTION == nType ) || + if( ( META_MAPMODE_ACTION == nType ) || ( META_PUSH_ACTION == nType ) || ( META_POP_ACTION == nType ) ) { @@ -1070,13 +1141,13 @@ void GDIMetaFile::Move( long nX, long nY, long nDPIX, long nDPIY ) void GDIMetaFile::Scale( double fScaleX, double fScaleY ) { - for( MetaAction* pAct = (MetaAction*) First(); pAct; pAct = (MetaAction*) Next() ) + for( MetaAction* pAct = FirstAction(); pAct; pAct = NextAction() ) { MetaAction* pModAct; if( pAct->GetRefCount() > 1 ) { - Replace( pModAct = pAct->Clone(), GetCurPos() ); + aList[ nCurrentActionElement ] = pModAct = pAct->Clone(); pAct->Delete(); } else @@ -1106,11 +1177,11 @@ void GDIMetaFile::Clip( const Rectangle& i_rClipRect ) aMapVDev.EnableOutput( sal_False ); aMapVDev.SetMapMode( GetPrefMapMode() ); - for( MetaAction* pAct = (MetaAction*) First(); pAct; pAct = (MetaAction*) Next() ) + for( MetaAction* pAct = FirstAction(); pAct; pAct = NextAction() ) { const long nType = pAct->GetType(); - if( ( META_MAPMODE_ACTION == nType ) || + if( ( META_MAPMODE_ACTION == nType ) || ( META_PUSH_ACTION == nType ) || ( META_POP_ACTION == nType ) ) { @@ -1124,7 +1195,7 @@ void GDIMetaFile::Clip( const Rectangle& i_rClipRect ) if( pOldAct->IsClipping() ) aNewReg.Intersect( pOldAct->GetRegion() ); MetaClipRegionAction* pNewAct = new MetaClipRegionAction( aNewReg, sal_True ); - Replace( pNewAct, GetCurPos() ); + aList[ nCurrentActionElement ] = pNewAct; pOldAct->Delete(); } } @@ -1144,7 +1215,7 @@ Point GDIMetaFile::ImplGetRotatedPoint( const Point& rPt, const Point& rRotatePt // ------------------------------------------------------------------------ -Polygon GDIMetaFile::ImplGetRotatedPolygon( const Polygon& rPoly, const Point& rRotatePt, +Polygon GDIMetaFile::ImplGetRotatedPolygon( const Polygon& rPoly, const Point& rRotatePt, const Size& rOffset, double fSin, double fCos ) { Polygon aRet( rPoly ); @@ -1157,7 +1228,7 @@ Polygon GDIMetaFile::ImplGetRotatedPolygon( const Polygon& rPoly, const Point& r // ------------------------------------------------------------------------ -PolyPolygon GDIMetaFile::ImplGetRotatedPolyPolygon( const PolyPolygon& rPolyPoly, const Point& rRotatePt, +PolyPolygon GDIMetaFile::ImplGetRotatedPolyPolygon( const PolyPolygon& rPolyPoly, const Point& rRotatePt, const Size& rOffset, double fSin, double fCos ) { PolyPolygon aRet( rPolyPoly ); @@ -1170,7 +1241,7 @@ PolyPolygon GDIMetaFile::ImplGetRotatedPolyPolygon( const PolyPolygon& rPolyPoly // ------------------------------------------------------------------------ -void GDIMetaFile::ImplAddGradientEx( GDIMetaFile& rMtf, +void GDIMetaFile::ImplAddGradientEx( GDIMetaFile& rMtf, const OutputDevice& rMapDev, const PolyPolygon& rPolyPoly, const Gradient& rGrad ) @@ -1185,10 +1256,10 @@ void GDIMetaFile::ImplAddGradientEx( GDIMetaFile& rMtf, aVDev.DrawGradient( rPolyPoly, rGrad ); aGradMtf.Stop(); - int i, nAct( aGradMtf.GetActionCount() ); - for( i=0; i<nAct; ++i ) + size_t i, nAct( aGradMtf.GetActionSize() ); + for( i=0; i < nAct; ++i ) { - MetaAction* pMetaAct = aGradMtf.GetAction(i); + MetaAction* pMetaAct = aGradMtf.GetAction( i ); pMetaAct->Duplicate(); rMtf.AddAction( pMetaAct ); } @@ -1217,14 +1288,14 @@ void GDIMetaFile::Rotate( long nAngle10 ) aMapVDev.SetMapMode( GetPrefMapMode() ); const Rectangle aNewBound( aPoly.GetBoundRect() ); - + const Point aOrigin( GetPrefMapMode().GetOrigin().X(), GetPrefMapMode().GetOrigin().Y() ); const Size aOffset( -aNewBound.Left(), -aNewBound.Top() ); - + Point aRotAnchor( aOrigin ); Size aRotOffset( aOffset ); - for( MetaAction* pAction = (MetaAction*) First(); pAction; pAction = (MetaAction*) Next() ) + for( MetaAction* pAction = FirstAction(); pAction; pAction = NextAction() ) { const sal_uInt16 nActionType = pAction->GetType(); @@ -1233,8 +1304,8 @@ void GDIMetaFile::Rotate( long nAngle10 ) case( META_PIXEL_ACTION ): { MetaPixelAction* pAct = (MetaPixelAction*) pAction; - aMtf.AddAction( new MetaPixelAction( ImplGetRotatedPoint( pAct->GetPoint(), aRotAnchor, aRotOffset, fSin, fCos ), - pAct->GetColor() ) ); + aMtf.AddAction( new MetaPixelAction( ImplGetRotatedPoint( pAct->GetPoint(), aRotAnchor, aRotOffset, fSin, fCos ), + pAct->GetColor() ) ); } break; @@ -1248,60 +1319,60 @@ void GDIMetaFile::Rotate( long nAngle10 ) case( META_LINE_ACTION ): { MetaLineAction* pAct = (MetaLineAction*) pAction; - aMtf.AddAction( new MetaLineAction( ImplGetRotatedPoint( pAct->GetStartPoint(), aRotAnchor, aRotOffset, fSin, fCos ), + aMtf.AddAction( new MetaLineAction( ImplGetRotatedPoint( pAct->GetStartPoint(), aRotAnchor, aRotOffset, fSin, fCos ), ImplGetRotatedPoint( pAct->GetEndPoint(), aRotAnchor, aRotOffset, fSin, fCos ), pAct->GetLineInfo() ) ); } break; - + case( META_RECT_ACTION ): { MetaRectAction* pAct = (MetaRectAction*) pAction; - aMtf.AddAction( new MetaPolygonAction( ImplGetRotatedPolygon( pAct->GetRect(), aRotAnchor, aRotOffset, fSin, fCos ) ) ); + aMtf.AddAction( new MetaPolygonAction( ImplGetRotatedPolygon( pAct->GetRect(), aRotAnchor, aRotOffset, fSin, fCos ) ) ); } break; - + case( META_ROUNDRECT_ACTION ): { MetaRoundRectAction* pAct = (MetaRoundRectAction*) pAction; const Polygon aRoundRectPoly( pAct->GetRect(), pAct->GetHorzRound(), pAct->GetVertRound() ); - - aMtf.AddAction( new MetaPolygonAction( ImplGetRotatedPolygon( aRoundRectPoly, aRotAnchor, aRotOffset, fSin, fCos ) ) ); + + aMtf.AddAction( new MetaPolygonAction( ImplGetRotatedPolygon( aRoundRectPoly, aRotAnchor, aRotOffset, fSin, fCos ) ) ); } break; - + case( META_ELLIPSE_ACTION ): { MetaEllipseAction* pAct = (MetaEllipseAction*) pAction; const Polygon aEllipsePoly( pAct->GetRect().Center(), pAct->GetRect().GetWidth() >> 1, pAct->GetRect().GetHeight() >> 1 ); - - aMtf.AddAction( new MetaPolygonAction( ImplGetRotatedPolygon( aEllipsePoly, aRotAnchor, aRotOffset, fSin, fCos ) ) ); + + aMtf.AddAction( new MetaPolygonAction( ImplGetRotatedPolygon( aEllipsePoly, aRotAnchor, aRotOffset, fSin, fCos ) ) ); } break; - + case( META_ARC_ACTION ): { MetaArcAction* pAct = (MetaArcAction*) pAction; const Polygon aArcPoly( pAct->GetRect(), pAct->GetStartPoint(), pAct->GetEndPoint(), POLY_ARC ); - + aMtf.AddAction( new MetaPolygonAction( ImplGetRotatedPolygon( aArcPoly, aRotAnchor, aRotOffset, fSin, fCos ) ) ); } break; - + case( META_PIE_ACTION ): { MetaPieAction* pAct = (MetaPieAction*) pAction; const Polygon aPiePoly( pAct->GetRect(), pAct->GetStartPoint(), pAct->GetEndPoint(), POLY_PIE ); - + aMtf.AddAction( new MetaPolygonAction( ImplGetRotatedPolygon( aPiePoly, aRotAnchor, aRotOffset, fSin, fCos ) ) ); } break; - + case( META_CHORD_ACTION ): { MetaChordAction* pAct = (MetaChordAction*) pAction; const Polygon aChordPoly( pAct->GetRect(), pAct->GetStartPoint(), pAct->GetEndPoint(), POLY_CHORD ); - + aMtf.AddAction( new MetaPolygonAction( ImplGetRotatedPolygon( aChordPoly, aRotAnchor, aRotOffset, fSin, fCos ) ) ); } break; @@ -1342,7 +1413,7 @@ void GDIMetaFile::Rotate( long nAngle10 ) pAct->GetText(), pAct->GetDXArray(), pAct->GetIndex(), pAct->GetLen() ) ); } break; - + case( META_STRETCHTEXT_ACTION ): { MetaStretchTextAction* pAct = (MetaStretchTextAction*) pAction; @@ -1350,7 +1421,7 @@ void GDIMetaFile::Rotate( long nAngle10 ) pAct->GetWidth(), pAct->GetText(), pAct->GetIndex(), pAct->GetLen() ) ); } break; - + case( META_TEXTLINE_ACTION ): { MetaTextLineAction* pAct = (MetaTextLineAction*) pAction; @@ -1366,8 +1437,8 @@ void GDIMetaFile::Rotate( long nAngle10 ) Rectangle aBmpRect( aBmpPoly.GetBoundRect() ); BitmapEx aBmpEx( pAct->GetBitmap() ); - aBmpEx.Rotate( nAngle10, Color( COL_TRANSPARENT ) ); - aMtf.AddAction( new MetaBmpExScaleAction( aBmpRect.TopLeft(), aBmpRect.GetSize(), + aBmpEx.Rotate( nAngle10, Color( COL_TRANSPARENT ) ); + aMtf.AddAction( new MetaBmpExScaleAction( aBmpRect.TopLeft(), aBmpRect.GetSize(), aBmpEx ) ); } break; @@ -1381,7 +1452,7 @@ void GDIMetaFile::Rotate( long nAngle10 ) aBmpEx.Crop( Rectangle( pAct->GetSrcPoint(), pAct->GetSrcSize() ) ); aBmpEx.Rotate( nAngle10, Color( COL_TRANSPARENT ) ); - + aMtf.AddAction( new MetaBmpExScaleAction( aBmpRect.TopLeft(), aBmpRect.GetSize(), aBmpEx ) ); } break; @@ -1393,8 +1464,8 @@ void GDIMetaFile::Rotate( long nAngle10 ) Rectangle aBmpRect( aBmpPoly.GetBoundRect() ); BitmapEx aBmpEx( pAct->GetBitmapEx() ); - aBmpEx.Rotate( nAngle10, Color( COL_TRANSPARENT ) ); - + aBmpEx.Rotate( nAngle10, Color( COL_TRANSPARENT ) ); + aMtf.AddAction( new MetaBmpExScaleAction( aBmpRect.TopLeft(), aBmpRect.GetSize(), aBmpEx ) ); } break; @@ -1408,7 +1479,7 @@ void GDIMetaFile::Rotate( long nAngle10 ) aBmpEx.Crop( Rectangle( pAct->GetSrcPoint(), pAct->GetSrcSize() ) ); aBmpEx.Rotate( nAngle10, Color( COL_TRANSPARENT ) ); - + aMtf.AddAction( new MetaBmpExScaleAction( aBmpRect.TopLeft(), aBmpRect.GetSize(), aBmpEx ) ); } break; @@ -1417,7 +1488,7 @@ void GDIMetaFile::Rotate( long nAngle10 ) { MetaGradientAction* pAct = (MetaGradientAction*) pAction; - ImplAddGradientEx( aMtf, aMapVDev, + ImplAddGradientEx( aMtf, aMapVDev, ImplGetRotatedPolygon( pAct->GetRect(), aRotAnchor, aRotOffset, fSin, fCos ), pAct->GetGradient() ); } @@ -1438,18 +1509,18 @@ void GDIMetaFile::Rotate( long nAngle10 ) if( pCommentAct->GetComment().Equals( "XGRAD_SEQ_BEGIN" ) ) { int nBeginComments( 1 ); - pAction = (MetaAction*) Next(); - + pAction = NextAction(); + // skip everything, except gradientex action while( pAction ) { const sal_uInt16 nType = pAction->GetType(); - + if( META_GRADIENTEX_ACTION == nType ) { // Add rotated gradientex MetaGradientExAction* pAct = (MetaGradientExAction*) pAction; - ImplAddGradientEx( aMtf, aMapVDev, + ImplAddGradientEx( aMtf, aMapVDev, ImplGetRotatedPolyPolygon( pAct->GetPolyPolygon(), aRotAnchor, aRotOffset, fSin, fCos ), pAct->GetGradient() ); } @@ -1473,7 +1544,7 @@ void GDIMetaFile::Rotate( long nAngle10 ) } - pAction = (MetaAction*) Next(); + pAction =NextAction(); } } else @@ -1526,7 +1597,7 @@ void GDIMetaFile::Rotate( long nAngle10 ) Hatch aHatch( pAct->GetHatch() ); aHatch.SetAngle( aHatch.GetAngle() + (sal_uInt16) nAngle10 ); - aMtf.AddAction( new MetaHatchAction( ImplGetRotatedPolyPolygon( pAct->GetPolyPolygon(), aRotAnchor, aRotOffset, fSin, fCos ), + aMtf.AddAction( new MetaHatchAction( ImplGetRotatedPolyPolygon( pAct->GetPolyPolygon(), aRotAnchor, aRotOffset, fSin, fCos ), aHatch ) ); } break; @@ -1547,7 +1618,7 @@ void GDIMetaFile::Rotate( long nAngle10 ) Rectangle aMtfRect( aMtfPoly.GetBoundRect() ); aTransMtf.Rotate( nAngle10 ); - aMtf.AddAction( new MetaFloatTransparentAction( aTransMtf, aMtfRect.TopLeft(), aMtfRect.GetSize(), + aMtf.AddAction( new MetaFloatTransparentAction( aTransMtf, aMtfRect.TopLeft(), aMtfRect.GetSize(), pAct->GetGradient() ) ); } break; @@ -1582,7 +1653,7 @@ void GDIMetaFile::Rotate( long nAngle10 ) case( META_ISECTRECTCLIPREGION_ACTION ): { MetaISectRectClipRegionAction* pAct = (MetaISectRectClipRegionAction*) pAction; - aMtf.AddAction( new MetaISectRegionClipRegionAction( ImplGetRotatedPolygon( pAct->GetRect(), aRotAnchor, aRotOffset, fSin, fCos ) ) ); + aMtf.AddAction( new MetaISectRegionClipRegionAction( ImplGetRotatedPolygon( pAct->GetRect(), aRotAnchor, aRotOffset, fSin, fCos ) ) ); } break; @@ -1638,7 +1709,7 @@ void GDIMetaFile::Rotate( long nAngle10 ) aMtf.AddAction( pAction ); // update rotation point and offset, if necessary - if( ( META_MAPMODE_ACTION == nActionType ) || + if( ( META_MAPMODE_ACTION == nActionType ) || ( META_PUSH_ACTION == nActionType ) || ( META_POP_ACTION == nActionType ) ) { @@ -1679,19 +1750,19 @@ Rectangle GDIMetaFile::GetBoundRect( OutputDevice& i_rReference ) { GDIMetaFile aMtf; VirtualDevice aMapVDev( i_rReference ); - + aMapVDev.EnableOutput( sal_False ); aMapVDev.SetMapMode( GetPrefMapMode() ); - + std::vector<Rectangle> aClipStack( 1, Rectangle() ); std::vector<sal_uInt16> aPushFlagStack; - + Rectangle aBound; - - for( MetaAction* pAction = (MetaAction*) First(); pAction; pAction = (MetaAction*) Next() ) + + for( MetaAction* pAction = FirstAction(); pAction; pAction = NextAction() ) { const sal_uInt16 nActionType = pAction->GetType(); - + switch( nActionType ) { case( META_PIXEL_ACTION ): @@ -1703,7 +1774,7 @@ Rectangle GDIMetaFile::GetBoundRect( OutputDevice& i_rReference ) aClipStack ); } break; - + case( META_POINT_ACTION ): { MetaPointAction* pAct = (MetaPointAction*) pAction; @@ -1713,7 +1784,7 @@ Rectangle GDIMetaFile::GetBoundRect( OutputDevice& i_rReference ) aClipStack ); } break; - + case( META_LINE_ACTION ): { MetaLineAction* pAct = (MetaLineAction*) pAction; @@ -1723,28 +1794,28 @@ Rectangle GDIMetaFile::GetBoundRect( OutputDevice& i_rReference ) ImplActionBounds( aBound, aMapVDev.LogicToLogic( aRect, aMapVDev.GetMapMode(), GetPrefMapMode() ), aClipStack ); } break; - + case( META_RECT_ACTION ): { MetaRectAction* pAct = (MetaRectAction*) pAction; ImplActionBounds( aBound, aMapVDev.LogicToLogic( pAct->GetRect(), aMapVDev.GetMapMode(), GetPrefMapMode() ), aClipStack ); } break; - + case( META_ROUNDRECT_ACTION ): { MetaRoundRectAction* pAct = (MetaRoundRectAction*) pAction; ImplActionBounds( aBound, aMapVDev.LogicToLogic( pAct->GetRect(), aMapVDev.GetMapMode(), GetPrefMapMode() ), aClipStack ); } break; - + case( META_ELLIPSE_ACTION ): { MetaEllipseAction* pAct = (MetaEllipseAction*) pAction; ImplActionBounds( aBound, aMapVDev.LogicToLogic( pAct->GetRect(), aMapVDev.GetMapMode(), GetPrefMapMode() ), aClipStack ); } break; - + case( META_ARC_ACTION ): { MetaArcAction* pAct = (MetaArcAction*) pAction; @@ -1753,7 +1824,7 @@ Rectangle GDIMetaFile::GetBoundRect( OutputDevice& i_rReference ) ImplActionBounds( aBound, aMapVDev.LogicToLogic( pAct->GetRect(), aMapVDev.GetMapMode(), GetPrefMapMode() ), aClipStack ); } break; - + case( META_PIE_ACTION ): { MetaPieAction* pAct = (MetaPieAction*) pAction; @@ -1762,7 +1833,7 @@ Rectangle GDIMetaFile::GetBoundRect( OutputDevice& i_rReference ) ImplActionBounds( aBound, aMapVDev.LogicToLogic( pAct->GetRect(), aMapVDev.GetMapMode(), GetPrefMapMode() ), aClipStack ); } break; - + case( META_CHORD_ACTION ): { MetaChordAction* pAct = (MetaChordAction*) pAction; @@ -1771,7 +1842,7 @@ Rectangle GDIMetaFile::GetBoundRect( OutputDevice& i_rReference ) ImplActionBounds( aBound, aMapVDev.LogicToLogic( pAct->GetRect(), aMapVDev.GetMapMode(), GetPrefMapMode() ), aClipStack ); } break; - + case( META_POLYLINE_ACTION ): { MetaPolyLineAction* pAct = (MetaPolyLineAction*) pAction; @@ -1779,7 +1850,7 @@ Rectangle GDIMetaFile::GetBoundRect( OutputDevice& i_rReference ) ImplActionBounds( aBound, aMapVDev.LogicToLogic( aRect, aMapVDev.GetMapMode(), GetPrefMapMode() ), aClipStack ); } break; - + case( META_POLYGON_ACTION ): { MetaPolygonAction* pAct = (MetaPolygonAction*) pAction; @@ -1787,7 +1858,7 @@ Rectangle GDIMetaFile::GetBoundRect( OutputDevice& i_rReference ) ImplActionBounds( aBound, aMapVDev.LogicToLogic( aRect, aMapVDev.GetMapMode(), GetPrefMapMode() ), aClipStack ); } break; - + case( META_POLYPOLYGON_ACTION ): { MetaPolyPolygonAction* pAct = (MetaPolyPolygonAction*) pAction; @@ -1795,7 +1866,7 @@ Rectangle GDIMetaFile::GetBoundRect( OutputDevice& i_rReference ) ImplActionBounds( aBound, aMapVDev.LogicToLogic( aRect, aMapVDev.GetMapMode(), GetPrefMapMode() ), aClipStack ); } break; - + case( META_TEXT_ACTION ): { MetaTextAction* pAct = (MetaTextAction*) pAction; @@ -1807,7 +1878,7 @@ Rectangle GDIMetaFile::GetBoundRect( OutputDevice& i_rReference ) ImplActionBounds( aBound, aMapVDev.LogicToLogic( aRect, aMapVDev.GetMapMode(), GetPrefMapMode() ), aClipStack ); } break; - + case( META_TEXTARRAY_ACTION ): { MetaTextArrayAction* pAct = (MetaTextArrayAction*) pAction; @@ -1820,10 +1891,10 @@ Rectangle GDIMetaFile::GetBoundRect( OutputDevice& i_rReference ) ImplActionBounds( aBound, aMapVDev.LogicToLogic( aRect, aMapVDev.GetMapMode(), GetPrefMapMode() ), aClipStack ); } break; - + case( META_STRETCHTEXT_ACTION ): { - MetaStretchTextAction* pAct = (MetaStretchTextAction*) pAction; + MetaStretchTextAction* pAct = (MetaStretchTextAction*) pAction; Rectangle aRect; // hdu said base = index aMapVDev.GetTextBoundRect( aRect, pAct->GetText(), pAct->GetIndex(), pAct->GetIndex(), pAct->GetLen(), @@ -1833,14 +1904,14 @@ Rectangle GDIMetaFile::GetBoundRect( OutputDevice& i_rReference ) ImplActionBounds( aBound, aMapVDev.LogicToLogic( aRect, aMapVDev.GetMapMode(), GetPrefMapMode() ), aClipStack ); } break; - + case( META_TEXTLINE_ACTION ): { MetaTextLineAction* pAct = (MetaTextLineAction*) pAction; // measure a test string to get ascend and descent right static const sal_Unicode pStr[] = { 0xc4, 0x67, 0 }; String aStr( pStr ); - + Rectangle aRect; aMapVDev.GetTextBoundRect( aRect, aStr, 0, 0, aStr.Len(), 0, NULL ); Point aPt( pAct->GetStartPoint() ); @@ -1849,7 +1920,7 @@ Rectangle GDIMetaFile::GetBoundRect( OutputDevice& i_rReference ) ImplActionBounds( aBound, aMapVDev.LogicToLogic( aRect, aMapVDev.GetMapMode(), GetPrefMapMode() ), aClipStack ); } break; - + case( META_BMPSCALE_ACTION ): { MetaBmpScaleAction* pAct = (MetaBmpScaleAction*) pAction; @@ -1857,7 +1928,7 @@ Rectangle GDIMetaFile::GetBoundRect( OutputDevice& i_rReference ) ImplActionBounds( aBound, aMapVDev.LogicToLogic( aRect, aMapVDev.GetMapMode(), GetPrefMapMode() ), aClipStack ); } break; - + case( META_BMPSCALEPART_ACTION ): { MetaBmpScalePartAction* pAct = (MetaBmpScalePartAction*) pAction; @@ -1865,7 +1936,7 @@ Rectangle GDIMetaFile::GetBoundRect( OutputDevice& i_rReference ) ImplActionBounds( aBound, aMapVDev.LogicToLogic( aRect, aMapVDev.GetMapMode(), GetPrefMapMode() ), aClipStack ); } break; - + case( META_BMPEXSCALE_ACTION ): { MetaBmpExScaleAction* pAct = (MetaBmpExScaleAction*) pAction; @@ -1873,7 +1944,7 @@ Rectangle GDIMetaFile::GetBoundRect( OutputDevice& i_rReference ) ImplActionBounds( aBound, aMapVDev.LogicToLogic( aRect, aMapVDev.GetMapMode(), GetPrefMapMode() ), aClipStack ); } break; - + case( META_BMPEXSCALEPART_ACTION ): { MetaBmpExScalePartAction* pAct = (MetaBmpExScalePartAction*) pAction; @@ -1881,7 +1952,7 @@ Rectangle GDIMetaFile::GetBoundRect( OutputDevice& i_rReference ) ImplActionBounds( aBound, aMapVDev.LogicToLogic( aRect, aMapVDev.GetMapMode(), GetPrefMapMode() ), aClipStack ); } break; - + case( META_GRADIENT_ACTION ): { MetaGradientAction* pAct = (MetaGradientAction*) pAction; @@ -1889,7 +1960,7 @@ Rectangle GDIMetaFile::GetBoundRect( OutputDevice& i_rReference ) ImplActionBounds( aBound, aMapVDev.LogicToLogic( aRect, aMapVDev.GetMapMode(), GetPrefMapMode() ), aClipStack ); } break; - + case( META_GRADIENTEX_ACTION ): { MetaGradientExAction* pAct = (MetaGradientExAction*) pAction; @@ -1897,13 +1968,13 @@ Rectangle GDIMetaFile::GetBoundRect( OutputDevice& i_rReference ) ImplActionBounds( aBound, aMapVDev.LogicToLogic( aRect, aMapVDev.GetMapMode(), GetPrefMapMode() ), aClipStack ); } break; - + case( META_COMMENT_ACTION ): { // nothing to do }; break; - + case( META_HATCH_ACTION ): { MetaHatchAction* pAct = (MetaHatchAction*) pAction; @@ -1911,7 +1982,7 @@ Rectangle GDIMetaFile::GetBoundRect( OutputDevice& i_rReference ) ImplActionBounds( aBound, aMapVDev.LogicToLogic( aRect, aMapVDev.GetMapMode(), GetPrefMapMode() ), aClipStack ); } break; - + case( META_TRANSPARENT_ACTION ): { MetaTransparentAction* pAct = (MetaTransparentAction*) pAction; @@ -1919,7 +1990,7 @@ Rectangle GDIMetaFile::GetBoundRect( OutputDevice& i_rReference ) ImplActionBounds( aBound, aMapVDev.LogicToLogic( aRect, aMapVDev.GetMapMode(), GetPrefMapMode() ), aClipStack ); } break; - + case( META_FLOATTRANSPARENT_ACTION ): { MetaFloatTransparentAction* pAct = (MetaFloatTransparentAction*) pAction; @@ -1937,14 +2008,14 @@ Rectangle GDIMetaFile::GetBoundRect( OutputDevice& i_rReference ) aRect.Right() = long(double(aRect.Right())*fX); aRect.Top() = long(double(aRect.Top())*fY); aRect.Bottom() = long(double(aRect.Bottom())*fY); - + // transform the rect to current VDev state aRect = aMapVDev.LogicToLogic( aRect, aTransMtf.GetPrefMapMode(), aMapVDev.GetMapMode() ); - + ImplActionBounds( aBound, aRect, aClipStack ); } break; - + case( META_EPS_ACTION ): { MetaEPSAction* pAct = (MetaEPSAction*) pAction; @@ -1952,7 +2023,7 @@ Rectangle GDIMetaFile::GetBoundRect( OutputDevice& i_rReference ) ImplActionBounds( aBound, aMapVDev.LogicToLogic( aRect, aMapVDev.GetMapMode(), GetPrefMapMode() ), aClipStack ); } break; - + case( META_CLIPREGION_ACTION ): { MetaClipRegionAction* pAct = (MetaClipRegionAction*) pAction; @@ -1962,7 +2033,7 @@ Rectangle GDIMetaFile::GetBoundRect( OutputDevice& i_rReference ) aClipStack.back() = Rectangle(); } break; - + case( META_ISECTRECTCLIPREGION_ACTION ): { MetaISectRectClipRegionAction* pAct = (MetaISectRectClipRegionAction*) pAction; @@ -1973,7 +2044,7 @@ Rectangle GDIMetaFile::GetBoundRect( OutputDevice& i_rReference ) aClipStack.back().Intersection( aRect ); } break; - + case( META_ISECTREGIONCLIPREGION_ACTION ): { MetaISectRegionClipRegionAction* pAct = (MetaISectRegionClipRegionAction*) pAction; @@ -1984,7 +2055,7 @@ Rectangle GDIMetaFile::GetBoundRect( OutputDevice& i_rReference ) aClipStack.back().Intersection( aRect ); } break; - + case( META_BMP_ACTION ): { MetaBmpAction* pAct = (MetaBmpAction*) pAction; @@ -1992,7 +2063,7 @@ Rectangle GDIMetaFile::GetBoundRect( OutputDevice& i_rReference ) ImplActionBounds( aBound, aMapVDev.LogicToLogic( aRect, aMapVDev.GetMapMode(), GetPrefMapMode() ), aClipStack ); } break; - + case( META_BMPEX_ACTION ): { MetaBmpExAction* pAct = (MetaBmpExAction*) pAction; @@ -2000,7 +2071,7 @@ Rectangle GDIMetaFile::GetBoundRect( OutputDevice& i_rReference ) ImplActionBounds( aBound, aMapVDev.LogicToLogic( aRect, aMapVDev.GetMapMode(), GetPrefMapMode() ), aClipStack ); } break; - + case( META_MASK_ACTION ): { MetaMaskAction* pAct = (MetaMaskAction*) pAction; @@ -2008,7 +2079,7 @@ Rectangle GDIMetaFile::GetBoundRect( OutputDevice& i_rReference ) ImplActionBounds( aBound, aMapVDev.LogicToLogic( aRect, aMapVDev.GetMapMode(), GetPrefMapMode() ), aClipStack ); } break; - + case( META_MASKSCALE_ACTION ): { MetaMaskScalePartAction* pAct = (MetaMaskScalePartAction*) pAction; @@ -2016,7 +2087,7 @@ Rectangle GDIMetaFile::GetBoundRect( OutputDevice& i_rReference ) ImplActionBounds( aBound, aMapVDev.LogicToLogic( aRect, aMapVDev.GetMapMode(), GetPrefMapMode() ), aClipStack ); } break; - + case( META_MASKSCALEPART_ACTION ): { MetaMaskScalePartAction* pAct = (MetaMaskScalePartAction*) pAction; @@ -2024,7 +2095,7 @@ Rectangle GDIMetaFile::GetBoundRect( OutputDevice& i_rReference ) ImplActionBounds( aBound, aMapVDev.LogicToLogic( aRect, aMapVDev.GetMapMode(), GetPrefMapMode() ), aClipStack ); } break; - + case( META_WALLPAPER_ACTION ): { MetaWallpaperAction* pAct = (MetaWallpaperAction*) pAction; @@ -2032,7 +2103,7 @@ Rectangle GDIMetaFile::GetBoundRect( OutputDevice& i_rReference ) ImplActionBounds( aBound, aMapVDev.LogicToLogic( aRect, aMapVDev.GetMapMode(), GetPrefMapMode() ), aClipStack ); } break; - + case( META_TEXTRECT_ACTION ): { MetaTextRectAction* pAct = (MetaTextRectAction*) pAction; @@ -2040,7 +2111,7 @@ Rectangle GDIMetaFile::GetBoundRect( OutputDevice& i_rReference ) ImplActionBounds( aBound, aMapVDev.LogicToLogic( aRect, aMapVDev.GetMapMode(), GetPrefMapMode() ), aClipStack ); } break; - + case( META_MOVECLIPREGION_ACTION ): { MetaMoveClipRegionAction* pAct = (MetaMoveClipRegionAction*) pAction; @@ -2052,11 +2123,11 @@ Rectangle GDIMetaFile::GetBoundRect( OutputDevice& i_rReference ) } } break; - + default: { pAction->Execute( &aMapVDev ); - + if( nActionType == META_PUSH_ACTION ) { MetaPushAction* pAct = (MetaPushAction*) pAction; @@ -2091,9 +2162,9 @@ Rectangle GDIMetaFile::GetBoundRect( OutputDevice& i_rReference ) Color GDIMetaFile::ImplColAdjustFnc( const Color& rColor, const void* pColParam ) { - return Color( rColor.GetTransparency(), - ( (const ImplColAdjustParam*) pColParam )->pMapR[ rColor.GetRed() ], - ( (const ImplColAdjustParam*) pColParam )->pMapG[ rColor.GetGreen() ], + return Color( rColor.GetTransparency(), + ( (const ImplColAdjustParam*) pColParam )->pMapR[ rColor.GetRed() ], + ( (const ImplColAdjustParam*) pColParam )->pMapG[ rColor.GetGreen() ], ( (const ImplColAdjustParam*) pColParam )->pMapB[ rColor.GetBlue() ] ); } @@ -2106,7 +2177,7 @@ BitmapEx GDIMetaFile::ImplBmpAdjustFnc( const BitmapEx& rBmpEx, const void* pBmp BitmapEx aRet( rBmpEx ); aRet.Adjust( p->nLuminancePercent, p->nContrastPercent, - p->nChannelRPercent, p->nChannelGPercent, p->nChannelBPercent, + p->nChannelRPercent, p->nChannelGPercent, p->nChannelBPercent, p->fGamma, p->bInvert ); return aRet; @@ -2170,17 +2241,17 @@ Color GDIMetaFile::ImplColReplaceFnc( const Color& rColor, const void* pColParam const sal_uLong nR = rColor.GetRed(), nG = rColor.GetGreen(), nB = rColor.GetBlue(); for( sal_uLong i = 0; i < ( (const ImplColReplaceParam*) pColParam )->nCount; i++ ) - { - if( ( ( (const ImplColReplaceParam*) pColParam )->pMinR[ i ] <= nR ) && + { + if( ( ( (const ImplColReplaceParam*) pColParam )->pMinR[ i ] <= nR ) && ( ( (const ImplColReplaceParam*) pColParam )->pMaxR[ i ] >= nR ) && ( ( (const ImplColReplaceParam*) pColParam )->pMinG[ i ] <= nG ) && ( ( (const ImplColReplaceParam*) pColParam )->pMaxG[ i ] >= nG ) && ( ( (const ImplColReplaceParam*) pColParam )->pMinB[ i ] <= nB ) && ( ( (const ImplColReplaceParam*) pColParam )->pMaxB[ i ] >= nB ) ) - { + { return( ( (const ImplColReplaceParam*) pColParam )->pDstCols[ i ] ); - } - } + } + } return rColor; } @@ -2199,7 +2270,7 @@ BitmapEx GDIMetaFile::ImplBmpReplaceFnc( const BitmapEx& rBmpEx, const void* pBm // ------------------------------------------------------------------------ -void GDIMetaFile::ImplExchangeColors( ColorExchangeFnc pFncCol, const void* pColParam, +void GDIMetaFile::ImplExchangeColors( ColorExchangeFnc pFncCol, const void* pColParam, BmpExchangeFnc pFncBmp, const void* pBmpParam ) { GDIMetaFile aMtf; @@ -2207,7 +2278,7 @@ void GDIMetaFile::ImplExchangeColors( ColorExchangeFnc pFncCol, const void* pCol aMtf.aPrefSize = aPrefSize; aMtf.aPrefMapMode = aPrefMapMode; - for( MetaAction* pAction = (MetaAction*) First(); pAction; pAction = (MetaAction*) Next() ) + for( MetaAction* pAction = FirstAction(); pAction; pAction = NextAction() ) { const sal_uInt16 nType = pAction->GetType(); @@ -2216,7 +2287,7 @@ void GDIMetaFile::ImplExchangeColors( ColorExchangeFnc pFncCol, const void* pCol case( META_PIXEL_ACTION ): { MetaPixelAction* pAct = (MetaPixelAction*) pAction; - aMtf.Insert( new MetaPixelAction( pAct->GetPoint(), pFncCol( pAct->GetColor(), pColParam ) ), LIST_APPEND ); + aMtf.push_back( new MetaPixelAction( pAct->GetPoint(), pFncCol( pAct->GetColor(), pColParam ) ) ); } break; @@ -2229,7 +2300,7 @@ void GDIMetaFile::ImplExchangeColors( ColorExchangeFnc pFncCol, const void* pCol else pAct = new MetaLineColorAction( pFncCol( pAct->GetColor(), pColParam ), sal_True ); - aMtf.Insert( pAct, LIST_APPEND ); + aMtf.push_back( pAct ); } break; @@ -2242,14 +2313,14 @@ void GDIMetaFile::ImplExchangeColors( ColorExchangeFnc pFncCol, const void* pCol else pAct = new MetaFillColorAction( pFncCol( pAct->GetColor(), pColParam ), sal_True ); - aMtf.Insert( pAct, LIST_APPEND ); + aMtf.push_back( pAct ); } break; case( META_TEXTCOLOR_ACTION ): { MetaTextColorAction* pAct = (MetaTextColorAction*) pAction; - aMtf.Insert( new MetaTextColorAction( pFncCol( pAct->GetColor(), pColParam ) ), LIST_APPEND ); + aMtf.push_back( new MetaTextColorAction( pFncCol( pAct->GetColor(), pColParam ) ) ); } break; @@ -2262,7 +2333,7 @@ void GDIMetaFile::ImplExchangeColors( ColorExchangeFnc pFncCol, const void* pCol else pAct = new MetaTextFillColorAction( pFncCol( pAct->GetColor(), pColParam ), sal_True ); - aMtf.Insert( pAct, LIST_APPEND ); + aMtf.push_back( pAct ); } break; @@ -2275,7 +2346,7 @@ void GDIMetaFile::ImplExchangeColors( ColorExchangeFnc pFncCol, const void* pCol else pAct = new MetaTextLineColorAction( pFncCol( pAct->GetColor(), pColParam ), sal_True ); - aMtf.Insert( pAct, LIST_APPEND ); + aMtf.push_back( pAct ); } break; @@ -2288,7 +2359,7 @@ void GDIMetaFile::ImplExchangeColors( ColorExchangeFnc pFncCol, const void* pCol else pAct = new MetaOverlineColorAction( pFncCol( pAct->GetColor(), pColParam ), sal_True ); - aMtf.Insert( pAct, LIST_APPEND ); + aMtf.push_back( pAct ); } break; @@ -2299,7 +2370,7 @@ void GDIMetaFile::ImplExchangeColors( ColorExchangeFnc pFncCol, const void* pCol aFont.SetColor( pFncCol( aFont.GetColor(), pColParam ) ); aFont.SetFillColor( pFncCol( aFont.GetFillColor(), pColParam ) ); - aMtf.Insert( new MetaFontAction( aFont ), LIST_APPEND ); + aMtf.push_back( new MetaFontAction( aFont ) ); } break; @@ -2323,7 +2394,7 @@ void GDIMetaFile::ImplExchangeColors( ColorExchangeFnc pFncCol, const void* pCol aWall.SetGradient( aGradient ); } - aMtf.Insert( new MetaWallpaperAction( rRect, aWall ), LIST_APPEND ); + aMtf.push_back( new MetaWallpaperAction( rRect, aWall ) ); } break; @@ -2338,59 +2409,58 @@ void GDIMetaFile::ImplExchangeColors( ColorExchangeFnc pFncCol, const void* pCol case( META_BMPSCALE_ACTION ): { MetaBmpScaleAction* pAct = (MetaBmpScaleAction*) pAction; - aMtf.Insert( new MetaBmpScaleAction( pAct->GetPoint(), pAct->GetSize(), - pFncBmp( pAct->GetBitmap(), pBmpParam ).GetBitmap() ), - LIST_APPEND ); + aMtf.push_back( new MetaBmpScaleAction( pAct->GetPoint(), pAct->GetSize(), + pFncBmp( pAct->GetBitmap(), pBmpParam ).GetBitmap() ) ); } break; case( META_BMPSCALEPART_ACTION ): { MetaBmpScalePartAction* pAct = (MetaBmpScalePartAction*) pAction; - aMtf.Insert( new MetaBmpScalePartAction( pAct->GetDestPoint(), pAct->GetDestSize(), - pAct->GetSrcPoint(), pAct->GetSrcSize(), - pFncBmp( pAct->GetBitmap(), pBmpParam ).GetBitmap() ), - LIST_APPEND ); + aMtf.push_back( new MetaBmpScalePartAction( pAct->GetDestPoint(), pAct->GetDestSize(), + pAct->GetSrcPoint(), pAct->GetSrcSize(), + pFncBmp( pAct->GetBitmap(), pBmpParam ).GetBitmap() ) + ); } break; case( META_BMPEXSCALE_ACTION ): { MetaBmpExScaleAction* pAct = (MetaBmpExScaleAction*) pAction; - aMtf.Insert( new MetaBmpExScaleAction( pAct->GetPoint(), pAct->GetSize(), - pFncBmp( pAct->GetBitmapEx(), pBmpParam ) ), - LIST_APPEND ); + aMtf.push_back( new MetaBmpExScaleAction( pAct->GetPoint(), pAct->GetSize(), + pFncBmp( pAct->GetBitmapEx(), pBmpParam ) ) + ); } break; case( META_BMPEXSCALEPART_ACTION ): { MetaBmpExScalePartAction* pAct = (MetaBmpExScalePartAction*) pAction; - aMtf.Insert( new MetaBmpExScalePartAction( pAct->GetDestPoint(), pAct->GetDestSize(), - pAct->GetSrcPoint(), pAct->GetSrcSize(), - pFncBmp( pAct->GetBitmapEx(), pBmpParam ) ), - LIST_APPEND ); + aMtf.push_back( new MetaBmpExScalePartAction( pAct->GetDestPoint(), pAct->GetDestSize(), + pAct->GetSrcPoint(), pAct->GetSrcSize(), + pFncBmp( pAct->GetBitmapEx(), pBmpParam ) ) + ); } break; case( META_MASKSCALE_ACTION ): { MetaMaskScaleAction* pAct = (MetaMaskScaleAction*) pAction; - aMtf.Insert( new MetaMaskScaleAction( pAct->GetPoint(), pAct->GetSize(), - pAct->GetBitmap(), - pFncCol( pAct->GetColor(), pColParam ) ), - LIST_APPEND ); + aMtf.push_back( new MetaMaskScaleAction( pAct->GetPoint(), pAct->GetSize(), + pAct->GetBitmap(), + pFncCol( pAct->GetColor(), pColParam ) ) + ); } break; case( META_MASKSCALEPART_ACTION ): { MetaMaskScalePartAction* pAct = (MetaMaskScalePartAction*) pAction; - aMtf.Insert( new MetaMaskScalePartAction( pAct->GetDestPoint(), pAct->GetDestSize(), - pAct->GetSrcPoint(), pAct->GetSrcSize(), - pAct->GetBitmap(), - pFncCol( pAct->GetColor(), pColParam ) ), - LIST_APPEND ); + aMtf.push_back( new MetaMaskScalePartAction( pAct->GetDestPoint(), pAct->GetDestSize(), + pAct->GetSrcPoint(), pAct->GetSrcSize(), + pAct->GetBitmap(), + pFncCol( pAct->GetColor(), pColParam ) ) + ); } break; @@ -2401,7 +2471,7 @@ void GDIMetaFile::ImplExchangeColors( ColorExchangeFnc pFncCol, const void* pCol aGradient.SetStartColor( pFncCol( aGradient.GetStartColor(), pColParam ) ); aGradient.SetEndColor( pFncCol( aGradient.GetEndColor(), pColParam ) ); - aMtf.Insert( new MetaGradientAction( pAct->GetRect(), aGradient ), LIST_APPEND ); + aMtf.push_back( new MetaGradientAction( pAct->GetRect(), aGradient ) ); } break; @@ -2412,7 +2482,7 @@ void GDIMetaFile::ImplExchangeColors( ColorExchangeFnc pFncCol, const void* pCol aGradient.SetStartColor( pFncCol( aGradient.GetStartColor(), pColParam ) ); aGradient.SetEndColor( pFncCol( aGradient.GetEndColor(), pColParam ) ); - aMtf.Insert( new MetaGradientExAction( pAct->GetPolyPolygon(), aGradient ), LIST_APPEND ); + aMtf.push_back( new MetaGradientExAction( pAct->GetPolyPolygon(), aGradient ) ); } break; @@ -2422,7 +2492,7 @@ void GDIMetaFile::ImplExchangeColors( ColorExchangeFnc pFncCol, const void* pCol Hatch aHatch( pAct->GetHatch() ); aHatch.SetColor( pFncCol( aHatch.GetColor(), pColParam ) ); - aMtf.Insert( new MetaHatchAction( pAct->GetPolyPolygon(), aHatch ), LIST_APPEND ); + aMtf.push_back( new MetaHatchAction( pAct->GetPolyPolygon(), aHatch ) ); } break; @@ -2432,10 +2502,10 @@ void GDIMetaFile::ImplExchangeColors( ColorExchangeFnc pFncCol, const void* pCol GDIMetaFile aTransMtf( pAct->GetGDIMetaFile() ); aTransMtf.ImplExchangeColors( pFncCol, pColParam, pFncBmp, pBmpParam ); - aMtf.Insert( new MetaFloatTransparentAction( aTransMtf, - pAct->GetPoint(), pAct->GetSize(), - pAct->GetGradient() ), - LIST_APPEND ); + aMtf.push_back( new MetaFloatTransparentAction( aTransMtf, + pAct->GetPoint(), pAct->GetSize(), + pAct->GetGradient() ) + ); } break; @@ -2445,16 +2515,16 @@ void GDIMetaFile::ImplExchangeColors( ColorExchangeFnc pFncCol, const void* pCol GDIMetaFile aSubst( pAct->GetSubstitute() ); aSubst.ImplExchangeColors( pFncCol, pColParam, pFncBmp, pBmpParam ); - aMtf.Insert( new MetaEPSAction( pAct->GetPoint(), pAct->GetSize(), - pAct->GetLink(), aSubst ), - LIST_APPEND ); + aMtf.push_back( new MetaEPSAction( pAct->GetPoint(), pAct->GetSize(), + pAct->GetLink(), aSubst ) + ); } break; default: { pAction->Duplicate(); - aMtf.Insert( pAction, LIST_APPEND ); + aMtf.push_back( pAction ); } break; } @@ -2641,7 +2711,7 @@ sal_uLong GDIMetaFile::GetChecksum() const SVBT32 aBT32; sal_uLong nCrc = 0; - for( sal_uLong i = 0, nObjCount = GetActionCount(); i < nObjCount; i++ ) + for( size_t i = 0, nObjCount = GetActionSize(); i < nObjCount; i++ ) { MetaAction* pAction = GetAction( i ); @@ -2823,7 +2893,7 @@ sal_uLong GDIMetaFile::GetChecksum() const nCrc = rtl_crc32( nCrc, aBT32, 4 ); } break; - + case( META_MASKSCALE_ACTION ): { MetaMaskScaleAction* pAct = (MetaMaskScaleAction*) pAction; @@ -2916,7 +2986,7 @@ sal_uLong GDIMetaFile::GetSizeBytes() const { sal_uLong nSizeBytes = 0; - for( sal_uLong i = 0, nObjCount = GetActionCount(); i < nObjCount; ++i ) + for( size_t i = 0, nObjCount = GetActionSize(); i < nObjCount; ++i ) { MetaAction* pAction = GetAction( i ); @@ -2929,21 +2999,21 @@ sal_uLong GDIMetaFile::GetSizeBytes() const case( META_BMP_ACTION ): nSizeBytes += ( (MetaBmpAction*) pAction )->GetBitmap().GetSizeBytes(); break; case( META_BMPSCALE_ACTION ): nSizeBytes += ( (MetaBmpScaleAction*) pAction )->GetBitmap().GetSizeBytes(); break; case( META_BMPSCALEPART_ACTION ): nSizeBytes += ( (MetaBmpScalePartAction*) pAction )->GetBitmap().GetSizeBytes(); break; - + case( META_BMPEX_ACTION ): nSizeBytes += ( (MetaBmpExAction*) pAction )->GetBitmapEx().GetSizeBytes(); break; case( META_BMPEXSCALE_ACTION ): nSizeBytes += ( (MetaBmpExScaleAction*) pAction )->GetBitmapEx().GetSizeBytes(); break; case( META_BMPEXSCALEPART_ACTION ): nSizeBytes += ( (MetaBmpExScalePartAction*) pAction )->GetBitmapEx().GetSizeBytes(); break; - + case( META_MASK_ACTION ): nSizeBytes += ( (MetaMaskAction*) pAction )->GetBitmap().GetSizeBytes(); break; case( META_MASKSCALE_ACTION ): nSizeBytes += ( (MetaMaskScaleAction*) pAction )->GetBitmap().GetSizeBytes(); break; case( META_MASKSCALEPART_ACTION ): nSizeBytes += ( (MetaMaskScalePartAction*) pAction )->GetBitmap().GetSizeBytes(); break; - + case( META_POLYLINE_ACTION ): nSizeBytes += ( ( (MetaPolyLineAction*) pAction )->GetPolygon().GetSize() * sizeof( Point ) ); break; case( META_POLYGON_ACTION ): nSizeBytes += ( ( (MetaPolygonAction*) pAction )->GetPolygon().GetSize() * sizeof( Point ) ); break; case( META_POLYPOLYGON_ACTION ): { const PolyPolygon& rPolyPoly = ( (MetaPolyPolygonAction*) pAction )->GetPolyPolygon(); - + for( sal_uInt16 n = 0; n < rPolyPoly.Count(); ++n ) nSizeBytes += ( rPolyPoly[ n ].GetSize() * sizeof( Point ) ); } @@ -2952,22 +3022,22 @@ sal_uLong GDIMetaFile::GetSizeBytes() const case( META_TEXT_ACTION ): nSizeBytes += ( ( (MetaTextAction*) pAction )->GetText().Len() * sizeof( sal_Unicode ) ); break; case( META_STRETCHTEXT_ACTION ): nSizeBytes += ( ( (MetaStretchTextAction*) pAction )->GetText().Len() * sizeof( sal_Unicode ) ); break; case( META_TEXTRECT_ACTION ): nSizeBytes += ( ( (MetaTextRectAction*) pAction )->GetText().Len() * sizeof( sal_Unicode ) ); break; - case( META_TEXTARRAY_ACTION ): + case( META_TEXTARRAY_ACTION ): { MetaTextArrayAction* pTextArrayAction = (MetaTextArrayAction*) pAction; - + nSizeBytes += ( pTextArrayAction->GetText().Len() * sizeof( sal_Unicode ) ); - + if( pTextArrayAction->GetDXArray() ) nSizeBytes += ( pTextArrayAction->GetLen() << 2 ); } break; - + default: break; } } - + return( nSizeBytes ); } @@ -3076,18 +3146,18 @@ SvStream& GDIMetaFile::Write( SvStream& rOStm ) rOStm << nStmCompressMode; rOStm << aPrefMapMode; rOStm << aPrefSize; - rOStm << (sal_uInt32) GetActionCount(); + rOStm << (sal_uInt32) GetActionSize(); delete pCompat; ImplMetaWriteData aWriteData; aWriteData.meActualCharSet = rOStm.GetStreamCharSet(); - MetaAction* pAct = (MetaAction*)First(); + MetaAction* pAct = FirstAction(); while ( pAct ) { pAct->Write( rOStm, &aWriteData ); - pAct = (MetaAction*)Next(); + pAct = NextAction(); } rOStm.SetNumberFormatInt( nOldFormat ); @@ -3098,7 +3168,7 @@ SvStream& GDIMetaFile::Write( SvStream& rOStm ) // ------------------------------------------------------------------------ sal_Bool GDIMetaFile::CreateThumbnail( sal_uInt32 nMaximumExtent, - BitmapEx& rBmpEx, + BitmapEx& rBmpEx, const BitmapEx* pOverlay, const Rectangle* pOverlayRect ) const { @@ -3112,7 +3182,7 @@ sal_Bool GDIMetaFile::CreateThumbnail( sal_uInt32 nMaximumExtent, Size aDrawSize( aVDev.LogicToPixel( GetPrefSize(), GetPrefMapMode() ) ); Size aSizePix( labs( aBRPix.X() - aTLPix.X() ) + 1, labs( aBRPix.Y() - aTLPix.Y() ) + 1 ); Point aPosPix; - + if ( !rBmpEx.IsEmpty() ) rBmpEx.SetEmpty(); @@ -3137,11 +3207,11 @@ sal_Bool GDIMetaFile::CreateThumbnail( sal_uInt32 nMaximumExtent, aSizePix.Width() = nMaximumExtent; aSizePix.Height() = FRound( nMaximumExtent / fWH ); } - + aDrawSize.Width() = FRound( ( static_cast< double >( aDrawSize.Width() ) * aSizePix.Width() ) / aOldSizePix.Width() ); aDrawSize.Height() = FRound( ( static_cast< double >( aDrawSize.Height() ) * aSizePix.Height() ) / aOldSizePix.Height() ); } - + Size aFullSize; Point aBackPosPix; Rectangle aOverlayRect; @@ -3151,9 +3221,9 @@ sal_Bool GDIMetaFile::CreateThumbnail( sal_uInt32 nMaximumExtent, { aFullSize = Size( nMaximumExtent, nMaximumExtent ); aOverlayRect = Rectangle( aNullPt, aFullSize ); - + aOverlayRect.Intersection( pOverlayRect ? *pOverlayRect : Rectangle( aNullPt, pOverlay->GetSizePixel() ) ); - + if ( !aOverlayRect.IsEmpty() ) aBackPosPix = Point( ( nMaximumExtent - aSizePix.Width() ) >> 1, ( nMaximumExtent - aSizePix.Height() ) >> 1 ); else @@ -3164,36 +3234,36 @@ sal_Bool GDIMetaFile::CreateThumbnail( sal_uInt32 nMaximumExtent, aFullSize = aSizePix; pOverlay = NULL; } - + // draw image(s) into VDev and get resulting image if ( aVDev.SetOutputSizePixel( aFullSize ) ) { // draw metafile into VDev const_cast<GDIMetaFile *>(this)->WindStart(); const_cast<GDIMetaFile *>(this)->Play( &aVDev, aBackPosPix, aDrawSize ); - + // draw overlay if neccessary if ( pOverlay ) aVDev.DrawBitmapEx( aOverlayRect.TopLeft(), aOverlayRect.GetSize(), *pOverlay ); - + // get paint bitmap Bitmap aBmp( aVDev.GetBitmap( aNullPt, aVDev.GetOutputSizePixel() ) ); - + // assure that we have a true color image if ( aBmp.GetBitCount() != 24 ) aBmp.Convert( BMP_CONVERSION_24BIT ); - + // create resulting mask bitmap with metafile output set to black GDIMetaFile aMonchromeMtf( GetMonochromeMtf( COL_BLACK ) ); aVDev.DrawWallpaper( Rectangle( aNullPt, aSizePix ), Wallpaper( Color( COL_WHITE ) ) ); aMonchromeMtf.WindStart(); aMonchromeMtf.Play( &aVDev, aBackPosPix, aDrawSize ); - + // watch for overlay mask if ( pOverlay ) { Bitmap aOverlayMergeBmp( aVDev.GetBitmap( aOverlayRect.TopLeft(), aOverlayRect.GetSize() ) ); - + // create ANDed resulting mask at overlay area if ( pOverlay->IsTransparent() ) aVDev.DrawBitmap( aOverlayRect.TopLeft(), aOverlayRect.GetSize(), pOverlay->GetMask() ); @@ -3202,15 +3272,15 @@ sal_Bool GDIMetaFile::CreateThumbnail( sal_uInt32 nMaximumExtent, aVDev.SetLineColor( COL_BLACK ); aVDev.SetFillColor( COL_BLACK ); aVDev.DrawRect( aOverlayRect); - } - + } + aOverlayMergeBmp.CombineSimple( aVDev.GetBitmap( aOverlayRect.TopLeft(), aOverlayRect.GetSize() ), BMP_COMBINE_AND ); aVDev.DrawBitmap( aOverlayRect.TopLeft(), aOverlayRect.GetSize(), aOverlayMergeBmp ); } - + rBmpEx = BitmapEx( aBmp, aVDev.GetBitmap( aNullPt, aVDev.GetOutputSizePixel() ) ); } - + return !rBmpEx.IsEmpty(); } diff --git a/vcl/source/gdi/impvect.cxx b/vcl/source/gdi/impvect.cxx index 9394fd165d..75ebe6fcde 100644 --- a/vcl/source/gdi/impvect.cxx +++ b/vcl/source/gdi/impvect.cxx @@ -2,7 +2,7 @@ /************************************************************************* * * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * + * * Copyright 2000, 2010 Oracle and/or its affiliates. * * OpenOffice.org - a multi-platform office productivity suite @@ -820,7 +820,7 @@ sal_Bool ImplVectorizer::ImplVectorize( const Bitmap& rColorBmp, GDIMetaFile& rM delete[] (sal_uInt8*) pColorSet; - if( rMtf.GetActionCount() ) + if( rMtf.GetActionSize() ) { MapMode aMap( MAP_100TH_MM ); VirtualDevice aVDev; @@ -929,7 +929,7 @@ sal_Bool ImplVectorizer::ImplVectorize( const Bitmap& rMonoBmp, rPolyPoly.Remove( static_cast< sal_uInt16 >( nFirstPoly ) ); rPolyPoly.Insert( aFirst, 0 ); } - + bRet = sal_True; } diff --git a/vcl/source/gdi/pdfextoutdevdata.cxx b/vcl/source/gdi/pdfextoutdevdata.cxx index 3c82204b3d..4c18c4b8f9 100644 --- a/vcl/source/gdi/pdfextoutdevdata.cxx +++ b/vcl/source/gdi/pdfextoutdevdata.cxx @@ -2,7 +2,7 @@ /************************************************************************* * * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * + * * Copyright 2000, 2010 Oracle and/or its affiliates. * * OpenOffice.org - a multi-platform office productivity suite @@ -119,7 +119,7 @@ sal_Int32 GlobalSyncData::GetMappedId() nLinkId = mParaIds[ nLinkId ]; else nLinkId = -1; - + DBG_ASSERT( nLinkId >= 0, "unmapped id in GlobalSyncData" ); } @@ -300,7 +300,7 @@ void PageSyncData::PushAction( const OutputDevice& rOutDev, const PDFExtOutDevDa PDFExtOutDevDataSync aSync; aSync.eAct = eAct; if ( pMtf ) - aSync.nIdx = pMtf->GetActionCount(); + aSync.nIdx = pMtf->GetActionSize(); else aSync.nIdx = 0x7fffffff; // sync not possible mActions.push_back( aSync ); @@ -377,7 +377,7 @@ sal_Bool PageSyncData::PlaySyncPageAct( PDFWriter& rWriter, sal_uInt32& rCurGDIM break; case PDFExtOutDevDataSync::BeginGroup : { - /* first determining if this BeginGroup is starting a GfxLink, + /* first determining if this BeginGroup is starting a GfxLink, by searching for a EndGroup or a EndGroupGfxLink */ mbGroupIgnoreGDIMtfActions = sal_False; std::deque< PDFExtOutDevDataSync >::iterator aBeg = mActions.begin(); @@ -610,7 +610,7 @@ void PDFExtOutDevData::PlayGlobalActions( PDFWriter& rWriter ) //--->i56629 sal_Int32 PDFExtOutDevData::CreateNamedDest(const String& sDestName, const Rectangle& rRect, sal_Int32 nPageNr, PDFWriter::DestAreaType eType ) { - mpGlobalSyncData->mActions.push_back( PDFExtOutDevDataSync::CreateNamedDest ); + mpGlobalSyncData->mActions.push_back( PDFExtOutDevDataSync::CreateNamedDest ); mpGlobalSyncData->mParaOUStrings.push_back( sDestName ); mpGlobalSyncData->mParaRects.push_back( rRect ); mpGlobalSyncData->mParaMapModes.push_back( mrOutDev.GetMapMode() ); diff --git a/vcl/source/gdi/pdfwriter_impl2.cxx b/vcl/source/gdi/pdfwriter_impl2.cxx index 28e35d93aa..0f78f592cf 100644 --- a/vcl/source/gdi/pdfwriter_impl2.cxx +++ b/vcl/source/gdi/pdfwriter_impl2.cxx @@ -1,7 +1,7 @@ /************************************************************************* * * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * + * * Copyright 2000, 2010 Oracle and/or its affiliates. * * OpenOffice.org - a multi-platform office productivity suite @@ -214,7 +214,7 @@ void PDFWriterImpl::implWriteBitmapEx( const Point& i_rPoint, const Size& i_rSiz else { aStrm.Seek( STREAM_SEEK_TO_END ); - + xSeekable->seek( 0 ); Sequence< PropertyValue > aArgs( 1 ); aArgs[ 0 ].Name = ::rtl::OUString::createFromAscii( "InputStream" ); @@ -264,7 +264,7 @@ void PDFWriterImpl::playMetafile( const GDIMetaFile& i_rMtf, vcl::PDFExtOutDevDa } GDIMetaFile aMtf( i_rMtf ); - for( sal_uInt32 i = 0, nCount = aMtf.GetActionCount(); i < nCount; ) + for( size_t i = 0, nCount = aMtf.GetActionSize(); i < nCount; ) { if ( !i_pOutDevData || !i_pOutDevData->PlaySyncPageAct( m_rOuterFace, i ) ) { @@ -408,7 +408,7 @@ void PDFWriterImpl::playMetafile( const GDIMetaFile& i_rMtf, vcl::PDFExtOutDevDa const Point& rPos = pA->GetPoint(); const Size& rSize= pA->GetSize(); const Gradient& rTransparenceGradient = pA->GetGradient(); - + // special case constant alpha value if( rTransparenceGradient.GetStartColor() == rTransparenceGradient.GetEndColor() ) { @@ -438,12 +438,12 @@ void PDFWriterImpl::playMetafile( const GDIMetaFile& i_rMtf, vcl::PDFExtOutDevDa Bitmap aPaint, aMask; AlphaMask aAlpha; Point aPoint; - + MapMode aMapMode( pDummyVDev->GetMapMode() ); aMapMode.SetOrigin( aPoint ); pVDev->SetMapMode( aMapMode ); Size aDstSize( pVDev->PixelToLogic( aDstSizePixel ) ); - + Point aMtfOrigin( aTmpMtf.GetPrefMapMode().GetOrigin() ); if ( aMtfOrigin.X() || aMtfOrigin.Y() ) aTmpMtf.Move( -aMtfOrigin.X(), -aMtfOrigin.Y() ); @@ -452,16 +452,16 @@ void PDFWriterImpl::playMetafile( const GDIMetaFile& i_rMtf, vcl::PDFExtOutDevDa if( fScaleX != 1.0 || fScaleY != 1.0 ) aTmpMtf.Scale( fScaleX, fScaleY ); aTmpMtf.SetPrefMapMode( aMapMode ); - + // create paint bitmap aTmpMtf.WindStart(); aTmpMtf.Play( pVDev, aPoint, aDstSize ); aTmpMtf.WindStart(); - + pVDev->EnableMapMode( sal_False ); aPaint = pVDev->GetBitmap( aPoint, aDstSizePixel ); pVDev->EnableMapMode( sal_True ); - + // create mask bitmap pVDev->SetLineColor( COL_BLACK ); pVDev->SetFillColor( COL_BLACK ); @@ -474,7 +474,7 @@ void PDFWriterImpl::playMetafile( const GDIMetaFile& i_rMtf, vcl::PDFExtOutDevDa pVDev->EnableMapMode( sal_False ); aMask = pVDev->GetBitmap( aPoint, aDstSizePixel ); pVDev->EnableMapMode( sal_True ); - + // create alpha mask from gradient pVDev->SetDrawMode( DRAWMODE_GRAYGRADIENT ); pVDev->DrawGradient( Rectangle( aPoint, aDstSize ), rTransparenceGradient ); @@ -613,21 +613,21 @@ void PDFWriterImpl::playMetafile( const GDIMetaFile& i_rMtf, vcl::PDFExtOutDevDa for(sal_uInt16 a(0); a + 1 < nPoints; a++) { - if(bCurve + if(bCurve && POLY_NORMAL != aPath.GetFlags(a + 1) && a + 2 < nPoints && POLY_NORMAL != aPath.GetFlags(a + 2) && a + 3 < nPoints) { - const Polygon aSnippet(4, - aPath.GetConstPointAry() + a, + const Polygon aSnippet(4, + aPath.GetConstPointAry() + a, aPath.GetConstFlagAry() + a); m_rOuterFace.DrawPolyLine( aSnippet, aInfo ); a += 2; } else { - const Polygon aSnippet(2, + const Polygon aSnippet(2, aPath.GetConstPointAry() + a); m_rOuterFace.DrawPolyLine( aSnippet, aInfo ); } @@ -1076,7 +1076,7 @@ class EncHashTransporter : public cppu::WeakImplHelper1 < com::sun::star::beans: rtlDigest maUDigest; sal_IntPtr maID; std::vector< sal_uInt8 > maOValue; - + static std::map< sal_IntPtr, EncHashTransporter* > sTransporters; public: EncHashTransporter() @@ -1087,7 +1087,7 @@ public: maID++; sTransporters[ maID ] = this; } - + virtual ~EncHashTransporter() { sTransporters.erase( maID ); @@ -1095,7 +1095,7 @@ public: rtl_digest_destroyMD5( maUDigest ); OSL_TRACE( "EncHashTransporter freed\n" ); } - + rtlDigest getUDigest() const { return maUDigest; }; std::vector< sal_uInt8 >& getOValue() { return maOValue; } void invalidate() @@ -1106,15 +1106,15 @@ public: maUDigest = NULL; } } - + // XMaterialHolder virtual uno::Any SAL_CALL getMaterial() throw() { return uno::makeAny( sal_Int64(maID) ); } - + static EncHashTransporter* getEncHashTransporter( const uno::Reference< beans::XMaterialHolder >& ); - + }; std::map< sal_IntPtr, EncHashTransporter* > EncHashTransporter::sTransporters; @@ -1164,7 +1164,7 @@ void PDFWriterImpl::checkAndEnableStreamEncryption( register sal_Int32 nObject ) // do the MD5 hash sal_uInt8 nMD5Sum[ RTL_DIGEST_LENGTH_MD5 ]; // the i+2 to take into account the generation number, always zero - rtl_digest_MD5( &m_aContext.Encryption.EncryptionKey[0], i+2, nMD5Sum, sizeof(nMD5Sum) ); + rtl_digest_MD5( &m_aContext.Encryption.EncryptionKey[0], i+2, nMD5Sum, sizeof(nMD5Sum) ); // initialize the RC4 with the key // key legth: see algoritm 3.1, step 4: (N+5) max 16 rtl_cipher_initARCFOUR( m_aCipher, rtl_Cipher_DirectionEncode, nMD5Sum, m_nRC4KeyLength, NULL, 0 ); @@ -1183,7 +1183,7 @@ void PDFWriterImpl::enableStringEncryption( register sal_Int32 nObject ) // do the MD5 hash sal_uInt8 nMD5Sum[ RTL_DIGEST_LENGTH_MD5 ]; // the i+2 to take into account the generation number, always zero - rtl_digest_MD5( &m_aContext.Encryption.EncryptionKey[0], i+2, nMD5Sum, sizeof(nMD5Sum) ); + rtl_digest_MD5( &m_aContext.Encryption.EncryptionKey[0], i+2, nMD5Sum, sizeof(nMD5Sum) ); // initialize the RC4 with the key // key legth: see algoritm 3.1, step 4: (N+5) max 16 rtl_cipher_initARCFOUR( m_aCipher, rtl_Cipher_DirectionEncode, nMD5Sum, m_nRC4KeyLength, NULL, 0 ); @@ -1204,7 +1204,7 @@ uno::Reference< beans::XMaterialHolder > PDFWriterImpl::initEncryption( const rt { EncHashTransporter* pTransporter = new EncHashTransporter; xResult = pTransporter; - + // get padded passwords sal_uInt8 aPadUPW[ENCRYPTED_PWD_SIZE], aPadOPW[ENCRYPTED_PWD_SIZE]; padPassword( i_rOwnerPassword.getLength() ? i_rOwnerPassword : i_rUserPassword, aPadOPW ); @@ -1212,7 +1212,7 @@ uno::Reference< beans::XMaterialHolder > PDFWriterImpl::initEncryption( const rt sal_Int32 nKeyLength = SECUR_40BIT_KEY; if( b128Bit ) nKeyLength = SECUR_128BIT_KEY; - + if( computeODictionaryValue( aPadOPW, aPadUPW, pTransporter->getOValue(), nKeyLength ) ) { rtlDigest aDig = pTransporter->getUDigest(); @@ -1221,7 +1221,7 @@ uno::Reference< beans::XMaterialHolder > PDFWriterImpl::initEncryption( const rt } else xResult.clear(); - + // trash temporary padded cleartext PWDs rtl_zeroMemory( aPadOPW, sizeof(aPadOPW) ); rtl_zeroMemory( aPadUPW, sizeof(aPadUPW) ); @@ -1255,13 +1255,13 @@ sal_Int32 PDFWriterImpl::computeAccessPermissions( const vcl::PDFWriter::PDFEncr { /* 2) compute the access permissions, in numerical form - + the default value depends on the revision 2 (40 bit) or 3 (128 bit security): - for 40 bit security the unused bit must be set to 1, since they are not used - for 128 bit security the same bit must be preset to 0 and set later if needed according to the table 3.15, pdf v 1.4 */ sal_Int32 nAccessPermissions = ( i_rProperties.Security128bit ) ? 0xfffff0c0 : 0xffffffc0 ; - + /* check permissions for 40 bit security case */ nAccessPermissions |= ( i_rProperties.CanPrintTheDocument ) ? 1 << 2 : 0; nAccessPermissions |= ( i_rProperties.CanModifyTheContent ) ? 1 << 3 : 0; @@ -1269,7 +1269,7 @@ sal_Int32 PDFWriterImpl::computeAccessPermissions( const vcl::PDFWriter::PDFEncr nAccessPermissions |= ( i_rProperties.CanAddOrModify ) ? 1 << 5 : 0; o_rKeyLength = SECUR_40BIT_KEY; o_rRC4KeyLength = SECUR_40BIT_KEY+5; // for this value see PDF spec v 1.4, algorithm 3.1 step 4, where n is 5 - + if( i_rProperties.Security128bit ) { o_rKeyLength = SECUR_128BIT_KEY; @@ -1304,7 +1304,7 @@ void PDFWriterImpl::padPassword( const rtl::OUString& i_rPassword, sal_uInt8* o_ sal_Int32 i,y; for( i = nCurrentChar, y = 0 ; i < ENCRYPTED_PWD_SIZE; i++, y++ ) o_pPaddedPW[i] = s_nPadString[y]; - + // trash memory of temporary clear text password rtl_zeroMemory( (sal_Char*)aString.getStr(), aString.getLength() ); } @@ -1336,15 +1336,15 @@ bool PDFWriterImpl::computeEncryptionKey( EncHashTransporter* i_pTransporter, vc bSuccess = false; //Step 4 sal_uInt8 nPerm[4]; - + nPerm[0] = (sal_uInt8)i_nAccessPermissions; nPerm[1] = (sal_uInt8)( i_nAccessPermissions >> 8 ); nPerm[2] = (sal_uInt8)( i_nAccessPermissions >> 16 ); nPerm[3] = (sal_uInt8)( i_nAccessPermissions >> 24 ); - + if( nError == rtl_Digest_E_None ) nError = rtl_digest_updateMD5( aDigest, nPerm , sizeof( nPerm ) ); - + //step 5, get the document ID, binary form if( nError == rtl_Digest_E_None ) nError = rtl_digest_updateMD5( aDigest, &io_rProperties.DocumentIdentifier[0], sal_Int32(io_rProperties.DocumentIdentifier.size()) ); @@ -1352,7 +1352,7 @@ bool PDFWriterImpl::computeEncryptionKey( EncHashTransporter* i_pTransporter, vc if( nError == rtl_Digest_E_None ) { rtl_digest_getMD5( aDigest, nMD5Sum, sizeof( nMD5Sum ) ); - + //step 6, only if 128 bit if( io_rProperties.Security128bit ) { @@ -1371,9 +1371,9 @@ bool PDFWriterImpl::computeEncryptionKey( EncHashTransporter* i_pTransporter, vc } else bSuccess = false; - + i_pTransporter->invalidate(); - + //Step 7 if( bSuccess ) { @@ -1383,7 +1383,7 @@ bool PDFWriterImpl::computeEncryptionKey( EncHashTransporter* i_pTransporter, vc } else io_rProperties.EncryptionKey.clear(); - + return bSuccess; } @@ -1407,7 +1407,7 @@ bool PDFWriterImpl::computeODictionaryValue( const sal_uInt8* i_pPaddedOwnerPass { //step 1 already done, data is in i_pPaddedOwnerPassword //step 2 - + rtlDigestError nError = rtl_digest_updateMD5( aDigest, i_pPaddedOwnerPassword, ENCRYPTED_PWD_SIZE ); if( nError == rtl_Digest_E_None ) { @@ -1466,7 +1466,7 @@ bool PDFWriterImpl::computeODictionaryValue( const sal_uInt8* i_pPaddedOwnerPass rtl_digest_destroyMD5( aDigest ); if( aCipher ) rtl_cipher_destroyARCFOUR( aCipher ); - + if( ! bSuccess ) io_rOValue.clear(); return bSuccess; @@ -1520,7 +1520,7 @@ bool PDFWriterImpl::computeUDictionaryValue( EncHashTransporter* i_pTransporter, nError = rtl_digest_updateMD5( aDigest, &io_rProperties.DocumentIdentifier[0], sal_Int32(io_rProperties.DocumentIdentifier.size()) ); else bSuccess = false; - + sal_uInt8 nMD5Sum[ RTL_DIGEST_LENGTH_MD5 ]; rtl_digest_getMD5( aDigest, nMD5Sum, sizeof(nMD5Sum) ); //Step 4 @@ -1531,12 +1531,12 @@ bool PDFWriterImpl::computeUDictionaryValue( EncHashTransporter* i_pTransporter, //step 5 sal_uInt32 i, y; sal_uInt8 nLocalKey[SECUR_128BIT_KEY]; - + for( i = 1; i <= 19; i++ ) // do it 19 times, start with 1 { for( y = 0; y < sizeof( nLocalKey ) ; y++ ) nLocalKey[y] = (sal_uInt8)( io_rProperties.EncryptionKey[y] ^ i ); - + rtl_cipher_initARCFOUR( aCipher, rtl_Cipher_DirectionEncode, nLocalKey, SECUR_128BIT_KEY, // key and key length NULL, 0 ); //destination data area, on init can be NULL @@ -1555,7 +1555,7 @@ bool PDFWriterImpl::computeUDictionaryValue( EncHashTransporter* i_pTransporter, rtl_digest_destroyMD5( aDigest ); if( aCipher ) rtl_cipher_destroyARCFOUR( aCipher ); - + if( ! bSuccess ) io_rProperties.UValue.clear(); return bSuccess; @@ -1612,7 +1612,7 @@ long findBitRun( const Scanline i_pLine, long i_nStartIndex, long i_nW, bool i_b { if( i_nStartIndex < 0 ) return i_nW; - + long nIndex = i_nStartIndex; if( nIndex < i_nW ) { @@ -1638,7 +1638,7 @@ long findBitRun( const Scanline i_pLine, long i_nStartIndex, long i_nW, bool i_b nByte = *pByte; } } - + sal_uInt8 nRunByte; const long* pRunTable; if( i_bSet ) @@ -1651,7 +1651,7 @@ long findBitRun( const Scanline i_pLine, long i_nStartIndex, long i_nW, bool i_b nRunByte = 0; pRunTable = unsetRun; } - + while( nByte == nRunByte && nIndex < i_nW ) { nIndex += 8; @@ -1670,13 +1670,13 @@ struct BitStreamState { sal_uInt8 mnBuffer; sal_uInt32 mnNextBitPos; - + BitStreamState() : mnBuffer( 0 ) , mnNextBitPos( 8 ) { } - + const sal_uInt8* getByte() const { return &mnBuffer; } void flush() { mnNextBitPos = 8; mnBuffer = 0; } }; @@ -1954,12 +1954,12 @@ void PDFWriterImpl::writeG4Stream( BitmapReadAccess* i_pBitmap ) return; if( i_pBitmap->GetBitCount() != 1 ) return; - + BitStreamState aBitState; - + // the first reference line is virtual and completely empty const Scanline pFirstRefLine = (Scanline)rtl_allocateZeroMemory( nW/8 + 1 ); - Scanline pRefLine = pFirstRefLine; + Scanline pRefLine = pFirstRefLine; for( long nY = 0; nY < nH; nY++ ) { const Scanline pCurLine = i_pBitmap->GetScanline( nY ); @@ -2020,7 +2020,7 @@ void PDFWriterImpl::writeG4Stream( BitmapReadAccess* i_pBitmap ) nRefIndex1 = findBitRun( pRefLine, nRefIndex1, nW, bSet ); } } - + // the current line is the reference for the next line pRefLine = pCurLine; } @@ -2032,6 +2032,6 @@ void PDFWriterImpl::writeG4Stream( BitmapReadAccess* i_pBitmap ) writeBuffer( aBitState.getByte(), 1 ); aBitState.flush(); } - + rtl_freeMemory( pFirstRefLine ); } diff --git a/vcl/source/gdi/print2.cxx b/vcl/source/gdi/print2.cxx index 8e8f8ae254..0613eb0810 100644 --- a/vcl/source/gdi/print2.cxx +++ b/vcl/source/gdi/print2.cxx @@ -2,7 +2,7 @@ /************************************************************************* * * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * + * * Copyright 2000, 2010 Oracle and/or its affiliates. * * OpenOffice.org - a multi-platform office productivity suite @@ -67,7 +67,7 @@ typedef ::std::list< Component > ComponentList; // List of (intersecting) actions, plus overall bounds struct ConnectedComponents { - ConnectedComponents() : + ConnectedComponents() : aComponentList(), aBounds(), aBgColor(COL_WHITE), @@ -82,7 +82,7 @@ struct ConnectedComponents bool bIsFullyTransparent; }; -typedef ::std::list< ConnectedComponents > ConnectedComponentsList; +typedef ::std::list< ConnectedComponents > ConnectedComponentsList; // ----------- @@ -127,7 +127,7 @@ static bool checkRect( Rectangle& io_rPrevRect, { // shape needs to fully cover previous content, and have uniform // color - const bool bRet( + const bool bRet( rMapModeVDev.LogicToPixel(rCurrRect).IsInside(io_rPrevRect) && rMapModeVDev.IsFillColor() ); @@ -136,7 +136,7 @@ static bool checkRect( Rectangle& io_rPrevRect, io_rPrevRect = rCurrRect; o_rBgColor = rMapModeVDev.GetFillColor(); } - + return bRet; } @@ -190,7 +190,7 @@ static void ImplConvertTransparentAction( GDIMetaFile& o_rMtf, case META_BMPEX_ACTION: aBmpEx = static_cast<const MetaBmpExAction&>(rAct).GetBitmapEx(); break; - + case META_BMPEXSCALE_ACTION: aBmpEx = static_cast<const MetaBmpExScaleAction&>(rAct).GetBitmapEx(); break; @@ -219,7 +219,7 @@ static void ImplConvertTransparentAction( GDIMetaFile& o_rMtf, if( pRA->HasPalette() ) aActualColor = pRA->GetBestPaletteColor( aBgColor ).operator Color(); - + aBmp.ReleaseAccess(pRA); // did we get true white? @@ -248,22 +248,22 @@ static void ImplConvertTransparentAction( GDIMetaFile& o_rMtf, switch( rAct.GetType() ) { case META_BMPEX_ACTION: - o_rMtf.AddAction( new MetaBmpAction( - static_cast<const MetaBmpExAction&>(rAct).GetPoint(), + o_rMtf.AddAction( new MetaBmpAction( + static_cast<const MetaBmpExAction&>(rAct).GetPoint(), aBmp )); break; case META_BMPEXSCALE_ACTION: - o_rMtf.AddAction( new MetaBmpScaleAction( - static_cast<const MetaBmpExScaleAction&>(rAct).GetPoint(), - static_cast<const MetaBmpExScaleAction&>(rAct).GetSize(), + o_rMtf.AddAction( new MetaBmpScaleAction( + static_cast<const MetaBmpExScaleAction&>(rAct).GetPoint(), + static_cast<const MetaBmpExScaleAction&>(rAct).GetSize(), aBmp )); break; case META_BMPEXSCALEPART_ACTION: - o_rMtf.AddAction( new MetaBmpScalePartAction( - static_cast<const MetaBmpExScalePartAction&>(rAct).GetDestPoint(), - static_cast<const MetaBmpExScalePartAction&>(rAct).GetDestSize(), - static_cast<const MetaBmpExScalePartAction&>(rAct).GetSrcPoint(), - static_cast<const MetaBmpExScalePartAction&>(rAct).GetSrcSize(), + o_rMtf.AddAction( new MetaBmpScalePartAction( + static_cast<const MetaBmpExScalePartAction&>(rAct).GetDestPoint(), + static_cast<const MetaBmpExScalePartAction&>(rAct).GetDestSize(), + static_cast<const MetaBmpExScalePartAction&>(rAct).GetSrcPoint(), + static_cast<const MetaBmpExScalePartAction&>(rAct).GetSrcSize(), aBmp )); break; default: @@ -483,47 +483,47 @@ static Rectangle ImplCalcActionBounds( const MetaAction& rAct, const OutputDevic break; case META_BMP_ACTION: - aActionBounds = Rectangle( static_cast<const MetaBmpAction&>(rAct).GetPoint(), + aActionBounds = Rectangle( static_cast<const MetaBmpAction&>(rAct).GetPoint(), rOut.PixelToLogic( static_cast<const MetaBmpAction&>(rAct).GetBitmap().GetSizePixel() ) ); break; case META_BMPSCALE_ACTION: - aActionBounds = Rectangle( static_cast<const MetaBmpScaleAction&>(rAct).GetPoint(), + aActionBounds = Rectangle( static_cast<const MetaBmpScaleAction&>(rAct).GetPoint(), static_cast<const MetaBmpScaleAction&>(rAct).GetSize() ); break; case META_BMPSCALEPART_ACTION: - aActionBounds = Rectangle( static_cast<const MetaBmpScalePartAction&>(rAct).GetDestPoint(), + aActionBounds = Rectangle( static_cast<const MetaBmpScalePartAction&>(rAct).GetDestPoint(), static_cast<const MetaBmpScalePartAction&>(rAct).GetDestSize() ); break; case META_BMPEX_ACTION: - aActionBounds = Rectangle( static_cast<const MetaBmpExAction&>(rAct).GetPoint(), + aActionBounds = Rectangle( static_cast<const MetaBmpExAction&>(rAct).GetPoint(), rOut.PixelToLogic( static_cast<const MetaBmpExAction&>(rAct).GetBitmapEx().GetSizePixel() ) ); break; case META_BMPEXSCALE_ACTION: - aActionBounds = Rectangle( static_cast<const MetaBmpExScaleAction&>(rAct).GetPoint(), + aActionBounds = Rectangle( static_cast<const MetaBmpExScaleAction&>(rAct).GetPoint(), static_cast<const MetaBmpExScaleAction&>(rAct).GetSize() ); break; case META_BMPEXSCALEPART_ACTION: - aActionBounds = Rectangle( static_cast<const MetaBmpExScalePartAction&>(rAct).GetDestPoint(), + aActionBounds = Rectangle( static_cast<const MetaBmpExScalePartAction&>(rAct).GetDestPoint(), static_cast<const MetaBmpExScalePartAction&>(rAct).GetDestSize() ); break; case META_MASK_ACTION: - aActionBounds = Rectangle( static_cast<const MetaMaskAction&>(rAct).GetPoint(), + aActionBounds = Rectangle( static_cast<const MetaMaskAction&>(rAct).GetPoint(), rOut.PixelToLogic( static_cast<const MetaMaskAction&>(rAct).GetBitmap().GetSizePixel() ) ); break; case META_MASKSCALE_ACTION: - aActionBounds = Rectangle( static_cast<const MetaMaskScaleAction&>(rAct).GetPoint(), + aActionBounds = Rectangle( static_cast<const MetaMaskScaleAction&>(rAct).GetPoint(), static_cast<const MetaMaskScaleAction&>(rAct).GetSize() ); break; case META_MASKSCALEPART_ACTION: - aActionBounds = Rectangle( static_cast<const MetaMaskScalePartAction&>(rAct).GetDestPoint(), + aActionBounds = Rectangle( static_cast<const MetaMaskScalePartAction&>(rAct).GetDestPoint(), static_cast<const MetaMaskScalePartAction&>(rAct).GetDestSize() ); break; @@ -548,12 +548,12 @@ static Rectangle ImplCalcActionBounds( const MetaAction& rAct, const OutputDevic break; case META_FLOATTRANSPARENT_ACTION: - aActionBounds = Rectangle( static_cast<const MetaFloatTransparentAction&>(rAct).GetPoint(), + aActionBounds = Rectangle( static_cast<const MetaFloatTransparentAction&>(rAct).GetPoint(), static_cast<const MetaFloatTransparentAction&>(rAct).GetSize() ); break; case META_EPS_ACTION: - aActionBounds = Rectangle( static_cast<const MetaEPSAction&>(rAct).GetPoint(), + aActionBounds = Rectangle( static_cast<const MetaEPSAction&>(rAct).GetPoint(), static_cast<const MetaEPSAction&>(rAct).GetSize() ); break; @@ -568,7 +568,7 @@ static Rectangle ImplCalcActionBounds( const MetaAction& rAct, const OutputDevic // #105987# Use API method instead of Impl* methods // #107490# Set base parameter equal to index parameter - rOut.GetTextBoundRect( aActionBounds, rTextAct.GetText(), rTextAct.GetIndex(), + rOut.GetTextBoundRect( aActionBounds, rTextAct.GetText(), rTextAct.GetIndex(), rTextAct.GetIndex(), rTextAct.GetLen() ); aActionBounds.Move( aPtLog.X(), aPtLog.Y() ); } @@ -584,8 +584,8 @@ static Rectangle ImplCalcActionBounds( const MetaAction& rAct, const OutputDevic if( nLen ) { // #105987# ImplLayout takes everything in logical coordinates - SalLayout* pSalLayout = rOut.ImplLayout( rTextAct.GetText(), rTextAct.GetIndex(), - rTextAct.GetLen(), rTextAct.GetPoint(), + SalLayout* pSalLayout = rOut.ImplLayout( rTextAct.GetText(), rTextAct.GetIndex(), + rTextAct.GetLen(), rTextAct.GetPoint(), 0, rTextAct.GetDXArray() ); if( pSalLayout ) { @@ -615,8 +615,8 @@ static Rectangle ImplCalcActionBounds( const MetaAction& rAct, const OutputDevic if( nLen ) { // #105987# ImplLayout takes everything in logical coordinates - SalLayout* pSalLayout = rOut.ImplLayout( rTextAct.GetText(), rTextAct.GetIndex(), - rTextAct.GetLen(), rTextAct.GetPoint(), + SalLayout* pSalLayout = rOut.ImplLayout( rTextAct.GetText(), rTextAct.GetIndex(), + rTextAct.GetLen(), rTextAct.GetPoint(), rTextAct.GetWidth() ); if( pSalLayout ) { @@ -665,7 +665,7 @@ static bool ImplIsActionHandlingTransparency( const MetaAction& rAct ) } // remove comment to enable highlighting of generated output -bool OutputDevice::RemoveTransparenciesFromMetaFile( const GDIMetaFile& rInMtf, GDIMetaFile& rOutMtf, +bool OutputDevice::RemoveTransparenciesFromMetaFile( const GDIMetaFile& rInMtf, GDIMetaFile& rOutMtf, long nMaxBmpDPIX, long nMaxBmpDPIY, bool bReduceTransparency, bool bTransparencyAutoMode, bool bDownsampleBitmaps, @@ -680,8 +680,8 @@ bool OutputDevice::RemoveTransparenciesFromMetaFile( const GDIMetaFile& rInMtf, if( ! bReduceTransparency || bTransparencyAutoMode ) { // watch for transparent drawing actions - for( pCurrAct = ( (GDIMetaFile&) rInMtf ).FirstAction(); - pCurrAct && !bTransparent; + for( pCurrAct = ( (GDIMetaFile&) rInMtf ).FirstAction(); + pCurrAct && !bTransparent; pCurrAct = ( (GDIMetaFile&) rInMtf ).NextAction() ) { // #i10613# Extracted "specialness" predicate into extra method @@ -700,7 +700,7 @@ bool OutputDevice::RemoveTransparenciesFromMetaFile( const GDIMetaFile& rInMtf, } } - // #i10613# Determine set of connected components containing transparent objects. These are + // #i10613# Determine set of connected components containing transparent objects. These are // then processed as bitmaps, the original actions are removed from the metafile. if( !bTransparent ) { @@ -709,7 +709,7 @@ bool OutputDevice::RemoveTransparenciesFromMetaFile( const GDIMetaFile& rInMtf, } else { - // #i10613# + // #i10613# // This works as follows: we want a number of distinct sets of // connected components, where each set contains metafile // actions that are intersecting (note: there are possibly @@ -851,17 +851,17 @@ bool OutputDevice::RemoveTransparenciesFromMetaFile( const GDIMetaFile& rInMtf, // execute action to get correct MapModes etc. pCurrAct->Execute( &aMapModeVDev ); - + pCurrAct=const_cast<GDIMetaFile&>(rInMtf).NextAction(); ++nActionNum; } - + // clean up aMapModeVDev sal_uInt32 nCount = aMapModeVDev.GetGCStackDepth(); while( nCount-- ) aMapModeVDev.Pop(); - ConnectedComponentsList aCCList; // list containing distinct sets of connected components as elements. + ConnectedComponentsList aCCList; // list containing distinct sets of connected components as elements. // fast-forward until one after the last background action // (need to reconstruct map mode vdev state) @@ -871,7 +871,7 @@ bool OutputDevice::RemoveTransparenciesFromMetaFile( const GDIMetaFile& rInMtf, { // up to and including last ink-generating background // action go to background component - aBackgroundComponent.aComponentList.push_back( + aBackgroundComponent.aComponentList.push_back( ::std::make_pair( pCurrAct, nActionNum) ); @@ -888,14 +888,14 @@ bool OutputDevice::RemoveTransparenciesFromMetaFile( const GDIMetaFile& rInMtf, // iterate over all actions (start where background action // search left off) - for( ; - pCurrAct; + for( ; + pCurrAct; pCurrAct=const_cast<GDIMetaFile&>(rInMtf).NextAction(), ++nActionNum ) { // execute action to get correct MapModes etc. pCurrAct->Execute( &aMapModeVDev ); - // cache bounds of current action + // cache bounds of current action const Rectangle aBBCurrAct( ImplCalcActionBounds(*pCurrAct, aMapModeVDev) ); // accumulate collected bounds here, initialize with current action @@ -927,7 +927,7 @@ bool OutputDevice::RemoveTransparenciesFromMetaFile( const GDIMetaFile& rInMtf, // component. aTotalComponents.bIsFullyTransparent = !ImplIsNotTransparent(*pCurrAct, aMapModeVDev); - if( !aBBCurrAct.IsEmpty() && + if( !aBBCurrAct.IsEmpty() && !aTotalComponents.bIsFullyTransparent ) { if( !aBackgroundComponent.aComponentList.empty() && @@ -936,11 +936,11 @@ bool OutputDevice::RemoveTransparenciesFromMetaFile( const GDIMetaFile& rInMtf, // it seems the background is not large enough. to // be on the safe side, combine with this component. aTotalBounds.Union( aBackgroundComponent.aBounds ); - + // extract all aCurr actions to aTotalComponents - aTotalComponents.aComponentList.splice( aTotalComponents.aComponentList.end(), + aTotalComponents.aComponentList.splice( aTotalComponents.aComponentList.end(), aBackgroundComponent.aComponentList ); - + if( aBackgroundComponent.bIsSpecial ) bTreatSpecial = true; } @@ -981,11 +981,11 @@ bool OutputDevice::RemoveTransparenciesFromMetaFile( const GDIMetaFile& rInMtf, // calc union bounding box aTotalBounds.Union( aCurrCC->aBounds ); - + // extract all aCurr actions to aTotalComponents - aTotalComponents.aComponentList.splice( aTotalComponents.aComponentList.end(), + aTotalComponents.aComponentList.splice( aTotalComponents.aComponentList.end(), aCurrCC->aComponentList ); - + if( aCurrCC->bIsSpecial ) bTreatSpecial = true; @@ -1038,7 +1038,7 @@ bool OutputDevice::RemoveTransparenciesFromMetaFile( const GDIMetaFile& rInMtf, { // added action is special and none of prev components // special -> do the detailed tests - + // can the action handle transparency correctly // (i.e. when painted on white background, does the // action still look correct)? @@ -1082,19 +1082,19 @@ bool OutputDevice::RemoveTransparenciesFromMetaFile( const GDIMetaFile& rInMtf, // set new bounds and add action to list aTotalComponents.aBounds = aTotalBounds; - aTotalComponents.aComponentList.push_back( + aTotalComponents.aComponentList.push_back( ::std::make_pair( pCurrAct, nActionNum) ); // add aTotalComponents as a new entry to aCCList aCCList.push_back( aTotalComponents ); - DBG_ASSERT( !aTotalComponents.aComponentList.empty(), + DBG_ASSERT( !aTotalComponents.aComponentList.empty(), "Printer::GetPreparedMetaFile empty component" ); - DBG_ASSERT( !aTotalComponents.aBounds.IsEmpty() || + DBG_ASSERT( !aTotalComponents.aBounds.IsEmpty() || (aTotalComponents.aBounds.IsEmpty() && aTotalComponents.aComponentList.size() == 1), "Printer::GetPreparedMetaFile non-output generating actions must be solitary"); - DBG_ASSERT( !aTotalComponents.bIsFullyTransparent || + DBG_ASSERT( !aTotalComponents.bIsFullyTransparent || (aTotalComponents.bIsFullyTransparent && aTotalComponents.aComponentList.size() == 1), "Printer::GetPreparedMetaFile fully transparent actions must be solitary"); } @@ -1109,7 +1109,7 @@ bool OutputDevice::RemoveTransparenciesFromMetaFile( const GDIMetaFile& rInMtf, // settings for all cases. // maps mtf actions to CC list entries - ::std::vector< const ConnectedComponents* > aCCList_MemberMap( rInMtf.GetActionCount() ); + ::std::vector< const ConnectedComponents* > aCCList_MemberMap( rInMtf.GetActionSize() ); // iterate over all aCCList members and their contained metaactions ConnectedComponentsList::iterator aCurr( aCCList.begin() ); @@ -1151,7 +1151,7 @@ bool OutputDevice::RemoveTransparenciesFromMetaFile( const GDIMetaFile& rInMtf, { aTmpSize = mpPDFWriter->getCurPageSize(); aTmpSize = LogicToPixel( aTmpSize, MapMode( MAP_POINT ) ); - + // also add error code to PDFWriter mpPDFWriter->insertError( vcl::PDFWriter::Warning_Transparency_Converted ); } @@ -1170,7 +1170,7 @@ bool OutputDevice::RemoveTransparenciesFromMetaFile( const GDIMetaFile& rInMtf, { if( aCurr->bIsSpecial ) { - Rectangle aBoundRect( aCurr->aBounds ); + Rectangle aBoundRect( aCurr->aBounds ); aBoundRect.Intersection( aOutputRect ); const double fBmpArea( (double) aBoundRect.GetWidth() * aBoundRect.GetHeight() ); @@ -1201,7 +1201,7 @@ bool OutputDevice::RemoveTransparenciesFromMetaFile( const GDIMetaFile& rInMtf, rOutMtf.AddAction( new MetaMapModeAction() ); aPaintVDev.SetDrawMode( GetDrawMode() ); - + while( aDstPtPix.Y() <= aBoundRect.Bottom() ) { aDstPtPix.X() = aBoundRect.Left(); @@ -1227,8 +1227,8 @@ bool OutputDevice::RemoveTransparenciesFromMetaFile( const GDIMetaFile& rInMtf, aPaintVDev.EnableOutput(sal_False); // iterate over all actions - for( pCurrAct=const_cast<GDIMetaFile&>(rInMtf).FirstAction(), nActionNum=0; - pCurrAct; + for( pCurrAct=const_cast<GDIMetaFile&>(rInMtf).FirstAction(), nActionNum=0; + pCurrAct; pCurrAct=const_cast<GDIMetaFile&>(rInMtf).NextAction(), ++nActionNum ) { // enable output only for @@ -1282,7 +1282,7 @@ bool OutputDevice::RemoveTransparenciesFromMetaFile( const GDIMetaFile& rInMtf, // scale down bitmap, if requested if( bDownsampleBitmaps ) { - aBandBmp = GetDownsampledBitmap( aDstSzPix, + aBandBmp = GetDownsampledBitmap( aDstSzPix, Point(), aBandBmp.GetSizePixel(), aBandBmp, nMaxBmpDPIX, nMaxBmpDPIY ); } @@ -1315,7 +1315,7 @@ bool OutputDevice::RemoveTransparenciesFromMetaFile( const GDIMetaFile& rInMtf, nCount = aMapModeVDev.GetGCStackDepth(); while( nCount-- ) aMapModeVDev.Pop(); - + // // STAGE 4: Copy actions to output metafile // ======================================== @@ -1323,8 +1323,8 @@ bool OutputDevice::RemoveTransparenciesFromMetaFile( const GDIMetaFile& rInMtf, // iterate over all actions and duplicate the ones not in a // special aCCList member into rOutMtf - for( pCurrAct=const_cast<GDIMetaFile&>(rInMtf).FirstAction(), nActionNum=0; - pCurrAct; + for( pCurrAct=const_cast<GDIMetaFile&>(rInMtf).FirstAction(), nActionNum=0; + pCurrAct; pCurrAct=const_cast<GDIMetaFile&>(rInMtf).NextAction(), ++nActionNum ) { const ConnectedComponents* pCurrAssociatedComponent = aCCList_MemberMap[nActionNum]; @@ -1369,7 +1369,7 @@ bool OutputDevice::RemoveTransparenciesFromMetaFile( const GDIMetaFile& rInMtf, // ----------------------------------------------------------------------------- -Bitmap OutputDevice::GetDownsampledBitmap( const Size& rDstSz, +Bitmap OutputDevice::GetDownsampledBitmap( const Size& rDstSz, const Point& rSrcPt, const Size& rSrcSz, const Bitmap& rBmp, long nMaxBmpDPIX, long nMaxBmpDPIY ) { @@ -1405,8 +1405,8 @@ Bitmap OutputDevice::GetDownsampledBitmap( const Size& rDstSz, const double fMaxPixelY = aDstSizeTwip.Height() * nMaxBmpDPIY / 1440.0; // check, if the bitmap DPI exceeds the maximum DPI (allow 4 pixel rounding tolerance) - if( ( ( fBmpPixelX > ( fMaxPixelX + 4 ) ) || - ( fBmpPixelY > ( fMaxPixelY + 4 ) ) ) && + if( ( ( fBmpPixelX > ( fMaxPixelX + 4 ) ) || + ( fBmpPixelY > ( fMaxPixelY + 4 ) ) ) && ( fBmpPixelY > 0.0 ) && ( fMaxPixelY > 0.0 ) ) { // do scaling @@ -1463,7 +1463,7 @@ BitmapEx OutputDevice::GetDownsampledBitmapEx( const Size& rDstSz, { // do downsampling if neccessary Size aDstSizeTwip( PixelToLogic( LogicToPixel( rDstSz ), MAP_TWIP ) ); - + // #103209# Normalize size (mirroring has to happen outside of this method) aDstSizeTwip = Size( labs(aDstSizeTwip.Width()), labs(aDstSizeTwip.Height()) ); @@ -1474,8 +1474,8 @@ BitmapEx OutputDevice::GetDownsampledBitmapEx( const Size& rDstSz, const double fMaxPixelY = aDstSizeTwip.Height() * nMaxBmpDPIY / 1440.0; // check, if the bitmap DPI exceeds the maximum DPI (allow 4 pixel rounding tolerance) - if( ( ( fBmpPixelX > ( fMaxPixelX + 4 ) ) || - ( fBmpPixelY > ( fMaxPixelY + 4 ) ) ) && + if( ( ( fBmpPixelX > ( fMaxPixelX + 4 ) ) || + ( fBmpPixelY > ( fMaxPixelY + 4 ) ) ) && ( fBmpPixelY > 0.0 ) && ( fMaxPixelY > 0.0 ) ) { // do scaling |
