[Libreoffice-commits] core.git: 18 commits - 2 sw/inc sw/Library_sw.mk sw/source
Valentin Kettner
vakevk+libreoffice at gmail.com
Tue Jun 3 10:27:37 PDT 2014
2 | 592 +++++++++++++++++++
sw/Library_sw.mk | 1
sw/inc/IDocumentSettingAccess.hxx | 16
sw/inc/doc.hxx | 165 -----
sw/source/core/access/accfrmobjmap.cxx | 5
sw/source/core/attr/format.cxx | 7
sw/source/core/crsr/pam.cxx | 3
sw/source/core/doc/DocumentDeviceManager.cxx | 54 -
sw/source/core/doc/DocumentDrawModelManager.cxx | 367 +++++++++++
sw/source/core/doc/DocumentSettingManager.cxx | 34 -
sw/source/core/doc/doc.cxx | 148 +---
sw/source/core/doc/docdraw.cxx | 308 ---------
sw/source/core/doc/docfly.cxx | 3
sw/source/core/doc/docglbl.cxx | 9
sw/source/core/doc/doclay.cxx | 28
sw/source/core/doc/docnew.cxx | 93 --
sw/source/core/doc/doctxm.cxx | 3
sw/source/core/doc/notxtfrm.cxx | 2
sw/source/core/doc/poolfmt.cxx | 13
sw/source/core/doc/tblrwcl.cxx | 1
sw/source/core/docnode/ndtbl.cxx | 3
sw/source/core/docnode/node.cxx | 7
sw/source/core/docnode/nodedump.cxx | 3
sw/source/core/draw/drawdoc.cxx | 8
sw/source/core/draw/dview.cxx | 3
sw/source/core/edit/edfld.cxx | 3
sw/source/core/edit/edglbldc.cxx | 1
sw/source/core/edit/editsh.cxx | 1
sw/source/core/fields/ddetbl.cxx | 1
sw/source/core/fields/textapi.cxx | 7
sw/source/core/frmedt/fecopy.cxx | 9
sw/source/core/frmedt/feshview.cxx | 3
sw/source/core/inc/DocumentDrawModelManager.hxx | 92 ++
sw/source/core/inc/DocumentSettingManager.hxx | 69 ++
sw/source/core/layout/anchoreddrawobject.cxx | 3
sw/source/core/layout/anchoredobject.cxx | 4
sw/source/core/layout/calcmove.cxx | 4
sw/source/core/layout/flowfrm.cxx | 4
sw/source/core/layout/fly.cxx | 1
sw/source/core/layout/flycnt.cxx | 6
sw/source/core/layout/flyincnt.cxx | 4
sw/source/core/layout/flylay.cxx | 4
sw/source/core/layout/frmtool.cxx | 9
sw/source/core/layout/newfrm.cxx | 1
sw/source/core/layout/objectformatter.cxx | 1
sw/source/core/layout/pagechg.cxx | 4
sw/source/core/layout/paintfrm.cxx | 11
sw/source/core/layout/sectfrm.cxx | 1
sw/source/core/layout/tabfrm.cxx | 5
sw/source/core/layout/trvlfrm.cxx | 3
sw/source/core/layout/wsfrm.cxx | 1
sw/source/core/ole/ndole.cxx | 3
sw/source/core/text/frmcrsr.cxx | 1
sw/source/core/text/itratr.cxx | 2
sw/source/core/text/itrform2.cxx | 1
sw/source/core/text/porfld.cxx | 1
sw/source/core/text/txtfld.cxx | 1
sw/source/core/text/txtfrm.cxx | 2
sw/source/core/txtnode/ndtxt.cxx | 1
sw/source/core/txtnode/txtedt.cxx | 3
sw/source/core/undo/docundo.cxx | 1
sw/source/core/undo/unattr.cxx | 6
sw/source/core/undo/unins.cxx | 9
sw/source/core/unocore/unodraw.cxx | 31
sw/source/core/unocore/unoframe.cxx | 12
sw/source/core/unocore/unostyle.cxx | 9
sw/source/core/view/printdata.cxx | 3
sw/source/core/view/viewsh.cxx | 19
sw/source/core/view/vnew.cxx | 8
sw/source/core/view/vprint.cxx | 3
sw/source/filter/ascii/parasc.cxx | 5
sw/source/filter/basflt/shellio.cxx | 18
sw/source/filter/html/css1atr.cxx | 5
sw/source/filter/html/htmldrawreader.cxx | 5
sw/source/filter/html/htmldrawwriter.cxx | 4
sw/source/filter/html/htmlforw.cxx | 3
sw/source/filter/html/swhtml.cxx | 11
sw/source/filter/html/wrthtml.cxx | 15
sw/source/filter/writer/writer.cxx | 5
sw/source/filter/ww8/docxattributeoutput.cxx | 3
sw/source/filter/ww8/docxexport.cxx | 5
sw/source/filter/ww8/docxsdrexport.cxx | 6
sw/source/filter/ww8/rtfattributeoutput.cxx | 4
sw/source/filter/ww8/writerhelper.cxx | 7
sw/source/filter/ww8/wrtw8esh.cxx | 18
sw/source/filter/ww8/wrtw8nds.cxx | 5
sw/source/filter/ww8/wrtww8.cxx | 22
sw/source/filter/ww8/ww8atr.cxx | 5
sw/source/filter/ww8/ww8graf.cxx | 5
sw/source/filter/ww8/ww8par.cxx | 69 +-
sw/source/filter/ww8/ww8par6.cxx | 3
sw/source/filter/xml/swxml.cxx | 12
sw/source/filter/xml/xmlexp.cxx | 12
sw/source/filter/xml/xmlfonte.cxx | 6
sw/source/filter/xml/xmlimp.cxx | 13
sw/source/filter/xml/xmltexti.cxx | 11
sw/source/ui/config/optpage.cxx | 5
sw/source/ui/dialog/ascfldlg.cxx | 3
sw/source/uibase/app/appopt.cxx | 3
sw/source/uibase/app/docsh.cxx | 56 -
sw/source/uibase/app/docsh2.cxx | 16
sw/source/uibase/app/docshdrw.cxx | 3
sw/source/uibase/app/docshini.cxx | 36 -
sw/source/uibase/app/docst.cxx | 8
sw/source/uibase/app/docstyle.cxx | 12
sw/source/uibase/dbui/dbmgr.cxx | 1
sw/source/uibase/dialog/SwSpellDialogChildWindow.cxx | 6
sw/source/uibase/dochdl/swdtflvr.cxx | 7
sw/source/uibase/docvw/PostItMgr.cxx | 1
sw/source/uibase/docvw/edtwin.cxx | 5
sw/source/uibase/lingu/sdrhhcwrap.cxx | 6
sw/source/uibase/misc/glshell.cxx | 5
sw/source/uibase/shells/basesh.cxx | 3
sw/source/uibase/shells/frmsh.cxx | 6
sw/source/uibase/shells/grfsh.cxx | 3
sw/source/uibase/shells/grfshex.cxx | 3
sw/source/uibase/uiview/pview.cxx | 1
sw/source/uibase/uiview/srcview.cxx | 5
sw/source/uibase/uiview/swcli.cxx | 3
sw/source/uibase/uiview/view.cxx | 10
sw/source/uibase/uiview/view2.cxx | 2
sw/source/uibase/uiview/viewdraw.cxx | 1
sw/source/uibase/uiview/viewprt.cxx | 1
sw/source/uibase/uno/SwXDocumentSettings.cxx | 202 +++---
sw/source/uibase/uno/unodefaults.cxx | 5
sw/source/uibase/uno/unomod.cxx | 5
sw/source/uibase/uno/unotxdoc.cxx | 37 -
sw/source/uibase/uno/unotxvw.cxx | 1
sw/source/uibase/utlui/content.cxx | 9
sw/source/uibase/wrtsh/wrtsh1.cxx | 3
130 files changed, 1898 insertions(+), 1096 deletions(-)
New commits:
commit 3136a401720066b4f2f00f75f5686b35c02037c1
Author: Valentin Kettner <vakevk+libreoffice at gmail.com>
Date: Tue Jun 3 18:51:55 2014 +0200
Finished rebasing to master.
I forgot some lines while rebasing and had to fix this here.
Change-Id: I6a29497aa779d2b104db685161d89ae7c27805b3
diff --git a/sw/source/core/unocore/unoframe.cxx b/sw/source/core/unocore/unoframe.cxx
index f111754..0695a04 100644
--- a/sw/source/core/unocore/unoframe.cxx
+++ b/sw/source/core/unocore/unoframe.cxx
@@ -1681,13 +1681,8 @@ void SwXFrame::setPropertyValue(const :: OUString& rPropertyName, const :: uno::
if( nZOrder >= 0 && std::find(aTextBoxes.begin(), aTextBoxes.end(), pFmt) == aTextBoxes.end())
{
SdrObject* pObject =
-<<<<<<< HEAD
GetOrCreateSdrObject( (SwFlyFrmFmt&)*pFmt );
- SdrModel *pDrawModel = pDoc->GetDrawModel();
-=======
- GetOrCreateSdrObject( (SwFlyFrmFmt*)pFmt );
SdrModel *pDrawModel = pDoc->getIDocumentDrawModelAccess().GetDrawModel();
->>>>>>> Split out IDocumentDrawModelAccess from SwDoc.
pDrawModel->GetPage(0)->
SetObjectOrdNum(pObject->GetOrdNum(), nZOrder);
}
@@ -3034,13 +3029,8 @@ void SwXFrame::attachToRange(const uno::Reference< text::XTextRange > & xTextRan
pDoc->SetFlyName((SwFlyFrmFmt&)*pFrmFmt, m_sName);
}
}
-<<<<<<< HEAD
- if( pFmt && pDoc->GetDrawModel() )
- GetOrCreateSdrObject(*pFmt);
-=======
if( pFmt && pDoc->getIDocumentDrawModelAccess().GetDrawModel() )
- GetOrCreateSdrObject( pFmt );
->>>>>>> Split out IDocumentDrawModelAccess from SwDoc.
+ GetOrCreateSdrObject(*pFmt);
const ::uno::Any* pOrder;
if( pProps->GetProperty(FN_UNO_Z_ORDER, 0, pOrder) )
setPropertyValue(UNO_NAME_Z_ORDER, *pOrder);
diff --git a/sw/source/filter/xml/xmltexti.cxx b/sw/source/filter/xml/xmltexti.cxx
index faed2f2..c88007c 100644
--- a/sw/source/filter/xml/xmltexti.cxx
+++ b/sw/source/filter/xml/xmltexti.cxx
@@ -596,13 +596,8 @@ uno::Reference< XPropertySet > SwXMLTextImportHelper::createAndInsertOOoLink(
SwXFrame *pXFrame = SwXFrames::GetObject( *pFrmFmt, FLYCNTTYPE_OLE );
xPropSet = pXFrame;
-<<<<<<< HEAD
- if( pDoc->GetDrawModel() )
- SwXFrame::GetOrCreateSdrObject(*
-=======
if( pDoc->getIDocumentDrawModelAccess().GetDrawModel() )
- SwXFrame::GetOrCreateSdrObject(
->>>>>>> Split out IDocumentDrawModelAccess from SwDoc.
+ SwXFrame::GetOrCreateSdrObject(*
static_cast<SwFlyFrmFmt*>( pXFrame->GetFrmFmt() ) ); // req for z-order
}
}
@@ -658,13 +653,8 @@ uno::Reference< XPropertySet > SwXMLTextImportHelper::createAndInsertApplet(
NULL);
SwXFrame *pXFrame = SwXFrames::GetObject( *pFrmFmt, FLYCNTTYPE_OLE );
xPropSet = pXFrame;
-<<<<<<< HEAD
- if( pDoc->GetDrawModel() )
- SwXFrame::GetOrCreateSdrObject(*
-=======
if( pDoc->getIDocumentDrawModelAccess().GetDrawModel() )
- SwXFrame::GetOrCreateSdrObject(
->>>>>>> Split out IDocumentDrawModelAccess from SwDoc.
+ SwXFrame::GetOrCreateSdrObject(*
static_cast<SwFlyFrmFmt*>( pXFrame->GetFrmFmt() ) ); // req for z-order
return xPropSet;
@@ -736,13 +726,8 @@ uno::Reference< XPropertySet > SwXMLTextImportHelper::createAndInsertPlugin(
NULL);
SwXFrame *pXFrame = SwXFrames::GetObject( *pFrmFmt, FLYCNTTYPE_OLE );
xPropSet = pXFrame;
-<<<<<<< HEAD
- if( pDoc->GetDrawModel() )
- SwXFrame::GetOrCreateSdrObject(*
-=======
if( pDoc->getIDocumentDrawModelAccess().GetDrawModel() )
- SwXFrame::GetOrCreateSdrObject(
->>>>>>> Split out IDocumentDrawModelAccess from SwDoc.
+ SwXFrame::GetOrCreateSdrObject(*
static_cast<SwFlyFrmFmt*>( pXFrame->GetFrmFmt() ) ); // req for z-order
}
}
@@ -892,13 +877,8 @@ uno::Reference< XPropertySet > SwXMLTextImportHelper::createAndInsertFloatingFra
NULL);
SwXFrame *pXFrame = SwXFrames::GetObject( *pFrmFmt, FLYCNTTYPE_OLE );
xPropSet = pXFrame;
-<<<<<<< HEAD
- if( pDoc->GetDrawModel() )
- SwXFrame::GetOrCreateSdrObject(*
-=======
if( pDoc->getIDocumentDrawModelAccess().GetDrawModel() )
- SwXFrame::GetOrCreateSdrObject(
->>>>>>> Split out IDocumentDrawModelAccess from SwDoc.
+ SwXFrame::GetOrCreateSdrObject(*
static_cast<SwFlyFrmFmt*>( pXFrame->GetFrmFmt() ) ); // req for z-order
}
}
diff --git a/sw/source/uibase/uno/SwXDocumentSettings.cxx b/sw/source/uibase/uno/SwXDocumentSettings.cxx
index ed9bba1..b515077 100644
--- a/sw/source/uibase/uno/SwXDocumentSettings.cxx
+++ b/sw/source/uibase/uno/SwXDocumentSettings.cxx
@@ -801,7 +801,7 @@ void SwXDocumentSettings::_setSingleValue( const comphelper::PropertyInfo & rInf
case HANDLE_APPLY_PARAGRAPH_MARK_FORMAT_TO_NUMBERING:
{
bool bTmp = *(sal_Bool*)rValue.getValue();
- mpDoc->set(IDocumentSettingAccess::APPLY_PARAGRAPH_MARK_FORMAT_TO_NUMBERING, bTmp);
+ mpDoc->getIDocumentSettingAccess().set(IDocumentSettingAccess::APPLY_PARAGRAPH_MARK_FORMAT_TO_NUMBERING, bTmp);
}
break;
default:
@@ -1229,7 +1229,7 @@ void SwXDocumentSettings::_getSingleValue( const comphelper::PropertyInfo & rInf
break;
case HANDLE_APPLY_PARAGRAPH_MARK_FORMAT_TO_NUMBERING:
{
- sal_Bool bTmp = mpDoc->get( IDocumentSettingAccess::APPLY_PARAGRAPH_MARK_FORMAT_TO_NUMBERING );
+ sal_Bool bTmp = mpDoc->getIDocumentSettingAccess().get( IDocumentSettingAccess::APPLY_PARAGRAPH_MARK_FORMAT_TO_NUMBERING );
rValue.setValue( &bTmp, ::getBooleanCppuType() );
}
break;
commit b651ed7a6700b560052b67102a65f06a498dd182
Author: Michael Stahl <mstahl at redhat.com>
Date: Mon Jun 2 16:31:40 2014 +0200
sw: fix some assertions that still use removed SwDoc methods
Change-Id: Ia33dff51cdb58030ec11ec499ee5c518fba31641
diff --git a/sw/source/core/doc/DocumentDeviceManager.cxx b/sw/source/core/doc/DocumentDeviceManager.cxx
index 392654f..aabfd96 100644
--- a/sw/source/core/doc/DocumentDeviceManager.cxx
+++ b/sw/source/core/doc/DocumentDeviceManager.cxx
@@ -297,7 +297,7 @@ void DocumentDeviceManager::PrtDataChanged()
// If you change this, also modify InJobSetup in Sw3io if appropriate.
// #i41075#
- OSL_ENSURE( m_rSwdoc.get(IDocumentSettingAccess::USE_VIRTUAL_DEVICE) ||
+ OSL_ENSURE( m_rSwdoc.getIDocumentSettingAccess().get(IDocumentSettingAccess::USE_VIRTUAL_DEVICE) ||
0 != getPrinter( false ), "PrtDataChanged will be called recursively!" );
SwRootFrm* pTmpRoot = m_rSwdoc.GetCurrentLayout();
boost::scoped_ptr<SwWait> pWait;
diff --git a/sw/source/core/undo/unattr.cxx b/sw/source/core/undo/unattr.cxx
index c454ac9..5401023 100644
--- a/sw/source/core/undo/unattr.cxx
+++ b/sw/source/core/undo/unattr.cxx
@@ -552,7 +552,8 @@ bool SwUndoFmtAttr::RestoreFlyAnchor(::sw::UndoRedoContext & rContext)
if( pCont->GetAnchorFrm() && !pObj->IsInserted() )
{
- OSL_ENSURE( pDoc->GetDrawModel(), "RestoreFlyAnchor without DrawModel" );
+ OSL_ENSURE( pDoc->getIDocumentDrawModelAccess().GetDrawModel(),
+ "RestoreFlyAnchor without DrawModel" );
pDoc->getIDocumentDrawModelAccess().GetDrawModel()->GetPage( 0 )->InsertObject( pObj );
}
pObj->SetRelativePos( aDrawSavePt );
diff --git a/sw/source/filter/html/htmldrawwriter.cxx b/sw/source/filter/html/htmldrawwriter.cxx
index 49baf60..27d0775 100644
--- a/sw/source/filter/html/htmldrawwriter.cxx
+++ b/sw/source/filter/html/htmldrawwriter.cxx
@@ -40,6 +40,7 @@
#include <rtl/strbuf.hxx>
+#include <IDocumentDrawModelAccess.hxx>
#include "charatr.hxx"
#include <frmfmt.hxx>
#include <fmtanchr.hxx>
@@ -134,7 +135,8 @@ Writer& OutHTML_DrawFrmFmtAsMarquee( Writer& rWrt,
{
SwHTMLWriter & rHTMLWrt = (SwHTMLWriter&)rWrt;
- OSL_ENSURE( rWrt.pDoc->GetDrawModel(), "Da gibt's ein Draw-Obj ohne ein Draw-Model zu haben?" );
+ OSL_ENSURE( rWrt.pDoc->getIDocumentDrawModelAccess().GetDrawModel(),
+ "There is a Draw-Obj with no Draw-Model?" );
const SdrTextObj *pTextObj = (const SdrTextObj *)&rSdrObject;
// Gibt es ueberhaupt auszugebenden Text
commit abf17aef7a1b5c559fee58e6db526fbd1758e331
Author: Valentin Kettner <vakevk+libreoffice at gmail.com>
Date: Sun Jun 1 22:39:37 2014 +0200
Moved SwDoc's get<Interface> methods from docnew to doc.cxx
To have them all in the same place.
Change-Id: I8fd0f7fa0c88b5b17596998810d505deb14a8c06
diff --git a/sw/source/core/doc/doc.cxx b/sw/source/core/doc/doc.cxx
index e4ea756..01e9478 100644
--- a/sw/source/core/doc/doc.cxx
+++ b/sw/source/core/doc/doc.cxx
@@ -150,6 +150,32 @@ sal_Int32 SwDoc::getReferenceCount() const
return mReferenceCount;
}
+::sw::MetaFieldManager & SwDoc::GetMetaFieldManager()
+{
+ return *m_pMetaFieldManager;
+}
+
+::sw::UndoManager & SwDoc::GetUndoManager()
+{
+ return *m_pUndoManager;
+}
+
+::sw::UndoManager const & SwDoc::GetUndoManager() const
+{
+ return *m_pUndoManager;
+}
+
+
+IDocumentUndoRedo & SwDoc::GetIDocumentUndoRedo()
+{
+ return *m_pUndoManager;
+}
+
+IDocumentUndoRedo const & SwDoc::GetIDocumentUndoRedo() const
+{
+ return *m_pUndoManager;
+}
+
/* IDocumentDrawModelAccess */
IDocumentDrawModelAccess const & SwDoc::getIDocumentDrawModelAccess() const
{
@@ -182,6 +208,16 @@ IDocumentSettingAccess & SwDoc::getIDocumentSettingAccess()
return GetDocumentSettingManager();
}
+::sw::DocumentSettingManager & SwDoc::GetDocumentSettingManager()
+{
+ return *m_pDocumentSettingManager;
+}
+
+::sw::DocumentSettingManager const & SwDoc::GetDocumentSettingManager() const
+{
+ return *m_pDocumentSettingManager;
+}
+
sal_uInt32 SwDoc::getRsid() const
{
return mnRsid;
diff --git a/sw/source/core/doc/docnew.cxx b/sw/source/core/doc/docnew.cxx
index 61441b4..8699fca 100644
--- a/sw/source/core/doc/docnew.cxx
+++ b/sw/source/core/doc/docnew.cxx
@@ -912,48 +912,6 @@ SwDoc::GetXmlIdRegistry()
return *m_pXmlIdRegistry;
}
-::sw::MetaFieldManager &
-SwDoc::GetMetaFieldManager()
-{
- return *m_pMetaFieldManager;
-}
-
-::sw::UndoManager &
-SwDoc::GetUndoManager()
-{
- return *m_pUndoManager;
-}
-
-::sw::UndoManager const&
-SwDoc::GetUndoManager() const
-{
- return *m_pUndoManager;
-}
-
-::sw::DocumentSettingManager &
-SwDoc::GetDocumentSettingManager()
-{
- return *m_pDocumentSettingManager;
-}
-
-::sw::DocumentSettingManager const&
-SwDoc::GetDocumentSettingManager() const
-{
- return *m_pDocumentSettingManager;
-}
-
-IDocumentUndoRedo &
-SwDoc::GetIDocumentUndoRedo()
-{
- return *m_pUndoManager;
-}
-
-IDocumentUndoRedo const&
-SwDoc::GetIDocumentUndoRedo() const
-{
- return *m_pUndoManager;
-}
-
void SwDoc::InitTOXTypes()
{
ShellResource* pShellRes = SwViewShell::GetShellRes();
commit 86075a3f0f095cde29c6460d7e5dd4069ed89d00
Author: Valentin Kettner <vakevk+libreoffice at gmail.com>
Date: Sun Jun 1 22:21:38 2014 +0200
Split out IDocumentDrawModelAccess from SwDoc.
To the new class DocumentDrawModelManager.
All moved methods and members have the same in thew new class.
Change-Id: I89ad0e0c4a42885d5810e834983ea8e8e6c0a2d2
diff --git a/2 b/2
new file mode 100644
index 0000000..a3670fa
--- /dev/null
+++ b/2
@@ -0,0 +1,592 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ *
+ * This file incorporates work covered by the following license notice:
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed
+ * with this work for additional information regarding copyright
+ * ownership. The ASF licenses this file to you under the Apache
+ * License, Version 2.0 (the "License"); you may not use this file
+ * except in compliance with the License. You may obtain a copy of
+ * the License at http://www.apache.org/licenses/LICENSE-2.0 .
+ */
+
+#include "hintids.hxx"
+#include <vcl/svapp.hxx>
+#include <vcl/wrkwin.hxx>
+#include <svx/svdmodel.hxx>
+#include <svx/svdpage.hxx>
+#include <svx/svdobj.hxx>
+#include <svx/svdotext.hxx>
+#include <editeng/eeitem.hxx>
+#include <editeng/outliner.hxx>
+#include <svx/xfillit.hxx>
+#include <editeng/colritem.hxx>
+#include <editeng/brushitem.hxx>
+#include <editeng/lrspitem.hxx>
+#include <editeng/ulspitem.hxx>
+#include <svl/itemiter.hxx>
+#include <svl/whiter.hxx>
+#include <svtools/htmlout.hxx>
+#include <svtools/htmltokn.h>
+#include <svtools/htmlkywd.hxx>
+#include <svx/svdpool.hxx>
+
+#include "charatr.hxx"
+#include <frmfmt.hxx>
+#include <fmtanchr.hxx>
+#include <fmtsrnd.hxx>
+#include "ndtxt.hxx"
+#include "doc.hxx"
+#include <IDocumentDrawModelAccess.hxx>
+#include "dcontact.hxx"
+#include "poolfmt.hxx"
+#include "swcss1.hxx"
+#include "swhtml.hxx"
+#include <shellio.hxx>
+#include <rtl/strbuf.hxx>
+
+using namespace css;
+
+static HTMLOptionEnum aHTMLMarqBehaviorTable[] =
+{
+ { OOO_STRING_SVTOOLS_HTML_BEHAV_scroll, SDRTEXTANI_SCROLL },
+ { OOO_STRING_SVTOOLS_HTML_BEHAV_alternate, SDRTEXTANI_ALTERNATE },
+ { OOO_STRING_SVTOOLS_HTML_BEHAV_slide, SDRTEXTANI_SLIDE },
+ { 0, 0 }
+};
+
+static HTMLOptionEnum aHTMLMarqDirectionTable[] =
+{
+ { OOO_STRING_SVTOOLS_HTML_AL_left, SDRTEXTANI_LEFT },
+ { OOO_STRING_SVTOOLS_HTML_AL_right, SDRTEXTANI_RIGHT },
+ { 0, 0 }
+};
+
+void SwHTMLParser::InsertDrawObject( SdrObject* pNewDrawObj,
+ const Size& rPixSpace,
+ sal_Int16 eVertOri,
+ sal_Int16 eHoriOri,
+ SfxItemSet& rCSS1ItemSet,
+ SvxCSS1PropertyInfo& rCSS1PropInfo,
+ bool bHidden )
+{
+ // always on top of text.
+ // but in invisible layer. <ConnectToLayout> will move the object
+ // to the visible layer.
+ pNewDrawObj->SetLayer( pDoc->getIDocumentDrawModelAccess().GetInvisibleHeavenId() );
+
+ SfxItemSet aFrmSet( pDoc->GetAttrPool(),
+ RES_FRMATR_BEGIN, RES_FRMATR_END-1 );
+ if( !IsNewDoc() )
+ Reader::ResetFrmFmtAttrs( aFrmSet );
+
+ sal_uInt16 nLeftSpace = 0, nRightSpace = 0, nUpperSpace = 0, nLowerSpace = 0;
+ if( (rPixSpace.Width() || rPixSpace.Height()) && Application::GetDefaultDevice() )
+ {
+ Size aTwipSpc( rPixSpace.Width(), rPixSpace.Height() );
+ aTwipSpc =
+ Application::GetDefaultDevice()->PixelToLogic( aTwipSpc,
+ MapMode(MAP_TWIP) );
+ nLeftSpace = nRightSpace = (sal_uInt16)aTwipSpc.Width();
+ nUpperSpace = nLowerSpace = (sal_uInt16)aTwipSpc.Height();
+ }
+
+ // linken/rechten Rand setzen
+ const SfxPoolItem *pItem;
+ if( SFX_ITEM_SET==rCSS1ItemSet.GetItemState( RES_LR_SPACE, true, &pItem ) )
+ {
+ // Ggf. den Erstzeilen-Einzug noch plaetten
+ const SvxLRSpaceItem *pLRItem = (const SvxLRSpaceItem *)pItem;
+ SvxLRSpaceItem aLRItem( *pLRItem );
+ aLRItem.SetTxtFirstLineOfst( 0 );
+ if( rCSS1PropInfo.bLeftMargin )
+ {
+ nLeftSpace = static_cast< sal_uInt16 >(aLRItem.GetLeft());
+ rCSS1PropInfo.bLeftMargin = false;
+ }
+ if( rCSS1PropInfo.bRightMargin )
+ {
+ nRightSpace = static_cast< sal_uInt16 >(aLRItem.GetRight());
+ rCSS1PropInfo.bRightMargin = false;
+ }
+ rCSS1ItemSet.ClearItem( RES_LR_SPACE );
+ }
+ if( nLeftSpace || nRightSpace )
+ {
+ SvxLRSpaceItem aLRItem( RES_LR_SPACE );
+ aLRItem.SetLeft( nLeftSpace );
+ aLRItem.SetRight( nRightSpace );
+ aFrmSet.Put( aLRItem );
+ }
+
+ // oberen/unteren Rand setzen
+ if( SFX_ITEM_SET==rCSS1ItemSet.GetItemState( RES_UL_SPACE, true, &pItem ) )
+ {
+ // Ggf. den Erstzeilen-Einzug noch plaetten
+ const SvxULSpaceItem *pULItem = (const SvxULSpaceItem *)pItem;
+ if( rCSS1PropInfo.bTopMargin )
+ {
+ nUpperSpace = pULItem->GetUpper();
+ rCSS1PropInfo.bTopMargin = false;
+ }
+ if( rCSS1PropInfo.bBottomMargin )
+ {
+ nLowerSpace = pULItem->GetLower();
+ rCSS1PropInfo.bBottomMargin = false;
+ }
+
+ rCSS1ItemSet.ClearItem( RES_UL_SPACE );
+ }
+ if( nUpperSpace || nLowerSpace )
+ {
+ SvxULSpaceItem aULItem( RES_UL_SPACE );
+ aULItem.SetUpper( nUpperSpace );
+ aULItem.SetLower( nLowerSpace );
+ aFrmSet.Put( aULItem );
+ }
+
+ SwFmtAnchor aAnchor( FLY_AS_CHAR );
+ if( SVX_CSS1_POS_ABSOLUTE == rCSS1PropInfo.ePosition &&
+ SVX_CSS1_LTYPE_TWIP == rCSS1PropInfo.eLeftType &&
+ SVX_CSS1_LTYPE_TWIP == rCSS1PropInfo.eTopType )
+ {
+ const SwStartNode *pFlySttNd =
+ pPam->GetPoint()->nNode.GetNode().FindFlyStartNode();
+
+ if( pFlySttNd )
+ {
+ aAnchor.SetType( FLY_AT_FLY );
+ SwPosition aPos( *pFlySttNd );
+ aAnchor.SetAnchor( &aPos );
+ }
+ else
+ {
+ aAnchor.SetType( FLY_AT_PAGE );
+ }
+ // #i26791# - direct positioning for <SwDoc::Insert(..)>
+ pNewDrawObj->SetRelativePos( Point(rCSS1PropInfo.nLeft + nLeftSpace,
+ rCSS1PropInfo.nTop + nUpperSpace) );
+ aFrmSet.Put( SwFmtSurround(SURROUND_THROUGHT) );
+ }
+ else if( SVX_ADJUST_LEFT == rCSS1PropInfo.eFloat ||
+ text::HoriOrientation::LEFT == eHoriOri )
+ {
+ aAnchor.SetType( FLY_AT_PARA );
+ aFrmSet.Put( SwFmtSurround(bHidden ? SURROUND_THROUGHT
+ : SURROUND_RIGHT) );
+ // #i26791# - direct positioning for <SwDoc::Insert(..)>
+ pNewDrawObj->SetRelativePos( Point(nLeftSpace, nUpperSpace) );
+ }
+ else if( text::VertOrientation::NONE != eVertOri )
+ {
+ aFrmSet.Put( SwFmtVertOrient( 0, eVertOri ) );
+ }
+
+ if (FLY_AT_PAGE == aAnchor.GetAnchorId())
+ {
+ aAnchor.SetPageNum( 1 );
+ }
+ else if( FLY_AT_FLY != aAnchor.GetAnchorId() )
+ {
+ aAnchor.SetAnchor( pPam->GetPoint() );
+ }
+ aFrmSet.Put( aAnchor );
+
+ pDoc->InsertDrawObj( *pPam, *pNewDrawObj, aFrmSet );
+}
+
+static void PutEEPoolItem( SfxItemSet &rEEItemSet,
+ const SfxPoolItem& rSwItem )
+{
+
+ sal_uInt16 nEEWhich = 0;
+
+ switch( rSwItem.Which() )
+ {
+ case RES_CHRATR_COLOR: nEEWhich = EE_CHAR_COLOR; break;
+ case RES_CHRATR_CROSSEDOUT: nEEWhich = EE_CHAR_STRIKEOUT; break;
+ case RES_CHRATR_ESCAPEMENT: nEEWhich = EE_CHAR_ESCAPEMENT; break;
+ case RES_CHRATR_FONT: nEEWhich = EE_CHAR_FONTINFO; break;
+ case RES_CHRATR_CJK_FONT: nEEWhich = EE_CHAR_FONTINFO_CJK; break;
+ case RES_CHRATR_CTL_FONT: nEEWhich = EE_CHAR_FONTINFO_CTL; break;
+ case RES_CHRATR_FONTSIZE: nEEWhich = EE_CHAR_FONTHEIGHT; break;
+ case RES_CHRATR_CJK_FONTSIZE: nEEWhich = EE_CHAR_FONTHEIGHT_CJK; break;
+ case RES_CHRATR_CTL_FONTSIZE: nEEWhich = EE_CHAR_FONTHEIGHT_CTL; break;
+ case RES_CHRATR_KERNING: nEEWhich = EE_CHAR_KERNING; break;
+ case RES_CHRATR_POSTURE: nEEWhich = EE_CHAR_ITALIC; break;
+ case RES_CHRATR_CJK_POSTURE: nEEWhich = EE_CHAR_ITALIC_CJK; break;
+ case RES_CHRATR_CTL_POSTURE: nEEWhich = EE_CHAR_ITALIC_CTL; break;
+ case RES_CHRATR_UNDERLINE: nEEWhich = EE_CHAR_UNDERLINE; break;
+ case RES_CHRATR_WEIGHT: nEEWhich = EE_CHAR_WEIGHT; break;
+ case RES_CHRATR_CJK_WEIGHT: nEEWhich = EE_CHAR_WEIGHT_CJK; break;
+ case RES_CHRATR_CTL_WEIGHT: nEEWhich = EE_CHAR_WEIGHT_CTL; break;
+ case RES_BACKGROUND:
+ case RES_CHRATR_BACKGROUND:
+ {
+ const SvxBrushItem& rBrushItem = (const SvxBrushItem&)rSwItem;
+ rEEItemSet.Put( XFillStyleItem(XFILL_SOLID) );
+ rEEItemSet.Put( XFillColorItem(aEmptyOUStr,
+ rBrushItem.GetColor()) );
+ }
+ break;
+ }
+
+ if( nEEWhich )
+ {
+ SfxPoolItem *pEEItem = rSwItem.Clone();
+ pEEItem->SetWhich( nEEWhich );
+ rEEItemSet.Put( *pEEItem );
+ delete pEEItem;
+ }
+}
+
+void SwHTMLParser::NewMarquee( HTMLTable *pCurTable )
+{
+
+ OSL_ENSURE( !pMarquee, "Marquee in Marquee???" );
+ aContents = "";
+
+ OUString aId, aStyle, aClass;
+
+ long nWidth=0, nHeight=0;
+ bool bPrcWidth = false, bDirection = false, bBGColor = false;
+ Size aSpace( 0, 0 );
+ sal_Int16 eVertOri = text::VertOrientation::TOP;
+ sal_Int16 eHoriOri = text::HoriOrientation::NONE;
+ SdrTextAniKind eAniKind = SDRTEXTANI_SCROLL;
+ SdrTextAniDirection eAniDir = SDRTEXTANI_LEFT;
+ sal_uInt16 nCount = 0, nDelay = 60;
+ sal_Int16 nAmount = -6;
+ Color aBGColor;
+
+ const HTMLOptions& rHTMLOptions = GetOptions();
+ for (size_t i = 0, n = rHTMLOptions.size(); i < n; ++i)
+ {
+ const HTMLOption& rOption = rHTMLOptions[i];
+ switch( rOption.GetToken() )
+ {
+ case HTML_O_ID:
+ aId = rOption.GetString();
+ break;
+ case HTML_O_STYLE:
+ aStyle = rOption.GetString();
+ break;
+ case HTML_O_CLASS:
+ aClass = rOption.GetString();
+ break;
+
+ case HTML_O_BEHAVIOR:
+ eAniKind =
+ (SdrTextAniKind)rOption.GetEnum( aHTMLMarqBehaviorTable,
+ static_cast< sal_uInt16 >(eAniKind) );
+ break;
+
+ case HTML_O_BGCOLOR:
+ rOption.GetColor( aBGColor );
+ bBGColor = true;
+ break;
+
+ case HTML_O_DIRECTION:
+ eAniDir =
+ (SdrTextAniDirection)rOption.GetEnum( aHTMLMarqDirectionTable,
+ static_cast< sal_uInt16 >(eAniDir) );
+ bDirection = true;
+ break;
+
+ case HTML_O_LOOP:
+ if (rOption.GetString().
+ equalsIgnoreAsciiCase(OOO_STRING_SVTOOLS_HTML_LOOP_infinite))
+ {
+ nCount = 0;
+ }
+ else
+ {
+ sal_uInt32 nLoop = rOption.GetSNumber();
+ nCount = (sal_uInt16)(nLoop>0 ? nLoop : 0 );
+ }
+ break;
+
+ case HTML_O_SCROLLAMOUNT:
+ nAmount = -((sal_Int16)rOption.GetNumber());
+ break;
+
+ case HTML_O_SCROLLDELAY:
+ nDelay = (sal_uInt16)rOption.GetNumber();
+ break;
+
+ case HTML_O_WIDTH:
+ // erstmal nur als Pixelwerte merken!
+ nWidth = rOption.GetNumber();
+ bPrcWidth = rOption.GetString().indexOf('%') != -1;
+ if( bPrcWidth && nWidth>100 )
+ nWidth = 100;
+ break;
+
+ case HTML_O_HEIGHT:
+ // erstmal nur als Pixelwerte merken!
+ nHeight = rOption.GetNumber();
+ if( rOption.GetString().indexOf('%') != -1 )
+ nHeight = 0;
+ break;
+
+ case HTML_O_HSPACE:
+ // erstmal nur als Pixelwerte merken!
+ aSpace.Height() = rOption.GetNumber();
+ break;
+
+ case HTML_O_VSPACE:
+ // erstmal nur als Pixelwerte merken!
+ aSpace.Width() = rOption.GetNumber();
+ break;
+
+ case HTML_O_ALIGN:
+ eVertOri =
+ rOption.GetEnum( aHTMLImgVAlignTable,
+ text::VertOrientation::TOP );
+ eHoriOri =
+ rOption.GetEnum( aHTMLImgHAlignTable,
+ text::HoriOrientation::NONE );
+ break;
+ }
+ }
+
+ // Ein DrawTxtobj anlegen
+ // #i52858# - method name changed
+ SdrModel* pModel = pDoc->getIDocumentDrawModelAccess().GetOrCreateDrawModel();
+
+ SdrPage* pPg = pModel->GetPage( 0 );
+ pMarquee = SdrObjFactory::MakeNewObject( SdrInventor,
+ OBJ_TEXT, pPg, pModel );
+ if( !pMarquee )
+ return;
+
+ pPg->InsertObject( pMarquee );
+
+ if( !aId.isEmpty() )
+ InsertBookmark( aId );
+
+ // (Nur) Alternate leueft per Default von links nach rechts
+ if( SDRTEXTANI_ALTERNATE==eAniKind && !bDirection )
+ eAniDir = SDRTEXTANI_RIGHT;
+
+ // die fuer das Scrollen benoetigten Attribute umsetzen
+ sal_uInt16 aWhichMap[7] = { XATTR_FILL_FIRST, XATTR_FILL_LAST,
+ SDRATTR_MISC_FIRST, SDRATTR_MISC_LAST,
+ EE_CHAR_START, EE_CHAR_END,
+ 0 };
+ SfxItemSet aItemSet( pModel->GetItemPool(), aWhichMap );
+ aItemSet.Put( SdrTextAutoGrowWidthItem( false ) );
+ aItemSet.Put( SdrTextAutoGrowHeightItem( true ) );
+ aItemSet.Put( SdrTextAniKindItem( eAniKind ) );
+ aItemSet.Put( SdrTextAniDirectionItem( eAniDir ) );
+ aItemSet.Put( SdrTextAniCountItem( nCount ) );
+ aItemSet.Put( SdrTextAniDelayItem( nDelay ) );
+ aItemSet.Put( SdrTextAniAmountItem( nAmount ) );
+ if( SDRTEXTANI_ALTERNATE==eAniKind )
+ {
+ // (Nur) Alternate startet und stoppt per default Inside
+ aItemSet.Put( SdrTextAniStartInsideItem(true) );
+ aItemSet.Put( SdrTextAniStopInsideItem(true) );
+ if( SDRTEXTANI_LEFT==eAniDir )
+ aItemSet.Put( SdrTextHorzAdjustItem(SDRTEXTHORZADJUST_RIGHT) );
+ }
+
+ // die Default-Farbe (aus der Standard-Vorlage) setzen, damit ueberhaupt
+ // eine sinnvolle Farbe gesetzt ist.
+ const Color& rDfltColor =
+ pCSS1Parser->GetTxtCollFromPool( RES_POOLCOLL_STANDARD )
+ ->GetColor().GetValue();
+ aItemSet.Put( SvxColorItem( rDfltColor, EE_CHAR_COLOR ) );
+
+ // Die Attribute der aktuellen Absatzvorlage setzen
+ sal_uInt16 nWhichIds[] =
+ {
+ RES_CHRATR_COLOR, RES_CHRATR_CROSSEDOUT, RES_CHRATR_ESCAPEMENT,
+ RES_CHRATR_FONT, RES_CHRATR_FONTSIZE, RES_CHRATR_KERNING,
+ RES_CHRATR_POSTURE, RES_CHRATR_UNDERLINE, RES_CHRATR_WEIGHT,
+ RES_CHRATR_BACKGROUND,
+ RES_CHRATR_CJK_FONT, RES_CHRATR_CJK_FONTSIZE,
+ RES_CHRATR_CJK_POSTURE, RES_CHRATR_CJK_WEIGHT,
+ RES_CHRATR_CTL_FONT, RES_CHRATR_CTL_FONTSIZE,
+ RES_CHRATR_CTL_POSTURE, RES_CHRATR_CTL_WEIGHT,
+ 0
+ };
+ SwTxtNode const*const pTxtNd =
+ pPam->GetPoint()->nNode.GetNode().GetTxtNode();
+ if( pTxtNd )
+ {
+ const SfxItemSet& rItemSet = pTxtNd->GetAnyFmtColl().GetAttrSet();
+ const SfxPoolItem *pItem;
+ for( sal_uInt16 i=0; nWhichIds[i]; i++ )
+ {
+ if( SFX_ITEM_SET == rItemSet.GetItemState( nWhichIds[i], true, &pItem ) )
+ PutEEPoolItem( aItemSet, *pItem );
+ }
+ }
+
+ // die Attribute der Umgebung am Draw-Objekt setzen
+ _HTMLAttr** pTbl = (_HTMLAttr**)&aAttrTab;
+ for( sal_uInt16 nCnt = sizeof( _HTMLAttrTable ) / sizeof( _HTMLAttr* );
+ nCnt--; ++pTbl )
+ {
+ _HTMLAttr *pAttr = *pTbl;
+ if( pAttr )
+ PutEEPoolItem( aItemSet, pAttr->GetItem() );
+ }
+
+ if( bBGColor )
+ {
+ aItemSet.Put( XFillStyleItem(XFILL_SOLID) );
+ aItemSet.Put( XFillColorItem(aEmptyOUStr, aBGColor) );
+ }
+
+ // Styles parsen (funktioniert hier nur fuer Attribute, die auch
+ // am Zeichen-Objekt gesetzt werden koennen)
+ SfxItemSet aStyleItemSet( pDoc->GetAttrPool(),
+ pCSS1Parser->GetWhichMap() );
+ SvxCSS1PropertyInfo aPropInfo;
+ if( HasStyleOptions( aStyle, aId, aClass ) &&
+ ParseStyleOptions( aStyle, aId, aClass, aStyleItemSet, aPropInfo ) )
+ {
+ SfxItemIter aIter( aStyleItemSet );
+
+ const SfxPoolItem *pItem = aIter.FirstItem();
+ while( pItem )
+ {
+ PutEEPoolItem( aItemSet, *pItem );
+ pItem = aIter.NextItem();
+ }
+ }
+
+ // jetzt noch die Groesse setzen
+ Size aTwipSz( bPrcWidth ? 0 : nWidth, nHeight );
+ if( (aTwipSz.Width() || aTwipSz.Height()) && Application::GetDefaultDevice() )
+ {
+ aTwipSz = Application::GetDefaultDevice()
+ ->PixelToLogic( aTwipSz, MapMode( MAP_TWIP ) );
+ }
+
+ if( SVX_CSS1_LTYPE_TWIP== aPropInfo.eWidthType )
+ {
+ aTwipSz.Width() = aPropInfo.nWidth;
+ nWidth = 1; // != 0;
+ bPrcWidth = false;
+ }
+ if( SVX_CSS1_LTYPE_TWIP== aPropInfo.eHeightType )
+ aTwipSz.Height() = aPropInfo.nHeight;
+
+ bFixMarqueeWidth = false;
+ if( !nWidth || bPrcWidth )
+ {
+ if( pTable )
+ {
+ if( !pCurTable )
+ {
+ // Die Laufschrift steht in einer Tabelle, aber nicht
+ // in einer Zelle. Da jetzt keine vernuenftige Zuordung
+ // zu einer Zelle moeglich ist, passen wir hir die
+ // Breite dem Inhalt der Laufschrift an.
+ bFixMarqueeWidth = true;
+ }
+ else if( !nWidth )
+ {
+ // Da wir wissen, in welcher Zelle die Laufschrift ist,
+ // koennen wir die Breite auch anpassen. Keine Breitenangabe
+ // wird wie 100% behandelt.
+ nWidth = 100;
+ bPrcWidth = true;
+ }
+ aTwipSz.Width() = MINLAY;
+ }
+ else
+ {
+ long nBrowseWidth = GetCurrentBrowseWidth();
+ aTwipSz.Width() = !nWidth ? nBrowseWidth
+ : (nWidth*nBrowseWidth) / 100;
+ }
+ }
+
+ // Die Hoehe ist nur eine Mindest-Hoehe
+ if( aTwipSz.Height() < MINFLY )
+ aTwipSz.Height() = MINFLY;
+ aItemSet.Put( SdrTextMinFrameHeightItem( aTwipSz.Height() ) );
+
+ pMarquee->SetMergedItemSetAndBroadcast(aItemSet);
+
+ if( aTwipSz.Width() < MINFLY )
+ aTwipSz.Width() = MINFLY;
+ pMarquee->SetLogicRect( Rectangle( 0, 0, aTwipSz.Width(), aTwipSz.Height() ) );
+
+ // und das Objekt in das Dok einfuegen
+ InsertDrawObject( pMarquee, aSpace, eVertOri, eHoriOri, aStyleItemSet,
+ aPropInfo );
+
+ // Das Zeichen-Objekt der Tabelle bekanntmachen. Ist ein bisserl
+ // umstaendlich, weil noch ueber den Parser gegangen wird, obwohl die
+ // Tabelle bekannt ist, aber anderenfalls muesste man die Tabelle
+ // oeffentlich machen, und das ist auch nicht schoen. Das globale
+ // pTable kann uebrigens auch nicht verwendet werden, denn die
+ // Laufschrift kann sich auch mal in einer Sub-Tabelle befinden.
+ if( pCurTable && bPrcWidth)
+ RegisterDrawObjectToTable( pCurTable, pMarquee, (sal_uInt8)nWidth );
+}
+
+void SwHTMLParser::EndMarquee()
+{
+ OSL_ENSURE( pMarquee && OBJ_TEXT==pMarquee->GetObjIdentifier(),
+ "kein Marquee oder falscher Typ" );
+
+ if( bFixMarqueeWidth )
+ {
+ // Da es keine fixe Hoehe gibt, das Text-Objekt erstmal breiter
+ // als den Text machen, damit nicht umgebrochen wird.
+ const Rectangle& rOldRect = pMarquee->GetLogicRect();
+ pMarquee->SetLogicRect( Rectangle( rOldRect.TopLeft(),
+ Size( USHRT_MAX, 240 ) ) );
+ }
+
+ // den gesammelten Text einfuegen
+ ((SdrTextObj*)pMarquee)->SetText( aContents );
+ pMarquee->SetMergedItemSetAndBroadcast( pMarquee->GetMergedItemSet() );
+
+ if( bFixMarqueeWidth )
+ {
+ // die Groesse dem Text anpassen.
+ ((SdrTextObj*)pMarquee)->FitFrameToTextSize();
+ }
+
+ aContents = "";
+ pMarquee = 0;
+}
+
+void SwHTMLParser::InsertMarqueeText()
+{
+ OSL_ENSURE( pMarquee && OBJ_TEXT==pMarquee->GetObjIdentifier(),
+ "kein Marquee oder falscher Typ" );
+
+ // das akteulle Textstueck an den Text anhaengen
+ aContents += aToken;
+}
+
+void SwHTMLParser::ResizeDrawObject( SdrObject* pObj, SwTwips nWidth )
+{
+ OSL_ENSURE( OBJ_TEXT==pObj->GetObjIdentifier(),
+ "kein Marquee oder falscher Typ" );
+
+ if( OBJ_TEXT!=pObj->GetObjIdentifier() )
+ return;
+
+ // die alte Groesse
+ const Rectangle& rOldRect = pObj->GetLogicRect();
+ Size aNewSz( nWidth, rOldRect.GetSize().Height() );
+ pObj->SetLogicRect( Rectangle( rOldRect.TopLeft(), aNewSz ) );
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sw/Library_sw.mk b/sw/Library_sw.mk
index c9fe775..d9eecf0 100644
--- a/sw/Library_sw.mk
+++ b/sw/Library_sw.mk
@@ -186,6 +186,7 @@ $(eval $(call gb_Library_add_exception_objects,sw,\
sw/source/core/doc/DocumentDeviceManager \
sw/source/core/doc/docxforms \
sw/source/core/doc/DocumentSettingManager \
+ sw/source/core/doc/DocumentDrawModelManager \
sw/source/core/doc/extinput \
sw/source/core/doc/fmtcol \
sw/source/core/doc/ftnidx \
diff --git a/sw/inc/doc.hxx b/sw/inc/doc.hxx
index 7cabfd8..f9f904d 100644
--- a/sw/inc/doc.hxx
+++ b/sw/inc/doc.hxx
@@ -30,7 +30,6 @@
#include <IDocumentLineNumberAccess.hxx>
#include <IDocumentStatistics.hxx>
#include <IDocumentState.hxx>
-#include <IDocumentDrawModelAccess.hxx>
#include <IDocumentLayoutAccess.hxx>
#include <IDocumentTimerAccess.hxx>
#include <IDocumentChartDataProviderAccess.hxx>
@@ -208,6 +207,7 @@ namespace sw {
class IShellCursorSupplier;
class DocumentSettingManager;
class DocumentDeviceManager;
+ class DocumentDrawModelManager;
}
namespace com { namespace sun { namespace star {
@@ -253,7 +253,6 @@ class SW_DLLPUBLIC SwDoc :
public IDocumentLineNumberAccess,
public IDocumentStatistics,
public IDocumentState,
- public IDocumentDrawModelAccess,
public IDocumentLayoutAccess,
public IDocumentTimerAccess,
public IDocumentChartDataProviderAccess,
@@ -287,6 +286,7 @@ class SW_DLLPUBLIC SwDoc :
const ::boost::scoped_ptr< ::sw::mark::MarkManager> mpMarkManager;
const ::boost::scoped_ptr< ::sw::MetaFieldManager > m_pMetaFieldManager;
+ const ::boost::scoped_ptr< ::sw::DocumentDrawModelManager > m_pDocumentDrawModelManager;
const ::boost::scoped_ptr< ::sw::UndoManager > m_pUndoManager;
const ::boost::scoped_ptr< ::sw::DocumentSettingManager > m_pDocumentSettingManager;
::boost::scoped_ptr< ::sw::DocumentDeviceManager > m_pDeviceAccess;
@@ -311,7 +311,6 @@ class SW_DLLPUBLIC SwDoc :
SwDefTOXBase_Impl * mpDefTOXBases; //< defaults of SwTOXBase's
SwViewShell *mpCurrentView; //< SwDoc should get a new member mpCurrentView
- SdrModel *mpDrawModel; //< StarView Drawing
SwDocUpdtFld *mpUpdtFlds; //< Struct for updating fields
SwFldTypes *mpFldTypes;
@@ -405,18 +404,6 @@ private:
sal_Int32 mIdleBlockCount;
sal_Int8 mnLockExpFld; //< If != 0 UpdateExpFlds() has no effect!
- /** Draw Model Layer IDs
- * LayerIds, Heaven == above document
- * Hell == below document
- * Controls == at the very top
- */
- SdrLayerID mnHeaven;
- SdrLayerID mnHell;
- SdrLayerID mnControls;
- SdrLayerID mnInvisibleHeaven;
- SdrLayerID mnInvisibleHell;
- SdrLayerID mnInvisibleControls;
-
bool mbGlossDoc : 1; //< TRUE: glossary document.
bool mbModified : 1; //< TRUE: document has changed.
bool mbDtor : 1; /**< TRUE: is in SwDoc DTOR.
@@ -466,10 +453,6 @@ private:
// private methods
void checkRedlining(RedlineMode_t& _rReadlineMode);
- DECL_LINK( AddDrawUndo, SdrUndoAction * );
- // DrawModel
- void DrawNotifyUndoHdl();
-
/** Only for internal use and therefore private.
Copy a range within the same or to another document.
Position may not lie within range! */
@@ -521,9 +504,6 @@ private:
const OUString& rFormula,
std::vector<OUString>& rUsedDBNames );
- void InitDrawModel();
- void ReleaseDrawModel();
-
void _CreateNumberFormatter();
bool _UnProtectTblCells( SwTable& rTbl );
@@ -782,20 +762,12 @@ public:
virtual void SetLoaded(bool b) SAL_OVERRIDE;
// IDocumentDrawModelAccess
- virtual const SdrModel* GetDrawModel() const SAL_OVERRIDE;
- virtual SdrModel* GetDrawModel() SAL_OVERRIDE;
- virtual SdrLayerID GetHeavenId() const SAL_OVERRIDE;
- virtual SdrLayerID GetHellId() const SAL_OVERRIDE;
- virtual SdrLayerID GetControlsId() const SAL_OVERRIDE;
- virtual SdrLayerID GetInvisibleHeavenId() const SAL_OVERRIDE;
- virtual SdrLayerID GetInvisibleHellId() const SAL_OVERRIDE;
- virtual SdrLayerID GetInvisibleControlsId() const SAL_OVERRIDE;
- virtual void NotifyInvisibleLayers( SdrPageView& _rSdrPageView ) SAL_OVERRIDE;
- virtual bool IsVisibleLayerId( const SdrLayerID& _nLayerId ) const SAL_OVERRIDE;
- virtual SdrLayerID GetVisibleLayerIdByInvisibleOne( const SdrLayerID& _nInvisibleLayerId ) SAL_OVERRIDE;
- virtual SdrLayerID GetInvisibleLayerIdByVisibleOne( const SdrLayerID& _nVisibleLayerId ) SAL_OVERRIDE;
- virtual SdrModel* _MakeDrawModel() SAL_OVERRIDE;
- virtual SdrModel* GetOrCreateDrawModel() SAL_OVERRIDE;
+ DECL_LINK( AddDrawUndo, SdrUndoAction * );
+ IDocumentDrawModelAccess const & getIDocumentDrawModelAccess() const;
+ IDocumentDrawModelAccess & getIDocumentDrawModelAccess();
+
+ ::sw::DocumentDrawModelManager const & GetDocumentDrawModelManager() const;
+ ::sw::DocumentDrawModelManager & GetDocumentDrawModelManager();
// IDocumentLayoutAccess
virtual void SetCurrentViewShell( SwViewShell* pNew ) SAL_OVERRIDE;
diff --git a/sw/source/core/access/accfrmobjmap.cxx b/sw/source/core/access/accfrmobjmap.cxx
index 6c49b85..e669699 100644
--- a/sw/source/core/access/accfrmobjmap.cxx
+++ b/sw/source/core/access/accfrmobjmap.cxx
@@ -24,6 +24,7 @@
#include <viewsh.hxx>
#include <doc.hxx>
+#include <IDocumentDrawModelAccess.hxx>
#include <frmfmt.hxx>
#include <pagefrm.hxx>
#include <txtfrm.hxx>
@@ -38,8 +39,8 @@ using namespace sw::access;
SwAccessibleChildMap::SwAccessibleChildMap( const SwRect& rVisArea,
const SwFrm& rFrm,
SwAccessibleMap& rAccMap )
- : nHellId( rAccMap.GetShell()->GetDoc()->GetHellId() )
- , nControlsId( rAccMap.GetShell()->GetDoc()->GetControlsId() )
+ : nHellId( rAccMap.GetShell()->GetDoc()->getIDocumentDrawModelAccess().GetHellId() )
+ , nControlsId( rAccMap.GetShell()->GetDoc()->getIDocumentDrawModelAccess().GetControlsId() )
{
const bool bVisibleChildrenOnly = SwAccessibleChild( &rFrm ).IsVisibleChildrenOnly();
diff --git a/sw/source/core/attr/format.cxx b/sw/source/core/attr/format.cxx
index 377c125..599d62d 100644
--- a/sw/source/core/attr/format.cxx
+++ b/sw/source/core/attr/format.cxx
@@ -755,8 +755,8 @@ bool SwFmt::IsShadowTransparent() const
* Document Interface Access
*/
const IDocumentSettingAccess* SwFmt::getIDocumentSettingAccess() const { return & GetDoc()->GetDocumentSettingManager(); }
-const IDocumentDrawModelAccess* SwFmt::getIDocumentDrawModelAccess() const { return GetDoc(); }
-IDocumentDrawModelAccess* SwFmt::getIDocumentDrawModelAccess() { return GetDoc(); }
+const IDocumentDrawModelAccess* SwFmt::getIDocumentDrawModelAccess() const { return & GetDoc()->getIDocumentDrawModelAccess(); }
+IDocumentDrawModelAccess* SwFmt::getIDocumentDrawModelAccess() { return & GetDoc()->getIDocumentDrawModelAccess(); }
const IDocumentLayoutAccess* SwFmt::getIDocumentLayoutAccess() const { return GetDoc(); }
IDocumentLayoutAccess* SwFmt::getIDocumentLayoutAccess() { return GetDoc(); }
IDocumentTimerAccess* SwFmt::getIDocumentTimerAccess() { return GetDoc(); }
diff --git a/sw/source/core/doc/DocumentDeviceManager.cxx b/sw/source/core/doc/DocumentDeviceManager.cxx
index 524b231..392654f 100644
--- a/sw/source/core/doc/DocumentDeviceManager.cxx
+++ b/sw/source/core/doc/DocumentDeviceManager.cxx
@@ -22,6 +22,7 @@
#include <IDocumentDeviceAccess.hxx>
#include <doc.hxx>
#include <DocumentSettingManager.hxx>
+#include <IDocumentDrawModelAccess.hxx>
#include <sfx2/printer.hxx>
#include <vcl/virdev.hxx>
#include <vcl/outdev.hxx>
@@ -77,8 +78,8 @@ void DocumentDeviceManager::setPrinter(/*[in]*/ SfxPrinter *pP,/*[in]*/ bool bDe
mpPrt->SetMapMode( aMapMode );
}
- if ( m_rSwdoc.GetDrawModel() && !m_rSwdoc.GetDocumentSettingManager().get( IDocumentSettingAccess::USE_VIRTUAL_DEVICE ) )
- m_rSwdoc.GetDrawModel()->SetRefDevice( mpPrt );
+ if ( m_rSwdoc.getIDocumentDrawModelAccess().GetDrawModel() && !m_rSwdoc.GetDocumentSettingManager().get( IDocumentSettingAccess::USE_VIRTUAL_DEVICE ) )
+ m_rSwdoc.getIDocumentDrawModelAccess().GetDrawModel()->SetRefDevice( mpPrt );
}
if ( bCallPrtDataChanged &&
@@ -107,8 +108,8 @@ void DocumentDeviceManager::setVirtualDevice(/*[in]*/ VirtualDevice* pVd,/*[in]*
delete mpVirDev;
mpVirDev = pVd;
- if ( m_rSwdoc.GetDrawModel() && m_rSwdoc.GetDocumentSettingManager().get( IDocumentSettingAccess::USE_VIRTUAL_DEVICE ) )
- m_rSwdoc.GetDrawModel()->SetRefDevice( mpVirDev );
+ if ( m_rSwdoc.getIDocumentDrawModelAccess().GetDrawModel() && m_rSwdoc.GetDocumentSettingManager().get( IDocumentSettingAccess::USE_VIRTUAL_DEVICE ) )
+ m_rSwdoc.getIDocumentDrawModelAccess().GetDrawModel()->SetRefDevice( mpVirDev );
}
}
@@ -145,8 +146,8 @@ void DocumentDeviceManager::setReferenceDeviceType(/*[in]*/ bool bNewVirtual, /*
else
pMyVirDev->SetReferenceDevice( VirtualDevice::REFDEV_MODE_MSO1 );
- if( m_rSwdoc.GetDrawModel() )
- m_rSwdoc.GetDrawModel()->SetRefDevice( pMyVirDev );
+ if( m_rSwdoc.getIDocumentDrawModelAccess().GetDrawModel() )
+ m_rSwdoc.getIDocumentDrawModelAccess().GetDrawModel()->SetRefDevice( pMyVirDev );
}
else
{
@@ -157,8 +158,8 @@ void DocumentDeviceManager::setReferenceDeviceType(/*[in]*/ bool bNewVirtual, /*
// getReferenceDevice()->getPrinter()->CreatePrinter_()
// ->setPrinter()-> PrtDataChanged()
SfxPrinter* pPrinter = getPrinter( true );
- if( m_rSwdoc.GetDrawModel() )
- m_rSwdoc.GetDrawModel()->SetRefDevice( pPrinter );
+ if( m_rSwdoc.getIDocumentDrawModelAccess().GetDrawModel() )
+ m_rSwdoc.getIDocumentDrawModelAccess().GetDrawModel()->SetRefDevice( pPrinter );
}
m_rSwdoc.GetDocumentSettingManager().set(IDocumentSettingAccess::USE_VIRTUAL_DEVICE, bNewVirtual );
@@ -320,10 +321,10 @@ void DocumentDeviceManager::PrtDataChanged()
bEndAction = true;
bDraw = false;
- if( m_rSwdoc.GetDrawModel() )
+ if( m_rSwdoc.getIDocumentDrawModelAccess().GetDrawModel() )
{
- m_rSwdoc.GetDrawModel()->SetAddExtLeading( m_rSwdoc.GetDocumentSettingManager().get(IDocumentSettingAccess::ADD_EXT_LEADING) );
- m_rSwdoc.GetDrawModel()->SetRefDevice( getReferenceDevice( false ) );
+ m_rSwdoc.getIDocumentDrawModelAccess().GetDrawModel()->SetAddExtLeading( m_rSwdoc.GetDocumentSettingManager().get(IDocumentSettingAccess::ADD_EXT_LEADING) );
+ m_rSwdoc.getIDocumentDrawModelAccess().GetDrawModel()->SetRefDevice( getReferenceDevice( false ) );
}
pFntCache->Flush();
@@ -339,15 +340,15 @@ void DocumentDeviceManager::PrtDataChanged()
while ( pSh != m_rSwdoc.GetCurrentViewShell() );
}
}
- if ( bDraw && m_rSwdoc.GetDrawModel() )
+ if ( bDraw && m_rSwdoc.getIDocumentDrawModelAccess().GetDrawModel() )
{
const bool bTmpAddExtLeading = m_rSwdoc.GetDocumentSettingManager().get(IDocumentSettingAccess::ADD_EXT_LEADING);
- if ( bTmpAddExtLeading != m_rSwdoc.GetDrawModel()->IsAddExtLeading() )
- m_rSwdoc.GetDrawModel()->SetAddExtLeading( bTmpAddExtLeading );
+ if ( bTmpAddExtLeading != m_rSwdoc.getIDocumentDrawModelAccess().GetDrawModel()->IsAddExtLeading() )
+ m_rSwdoc.getIDocumentDrawModelAccess().GetDrawModel()->SetAddExtLeading( bTmpAddExtLeading );
OutputDevice* pOutDev = getReferenceDevice( false );
- if ( pOutDev != m_rSwdoc.GetDrawModel()->GetRefDevice() )
- m_rSwdoc.GetDrawModel()->SetRefDevice( pOutDev );
+ if ( pOutDev != m_rSwdoc.getIDocumentDrawModelAccess().GetDrawModel()->GetRefDevice() )
+ m_rSwdoc.getIDocumentDrawModelAccess().GetDrawModel()->SetRefDevice( pOutDev );
}
m_rSwdoc.PrtOLENotify( true );
diff --git a/sw/source/core/doc/DocumentDrawModelManager.cxx b/sw/source/core/doc/DocumentDrawModelManager.cxx
new file mode 100644
index 0000000..09fdbd7
--- /dev/null
+++ b/sw/source/core/doc/DocumentDrawModelManager.cxx
@@ -0,0 +1,367 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ *
+ * This file incorporates work covered by the following license notice:
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed
+ * with this work for additional information regarding copyright
+ * ownership. The ASF licenses this file to you under the Apache
+ * License, Version 2.0 (the "License"); you may not use this file
+ * except in compliance with the License. You may obtain a copy of
+ * the License at http://www.apache.org/licenses/LICENSE-2.0 .
+ */
+
+#include <DocumentDrawModelManager.hxx>
+
+#include <doc.hxx>
+#include <IDocumentUndoRedo.hxx>
+#include <IDocumentSettingAccess.hxx>
+#include <IDocumentDeviceAccess.hxx>
+#include <docsh.hxx>
+#include <swtypes.hxx>
+#include <swhints.hxx>
+#include <viewsh.hxx>
+#include <drawdoc.hxx>
+#include <rootfrm.hxx>
+#include <editeng/eeitem.hxx>
+#include <editeng/fhgtitem.hxx>
+#include <svx/svdmodel.hxx>
+#include <svx/svdlayer.hxx>
+#include <svx/svdoutl.hxx>
+#include <svx/svdpage.hxx>
+#include <svx/svdpagv.hxx>
+#include <svl/smplhint.hxx>
+#include <tools/link.hxx>
+
+class SdrOutliner;
+class XSpellChecker1;
+
+namespace sw
+{
+
+DocumentDrawModelManager::DocumentDrawModelManager( SwDoc& i_rSwdoc ) : m_rSwdoc(i_rSwdoc), mpDrawModel(0) {}
+
+
+// Is also called by the Sw3 Reader, if there was an error when reading the
+// drawing layer. If it is called by the Sw3 Reader the layer is rebuilt
+// from scratch.
+void DocumentDrawModelManager::InitDrawModel()
+{
+ // !! Attention: there is similar code in the Sw3 Reader (sw3imp.cxx) that
+ // also has to be maintained!!
+ if ( mpDrawModel )
+ ReleaseDrawModel();
+
+//UUUU
+// // Setup DrawPool and EditEnginePool. Ownership is ours and only gets passed
+// // to the Drawing.
+// // The pools are destroyed in the ReleaseDrawModel.
+// // for loading the drawing items. This must be loaded without RefCounts!
+// SfxItemPool *pSdrPool = new SdrItemPool( &GetAttrPool() );
+// // change DefaultItems for the SdrEdgeObj distance items to TWIPS.
+// if(pSdrPool)
+// {
+// const long nDefEdgeDist = ((500 * 72) / 127); // 1/100th mm in twips
+// pSdrPool->SetPoolDefaultItem(SdrEdgeNode1HorzDistItem(nDefEdgeDist));
+// pSdrPool->SetPoolDefaultItem(SdrEdgeNode1VertDistItem(nDefEdgeDist));
+// pSdrPool->SetPoolDefaultItem(SdrEdgeNode2HorzDistItem(nDefEdgeDist));
+// pSdrPool->SetPoolDefaultItem(SdrEdgeNode2VertDistItem(nDefEdgeDist));
+//
+// // #i33700#
+// // Set shadow distance defaults as PoolDefaultItems. Details see bug.
+// pSdrPool->SetPoolDefaultItem(SdrShadowXDistItem((300 * 72) / 127));
+// pSdrPool->SetPoolDefaultItem(SdrShadowYDistItem((300 * 72) / 127));
+// }
+// SfxItemPool *pEEgPool = EditEngine::CreatePool( false );
+// pSdrPool->SetSecondaryPool( pEEgPool );
+// if ( !GetAttrPool().GetFrozenIdRanges () )
+// GetAttrPool().FreezeIdRanges();
+// else
+// pSdrPool->FreezeIdRanges();
+
+ // set FontHeight pool defaults without changing static SdrEngineDefaults
+ m_rSwdoc.GetAttrPool().SetPoolDefaultItem(SvxFontHeightItem( 240, 100, EE_CHAR_FONTHEIGHT ));
+
+ SAL_INFO( "sw.doc", "before create DrawDocument" );
+ // The document owns the SdrModel. We always have two layers and one page.
+ mpDrawModel = new SwDrawDocument( &m_rSwdoc );
+
+ mpDrawModel->EnableUndo( m_rSwdoc.GetIDocumentUndoRedo().DoesUndo() );
+
+ OUString sLayerNm;
+ sLayerNm = "Hell";
+ mnHell = mpDrawModel->GetLayerAdmin().NewLayer( sLayerNm )->GetID();
+
+ sLayerNm = "Heaven";
+ mnHeaven = mpDrawModel->GetLayerAdmin().NewLayer( sLayerNm )->GetID();
+
+ sLayerNm = "Controls";
+ mnControls = mpDrawModel->GetLayerAdmin().NewLayer( sLayerNm )->GetID();
+
+ // add invisible layers corresponding to the visible ones.
+ {
+ sLayerNm = "InvisibleHell";
+ mnInvisibleHell = mpDrawModel->GetLayerAdmin().NewLayer( sLayerNm )->GetID();
+
+ sLayerNm = "InvisibleHeaven";
+ mnInvisibleHeaven = mpDrawModel->GetLayerAdmin().NewLayer( sLayerNm )->GetID();
+
+ sLayerNm = "InvisibleControls";
+ mnInvisibleControls = mpDrawModel->GetLayerAdmin().NewLayer( sLayerNm )->GetID();
+ }
+
+ SdrPage* pMasterPage = mpDrawModel->AllocPage( false );
+ mpDrawModel->InsertPage( pMasterPage );
+ SAL_INFO( "sw.doc", "after create DrawDocument" );
+ SAL_INFO( "sw.doc", "before create Spellchecker/Hyphenator" );
+ SdrOutliner& rOutliner = mpDrawModel->GetDrawOutliner();
+ ::com::sun::star::uno::Reference< com::sun::star::linguistic2::XSpellChecker1 > xSpell = ::GetSpellChecker();
+ rOutliner.SetSpeller( xSpell );
+ ::com::sun::star::uno::Reference< com::sun::star::linguistic2::XHyphenator > xHyphenator( ::GetHyphenator() );
+ rOutliner.SetHyphenator( xHyphenator );
+ SAL_INFO( "sw.doc", "after create Spellchecker/Hyphenator" );
+ m_rSwdoc.SetCalcFieldValueHdl(&rOutliner);
+ m_rSwdoc.SetCalcFieldValueHdl(&mpDrawModel->GetHitTestOutliner());
+
+ // Set the LinkManager in the model so that linked graphics can be inserted.
+ // The WinWord import needs it too.
+ mpDrawModel->SetLinkManager( & m_rSwdoc.GetLinkManager() );
+ mpDrawModel->SetAddExtLeading( m_rSwdoc.getIDocumentSettingAccess().get(IDocumentSettingAccess::ADD_EXT_LEADING) );
+
+ OutputDevice* pRefDev = m_rSwdoc.getIDocumentDeviceAccess().getReferenceDevice( false );
+ if ( pRefDev )
+ mpDrawModel->SetRefDevice( pRefDev );
+
+ mpDrawModel->SetNotifyUndoActionHdl( LINK( &m_rSwdoc, SwDoc, AddDrawUndo ));
+ if ( m_rSwdoc.GetCurrentViewShell() )
+ {
+ SwViewShell* pViewSh = m_rSwdoc.GetCurrentViewShell();
+ do
+ {
+ SwRootFrm* pRoot = pViewSh->GetLayout();
+ if( pRoot && !pRoot->GetDrawPage() )
+ {
+ // Disable "multiple layout" for the moment:
+ // use pMasterPage instead of a new created SdrPage
+ // mpDrawModel->AllocPage( FALSE );
+ // mpDrawModel->InsertPage( pDrawPage );
+ SdrPage* pDrawPage = pMasterPage;
+ pRoot->SetDrawPage( pDrawPage );
+ pDrawPage->SetSize( pRoot->Frm().SSize() );
+ }
+ pViewSh = (SwViewShell*)pViewSh->GetNext();
+ }while( pViewSh != m_rSwdoc.GetCurrentViewShell() );
+ }
+}
+
+
+void DocumentDrawModelManager::ReleaseDrawModel()
+{
+ if ( mpDrawModel )
+ {
+ // !! Also maintain the code in the sw3io for inserting documents!!
+
+ delete mpDrawModel; mpDrawModel = 0;
+//UUUU
+// SfxItemPool *pSdrPool = GetAttrPool().GetSecondaryPool();
+//
+// OSL_ENSURE( pSdrPool, "missing pool" );
+// SfxItemPool *pEEgPool = pSdrPool->GetSecondaryPool();
+// OSL_ENSURE( !pEEgPool->GetSecondaryPool(), "I don't accept additional pools");
+// pSdrPool->Delete(); // First have the items destroyed,
+// // then destroy the chain!
+// GetAttrPool().SetSecondaryPool( 0 ); // This one's a must!
+// pSdrPool->SetSecondaryPool( 0 ); // That one's safer
+// SfxItemPool::Free(pSdrPool);
+// SfxItemPool::Free(pEEgPool);
+ }
+}
+
+
+
+
+
+const SdrModel* DocumentDrawModelManager::GetDrawModel() const
+{
+ return mpDrawModel;
+}
+
+SdrModel* DocumentDrawModelManager::GetDrawModel()
+{
+ return mpDrawModel;
+}
+
+SdrModel* DocumentDrawModelManager::_MakeDrawModel()
+{
+ OSL_ENSURE( !mpDrawModel, "_MakeDrawModel: Why?" );
+ InitDrawModel();
+ if ( m_rSwdoc.GetCurrentViewShell() )
+ {
+ SwViewShell* pTmp = m_rSwdoc.GetCurrentViewShell();
+ do
+ {
+ pTmp->MakeDrawView();
+ pTmp = (SwViewShell*) pTmp->GetNext();
+ } while ( pTmp != m_rSwdoc.GetCurrentViewShell() );
+
+ // Broadcast, so that the FormShell can be connected to the DrawView
+ if( m_rSwdoc.GetDocShell() )
+ {
+ SfxSimpleHint aHnt( SW_BROADCAST_DRAWVIEWS_CREATED );
+ m_rSwdoc.GetDocShell()->Broadcast( aHnt );
+ }
+ }
+ return mpDrawModel;
+}
+
+SdrModel* DocumentDrawModelManager::GetOrCreateDrawModel()
+{
+ return GetDrawModel() ? GetDrawModel() : _MakeDrawModel();
+}
+
+SdrLayerID DocumentDrawModelManager::GetHeavenId() const
+{
+ return mnHeaven;
+}
+
+SdrLayerID DocumentDrawModelManager::GetHellId() const
+{
+ return mnHell;
+}
+
+SdrLayerID DocumentDrawModelManager::GetControlsId() const
+{
+ return mnControls;
+}
+
+SdrLayerID DocumentDrawModelManager::GetInvisibleHeavenId() const
+{
+ return mnInvisibleHeaven;
+}
+
+SdrLayerID DocumentDrawModelManager::GetInvisibleHellId() const
+{
+ return mnInvisibleHell;
+}
+
+SdrLayerID DocumentDrawModelManager::GetInvisibleControlsId() const
+{
+ return mnInvisibleControls;
+}
+
+void DocumentDrawModelManager::NotifyInvisibleLayers( SdrPageView& _rSdrPageView )
+{
+ OUString sLayerNm;
+ sLayerNm = "InvisibleHell";
+ _rSdrPageView.SetLayerVisible( sLayerNm, false );
+
+ sLayerNm = "InvisibleHeaven";
+ _rSdrPageView.SetLayerVisible( sLayerNm, false );
+
+ sLayerNm = "InvisibleControls";
+ _rSdrPageView.SetLayerVisible( sLayerNm, false );
+}
+
+bool DocumentDrawModelManager::IsVisibleLayerId( const SdrLayerID& _nLayerId ) const
+{
+ bool bRetVal;
+
+ if ( _nLayerId == GetHeavenId() ||
+ _nLayerId == GetHellId() ||
+ _nLayerId == GetControlsId() )
+ {
+ bRetVal = true;
+ }
+ else if ( _nLayerId == GetInvisibleHeavenId() ||
+ _nLayerId == GetInvisibleHellId() ||
+ _nLayerId == GetInvisibleControlsId() )
+ {
+ bRetVal = false;
+ }
+ else
+ {
+ OSL_FAIL( "<SwDoc::IsVisibleLayerId(..)> - unknown layer ID." );
+ bRetVal = false;
+ }
+
+ return bRetVal;
+}
+
+SdrLayerID DocumentDrawModelManager::GetVisibleLayerIdByInvisibleOne( const SdrLayerID& _nInvisibleLayerId )
+{
+ SdrLayerID nVisibleLayerId;
+
+ if ( _nInvisibleLayerId == GetInvisibleHeavenId() )
+ {
+ nVisibleLayerId = GetHeavenId();
+ }
+ else if ( _nInvisibleLayerId == GetInvisibleHellId() )
+ {
+ nVisibleLayerId = GetHellId();
+ }
+ else if ( _nInvisibleLayerId == GetInvisibleControlsId() )
+ {
+ nVisibleLayerId = GetControlsId();
+ }
+ else if ( _nInvisibleLayerId == GetHeavenId() ||
+ _nInvisibleLayerId == GetHellId() ||
+ _nInvisibleLayerId == GetControlsId() )
+ {
+ OSL_FAIL( "<SwDoc::GetVisibleLayerIdByInvisibleOne(..)> - given layer ID already an invisible one." );
+ nVisibleLayerId = _nInvisibleLayerId;
+ }
+ else
+ {
+ OSL_FAIL( "<SwDoc::GetVisibleLayerIdByInvisibleOne(..)> - given layer ID is unknown." );
+ nVisibleLayerId = _nInvisibleLayerId;
+ }
+
+ return nVisibleLayerId;
+}
+
+SdrLayerID DocumentDrawModelManager::GetInvisibleLayerIdByVisibleOne( const SdrLayerID& _nVisibleLayerId )
+{
+ SdrLayerID nInvisibleLayerId;
+
+ if ( _nVisibleLayerId == GetHeavenId() )
+ {
+ nInvisibleLayerId = GetInvisibleHeavenId();
+ }
+ else if ( _nVisibleLayerId == GetHellId() )
+ {
+ nInvisibleLayerId = GetInvisibleHellId();
+ }
+ else if ( _nVisibleLayerId == GetControlsId() )
+ {
+ nInvisibleLayerId = GetInvisibleControlsId();
+ }
+ else if ( _nVisibleLayerId == GetInvisibleHeavenId() ||
+ _nVisibleLayerId == GetInvisibleHellId() ||
+ _nVisibleLayerId == GetInvisibleControlsId() )
+ {
+ OSL_FAIL( "<SwDoc::GetInvisibleLayerIdByVisibleOne(..)> - given layer ID already an invisible one." );
+ nInvisibleLayerId = _nVisibleLayerId;
+ }
+ else
+ {
+ OSL_FAIL( "<SwDoc::GetInvisibleLayerIdByVisibleOne(..)> - given layer ID is unknown." );
+ nInvisibleLayerId = _nVisibleLayerId;
+ }
+
+ return nInvisibleLayerId;
+}
+
+void DocumentDrawModelManager::DrawNotifyUndoHdl()
+{
+ mpDrawModel->SetNotifyUndoActionHdl( Link() );
+}
+
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sw/source/core/doc/DocumentSettingManager.cxx b/sw/source/core/doc/DocumentSettingManager.cxx
index 4a7b085..85f605b 100644
--- a/sw/source/core/doc/DocumentSettingManager.cxx
+++ b/sw/source/core/doc/DocumentSettingManager.cxx
@@ -19,6 +19,7 @@
#include <DocumentSettingManager.hxx>
#include <doc.hxx>
+#include <IDocumentDrawModelAccess.hxx>
#include <comphelper/processfactory.hxx>
#include <editeng/forbiddencharacterstable.hxx>
#include <svx/svdmodel.hxx>
@@ -388,7 +389,7 @@ void sw::DocumentSettingManager::setForbiddenCharacters(/*[in]*/ sal_uInt16 nLan
}
mxForbiddenCharsTable->SetForbiddenCharacters( nLang, rFChars );
- SdrModel *pDrawModel = m_rDoc.GetDrawModel();
+ SdrModel *pDrawModel = m_rDoc.getIDocumentDrawModelAccess().GetDrawModel();
if( pDrawModel )
{
pDrawModel->SetForbiddenCharsTable( mxForbiddenCharsTable );
@@ -458,7 +459,7 @@ void sw::DocumentSettingManager::setCharacterCompressionType( /*[in]*/SwCharComp
{
meChrCmprType = n;
- SdrModel *pDrawModel = m_rDoc.GetDrawModel();
+ SdrModel *pDrawModel = m_rDoc.getIDocumentDrawModelAccess().GetDrawModel();
if( pDrawModel )
{
pDrawModel->SetCharCompressType( static_cast<sal_uInt16>(n) );
diff --git a/sw/source/core/doc/doc.cxx b/sw/source/core/doc/doc.cxx
index d513e69..e4ea756 100644
--- a/sw/source/core/doc/doc.cxx
+++ b/sw/source/core/doc/doc.cxx
@@ -19,6 +19,7 @@
#include <doc.hxx>
#include <DocumentSettingManager.hxx>
+#include <DocumentDrawModelManager.hxx>
#include <UndoManager.hxx>
#include <hintids.hxx>
@@ -149,6 +150,27 @@ sal_Int32 SwDoc::getReferenceCount() const
return mReferenceCount;
}
+/* IDocumentDrawModelAccess */
+IDocumentDrawModelAccess const & SwDoc::getIDocumentDrawModelAccess() const
+{
+ return GetDocumentDrawModelManager();
+}
+
+IDocumentDrawModelAccess & SwDoc::getIDocumentDrawModelAccess()
+{
+ return GetDocumentDrawModelManager();
+}
+
+::sw::DocumentDrawModelManager const & SwDoc::GetDocumentDrawModelManager() const
+{
+ return *m_pDocumentDrawModelManager;
+}
+
+::sw::DocumentDrawModelManager & SwDoc::GetDocumentDrawModelManager()
+{
+ return *m_pDocumentDrawModelManager;
+}
+
/* IDocumentSettingAccess */
IDocumentSettingAccess const & SwDoc::getIDocumentSettingAccess() const
{
diff --git a/sw/source/core/doc/docdraw.cxx b/sw/source/core/doc/docdraw.cxx
index bce20c1..f7dd645 100644
--- a/sw/source/core/doc/docdraw.cxx
+++ b/sw/source/core/doc/docdraw.cxx
@@ -41,6 +41,7 @@
#include <IDocumentUndoRedo.hxx>
#include <DocumentSettingManager.hxx>
#include <IDocumentDeviceAccess.hxx>
+#include <IDocumentDrawModelAccess.hxx>
#include <docsh.hxx>
#include <rootfrm.hxx>
#include <poolfmt.hxx>
@@ -510,287 +511,6 @@ _ZSortFly::_ZSortFly( const SwFrmFmt* pFrmFmt, const SwFmtAnchor* pFlyAn,
}
}
-#include <svx/sxenditm.hxx>
-
-// Is also called by the Sw3 Reader, if there was an error when reading the
-// drawing layer. If it is called by the Sw3 Reader the layer is rebuilt
-// from scratch.
-void SwDoc::InitDrawModel()
-{
- // !! Attention: there is similar code in the Sw3 Reader (sw3imp.cxx) that
- // also has to be maintained!!
- if ( mpDrawModel )
- ReleaseDrawModel();
-
-//UUUU
-// // Setup DrawPool and EditEnginePool. Ownership is ours and only gets passed
-// // to the Drawing.
-// // The pools are destroyed in the ReleaseDrawModel.
-// // for loading the drawing items. This must be loaded without RefCounts!
-// SfxItemPool *pSdrPool = new SdrItemPool( &GetAttrPool() );
-// // change DefaultItems for the SdrEdgeObj distance items to TWIPS.
-// if(pSdrPool)
-// {
-// const long nDefEdgeDist = ((500 * 72) / 127); // 1/100th mm in twips
-// pSdrPool->SetPoolDefaultItem(SdrEdgeNode1HorzDistItem(nDefEdgeDist));
-// pSdrPool->SetPoolDefaultItem(SdrEdgeNode1VertDistItem(nDefEdgeDist));
-// pSdrPool->SetPoolDefaultItem(SdrEdgeNode2HorzDistItem(nDefEdgeDist));
-// pSdrPool->SetPoolDefaultItem(SdrEdgeNode2VertDistItem(nDefEdgeDist));
-//
-// // #i33700#
-// // Set shadow distance defaults as PoolDefaultItems. Details see bug.
-// pSdrPool->SetPoolDefaultItem(SdrShadowXDistItem((300 * 72) / 127));
-// pSdrPool->SetPoolDefaultItem(SdrShadowYDistItem((300 * 72) / 127));
-// }
-// SfxItemPool *pEEgPool = EditEngine::CreatePool( false );
-// pSdrPool->SetSecondaryPool( pEEgPool );
-// if ( !GetAttrPool().GetFrozenIdRanges () )
-// GetAttrPool().FreezeIdRanges();
-// else
-// pSdrPool->FreezeIdRanges();
-
- // set FontHeight pool defaults without changing static SdrEngineDefaults
- GetAttrPool().SetPoolDefaultItem(SvxFontHeightItem( 240, 100, EE_CHAR_FONTHEIGHT ));
-
- SAL_INFO( "sw.doc", "before create DrawDocument" );
- // The document owns the SdrModel. We always have two layers and one page.
- mpDrawModel = new SwDrawDocument( this );
-
- mpDrawModel->EnableUndo( GetIDocumentUndoRedo().DoesUndo() );
-
- OUString sLayerNm;
- sLayerNm = "Hell";
- mnHell = mpDrawModel->GetLayerAdmin().NewLayer( sLayerNm )->GetID();
-
- sLayerNm = "Heaven";
- mnHeaven = mpDrawModel->GetLayerAdmin().NewLayer( sLayerNm )->GetID();
-
- sLayerNm = "Controls";
- mnControls = mpDrawModel->GetLayerAdmin().NewLayer( sLayerNm )->GetID();
-
- // add invisible layers corresponding to the visible ones.
- {
- sLayerNm = "InvisibleHell";
- mnInvisibleHell = mpDrawModel->GetLayerAdmin().NewLayer( sLayerNm )->GetID();
-
- sLayerNm = "InvisibleHeaven";
- mnInvisibleHeaven = mpDrawModel->GetLayerAdmin().NewLayer( sLayerNm )->GetID();
-
- sLayerNm = "InvisibleControls";
- mnInvisibleControls = mpDrawModel->GetLayerAdmin().NewLayer( sLayerNm )->GetID();
- }
-
- SdrPage* pMasterPage = mpDrawModel->AllocPage( false );
- mpDrawModel->InsertPage( pMasterPage );
- SAL_INFO( "sw.doc", "after create DrawDocument" );
- SAL_INFO( "sw.doc", "before create Spellchecker/Hyphenator" );
- SdrOutliner& rOutliner = mpDrawModel->GetDrawOutliner();
- uno::Reference< XSpellChecker1 > xSpell = ::GetSpellChecker();
- rOutliner.SetSpeller( xSpell );
- uno::Reference<XHyphenator> xHyphenator( ::GetHyphenator() );
- rOutliner.SetHyphenator( xHyphenator );
- SAL_INFO( "sw.doc", "after create Spellchecker/Hyphenator" );
- SetCalcFieldValueHdl(&rOutliner);
- SetCalcFieldValueHdl(&mpDrawModel->GetHitTestOutliner());
-
- // Set the LinkManager in the model so that linked graphics can be inserted.
- // The WinWord import needs it too.
- mpDrawModel->SetLinkManager( &GetLinkManager() );
- mpDrawModel->SetAddExtLeading( GetDocumentSettingManager().get(IDocumentSettingAccess::ADD_EXT_LEADING) );
-
- OutputDevice* pRefDev = getIDocumentDeviceAccess().getReferenceDevice( false );
- if ( pRefDev )
- mpDrawModel->SetRefDevice( pRefDev );
-
- mpDrawModel->SetNotifyUndoActionHdl( LINK( this, SwDoc, AddDrawUndo ));
- if ( mpCurrentView )
- {
- SwViewShell* pViewSh = mpCurrentView;
- do
- {
- SwRootFrm* pRoot = pViewSh->GetLayout();
- if( pRoot && !pRoot->GetDrawPage() )
- {
- // Disable "multiple layout" for the moment:
- // use pMasterPage instead of a new created SdrPage
- // mpDrawModel->AllocPage( FALSE );
- // mpDrawModel->InsertPage( pDrawPage );
- SdrPage* pDrawPage = pMasterPage;
- pRoot->SetDrawPage( pDrawPage );
- pDrawPage->SetSize( pRoot->Frm().SSize() );
- }
- pViewSh = (SwViewShell*)pViewSh->GetNext();
- }while( pViewSh != mpCurrentView );
- }
-}
-
-/** method to notify drawing page view about the invisible layers */
-void SwDoc::NotifyInvisibleLayers( SdrPageView& _rSdrPageView )
-{
- OUString sLayerNm;
- sLayerNm = "InvisibleHell";
- _rSdrPageView.SetLayerVisible( sLayerNm, false );
-
- sLayerNm = "InvisibleHeaven";
- _rSdrPageView.SetLayerVisible( sLayerNm, false );
-
- sLayerNm = "InvisibleControls";
- _rSdrPageView.SetLayerVisible( sLayerNm, false );
-}
-
-/** method to determine, if a layer ID belongs to the visible ones.
-
- @note If given layer ID is unknown, method asserts and returns <false>.
-*/
-bool SwDoc::IsVisibleLayerId( const SdrLayerID& _nLayerId ) const
-{
- bool bRetVal;
-
- if ( _nLayerId == GetHeavenId() ||
- _nLayerId == GetHellId() ||
- _nLayerId == GetControlsId() )
- {
- bRetVal = true;
- }
- else if ( _nLayerId == GetInvisibleHeavenId() ||
- _nLayerId == GetInvisibleHellId() ||
- _nLayerId == GetInvisibleControlsId() )
- {
- bRetVal = false;
- }
- else
- {
- OSL_FAIL( "<SwDoc::IsVisibleLayerId(..)> - unknown layer ID." );
- bRetVal = false;
- }
-
- return bRetVal;
-}
-
-/** method to determine, if the corresponding visible layer ID for a invisible one.
-
- @note If given layer ID is a visible one, method returns given layer ID.
- @note If given layer ID is unknown, method returns given layer ID.
-*/
-SdrLayerID SwDoc::GetVisibleLayerIdByInvisibleOne( const SdrLayerID& _nInvisibleLayerId )
-{
- SdrLayerID nVisibleLayerId;
-
- if ( _nInvisibleLayerId == GetInvisibleHeavenId() )
- {
- nVisibleLayerId = GetHeavenId();
- }
- else if ( _nInvisibleLayerId == GetInvisibleHellId() )
- {
- nVisibleLayerId = GetHellId();
- }
- else if ( _nInvisibleLayerId == GetInvisibleControlsId() )
- {
- nVisibleLayerId = GetControlsId();
- }
- else if ( _nInvisibleLayerId == GetHeavenId() ||
- _nInvisibleLayerId == GetHellId() ||
- _nInvisibleLayerId == GetControlsId() )
- {
- OSL_FAIL( "<SwDoc::GetVisibleLayerIdByInvisibleOne(..)> - given layer ID already an invisible one." );
- nVisibleLayerId = _nInvisibleLayerId;
- }
- else
- {
- OSL_FAIL( "<SwDoc::GetVisibleLayerIdByInvisibleOne(..)> - given layer ID is unknown." );
- nVisibleLayerId = _nInvisibleLayerId;
- }
-
- return nVisibleLayerId;
-}
-
-/** method to determine, if the corresponding invisible layer ID for a visible one.
-
- @note If given layer ID is a invisible one, method returns given layer ID.
- @note If given layer ID is unknown, method returns given layer ID.
-*/
-SdrLayerID SwDoc::GetInvisibleLayerIdByVisibleOne( const SdrLayerID& _nVisibleLayerId )
-{
- SdrLayerID nInvisibleLayerId;
-
- if ( _nVisibleLayerId == GetHeavenId() )
- {
- nInvisibleLayerId = GetInvisibleHeavenId();
- }
- else if ( _nVisibleLayerId == GetHellId() )
- {
- nInvisibleLayerId = GetInvisibleHellId();
- }
- else if ( _nVisibleLayerId == GetControlsId() )
- {
- nInvisibleLayerId = GetInvisibleControlsId();
- }
- else if ( _nVisibleLayerId == GetInvisibleHeavenId() ||
- _nVisibleLayerId == GetInvisibleHellId() ||
- _nVisibleLayerId == GetInvisibleControlsId() )
- {
- OSL_FAIL( "<SwDoc::GetInvisibleLayerIdByVisibleOne(..)> - given layer ID already an invisible one." );
- nInvisibleLayerId = _nVisibleLayerId;
- }
- else
- {
- OSL_FAIL( "<SwDoc::GetInvisibleLayerIdByVisibleOne(..)> - given layer ID is unknown." );
- nInvisibleLayerId = _nVisibleLayerId;
- }
-
- return nInvisibleLayerId;
-}
-
-void SwDoc::ReleaseDrawModel()
-{
- if ( mpDrawModel )
- {
- // !! Also maintain the code in the sw3io for inserting documents!!
-
- delete mpDrawModel; mpDrawModel = 0;
-//UUUU
-// SfxItemPool *pSdrPool = GetAttrPool().GetSecondaryPool();
-//
-// OSL_ENSURE( pSdrPool, "missing pool" );
-// SfxItemPool *pEEgPool = pSdrPool->GetSecondaryPool();
-// OSL_ENSURE( !pEEgPool->GetSecondaryPool(), "I don't accept additional pools");
-// pSdrPool->Delete(); // First have the items destroyed,
-// // then destroy the chain!
-// GetAttrPool().SetSecondaryPool( 0 ); // This one's a must!
-// pSdrPool->SetSecondaryPool( 0 ); // That one's safer
-// SfxItemPool::Free(pSdrPool);
-// SfxItemPool::Free(pEEgPool);
- }
-}
-
-SdrModel* SwDoc::_MakeDrawModel()
-{
- OSL_ENSURE( !mpDrawModel, "_MakeDrawModel: Why?" );
- InitDrawModel();
- if ( mpCurrentView )
- {
- SwViewShell* pTmp = mpCurrentView;
- do
- {
- pTmp->MakeDrawView();
- pTmp = (SwViewShell*) pTmp->GetNext();
- } while ( pTmp != mpCurrentView );
-
- // Broadcast, so that the FormShell can be connected to the DrawView
- if( GetDocShell() )
- {
- SfxSimpleHint aHnt( SW_BROADCAST_DRAWVIEWS_CREATED );
- GetDocShell()->Broadcast( aHnt );
- }
- }
- return mpDrawModel;
-}
-
-void SwDoc::DrawNotifyUndoHdl()
-{
- mpDrawModel->SetNotifyUndoActionHdl( Link() );
-}
-
/// In the Outliner, set a link to the method for field display in edit objects.
void SwDoc::SetCalcFieldValueHdl(Outliner* pOutliner)
{
@@ -870,18 +590,6 @@ IMPL_LINK(SwDoc, CalcFieldValueHdl, EditFieldInfo*, pInfo)
return(0);
}
-/* TFFDI: The functions formerly declared 'inline'
- */
-const SdrModel* SwDoc::GetDrawModel() const { return mpDrawModel; }
-SdrModel* SwDoc::GetDrawModel() { return mpDrawModel; }
-SdrLayerID SwDoc::GetHeavenId() const { return mnHeaven; }
-SdrLayerID SwDoc::GetHellId() const { return mnHell; }
-SdrLayerID SwDoc::GetControlsId() const { return mnControls; }
-SdrLayerID SwDoc::GetInvisibleHeavenId() const { return mnInvisibleHeaven; }
-SdrLayerID SwDoc::GetInvisibleHellId() const { return mnInvisibleHell; }
-SdrLayerID SwDoc::GetInvisibleControlsId() const { return mnInvisibleControls; }
-SdrModel* SwDoc::GetOrCreateDrawModel() { return GetDrawModel() ? GetDrawModel() : _MakeDrawModel(); }
-
// #i62875#
namespace docfunc
{
@@ -889,10 +597,10 @@ namespace docfunc
{
bool bExistsDrawObjs( false );
- if ( p_rDoc.GetDrawModel() &&
- p_rDoc.GetDrawModel()->GetPage( 0 ) )
+ if ( p_rDoc.getIDocumentDrawModelAccess().GetDrawModel() &&
+ p_rDoc.getIDocumentDrawModelAccess().GetDrawModel()->GetPage( 0 ) )
{
- const SdrPage& rSdrPage( *(p_rDoc.GetDrawModel()->GetPage( 0 )) );
+ const SdrPage& rSdrPage( *(p_rDoc.getIDocumentDrawModelAccess().GetDrawModel()->GetPage( 0 )) );
SdrObjListIter aIter( rSdrPage, IM_FLAT );
while( aIter.IsMore() )
@@ -914,10 +622,10 @@ namespace docfunc
{
bool bAllDrawObjsOnPage( true );
- if ( p_rDoc.GetDrawModel() &&
- p_rDoc.GetDrawModel()->GetPage( 0 ) )
+ if ( p_rDoc.getIDocumentDrawModelAccess().GetDrawModel() &&
+ p_rDoc.getIDocumentDrawModelAccess().GetDrawModel()->GetPage( 0 ) )
{
- const SdrPage& rSdrPage( *(p_rDoc.GetDrawModel()->GetPage( 0 )) );
+ const SdrPage& rSdrPage( *(p_rDoc.getIDocumentDrawModelAccess().GetDrawModel()->GetPage( 0 )) );
SdrObjListIter aIter( rSdrPage, IM_FLAT );
while( aIter.IsMore() )
diff --git a/sw/source/core/doc/docfly.cxx b/sw/source/core/doc/docfly.cxx
index f610cce..8418a99 100644
--- a/sw/source/core/doc/docfly.cxx
+++ b/sw/source/core/doc/docfly.cxx
@@ -32,6 +32,7 @@
#include <ndgrf.hxx>
#include <doc.hxx>
#include <IDocumentUndoRedo.hxx>
+#include <IDocumentDrawModelAccess.hxx>
#include <ndindex.hxx>
#include <docary.hxx>
#include <fmtcntnt.hxx>
@@ -445,7 +446,7 @@ lcl_SetFlyFrmAttr(SwDoc & rDoc,
void SwDoc::CheckForUniqueItemForLineFillNameOrIndex(SfxItemSet& rSet)
{
- SdrModel* pDrawModel = GetOrCreateDrawModel();
+ SdrModel* pDrawModel = getIDocumentDrawModelAccess().GetOrCreateDrawModel();
SfxItemIter aIter(rSet);
for(const SfxPoolItem* pItem = aIter.FirstItem(); pItem; pItem = aIter.NextItem())
diff --git a/sw/source/core/doc/doclay.cxx b/sw/source/core/doc/doclay.cxx
index b925f86..942ac12 100644
--- a/sw/source/core/doc/doclay.cxx
+++ b/sw/source/core/doc/doclay.cxx
@@ -63,6 +63,7 @@
#include <doc.hxx>
#include <IDocumentUndoRedo.hxx>
#include <DocumentSettingManager.hxx>
+#include <IDocumentDrawModelAccess.hxx>
#include <rootfrm.hxx>
#include <pagefrm.hxx>
#include <cntfrm.hxx>
@@ -500,11 +501,11 @@ SdrObject* SwDoc::CloneSdrObj( const SdrObject& rObj, bool bMoveWithinDoc,
bool bInsInPage )
{
// #i52858# - method name changed
- SdrPage *pPg = GetOrCreateDrawModel()->GetPage( 0 );
+ SdrPage *pPg = getIDocumentDrawModelAccess().GetOrCreateDrawModel()->GetPage( 0 );
if( !pPg )
{
- pPg = GetDrawModel()->AllocPage( false );
- GetDrawModel()->InsertPage( pPg );
+ pPg = getIDocumentDrawModelAccess().GetDrawModel()->AllocPage( false );
+ getIDocumentDrawModelAccess().GetDrawModel()->InsertPage( pPg );
}
SdrObject *pObj = rObj.Clone();
@@ -531,9 +532,9 @@ SdrObject* SwDoc::CloneSdrObj( const SdrObject& rObj, bool bMoveWithinDoc,
!pObj->ISA(SwVirtFlyDrawObj) &&
!IS_TYPE(SdrObject,pObj) )
{
- if ( IsVisibleLayerId( nLayerIdForClone ) )
+ if ( getIDocumentDrawModelAccess().IsVisibleLayerId( nLayerIdForClone ) )
{
- nLayerIdForClone = GetInvisibleLayerIdByVisibleOne( nLayerIdForClone );
+ nLayerIdForClone = getIDocumentDrawModelAccess().GetInvisibleLayerIdByVisibleOne( nLayerIdForClone );
}
}
pObj->SetLayer( nLayerIdForClone );
@@ -1556,8 +1557,8 @@ lcl_InsertDrawLabel( SwDoc & rDoc, SwTxtFmtColls *const pTxtFmtCollTbl,
// Send the frame to the back, if needed.
// Consider the 'invisible' hell layer.
- if ( rDoc.GetHellId() != nLayerId &&
- rDoc.GetInvisibleHellId() != nLayerId )
+ if ( rDoc.getIDocumentDrawModelAccess().GetHellId() != nLayerId &&
+ rDoc.getIDocumentDrawModelAccess().GetInvisibleHellId() != nLayerId )
{
SvxOpaqueItem aOpaque( RES_OPAQUE );
aOpaque.SetValue( true );
@@ -1624,14 +1625,14 @@ lcl_InsertDrawLabel( SwDoc & rDoc, SwTxtFmtColls *const pTxtFmtCollTbl,
pNewSet->ClearItem();
pNewSet->Put( SwFmtSurround( SURROUND_NONE ) );
- if (nLayerId == rDoc.GetHellId())
+ if (nLayerId == rDoc.getIDocumentDrawModelAccess().GetHellId())
{
// Consider drawing objects in the 'invisible' hell layer
- rSdrObj.SetLayer( rDoc.GetHeavenId() );
+ rSdrObj.SetLayer( rDoc.getIDocumentDrawModelAccess().GetHeavenId() );
}
- else if (nLayerId == rDoc.GetInvisibleHellId())
+ else if (nLayerId == rDoc.getIDocumentDrawModelAccess().GetInvisibleHellId())
{
- rSdrObj.SetLayer( rDoc.GetInvisibleHeavenId() );
+ rSdrObj.SetLayer( rDoc.getIDocumentDrawModelAccess().GetInvisibleHeavenId() );
}
pNewSet->Put( SvxLRSpaceItem( RES_LR_SPACE ) );
pNewSet->Put( SvxULSpaceItem( RES_UL_SPACE ) );
diff --git a/sw/source/core/doc/docnew.cxx b/sw/source/core/doc/docnew.cxx
index ea387a8..61441b4 100644
--- a/sw/source/core/doc/docnew.cxx
+++ b/sw/source/core/doc/docnew.cxx
@@ -20,7 +20,6 @@
#include <config_features.h>
#include <doc.hxx>
-#include <DocumentSettingManager.hxx>
#include <dcontact.hxx>
#include <com/sun/star/document/PrinterIndependentLayout.hpp>
#include <com/sun/star/document/UpdateDocMode.hpp>
@@ -89,6 +88,8 @@
#include <MarkManager.hxx>
#include <UndoManager.hxx>
#include <DocumentDeviceManager.hxx>
+#include <DocumentSettingManager.hxx>
+#include <DocumentDrawModelManager.hxx>
#include <unochart.hxx>
#include <fldbas.hxx>
@@ -187,8 +188,9 @@ SwDoc::SwDoc()
mpAttrPool(new SwAttrPool(this)),
mpMarkManager(new ::sw::mark::MarkManager(*this)),
m_pMetaFieldManager(new ::sw::MetaFieldManager()),
+ m_pDocumentDrawModelManager( new ::sw::DocumentDrawModelManager( *this ) ),
m_pUndoManager(new ::sw::UndoManager(
- boost::shared_ptr<SwNodes>(new SwNodes(this)), *this, *this, *this)),
+ boost::shared_ptr<SwNodes>(new SwNodes(this)), *m_pDocumentDrawModelManager, *this, *this)),
m_pDocumentSettingManager(new ::sw::DocumentSettingManager(*this)),
m_pDeviceAccess( new ::sw::DocumentDeviceManager( *this ) ),
mpDfltFrmFmt( new SwFrmFmt( GetAttrPool(), sFrmFmtStr, 0 ) ),
@@ -207,7 +209,6 @@ SwDoc::SwDoc()
mpTOXTypes( new SwTOXTypes() ),
mpDefTOXBases( new SwDefTOXBase_Impl() ),
mpCurrentView( 0 ),
- mpDrawModel( 0 ),
mpUpdtFlds( new SwDocUpdtFld( this ) ),
mpFldTypes( new SwFldTypes() ),
mpGlossaryDoc( 0 ),
@@ -456,9 +457,9 @@ SwDoc::~SwDoc()
mpLayouter = 0L;
// Deactivate Undo notification from Draw
- if( mpDrawModel )
+ if( GetDocumentDrawModelManager().GetDrawModel() )
{
- DrawNotifyUndoHdl();
+ GetDocumentDrawModelManager().DrawNotifyUndoHdl();
ClrContourCache();
}
@@ -593,7 +594,7 @@ SwDoc::~SwDoc()
// Only now destroy the Model, the drawing objects - which are also
// contained in the Undo - need to remove their attributes from the
// Model. Also, DrawContacts could exist before this.
- ReleaseDrawModel();
+ GetDocumentDrawModelManager().ReleaseDrawModel();
// Destroy DrawModel before the LinkManager, because it's always set
// in the DrawModel.
DELETEZ( mpLinkMgr );
@@ -658,11 +659,11 @@ void SwDoc::SetDocShell( SwDocShell* pDSh )
}
mpLinkMgr->SetPersist( mpDocShell );
- if( mpDrawModel )
+ if( GetDocumentDrawModelManager().GetDrawModel() )
{
- ((SwDrawDocument*)mpDrawModel)->SetObjectShell( mpDocShell );
- mpDrawModel->SetPersist( mpDocShell );
- OSL_ENSURE( mpDrawModel->GetPersist() == GetPersist(),
+ ((SwDrawDocument*)GetDocumentDrawModelManager().GetDrawModel())->SetObjectShell( mpDocShell );
+ GetDocumentDrawModelManager().GetDrawModel()->SetPersist( mpDocShell );
+ OSL_ENSURE( GetDocumentDrawModelManager().GetDrawModel()->GetPersist() == GetPersist(),
"draw model's persist is out of sync" );
}
}
@@ -689,9 +690,9 @@ void SwDoc::ClearDoc()
::sw::UndoGuard const undoGuard(GetIDocumentUndoRedo());
// Deactivate Undo notification from Draw
- if( mpDrawModel )
+ if( GetDocumentDrawModelManager().GetDrawModel() )
{
- DrawNotifyUndoHdl();
+ GetDocumentDrawModelManager().DrawNotifyUndoHdl();
ClrContourCache();
}
@@ -699,7 +700,7 @@ void SwDoc::ClearDoc()
sal_uInt16 n;
while ( 0 != (n = GetSpzFrmFmts()->size()) )
DelLayoutFmt((*mpSpzFrmFmtTbl)[n-1]);
- OSL_ENSURE( !mpDrawModel || !mpDrawModel->GetPage(0)->GetObjCount(),
+ OSL_ENSURE( !GetDocumentDrawModelManager().GetDrawModel() || !GetDocumentDrawModelManager().GetDrawModel()->GetPage(0)->GetObjCount(),
"not all DrawObjects removed from the page" );
mpRedlineTbl->DeleteAndDestroyAll();
diff --git a/sw/source/core/docnode/node.cxx b/sw/source/core/docnode/node.cxx
index 48d9339..5cb751e 100644
--- a/sw/source/core/docnode/node.cxx
+++ b/sw/source/core/docnode/node.cxx
@@ -1918,7 +1918,7 @@ const IDocumentDeviceAccess* SwNode::getIDocumentDeviceAccess() const { return &
const IDocumentRedlineAccess* SwNode::getIDocumentRedlineAccess() const { return GetDoc(); }
const IDocumentStylePoolAccess* SwNode::getIDocumentStylePoolAccess() const { return GetDoc(); }
const IDocumentLineNumberAccess* SwNode::getIDocumentLineNumberAccess() const { return GetDoc(); }
-const IDocumentDrawModelAccess* SwNode::getIDocumentDrawModelAccess() const { return GetDoc(); }
+const IDocumentDrawModelAccess* SwNode::getIDocumentDrawModelAccess() const { return & GetDoc()->getIDocumentDrawModelAccess(); }
const IDocumentLayoutAccess* SwNode::getIDocumentLayoutAccess() const { return GetDoc(); }
IDocumentLayoutAccess* SwNode::getIDocumentLayoutAccess() { return GetDoc(); }
const IDocumentLinksAdministration* SwNode::getIDocumentLinksAdministration() const { return GetDoc(); }
diff --git a/sw/source/core/docnode/nodedump.cxx b/sw/source/core/docnode/nodedump.cxx
index 5283af3..fde49d7 100644
--- a/sw/source/core/docnode/nodedump.cxx
+++ b/sw/source/core/docnode/nodedump.cxx
@@ -8,6 +8,7 @@
*/
#include "doc.hxx"
+#include <IDocumentDrawModelAccess.hxx>
#include "ndtxt.hxx"
#include "MarkManager.hxx"
#include "docary.hxx"
@@ -189,7 +190,7 @@ void SwDoc::dumpAsXml( xmlTextWriterPtr w )
mpNumRuleTbl->dumpAsXml( writer );
mpRedlineTbl->dumpAsXml( writer );
mpExtraRedlineTbl->dumpAsXml( writer );
- lcl_dumpSdrModel( writer, mpDrawModel );
+ lcl_dumpSdrModel( writer, getIDocumentDrawModelAccess().GetDrawModel() );
writer.endElement();
}
diff --git a/sw/source/core/draw/drawdoc.cxx b/sw/source/core/draw/drawdoc.cxx
index 7f6236d..8090dfe 100644
--- a/sw/source/core/draw/drawdoc.cxx
+++ b/sw/source/core/draw/drawdoc.cxx
@@ -37,6 +37,7 @@
#include <hintids.hxx>
#include <com/sun/star/embed/ElementModes.hpp>
#include <DocumentSettingManager.hxx>
+#include <IDocumentDrawModelAccess.hxx>
using namespace com::sun::star;
@@ -147,7 +148,7 @@ uno::Reference<embed::XStorage> SwDrawDocument::GetDocumentStorage() const
SdrLayerID SwDrawDocument::GetControlExportLayerId( const SdrObject & ) const
{
//for versions < 5.0, there was only Hell and Heaven
- return (SdrLayerID)pDoc->GetHeavenId();
+ return (SdrLayerID)pDoc->getIDocumentDrawModelAccess().GetHeavenId();
}
uno::Reference< uno::XInterface > SwDrawDocument::createUnoModel()
diff --git a/sw/source/core/fields/textapi.cxx b/sw/source/core/fields/textapi.cxx
index 719c341..c9a3820 100644
--- a/sw/source/core/fields/textapi.cxx
+++ b/sw/source/core/fields/textapi.cxx
@@ -19,6 +19,7 @@
#include <textapi.hxx>
#include <doc.hxx>
+#include <IDocumentDrawModelAccess.hxx>
#include <docsh.hxx>
#include <editeng/eeitem.hxx>
#include <editeng/editeng.hxx>
@@ -123,7 +124,7 @@ SvxTextForwarder* SwTextAPIEditSource::GetTextForwarder()
if( !pImpl->mpOutliner )
{
//init draw model first
- pImpl->mpDoc->GetOrCreateDrawModel();
+ pImpl->mpDoc->getIDocumentDrawModelAccess().GetOrCreateDrawModel();
pImpl->mpOutliner = new Outliner( pImpl->mpPool, OUTLINERMODE_TEXTOBJECT );
pImpl->mpDoc->SetCalcFieldValueHdl( pImpl->mpOutliner );
}
@@ -141,7 +142,7 @@ void SwTextAPIEditSource::SetText( OutlinerParaObject& rText )
if( !pImpl->mpOutliner )
{
//init draw model first
- pImpl->mpDoc->GetOrCreateDrawModel();
+ pImpl->mpDoc->getIDocumentDrawModelAccess().GetOrCreateDrawModel();
pImpl->mpOutliner = new Outliner( pImpl->mpPool, OUTLINERMODE_TEXTOBJECT );
pImpl->mpDoc->SetCalcFieldValueHdl( pImpl->mpOutliner );
}
@@ -157,7 +158,7 @@ void SwTextAPIEditSource::SetString( const OUString& rText )
if( !pImpl->mpOutliner )
{
//init draw model first
- pImpl->mpDoc->GetOrCreateDrawModel();
+ pImpl->mpDoc->getIDocumentDrawModelAccess().GetOrCreateDrawModel();
pImpl->mpOutliner = new Outliner( pImpl->mpPool, OUTLINERMODE_TEXTOBJECT );
pImpl->mpDoc->SetCalcFieldValueHdl( pImpl->mpOutliner );
}
diff --git a/sw/source/core/frmedt/fecopy.cxx b/sw/source/core/frmedt/fecopy.cxx
index f248666..9aaab2a 100644
--- a/sw/source/core/frmedt/fecopy.cxx
+++ b/sw/source/core/frmedt/fecopy.cxx
@@ -54,6 +54,7 @@
#include <fesh.hxx>
#include <doc.hxx>
#include <IDocumentUndoRedo.hxx>
+#include <IDocumentDrawModelAccess.hxx>
#include <rootfrm.hxx>
#include <ndtxt.hxx>
#include <pam.hxx>
@@ -1393,9 +1394,9 @@ void SwFEShell::Paste( SvStream& rStrm, sal_uInt16 nAction, const Point* pPt )
pNewObj->NbcMove(Size(aVec.getX(), aVec.getY()));
if( pNewObj->ISA( SdrUnoObj ) )
- pNewObj->SetLayer( GetDoc()->GetControlsId() );
+ pNewObj->SetLayer( GetDoc()->getIDocumentDrawModelAccess().GetControlsId() );
else if( pOldObj->ISA( SdrUnoObj ) )
- pNewObj->SetLayer( GetDoc()->GetHeavenId() );
+ pNewObj->SetLayer( GetDoc()->getIDocumentDrawModelAccess().GetHeavenId() );
else
pNewObj->SetLayer( pOldObj->GetLayer() );
@@ -1524,11 +1525,11 @@ void SwFEShell::Paste( SvStream& rStrm, sal_uInt16 nAction, const Point* pPt )
SdrObject *pObj = pView->GetMarkedObjectList().GetMark(0)->GetMarkedSdrObj();
if( pObj->ISA( SdrUnoObj ) )
{
- pObj->SetLayer( GetDoc()->GetControlsId() );
+ pObj->SetLayer( GetDoc()->getIDocumentDrawModelAccess().GetControlsId() );
bDesignMode = true;
}
else
- pObj->SetLayer( GetDoc()->GetHeavenId() );
+ pObj->SetLayer( GetDoc()->getIDocumentDrawModelAccess().GetHeavenId() );
const Rectangle &rSnap = pObj->GetSnapRect();
const Size aDiff( rSnap.GetWidth()/2, rSnap.GetHeight()/2 );
pView->MoveMarkedObj( aDiff );
diff --git a/sw/source/core/inc/DocumentDrawModelManager.hxx b/sw/source/core/inc/DocumentDrawModelManager.hxx
new file mode 100644
index 0000000..596ee83
--- /dev/null
+++ b/sw/source/core/inc/DocumentDrawModelManager.hxx
@@ -0,0 +1,92 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ *
+ * This file incorporates work covered by the following license notice:
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed
+ * with this work for additional information regarding copyright
+ * ownership. The ASF licenses this file to you under the Apache
+ * License, Version 2.0 (the "License"); you may not use this file
+ * except in compliance with the License. You may obtain a copy of
+ * the License at http://www.apache.org/licenses/LICENSE-2.0 .
+ */
+
+#ifndef INCLUDED_SW_SOURCE_CORE_INC_DOCUMENTDRAWMODELMANAGER_HXX
+#define INCLUDED_SW_SOURCE_CORE_INC_DOCUMENTDRAWMODELMANAGER_HXX
+
+#include <sal/types.h>
+#include <IDocumentDrawModelAccess.hxx>
+#include <boost/utility.hpp>
+#include <svx/svdtypes.hxx>
+
+class SdrModel;
+class SdrPageView;
+class SwDoc;
+
+namespace sw
+{
+
+class DocumentDrawModelManager : public IDocumentDrawModelAccess,
+ public ::boost::noncopyable
+{
+public:
+
+ DocumentDrawModelManager( SwDoc& i_rSwdoc );
+
+ void InitDrawModel();
+ void ReleaseDrawModel();
+ void DrawNotifyUndoHdl();
+
+ //IDocumentDrawModelAccess
+ virtual const SdrModel* GetDrawModel() const SAL_OVERRIDE;
+ virtual SdrModel* GetDrawModel() SAL_OVERRIDE;
+ virtual SdrModel* _MakeDrawModel() SAL_OVERRIDE;
+ virtual SdrModel* GetOrCreateDrawModel() SAL_OVERRIDE;
+ virtual SdrLayerID GetHeavenId() const SAL_OVERRIDE;
+ virtual SdrLayerID GetHellId() const SAL_OVERRIDE;
+ virtual SdrLayerID GetControlsId() const SAL_OVERRIDE;
+ virtual SdrLayerID GetInvisibleHeavenId() const SAL_OVERRIDE;
+ virtual SdrLayerID GetInvisibleHellId() const SAL_OVERRIDE;
+ virtual SdrLayerID GetInvisibleControlsId() const SAL_OVERRIDE;
+
+ virtual void NotifyInvisibleLayers( SdrPageView& _rSdrPageView ) SAL_OVERRIDE;
+
+ virtual bool IsVisibleLayerId( const SdrLayerID& _nLayerId ) const SAL_OVERRIDE;
+
+ virtual SdrLayerID GetVisibleLayerIdByInvisibleOne( const SdrLayerID& _nInvisibleLayerId ) SAL_OVERRIDE;
+
+ virtual SdrLayerID GetInvisibleLayerIdByVisibleOne( const SdrLayerID& _nVisibleLayerId ) SAL_OVERRIDE;
+
+ virtual ~DocumentDrawModelManager() {}
+
+private:
+
+ SwDoc& m_rSwdoc;
+
+
+ SdrModel* mpDrawModel;
+
+ /** Draw Model Layer IDs
+ * LayerIds, Heaven == above document
+ * Hell == below document
+ * Controls == at the very top
+ */
+ SdrLayerID mnHeaven;
+ SdrLayerID mnHell;
+ SdrLayerID mnControls;
+ SdrLayerID mnInvisibleHeaven;
+ SdrLayerID mnInvisibleHell;
+ SdrLayerID mnInvisibleControls;
+};
+
+}
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sw/source/core/layout/anchoredobject.cxx b/sw/source/core/layout/anchoredobject.cxx
index cd45f56..a97fa82 100644
--- a/sw/source/core/layout/anchoredobject.cxx
+++ b/sw/source/core/layout/anchoredobject.cxx
@@ -21,6 +21,7 @@
#include <fmtornt.hxx>
#include <doc.hxx>
#include <IDocumentSettingAccess.hxx>
+#include <IDocumentDrawModelAccess.hxx>
#include <fmtsrnd.hxx>
#include <dcontact.hxx>
#include <editeng/ulspitem.hxx>
@@ -783,7 +784,7 @@ SwTxtFrm* SwAnchoredObject::FindAnchorCharFrm()
*/
bool SwAnchoredObject::IsFormatPossible() const
{
- return GetFrmFmt().GetDoc()->IsVisibleLayerId( GetDrawObj()->GetLayer() );
+ return GetFrmFmt().GetDoc()->getIDocumentDrawModelAccess().IsVisibleLayerId( GetDrawObj()->GetLayer() );
}
// --> #i3317#
diff --git a/sw/source/core/layout/flowfrm.cxx b/sw/source/core/layout/flowfrm.cxx
index 28671ea..7a7441e 100644
--- a/sw/source/core/layout/flowfrm.cxx
+++ b/sw/source/core/layout/flowfrm.cxx
@@ -50,6 +50,7 @@
#include <fmtfollowtextflow.hxx>
#include <switerator.hxx>
#include <IDocumentSettingAccess.hxx>
+#include <IDocumentDrawModelAccess.hxx>
bool SwFlowFrm::m_bMoveBwdJump = false;
@@ -1047,7 +1048,7 @@ bool SwFlowFrm::IsPrevObjMove() const
// OD 2004-01-20 #110582# - do not consider hidden objects
// #i26945# - do not consider object, which
// doesn't follow the text flow.
- if ( pObj->GetFrmFmt().GetDoc()->IsVisibleLayerId(
+ if ( pObj->GetFrmFmt().GetDoc()->getIDocumentDrawModelAccess().IsVisibleLayerId(
pObj->GetDrawObj()->GetLayer() ) &&
pObj->GetFrmFmt().GetFollowTextFlow().GetValue() )
{
diff --git a/sw/source/core/layout/flycnt.cxx b/sw/source/core/layout/flycnt.cxx
index f4082f1..513efae 100644
--- a/sw/source/core/layout/flycnt.cxx
+++ b/sw/source/core/layout/flycnt.cxx
@@ -23,6 +23,7 @@
#include <doc.hxx>
#include <IDocumentUndoRedo.hxx>
#include <IDocumentSettingAccess.hxx>
+#include <IDocumentDrawModelAccess.hxx>
#include "frmtool.hxx"
#include "dflyobj.hxx"
#include "hints.hxx"
@@ -302,7 +303,7 @@ bool SwOszControl::ChkOsz()
|*/
void SwFlyAtCntFrm::MakeAll()
{
- if ( !GetFmt()->GetDoc()->IsVisibleLayerId( GetVirtDrawObj()->GetLayer() ) )
+ if ( !GetFmt()->GetDoc()->getIDocumentDrawModelAccess().IsVisibleLayerId( GetVirtDrawObj()->GetLayer() ) )
{
return;
}
@@ -473,7 +474,7 @@ void SwFlyAtCntFrm::MakeAll()
!bConsiderWrapInfluenceDueToOverlapPrevCol &&
// #i40444#
!bConsiderWrapInfluenceDueToMovedFwdAnchor &&
- GetFmt()->GetDoc()->IsVisibleLayerId( GetVirtDrawObj()->GetLayer() ) );
+ GetFmt()->GetDoc()->getIDocumentDrawModelAccess().IsVisibleLayerId( GetVirtDrawObj()->GetLayer() ) );
// #i3317# - instead of attribute change apply
// temporarly the 'straightforward positioning process'.
diff --git a/sw/source/core/layout/flyincnt.cxx b/sw/source/core/layout/flyincnt.cxx
index 422e7d7..3f0bc43 100644
--- a/sw/source/core/layout/flyincnt.cxx
+++ b/sw/source/core/layout/flyincnt.cxx
@@ -25,6 +25,7 @@
#include "flyfrms.hxx"
#include <dflyobj.hxx>
#include <IDocumentSettingAccess.hxx>
+#include <IDocumentDrawModelAccess.hxx>
SwFlyInCntFrm::SwFlyInCntFrm( SwFlyFrmFmt *pFmt, SwFrm* pSib, SwFrm *pAnch ) :
SwFlyFrm( pFmt, pSib, pAnch )
@@ -199,7 +200,7 @@ void SwFlyInCntFrm::RegistFlys()
void SwFlyInCntFrm::MakeAll()
{
// OD 2004-01-19 #110582#
- if ( !GetFmt()->GetDoc()->IsVisibleLayerId( GetVirtDrawObj()->GetLayer() ) )
+ if ( !GetFmt()->GetDoc()->getIDocumentDrawModelAccess().IsVisibleLayerId( GetVirtDrawObj()->GetLayer() ) )
{
return;
}
diff --git a/sw/source/core/layout/flylay.cxx b/sw/source/core/layout/flylay.cxx
index 15a694b..d5487dd 100644
--- a/sw/source/core/layout/flylay.cxx
+++ b/sw/source/core/layout/flylay.cxx
@@ -39,6 +39,7 @@
#include <sortedobjs.hxx>
#include <viewimp.hxx>
#include <IDocumentSettingAccess.hxx>
+#include <IDocumentDrawModelAccess.hxx>
using namespace ::com::sun::star;
@@ -95,7 +96,7 @@ void SwFlyFreeFrm::NotifyBackground( SwPageFrm *pPageFrm,
void SwFlyFreeFrm::MakeAll()
{
- if ( !GetFmt()->GetDoc()->IsVisibleLayerId( GetVirtDrawObj()->GetLayer() ) )
+ if ( !GetFmt()->GetDoc()->getIDocumentDrawModelAccess().IsVisibleLayerId( GetVirtDrawObj()->GetLayer() ) )
{
return;
}
diff --git a/sw/source/core/layout/pagechg.cxx b/sw/source/core/layout/pagechg.cxx
index 663affd..78e8c85 100644
--- a/sw/source/core/layout/pagechg.cxx
+++ b/sw/source/core/layout/pagechg.cxx
@@ -45,6 +45,7 @@
#include "flyfrm.hxx"
#include "doc.hxx"
#include <IDocumentSettingAccess.hxx>
+#include <IDocumentDrawModelAccess.hxx>
#include "fesh.hxx"
#include "dview.hxx"
#include "dflyobj.hxx"
@@ -1327,7 +1328,7 @@ void SwRootFrm::RemoveSuperfluous()
// #i28701#
SwAnchoredObject* pAnchoredObj = rObjs[i];
// OD 2004-01-19 #110582# - do not consider hidden objects
- if ( pPage->GetFmt()->GetDoc()->IsVisibleLayerId(
+ if ( pPage->GetFmt()->GetDoc()->getIDocumentDrawModelAccess().IsVisibleLayerId(
pAnchoredObj->GetDrawObj()->GetLayer() ) &&
!pAnchoredObj->GetAnchorFrm()->FindFooterOrHeader() )
{
diff --git a/sw/source/core/layout/paintfrm.cxx b/sw/source/core/layout/paintfrm.cxx
index 3133080..a8dbaa8 100644
--- a/sw/source/core/layout/paintfrm.cxx
+++ b/sw/source/core/layout/paintfrm.cxx
@@ -70,6 +70,7 @@
#include <svx/sdr/contact/viewcontact.hxx>
#include <DocumentSettingManager.hxx>
#include <IDocumentDeviceAccess.hxx>
+#include <IDocumentDrawModelAccess.hxx>
#include <ndole.hxx>
#include <svx/charthelper.hxx>
@@ -3331,7 +3332,7 @@ void SwRootFrm::Paint(SwRect const& rRect, SwPrintData const*const pPrintData) c
{
// OD 29.08.2002 #102450# - add 3rd parameter
// OD 09.12.2002 #103045# - add 4th parameter for horizontal text direction.
- pSh->Imp()->PaintLayer( pSh->GetDoc()->GetHeavenId(),
+ pSh->Imp()->PaintLayer( pSh->GetDoc()->getIDocumentDrawModelAccess().GetHeavenId(),
pPrintData,
pPage->Frm(),
&aPageBackgrdColor,
@@ -6665,7 +6666,7 @@ void SwLayoutFrm::RefreshLaySubsidiary( const SwPageFrm *pPage,
for ( sal_uInt32 i = 0; i < rObjs.Count(); ++i )
{
const SwAnchoredObject* pAnchoredObj = rObjs[i];
- if ( pPage->GetFmt()->GetDoc()->IsVisibleLayerId(
+ if ( pPage->GetFmt()->GetDoc()->getIDocumentDrawModelAccess().IsVisibleLayerId(
pAnchoredObj->GetDrawObj()->GetLayer() ) &&
pAnchoredObj->ISA(SwFlyFrm) )
{
@@ -6755,7 +6756,7 @@ static void lcl_RefreshLine( const SwLayoutFrm *pLay,
// OD 2004-02-12 #110582#-2 - do *not* consider fly frame, which
// belongs to a invisible layer
if ( pFly->IsBackgroundTransparent() ||
- !pFly->GetFmt()->GetDoc()->IsVisibleLayerId( pObj->GetLayer() ) )
+ !pFly->GetFmt()->GetDoc()->getIDocumentDrawModelAccess().IsVisibleLayerId( pObj->GetLayer() ) )
{
aIter.Next();
continue;
diff --git a/sw/source/core/undo/docundo.cxx b/sw/source/core/undo/docundo.cxx
index 4959028..9f6c498 100644
--- a/sw/source/core/undo/docundo.cxx
+++ b/sw/source/core/undo/docundo.cxx
@@ -35,6 +35,7 @@
#include <editsh.hxx>
#include <unobaseclass.hxx>
#include <limits>
+#include <IDocumentDrawModelAccess.hxx>
using namespace ::com::sun::star;
... etc. - the rest is truncated
More information about the Libreoffice-commits
mailing list