summaryrefslogtreecommitdiff
path: root/sw/source/core/graphic/ndgrf.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'sw/source/core/graphic/ndgrf.cxx')
-rw-r--r--sw/source/core/graphic/ndgrf.cxx725
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;
}
-// <--