diff options
Diffstat (limited to 'sw/source/core/graphic/ndgrf.cxx')
-rw-r--r-- | sw/source/core/graphic/ndgrf.cxx | 725 |
1 files changed, 359 insertions, 366 deletions
diff --git a/sw/source/core/graphic/ndgrf.cxx b/sw/source/core/graphic/ndgrf.cxx index 05a50b7960f6..4cbee095f376 100644 --- a/sw/source/core/graphic/ndgrf.cxx +++ b/sw/source/core/graphic/ndgrf.cxx @@ -19,8 +19,6 @@ * *************************************************************/ - - // MARKER(update_precomp.py): autogen include statement, do not remove #include "precompiled_sw.hxx" #include <hintids.hxx> @@ -60,96 +58,123 @@ #include <retrieveinputstreamconsumer.hxx> #include <drawinglayer/processor2d/objectinfoextractor2d.hxx> #include <drawinglayer/primitive2d/objectinfoprimitive2d.hxx> - +#include <unotools/cacheoptions.hxx> using namespace com::sun::star; +#define SWAPGRAPHIC_TIMEOUT 5000 + +// For comments see same method used in svx +sal_uInt32 getCacheTimeInMs() +{ + static bool bSetAtAll(true); + + if(bSetAtAll) + { + static bool bSetToPreferenceTime(true); + + if(bSetToPreferenceTime) + { + const SvtCacheOptions aCacheOptions; + const sal_Int32 nSeconds(aCacheOptions.GetGraphicManagerObjectReleaseTime()); + + return nSeconds * 1000 / 12; + } + else + { + return SWAPGRAPHIC_TIMEOUT; + } + } + + return 0; +} + // -------------------- // SwGrfNode // -------------------- SwGrfNode::SwGrfNode( - const SwNodeIndex & rWhere, - const String& rGrfName, const String& rFltName, - const Graphic* pGraphic, - SwGrfFmtColl *pGrfColl, - SwAttrSet* pAutoAttr ) : - SwNoTxtNode( rWhere, ND_GRFNODE, pGrfColl, pAutoAttr ), - maGrfObj(), - mpReplacementGraphic(0), - // --> OD 2007-01-23 #i73788# - mbLinkedInputStreamReady( false ), - mbIsStreamReadOnly( sal_False ) - // <-- + const SwNodeIndex & rWhere, + const String& rGrfName, + const String& rFltName, + const Graphic* pGraphic, + SwGrfFmtColl *pGrfColl, + SwAttrSet* pAutoAttr ) + : SwNoTxtNode( rWhere, ND_GRFNODE, pGrfColl, pAutoAttr ), + maGrfObj(), + mpReplacementGraphic( 0 ), + mbLinkedInputStreamReady( false ), + mbIsStreamReadOnly( sal_False ) { - maGrfObj.SetSwapStreamHdl( LINK( this, SwGrfNode, SwapGraphic ) ); - bInSwapIn = bChgTwipSize = bChgTwipSizeFromPixel = bLoadLowResGrf = - bFrameInPaint = bScaleImageMap = sal_False; + maGrfObj.SetSwapStreamHdl( LINK( this, SwGrfNode, SwapGraphic ), getCacheTimeInMs() ); + bInSwapIn = bChgTwipSize = bChgTwipSizeFromPixel = bLoadLowResGrf = bFrameInPaint = bScaleImageMap = sal_False; bGrafikArrived = sal_True; - ReRead(rGrfName,rFltName, pGraphic, 0, sal_False); + ReRead( rGrfName, rFltName, pGraphic, 0, sal_False ); } -SwGrfNode::SwGrfNode( const SwNodeIndex & rWhere, - const GraphicObject& rGrfObj, - SwGrfFmtColl *pGrfColl, SwAttrSet* pAutoAttr ) : - SwNoTxtNode( rWhere, ND_GRFNODE, pGrfColl, pAutoAttr ), - maGrfObj(rGrfObj), - mpReplacementGraphic(0), - // --> OD 2007-01-23 #i73788# - mbLinkedInputStreamReady( false ), - mbIsStreamReadOnly( sal_False ) - // <-- +SwGrfNode::SwGrfNode( + const SwNodeIndex & rWhere, + const GraphicObject& rGrfObj, + SwGrfFmtColl *pGrfColl, + SwAttrSet* pAutoAttr ) + : SwNoTxtNode( rWhere, ND_GRFNODE, pGrfColl, pAutoAttr ), + maGrfObj( rGrfObj ), + mpReplacementGraphic( 0 ), + mbLinkedInputStreamReady( false ), + mbIsStreamReadOnly( sal_False ) { maGrfObj = rGrfObj; - maGrfObj.SetSwapStreamHdl( LINK( this, SwGrfNode, SwapGraphic ) ); - if( rGrfObj.HasUserData() && rGrfObj.IsSwappedOut() ) + maGrfObj.SetSwapStreamHdl( LINK( this, SwGrfNode, SwapGraphic ), getCacheTimeInMs() ); + if ( rGrfObj.HasUserData() && rGrfObj.IsSwappedOut() ) maGrfObj.SetSwapState(); - bInSwapIn = bChgTwipSize = bChgTwipSizeFromPixel= bLoadLowResGrf = - bFrameInPaint = bScaleImageMap = sal_False; + bInSwapIn = bChgTwipSize = bChgTwipSizeFromPixel = bLoadLowResGrf = bFrameInPaint = bScaleImageMap = sal_False; bGrafikArrived = sal_True; } // Konstruktor fuer den SW/G-Reader. Dieser ctor wird verwendet, // wenn eine gelinkte Grafik gelesen wird. Sie liest diese NICHT ein. - -SwGrfNode::SwGrfNode( const SwNodeIndex & rWhere, - const String& rGrfName, const String& rFltName, - SwGrfFmtColl *pGrfColl, - SwAttrSet* pAutoAttr ) : - SwNoTxtNode( rWhere, ND_GRFNODE, pGrfColl, pAutoAttr ), - maGrfObj(), - mpReplacementGraphic(0), - // --> OD 2007-01-23 #i73788# - mbLinkedInputStreamReady( false ), - mbIsStreamReadOnly( sal_False ) - // <-- +SwGrfNode::SwGrfNode( + const SwNodeIndex & rWhere, + const String& rGrfName, + const String& rFltName, + SwGrfFmtColl *pGrfColl, + SwAttrSet* pAutoAttr ) + : + SwNoTxtNode( rWhere, ND_GRFNODE, pGrfColl, pAutoAttr ), + maGrfObj(), + mpReplacementGraphic( 0 ), + mbLinkedInputStreamReady( false ), + mbIsStreamReadOnly( sal_False ) { - maGrfObj.SetSwapStreamHdl( LINK( this, SwGrfNode, SwapGraphic ) ); + maGrfObj.SetSwapStreamHdl( LINK( this, SwGrfNode, SwapGraphic ), getCacheTimeInMs() ); - Graphic aGrf; aGrf.SetDefaultType(); + Graphic aGrf; + aGrf.SetDefaultType(); maGrfObj.SetGraphic( aGrf, rGrfName ); bInSwapIn = bChgTwipSize = bChgTwipSizeFromPixel = bLoadLowResGrf = - bFrameInPaint = bScaleImageMap = sal_False; + bFrameInPaint = bScaleImageMap = sal_False; bGrafikArrived = sal_True; InsertLink( rGrfName, rFltName ); - if( IsLinkedFile() ) + if ( IsLinkedFile() ) { INetURLObject aUrl( rGrfName ); - if( INET_PROT_FILE == aUrl.GetProtocol() && - FStatHelper::IsDocument( aUrl.GetMainURL( INetURLObject::NO_DECODE ) )) + if ( INET_PROT_FILE == aUrl.GetProtocol() && + FStatHelper::IsDocument( aUrl.GetMainURL( INetURLObject::NO_DECODE ) ) ) { // File vorhanden, Verbindung herstellen ohne ein Update - ((SwBaseLink*)&refLink)->Connect(); + ( (SwBaseLink*) &refLink )->Connect(); } } } sal_Bool SwGrfNode::ReRead( - const String& rGrfName, const String& rFltName, - const Graphic* pGraphic, const GraphicObject* pGrfObj, + const String& rGrfName, + const String& rFltName, + const Graphic* pGraphic, + const GraphicObject* pGrfObj, sal_Bool bNewGrf ) { sal_Bool bReadGrf = sal_False, bSetTwipSize = sal_True; @@ -157,22 +182,22 @@ sal_Bool SwGrfNode::ReRead( mpReplacementGraphic = 0; ASSERT( pGraphic || pGrfObj || rGrfName.Len(), - "GraphicNode without a name, Graphic or GraphicObject" ); + "GraphicNode without a name, Graphic or GraphicObject" ); // ReadRead mit Namen - if( refLink.Is() ) + if ( refLink.Is() ) { ASSERT( !bInSwapIn, "ReRead: stehe noch im SwapIn" ); - if( rGrfName.Len() ) + if ( rGrfName.Len() ) { // Besonderheit: steht im FltNamen DDE, handelt es sich um eine // DDE-gelinkte Grafik String sCmd( rGrfName ); - if( rFltName.Len() ) + if ( rFltName.Len() ) { sal_uInt16 nNewType; - if( rFltName.EqualsAscii( "DDE" )) + if ( rFltName.EqualsAscii( "DDE" ) ) nNewType = OBJECT_CLIENT_DDE; else { @@ -180,10 +205,10 @@ sal_Bool SwGrfNode::ReRead( nNewType = OBJECT_CLIENT_GRF; } - if( nNewType != refLink->GetObjType() ) + if ( nNewType != refLink->GetObjType() ) { refLink->Disconnect(); - ((SwBaseLink*)&refLink)->SetObjType( nNewType ); + ( (SwBaseLink*) &refLink )->SetObjType( nNewType ); } } @@ -195,16 +220,16 @@ sal_Bool SwGrfNode::ReRead( refLink.Clear(); } - if( pGraphic ) + if ( pGraphic ) { maGrfObj.SetGraphic( *pGraphic, rGrfName ); onGraphicChanged(); bReadGrf = sal_True; } - else if( pGrfObj ) + else if ( pGrfObj ) { maGrfObj = *pGrfObj; - if( pGrfObj->HasUserData() && pGrfObj->IsSwappedOut() ) + if ( pGrfObj->HasUserData() && pGrfObj->IsSwappedOut() ) maGrfObj.SetSwapState(); maGrfObj.SetLink( rGrfName ); onGraphicChanged(); @@ -215,112 +240,100 @@ sal_Bool SwGrfNode::ReRead( // MIB 25.02.97: Daten der alten Grafik zuruecksetzen, damit // die korrekte Ersatz-Darstellung erscheint, wenn die // der neue Link nicht geladen werden konnte. - Graphic aGrf; aGrf.SetDefaultType(); + Graphic aGrf; + aGrf.SetDefaultType(); maGrfObj.SetGraphic( aGrf, rGrfName ); - if( refLink.Is() ) + if ( refLink.Is() ) { - if( getLayoutFrm( GetDoc()->GetCurrentLayout() ) ) + if ( getLayoutFrm( GetDoc()->GetCurrentLayout() ) ) { SwMsgPoolItem aMsgHint( RES_GRF_REREAD_AND_INCACHE ); ModifyNotification( &aMsgHint, &aMsgHint ); } - // --> OD 2006-11-03 #i59688# - // do not load linked graphic, if it isn't a new linked graphic. -// else { else if ( bNewGrf ) - // <-- { //TODO refLink->setInputStream(getInputStream()); - ((SwBaseLink*)&refLink)->SwapIn(); + ( (SwBaseLink*) &refLink )->SwapIn(); } } onGraphicChanged(); bSetTwipSize = sal_False; } } - else if( pGraphic && !rGrfName.Len() ) + else if ( pGraphic && !rGrfName.Len() ) { // MIB 27.02.2001: Old stream must be deleted before the new one is set. - if( HasStreamName() ) + if ( HasEmbeddedStreamName() ) DelStreamName(); maGrfObj.SetGraphic( *pGraphic ); onGraphicChanged(); bReadGrf = sal_True; } - else if( pGrfObj && !rGrfName.Len() ) + else if ( pGrfObj && !rGrfName.Len() ) { // MIB 27.02.2001: Old stream must be deleted before the new one is set. - if( HasStreamName() ) + if ( HasEmbeddedStreamName() ) DelStreamName(); maGrfObj = *pGrfObj; onGraphicChanged(); - if( pGrfObj->HasUserData() && pGrfObj->IsSwappedOut() ) + if ( pGrfObj->HasUserData() && pGrfObj->IsSwappedOut() ) maGrfObj.SetSwapState(); bReadGrf = sal_True; } - // Import einer Grafik: - // Ist die Grafik bereits geladen? - else if( !bNewGrf && GRAPHIC_NONE != maGrfObj.GetType() ) + else if ( !bNewGrf && GRAPHIC_NONE != maGrfObj.GetType() ) return sal_True; else { - if( HasStreamName() ) + if ( HasEmbeddedStreamName() ) DelStreamName(); // einen neuen Grafik-Link anlegen InsertLink( rGrfName, rFltName ); - if( GetNodes().IsDocNodes() ) + if ( GetNodes().IsDocNodes() ) { - if( pGraphic ) + if ( pGraphic ) { maGrfObj.SetGraphic( *pGraphic, rGrfName ); onGraphicChanged(); bReadGrf = sal_True; // Verbindung herstellen ohne ein Update; Grafik haben wir! - ((SwBaseLink*)&refLink)->Connect(); + ( (SwBaseLink*) &refLink )->Connect(); } - else if( pGrfObj ) + else if ( pGrfObj ) { maGrfObj = *pGrfObj; maGrfObj.SetLink( rGrfName ); onGraphicChanged(); bReadGrf = sal_True; // Verbindung herstellen ohne ein Update; Grafik haben wir! - ((SwBaseLink*)&refLink)->Connect(); + ( (SwBaseLink*) &refLink )->Connect(); } else { - // MIB 25.02.97: Daten der alten Grafik zuruecksetzen, damit - // die korrekte Ersatz-Darstellung erscheint, wenn die - // der neue Kink nicht geladen werden konnte. - Graphic aGrf; aGrf.SetDefaultType(); + Graphic aGrf; + aGrf.SetDefaultType(); maGrfObj.SetGraphic( aGrf, rGrfName ); onGraphicChanged(); - // --> OD 2006-11-03 #i59688# - // do not load linked graphic, if it isn't a new linked graphic. -// //TODO refLink->setInputStream(getInputStream()); -// ((SwBaseLink*)&refLink)->SwapIn(); if ( bNewGrf ) { - ((SwBaseLink*)&refLink)->SwapIn(); + ( (SwBaseLink*) &refLink )->SwapIn(); } - // <-- } } } // Bug 39281: Size nicht sofort loeschen - Events auf ImageMaps // sollten nicht beim Austauschen nicht ins "leere greifen" - if( bSetTwipSize ) + if ( bSetTwipSize ) SetTwipSize( ::GetGraphicSizeTwip( maGrfObj.GetGraphic(), 0 ) ); // erzeuge noch einen Update auf die Frames - if( bReadGrf && bNewGrf ) + if ( bReadGrf && bNewGrf ) { SwMsgPoolItem aMsgHint( RES_UPDATE_ATTR ); ModifyNotification( &aMsgHint, &aMsgHint ); @@ -329,18 +342,15 @@ sal_Bool SwGrfNode::ReRead( return bReadGrf; } - SwGrfNode::~SwGrfNode() { delete mpReplacementGraphic; mpReplacementGraphic = 0; - // --> OD 2007-03-30 #i73788# mpThreadConsumer.reset(); - // <-- SwDoc* pDoc = GetDoc(); - if( refLink.Is() ) + if ( refLink.Is() ) { ASSERT( !bInSwapIn, "DTOR: stehe noch im SwapIn" ); pDoc->GetLinkManager().Remove( refLink ); @@ -348,7 +358,7 @@ SwGrfNode::~SwGrfNode() } else { - // --> OD 2005-01-19 #i40014# - A graphic node, which are in linked + // #i40014# - A graphic node, which are in linked // section, whose link is another section is the document, doesn't // have to remove the stream from the storage. // Because it's hard to detect this case here and it would only fix @@ -359,11 +369,10 @@ SwGrfNode::~SwGrfNode() // inside one document have to be implemented. // if( !pDoc->IsInDtor() && HasStreamName() ) // DelStreamName(); - // <-- } //#39289# Die Frames muessen hier bereits geloescht weil der DTor der //Frms die Grafik noch fuer StopAnimation braucht. - if( GetDepends() ) + if ( GetDepends() ) DelFrms(); } @@ -373,29 +382,31 @@ void SwGrfNode::onGraphicChanged() // try to access SwFlyFrmFmt; since title/desc/name are set there, there is no // use to continue if it is not yet set. If not yet set, call onGraphicChanged() // when it is set. - SwFlyFrmFmt* pFlyFmt = dynamic_cast< SwFlyFrmFmt* >(GetFlyFmt()); + SwFlyFrmFmt* pFlyFmt = dynamic_cast< SwFlyFrmFmt* >( GetFlyFmt() ); - if(pFlyFmt) + if ( pFlyFmt != NULL ) { + const bool bWasSwappedOut = ( GetGrfObj().IsSwappedOut() == sal_True ); + String aName; String aTitle; String aDesc; const SvgDataPtr& rSvgDataPtr = GetGrf().getSvgData(); - if(rSvgDataPtr.get()) + if ( rSvgDataPtr.get() ) { - const drawinglayer::primitive2d::Primitive2DSequence aSequence(rSvgDataPtr->getPrimitive2DSequence()); + const drawinglayer::primitive2d::Primitive2DSequence aSequence( rSvgDataPtr->getPrimitive2DSequence() ); - if(aSequence.hasElements()) + if ( aSequence.hasElements() ) { drawinglayer::geometry::ViewInformation2D aViewInformation2D; - drawinglayer::processor2d::ObjectInfoPrimitiveExtractor2D aProcessor(aViewInformation2D); + drawinglayer::processor2d::ObjectInfoPrimitiveExtractor2D aProcessor( aViewInformation2D ); - aProcessor.process(aSequence); + aProcessor.process( aSequence ); const drawinglayer::primitive2d::ObjectInfoPrimitive2D* pResult = aProcessor.getResult(); - if(pResult) + if ( pResult ) { aName = pResult->getName(); aTitle = pResult->getTitle(); @@ -404,95 +415,99 @@ void SwGrfNode::onGraphicChanged() } } - // do not use this currently; it seems that this name has to be unique in - // the writer model and is already set to some default - //if(aName.Len() && pFlyFmt) - //{ - // pFlyFmt->SetName(aName); - //} + if ( aTitle.Len() > 0 ) + { + SetTitle( aTitle ); + } + else if ( aName.Len() > 0 ) + { + SetTitle( aName ); + } - if(aTitle.Len()) + if ( aDesc.Len() > 0 ) { - SetTitle(aTitle); + SetDescription( aDesc ); } - if(aDesc.Len()) + if ( bWasSwappedOut ) { - SetDescription(aDesc); + SwapOut(); } } } -void SwGrfNode::SetGraphic(const Graphic& rGraphic, const String& rLink) +void SwGrfNode::SetGraphic( + const Graphic& rGraphic, + const String& rLink ) { - maGrfObj.SetGraphic(rGraphic, rLink); + maGrfObj.SetGraphic( rGraphic, rLink ); onGraphicChanged(); } const GraphicObject* SwGrfNode::GetReplacementGrfObj() const { - if(!mpReplacementGraphic) + if ( !mpReplacementGraphic ) { const SvgDataPtr& rSvgDataPtr = GetGrfObj().GetGraphic().getSvgData(); - if(rSvgDataPtr.get()) + if ( rSvgDataPtr.get() ) { - const_cast< SwGrfNode* >(this)->mpReplacementGraphic = new GraphicObject(rSvgDataPtr->getReplacement()); + const_cast< SwGrfNode* >( this )->mpReplacementGraphic = new GraphicObject( rSvgDataPtr->getReplacement() ); } } return mpReplacementGraphic; } -SwCntntNode *SwGrfNode::SplitCntntNode( const SwPosition & ) +SwCntntNode *SwGrfNode::SplitCntntNode( + const SwPosition & ) { return this; } - -SwGrfNode * SwNodes::MakeGrfNode( const SwNodeIndex & rWhere, - const String& rGrfName, - const String& rFltName, - const Graphic* pGraphic, - SwGrfFmtColl* pGrfColl, - SwAttrSet* pAutoAttr, - sal_Bool bDelayed ) +SwGrfNode * SwNodes::MakeGrfNode( + const SwNodeIndex & rWhere, + const String& rGrfName, + const String& rFltName, + const Graphic* pGraphic, + SwGrfFmtColl* pGrfColl, + SwAttrSet* pAutoAttr, + sal_Bool bDelayed ) { ASSERT( pGrfColl, "MakeGrfNode: Formatpointer ist 0." ); SwGrfNode *pNode; // Delayed erzeugen nur aus dem SW/G-Reader - if( bDelayed ) + if ( bDelayed ) pNode = new SwGrfNode( rWhere, rGrfName, - rFltName, pGrfColl, pAutoAttr ); + rFltName, pGrfColl, pAutoAttr ); else pNode = new SwGrfNode( rWhere, rGrfName, - rFltName, pGraphic, pGrfColl, pAutoAttr ); + rFltName, pGraphic, pGrfColl, pAutoAttr ); return pNode; } -SwGrfNode * SwNodes::MakeGrfNode( const SwNodeIndex & rWhere, - const GraphicObject& rGrfObj, - SwGrfFmtColl* pGrfColl, - SwAttrSet* pAutoAttr ) +SwGrfNode * SwNodes::MakeGrfNode( + const SwNodeIndex & rWhere, + const GraphicObject& rGrfObj, + SwGrfFmtColl* pGrfColl, + SwAttrSet* pAutoAttr ) { ASSERT( pGrfColl, "MakeGrfNode: Formatpointer ist 0." ); return new SwGrfNode( rWhere, rGrfObj, pGrfColl, pAutoAttr ); } - Size SwGrfNode::GetTwipSize() const { return nGrfSize; } - - -sal_Bool SwGrfNode::ImportGraphic( SvStream& rStrm ) +sal_Bool SwGrfNode::ImportGraphic( + SvStream& rStrm ) { Graphic aGraphic; - const String aURL(maGrfObj.GetUserData()); + const String aURL( maGrfObj.GetUserData() ); - if(!GraphicFilter::GetGraphicFilter()->ImportGraphic(aGraphic, aURL, rStrm)) + if ( !GraphicFilter::GetGraphicFilter()->ImportGraphic( aGraphic, aURL, rStrm ) ) { delete mpReplacementGraphic; mpReplacementGraphic = 0; @@ -511,25 +526,26 @@ sal_Bool SwGrfNode::ImportGraphic( SvStream& rStrm ) // 0 : nicht geladen // 1 : Einlesen erfolgreich -short SwGrfNode::SwapIn( sal_Bool bWaitForData ) +short SwGrfNode::SwapIn( + sal_Bool bWaitForData ) { - if( bInSwapIn ) // nicht rekuriv!! + if ( bInSwapIn ) // nicht rekuriv!! return !maGrfObj.IsSwappedOut(); short nRet = 0; bInSwapIn = sal_True; - SwBaseLink* pLink = (SwBaseLink*)(::sfx2::SvBaseLink*) refLink; + SwBaseLink* pLink = (SwBaseLink*) (::sfx2::SvBaseLink*) refLink; - if( pLink ) + if ( pLink ) { - if( GRAPHIC_NONE == maGrfObj.GetType() || - GRAPHIC_DEFAULT == maGrfObj.GetType() ) + if ( GRAPHIC_NONE == maGrfObj.GetType() || + GRAPHIC_DEFAULT == maGrfObj.GetType() ) { // noch nicht geladener Link //TODO pLink->setInputStream(getInputStream()); - if( pLink->SwapIn( bWaitForData ) ) + if ( pLink->SwapIn( bWaitForData ) ) nRet = -1; - else if( GRAPHIC_DEFAULT == maGrfObj.GetType() ) + else if ( GRAPHIC_DEFAULT == maGrfObj.GetType() ) { // keine default Bitmap mehr, also neu Painten! delete mpReplacementGraphic; @@ -541,7 +557,8 @@ short SwGrfNode::SwapIn( sal_Bool bWaitForData ) ModifyNotification( &aMsgHint, &aMsgHint ); } } - else if( maGrfObj.IsSwappedOut() ) { + else if ( maGrfObj.IsSwappedOut() ) + { // nachzuladender Link //TODO pLink->setInputStream(getInputStream()); nRet = pLink->SwapIn( bWaitForData ) ? 1 : 0; @@ -549,24 +566,19 @@ short SwGrfNode::SwapIn( sal_Bool bWaitForData ) else nRet = 1; } - else if( maGrfObj.IsSwappedOut() ) + else if ( maGrfObj.IsSwappedOut() ) { // Die Grafik ist im Storage oder im TempFile drin - if( !HasStreamName() ) - nRet = (short)maGrfObj.SwapIn(); + if ( !HasEmbeddedStreamName() ) + nRet = (short) maGrfObj.SwapIn(); else { - // --> OD 2005-05-04 #i48434# - usage of new method <_GetStreamForEmbedGrf(..)> try { - // --> OD, MAV 2005-08-17 #i53025# - needed correction of new - // method <_GetStreamForEmbedGrf(..)> -// bool bGraphic(false); -// SvStream* pStrm = _GetStreamForEmbedGrf( bGraphic ); String aStrmName, aPicStgName; _GetStreamStorageNames( aStrmName, aPicStgName ); - uno::Reference < embed::XStorage > refPics = _GetDocSubstorageOrRoot( aPicStgName ); + uno::Reference< embed::XStorage > refPics = _GetDocSubstorageOrRoot( aPicStgName ); SvStream* pStrm = _GetStreamForEmbedGrf( refPics, aStrmName ); if ( pStrm ) { @@ -574,18 +586,14 @@ short SwGrfNode::SwapIn( sal_Bool bWaitForData ) nRet = 1; delete pStrm; } - // <-- } catch ( uno::Exception& ) { - // --> OD 2005-04-25 #i48434# ASSERT( false, "<SwGrfNode::SwapIn(..)> - unhandled exception!" ); - // <-- } - // <-- } - if( 1 == nRet ) + if ( 1 == nRet ) { SwMsgPoolItem aMsg( RES_GRAPHIC_SWAPIN ); ModifyNotification( &aMsg, &aMsg ); @@ -595,30 +603,30 @@ short SwGrfNode::SwapIn( sal_Bool bWaitForData ) nRet = 1; DBG_ASSERTWARNING( nRet, "Grafik kann nicht eingeswapt werden" ); - if( nRet ) + if ( nRet ) { - if( !nGrfSize.Width() && !nGrfSize.Height() ) + if ( !nGrfSize.Width() && !nGrfSize.Height() ) SetTwipSize( ::GetGraphicSizeTwip( maGrfObj.GetGraphic(), 0 ) ); } bInSwapIn = sal_False; return nRet; } - short SwGrfNode::SwapOut() { - if( maGrfObj.GetType() != GRAPHIC_DEFAULT && - maGrfObj.GetType() != GRAPHIC_NONE && - !maGrfObj.IsSwappedOut() && !bInSwapIn ) + if ( maGrfObj.GetType() != GRAPHIC_DEFAULT + && maGrfObj.GetType() != GRAPHIC_NONE + && !maGrfObj.IsSwappedOut() + && !bInSwapIn ) { - if( !refLink.Is() ) + if ( !refLink.Is() ) { // Das Swapping brauchen wir nur fuer Embedded Pictures // Die Grafik wird in eine TempFile geschrieben, wenn // sie frisch eingefuegt war, d.h. wenn es noch keinen // Streamnamen im Storage gibt. - if( !HasStreamName() ) - if( !maGrfObj.SwapOut() ) + if ( !HasEmbeddedStreamName() ) + if ( !maGrfObj.SwapOut() ) return 0; } // Geschriebene Grafiken oder Links werden jetzt weggeschmissen @@ -627,26 +635,27 @@ short SwGrfNode::SwapOut() return 1; } - -sal_Bool SwGrfNode::GetFileFilterNms( String* pFileNm, String* pFilterNm ) const -{ +sal_Bool SwGrfNode::GetFileFilterNms( + String* pFileNm, + String* pFilterNm ) const + { sal_Bool bRet = sal_False; - if( refLink.Is() && refLink->GetLinkManager() ) + if ( refLink.Is() && refLink->GetLinkManager() ) { sal_uInt16 nType = refLink->GetObjType(); - if( OBJECT_CLIENT_GRF == nType ) + if ( OBJECT_CLIENT_GRF == nType ) bRet = refLink->GetLinkManager()->GetDisplayNames( - refLink, 0, pFileNm, 0, pFilterNm ); - else if( OBJECT_CLIENT_DDE == nType && pFileNm && pFilterNm ) + refLink, 0, pFileNm, 0, pFilterNm ); + else if ( OBJECT_CLIENT_DDE == nType && pFileNm && pFilterNm ) { String sApp, sTopic, sItem; - if( refLink->GetLinkManager()->GetDisplayNames( - refLink, &sApp, &sTopic, &sItem ) ) + if ( refLink->GetLinkManager()->GetDisplayNames( + refLink, &sApp, &sTopic, &sItem ) ) { ( *pFileNm = sApp ) += sfx2::cTokenSeperator; ( *pFileNm += sTopic ) += sfx2::cTokenSeperator; *pFileNm += sItem; - pFilterNm->AssignAscii( RTL_CONSTASCII_STRINGPARAM( "DDE" )); + pFilterNm->AssignAscii( RTL_CONSTASCII_STRINGPARAM( "DDE" ) ); bRet = sal_True; } } @@ -654,13 +663,12 @@ sal_Bool SwGrfNode::GetFileFilterNms( String* pFileNm, String* pFilterNm ) const return bRet; } - // Eine Grafik Undo-faehig machen. Falls sie sich bereits in // einem Storage befindet, muss sie geladen werden. sal_Bool SwGrfNode::SavePersistentData() { - if( refLink.Is() ) + if ( refLink.Is() ) { ASSERT( !bInSwapIn, "SavePersistentData: stehe noch im SwapIn" ); GetDoc()->GetLinkManager().Remove( refLink ); @@ -668,10 +676,10 @@ sal_Bool SwGrfNode::SavePersistentData() } // Erst mal reinswappen, falls sie im Storage ist - if( HasStreamName() && !SwapIn() ) + if ( HasEmbeddedStreamName() && !SwapIn() ) return sal_False; - // --> OD 2005-04-19 #i44367# + // #i44367# // Do not delete graphic file in storage, because the graphic file could // be referenced by other graphic nodes. // Because it's hard to detect this case here and it would only fix @@ -683,36 +691,35 @@ sal_Bool SwGrfNode::SavePersistentData() // Important note: see also fix for #i40014# // if( HasStreamName() ) // DelStreamName(); - // <-- // Und in TempFile rausswappen return (sal_Bool) SwapOut(); } - sal_Bool SwGrfNode::RestorePersistentData() { - if( refLink.Is() ) + if ( refLink.Is() ) { IDocumentLinksAdministration* pIDLA = getIDocumentLinksAdministration(); refLink->SetVisible( pIDLA->IsVisibleLinks() ); pIDLA->GetLinkManager().InsertDDELink( refLink ); - if( getIDocumentLayoutAccess()->GetCurrentLayout() ) //swmod 080218 + if ( getIDocumentLayoutAccess()->GetCurrentLayout() ) refLink->Update(); } return sal_True; } - -void SwGrfNode::InsertLink( const String& rGrfName, const String& rFltName ) +void SwGrfNode::InsertLink( + const String& rGrfName, + const String& rFltName ) { refLink = new SwBaseLink( sfx2::LINKUPDATE_ONCALL, FORMAT_GDIMETAFILE, this ); IDocumentLinksAdministration* pIDLA = getIDocumentLinksAdministration(); - if( GetNodes().IsDocNodes() ) + if ( GetNodes().IsDocNodes() ) { refLink->SetVisible( pIDLA->IsVisibleLinks() ); - if( rFltName.EqualsAscii( "DDE" )) + if ( rFltName.EqualsAscii( "DDE" ) ) { sal_uInt16 nTmp = 0; String sApp, sTopic, sItem; @@ -720,7 +727,7 @@ void SwGrfNode::InsertLink( const String& rGrfName, const String& rFltName ) sTopic = rGrfName.GetToken( 0, sfx2::cTokenSeperator, nTmp ); sItem = rGrfName.Copy( nTmp ); pIDLA->GetLinkManager().InsertDDELink( refLink, - sApp, sTopic, sItem ); + sApp, sTopic, sItem ); } else { @@ -729,26 +736,24 @@ void SwGrfNode::InsertLink( const String& rGrfName, const String& rFltName ) refLink->SetContentType( SOT_FORMATSTR_ID_SVXB ); pIDLA->GetLinkManager().InsertFileLink( *refLink, - OBJECT_CLIENT_GRF, rGrfName, - (!bSync && rFltName.Len() ? &rFltName : 0) ); + OBJECT_CLIENT_GRF, rGrfName, + ( !bSync && rFltName.Len() ? &rFltName : 0 ) ); } } maGrfObj.SetLink( rGrfName ); } - void SwGrfNode::ReleaseLink() { - if( refLink.Is() ) + if ( refLink.Is() ) { - // #15508# remember some stuff from the linked graphic - const String aFileName(maGrfObj.GetLink()); - const Graphic aLocalGraphic(maGrfObj.GetGraphic()); - const bool bHasOriginalData(aLocalGraphic.IsLink()); + const String aFileName( maGrfObj.GetLink() ); + const Graphic aLocalGraphic( maGrfObj.GetGraphic() ); + const bool bHasOriginalData( aLocalGraphic.IsLink() ); { bInSwapIn = sal_True; - SwBaseLink* pLink = (SwBaseLink*)(::sfx2::SvBaseLink*) refLink; + SwBaseLink* pLink = (SwBaseLink*) (::sfx2::SvBaseLink*) refLink; //TODO pLink->setInputStream(getInputStream()); pLink->SwapIn( sal_True, sal_True ); bInSwapIn = sal_False; @@ -766,14 +771,14 @@ void SwGrfNode::ReleaseLink() // SvXMLGraphicHelper::ImplInsertGraphicURL which is used at export use that type // and use the original graphic at export for the ODF, without evtl. recoding // of trhe bitmap graphic data to something without loss (e.g. PNG) but bigger - if(bHasOriginalData) + if ( bHasOriginalData ) { // #15508# if we have the original data at the Graphic, let it survive // by using that Graphic again, this time at a GraphicObject without link. // This happens e.g. when inserting a linked graphic and breaking the link - maGrfObj.SetGraphic(aLocalGraphic); + maGrfObj.SetGraphic( aLocalGraphic ); } - else if(aFileName.Len()) + else if ( aFileName.Len() ) { // #15508# we have no original data, but a file name. This happens e.g. // when inserting a linked graphic and save, reload document. Try to access @@ -782,21 +787,21 @@ void SwGrfNode::ReleaseLink() int nRes = GRFILTER_OK; GraphicFilter* pFlt = GraphicFilter::GetGraphicFilter(); Graphic aNew; - nRes = GraphicFilter::LoadGraphic( aFileName, String(), aNew, pFlt); + nRes = GraphicFilter::LoadGraphic( aFileName, String(), aNew, pFlt ); - if(GRFILTER_OK == nRes) + if ( GRFILTER_OK == nRes ) { - maGrfObj.SetGraphic(aNew); + maGrfObj.SetGraphic( aNew ); } } } } - -void SwGrfNode::SetTwipSize( const Size& rSz ) +void SwGrfNode::SetTwipSize( + const Size& rSz ) { nGrfSize = rSz; - if( IsScaleImageMap() && nGrfSize.Width() && nGrfSize.Height() ) + if ( IsScaleImageMap() && nGrfSize.Width() && nGrfSize.Height() ) { // Image-Map an Grafik-Groesse anpassen ScaleImageMap(); @@ -808,13 +813,13 @@ void SwGrfNode::SetTwipSize( const Size& rSz ) void SwGrfNode::ScaleImageMap() { - if( !nGrfSize.Width() || !nGrfSize.Height() ) + if ( !nGrfSize.Width() || !nGrfSize.Height() ) return; // dann die Image-Map skalieren SwFrmFmt* pFmt = GetFlyFmt(); - if( !pFmt ) + if ( !pFmt ) return; SwFmtURL aURL( pFmt->GetURL() ); @@ -828,62 +833,61 @@ void SwGrfNode::ScaleImageMap() const SwFmtFrmSize& rFrmSize = pFmt->GetFrmSize(); const SvxBoxItem& rBox = pFmt->GetBox(); - if( !rFrmSize.GetWidthPercent() ) + if ( !rFrmSize.GetWidthPercent() ) { SwTwips nWidth = rFrmSize.GetWidth(); - nWidth -= rBox.CalcLineSpace(BOX_LINE_LEFT) + - rBox.CalcLineSpace(BOX_LINE_RIGHT); + nWidth -= rBox.CalcLineSpace( BOX_LINE_LEFT ) + + rBox.CalcLineSpace( BOX_LINE_RIGHT ); ASSERT( nWidth>0, "Gibt es 0 twip breite Grafiken!?" ); - if( nGrfSize.Width() != nWidth ) + if ( nGrfSize.Width() != nWidth ) { aScaleX = Fraction( nGrfSize.Width(), nWidth ); bScale = sal_True; } } - if( !rFrmSize.GetHeightPercent() ) + if ( !rFrmSize.GetHeightPercent() ) { SwTwips nHeight = rFrmSize.GetHeight(); - nHeight -= rBox.CalcLineSpace(BOX_LINE_TOP) + - rBox.CalcLineSpace(BOX_LINE_BOTTOM); + nHeight -= rBox.CalcLineSpace( BOX_LINE_TOP ) + + rBox.CalcLineSpace( BOX_LINE_BOTTOM ); ASSERT( nHeight>0, "Gibt es 0 twip hohe Grafiken!?" ); - if( nGrfSize.Height() != nHeight ) + if ( nGrfSize.Height() != nHeight ) { aScaleY = Fraction( nGrfSize.Height(), nHeight ); bScale = sal_True; } } - if( bScale ) + if ( bScale ) { aURL.GetMap()->Scale( aScaleX, aScaleY ); pFmt->SetFmtAttr( aURL ); } } - void SwGrfNode::DelStreamName() { - if( HasStreamName() ) + if ( HasEmbeddedStreamName() ) { // Dann die Grafik im Storage loeschen - uno::Reference < embed::XStorage > xDocStg = GetDoc()->GetDocStorage(); - if( xDocStg.is() ) + uno::Reference< embed::XStorage > xDocStg = GetDoc()->GetDocStorage(); + if ( xDocStg.is() ) { try { String aPicStgName, aStrmName; _GetStreamStorageNames( aStrmName, aPicStgName ); - uno::Reference < embed::XStorage > refPics = xDocStg; + uno::Reference< embed::XStorage > refPics = xDocStg; if ( aPicStgName.Len() ) refPics = xDocStg->openStorageElement( aPicStgName, embed::ElementModes::READWRITE ); refPics->removeElement( aStrmName ); - uno::Reference < embed::XTransactedObject > xTrans( refPics, uno::UNO_QUERY ); + uno::Reference< embed::XTransactedObject > xTrans( refPics, uno::UNO_QUERY ); if ( xTrans.is() ) xTrans->commit(); } @@ -901,19 +905,20 @@ void SwGrfNode::DelStreamName() /** helper method to get a substorage of the document storage for readonly access. - OD, MAV 2005-08-17 #i53025# - A substorage with the specified name will be opened readonly. If the provided - name is empty the root storage will be returned. -*/ -uno::Reference< embed::XStorage > SwGrfNode::_GetDocSubstorageOrRoot( const String& aStgName ) const -{ - uno::Reference < embed::XStorage > refStor = - const_cast<SwGrfNode*>(this)->GetDoc()->GetDocStorage(); + #i53025# + A substorage with the specified name will be opened readonly. If the provided + name is empty the root storage will be returned. + */ +uno::Reference< embed::XStorage > SwGrfNode::_GetDocSubstorageOrRoot( + const String& aStgName ) const + { + uno::Reference< embed::XStorage > refStor = + const_cast< SwGrfNode* >( this )->GetDoc()->GetDocStorage(); ASSERT( refStor.is(), "Kein Storage am Doc" ); if ( aStgName.Len() ) { - if( refStor.is() ) + if ( refStor.is() ) return refStor->openStorageElement( aStgName, embed::ElementModes::READ ); } @@ -922,29 +927,29 @@ uno::Reference< embed::XStorage > SwGrfNode::_GetDocSubstorageOrRoot( const Stri /** helper method to determine stream for the embedded graphic. - OD 2005-05-04 #i48434# - Important note: caller of this method has to handle the thrown exceptions - OD, MAV 2005-08-17 #i53025# - Storage, which should contain the stream of the embedded graphic, is - provided via parameter. Otherwise the returned stream will be closed - after the the method returns, because its parent stream is closed and deleted. - Proposed name of embedded graphic stream is also provided by parameter. + #i48434# + Important note: caller of this method has to handle the thrown exceptions + #i53025# + Storage, which should contain the stream of the embedded graphic, is + provided via parameter. Otherwise the returned stream will be closed + after the the method returns, because its parent stream is closed and deleted. + Proposed name of embedded graphic stream is also provided by parameter. - @author OD -*/ + @author OD + */ SvStream* SwGrfNode::_GetStreamForEmbedGrf( - const uno::Reference< embed::XStorage >& _refPics, - String& _aStrmName ) const -{ + const uno::Reference< embed::XStorage >& _refPics, + String& _aStrmName ) const + { SvStream* pStrm( 0L ); - if( _refPics.is() && _aStrmName.Len() ) + if ( _refPics.is() && _aStrmName.Len() ) { // If stream doesn't exist in the storage, try access the graphic file by // re-generating its name. // A save action can have changed the filename of the embedded graphic, // because a changed unique ID of the graphic is calculated. - // --> OD 2006-01-30 #b6364738# + // #b6364738# // recursive calls of <GetUniqueID()> have to be avoided. // Thus, use local static boolean to assure this. static bool bInRegenerateStrmName( false ); @@ -963,13 +968,12 @@ SvStream* SwGrfNode::_GetStreamForEmbedGrf( } bInRegenerateStrmName = false; } - // <-- // assure that graphic file exist in the storage. if ( _refPics->hasByName( _aStrmName ) && _refPics->isStreamElement( _aStrmName ) ) { - uno::Reference < io::XStream > refStrm = _refPics->openStreamElement( _aStrmName, embed::ElementModes::READ ); + uno::Reference< io::XStream > refStrm = _refPics->openStreamElement( _aStrmName, embed::ElementModes::READ ); pStrm = utl::UcbStreamHelper::CreateStream( refStrm ); } else @@ -982,104 +986,96 @@ SvStream* SwGrfNode::_GetStreamForEmbedGrf( } -// --> OD 2005-08-17 #i53025# - stream couldn't be in a 3.1 - 5.2 storage any more. -// Thus, removing corresponding code. -void SwGrfNode::_GetStreamStorageNames( String& rStrmName, - String& rStorName ) const -{ +void SwGrfNode::_GetStreamStorageNames( + String& rStrmName, + String& rStorName ) const + { rStorName.Erase(); rStrmName.Erase(); String aUserData( maGrfObj.GetUserData() ); - if( !aUserData.Len() ) + if ( !aUserData.Len() ) return; String aProt( RTL_CONSTASCII_STRINGPARAM( "vnd.sun.star.Package:" ) ); - if( 0 == aUserData.CompareTo( aProt, aProt.Len() ) ) + if ( 0 == aUserData.CompareTo( aProt, aProt.Len() ) ) { // 6.0 (XML) Package xub_StrLen nPos = aUserData.Search( '/' ); - if( STRING_NOTFOUND == nPos ) + if ( STRING_NOTFOUND == nPos ) { rStrmName = aUserData.Copy( aProt.Len() ); } else { xub_StrLen nPathStart = aProt.Len(); - if( 0 == aUserData.CompareToAscii( "./", 2 ) ) + if ( 0 == aUserData.CompareToAscii( "./", 2 ) ) nPathStart += 2; - rStorName = aUserData.Copy( nPathStart, nPos-nPathStart ); - rStrmName = aUserData.Copy( nPos+1 ); + rStorName = aUserData.Copy( nPathStart, nPos - nPathStart ); + rStrmName = aUserData.Copy( nPos + 1 ); } } else { ASSERT( false, - "<SwGrfNode::_GetStreamStorageNames(..)> - unknown graphic URL type. Code for handling 3.1 - 5.2 storages has been deleted by issue i53025." ); + "<SwGrfNode::_GetStreamStorageNames(..)> - unknown graphic URL type. Code for handling 3.1 - 5.2 storages has been deleted by issue i53025." ); } ASSERT( STRING_NOTFOUND == rStrmName.Search( '/' ), - "invalid graphic stream name" ); + "invalid graphic stream name" ); } -// <-- -SwCntntNode* SwGrfNode::MakeCopy( SwDoc* pDoc, const SwNodeIndex& rIdx ) const -{ + +SwCntntNode* SwGrfNode::MakeCopy( + SwDoc* pDoc, + const SwNodeIndex& rIdx ) const + { // kopiere die Formate in das andere Dokument: SwGrfFmtColl* pColl = pDoc->CopyGrfColl( *GetGrfColl() ); Graphic aTmpGrf; - SwBaseLink* pLink = (SwBaseLink*)(::sfx2::SvBaseLink*) refLink; - if( !pLink && HasStreamName() ) + SwBaseLink* pLink = (SwBaseLink*) (::sfx2::SvBaseLink*) refLink; + if ( !pLink && HasEmbeddedStreamName() ) { - // --> OD 2005-05-04 #i48434# - usage of new method <_GetStreamForEmbedGrf(..)> try { - // --> OD, MAV 2005-08-17 #i53025# - needed correction of new - // method <_GetStreamForEmbedGrf(..)> -// bool bGraphic(false); -// SvStream* pStrm = _GetStreamForEmbedGrf( bGraphic ); String aStrmName, aPicStgName; _GetStreamStorageNames( aStrmName, aPicStgName ); - uno::Reference < embed::XStorage > refPics = _GetDocSubstorageOrRoot( aPicStgName ); + uno::Reference< embed::XStorage > refPics = _GetDocSubstorageOrRoot( aPicStgName ); SvStream* pStrm = _GetStreamForEmbedGrf( refPics, aStrmName ); if ( pStrm ) { - const String aURL(maGrfObj.GetUserData()); - GraphicFilter::GetGraphicFilter()->ImportGraphic(aTmpGrf, aURL, *pStrm); + const String aURL( maGrfObj.GetUserData() ); + GraphicFilter::GetGraphicFilter()->ImportGraphic( aTmpGrf, aURL, *pStrm ); delete pStrm; } - // <-- } catch ( uno::Exception& ) { - // --> OD 2005-04-25 #i48434# ASSERT( false, "<SwGrfNode::MakeCopy(..)> - unhandled exception!" ); - // <-- } - // <-- } else { - if( maGrfObj.IsSwappedOut() ) - const_cast<SwGrfNode*>(this)->SwapIn(); + if ( maGrfObj.IsSwappedOut() ) + const_cast< SwGrfNode* >( this )->SwapIn(); aTmpGrf = maGrfObj.GetGraphic(); } const sfx2::LinkManager& rMgr = getIDocumentLinksAdministration()->GetLinkManager(); String sFile, sFilter; - if( IsLinkedFile() ) + if ( IsLinkedFile() ) rMgr.GetDisplayNames( refLink, 0, &sFile, 0, &sFilter ); - else if( IsLinkedDDE() ) + else if ( IsLinkedDDE() ) { String sTmp1, sTmp2; rMgr.GetDisplayNames( refLink, &sTmp1, &sTmp2, &sFilter ); sfx2::MakeLnkName( sFile, &sTmp1, sTmp2, sFilter ); - sFilter.AssignAscii( RTL_CONSTASCII_STRINGPARAM( "DDE" )); + sFilter.AssignAscii( RTL_CONSTASCII_STRINGPARAM( "DDE" ) ); } SwGrfNode* pGrfNd = pDoc->GetNodes().MakeGrfNode( rIdx, sFile, sFilter, - &aTmpGrf, pColl, - (SwAttrSet*)GetpSwAttrSet() ); + &aTmpGrf, pColl, + (SwAttrSet*) GetpSwAttrSet() ); pGrfNd->SetTitle( GetTitle() ); pGrfNd->SetDescription( GetDescription() ); pGrfNd->SetContour( HasContour(), HasAutomaticContour() ); @@ -1093,19 +1089,19 @@ IMPL_LINK( SwGrfNode, SwapGraphic, GraphicObject*, pGrfObj ) // #101174#: Keep graphic while in swap in. That's at least important // when breaking links, because in this situation a reschedule call and // a DataChanged call lead to a paint of the graphic. - if( pGrfObj->IsInSwapOut() && (IsSelected() || bInSwapIn) ) + if ( pGrfObj->IsInSwapOut() && ( IsSelected() || bInSwapIn ) ) pRet = GRFMGR_AUTOSWAPSTREAM_NONE; - else if( refLink.Is() ) + else if ( refLink.Is() ) { - if( pGrfObj->IsInSwapIn() ) + if ( pGrfObj->IsInSwapIn() ) { // then make it by your self - if( !bInSwapIn ) + if ( !bInSwapIn ) { sal_Bool bIsModifyLocked = IsModifyLocked(); LockModify(); SwapIn( sal_False ); - if( !bIsModifyLocked ) + if ( !bIsModifyLocked ) UnlockModify(); } pRet = GRFMGR_AUTOSWAPSTREAM_NONE; @@ -1117,22 +1113,17 @@ IMPL_LINK( SwGrfNode, SwapGraphic, GraphicObject*, pGrfObj ) { pRet = GRFMGR_AUTOSWAPSTREAM_TEMP; - if( HasStreamName() ) + if ( HasEmbeddedStreamName() ) { - // --> OD 2005-05-04 #i48434# - usage of new method <_GetStreamForEmbedGrf(..)> try { - // --> OD, MAV 2005-08-17 #i53025# - needed correction of new - // method <_GetStreamForEmbedGrf(..)> -// bool bGraphic(false); -// SvStream* pStrm = _GetStreamForEmbedGrf( bGraphic ); String aStrmName, aPicStgName; _GetStreamStorageNames( aStrmName, aPicStgName ); - uno::Reference < embed::XStorage > refPics = _GetDocSubstorageOrRoot( aPicStgName ); + uno::Reference< embed::XStorage > refPics = _GetDocSubstorageOrRoot( aPicStgName ); SvStream* pStrm = _GetStreamForEmbedGrf( refPics, aStrmName ); if ( pStrm ) { - if( pGrfObj->IsInSwapOut() ) + if ( pGrfObj->IsInSwapOut() ) { pRet = GRFMGR_AUTOSWAPSTREAM_LINK; } @@ -1143,39 +1134,35 @@ IMPL_LINK( SwGrfNode, SwapGraphic, GraphicObject*, pGrfObj ) } delete pStrm; } - // <-- } catch ( uno::Exception& ) { - // --> OD 2005-04-25 #i48434# ASSERT( false, "<SwapGraphic> - unhandled exception!" ); - // <-- } - // <-- } } - return (long)pRet; + return (long) pRet; } - // alle QuickDraw-Bitmaps eines speziellen Docs loeschen -void DelAllGrfCacheEntries( SwDoc* pDoc ) +void DelAllGrfCacheEntries( + SwDoc* pDoc ) { - if( pDoc ) + if ( pDoc ) { // alle Graphic-Links mit dem Namen aus dem Cache loeschen const sfx2::LinkManager& rLnkMgr = pDoc->GetLinkManager(); const ::sfx2::SvBaseLinks& rLnks = rLnkMgr.GetLinks(); SwGrfNode* pGrfNd; String sFileNm; - for( sal_uInt16 n = rLnks.Count(); n; ) + for ( sal_uInt16 n = rLnks.Count(); n; ) { - ::sfx2::SvBaseLink* pLnk = &(*rLnks[ --n ]); - if( pLnk && OBJECT_CLIENT_GRF == pLnk->GetObjType() && - rLnkMgr.GetDisplayNames( pLnk, 0, &sFileNm ) && - dynamic_cast< SwBaseLink* >(pLnk) && 0 != ( pGrfNd = - ((SwBaseLink*)pLnk)->GetCntntNode()->GetGrfNode()) ) + ::sfx2::SvBaseLink* pLnk = &( *rLnks[--n] ); + if ( pLnk && OBJECT_CLIENT_GRF == pLnk->GetObjType() + && rLnkMgr.GetDisplayNames( pLnk, 0, &sFileNm ) + && 0 != dynamic_cast< SwBaseLink* >(pLnk) + && 0 != (pGrfNd = static_cast< SwBaseLink* >(pLnk)->GetCntntNode()->GetGrfNode())) { pGrfNd->ReleaseGraphicFromCache(); } @@ -1184,42 +1171,55 @@ void DelAllGrfCacheEntries( SwDoc* pDoc ) } // returns the with our graphic attributes filled Graphic-Attr-Structure -GraphicAttr& SwGrfNode::GetGraphicAttr( GraphicAttr& rGA, - const SwFrm* pFrm ) const -{ +GraphicAttr& SwGrfNode::GetGraphicAttr( + GraphicAttr& rGA, + const SwFrm* pFrm ) const + { const SwAttrSet& rSet = GetSwAttrSet(); - rGA.SetDrawMode( (GraphicDrawMode)rSet.GetDrawModeGrf().GetValue() ); + rGA.SetDrawMode( (GraphicDrawMode) rSet.GetDrawModeGrf().GetValue() ); const SwMirrorGrf & rMirror = rSet.GetMirrorGrf(); sal_uLong nMirror = BMP_MIRROR_NONE; - if( rMirror.IsGrfToggle() && pFrm && !pFrm->FindPageFrm()->OnRightPage() ) + if ( rMirror.IsGrfToggle() && pFrm && !pFrm->FindPageFrm()->OnRightPage() ) { - switch( rMirror.GetValue() ) + switch (rMirror.GetValue()) { - case RES_MIRROR_GRAPH_DONT: nMirror = BMP_MIRROR_HORZ; break; - case RES_MIRROR_GRAPH_VERT: nMirror = BMP_MIRROR_NONE; break; - case RES_MIRROR_GRAPH_HOR: nMirror = BMP_MIRROR_HORZ|BMP_MIRROR_VERT; - break; - default: nMirror = BMP_MIRROR_VERT; break; + case RES_MIRROR_GRAPH_DONT: + nMirror = BMP_MIRROR_HORZ; + break; + case RES_MIRROR_GRAPH_VERT: + nMirror = BMP_MIRROR_NONE; + break; + case RES_MIRROR_GRAPH_HOR: + nMirror = BMP_MIRROR_HORZ | BMP_MIRROR_VERT; + break; + default: + nMirror = BMP_MIRROR_VERT; + break; } } else - switch( rMirror.GetValue() ) + switch (rMirror.GetValue()) { - case RES_MIRROR_GRAPH_BOTH: nMirror = BMP_MIRROR_HORZ|BMP_MIRROR_VERT; - break; - case RES_MIRROR_GRAPH_VERT: nMirror = BMP_MIRROR_HORZ; break; - case RES_MIRROR_GRAPH_HOR: nMirror = BMP_MIRROR_VERT; break; + case RES_MIRROR_GRAPH_BOTH: + nMirror = BMP_MIRROR_HORZ | BMP_MIRROR_VERT; + break; + case RES_MIRROR_GRAPH_VERT: + nMirror = BMP_MIRROR_HORZ; + break; + case RES_MIRROR_GRAPH_HOR: + nMirror = BMP_MIRROR_VERT; + break; } rGA.SetMirrorFlags( nMirror ); const SwCropGrf& rCrop = rSet.GetCropGrf(); rGA.SetCrop( TWIP_TO_MM100( rCrop.GetLeft() ), - TWIP_TO_MM100( rCrop.GetTop() ), - TWIP_TO_MM100( rCrop.GetRight() ), - TWIP_TO_MM100( rCrop.GetBottom() )); + TWIP_TO_MM100( rCrop.GetTop() ), + TWIP_TO_MM100( rCrop.GetRight() ), + TWIP_TO_MM100( rCrop.GetBottom() ) ); const SwRotationGrf& rRotation = rSet.GetRotationGrf(); rGA.SetRotation( rRotation.GetValue() ); @@ -1234,7 +1234,7 @@ GraphicAttr& SwGrfNode::GetGraphicAttr( GraphicAttr& rGA, const sal_uInt16 nTrans = rSet.GetTransparencyGrf().GetValue(); rGA.SetTransparency( (sal_uInt8) FRound( - Min( nTrans, (sal_uInt16) 100 ) * 2.55 ) ); + Min( nTrans, (sal_uInt16) 100 ) * 2.55 ) ); return rGA; } @@ -1242,35 +1242,34 @@ GraphicAttr& SwGrfNode::GetGraphicAttr( GraphicAttr& rGA, sal_Bool SwGrfNode::IsTransparent() const { sal_Bool bRet = maGrfObj.IsTransparent(); - if( !bRet ) // ask the attribut + if ( !bRet ) // ask the attribut bRet = 0 != GetSwAttrSet().GetTransparencyGrf().GetValue(); return bRet; } - sal_Bool SwGrfNode::IsSelected() const { sal_Bool bRet = sal_False; const SwEditShell* pESh = GetDoc()->GetEditShell(); - if( pESh ) + if ( pESh ) { const SwNode* pN = this; const ViewShell* pV = pESh; - do { - if( dynamic_cast< const SwEditShell* >(pV) && pN == &((SwCrsrShell*)pV) - ->GetCrsr()->GetPoint()->nNode.GetNode() ) + do + { + if(dynamic_cast< const SwEditShell* >(pV) + && pN == &((SwCrsrShell*)pV)->GetCrsr()->GetPoint()->nNode.GetNode()) { bRet = sal_True; break; } } - while( pESh != ( pV = (ViewShell*)pV->GetNext() )); + while (pESh != ( pV = (ViewShell*) pV->GetNext() )); } return bRet; } -// --> OD 2006-12-22 #i73788# boost::weak_ptr< SwAsyncRetrieveInputStreamThreadConsumer > SwGrfNode::GetThreadConsumer() { return mpThreadConsumer; @@ -1281,7 +1280,7 @@ void SwGrfNode::TriggerAsyncRetrieveInputStream() if ( !IsLinkedFile() ) { ASSERT( false, - "<SwGrfNode::TriggerAsyncLoad()> - Method is misused. Method call is only valid for graphic nodes, which refer a linked graphic file" ); + "<SwGrfNode::TriggerAsyncLoad()> - Method is misused. Method call is only valid for graphic nodes, which refer a linked graphic file" ); return; } @@ -1302,7 +1301,7 @@ bool SwGrfNode::IsLinkedInputStreamReady() const } void SwGrfNode::ApplyInputStream( - com::sun::star::uno::Reference<com::sun::star::io::XInputStream> xInputStream, + com::sun::star::uno::Reference< com::sun::star::io::XInputStream > xInputStream, const sal_Bool bIsStreamReadOnly ) { if ( IsLinkedFile() ) @@ -1320,27 +1319,22 @@ void SwGrfNode::ApplyInputStream( void SwGrfNode::UpdateLinkWithInputStream() { - // --> OD #i85105# // do not work on link, if a <SwapIn> has been triggered. if ( !bInSwapIn && IsLinkedFile() ) - // <-- { GetLink()->setStreamToLoadFrom( mxInputStream, mbIsStreamReadOnly ); GetLink()->Update(); SwMsgPoolItem aMsgHint( RES_GRAPHIC_ARRIVED ); ModifyNotification( &aMsgHint, &aMsgHint ); - // --> OD 2008-06-18 #i88291# mxInputStream.clear(); GetLink()->clearStreamToLoadFrom(); - // <-- mbLinkedInputStreamReady = false; mpThreadConsumer.reset(); } } -// <-- -// --> OD 2008-07-21 #i90395# + bool SwGrfNode::IsAsyncRetrieveInputStreamPossible() const { bool bRet = false; @@ -1358,4 +1352,3 @@ bool SwGrfNode::IsAsyncRetrieveInputStreamPossible() const return bRet; } -// <-- |