summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorArmin Le Grand <Armin.Le.Grand@cib.de>2018-04-06 22:32:24 +0200
committerArmin Le Grand <Armin.Le.Grand@cib.de>2018-04-06 22:32:24 +0200
commiteba4d5b2b76cefde90cb3d6638c736f435023a45 (patch)
tree43befa620475c11f3dde00e5ea141e1efd95a334
parent6c14c27c75a03e2363f2b363ddf0a6f2f46cfa91 (diff)
Revert "SOSAW080: Added first bunch of basic changes to helpers"
-rw-r--r--basctl/source/dlged/dlged.cxx12
-rw-r--r--basctl/source/dlged/dlgedfac.cxx60
-rw-r--r--basctl/source/dlged/dlgedobj.cxx38
-rw-r--r--basctl/source/dlged/dlgedpage.cxx32
-rw-r--r--basctl/source/dlged/dlgedview.cxx8
-rw-r--r--basctl/source/inc/dlgedobj.hxx14
-rw-r--r--basctl/source/inc/dlgedpage.hxx7
-rw-r--r--basctl/source/inc/dlgedview.hxx6
-rw-r--r--basegfx/Library_basegfx.mk1
-rw-r--r--basegfx/source/matrix/b2dhommatrix.cxx15
-rw-r--r--basegfx/source/matrix/b3dhommatrix.cxx15
-rwxr-xr-xbasegfx/source/matrix/b3dhommatrixtools.cxx76
-rw-r--r--basegfx/source/numeric/ftools.cxx53
-rw-r--r--basegfx/source/range/b2drange.cxx20
-rw-r--r--basegfx/source/range/b3drange.cxx19
-rw-r--r--chart2/source/controller/drawinglayer/DrawViewWrapper.cxx12
-rw-r--r--chart2/source/controller/drawinglayer/ViewElementListProvider.cxx2
-rw-r--r--chart2/source/controller/inc/DrawViewWrapper.hxx5
-rw-r--r--chart2/source/controller/main/ChartController.cxx2
-rw-r--r--chart2/source/controller/main/ChartController_Tools.cxx11
-rw-r--r--chart2/source/controller/main/ChartTransferable.cxx11
-rw-r--r--chart2/source/controller/main/ChartTransferable.hxx11
-rw-r--r--chart2/source/controller/main/DrawCommandDispatch.cxx13
-rw-r--r--chart2/source/view/diagram/VDiagram.cxx8
-rw-r--r--cui/source/dialogs/sdrcelldlg.cxx12
-rw-r--r--cui/source/factory/dlgfact.cxx4
-rw-r--r--cui/source/factory/dlgfact.hxx2
-rw-r--r--cui/source/inc/sdrcelldlg.hxx2
-rw-r--r--cui/source/tabpages/measure.cxx9
-rw-r--r--cui/source/tabpages/tpline.cxx4
-rw-r--r--cui/source/tabpages/transfrm.cxx12
-rw-r--r--filter/source/msfilter/escherex.cxx5
-rw-r--r--filter/source/msfilter/msdffimp.cxx86
-rw-r--r--filter/source/msfilter/svdfppt.cxx39
-rw-r--r--filter/source/svg/svgexport.cxx14
-rw-r--r--include/basegfx/matrix/b2dhommatrix.hxx2
-rw-r--r--include/basegfx/matrix/b3dhommatrix.hxx3
-rwxr-xr-xinclude/basegfx/matrix/b3dhommatrixtools.hxx46
-rw-r--r--include/basegfx/numeric/ftools.hxx19
-rw-r--r--include/basegfx/range/b1drange.hxx5
-rw-r--r--include/basegfx/range/b2drange.hxx25
-rw-r--r--include/basegfx/range/b2irange.hxx7
-rw-r--r--include/basegfx/range/b3drange.hxx25
-rw-r--r--include/basegfx/range/basicrange.hxx22
-rw-r--r--include/filter/msfilter/msdffimp.hxx24
-rw-r--r--include/svx/connctrl.hxx4
-rw-r--r--include/svx/cube3d.hxx14
-rw-r--r--include/svx/deflt3d.hxx8
-rw-r--r--include/svx/e3dsceneupdater.hxx4
-rw-r--r--include/svx/e3dundo.hxx64
-rw-r--r--include/svx/extedit.hxx12
-rw-r--r--include/svx/extrud3d.hxx16
-rw-r--r--include/svx/fmpage.hxx11
-rw-r--r--include/svx/fmview.hxx4
-rw-r--r--include/svx/graphctl.hxx11
-rw-r--r--include/svx/lathe3d.hxx14
-rw-r--r--include/svx/obj3d.hxx17
-rw-r--r--include/svx/polygn3d.hxx12
-rw-r--r--include/svx/scene3d.hxx4
-rw-r--r--include/svx/sdr/properties/defaultproperties.hxx3
-rw-r--r--include/svx/sdr/properties/properties.hxx33
-rw-r--r--include/svx/sdr/table/tablecontroller.hxx26
-rw-r--r--include/svx/sphere3d.hxx16
-rw-r--r--include/svx/svdcrtv.hxx7
-rw-r--r--include/svx/svddrgv.hxx7
-rw-r--r--include/svx/svdedtv.hxx7
-rw-r--r--include/svx/svdedxv.hxx7
-rw-r--r--include/svx/svdglev.hxx7
-rw-r--r--include/svx/svdmrkv.hxx5
-rw-r--r--include/svx/svdoashp.hxx13
-rw-r--r--include/svx/svdoattr.hxx10
-rw-r--r--include/svx/svdobj.hxx109
-rw-r--r--include/svx/svdocapt.hxx22
-rw-r--r--include/svx/svdocirc.hxx23
-rw-r--r--include/svx/svdoedge.hxx5
-rw-r--r--include/svx/svdograf.hxx19
-rw-r--r--include/svx/svdogrp.hxx18
-rw-r--r--include/svx/svdomeas.hxx12
-rw-r--r--include/svx/svdomedia.hxx10
-rw-r--r--include/svx/svdoole2.hxx16
-rw-r--r--include/svx/svdopage.hxx12
-rw-r--r--include/svx/svdopath.hxx12
-rw-r--r--include/svx/svdorect.hxx18
-rw-r--r--include/svx/svdotable.hxx18
-rw-r--r--include/svx/svdotext.hxx22
-rw-r--r--include/svx/svdouno.hxx14
-rw-r--r--include/svx/svdovirt.hxx10
-rw-r--r--include/svx/svdpage.hxx59
-rw-r--r--include/svx/svdpntv.hxx32
-rw-r--r--include/svx/svdpoev.hxx7
-rw-r--r--include/svx/svdsnpv.hxx7
-rw-r--r--include/svx/svdtext.hxx5
-rw-r--r--include/svx/svdview.hxx7
-rw-r--r--include/svx/svdxcgv.hxx18
-rw-r--r--include/svx/svxdlg.hxx2
-rw-r--r--include/svx/unomod.hxx4
-rw-r--r--include/svx/unomodel.hxx15
-rw-r--r--include/svx/unopage.hxx5
-rw-r--r--include/svx/unoshape.hxx15
-rw-r--r--include/svx/unoshtxt.hxx2
-rw-r--r--include/svx/view3d.hxx5
-rw-r--r--reportdesign/inc/ReportDefinition.hxx7
-rw-r--r--reportdesign/inc/RptObject.hxx55
-rw-r--r--reportdesign/inc/RptPage.hxx9
-rw-r--r--reportdesign/source/core/api/ReportDefinition.cxx32
-rw-r--r--reportdesign/source/core/sdr/ReportDrawPage.cxx15
-rw-r--r--reportdesign/source/core/sdr/ReportUndoFactory.cxx4
-rw-r--r--reportdesign/source/core/sdr/RptObject.cxx221
-rw-r--r--reportdesign/source/core/sdr/RptPage.cxx45
-rw-r--r--reportdesign/source/ui/inc/SectionView.hxx6
-rw-r--r--reportdesign/source/ui/report/ReportController.cxx12
-rw-r--r--reportdesign/source/ui/report/ReportSection.cxx11
-rw-r--r--reportdesign/source/ui/report/SectionView.cxx8
-rw-r--r--reportdesign/source/ui/report/ViewsWindow.cxx6
-rw-r--r--reportdesign/source/ui/report/dlgedfac.cxx15
-rw-r--r--reportdesign/source/ui/report/dlgedfunc.cxx30
-rw-r--r--sc/inc/docuno.hxx3
-rw-r--r--sc/inc/drawpage.hxx9
-rw-r--r--sc/qa/extras/anchor.cxx2
-rw-r--r--sc/qa/unit/ucalc.cxx14
-rw-r--r--sc/qa/unit/ucalc_sort.cxx2
-rw-r--r--sc/source/core/data/documen9.cxx6
-rw-r--r--sc/source/core/data/drawpage.cxx30
-rw-r--r--sc/source/core/data/drwlayer.cxx22
-rw-r--r--sc/source/core/data/postit.cxx11
-rw-r--r--sc/source/core/tool/detfunc.cxx23
-rw-r--r--sc/source/filter/excel/xichart.cxx2
-rw-r--r--sc/source/filter/excel/xiescher.cxx72
-rw-r--r--sc/source/filter/html/htmlexp2.cxx3
-rw-r--r--sc/source/filter/rtf/eeimpars.cxx6
-rw-r--r--sc/source/ui/app/drwtrans.cxx10
-rw-r--r--sc/source/ui/drawfunc/fuconarc.cxx5
-rw-r--r--sc/source/ui/drawfunc/fuconcustomshape.cxx9
-rw-r--r--sc/source/ui/drawfunc/fuconpol.cxx5
-rw-r--r--sc/source/ui/drawfunc/fuconrec.cxx21
-rw-r--r--sc/source/ui/drawfunc/fuconuno.cxx5
-rw-r--r--sc/source/ui/drawfunc/fuins1.cxx12
-rw-r--r--sc/source/ui/drawfunc/fuins2.cxx18
-rw-r--r--sc/source/ui/drawfunc/futext.cxx5
-rw-r--r--sc/source/ui/inc/drawview.hxx7
-rw-r--r--sc/source/ui/navipi/content.cxx2
-rw-r--r--sc/source/ui/unoobj/TablePivotCharts.cxx7
-rw-r--r--sc/source/ui/unoobj/chartuno.cxx6
-rw-r--r--sc/source/ui/unoobj/docuno.cxx16
-rw-r--r--sc/source/ui/unoobj/shapeuno.cxx129
-rw-r--r--sc/source/ui/view/drawvie3.cxx6
-rw-r--r--sc/source/ui/view/gridwin4.cxx5
-rw-r--r--sc/source/ui/view/preview.cxx4
-rw-r--r--sc/source/ui/view/printfun.cxx5
-rw-r--r--sc/source/ui/view/tabvwshg.cxx7
-rw-r--r--sc/source/ui/view/viewfun7.cxx21
-rw-r--r--sd/inc/CustomAnimationEffect.hxx6
-rw-r--r--sd/inc/sdpage.hxx9
-rw-r--r--sd/source/core/CustomAnimationEffect.cxx4
-rw-r--r--sd/source/core/annotations/Annotation.cxx4
-rw-r--r--sd/source/core/drawdoc.cxx15
-rw-r--r--sd/source/core/drawdoc3.cxx2
-rw-r--r--sd/source/core/pglink.cxx2
-rw-r--r--sd/source/core/sdpage.cxx142
-rw-r--r--sd/source/core/sdpage2.cxx174
-rw-r--r--sd/source/core/undo/undoobjects.cxx10
-rw-r--r--sd/source/filter/grf/sdgrffilter.cxx84
-rw-r--r--sd/source/filter/ppt/pptin.cxx5
-rw-r--r--sd/source/ui/animations/motionpathtag.cxx2
-rw-r--r--sd/source/ui/app/sdmod2.cxx2
-rw-r--r--sd/source/ui/dlg/animobjs.cxx25
-rw-r--r--sd/source/ui/func/fucon3d.cxx38
-rw-r--r--sd/source/ui/func/fuconarc.cxx15
-rw-r--r--sd/source/ui/func/fuconbez.cxx5
-rw-r--r--sd/source/ui/func/fuconcs.cxx7
-rw-r--r--sd/source/ui/func/fuconrec.cxx31
-rw-r--r--sd/source/ui/func/fuconstr.cxx12
-rw-r--r--sd/source/ui/func/fuconuno.cxx5
-rw-r--r--sd/source/ui/func/fuinsert.cxx13
-rw-r--r--sd/source/ui/func/fuinsfil.cxx4
-rw-r--r--sd/source/ui/func/fumorph.cxx7
-rw-r--r--sd/source/ui/func/futext.cxx9
-rw-r--r--sd/source/ui/func/unoaprms.cxx2
-rw-r--r--sd/source/ui/inc/unomodel.hxx4
-rw-r--r--sd/source/ui/sidebar/DocumentHelper.cxx96
-rw-r--r--sd/source/ui/table/tablefunction.cxx12
-rw-r--r--sd/source/ui/tools/PreviewRenderer.cxx14
-rw-r--r--sd/source/ui/unoidl/unomodel.cxx5
-rw-r--r--sd/source/ui/unoidl/unopage.cxx248
-rw-r--r--sd/source/ui/view/DocumentRenderer.cxx10
-rw-r--r--sd/source/ui/view/drawview.cxx15
-rw-r--r--sd/source/ui/view/drviews2.cxx12
-rw-r--r--sd/source/ui/view/drviews8.cxx5
-rw-r--r--sd/source/ui/view/drviews9.cxx5
-rw-r--r--sd/source/ui/view/drviewse.cxx12
-rw-r--r--sd/source/ui/view/frmview.cxx2
-rw-r--r--sd/source/ui/view/sdview.cxx11
-rw-r--r--sd/source/ui/view/sdview3.cxx18
-rw-r--r--sd/source/ui/view/sdview4.cxx20
-rw-r--r--svx/inc/dragmt3d.hxx9
-rw-r--r--svx/inc/sdr/properties/attributeproperties.hxx16
-rw-r--r--svx/inc/sdr/properties/e3dsceneproperties.hxx3
-rw-r--r--svx/inc/sdr/properties/groupproperties.hxx3
-rw-r--r--svx/source/accessibility/AccessibleEmptyEditSource.cxx9
-rw-r--r--svx/source/accessibility/AccessibleGraphicShape.cxx2
-rw-r--r--svx/source/core/extedit.cxx9
-rw-r--r--svx/source/customshapes/EnhancedCustomShape2d.cxx16
-rw-r--r--svx/source/customshapes/EnhancedCustomShape3d.cxx54
-rw-r--r--svx/source/customshapes/EnhancedCustomShapeEngine.cxx16
-rw-r--r--svx/source/customshapes/EnhancedCustomShapeFontWork.cxx6
-rw-r--r--svx/source/dialog/connctrl.cxx32
-rw-r--r--svx/source/dialog/contwnd.cxx5
-rw-r--r--svx/source/dialog/dlgctl3d.cxx10
-rw-r--r--svx/source/dialog/dlgctrl.cxx35
-rw-r--r--svx/source/dialog/graphctl.cxx2
-rw-r--r--svx/source/dialog/imapwnd.cxx32
-rw-r--r--svx/source/dialog/measctrl.cxx6
-rw-r--r--svx/source/engine3d/cube3d.cxx37
-rw-r--r--svx/source/engine3d/dragmt3d.cxx47
-rw-r--r--svx/source/engine3d/e3dsceneupdater.cxx35
-rw-r--r--svx/source/engine3d/e3dundo.cxx43
-rw-r--r--svx/source/engine3d/extrud3d.cxx37
-rw-r--r--svx/source/engine3d/lathe3d.cxx37
-rw-r--r--svx/source/engine3d/obj3d.cxx46
-rw-r--r--svx/source/engine3d/objfac3d.cxx19
-rw-r--r--svx/source/engine3d/polygn3d.cxx29
-rw-r--r--svx/source/engine3d/scene3d.cxx38
-rw-r--r--svx/source/engine3d/sphere3d.cxx46
-rw-r--r--svx/source/engine3d/view3d.cxx25
-rw-r--r--svx/source/form/fmdmod.cxx9
-rw-r--r--svx/source/form/fmdpage.cxx7
-rw-r--r--svx/source/form/fmobj.cxx51
-rw-r--r--svx/source/form/fmobjfac.cxx8
-rw-r--r--svx/source/form/fmpage.cxx82
-rw-r--r--svx/source/form/fmpgeimp.cxx52
-rw-r--r--svx/source/form/fmshimp.cxx11
-rw-r--r--svx/source/form/fmview.cxx8
-rw-r--r--svx/source/form/fmvwimp.cxx27
-rw-r--r--svx/source/gallery2/galobj.cxx2
-rw-r--r--svx/source/gallery2/galtheme.cxx4
-rw-r--r--svx/source/inc/cell.hxx2
-rw-r--r--svx/source/inc/fmobj.hxx13
-rw-r--r--svx/source/inc/tablemodel.hxx2
-rw-r--r--svx/source/sdr/contact/viewcontactofgraphic.cxx5
-rw-r--r--svx/source/sdr/contact/viewcontactofsdrrectobj.cxx3
-rw-r--r--svx/source/sdr/contact/viewobjectcontactofgraphic.cxx2
-rw-r--r--svx/source/sdr/primitive2d/sdrattributecreator.cxx4
-rw-r--r--svx/source/sdr/primitive2d/sdrtextprimitive2d.cxx14
-rw-r--r--svx/source/sdr/properties/attributeproperties.cxx426
-rw-r--r--svx/source/sdr/properties/defaultproperties.cxx28
-rw-r--r--svx/source/sdr/properties/e3dsceneproperties.cxx25
-rw-r--r--svx/source/sdr/properties/groupproperties.cxx25
-rw-r--r--svx/source/sdr/properties/properties.cxx12
-rw-r--r--svx/source/sdr/properties/textproperties.cxx12
-rw-r--r--svx/source/svdraw/svdcrtv.cxx21
-rw-r--r--svx/source/svdraw/svddrgv.cxx6
-rw-r--r--svx/source/svdraw/svdedtv.cxx7
-rw-r--r--svx/source/svdraw/svdedtv2.cxx28
-rw-r--r--svx/source/svdraw/svdedxv.cxx23
-rw-r--r--svx/source/svdraw/svdetc.cxx6
-rw-r--r--svx/source/svdraw/svdfmtf.cxx126
-rw-r--r--svx/source/svdraw/svdglev.cxx8
-rw-r--r--svx/source/svdraw/svdhdl.cxx12
-rw-r--r--svx/source/svdraw/svdmodel.cxx45
-rw-r--r--svx/source/svdraw/svdmrkv.cxx8
-rw-r--r--svx/source/svdraw/svdoashp.cxx37
-rw-r--r--svx/source/svdraw/svdoattr.cxx22
-rw-r--r--svx/source/svdraw/svdobj.cxx504
-rw-r--r--svx/source/svdraw/svdocapt.cxx45
-rw-r--r--svx/source/svdraw/svdocirc.cxx43
-rw-r--r--svx/source/svdraw/svdoedge.cxx17
-rw-r--r--svx/source/svdraw/svdograf.cxx296
-rw-r--r--svx/source/svdraw/svdogrp.cxx195
-rw-r--r--svx/source/svdraw/svdomeas.cxx190
-rw-r--r--svx/source/svdraw/svdomedia.cxx48
-rw-r--r--svx/source/svdraw/svdoole2.cxx348
-rw-r--r--svx/source/svdraw/svdopage.cxx20
-rw-r--r--svx/source/svdraw/svdopath.cxx43
-rw-r--r--svx/source/svdraw/svdorect.cxx58
-rw-r--r--svx/source/svdraw/svdotext.cxx123
-rw-r--r--svx/source/svdraw/svdotextdecomposition.cxx5
-rw-r--r--svx/source/svdraw/svdotxat.cxx8
-rw-r--r--svx/source/svdraw/svdotxed.cxx10
-rw-r--r--svx/source/svdraw/svdotxln.cxx9
-rw-r--r--svx/source/svdraw/svdotxtr.cxx45
-rw-r--r--svx/source/svdraw/svdouno.cxx53
-rw-r--r--svx/source/svdraw/svdovirt.cxx59
-rw-r--r--svx/source/svdraw/svdpage.cxx313
-rw-r--r--svx/source/svdraw/svdpagv.cxx26
-rw-r--r--svx/source/svdraw/svdpntv.cxx11
-rw-r--r--svx/source/svdraw/svdpoev.cxx6
-rw-r--r--svx/source/svdraw/svdsnpv.cxx49
-rw-r--r--svx/source/svdraw/svdtext.cxx90
-rw-r--r--svx/source/svdraw/svdundo.cxx30
-rw-r--r--svx/source/svdraw/svdview.cxx8
-rw-r--r--svx/source/svdraw/svdviter.cxx4
-rw-r--r--svx/source/svdraw/svdxcgv.cxx150
-rw-r--r--svx/source/table/cell.cxx120
-rw-r--r--svx/source/table/cellcursor.cxx23
-rw-r--r--svx/source/table/svdotable.cxx125
-rw-r--r--svx/source/table/tablecolumn.cxx8
-rw-r--r--svx/source/table/tablecontroller.cxx981
-rw-r--r--svx/source/table/tablemodel.cxx74
-rw-r--r--svx/source/table/tablerow.cxx18
-rw-r--r--svx/source/table/tablertfimporter.cxx4
-rw-r--r--svx/source/table/tableundo.cxx54
-rw-r--r--svx/source/tbxctrls/fontworkgallery.cxx8
-rw-r--r--svx/source/unodraw/UnoGraphicExporter.cxx53
-rw-r--r--svx/source/unodraw/tableshape.cxx34
-rw-r--r--svx/source/unodraw/unomod.cxx22
-rw-r--r--svx/source/unodraw/unopage.cxx128
-rw-r--r--svx/source/unodraw/unoshap2.cxx180
-rw-r--r--svx/source/unodraw/unoshap3.cxx182
-rw-r--r--svx/source/unodraw/unoshap4.cxx80
-rw-r--r--svx/source/unodraw/unoshape.cxx553
-rw-r--r--svx/source/unodraw/unoshtxt.cxx72
-rw-r--r--svx/source/unogallery/unogaltheme.cxx5
-rw-r--r--sw/inc/dcontact.hxx10
-rw-r--r--sw/inc/dpage.hxx8
-rw-r--r--sw/inc/frmfmt.hxx2
-rw-r--r--sw/inc/unotxdoc.hxx3
-rw-r--r--sw/source/core/doc/doclay.cxx4
-rw-r--r--sw/source/core/draw/dcontact.cxx47
-rw-r--r--sw/source/core/draw/dflyobj.cxx14
-rw-r--r--sw/source/core/draw/dobjfac.cxx2
-rw-r--r--sw/source/core/draw/dpage.cxx52
-rw-r--r--sw/source/core/draw/dview.cxx7
-rw-r--r--sw/source/core/frmedt/fecopy.cxx5
-rw-r--r--sw/source/core/frmedt/feshview.cxx21
-rw-r--r--sw/source/core/inc/dflyobj.hxx7
-rw-r--r--sw/source/core/inc/dview.hxx5
-rw-r--r--sw/source/core/layout/atrfrm.cxx6
-rw-r--r--sw/source/core/layout/paintfrm.cxx2
-rw-r--r--sw/source/core/view/viewimp.cxx5
-rw-r--r--sw/source/filter/html/htmldrawreader.cxx8
-rw-r--r--sw/source/filter/ww8/wrtw8esh.cxx6
-rw-r--r--sw/source/filter/ww8/wrtww8gr.cxx15
-rw-r--r--sw/source/filter/ww8/ww8graf.cxx52
-rw-r--r--sw/source/filter/ww8/ww8par.cxx28
-rw-r--r--sw/source/filter/ww8/ww8par4.cxx16
-rw-r--r--sw/source/filter/xml/swxml.cxx6
-rw-r--r--sw/source/uibase/ribbar/concustomshape.cxx2
-rw-r--r--sw/source/uibase/ribbar/conrect.cxx2
-rw-r--r--sw/source/uibase/shells/grfshex.cxx5
-rw-r--r--sw/source/uibase/uno/unotxdoc.cxx6
-rw-r--r--xmloff/source/draw/xexptran.cxx39
341 files changed, 5489 insertions, 6099 deletions
diff --git a/basctl/source/dlged/dlged.cxx b/basctl/source/dlged/dlged.cxx
index 186e83521b05..ec3a2e0c3045 100644
--- a/basctl/source/dlged/dlged.cxx
+++ b/basctl/source/dlged/dlged.cxx
@@ -347,7 +347,7 @@ void DlgEditor::SetDialog( const uno::Reference< container::XNameContainer >& xU
m_xUnoControlDialogModel = xUnoControlDialogModel;
// create dialog form
- pDlgEdForm = new DlgEdForm(*pDlgEdModel, *this);
+ pDlgEdForm = new DlgEdForm(*this);
uno::Reference< awt::XControlModel > xDlgMod( m_xUnoControlDialogModel , uno::UNO_QUERY );
pDlgEdForm->SetUnoControlModel(xDlgMod);
static_cast<DlgEdPage*>(pDlgEdModel->GetPage(0))->SetDlgEdForm( pDlgEdForm );
@@ -391,7 +391,7 @@ void DlgEditor::SetDialog( const uno::Reference< container::XNameContainer >& xU
Any aCtrl = xNameAcc->getByName( indexToName.second );
Reference< css::awt::XControlModel > xCtrlModel;
aCtrl >>= xCtrlModel;
- DlgEdObj* pCtrlObj = new DlgEdObj(*pDlgEdModel);
+ DlgEdObj* pCtrlObj = new DlgEdObj();
pCtrlObj->SetUnoControlModel( xCtrlModel );
pCtrlObj->SetDlgEdForm( pDlgEdForm );
pDlgEdForm->AddChild( pCtrlObj );
@@ -609,11 +609,7 @@ void DlgEditor::SetInsertObj( sal_uInt16 eObj )
void DlgEditor::CreateDefaultObject()
{
// create object by factory
- SdrObject* pObj = SdrObjFactory::MakeNewObject(
- *pDlgEdModel,
- pDlgEdView->GetCurrentObjInventor(),
- pDlgEdView->GetCurrentObjIdentifier(),
- pDlgEdPage);
+ SdrObject* pObj = SdrObjFactory::MakeNewObject( pDlgEdView->GetCurrentObjInventor(), pDlgEdView->GetCurrentObjIdentifier(), pDlgEdPage );
if (DlgEdObj* pDlgEdObj = dynamic_cast<DlgEdObj*>(pObj))
{
@@ -924,7 +920,7 @@ void DlgEditor::Paste()
Reference< util::XCloneable > xClone( xCM, uno::UNO_QUERY );
Reference< awt::XControlModel > xCtrlModel( xClone->createClone(), uno::UNO_QUERY );
- DlgEdObj* pCtrlObj = new DlgEdObj(*pDlgEdModel);
+ DlgEdObj* pCtrlObj = new DlgEdObj();
pCtrlObj->SetDlgEdForm(pDlgEdForm); // set parent form
pDlgEdForm->AddChild(pCtrlObj); // add child to parent form
pCtrlObj->SetUnoControlModel( xCtrlModel ); // set control model
diff --git a/basctl/source/dlged/dlgedfac.cxx b/basctl/source/dlged/dlgedfac.cxx
index be8e592fbd1f..a3e7b62ae14e 100644
--- a/basctl/source/dlged/dlgedfac.cxx
+++ b/basctl/source/dlged/dlgedfac.cxx
@@ -69,27 +69,27 @@ IMPL_LINK( DlgEdFactory, MakeObject, SdrObjCreatorParams, aParams, SdrObject* )
switch( aParams.nObjIdentifier )
{
case OBJ_DLG_PUSHBUTTON:
- pNewObj = new DlgEdObj(aParams.rSdrModel, "com.sun.star.awt.UnoControlButtonModel", xDialogSFact );
+ pNewObj = new DlgEdObj( "com.sun.star.awt.UnoControlButtonModel", xDialogSFact );
break;
case OBJ_DLG_RADIOBUTTON:
- pNewObj = new DlgEdObj(aParams.rSdrModel, "com.sun.star.awt.UnoControlRadioButtonModel", xDialogSFact );
+ pNewObj = new DlgEdObj( "com.sun.star.awt.UnoControlRadioButtonModel", xDialogSFact );
break;
case OBJ_DLG_FORMRADIO:
- pNewObj = new DlgEdObj(aParams.rSdrModel, "com.sun.star.form.component.RadioButton", xDialogSFact );
+ pNewObj = new DlgEdObj( "com.sun.star.form.component.RadioButton", xDialogSFact );
static_cast< DlgEdObj* >( pNewObj )->MakeDataAware( mxModel );
break;
case OBJ_DLG_CHECKBOX:
- pNewObj = new DlgEdObj(aParams.rSdrModel, "com.sun.star.awt.UnoControlCheckBoxModel", xDialogSFact );
+ pNewObj = new DlgEdObj( "com.sun.star.awt.UnoControlCheckBoxModel", xDialogSFact );
break;
case OBJ_DLG_FORMCHECK:
- pNewObj = new DlgEdObj(aParams.rSdrModel, "com.sun.star.form.component.CheckBox", xDialogSFact );
+ pNewObj = new DlgEdObj( "com.sun.star.form.component.CheckBox", xDialogSFact );
static_cast< DlgEdObj* >( pNewObj )->MakeDataAware( mxModel );
break;
case OBJ_DLG_LISTBOX:
- pNewObj = new DlgEdObj(aParams.rSdrModel, "com.sun.star.awt.UnoControlListBoxModel", xDialogSFact );
+ pNewObj = new DlgEdObj( "com.sun.star.awt.UnoControlListBoxModel", xDialogSFact );
break;
case OBJ_DLG_FORMLIST:
- pNewObj = new DlgEdObj(aParams.rSdrModel, "com.sun.star.form.component.ListBox", xDialogSFact );
+ pNewObj = new DlgEdObj( "com.sun.star.form.component.ListBox", xDialogSFact );
static_cast< DlgEdObj* >( pNewObj )->MakeDataAware( mxModel );
break;
case OBJ_DLG_FORMCOMBO:
@@ -97,10 +97,10 @@ IMPL_LINK( DlgEdFactory, MakeObject, SdrObjCreatorParams, aParams, SdrObject* )
{
DlgEdObj* pNew = nullptr;
if ( aParams.nObjIdentifier == OBJ_DLG_COMBOBOX )
- pNew = new DlgEdObj(aParams.rSdrModel, "com.sun.star.awt.UnoControlComboBoxModel", xDialogSFact );
+ pNew = new DlgEdObj( "com.sun.star.awt.UnoControlComboBoxModel", xDialogSFact );
else
{
- pNew = new DlgEdObj(aParams.rSdrModel, "com.sun.star.form.component.ComboBox", xDialogSFact );
+ pNew = new DlgEdObj( "com.sun.star.form.component.ComboBox", xDialogSFact );
pNew->MakeDataAware( mxModel );
}
pNewObj = pNew;
@@ -118,25 +118,25 @@ IMPL_LINK( DlgEdFactory, MakeObject, SdrObjCreatorParams, aParams, SdrObject* )
}
break;
case OBJ_DLG_GROUPBOX:
- pNewObj = new DlgEdObj(aParams.rSdrModel, "com.sun.star.awt.UnoControlGroupBoxModel", xDialogSFact );
+ pNewObj = new DlgEdObj( "com.sun.star.awt.UnoControlGroupBoxModel", xDialogSFact );
break;
case OBJ_DLG_EDIT:
- pNewObj = new DlgEdObj(aParams.rSdrModel, "com.sun.star.awt.UnoControlEditModel", xDialogSFact );
+ pNewObj = new DlgEdObj( "com.sun.star.awt.UnoControlEditModel", xDialogSFact );
break;
case OBJ_DLG_FIXEDTEXT:
- pNewObj = new DlgEdObj(aParams.rSdrModel, "com.sun.star.awt.UnoControlFixedTextModel", xDialogSFact );
+ pNewObj = new DlgEdObj( "com.sun.star.awt.UnoControlFixedTextModel", xDialogSFact );
break;
case OBJ_DLG_IMAGECONTROL:
- pNewObj = new DlgEdObj(aParams.rSdrModel, "com.sun.star.awt.UnoControlImageControlModel", xDialogSFact );
+ pNewObj = new DlgEdObj( "com.sun.star.awt.UnoControlImageControlModel", xDialogSFact );
break;
case OBJ_DLG_PROGRESSBAR:
- pNewObj = new DlgEdObj(aParams.rSdrModel, "com.sun.star.awt.UnoControlProgressBarModel", xDialogSFact );
+ pNewObj = new DlgEdObj( "com.sun.star.awt.UnoControlProgressBarModel", xDialogSFact );
break;
case OBJ_DLG_HSCROLLBAR:
- pNewObj = new DlgEdObj(aParams.rSdrModel, "com.sun.star.awt.UnoControlScrollBarModel", xDialogSFact );
+ pNewObj = new DlgEdObj( "com.sun.star.awt.UnoControlScrollBarModel", xDialogSFact );
break;
case OBJ_DLG_FORMHSCROLL:
- pNewObj = new DlgEdObj(aParams.rSdrModel, "com.sun.star.form.component.ScrollBar", xDialogSFact );
+ pNewObj = new DlgEdObj( "com.sun.star.form.component.ScrollBar", xDialogSFact );
static_cast< DlgEdObj* >( pNewObj )->MakeDataAware( mxModel );
break;
case OBJ_DLG_FORMVSCROLL:
@@ -144,10 +144,10 @@ IMPL_LINK( DlgEdFactory, MakeObject, SdrObjCreatorParams, aParams, SdrObject* )
{
DlgEdObj* pNew = nullptr;
if ( aParams.nObjIdentifier == OBJ_DLG_VSCROLLBAR )
- pNew = new DlgEdObj(aParams.rSdrModel, "com.sun.star.awt.UnoControlScrollBarModel", xDialogSFact );
+ pNew = new DlgEdObj( "com.sun.star.awt.UnoControlScrollBarModel", xDialogSFact );
else
{
- pNew = new DlgEdObj(aParams.rSdrModel, "com.sun.star.form.component.ScrollBar", xDialogSFact );
+ pNew = new DlgEdObj( "com.sun.star.form.component.ScrollBar", xDialogSFact );
pNew->MakeDataAware( mxModel );
}
pNewObj = pNew;
@@ -165,11 +165,11 @@ IMPL_LINK( DlgEdFactory, MakeObject, SdrObjCreatorParams, aParams, SdrObject* )
}
} break;
case OBJ_DLG_HFIXEDLINE:
- pNewObj = new DlgEdObj(aParams.rSdrModel, "com.sun.star.awt.UnoControlFixedLineModel", xDialogSFact );
+ pNewObj = new DlgEdObj( "com.sun.star.awt.UnoControlFixedLineModel", xDialogSFact );
break;
case OBJ_DLG_VFIXEDLINE:
{
- DlgEdObj* pNew = new DlgEdObj(aParams.rSdrModel, "com.sun.star.awt.UnoControlFixedLineModel", xDialogSFact );
+ DlgEdObj* pNew = new DlgEdObj( "com.sun.star.awt.UnoControlFixedLineModel", xDialogSFact );
pNewObj = pNew;
// set vertical orientation
try
@@ -185,35 +185,35 @@ IMPL_LINK( DlgEdFactory, MakeObject, SdrObjCreatorParams, aParams, SdrObject* )
}
} break;
case OBJ_DLG_DATEFIELD:
- pNewObj = new DlgEdObj(aParams.rSdrModel, "com.sun.star.awt.UnoControlDateFieldModel", xDialogSFact );
+ pNewObj = new DlgEdObj( "com.sun.star.awt.UnoControlDateFieldModel", xDialogSFact );
break;
case OBJ_DLG_TIMEFIELD:
- pNewObj = new DlgEdObj(aParams.rSdrModel, "com.sun.star.awt.UnoControlTimeFieldModel", xDialogSFact );
+ pNewObj = new DlgEdObj( "com.sun.star.awt.UnoControlTimeFieldModel", xDialogSFact );
break;
case OBJ_DLG_NUMERICFIELD:
- pNewObj = new DlgEdObj(aParams.rSdrModel, "com.sun.star.awt.UnoControlNumericFieldModel", xDialogSFact );
+ pNewObj = new DlgEdObj( "com.sun.star.awt.UnoControlNumericFieldModel", xDialogSFact );
break;
case OBJ_DLG_CURRENCYFIELD:
- pNewObj = new DlgEdObj(aParams.rSdrModel, "com.sun.star.awt.UnoControlCurrencyFieldModel", xDialogSFact );
+ pNewObj = new DlgEdObj( "com.sun.star.awt.UnoControlCurrencyFieldModel", xDialogSFact );
break;
case OBJ_DLG_FORMATTEDFIELD:
- pNewObj = new DlgEdObj(aParams.rSdrModel, "com.sun.star.awt.UnoControlFormattedFieldModel", xDialogSFact );
+ pNewObj = new DlgEdObj( "com.sun.star.awt.UnoControlFormattedFieldModel", xDialogSFact );
break;
case OBJ_DLG_PATTERNFIELD:
- pNewObj = new DlgEdObj(aParams.rSdrModel, "com.sun.star.awt.UnoControlPatternFieldModel", xDialogSFact );
+ pNewObj = new DlgEdObj( "com.sun.star.awt.UnoControlPatternFieldModel", xDialogSFact );
break;
case OBJ_DLG_FILECONTROL:
- pNewObj = new DlgEdObj(aParams.rSdrModel, "com.sun.star.awt.UnoControlFileControlModel", xDialogSFact );
+ pNewObj = new DlgEdObj( "com.sun.star.awt.UnoControlFileControlModel", xDialogSFact );
break;
case OBJ_DLG_SPINBUTTON:
- pNewObj = new DlgEdObj(aParams.rSdrModel, "com.sun.star.awt.UnoControlSpinButtonModel", xDialogSFact );
+ pNewObj = new DlgEdObj( "com.sun.star.awt.UnoControlSpinButtonModel", xDialogSFact );
break;
case OBJ_DLG_FORMSPIN:
- pNewObj = new DlgEdObj(aParams.rSdrModel, "com.sun.star.form.component.SpinButton", xDialogSFact );
+ pNewObj = new DlgEdObj( "com.sun.star.form.component.SpinButton", xDialogSFact );
static_cast< DlgEdObj* >( pNewObj )->MakeDataAware( mxModel );
break;
case OBJ_DLG_TREECONTROL:
- pNewObj = new DlgEdObj(aParams.rSdrModel, "com.sun.star.awt.tree.TreeControlModel", xDialogSFact );
+ pNewObj = new DlgEdObj( "com.sun.star.awt.tree.TreeControlModel", xDialogSFact );
break;
}
}
diff --git a/basctl/source/dlged/dlgedobj.cxx b/basctl/source/dlged/dlgedobj.cxx
index 44d7b7a10d55..41158fed7273 100644
--- a/basctl/source/dlged/dlgedobj.cxx
+++ b/basctl/source/dlged/dlgedobj.cxx
@@ -63,20 +63,18 @@ DlgEditor& DlgEdObj::GetDialogEditor ()
return pDlgEdForm->GetDlgEditor();
}
-DlgEdObj::DlgEdObj(SdrModel& rSdrModel)
-: SdrUnoObj(rSdrModel, OUString())
- ,bIsListening(false)
- ,pDlgEdForm( nullptr )
+DlgEdObj::DlgEdObj()
+ :SdrUnoObj(OUString())
+ ,bIsListening(false)
+ ,pDlgEdForm( nullptr )
{
}
-DlgEdObj::DlgEdObj(
- SdrModel& rSdrModel,
- const OUString& rModelName,
- const css::uno::Reference< css::lang::XMultiServiceFactory >& rxSFac)
-: SdrUnoObj(rSdrModel, rModelName, rxSFac)
- ,bIsListening(false)
- ,pDlgEdForm( nullptr )
+DlgEdObj::DlgEdObj(const OUString& rModelName,
+ const css::uno::Reference< css::lang::XMultiServiceFactory >& rxSFac)
+ :SdrUnoObj(rModelName, rxSFac)
+ ,bIsListening(false)
+ ,pDlgEdForm( nullptr )
{
}
@@ -502,7 +500,7 @@ void DlgEdObj::UpdateStep()
sal_Int32 nCurStep = GetDlgEdForm()->GetStep();
sal_Int32 nStep = GetStep();
- SdrLayerAdmin& rLayerAdmin(getSdrModelFromSdrObject().GetLayerAdmin());
+ SdrLayerAdmin& rLayerAdmin = GetModel()->GetLayerAdmin();
SdrLayerID nHiddenLayerId = rLayerAdmin.GetLayerID( "HiddenLayer" );
SdrLayerID nControlLayerId = rLayerAdmin.GetLayerID( rLayerAdmin.GetControlLayerName() );
@@ -606,7 +604,7 @@ void DlgEdObj::TabIndexChange( const beans::PropertyChangeEvent& evt )
}
// reorder objects in drawing page
- getSdrModelFromSdrObject().GetPage(0)->SetObjectOrdNum( nOldTabIndex + 1, nNewTabIndex + 1 );
+ GetModel()->GetPage(0)->SetObjectOrdNum( nOldTabIndex + 1, nNewTabIndex + 1 );
pForm->UpdateTabOrderAndGroups();
}
@@ -886,9 +884,9 @@ void DlgEdObj::clonedFrom(const DlgEdObj* _pSource)
StartListening();
}
-DlgEdObj* DlgEdObj::Clone(SdrModel* pTargetModel) const
+DlgEdObj* DlgEdObj::Clone() const
{
- DlgEdObj* pDlgEdObj = CloneHelper< DlgEdObj >(pTargetModel);
+ DlgEdObj* pDlgEdObj = CloneHelper< DlgEdObj >();
DBG_ASSERT( pDlgEdObj != nullptr, "DlgEdObj::Clone: invalid clone!" );
if ( pDlgEdObj )
pDlgEdObj->clonedFrom( this );
@@ -900,9 +898,7 @@ SdrObject* DlgEdObj::getFullDragClone() const
{
// no need to really add the clone for dragging, it's a temporary
// object
- SdrObject* pObj = new SdrUnoObj(
- getSdrModelFromSdrObject(),
- OUString());
+ SdrObject* pObj = new SdrUnoObj(OUString());
*pObj = *static_cast<const SdrUnoObj*>(this);
return pObj;
@@ -1197,10 +1193,8 @@ void DlgEdObj::SetLayer(SdrLayerID nLayer)
}
}
-DlgEdForm::DlgEdForm(
- SdrModel& rSdrModel,
- DlgEditor& rDlgEditor_)
-: DlgEdObj(rSdrModel),
+
+DlgEdForm::DlgEdForm (DlgEditor& rDlgEditor_) :
rDlgEditor(rDlgEditor_)
{
}
diff --git a/basctl/source/dlged/dlgedpage.cxx b/basctl/source/dlged/dlgedpage.cxx
index da9ba12ef1b0..211aa863a12f 100644
--- a/basctl/source/dlged/dlgedpage.cxx
+++ b/basctl/source/dlged/dlgedpage.cxx
@@ -27,8 +27,14 @@ namespace basctl
DlgEdPage::DlgEdPage(DlgEdModel& rModel, bool bMasterPage)
-: SdrPage(rModel, bMasterPage)
- ,pDlgEdForm(nullptr)
+ : SdrPage(rModel, bMasterPage)
+ , pDlgEdForm(nullptr)
+{
+}
+
+DlgEdPage::DlgEdPage(const DlgEdPage& rSrcPage)
+ : SdrPage(rSrcPage)
+ , pDlgEdForm(nullptr)
{
}
@@ -37,15 +43,23 @@ DlgEdPage::~DlgEdPage()
Clear();
}
+
+SdrPage* DlgEdPage::Clone() const
+{
+ return Clone(nullptr);
+}
+
SdrPage* DlgEdPage::Clone(SdrModel* const pNewModel) const
{
- DlgEdModel& rDlgEdModel(static_cast< DlgEdModel& >(nullptr == pNewModel ? getSdrModelFromSdrPage() : *pNewModel));
- DlgEdPage* pClonedDlgEdPage(
- new DlgEdPage(
- rDlgEdModel,
- IsMasterPage()));
- pClonedDlgEdPage->SdrPage::lateInit(*this);
- return pClonedDlgEdPage;
+ DlgEdPage* const pNewPage = new DlgEdPage( *this );
+ DlgEdModel* pDlgEdModel = nullptr;
+ if ( pNewModel )
+ {
+ pDlgEdModel = dynamic_cast<DlgEdModel*>( pNewModel );
+ assert(pDlgEdModel);
+ }
+ pNewPage->lateInit( *this, pDlgEdModel );
+ return pNewPage;
}
diff --git a/basctl/source/dlged/dlgedview.cxx b/basctl/source/dlged/dlgedview.cxx
index 12d2d57bb99a..aa7f1e4bfbff 100644
--- a/basctl/source/dlged/dlgedview.cxx
+++ b/basctl/source/dlged/dlgedview.cxx
@@ -31,11 +31,9 @@
namespace basctl
{
-DlgEdView::DlgEdView(
- SdrModel& rSdrModel,
- OutputDevice& rOut,
- DlgEditor& rEditor)
-: SdrView(rSdrModel, &rOut),
+
+DlgEdView::DlgEdView (SdrModel& rModel, OutputDevice& rOut, DlgEditor& rEditor) :
+ SdrView(&rModel, &rOut),
rDlgEditor(rEditor)
{
SetBufferedOutputAllowed(true);
diff --git a/basctl/source/inc/dlgedobj.hxx b/basctl/source/inc/dlgedobj.hxx
index 4660c29d2682..58f60447c9eb 100644
--- a/basctl/source/inc/dlgedobj.hxx
+++ b/basctl/source/inc/dlgedobj.hxx
@@ -57,11 +57,9 @@ private:
DlgEditor& GetDialogEditor ();
protected:
- DlgEdObj(SdrModel& rSdrModel);
- DlgEdObj(
- SdrModel& rSdrModel,
- const OUString& rModelName,
- const css::uno::Reference< css::lang::XMultiServiceFactory >& rxSFac);
+ DlgEdObj();
+ DlgEdObj(const OUString& rModelName,
+ const css::uno::Reference< css::lang::XMultiServiceFactory >& rxSFac);
virtual void NbcMove( const Size& rSize ) override;
virtual void NbcResize(const Point& rRef, const Fraction& xFact, const Fraction& yFact) override;
@@ -96,7 +94,7 @@ public:
virtual SdrInventor GetObjInventor() const override;
virtual sal_uInt16 GetObjIdentifier() const override;
- virtual DlgEdObj* Clone(SdrModel* pTargetModel = nullptr) const override; // not working yet
+ virtual DlgEdObj* Clone() const override; // not working yet
void clonedFrom(const DlgEdObj* _pSource); // not working yet
// FullDrag support
@@ -154,9 +152,7 @@ private:
mutable ::boost::optional< css::awt::DeviceInfo > mpDeviceInfo;
private:
- explicit DlgEdForm(
- SdrModel& rSdrModel,
- DlgEditor&);
+ explicit DlgEdForm (DlgEditor&);
protected:
virtual void NbcMove( const Size& rSize ) override;
diff --git a/basctl/source/inc/dlgedpage.hxx b/basctl/source/inc/dlgedpage.hxx
index 164f725f85ee..814826e02f77 100644
--- a/basctl/source/inc/dlgedpage.hxx
+++ b/basctl/source/inc/dlgedpage.hxx
@@ -35,7 +35,6 @@ class DlgEdForm;
class DlgEdPage final : public SdrPage
{
DlgEdPage& operator=(const DlgEdPage&) = delete;
- DlgEdPage(const DlgEdPage&) = delete;
DlgEdForm* pDlgEdForm;
@@ -44,12 +43,16 @@ public:
explicit DlgEdPage( DlgEdModel& rModel, bool bMasterPage = false );
virtual ~DlgEdPage() override;
- virtual SdrPage* Clone(SdrModel* pNewModel = nullptr) const override;
+ virtual SdrPage* Clone() const override;
+ virtual SdrPage* Clone( SdrModel* pNewModel ) const override;
void SetDlgEdForm( DlgEdForm* pForm ) { pDlgEdForm = pForm; }
DlgEdForm* GetDlgEdForm() const { return pDlgEdForm; }
virtual SdrObject* SetObjectOrdNum(size_t nOldObjNum, size_t nNewObjNum) override;
+
+private:
+ DlgEdPage(const DlgEdPage& rSrcPage);
};
} // namespace basctl
diff --git a/basctl/source/inc/dlgedview.hxx b/basctl/source/inc/dlgedview.hxx
index c194c1216d11..511abfc841e3 100644
--- a/basctl/source/inc/dlgedview.hxx
+++ b/basctl/source/inc/dlgedview.hxx
@@ -39,11 +39,7 @@ private:
public:
- DlgEdView(
- SdrModel& rSdrModel,
- OutputDevice& rOut,
- DlgEditor& rEditor);
-
+ DlgEdView (SdrModel& rModel, OutputDevice& rOut, DlgEditor& rEditor);
virtual ~DlgEdView() override;
virtual void MarkListHasChanged() override;
diff --git a/basegfx/Library_basegfx.mk b/basegfx/Library_basegfx.mk
index de744b5a15ce..087e4a081419 100644
--- a/basegfx/Library_basegfx.mk
+++ b/basegfx/Library_basegfx.mk
@@ -38,7 +38,6 @@ $(eval $(call gb_Library_add_exception_objects,basegfx,\
basegfx/source/matrix/b2dhommatrix \
basegfx/source/matrix/b2dhommatrixtools \
basegfx/source/matrix/b3dhommatrix \
- basegfx/source/matrix/b3dhommatrixtools \
basegfx/source/numeric/ftools \
basegfx/source/pixel/bpixel \
basegfx/source/point/b2dpoint \
diff --git a/basegfx/source/matrix/b2dhommatrix.cxx b/basegfx/source/matrix/b2dhommatrix.cxx
index 466e9037d149..9f7d5bff0156 100644
--- a/basegfx/source/matrix/b2dhommatrix.cxx
+++ b/basegfx/source/matrix/b2dhommatrix.cxx
@@ -115,11 +115,6 @@ namespace basegfx
bool B2DHomMatrix::invert()
{
- if(isIdentity())
- {
- return true;
- }
-
Impl2DHomMatrix aWork(*mpImpl);
std::unique_ptr<sal_uInt16[]> pIndex( new sal_uInt16[Impl2DHomMatrix_Base::getEdgeLength()] );
sal_Int16 nParity;
@@ -218,11 +213,6 @@ namespace basegfx
}
}
- void B2DHomMatrix::translate(const B2DTuple& rTuple)
- {
- translate(rTuple.getX(), rTuple.getY());
- }
-
void B2DHomMatrix::scale(double fX, double fY)
{
const double fOne(1.0);
@@ -238,11 +228,6 @@ namespace basegfx
}
}
- void B2DHomMatrix::scale(const B2DTuple& rTuple)
- {
- scale(rTuple.getX(), rTuple.getY());
- }
-
void B2DHomMatrix::shearX(double fSx)
{
// #i76239# do not test against 1.0, but against 0.0. We are talking about a value not on the diagonal (!)
diff --git a/basegfx/source/matrix/b3dhommatrix.cxx b/basegfx/source/matrix/b3dhommatrix.cxx
index b55dd079b514..6cfd054992ec 100644
--- a/basegfx/source/matrix/b3dhommatrix.cxx
+++ b/basegfx/source/matrix/b3dhommatrix.cxx
@@ -203,11 +203,6 @@ namespace basegfx
}
}
- void B3DHomMatrix::rotate(const B3DTuple& rRotation)
- {
- rotate(rRotation.getX(), rRotation.getY(), rRotation.getZ());
- }
-
void B3DHomMatrix::translate(double fX, double fY, double fZ)
{
if(!fTools::equalZero(fX) || !fTools::equalZero(fY) || !fTools::equalZero(fZ))
@@ -222,11 +217,6 @@ namespace basegfx
}
}
- void B3DHomMatrix::translate(const B3DTuple& rRotation)
- {
- translate(rRotation.getX(), rRotation.getY(), rRotation.getZ());
- }
-
void B3DHomMatrix::scale(double fX, double fY, double fZ)
{
const double fOne(1.0);
@@ -243,11 +233,6 @@ namespace basegfx
}
}
- void B3DHomMatrix::scale(const B3DTuple& rRotation)
- {
- scale(rRotation.getX(), rRotation.getY(), rRotation.getZ());
- }
-
void B3DHomMatrix::shearXY(double fSx, double fSy)
{
// #i76239# do not test against 1.0, but against 0.0. We are talking about a value not on the diagonal (!)
diff --git a/basegfx/source/matrix/b3dhommatrixtools.cxx b/basegfx/source/matrix/b3dhommatrixtools.cxx
deleted file mode 100755
index 677c978545ee..000000000000
--- a/basegfx/source/matrix/b3dhommatrixtools.cxx
+++ /dev/null
@@ -1,76 +0,0 @@
-/* -*- 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 <basegfx/matrix/b3dhommatrixtools.hxx>
-
-namespace basegfx
-{
- namespace utils
- {
- B3DHomMatrix UnoHomogenMatrixToB3DHomMatrix(
- const com::sun::star::drawing::HomogenMatrix& rMatrixIn)
- {
- B3DHomMatrix aRetval;
-
- aRetval.set(0, 0, rMatrixIn.Line1.Column1);
- aRetval.set(0, 1, rMatrixIn.Line1.Column2);
- aRetval.set(0, 2, rMatrixIn.Line1.Column3);
- aRetval.set(0, 3, rMatrixIn.Line1.Column4);
- aRetval.set(1, 0, rMatrixIn.Line2.Column1);
- aRetval.set(1, 1, rMatrixIn.Line2.Column2);
- aRetval.set(1, 2, rMatrixIn.Line2.Column3);
- aRetval.set(1, 3, rMatrixIn.Line2.Column4);
- aRetval.set(2, 0, rMatrixIn.Line3.Column1);
- aRetval.set(2, 1, rMatrixIn.Line3.Column2);
- aRetval.set(2, 2, rMatrixIn.Line3.Column3);
- aRetval.set(2, 3, rMatrixIn.Line3.Column4);
- aRetval.set(3, 0, rMatrixIn.Line4.Column1);
- aRetval.set(3, 1, rMatrixIn.Line4.Column2);
- aRetval.set(3, 2, rMatrixIn.Line4.Column3);
- aRetval.set(3, 3, rMatrixIn.Line4.Column4);
-
- return aRetval;
- }
-
- void B3DHomMatrixToUnoHomogenMatrix(
- const B3DHomMatrix& rMatrixIn,
- com::sun::star::drawing::HomogenMatrix& rMatrixOut)
- {
- rMatrixOut.Line1.Column1 = rMatrixIn.get(0, 0);
- rMatrixOut.Line1.Column2 = rMatrixIn.get(0, 1);
- rMatrixOut.Line1.Column3 = rMatrixIn.get(0, 2);
- rMatrixOut.Line1.Column4 = rMatrixIn.get(0, 3);
- rMatrixOut.Line2.Column1 = rMatrixIn.get(1, 0);
- rMatrixOut.Line2.Column2 = rMatrixIn.get(1, 1);
- rMatrixOut.Line2.Column3 = rMatrixIn.get(1, 2);
- rMatrixOut.Line2.Column4 = rMatrixIn.get(1, 3);
- rMatrixOut.Line3.Column1 = rMatrixIn.get(2, 0);
- rMatrixOut.Line3.Column2 = rMatrixIn.get(2, 1);
- rMatrixOut.Line3.Column3 = rMatrixIn.get(2, 2);
- rMatrixOut.Line3.Column4 = rMatrixIn.get(2, 3);
- rMatrixOut.Line4.Column1 = rMatrixIn.get(3, 0);
- rMatrixOut.Line4.Column2 = rMatrixIn.get(3, 1);
- rMatrixOut.Line4.Column3 = rMatrixIn.get(3, 2);
- rMatrixOut.Line4.Column4 = rMatrixIn.get(3, 3);
- }
-
- } // end of namespace tools
-} // end of namespace basegfx
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/basegfx/source/numeric/ftools.cxx b/basegfx/source/numeric/ftools.cxx
index d1eca66ca2fc..994bd29e30eb 100644
--- a/basegfx/source/numeric/ftools.cxx
+++ b/basegfx/source/numeric/ftools.cxx
@@ -45,59 +45,6 @@ namespace basegfx
}
}
- double snapToZeroRange(double v, double fWidth)
- {
- if(fTools::equalZero(fWidth))
- {
- // with no range all snaps to range bound
- return 0.0;
- }
- else
- {
- if(v < 0.0 || v > fWidth)
- {
- double fRetval(fmod(v, fWidth));
-
- if(fRetval < 0.0)
- {
- fRetval += fWidth;
- }
-
- return fRetval;
- }
- else
- {
- return v;
- }
- }
- }
-
- double snapToRange(double v, double fLow, double fHigh)
- {
- if(fTools::equal(fLow, fHigh))
- {
- // with no range all snaps to range bound
- return 0.0;
- }
- else
- {
- if(fLow > fHigh)
- {
- // correct range order. Evtl. assert this (?)
- std::swap(fLow, fHigh);
- }
-
- if(v < fLow || v > fHigh)
- {
- return snapToZeroRange(v - fLow, fHigh - fLow) + fLow;
- }
- else
- {
- return v;
- }
- }
- }
-
double normalizeToRange(double v, const double fRange)
{
if(fTools::lessOrEqual(fRange, 0.0))
diff --git a/basegfx/source/range/b2drange.cxx b/basegfx/source/range/b2drange.cxx
index 331c5431bcf3..2f4a3e08e69e 100644
--- a/basegfx/source/range/b2drange.cxx
+++ b/basegfx/source/range/b2drange.cxx
@@ -51,19 +51,6 @@ namespace basegfx
}
}
- B2DRange& B2DRange::operator*=( const ::basegfx::B2DHomMatrix& rMat )
- {
- transform(rMat);
- return *this;
- }
-
- const B2DRange& B2DRange::getUnitB2DRange()
- {
- static const B2DRange aUnitB2DRange(0.0, 0.0, 1.0, 1.0);
-
- return aUnitB2DRange;
- }
-
B2IRange fround(const B2DRange& rRange)
{
return rRange.isEmpty() ?
@@ -71,13 +58,6 @@ namespace basegfx
B2IRange(fround(rRange.getMinimum()),
fround(rRange.getMaximum()));
}
-
- B2DRange operator*( const ::basegfx::B2DHomMatrix& rMat, const B2DRange& rB2DRange )
- {
- B2DRange aRes( rB2DRange );
- return aRes *= rMat;
- }
-
} // end of namespace basegfx
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/basegfx/source/range/b3drange.cxx b/basegfx/source/range/b3drange.cxx
index 879dbb0f9974..f779f1855d79 100644
--- a/basegfx/source/range/b3drange.cxx
+++ b/basegfx/source/range/b3drange.cxx
@@ -40,25 +40,6 @@ namespace basegfx
}
}
- B3DRange& B3DRange::operator*=( const ::basegfx::B3DHomMatrix& rMat )
- {
- transform(rMat);
- return *this;
- }
-
- const B3DRange& B3DRange::getUnitB3DRange()
- {
- static const B3DRange aUnitB3DRange(0.0, 0.0, 0.0, 1.0, 1.0, 1.0);
-
- return aUnitB3DRange;
- }
-
- B3DRange operator*( const ::basegfx::B3DHomMatrix& rMat, const B3DRange& rB3DRange )
- {
- B3DRange aRes( rB3DRange );
- return aRes *= rMat;
- }
-
} // end of namespace basegfx
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/chart2/source/controller/drawinglayer/DrawViewWrapper.cxx b/chart2/source/controller/drawinglayer/DrawViewWrapper.cxx
index b86980f47782..5efd976dcef5 100644
--- a/chart2/source/controller/drawinglayer/DrawViewWrapper.cxx
+++ b/chart2/source/controller/drawinglayer/DrawViewWrapper.cxx
@@ -96,13 +96,11 @@ OutputDevice * lcl_GetParentRefDevice( const uno::Reference< frame::XModel > & x
}
-DrawViewWrapper::DrawViewWrapper(
- SdrModel& rSdrModel,
- OutputDevice* pOut)
-: E3dView(rSdrModel, pOut)
- ,m_pMarkHandleProvider(nullptr)
- ,m_apOutliner(SdrMakeOutliner(OutlinerMode::TextObject, rSdrModel))
- ,m_bRestoreMapMode( false )
+DrawViewWrapper::DrawViewWrapper( SdrModel* pSdrModel, OutputDevice* pOut)
+ : E3dView(pSdrModel, pOut)
+ , m_pMarkHandleProvider(nullptr)
+ , m_apOutliner(SdrMakeOutliner(OutlinerMode::TextObject, *pSdrModel))
+ , m_bRestoreMapMode( false )
{
SetBufferedOutputAllowed(true);
SetBufferedOverlayAllowed(true);
diff --git a/chart2/source/controller/drawinglayer/ViewElementListProvider.cxx b/chart2/source/controller/drawinglayer/ViewElementListProvider.cxx
index 500488aaa39c..954426f925a5 100644
--- a/chart2/source/controller/drawinglayer/ViewElementListProvider.cxx
+++ b/chart2/source/controller/drawinglayer/ViewElementListProvider.cxx
@@ -161,7 +161,7 @@ Graphic ViewElementListProvider::GetSymbolGraphic( sal_Int32 nStandardSymbol, co
SdrPage* pPage = new SdrPage( *pModel, false );
pPage->SetSize(Size(1000,1000));
pModel->InsertPage( pPage, 0 );
- std::unique_ptr<SdrView> pView( new SdrView( *pModel.get(), pVDev ) );
+ std::unique_ptr<SdrView> pView( new SdrView( pModel.get(), pVDev ) );
pView->hideMarkHandles();
SdrPageView* pPageView = pView->ShowSdrPage(pPage);
diff --git a/chart2/source/controller/inc/DrawViewWrapper.hxx b/chart2/source/controller/inc/DrawViewWrapper.hxx
index 2adf512fe015..91ffdf7eeb1b 100644
--- a/chart2/source/controller/inc/DrawViewWrapper.hxx
+++ b/chart2/source/controller/inc/DrawViewWrapper.hxx
@@ -46,10 +46,7 @@ protected:
class DrawViewWrapper : public E3dView
{
public:
- DrawViewWrapper(
- SdrModel& rSdrModel,
- OutputDevice* pOut);
-
+ DrawViewWrapper(SdrModel* pModel, OutputDevice* pOut);
virtual ~DrawViewWrapper() override;
//triggers the use of an updated first page
diff --git a/chart2/source/controller/main/ChartController.cxx b/chart2/source/controller/main/ChartController.cxx
index 02c444d8f041..139f17279b40 100644
--- a/chart2/source/controller/main/ChartController.cxx
+++ b/chart2/source/controller/main/ChartController.cxx
@@ -727,7 +727,7 @@ void ChartController::impl_createDrawViewController()
{
if( m_pDrawModelWrapper )
{
- m_pDrawViewWrapper = new DrawViewWrapper(m_pDrawModelWrapper->getSdrModel(),GetChartWindow());
+ m_pDrawViewWrapper = new DrawViewWrapper(&m_pDrawModelWrapper->getSdrModel(),GetChartWindow());
m_pDrawViewWrapper->attachParentReferenceDevice( getModel() );
}
}
diff --git a/chart2/source/controller/main/ChartController_Tools.cxx b/chart2/source/controller/main/ChartController_Tools.cxx
index 00abbf63ad5e..d06524480847 100644
--- a/chart2/source/controller/main/ChartController_Tools.cxx
+++ b/chart2/source/controller/main/ChartController_Tools.cxx
@@ -395,12 +395,11 @@ void ChartController::impl_PasteShapes( SdrModel* pModel )
SdrObjListIter aIter( *pPage, SdrIterMode::DeepNoGroups );
while ( aIter.IsMore() )
{
- SdrObject* pObj(aIter.Next());
- // Clone to new SdrModel
- SdrObject* pNewObj(pObj ? pObj->Clone(&pDrawModelWrapper->getSdrModel()) : nullptr);
-
+ SdrObject* pObj = aIter.Next();
+ SdrObject* pNewObj = ( pObj ? pObj->Clone() : nullptr );
if ( pNewObj )
{
+ pNewObj->SetModel( &pDrawModelWrapper->getSdrModel() );
pNewObj->SetPage( pDestPage );
// set position
@@ -517,9 +516,7 @@ void ChartController::executeDispatch_Copy()
if ( pSelectedObj )
{
xTransferable.set( new ChartTransferable(
- m_pDrawModelWrapper->getSdrModel(),
- pSelectedObj,
- aSelOID.isAdditionalShape() ) );
+ &m_pDrawModelWrapper->getSdrModel(), pSelectedObj, aSelOID.isAdditionalShape() ) );
}
}
}
diff --git a/chart2/source/controller/main/ChartTransferable.cxx b/chart2/source/controller/main/ChartTransferable.cxx
index 4888c4802b9f..2eeb46a764f2 100644
--- a/chart2/source/controller/main/ChartTransferable.cxx
+++ b/chart2/source/controller/main/ChartTransferable.cxx
@@ -46,15 +46,12 @@ using ::com::sun::star::uno::Reference;
namespace chart
{
-ChartTransferable::ChartTransferable(
- SdrModel& rSdrModel,
- SdrObject* pSelectedObj,
- bool bDrawing)
-: m_pMarkedObjModel( nullptr )
+ChartTransferable::ChartTransferable( SdrModel* pDrawModel, SdrObject* pSelectedObj, bool bDrawing )
+ :m_pMarkedObjModel( nullptr )
,m_bDrawing( bDrawing )
{
- std::unique_ptr<SdrExchangeView> pExchgView(o3tl::make_unique<SdrView>( rSdrModel ));
- SdrPageView* pPv = pExchgView->ShowSdrPage( rSdrModel.GetPage( 0 ));
+ std::unique_ptr<SdrExchangeView> pExchgView(o3tl::make_unique<SdrView>( pDrawModel ));
+ SdrPageView* pPv = pExchgView->ShowSdrPage( pDrawModel->GetPage( 0 ));
if( pSelectedObj )
pExchgView->MarkObj( pSelectedObj, pPv );
else
diff --git a/chart2/source/controller/main/ChartTransferable.hxx b/chart2/source/controller/main/ChartTransferable.hxx
index 6fc8b4c26f8c..35e4f5d514c1 100644
--- a/chart2/source/controller/main/ChartTransferable.hxx
+++ b/chart2/source/controller/main/ChartTransferable.hxx
@@ -36,19 +36,16 @@ namespace chart
class ChartTransferable : public TransferableHelper
{
public:
- explicit ChartTransferable(
- SdrModel& rSdrModel,
- SdrObject* pSelectedObj,
- bool bDrawing );
+ explicit ChartTransferable( SdrModel* pDrawModel, SdrObject* pSelectedObj, bool bDrawing );
virtual ~ChartTransferable() override;
protected:
// implementation of TransferableHelper methods
- virtual void AddSupportedFormats() override;
+ virtual void AddSupportedFormats() override;
virtual bool GetData( const css::datatransfer::DataFlavor& rFlavor, const OUString& rDestDoc ) override;
- virtual bool WriteObject( tools::SvRef<SotStorageStream>& rxOStm, void* pUserObject, sal_uInt32 nUserObjectId,
- const css::datatransfer::DataFlavor& rFlavor ) override;
+ virtual bool WriteObject( tools::SvRef<SotStorageStream>& rxOStm, void* pUserObject, sal_uInt32 nUserObjectId,
+ const css::datatransfer::DataFlavor& rFlavor ) override;
private:
css::uno::Reference< css::graphic::XGraphic > m_xMetaFileGraphic;
diff --git a/chart2/source/controller/main/DrawCommandDispatch.cxx b/chart2/source/controller/main/DrawCommandDispatch.cxx
index 6c59620ce6c1..7e318646ebf5 100644
--- a/chart2/source/controller/main/DrawCommandDispatch.cxx
+++ b/chart2/source/controller/main/DrawCommandDispatch.cxx
@@ -74,7 +74,7 @@ bool DrawCommandDispatch::isFeatureSupported( const OUString& rCommandURL )
return parseCommandURL( rCommandURL, &nFeatureId, &aBaseCommand, &aCustomShapeType );
}
-::basegfx::B2DPolyPolygon getPolygon(const char* pResId, const SdrModel& rModel)
+::basegfx::B2DPolyPolygon getPolygon(const char* pResId, SdrModel const & rModel)
{
::basegfx::B2DPolyPolygon aReturn;
XLineEndListRef pLineEndList = rModel.GetLineEndList();
@@ -123,7 +123,7 @@ void DrawCommandDispatch::setAttributes( SdrObject* pObj )
{
const SfxItemSet& rSource = pSourceObj->GetMergedItemSet();
SfxItemSet aDest(
- pObj->getSdrModelFromSdrObject().GetItemPool(),
+ pObj->GetModel()->GetItemPool(),
svl::Items<
// Ranges from SdrAttrObj:
SDRATTR_START, SDRATTR_SHADOW_LAST,
@@ -425,13 +425,8 @@ SdrObject* DrawCommandDispatch::createDefaultObject( const sal_uInt16 nID )
if ( pPage )
{
SolarMutexGuard aGuard;
-
- pObj = SdrObjFactory::MakeNewObject(
- pDrawModelWrapper->getSdrModel(),
- pDrawViewWrapper->GetCurrentObjInventor(),
- pDrawViewWrapper->GetCurrentObjIdentifier(),
- pPage);
-
+ pObj = SdrObjFactory::MakeNewObject( pDrawViewWrapper->GetCurrentObjInventor(),
+ pDrawViewWrapper->GetCurrentObjIdentifier(), pPage );
if ( pObj )
{
Size aObjectSize( 4000, 2500 );
diff --git a/chart2/source/view/diagram/VDiagram.cxx b/chart2/source/view/diagram/VDiagram.cxx
index 897bbe390ea4..4c5bac5abfc0 100644
--- a/chart2/source/view/diagram/VDiagram.cxx
+++ b/chart2/source/view/diagram/VDiagram.cxx
@@ -436,7 +436,7 @@ void VDiagram::adjustAspectRatio3d( const awt::Size& rAvailableSize )
// To get the 3D aspect ratio's effect on the 2D scene size, the scene's 2D size needs to be adapted to
// 3D content changes here. The tooling class remembers the current 3D transformation stack
// and in its destructor, calculates a new 2D SnapRect for the scene and it's modified 3D geometry.
- E3DModifySceneSnapRectUpdater aUpdater(lcl_getE3dScene(m_xOuterGroupShape));
+ E3DModifySceneSnapRectUpdater aUpdater(lcl_getE3dScene( m_xOuterGroupShape ));
m_xAspectRatio3D->setPropertyValue( UNO_NAME_3D_TRANSFORM_MATRIX
, uno::Any(BaseGFXHelper::B3DHomMatrixToHomogenMatrix( aResult )) );
@@ -599,8 +599,7 @@ void VDiagram::createShapes_3d()
aEffectiveTranformation.shearXY(m_fYAnglePi,-m_fXAnglePi);
//#i98497# 3D charts are rendered with wrong size
- E3DModifySceneSnapRectUpdater aUpdater(lcl_getE3dScene(m_xOuterGroupShape));
-
+ E3DModifySceneSnapRectUpdater aUpdater(lcl_getE3dScene( m_xOuterGroupShape ));
xDestProp->setPropertyValue( UNO_NAME_3D_TRANSFORM_MATRIX,
uno::Any( BaseGFXHelper::B3DHomMatrixToHomogenMatrix( aEffectiveTranformation ) ) );
}
@@ -657,8 +656,7 @@ void VDiagram::createShapes_3d()
::basegfx::B3DHomMatrix aM;
aM.translate(GRID_TO_WALL_DISTANCE/fXScale, GRID_TO_WALL_DISTANCE/fYScale, GRID_TO_WALL_DISTANCE/fZScale);
aM.scale( fXScale, fYScale, fZScale );
- E3DModifySceneSnapRectUpdater aUpdater(lcl_getE3dScene(m_xOuterGroupShape));
-
+ E3DModifySceneSnapRectUpdater aUpdater(lcl_getE3dScene( m_xOuterGroupShape ));
xShapeProp->setPropertyValue( UNO_NAME_3D_TRANSFORM_MATRIX
, uno::Any(BaseGFXHelper::B3DHomMatrixToHomogenMatrix(aM)) );
}
diff --git a/cui/source/dialogs/sdrcelldlg.cxx b/cui/source/dialogs/sdrcelldlg.cxx
index a7de7c1f2ed2..7789ddd64c13 100644
--- a/cui/source/dialogs/sdrcelldlg.cxx
+++ b/cui/source/dialogs/sdrcelldlg.cxx
@@ -26,14 +26,14 @@
#include <border.hxx>
#include <svx/dialogs.hrc>
-SvxFormatCellsDialog::SvxFormatCellsDialog( vcl::Window* pParent, const SfxItemSet* pAttr, const SdrModel& rModel )
+SvxFormatCellsDialog::SvxFormatCellsDialog( vcl::Window* pParent, const SfxItemSet* pAttr, SdrModel const * pModel )
: SfxTabDialog(pParent, "FormatCellsDialog", "cui/ui/formatcellsdialog.ui", pAttr)
, mrOutAttrs(*pAttr)
- , mpColorTab(rModel.GetColorList())
- , mpGradientList(rModel.GetGradientList())
- , mpHatchingList(rModel.GetHatchList())
- , mpBitmapList(rModel.GetBitmapList())
- , mpPatternList(rModel.GetPatternList())
+ , mpColorTab(pModel->GetColorList())
+ , mpGradientList(pModel->GetGradientList())
+ , mpHatchingList(pModel->GetHatchList())
+ , mpBitmapList(pModel->GetBitmapList())
+ , mpPatternList(pModel->GetPatternList())
, m_nAreaPageId(0)
{
AddTabPage("name", RID_SVXPAGE_CHAR_NAME);
diff --git a/cui/source/factory/dlgfact.cxx b/cui/source/factory/dlgfact.cxx
index 51c7d5afd500..8a8647b088af 100644
--- a/cui/source/factory/dlgfact.cxx
+++ b/cui/source/factory/dlgfact.cxx
@@ -1524,9 +1524,9 @@ VclPtr<SfxAbstractLinksDialog> AbstractDialogFactory_Impl::CreateLinksDialog( vc
return VclPtr<AbstractLinksDialog_Impl>::Create( pLinkDlg );
}
-VclPtr<SfxAbstractTabDialog> AbstractDialogFactory_Impl::CreateSvxFormatCellsDialog( const SfxItemSet* pAttr, const SdrModel& rModel, const SdrObject* /*pObj*/ )
+VclPtr<SfxAbstractTabDialog> AbstractDialogFactory_Impl::CreateSvxFormatCellsDialog( const SfxItemSet* pAttr, SdrModel* pModel, const SdrObject* /*pObj*/ )
{
- return VclPtr<CuiAbstractTabDialog_Impl>::Create( VclPtr<SvxFormatCellsDialog>::Create( nullptr, pAttr, rModel ) );
+ return VclPtr<CuiAbstractTabDialog_Impl>::Create( VclPtr<SvxFormatCellsDialog>::Create( nullptr, pAttr, pModel ) );
}
VclPtr<SvxAbstractSplitTableDialog> AbstractDialogFactory_Impl::CreateSvxSplitTableDialog(weld::Window* pParent, bool bIsTableVertical, long nMaxVertical)
diff --git a/cui/source/factory/dlgfact.hxx b/cui/source/factory/dlgfact.hxx
index e9ea89b340e3..ae87ab25bb72 100644
--- a/cui/source/factory/dlgfact.hxx
+++ b/cui/source/factory/dlgfact.hxx
@@ -690,7 +690,7 @@ public:
const sal_uInt16 _nInitiallySelectedEvent
) override;
- virtual VclPtr<SfxAbstractTabDialog> CreateSvxFormatCellsDialog( const SfxItemSet* pAttr, const SdrModel& rModel, const SdrObject* pObj ) override;
+ virtual VclPtr<SfxAbstractTabDialog> CreateSvxFormatCellsDialog( const SfxItemSet* pAttr, SdrModel* pModel, const SdrObject* pObj ) override;
virtual VclPtr<SvxAbstractSplitTableDialog> CreateSvxSplitTableDialog(weld::Window* pParent, bool bIsTableVertical, long nMaxVertical) override;
diff --git a/cui/source/inc/sdrcelldlg.hxx b/cui/source/inc/sdrcelldlg.hxx
index 0a38f759a494..97a2abeec613 100644
--- a/cui/source/inc/sdrcelldlg.hxx
+++ b/cui/source/inc/sdrcelldlg.hxx
@@ -40,7 +40,7 @@ private:
sal_uInt16 m_nBorderPageId;
public:
- SvxFormatCellsDialog( vcl::Window* pParent, const SfxItemSet* pAttr, const SdrModel& rModel );
+ SvxFormatCellsDialog( vcl::Window* pParent, const SfxItemSet* pAttr, SdrModel const * pModel );
virtual void PageCreated( sal_uInt16 nId, SfxTabPage &rPage ) override;
diff --git a/cui/source/tabpages/measure.cxx b/cui/source/tabpages/measure.cxx
index 58ae066ae39b..adfb0ec6fa26 100644
--- a/cui/source/tabpages/measure.cxx
+++ b/cui/source/tabpages/measure.cxx
@@ -598,14 +598,7 @@ void SvxMeasurePage::Construct()
{
DBG_ASSERT( pView, "No valid View transferred!" );
- // TTTT
- // pMeasureObj is member of SvxXMeasurePreview and can only be accessed due to
- // SvxMeasurePage being a friend. It has it's own SdrModel (also in SvxXMeasurePreview)
- // and 'setting' the SdrModel is a hack. The comment above about 'notify unit and
- // floatingpoint-values' is not clear, but has to be done another way - if needed.
- // Checked on original aw080, is just commented out there, too.
-
- // m_pCtlPreview->pMeasureObj->SetModel( pView->GetModel() );
+ m_pCtlPreview->pMeasureObj->SetModel( pView->GetModel() );
m_pCtlPreview->Invalidate();
}
diff --git a/cui/source/tabpages/tpline.cxx b/cui/source/tabpages/tpline.cxx
index 145a30466576..85f2d856ecfc 100644
--- a/cui/source/tabpages/tpline.cxx
+++ b/cui/source/tabpages/tpline.cxx
@@ -349,7 +349,7 @@ void SvxLineTabPage::InitSymbols(MenuButton const * pButton)
pModel->InsertPage( pPage, 0 );
{
// 3D View
- std::unique_ptr<SdrView> pView(new SdrView( *pModel, pVDev ));
+ std::unique_ptr<SdrView> pView(new SdrView( pModel.get(), pVDev ));
pView->hideMarkHandles();
pView->ShowSdrPage(pPage);
@@ -1119,7 +1119,7 @@ void SvxLineTabPage::Reset( const SfxItemSet* rAttrs )
pPage->SetSize(Size(1000,1000));
pModel->InsertPage( pPage, 0 );
{
- std::unique_ptr<SdrView> pView(new SdrView( *pModel, pVDev ));
+ std::unique_ptr<SdrView> pView(new SdrView( pModel.get(), pVDev ));
pView->hideMarkHandles();
pView->ShowSdrPage(pPage);
SdrObject *pObj=nullptr;
diff --git a/cui/source/tabpages/transfrm.cxx b/cui/source/tabpages/transfrm.cxx
index ee3f76be840f..226947059a7b 100644
--- a/cui/source/tabpages/transfrm.cxx
+++ b/cui/source/tabpages/transfrm.cxx
@@ -566,15 +566,15 @@ bool SvxSlantTabPage::FillItemSet(SfxItemSet* rAttrs)
SdrObjCustomShape& rSdrObjCustomShape(
static_cast< SdrObjCustomShape& >(
*pView->GetMarkedObjectList().GetMark(0)->GetMarkedSdrObj()));
- SdrModel& rModel(rSdrObjCustomShape.getSdrModelFromSdrObject());
+ SdrModel* pModel(rSdrObjCustomShape.GetModel());
SdrUndoAction* pUndo(
- rModel.IsUndoEnabled()
- ? rModel.GetSdrUndoFactory().CreateUndoAttrObject(rSdrObjCustomShape)
+ pModel->IsUndoEnabled()
+ ? pModel->GetSdrUndoFactory().CreateUndoAttrObject(rSdrObjCustomShape)
: nullptr);
if(pUndo)
{
- rModel.BegUndo(pUndo->GetComment());
+ pModel->BegUndo(pUndo->GetComment());
}
EnhancedCustomShape2d aShape(rSdrObjCustomShape);
@@ -602,8 +602,8 @@ bool SvxSlantTabPage::FillItemSet(SfxItemSet* rAttrs)
if (pUndo)
{
- rModel.AddUndo(pUndo);
- rModel.EndUndo();
+ pModel->AddUndo(pUndo);
+ pModel->EndUndo();
}
}
diff --git a/filter/source/msfilter/escherex.cxx b/filter/source/msfilter/escherex.cxx
index 3b3fc0562bf5..0eb9efe66e86 100644
--- a/filter/source/msfilter/escherex.cxx
+++ b/filter/source/msfilter/escherex.cxx
@@ -3774,9 +3774,10 @@ bool EscherPropertyContainer::CreateBlipPropertiesforOLEControl(const uno::Refer
SdrObject* pShape = GetSdrObjectFromXShape( rXShape );
if ( pShape )
{
- const Graphic aGraphic(SdrExchangeView::GetObjGraphic(*pShape));
- const GraphicObject aGraphicObject(aGraphic);
+ SdrModel* pMod = pShape->GetModel();
+ Graphic aGraphic(SdrExchangeView::GetObjGraphic( pMod, pShape));
+ GraphicObject aGraphicObject(aGraphic);
if (!aGraphicObject.GetUniqueID().isEmpty())
{
if ( pGraphicProvider && pPicOutStrm && pShapeBoundRect )
diff --git a/filter/source/msfilter/msdffimp.cxx b/filter/source/msfilter/msdffimp.cxx
index e958c813068c..ac281e0bfdd1 100644
--- a/filter/source/msfilter/msdffimp.cxx
+++ b/filter/source/msfilter/msdffimp.cxx
@@ -3955,7 +3955,7 @@ SdrObject* SvxMSDffManager::ImportGraphic( SvStream& rSt, SfxItemSet& rSet, cons
}
if( !pRet )
{
- pRet = new SdrGrafObj(*pSdrModel);
+ pRet = new SdrGrafObj;
if( bGrfRead )
static_cast<SdrGrafObj*>(pRet)->SetGraphic( aGraf );
@@ -3997,6 +3997,7 @@ SdrObject* SvxMSDffManager::ImportGraphic( SvStream& rSt, SfxItemSet& rSet, cons
pRet->SetName( aFileName );
}
}
+ pRet->SetModel( pSdrModel ); // required for GraphicLink
pRet->SetLogicRect( rObjData.aBoundRect );
if ( dynamic_cast<const SdrGrafObj* >(pRet) != nullptr )
@@ -4306,7 +4307,7 @@ SdrObject* SvxMSDffManager::ImportShape( const DffRecordHeader& rHd, SvStream& r
if ( aObjData.nSpFlags & ShapeFlag::Group )
{
- pRet = new SdrObjGroup(*pSdrModel);
+ pRet = new SdrObjGroup;
/* After CWS aw033 has been integrated, an empty group object
cannot store its resulting bounding rectangle anymore. We have
to return this rectangle via rClientRect now, but only, if
@@ -4336,10 +4337,8 @@ SdrObject* SvxMSDffManager::ImportShape( const DffRecordHeader& rHd, SvStream& r
basegfx::B2DPolygon aPoly;
aPoly.append(basegfx::B2DPoint(aObjData.aBoundRect.Left(), aObjData.aBoundRect.Top()));
aPoly.append(basegfx::B2DPoint(aObjData.aBoundRect.Right(), aObjData.aBoundRect.Bottom()));
- pRet = new SdrPathObj(
- *pSdrModel,
- OBJ_LINE,
- basegfx::B2DPolyPolygon(aPoly));
+ pRet = new SdrPathObj(OBJ_LINE, basegfx::B2DPolyPolygon(aPoly));
+ pRet->SetModel( pSdrModel );
ApplyAttributes( rSt, aSet, aObjData );
pRet->SetMergedItemSet(aSet);
}
@@ -4350,7 +4349,8 @@ SdrObject* SvxMSDffManager::ImportShape( const DffRecordHeader& rHd, SvStream& r
ApplyAttributes( rSt, aSet, aObjData );
- pRet = new SdrObjCustomShape(*pSdrModel);
+ pRet = new SdrObjCustomShape();
+ pRet->SetModel( pSdrModel );
sal_uInt32 ngtextFStrikethrough = GetPropertyValue( DFF_Prop_gtextFStrikethrough, 0 );
bool bIsFontwork = ( ngtextFStrikethrough & 0x4000 ) != 0;
@@ -4471,7 +4471,9 @@ SdrObject* SvxMSDffManager::ImportShape( const DffRecordHeader& rHd, SvStream& r
{
SdrOutliner& rOutliner = static_cast<SdrObjCustomShape*>(pRet)->ImpGetDrawOutliner();
bool bOldUpdateMode = rOutliner.GetUpdateMode();
- rOutliner.SetStyleSheetPool(static_cast< SfxStyleSheetPool* >(pRet->getSdrModelFromSdrObject().GetStyleSheetPool()));
+ SdrModel* pModel = pRet->GetModel();
+ if ( pModel )
+ rOutliner.SetStyleSheetPool( static_cast<SfxStyleSheetPool*>(pModel->GetStyleSheetPool()) );
rOutliner.SetUpdateMode( false );
rOutliner.SetText( *pParaObj );
ScopedVclPtrInstance< VirtualDevice > pVirDev(DeviceFormat::BITMASK);
@@ -4733,7 +4735,7 @@ SdrObject* SvxMSDffManager::ImportShape( const DffRecordHeader& rHd, SvStream& r
basegfx::B2DPolyPolygon aPoly( static_cast<SdrObjCustomShape*>(pRet)->GetLineGeometry( true ) );
SdrObject::Free( pRet );
- pRet = new SdrEdgeObj(*pSdrModel);
+ pRet = new SdrEdgeObj();
ApplyAttributes( rSt, aSet, aObjData );
pRet->SetLogicRect( aObjData.aBoundRect );
pRet->SetMergedItemSet(aSet);
@@ -5233,10 +5235,7 @@ SdrObject* SvxMSDffManager::ProcessObj(SvStream& rSt,
}
}
- pTextObj = new SdrRectObj(
- *pSdrModel,
- OBJ_TEXT,
- rTextRect);
+ pTextObj = new SdrRectObj(OBJ_TEXT, rTextRect);
pTextImpRec = new SvxMSDffImportRec(*pImpRec);
bDeleteTextImpRec = true;
@@ -5365,6 +5364,7 @@ SdrObject* SvxMSDffManager::ProcessObj(SvStream& rSt,
}
pTextObj->SetMergedItemSet(aSet);
+ pTextObj->SetModel(pSdrModel);
if (bVerticalText)
pTextObj->SetVerticalWriting(true);
@@ -5397,7 +5397,7 @@ SdrObject* SvxMSDffManager::ProcessObj(SvStream& rSt,
{
if( pTextObj != pObj )
{
- SdrObject* pGroup = new SdrObjGroup(*pSdrModel);
+ SdrObject* pGroup = new SdrObjGroup;
pGroup->GetSubList()->NbcInsertObject( pObj );
pGroup->GetSubList()->NbcInsertObject( pTextObj );
if (pOrgObj == pObj)
@@ -5413,11 +5413,9 @@ SdrObject* SvxMSDffManager::ProcessObj(SvStream& rSt,
// simple rectangular objects are ignored by ImportObj() :-(
// this is OK for Draw but not for Calc and Writer
// cause here these objects have a default border
- pObj = new SdrRectObj(
- *pSdrModel,
- rTextRect);
-
+ pObj = new SdrRectObj(rTextRect);
pOrgObj = pObj;
+ pObj->SetModel( pSdrModel );
SfxItemSet aSet( pSdrModel->GetItemPool() );
ApplyAttributes( rSt, aSet, rObjData );
@@ -6617,19 +6615,9 @@ SdrObject* SvxMSDffManager::ImportOLE( sal_uInt32 nOLEId,
ErrCode nError = ERRCODE_NONE;
uno::Reference < embed::XStorage > xDstStg;
if( GetOLEStorageName( nOLEId, sStorageName, xSrcStg, xDstStg ))
- pRet = CreateSdrOLEFromStorage(
- *GetModel(),
- sStorageName,
- xSrcStg,
- xDstStg,
- rGrf,
- rBoundRect,
- rVisArea,
- pStData,
- nError,
- nSvxMSDffOLEConvFlags,
- embed::Aspects::MSOLE_CONTENT,
- maBaseURL);
+ pRet = CreateSdrOLEFromStorage( sStorageName, xSrcStg, xDstStg,
+ rGrf, rBoundRect, rVisArea, pStData, nError,
+ nSvxMSDffOLEConvFlags, embed::Aspects::MSOLE_CONTENT, maBaseURL);
return pRet;
}
@@ -7118,18 +7106,17 @@ css::uno::Reference < css::embed::XEmbeddedObject > SvxMSDffManager::CheckForCo
// TODO/MBA: code review and testing!
SdrOle2Obj* SvxMSDffManager::CreateSdrOLEFromStorage(
- SdrModel& rSdrModel,
- const OUString& rStorageName,
- tools::SvRef<SotStorage> const & rSrcStorage,
- const uno::Reference < embed::XStorage >& xDestStorage,
- const Graphic& rGrf,
- const tools::Rectangle& rBoundRect,
- const tools::Rectangle& rVisArea,
- SvStream* pDataStrm,
- ErrCode& rError,
- sal_uInt32 nConvertFlags,
- sal_Int64 nRecommendedAspect,
- OUString const& rBaseURL)
+ const OUString& rStorageName,
+ tools::SvRef<SotStorage> const & rSrcStorage,
+ const uno::Reference < embed::XStorage >& xDestStorage,
+ const Graphic& rGrf,
+ const tools::Rectangle& rBoundRect,
+ const tools::Rectangle& rVisArea,
+ SvStream* pDataStrm,
+ ErrCode& rError,
+ sal_uInt32 nConvertFlags,
+ sal_Int64 nRecommendedAspect,
+ OUString const& rBaseURL)
{
sal_Int64 nAspect = nRecommendedAspect;
SdrOle2Obj* pRet = nullptr;
@@ -7197,12 +7184,7 @@ SdrOle2Obj* SvxMSDffManager::CreateSdrOLEFromStorage(
aObj.SetGraphic( rGrf, OUString() );
// TODO/MBA: check setting of PersistName
- pRet = new SdrOle2Obj(
- rSdrModel,
- aObj,
- OUString(),
- rBoundRect);
-
+ pRet = new SdrOle2Obj( aObj, OUString(), rBoundRect);
// we have the Object, don't create another
bValidStorage = false;
}
@@ -7298,11 +7280,7 @@ SdrOle2Obj* SvxMSDffManager::CreateSdrOLEFromStorage(
// TODO/LATER: need MediaType
aObj.SetGraphic( rGrf, OUString() );
- pRet = new SdrOle2Obj(
- rSdrModel,
- aObj,
- aDstStgName,
- rBoundRect);
+ pRet = new SdrOle2Obj( aObj, aDstStgName, rBoundRect);
}
}
}
diff --git a/filter/source/msfilter/svdfppt.cxx b/filter/source/msfilter/svdfppt.cxx
index 5758ca606a1b..22d21cb1a74e 100644
--- a/filter/source/msfilter/svdfppt.cxx
+++ b/filter/source/msfilter/svdfppt.cxx
@@ -807,10 +807,7 @@ SdrObject* SdrEscherImport::ProcessObj( SvStream& rSt, DffObjData& rObjData, voi
// replacing the object which we will return with a SdrPageObj
SdrObject::Free( pRet );
- pRet = new SdrPageObj(
- *pSdrModel,
- rObjData.aBoundRect,
- pSdrModel->GetPage(nPageNum - 1));
+ pRet = new SdrPageObj( rObjData.aBoundRect, pSdrModel->GetPage( nPageNum - 1 ) );
}
else
{
@@ -1072,9 +1069,8 @@ SdrObject* SdrEscherImport::ProcessObj( SvStream& rSt, DffObjData& rObjData, voi
SdrObject::Free( pRet );
pRet = nullptr;
}
- pTObj = new SdrRectObj(
- *pSdrModel,
- eTextKind != OBJ_RECT ? eTextKind : OBJ_TEXT);
+ pTObj = new SdrRectObj( eTextKind != OBJ_RECT ? eTextKind : OBJ_TEXT );
+ pTObj->SetModel( pSdrModel );
SfxItemSet aSet( pSdrModel->GetItemPool() );
if ( !pRet )
ApplyAttributes( rSt, aSet, rObjData );
@@ -1201,7 +1197,7 @@ SdrObject* SdrEscherImport::ProcessObj( SvStream& rSt, DffObjData& rObjData, voi
}
if ( pRet )
{
- SdrObject* pGroup = new SdrObjGroup(*pSdrModel);
+ SdrObject* pGroup = new SdrObjGroup;
pGroup->GetSubList()->NbcInsertObject( pRet );
pGroup->GetSubList()->NbcInsertObject( pTObj );
pRet = pGroup;
@@ -1884,11 +1880,7 @@ SdrObject* SdrPowerPointImport::ImportOLE( sal_uInt32 nOLEId,
// TODO/LATER: need MediaType for Graphic
aObj.SetGraphic( rGraf, OUString() );
- pRet = new SdrOle2Obj(
- *pSdrModel,
- aObj,
- aNm,
- rBoundRect);
+ pRet = new SdrOle2Obj( aObj, aNm, rBoundRect );
}
}
if ( !pRet && ( rOe.nType == PPT_PST_ExControl ) )
@@ -1951,11 +1943,7 @@ SdrObject* SdrPowerPointImport::ImportOLE( sal_uInt32 nOLEId,
// TODO/LATER: need MediaType for Graphic
aObj.SetGraphic( aGraphic, OUString() );
- pRet = new SdrOle2Obj(
- *pSdrModel,
- aObj,
- aNm,
- rBoundRect);
+ pRet = new SdrOle2Obj( aObj, aNm, rBoundRect );
}
}
}
@@ -3074,17 +3062,12 @@ SdrObject* SdrPowerPointImport::ImportPageBackgroundObject( const SdrPage& rPage
pSet->Put( XFillStyleItem( drawing::FillStyle_NONE ) );
}
pSet->Put( XLineStyleItem( drawing::LineStyle_NONE ) );
- tools::Rectangle aRect(
- rPage.GetLeftBorder(),
- rPage.GetUpperBorder(),
- rPage.GetWidth() - rPage.GetRightBorder(),
- rPage.GetHeight() - rPage.GetLowerBorder());
-
- pRet = new SdrRectObj(
- *pSdrModel,
- aRect);
+ tools::Rectangle aRect( rPage.GetLeftBorder(), rPage.GetUpperBorder(), rPage.GetWidth()-rPage.GetRightBorder(), rPage.GetHeight()-rPage.GetLowerBorder() );
+ pRet = new SdrRectObj( aRect );
+ pRet->SetModel( pSdrModel );
pRet->SetMergedItemSet(*pSet);
+
pRet->SetMarkProtect( true );
pRet->SetMoveProtect( true );
pRet->SetResizeProtect( true );
@@ -7589,7 +7572,7 @@ SdrObject* SdrPowerPointImport::CreateTable( SdrObject* pGroup, const sal_uInt32
if (aRows.empty())
return pRet;
- sdr::table::SdrTableObj* pTable = new sdr::table::SdrTableObj(*pSdrModel);
+ sdr::table::SdrTableObj* pTable = new sdr::table::SdrTableObj( pSdrModel );
pTable->uno_lock();
Reference< XTable > xTable( pTable->getTable() );
diff --git a/filter/source/svg/svgexport.cxx b/filter/source/svg/svgexport.cxx
index 056c1c7fa5c9..e923eb92c021 100644
--- a/filter/source/svg/svgexport.cxx
+++ b/filter/source/svg/svgexport.cxx
@@ -560,9 +560,9 @@ bool SVGFilter::implExport( const Sequence< PropertyValue >& rDescriptor )
if( pSvxDrawPage )
{
mpDefaultSdrPage = pSvxDrawPage->GetSdrPage();
- mpSdrModel = &mpDefaultSdrPage->getSdrModelFromSdrPage();
+ mpSdrModel = mpDefaultSdrPage->GetModel();
- if( mpSdrModel ) // TTTT should be reference
+ if( mpSdrModel )
{
SdrOutliner& rOutl = mpSdrModel->GetDrawOutliner();
@@ -921,8 +921,8 @@ void SVGFilter::implGenerateMetaData()
if( pSvxDrawPage )
{
SdrPage* pSdrPage = pSvxDrawPage->GetSdrPage();
- SdrModel& rSdrModel(pSdrPage->getSdrModelFromSdrPage());
- nPageNumberingType = rSdrModel.GetPageNumType();
+ SdrModel* pSdrModel = pSdrPage->GetModel();
+ nPageNumberingType = pSdrModel->GetPageNumType();
// That is used by CalcFieldHdl method.
mVisiblePagePropSet.nPageNumberingType = nPageNumberingType;
@@ -1384,8 +1384,8 @@ void SVGFilter::implGetPagePropSet( const Reference< css::drawing::XDrawPage > &
if( pSvxDrawPage )
{
SdrPage* pSdrPage = pSvxDrawPage->GetSdrPage();
- SdrModel& rSdrModel(pSdrPage->getSdrModelFromSdrPage());
- mVisiblePagePropSet.nPageNumberingType = rSdrModel.GetPageNumType();
+ SdrModel* pSdrModel = pSdrPage->GetModel();
+ mVisiblePagePropSet.nPageNumberingType = pSdrModel->GetPageNumType();
}
}
}
@@ -1931,7 +1931,7 @@ bool SVGFilter::implCreateObjectsFromShape( const Reference< css::drawing::XDraw
if( pObj )
{
- const Graphic aGraphic(SdrExchangeView::GetObjGraphic(*pObj));
+ Graphic aGraphic( SdrExchangeView::GetObjGraphic( pObj->GetModel(), pObj ) );
if( aGraphic.GetType() != GraphicType::NONE )
{
diff --git a/include/basegfx/matrix/b2dhommatrix.hxx b/include/basegfx/matrix/b2dhommatrix.hxx
index 9f2c8a338412..a7ab0c3f5917 100644
--- a/include/basegfx/matrix/b2dhommatrix.hxx
+++ b/include/basegfx/matrix/b2dhommatrix.hxx
@@ -74,10 +74,8 @@ namespace basegfx
void rotate(double fRadiant);
void translate(double fX, double fY);
- void translate(const B2DTuple& rTuple);
void scale(double fX, double fY);
- void scale(const B2DTuple& rTuple);
// Shearing-Matrices
void shearX(double fSx);
diff --git a/include/basegfx/matrix/b3dhommatrix.hxx b/include/basegfx/matrix/b3dhommatrix.hxx
index 6d5d5c486b9b..09d700547363 100644
--- a/include/basegfx/matrix/b3dhommatrix.hxx
+++ b/include/basegfx/matrix/b3dhommatrix.hxx
@@ -64,15 +64,12 @@ namespace basegfx
/// Rotation
void rotate(double fAngleX,double fAngleY,double fAngleZ);
- void rotate(const B3DTuple& rRotation);
/// Translation
void translate(double fX, double fY, double fZ);
- void translate(const B3DTuple& rTranslation);
/// Scaling
void scale(double fX, double fY, double fZ);
- void scale(const B3DTuple& rScale);
// Shearing-Matrices
void shearXY(double fSx, double fSy);
diff --git a/include/basegfx/matrix/b3dhommatrixtools.hxx b/include/basegfx/matrix/b3dhommatrixtools.hxx
deleted file mode 100755
index 3c5e8e83ffc2..000000000000
--- a/include/basegfx/matrix/b3dhommatrixtools.hxx
+++ /dev/null
@@ -1,46 +0,0 @@
-/* -*- 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_BASEGFX_MATRIX_B3DHOMMATRIXTOOLS_HXX
-#define INCLUDED_BASEGFX_MATRIX_B3DHOMMATRIXTOOLS_HXX
-
-#include <sal/types.h>
-#include <basegfx/matrix/b3dhommatrix.hxx>
-#include <com/sun/star/drawing/HomogenMatrix.hpp>
-
-namespace basegfx
-{
- namespace utils
- {
- /* tooling methods for converting API matrices (drawing::HomogenMatrix) to
- B3DHomMatrix. drawing::HomogenMatrix4 is not used by OOo
- */
- BASEGFX_DLLPUBLIC B3DHomMatrix UnoHomogenMatrixToB3DHomMatrix(
- const com::sun::star::drawing::HomogenMatrix& rMatrixIn);
-
- BASEGFX_DLLPUBLIC void B3DHomMatrixToUnoHomogenMatrix(
- const B3DHomMatrix& rMatrixIn,
- com::sun::star::drawing::HomogenMatrix& rMatrixOut);
-
- } // end of namespace tools
-} // end of namespace basegfx
-
-#endif // INCLUDED_BASEGFX_MATRIX_B3DHOMMATRIXTOOLS_HXX
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/include/basegfx/numeric/ftools.hxx b/include/basegfx/numeric/ftools.hxx
index 1ade3bb3a3d6..52909c9cd75b 100644
--- a/include/basegfx/numeric/ftools.hxx
+++ b/include/basegfx/numeric/ftools.hxx
@@ -153,25 +153,6 @@ namespace basegfx
*/
BASEGFX_DLLPUBLIC double snapToNearestMultiple(double v, const double fStep);
- /** Snap v to the range [0.0 .. fWidth] using modulo
- */
- double snapToZeroRange(double v, double fWidth);
-
- /** Snap v to the range [fLow .. fHigh] using modulo
- */
- double snapToRange(double v, double fLow, double fHigh);
-
- /** return fValue with the sign of fSignCarrier, thus evtl. changed
- */
- inline double copySign(double fValue, double fSignCarrier)
- {
-#ifdef WNT
- return _copysign(fValue, fSignCarrier);
-#else
- return copysign(fValue, fSignCarrier);
-#endif
- }
-
/** RotateFlyFrame3: Normalize to range defined by [0.0 ... fRange[, independent
if v is positive or negative.
diff --git a/include/basegfx/range/b1drange.hxx b/include/basegfx/range/b1drange.hxx
index 7b0d22869559..c1e35b13605c 100644
--- a/include/basegfx/range/b1drange.hxx
+++ b/include/basegfx/range/b1drange.hxx
@@ -141,11 +141,6 @@ namespace basegfx
maRange.intersect(rRange.maRange);
}
- /// clamp value on range
- double clamp(double fValue) const
- {
- return maRange.clamp(fValue);
- }
};
} // end of namespace basegfx
diff --git a/include/basegfx/range/b2drange.hxx b/include/basegfx/range/b2drange.hxx
index 00eab63d1472..0de9dba0e783 100644
--- a/include/basegfx/range/b2drange.hxx
+++ b/include/basegfx/range/b2drange.hxx
@@ -274,29 +274,8 @@ namespace basegfx
maRangeY.grow(fValue);
}
- /// clamp value on range
- B2DTuple clamp(const B2DTuple& rTuple) const
- {
- return B2DTuple(
- maRangeX.clamp(rTuple.getX()),
- maRangeY.clamp(rTuple.getY()));
- }
-
- /** Transform Range by given transformation matrix. */
BASEGFX_DLLPUBLIC void transform(const B2DHomMatrix& rMatrix);
- /** Transform Range by given transformation matrix.
-
- This operation transforms the Range by transforming all four possible
- extrema points (corners) of the given range and building a new one.
- This means that the range will grow evtl. when a shear and/or rotation
- is part of the transformation.
- */
- B2DRange& operator*=( const ::basegfx::B2DHomMatrix& rMat );
-
- /** Get a range filled with (0.0, 0.0, 1.0, 1.0) */
- static const B2DRange& getUnitB2DRange();
-
private:
typedef ::basegfx::BasicRange< ValueType, TraitsType > MyBasicRange;
@@ -304,10 +283,6 @@ namespace basegfx
MyBasicRange maRangeY;
};
- /** Transform B2DRange by given transformation matrix (see operator*=())
- */
- B2DRange operator*( const B2DHomMatrix& rMat, const B2DRange& rB2DRange );
-
/** Round double to nearest integer for 2D range
@return the nearest integer for this range
diff --git a/include/basegfx/range/b2irange.hxx b/include/basegfx/range/b2irange.hxx
index a8a95d69ceed..3d7d0edba6c9 100644
--- a/include/basegfx/range/b2irange.hxx
+++ b/include/basegfx/range/b2irange.hxx
@@ -208,13 +208,6 @@ namespace basegfx
maRangeY.intersect(rRange.maRangeY);
}
- B2ITuple clamp(const B2ITuple& rTuple) const
- {
- return B2ITuple(
- maRangeX.clamp(rTuple.getX()),
- maRangeY.clamp(rTuple.getY()));
- }
-
private:
typedef ::basegfx::BasicRange< ValueType, TraitsType > MyBasicRange;
diff --git a/include/basegfx/range/b3drange.hxx b/include/basegfx/range/b3drange.hxx
index e1c44393813a..881dce612297 100644
--- a/include/basegfx/range/b3drange.hxx
+++ b/include/basegfx/range/b3drange.hxx
@@ -195,34 +195,9 @@ namespace basegfx
maRangeZ.grow(fValue);
}
- /// clamp value on range
- B3DTuple clamp(const B3DTuple& rTuple) const
- {
- return B3DTuple(
- maRangeX.clamp(rTuple.getX()),
- maRangeY.clamp(rTuple.getY()),
- maRangeZ.clamp(rTuple.getZ()));
- }
-
BASEGFX_DLLPUBLIC void transform(const B3DHomMatrix& rMatrix);
-
- /** Transform Range by given transformation matrix.
-
- This operation transforms the Range by transforming all eight possible
- extrema points (corners) of the given range and building a new one.
- This means that the range will grow evtl. when a shear and/or rotation
- is part of the transformation.
- */
- B3DRange& operator*=( const ::basegfx::B3DHomMatrix& rMat );
-
- /** Get a range filled with (0.0, 0.0, 0.0, 1.0, 1.0, 1.0) */
- static const B3DRange& getUnitB3DRange();
};
- /** Transform B3DRange by given transformation matrix (see operator*=())
- */
- B3DRange operator*( const B3DHomMatrix& rMat, const B3DRange& rB2DRange );
-
} // end of namespace basegfx
diff --git a/include/basegfx/range/basicrange.hxx b/include/basegfx/range/basicrange.hxx
index 17f31ea42f19..bea40dd3ded2 100644
--- a/include/basegfx/range/basicrange.hxx
+++ b/include/basegfx/range/basicrange.hxx
@@ -248,28 +248,6 @@ namespace basegfx
}
}
- T clamp(T nValue) const
- {
- if(isEmpty())
- {
- return nValue;
- }
- else
- {
- if(nValue < mnMinimum)
- {
- return mnMinimum;
- }
-
- if(nValue > mnMaximum)
- {
- return mnMaximum;
- }
-
- return nValue;
- }
- }
-
typename Traits::DifferenceType getRange() const
{
if(isEmpty())
diff --git a/include/filter/msfilter/msdffimp.hxx b/include/filter/msfilter/msdffimp.hxx
index fedce1b33112..ba8e6897492d 100644
--- a/include/filter/msfilter/msdffimp.hxx
+++ b/include/filter/msfilter/msdffimp.hxx
@@ -697,19 +697,17 @@ public:
void RemoveFromShapeOrder( SdrObject const * pObject ) const;
- static SdrOle2Obj* CreateSdrOLEFromStorage(
- SdrModel& rSdrModel,
- const OUString& rStorageName,
- tools::SvRef<SotStorage> const & rSrcStorage,
- const css::uno::Reference < css::embed::XStorage >& xDestStg,
- const Graphic& rGraf,
- const tools::Rectangle& rBoundRect,
- const tools::Rectangle& rVisArea,
- SvStream* pDataStrrm,
- ErrCode& rError,
- sal_uInt32 nConvertFlags,
- sal_Int64 nAspect,
- OUString const& rBaseURL);
+ static SdrOle2Obj* CreateSdrOLEFromStorage( const OUString& rStorageName,
+ tools::SvRef<SotStorage> const & rSrcStorage,
+ const css::uno::Reference < css::embed::XStorage >& xDestStg,
+ const Graphic& rGraf,
+ const tools::Rectangle& rBoundRect,
+ const tools::Rectangle& rVisArea,
+ SvStream* pDataStrrm,
+ ErrCode& rError,
+ sal_uInt32 nConvertFlags,
+ sal_Int64 nAspect,
+ OUString const& rBaseURL);
/** Create connections between shapes.
This method should be called after a page is imported.
diff --git a/include/svx/connctrl.hxx b/include/svx/connctrl.hxx
index 106140dfa374..360ff38522da 100644
--- a/include/svx/connctrl.hxx
+++ b/include/svx/connctrl.hxx
@@ -32,7 +32,7 @@ namespace vcl { class Window; }
class SfxItemSet;
class SdrEdgeObj;
class SdrView;
-class SdrPage;
+class SdrObjList;
/*************************************************************************
|*
@@ -45,7 +45,7 @@ class SAL_WARN_UNUSED SVX_DLLPUBLIC SvxXConnectionPreview : public Control
private:
SdrEdgeObj* pEdgeObj;
- SdrPage* pSdrPage;
+ SdrObjList* pObjList;
const SdrView* pView;
SVX_DLLPRIVATE void SetStyles();
diff --git a/include/svx/cube3d.hxx b/include/svx/cube3d.hxx
index 95acaab386cd..4a74777e0cff 100644
--- a/include/svx/cube3d.hxx
+++ b/include/svx/cube3d.hxx
@@ -54,23 +54,17 @@ class SAL_WARN_UNUSED SVX_DLLPUBLIC E3dCubeObj final : public E3dCompoundObject
// BOOLeans
bool bPosIsCenter : 1;
- void SetDefaultAttributes(const E3dDefaultAttributes& rDefault);
+ void SetDefaultAttributes(E3dDefaultAttributes& rDefault);
virtual sdr::contact::ViewContact* CreateObjectSpecificViewContact() override;
public:
- E3dCubeObj(SdrModel& rSdrModel,
- const E3dDefaultAttributes& rDefault,
- const basegfx::B3DPoint& aPos,
- const basegfx::B3DVector& r3DSize);
- E3dCubeObj(SdrModel& rSdrModel);
+ E3dCubeObj(E3dDefaultAttributes& rDefault, const basegfx::B3DPoint& aPos, const basegfx::B3DVector& r3DSize);
+ E3dCubeObj();
virtual sal_uInt16 GetObjIdentifier() const override;
virtual SdrObject* DoConvertToPolyObj(bool bBezier, bool bAddText) const override;
- virtual E3dCubeObj* Clone(SdrModel* pTargetModel = nullptr) const override;
-
- // implemented mainly for the purposes of Clone()
- E3dCubeObj& operator=(const E3dCubeObj& rObj);
+ virtual E3dCubeObj* Clone() const override;
// Set local parameters with geometry recreation
void SetCubePos(const basegfx::B3DPoint& rNew);
diff --git a/include/svx/deflt3d.hxx b/include/svx/deflt3d.hxx
index e08e9945fa96..e69a62a1625e 100644
--- a/include/svx/deflt3d.hxx
+++ b/include/svx/deflt3d.hxx
@@ -65,13 +65,13 @@ public:
void Reset();
// Cube object
- const basegfx::B3DPoint& GetDefaultCubePos() const { return aDefaultCubePos; }
- const basegfx::B3DVector& GetDefaultCubeSize() const { return aDefaultCubeSize; }
+ const basegfx::B3DPoint& GetDefaultCubePos() { return aDefaultCubePos; }
+ const basegfx::B3DVector& GetDefaultCubeSize() { return aDefaultCubeSize; }
bool GetDefaultCubePosIsCenter() const { return bDefaultCubePosIsCenter; }
// Sphere object
- const basegfx::B3DPoint& GetDefaultSphereCenter() const { return aDefaultSphereCenter; }
- const basegfx::B3DVector& GetDefaultSphereSize() const { return aDefaultSphereSize; }
+ const basegfx::B3DPoint& GetDefaultSphereCenter() { return aDefaultSphereCenter; }
+ const basegfx::B3DVector& GetDefaultSphereSize() { return aDefaultSphereSize; }
// Lathe object
bool GetDefaultLatheSmoothed() const { return bDefaultLatheSmoothed; }
diff --git a/include/svx/e3dsceneupdater.hxx b/include/svx/e3dsceneupdater.hxx
index e6800e845e01..ad01d667b4f5 100644
--- a/include/svx/e3dsceneupdater.hxx
+++ b/include/svx/e3dsceneupdater.hxx
@@ -50,7 +50,7 @@ class SVX_DLLPUBLIC E3DModifySceneSnapRectUpdater
// of the to-be-changed 3D object when the scene has a 3d transformation
// stack at construction time. In all other cases it's set to zero and
// no action needs to be taken
- E3dScene* mpScene;
+ E3dScene* mpScene;
// the 3d transformation stack at the time of construction, valid when
// mpScene is not zero
@@ -58,7 +58,7 @@ class SVX_DLLPUBLIC E3DModifySceneSnapRectUpdater
public:
// the constructor evaluates and sets the members at construction time
- E3DModifySceneSnapRectUpdater(const SdrObject* mpObject);
+ E3DModifySceneSnapRectUpdater(const SdrObject* pObject);
// the destructor will take action if mpScene is not zero and modify the
// 2D geomeztry of the target scene
diff --git a/include/svx/e3dundo.hxx b/include/svx/e3dundo.hxx
index 17335ea1e8e0..8be61b7b9e0e 100644
--- a/include/svx/e3dundo.hxx
+++ b/include/svx/e3dundo.hxx
@@ -31,15 +31,17 @@
\************************************************************************/
class SAL_WARN_UNUSED E3dUndoAction : public SdrUndoAction
{
+
protected:
- E3dObject& mrMy3DObj;
+ E3dObject *pMy3DObj;
public:
- E3dUndoAction(E3dObject &r3DObj)
- : SdrUndoAction(r3DObj.getSdrModelFromSdrObject()),
- mrMy3DObj(r3DObj)
- {
- }
+ E3dUndoAction (SdrModel *pModel,
+ E3dObject *p3DObj) :
+ SdrUndoAction (*pModel),
+ pMy3DObj (p3DObj)
+ {
+ }
virtual ~E3dUndoAction () override;
@@ -53,25 +55,25 @@ class SAL_WARN_UNUSED E3dUndoAction : public SdrUndoAction
\************************************************************************/
class SAL_WARN_UNUSED E3dRotateUndoAction : public E3dUndoAction
{
-private:
- basegfx::B3DHomMatrix maMyOldRotation;
- basegfx::B3DHomMatrix maMyNewRotation;
-
-public:
- E3dRotateUndoAction(
- E3dObject& r3DObj,
- const basegfx::B3DHomMatrix &aOldRotation,
- const basegfx::B3DHomMatrix &aNewRotation)
- : E3dUndoAction(r3DObj),
- maMyOldRotation(aOldRotation),
- maMyNewRotation(aNewRotation)
- {
- }
-
- virtual ~E3dRotateUndoAction () override;
-
- virtual void Undo() override;
- virtual void Redo() override;
+ basegfx::B3DHomMatrix aMyOldRotation;
+ basegfx::B3DHomMatrix aMyNewRotation;
+
+ public:
+ E3dRotateUndoAction (SdrModel *pModel,
+ E3dObject *p3DObj,
+ const basegfx::B3DHomMatrix &aOldRotation,
+ const basegfx::B3DHomMatrix &aNewRotation) :
+ E3dUndoAction (pModel, p3DObj),
+ aMyOldRotation (aOldRotation),
+ aMyNewRotation (aNewRotation)
+ {
+ }
+
+ virtual ~E3dRotateUndoAction () override;
+
+ virtual void Undo() override;
+ virtual void Redo() override;
+
};
/************************************************************************\
@@ -81,16 +83,16 @@ public:
\************************************************************************/
class SAL_WARN_UNUSED SVX_DLLPUBLIC E3dAttributesUndoAction : public SdrUndoAction
{
-private:
using SdrUndoAction::Repeat;
- SdrObject& mrObject;
- const SfxItemSet maNewSet;
- const SfxItemSet maOldSet;
+ SdrObject* pObject;
+
+ const SfxItemSet aNewSet;
+ const SfxItemSet aOldSet;
public:
- E3dAttributesUndoAction(
- E3dObject& rInObject,
+ E3dAttributesUndoAction( SdrModel &rModel,
+ E3dObject* pInObject,
const SfxItemSet& rNewSet,
const SfxItemSet& rOldSet);
diff --git a/include/svx/extedit.hxx b/include/svx/extedit.hxx
index 82afea29c83f..5ee2864a94a2 100644
--- a/include/svx/extedit.hxx
+++ b/include/svx/extedit.hxx
@@ -43,20 +43,18 @@ class FmFormView;
class SdrObject;
class SAL_WARN_UNUSED SVX_DLLPUBLIC SdrExternalToolEdit
-: public ExternalToolEdit
- ,public SfxListener
+ : public ExternalToolEdit
+ , public SfxListener
{
private:
- FmFormView* m_pView;
- SdrObject* m_pObj;
+ FmFormView * m_pView;
+ SdrObject * m_pObj;
SAL_DLLPRIVATE virtual void Update(Graphic&) override;
SAL_DLLPRIVATE virtual void Notify(SfxBroadcaster&, const SfxHint&) override;
public:
- SdrExternalToolEdit(
- FmFormView* pView,
- SdrObject* pObj);
+ SdrExternalToolEdit(FmFormView * pView, SdrObject * pObj);
};
#endif
diff --git a/include/svx/extrud3d.hxx b/include/svx/extrud3d.hxx
index 5c121343af4d..1b78d4547740 100644
--- a/include/svx/extrud3d.hxx
+++ b/include/svx/extrud3d.hxx
@@ -40,15 +40,12 @@ private:
virtual sdr::contact::ViewContact* CreateObjectSpecificViewContact() override;
virtual sdr::properties::BaseProperties* CreateObjectSpecificProperties() override;
- void SetDefaultAttributes(const E3dDefaultAttributes& rDefault);
+ void SetDefaultAttributes(E3dDefaultAttributes const & rDefault);
public:
- E3dExtrudeObj(
- SdrModel& rSdrModel,
- const E3dDefaultAttributes& rDefault,
- const basegfx::B2DPolyPolygon& rPP,
- double fDepth);
- E3dExtrudeObj(SdrModel& rSdrModel);
+
+ E3dExtrudeObj(E3dDefaultAttributes const & rDefault, const basegfx::B2DPolyPolygon& rPP, double fDepth);
+ E3dExtrudeObj();
// PercentDiagonal: 0..100, before 0.0..0.5
sal_uInt16 GetPercentDiagonal() const
@@ -84,10 +81,7 @@ public:
virtual sal_uInt16 GetObjIdentifier() const override;
- virtual E3dExtrudeObj* Clone(SdrModel* pTargetModel = nullptr) const override;
-
- // implemented mainly for the purposes of Clone()
- E3dExtrudeObj& operator=(const E3dExtrudeObj& rObj);
+ virtual E3dExtrudeObj* Clone() const override;
// TakeObjName...() is for the display in the UI (for example "3 frames selected")
virtual OUString TakeObjNameSingul() const override;
diff --git a/include/svx/fmpage.hxx b/include/svx/fmpage.hxx
index 2605a6067517..808d814452b1 100644
--- a/include/svx/fmpage.hxx
+++ b/include/svx/fmpage.hxx
@@ -42,7 +42,6 @@ class HelpEvent;
class SVX_DLLPUBLIC FmFormPage : public SdrPage
{
FmFormPage& operator=(const FmFormPage&) = delete;
- FmFormPage(const FmFormPage&) = delete;
friend class FmFormObj;
std::unique_ptr<FmFormPageImpl> m_pImpl;
@@ -53,7 +52,10 @@ public:
explicit FmFormPage(FmFormModel& rModel, bool bMasterPage=false);
virtual ~FmFormPage() override;
- virtual SdrPage* Clone(SdrModel* pNewModel = nullptr) const override;
+ virtual void SetModel(SdrModel* pNewModel) override;
+
+ virtual SdrPage* Clone() const override;
+ virtual SdrPage* Clone(SdrModel* pNewModel) const override;
virtual void InsertObject(SdrObject* pObj, size_t nPos = SAL_MAX_SIZE) override;
@@ -73,8 +75,9 @@ public:
const HelpEvent& rEvt );
protected:
- // lateInit -> copyValuesToClonedInstance (?)
- void lateInit(const FmFormPage& rPage);
+ FmFormPage(const FmFormPage& rPage);
+
+ void lateInit(const FmFormPage& rPage, FmFormModel* pNewModel = nullptr);
};
#endif // INCLUDED_SVX_FMPAGE_HXX
diff --git a/include/svx/fmview.hxx b/include/svx/fmview.hxx
index d0a7eb79836f..a4245150337a 100644
--- a/include/svx/fmview.hxx
+++ b/include/svx/fmview.hxx
@@ -61,10 +61,8 @@ class SVX_DLLPUBLIC FmFormView : public E3dView
void Init();
public:
- FmFormView(
- SdrModel& rSdrModel,
- OutputDevice* pOut);
+ FmFormView(FmFormModel* pModel, OutputDevice* pOut);
virtual ~FmFormView() override;
/** create a control pair (label/bound control) for the database field description given.
diff --git a/include/svx/graphctl.hxx b/include/svx/graphctl.hxx
index f32454a56ae4..85ecc62e904f 100644
--- a/include/svx/graphctl.hxx
+++ b/include/svx/graphctl.hxx
@@ -141,13 +141,10 @@ protected:
}
public:
- GraphCtrlView(
- SdrModel& rSdrModel,
- GraphCtrl* pWindow)
- : SdrView(rSdrModel, pWindow)
- ,rGraphCtrl(*pWindow)
- {
- }
+ GraphCtrlView(SdrModel* pModel, GraphCtrl* pWindow)
+ : SdrView(pModel, pWindow)
+ , rGraphCtrl(*pWindow)
+ {}
};
#endif // INCLUDED_SVX_GRAPHCTL_HXX
diff --git a/include/svx/lathe3d.hxx b/include/svx/lathe3d.hxx
index 89df10369045..3c5a0e23b015 100644
--- a/include/svx/lathe3d.hxx
+++ b/include/svx/lathe3d.hxx
@@ -39,14 +39,11 @@ class SVX_DLLPUBLIC E3dLatheObj final : public E3dCompoundObject
virtual sdr::contact::ViewContact* CreateObjectSpecificViewContact() override;
virtual sdr::properties::BaseProperties* CreateObjectSpecificProperties() override;
- void SetDefaultAttributes(const E3dDefaultAttributes& rDefault);
+ void SetDefaultAttributes(E3dDefaultAttributes const & rDefault);
public:
- E3dLatheObj(
- SdrModel& rSdrModel,
- const E3dDefaultAttributes& rDefault,
- const basegfx::B2DPolyPolygon& rPoly2D);
- E3dLatheObj(SdrModel& rSdrModel);
+ E3dLatheObj(E3dDefaultAttributes const & rDefault, const basegfx::B2DPolyPolygon& rPoly2D);
+ E3dLatheObj();
// HorizontalSegments:
sal_uInt32 GetHorizontalSegments() const
@@ -90,10 +87,7 @@ public:
virtual sal_uInt16 GetObjIdentifier() const override;
- virtual E3dLatheObj* Clone(SdrModel* pTargetModel = nullptr) const override;
-
- // implemented mainly for the purposes of Clone()
- E3dLatheObj& operator=(const E3dLatheObj& rObj);
+ virtual E3dLatheObj* Clone() const override;
virtual SdrObject* DoConvertToPolyObj(bool bBezier, bool bAddText) const override;
diff --git a/include/svx/obj3d.hxx b/include/svx/obj3d.hxx
index 7ad18848d4cd..87117cc5d203 100644
--- a/include/svx/obj3d.hxx
+++ b/include/svx/obj3d.hxx
@@ -81,8 +81,6 @@ public:
E3dObjList();
SVX_DLLPUBLIC virtual ~E3dObjList() override;
- virtual E3dObjList* CloneSdrObjList(SdrModel* pNewModel = nullptr) const override;
-
virtual void NbcInsertObject(SdrObject* pObj, size_t nPos=SAL_MAX_SIZE) override;
virtual void InsertObject(SdrObject* pObj, size_t nPos=SAL_MAX_SIZE) override;
virtual SdrObject* NbcRemoveObject(size_t nObjNum) override;
@@ -90,7 +88,8 @@ public:
private:
E3dObjList &operator=(const E3dObjList& rSrcList) = delete;
- E3dObjList(const E3dObjList& rSrcList) = delete;
+
+ SVX_DLLPUBLIC E3dObjList(const E3dObjList& rSrcList);
};
/*************************************************************************
@@ -132,7 +131,7 @@ protected:
// E3dObject is only a helper class (for E3DScene and E3DCompoundObject)
// and no instances should be created from anyone, so i move the constructors
// to protected area
- E3dObject(SdrModel& rSdrModel);
+ E3dObject();
public:
virtual void RecalcSnapRect() override;
@@ -149,6 +148,7 @@ public:
virtual void SetObjList(SdrObjList* pNewObjList) override;
virtual void SetPage(SdrPage* pNewPage) override;
+ virtual void SetModel(SdrModel* pNewModel) override;
virtual void NbcMove(const Size& rSize) override;
virtual void NbcResize(const Point& rRef, const Fraction& xFact, const Fraction& yFact) override;
virtual SdrObjList* GetSubList() const override;
@@ -183,7 +183,7 @@ public:
// TakeObjName...() is for the display in the UI, for example "3 frames selected".
virtual OUString TakeObjNameSingul() const override;
virtual OUString TakeObjNamePlural() const override;
- virtual E3dObject* Clone(SdrModel* pTargetModel = nullptr) const override;
+ virtual E3dObject* Clone() const override;
E3dObject& operator=( const E3dObject& rObj );
virtual SdrObjGeoData *NewGeoData() const override;
@@ -232,7 +232,7 @@ protected:
public:
- E3dCompoundObject(SdrModel& rSdrModel);
+ E3dCompoundObject();
virtual ~E3dCompoundObject() override;
virtual basegfx::B2DPolyPolygon TakeXorPoly() const override;
@@ -242,10 +242,7 @@ public:
virtual sal_uInt16 GetObjIdentifier() const override;
virtual void RecalcSnapRect() override;
- virtual E3dCompoundObject* Clone(SdrModel* pTargetModel = nullptr) const override;
-
- // implemented mainly for the purposes of Clone()
- E3dCompoundObject& operator=(const E3dCompoundObject& rObj);
+ virtual E3dCompoundObject* Clone() const override;
bool IsAOrdNumRemapCandidate(E3dScene*& prScene) const;
};
diff --git a/include/svx/polygn3d.hxx b/include/svx/polygn3d.hxx
index 9f5acca38ce2..98778dd493e3 100644
--- a/include/svx/polygn3d.hxx
+++ b/include/svx/polygn3d.hxx
@@ -43,11 +43,10 @@ public:
void SetPolyNormals3D(const basegfx::B3DPolyPolygon& rNewPolyPoly3D);
void SetPolyTexture2D(const basegfx::B2DPolyPolygon& rNewPolyPoly2D);
- E3dPolygonObj(
- SdrModel& rSdrModel,
- const basegfx::B3DPolyPolygon& rPolyPoly3D);
- E3dPolygonObj(SdrModel& rSdrModel);
+ E3dPolygonObj(const basegfx::B3DPolyPolygon& rPolyPoly3D);
+
+ E3dPolygonObj();
virtual ~E3dPolygonObj() override;
const basegfx::B3DPolyPolygon& GetPolyPolygon3D() const { return aPolyPoly3D; }
@@ -57,10 +56,7 @@ public:
virtual sal_uInt16 GetObjIdentifier() const override;
virtual SdrObject* DoConvertToPolyObj(bool bBezier, bool bAddText) const override;
- virtual E3dPolygonObj* Clone(SdrModel* pTargetModel = nullptr) const override;
-
- // implemented mainly for the purposes of Clone()
- E3dPolygonObj& operator=(const E3dPolygonObj& rObj);
+ virtual E3dPolygonObj* Clone() const override;
// LineOnly?
bool GetLineOnly() const { return bLineOnly; }
diff --git a/include/svx/scene3d.hxx b/include/svx/scene3d.hxx
index eef2c0422ba9..b6562093a6f1 100644
--- a/include/svx/scene3d.hxx
+++ b/include/svx/scene3d.hxx
@@ -90,7 +90,7 @@ protected:
void ImpCleanup3DDepthMapper();
public:
- E3dScene(SdrModel& rSdrModel);
+ E3dScene();
virtual ~E3dScene() override;
virtual void SetBoundRectDirty() override;
@@ -130,7 +130,7 @@ public:
const Camera3D& GetCamera() const { return aCamera; }
void removeAllNonSelectedObjects();
- virtual E3dScene* Clone(SdrModel* pTargetModel = nullptr) const override;
+ virtual E3dScene* Clone() const override;
E3dScene& operator=(const E3dScene&);
virtual SdrObjGeoData *NewGeoData() const override;
diff --git a/include/svx/sdr/properties/defaultproperties.hxx b/include/svx/sdr/properties/defaultproperties.hxx
index b3395386f833..fec5963d4e7d 100644
--- a/include/svx/sdr/properties/defaultproperties.hxx
+++ b/include/svx/sdr/properties/defaultproperties.hxx
@@ -54,9 +54,6 @@ namespace sdr
// react on ItemSet changes
virtual void ItemSetChanged(const SfxItemSet& rSet) override;
- // check if SfxItemSet exists
- bool HasSfxItemSet() const { return bool(mpItemSet); }
-
public:
// basic constructor
explicit DefaultProperties(SdrObject& rObj);
diff --git a/include/svx/sdr/properties/properties.hxx b/include/svx/sdr/properties/properties.hxx
index 3bfca7630efe..71dad7f567fb 100644
--- a/include/svx/sdr/properties/properties.hxx
+++ b/include/svx/sdr/properties/properties.hxx
@@ -44,32 +44,6 @@ namespace sdr
}
}
-////////////////////////////////////////////////////////////////////////////////////////////////////
-//
-// BaseProperties
-// DefaultProperties ->SfxItemSet
-// AttributeProperties ->SfxStyleSheet
-// E3dProperties
-// E3dCompoundProperties
-// E3dExtrudeProperties
-// E3dLatheProperties
-// E3dSphereProperties
-// E3dSceneProperties
-// TextProperties ->maVersion
-// ConnectorProperties
-// CustomShapeProperties
-// MeasureProperties
-// RectangleProperties
-// CaptionProperties
-// CircleProperties
-// GraphicProperties
-// OleProperties
-// CellProperties
-// TableProperties
-// GroupProperties
-// EmptyProperties
-// PageProperties
-
namespace sdr
{
namespace properties
@@ -167,6 +141,13 @@ namespace sdr
// Get the installed StyleSheet.
virtual SfxStyleSheet* GetStyleSheet() const = 0;
+ // Move local items to a new ItemPool.
+ // Override this to do it for hierarchical objects like e.g. groups.
+ virtual void MoveToItemPool(SfxItemPool* pSrcPool, SfxItemPool* pDestPool, SdrModel* pNewModel);
+
+ // Set new model.
+ virtual void SetModel(SdrModel* pOldModel, SdrModel* pNewModel);
+
// force all attributes which come from styles to hard attributes
// to be able to live without the style.
virtual void ForceStyleToHardAttributes();
diff --git a/include/svx/sdr/table/tablecontroller.hxx b/include/svx/sdr/table/tablecontroller.hxx
index fe03d7353a2b..6a999a78b344 100644
--- a/include/svx/sdr/table/tablecontroller.hxx
+++ b/include/svx/sdr/table/tablecontroller.hxx
@@ -29,7 +29,7 @@
#include <svx/svdotable.hxx>
#include <svx/svdview.hxx>
-class SdrView;
+class SdrObjEditView;
class SdrObject;
class SfxItemSet;
class SvxBoxInfoItem;
@@ -39,12 +39,10 @@ namespace sdr { namespace table {
class TableModel;
-class SVX_DLLPUBLIC SvxTableController : public sdr::SelectionController
+class SVX_DLLPUBLIC SvxTableController: public sdr::SelectionController
{
public:
- SVX_DLLPRIVATE SvxTableController(
- SdrView& rView,
- const SdrTableObj& rObj);
+ SVX_DLLPRIVATE SvxTableController( SdrObjEditView* pView, const SdrTableObj* pObj );
SVX_DLLPRIVATE virtual ~SvxTableController() override;
// from sdr::SelectionController
@@ -78,10 +76,7 @@ public:
SVX_DLLPRIVATE void DistributeRows();
SVX_DLLPRIVATE void SetVertical( sal_uInt16 nSId );
- SVX_DLLPRIVATE static rtl::Reference< sdr::SelectionController > create(
- SdrView& rView,
- const SdrTableObj& rObj,
- const rtl::Reference< sdr::SelectionController >& xRefController);
+ SVX_DLLPRIVATE static rtl::Reference< sdr::SelectionController > create( SdrObjEditView* pView, const SdrTableObj* pObj, const rtl::Reference< sdr::SelectionController >& xRefController );
SVX_DLLPRIVATE void MergeAttrFromSelectedCells(SfxItemSet& rAttr, bool bOnlyHardAttr) const;
SVX_DLLPRIVATE void SetAttrToSelectedCells(const SfxItemSet& rAttr, bool bReplaceAll);
@@ -98,7 +93,7 @@ public:
SVX_DLLPRIVATE virtual bool GetMarkedObjModel( SdrPage* pNewPage ) override;
SVX_DLLPRIVATE virtual bool PasteObjModel( const SdrModel& rModel ) override;
- SVX_DLLPRIVATE virtual bool hasSelectedCells() const override { return mbCellSelectionMode || mrView.IsTextEdit(); }
+ SVX_DLLPRIVATE virtual bool hasSelectedCells() const override { return mbCellSelectionMode || mpView->IsTextEdit(); }
/// @see sdr::SelectionController::setCursorLogicPosition().
SVX_DLLPRIVATE virtual bool setCursorLogicPosition(const Point& rPosition, bool bPoint) override;
@@ -179,16 +174,17 @@ private:
CellPos maMouseDownPos;
bool mbLeftButtonDown;
sdr::overlay::OverlayObjectList* mpSelectionOverlay;
- SdrView& mrView;
+
+ SdrView* mpView;
tools::WeakReference<SdrTableObj> mxTableObj;
+ SdrModel* mpModel;
+
css::uno::Reference< css::util::XModifyListener > mxModifyListener;
+
ImplSVEvent * mnUpdateEvent;
};
-rtl::Reference< sdr::SelectionController > CreateTableController(
- SdrView& rView,
- const SdrTableObj& rObj,
- const rtl::Reference< sdr::SelectionController >& xRefController );
+rtl::Reference< sdr::SelectionController > CreateTableController( SdrObjEditView* pView, const SdrTableObj* pObj, const rtl::Reference< sdr::SelectionController >& xRefController );
} }
diff --git a/include/svx/sphere3d.hxx b/include/svx/sphere3d.hxx
index e5534e528fa9..9c4bc5d21468 100644
--- a/include/svx/sphere3d.hxx
+++ b/include/svx/sphere3d.hxx
@@ -35,19 +35,16 @@ private:
virtual sdr::contact::ViewContact* CreateObjectSpecificViewContact() override;
virtual sdr::properties::BaseProperties* CreateObjectSpecificProperties() override;
- void SetDefaultAttributes(const E3dDefaultAttributes& rDefault);
+ void SetDefaultAttributes(E3dDefaultAttributes& rDefault);
public:
- E3dSphereObj(
- SdrModel& rSdrModel,
- const E3dDefaultAttributes& rDefault,
- const basegfx::B3DPoint& rCenter,
- const basegfx::B3DVector& r3DSize);
+ E3dSphereObj(E3dDefaultAttributes& rDefault, const basegfx::B3DPoint& rCenter, const basegfx::B3DVector& r3DSize);
// FG: This constructor is only called from MakeObject from the 3d-Objectfactory
// when a document with a sphere is loaded. This constructor does not call
// CreateSphere, or create any spheres.
- E3dSphereObj(SdrModel& rSdrModel);
+ enum Dummy { DUMMY };
+ E3dSphereObj(Dummy dummy);
// horizontal segments:
sal_uInt32 GetHorizontalSegments() const
@@ -60,10 +57,7 @@ public:
virtual sal_uInt16 GetObjIdentifier() const override;
virtual SdrObject* DoConvertToPolyObj(bool bBezier, bool bAddText) const override;
- virtual E3dSphereObj* Clone(SdrModel* pTargetModel = nullptr) const override;
-
- // implemented mainly for the purposes of Clone()
- E3dSphereObj& operator=(const E3dSphereObj& rObj);
+ virtual E3dSphereObj* Clone() const override;
const basegfx::B3DPoint& Center() const { return aCenter; }
const basegfx::B3DVector& Size() const { return aSize; }
diff --git a/include/svx/svdcrtv.hxx b/include/svx/svdcrtv.hxx
index 47858b29cf4e..3b71a5088510 100644
--- a/include/svx/svdcrtv.hxx
+++ b/include/svx/svdcrtv.hxx
@@ -31,7 +31,7 @@ class SdrObjConnection;
class ImplConnectMarkerOverlay;
class ImpSdrCreateViewExtraData;
-class SVX_DLLPUBLIC SdrCreateView : public SdrDragView
+class SVX_DLLPUBLIC SdrCreateView: public SdrDragView
{
friend class SdrPageView;
@@ -69,10 +69,7 @@ protected:
protected:
// #i71538# make constructors of SdrView sub-components protected to avoid incomplete incarnations which may get casted to SdrView
- SdrCreateView(
- SdrModel& rSdrModel,
- OutputDevice* pOut);
-
+ SdrCreateView(SdrModel* pModel1, OutputDevice* pOut);
virtual ~SdrCreateView() override;
public:
diff --git a/include/svx/svddrgv.hxx b/include/svx/svddrgv.hxx
index 180d8cc09269..19b56414e9b0 100644
--- a/include/svx/svddrgv.hxx
+++ b/include/svx/svddrgv.hxx
@@ -25,7 +25,7 @@
class SdrUndoGeoObj;
-class SVX_DLLPUBLIC SdrDragView : public SdrExchangeView
+class SVX_DLLPUBLIC SdrDragView: public SdrExchangeView
{
friend class SdrPageView;
friend class SdrDragMethod;
@@ -69,10 +69,7 @@ protected:
protected:
// #i71538# make constructors of SdrView sub-components protected to avoid incomplete incarnations which may get casted to SdrView
- SdrDragView(
- SdrModel& rSdrModel,
- OutputDevice* pOut);
-
+ SdrDragView(SdrModel* pModel1, OutputDevice* pOut);
virtual ~SdrDragView() override;
public:
diff --git a/include/svx/svdedtv.hxx b/include/svx/svdedtv.hxx
index 51dbb4872e51..0c1e2f6a9dc1 100644
--- a/include/svx/svdedtv.hxx
+++ b/include/svx/svdedtv.hxx
@@ -68,7 +68,7 @@ namespace o3tl
template<> struct typed_flags<SdrInsertFlags> : is_typed_flags<SdrInsertFlags, 0x1f> {};
}
-class SVX_DLLPUBLIC SdrEditView : public SdrMarkView
+class SVX_DLLPUBLIC SdrEditView: public SdrMarkView
{
friend class SdrPageView;
friend class SdrDragDistort;
@@ -163,10 +163,7 @@ protected:
protected:
// #i71538# make constructors of SdrView sub-components protected to avoid incomplete incarnations which may get casted to SdrView
- SdrEditView(
- SdrModel& rSdrModel,
- OutputDevice* pOut);
-
+ SdrEditView(SdrModel* pModel1, OutputDevice* pOut);
virtual ~SdrEditView() override;
public:
diff --git a/include/svx/svdedxv.hxx b/include/svx/svdedxv.hxx
index 70472aab20b2..324a611d96eb 100644
--- a/include/svx/svdedxv.hxx
+++ b/include/svx/svdedxv.hxx
@@ -58,7 +58,7 @@ enum class SdrEndTextEditKind
// - macromod
-class SVX_DLLPUBLIC SdrObjEditView : public SdrGlueEditView, public EditViewCallbacks
+class SVX_DLLPUBLIC SdrObjEditView: public SdrGlueEditView, public EditViewCallbacks
{
friend class SdrPageView;
friend class ImpSdrEditPara;
@@ -150,10 +150,7 @@ protected:
protected:
// #i71538# make constructors of SdrView sub-components protected to avoid incomplete incarnations which may get casted to SdrView
- SdrObjEditView(
- SdrModel& rSdrModel,
- OutputDevice* pOut);
-
+ SdrObjEditView(SdrModel* pModel1, OutputDevice* pOut);
virtual ~SdrObjEditView() override;
public:
diff --git a/include/svx/svdglev.hxx b/include/svx/svdglev.hxx
index be365e368c7e..10645f0a5aaa 100644
--- a/include/svx/svdglev.hxx
+++ b/include/svx/svdglev.hxx
@@ -29,7 +29,7 @@ class SdrGluePoint;
// Edit GluePoints at the objects (GluePoints for connector)
-class SVX_DLLPUBLIC SdrGlueEditView : public SdrPolyEditView
+class SVX_DLLPUBLIC SdrGlueEditView: public SdrPolyEditView
{
// copy marked GluePoints and mark instead of the old ones
void ImpCopyMarkedGluePoints();
@@ -40,10 +40,7 @@ class SVX_DLLPUBLIC SdrGlueEditView : public SdrPolyEditView
protected:
// #i71538# make constructors of SdrView sub-components protected to avoid incomplete incarnations which may get casted to SdrView
- SdrGlueEditView(
- SdrModel& rSdrModel,
- OutputDevice* pOut);
-
+ SdrGlueEditView(SdrModel* pModel1, OutputDevice* pOut);
virtual ~SdrGlueEditView() override;
public:
diff --git a/include/svx/svdmrkv.hxx b/include/svx/svdmrkv.hxx
index 36e80416087b..981b1e29e5d1 100644
--- a/include/svx/svdmrkv.hxx
+++ b/include/svx/svdmrkv.hxx
@@ -166,10 +166,7 @@ protected:
protected:
// #i71538# make constructors of SdrView sub-components protected to avoid incomplete incarnations which may get casted to SdrView
- SdrMarkView(
- SdrModel& rSdrModel,
- OutputDevice* pOut);
-
+ SdrMarkView(SdrModel* pModel1, OutputDevice* pOut);
virtual ~SdrMarkView() override;
public:
diff --git a/include/svx/svdoashp.hxx b/include/svx/svdoashp.hxx
index 3ce7833ca8c8..85f5e9dc68ca 100644
--- a/include/svx/svdoashp.hxx
+++ b/include/svx/svdoashp.hxx
@@ -98,8 +98,15 @@ public:
css::uno::Reference< css::drawing::XCustomShapeEngine > const & GetCustomShapeEngine() const;
+// SVX_DLLPRIVATE css::uno::Sequence< css::uno::Reference< css::drawing::XCustomShapeHandle > >
+// SdrObjCustomShape::GetInteraction( const SdrObjCustomShape* pCustomShape ) const;
+// #i47293#
+// SVX_DLLPRIVATE std::vector< css::uno::Reference< css::drawing::XCustomShapeHandle > > GetFixedInteractionHandle() const;
+
SVX_DLLPRIVATE std::vector< SdrCustomShapeInteraction > GetInteractionHandles() const;
+
SVX_DLLPRIVATE void DragCreateObject( SdrDragStat& rDrag );
+
SVX_DLLPRIVATE void DragResizeCustomShape( const tools::Rectangle& rNewRect );
SVX_DLLPRIVATE void DragMoveCustomShapeHdl( const Point& rDestination,
const sal_uInt16 nCustomShapeHdlNum, bool bMoveCalloutRectangle );
@@ -140,7 +147,7 @@ public:
double GetObjectRotation() const { return fObjectRotation;}
double GetExtraTextRotation( const bool bPreRotation = false ) const;
- SdrObjCustomShape(SdrModel& rSdrModel);
+ SdrObjCustomShape();
virtual ~SdrObjCustomShape() override;
/* is merging default attributes from type-shape into the SdrCustomShapeGeometryItem. If pType
@@ -165,6 +172,8 @@ public:
virtual sal_uInt16 GetObjIdentifier() const override;
virtual void TakeObjInfo(SdrObjTransformInfoRec& rInfo) const override;
+ virtual void SetModel(SdrModel* pNewModel) override;
+
virtual void Move(const Size& rSiz) override;
virtual void Shear(const Point& rRef, long nAngle, double tn, bool bVShear) override;
virtual void SetSnapRect(const tools::Rectangle& rRect) override;
@@ -207,7 +216,7 @@ public:
virtual void TakeTextAnchorRect( tools::Rectangle& rAnchorRect ) const override;
virtual void TakeTextRect( SdrOutliner& rOutliner, tools::Rectangle& rTextRect, bool bNoEditText,
tools::Rectangle* pAnchorRect, bool bLineWidth = true ) const override;
- virtual SdrObjCustomShape* Clone(SdrModel* pTargetModel = nullptr) const override;
+ virtual SdrObjCustomShape* Clone() const override;
SdrObjCustomShape& operator=(const SdrObjCustomShape& rObj);
virtual OUString TakeObjNameSingul() const override;
diff --git a/include/svx/svdoattr.hxx b/include/svx/svdoattr.hxx
index a39a91957841..10c163b3b9b0 100644
--- a/include/svx/svdoattr.hxx
+++ b/include/svx/svdoattr.hxx
@@ -28,14 +28,20 @@
#include <svx/svdattr.hxx>
#include <svx/svxdllapi.h>
+
// Initial Declarations
+
+
class SfxPoolItem;
class SfxSetItem;
class SdrOutliner;
class SfxItemSet;
class SfxItemPool;
+
// SdrAttrObj
+
+
class SVX_DLLPUBLIC SdrAttrObj : public SdrObject
{
private:
@@ -53,7 +59,7 @@ protected:
/// Detects when a stylesheet is changed
virtual void Notify(SfxBroadcaster& rBC, const SfxHint& rHint) override;
- SdrAttrObj(SdrModel& rSdrModel);
+ SdrAttrObj();
virtual ~SdrAttrObj() override;
public:
@@ -65,6 +71,8 @@ public:
bool HasLine() const;
virtual const tools::Rectangle& GetSnapRect() const override;
+
+ virtual void SetModel(SdrModel* pNewModel) override;
};
diff --git a/include/svx/svdobj.hxx b/include/svx/svdobj.hxx
index 7d033605933a..3f01cbb82ff6 100644
--- a/include/svx/svdobj.hxx
+++ b/include/svx/svdobj.hxx
@@ -74,11 +74,10 @@ class SdrLayerIDSet;
class OutputDevice;
class Fraction;
-namespace basegfx
-{
- class B2DPoint;
- class B2DPolyPolygon;
- class B2DHomMatrix;
+namespace basegfx {
+class B2DPoint;
+class B2DPolyPolygon;
+class B2DHomMatrix;
}
namespace sdr
@@ -104,8 +103,6 @@ namespace svx
class PropertyChangeNotifier;
}
-class SvxShape;
-
enum SdrObjKind {
OBJ_NONE = 0, /// abstract object (SdrObject)
OBJ_GRUP = 1, /// object group
@@ -268,45 +265,9 @@ public:
SdrObjTransformInfoRec();
};
-////////////////////////////////////////////////////////////////////////////////////////////////////
-//
-// SdrObject
-// SdrAttrObj
-// E3dObject
-// E3dCompoundObject
-// E3dCubeObj
-// E3dExtrudeObj
-// E3dLatheObj
-// E3dPolygonObj
-// E3dSphereObj
-// E3dScene
-// SdrTextObj
-// SdrObjCustomShape
-// OCustomShape
-// SdrEdgeObj
-// SdrMeasureObj
-// SdrPathObj
-// SdrRectObj
-// SdrCaptionObj
-// SdrCircObj
-// SdrGrafObj
-// SdrMediaObj
-// SdrOle2Obj
-// OOle2Obj
-// SdrUnoObj
-// DlgEdObj
-// DlgEdForm
-// OUnoObject
-// FmFormObj
-// SdrTableObj
-// SdrObjGroup
-// SdrPageObj
-// SdrVirtObj
-// SwDrawVirtObj
-// SwVirtFlyDrawObj
-// SwFlyDrawObj
-
/// Abstract DrawObject
+
+class SvxShape;
class SVX_DLLPUBLIC SdrObject: public SfxListener, public virtual tools::WeakBase
{
private:
@@ -335,16 +296,8 @@ private:
public:
const SdrObject* getFillGeometryDefiningShape() const { return mpFillGeometryDefiningShape; }
-private:
- // the SdrModel this objects was created with, unchanged during SdrObject lifetime
- SdrModel& mrSdrModelFromSdrObject;
-
public:
- // A SdrObject always needs a SdrModel for lifetime (Pool, ...)
- SdrObject(SdrModel& rSdrModel);
-
- // SdrModel access on SdrObject level
- SdrModel& getSdrModelFromSdrObject() const { return mrSdrModelFromSdrObject; }
+ SdrObject();
void AddObjectUser(sdr::ObjectUser& rNewUser);
void RemoveObjectUser(sdr::ObjectUser& rOldUser);
@@ -388,6 +341,9 @@ public:
virtual void SetPage(SdrPage* pNewPage);
SdrPage* GetPage() const { return pPage;}
+
+ virtual void SetModel(SdrModel* pNewModel);
+ SdrModel* GetModel() const { return pModel;}
SfxItemPool & GetObjectItemPool() const;
void AddListener(SfxListener& rListener);
@@ -482,7 +438,7 @@ public:
// Returns a copy of the object. Every inherited class must reimplement this (in class Foo
// it should be sufficient to do "virtual Foo* Clone() const { return CloneHelper< Foo >(); }".
// Note that this function uses operator= internally.
- virtual SdrObject* Clone(SdrModel* pTargetModel = nullptr) const;
+ virtual SdrObject* Clone() const;
// implemented mainly for the purposes of Clone()
SdrObject& operator=(const SdrObject& rObj);
@@ -768,9 +724,7 @@ public:
// when there is no filled new polygon created from line-to-polygon conversion,
// specially used for XLINE_DASH and 3D conversion
SdrObject* ConvertToContourObj(SdrObject* pRet, bool bForceLineDash = false) const;
-private:
- SdrObject* ImpConvertToContourObj(bool bForceLineDash);
-public:
+ static SdrObject* ImpConvertToContourObj(SdrObject* pRet, bool bForceLineDash);
// if true, reference onto an object
bool IsVirtualObj() const { return bVirtObj;}
@@ -808,6 +762,9 @@ public:
// removes the record from the list and performs delete (FreeMem+Dtor).
void DeleteUserData(sal_uInt16 nNum);
+ // switch ItemPool for this object
+ void MigrateItemPool(SfxItemPool* pSrcPool, SfxItemPool* pDestPool, SdrModel* pNewModel);
+
// access to the UNO representation of the shape
virtual css::uno::Reference< css::uno::XInterface > getUnoShape();
@@ -910,6 +867,7 @@ protected:
tools::Rectangle aOutRect; // surrounding rectangle for Paint (incl. LineWdt, ...)
Point aAnchor; // anchor position (Writer)
SdrPage* pPage;
+ SdrModel* pModel;
SdrObjUserCall* pUserCall;
std::unique_ptr<SdrObjPlusData>
pPlusData; // Broadcaster, UserData, connectors, ... (this is the Bitsack)
@@ -951,6 +909,7 @@ protected:
void ImpForcePlusData();
+ OUString GetAngleStr(long nAngle) const;
OUString GetMetrStr(long nVal) const;
/// A derived class must override these 3 methods if it has own geometric
@@ -986,7 +945,7 @@ protected:
virtual void impl_setUnoShape( const css::uno::Reference< css::uno::XInterface >& _rxUnoShape );
// helper function for reimplementing Clone().
- template< typename T > T* CloneHelper(SdrModel* pTargetModel) const;
+ template< typename T > T* CloneHelper() const;
private:
struct Impl;
@@ -1047,7 +1006,6 @@ struct SdrObjCreatorParams
{
SdrInventor nInventor;
sal_uInt16 nObjIdentifier;
- SdrModel& rSdrModel;
};
/**
@@ -1061,40 +1019,23 @@ struct SdrObjCreatorParams
class SVX_DLLPUBLIC SdrObjFactory
{
public:
- static SdrObject* MakeNewObject(
- SdrModel& rSdrModel,
- SdrInventor nInventor,
- sal_uInt16 nObjIdentifier,
- SdrPage* pPage = nullptr,
- const tools::Rectangle* pSnapRect = nullptr);
-
+ static SdrObject* MakeNewObject(SdrInventor nInventor, sal_uInt16 nObjIdentifier, SdrPage* pPage, SdrModel* pModel=nullptr);
+ static SdrObject* MakeNewObject(SdrInventor nInventor, sal_uInt16 nObjIdentifier, const tools::Rectangle& rSnapRect, SdrPage* pPage);
static void InsertMakeObjectHdl(Link<SdrObjCreatorParams, SdrObject*> const & rLink);
static void RemoveMakeObjectHdl(Link<SdrObjCreatorParams, SdrObject*> const & rLink);
private:
- static SVX_DLLPRIVATE SdrObject* CreateObjectFromFactory(
- SdrModel& rSdrModel,
- SdrInventor nInventor,
- sal_uInt16 nIdentifier);
+ static SVX_DLLPRIVATE SdrObject* CreateObjectFromFactory( SdrInventor nInventor, sal_uInt16 nIdentifier );
SdrObjFactory() = delete;
};
-template< typename T > T* SdrObject::CloneHelper(SdrModel* pTargetModel) const
+template< typename T > T* SdrObject::CloneHelper() const
{
OSL_ASSERT( typeid( T ) == typeid( *this ));
- T* pObj = dynamic_cast< T* >(
- SdrObjFactory::MakeNewObject(
- nullptr == pTargetModel ? getSdrModelFromSdrObject() : *pTargetModel,
- GetObjInventor(),
- GetObjIdentifier()));
-
- if(nullptr != pObj)
- {
- // use ::operator=()
- *pObj = *static_cast< const T* >( this );
- }
-
+ T* pObj = dynamic_cast< T* >( SdrObjFactory::MakeNewObject(GetObjInventor(),GetObjIdentifier(),nullptr));
+ if (pObj!=nullptr)
+ *pObj=*static_cast< const T* >( this );
return pObj;
}
diff --git a/include/svx/svdocapt.hxx b/include/svx/svdocapt.hxx
index baa0e0390bd6..3dd68293708a 100644
--- a/include/svx/svdocapt.hxx
+++ b/include/svx/svdocapt.hxx
@@ -25,20 +25,28 @@
// Forward Declarations
+
+
class ImpCaptParams;
namespace sdr { namespace properties {
class CaptionProperties;
}}
+
// Helper Class SdrCaptObjGeoData
+
+
class SdrCaptObjGeoData : public SdrTextObjGeoData
{
public:
tools::Polygon aTailPoly;
};
+
// SdrCaptionObj
+
+
class SVX_DLLPUBLIC SdrCaptionObj : public SdrRectObj
{
private:
@@ -65,20 +73,13 @@ private:
SVX_DLLPRIVATE void ImpRecalcTail();
public:
- SdrCaptionObj(SdrModel& rSdrModel);
- SdrCaptionObj(
- SdrModel& rSdrModel,
- const tools::Rectangle& rRect,
- const Point& rTail);
-
+ SdrCaptionObj();
+ SdrCaptionObj(const tools::Rectangle& rRect, const Point& rTail);
virtual ~SdrCaptionObj() override;
virtual void TakeObjInfo(SdrObjTransformInfoRec& rInfo) const override;
virtual sal_uInt16 GetObjIdentifier() const override;
- virtual SdrCaptionObj* Clone(SdrModel* pTargetModel = nullptr) const override;
-
- // implemented mainly for the purposes of Clone()
- SdrCaptionObj& operator=(const SdrCaptionObj& rObj);
+ virtual SdrCaptionObj* Clone() const override;
// for calc: special shadow only for text box
void SetSpecialTextBoxShadow() { mbSpecialTextBoxShadow = true; }
@@ -91,6 +92,7 @@ public:
virtual OUString TakeObjNamePlural() const override;
virtual basegfx::B2DPolyPolygon TakeXorPoly() const override;
+ virtual void SetModel(SdrModel* pNewModel) override;
virtual void Notify(SfxBroadcaster& rBC, const SfxHint& rHint) override;
virtual sal_uInt32 GetHdlCount() const override;
diff --git a/include/svx/svdocirc.hxx b/include/svx/svdocirc.hxx
index fc3045585aa6..d3bc9c2116f5 100644
--- a/include/svx/svdocirc.hxx
+++ b/include/svx/svdocirc.hxx
@@ -66,25 +66,14 @@ private:
virtual void Notify(SfxBroadcaster& rBC, const SfxHint& rHint) override;
public:
- SdrCircObj(
- SdrModel& rSdrModel,
- SdrObjKind eNewKind); // Circ, CArc, Sect or CCut
- SdrCircObj(
- SdrModel& rSdrModel,
- SdrObjKind eNewKind,
- const tools::Rectangle& rRect);
+ SdrCircObj(SdrObjKind eNewKind); // Circ, CArc, Sect or CCut
+ SdrCircObj(SdrObjKind eNewKind, const tools::Rectangle& rRect);
// 0=0.00Deg=3h 9000=90.00Deg=12h 18000=180.00Deg=9h 27000=270.00Deg=6h
// The circle is build up from StartAngle to EndWink anti-clockwise.
// If nNewStartAngle==nNewEndWink, then arc has an angle of 0 degrees.
// If nNewStartAngle+36000==nNewEndWink, then the arc has angle of 360 degrees.
- SdrCircObj(
- SdrModel& rSdrModel,
- SdrObjKind eNewKind,
- const tools::Rectangle& rRect,
- long nNewStartAngle,
- long nNewEndWink);
-
+ SdrCircObj(SdrObjKind eNewKind, const tools::Rectangle& rRect, long nNewStartAngle, long nNewEndWink);
virtual ~SdrCircObj() override;
virtual void TakeObjInfo(SdrObjTransformInfoRec& rInfo) const override;
@@ -94,11 +83,7 @@ public:
virtual OUString TakeObjNameSingul() const override;
virtual OUString TakeObjNamePlural() const override;
- virtual SdrCircObj* Clone(SdrModel* pTargetModel = nullptr) const override;
-
- // implemented mainly for the purposes of Clone()
- SdrCircObj& operator=(const SdrCircObj& rObj);
-
+ virtual SdrCircObj* Clone() const override;
virtual void RecalcSnapRect() override;
virtual void NbcSetSnapRect(const tools::Rectangle& rRect) override;
virtual basegfx::B2DPolyPolygon TakeXorPoly() const override;
diff --git a/include/svx/svdoedge.hxx b/include/svx/svdoedge.hxx
index ae28ad7103be..5b11da0feaef 100644
--- a/include/svx/svdoedge.hxx
+++ b/include/svx/svdoedge.hxx
@@ -187,7 +187,8 @@ protected:
void ImpSetEdgeInfoToAttr(); // copying values from the aEdgeInfo to the pool
public:
- SdrEdgeObj(SdrModel& rSdrModel);
+
+ SdrEdgeObj();
virtual ~SdrEdgeObj() override;
SdrObjConnection& GetConnection(bool bTail1) { return *(bTail1 ? &aCon1 : &aCon2); }
@@ -213,7 +214,7 @@ public:
virtual void RecalcSnapRect() override;
virtual void TakeUnrotatedSnapRect(tools::Rectangle& rRect) const override;
- virtual SdrEdgeObj* Clone(SdrModel* pTargetModel = nullptr) const override;
+ virtual SdrEdgeObj* Clone() const override;
SdrEdgeObj& operator=(const SdrEdgeObj& rObj);
virtual OUString TakeObjNameSingul() const override;
virtual OUString TakeObjNamePlural() const override;
diff --git a/include/svx/svdograf.hxx b/include/svx/svdograf.hxx
index d11a289060f8..65b934847489 100644
--- a/include/svx/svdograf.hxx
+++ b/include/svx/svdograf.hxx
@@ -129,16 +129,10 @@ private:
public:
- SdrGrafObj(SdrModel& rSdrModel);
- SdrGrafObj(
- SdrModel& rSdrModel,
- const Graphic& rGrf);
- SdrGrafObj(
- SdrModel& rSdrModel,
- const Graphic& rGrf,
- const tools::Rectangle& rRect);
-
- virtual ~SdrGrafObj() override;
+ SdrGrafObj();
+ SdrGrafObj(const Graphic& rGrf);
+ SdrGrafObj(const Graphic& rGrf, const tools::Rectangle& rRect);
+ virtual ~SdrGrafObj() override;
void SetGraphicObject( const GraphicObject& rGrfObj );
const GraphicObject& GetGraphicObject(bool bForceSwapIn = false) const;
@@ -149,7 +143,9 @@ public:
const Graphic& GetGraphic() const;
Graphic GetTransformedGraphic( SdrGrafObjTransformsAttrs nTransformFlags = SdrGrafObjTransformsAttrs::ALL ) const;
+
GraphicType GetGraphicType() const;
+
GraphicAttr GetGraphicAttr( SdrGrafObjTransformsAttrs nTransformFlags = SdrGrafObjTransformsAttrs::ALL ) const;
// Keep ATM for SD.
@@ -186,7 +182,7 @@ public:
// #i25616#
virtual basegfx::B2DPolyPolygon TakeXorPoly() const override;
- virtual SdrGrafObj* Clone(SdrModel* pTargetModel = nullptr) const override;
+ virtual SdrGrafObj* Clone() const override;
SdrGrafObj& operator=(const SdrGrafObj& rObj);
virtual sal_uInt32 GetHdlCount() const override;
@@ -201,6 +197,7 @@ public:
bool HasGDIMetaFile() const;
virtual void SetPage(SdrPage* pNewPage) override;
+ virtual void SetModel(SdrModel* pNewModel) override;
bool isEmbeddedVectorGraphicData() const;
GDIMetaFile getMetafileFromEmbeddedVectorGraphicData() const;
diff --git a/include/svx/svdogrp.hxx b/include/svx/svdogrp.hxx
index 7f0fb234f972..f15a9b92fb47 100644
--- a/include/svx/svdogrp.hxx
+++ b/include/svx/svdogrp.hxx
@@ -23,23 +23,30 @@
#include <memory>
#include <svx/svdobj.hxx>
#include <svx/svxdllapi.h>
-#include <svx/svdpage.hxx>
+
// Forward declarations
+
+
+class SdrObjList;
+class SdrObjListIter;
class SfxItemSet;
+
// SdrObjGroup
+
+
class SVX_DLLPUBLIC SdrObjGroup final : public SdrObject
{
private:
virtual sdr::contact::ViewContact* CreateObjectSpecificViewContact() override;
virtual sdr::properties::BaseProperties* CreateObjectSpecificProperties() override;
- SdrObjList maSdrObjList; // sub list (children)
- Point aRefPoint; // Reference point inside the object group
+ std::unique_ptr<SdrObjList> pSub; // sub list (children)
+ Point aRefPoint; // Reference point inside the object group
public:
- SdrObjGroup(SdrModel& rSdrModel);
+ SdrObjGroup();
virtual ~SdrObjGroup() override;
virtual void SetBoundRectDirty() override;
@@ -49,12 +56,13 @@ public:
virtual void NbcSetLayer(SdrLayerID nLayer) override;
virtual void SetObjList(SdrObjList* pNewObjList) override;
virtual void SetPage(SdrPage* pNewPage) override;
+ virtual void SetModel(SdrModel* pNewModel) override;
virtual SdrObjList* GetSubList() const override;
virtual const tools::Rectangle& GetCurrentBoundRect() const override;
virtual const tools::Rectangle& GetSnapRect() const override;
- virtual SdrObjGroup* Clone(SdrModel* pTargetModel = nullptr) const override;
+ virtual SdrObjGroup* Clone() const override;
SdrObjGroup& operator=(const SdrObjGroup& rObj);
virtual OUString TakeObjNameSingul() const override;
diff --git a/include/svx/svdomeas.hxx b/include/svx/svdomeas.hxx
index 00a4a9567546..be2ce849890b 100644
--- a/include/svx/svdomeas.hxx
+++ b/include/svx/svdomeas.hxx
@@ -85,20 +85,14 @@ protected:
virtual void RestGeoData(const SdrObjGeoData& rGeo) override;
public:
- SdrMeasureObj(SdrModel& rSdrModel);
- SdrMeasureObj(
- SdrModel& rSdrModel,
- const Point& rPt1,
- const Point& rPt2);
+ SdrMeasureObj();
+ SdrMeasureObj(const Point& rPt1, const Point& rPt2);
virtual ~SdrMeasureObj() override;
virtual void TakeObjInfo(SdrObjTransformInfoRec& rInfo) const override;
virtual sal_uInt16 GetObjIdentifier() const override;
virtual void TakeUnrotatedSnapRect(tools::Rectangle& rRect) const override;
- virtual SdrMeasureObj* Clone(SdrModel* pTargetModel = nullptr) const override;
-
- // implemented mainly for the purposes of Clone()
- SdrMeasureObj& operator=(const SdrMeasureObj& rObj);
+ virtual SdrMeasureObj* Clone() const override;
virtual OUString TakeObjNameSingul() const override;
virtual OUString TakeObjNamePlural() const override;
diff --git a/include/svx/svdomedia.hxx b/include/svx/svdomedia.hxx
index a45410f76bdf..43356da4e302 100644
--- a/include/svx/svdomedia.hxx
+++ b/include/svx/svdomedia.hxx
@@ -37,12 +37,10 @@ class SVX_DLLPUBLIC SdrMediaObj final : public SdrRectObj
public:
- SdrMediaObj(SdrModel& rSdrModel);
- SdrMediaObj(
- SdrModel& rSdrModel,
- const tools::Rectangle& rRect);
+ SdrMediaObj();
+ SdrMediaObj( const tools::Rectangle& rRect );
- virtual ~SdrMediaObj() override;
+ virtual ~SdrMediaObj() override;
virtual bool HasTextEdit() const override;
@@ -52,7 +50,7 @@ public:
virtual OUString TakeObjNameSingul() const override;
virtual OUString TakeObjNamePlural() const override;
- virtual SdrMediaObj* Clone(SdrModel* pTargetModel = nullptr) const override;
+ virtual SdrMediaObj* Clone() const override;
SdrMediaObj& operator=(const SdrMediaObj& rObj);
virtual void AdjustToMaxRect( const tools::Rectangle& rMaxRect, bool bShrinkOnly = false ) override;
diff --git a/include/svx/svdoole2.hxx b/include/svx/svdoole2.hxx
index b170f6ac6d03..edeccfa5984a 100644
--- a/include/svx/svdoole2.hxx
+++ b/include/svx/svdoole2.hxx
@@ -60,8 +60,6 @@ private:
SVX_DLLPRIVATE SdrObject* createSdrGrafObjReplacement(bool bAddText) const;
SVX_DLLPRIVATE void ImpSetVisAreaSize();
- SVX_DLLPRIVATE void Init();
-
protected:
virtual sdr::contact::ViewContact* CreateObjectSpecificViewContact() override;
virtual sdr::properties::BaseProperties* CreateObjectSpecificProperties() override;
@@ -69,15 +67,8 @@ protected:
public:
OUString GetStyleString();
- SdrOle2Obj(
- SdrModel& rSdrModel,
- bool bFrame_ = false);
- SdrOle2Obj(
- SdrModel& rSdrModel,
- const svt::EmbeddedObjectRef& rNewObjRef,
- const OUString& rNewObjName,
- const tools::Rectangle& rNewRect);
-
+ SdrOle2Obj( bool bFrame_ = false );
+ SdrOle2Obj( const svt::EmbeddedObjectRef& rNewObjRef, const OUString& rNewObjName, const tools::Rectangle& rNewRect );
virtual ~SdrOle2Obj() override;
const svt::EmbeddedObjectRef& getEmbeddedObjectRef() const;
@@ -121,6 +112,7 @@ public:
void AbandonObject();
virtual void SetPage(SdrPage* pNewPage) override;
+ virtual void SetModel(SdrModel* pModel) override;
/** Change the IsClosedObj attribute
@@ -137,7 +129,7 @@ public:
virtual OUString TakeObjNameSingul() const override;
virtual OUString TakeObjNamePlural() const override;
- virtual SdrOle2Obj* Clone(SdrModel* pTargetModel = nullptr) const override;
+ virtual SdrOle2Obj* Clone() const override;
SdrOle2Obj& assignFrom(const SdrOle2Obj& rObj);
SdrOle2Obj& operator=(const SdrOle2Obj& rObj);
diff --git a/include/svx/svdopage.hxx b/include/svx/svdopage.hxx
index 1f349a9a38ad..8893e812d783 100644
--- a/include/svx/svdopage.hxx
+++ b/include/svx/svdopage.hxx
@@ -41,14 +41,8 @@ protected:
virtual sdr::properties::BaseProperties* CreateObjectSpecificProperties() override;
public:
- SdrPageObj(
- SdrModel& rSdrModel,
- SdrPage* pNewPage = nullptr);
- SdrPageObj(
- SdrModel& rSdrModel,
- const tools::Rectangle& rRect,
- SdrPage* pNewPage = nullptr);
-
+ SdrPageObj(SdrPage* pNewPage = nullptr);
+ SdrPageObj(const tools::Rectangle& rRect, SdrPage* pNewPage = nullptr);
virtual ~SdrPageObj() override;
SdrPage* GetReferencedPage() const { return mpShownPage;}
@@ -59,7 +53,7 @@ public:
virtual sal_uInt16 GetObjIdentifier() const override;
virtual void TakeObjInfo(SdrObjTransformInfoRec& rInfo) const override;
- virtual SdrPageObj* Clone(SdrModel* pTargetModel = nullptr) const override;
+ virtual SdrPageObj* Clone() const override;
SdrPageObj& operator=(const SdrPageObj& rObj);
virtual OUString TakeObjNameSingul() const override;
diff --git a/include/svx/svdopath.hxx b/include/svx/svdopath.hxx
index 6c21fd06571a..e32ccf5116df 100644
--- a/include/svx/svdopath.hxx
+++ b/include/svx/svdopath.hxx
@@ -62,20 +62,14 @@ private:
ImpPathForDragAndCreate& impGetDAC() const;
public:
- SdrPathObj(
- SdrModel& rSdrModel,
- SdrObjKind eNewKind);
- SdrPathObj(
- SdrModel& rSdrModel,
- SdrObjKind eNewKind,
- const basegfx::B2DPolyPolygon& rPathPoly);
-
+ SdrPathObj(SdrObjKind eNewKind);
+ SdrPathObj(SdrObjKind eNewKind, const basegfx::B2DPolyPolygon& rPathPoly);
virtual ~SdrPathObj() override;
virtual void TakeObjInfo(SdrObjTransformInfoRec& rInfo) const override;
virtual sal_uInt16 GetObjIdentifier() const override;
virtual void TakeUnrotatedSnapRect(tools::Rectangle& rRect) const override;
- virtual SdrPathObj* Clone(SdrModel* pTargetModel = nullptr) const override;
+ virtual SdrPathObj* Clone() const override;
SdrPathObj& operator=(const SdrPathObj& rObj);
virtual OUString TakeObjNameSingul() const override;
diff --git a/include/svx/svdorect.hxx b/include/svx/svdorect.hxx
index f9c1c34fd145..729d3f221a05 100644
--- a/include/svx/svdorect.hxx
+++ b/include/svx/svdorect.hxx
@@ -66,22 +66,14 @@ public:
*
* Constructor of a rectangular drawing object
*/
- SdrRectObj(SdrModel& rSdrModel);
- SdrRectObj(
- SdrModel& rSdrModel,
- const tools::Rectangle& rRect);
+ SdrRectObj();
+ SdrRectObj(const tools::Rectangle& rRect);
SdrRectObj& operator=(const SdrRectObj& rCopy);
// Constructor of a text frame
- SdrRectObj(
- SdrModel& rSdrModel,
- SdrObjKind eNewTextKind);
- SdrRectObj(
- SdrModel& rSdrModel,
- SdrObjKind eNewTextKind,
- const tools::Rectangle& rRect);
-
+ SdrRectObj(SdrObjKind eNewTextKind);
+ SdrRectObj(SdrObjKind eNewTextKind, const tools::Rectangle& rRect);
virtual ~SdrRectObj() override;
virtual void TakeObjInfo(SdrObjTransformInfoRec& rInfo) const override;
@@ -91,7 +83,7 @@ public:
virtual OUString TakeObjNameSingul() const override;
virtual OUString TakeObjNamePlural() const override;
- virtual SdrRectObj* Clone(SdrModel* pTargetModel = nullptr) const override;
+ virtual SdrRectObj* Clone() const override;
virtual void RecalcSnapRect() override;
virtual void NbcSetSnapRect(const tools::Rectangle& rRect) override;
virtual void NbcSetLogicRect(const tools::Rectangle& rRect) override;
diff --git a/include/svx/svdotable.hxx b/include/svx/svdotable.hxx
index 7c5e30ec4e8d..c33551cccac7 100644
--- a/include/svx/svdotable.hxx
+++ b/include/svx/svdotable.hxx
@@ -98,20 +98,13 @@ class SVX_DLLPUBLIC SdrTableObj : public ::SdrTextObj
friend class SdrTableObjImpl;
public:
- SdrTableObj(SdrModel& rSdrModel);
- SdrTableObj(
- SdrModel& rSdrModel,
- const ::tools::Rectangle& rNewRect,
- sal_Int32 nColumns,
- sal_Int32 nRows);
-
+ SdrTableObj(SdrModel* _pModel);
+ SdrTableObj(SdrModel* _pModel, const ::tools::Rectangle& rNewRect, sal_Int32 nColumns, sal_Int32 nRows);
virtual ~SdrTableObj() override;
+
// Table stuff
- SdrTableObj* CloneRange(
- const CellPos& rStartPos,
- const CellPos& rEndPos,
- SdrModel& rTargetModel);
+ SdrTableObj* CloneRange( const CellPos& rStartPos, const CellPos& rEndPos );
void DistributeColumns( sal_Int32 nFirstColumn, sal_Int32 nLastColumn );
void DistributeRows( sal_Int32 nFirstRow, sal_Int32 nLastRow );
@@ -191,6 +184,7 @@ public:
virtual bool IsFontwork() const override;
+ virtual void SetModel(SdrModel* pNewModel) override;
virtual void TakeObjInfo(SdrObjTransformInfoRec& rInfo) const override;
virtual sal_uInt16 GetObjIdentifier() const override;
virtual void SetChanged() override;
@@ -199,7 +193,7 @@ public:
virtual bool AdjustTextFrameWidthAndHeight() override;
virtual OUString TakeObjNameSingul() const override;
virtual OUString TakeObjNamePlural() const override;
- virtual SdrTableObj* Clone(SdrModel* pTargetModel = nullptr) const override;
+ virtual SdrTableObj* Clone() const override;
SdrTableObj& operator=(const SdrTableObj& rObj);
virtual void RecalcSnapRect() override;
virtual const tools::Rectangle& GetSnapRect() const override;
diff --git a/include/svx/svdotext.hxx b/include/svx/svdotext.hxx
index 13ff8940d0c1..277f51ebba2c 100644
--- a/include/svx/svdotext.hxx
+++ b/include/svx/svdotext.hxx
@@ -136,13 +136,16 @@ class SVX_DLLPUBLIC SdrTextObj : public SdrAttrObj, public svx::ITextProvider
{
private:
// Cell needs access to ImpGetDrawOutliner();
+
friend class sdr::table::Cell;
friend class sdr::table::SdrTableRtfExporter;
friend class sdr::table::SdrTableRTFParser;
+
friend class TextChain;
friend class TextChainFlow;
friend class EditingTextChainFlow;
+
// CustomShapeproperties need to access the "bTextFrame" member:
friend class sdr::properties::CustomShapeProperties;
@@ -269,6 +272,7 @@ private:
SVX_DLLPRIVATE void ImpRegisterLink();
SVX_DLLPRIVATE void ImpDeregisterLink();
SVX_DLLPRIVATE ImpSdrObjTextLinkUserData* GetLinkUserData() const;
+// void ImpCheckItemSetChanges(const SfxItemSet& rAttr);
/** Appends the style family to a provided style name */
static void AppendFamilyToStyleName(OUString& styleName, SfxStyleFamily family);
@@ -302,19 +306,12 @@ protected:
virtual void AdaptTextMinSize();
// constructors for labeled graphical objects
- SdrTextObj(SdrModel& rSdrModel);
- SdrTextObj(
- SdrModel& rSdrModel,
- const tools::Rectangle& rNewRect);
+ SdrTextObj();
+ SdrTextObj(const tools::Rectangle& rNewRect);
// constructors for text frames
- SdrTextObj(
- SdrModel& rSdrModel,
- SdrObjKind eNewTextKind);
- SdrTextObj(
- SdrModel& rSdrModel,
- SdrObjKind eNewTextKind,
- const tools::Rectangle& rNewRect);
+ SdrTextObj(SdrObjKind eNewTextKind);
+ SdrTextObj(SdrObjKind eNewTextKind, const tools::Rectangle& rNewRect);
virtual ~SdrTextObj() override;
@@ -437,6 +434,7 @@ public:
SdrTextAniDirection GetTextAniDirection() const;
virtual void SetPage(SdrPage* pNewPage) override;
+ virtual void SetModel(SdrModel* pNewModel) override;
virtual void TakeObjInfo(SdrObjTransformInfoRec& rInfo) const override;
virtual sal_uInt16 GetObjIdentifier() const override;
@@ -444,7 +442,7 @@ public:
virtual void TakeUnrotatedSnapRect(tools::Rectangle& rRect) const;
virtual OUString TakeObjNameSingul() const override;
virtual OUString TakeObjNamePlural() const override;
- virtual SdrTextObj* Clone(SdrModel* pTargetModel = nullptr) const override;
+ virtual SdrTextObj* Clone() const override;
SdrTextObj& operator=(const SdrTextObj& rObj);
virtual basegfx::B2DPolyPolygon TakeXorPoly() const override;
virtual basegfx::B2DPolyPolygon TakeContour() const override;
diff --git a/include/svx/svdouno.hxx b/include/svx/svdouno.hxx
index d9dfb5d6acd2..48098ae65b37 100644
--- a/include/svx/svdouno.hxx
+++ b/include/svx/svdouno.hxx
@@ -61,19 +61,15 @@ private:
public:
- explicit SdrUnoObj(
- SdrModel& rSdrModel,
- const OUString& rModelName);
- SdrUnoObj(
- SdrModel& rSdrModel,
- const OUString& rModelName,
+ explicit SdrUnoObj(const OUString& rModelName);
+ SdrUnoObj(const OUString& rModelName,
const css::uno::Reference< css::lang::XMultiServiceFactory >& rxSFac);
virtual ~SdrUnoObj() override;
virtual void TakeObjInfo(SdrObjTransformInfoRec& rInfo) const override;
virtual sal_uInt16 GetObjIdentifier() const override;
- virtual SdrUnoObj* Clone(SdrModel* pTargetModel = nullptr) const override;
+ virtual SdrUnoObj* Clone() const override;
SdrUnoObj& operator= (const SdrUnoObj& rObj);
virtual void NbcResize(const Point& rRef, const Fraction& xFact, const Fraction& yFact) override;
virtual void NbcSetLayer(SdrLayerID nLayer) override;
@@ -81,6 +77,10 @@ public:
// SpecialDrag support
virtual bool hasSpecialDrag() const override;
+ // FullDrag support
+ virtual bool supportsFullDrag() const override;
+ virtual SdrObject* getFullDragClone() const override;
+
virtual OUString TakeObjNameSingul() const override;
virtual OUString TakeObjNamePlural() const override;
diff --git a/include/svx/svdovirt.hxx b/include/svx/svdovirt.hxx
index 9e4e6d9ed179..c6d626e1305f 100644
--- a/include/svx/svdovirt.hxx
+++ b/include/svx/svdovirt.hxx
@@ -37,7 +37,7 @@ protected:
virtual sdr::contact::ViewContact* CreateObjectSpecificViewContact() override;
SdrObject& rRefObj; // Referenced drawing object
- tools::Rectangle aSnapRect;
+ tools::Rectangle aSnapRect;
protected:
virtual void Notify(SfxBroadcaster& rBC, const SfxHint& rHint) override;
@@ -47,14 +47,12 @@ protected:
virtual void RestGeoData(const SdrObjGeoData& rGeo) override;
public:
- SdrVirtObj(
- SdrModel& rSdrModel,
- SdrObject& rNewObj);
+ SdrVirtObj(SdrObject& rNewObj);
virtual ~SdrVirtObj() override;
-
SdrObject& ReferencedObj();
const SdrObject& GetReferencedObj() const;
virtual void NbcSetAnchorPos(const Point& rAnchorPos) override;
+ virtual void SetModel(SdrModel* pNewModel) override;
virtual void TakeObjInfo(SdrObjTransformInfoRec& rInfo) const override;
virtual SdrInventor GetObjInventor() const override;
@@ -64,7 +62,7 @@ public:
virtual const tools::Rectangle& GetCurrentBoundRect() const override;
virtual const tools::Rectangle& GetLastBoundRect() const override;
virtual void RecalcBoundRect() override;
- virtual SdrVirtObj* Clone(SdrModel* pTargetModel = nullptr) const override;
+ virtual SdrVirtObj* Clone() const override;
SdrVirtObj& operator=(const SdrVirtObj& rObj);
virtual OUString TakeObjNameSingul() const override;
diff --git a/include/svx/svdpage.hxx b/include/svx/svdpage.hxx
index 1ea8f1f57358..1a7fdb59a7fa 100644
--- a/include/svx/svdpage.hxx
+++ b/include/svx/svdpage.hxx
@@ -53,26 +53,21 @@ class Color;
class SfxStyleSheet;
class SvxUnoDrawPagesAccess;
-////////////////////////////////////////////////////////////////////////////////////////////////////
-//
-// SdrObjList
-// E3dObjList
-// SdrPage -> see continuation there
-
// class SdrObjList
+
class SVX_DLLPUBLIC SdrObjList
{
-private:
SdrObjList(const SdrObjList& rSrcList) = delete;
SdrObjList &operator=(const SdrObjList& rSrcList) = delete;
private:
- ::std::vector<SdrObject*> maList;
+ ::std::vector<SdrObject*> maList;
protected:
friend class SdrObjListIter;
friend class SdrEditView;
SdrObjList* pUpList; /// parent list
+ SdrModel* pModel; /// model to which the list belongs (Layer,ItemPool,Storage)
SdrPage* pPage; /// Page containing the list, may be "this".
SdrObject* pOwnerObj; /// OwnerObject, if it's list of a Group object.
tools::Rectangle aOutRect;
@@ -80,20 +75,20 @@ friend class SdrEditView;
SdrObjListKind eListKind;
bool bObjOrdNumsDirty;
bool bRectsDirty;
-
protected:
void RecalcRects();
- void lateInitSdrObjList(const SdrObjList& rSrcList, SdrModel* pNewModel = nullptr);
+
+ SdrObjList();
+ void lateInit(const SdrObjList& rSrcList);
private:
/// simple ActionChildInserted forwarder to have it on a central place
static void impChildInserted(SdrObject const & rChild);
public:
- SdrObjList(SdrPage* pNewPage = nullptr);
+ SdrObjList(SdrModel* pNewModel, SdrPage* pNewPage);
virtual ~SdrObjList();
- virtual SdrObjList* CloneSdrObjList(SdrModel* pNewModel = nullptr) const;
- void CopyObjects(const SdrObjList& rSrcList, SdrModel* pNewModel = nullptr);
+ void CopyObjects(const SdrObjList& rSrcList);
/// clean up everything (without Undo)
void Clear();
SdrObjListKind GetListKind() const { return eListKind; }
@@ -104,7 +99,8 @@ public:
void SetOwnerObj(SdrObject* pNewOwner) { pOwnerObj=pNewOwner; }
SdrPage* GetPage() const;
void SetPage(SdrPage* pNewPage);
-
+ SdrModel* GetModel() const;
+ virtual void SetModel(SdrModel* pNewModel);
/// recalculate order numbers / ZIndex
void RecalcObjOrdNums();
bool IsObjOrdNumsDirty() const { return bObjOrdNumsDirty; }
@@ -352,17 +348,6 @@ public:
Also it's possible to request and directly set the order number (ZOrder)
of SdrObjects.
*/
-
-////////////////////////////////////////////////////////////////////////////////////////////////////
-//
-// SdrPage
-// DlgEdPage
-// FmFormPage
-// ScDrawPage
-// SdPage
-// SwDPage
-// OReportPage
-
class SVX_DLLPUBLIC SdrPage : public SdrObjList, public virtual tools::WeakBase
{
// #i9076#
@@ -373,8 +358,7 @@ class SVX_DLLPUBLIC SdrPage : public SdrObjList, public virtual tools::WeakBase
// and thus has to set mxUnoPage (it also relies on mxUnoPage not being WeakRef)
friend class reportdesign::OSection;
- SdrPage& operator=(const SdrPage&) = delete;
- SdrPage(const SdrPage&) = delete;
+ SdrPage& operator=(const SdrPage& rSrcPage) = delete;
// start PageUser section
private:
@@ -387,9 +371,6 @@ public:
void AddPageUser(sdr::PageUser& rNewUser);
void RemovePageUser(sdr::PageUser& rOldUser);
- // SdrModel access on SdrPage level
- SdrModel& getSdrModelFromSdrPage() const { return mrSdrModelFromSdrPage; }
-
protected:
sdr::contact::ViewContact* CreateObjectSpecificViewContact();
public:
@@ -400,10 +381,6 @@ public:
void ActionChanged();
private:
- // the SdrModel this page was created with, unchanged during SdrPage lifetime
- SdrModel& mrSdrModelFromSdrPage;
-
-private:
sal_Int32 mnWidth; // Seitengroesse
sal_Int32 mnHeight; // Seitengroesse
sal_Int32 mnBorderLeft; // Seitenrand links
@@ -443,13 +420,14 @@ protected:
// to call lateInit() after copy-construction of a new object. Any initialization in derived
// classes that needs access to the page objects must be deferred to lateInit. And it must
// call lateInit() of its parent class.
- void lateInit(const SdrPage& rSrcPage);
+ SdrPage(const SdrPage& rSrcPage);
+ void lateInit(const SdrPage& rSrcPage, SdrModel* pNewModel = nullptr);
public:
- explicit SdrPage(SdrModel& rModel, bool bMasterPage=false);
+ explicit SdrPage(SdrModel& rNewModel, bool bMasterPage=false);
virtual ~SdrPage() override;
-
- virtual SdrPage* Clone(SdrModel* pNewModel = nullptr) const;
+ virtual SdrPage* Clone() const;
+ virtual SdrPage* Clone(SdrModel* pNewModel) const;
bool IsMasterPage() const { return mbMaster; }
void SetInserted(bool bNew = true);
bool IsInserted() const { return mbInserted; }
@@ -480,6 +458,8 @@ public:
sal_Int32 GetRightBorder() const;
sal_Int32 GetLowerBorder() const;
+ virtual void SetModel(SdrModel* pNewModel) override;
+
// New MasterPage interface
bool TRG_HasMasterPage() const { return (nullptr != mpMasterPageDescriptor); }
void TRG_SetMasterPage(SdrPage& rNew);
@@ -525,6 +505,9 @@ public:
const sdr::contact::ViewObjectContact& rOriginal,
const sdr::contact::DisplayInfo& rDisplayInfo,
bool bEdit );
+
+private:
+ void impl_setModelForLayerAdmin(SdrModel* pNewModel);
};
diff --git a/include/svx/svdpntv.hxx b/include/svx/svdpntv.hxx
index 2405ad9ca4b5..eb48416af426 100644
--- a/include/svx/svdpntv.hxx
+++ b/include/svx/svdpntv.hxx
@@ -100,39 +100,12 @@ BitmapEx SVX_DLLPUBLIC convertMetafileToBitmapEx(
const basegfx::B2DRange& rTargetRange,
const sal_uInt32 nMaximumQuadraticPixels);
-////////////////////////////////////////////////////////////////////////////////////////////////////
-//
-// SdrPaintView
-// SdrSnapView
-// SdrMarkView
-// SdrEditView
-// SdrPolyEditView
-// SdrGlueEditView
-// SdrObjEditView
-// SdrExchangeView
-// SdrDragView
-// SdrCreateView
-// SdrView
-// DlgEdView
-// GraphCtrlView
-// E3dView
-// DrawViewWrapper
-// FmFormView
-// ScDrawView
-// sd::View (may have more?)
-// sd::DrawView
-// SwDrawView
-// OSectionView
class SVX_DLLPUBLIC SdrPaintView : public SfxListener, public SfxRepeatTarget, public SfxBroadcaster, public ::utl::ConfigurationListener
{
-private:
friend class SdrPageView;
friend class SdrGrafObj;
- // the SdrModel this view was created with, unchanged during lifetime
- SdrModel& mrSdrModelFromSdrView;
-
SdrPageView* mpPageView;
protected:
SdrModel* mpModel;
@@ -265,13 +238,10 @@ protected:
virtual void ModelHasChanged();
// #i71538# make constructors of SdrView sub-components protected to avoid incomplete incarnations which may get casted to SdrView
- // A SdrView always needs a SdrModel for lifetime (Pool, ...)
- SdrPaintView(SdrModel& rSdrModel, OutputDevice* pOut);
+ SdrPaintView(SdrModel* pModel1, OutputDevice* pOut);
virtual ~SdrPaintView() override;
public:
- // SdrModel access on SdrView level
- SdrModel& getSdrModelFromSdrView() const { return mrSdrModelFromSdrView; }
virtual void ClearPageView();
SdrModel* GetModel() const { return mpModel; }
diff --git a/include/svx/svdpoev.hxx b/include/svx/svdpoev.hxx
index 187eadd4ca12..c7a33bac1683 100644
--- a/include/svx/svdpoev.hxx
+++ b/include/svx/svdpoev.hxx
@@ -25,7 +25,7 @@
#include <svx/ipolypolygoneditorcontroller.hxx>
-class SVX_DLLPUBLIC SdrPolyEditView : public SdrEditView, public IPolyPolygonEditorController
+class SVX_DLLPUBLIC SdrPolyEditView: public SdrEditView, public IPolyPolygonEditorController
{
friend class SdrEditView;
@@ -45,10 +45,7 @@ private:
protected:
// #i71538# make constructors of SdrView sub-components protected to avoid incomplete incarnations which may get casted to SdrView
- SdrPolyEditView(
- SdrModel& rSdrModel,
- OutputDevice* pOut);
-
+ SdrPolyEditView(SdrModel* pModel1, OutputDevice* pOut);
virtual ~SdrPolyEditView() override;
public:
diff --git a/include/svx/svdsnpv.hxx b/include/svx/svdsnpv.hxx
index 0a40c9ac59ac..a90bdf34d392 100644
--- a/include/svx/svdsnpv.hxx
+++ b/include/svx/svdsnpv.hxx
@@ -90,7 +90,7 @@ enum class SdrCrookMode {
// #114409#-1 Migrate PageOrigin
class ImplPageOriginOverlay;
-class SVX_DLLPUBLIC SdrSnapView : public SdrPaintView
+class SVX_DLLPUBLIC SdrSnapView: public SdrPaintView
{
protected:
// #114409#-1 Migrate PageOrigin
@@ -127,10 +127,7 @@ protected:
protected:
// #i71538# make constructors of SdrView sub-components protected to avoid incomplete incarnations which may get casted to SdrView
- SdrSnapView(
- SdrModel& rSdrModel,
- OutputDevice* pOut);
-
+ SdrSnapView(SdrModel* pModel1, OutputDevice* pOut);
virtual ~SdrSnapView() override;
public:
diff --git a/include/svx/svdtext.hxx b/include/svx/svdtext.hxx
index 11b91f028fb8..020d8a483b4b 100644
--- a/include/svx/svdtext.hxx
+++ b/include/svx/svdtext.hxx
@@ -47,6 +47,7 @@ public:
explicit SdrText( SdrTextObj& rObject );
virtual ~SdrText() override;
+ virtual void SetModel(SdrModel* pNewModel);
void ForceOutlinerParaObject( OutlinerMode nOutlMode );
virtual void SetOutlinerParaObject( OutlinerParaObject* pTextObject );
@@ -59,8 +60,7 @@ public:
// return a text-specific ItemSet
virtual const SfxItemSet& GetItemSet() const;
- // This class does not need an own SdrModel reference - always
- // has the SdrTextObj working with so can use SdrModel::getSdrModelFromSdrObject()
+ SdrModel* GetModel() const { return mpModel; }
SdrTextObj& GetObject() const { return mrObject; }
/** returns the current OutlinerParaObject and removes it from this instance */
@@ -76,6 +76,7 @@ protected:
private:
std::unique_ptr<OutlinerParaObject> mpOutlinerParaObject;
SdrTextObj& mrObject;
+ SdrModel* mpModel;
bool mbPortionInfoChecked;
};
diff --git a/include/svx/svdview.hxx b/include/svx/svdview.hxx
index 2bab7eaed548..e9d0f51aa476 100644
--- a/include/svx/svdview.hxx
+++ b/include/svx/svdview.hxx
@@ -144,7 +144,7 @@ public:
};
-class SVX_DLLPUBLIC SdrView : public SdrCreateView, public virtual tools::WeakBase
+class SVX_DLLPUBLIC SdrView: public SdrCreateView, public virtual tools::WeakBase
{
friend class SdrPageView;
@@ -156,10 +156,7 @@ protected:
SvtAccessibilityOptions maAccessibilityOptions;
public:
- explicit SdrView(
- SdrModel& rSdrModel,
- OutputDevice* pOut = nullptr);
-
+ explicit SdrView(SdrModel* pModel1, OutputDevice* pOut = nullptr);
virtual ~SdrView() override;
// The default value for all dispatchers is activated. If the app for example
diff --git a/include/svx/svdxcgv.hxx b/include/svx/svdxcgv.hxx
index 52dc63b1a282..8c4deca123b9 100644
--- a/include/svx/svdxcgv.hxx
+++ b/include/svx/svdxcgv.hxx
@@ -25,7 +25,7 @@
#include <vcl/gdimtf.hxx>
#include <svx/svxdllapi.h>
-class SVX_DLLPUBLIC SdrExchangeView : public SdrObjEditView
+class SVX_DLLPUBLIC SdrExchangeView: public SdrObjEditView
{
friend class SdrPageView;
@@ -40,9 +40,7 @@ protected:
protected:
// #i71538# make constructors of SdrView sub-components protected to avoid incomplete incarnations which may get casted to SdrView
- SdrExchangeView(
- SdrModel& rSdrModel,
- OutputDevice* pOut);
+ SdrExchangeView(SdrModel* pModel1, OutputDevice* pOut);
public:
// Output all marked objects on the specified OutputDevice
@@ -74,16 +72,20 @@ public:
Graphic GetAllMarkedGraphic() const;
- /** Generate a Graphic for the given draw object
+ /** Generate a Graphic for the given draw object in the given model
- @param rSdrObject
+ @param pModel
+ Must not be NULL. Denotes the draw model the object is a part
+ of.
+
+ @param pObj
The object (can also be a group object) to retrieve a Graphic
- for.
+ for. Must not be NULL.
@return a graphical representation of the given object, as it
appears on screen (e.g. with rotation, if any, applied).
*/
- static Graphic GetObjGraphic(const SdrObject& rSdrObject);
+ static Graphic GetObjGraphic( const SdrModel* pModel, const SdrObject* pObj );
// The new Draw objects are marked for all paste methods.
// If bAddMark is true, the new Draw objects are added to an existing
diff --git a/include/svx/svxdlg.hxx b/include/svx/svxdlg.hxx
index ae84bb361a92..77f4437f8ae9 100644
--- a/include/svx/svxdlg.hxx
+++ b/include/svx/svxdlg.hxx
@@ -464,7 +464,7 @@ public:
const sal_uInt16 _nInitiallySelectedEvent
) = 0;
- virtual VclPtr<SfxAbstractTabDialog> CreateSvxFormatCellsDialog( const SfxItemSet* pAttr, const SdrModel& rModel, const SdrObject* pObj )=0;
+ virtual VclPtr<SfxAbstractTabDialog> CreateSvxFormatCellsDialog( const SfxItemSet* pAttr, SdrModel* pModel, const SdrObject* pObj )=0;
virtual VclPtr<SvxAbstractSplitTableDialog> CreateSvxSplitTableDialog(weld::Window* pParent, bool bIsTableVertical, long nMaxVertical) = 0;
diff --git a/include/svx/unomod.hxx b/include/svx/unomod.hxx
index 04571c9071b2..630c51ce52e4 100644
--- a/include/svx/unomod.hxx
+++ b/include/svx/unomod.hxx
@@ -32,10 +32,6 @@ SVX_DLLPUBLIC css::uno::Reference< css::container::XIndexReplace > SvxCreateNumR
class SVX_DLLPUBLIC SvxUnoDrawMSFactory : public css::lang::XMultiServiceFactory
{
-protected:
- /** abstract SdrModel provider */
- virtual SdrModel* getSdrModelFromUnoModel() const = 0; //TTTT make reference return
-
public:
SvxUnoDrawMSFactory() throw() {};
diff --git a/include/svx/unomodel.hxx b/include/svx/unomodel.hxx
index e637e4486d2a..ab9ab9ed2cec 100644
--- a/include/svx/unomodel.hxx
+++ b/include/svx/unomodel.hxx
@@ -31,12 +31,11 @@
class SdrModel;
-class SVX_DLLPUBLIC SvxUnoDrawingModel
-: public SfxBaseModel, // implements SfxListener, OWEAKOBJECT & other
- public SvxFmMSFactory,
- public css::drawing::XDrawPagesSupplier,
- public css::lang::XServiceInfo,
- public css::ucb::XAnyCompareFactory
+class SVX_DLLPUBLIC SvxUnoDrawingModel : public SfxBaseModel, // implements SfxListener, OWEAKOBJECT & other
+ public SvxFmMSFactory,
+ public css::drawing::XDrawPagesSupplier,
+ public css::lang::XServiceInfo,
+ public css::ucb::XAnyCompareFactory
{
friend class SvxUnoDrawPagesAccess;
@@ -54,10 +53,6 @@ private:
css::uno::Sequence< css::uno::Type > maTypeSequence;
-protected:
- // SvxUnoDrawMSFactory
- virtual SdrModel* getSdrModelFromUnoModel() const override;
-
public:
SvxUnoDrawingModel( SdrModel* pDoc ) throw();
virtual ~SvxUnoDrawingModel() throw() override;
diff --git a/include/svx/unopage.hxx b/include/svx/unopage.hxx
index eefc11c61b2b..6f84e72b8e66 100644
--- a/include/svx/unopage.hxx
+++ b/include/svx/unopage.hxx
@@ -68,8 +68,8 @@ class SVX_DLLPUBLIC SvxDrawPage : public ::cppu::WeakAggImplHelper6< css::drawin
protected:
cppu::OBroadcastHelper mrBHelper;
- SdrPage* mpPage; // TTTT should be reference
- SdrModel* mpModel; // TTTT probably not needed -> use from SdrPage
+ SdrPage* mpPage;
+ SdrModel* mpModel;
SdrView* mpView;
void SelectObjectsInView( const css::uno::Reference< css::drawing::XShapes >& aShapes, SdrPageView* pPageView ) throw ();
@@ -83,6 +83,7 @@ class SVX_DLLPUBLIC SvxDrawPage : public ::cppu::WeakAggImplHelper6< css::drawin
// Internals
SdrPage* GetSdrPage() const { return mpPage; }
+ void ChangeModel( SdrModel* pNewModel );
// Creation of a SdrObject and insertion into the SdrPage
SdrObject *CreateSdrObject( const css::uno::Reference< css::drawing::XShape >& xShape, bool bBeginning = false ) throw();
diff --git a/include/svx/unoshape.hxx b/include/svx/unoshape.hxx
index 422f6b13b446..4bb90d88ee0e 100644
--- a/include/svx/unoshape.hxx
+++ b/include/svx/unoshape.hxx
@@ -137,10 +137,8 @@ protected:
const SvxItemPropertySet* mpPropSet;
const SfxItemPropertyMapEntry* maPropMapEntries;
-private:
- ::tools::WeakReference< SdrObject > mpSdrObjectWeakReference;
-
-protected:
+ ::tools::WeakReference< SdrObject > mpObj;
+ SdrModel* mpModel;
// translations for writer, which works in TWIPS
void ForceMetricToItemPoolMetric(Pair& rPoint) const throw();
void ForceMetricToItemPoolMetric(Point& rPoint) const throw() { ForceMetricToItemPoolMetric(rPoint.toPair()); }
@@ -208,13 +206,10 @@ public:
void TakeSdrObjectOwnership();
bool HasSdrObjectOwnership() const;
- // used exclusively by SdrObject
- void InvalidateSdrObject();
-
- // Encapsulated access to SdrObject
- SdrObject* GetSdrObject() const { return mpSdrObjectWeakReference.get(); }
- bool HasSdrObject() const { return mpSdrObjectWeakReference.is(); }
+ void ChangeModel( SdrModel* pNewModel );
+ void InvalidateSdrObject() { mpObj.reset( nullptr ); };
+ SdrObject* GetSdrObject() const {return mpObj.get();}
void SetShapeType( const OUString& ShapeType ) { maShapeType = ShapeType; }
/// @throws css::uno::RuntimeException
css::uno::Any GetBitmap( bool bMetaFile = false ) const;
diff --git a/include/svx/unoshtxt.hxx b/include/svx/unoshtxt.hxx
index f16358d2432d..f38cf8a62d0f 100644
--- a/include/svx/unoshtxt.hxx
+++ b/include/svx/unoshtxt.hxx
@@ -77,6 +77,8 @@ public:
virtual Point LogicToPixel( const Point&, const MapMode& ) const override;
virtual Point PixelToLogic( const Point&, const MapMode& ) const override;
+ void ChangeModel( SdrModel* pNewModel );
+
void UpdateOutliner();
private:
diff --git a/include/svx/view3d.hxx b/include/svx/view3d.hxx
index be4381c21351..48ff9b6f12b2 100644
--- a/include/svx/view3d.hxx
+++ b/include/svx/view3d.hxx
@@ -63,10 +63,7 @@ protected:
void BreakSingle3DObj(E3dObject* pObj);
public:
- E3dView(
- SdrModel& rSdrModel,
- OutputDevice* pOut);
-
+ E3dView(SdrModel* pModel, OutputDevice* pOut);
virtual ~E3dView() override;
// Output all marked Objects on the given OutputDevice.
diff --git a/reportdesign/inc/ReportDefinition.hxx b/reportdesign/inc/ReportDefinition.hxx
index 79c58c998600..6c0883c92a4a 100644
--- a/reportdesign/inc/ReportDefinition.hxx
+++ b/reportdesign/inc/ReportDefinition.hxx
@@ -186,14 +186,7 @@ namespace reportdesign
css::uno::Reference< css::uno::XComponentContext > getContext();
- protected:
- /** abstract SdrModel provider */
- virtual SdrModel* getSdrModelFromUnoModel() const override;
-
- public:
- //TTTT Needed? Or same as above?
static std::shared_ptr<rptui::OReportModel> getSdrModel(const css::uno::Reference< css::report::XReportDefinition >& _xReportDefinition);
-
private:
DECLARE_XINTERFACE( )
DECLARE_XTYPEPROVIDER( )
diff --git a/reportdesign/inc/RptObject.hxx b/reportdesign/inc/RptObject.hxx
index 17f433629c56..201782857e68 100644
--- a/reportdesign/inc/RptObject.hxx
+++ b/reportdesign/inc/RptObject.hxx
@@ -112,9 +112,7 @@ public:
*/
void releaseUnoShape() { m_xKeepShapeAlive.clear(); }
- static SdrObject* createObject(
- SdrModel& rTargetModel,
- const css::uno::Reference< css::report::XReportComponent>& _xComponent);
+ static SdrObject* createObject(const css::uno::Reference< css::report::XReportComponent>& _xComponent);
static sal_uInt16 getObjectType(const css::uno::Reference< css::report::XReportComponent>& _xComponent);
};
@@ -125,11 +123,9 @@ class REPORTDESIGN_DLLPUBLIC OCustomShape final : public SdrObjCustomShape , pub
friend class OReportPage;
friend class DlgEdFactory;
public:
- static OCustomShape* Create(
- SdrModel& rSdrModel,
- const css::uno::Reference< css::report::XReportComponent>& _xComponent)
+ static OCustomShape* Create( const css::uno::Reference< css::report::XReportComponent>& _xComponent )
{
- return new OCustomShape(rSdrModel, _xComponent );
+ return new OCustomShape( _xComponent );
}
virtual ~OCustomShape() override;
@@ -143,12 +139,8 @@ public:
private:
virtual void impl_setUnoShape( const css::uno::Reference< css::uno::XInterface >& rxUnoShape ) override;
- OCustomShape(
- SdrModel& rSdrModel,
- const css::uno::Reference< css::report::XReportComponent>& _xComponent);
- OCustomShape(
- SdrModel& rSdrModel,
- const OUString& _sComponentName);
+ OCustomShape(const css::uno::Reference< css::report::XReportComponent>& _xComponent);
+ OCustomShape(const OUString& _sComponentName);
virtual void NbcMove( const Size& rSize ) override;
virtual void NbcResize(const Point& rRef, const Fraction& xFact, const Fraction& yFact) override;
@@ -166,12 +158,9 @@ class REPORTDESIGN_DLLPUBLIC OOle2Obj final : public SdrOle2Obj , public OObject
friend class OReportPage;
friend class DlgEdFactory;
public:
- static OOle2Obj* Create(
- SdrModel& rSdrModel,
- const css::uno::Reference< css::report::XReportComponent>& _xComponent,
- sal_uInt16 _nType)
+ static OOle2Obj* Create( const css::uno::Reference< css::report::XReportComponent>& _xComponent,sal_uInt16 _nType )
{
- return new OOle2Obj(rSdrModel, _xComponent, _nType);
+ return new OOle2Obj( _xComponent,_nType );
}
virtual ~OOle2Obj() override;
@@ -182,7 +171,7 @@ public:
virtual sal_uInt16 GetObjIdentifier() const override;
virtual SdrInventor GetObjInventor() const override;
// Clone() should make a complete copy of the object.
- virtual OOle2Obj* Clone(SdrModel* pTargetModel = nullptr) const override;
+ virtual OOle2Obj* Clone() const override;
virtual void initializeOle() override;
OOle2Obj& operator=(const OOle2Obj& rObj);
@@ -190,14 +179,9 @@ public:
void initializeChart( const css::uno::Reference< css::frame::XModel>& _xModel);
private:
- OOle2Obj(
- SdrModel& rSdrModel,
- const css::uno::Reference< css::report::XReportComponent>& _xComponent,
- sal_uInt16 _nType);
- OOle2Obj(
- SdrModel& rSdrModel,
- const OUString& _sComponentName,
- sal_uInt16 _nType);
+ OOle2Obj(const css::uno::Reference< css::report::XReportComponent>& _xComponent,sal_uInt16 _nType);
+ OOle2Obj(const OUString& _sComponentName,sal_uInt16 _nType);
+
virtual void NbcMove( const Size& rSize ) override;
virtual void NbcResize(const Point& rRef, const Fraction& xFact, const Fraction& yFact) override;
@@ -224,15 +208,12 @@ class REPORTDESIGN_DLLPUBLIC OUnoObject: public SdrUnoObj , public OObjectBase
sal_uInt16 m_nObjectType;
protected:
- OUnoObject(SdrModel& rSdrModel,
- const OUString& _sComponentName,
- const OUString& rModelName,
- sal_uInt16 _nObjectType);
- OUnoObject(
- SdrModel& rSdrModel,
- const css::uno::Reference< css::report::XReportComponent>& _xComponent,
- const OUString& rModelName,
- sal_uInt16 _nObjectType);
+ OUnoObject(const OUString& _sComponentName
+ ,const OUString& rModelName
+ ,sal_uInt16 _nObjectType);
+ OUnoObject( const css::uno::Reference< css::report::XReportComponent>& _xComponent
+ ,const OUString& rModelName
+ ,sal_uInt16 _nObjectType);
virtual ~OUnoObject() override;
@@ -259,7 +240,7 @@ public:
virtual css::uno::Reference< css::uno::XInterface > getUnoShape() override;
virtual sal_uInt16 GetObjIdentifier() const override;
virtual SdrInventor GetObjInventor() const override;
- virtual OUnoObject* Clone(SdrModel* pTargetModel = nullptr) const override;
+ virtual OUnoObject* Clone() const override;
OUnoObject& operator=(const OUnoObject& rObj);
diff --git a/reportdesign/inc/RptPage.hxx b/reportdesign/inc/RptPage.hxx
index 2c45c93a8331..c168cd5f942f 100644
--- a/reportdesign/inc/RptPage.hxx
+++ b/reportdesign/inc/RptPage.hxx
@@ -35,21 +35,20 @@ class OReportModel;
class REPORTDESIGN_DLLPUBLIC OReportPage : public SdrPage
{
OReportPage& operator=(const OReportPage&) = delete;
- OReportPage(const OReportPage&) = delete;
OReportModel& rModel;
css::uno::Reference< css::report::XSection > m_xSection;
bool m_bSpecialInsertMode;
std::vector<SdrObject*> m_aTemporaryObjectList;
+ OReportPage(const OReportPage&);
+
// method to remove temporary objects, created by 'special mode'
// (BegDragObj)
void removeTempObject(SdrObject const *_pToRemoveObj);
virtual ~OReportPage() override;
- OReportModel& getOReportModelFromOReportPage() const { return rModel; }
-
protected:
virtual css::uno::Reference< css::uno::XInterface > createUnoPage() override;
public:
@@ -57,7 +56,9 @@ public:
OReportPage( OReportModel& rModel
,const css::uno::Reference< css::report::XSection >& _xSection );
- virtual SdrPage* Clone(SdrModel* pNewModel = nullptr) const override;
+
+ virtual SdrPage* Clone() const override;
+ virtual SdrPage* Clone( SdrModel* pNewModel ) const override;
virtual void NbcInsertObject(SdrObject* pObj, size_t nPos=SAL_MAX_SIZE) override;
virtual SdrObject* RemoveObject(size_t nObjNum) override;
diff --git a/reportdesign/source/core/api/ReportDefinition.cxx b/reportdesign/source/core/api/ReportDefinition.cxx
index 11064f21d36e..641b88d95e12 100644
--- a/reportdesign/source/core/api/ReportDefinition.cxx
+++ b/reportdesign/source/core/api/ReportDefinition.cxx
@@ -532,12 +532,10 @@ struct OReportDefinitionImpl
};
OReportDefinition::OReportDefinition(uno::Reference< uno::XComponentContext > const & _xContext)
-: ::cppu::BaseMutex(),
- ReportDefinitionBase(m_aMutex),
- ReportDefinitionPropertySet(_xContext,IMPLEMENTS_PROPERTY_SET,uno::Sequence< OUString >()),
- ::comphelper::IEmbeddedHelper(),
- m_aProps(new OReportComponentProperties(_xContext)),
- m_pImpl(new OReportDefinitionImpl(m_aMutex))
+: ReportDefinitionBase(m_aMutex)
+,ReportDefinitionPropertySet(_xContext,IMPLEMENTS_PROPERTY_SET,uno::Sequence< OUString >())
+,m_aProps(new OReportComponentProperties(_xContext))
+,m_pImpl(new OReportDefinitionImpl(m_aMutex))
{
m_aProps->m_sName = RptResId(RID_STR_REPORT);
osl_atomic_increment(&m_refCount);
@@ -550,16 +548,13 @@ OReportDefinition::OReportDefinition(uno::Reference< uno::XComponentContext > co
osl_atomic_decrement( &m_refCount );
}
-OReportDefinition::OReportDefinition(
- uno::Reference< uno::XComponentContext > const & _xContext,
- const uno::Reference< lang::XMultiServiceFactory>& _xFactory,
- uno::Reference< drawing::XShape >& _xShape)
-: ::cppu::BaseMutex(),
- ReportDefinitionBase(m_aMutex),
- ReportDefinitionPropertySet(_xContext,IMPLEMENTS_PROPERTY_SET,uno::Sequence< OUString >()),
- ::comphelper::IEmbeddedHelper(),
- m_aProps(new OReportComponentProperties(_xContext)),
- m_pImpl(new OReportDefinitionImpl(m_aMutex))
+OReportDefinition::OReportDefinition(uno::Reference< uno::XComponentContext > const & _xContext
+ ,const uno::Reference< lang::XMultiServiceFactory>& _xFactory
+ ,uno::Reference< drawing::XShape >& _xShape)
+: ReportDefinitionBase(m_aMutex)
+,ReportDefinitionPropertySet(_xContext,IMPLEMENTS_PROPERTY_SET,uno::Sequence< OUString >())
+,m_aProps(new OReportComponentProperties(_xContext))
+,m_pImpl(new OReportDefinitionImpl(m_aMutex))
{
m_aProps->m_sName = RptResId(RID_STR_REPORT);
m_aProps->m_xFactory = _xFactory;
@@ -2020,11 +2015,6 @@ std::shared_ptr<rptui::OReportModel> OReportDefinition::getSdrModel(const uno::R
return pReportModel;
}
-SdrModel* OReportDefinition::getSdrModelFromUnoModel() const
-{
- return m_pImpl->m_pReportModel.get();
-}
-
uno::Reference< uno::XInterface > SAL_CALL OReportDefinition::createInstanceWithArguments( const OUString& aServiceSpecifier, const uno::Sequence< uno::Any >& _aArgs)
{
::osl::MutexGuard aGuard(m_aMutex);
diff --git a/reportdesign/source/core/sdr/ReportDrawPage.cxx b/reportdesign/source/core/sdr/ReportDrawPage.cxx
index cf73d9c04c4b..e67f7a91626d 100644
--- a/reportdesign/source/core/sdr/ReportDrawPage.cxx
+++ b/reportdesign/source/core/sdr/ReportDrawPage.cxx
@@ -29,9 +29,9 @@
#include <svx/svdmodel.hxx>
#include <com/sun/star/beans/NamedValue.hpp>
#include <com/sun/star/embed/Aspects.hpp>
+
#include <tools/diagnose_ex.h>
#include <svx/unoshape.hxx>
-#include <svx/svdpage.hxx>
namespace reportdesign
{
@@ -49,12 +49,7 @@ SdrObject* OReportDrawPage::CreateSdrObject_(const uno::Reference< drawing::XSha
{
uno::Reference< report::XReportComponent> xReportComponent(xDescr,uno::UNO_QUERY);
if ( xReportComponent.is() )
- {
- return OObjectBase::createObject(
- GetSdrPage()->getSdrModelFromSdrPage(),
- xReportComponent);
- }
-
+ return OObjectBase::createObject(xReportComponent);
return SvxDrawPage::CreateSdrObject_( xDescr );
}
@@ -106,7 +101,7 @@ uno::Reference< drawing::XShape > OReportDrawPage::CreateShape( SdrObject *pObj
sal_Int64 nAspect = embed::Aspects::MSOLE_CONTENT;
uno::Reference < embed::XEmbeddedObject > xObj;
OUString sName;
- xObj = pObj->getSdrModelFromSdrObject().GetPersist()->getEmbeddedObjectContainer().CreateEmbeddedObject(
+ xObj = pObj->GetModel()->GetPersist()->getEmbeddedObjectContainer().CreateEmbeddedObject(
::comphelper::MimeConfigurationHelper::GetSequenceClassIDRepresentation(
"80243D39-6741-46C5-926E-069164FF87BB"), sName );
OSL_ENSURE(xObj.is(),"Embedded Object could not be created!");
@@ -136,8 +131,8 @@ uno::Reference< drawing::XShape > OReportDrawPage::CreateShape( SdrObject *pObj
try
{
- OReportModel& rRptModel(static_cast< OReportModel& >(pObj->getSdrModelFromSdrObject()));
- xRet.set( rRptModel.createShape(sServiceName,xShape,bChangeOrientation ? 0 : 1), uno::UNO_QUERY_THROW );
+ OReportModel* pRptModel = static_cast<OReportModel*>(pObj->GetModel());
+ xRet.set( pRptModel->createShape(sServiceName,xShape,bChangeOrientation ? 0 : 1), uno::UNO_QUERY_THROW );
}
catch( const uno::Exception& )
{
diff --git a/reportdesign/source/core/sdr/ReportUndoFactory.cxx b/reportdesign/source/core/sdr/ReportUndoFactory.cxx
index ee64aed0e003..e40411c3b2ec 100644
--- a/reportdesign/source/core/sdr/ReportUndoFactory.cxx
+++ b/reportdesign/source/core/sdr/ReportUndoFactory.cxx
@@ -35,9 +35,9 @@ SdrUndoAction* lcl_createUndo(SdrObject& rObject, Action _eAction, const char* p
uno::Reference< report::XGroup> xGroup = xSection->getGroup();
SdrUndoAction* pUndo = nullptr;
if ( xGroup.is() )
- pUndo = new OUndoGroupSectionAction(rObject.getSdrModelFromSdrObject(),_eAction,OGroupHelper::getMemberFunction(xSection),xGroup,xReportComponent,pCommentId);
+ pUndo = new OUndoGroupSectionAction(*rObject.GetModel(),_eAction,OGroupHelper::getMemberFunction(xSection),xGroup,xReportComponent,pCommentId);
else
- pUndo = new OUndoReportSectionAction(rObject.getSdrModelFromSdrObject(),_eAction,OReportHelper::getMemberFunction(xSection),xSection->getReportDefinition(),xReportComponent,pCommentId);
+ pUndo = new OUndoReportSectionAction(*rObject.GetModel(),_eAction,OReportHelper::getMemberFunction(xSection),xSection->getReportDefinition(),xReportComponent,pCommentId);
return pUndo;
}
diff --git a/reportdesign/source/core/sdr/RptObject.cxx b/reportdesign/source/core/sdr/RptObject.cxx
index 737c87e3b1fe..a0af522a616c 100644
--- a/reportdesign/source/core/sdr/RptObject.cxx
+++ b/reportdesign/source/core/sdr/RptObject.cxx
@@ -107,9 +107,7 @@ sal_uInt16 OObjectBase::getObjectType(const uno::Reference< report::XReportCompo
return 0;
}
-SdrObject* OObjectBase::createObject(
- SdrModel& rTargetModel,
- const uno::Reference< report::XReportComponent>& _xComponent)
+SdrObject* OObjectBase::createObject(const uno::Reference< report::XReportComponent>& _xComponent)
{
SdrObject* pNewObj = nullptr;
sal_uInt16 nType = OObjectBase::getObjectType(_xComponent);
@@ -117,11 +115,9 @@ SdrObject* OObjectBase::createObject(
{
case OBJ_DLG_FIXEDTEXT:
{
- OUnoObject* pUnoObj = new OUnoObject(
- rTargetModel,
- _xComponent,
- OUString("com.sun.star.form.component.FixedText"),
- OBJ_DLG_FIXEDTEXT);
+ OUnoObject* pUnoObj = new OUnoObject( _xComponent
+ ,OUString("com.sun.star.form.component.FixedText")
+ ,OBJ_DLG_FIXEDTEXT);
pNewObj = pUnoObj;
uno::Reference<beans::XPropertySet> xControlModel(pUnoObj->GetUnoControlModel(),uno::UNO_QUERY);
@@ -130,31 +126,23 @@ SdrObject* OObjectBase::createObject(
}
break;
case OBJ_DLG_IMAGECONTROL:
- pNewObj = new OUnoObject(
- rTargetModel,
- _xComponent,
- OUString("com.sun.star.form.component.DatabaseImageControl"),
- OBJ_DLG_IMAGECONTROL);
+ pNewObj = new OUnoObject(_xComponent
+ ,OUString("com.sun.star.form.component.DatabaseImageControl")
+ ,OBJ_DLG_IMAGECONTROL);
break;
case OBJ_DLG_FORMATTEDFIELD:
- pNewObj = new OUnoObject(
- rTargetModel,
- _xComponent,
- OUString("com.sun.star.form.component.FormattedField"),
- OBJ_DLG_FORMATTEDFIELD);
+ pNewObj = new OUnoObject( _xComponent
+ ,OUString("com.sun.star.form.component.FormattedField")
+ ,OBJ_DLG_FORMATTEDFIELD);
break;
case OBJ_DLG_HFIXEDLINE:
case OBJ_DLG_VFIXEDLINE:
- pNewObj = new OUnoObject(
- rTargetModel,
- _xComponent,
- OUString("com.sun.star.awt.UnoControlFixedLineModel"),
- nType);
+ pNewObj = new OUnoObject( _xComponent
+ ,OUString("com.sun.star.awt.UnoControlFixedLineModel")
+ ,nType);
break;
case OBJ_CUSTOMSHAPE:
- pNewObj = OCustomShape::Create(
- rTargetModel,
- _xComponent);
+ pNewObj = OCustomShape::Create( _xComponent );
try
{
bool bOpaque = false;
@@ -168,10 +156,7 @@ SdrObject* OObjectBase::createObject(
break;
case OBJ_DLG_SUBREPORT:
case OBJ_OLE2:
- pNewObj = OOle2Obj::Create(
- rTargetModel,
- _xComponent,
- nType);
+ pNewObj = OOle2Obj::Create( _xComponent,nType );
break;
default:
OSL_FAIL("Unknown object id");
@@ -470,21 +455,19 @@ uno::Reference< uno::XInterface > OObjectBase::getUnoShapeOf( SdrObject& _rSdrOb
return xShape;
}
-OCustomShape::OCustomShape(
- SdrModel& rSdrModel,
- const uno::Reference< report::XReportComponent>& _xComponent)
-: SdrObjCustomShape(rSdrModel)
- ,OObjectBase(_xComponent)
+
+OCustomShape::OCustomShape(const uno::Reference< report::XReportComponent>& _xComponent
+ )
+ :SdrObjCustomShape()
+ ,OObjectBase(_xComponent)
{
impl_setUnoShape( uno::Reference< uno::XInterface >(_xComponent,uno::UNO_QUERY) );
m_bIsListening = true;
}
-OCustomShape::OCustomShape(
- SdrModel& rSdrModel,
- const OUString& _sComponentName)
-: SdrObjCustomShape(rSdrModel)
- ,OObjectBase(_sComponentName)
+OCustomShape::OCustomShape(const OUString& _sComponentName)
+ :SdrObjCustomShape()
+ ,OObjectBase(_sComponentName)
{
m_bIsListening = true;
}
@@ -517,8 +500,8 @@ void OCustomShape::NbcMove( const Size& rSize )
if ( m_xReportComponent.is() )
{
- OReportModel& rRptModel(static_cast< OReportModel& >(getSdrModelFromSdrObject()));
- OXUndoEnvironment::OUndoEnvLock aLock(rRptModel.GetUndoEnv());
+ OReportModel* pRptModel = static_cast<OReportModel*>(GetModel());
+ OXUndoEnvironment::OUndoEnvLock aLock(pRptModel->GetUndoEnv());
m_xReportComponent->setPositionX(m_xReportComponent->getPositionX() + rSize.Width());
m_xReportComponent->setPositionY(m_xReportComponent->getPositionY() + rSize.Height());
}
@@ -550,12 +533,13 @@ bool OCustomShape::EndCreate(SdrDragStat& rStat, SdrCreateCmd eCmd)
bool bResult = SdrObjCustomShape::EndCreate(rStat, eCmd);
if ( bResult )
{
- OReportModel& rRptModel(static_cast< OReportModel& >(getSdrModelFromSdrObject()));
- OXUndoEnvironment::OUndoEnvLock aLock(rRptModel.GetUndoEnv());
-
- if ( !m_xReportComponent.is() )
- m_xReportComponent.set(getUnoShape(),uno::UNO_QUERY);
-
+ OReportModel* pRptModel = static_cast<OReportModel*>(GetModel());
+ if ( pRptModel )
+ {
+ OXUndoEnvironment::OUndoEnvLock aLock(pRptModel->GetUndoEnv());
+ if ( !m_xReportComponent.is() )
+ m_xReportComponent.set(getUnoShape(),uno::UNO_QUERY);
+ }
SetPropsFromRect(GetSnapRect());
}
@@ -574,8 +558,8 @@ uno::Reference< uno::XInterface > OCustomShape::getUnoShape()
uno::Reference< uno::XInterface> xShape = OObjectBase::getUnoShapeOf( *this );
if ( !m_xReportComponent.is() )
{
- OReportModel& rRptModel(static_cast< OReportModel& >(getSdrModelFromSdrObject()));
- OXUndoEnvironment::OUndoEnvLock aLock(rRptModel.GetUndoEnv());
+ OReportModel* pRptModel = static_cast<OReportModel*>(GetModel());
+ OXUndoEnvironment::OUndoEnvLock aLock(pRptModel->GetUndoEnv());
m_xReportComponent.set(xShape,uno::UNO_QUERY);
}
return xShape;
@@ -588,27 +572,24 @@ void OCustomShape::impl_setUnoShape( const uno::Reference< uno::XInterface >& rx
m_xReportComponent.clear();
}
-OUnoObject::OUnoObject(
- SdrModel& rSdrModel,
- const OUString& _sComponentName,
- const OUString& rModelName,
- sal_uInt16 _nObjectType)
-: SdrUnoObj(rSdrModel, rModelName)
- ,OObjectBase(_sComponentName)
- ,m_nObjectType(_nObjectType)
+
+OUnoObject::OUnoObject(const OUString& _sComponentName
+ ,const OUString& rModelName
+ ,sal_uInt16 _nObjectType)
+ :SdrUnoObj(rModelName)
+ ,OObjectBase(_sComponentName)
+ ,m_nObjectType(_nObjectType)
{
if ( !rModelName.isEmpty() )
impl_initializeModel_nothrow();
}
-OUnoObject::OUnoObject(
- SdrModel& rSdrModel,
- const uno::Reference< report::XReportComponent>& _xComponent,
- const OUString& rModelName,
- sal_uInt16 _nObjectType)
-: SdrUnoObj(rSdrModel, rModelName)
- ,OObjectBase(_xComponent)
- ,m_nObjectType(_nObjectType)
+OUnoObject::OUnoObject(const uno::Reference< report::XReportComponent>& _xComponent
+ ,const OUString& rModelName
+ ,sal_uInt16 _nObjectType)
+ :SdrUnoObj(rModelName)
+ ,OObjectBase(_xComponent)
+ ,m_nObjectType(_nObjectType)
{
impl_setUnoShape( uno::Reference< uno::XInterface >( _xComponent, uno::UNO_QUERY ) );
@@ -645,8 +626,12 @@ void OUnoObject::impl_setReportComponent_nothrow()
if ( m_xReportComponent.is() )
return;
- OReportModel& rRptModel(static_cast< OReportModel& >(getSdrModelFromSdrObject()));
- OXUndoEnvironment::OUndoEnvLock aLock( rRptModel.GetUndoEnv() );
+ OReportModel* pReportModel = static_cast<OReportModel*>(GetModel());
+ OSL_ENSURE( pReportModel, "OUnoObject::impl_setReportComponent_nothrow: no report model!" );
+ if ( !pReportModel )
+ return;
+
+ OXUndoEnvironment::OUndoEnvLock aLock( pReportModel->GetUndoEnv() );
m_xReportComponent.set(getUnoShape(),uno::UNO_QUERY);
impl_initializeModel_nothrow();
@@ -680,14 +665,13 @@ void OUnoObject::NbcMove( const Size& rSize )
if ( m_xReportComponent.is() )
{
bool bUndoMode = false;
- OReportModel& rRptModel(static_cast< OReportModel& >(getSdrModelFromSdrObject()));
-
- if (rRptModel.GetUndoEnv().IsUndoMode())
+ OReportModel* pRptModel = static_cast<OReportModel*>(GetModel());
+ if (pRptModel->GetUndoEnv().IsUndoMode())
{
// if we are locked from outside, then we must not handle wrong moves, we are in UNDO mode
bUndoMode = true;
}
- OXUndoEnvironment::OUndoEnvLock aLock(rRptModel.GetUndoEnv());
+ OXUndoEnvironment::OUndoEnvLock aLock(pRptModel->GetUndoEnv());
// LLA: why there exists getPositionX and getPositionY and NOT getPosition() which return a Point?
int nNewX = m_xReportComponent->getPositionX() + rSize.Width();
@@ -703,7 +687,7 @@ void OUnoObject::NbcMove( const Size& rSize )
}
if (bPositionFixed)
{
- getSdrModelFromSdrObject().AddUndo(getSdrModelFromSdrObject().GetSdrUndoFactory().CreateUndoMoveObject(*this, aUndoSize));
+ GetModel()->AddUndo(GetModel()->GetSdrUndoFactory().CreateUndoMoveObject(*this, aUndoSize));
}
// set geometry properties
SetPropsFromRect(GetLogicRect());
@@ -883,11 +867,6 @@ void OUnoObject::impl_setUnoShape( const uno::Reference< uno::XInterface >& rxUn
releaseUnoShape();
}
-OUnoObject* OUnoObject::Clone(SdrModel* pTargetModel) const
-{
- return CloneHelper< OUnoObject >(pTargetModel);
-}
-
OUnoObject& OUnoObject::operator=(const OUnoObject& rObj)
{
if( this == &rObj )
@@ -902,28 +881,29 @@ OUnoObject& OUnoObject::operator=(const OUnoObject& rObj)
return *this;
}
+OUnoObject* OUnoObject::Clone() const
+{
+ return CloneHelper< OUnoObject >();
+}
+
// OOle2Obj
-OOle2Obj::OOle2Obj(
- SdrModel& rSdrModel,
- const uno::Reference< report::XReportComponent>& _xComponent,
- sal_uInt16 _nType)
-: SdrOle2Obj(rSdrModel)
- ,OObjectBase(_xComponent)
- ,m_nType(_nType)
- ,m_bOnlyOnce(true)
+
+OOle2Obj::OOle2Obj(const uno::Reference< report::XReportComponent>& _xComponent,sal_uInt16 _nType)
+ :SdrOle2Obj()
+ ,OObjectBase(_xComponent)
+ ,m_nType(_nType)
+ ,m_bOnlyOnce(true)
{
+
impl_setUnoShape( uno::Reference< uno::XInterface >( _xComponent, uno::UNO_QUERY ) );
m_bIsListening = true;
}
-OOle2Obj::OOle2Obj(
- SdrModel& rSdrModel,
- const OUString& _sComponentName,
- sal_uInt16 _nType)
-: SdrOle2Obj(rSdrModel)
- ,OObjectBase(_sComponentName)
- ,m_nType(_nType)
- ,m_bOnlyOnce(true)
+OOle2Obj::OOle2Obj(const OUString& _sComponentName,sal_uInt16 _nType)
+ :SdrOle2Obj()
+ ,OObjectBase(_sComponentName)
+ ,m_nType(_nType)
+ ,m_bOnlyOnce(true)
{
m_bIsListening = true;
}
@@ -960,14 +940,13 @@ void OOle2Obj::NbcMove( const Size& rSize )
if ( m_xReportComponent.is() )
{
bool bUndoMode = false;
- OReportModel& rRptModel(static_cast< OReportModel& >(getSdrModelFromSdrObject()));
-
- if (rRptModel.GetUndoEnv().IsUndoMode())
+ OReportModel* pRptModel = static_cast<OReportModel*>(GetModel());
+ if (pRptModel->GetUndoEnv().IsUndoMode())
{
// if we are locked from outside, then we must not handle wrong moves, we are in UNDO mode
bUndoMode = true;
}
- OXUndoEnvironment::OUndoEnvLock aLock(rRptModel.GetUndoEnv());
+ OXUndoEnvironment::OUndoEnvLock aLock(pRptModel->GetUndoEnv());
// LLA: why there exists getPositionX and getPositionY and NOT getPosition() which return a Point?
int nNewX = m_xReportComponent->getPositionX() + rSize.Width();
@@ -988,7 +967,7 @@ void OOle2Obj::NbcMove( const Size& rSize )
}
if (bPositionFixed)
{
- getSdrModelFromSdrObject().AddUndo(getSdrModelFromSdrObject().GetSdrUndoFactory().CreateUndoMoveObject(*this, aUndoSize));
+ GetModel()->AddUndo(GetModel()->GetSdrUndoFactory().CreateUndoMoveObject(*this, aUndoSize));
}
// set geometry properties
SetPropsFromRect(GetLogicRect());
@@ -1034,12 +1013,13 @@ bool OOle2Obj::EndCreate(SdrDragStat& rStat, SdrCreateCmd eCmd)
bool bResult = SdrOle2Obj::EndCreate(rStat, eCmd);
if ( bResult )
{
- OReportModel& rRptModel(static_cast< OReportModel& >(getSdrModelFromSdrObject()));
- OXUndoEnvironment::OUndoEnvLock aLock(rRptModel.GetUndoEnv());
-
- if ( !m_xReportComponent.is() )
- m_xReportComponent.set(getUnoShape(),uno::UNO_QUERY);
-
+ OReportModel* pRptModel = static_cast<OReportModel*>(GetModel());
+ if ( pRptModel )
+ {
+ OXUndoEnvironment::OUndoEnvLock aLock(pRptModel->GetUndoEnv());
+ if ( !m_xReportComponent.is() )
+ m_xReportComponent.set(getUnoShape(),uno::UNO_QUERY);
+ }
// set geometry properties
SetPropsFromRect(GetLogicRect());
}
@@ -1058,8 +1038,8 @@ uno::Reference< uno::XInterface > OOle2Obj::getUnoShape()
uno::Reference< uno::XInterface> xShape = OObjectBase::getUnoShapeOf( *this );
if ( !m_xReportComponent.is() )
{
- OReportModel& rRptModel(static_cast< OReportModel& >(getSdrModelFromSdrObject()));
- OXUndoEnvironment::OUndoEnvLock aLock(rRptModel.GetUndoEnv());
+ OReportModel* pRptModel = static_cast<OReportModel*>(GetModel());
+ OXUndoEnvironment::OUndoEnvLock aLock(pRptModel->GetUndoEnv());
m_xReportComponent.set(xShape,uno::UNO_QUERY);
}
return xShape;
@@ -1088,32 +1068,33 @@ uno::Reference< chart2::data::XDatabaseDataProvider > lcl_getDataProvider(const
return xSource;
}
-// Clone() should make a complete copy of the object.
-OOle2Obj* OOle2Obj::Clone(SdrModel* pTargetModel) const
-{
- return CloneHelper< OOle2Obj >(pTargetModel);
-}
-
OOle2Obj& OOle2Obj::operator=(const OOle2Obj& rObj)
{
if( this == &rObj )
return *this;
SdrOle2Obj::operator=(rObj);
- OReportModel& rRptModel(static_cast< OReportModel& >(getSdrModelFromSdrObject()));
+ OReportModel* pRptModel = static_cast<OReportModel*>(rObj.GetModel());
svt::EmbeddedObjectRef::TryRunningState( GetObjRef() );
- impl_createDataProvider_nothrow(rRptModel.getReportDefinition().get());
+ impl_createDataProvider_nothrow(pRptModel->getReportDefinition().get());
uno::Reference< chart2::data::XDatabaseDataProvider > xSource( lcl_getDataProvider(rObj.GetObjRef()) );
uno::Reference< chart2::data::XDatabaseDataProvider > xDest( lcl_getDataProvider(GetObjRef()) );
if ( xSource.is() && xDest.is() )
comphelper::copyProperties(xSource.get(),xDest.get());
- initializeChart(rRptModel.getReportDefinition().get());
+ initializeChart(pRptModel->getReportDefinition().get());
return *this;
}
+
+// Clone() should make a complete copy of the object.
+OOle2Obj* OOle2Obj::Clone() const
+{
+ return CloneHelper< OOle2Obj >();
+}
+
void OOle2Obj::impl_createDataProvider_nothrow(const uno::Reference< frame::XModel>& _xModel)
{
try
@@ -1142,8 +1123,8 @@ void OOle2Obj::initializeOle()
{
m_bOnlyOnce = false;
uno::Reference < embed::XEmbeddedObject > xObj = GetObjRef();
- OReportModel& rRptModel(static_cast< OReportModel& >(getSdrModelFromSdrObject()));
- rRptModel.GetUndoEnv().AddElement(lcl_getDataProvider(xObj));
+ OReportModel* pRptModel = static_cast<OReportModel*>(GetModel());
+ pRptModel->GetUndoEnv().AddElement(lcl_getDataProvider(xObj));
uno::Reference< embed::XComponentSupplier > xCompSupp( xObj, uno::UNO_QUERY );
if( xCompSupp.is() )
@@ -1174,8 +1155,8 @@ void OOle2Obj::initializeChart( const uno::Reference< frame::XModel>& _xModel)
if ( !lcl_getDataProvider(xObj).is() )
impl_createDataProvider_nothrow(_xModel);
- OReportModel& rRptModel(static_cast< OReportModel& >(getSdrModelFromSdrObject()));
- rRptModel.GetUndoEnv().AddElement(lcl_getDataProvider(xObj));
+ OReportModel* pRptModel = static_cast<OReportModel*>(GetModel());
+ pRptModel->GetUndoEnv().AddElement(lcl_getDataProvider(xObj));
::comphelper::NamedValueCollection aArgs;
aArgs.put( "CellRangeRepresentation", uno::makeAny( OUString( "all" ) ) );
diff --git a/reportdesign/source/core/sdr/RptPage.cxx b/reportdesign/source/core/sdr/RptPage.cxx
index b4e09805f04c..0d3465e93b30 100644
--- a/reportdesign/source/core/sdr/RptPage.cxx
+++ b/reportdesign/source/core/sdr/RptPage.cxx
@@ -28,29 +28,48 @@ namespace rptui
{
using namespace ::com::sun::star;
-OReportPage::OReportPage(
- OReportModel& _rModel,
- const uno::Reference< report::XSection >& _xSection)
-: SdrPage(_rModel, false/*bMasterPage*/)
+
+OReportPage::OReportPage( OReportModel& _rModel
+ ,const uno::Reference< report::XSection >& _xSection )
+ :SdrPage( _rModel, false/*bMasterPage*/ )
,rModel(_rModel)
,m_xSection(_xSection)
- ,m_bSpecialInsertMode(false)
+ ,m_bSpecialInsertMode(false)
+{
+}
+
+
+OReportPage::OReportPage( const OReportPage& rPage )
+ :SdrPage( rPage )
+ ,rModel(rPage.rModel)
+ ,m_xSection(rPage.m_xSection)
+ ,m_bSpecialInsertMode(rPage.m_bSpecialInsertMode)
+ ,m_aTemporaryObjectList(rPage.m_aTemporaryObjectList)
{
}
+
OReportPage::~OReportPage()
{
}
-SdrPage* OReportPage::Clone(SdrModel* pNewModel) const
+
+SdrPage* OReportPage::Clone() const
+{
+ return Clone(nullptr);
+}
+
+SdrPage* OReportPage::Clone( SdrModel* const pNewModel ) const
{
- OReportModel& rOReportModel(static_cast< OReportModel& >(nullptr == pNewModel ? getSdrModelFromSdrPage() : *pNewModel));
- OReportPage* pClonedOReportPage(
- new OReportPage(
- rOReportModel,
- m_xSection));
- pClonedOReportPage->SdrPage::lateInit(*this);
- return pClonedOReportPage;
+ OReportPage *const pNewPage = new OReportPage( *this );
+ OReportModel* pReportModel = nullptr;
+ if ( pNewModel )
+ {
+ pReportModel = dynamic_cast<OReportModel*>( pNewModel );
+ assert( pReportModel );
+ }
+ pNewPage->lateInit( *this, pReportModel );
+ return pNewPage;
}
diff --git a/reportdesign/source/ui/inc/SectionView.hxx b/reportdesign/source/ui/inc/SectionView.hxx
index df3cbc7b060a..c5c48661c059 100644
--- a/reportdesign/source/ui/inc/SectionView.hxx
+++ b/reportdesign/source/ui/inc/SectionView.hxx
@@ -42,11 +42,7 @@ private:
void operator =(const OSectionView&) = delete;
public:
- OSectionView(
- SdrModel& rSdrModel,
- OReportSection* _pSectionWindow,
- OReportWindow* pEditor);
-
+ OSectionView( SdrModel* pModel, OReportSection* _pSectionWindow, OReportWindow* pEditor );
virtual ~OSectionView() override;
virtual void Notify( SfxBroadcaster& rBC, const SfxHint& rHint ) override;
diff --git a/reportdesign/source/ui/report/ReportController.cxx b/reportdesign/source/ui/report/ReportController.cxx
index 84a8569b430b..10e813dae9b9 100644
--- a/reportdesign/source/ui/report/ReportController.cxx
+++ b/reportdesign/source/ui/report/ReportController.cxx
@@ -3107,11 +3107,7 @@ void OReportController::createControl(const Sequence< PropertyValue >& _aArgs,co
uno::Reference< report::XReportComponent> xShapeProp;
if ( _nObjectId == OBJ_CUSTOMSHAPE )
{
- pNewControl = SdrObjFactory::MakeNewObject(
- *m_aReportModel,
- SdrInventor::ReportDesign,
- _nObjectId,
- pSectionWindow->getReportSection().getPage());
+ pNewControl = SdrObjFactory::MakeNewObject( SdrInventor::ReportDesign, _nObjectId, pSectionWindow->getReportSection().getPage(),m_aReportModel.get() );
xShapeProp.set(pNewControl->getUnoShape(),uno::UNO_QUERY);
OUString sCustomShapeType = getDesignView()->GetInsertObjString();
if ( sCustomShapeType.isEmpty() )
@@ -3121,11 +3117,7 @@ void OReportController::createControl(const Sequence< PropertyValue >& _aArgs,co
}
else if ( _nObjectId == OBJ_OLE2 || OBJ_DLG_SUBREPORT == _nObjectId )
{
- pNewControl = SdrObjFactory::MakeNewObject(
- *m_aReportModel,
- SdrInventor::ReportDesign,
- _nObjectId,
- pSectionWindow->getReportSection().getPage());
+ pNewControl = SdrObjFactory::MakeNewObject( SdrInventor::ReportDesign, _nObjectId, pSectionWindow->getReportSection().getPage(),m_aReportModel.get() );
pNewControl->SetLogicRect(tools::Rectangle(3000,500,8000,5500)); // switch height and width
xShapeProp.set(pNewControl->getUnoShape(),uno::UNO_QUERY_THROW);
diff --git a/reportdesign/source/ui/report/ReportSection.cxx b/reportdesign/source/ui/report/ReportSection.cxx
index 27e467105424..9cca7d85a9b8 100644
--- a/reportdesign/source/ui/report/ReportSection.cxx
+++ b/reportdesign/source/ui/report/ReportSection.cxx
@@ -183,10 +183,7 @@ void OReportSection::fill()
m_pModel = m_pParent->getViewsWindow()->getView()->getReportView()->getController().getSdrModel();
m_pPage = m_pModel->getPage(m_xSection);
- m_pView = new OSectionView(
- *m_pModel,
- this,
- m_pParent->getViewsWindow()->getView());
+ m_pView = new OSectionView( m_pModel.get(), this, m_pParent->getViewsWindow()->getView() );
// #i93597# tell SdrPage that only left and right page border is defined
// instead of the full rectangle definition
@@ -265,10 +262,10 @@ void OReportSection::Paste(const uno::Sequence< beans::NamedValue >& _aAllreadyC
SdrObject* pObject = pShape ? pShape->GetSdrObject() : nullptr;
if ( pObject )
{
- // Clone to target SdrModel
- SdrObject* pNewObj(pObject->Clone(m_pModel.get()));
+ SdrObject* pNewObj = pObject->Clone();
pNewObj->SetPage( m_pPage );
+ pNewObj->SetModel( m_pModel.get() );
m_pPage->InsertObject(pNewObj, SAL_MAX_SIZE);
tools::Rectangle aRet(VCLPoint((*pCopiesIter)->getPosition()),VCLSize((*pCopiesIter)->getSize()));
@@ -609,7 +606,7 @@ void OReportSection::createDefault(const OUString& _sType,SdrObject* _pObj)
{
const SfxItemSet& rSource = pSourceObj->GetMergedItemSet();
SfxItemSet aDest(
- _pObj->getSdrModelFromSdrObject().GetItemPool(),
+ _pObj->GetModel()->GetItemPool(),
svl::Items<
// Ranges from SdrAttrObj:
SDRATTR_START, SDRATTR_SHADOW_LAST,
diff --git a/reportdesign/source/ui/report/SectionView.cxx b/reportdesign/source/ui/report/SectionView.cxx
index ea01291b81f6..06b594f63d6e 100644
--- a/reportdesign/source/ui/report/SectionView.cxx
+++ b/reportdesign/source/ui/report/SectionView.cxx
@@ -34,11 +34,9 @@ namespace rptui
{
using namespace ::com::sun::star;
-OSectionView::OSectionView(
- SdrModel& rSdrModel,
- OReportSection* _pSectionWindow,
- OReportWindow* pEditor)
-: SdrView(rSdrModel, _pSectionWindow)
+
+OSectionView::OSectionView( SdrModel* pModel, OReportSection* _pSectionWindow, OReportWindow* pEditor )
+ :SdrView( pModel, _pSectionWindow )
,m_pReportWindow( pEditor )
,m_pSectionWindow(_pSectionWindow)
{
diff --git a/reportdesign/source/ui/report/ViewsWindow.cxx b/reportdesign/source/ui/report/ViewsWindow.cxx
index 72f74f2eff50..341dc465a397 100644
--- a/reportdesign/source/ui/report/ViewsWindow.cxx
+++ b/reportdesign/source/ui/report/ViewsWindow.cxx
@@ -1015,11 +1015,9 @@ void OViewsWindow::BegDragObj_createInvisibleObjectAtPosition(const tools::Recta
if ( &rView != &_rSection )
{
- SdrObject *pNewObj = new SdrUnoObj(
- rView.getSdrModelFromSdrView(),
- "com.sun.star.form.component.FixedText");
-
+ SdrObject *pNewObj = new SdrUnoObj("com.sun.star.form.component.FixedText");
pNewObj->SetLogicRect(_aRect);
+
pNewObj->Move(Size(0, aNewPos.Y()));
bool bChanged = rView.GetModel()->IsChanged();
rReportSection.getPage()->InsertObject(pNewObj);
diff --git a/reportdesign/source/ui/report/dlgedfac.cxx b/reportdesign/source/ui/report/dlgedfac.cxx
index 4a416838ebda..1a59852f1029 100644
--- a/reportdesign/source/ui/report/dlgedfac.cxx
+++ b/reportdesign/source/ui/report/dlgedfac.cxx
@@ -47,30 +47,29 @@ IMPL_STATIC_LINK(
DlgEdFactory, MakeObject, SdrObjCreatorParams, aParams, SdrObject* )
{
SdrObject* pNewObj = nullptr;
-
if ( aParams.nInventor == SdrInventor::ReportDesign )
{
switch( aParams.nObjIdentifier )
{
case OBJ_DLG_FIXEDTEXT:
- pNewObj = new OUnoObject(aParams.rSdrModel, SERVICE_FIXEDTEXT
+ pNewObj = new OUnoObject( SERVICE_FIXEDTEXT
,OUString("com.sun.star.form.component.FixedText")
,OBJ_DLG_FIXEDTEXT);
break;
case OBJ_DLG_IMAGECONTROL:
- pNewObj = new OUnoObject(aParams.rSdrModel, SERVICE_IMAGECONTROL
+ pNewObj = new OUnoObject( SERVICE_IMAGECONTROL
,OUString("com.sun.star.form.component.DatabaseImageControl")
,OBJ_DLG_IMAGECONTROL);
break;
case OBJ_DLG_FORMATTEDFIELD:
- pNewObj = new OUnoObject(aParams.rSdrModel, SERVICE_FORMATTEDFIELD
+ pNewObj = new OUnoObject( SERVICE_FORMATTEDFIELD
,OUString("com.sun.star.form.component.FormattedField")
,OBJ_DLG_FORMATTEDFIELD);
break;
case OBJ_DLG_VFIXEDLINE:
case OBJ_DLG_HFIXEDLINE:
{
- OUnoObject* pObj = new OUnoObject(aParams.rSdrModel, SERVICE_FIXEDLINE
+ OUnoObject* pObj = new OUnoObject( SERVICE_FIXEDLINE
,OUString("com.sun.star.awt.UnoControlFixedLineModel")
,aParams.nObjIdentifier);
pNewObj = pObj;
@@ -82,13 +81,13 @@ IMPL_STATIC_LINK(
}
break;
case OBJ_CUSTOMSHAPE:
- pNewObj = new OCustomShape(aParams.rSdrModel, SERVICE_SHAPE);
+ pNewObj = new OCustomShape(SERVICE_SHAPE);
break;
case OBJ_DLG_SUBREPORT:
- pNewObj = new OOle2Obj(aParams.rSdrModel, SERVICE_REPORTDEFINITION, OBJ_DLG_SUBREPORT);
+ pNewObj = new OOle2Obj(SERVICE_REPORTDEFINITION,OBJ_DLG_SUBREPORT);
break;
case OBJ_OLE2:
- pNewObj = new OOle2Obj(aParams.rSdrModel, OUString("com.sun.star.chart2.ChartDocument"),OBJ_OLE2);
+ pNewObj = new OOle2Obj(OUString("com.sun.star.chart2.ChartDocument"),OBJ_OLE2);
break;
default:
OSL_FAIL("Unknown object id");
diff --git a/reportdesign/source/ui/report/dlgedfunc.cxx b/reportdesign/source/ui/report/dlgedfunc.cxx
index 0c465d1bb106..c66e3d00184d 100644
--- a/reportdesign/source/ui/report/dlgedfunc.cxx
+++ b/reportdesign/source/ui/report/dlgedfunc.cxx
@@ -450,15 +450,18 @@ void DlgEdFunc::colorizeOverlappedObject(SdrObject* _pOverlappedObj)
uno::Reference<report::XReportComponent> xComponent = pObj->getReportComponent();
if (xComponent.is() && xComponent != m_xOverlappingObj)
{
- OReportModel& rRptModel(static_cast< OReportModel& >(_pOverlappedObj->getSdrModelFromSdrObject()));
- OXUndoEnvironment::OUndoEnvLock aLock(rRptModel.GetUndoEnv());
+ OReportModel* pRptModel = static_cast<OReportModel*>(_pOverlappedObj->GetModel());
+ if ( pRptModel )
+ {
+ OXUndoEnvironment::OUndoEnvLock aLock(pRptModel->GetUndoEnv());
- // uncolorize an old object, if there is one
- unColorizeOverlappedObj();
+ // uncolorize an old object, if there is one
+ unColorizeOverlappedObj();
- m_nOldColor = lcl_setColorOfObject(xComponent, m_nOverlappedControlColor);
- m_xOverlappingObj = xComponent;
- m_pOverlappingObj = _pOverlappedObj;
+ m_nOldColor = lcl_setColorOfObject(xComponent, m_nOverlappedControlColor);
+ m_xOverlappingObj = xComponent;
+ m_pOverlappingObj = _pOverlappedObj;
+ }
}
}
}
@@ -468,12 +471,15 @@ void DlgEdFunc::unColorizeOverlappedObj()
// uncolorize an old object, if there is one
if (m_xOverlappingObj.is())
{
- OReportModel& rRptModel(static_cast< OReportModel& >(m_pOverlappingObj->getSdrModelFromSdrObject()));
- OXUndoEnvironment::OUndoEnvLock aLock(rRptModel.GetUndoEnv());
+ OReportModel* pRptModel = static_cast<OReportModel*>(m_pOverlappingObj->GetModel());
+ if ( pRptModel )
+ {
+ OXUndoEnvironment::OUndoEnvLock aLock(pRptModel->GetUndoEnv());
- lcl_setColorOfObject(m_xOverlappingObj, m_nOldColor);
- m_xOverlappingObj = nullptr;
- m_pOverlappingObj = nullptr;
+ lcl_setColorOfObject(m_xOverlappingObj, m_nOldColor);
+ m_xOverlappingObj = nullptr;
+ m_pOverlappingObj = nullptr;
+ }
}
}
diff --git a/sc/inc/docuno.hxx b/sc/inc/docuno.hxx
index 8c7382cd1050..f86c9048fe03 100644
--- a/sc/inc/docuno.hxx
+++ b/sc/inc/docuno.hxx
@@ -124,9 +124,6 @@ private:
protected:
const SfxItemPropertySet& GetPropertySet() const { return aPropSet; }
- /** abstract SdrModel provider */
- virtual SdrModel* getSdrModelFromUnoModel() const override;
-
public:
ScModelObj(ScDocShell* pDocSh);
virtual ~ScModelObj() override;
diff --git a/sc/inc/drawpage.hxx b/sc/inc/drawpage.hxx
index cbbaff987a6c..8f9348220172 100644
--- a/sc/inc/drawpage.hxx
+++ b/sc/inc/drawpage.hxx
@@ -24,18 +24,21 @@
class ScDrawLayer;
-class ScDrawPage : public FmFormPage
+class ScDrawPage: public FmFormPage
{
ScDrawPage& operator=(const ScDrawPage&) = delete;
- ScDrawPage(const ScDrawPage&) = delete;
public:
explicit ScDrawPage(ScDrawLayer& rNewModel, bool bMasterPage);
virtual ~ScDrawPage() override;
- virtual ScDrawPage* Clone(SdrModel* pNewModel = nullptr) const override;
+ virtual ScDrawPage* Clone() const override;
+ virtual ScDrawPage* Clone(SdrModel* pNewModel) const override;
virtual css::uno::Reference< css::uno::XInterface > createUnoPage() override;
+
+private:
+ ScDrawPage(const ScDrawPage& rSrcPage);
};
#endif
diff --git a/sc/qa/extras/anchor.cxx b/sc/qa/extras/anchor.cxx
index baa609a154a6..e1130b792b39 100644
--- a/sc/qa/extras/anchor.cxx
+++ b/sc/qa/extras/anchor.cxx
@@ -170,7 +170,7 @@ void ScAnchorTest::testTdf76183()
// Add a circle somewhere below first row.
const tools::Rectangle aOrigRect = tools::Rectangle(1000, 1000, 1200, 1200);
- SdrCircObj* pObj = new SdrCircObj(*pDrawLayer, OBJ_CIRC, aOrigRect);
+ SdrCircObj* pObj = new SdrCircObj(OBJ_CIRC, aOrigRect);
pPage->InsertObject(pObj);
// Anchor to cell
ScDrawLayer::SetCellAnchoredFromPosition(*pObj, rDoc, 0, false);
diff --git a/sc/qa/unit/ucalc.cxx b/sc/qa/unit/ucalc.cxx
index 907c8f6a04ae..eff48bfd5581 100644
--- a/sc/qa/unit/ucalc.cxx
+++ b/sc/qa/unit/ucalc.cxx
@@ -2708,7 +2708,7 @@ void Test::testGraphicsInGroup()
{
//Add a square
tools::Rectangle aOrigRect(2,2,100,100);
- SdrRectObj *pObj = new SdrRectObj(*pDrawLayer, aOrigRect);
+ SdrRectObj *pObj = new SdrRectObj(aOrigRect);
pPage->InsertObject(pObj);
const tools::Rectangle &rNewRect = pObj->GetLogicRect();
CPPUNIT_ASSERT_EQUAL_MESSAGE("must have equal position and size",
@@ -2749,7 +2749,7 @@ void Test::testGraphicsInGroup()
{
// Add a circle.
tools::Rectangle aOrigRect = tools::Rectangle(10,10,210,210); // 200 x 200
- SdrCircObj* pObj = new SdrCircObj(*pDrawLayer, OBJ_CIRC, aOrigRect);
+ SdrCircObj* pObj = new SdrCircObj(OBJ_CIRC, aOrigRect);
pPage->InsertObject(pObj);
const tools::Rectangle& rNewRect = pObj->GetLogicRect();
CPPUNIT_ASSERT_EQUAL_MESSAGE("Position and size of the circle shouldn't change when inserted into the page.",
@@ -2781,7 +2781,7 @@ void Test::testGraphicsInGroup()
tools::Rectangle aOrigRect(10,200,110,300); // 100 x 100
aTempPoly.append(basegfx::B2DPoint(aStartPos.X(), aStartPos.Y()));
aTempPoly.append(basegfx::B2DPoint(aEndPos.X(), aEndPos.Y()));
- SdrPathObj* pObj = new SdrPathObj(*pDrawLayer, OBJ_LINE, basegfx::B2DPolyPolygon(aTempPoly));
+ SdrPathObj* pObj = new SdrPathObj(OBJ_LINE, basegfx::B2DPolyPolygon(aTempPoly));
pObj->NbcSetLogicRect(aOrigRect);
pPage->InsertObject(pObj);
const tools::Rectangle& rNewRect = pObj->GetLogicRect();
@@ -2822,7 +2822,7 @@ void Test::testGraphicsOnSheetMove()
// Insert an object.
tools::Rectangle aObjRect(2,2,100,100);
- SdrObject* pObj = new SdrRectObj(*pDrawLayer, aObjRect);
+ SdrObject* pObj = new SdrRectObj(aObjRect);
pPage->InsertObject(pObj);
ScDrawLayer::SetCellAnchoredFromPosition(*pObj, *m_pDoc, 0, false);
@@ -5342,7 +5342,7 @@ void Test::testNoteLifeCycle()
SdrCaptionObj* pCaption = pNote->GetOrCreateCaption(aPos);
CPPUNIT_ASSERT_MESSAGE("Failed to create a caption object.", pCaption);
CPPUNIT_ASSERT_EQUAL_MESSAGE("This caption should belong to the drawing layer of the document.",
- m_pDoc->GetDrawLayer(), static_cast<ScDrawLayer*>(&pCaption->getSdrModelFromSdrObject()));
+ m_pDoc->GetDrawLayer(), static_cast<ScDrawLayer*>(pCaption->GetModel()));
// Copy B2 with note to a clipboard.
@@ -5648,7 +5648,7 @@ void Test::testAnchoredRotatedShape()
tools::Rectangle aRect( 4000, 5000, 10000, 7000 );
tools::Rectangle aRotRect( 6000, 3000, 8000, 9000 );
- SdrRectObj *pObj = new SdrRectObj(*pDrawLayer, aRect);
+ SdrRectObj *pObj = new SdrRectObj(aRect);
pPage->InsertObject(pObj);
Point aRef1(pObj->GetSnapRect().Center());
int nAngle = 9000; //90 deg.
@@ -6421,7 +6421,7 @@ void Test::testUndoDataAnchor()
// Insert an object.
tools::Rectangle aObjRect(2,1000,100,1100);
- SdrObject* pObj = new SdrRectObj(*pDrawLayer, aObjRect);
+ SdrObject* pObj = new SdrRectObj(aObjRect);
pPage->InsertObject(pObj);
ScDrawLayer::SetCellAnchoredFromPosition(*pObj, *m_pDoc, 0, false);
diff --git a/sc/qa/unit/ucalc_sort.cxx b/sc/qa/unit/ucalc_sort.cxx
index 38c3e1aebcdb..048b53b33969 100644
--- a/sc/qa/unit/ucalc_sort.cxx
+++ b/sc/qa/unit/ucalc_sort.cxx
@@ -1911,7 +1911,7 @@ void Test::testSortImages()
// Insert graphic in cell B2.
const tools::Rectangle aOrigRect = tools::Rectangle(1000, 1000, 1200, 1200);
- SdrCircObj* pObj = new SdrCircObj(*pDrawLayer, OBJ_CIRC, aOrigRect);
+ SdrCircObj* pObj = new SdrCircObj(OBJ_CIRC, aOrigRect);
SdrPage* pPage = pDrawLayer->GetPage(0);
CPPUNIT_ASSERT(pPage);
pPage->InsertObject(pObj);
diff --git a/sc/source/core/data/documen9.cxx b/sc/source/core/data/documen9.cxx
index 8b9b4de19e63..70b99bdf03e5 100644
--- a/sc/source/core/data/documen9.cxx
+++ b/sc/source/core/data/documen9.cxx
@@ -84,9 +84,11 @@ void ScDocument::TransferDrawPage(ScDocument* pSrcDoc, SCTAB nSrcPos, SCTAB nDes
SdrObject* pOldObject = aIter.Next();
while (pOldObject)
{
- // Clone to target SdrModel
- SdrObject* pNewObject = pOldObject->Clone(mpDrawLayer);
+ SdrObject* pNewObject = pOldObject->Clone();
+ // SdrObject* pNewObject = pOldObject->Clone( pNewPage, mpDrawLayer );
+ pNewObject->SetModel(mpDrawLayer);
pNewObject->SetPage(pNewPage);
+
pNewObject->NbcMove(Size(0,0));
pNewPage->InsertObject( pNewObject );
diff --git a/sc/source/core/data/drawpage.cxx b/sc/source/core/data/drawpage.cxx
index 5ccd3cdd5598..5d445983b69e 100644
--- a/sc/source/core/data/drawpage.cxx
+++ b/sc/source/core/data/drawpage.cxx
@@ -24,25 +24,37 @@
#include <document.hxx>
#include <pageuno.hxx>
-ScDrawPage::ScDrawPage(ScDrawLayer& rNewModel, bool bMasterPage)
-: FmFormPage(rNewModel, bMasterPage)
+ScDrawPage::ScDrawPage(ScDrawLayer& rNewModel, bool bMasterPage) :
+ FmFormPage(rNewModel, bMasterPage)
{
SetSize( Size( RECT_MAX, RECT_MAX ) );
}
+ScDrawPage::ScDrawPage(const ScDrawPage& rSrcPage)
+ : FmFormPage(rSrcPage)
+{
+}
+
ScDrawPage::~ScDrawPage()
{
}
+ScDrawPage* ScDrawPage::Clone() const
+{
+ return Clone(nullptr);
+}
+
ScDrawPage* ScDrawPage::Clone(SdrModel* const pNewModel) const
{
- ScDrawLayer& rScDrawLayer(static_cast< ScDrawLayer& >(nullptr == pNewModel ? getSdrModelFromSdrPage() : *pNewModel));
- ScDrawPage* pClonedScDrawPage(
- new ScDrawPage(
- rScDrawLayer,
- IsMasterPage()));
- pClonedScDrawPage->FmFormPage::lateInit(*this);
- return pClonedScDrawPage;
+ ScDrawPage* const pNewPage = new ScDrawPage(*this);
+ FmFormModel* pScDrawModel = nullptr;
+ if (pNewModel)
+ {
+ pScDrawModel = dynamic_cast<FmFormModel*>(pNewModel);
+ assert(pScDrawModel);
+ }
+ pNewPage->lateInit(*this, pScDrawModel);
+ return pNewPage;
}
css::uno::Reference< css::uno::XInterface > ScDrawPage::createUnoPage()
diff --git a/sc/source/core/data/drwlayer.cxx b/sc/source/core/data/drwlayer.cxx
index 0665e0942188..e694fed7c25a 100644
--- a/sc/source/core/data/drwlayer.cxx
+++ b/sc/source/core/data/drwlayer.cxx
@@ -155,10 +155,10 @@ ScUndoAnchorData::~ScUndoAnchorData()
void ScUndoAnchorData::Undo()
{
// Trigger Object Change
- if (pObj->IsInserted() && pObj->GetPage())
+ if (pObj->IsInserted() && pObj->GetPage() && pObj->GetModel())
{
SdrHint aHint(SdrHintKind::ObjectChange, *pObj);
- pObj->getSdrModelFromSdrObject().Broadcast(aHint);
+ pObj->GetModel()->Broadcast(aHint);
}
if (mbWasCellAnchored)
@@ -175,10 +175,10 @@ void ScUndoAnchorData::Redo()
ScDrawLayer::SetCellAnchoredFromPosition(*pObj, *mpDoc, mnTab, mbWasResizeWithCell);
// Trigger Object Change
- if (pObj->IsInserted() && pObj->GetPage())
+ if (pObj->IsInserted() && pObj->GetPage() && pObj->GetModel())
{
SdrHint aHint(SdrHintKind::ObjectChange, *pObj);
- pObj->getSdrModelFromSdrObject().Broadcast(aHint);
+ pObj->GetModel()->Broadcast(aHint);
}
}
@@ -463,10 +463,10 @@ void ScDrawLayer::ScCopyPage( sal_uInt16 nOldPos, sal_uInt16 nNewPos )
pOldData->maStart.SetTab(nOldTab);
pOldData->maEnd.SetTab(nOldTab);
}
-
- // Clone to target SdrModel
- SdrObject* pNewObject = pOldObject->Clone(this);
+ SdrObject* pNewObject = pOldObject->Clone();
+ pNewObject->SetModel(this);
pNewObject->SetPage(pNewPage);
+
pNewObject->NbcMove(Size(0,0));
pNewPage->InsertObject( pNewObject );
ScDrawObjData* pNewData = GetObjData(pNewObject);
@@ -1492,8 +1492,8 @@ void ScDrawLayer::CopyToClip( ScDocument* pClipDoc, SCTAB nTab, const tools::Rec
OSL_ENSURE( pDestPage, "no page" );
if (pDestPage)
{
- // Clone to target SdrModel
- SdrObject* pNewObject = pOldObject->Clone(pDestModel);
+ SdrObject* pNewObject = pOldObject->Clone();
+ pNewObject->SetModel(pDestModel);
pNewObject->SetPage(pDestPage);
uno::Reference< chart2::XChartDocument > xOldChart( ScChartHelper::GetChartFromSdrObject( pOldObject ) );
@@ -1667,8 +1667,8 @@ void ScDrawLayer::CopyFromClip( ScDrawLayer* pClipModel, SCTAB nSourceTab, const
if (bObjectInArea && (pOldObject->GetLayer() != SC_LAYER_INTERN)
&& !IsNoteCaption(pOldObject))
{
- // Clone to target SdrModel
- SdrObject* pNewObject = pOldObject->Clone(this);
+ SdrObject* pNewObject = pOldObject->Clone();
+ pNewObject->SetModel(this);
pNewObject->SetPage(pDestPage);
if ( bMirrorObj )
diff --git a/sc/source/core/data/postit.cxx b/sc/source/core/data/postit.cxx
index 676a0dafb35a..d70e87f528c1 100644
--- a/sc/source/core/data/postit.cxx
+++ b/sc/source/core/data/postit.cxx
@@ -375,11 +375,7 @@ void ScCaptionCreator::CreateCaption( bool bShown, bool bTailFront )
// create the caption drawing object
tools::Rectangle aTextRect( Point( 0 , 0 ), Size( SC_NOTECAPTION_WIDTH, SC_NOTECAPTION_HEIGHT ) );
Point aTailPos = CalcTailPos( bTailFront );
- mxCaption.reset(
- new SdrCaptionObj(
- *mrDoc.GetDrawLayer(), // TTTT should ret a ref?
- aTextRect,
- aTailPos));
+ mxCaption.reset( new SdrCaptionObj( aTextRect, aTailPos ));
// basic caption settings
ScCaptionUtil::SetBasicCaptionSettings( *mxCaption, bShown );
}
@@ -758,7 +754,7 @@ void ScCaptionPtr::removeFromDrawPageAndFree( bool bIgnoreUndo )
bool bRecording = false;
if (!bIgnoreUndo)
{
- ScDrawLayer* pDrawLayer(dynamic_cast< ScDrawLayer* >(&mpCaption->getSdrModelFromSdrObject()));
+ ScDrawLayer* pDrawLayer = dynamic_cast<ScDrawLayer*>(mpCaption->GetModel());
SAL_WARN_IF( !pDrawLayer, "sc.core", "ScCaptionPtr::removeFromDrawPageAndFree - object without drawing layer");
// create drawing undo action (before removing the object to have valid draw page in undo action)
bRecording = (pDrawLayer && pDrawLayer->IsRecording());
@@ -1141,9 +1137,8 @@ void ScPostIt::RemoveCaption()
/* Remove caption object only, if this note is its owner (e.g. notes in
undo documents refer to captions in original document, do not remove
them from drawing layer here). */
- // TTTT maybe no longer needed - can that still happen?
ScDrawLayer* pDrawLayer = mrDoc.GetDrawLayer();
- if (pDrawLayer == &maNoteData.mxCaption->getSdrModelFromSdrObject())
+ if (pDrawLayer == maNoteData.mxCaption->GetModel())
maNoteData.mxCaption.removeFromDrawPageAndFree();
SAL_INFO("sc.core","ScPostIt::RemoveCaption - refs: " << maNoteData.mxCaption.getRefs() <<
diff --git a/sc/source/core/tool/detfunc.cxx b/sc/source/core/tool/detfunc.cxx
index 77f19b2e39c5..f8f5ac045c68 100644
--- a/sc/source/core/tool/detfunc.cxx
+++ b/sc/source/core/tool/detfunc.cxx
@@ -453,9 +453,7 @@ bool ScDetectiveFunc::InsertArrow( SCCOL nCol, SCROW nRow,
// insert the rectangle before the arrow - this is relied on in FindFrameForObject
tools::Rectangle aRect = GetDrawRect( nRefStartCol, nRefStartRow, nRefEndCol, nRefEndRow );
- SdrRectObj* pBox = new SdrRectObj(
- *pModel,
- aRect);
+ SdrRectObj* pBox = new SdrRectObj( aRect );
pBox->SetMergedItemSetAndBroadcast(rData.GetBoxSet());
@@ -496,10 +494,7 @@ bool ScDetectiveFunc::InsertArrow( SCCOL nCol, SCROW nRow,
basegfx::B2DPolygon aTempPoly;
aTempPoly.append(basegfx::B2DPoint(aStartPos.X(), aStartPos.Y()));
aTempPoly.append(basegfx::B2DPoint(aEndPos.X(), aEndPos.Y()));
- SdrPathObj* pArrow = new SdrPathObj(
- *pModel,
- OBJ_LINE,
- basegfx::B2DPolyPolygon(aTempPoly));
+ SdrPathObj* pArrow = new SdrPathObj(OBJ_LINE, basegfx::B2DPolyPolygon(aTempPoly));
pArrow->NbcSetLogicRect(tools::Rectangle(aStartPos,aEndPos)); //TODO: needed ???
pArrow->SetMergedItemSetAndBroadcast(rAttrSet);
@@ -531,9 +526,7 @@ bool ScDetectiveFunc::InsertToOtherTab( SCCOL nStartCol, SCROW nStartRow,
if (bArea)
{
tools::Rectangle aRect = GetDrawRect( nStartCol, nStartRow, nEndCol, nEndRow );
- SdrRectObj* pBox = new SdrRectObj(
- *pModel,
- aRect);
+ SdrRectObj* pBox = new SdrRectObj( aRect );
pBox->SetMergedItemSetAndBroadcast(rData.GetBoxSet());
@@ -566,10 +559,7 @@ bool ScDetectiveFunc::InsertToOtherTab( SCCOL nStartCol, SCROW nStartRow,
basegfx::B2DPolygon aTempPoly;
aTempPoly.append(basegfx::B2DPoint(aStartPos.X(), aStartPos.Y()));
aTempPoly.append(basegfx::B2DPoint(aEndPos.X(), aEndPos.Y()));
- SdrPathObj* pArrow = new SdrPathObj(
- *pModel,
- OBJ_LINE,
- basegfx::B2DPolyPolygon(aTempPoly));
+ SdrPathObj* pArrow = new SdrPathObj(OBJ_LINE, basegfx::B2DPolyPolygon(aTempPoly));
pArrow->NbcSetLogicRect(tools::Rectangle(aStartPos,aEndPos)); //TODO: needed ???
pArrow->SetMergedItemSetAndBroadcast(rAttrSet);
@@ -635,10 +625,7 @@ void ScDetectiveFunc::DrawCircle( SCCOL nCol, SCROW nRow, ScDetectiveData& rData
aRect.AdjustTop( -70 );
aRect.AdjustBottom(70 );
- SdrCircObj* pCircle = new SdrCircObj(
- *pModel,
- OBJ_CIRC,
- aRect);
+ SdrCircObj* pCircle = new SdrCircObj( OBJ_CIRC, aRect );
SfxItemSet& rAttrSet = rData.GetCircleSet();
pCircle->SetMergedItemSetAndBroadcast(rAttrSet);
diff --git a/sc/source/filter/excel/xichart.cxx b/sc/source/filter/excel/xichart.cxx
index 055663df4782..cad44b77ea43 100644
--- a/sc/source/filter/excel/xichart.cxx
+++ b/sc/source/filter/excel/xichart.cxx
@@ -4221,7 +4221,7 @@ void XclImpChartDrawing::ConvertObjects( XclImpDffConverter& rDffConv,
Reference< XDrawPageSupplier > xDrawPageSupp( rxModel, UNO_QUERY_THROW );
Reference< XDrawPage > xDrawPage( xDrawPageSupp->getDrawPage(), UNO_SET_THROW );
pSdrPage = ::GetSdrPageFromXDrawPage( xDrawPage );
- pSdrModel = pSdrPage ? &pSdrPage->getSdrModelFromSdrPage() : nullptr;
+ pSdrModel = pSdrPage ? pSdrPage->GetModel() : nullptr;
}
catch( Exception& )
{
diff --git a/sc/source/filter/excel/xiescher.cxx b/sc/source/filter/excel/xiescher.cxx
index 989c9b693d0f..94b2d0130d0b 100644
--- a/sc/source/filter/excel/xiescher.cxx
+++ b/sc/source/filter/excel/xiescher.cxx
@@ -425,7 +425,8 @@ SdrObjectPtr XclImpDrawObjBase::CreateSdrObject( XclImpDffConverter& rDffConv, c
else
{
xSdrObj = DoCreateSdrObj( rDffConv, rAnchorRect );
-
+ if( xSdrObj )
+ xSdrObj->SetModel( rDffConv.GetModel() );
//added for exporting OCX control
/* mnObjType value set should be as below table:
0x0000 Group 0x0001 Line
@@ -1011,9 +1012,7 @@ std::size_t XclImpGroupObj::DoGetProgressSize() const
SdrObjectPtr XclImpGroupObj::DoCreateSdrObj( XclImpDffConverter& rDffConv, const tools::Rectangle& /*rAnchorRect*/ ) const
{
- std::unique_ptr<SdrObjGroup, SdrObjectFree> xSdrObj(
- new SdrObjGroup(
- *GetDoc().GetDrawLayer()));
+ std::unique_ptr<SdrObjGroup, SdrObjectFree> xSdrObj( new SdrObjGroup );
// child objects in BIFF2-BIFF5 have absolute size, not needed to pass own anchor rectangle
SdrObjList& rObjList = *xSdrObj->GetSubList(); // SdrObjGroup always returns existing sublist
for( ::std::vector< XclImpDrawObjRef >::const_iterator aIt = maChildren.begin(), aEnd = maChildren.end(); aIt != aEnd; ++aIt )
@@ -1081,11 +1080,7 @@ SdrObjectPtr XclImpLineObj::DoCreateSdrObj( XclImpDffConverter& rDffConv, const
aB2DPolygon.append( ::basegfx::B2DPoint( rAnchorRect.Right(), rAnchorRect.Top() ) );
break;
}
- SdrObjectPtr xSdrObj(
- new SdrPathObj(
- *GetDoc().GetDrawLayer(),
- OBJ_LINE,
- ::basegfx::B2DPolyPolygon(aB2DPolygon)));
+ SdrObjectPtr xSdrObj( new SdrPathObj( OBJ_LINE, ::basegfx::B2DPolyPolygon( aB2DPolygon ) ) );
ConvertLineStyle( *xSdrObj, maLineData );
// line ends
@@ -1200,10 +1195,7 @@ void XclImpRectObj::DoReadObj5( XclImpStream& rStrm, sal_uInt16 nNameLen, sal_uI
SdrObjectPtr XclImpRectObj::DoCreateSdrObj( XclImpDffConverter& rDffConv, const tools::Rectangle& rAnchorRect ) const
{
- SdrObjectPtr xSdrObj(
- new SdrRectObj(
- *GetDoc().GetDrawLayer(),
- rAnchorRect));
+ SdrObjectPtr xSdrObj( new SdrRectObj( rAnchorRect ) );
ConvertRectStyle( *xSdrObj );
rDffConv.Progress();
return xSdrObj;
@@ -1216,11 +1208,7 @@ XclImpOvalObj::XclImpOvalObj( const XclImpRoot& rRoot ) :
SdrObjectPtr XclImpOvalObj::DoCreateSdrObj( XclImpDffConverter& rDffConv, const tools::Rectangle& rAnchorRect ) const
{
- SdrObjectPtr xSdrObj(
- new SdrCircObj(
- *GetDoc().GetDrawLayer(),
- OBJ_CIRC,
- rAnchorRect));
+ SdrObjectPtr xSdrObj( new SdrCircObj( OBJ_CIRC, rAnchorRect ) );
ConvertRectStyle( *xSdrObj );
rDffConv.Progress();
return xSdrObj;
@@ -1292,13 +1280,7 @@ SdrObjectPtr XclImpArcObj::DoCreateSdrObj( XclImpDffConverter& rDffConv, const t
break;
}
SdrObjKind eObjKind = maFillData.IsFilled() ? OBJ_SECT : OBJ_CARC;
- SdrObjectPtr xSdrObj(
- new SdrCircObj(
- *GetDoc().GetDrawLayer(),
- eObjKind,
- aNewRect,
- nStartAngle,
- nEndAngle));
+ SdrObjectPtr xSdrObj( new SdrCircObj( eObjKind, aNewRect, nStartAngle, nEndAngle ) );
ConvertFillStyle( *xSdrObj, maFillData );
ConvertLineStyle( *xSdrObj, maLineData );
rDffConv.Progress();
@@ -1376,11 +1358,7 @@ SdrObjectPtr XclImpPolygonObj::DoCreateSdrObj( XclImpDffConverter& rDffConv, con
aB2DPolygon.append( lclGetPolyPoint( rAnchorRect, maCoords.front() ) );
// create the SdrObject
SdrObjKind eObjKind = maFillData.IsFilled() ? OBJ_PATHPOLY : OBJ_PATHPLIN;
- xSdrObj.reset(
- new SdrPathObj(
- *GetDoc().GetDrawLayer(),
- eObjKind,
- ::basegfx::B2DPolyPolygon(aB2DPolygon)));
+ xSdrObj.reset( new SdrPathObj( eObjKind, ::basegfx::B2DPolyPolygon( aB2DPolygon ) ) );
ConvertRectStyle( *xSdrObj );
}
rDffConv.Progress();
@@ -1442,9 +1420,7 @@ void XclImpTextObj::DoReadObj5( XclImpStream& rStrm, sal_uInt16 nNameLen, sal_uI
SdrObjectPtr XclImpTextObj::DoCreateSdrObj( XclImpDffConverter& rDffConv, const tools::Rectangle& rAnchorRect ) const
{
- std::unique_ptr<SdrObjCustomShape, SdrObjectFree> xSdrObj(
- new SdrObjCustomShape(
- *GetDoc().GetDrawLayer()));
+ std::unique_ptr<SdrObjCustomShape, SdrObjectFree> xSdrObj( new SdrObjCustomShape );
xSdrObj->NbcSetSnapRect( rAnchorRect );
OUString aRectType = "rectangle";
xSdrObj->MergeDefaultAttributes( &aRectType );
@@ -1734,12 +1710,7 @@ SdrObjectPtr XclImpChartObj::DoCreateSdrObj( XclImpDffConverter& rDffConv, const
// ChartHelper::AdaptDefaultsForChart( xEmbObj );
// create the container OLE object
- xSdrObj.reset(
- new SdrOle2Obj(
- *GetDoc().GetDrawLayer(),
- svt::EmbeddedObjectRef(xEmbObj, nAspect),
- aEmbObjName,
- rAnchorRect));
+ xSdrObj.reset( new SdrOle2Obj( svt::EmbeddedObjectRef( xEmbObj, nAspect ), aEmbObjName, rAnchorRect ) );
}
return xSdrObj;
@@ -2982,11 +2953,7 @@ SdrObjectPtr XclImpPictureObj::DoCreateSdrObj( XclImpDffConverter& rDffConv, con
// no OLE - create a plain picture from IMGDATA record data
if( !xSdrObj && (maGraphic.GetType() != GraphicType::NONE) )
{
- xSdrObj.reset(
- new SdrGrafObj(
- *GetDoc().GetDrawLayer(),
- maGraphic,
- rAnchorRect));
+ xSdrObj.reset( new SdrGrafObj( maGraphic, rAnchorRect ) );
ConvertRectStyle( *xSdrObj );
}
@@ -3467,20 +3434,9 @@ SdrObjectPtr XclImpDffConverter::CreateSdrObject( const XclImpPictureObj& rPicOb
ErrCode nError = ERRCODE_NONE;
namespace cssea = ::com::sun::star::embed::Aspects;
sal_Int64 nAspects = rPicObj.IsSymbol() ? cssea::MSOLE_ICON : cssea::MSOLE_CONTENT;
- xSdrObj.reset(
- CreateSdrOLEFromStorage(
- GetConvData().mrSdrModel,
- aStrgName,
- xSrcStrg,
- pDocShell->GetStorage(),
- aGraphic,
- rAnchorRect,
- aVisArea,
- nullptr,
- nError,
- mnOleImpFlags,
- nAspects,
- GetRoot().GetMedium().GetBaseURL()));
+ xSdrObj.reset( CreateSdrOLEFromStorage(
+ aStrgName, xSrcStrg, pDocShell->GetStorage(), aGraphic,
+ rAnchorRect, aVisArea, nullptr, nError, mnOleImpFlags, nAspects, GetRoot().GetMedium().GetBaseURL()) );
}
}
}
diff --git a/sc/source/filter/html/htmlexp2.cxx b/sc/source/filter/html/htmlexp2.cxx
index d6887744f517..a6b73fd76631 100644
--- a/sc/source/filter/html/htmlexp2.cxx
+++ b/sc/source/filter/html/htmlexp2.cxx
@@ -165,7 +165,8 @@ void ScHTMLExport::WriteGraphEntry( ScHTMLGraphEntry* pE )
break;
default:
{
- Graphic aGraph(SdrExchangeView::GetObjGraphic(*pObject));
+ Graphic aGraph( SdrExchangeView::GetObjGraphic(
+ pDoc->GetDrawLayer(), pObject ) );
OUString aLinkName;
WriteImage( aLinkName, aGraph, aOpt );
pE->bWritten = true;
diff --git a/sc/source/filter/rtf/eeimpars.cxx b/sc/source/filter/rtf/eeimpars.cxx
index e553df1130ff..d6915302aba4 100644
--- a/sc/source/filter/rtf/eeimpars.cxx
+++ b/sc/source/filter/rtf/eeimpars.cxx
@@ -602,11 +602,7 @@ void ScEEImport::InsertGraphic( SCCOL nCol, SCROW nRow, SCTAB nTab,
if ( pI->pGraphic )
{
tools::Rectangle aRect ( aInsertPos, aLogicSize );
- SdrGrafObj* pObj = new SdrGrafObj(
- *pModel,
- *pI->pGraphic,
- aRect);
-
+ SdrGrafObj* pObj = new SdrGrafObj( *pI->pGraphic, aRect );
// calling SetGraphicLink here doesn't work
pObj->SetName( pI->aURL );
diff --git a/sc/source/ui/app/drwtrans.cxx b/sc/source/ui/app/drwtrans.cxx
index 12cfa00f3bca..1e4c9c868bfc 100644
--- a/sc/source/ui/app/drwtrans.cxx
+++ b/sc/source/ui/app/drwtrans.cxx
@@ -188,7 +188,7 @@ ScDrawTransferObj::ScDrawTransferObj( SdrModel* pClipModel, ScDocShell* pContain
// #i71538# use complete SdrViews
// SdrExchangeView aView(pModel);
- SdrView aView(*pModel);
+ SdrView aView(pModel);
SdrPageView* pPv = aView.ShowSdrPage(aView.GetModel()->GetPage(0));
aView.MarkAllObj(pPv);
aSrcSize = aView.GetAllMarkedRect().GetSize();
@@ -395,7 +395,7 @@ bool ScDrawTransferObj::GetData( const css::datatransfer::DataFlavor& rFlavor, c
{
// #i71538# use complete SdrViews
// SdrExchangeView aView( pModel );
- SdrView aView(*pModel);
+ SdrView aView( pModel );
SdrPageView* pPv = aView.ShowSdrPage(aView.GetModel()->GetPage(0));
OSL_ENSURE( pPv, "pPv not there..." );
aView.MarkAllObj( pPv );
@@ -632,7 +632,7 @@ static void lcl_InitMarks( SdrMarkView& rDest, const SdrMarkView& rSource, SCTAB
void ScDrawTransferObj::SetDragSource( const ScDrawView* pView )
{
DELETEZ( pDragSourceView );
- pDragSourceView = new SdrView(pView->getSdrModelFromSdrView()); // TTTT pView should be reference
+ pDragSourceView = new SdrView( pView->GetModel() );
lcl_InitMarks( *pDragSourceView, *pView, pView->GetTab() );
//! add as listener with document, delete pDragSourceView if document gone
@@ -641,7 +641,7 @@ void ScDrawTransferObj::SetDragSource( const ScDrawView* pView )
void ScDrawTransferObj::SetDragSourceObj( SdrObject* pObj, SCTAB nTab )
{
DELETEZ( pDragSourceView );
- pDragSourceView = new SdrView(pObj->getSdrModelFromSdrObject()); // TTTT pObj should be reference
+ pDragSourceView = new SdrView( pObj->GetModel() );
pDragSourceView->ShowSdrPage(pDragSourceView->GetModel()->GetPage(nTab));
SdrPageView* pPV = pDragSourceView->GetSdrPageView();
pDragSourceView->MarkObj(pObj, pPV);
@@ -719,7 +719,7 @@ void ScDrawTransferObj::InitDocShell()
SdrModel* pDestModel = rDestDoc.GetDrawLayer();
// #i71538# use complete SdrViews
// SdrExchangeView aDestView( pDestModel );
- SdrView aDestView(*pDestModel);
+ SdrView aDestView( pDestModel );
aDestView.ShowSdrPage(aDestView.GetModel()->GetPage(0));
aDestView.Paste(
*pModel,
diff --git a/sc/source/ui/drawfunc/fuconarc.cxx b/sc/source/ui/drawfunc/fuconarc.cxx
index d167649a5086..7ada2107c5b3 100644
--- a/sc/source/ui/drawfunc/fuconarc.cxx
+++ b/sc/source/ui/drawfunc/fuconarc.cxx
@@ -123,9 +123,8 @@ SdrObject* FuConstArc::CreateDefaultObject(const sal_uInt16 nID, const tools::Re
// case SID_DRAW_CIRCLECUT:
SdrObject* pObj = SdrObjFactory::MakeNewObject(
- *pDrDoc,
- pView->GetCurrentObjInventor(),
- pView->GetCurrentObjIdentifier());
+ pView->GetCurrentObjInventor(), pView->GetCurrentObjIdentifier(),
+ nullptr, pDrDoc);
if(pObj)
{
diff --git a/sc/source/ui/drawfunc/fuconcustomshape.cxx b/sc/source/ui/drawfunc/fuconcustomshape.cxx
index e028a4d1dcd3..f5a03392f736 100644
--- a/sc/source/ui/drawfunc/fuconcustomshape.cxx
+++ b/sc/source/ui/drawfunc/fuconcustomshape.cxx
@@ -132,10 +132,8 @@ void FuConstCustomShape::Deactivate()
SdrObject* FuConstCustomShape::CreateDefaultObject(const sal_uInt16 /* nID */, const tools::Rectangle& rRectangle)
{
SdrObject* pObj = SdrObjFactory::MakeNewObject(
- *pDrDoc,
- pView->GetCurrentObjInventor(),
- pView->GetCurrentObjIdentifier());
-
+ pView->GetCurrentObjInventor(), pView->GetCurrentObjIdentifier(),
+ nullptr, pDrDoc);
if( pObj )
{
tools::Rectangle aRectangle( rRectangle );
@@ -144,7 +142,6 @@ SdrObject* FuConstCustomShape::CreateDefaultObject(const sal_uInt16 /* nID */, c
ImpForceQuadratic( aRectangle );
pObj->SetLogicRect( aRectangle );
}
-
return pObj;
}
@@ -171,7 +168,7 @@ void FuConstCustomShape::SetAttributes( SdrObject* pObj )
{
const SfxItemSet& rSource = pSourceObj->GetMergedItemSet();
SfxItemSet aDest(
- pObj->getSdrModelFromSdrObject().GetItemPool(),
+ pObj->GetModel()->GetItemPool(),
svl::Items<
// Ranges from SdrAttrObj:
SDRATTR_START, SDRATTR_SHADOW_LAST,
diff --git a/sc/source/ui/drawfunc/fuconpol.cxx b/sc/source/ui/drawfunc/fuconpol.cxx
index cc9ec052cea2..330ebf09a41d 100644
--- a/sc/source/ui/drawfunc/fuconpol.cxx
+++ b/sc/source/ui/drawfunc/fuconpol.cxx
@@ -185,9 +185,8 @@ SdrObject* FuConstPolygon::CreateDefaultObject(const sal_uInt16 nID, const tools
// case SID_DRAW_FREELINE_NOFILL:
SdrObject* pObj = SdrObjFactory::MakeNewObject(
- *pDrDoc,
- pView->GetCurrentObjInventor(),
- pView->GetCurrentObjIdentifier());
+ pView->GetCurrentObjInventor(), pView->GetCurrentObjIdentifier(),
+ nullptr, pDrDoc);
if(pObj)
{
diff --git a/sc/source/ui/drawfunc/fuconrec.cxx b/sc/source/ui/drawfunc/fuconrec.cxx
index 6aba5faad5fc..d3ae4c990850 100644
--- a/sc/source/ui/drawfunc/fuconrec.cxx
+++ b/sc/source/ui/drawfunc/fuconrec.cxx
@@ -58,10 +58,10 @@ FuConstRectangle::~FuConstRectangle()
namespace {
-::basegfx::B2DPolyPolygon getPolygon(const char* pResId, const SdrModel& rModel)
+::basegfx::B2DPolyPolygon getPolygon(const char* pResId, const SdrModel* pDoc)
{
::basegfx::B2DPolyPolygon aRetval;
- XLineEndListRef pLineEndList(rModel.GetLineEndList());
+ XLineEndListRef pLineEndList = pDoc->GetLineEndList();
if( pLineEndList.is() )
{
@@ -116,7 +116,7 @@ bool FuConstRectangle::MouseButtonDown(const MouseEvent& rMEvt)
if (pObj)
{
- SfxItemSet aAttr(pObj->getSdrModelFromSdrObject().GetItemPool());
+ SfxItemSet aAttr(pObj->GetModel()->GetItemPool());
SetLineEnds(aAttr, pObj, aSfxRequest.GetSlot());
pObj->SetMergedItemSet(aAttr);
}
@@ -216,7 +216,7 @@ void FuConstRectangle::Activate()
void FuConstRectangle::SetLineEnds(SfxItemSet& rAttr, const SdrObject* pObj, sal_uInt16 nSlotId)
{
- SdrModel& rModel(pObj->getSdrModelFromSdrObject()); // TTTT pObj should be reference
+ SdrModel *pDoc = pObj->GetModel();
if ( nSlotId == SID_LINE_ARROW_START ||
nSlotId == SID_LINE_ARROW_END ||
@@ -230,7 +230,7 @@ void FuConstRectangle::SetLineEnds(SfxItemSet& rAttr, const SdrObject* pObj, sal
// set attributes of line start and ends
// arrowhead
- ::basegfx::B2DPolyPolygon aArrow( getPolygon( RID_SVXSTR_ARROW, rModel ) );
+ ::basegfx::B2DPolyPolygon aArrow( getPolygon( RID_SVXSTR_ARROW, pDoc ) );
if( !aArrow.count() )
{
::basegfx::B2DPolygon aNewArrow;
@@ -242,7 +242,7 @@ void FuConstRectangle::SetLineEnds(SfxItemSet& rAttr, const SdrObject* pObj, sal
}
// Circles
- ::basegfx::B2DPolyPolygon aCircle( getPolygon( RID_SVXSTR_CIRCLE, rModel ) );
+ ::basegfx::B2DPolyPolygon aCircle( getPolygon( RID_SVXSTR_CIRCLE, pDoc ) );
if( !aCircle.count() )
{
::basegfx::B2DPolygon aNewCircle;
@@ -252,7 +252,7 @@ void FuConstRectangle::SetLineEnds(SfxItemSet& rAttr, const SdrObject* pObj, sal
}
// Square
- ::basegfx::B2DPolyPolygon aSquare( getPolygon( RID_SVXSTR_SQUARE, rModel ) );
+ ::basegfx::B2DPolyPolygon aSquare( getPolygon( RID_SVXSTR_SQUARE, pDoc ) );
if( !aSquare.count() )
{
::basegfx::B2DPolygon aNewSquare;
@@ -264,7 +264,7 @@ void FuConstRectangle::SetLineEnds(SfxItemSet& rAttr, const SdrObject* pObj, sal
aSquare.append(aNewSquare);
}
- SfxItemSet aSet( rModel.GetItemPool() );
+ SfxItemSet aSet( pDoc->GetItemPool() );
long nWidth = 200; // (1/100th mm)
// determine line width and calculate with it the line end width
@@ -356,9 +356,8 @@ void FuConstRectangle::Deactivate()
SdrObject* FuConstRectangle::CreateDefaultObject(const sal_uInt16 nID, const tools::Rectangle& rRectangle)
{
SdrObject* pObj = SdrObjFactory::MakeNewObject(
- *pDrDoc,
- pView->GetCurrentObjInventor(),
- pView->GetCurrentObjIdentifier());
+ pView->GetCurrentObjInventor(), pView->GetCurrentObjIdentifier(),
+ nullptr, pDrDoc);
if(pObj)
{
diff --git a/sc/source/ui/drawfunc/fuconuno.cxx b/sc/source/ui/drawfunc/fuconuno.cxx
index a3a141a8732e..619ad1c4f79d 100644
--- a/sc/source/ui/drawfunc/fuconuno.cxx
+++ b/sc/source/ui/drawfunc/fuconuno.cxx
@@ -111,9 +111,8 @@ SdrObject* FuConstUnoControl::CreateDefaultObject(const sal_uInt16 /* nID */, co
// case SID_FM_CREATE_CONTROL:
SdrObject* pObj = SdrObjFactory::MakeNewObject(
- *pDrDoc,
- pView->GetCurrentObjInventor(),
- pView->GetCurrentObjIdentifier());
+ pView->GetCurrentObjInventor(), pView->GetCurrentObjIdentifier(),
+ nullptr, pDrDoc);
if(pObj)
{
diff --git a/sc/source/ui/drawfunc/fuins1.cxx b/sc/source/ui/drawfunc/fuins1.cxx
index d1efc9f2cd33..5574a6f5b6cc 100644
--- a/sc/source/ui/drawfunc/fuins1.cxx
+++ b/sc/source/ui/drawfunc/fuins1.cxx
@@ -177,13 +177,10 @@ static void lcl_InsertGraphic( const Graphic& rGraphic,
tools::Rectangle aRect ( aInsertPos, aLogicSize );
- SdrGrafObj* pObj = new SdrGrafObj(
- pView->getSdrModelFromSdrView(), // TTTT pView should be reference
- rGraphic1,
- aRect);
+ SdrGrafObj* pObj = new SdrGrafObj( rGraphic1, aRect );
// calling SetGraphicLink here doesn't work
- // Yes, due to the SdrObject had no SdrModel
+
// Path is no longer used as name for the graphics object
ScDrawLayer* pLayer = static_cast<ScDrawLayer*>(pView->GetModel());
@@ -247,10 +244,9 @@ static void lcl_InsertMedia( const OUString& rMediaURL, bool bApi,
#endif
}
- SdrMediaObj* pObj = new SdrMediaObj(
- *rData.GetDocument()->GetDrawLayer(),
- tools::Rectangle(aInsertPos, aSize));
+ SdrMediaObj* pObj = new SdrMediaObj( tools::Rectangle( aInsertPos, aSize ) );
+ pObj->SetModel(rData.GetDocument()->GetDrawLayer()); // set before setURL
pObj->setURL( realURL, ""/*TODO?*/ );
pView->InsertObjectAtView( pObj, *pPV, bApi ? SdrInsertFlags::DONTMARK : SdrInsertFlags::NONE );
}
diff --git a/sc/source/ui/drawfunc/fuins2.cxx b/sc/source/ui/drawfunc/fuins2.cxx
index bcee011d6637..b56a1c1d7f0a 100644
--- a/sc/source/ui/drawfunc/fuins2.cxx
+++ b/sc/source/ui/drawfunc/fuins2.cxx
@@ -350,11 +350,7 @@ FuInsertOLE::FuInsertOLE(ScTabViewShell* pViewSh, vcl::Window* pWin, ScDrawView*
if ( rData.GetDocument()->IsNegativePage( rData.GetTabNo() ) )
aPnt.AdjustX( -(aSize.Width()) ); // move position to left edge
tools::Rectangle aRect (aPnt, aSize);
- SdrOle2Obj* pObj = new SdrOle2Obj(
- *pDoc, // TTTT should be reference
- aObjRef,
- aName,
- aRect);
+ SdrOle2Obj* pObj = new SdrOle2Obj( aObjRef, aName, aRect);
SdrPageView* pPV = pView->GetSdrPageView();
pView->InsertObjectAtView(pObj, *pPV);
@@ -592,11 +588,7 @@ FuInsertChart::FuInsertChart(ScTabViewShell* pViewSh, vcl::Window* pWin, ScDrawV
Point aStart = pViewSh->GetChartInsertPos( aSize, aPositionRange );
tools::Rectangle aRect (aStart, aSize);
- SdrOle2Obj* pObj = new SdrOle2Obj(
- *pDoc, // TTTT should be reference
- svt::EmbeddedObjectRef(xObj, nAspect),
- aName,
- aRect);
+ SdrOle2Obj* pObj = new SdrOle2Obj( svt::EmbeddedObjectRef( xObj, nAspect ), aName, aRect);
SdrPageView* pPV = pView->GetSdrPageView();
// #i121334# This call will change the chart's default background fill from white to transparent.
@@ -755,11 +747,7 @@ FuInsertChartFromFile::FuInsertChartFromFile( ScTabViewShell* pViewSh, vcl::Wind
ScRange aPositionRange = pViewSh->GetViewData().GetCurPos();
Point aStart = pViewSh->GetChartInsertPos( aSize, aPositionRange );
tools::Rectangle aRect (aStart, aSize);
- SdrOle2Obj* pObj = new SdrOle2Obj(
- *pDoc, // TTTT should be reference
- svt::EmbeddedObjectRef(xObj, nAspect),
- aName,
- aRect);
+ SdrOle2Obj* pObj = new SdrOle2Obj( svt::EmbeddedObjectRef( xObj, nAspect ), aName, aRect);
SdrPageView* pPV = pView->GetSdrPageView();
diff --git a/sc/source/ui/drawfunc/futext.cxx b/sc/source/ui/drawfunc/futext.cxx
index 7914c87a7313..38583597b9d2 100644
--- a/sc/source/ui/drawfunc/futext.cxx
+++ b/sc/source/ui/drawfunc/futext.cxx
@@ -643,9 +643,8 @@ SdrObject* FuText::CreateDefaultObject(const sal_uInt16 nID, const tools::Rectan
// case SID_DRAW_NOTEEDIT:
SdrObject* pObj = SdrObjFactory::MakeNewObject(
- *pDrDoc,
- pView->GetCurrentObjInventor(),
- pView->GetCurrentObjIdentifier());
+ pView->GetCurrentObjInventor(), pView->GetCurrentObjIdentifier(),
+ nullptr, pDrDoc);
if(pObj)
{
diff --git a/sc/source/ui/inc/drawview.hxx b/sc/source/ui/inc/drawview.hxx
index ad353cdd7a29..9574cdb63900 100644
--- a/sc/source/ui/inc/drawview.hxx
+++ b/sc/source/ui/inc/drawview.hxx
@@ -56,11 +56,8 @@ class ScDrawView final : public FmFormView
virtual SdrUndoManager* getSdrUndoManagerForEnhancedTextEdit() const override;
public:
- ScDrawView(
- OutputDevice* pOut,
- ScViewData* pData);
-
- virtual ~ScDrawView() override;
+ ScDrawView( OutputDevice* pOut, ScViewData* pData );
+ virtual ~ScDrawView() override;
virtual void MarkListHasChanged() override;
virtual void Notify( SfxBroadcaster& rBC, const SfxHint& rHint ) override;
diff --git a/sc/source/ui/navipi/content.cxx b/sc/source/ui/navipi/content.cxx
index a414160700c7..52c3fb9b4e93 100644
--- a/sc/source/ui/navipi/content.cxx
+++ b/sc/source/ui/navipi/content.cxx
@@ -1248,7 +1248,7 @@ static void lcl_DoDragObject( ScDocShell* pSrcShell, const OUString& rName, ScCo
SdrObject* pObject = pModel->GetNamedObject( rName, nDrawId, nTab );
if (pObject)
{
- SdrView aEditView(*pModel);
+ SdrView aEditView( pModel );
aEditView.ShowSdrPage(aEditView.GetModel()->GetPage(nTab));
SdrPageView* pPV = aEditView.GetSdrPageView();
aEditView.MarkObj(pObject, pPV);
diff --git a/sc/source/ui/unoobj/TablePivotCharts.cxx b/sc/source/ui/unoobj/TablePivotCharts.cxx
index 7f150e228572..a8c19f342abc 100644
--- a/sc/source/ui/unoobj/TablePivotCharts.cxx
+++ b/sc/source/ui/unoobj/TablePivotCharts.cxx
@@ -154,11 +154,8 @@ void SAL_CALL TablePivotCharts::addNewByName(OUString const & rName,
xReceiver->setArguments(aArgs);
}
- SdrOle2Obj* pObject = new SdrOle2Obj(
- *pModel,
- svt::EmbeddedObjectRef(xObject, embed::Aspects::MSOLE_CONTENT),
- aName,
- aInsRect);
+ SdrOle2Obj* pObject = new SdrOle2Obj(svt::EmbeddedObjectRef(xObject, embed::Aspects::MSOLE_CONTENT),
+ aName, aInsRect);
if (xObject.is())
xObject->setVisualAreaSize(nAspect, aAwtSize);
diff --git a/sc/source/ui/unoobj/chartuno.cxx b/sc/source/ui/unoobj/chartuno.cxx
index 1c98dc40c502..c146e3aba2e3 100644
--- a/sc/source/ui/unoobj/chartuno.cxx
+++ b/sc/source/ui/unoobj/chartuno.cxx
@@ -246,11 +246,7 @@ void SAL_CALL ScChartsObj::addNewByName( const OUString& rName,
rDoc.GetChartListenerCollection()->insert( pChartListener );
pChartListener->StartListeningTo();
- SdrOle2Obj* pObj = new SdrOle2Obj(
- *pModel,
- ::svt::EmbeddedObjectRef(xObj, embed::Aspects::MSOLE_CONTENT),
- aName,
- aInsRect);
+ SdrOle2Obj* pObj = new SdrOle2Obj( ::svt::EmbeddedObjectRef( xObj, embed::Aspects::MSOLE_CONTENT ), aName, aInsRect );
// set VisArea
if( xObj.is())
diff --git a/sc/source/ui/unoobj/docuno.cxx b/sc/source/ui/unoobj/docuno.cxx
index ee46cd116c43..d16bc895a5d1 100644
--- a/sc/source/ui/unoobj/docuno.cxx
+++ b/sc/source/ui/unoobj/docuno.cxx
@@ -373,18 +373,6 @@ void ScModelObj::CreateAndSet(ScDocShell* pDocSh)
pDocSh->SetBaseModel( new ScModelObj(pDocSh) );
}
-SdrModel* ScModelObj::getSdrModelFromUnoModel() const
-{
- ScDocument& rDoc(pDocShell->GetDocument());
-
- if(!rDoc.GetDrawLayer())
- {
- rDoc.InitDrawLayer();
- }
-
- return rDoc.GetDrawLayer();
-}
-
ScModelObj::ScModelObj( ScDocShell* pDocSh ) :
SfxBaseModel( pDocSh ),
aPropSet( lcl_GetDocOptPropertyMap() ),
@@ -1959,9 +1947,7 @@ void SAL_CALL ScModelObj::render( sal_Int32 nSelRenderer, const uno::Any& aSelec
if( pModel )
{
- aDrawViewKeeper.mpDrawView = new FmFormView(
- *pModel,
- pDev);
+ aDrawViewKeeper.mpDrawView = new FmFormView( pModel, pDev );
aDrawViewKeeper.mpDrawView->ShowSdrPage(aDrawViewKeeper.mpDrawView->GetModel()->GetPage(nTab));
aDrawViewKeeper.mpDrawView->SetPrintPreview();
}
diff --git a/sc/source/ui/unoobj/shapeuno.cxx b/sc/source/ui/unoobj/shapeuno.cxx
index 8c590d64a90e..a938851e26fb 100644
--- a/sc/source/ui/unoobj/shapeuno.cxx
+++ b/sc/source/ui/unoobj/shapeuno.cxx
@@ -333,13 +333,11 @@ void SAL_CALL ScShapeObj::setPropertyValue(const OUString& aPropertyName, const
SdrObject *pObj = GetSdrObject();
if (pObj)
{
- ScDrawLayer& rModel(static_cast< ScDrawLayer& >(pObj->getSdrModelFromSdrObject()));
- SdrPage* pPage(pObj->GetPage());
-
- if ( pPage )
+ ScDrawLayer* pModel = static_cast<ScDrawLayer*>(pObj->GetModel());
+ SdrPage* pPage = pObj->GetPage();
+ if ( pModel && pPage )
{
- ScDocument* pDoc(rModel.GetDocument());
-
+ ScDocument* pDoc = pModel->GetDocument();
if ( pDoc )
{
SfxObjectShell* pObjSh = pDoc->GetDocumentShell();
@@ -348,7 +346,7 @@ void SAL_CALL ScShapeObj::setPropertyValue(const OUString& aPropertyName, const
ScDocShell* pDocSh = static_cast<ScDocShell*>(pObjSh);
SCTAB nTab = 0;
- if ( lcl_GetPageNum( pPage, rModel, nTab ) )
+ if ( lcl_GetPageNum( pPage, *pModel, nTab ) )
{
table::CellRangeAddress aAddress = xRangeAdd->getRangeAddress();
if (nTab == aAddress.Sheet)
@@ -465,15 +463,14 @@ void SAL_CALL ScShapeObj::setPropertyValue(const OUString& aPropertyName, const
SdrObject *pObj = GetSdrObject();
if (pObj)
{
- ScDrawLayer& rModel(static_cast< ScDrawLayer& >(pObj->getSdrModelFromSdrObject()));
- SdrPage* pPage(pObj->GetPage());
-
- if ( pPage )
+ ScDrawLayer* pModel = static_cast<ScDrawLayer*>(pObj->GetModel());
+ SdrPage* pPage = pObj->GetPage();
+ if ( pModel && pPage )
{
SCTAB nTab = 0;
- if ( lcl_GetPageNum( pPage, rModel, nTab ) )
+ if ( lcl_GetPageNum( pPage, *pModel, nTab ) )
{
- ScDocument* pDoc = rModel.GetDocument();
+ ScDocument* pDoc = pModel->GetDocument();
if ( pDoc )
{
SfxObjectShell* pObjSh = pDoc->GetDocumentShell();
@@ -564,15 +561,14 @@ void SAL_CALL ScShapeObj::setPropertyValue(const OUString& aPropertyName, const
SdrObject *pObj = GetSdrObject();
if (pObj)
{
- ScDrawLayer& rModel(static_cast< ScDrawLayer& >(pObj->getSdrModelFromSdrObject()));
- SdrPage* pPage(pObj->GetPage());
-
- if ( pPage )
+ ScDrawLayer* pModel = static_cast<ScDrawLayer*>(pObj->GetModel());
+ SdrPage* pPage = pObj->GetPage();
+ if ( pModel && pPage )
{
SCTAB nTab = 0;
- if ( lcl_GetPageNum( pPage, rModel, nTab ) )
+ if ( lcl_GetPageNum( pPage, *pModel, nTab ) )
{
- ScDocument* pDoc = rModel.GetDocument();
+ ScDocument* pDoc = pModel->GetDocument();
if ( pDoc )
{
SfxObjectShell* pObjSh = pDoc->GetDocumentShell();
@@ -661,16 +657,15 @@ uno::Any SAL_CALL ScShapeObj::getPropertyValue( const OUString& aPropertyName )
SdrObject *pObj = GetSdrObject();
if (pObj)
{
- ScDrawLayer& rModel(static_cast< ScDrawLayer& >(pObj->getSdrModelFromSdrObject()));
- SdrPage* pPage(pObj->GetPage());
-
- if ( pPage )
+ ScDrawLayer* pModel = static_cast<ScDrawLayer*>(pObj->GetModel());
+ SdrPage* pPage = pObj->GetPage();
+ if ( pModel && pPage )
{
- ScDocument* pDoc = rModel.GetDocument();
+ ScDocument* pDoc = pModel->GetDocument();
if ( pDoc )
{
SCTAB nTab = 0;
- if ( lcl_GetPageNum( pPage, rModel, nTab ) )
+ if ( lcl_GetPageNum( pPage, *pModel, nTab ) )
{
SfxObjectShell* pObjSh = pDoc->GetDocumentShell();
if ( pObjSh && dynamic_cast<const ScDocShell*>( pObjSh) != nullptr )
@@ -710,16 +705,15 @@ uno::Any SAL_CALL ScShapeObj::getPropertyValue( const OUString& aPropertyName )
SdrObject *pObj = GetSdrObject();
if (pObj)
{
- ScDrawLayer& rModel(static_cast< ScDrawLayer& >(pObj->getSdrModelFromSdrObject()));
- SdrPage* pPage(pObj->GetPage());
-
- if ( pPage )
+ ScDrawLayer* pModel = static_cast<ScDrawLayer*>(pObj->GetModel());
+ SdrPage* pPage = pObj->GetPage();
+ if ( pModel && pPage )
{
- ScDocument* pDoc = rModel.GetDocument();
+ ScDocument* pDoc = pModel->GetDocument();
if ( pDoc )
{
SCTAB nTab = 0;
- if ( lcl_GetPageNum( pPage, rModel, nTab ) )
+ if ( lcl_GetPageNum( pPage, *pModel, nTab ) )
{
uno::Reference<drawing::XShape> xShape( mxShapeAgg, uno::UNO_QUERY );
if (xShape.is())
@@ -770,16 +764,15 @@ uno::Any SAL_CALL ScShapeObj::getPropertyValue( const OUString& aPropertyName )
SdrObject *pObj = GetSdrObject();
if (pObj)
{
- ScDrawLayer& rModel(static_cast< ScDrawLayer& >(pObj->getSdrModelFromSdrObject()));
- SdrPage* pPage(pObj->GetPage());
-
- if ( pPage )
+ ScDrawLayer* pModel = static_cast<ScDrawLayer*>(pObj->GetModel());
+ SdrPage* pPage = pObj->GetPage();
+ if ( pModel && pPage )
{
- ScDocument* pDoc = rModel.GetDocument();
+ ScDocument* pDoc = pModel->GetDocument();
if ( pDoc )
{
SCTAB nTab = 0;
- if ( lcl_GetPageNum( pPage, rModel, nTab ) )
+ if ( lcl_GetPageNum( pPage, *pModel, nTab ) )
{
uno::Reference<drawing::XShape> xShape( mxShapeAgg, uno::UNO_QUERY );
if (xShape.is())
@@ -1004,26 +997,28 @@ uno::Reference<text::XTextRange> SAL_CALL ScShapeObj::getAnchor()
SdrObject* pObj = GetSdrObject();
if( pObj )
{
- ScDrawLayer& rModel(static_cast< ScDrawLayer& >(pObj->getSdrModelFromSdrObject()));
- SdrPage* pPage(pObj->GetPage());
- ScDocument* pDoc = rModel.GetDocument();
-
- if ( pPage && pDoc )
+ ScDrawLayer* pModel = static_cast<ScDrawLayer*>(pObj->GetModel());
+ SdrPage* pPage = pObj->GetPage();
+ if ( pModel )
{
- SfxObjectShell* pObjSh = pDoc->GetDocumentShell();
- if ( pObjSh && dynamic_cast<const ScDocShell*>( pObjSh) != nullptr )
+ ScDocument* pDoc = pModel->GetDocument();
+ if ( pDoc )
{
- ScDocShell* pDocSh = static_cast<ScDocShell*>(pObjSh);
-
- SCTAB nTab = 0;
- if ( lcl_GetPageNum( pPage, rModel, nTab ) )
+ SfxObjectShell* pObjSh = pDoc->GetDocumentShell();
+ if ( pObjSh && dynamic_cast<const ScDocShell*>( pObjSh) != nullptr )
{
- Point aPos(pObj->GetCurrentBoundRect().TopLeft());
- ScRange aRange(pDoc->GetRange( nTab, tools::Rectangle( aPos, aPos ) ));
+ ScDocShell* pDocSh = static_cast<ScDocShell*>(pObjSh);
- // anchor is always the cell
+ SCTAB nTab = 0;
+ if ( lcl_GetPageNum( pPage, *pModel, nTab ) )
+ {
+ Point aPos(pObj->GetCurrentBoundRect().TopLeft());
+ ScRange aRange(pDoc->GetRange( nTab, tools::Rectangle( aPos, aPos ) ));
+
+ // anchor is always the cell
- xRet.set(new ScCellObj( pDocSh, aRange.aStart ));
+ xRet.set(new ScCellObj( pDocSh, aRange.aStart ));
+ }
}
}
}
@@ -1247,23 +1242,25 @@ uno::Reference< uno::XInterface > SAL_CALL ScShapeObj::getParent()
SdrObject* pObj = GetSdrObject();
if( pObj )
{
- ScDrawLayer& rModel(static_cast< ScDrawLayer& >(pObj->getSdrModelFromSdrObject()));
- SdrPage* pPage(pObj->GetPage());
- ScDocument* pDoc = rModel.GetDocument();
-
- if ( pPage && pDoc )
+ ScDrawLayer* pModel = static_cast<ScDrawLayer*>(pObj->GetModel());
+ SdrPage* pPage = pObj->GetPage();
+ if ( pModel )
{
- SfxObjectShell* pObjSh = pDoc->GetDocumentShell();
- if ( pObjSh && dynamic_cast<const ScDocShell*>( pObjSh) != nullptr )
+ ScDocument* pDoc = pModel->GetDocument();
+ if ( pDoc )
{
- ScDocShell* pDocSh = static_cast<ScDocShell*>(pObjSh);
-
- SCTAB nTab = 0;
- if ( lcl_GetPageNum( pPage, rModel, nTab ) )
+ SfxObjectShell* pObjSh = pDoc->GetDocumentShell();
+ if ( pObjSh && dynamic_cast<const ScDocShell*>( pObjSh) != nullptr )
{
- const ScDrawObjData* pCaptData = ScDrawLayer::GetNoteCaptionData( pObj, nTab );
- if( pCaptData )
- return static_cast< ::cppu::OWeakObject* >( new ScCellObj( pDocSh, pCaptData->maStart ) );
+ ScDocShell* pDocSh = static_cast<ScDocShell*>(pObjSh);
+
+ SCTAB nTab = 0;
+ if ( lcl_GetPageNum( pPage, *pModel, nTab ) )
+ {
+ const ScDrawObjData* pCaptData = ScDrawLayer::GetNoteCaptionData( pObj, nTab );
+ if( pCaptData )
+ return static_cast< ::cppu::OWeakObject* >( new ScCellObj( pDocSh, pCaptData->maStart ) );
+ }
}
}
}
diff --git a/sc/source/ui/view/drawvie3.cxx b/sc/source/ui/view/drawvie3.cxx
index bbe58cda31c9..4be43b1354d1 100644
--- a/sc/source/ui/view/drawvie3.cxx
+++ b/sc/source/ui/view/drawvie3.cxx
@@ -34,10 +34,8 @@
#include <tabvwsh.hxx>
#include <docsh.hxx>
-ScDrawView::ScDrawView(
- OutputDevice* pOut,
- ScViewData* pData )
-: FmFormView(*pData->GetDocument()->GetDrawLayer(), pOut),
+ScDrawView::ScDrawView( OutputDevice* pOut, ScViewData* pData ) :
+ FmFormView( pData->GetDocument()->GetDrawLayer(), pOut ),
pViewData( pData ),
pDev( pOut ),
pDoc( pData->GetDocument() ),
diff --git a/sc/source/ui/view/gridwin4.cxx b/sc/source/ui/view/gridwin4.cxx
index 0561a41c3d9f..de4ff2c7e003 100644
--- a/sc/source/ui/view/gridwin4.cxx
+++ b/sc/source/ui/view/gridwin4.cxx
@@ -1197,10 +1197,7 @@ void ScGridWindow::PaintTile( VirtualDevice& rDevice,
ScDrawLayer* pModel = pDoc->GetDrawLayer();
if (pModel)
{
- mpLOKDrawView.reset(
- new FmFormView(
- *pModel,
- &rDevice));
+ mpLOKDrawView.reset(new FmFormView(pModel, &rDevice));
mpLOKDrawView->ShowSdrPage(mpLOKDrawView->GetModel()->GetPage(nTab));
aOutputData.SetDrawView(mpLOKDrawView.get());
aOutputData.SetSpellCheckContext(mpSpellCheckCxt.get());
diff --git a/sc/source/ui/view/preview.cxx b/sc/source/ui/view/preview.cxx
index 11596ac08e5d..ae4a3fc029cf 100644
--- a/sc/source/ui/view/preview.cxx
+++ b/sc/source/ui/view/preview.cxx
@@ -165,9 +165,7 @@ void ScPreview::UpdateDrawView() // nTab must be right
if ( !pDrawView ) // New Drawing?
{
- pDrawView = new FmFormView(
- *pModel,
- this);
+ pDrawView = new FmFormView( pModel, this );
// The DrawView takes over the Design-Mode from the Model
// (Settings "In opening Draftmode"), therefore to restore here
diff --git a/sc/source/ui/view/printfun.cxx b/sc/source/ui/view/printfun.cxx
index 58316cf16907..cdafc4580165 100644
--- a/sc/source/ui/view/printfun.cxx
+++ b/sc/source/ui/view/printfun.cxx
@@ -564,10 +564,7 @@ void ScPrintFunc::DrawToDev( ScDocument* pDoc, OutputDevice* pDev, double /* nPr
if( pModel )
{
- pDrawView.reset(
- new FmFormView(
- *pModel,
- pDev));
+ pDrawView.reset(new FmFormView( pModel, pDev ));
pDrawView->ShowSdrPage(pDrawView->GetModel()->GetPage(nTab));
pDrawView->SetPrintPreview();
aOutputData.SetDrawView( pDrawView.get() );
diff --git a/sc/source/ui/view/tabvwshg.cxx b/sc/source/ui/view/tabvwshg.cxx
index d081c875c4cb..ba44266d31b0 100644
--- a/sc/source/ui/view/tabvwshg.cxx
+++ b/sc/source/ui/view/tabvwshg.cxx
@@ -60,11 +60,8 @@ void ScTabViewShell::InsertURLButton( const OUString& rName, const OUString& rUR
ScDrawView* pDrView = pView->GetScDrawView();
SdrModel* pModel = pDrView->GetModel();
- SdrObject* pObj = SdrObjFactory::MakeNewObject(
- *pModel,
- SdrInventor::FmForm,
- OBJ_FM_BUTTON,
- pDrView->GetSdrPageView()->GetPage());
+ SdrObject* pObj = SdrObjFactory::MakeNewObject(SdrInventor::FmForm, OBJ_FM_BUTTON,
+ pDrView->GetSdrPageView()->GetPage(), pModel);
SdrUnoObj* pUnoCtrl = dynamic_cast<SdrUnoObj*>( pObj );
OSL_ENSURE( pUnoCtrl, "no SdrUnoObj");
if( !pUnoCtrl )
diff --git a/sc/source/ui/view/viewfun7.cxx b/sc/source/ui/view/viewfun7.cxx
index cfbd4bed996f..e1f521ce992f 100644
--- a/sc/source/ui/view/viewfun7.cxx
+++ b/sc/source/ui/view/viewfun7.cxx
@@ -153,12 +153,11 @@ void ScViewFunc::PasteDraw( const Point& rLogicPos, SdrModel* pModel,
const SdrMark* pM=aMark.GetMark(nm);
const SdrObject* pObj=pM->GetMarkedSdrObj();
- // Directly Clone to taget SdrModel
- SdrObject* pNewObj(pObj->Clone(pDrawModel));
+ SdrObject* pNewObj=pObj->Clone();
if (pNewObj!=nullptr)
{
- // pNewObj->SetModel(pDrawModel);
+ pNewObj->SetModel(pDrawModel);
pNewObj->SetPage(pDestPage);
// copy graphics within the same model - always needs new name
@@ -194,9 +193,8 @@ void ScViewFunc::PasteDraw( const Point& rLogicPos, SdrModel* pModel,
else
{
bPasteIsMove = false; // no internal move happened
- // TTTT hide all non-direct SdrView constr to disable construct
- // in-between classes in one of the next steps (!)
- SdrView aView(*pModel); // #i71529# never create a base class of SdrView directly!
+
+ SdrView aView(pModel); // #i71529# never create a base class of SdrView directly!
SdrPageView* pPv = aView.ShowSdrPage(aView.GetModel()->GetPage(0));
aView.MarkAllObj(pPv);
Size aSize = aView.GetAllMarkedRect().GetSize();
@@ -355,11 +353,7 @@ bool ScViewFunc::PasteObject( const Point& rPos, const uno::Reference < embed::X
tools::Rectangle aRect( aInsPos, aSize );
ScDrawView* pDrView = GetScDrawView();
- SdrOle2Obj* pSdrObj = new SdrOle2Obj(
- pDrView->getSdrModelFromSdrView(),
- aObjRef,
- aName,
- aRect);
+ SdrOle2Obj* pSdrObj = new SdrOle2Obj( aObjRef, aName, aRect );
SdrPageView* pPV = pDrView->GetSdrPageView();
pDrView->InsertObjectSafe( pSdrObj, *pPV ); // don't mark if OLE
@@ -438,10 +432,7 @@ bool ScViewFunc::PasteGraphic( const Point& rPos, const Graphic& rGraphic,
GetViewData().GetViewShell()->SetDrawShell( true );
tools::Rectangle aRect(aPos, aSize);
- SdrGrafObj* pGrafObj = new SdrGrafObj(
- pScDrawView->getSdrModelFromSdrView(),
- rGraphic,
- aRect);
+ SdrGrafObj* pGrafObj = new SdrGrafObj(rGraphic, aRect);
// path was the name of the graphic in history
diff --git a/sd/inc/CustomAnimationEffect.hxx b/sd/inc/CustomAnimationEffect.hxx
index 53e08b70c4af..6322d365b293 100644
--- a/sd/inc/CustomAnimationEffect.hxx
+++ b/sd/inc/CustomAnimationEffect.hxx
@@ -25,15 +25,17 @@
#include <com/sun/star/animations/XAudio.hpp>
#include <com/sun/star/drawing/XShape.hpp>
#include <com/sun/star/util/XChangesListener.hpp>
+
#include <vcl/timer.hxx>
+
#include "sddllapi.h"
+
#include <list>
#include <vector>
#include <map>
#include <memory>
class SdrPathObj;
-class SdrModel;
namespace sd {
@@ -165,7 +167,7 @@ public:
SAL_DLLPRIVATE static sal_Int32 get_node_type( const css::uno::Reference< css::animations::XAnimationNode >& xNode );
SAL_DLLPRIVATE static sal_Int32 getNumberOfSubitems( const css::uno::Any& aTarget, sal_Int16 nIterateType );
- SAL_DLLPRIVATE SdrPathObj* createSdrPathObjFromPath(SdrModel& rTargetModel);
+ SAL_DLLPRIVATE SdrPathObj* createSdrPathObjFromPath();
SAL_DLLPRIVATE void updateSdrPathObjFromPath( SdrPathObj& rPathObj );
SAL_DLLPRIVATE void updatePathFromSdrPathObj( const SdrPathObj& rPathObj );
diff --git a/sd/inc/sdpage.hxx b/sd/inc/sdpage.hxx
index 5dedec0d3bb4..42af131102c0 100644
--- a/sd/inc/sdpage.hxx
+++ b/sd/inc/sdpage.hxx
@@ -93,7 +93,6 @@ namespace sd {
class SD_DLLPUBLIC SdPage final : public FmFormPage, public SdrObjUserCall
{
SdPage& operator=(const SdPage&) = delete;
- SdPage(const SdPage&) = delete;
friend class SdGenericDrawPage;
friend class SdDrawPage;
@@ -148,14 +147,15 @@ friend class sd::UndoAttrObject;
sal_Int32 mnTransitionFadeColor;
double mfTransitionDuration;
+ SdPage(const SdPage& rSrcPage);
void lateInit(const SdPage& rSrcPage);
public:
SdPage(SdDrawDocument& rNewDoc, bool bMasterPage);
virtual ~SdPage() override;
-
- virtual SdrPage* Clone(SdrModel* pNewModel = nullptr) const override;
+ virtual SdrPage* Clone() const override;
+ virtual SdrPage* Clone(SdrModel* pNewModel) const override;
virtual void SetSize(const Size& aSize) override;
virtual void SetBorder(sal_Int32 nLft, sal_Int32 nUpp, sal_Int32 nRgt, sal_Int32 Lwr) override;
@@ -163,6 +163,7 @@ public:
virtual void SetRightBorder(sal_Int32 nBorder) override;
virtual void SetUpperBorder(sal_Int32 nBorder) override;
virtual void SetLowerBorder(sal_Int32 nBorder) override;
+ virtual void SetModel(SdrModel* pNewModel) override;
virtual bool IsReadOnly() const override;
sd::ShapeList& GetPresentationShapeList() { return maPresentationShapeList; }
@@ -387,8 +388,6 @@ private:
sal_uInt16 mnPageId;
/** clone the animations from this and set them to rTargetPage
- * TTTT: Order is strange, should be the other way around by
- * convention/convenience and makes usage a little dangerous...
*/
void cloneAnimations( SdPage& rTargetPage ) const;
diff --git a/sd/source/core/CustomAnimationEffect.cxx b/sd/source/core/CustomAnimationEffect.cxx
index 1473358706fc..2d1025db6b61 100644
--- a/sd/source/core/CustomAnimationEffect.cxx
+++ b/sd/source/core/CustomAnimationEffect.cxx
@@ -1528,9 +1528,9 @@ bool CustomAnimationEffect::getStopAudio() const
return mnCommand == EffectCommands::STOPAUDIO;
}
-SdrPathObj* CustomAnimationEffect::createSdrPathObjFromPath(SdrModel& rTargetModel)
+SdrPathObj* CustomAnimationEffect::createSdrPathObjFromPath()
{
- SdrPathObj * pPathObj = new SdrPathObj(rTargetModel, OBJ_PATHLINE);
+ SdrPathObj * pPathObj = new SdrPathObj( OBJ_PATHLINE );
updateSdrPathObjFromPath( *pPathObj );
return pPathObj;
}
diff --git a/sd/source/core/annotations/Annotation.cxx b/sd/source/core/annotations/Annotation.cxx
index 38c6db785f46..ce442b4f7402 100644
--- a/sd/source/core/annotations/Annotation.cxx
+++ b/sd/source/core/annotations/Annotation.cxx
@@ -69,7 +69,7 @@ public:
static sal_uInt32 m_nLastId;
SdPage* GetPage() const { return mpPage; }
- SdrModel* GetModel() { return (mpPage != nullptr) ? &mpPage->getSdrModelFromSdrPage() : nullptr; }
+ SdrModel* GetModel() { return (mpPage != nullptr) ? mpPage->GetModel() : nullptr; }
sal_uInt32 GetId() const { return m_nId; }
// XInterface:
@@ -366,7 +366,7 @@ Reference< XText > SAL_CALL Annotation::getTextRange()
osl::MutexGuard g(m_aMutex);
if( !m_TextRange.is() && (mpPage != nullptr) )
{
- m_TextRange = TextApiObject::create( static_cast< SdDrawDocument* >( &mpPage->getSdrModelFromSdrPage() ) );
+ m_TextRange = TextApiObject::create( static_cast< SdDrawDocument* >( mpPage->GetModel() ) );
}
return Reference< XText >( m_TextRange.get() );
}
diff --git a/sd/source/core/drawdoc.cxx b/sd/source/core/drawdoc.cxx
index 500a88caa103..d6335e3671d3 100644
--- a/sd/source/core/drawdoc.cxx
+++ b/sd/source/core/drawdoc.cxx
@@ -657,7 +657,22 @@ void SdDrawDocument::NewOrLoadCompleted(DocCreationMode eMode)
}
mbNewOrLoadCompleted = true;
+
+ // Update all linked pages
+ sal_uInt16 nMaxSdPages = GetSdPageCount(PageKind::Standard);
+
+ for (sal_uInt16 nSdPage=0; nSdPage < nMaxSdPages; nSdPage++)
+ {
+ SdPage* pPage = GetSdPage(nSdPage, PageKind::Standard);
+
+ if (pPage && !pPage->GetFileName().isEmpty() && pPage->GetBookmarkName().getLength())
+ {
+ pPage->SetModel(this);
+ }
+ }
+
UpdateAllLinks();
+
SetChanged( false );
}
diff --git a/sd/source/core/drawdoc3.cxx b/sd/source/core/drawdoc3.cxx
index 00a605697fa8..9bc68bc98710 100644
--- a/sd/source/core/drawdoc3.cxx
+++ b/sd/source/core/drawdoc3.cxx
@@ -608,6 +608,7 @@ bool SdDrawDocument::InsertBookmarkAsPage(
// Assemble all link names
pPage->SetFileName(aBookmarkName);
pPage->SetBookmarkName(aName);
+ pPage->SetModel(this);
}
nActualInsertPos += 2;
@@ -704,6 +705,7 @@ bool SdDrawDocument::InsertBookmarkAsPage(
SdPage* pPage = static_cast<SdPage*>( GetPage(nActualInsertPos) );
pPage->SetFileName(aBookmarkName);
pPage->SetBookmarkName(aPgName);
+ pPage->SetModel(this);
}
if (bReplace)
diff --git a/sd/source/core/pglink.cxx b/sd/source/core/pglink.cxx
index 6762dcdd9bfa..93180e1b906b 100644
--- a/sd/source/core/pglink.cxx
+++ b/sd/source/core/pglink.cxx
@@ -57,7 +57,7 @@ SdPageLink::~SdPageLink()
::sfx2::SvBaseLink::UpdateResult SdPageLink::DataChanged(
const OUString&, const css::uno::Any& )
{
- SdDrawDocument* pDoc = static_cast<SdDrawDocument*>( &pPage->getSdrModelFromSdrPage() );
+ SdDrawDocument* pDoc = static_cast<SdDrawDocument*>( pPage->GetModel() );
sfx2::LinkManager* pLinkManager = pDoc!=nullptr ? pDoc->GetLinkManager() : nullptr;
if (pLinkManager)
diff --git a/sd/source/core/sdpage.cxx b/sd/source/core/sdpage.cxx
index eed4fa28256c..ad906e23c556 100644
--- a/sd/source/core/sdpage.cxx
+++ b/sd/source/core/sdpage.cxx
@@ -129,9 +129,6 @@ SdPage::SdPage(SdDrawDocument& rNewDoc, bool bMasterPage)
// presentation template of the outline objects. Therefore, it already
// contains the designator for the outline (STR_LAYOUT_OUTLINE).
maLayoutName = SdResId(STR_LAYOUT_DEFAULT_NAME)+ SD_LT_SEPARATOR STR_LAYOUT_OUTLINE;
-
- // Stuff that former SetModel did also:
- ConnectLink();
}
namespace
@@ -270,7 +267,7 @@ void SdPage::EnsureMasterPageDefaultBackground()
*/
SdrObject* SdPage::CreatePresObj(PresObjKind eObjKind, bool bVertical, const ::tools::Rectangle& rRect )
{
- ::svl::IUndoManager* pUndoManager(static_cast< SdDrawDocument& >(getSdrModelFromSdrPage()).GetUndoManager());
+ ::svl::IUndoManager* pUndoManager = pModel ? static_cast<SdDrawDocument*>(pModel)->GetUndoManager() : nullptr;
const bool bUndo = pUndoManager && pUndoManager->IsInListAction() && IsInserted();
SdrObject* pSdrObj = nullptr;
@@ -282,7 +279,7 @@ SdrObject* SdPage::CreatePresObj(PresObjKind eObjKind, bool bVertical, const ::t
{
case PRESOBJ_TITLE:
{
- pSdrObj = new SdrRectObj(getSdrModelFromSdrPage(), OBJ_TITLETEXT);
+ pSdrObj = new SdrRectObj(OBJ_TITLETEXT);
if (mbMaster)
{
@@ -293,7 +290,7 @@ SdrObject* SdPage::CreatePresObj(PresObjKind eObjKind, bool bVertical, const ::t
case PRESOBJ_OUTLINE:
{
- pSdrObj = new SdrRectObj(getSdrModelFromSdrPage(), OBJ_OUTLINETEXT);
+ pSdrObj = new SdrRectObj(OBJ_OUTLINETEXT);
if (mbMaster)
{
@@ -304,7 +301,7 @@ SdrObject* SdPage::CreatePresObj(PresObjKind eObjKind, bool bVertical, const ::t
case PRESOBJ_NOTES:
{
- pSdrObj = new SdrRectObj(getSdrModelFromSdrPage(), OBJ_TEXT);
+ pSdrObj = new SdrRectObj(OBJ_TEXT);
if (mbMaster)
{
@@ -315,7 +312,7 @@ SdrObject* SdPage::CreatePresObj(PresObjKind eObjKind, bool bVertical, const ::t
case PRESOBJ_TEXT:
{
- pSdrObj = new SdrRectObj(getSdrModelFromSdrPage(), OBJ_TEXT);
+ pSdrObj = new SdrRectObj(OBJ_TEXT);
}
break;
@@ -333,7 +330,7 @@ SdrObject* SdPage::CreatePresObj(PresObjKind eObjKind, bool bVertical, const ::t
Size aSize = aOutDev.PixelToLogic(aSizePix);
Point aPnt (0, 0);
::tools::Rectangle aRect (aPnt, aSize);
- pSdrObj = new SdrGrafObj(getSdrModelFromSdrPage(), aGraphic, aRect);
+ pSdrObj = new SdrGrafObj(aGraphic, aRect);
aOutDev.Pop();
}
break;
@@ -341,7 +338,7 @@ SdrObject* SdPage::CreatePresObj(PresObjKind eObjKind, bool bVertical, const ::t
case PRESOBJ_MEDIA:
case PRESOBJ_OBJECT:
{
- pSdrObj = new SdrOle2Obj(getSdrModelFromSdrPage());
+ pSdrObj = new SdrOle2Obj();
BitmapEx aBmpEx(BMP_PRESOBJ_OBJECT);
Graphic aGraphic( aBmpEx );
static_cast<SdrOle2Obj*>(pSdrObj)->SetGraphic(aGraphic);
@@ -350,7 +347,7 @@ SdrObject* SdPage::CreatePresObj(PresObjKind eObjKind, bool bVertical, const ::t
case PRESOBJ_CHART:
{
- pSdrObj = new SdrOle2Obj(getSdrModelFromSdrPage());
+ pSdrObj = new SdrOle2Obj();
static_cast<SdrOle2Obj*>(pSdrObj)->SetProgName( "StarChart" );
BitmapEx aBmpEx(BMP_PRESOBJ_CHART);
Graphic aGraphic( aBmpEx );
@@ -360,7 +357,7 @@ SdrObject* SdPage::CreatePresObj(PresObjKind eObjKind, bool bVertical, const ::t
case PRESOBJ_ORGCHART:
{
- pSdrObj = new SdrOle2Obj(getSdrModelFromSdrPage());
+ pSdrObj = new SdrOle2Obj();
static_cast<SdrOle2Obj*>(pSdrObj)->SetProgName( "StarOrg" );
BitmapEx aBmpEx(BMP_PRESOBJ_ORGCHART);
Graphic aGraphic( aBmpEx );
@@ -371,7 +368,7 @@ SdrObject* SdPage::CreatePresObj(PresObjKind eObjKind, bool bVertical, const ::t
case PRESOBJ_TABLE:
case PRESOBJ_CALC:
{
- pSdrObj = new SdrOle2Obj(getSdrModelFromSdrPage());
+ pSdrObj = new SdrOle2Obj();
static_cast<SdrOle2Obj*>(pSdrObj)->SetProgName( "StarCalc" );
BitmapEx aBmpEx(BMP_PRESOBJ_TABLE);
Graphic aGraphic( aBmpEx );
@@ -384,7 +381,7 @@ SdrObject* SdPage::CreatePresObj(PresObjKind eObjKind, bool bVertical, const ::t
// Save the first standard page at SdrPageObj
// #i105146# We want no content to be displayed for PageKind::Handout,
// so just never set a page as content
- pSdrObj = new SdrPageObj(getSdrModelFromSdrPage(), nullptr);
+ pSdrObj = new SdrPageObj(nullptr);
}
break;
@@ -399,13 +396,13 @@ SdrObject* SdPage::CreatePresObj(PresObjKind eObjKind, bool bVertical, const ::t
nDestPageNum -= 1;
}
- if (nDestPageNum < getSdrModelFromSdrPage().GetPageCount())
+ if (pModel && nDestPageNum < pModel->GetPageCount())
{
- pSdrObj = new SdrPageObj(getSdrModelFromSdrPage(), getSdrModelFromSdrPage().GetPage(nDestPageNum));
+ pSdrObj = new SdrPageObj(pModel->GetPage(nDestPageNum));
}
else
{
- pSdrObj = new SdrPageObj(getSdrModelFromSdrPage());
+ pSdrObj = new SdrPageObj();
}
pSdrObj->SetResizeProtect(true);
@@ -417,7 +414,7 @@ SdrObject* SdPage::CreatePresObj(PresObjKind eObjKind, bool bVertical, const ::t
case PRESOBJ_DATETIME:
case PRESOBJ_SLIDENUMBER:
{
- pSdrObj = new SdrRectObj(getSdrModelFromSdrPage(), OBJ_TEXT);
+ pSdrObj = new SdrRectObj(OBJ_TEXT);
bEmptyPresObj = false;
bForceText = true;
}
@@ -440,7 +437,7 @@ SdrObject* SdPage::CreatePresObj(PresObjKind eObjKind, bool bVertical, const ::t
if(bVertical)
static_cast<SdrTextObj*>(pSdrObj)->SetVerticalWriting(true);
- SfxItemSet aTempAttr(static_cast< SdDrawDocument& >(getSdrModelFromSdrPage()).GetPool());
+ SfxItemSet aTempAttr( static_cast<SdDrawDocument*>(pModel)->GetPool() );
if( bVertical )
aTempAttr.Put( makeSdrTextMinFrameWidthItem( rRect.GetSize().Width() ) );
else
@@ -482,7 +479,7 @@ SdrObject* SdPage::CreatePresObj(PresObjKind eObjKind, bool bVertical, const ::t
OUString aString = GetPresObjText(eObjKind);
if( (!aString.isEmpty() || bForceText) && dynamic_cast< const SdrTextObj *>( pSdrObj ) != nullptr )
{
- SdrOutliner* pOutliner = static_cast< SdDrawDocument& >(getSdrModelFromSdrPage()).GetInternalOutliner();
+ SdrOutliner* pOutliner = static_cast<SdDrawDocument*>( GetModel() )->GetInternalOutliner();
OutlinerMode nOutlMode = pOutliner->GetMode();
pOutliner->Init( OutlinerMode::TextObject );
@@ -497,7 +494,7 @@ SdrObject* SdPage::CreatePresObj(PresObjKind eObjKind, bool bVertical, const ::t
if( (eObjKind == PRESOBJ_HEADER) || (eObjKind == PRESOBJ_FOOTER) || (eObjKind == PRESOBJ_SLIDENUMBER) || (eObjKind == PRESOBJ_DATETIME) )
{
- SfxItemSet aTempAttr(static_cast< SdDrawDocument& >(getSdrModelFromSdrPage()).GetPool());
+ SfxItemSet aTempAttr( static_cast<SdDrawDocument*>(pModel)->GetPool() );
aTempAttr.Put( SvxFontHeightItem( 493, 100, EE_CHAR_FONTHEIGHT ) );
aTempAttr.Put( SvxFontHeightItem( 493, 100, EE_CHAR_FONTHEIGHT_CTL ) );
aTempAttr.Put( SvxFontHeightItem( 493, 100, EE_CHAR_FONTHEIGHT_CJK ) );
@@ -525,7 +522,7 @@ SdrObject* SdPage::CreatePresObj(PresObjKind eObjKind, bool bVertical, const ::t
if (mbMaster)
{
- SdrLayerAdmin& rLayerAdmin(getSdrModelFromSdrPage().GetLayerAdmin());
+ SdrLayerAdmin& rLayerAdmin = pModel->GetLayerAdmin();
// background objects of the master page
pSdrObj->SetLayer( rLayerAdmin.
@@ -546,7 +543,7 @@ SdrObject* SdPage::CreatePresObj(PresObjKind eObjKind, bool bVertical, const ::t
for (sal_uInt16 nLevel = 1; nLevel < 10; nLevel++)
{
OUString aName( maLayoutName + " " + OUString::number( nLevel ) );
- SfxStyleSheet* pSheet = static_cast<SfxStyleSheet*>(getSdrModelFromSdrPage().GetStyleSheetPool()->Find(aName, SfxStyleFamily::Page));
+ SfxStyleSheet* pSheet = static_cast<SfxStyleSheet*>(pModel->GetStyleSheetPool()->Find(aName, SfxStyleFamily::Page));
DBG_ASSERT(pSheet, "StyleSheet for outline object not found");
if (pSheet)
pSdrObj->StartListening(*pSheet);
@@ -559,7 +556,7 @@ SdrObject* SdPage::CreatePresObj(PresObjKind eObjKind, bool bVertical, const ::t
eObjKind == PRESOBJ_CALC ||
eObjKind == PRESOBJ_GRAPHIC )
{
- SfxItemSet aSet( static_cast< SdDrawDocument& >(getSdrModelFromSdrPage()).GetPool() );
+ SfxItemSet aSet( static_cast<SdDrawDocument*>(pModel)->GetPool() );
aSet.Put( makeSdrTextContourFrameItem( true ) );
aSet.Put( SvxAdjustItem( SvxAdjust::Center, EE_PARA_JUST ) );
@@ -568,7 +565,7 @@ SdrObject* SdPage::CreatePresObj(PresObjKind eObjKind, bool bVertical, const ::t
if( bUndo )
{
- pUndoManager->AddUndoAction(getSdrModelFromSdrPage().GetSdrUndoFactory().CreateUndoNewObject(*pSdrObj));
+ pUndoManager->AddUndoAction(pModel->GetSdrUndoFactory().CreateUndoNewObject(*pSdrObj));
}
if( bUndo )
@@ -607,7 +604,7 @@ SfxStyleSheet* SdPage::GetStyleSheetForMasterPageBackground() const
aName += STR_LAYOUT_BACKGROUND;
- SfxStyleSheetBasePool* pStShPool = getSdrModelFromSdrPage().GetStyleSheetPool();
+ SfxStyleSheetBasePool* pStShPool = pModel->GetStyleSheetPool();
SfxStyleSheetBase* pResult = pStShPool->Find(aName, SfxStyleFamily::Page);
return static_cast<SfxStyleSheet*>(pResult);
}
@@ -654,7 +651,7 @@ SfxStyleSheet* SdPage::GetStyleSheetForPresObj(PresObjKind eObjKind) const
break;
}
- SfxStyleSheetBasePool* pStShPool = getSdrModelFromSdrPage().GetStyleSheetPool();
+ SfxStyleSheetBasePool* pStShPool = pModel->GetStyleSheetPool();
SfxStyleSheetBase* pResult = pStShPool->Find(aName, SfxStyleFamily::Page);
return static_cast<SfxStyleSheet*>(pResult);
}
@@ -699,7 +696,7 @@ SdStyleSheet* SdPage::getPresentationStyle( sal_uInt32 nHelpId ) const
aStyleName += OUString::number( sal_Int32( nHelpId - HID_PSEUDOSHEET_OUTLINE ));
}
- SfxStyleSheetBasePool* pStShPool = getSdrModelFromSdrPage().GetStyleSheetPool();
+ SfxStyleSheetBasePool* pStShPool = pModel->GetStyleSheetPool();
SfxStyleSheetBase* pResult = pStShPool->Find(aStyleName, SfxStyleFamily::Page);
return dynamic_cast<SdStyleSheet*>(pResult);
}
@@ -721,7 +718,7 @@ void SdPage::Changed(const SdrObject& rObj, SdrUserCallType eType, const ::tools
case SdrUserCallType::MoveOnly:
case SdrUserCallType::Resize:
{
- if ( getSdrModelFromSdrPage().isLocked())
+ if (!pModel || pModel->isLocked())
break;
SdrObject* pObj = const_cast<SdrObject*>(&rObj);
@@ -732,7 +729,7 @@ void SdPage::Changed(const SdrObject& rObj, SdrUserCallType eType, const ::tools
{
if( pObj->GetUserCall() )
{
- ::svl::IUndoManager* pUndoManager = static_cast< SdDrawDocument& >(getSdrModelFromSdrPage()).GetUndoManager();
+ ::svl::IUndoManager* pUndoManager = static_cast<SdDrawDocument*>(pModel)->GetUndoManager();
const bool bUndo = pUndoManager && pUndoManager->IsInListAction() && IsInserted();
if( bUndo )
@@ -746,11 +743,11 @@ void SdPage::Changed(const SdrObject& rObj, SdrUserCallType eType, const ::tools
{
// Object of the master page changed, therefore adjust
// object on all pages
- sal_uInt16 nPageCount = static_cast< SdDrawDocument& >(getSdrModelFromSdrPage()).GetSdPageCount(mePageKind);
+ sal_uInt16 nPageCount = static_cast<SdDrawDocument*>(pModel)->GetSdPageCount(mePageKind);
for (sal_uInt16 i = 0; i < nPageCount; i++)
{
- SdPage* pLoopPage = static_cast< SdDrawDocument& >(getSdrModelFromSdrPage()).GetSdPage(i, mePageKind);
+ SdPage* pLoopPage = static_cast<SdDrawDocument*>(pModel)->GetSdPage(i, mePageKind);
if (pLoopPage && this == &(pLoopPage->TRG_GetMasterPage()))
{
@@ -780,7 +777,7 @@ void SdPage::Changed(const SdrObject& rObj, SdrUserCallType eType, const ::tools
void SdPage::CreateTitleAndLayout(bool bInit, bool bCreate )
{
- ::svl::IUndoManager* pUndoManager(static_cast< SdDrawDocument& >(getSdrModelFromSdrPage()).GetUndoManager());
+ ::svl::IUndoManager* pUndoManager = pModel ? static_cast<SdDrawDocument*>(pModel)->GetUndoManager() : nullptr;
const bool bUndo = pUndoManager && pUndoManager->IsInListAction() && IsInserted();
SdPage* pMasterPage = this;
@@ -803,7 +800,7 @@ void SdPage::CreateTitleAndLayout(bool bInit, bool bCreate )
pMasterPage->EnsureMasterPageDefaultBackground();
}
- if (static_cast< SdDrawDocument& >(getSdrModelFromSdrPage()).GetDocumentType() == DocumentType::Impress)
+ if (GetModel() && static_cast<SdDrawDocument*>(GetModel())->GetDocumentType() == DocumentType::Impress)
{
if( mePageKind == PageKind::Handout && bInit )
{
@@ -817,7 +814,7 @@ void SdPage::CreateTitleAndLayout(bool bInit, bool bCreate )
if( bUndo )
{
- pUndoManager->AddUndoAction(getSdrModelFromSdrPage().GetSdrUndoFactory().CreateUndoDeleteObject(*pObj));
+ pUndoManager->AddUndoAction(pModel->GetSdrUndoFactory().CreateUndoDeleteObject(*pObj));
}
else
{
@@ -826,7 +823,7 @@ void SdPage::CreateTitleAndLayout(bool bInit, bool bCreate )
}
std::vector< ::tools::Rectangle > aAreas;
- CalculateHandoutAreas( static_cast< SdDrawDocument& >(getSdrModelFromSdrPage()), pMasterPage->GetAutoLayout(), false, aAreas );
+ CalculateHandoutAreas( *static_cast< SdDrawDocument* >(GetModel() ), pMasterPage->GetAutoLayout(), false, aAreas );
const bool bSkip = pMasterPage->GetAutoLayout() == AUTOLAYOUT_HANDOUT3;
std::vector< ::tools::Rectangle >::iterator iter( aAreas.begin() );
@@ -900,7 +897,7 @@ void getPresObjProp( const SdPage& rPage, const char* sObjKind, const char* sPag
{
bool bNoObjectFound = true; //used to break from outer loop
- const std::vector< Reference<XNode> >& objectInfo = static_cast< const SdDrawDocument& >(rPage.getSdrModelFromSdrPage()).GetObjectVector();
+ const std::vector< Reference<XNode> >& objectInfo = static_cast<const SdDrawDocument*>(rPage.GetModel())->GetObjectVector();
for( std::vector< Reference<XNode> >::const_iterator aIter=objectInfo.begin(); aIter != objectInfo.end(); ++aIter )
{
if(bNoObjectFound)
@@ -1050,7 +1047,8 @@ void SdPage::DestroyDefaultPresObj(PresObjKind eObjKind)
if( pObject )
{
- SdDrawDocument* pDoc(static_cast< SdDrawDocument* >(&getSdrModelFromSdrPage()));
+ SdDrawDocument *pDoc = static_cast<SdDrawDocument*>(pModel);
+
const bool bUndo = pDoc->IsUndoEnabled();
if( bUndo )
pDoc->AddUndo(pDoc->GetSdrUndoFactory().CreateUndoDeleteObject(*pObject));
@@ -1115,9 +1113,9 @@ void SdPage::DestroyDefaultPresObj(PresObjKind eObjKind)
nDestPageNum -= 1;
}
- if(nDestPageNum < getSdrModelFromSdrPage().GetPageCount())
+ if(nDestPageNum < pModel->GetPageCount())
{
- pRefPage = getSdrModelFromSdrPage().GetPage(nDestPageNum);
+ pRefPage = pModel->GetPage(nDestPageNum);
}
if ( pRefPage )
@@ -1364,7 +1362,7 @@ static void CalcAutoLayoutRectangles( SdPage const & rPage,::tools::Rectangle* r
const Point aLayoutPos( aLayoutRect.TopLeft() );
double propvalue[] = {0,0,0,0};
- const std::vector< Reference<XNode> >& layoutInfo = static_cast< const SdDrawDocument& >(rPage.getSdrModelFromSdrPage()).GetLayoutVector();
+ const std::vector< Reference<XNode> >& layoutInfo = static_cast<const SdDrawDocument*>(rPage.GetModel())->GetLayoutVector();
for( std::vector< Reference<XNode> >::const_iterator aIter=layoutInfo.begin(); aIter != layoutInfo.end(); ++aIter )
{
Reference<XNode> layoutNode = *aIter;
@@ -1523,10 +1521,10 @@ void findAutoLayoutShapesImpl( SdPage& rPage, const LayoutDescriptor& rDescripto
{
if( pOle2->IsEmpty() )
bFound = true;
- else
+ else if( rPage.GetModel() )
{
- ::comphelper::IEmbeddedHelper* pPersist(rPage.getSdrModelFromSdrPage().GetPersist());
-
+ SdrModel* pSdrModel = rPage.GetModel();
+ ::comphelper::IEmbeddedHelper *pPersist = pSdrModel->GetPersist();
if( pPersist )
{
uno::Reference < embed::XEmbeddedObject > xObject = pPersist->getEmbeddedObjectContainer().
@@ -1600,7 +1598,7 @@ void SdPage::SetAutoLayout(AutoLayout eLayout, bool bInit, bool bCreate )
const bool bSwitchLayout = eLayout != GetAutoLayout();
- ::svl::IUndoManager* pUndoManager(static_cast< SdDrawDocument& >(getSdrModelFromSdrPage()).GetUndoManager());
+ ::svl::IUndoManager* pUndoManager = pModel ? static_cast<SdDrawDocument*>(pModel)->GetUndoManager() : nullptr;
const bool bUndo = pUndoManager && pUndoManager->IsInListAction() && IsInserted();
meAutoLayout = eLayout;
@@ -1649,7 +1647,7 @@ void SdPage::SetAutoLayout(AutoLayout eLayout, bool bInit, bool bCreate )
if( pObj->IsEmptyPresObj() )
{
if( bUndo )
- pUndoManager->AddUndoAction(getSdrModelFromSdrPage().GetSdrUndoFactory().CreateUndoDeleteObject(*pObj));
+ pUndoManager->AddUndoAction(pModel->GetSdrUndoFactory().CreateUndoDeleteObject(*pObj));
RemoveObject( pObj->GetOrdNum() );
@@ -1672,7 +1670,7 @@ void SdPage::NbcInsertObject(SdrObject* pObj, size_t nPos)
{
FmFormPage::NbcInsertObject(pObj, nPos);
- static_cast< SdDrawDocument& >(getSdrModelFromSdrPage()).InsertObject(pObj);
+ static_cast<SdDrawDocument*>(pModel)->InsertObject(pObj);
SdrLayerID nId = pObj->GetLayer();
if( mbMaster )
@@ -1735,7 +1733,8 @@ void SdPage::onRemoveObject( SdrObject* pObject )
{
RemovePresObj(pObject);
- static_cast< SdDrawDocument& >(getSdrModelFromSdrPage()).RemoveObject(pObject);
+ if( pModel )
+ static_cast<SdDrawDocument*>(pModel)->RemoveObject(pObject);
removeAnimations( pObject );
}
@@ -1957,7 +1956,7 @@ void SdPage::ScaleObjects(const Size& rNewPageSize, const ::tools::Rectangle& rN
for (sal_Int32 i=1; i<=9; i++)
{
OUString sLayoutName( aName + OUString::number( i ) );
- SfxStyleSheet* pOutlineSheet = static_cast<SfxStyleSheet*>(static_cast< SdDrawDocument& >(getSdrModelFromSdrPage()).GetStyleSheetPool()->Find(sLayoutName, SfxStyleFamily::Page));
+ SfxStyleSheet* pOutlineSheet = static_cast<SfxStyleSheet*>(static_cast<SdDrawDocument*>(pModel)->GetStyleSheetPool()->Find(sLayoutName, SfxStyleFamily::Page));
if (pOutlineSheet)
{
@@ -2078,11 +2077,12 @@ void SdPage::ScaleObjects(const Size& rNewPageSize, const ::tools::Rectangle& rN
SdrObject* convertPresentationObjectImpl(SdPage& rPage, SdrObject* pSourceObj, PresObjKind& eObjKind, bool bVertical, const ::tools::Rectangle& rRect)
{
- SdDrawDocument& rModel(static_cast< SdDrawDocument& >(rPage.getSdrModelFromSdrPage()));
- if( !pSourceObj )
+ SdDrawDocument* pModel = static_cast< SdDrawDocument* >( rPage.GetModel() );
+ DBG_ASSERT( pModel, "sd::convertPresentationObjectImpl(), no model on page!" );
+ if( !pModel || !pSourceObj )
return pSourceObj;
- ::svl::IUndoManager* pUndoManager = rModel.GetUndoManager();
+ ::svl::IUndoManager* pUndoManager = pModel->GetUndoManager();
const bool bUndo = pUndoManager && pUndoManager->IsInListAction() && rPage.IsInserted();
SdrObject* pNewObj = pSourceObj;
@@ -2096,7 +2096,7 @@ SdrObject* convertPresentationObjectImpl(SdPage& rPage, SdrObject* pSourceObj, P
if(pOutlParaObj)
{
// assign text
- SdOutliner* pOutl = rModel.GetInternalOutliner();
+ SdOutliner* pOutl = pModel->GetInternalOutliner();
pOutl->Clear();
pOutl->SetText( *pOutlParaObj );
pOutlParaObj = pOutl->CreateParaObject();
@@ -2108,7 +2108,7 @@ SdrObject* convertPresentationObjectImpl(SdPage& rPage, SdrObject* pSourceObj, P
{
// assign new template
OUString aName( rPage.GetLayoutName() + " " + OUString::number( nLevel ) );
- SfxStyleSheet* pSheet = static_cast<SfxStyleSheet*>( rModel.GetStyleSheetPool()->Find(aName, SfxStyleFamily::Page) );
+ SfxStyleSheet* pSheet = static_cast<SfxStyleSheet*>( pModel->GetStyleSheetPool()->Find(aName, SfxStyleFamily::Page) );
if (pSheet)
{
@@ -2125,7 +2125,7 @@ SdrObject* convertPresentationObjectImpl(SdPage& rPage, SdrObject* pSourceObj, P
}
// Remove LRSpace item
- SfxItemSet aSet(rModel.GetPool(), svl::Items<EE_PARA_LRSPACE, EE_PARA_LRSPACE>{} );
+ SfxItemSet aSet(pModel->GetPool(), svl::Items<EE_PARA_LRSPACE, EE_PARA_LRSPACE>{} );
aSet.Put(pNewObj->GetMergedItemSet());
@@ -2134,7 +2134,7 @@ SdrObject* convertPresentationObjectImpl(SdPage& rPage, SdrObject* pSourceObj, P
pNewObj->SetMergedItemSet(aSet);
if( bUndo )
- pUndoManager->AddUndoAction( rModel.GetSdrUndoFactory().CreateUndoDeleteObject(*pSourceObj) );
+ pUndoManager->AddUndoAction( pModel->GetSdrUndoFactory().CreateUndoDeleteObject(*pSourceObj) );
// Remove outline shape from page
rPage.RemoveObject( pSourceObj->GetOrdNum() );
@@ -2154,7 +2154,7 @@ SdrObject* convertPresentationObjectImpl(SdPage& rPage, SdrObject* pSourceObj, P
if(pOutlParaObj)
{
// assign text
- SdOutliner* pOutl = rModel.GetInternalOutliner();
+ SdOutliner* pOutl = pModel->GetInternalOutliner();
pOutl->Clear();
pOutl->SetText( *pOutlParaObj );
pOutlParaObj = pOutl->CreateParaObject();
@@ -2163,7 +2163,7 @@ SdrObject* convertPresentationObjectImpl(SdPage& rPage, SdrObject* pSourceObj, P
pNewObj->SetEmptyPresObj(false);
// reset left indent
- SfxItemSet aSet(rModel.GetPool(), svl::Items<EE_PARA_LRSPACE, EE_PARA_LRSPACE>{} );
+ SfxItemSet aSet(pModel->GetPool(), svl::Items<EE_PARA_LRSPACE, EE_PARA_LRSPACE>{} );
aSet.Put(pNewObj->GetMergedItemSet());
@@ -2180,7 +2180,7 @@ SdrObject* convertPresentationObjectImpl(SdPage& rPage, SdrObject* pSourceObj, P
// Remove subtitle shape from page
if( bUndo )
- pUndoManager->AddUndoAction(rModel.GetSdrUndoFactory().CreateUndoDeleteObject(*pSourceObj));
+ pUndoManager->AddUndoAction(pModel->GetSdrUndoFactory().CreateUndoDeleteObject(*pSourceObj));
rPage.RemoveObject( pSourceObj->GetOrdNum() );
@@ -2220,7 +2220,7 @@ SdrObject* convertPresentationObjectImpl(SdPage& rPage, SdrObject* pSourceObj, P
*/
SdrObject* SdPage::InsertAutoLayoutShape(SdrObject* pObj, PresObjKind eObjKind, bool bVertical, const ::tools::Rectangle& rRect, bool bInit)
{
- ::svl::IUndoManager* pUndoManager(static_cast< SdDrawDocument& >(getSdrModelFromSdrPage()).GetUndoManager());
+ ::svl::IUndoManager* pUndoManager = static_cast<SdDrawDocument*>(pModel)->GetUndoManager();
const bool bUndo = pUndoManager && pUndoManager->IsInListAction() && IsInserted();
if (!pObj && bInit)
@@ -2235,8 +2235,8 @@ SdrObject* SdPage::InsertAutoLayoutShape(SdrObject* pObj, PresObjKind eObjKind,
if( bUndo )
{
- pUndoManager->AddUndoAction( getSdrModelFromSdrPage().GetSdrUndoFactory().CreateUndoGeoObject( *pObj ) );
- pUndoManager->AddUndoAction( getSdrModelFromSdrPage().GetSdrUndoFactory().CreateUndoAttrObject( *pObj, true, true ) );
+ pUndoManager->AddUndoAction( pModel->GetSdrUndoFactory().CreateUndoGeoObject( *pObj ) );
+ pUndoManager->AddUndoAction( pModel->GetSdrUndoFactory().CreateUndoAttrObject( *pObj, true, true ) );
pUndoManager->AddUndoAction( new UndoObjectUserCall( *pObj ) );
}
@@ -2262,7 +2262,7 @@ SdrObject* SdPage::InsertAutoLayoutShape(SdrObject* pObj, PresObjKind eObjKind,
if ( pTextObject->IsAutoGrowHeight() )
{
// switch off AutoGrowHeight, set new MinHeight
- SfxItemSet aTempAttr( static_cast< SdDrawDocument& >(getSdrModelFromSdrPage()).GetPool() );
+ SfxItemSet aTempAttr( static_cast<SdDrawDocument*>(pModel)->GetPool() );
SdrMetricItem aMinHeight( makeSdrTextMinFrameHeightItem(rRect.GetSize().Height()) );
aTempAttr.Put( aMinHeight );
aTempAttr.Put( makeSdrTextAutoGrowHeightItem(false) );
@@ -2270,7 +2270,7 @@ SdrObject* SdPage::InsertAutoLayoutShape(SdrObject* pObj, PresObjKind eObjKind,
pTextObject->SetLogicRect(rRect);
// switch on AutoGrowHeight
- SfxItemSet aAttr( static_cast< SdDrawDocument& >(getSdrModelFromSdrPage()).GetPool() );
+ SfxItemSet aAttr( static_cast<SdDrawDocument*>(pModel)->GetPool() );
aAttr.Put( makeSdrTextAutoGrowHeightItem(true) );
pTextObject->SetMergedItemSet(aAttr);
@@ -2279,7 +2279,7 @@ SdrObject* SdPage::InsertAutoLayoutShape(SdrObject* pObj, PresObjKind eObjKind,
if ( pTextObject->IsAutoGrowWidth() )
{
// switch off AutoGrowWidth , set new MinWidth
- SfxItemSet aTempAttr( static_cast< SdDrawDocument& >(getSdrModelFromSdrPage()).GetPool() );
+ SfxItemSet aTempAttr( static_cast<SdDrawDocument*>(pModel)->GetPool() );
SdrMetricItem aMinWidth( makeSdrTextMinFrameWidthItem(rRect.GetSize().Width()) );
aTempAttr.Put( aMinWidth );
aTempAttr.Put( makeSdrTextAutoGrowWidthItem(false) );
@@ -2287,7 +2287,7 @@ SdrObject* SdPage::InsertAutoLayoutShape(SdrObject* pObj, PresObjKind eObjKind,
pTextObject->SetLogicRect(rRect);
// switch on AutoGrowWidth
- SfxItemSet aAttr( static_cast< SdDrawDocument& >(getSdrModelFromSdrPage()).GetPool() );
+ SfxItemSet aAttr( static_cast<SdDrawDocument*>(pModel)->GetPool() );
aAttr.Put( makeSdrTextAutoGrowWidthItem(true) );
pTextObject->SetMergedItemSet(aAttr);
}
@@ -2389,11 +2389,11 @@ void SdPage::SetObjText(SdrTextObj* pObj, SdrOutliner* pOutliner, PresObjKind eO
if (!pOutliner)
{
- SfxItemPool* pPool(static_cast< SdDrawDocument& >(getSdrModelFromSdrPage()).GetDrawOutliner().GetEmptyItemSet().GetPool());
+ SfxItemPool* pPool = static_cast<SdDrawDocument*>(GetModel())->GetDrawOutliner().GetEmptyItemSet().GetPool();
pOutl = new ::Outliner( pPool, OutlinerMode::OutlineObject );
pOutl->SetRefDevice( SD_MOD()->GetVirtualRefDevice() );
pOutl->SetEditTextObjectPool(pPool);
- pOutl->SetStyleSheetPool(static_cast<SfxStyleSheetPool*>(getSdrModelFromSdrPage().GetStyleSheetPool()));
+ pOutl->SetStyleSheetPool(static_cast<SfxStyleSheetPool*>(GetModel()->GetStyleSheetPool()));
pOutl->EnableUndo(false);
pOutl->SetUpdateMode( false );
}
@@ -2549,7 +2549,7 @@ const OUString& SdPage::GetName() const
aCreatedPageName = SdResId(STR_PAGE);
aCreatedPageName += " ";
- if( getSdrModelFromSdrPage().GetPageNumType() == css::style::NumberingType::NUMBER_NONE )
+ if( GetModel()->GetPageNumType() == css::style::NumberingType::NUMBER_NONE )
{
// if the document has number none as a formatting
// for page numbers we still default to arabic numbering
@@ -2558,7 +2558,7 @@ const OUString& SdPage::GetName() const
}
else
{
- aCreatedPageName += static_cast< SdDrawDocument& >(getSdrModelFromSdrPage()).CreatePageNumValue(nNum);
+ aCreatedPageName += static_cast<SdDrawDocument*>(GetModel())->CreatePageNumValue(nNum);
}
}
else
@@ -2721,7 +2721,7 @@ void SdPage::SetName (const OUString& rName)
{
OUString aOldName( GetName() );
FmFormPage::SetName (rName);
- static_cast< SdDrawDocument& >(getSdrModelFromSdrPage()).UpdatePageRelativeURLs(aOldName, rName);
+ static_cast<SdDrawDocument*>(pModel)->UpdatePageRelativeURLs(aOldName, rName);
ActionChanged();
}
diff --git a/sd/source/core/sdpage2.cxx b/sd/source/core/sdpage2.cxx
index 3b6e42fd7b95..61fd29db97f7 100644
--- a/sd/source/core/sdpage2.cxx
+++ b/sd/source/core/sdpage2.cxx
@@ -95,13 +95,13 @@ void SdPage::SetPresentationLayout(const OUString& rLayoutName,
SdPage* pMaster;
SdPage* pFoundMaster = nullptr;
sal_uInt16 nMaster = 0;
- sal_uInt16 nMasterCount = getSdrModelFromSdrPage().GetMasterPageCount();
+ sal_uInt16 nMasterCount = pModel->GetMasterPageCount();
if( !bReverseOrder )
{
for ( nMaster = 0; nMaster < nMasterCount; nMaster++ )
{
- pMaster = static_cast<SdPage*>(getSdrModelFromSdrPage().GetMasterPage(nMaster));
+ pMaster = static_cast<SdPage*>(pModel->GetMasterPage(nMaster));
if (pMaster->GetPageKind() == mePageKind && pMaster->GetLayoutName() == maLayoutName)
{
pFoundMaster = pMaster;
@@ -113,7 +113,7 @@ void SdPage::SetPresentationLayout(const OUString& rLayoutName,
{
for ( nMaster = nMasterCount; nMaster > 0; nMaster-- )
{
- pMaster = static_cast<SdPage*>(getSdrModelFromSdrPage().GetMasterPage(nMaster - 1));
+ pMaster = static_cast<SdPage*>(pModel->GetMasterPage(nMaster - 1));
if (pMaster->GetPageKind() == mePageKind && pMaster->GetLayoutName() == maLayoutName)
{
pFoundMaster = pMaster;
@@ -126,7 +126,7 @@ void SdPage::SetPresentationLayout(const OUString& rLayoutName,
// this should never happen, but we play failsafe here
if( pFoundMaster == nullptr )
- pFoundMaster = static_cast< SdDrawDocument& >(getSdrModelFromSdrPage()).GetSdPage( 0, mePageKind );
+ pFoundMaster = static_cast< SdDrawDocument *>(pModel)->GetSdPage( 0, mePageKind );
if( pFoundMaster )
TRG_SetMasterPage(*pFoundMaster);
@@ -157,7 +157,7 @@ void SdPage::SetPresentationLayout(const OUString& rLayoutName,
OUString aFullName;
OUString aOldFullName;
SfxStyleSheetBase* pSheet = nullptr;
- SfxStyleSheetBasePool* pStShPool = getSdrModelFromSdrPage().GetStyleSheetPool();
+ SfxStyleSheetBasePool* pStShPool = pModel->GetStyleSheetPool();
for (sal_Int16 i = -1; i < 9; i++)
{
@@ -261,7 +261,7 @@ void SdPage::EndListenOutlineText()
if (pOutlineTextObj)
{
- SdStyleSheetPool* pSPool = static_cast<SdStyleSheetPool*>(getSdrModelFromSdrPage().GetStyleSheetPool());
+ SdStyleSheetPool* pSPool = static_cast<SdStyleSheetPool*>(pModel->GetStyleSheetPool());
DBG_ASSERT(pSPool, "StyleSheetPool missing");
OUString aTrueLayoutName(maLayoutName);
sal_Int32 nIndex = aTrueLayoutName.indexOf( SD_LT_SEPARATOR );
@@ -282,6 +282,22 @@ void SdPage::EndListenOutlineText()
/*************************************************************************
|*
+|* Set new model
+|*
+\************************************************************************/
+
+void SdPage::SetModel(SdrModel* pNewModel)
+{
+ DisconnectLink();
+
+ // assign model
+ FmFormPage::SetModel(pNewModel);
+
+ ConnectLink();
+}
+
+/*************************************************************************
+|*
|* Is this page read-only?
|*
\************************************************************************/
@@ -299,17 +315,17 @@ bool SdPage::IsReadOnly() const
void SdPage::ConnectLink()
{
- sfx2::LinkManager* pLinkManager(getSdrModelFromSdrPage().GetLinkManager());
+ sfx2::LinkManager* pLinkManager = pModel!=nullptr ? pModel->GetLinkManager() : nullptr;
if (pLinkManager && !mpPageLink && !maFileName.isEmpty() && !maBookmarkName.isEmpty() &&
mePageKind==PageKind::Standard && !IsMasterPage() &&
- static_cast< SdDrawDocument& >(getSdrModelFromSdrPage()).IsNewOrLoadCompleted())
+ static_cast<SdDrawDocument*>(pModel)->IsNewOrLoadCompleted())
{
/**********************************************************************
* Connect
* Only standard pages are allowed to be linked
**********************************************************************/
- ::sd::DrawDocShell* pDocSh = static_cast< SdDrawDocument& >(getSdrModelFromSdrPage()).GetDocSh();
+ ::sd::DrawDocShell* pDocSh = static_cast<SdDrawDocument*>(pModel)->GetDocSh();
if (!pDocSh || pDocSh->GetMedium()->GetOrigURL() != maFileName)
{
@@ -331,7 +347,7 @@ void SdPage::ConnectLink()
void SdPage::DisconnectLink()
{
- sfx2::LinkManager* pLinkManager(getSdrModelFromSdrPage().GetLinkManager());
+ sfx2::LinkManager* pLinkManager = pModel!=nullptr ? pModel->GetLinkManager() : nullptr;
if (pLinkManager && mpPageLink)
{
@@ -344,41 +360,57 @@ void SdPage::DisconnectLink()
}
}
-void SdPage::lateInit(const SdPage& rSrcPage)
+/*************************************************************************
+|*
+|* Copy-Ctor
+|*
+\************************************************************************/
+
+SdPage::SdPage(const SdPage& rSrcPage)
+: FmFormPage(rSrcPage)
+, SdrObjUserCall()
+, mpItems(nullptr)
+, mnPageId(mnLastPageId++)
{
- // call parent
- FmFormPage::lateInit(rSrcPage);
+ mePageKind = rSrcPage.mePageKind;
+ meAutoLayout = rSrcPage.meAutoLayout;
- // copy local variables (former stuff from copy constructor)
- mePageKind = rSrcPage.mePageKind;
- meAutoLayout = rSrcPage.meAutoLayout;
- mbSelected = false;
- mnTransitionType = rSrcPage.mnTransitionType;
+ mbSelected = false;
+ mnTransitionType = rSrcPage.mnTransitionType;
mnTransitionSubtype = rSrcPage.mnTransitionSubtype;
mbTransitionDirection = rSrcPage.mbTransitionDirection;
mnTransitionFadeColor = rSrcPage.mnTransitionFadeColor;
mfTransitionDuration = rSrcPage.mfTransitionDuration;
- mePresChange = rSrcPage.mePresChange;
- mfTime = rSrcPage.mfTime;
- mbSoundOn = rSrcPage.mbSoundOn;
- mbExcluded = rSrcPage.mbExcluded;
- maLayoutName = rSrcPage.maLayoutName;
- maSoundFile = rSrcPage.maSoundFile;
- mbLoopSound = rSrcPage.mbLoopSound;
- mbStopSound = rSrcPage.mbStopSound;
+ mePresChange = rSrcPage.mePresChange;
+ mfTime = rSrcPage.mfTime;
+ mbSoundOn = rSrcPage.mbSoundOn;
+ mbExcluded = rSrcPage.mbExcluded;
+
+ maLayoutName = rSrcPage.maLayoutName;
+ maSoundFile = rSrcPage.maSoundFile;
+ mbLoopSound = rSrcPage.mbLoopSound;
+ mbStopSound = rSrcPage.mbStopSound;
maCreatedPageName.clear();
- maFileName = rSrcPage.maFileName;
- maBookmarkName = rSrcPage.maBookmarkName;
- mbScaleObjects = rSrcPage.mbScaleObjects;
+ maFileName = rSrcPage.maFileName;
+ maBookmarkName = rSrcPage.maBookmarkName;
+ mbScaleObjects = rSrcPage.mbScaleObjects;
mbBackgroundFullSize = rSrcPage.mbBackgroundFullSize;
- meCharSet = rSrcPage.meCharSet;
- mnPaperBin = rSrcPage.mnPaperBin;
- mpPageLink = nullptr; // is set when inserting via ConnectLink()
- mbIsPrecious = false;
+ meCharSet = rSrcPage.meCharSet;
+ mnPaperBin = rSrcPage.mnPaperBin;
+
+ mpPageLink = nullptr; // is set when inserting via ConnectLink()
+
+ mbIsPrecious = false;
+}
+
+void SdPage::lateInit(const SdPage& rSrcPage)
+{
+ FmFormPage::lateInit(rSrcPage);
// use shape list directly to preserve constness of rSrcPage
const std::list< SdrObject* >& rShapeList = rSrcPage.maPresentationShapeList.getList();
- for( std::list< SdrObject* >::const_iterator aIter = rShapeList.begin(); aIter != rShapeList.end(); ++aIter )
+ for( std::list< SdrObject* >::const_iterator aIter = rShapeList.begin();
+ aIter != rShapeList.end(); ++aIter )
{
SdrObject* pObj = *aIter;
InsertPresObj(GetObj(pObj->GetOrdNum()), rSrcPage.GetPresObjKind(pObj));
@@ -386,13 +418,31 @@ void SdPage::lateInit(const SdPage& rSrcPage)
// header footer
setHeaderFooterSettings( rSrcPage.getHeaderFooterSettings() );
+}
+
+/*************************************************************************
+|*
+|* Clone
+|*
+\************************************************************************/
- // animations
- rSrcPage.cloneAnimations(*this);
+SdrPage* SdPage::Clone() const
+{
+ return Clone(nullptr);
+}
+
+SdrPage* SdPage::Clone(SdrModel* pNewModel) const
+{
+ DBG_ASSERT( pNewModel == nullptr, "sd::SdPage::Clone(), new page ignored, please check code! CL" );
+
+ SdPage* pNewPage = new SdPage(*this);
+ pNewPage->lateInit( *this );
+
+ cloneAnimations( *pNewPage );
// fix user calls for duplicated slide
- SdrObjListIter aSourceIter( rSrcPage, SdrIterMode::DeepWithGroups );
- SdrObjListIter aTargetIter( *this, SdrIterMode::DeepWithGroups );
+ SdrObjListIter aSourceIter( *this, SdrIterMode::DeepWithGroups );
+ SdrObjListIter aTargetIter( *pNewPage, SdrIterMode::DeepWithGroups );
while( aSourceIter.IsMore() && aTargetIter.IsMore() )
{
@@ -400,25 +450,10 @@ void SdPage::lateInit(const SdPage& rSrcPage)
SdrObject* pTarget = aTargetIter.Next();
if( pSource->GetUserCall() )
- pTarget->SetUserCall(this);
+ pTarget->SetUserCall( pNewPage );
}
-}
-/*************************************************************************
-|*
-|* Clone
-|*
-\************************************************************************/
-
-SdrPage* SdPage::Clone(SdrModel* pNewModel) const
-{
- SdDrawDocument& rSdDrawDocument(static_cast< SdDrawDocument& >(nullptr == pNewModel ? getSdrModelFromSdrPage() : *pNewModel));
- SdPage* pClonedSdPage(
- new SdPage(
- rSdDrawDocument,
- IsMasterPage()));
- pClonedSdPage->lateInit(*this);
- return pClonedSdPage;
+ return pNewPage;
}
/*************************************************************************
@@ -441,7 +476,7 @@ SfxStyleSheet* SdPage::GetTextStyleSheetForObject( SdrObject* pObj ) const
SfxItemSet* SdPage::getOrCreateItems()
{
if( mpItems == nullptr )
- mpItems = o3tl::make_unique<SfxItemSet>( getSdrModelFromSdrPage().GetItemPool(), svl::Items<SDRATTR_XMLATTRIBUTES, SDRATTR_XMLATTRIBUTES>{} );
+ mpItems = o3tl::make_unique<SfxItemSet>( pModel->GetItemPool(), svl::Items<SDRATTR_XMLATTRIBUTES, SDRATTR_XMLATTRIBUTES>{} );
return mpItems.get();
}
@@ -569,37 +604,40 @@ void SdPage::addAnnotation( const Reference< XAnnotation >& xAnnotation, int nIn
maAnnotations.insert( maAnnotations.begin() + nIndex, xAnnotation );
}
- if( getSdrModelFromSdrPage().IsUndoEnabled() )
+ if( pModel && pModel->IsUndoEnabled() )
{
SdrUndoAction* pAction = CreateUndoInsertOrRemoveAnnotation( xAnnotation, true );
if( pAction )
- getSdrModelFromSdrPage().AddUndo( pAction );
+ pModel->AddUndo( pAction );
}
SetChanged();
- getSdrModelFromSdrPage().SetChanged();
- // TTTT NotifyDocumentEvent should be reference
- NotifyDocumentEvent(
- static_cast< SdDrawDocument* >(&getSdrModelFromSdrPage()),
- "OnAnnotationInserted",
- Reference<XInterface>(xAnnotation, UNO_QUERY));
+
+ if( pModel )
+ {
+ pModel->SetChanged();
+ NotifyDocumentEvent( static_cast< SdDrawDocument* >( pModel ), "OnAnnotationInserted", Reference<XInterface>( xAnnotation, UNO_QUERY ) );
+ }
}
void SdPage::removeAnnotation( const Reference< XAnnotation >& xAnnotation )
{
- if( getSdrModelFromSdrPage().IsUndoEnabled() )
+ if( pModel && pModel->IsUndoEnabled() )
{
SdrUndoAction* pAction = CreateUndoInsertOrRemoveAnnotation( xAnnotation, false );
if( pAction )
- getSdrModelFromSdrPage().AddUndo( pAction );
+ pModel->AddUndo( pAction );
}
AnnotationVector::iterator iter = std::find( maAnnotations.begin(), maAnnotations.end(), xAnnotation );
if( iter != maAnnotations.end() )
maAnnotations.erase( iter );
- getSdrModelFromSdrPage().SetChanged();
- NotifyDocumentEvent( static_cast< SdDrawDocument* >( &getSdrModelFromSdrPage() ), "OnAnnotationRemoved", Reference<XInterface>( xAnnotation, UNO_QUERY ) );
+ if( pModel )
+ {
+ pModel->SetChanged();
+ NotifyDocumentEvent( static_cast< SdDrawDocument* >( pModel ), "OnAnnotationRemoved", Reference<XInterface>( xAnnotation, UNO_QUERY ) );
+ }
}
void SdPage::dumpAsXml(xmlTextWriterPtr pWriter) const
diff --git a/sd/source/core/undo/undoobjects.cxx b/sd/source/core/undo/undoobjects.cxx
index d8db1329af56..6b3a4e80876e 100644
--- a/sd/source/core/undo/undoobjects.cxx
+++ b/sd/source/core/undo/undoobjects.cxx
@@ -58,10 +58,7 @@ UndoRemovePresObjectImpl::UndoRemovePresObjectImpl( SdrObject& rObject )
css::uno::Reference< css::drawing::XShape > xShape( rObject.getUnoShape(), css::uno::UNO_QUERY );
if( pPage->getMainSequence()->hasEffect( xShape ) )
{
- mpUndoAnimation.reset(
- new UndoAnimation( // TTTT may use ref? Or just *SdrPage?
- static_cast< SdDrawDocument* >(&pPage->getSdrModelFromSdrPage()),
- pPage));
+ mpUndoAnimation.reset( new UndoAnimation( static_cast< SdDrawDocument* >( pPage->GetModel() ), pPage ) );
}
}
}
@@ -183,10 +180,7 @@ UndoObjectSetText::UndoObjectSetText( SdrObject& rObject, sal_Int32 nText )
css::uno::Reference< css::drawing::XShape > xShape( rObject.getUnoShape(), css::uno::UNO_QUERY );
if( pPage->getMainSequence()->hasEffect( xShape ) )
{
- mpUndoAnimation.reset(
- new UndoAnimation(
- static_cast< SdDrawDocument* >(&pPage->getSdrModelFromSdrPage()),
- pPage));
+ mpUndoAnimation.reset( new UndoAnimation( static_cast< SdDrawDocument* >( pPage->GetModel() ), pPage ) );
}
}
}
diff --git a/sd/source/filter/grf/sdgrffilter.cxx b/sd/source/filter/grf/sdgrffilter.cxx
index 985d625b04d2..522f2bab8fc4 100644
--- a/sd/source/filter/grf/sdgrffilter.cxx
+++ b/sd/source/filter/grf/sdgrffilter.cxx
@@ -163,66 +163,62 @@ bool SdGRFFilter::Import()
const sal_uInt16 nFilter = rGraphicFilter.GetImportFormatNumberForTypeName( mrMedium.GetFilter()->GetTypeName() );
bool bRet = false;
- SvStream* pIStm = mrMedium.GetInStream();
- ErrCode nReturn = pIStm ? rGraphicFilter.ImportGraphic( aGraphic, aFileName, *pIStm, nFilter ) : ErrCode(1);
+ SvStream* pIStm = mrMedium.GetInStream();
+ ErrCode nReturn = pIStm ? rGraphicFilter.ImportGraphic( aGraphic, aFileName, *pIStm, nFilter ) : ErrCode(1);
- if( nReturn )
- HandleGraphicFilterError( nReturn, rGraphicFilter.GetLastError().nStreamError );
- else
- {
- if( mrDocument.GetPageCount() == 0 )
- mrDocument.CreateFirstPages();
+ if( nReturn )
+ HandleGraphicFilterError( nReturn, rGraphicFilter.GetLastError().nStreamError );
+ else
+ {
+ if( mrDocument.GetPageCount() == 0 )
+ mrDocument.CreateFirstPages();
- SdPage* pPage = mrDocument.GetSdPage( 0, PageKind::Standard );
- Point aPos;
- Size aPagSize( pPage->GetSize() );
- Size aGrfSize( OutputDevice::LogicToLogic( aGraphic.GetPrefSize(),
- aGraphic.GetPrefMapMode(), MapMode(MapUnit::Map100thMM)));
+ SdPage* pPage = mrDocument.GetSdPage( 0, PageKind::Standard );
+ Point aPos;
+ Size aPagSize( pPage->GetSize() );
+ Size aGrfSize( OutputDevice::LogicToLogic( aGraphic.GetPrefSize(),
+ aGraphic.GetPrefMapMode(), MapMode(MapUnit::Map100thMM)));
- aPagSize.AdjustWidth( -(pPage->GetLeftBorder() + pPage->GetRightBorder()) );
- aPagSize.AdjustHeight( -(pPage->GetUpperBorder() + pPage->GetLowerBorder()) );
+ aPagSize.AdjustWidth( -(pPage->GetLeftBorder() + pPage->GetRightBorder()) );
+ aPagSize.AdjustHeight( -(pPage->GetUpperBorder() + pPage->GetLowerBorder()) );
- // scale to fit page
- if ( ( ( aGrfSize.Height() > aPagSize.Height() ) || ( aGrfSize.Width() > aPagSize.Width() ) ) &&
- aGrfSize.Height() && aPagSize.Height() )
- {
- double fGrfWH = static_cast<double>(aGrfSize.Width()) / aGrfSize.Height();
- double fWinWH = static_cast<double>(aPagSize.Width()) / aPagSize.Height();
-
- // adjust graphic to page size (scales)
- if( fGrfWH < fWinWH )
- {
- aGrfSize.setWidth( static_cast<long>( aPagSize.Height() * fGrfWH ) );
- aGrfSize.setHeight( aPagSize.Height() );
- }
- else if( fGrfWH > 0.F )
+ // scale to fit page
+ if ( ( ( aGrfSize.Height() > aPagSize.Height() ) || ( aGrfSize.Width() > aPagSize.Width() ) ) &&
+ aGrfSize.Height() && aPagSize.Height() )
{
- aGrfSize.setWidth( aPagSize.Width() );
- aGrfSize.setHeight( static_cast<long>( aPagSize.Width() / fGrfWH ) );
- }
- }
+ double fGrfWH = static_cast<double>(aGrfSize.Width()) / aGrfSize.Height();
+ double fWinWH = static_cast<double>(aPagSize.Width()) / aPagSize.Height();
- // set output rectangle for graphic
- aPos.setX( ( ( aPagSize.Width() - aGrfSize.Width() ) >> 1 ) + pPage->GetLeftBorder() );
- aPos.setY( ( ( aPagSize.Height() - aGrfSize.Height() ) >> 1 ) + pPage->GetUpperBorder() );
+ // adjust graphic to page size (scales)
+ if( fGrfWH < fWinWH )
+ {
+ aGrfSize.setWidth( static_cast<long>( aPagSize.Height() * fGrfWH ) );
+ aGrfSize.setHeight( aPagSize.Height() );
+ }
+ else if( fGrfWH > 0.F )
+ {
+ aGrfSize.setWidth( aPagSize.Width() );
+ aGrfSize.setHeight( static_cast<long>( aPagSize.Width() / fGrfWH ) );
+ }
+ }
- pPage->InsertObject(
- new SdrGrafObj(
- pPage->getSdrModelFromSdrPage(),
- aGraphic,
- ::tools::Rectangle(aPos, aGrfSize)));
- bRet = true;
- }
+ // set output rectangle for graphic
+ aPos.setX( ( ( aPagSize.Width() - aGrfSize.Width() ) >> 1 ) + pPage->GetLeftBorder() );
+ aPos.setY( ( ( aPagSize.Height() - aGrfSize.Height() ) >> 1 ) + pPage->GetUpperBorder() );
+ pPage->InsertObject( new SdrGrafObj( aGraphic, ::tools::Rectangle( aPos, aGrfSize ) ) );
+ bRet = true;
+ }
return bRet;
}
bool SdGRFFilter::Export()
{
// SJ: todo: error handling, the GraphicExportFilter does not support proper errorhandling
+
bool bRet = false;
- uno::Reference< uno::XComponentContext > xContext = ::comphelper::getProcessComponentContext();
+ uno::Reference< uno::XComponentContext > xContext = ::comphelper::getProcessComponentContext();
uno::Reference< drawing::XGraphicExportFilter > xExporter = drawing::GraphicExportFilter::create( xContext );
SdPage* pPage = nullptr;
diff --git a/sd/source/filter/ppt/pptin.cxx b/sd/source/filter/ppt/pptin.cxx
index 056b2924a6ba..d93fa3dd8280 100644
--- a/sd/source/filter/ppt/pptin.cxx
+++ b/sd/source/filter/ppt/pptin.cxx
@@ -2688,9 +2688,8 @@ SdrObject* ImplSdPPTImport::ProcessObj( SvStream& rSt, DffObjData& rObjData, voi
aMediaURL = ReadSound( nRef );
if ( !aMediaURL.isEmpty() )
{
- SdrMediaObj* pMediaObj = new SdrMediaObj(
- pObj->getSdrModelFromSdrObject(),
- pObj->GetSnapRect());
+ SdrMediaObj* pMediaObj = new SdrMediaObj( pObj->GetSnapRect() );
+ pMediaObj->SetModel( pObj->GetModel() );
pMediaObj->SetMergedItemSet( pObj->GetMergedItemSet() );
//--remove object from maAnimations list and add the new object instead
diff --git a/sd/source/ui/animations/motionpathtag.cxx b/sd/source/ui/animations/motionpathtag.cxx
index c54d991ba42a..373f25149d87 100644
--- a/sd/source/ui/animations/motionpathtag.cxx
+++ b/sd/source/ui/animations/motionpathtag.cxx
@@ -316,7 +316,7 @@ MotionPathTag::MotionPathTag( CustomAnimationPane& rPane, ::sd::View& rView, con
, msLastPath( pEffect->getPath() )
, mbInUpdatePath( false )
{
- mpPathObj = mpEffect->createSdrPathObjFromPath(rView.getSdrModelFromSdrView());
+ mpPathObj = mpEffect->createSdrPathObjFromPath();
mxPolyPoly = mpPathObj->GetPathPoly();
if (mxOrigin.is())
maOriginPos = mxOrigin->getPosition();
diff --git a/sd/source/ui/app/sdmod2.cxx b/sd/source/ui/app/sdmod2.cxx
index 37a862294b29..e9d185c58758 100644
--- a/sd/source/ui/app/sdmod2.cxx
+++ b/sd/source/ui/app/sdmod2.cxx
@@ -160,7 +160,7 @@ IMPL_LINK(SdModule, CalcFieldValueHdl, EditFieldInfo*, pInfo, void)
const SdrTextObj* pTextObj = pSdrOutliner->GetTextObj();
if( pTextObj )
- pDoc = dynamic_cast< SdDrawDocument* >( &pTextObj->getSdrModelFromSdrObject() );
+ pDoc = dynamic_cast< SdDrawDocument* >( pTextObj->GetModel() );
if( pDoc )
pDocShell = pDoc->GetDocSh();
diff --git a/sd/source/ui/dlg/animobjs.cxx b/sd/source/ui/dlg/animobjs.cxx
index 5ca6bab37ebd..a9b324d1fd24 100644
--- a/sd/source/ui/dlg/animobjs.cxx
+++ b/sd/source/ui/dlg/animobjs.cxx
@@ -777,8 +777,12 @@ void AnimationWindow::AddObj (::sd::View& rView )
for( size_t nObject = 0; nObject < pObjList->GetObjCount(); ++nObject )
{
- SdrObject* pSnapShot(pObjList->GetObj(nObject));
- BitmapEx *const pBitmapEx = new BitmapEx(SdrExchangeView::GetObjGraphic(*pSnapShot).GetBitmapEx());
+ SdrObject* pSnapShot = pObjList->GetObj( nObject );
+
+ BitmapEx *const pBitmapEx = new BitmapEx(
+ SdrExchangeView::GetObjGraphic(
+ pSnapShot->GetModel(), pSnapShot).GetBitmapEx() );
+
::tools::Time* pTime = new ::tools::Time( m_pTimeField->GetTime() );
size_t nIndex = m_nCurrentFrame + 1;
m_FrameList.insert(
@@ -826,9 +830,14 @@ void AnimationWindow::AddObj (::sd::View& rView )
for( size_t nObject= 0; nObject < nMarkCount; ++nObject )
{
// Clone
- SdrObject* pObject(rMarkList.GetMark(nObject)->GetMarkedSdrObj());
- BitmapEx *const pBitmapEx = new BitmapEx(SdrExchangeView::GetObjGraphic(*pObject).GetBitmapEx());
+ SdrObject* pObject = rMarkList.GetMark( nObject )->GetMarkedSdrObj();
+
+ BitmapEx *const pBitmapEx = new BitmapEx(
+ SdrExchangeView::GetObjGraphic(
+ pObject->GetModel(), pObject).GetBitmapEx() );
+
::tools::Time* pTime = new ::tools::Time( m_pTimeField->GetTime() );
+
size_t nIndex = m_nCurrentFrame + 1;
m_FrameList.insert(
m_FrameList.begin() + nIndex,
@@ -843,7 +852,7 @@ void AnimationWindow::AddObj (::sd::View& rView )
}
else
{
- SdrObjGroup* pCloneGroup = new SdrObjGroup(rView.getSdrModelFromSdrView());
+ SdrObjGroup* pCloneGroup = new SdrObjGroup;
SdrObjList* pObjList = pCloneGroup->GetSubList();
for (size_t nObject= 0; nObject < nMarkCount; ++nObject)
@@ -991,9 +1000,7 @@ void AnimationWindow::CreateAnimObj (::sd::View& rView )
aAnimation.SetLoopCount( nLoopCount );
}
- SdrGrafObj* pGrafObj = new SdrGrafObj(
- rView.getSdrModelFromSdrView(),
- Graphic(aAnimation));
+ SdrGrafObj* pGrafObj = new SdrGrafObj( Graphic( aAnimation ) );
const Point aOrg( aWindowCenter.X() - ( aMaxSizeLog.Width() >> 1 ), aWindowCenter.Y() - ( aMaxSizeLog.Height() >> 1 ) );
pGrafObj->SetLogicRect( ::tools::Rectangle( aOrg, aMaxSizeLog ) );
@@ -1066,7 +1073,7 @@ void AnimationWindow::CreateAnimObj (::sd::View& rView )
if(pTargetSdPage)
{
// create animation group
- SdrObjGroup* pGroup = new SdrObjGroup(rView.getSdrModelFromSdrView());
+ SdrObjGroup* pGroup = new SdrObjGroup;
SdrObjList* pObjList = pGroup->GetSubList();
for (size_t i = 0; i < nCount; ++i)
diff --git a/sd/source/ui/func/fucon3d.cxx b/sd/source/ui/func/fucon3d.cxx
index f74db13144eb..5fe097765688 100644
--- a/sd/source/ui/func/fucon3d.cxx
+++ b/sd/source/ui/func/fucon3d.cxx
@@ -89,7 +89,6 @@ E3dCompoundObject* FuConstruct3dObject::ImpCreateBasic3DShape()
case SID_3D_CUBE:
{
p3DObj = new E3dCubeObj(
- mpView->getSdrModelFromSdrView(),
mpView->Get3DDefaultAttributes(),
::basegfx::B3DPoint(-2500, -2500, -2500),
::basegfx::B3DVector(5000, 5000, 5000));
@@ -99,7 +98,6 @@ E3dCompoundObject* FuConstruct3dObject::ImpCreateBasic3DShape()
case SID_3D_SPHERE:
{
p3DObj = new E3dSphereObj(
- mpView->getSdrModelFromSdrView(),
mpView->Get3DDefaultAttributes(),
::basegfx::B3DPoint(0, 0, 0),
::basegfx::B3DVector(5000, 5000, 5000));
@@ -116,10 +114,7 @@ E3dCompoundObject* FuConstruct3dObject::ImpCreateBasic3DShape()
{
aB2DPolygon = ::basegfx::utils::adaptiveSubdivideByAngle(aB2DPolygon);
}
- p3DObj = new E3dLatheObj(
- mpView->getSdrModelFromSdrView(),
- mpView->Get3DDefaultAttributes(),
- ::basegfx::B2DPolyPolygon(aB2DPolygon));
+ p3DObj = new E3dLatheObj(mpView->Get3DDefaultAttributes(), ::basegfx::B2DPolyPolygon(aB2DPolygon));
/* this is an open object, therefore it has to be handled double-
sided by default */
@@ -146,10 +141,7 @@ E3dCompoundObject* FuConstruct3dObject::ImpCreateBasic3DShape()
{
aB2DPolygon = ::basegfx::utils::adaptiveSubdivideByAngle(aB2DPolygon);
}
- p3DObj = new E3dLatheObj(
- mpView->getSdrModelFromSdrView(),
- mpView->Get3DDefaultAttributes(),
- ::basegfx::B2DPolyPolygon(aB2DPolygon));
+ p3DObj = new E3dLatheObj(mpView->Get3DDefaultAttributes(), ::basegfx::B2DPolyPolygon(aB2DPolygon));
break;
}
@@ -160,10 +152,7 @@ E3dCompoundObject* FuConstruct3dObject::ImpCreateBasic3DShape()
{
aB2DPolygon = ::basegfx::utils::adaptiveSubdivideByAngle(aB2DPolygon);
}
- p3DObj = new E3dLatheObj(
- mpView->getSdrModelFromSdrView(),
- mpView->Get3DDefaultAttributes(),
- ::basegfx::B2DPolyPolygon(aB2DPolygon));
+ p3DObj = new E3dLatheObj(mpView->Get3DDefaultAttributes(), ::basegfx::B2DPolyPolygon(aB2DPolygon));
break;
}
@@ -189,10 +178,7 @@ E3dCompoundObject* FuConstruct3dObject::ImpCreateBasic3DShape()
aInnerPoly.append(::basegfx::B2DPoint(0, -1000*5));
aInnerPoly.setClosed(true);
- p3DObj = new E3dLatheObj(
- mpView->getSdrModelFromSdrView(),
- mpView->Get3DDefaultAttributes(),
- ::basegfx::B2DPolyPolygon(aInnerPoly));
+ p3DObj = new E3dLatheObj(mpView->Get3DDefaultAttributes(), ::basegfx::B2DPolyPolygon(aInnerPoly));
break;
}
@@ -216,10 +202,7 @@ E3dCompoundObject* FuConstruct3dObject::ImpCreateBasic3DShape()
aInnerPoly.append(::basegfx::B2DPoint(0, 1000*5));
aInnerPoly.setClosed(true);
- p3DObj = new E3dLatheObj(
- mpView->getSdrModelFromSdrView(),
- mpView->Get3DDefaultAttributes(),
- ::basegfx::B2DPolyPolygon(aInnerPoly));
+ p3DObj = new E3dLatheObj(mpView->Get3DDefaultAttributes(), ::basegfx::B2DPolyPolygon(aInnerPoly));
break;
}
@@ -243,10 +226,7 @@ E3dCompoundObject* FuConstruct3dObject::ImpCreateBasic3DShape()
aInnerPoly.append(::basegfx::B2DPoint(0, 1000*5));
aInnerPoly.setClosed(true);
- p3DObj = new E3dLatheObj(
- mpView->getSdrModelFromSdrView(),
- mpView->Get3DDefaultAttributes(),
- ::basegfx::B2DPolyPolygon(aInnerPoly));
+ p3DObj = new E3dLatheObj(mpView->Get3DDefaultAttributes(), ::basegfx::B2DPolyPolygon(aInnerPoly));
p3DObj->SetMergedItem(makeSvx3DHorizontalSegmentsItem(4));
break;
}
@@ -393,7 +373,7 @@ SdrObject* FuConstruct3dObject::CreateDefaultObject(const sal_uInt16 nID, const
double fW(aVolume.getWidth());
double fH(aVolume.getHeight());
::tools::Rectangle a3DRect(0, 0, static_cast<long>(fW), static_cast<long>(fH));
- E3dScene* pScene = new E3dScene(*mpDoc);
+ E3dScene* pScene = new E3dScene;
// copied code from E3dView::InitScene
double fCamZ(aVolume.getMaxZ() + ((fW + fH) / 4.0));
@@ -407,9 +387,13 @@ SdrObject* FuConstruct3dObject::CreateDefaultObject(const sal_uInt16 nID, const
aCam.SetFocalLength(mpView->GetDefaultCamFocal());
aCam.SetDefaults(::basegfx::B3DPoint(0.0, 0.0, fDefaultCamPosZ), aLookAt);
pScene->SetCamera(aCam);
+
pScene->Insert3DObj(p3DObj);
pScene->NbcSetSnapRect(a3DRect);
+ pScene->SetModel(mpDoc);
+
ImpPrepareBasic3DShape(p3DObj, pScene);
+
SfxItemSet aAttr(mpDoc->GetPool());
SetStyleSheet(aAttr, p3DObj);
aAttr.Put(XLineStyleItem (drawing::LineStyle_NONE));
diff --git a/sd/source/ui/func/fuconarc.cxx b/sd/source/ui/func/fuconarc.cxx
index 6967a1495017..7d6aca665a37 100644
--- a/sd/source/ui/func/fuconarc.cxx
+++ b/sd/source/ui/func/fuconarc.cxx
@@ -91,12 +91,10 @@ void FuConstructArc::DoExecute( SfxRequest& rReq )
Activate(); // sets aObjKind
SdrCircObj* pNewCircle =
- new SdrCircObj(
- mpView->getSdrModelFromSdrView(),
- static_cast<SdrObjKind>(mpView->GetCurrentObjIdentifier()),
- aNewRectangle,
- static_cast<long>(pPhiStart->GetValue () * 10.0),
- static_cast<long>(pPhiEnd->GetValue () * 10.0));
+ new SdrCircObj(static_cast<SdrObjKind>(mpView->GetCurrentObjIdentifier()),
+ aNewRectangle,
+ static_cast<long>(pPhiStart->GetValue () * 10.0),
+ static_cast<long>(pPhiEnd->GetValue () * 10.0));
SdrPageView *pPV = mpView->GetSdrPageView();
mpView->InsertObjectAtView(pNewCircle, *pPV, SdrInsertFlags::SETDEFLAYER);
@@ -204,9 +202,8 @@ SdrObject* FuConstructArc::CreateDefaultObject(const sal_uInt16 nID, const ::too
{
SdrObject* pObj = SdrObjFactory::MakeNewObject(
- mpView->getSdrModelFromSdrView(),
- mpView->GetCurrentObjInventor(),
- mpView->GetCurrentObjIdentifier());
+ mpView->GetCurrentObjInventor(), mpView->GetCurrentObjIdentifier(),
+ nullptr, mpDoc);
if(pObj)
{
diff --git a/sd/source/ui/func/fuconbez.cxx b/sd/source/ui/func/fuconbez.cxx
index cad7080afd6b..e7cc868d495b 100644
--- a/sd/source/ui/func/fuconbez.cxx
+++ b/sd/source/ui/func/fuconbez.cxx
@@ -309,9 +309,8 @@ SdrObject* FuConstructBezierPolygon::CreateDefaultObject(const sal_uInt16 nID, c
// case SID_DRAW_BEZIER_NOFILL: // BASIC
SdrObject* pObj = SdrObjFactory::MakeNewObject(
- mpView->getSdrModelFromSdrView(),
- mpView->GetCurrentObjInventor(),
- mpView->GetCurrentObjIdentifier());
+ mpView->GetCurrentObjInventor(), mpView->GetCurrentObjIdentifier(),
+ nullptr, mpDoc);
if(pObj)
{
diff --git a/sd/source/ui/func/fuconcs.cxx b/sd/source/ui/func/fuconcs.cxx
index 97a60a302c11..6396eeb46e82 100644
--- a/sd/source/ui/func/fuconcs.cxx
+++ b/sd/source/ui/func/fuconcs.cxx
@@ -188,7 +188,7 @@ void FuConstructCustomShape::SetAttributes( SdrObject* pObj )
{
const SfxItemSet& rSource = pSourceObj->GetMergedItemSet();
SfxItemSet aDest(
- pObj->getSdrModelFromSdrObject().GetItemPool(),
+ pObj->GetModel()->GetItemPool(),
svl::Items<
// Ranges from SdrAttrObj:
SDRATTR_START, SDRATTR_SHADOW_LAST,
@@ -236,9 +236,8 @@ const OUString& FuConstructCustomShape::GetShapeType() const
SdrObject* FuConstructCustomShape::CreateDefaultObject(const sal_uInt16, const ::tools::Rectangle& rRectangle)
{
SdrObject* pObj = SdrObjFactory::MakeNewObject(
- mpView->getSdrModelFromSdrView(),
- mpView->GetCurrentObjInventor(),
- mpView->GetCurrentObjIdentifier());
+ mpView->GetCurrentObjInventor(), mpView->GetCurrentObjIdentifier(),
+ nullptr, mpDoc);
if( pObj )
{
diff --git a/sd/source/ui/func/fuconrec.cxx b/sd/source/ui/func/fuconrec.cxx
index d78fd866755d..1377429ed056 100644
--- a/sd/source/ui/func/fuconrec.cxx
+++ b/sd/source/ui/func/fuconrec.cxx
@@ -109,10 +109,7 @@ void FuConstructRectangle::DoExecute( SfxRequest& rReq )
pCenterY->GetValue () - pAxisY->GetValue () / 2,
pCenterX->GetValue () + pAxisX->GetValue () / 2,
pCenterY->GetValue () + pAxisY->GetValue () / 2);
- SdrCircObj *pNewCircle = new SdrCircObj(
- mpView->getSdrModelFromSdrView(),
- OBJ_CIRC,
- aNewRectangle);
+ SdrCircObj *pNewCircle = new SdrCircObj (OBJ_CIRC, aNewRectangle);
SdrPageView *pPV = mpView->GetSdrPageView();
mpView->InsertObjectAtView(pNewCircle, *pPV, SdrInsertFlags::SETDEFLAYER | SdrInsertFlags::SETDEFATTR);
@@ -130,9 +127,7 @@ void FuConstructRectangle::DoExecute( SfxRequest& rReq )
pMouseStartY->GetValue (),
pMouseEndX->GetValue (),
pMouseEndY->GetValue ());
- SdrRectObj *pNewRect = new SdrRectObj(
- mpView->getSdrModelFromSdrView(),
- aNewRectangle);
+ SdrRectObj *pNewRect = new SdrRectObj (aNewRectangle);
SdrPageView *pPV = mpView->GetSdrPageView();
mpView->InsertObjectAtView(pNewRect, *pPV, SdrInsertFlags::SETDEFLAYER | SdrInsertFlags::SETDEFATTR);
@@ -482,9 +477,9 @@ void FuConstructRectangle::SetAttributes(SfxItemSet& rAttr, SdrObject* pObj)
// dimension line
SdPage* pPage = static_cast<SdPage*>( mpView->GetSdrPageView()->GetPage() );
OUString aName(SdResId(STR_POOLSHEET_MEASURE));
- SfxStyleSheet* pSheet(
- static_cast< SfxStyleSheet* >(
- pPage->getSdrModelFromSdrPage().GetStyleSheetPool()->Find(aName, SfxStyleFamily::Para)));
+ SfxStyleSheet* pSheet = static_cast<SfxStyleSheet*>( pPage->GetModel()->
+ GetStyleSheetPool()->
+ Find(aName, SfxStyleFamily::Para));
DBG_ASSERT(pSheet, "StyleSheet missing");
if (pSheet)
@@ -501,10 +496,10 @@ void FuConstructRectangle::SetAttributes(SfxItemSet& rAttr, SdrObject* pObj)
/**
* set line starts and ends for the object to be created
*/
-::basegfx::B2DPolyPolygon getPolygon(const char* pResId, const SdrModel& rModel)
+::basegfx::B2DPolyPolygon getPolygon(const char* pResId, SdrModel const * pDoc)
{
::basegfx::B2DPolyPolygon aRetval;
- XLineEndListRef pLineEndList(rModel.GetLineEndList());
+ XLineEndListRef pLineEndList = pDoc->GetLineEndList();
if( pLineEndList.is() )
{
@@ -541,10 +536,9 @@ void FuConstructRectangle::SetLineEnds(SfxItemSet& rAttr, SdrObject const * pObj
nSlotId == SID_LINE_SQUARE_ARROW )
{
// set attributes of line start and ends
- SdrModel& rModel(pObj->getSdrModelFromSdrObject()); // TTTT pObj should be reference
// arrowhead
- ::basegfx::B2DPolyPolygon aArrow( getPolygon( RID_SVXSTR_ARROW, rModel ) );
+ ::basegfx::B2DPolyPolygon aArrow( getPolygon( RID_SVXSTR_ARROW, mpDoc ) );
if( !aArrow.count() )
{
::basegfx::B2DPolygon aNewArrow;
@@ -556,7 +550,7 @@ void FuConstructRectangle::SetLineEnds(SfxItemSet& rAttr, SdrObject const * pObj
}
// Circles
- ::basegfx::B2DPolyPolygon aCircle( getPolygon( RID_SVXSTR_CIRCLE, rModel ) );
+ ::basegfx::B2DPolyPolygon aCircle( getPolygon( RID_SVXSTR_CIRCLE, mpDoc ) );
if( !aCircle.count() )
{
::basegfx::B2DPolygon aNewCircle;
@@ -566,7 +560,7 @@ void FuConstructRectangle::SetLineEnds(SfxItemSet& rAttr, SdrObject const * pObj
}
// Square
- ::basegfx::B2DPolyPolygon aSquare( getPolygon( RID_SVXSTR_SQUARE, rModel ) );
+ ::basegfx::B2DPolyPolygon aSquare( getPolygon( RID_SVXSTR_SQUARE, mpDoc ) );
if( !aSquare.count() )
{
::basegfx::B2DPolygon aNewSquare;
@@ -770,9 +764,8 @@ SdrObject* FuConstructRectangle::CreateDefaultObject(const sal_uInt16 nID, const
// case SID_CONNECTOR_LINES_CIRCLES:
SdrObject* pObj = SdrObjFactory::MakeNewObject(
- mpView->getSdrModelFromSdrView(),
- mpView->GetCurrentObjInventor(),
- mpView->GetCurrentObjIdentifier());
+ mpView->GetCurrentObjInventor(), mpView->GetCurrentObjIdentifier(),
+ nullptr, mpDoc);
if(pObj)
{
diff --git a/sd/source/ui/func/fuconstr.cxx b/sd/source/ui/func/fuconstr.cxx
index 9e15f47a070a..8f376fb3d72a 100644
--- a/sd/source/ui/func/fuconstr.cxx
+++ b/sd/source/ui/func/fuconstr.cxx
@@ -318,9 +318,9 @@ void FuConstruct::SetStyleSheet( SfxItemSet& rAttr, SdrObject* pObj,
OUString aName( pPage->GetLayoutName() );
sal_Int32 n = aName.indexOf(SD_LT_SEPARATOR) + strlen(SD_LT_SEPARATOR);
aName = aName.copy(0, n) + STR_LAYOUT_BACKGROUNDOBJECTS;
- SfxStyleSheet* pSheet(
- static_cast< SfxStyleSheet* >(
- pPage->getSdrModelFromSdrPage().GetStyleSheetPool()->Find(aName, SfxStyleFamily::Page)));
+ SfxStyleSheet* pSheet = static_cast<SfxStyleSheet*>(pPage->GetModel()->
+ GetStyleSheetPool()->
+ Find(aName, SfxStyleFamily::Page));
DBG_ASSERT(pSheet, "StyleSheet missing");
if (pSheet)
{
@@ -348,9 +348,9 @@ void FuConstruct::SetStyleSheet( SfxItemSet& rAttr, SdrObject* pObj,
if ( bForceNoFillStyle )
{
OUString aName(SdResId(STR_POOLSHEET_OBJWITHOUTFILL));
- SfxStyleSheet* pSheet(
- static_cast< SfxStyleSheet* >(
- pPage->getSdrModelFromSdrPage().GetStyleSheetPool()->Find(aName, SfxStyleFamily::Para)));
+ SfxStyleSheet* pSheet = static_cast<SfxStyleSheet*>(pPage->GetModel()->
+ GetStyleSheetPool()->
+ Find(aName, SfxStyleFamily::Para));
DBG_ASSERT(pSheet, "Stylesheet missing");
if (pSheet)
{
diff --git a/sd/source/ui/func/fuconuno.cxx b/sd/source/ui/func/fuconuno.cxx
index 8ff99fdb7e00..935cb0c50157 100644
--- a/sd/source/ui/func/fuconuno.cxx
+++ b/sd/source/ui/func/fuconuno.cxx
@@ -138,9 +138,8 @@ SdrObject* FuConstructUnoControl::CreateDefaultObject(const sal_uInt16, const ::
// case SID_FM_CREATE_CONTROL:
SdrObject* pObj = SdrObjFactory::MakeNewObject(
- mpView->getSdrModelFromSdrView(),
- mpView->GetCurrentObjInventor(),
- mpView->GetCurrentObjIdentifier());
+ mpView->GetCurrentObjInventor(), mpView->GetCurrentObjIdentifier(),
+ nullptr, mpDoc);
if(pObj)
{
diff --git a/sd/source/ui/func/fuinsert.cxx b/sd/source/ui/func/fuinsert.cxx
index ad22e00dc71b..0cdd22da3807 100644
--- a/sd/source/ui/func/fuinsert.cxx
+++ b/sd/source/ui/func/fuinsert.cxx
@@ -386,11 +386,7 @@ void FuInsertOLE::DoExecute( SfxRequest& rReq )
aRect = ::tools::Rectangle(aPos, aSize);
}
- SdrOle2Obj* pOleObj = new SdrOle2Obj(
- mpView->getSdrModelFromSdrView(),
- svt::EmbeddedObjectRef( xObj, nAspect ),
- aObjName,
- aRect);
+ SdrOle2Obj* pOleObj = new SdrOle2Obj( svt::EmbeddedObjectRef( xObj, nAspect ), aObjName, aRect );
SdrPageView* pPV = mpView->GetSdrPageView();
// if we have a pick obj we need to make this new ole a pres obj replacing the current pick obj
@@ -617,11 +613,8 @@ void FuInsertOLE::DoExecute( SfxRequest& rReq )
Point aPnt ((aPageSize.Width() - aSize.Width()) / 2,
(aPageSize.Height() - aSize.Height()) / 2);
::tools::Rectangle aRect (aPnt, aSize);
- SdrOle2Obj* pObj = new SdrOle2Obj(
- mpView->getSdrModelFromSdrView(),
- aObjRef,
- aName,
- aRect);
+
+ SdrOle2Obj* pObj = new SdrOle2Obj( aObjRef, aName, aRect);
if( mpView->InsertObjectAtView(pObj, *pPV, SdrInsertFlags::SETDEFLAYER) )
{
diff --git a/sd/source/ui/func/fuinsfil.cxx b/sd/source/ui/func/fuinsfil.cxx
index 5ad65b627063..fae84526e97f 100644
--- a/sd/source/ui/func/fuinsfil.cxx
+++ b/sd/source/ui/func/fuinsfil.cxx
@@ -506,9 +506,7 @@ void FuInsertFile::InsTextOrRTFinDrMode(SfxMedium* pMedium)
}
else
{
- SdrRectObj* pTO = new SdrRectObj(
- mpView->getSdrModelFromSdrView(),
- OBJ_TEXT);
+ SdrRectObj* pTO = new SdrRectObj(OBJ_TEXT);
pTO->SetOutlinerParaObject(pOPO);
const bool bUndo = mpView->IsUndoEnabled();
diff --git a/sd/source/ui/func/fumorph.cxx b/sd/source/ui/func/fumorph.cxx
index 03aa0b0ad656..b78c018747ed 100644
--- a/sd/source/ui/func/fumorph.cxx
+++ b/sd/source/ui/func/fumorph.cxx
@@ -384,7 +384,7 @@ void FuMorph::ImpInsertPolygons(
if ( pPageView )
{
SfxItemSet aSet( aSet1 );
- SdrObjGroup* pObjGroup = new SdrObjGroup(mpView->getSdrModelFromSdrView());
+ SdrObjGroup* pObjGroup = new SdrObjGroup;
SdrObjList* pObjList = pObjGroup->GetSubList();
const size_t nCount = rPolyPolyList3D.size();
const double fStep = 1. / ( nCount + 1 );
@@ -397,10 +397,7 @@ void FuMorph::ImpInsertPolygons(
for ( size_t i = 0; i < nCount; i++, fFactor += fStep )
{
const ::basegfx::B2DPolyPolygon& rPolyPoly3D = *rPolyPolyList3D[ i ];
- SdrPathObj* pNewObj = new SdrPathObj(
- mpView->getSdrModelFromSdrView(),
- OBJ_POLY,
- rPolyPoly3D);
+ SdrPathObj* pNewObj = new SdrPathObj(OBJ_POLY, rPolyPoly3D);
// line color
if ( bLineColor )
diff --git a/sd/source/ui/func/futext.cxx b/sd/source/ui/func/futext.cxx
index b6d81901f870..300e17c09cc5 100644
--- a/sd/source/ui/func/futext.cxx
+++ b/sd/source/ui/func/futext.cxx
@@ -691,7 +691,7 @@ bool FuText::MouseButtonUp(const MouseEvent& rMEvt)
// outliner object up to now; also it needs to be set back to not
// vertical when there was a vertical one used last time.
OutlinerParaObject* pOPO = GetTextObj()->GetOutlinerParaObject();
- SdrOutliner& rOutl(mxTextObj->getSdrModelFromSdrObject().GetDrawOutliner(GetTextObj()));
+ SdrOutliner& rOutl = mxTextObj->GetModel()->GetDrawOutliner(GetTextObj());
bool bVertical((pOPO && pOPO->IsVertical())
|| nSlotId == SID_ATTR_CHAR_VERTICAL
|| nSlotId == SID_TEXT_FITTOSIZE_VERTICAL);
@@ -1304,11 +1304,10 @@ void FuText::DoubleClick(const MouseEvent& )
*/
SdrObject* FuText::CreateDefaultObject(const sal_uInt16 nID, const ::tools::Rectangle& rRectangle)
{
+
SdrObject* pObj = SdrObjFactory::MakeNewObject(
- mpView->getSdrModelFromSdrView(),
- mpView->GetCurrentObjInventor(),
- mpView->GetCurrentObjIdentifier(),
- nullptr);
+ mpView->GetCurrentObjInventor(), mpView->GetCurrentObjIdentifier(),
+ nullptr, mpDoc);
if(pObj)
{
diff --git a/sd/source/ui/func/unoaprms.cxx b/sd/source/ui/func/unoaprms.cxx
index ab46b90ac8ee..021dc5ba7a02 100644
--- a/sd/source/ui/func/unoaprms.cxx
+++ b/sd/source/ui/func/unoaprms.cxx
@@ -27,7 +27,7 @@ void SdAnimationPrmsUndoAction::Undo()
// no new info created: restore data
if (!bInfoCreated)
{
- SdDrawDocument* pDoc(dynamic_cast< SdDrawDocument* >(&pObject->getSdrModelFromSdrObject()));
+ SdDrawDocument* pDoc = static_cast<SdDrawDocument*>(pObject->GetModel());
if( pDoc )
{
SdAnimationInfo* pInfo = SdDrawDocument::GetAnimationInfo( pObject );
diff --git a/sd/source/ui/inc/unomodel.hxx b/sd/source/ui/inc/unomodel.hxx
index 381b22be955f..67770cc27313 100644
--- a/sd/source/ui/inc/unomodel.hxx
+++ b/sd/source/ui/inc/unomodel.hxx
@@ -128,10 +128,6 @@ private:
sd::DrawViewShell* GetViewShell();
-protected:
- /** abstract SdrModel provider */
- virtual SdrModel* getSdrModelFromUnoModel() const override;
-
public:
SdXImpressDocument(::sd::DrawDocShell* pShell, bool bClipBoard);
SdXImpressDocument(SdDrawDocument* pDoc, bool bClipBoard);
diff --git a/sd/source/ui/sidebar/DocumentHelper.cxx b/sd/source/ui/sidebar/DocumentHelper.cxx
index b9336124f9e1..dc76d90a4777 100644
--- a/sd/source/ui/sidebar/DocumentHelper.cxx
+++ b/sd/source/ui/sidebar/DocumentHelper.cxx
@@ -53,11 +53,14 @@ SdPage* DocumentHelper::CopyMasterPageToLocalDocument (
break;
// Check the presence of the source document.
- SdDrawDocument& rSourceDocument(static_cast< SdDrawDocument& >(pMasterPage->getSdrModelFromSdrPage()));
+ SdDrawDocument* pSourceDocument = static_cast<SdDrawDocument*>(
+ pMasterPage->GetModel());
+ if (pSourceDocument == nullptr)
+ break;
// When the given master page already belongs to the target document
// then there is nothing more to do.
- if (&rSourceDocument == &rTargetDocument)
+ if (pSourceDocument == &rTargetDocument)
{
pNewMasterPage = pMasterPage;
break;
@@ -67,7 +70,7 @@ SdPage* DocumentHelper::CopyMasterPageToLocalDocument (
// present. This is not the case when we are called during the
// creation of the slide master page because then the notes master
// page is not there.
- sal_uInt16 nSourceMasterPageCount = rSourceDocument.GetMasterPageCount();
+ sal_uInt16 nSourceMasterPageCount = pSourceDocument->GetMasterPageCount();
if (nSourceMasterPageCount%2 == 0)
// There should be 1 handout page + n slide masters + n notes
// masters = 2*n+1. An even value indicates that a new slide
@@ -78,11 +81,11 @@ SdPage* DocumentHelper::CopyMasterPageToLocalDocument (
break;
// Get the slide master page.
if (pMasterPage != static_cast<SdPage*>(
- rSourceDocument.GetMasterPage(nIndex)))
+ pSourceDocument->GetMasterPage(nIndex)))
break;
// Get the notes master page.
SdPage* pNotesMasterPage = static_cast<SdPage*>(
- rSourceDocument.GetMasterPage(nIndex+1));
+ pSourceDocument->GetMasterPage(nIndex+1));
if (pNotesMasterPage == nullptr)
break;
@@ -158,7 +161,7 @@ SdPage* DocumentHelper::GetSlideForMasterPage (SdPage const * pMasterPage)
SdDrawDocument* pDocument = nullptr;
if (pMasterPage != nullptr)
- pDocument = dynamic_cast< SdDrawDocument* >(&pMasterPage->getSdrModelFromSdrPage());
+ pDocument = dynamic_cast<SdDrawDocument*>(pMasterPage->GetModel());
// Iterate over all pages and check if it references the given master
// page.
@@ -212,8 +215,10 @@ SdPage* DocumentHelper::AddMasterPage (
pClonedMasterPage = static_cast<SdPage*>(pMasterPage->Clone());
// Copy the necessary styles.
- SdDrawDocument& rSourceDocument(static_cast< SdDrawDocument& >(pMasterPage->getSdrModelFromSdrPage()));
- ProvideStyles(rSourceDocument, rTargetDocument, pClonedMasterPage);
+ SdDrawDocument* pSourceDocument
+ = static_cast<SdDrawDocument*>(pMasterPage->GetModel());
+ if (pSourceDocument != nullptr)
+ ProvideStyles (*pSourceDocument, rTargetDocument, pClonedMasterPage);
// Copy the precious flag.
pClonedMasterPage->SetPrecious(pMasterPage->IsPrecious());
@@ -305,7 +310,7 @@ void DocumentHelper::AssignMasterPageToPageList (
::std::vector<SdPage*> aCleanedList;
for (iPage=rpPageList->begin(); iPage!=rpPageList->end(); ++iPage)
{
- OSL_ASSERT(*iPage!=nullptr && &(*iPage)->getSdrModelFromSdrPage() == &rTargetDocument);
+ OSL_ASSERT(*iPage!=nullptr && (*iPage)->GetModel() == &rTargetDocument);
if (*iPage != nullptr && (*iPage)->GetLayoutName() != sFullLayoutName)
{
aCleanedList.push_back(*iPage);
@@ -353,24 +358,28 @@ SdPage* DocumentHelper::AddMasterPage (
pClonedMasterPage->SetPrecious(pMasterPage->IsPrecious());
// Copy the necessary styles.
- SdDrawDocument& rSourceDocument(static_cast< SdDrawDocument& >(pMasterPage->getSdrModelFromSdrPage()));
- ProvideStyles(rSourceDocument, rTargetDocument, pClonedMasterPage);
-
- // Now that the styles are available we can insert the cloned
- // master page.
- rTargetDocument.InsertMasterPage (pClonedMasterPage, nInsertionIndex);
-
- // Adapt the size of the new master page to that of the pages in
- // the document.
- Size aNewSize (rTargetDocument.GetSdPage(0, pMasterPage->GetPageKind())->GetSize());
- ::tools::Rectangle aBorders (
- pClonedMasterPage->GetLeftBorder(),
- pClonedMasterPage->GetUpperBorder(),
- pClonedMasterPage->GetRightBorder(),
- pClonedMasterPage->GetLowerBorder());
- pClonedMasterPage->ScaleObjects(aNewSize, aBorders, true);
- pClonedMasterPage->SetSize(aNewSize);
- pClonedMasterPage->CreateTitleAndLayout(true);
+ SdDrawDocument* pSourceDocument
+ = static_cast<SdDrawDocument*>(pMasterPage->GetModel());
+ if (pSourceDocument != nullptr)
+ {
+ ProvideStyles (*pSourceDocument, rTargetDocument, pClonedMasterPage);
+
+ // Now that the styles are available we can insert the cloned
+ // master page.
+ rTargetDocument.InsertMasterPage (pClonedMasterPage, nInsertionIndex);
+
+ // Adapt the size of the new master page to that of the pages in
+ // the document.
+ Size aNewSize (rTargetDocument.GetSdPage(0, pMasterPage->GetPageKind())->GetSize());
+ ::tools::Rectangle aBorders (
+ pClonedMasterPage->GetLeftBorder(),
+ pClonedMasterPage->GetUpperBorder(),
+ pClonedMasterPage->GetRightBorder(),
+ pClonedMasterPage->GetLowerBorder());
+ pClonedMasterPage->ScaleObjects(aNewSize, aBorders, true);
+ pClonedMasterPage->SetSize(aNewSize);
+ pClonedMasterPage->CreateTitleAndLayout(true);
+ }
}
return pClonedMasterPage;
@@ -397,24 +406,25 @@ void DocumentHelper::AssignMasterPageToPage (
// Leave early when the parameters are invalid.
if (pPage == nullptr || pMasterPage == nullptr)
return;
-
- SdDrawDocument& rDocument(dynamic_cast< SdDrawDocument& >(pPage->getSdrModelFromSdrPage()));
+ SdDrawDocument* pDocument = dynamic_cast<SdDrawDocument*>(pPage->GetModel());
+ if (pDocument == nullptr)
+ return;
if ( ! pPage->IsMasterPage())
{
// 1. Remove the background object (so that, if it exists, does
// not override the new master page) and assign the master page to
// the regular slide.
- rDocument.GetDocSh()->GetUndoManager()->AddUndoAction(
+ pDocument->GetDocSh()->GetUndoManager()->AddUndoAction(
new SdBackgroundObjUndoAction(
- rDocument, *pPage, pPage->getSdrPageProperties().GetItemSet()),
+ *pDocument, *pPage, pPage->getSdrPageProperties().GetItemSet()),
true);
pPage->getSdrPageProperties().PutItem(XFillStyleItem(drawing::FillStyle_NONE));
- rDocument.SetMasterPage (
+ pDocument->SetMasterPage (
(pPage->GetPageNum()-1)/2,
rsBaseLayoutName,
- &rDocument,
+ pDocument,
false,
false);
}
@@ -422,10 +432,10 @@ void DocumentHelper::AssignMasterPageToPage (
{
// Find first slide that uses the master page.
SdPage* pSlide = nullptr;
- sal_uInt16 nPageCount = rDocument.GetSdPageCount(PageKind::Standard);
+ sal_uInt16 nPageCount = pDocument->GetSdPageCount(PageKind::Standard);
for (sal_uInt16 nPage=0; nPage<nPageCount&&pSlide==nullptr; nPage++)
{
- SdrPage* pCandidate = rDocument.GetSdPage(nPage,PageKind::Standard);
+ SdrPage* pCandidate = pDocument->GetSdPage(nPage,PageKind::Standard);
if (pCandidate != nullptr
&& pCandidate->TRG_HasMasterPage()
&& &(pCandidate->TRG_GetMasterPage()) == pPage)
@@ -438,10 +448,10 @@ void DocumentHelper::AssignMasterPageToPage (
{
// 2. Assign the given master pages to the first slide that was
// found above that uses the master page.
- rDocument.SetMasterPage (
+ pDocument->SetMasterPage (
(pSlide->GetPageNum()-1)/2,
rsBaseLayoutName,
- &rDocument,
+ pDocument,
false,
false);
}
@@ -449,7 +459,7 @@ void DocumentHelper::AssignMasterPageToPage (
{
// 3. Replace the master page A by a copy of the given master
// page B.
- rDocument.RemoveUnnecessaryMasterPages (
+ pDocument->RemoveUnnecessaryMasterPages (
pPage);
}
}
@@ -469,9 +479,11 @@ SdPage* DocumentHelper::ProvideMasterPage (
OSL_ASSERT(pMasterPage != nullptr);
return nullptr;
}
- SdDrawDocument& rSourceDocument(static_cast< SdDrawDocument& >(pMasterPage->getSdrModelFromSdrPage()));
+ SdDrawDocument* pSourceDocument = static_cast<SdDrawDocument*>(pMasterPage->GetModel());
+ if (pSourceDocument == nullptr)
+ return nullptr;
SdPage* pNotesMasterPage = static_cast<SdPage*>(
- rSourceDocument.GetMasterPage(pMasterPage->GetPageNum()+1));
+ pSourceDocument->GetMasterPage(pMasterPage->GetPageNum()+1));
if (pNotesMasterPage == nullptr)
{
// The model is not in a valid state. Maybe a new master page
@@ -509,7 +521,7 @@ SdPage* DocumentHelper::ProvideMasterPage (
}
// Clone the master page.
- if (&pMasterPage->getSdrModelFromSdrPage() != &rTargetDocument)
+ if (pMasterPage->GetModel() != &rTargetDocument)
{
pMasterPageInDocument = AddMasterPage (rTargetDocument, pMasterPage, nInsertionIndex);
if( rTargetDocument.IsUndoEnabled() )
@@ -520,7 +532,7 @@ SdPage* DocumentHelper::ProvideMasterPage (
pMasterPageInDocument = pMasterPage;
// Clone the notes master.
- if (&pNotesMasterPage->getSdrModelFromSdrPage() != &rTargetDocument)
+ if (pNotesMasterPage->GetModel() != &rTargetDocument)
{
SdPage* pClonedNotesMasterPage
= AddMasterPage (rTargetDocument, pNotesMasterPage, nInsertionIndex+1);
diff --git a/sd/source/ui/table/tablefunction.cxx b/sd/source/ui/table/tablefunction.cxx
index e85d27a810fb..dd3e6a4f0dd3 100644
--- a/sd/source/ui/table/tablefunction.cxx
+++ b/sd/source/ui/table/tablefunction.cxx
@@ -183,11 +183,7 @@ void DrawViewShell::FuTable(SfxRequest& rReq)
aRect = ::tools::Rectangle(aPos, aSize);
}
- sdr::table::SdrTableObj* pObj = new sdr::table::SdrTableObj(
- *GetDoc(), // TTTT should be reference
- aRect,
- nColumns,
- nRows);
+ sdr::table::SdrTableObj* pObj = new sdr::table::SdrTableObj( GetDoc(), aRect, nColumns, nRows );
pObj->NbcSetStyleSheet( GetDoc()->GetDefaultStyleSheet(), true );
apply_table_style( pObj, GetDoc(), sTableStyle );
SdrPageView* pPV = mpView->GetSdrPageView();
@@ -275,11 +271,7 @@ void CreateTableFromRTF( SvStream& rStream, SdDrawDocument* pModel )
{
Size aSize( 200, 200 );
::tools::Rectangle aRect (Point(), aSize);
- sdr::table::SdrTableObj* pObj = new sdr::table::SdrTableObj(
- *pModel,
- aRect,
- 1,
- 1);
+ sdr::table::SdrTableObj* pObj = new sdr::table::SdrTableObj( pModel, aRect, 1, 1 );
pObj->NbcSetStyleSheet( pModel->GetDefaultStyleSheet(), true );
apply_table_style( pObj, pModel, OUString() );
diff --git a/sd/source/ui/tools/PreviewRenderer.cxx b/sd/source/ui/tools/PreviewRenderer.cxx
index 23717ea3d16b..158b1603f00e 100644
--- a/sd/source/ui/tools/PreviewRenderer.cxx
+++ b/sd/source/ui/tools/PreviewRenderer.cxx
@@ -202,9 +202,15 @@ bool PreviewRenderer::Initialize (
if (pPage == nullptr)
return false;
+ SdrModel* pModel = pPage->GetModel();
+ if (pModel == nullptr)
+ return false;
+
SetupOutputSize(*pPage, rPixelSize);
- SdDrawDocument& rDocument(static_cast< SdDrawDocument& >(pPage->getSdrModelFromSdrPage()));
- DrawDocShell* pDocShell = rDocument.GetDocSh();
+
+ SdDrawDocument* pDocument
+ = static_cast<SdDrawDocument*>(pPage->GetModel());
+ DrawDocShell* pDocShell = pDocument->GetDocSh();
// Create view
ProvideView (pDocShell);
@@ -254,9 +260,9 @@ bool PreviewRenderer::Initialize (
}
pPageView->SetApplicationDocumentColor(aApplicationDocumentColor);
- SdrOutliner& rOutliner(rDocument.GetDrawOutliner());
+ SdrOutliner& rOutliner(pDocument->GetDrawOutliner());
rOutliner.SetBackgroundColor(aApplicationDocumentColor);
- rOutliner.SetDefaultLanguage(rDocument.GetLanguage(EE_CHAR_LANGUAGE));
+ rOutliner.SetDefaultLanguage(pDocument->GetLanguage(EE_CHAR_LANGUAGE));
mpPreviewDevice->SetBackground(Wallpaper(aApplicationDocumentColor));
mpPreviewDevice->Erase();
diff --git a/sd/source/ui/unoidl/unomodel.cxx b/sd/source/ui/unoidl/unomodel.cxx
index b6ee7d5d1122..afe7ede9bde5 100644
--- a/sd/source/ui/unoidl/unomodel.cxx
+++ b/sd/source/ui/unoidl/unomodel.cxx
@@ -2714,11 +2714,6 @@ void SdXImpressDocument::initializeDocument()
}
}
-SdrModel* SdXImpressDocument::getSdrModelFromUnoModel() const
-{
- return GetDoc();
-}
-
void SAL_CALL SdXImpressDocument::dispose()
{
if( !mbDisposed )
diff --git a/sd/source/ui/unoidl/unopage.cxx b/sd/source/ui/unoidl/unopage.cxx
index 7a34f2a80277..619d84254a7d 100644
--- a/sd/source/ui/unoidl/unopage.cxx
+++ b/sd/source/ui/unoidl/unopage.cxx
@@ -406,20 +406,23 @@ SdrObject * SdGenericDrawPage::CreateSdrObject_( const Reference< drawing::XShap
SdrObject* pObj = SvxFmDrawPage::CreateSdrObject_( xShape );
if( pObj && ( (pObj->GetObjInventor() != SdrInventor::Default) || (pObj->GetObjIdentifier() != OBJ_PAGE) ) )
{
- SdDrawDocument& rDoc(static_cast< SdDrawDocument& >(GetPage()->getSdrModelFromSdrPage()));
- // #i119287# similar to the code in the SdrObject methods the graphic and ole
- // SdrObjects need another default style than the rest, see task. Adding here, too.
- // TTTT: Same as for #i119287#: Can be removed in branch aw080 again
- const bool bIsSdrGrafObj(dynamic_cast< const SdrGrafObj* >(pObj) != nullptr);
- const bool bIsSdrOle2Obj(dynamic_cast< const SdrOle2Obj* >(pObj) != nullptr);
-
- if(bIsSdrGrafObj || bIsSdrOle2Obj)
+ SdDrawDocument* pDoc = static_cast<SdDrawDocument*>(GetPage()->GetModel());
+ if( pDoc )
{
- pObj->NbcSetStyleSheet(rDoc.GetDefaultStyleSheetForSdrGrafObjAndSdrOle2Obj(), true);
- }
- else
- {
- pObj->NbcSetStyleSheet(rDoc.GetDefaultStyleSheet(), true);
+ // #i119287# similar to the code in the SdrObject methods the graphic and ole
+ // SdrObjects need another default style than the rest, see task. Adding here, too.
+ // TTTT: Same as for #i119287#: Can be removed in branch aw080 again
+ const bool bIsSdrGrafObj(dynamic_cast< const SdrGrafObj* >(pObj) != nullptr);
+ const bool bIsSdrOle2Obj(dynamic_cast< const SdrOle2Obj* >(pObj) != nullptr);
+
+ if(bIsSdrGrafObj || bIsSdrOle2Obj)
+ {
+ pObj->NbcSetStyleSheet(pDoc->GetDefaultStyleSheetForSdrGrafObjAndSdrOle2Obj(), true);
+ }
+ else
+ {
+ pObj->NbcSetStyleSheet(pDoc->GetDefaultStyleSheet(), true);
+ }
}
}
return pObj;
@@ -515,8 +518,9 @@ SdrObject * SdGenericDrawPage::CreateSdrObject_( const Reference< drawing::XShap
pPresObj = SvxFmDrawPage::CreateSdrObject_( xShape );
if( pPresObj )
{
- SdDrawDocument& rDoc(static_cast< SdDrawDocument& >(GetPage()->getSdrModelFromSdrPage()));
- pPresObj->NbcSetStyleSheet(rDoc.GetDefaultStyleSheet(), true);
+ SdDrawDocument* pDoc = static_cast<SdDrawDocument*>(GetPage()->GetModel());
+ if( pDoc )
+ pPresObj->NbcSetStyleSheet( pDoc->GetDefaultStyleSheet(), true );
GetPage()->InsertPresObj( pPresObj, eObjKind );
}
}
@@ -681,21 +685,21 @@ void SAL_CALL SdGenericDrawPage::setPropertyValue( const OUString& aPropertyName
if( eOri != GetPage()->GetOrientation() )
{
- SdDrawDocument& rDoc(static_cast< SdDrawDocument& >(GetPage()->getSdrModelFromSdrPage()));
+ SdDrawDocument* pDoc = static_cast<SdDrawDocument*>(GetPage()->GetModel());
const PageKind ePageKind = GetPage()->GetPageKind();
- sal_uInt16 i, nPageCnt = rDoc.GetMasterSdPageCount(ePageKind);
+ sal_uInt16 i, nPageCnt = pDoc->GetMasterSdPageCount(ePageKind);
for (i = 0; i < nPageCnt; i++)
{
- SdPage* pPage = rDoc.GetMasterSdPage(i, ePageKind);
+ SdPage* pPage = pDoc->GetMasterSdPage(i, ePageKind);
pPage->SetOrientation( eOri );
}
- nPageCnt = rDoc.GetSdPageCount(ePageKind);
+ nPageCnt = pDoc->GetSdPageCount(ePageKind);
for (i = 0; i < nPageCnt; i++)
{
- SdPage* pPage = rDoc.GetSdPage(i, ePageKind);
+ SdPage* pPage = pDoc->GetSdPage(i, ePageKind);
pPage->SetOrientation( eOri );
}
}
@@ -777,10 +781,10 @@ void SAL_CALL SdGenericDrawPage::setPropertyValue( const OUString& aPropertyName
SdrPage* pPage = GetPage();
if( pPage )
{
- SdDrawDocument& rDoc(static_cast< SdDrawDocument& >(pPage->getSdrModelFromSdrPage()));
- if( rDoc.GetMasterPageCount() )
+ SdDrawDocument* pDoc = static_cast<SdDrawDocument*>(pPage->GetModel());
+ if( pDoc->GetMasterPageCount() )
{
- SdrLayerAdmin& rLayerAdmin = rDoc.GetLayerAdmin();
+ SdrLayerAdmin& rLayerAdmin = pDoc->GetLayerAdmin();
SdrLayerIDSet aVisibleLayers = pPage->TRG_GetMasterPageVisibleLayers();
aVisibleLayers.Set(rLayerAdmin.GetLayerID(SdResId(STR_LAYER_BCKGRND)), bVisible);
pPage->TRG_SetMasterPageVisibleLayers(aVisibleLayers);
@@ -797,10 +801,10 @@ void SAL_CALL SdGenericDrawPage::setPropertyValue( const OUString& aPropertyName
SdrPage* pPage = GetPage();
if( pPage )
{
- SdDrawDocument& rDoc(static_cast< SdDrawDocument& >(pPage->getSdrModelFromSdrPage()));
- if( rDoc.GetMasterPageCount() )
+ SdDrawDocument* pDoc = static_cast<SdDrawDocument*>(pPage->GetModel());
+ if( pDoc->GetMasterPageCount() )
{
- SdrLayerAdmin& rLayerAdmin = rDoc.GetLayerAdmin();
+ SdrLayerAdmin& rLayerAdmin = pDoc->GetLayerAdmin();
SdrLayerIDSet aVisibleLayers = pPage->TRG_GetMasterPageVisibleLayers();
aVisibleLayers.Set(rLayerAdmin.GetLayerID(SdResId(STR_LAYER_BCKGRNDOBJ)), bVisible);
pPage->TRG_SetMasterPageVisibleLayers(aVisibleLayers);
@@ -1096,36 +1100,39 @@ Any SAL_CALL SdGenericDrawPage::getPropertyValue( const OUString& PropertyName )
case WID_PAGE_PREVIEW :
case WID_PAGE_PREVIEWMETAFILE :
{
- SdDrawDocument& rDoc(static_cast< SdDrawDocument& >(GetPage()->getSdrModelFromSdrPage()));
- ::sd::DrawDocShell* pDocShell = rDoc.GetDocSh();
- if ( pDocShell )
+ SdDrawDocument* pDoc = static_cast<SdDrawDocument*>(GetPage()->GetModel());
+ if ( pDoc )
{
- sal_uInt16 nPgNum = 0;
- sal_uInt16 nPageCount = rDoc.GetSdPageCount( PageKind::Standard );
- sal_uInt16 nPageNumber = static_cast<sal_uInt16>( ( GetPage()->GetPageNum() - 1 ) >> 1 );
- while( nPgNum < nPageCount )
+ ::sd::DrawDocShell* pDocShell = pDoc->GetDocSh();
+ if ( pDocShell )
{
- rDoc.SetSelected( rDoc.GetSdPage( nPgNum, PageKind::Standard ), nPgNum == nPageNumber );
- nPgNum++;
- }
- std::shared_ptr<GDIMetaFile> xMetaFile = pDocShell->GetPreviewMetaFile();
- if (xMetaFile)
- {
- Size aSize( GetPage()->GetSize() );
- xMetaFile->AddAction( static_cast<MetaAction*>(new MetaFillColorAction( COL_WHITE, true )), 0 );
- xMetaFile->AddAction( static_cast<MetaAction*>(new MetaRectAction( ::tools::Rectangle( Point(), aSize ) )), 1 );
- xMetaFile->SetPrefMapMode(MapMode(MapUnit::Map100thMM));
- xMetaFile->SetPrefSize( aSize );
-
- SvMemoryStream aDestStrm( 65535, 65535 );
- if (nEntry == WID_PAGE_PREVIEW)
- // Preview: WMF format.
- ConvertGDIMetaFileToWMF(*xMetaFile, aDestStrm, nullptr, false);
- else
- // PreviewMetafile: SVM format.
- xMetaFile->Write(aDestStrm);
- Sequence<sal_Int8> aSeq( static_cast<sal_Int8 const *>(aDestStrm.GetData()), aDestStrm.Tell() );
- aAny <<= aSeq;
+ sal_uInt16 nPgNum = 0;
+ sal_uInt16 nPageCount = pDoc->GetSdPageCount( PageKind::Standard );
+ sal_uInt16 nPageNumber = static_cast<sal_uInt16>( ( GetPage()->GetPageNum() - 1 ) >> 1 );
+ while( nPgNum < nPageCount )
+ {
+ pDoc->SetSelected( pDoc->GetSdPage( nPgNum, PageKind::Standard ), nPgNum == nPageNumber );
+ nPgNum++;
+ }
+ std::shared_ptr<GDIMetaFile> xMetaFile = pDocShell->GetPreviewMetaFile();
+ if (xMetaFile)
+ {
+ Size aSize( GetPage()->GetSize() );
+ xMetaFile->AddAction( static_cast<MetaAction*>(new MetaFillColorAction( COL_WHITE, true )), 0 );
+ xMetaFile->AddAction( static_cast<MetaAction*>(new MetaRectAction( ::tools::Rectangle( Point(), aSize ) )), 1 );
+ xMetaFile->SetPrefMapMode(MapMode(MapUnit::Map100thMM));
+ xMetaFile->SetPrefSize( aSize );
+
+ SvMemoryStream aDestStrm( 65535, 65535 );
+ if (nEntry == WID_PAGE_PREVIEW)
+ // Preview: WMF format.
+ ConvertGDIMetaFileToWMF(*xMetaFile, aDestStrm, nullptr, false);
+ else
+ // PreviewMetafile: SVM format.
+ xMetaFile->Write(aDestStrm);
+ Sequence<sal_Int8> aSeq( static_cast<sal_Int8 const *>(aDestStrm.GetData()), aDestStrm.Tell() );
+ aAny <<= aSeq;
+ }
}
}
}
@@ -1133,26 +1140,29 @@ Any SAL_CALL SdGenericDrawPage::getPropertyValue( const OUString& PropertyName )
case WID_PAGE_PREVIEWBITMAP :
{
- SdDrawDocument& rDoc(static_cast< SdDrawDocument& >(GetPage()->getSdrModelFromSdrPage()));
- ::sd::DrawDocShell* pDocShell = rDoc.GetDocSh();
- if ( pDocShell )
+ SdDrawDocument* pDoc = static_cast<SdDrawDocument*>(GetPage()->GetModel());
+ if ( pDoc )
{
- sal_uInt16 nPgNum = 0;
- sal_uInt16 nPageCount = rDoc.GetSdPageCount( PageKind::Standard );
- sal_uInt16 nPageNumber = static_cast<sal_uInt16>( ( GetPage()->GetPageNum() - 1 ) >> 1 );
- while( nPgNum < nPageCount )
- {
- rDoc.SetSelected( rDoc.GetSdPage( nPgNum, PageKind::Standard ), nPgNum == nPageNumber );
- nPgNum++;
- }
- std::shared_ptr<GDIMetaFile> xMetaFile = pDocShell->GetPreviewMetaFile();
- BitmapEx aBitmap;
- if (xMetaFile && xMetaFile->CreateThumbnail(aBitmap))
+ ::sd::DrawDocShell* pDocShell = pDoc->GetDocSh();
+ if ( pDocShell )
{
- SvMemoryStream aMemStream;
- WriteDIB(aBitmap.GetBitmap(), aMemStream, false, false);
- uno::Sequence<sal_Int8> aSeq( static_cast<sal_Int8 const *>(aMemStream.GetData()), aMemStream.Tell() );
- aAny <<= aSeq;
+ sal_uInt16 nPgNum = 0;
+ sal_uInt16 nPageCount = pDoc->GetSdPageCount( PageKind::Standard );
+ sal_uInt16 nPageNumber = static_cast<sal_uInt16>( ( GetPage()->GetPageNum() - 1 ) >> 1 );
+ while( nPgNum < nPageCount )
+ {
+ pDoc->SetSelected( pDoc->GetSdPage( nPgNum, PageKind::Standard ), nPgNum == nPageNumber );
+ nPgNum++;
+ }
+ std::shared_ptr<GDIMetaFile> xMetaFile = pDocShell->GetPreviewMetaFile();
+ BitmapEx aBitmap;
+ if (xMetaFile && xMetaFile->CreateThumbnail(aBitmap))
+ {
+ SvMemoryStream aMemStream;
+ WriteDIB(aBitmap.GetBitmap(), aMemStream, false, false);
+ uno::Sequence<sal_Int8> aSeq( static_cast<sal_Int8 const *>(aMemStream.GetData()), aMemStream.Tell() );
+ aAny <<= aSeq;
+ }
}
}
}
@@ -1196,10 +1206,10 @@ Any SAL_CALL SdGenericDrawPage::getPropertyValue( const OUString& PropertyName )
SdrPage* pPage = GetPage();
if( pPage )
{
- SdDrawDocument& rDoc(static_cast< SdDrawDocument& >(pPage->getSdrModelFromSdrPage()));
- if( rDoc.GetMasterPageCount() )
+ SdDrawDocument* pDoc = static_cast<SdDrawDocument*>(pPage->GetModel());
+ if( pDoc->GetMasterPageCount() )
{
- SdrLayerAdmin& rLayerAdmin = rDoc.GetLayerAdmin();
+ SdrLayerAdmin& rLayerAdmin = pDoc->GetLayerAdmin();
SdrLayerIDSet aVisibleLayers = pPage->TRG_GetMasterPageVisibleLayers();
aAny <<= aVisibleLayers.IsSet(rLayerAdmin.GetLayerID(SdResId(STR_LAYER_BCKGRND)));
}
@@ -1215,10 +1225,10 @@ Any SAL_CALL SdGenericDrawPage::getPropertyValue( const OUString& PropertyName )
SdrPage* pPage = GetPage();
if( pPage )
{
- SdDrawDocument& rDoc(static_cast< SdDrawDocument& >(pPage->getSdrModelFromSdrPage()));
- if( rDoc.GetMasterPageCount() )
+ SdDrawDocument* pDoc = static_cast<SdDrawDocument*>(pPage->GetModel());
+ if( pDoc->GetMasterPageCount() )
{
- SdrLayerAdmin& rLayerAdmin = rDoc.GetLayerAdmin();
+ SdrLayerAdmin& rLayerAdmin = pDoc->GetLayerAdmin();
SdrLayerIDSet aVisibleLayers = pPage->TRG_GetMasterPageVisibleLayers();
aAny <<= aVisibleLayers.IsSet(rLayerAdmin.GetLayerID(SdResId(STR_LAYER_BCKGRNDOBJ)));
}
@@ -1674,21 +1684,21 @@ void SdGenericDrawPage::SetLeftBorder( sal_Int32 nValue )
{
if( nValue != GetPage()->GetLeftBorder() )
{
- SdDrawDocument& rDoc(static_cast< SdDrawDocument& >(GetPage()->getSdrModelFromSdrPage()));
+ SdDrawDocument* pDoc = static_cast<SdDrawDocument*>(GetPage()->GetModel());
const PageKind ePageKind = GetPage()->GetPageKind();
- sal_uInt16 i, nPageCnt = rDoc.GetMasterSdPageCount(ePageKind);
+ sal_uInt16 i, nPageCnt = pDoc->GetMasterSdPageCount(ePageKind);
for (i = 0; i < nPageCnt; i++)
{
- SdPage* pPage = rDoc.GetMasterSdPage(i, ePageKind);
+ SdPage* pPage = pDoc->GetMasterSdPage(i, ePageKind);
pPage->SetLeftBorder( nValue );
}
- nPageCnt = rDoc.GetSdPageCount(ePageKind);
+ nPageCnt = pDoc->GetSdPageCount(ePageKind);
for (i = 0; i < nPageCnt; i++)
{
- SdPage* pPage = rDoc.GetSdPage(i, ePageKind);
+ SdPage* pPage = pDoc->GetSdPage(i, ePageKind);
pPage->SetLeftBorder( nValue );
}
}
@@ -1698,21 +1708,21 @@ void SdGenericDrawPage::SetRightBorder( sal_Int32 nValue )
{
if( nValue != GetPage()->GetRightBorder() )
{
- SdDrawDocument& rDoc(static_cast< SdDrawDocument& >(GetPage()->getSdrModelFromSdrPage()));
+ SdDrawDocument* pDoc = static_cast<SdDrawDocument*>(GetPage()->GetModel());
const PageKind ePageKind = GetPage()->GetPageKind();
- sal_uInt16 i, nPageCnt = rDoc.GetMasterSdPageCount(ePageKind);
+ sal_uInt16 i, nPageCnt = pDoc->GetMasterSdPageCount(ePageKind);
for (i = 0; i < nPageCnt; i++)
{
- SdPage* pPage = rDoc.GetMasterSdPage(i, ePageKind);
+ SdPage* pPage = pDoc->GetMasterSdPage(i, ePageKind);
pPage->SetRightBorder( nValue );
}
- nPageCnt = rDoc.GetSdPageCount(ePageKind);
+ nPageCnt = pDoc->GetSdPageCount(ePageKind);
for (i = 0; i < nPageCnt; i++)
{
- SdPage* pPage = rDoc.GetSdPage(i, ePageKind);
+ SdPage* pPage = pDoc->GetSdPage(i, ePageKind);
pPage->SetRightBorder( nValue );
}
}
@@ -1722,21 +1732,21 @@ void SdGenericDrawPage::SetUpperBorder( sal_Int32 nValue )
{
if( nValue != GetPage()->GetUpperBorder() )
{
- SdDrawDocument& rDoc(static_cast< SdDrawDocument& >(GetPage()->getSdrModelFromSdrPage()));
+ SdDrawDocument* pDoc = static_cast<SdDrawDocument*>(GetPage()->GetModel());
const PageKind ePageKind = GetPage()->GetPageKind();
- sal_uInt16 i, nPageCnt = rDoc.GetMasterSdPageCount(ePageKind);
+ sal_uInt16 i, nPageCnt = pDoc->GetMasterSdPageCount(ePageKind);
for (i = 0; i < nPageCnt; i++)
{
- SdPage* pPage = rDoc.GetMasterSdPage(i, ePageKind);
+ SdPage* pPage = pDoc->GetMasterSdPage(i, ePageKind);
pPage->SetUpperBorder( nValue );
}
- nPageCnt = rDoc.GetSdPageCount(ePageKind);
+ nPageCnt = pDoc->GetSdPageCount(ePageKind);
for (i = 0; i < nPageCnt; i++)
{
- SdPage* pPage = rDoc.GetSdPage(i, ePageKind);
+ SdPage* pPage = pDoc->GetSdPage(i, ePageKind);
pPage->SetUpperBorder( nValue );
}
}
@@ -1746,21 +1756,21 @@ void SdGenericDrawPage::SetLowerBorder( sal_Int32 nValue )
{
if( nValue != GetPage()->GetLowerBorder() )
{
- SdDrawDocument& rDoc(static_cast< SdDrawDocument& >(GetPage()->getSdrModelFromSdrPage()));
+ SdDrawDocument* pDoc = static_cast<SdDrawDocument*>(GetPage()->GetModel());
const PageKind ePageKind = GetPage()->GetPageKind();
- sal_uInt16 i, nPageCnt = rDoc.GetMasterSdPageCount(ePageKind);
+ sal_uInt16 i, nPageCnt = pDoc->GetMasterSdPageCount(ePageKind);
for (i = 0; i < nPageCnt; i++)
{
- SdPage* pPage = rDoc.GetMasterSdPage(i, ePageKind);
+ SdPage* pPage = pDoc->GetMasterSdPage(i, ePageKind);
pPage->SetLowerBorder( nValue );
}
- nPageCnt = rDoc.GetSdPageCount(ePageKind);
+ nPageCnt = pDoc->GetSdPageCount(ePageKind);
for (i = 0; i < nPageCnt; i++)
{
- SdPage* pPage = rDoc.GetSdPage(i, ePageKind);
+ SdPage* pPage = pDoc->GetSdPage(i, ePageKind);
pPage->SetLowerBorder( nValue );
}
}
@@ -1801,25 +1811,25 @@ void SdGenericDrawPage::SetWidth( sal_Int32 nWidth )
{
aSize.setWidth( nWidth );
- SdDrawDocument& rDoc(static_cast< SdDrawDocument& >(GetPage()->getSdrModelFromSdrPage()));
+ SdDrawDocument* pDoc = static_cast<SdDrawDocument*>(GetPage()->GetModel());
const PageKind ePageKind = GetPage()->GetPageKind();
- sal_uInt16 i, nPageCnt = rDoc.GetMasterSdPageCount(ePageKind);
+ sal_uInt16 i, nPageCnt = pDoc->GetMasterSdPageCount(ePageKind);
for (i = 0; i < nPageCnt; i++)
{
- SdPage* pPage = rDoc.GetMasterSdPage(i, ePageKind);
+ SdPage* pPage = pDoc->GetMasterSdPage(i, ePageKind);
pPage->SetSize(aSize);
}
- nPageCnt = rDoc.GetSdPageCount(ePageKind);
+ nPageCnt = pDoc->GetSdPageCount(ePageKind);
for (i = 0; i < nPageCnt; i++)
{
- SdPage* pPage = rDoc.GetSdPage(i, ePageKind);
+ SdPage* pPage = pDoc->GetSdPage(i, ePageKind);
pPage->SetSize(aSize);
}
- refreshpage( &rDoc, ePageKind );
+ refreshpage( pDoc, ePageKind );
}
}
@@ -1830,25 +1840,25 @@ void SdGenericDrawPage::SetHeight( sal_Int32 nHeight )
{
aSize.setHeight( nHeight );
- SdDrawDocument& rDoc(static_cast< SdDrawDocument& >(GetPage()->getSdrModelFromSdrPage()));
+ SdDrawDocument* pDoc = static_cast<SdDrawDocument*>(GetPage()->GetModel());
const PageKind ePageKind = GetPage()->GetPageKind();
- sal_uInt16 i, nPageCnt = rDoc.GetMasterSdPageCount(ePageKind);
+ sal_uInt16 i, nPageCnt = pDoc->GetMasterSdPageCount(ePageKind);
for (i = 0; i < nPageCnt; i++)
{
- SdPage* pPage = rDoc.GetMasterSdPage(i, ePageKind);
+ SdPage* pPage = pDoc->GetMasterSdPage(i, ePageKind);
pPage->SetSize(aSize);
}
- nPageCnt = rDoc.GetSdPageCount(ePageKind);
+ nPageCnt = pDoc->GetSdPageCount(ePageKind);
for (i = 0; i < nPageCnt; i++)
{
- SdPage* pPage = rDoc.GetSdPage(i, ePageKind);
+ SdPage* pPage = pDoc->GetSdPage(i, ePageKind);
pPage->SetSize(aSize);
}
- refreshpage( &rDoc, ePageKind );
+ refreshpage( pDoc, ePageKind );
}
}
@@ -2379,7 +2389,7 @@ void SAL_CALL SdDrawPage::setMasterPage( const Reference< drawing::XDrawPage >&
pNotesPage->TRG_ClearMasterPage();
sal_uInt16 nNum = SvxFmDrawPage::mpPage->TRG_GetMasterPage().GetPageNum() + 1;
- pNotesPage->TRG_SetMasterPage(*SvxFmDrawPage::mpPage->getSdrModelFromSdrPage().GetMasterPage(nNum));
+ pNotesPage->TRG_SetMasterPage(*SvxFmDrawPage::mpPage->GetModel()->GetMasterPage(nNum));
pNotesPage->SetLayoutName( pSdPage->GetLayoutName() );
GetModel()->SetModified();
@@ -2476,7 +2486,7 @@ void SdDrawPage::setBackground( const Any& rValue )
if( pBack )
{
- pBack->fillItemSet( static_cast<SdDrawDocument*>(&GetPage()->getSdrModelFromSdrPage()), aSet );
+ pBack->fillItemSet( static_cast<SdDrawDocument*>(GetPage()->GetModel()), aSet );
}
else
{
@@ -2500,7 +2510,7 @@ void SdDrawPage::setBackground( const Any& rValue )
pProp++;
}
- pBackground->fillItemSet( static_cast<SdDrawDocument*>(&GetPage()->getSdrModelFromSdrPage()), aSet );
+ pBackground->fillItemSet( static_cast<SdDrawDocument*>(GetPage()->GetModel()), aSet );
}
if( aSet.Count() == 0 )
@@ -2862,7 +2872,7 @@ void SdMasterPage::setBackground( const Any& rValue )
if( pBack )
{
- pBack->fillItemSet( static_cast<SdDrawDocument*>(&GetPage()->getSdrModelFromSdrPage()), aSet );
+ pBack->fillItemSet( static_cast<SdDrawDocument*>(GetPage()->GetModel()), aSet );
}
else
{
@@ -2885,11 +2895,11 @@ void SdMasterPage::setBackground( const Any& rValue )
pProp++;
}
- pBackground->fillItemSet( static_cast<SdDrawDocument*>(&SvxFmDrawPage::mpPage->getSdrModelFromSdrPage()), aSet );
+ pBackground->fillItemSet( static_cast<SdDrawDocument*>(SvxFmDrawPage::mpPage->GetModel()), aSet );
}
// if we find the background style, copy the set to the background
- SdDrawDocument* pDoc = static_cast<SdDrawDocument*>(&SvxFmDrawPage::mpPage->getSdrModelFromSdrPage());
+ SdDrawDocument* pDoc = static_cast<SdDrawDocument*>(SvxFmDrawPage::mpPage->GetModel());
SfxStyleSheetBasePool* pSSPool = pDoc->GetStyleSheetPool();
if(pSSPool)
{
@@ -2933,7 +2943,7 @@ void SdMasterPage::getBackground( Any& rValue )
}
else
{
- SdDrawDocument* pDoc = static_cast<SdDrawDocument*>(&SvxFmDrawPage::mpPage->getSdrModelFromSdrPage());
+ SdDrawDocument* pDoc = static_cast<SdDrawDocument*>(SvxFmDrawPage::mpPage->GetModel());
SfxStyleSheetBasePool* pSSPool = pDoc->GetStyleSheetPool();
if(pSSPool)
{
@@ -3082,9 +3092,9 @@ Reference< uno::XInterface > createUnoPageImpl( SdPage* pPage )
{
Reference< uno::XInterface > xPage;
- if( pPage )
+ if( pPage && pPage->GetModel() )
{
- SdXImpressDocument* pModel = SdXImpressDocument::getImplementation( pPage->getSdrModelFromSdrPage().getUnoModel() );
+ SdXImpressDocument* pModel = SdXImpressDocument::getImplementation( pPage->GetModel()->getUnoModel() );
if( pModel )
{
if( pPage->IsMasterPage() )
diff --git a/sd/source/ui/view/DocumentRenderer.cxx b/sd/source/ui/view/DocumentRenderer.cxx
index 432146681d78..c89213c5880d 100644
--- a/sd/source/ui/view/DocumentRenderer.cxx
+++ b/sd/source/ui/view/DocumentRenderer.cxx
@@ -1526,10 +1526,7 @@ private:
std::vector< ::tools::Rectangle >::iterator iter( aAreas.begin() );
while( iter != aAreas.end() )
{
- pHandout->NbcInsertObject(
- new SdrPageObj(
- rModel,
- (*iter++)));
+ pHandout->NbcInsertObject( new SdrPageObj((*iter++)) );
if( bDrawLines && (iter != aAreas.end()) )
{
@@ -1549,10 +1546,7 @@ private:
aPathPoly.append( aPoly );
}
- SdrPathObj* pPathObj = new SdrPathObj(
- rModel,
- OBJ_PATHLINE,
- aPathPoly);
+ SdrPathObj* pPathObj = new SdrPathObj(OBJ_PATHLINE, aPathPoly );
pPathObj->SetMergedItem(XLineStyleItem(drawing::LineStyle_SOLID));
pPathObj->SetMergedItem(XLineColorItem(OUString(), COL_BLACK));
diff --git a/sd/source/ui/view/drawview.cxx b/sd/source/ui/view/drawview.cxx
index 95a4807e43c3..56a07fdb6486 100644
--- a/sd/source/ui/view/drawview.cxx
+++ b/sd/source/ui/view/drawview.cxx
@@ -78,15 +78,12 @@ namespace sd {
* that there is no page a page is created.
*/
-DrawView::DrawView(
- DrawDocShell* pDocSh,
- OutputDevice* pOutDev,
- DrawViewShell* pShell)
-: ::sd::View(*pDocSh->GetDoc(), pOutDev, pShell)
- ,mpDocShell(pDocSh)
- ,mpDrawViewShell(pShell)
- ,mpVDev(nullptr)
- ,mnPOCHSmph(0)
+DrawView::DrawView( DrawDocShell* pDocSh, OutputDevice* pOutDev, DrawViewShell* pShell)
+: ::sd::View(*pDocSh->GetDoc(), pOutDev, pShell)
+, mpDocShell(pDocSh)
+, mpDrawViewShell(pShell)
+, mpVDev(nullptr)
+, mnPOCHSmph(0)
{
SetCurrentObj(OBJ_RECT);
}
diff --git a/sd/source/ui/view/drviews2.cxx b/sd/source/ui/view/drviews2.cxx
index bbfd4e0d3d23..f61052b4cb68 100644
--- a/sd/source/ui/view/drviews2.cxx
+++ b/sd/source/ui/view/drviews2.cxx
@@ -520,9 +520,7 @@ public:
if (!pMasterPage)
continue;
- SdrRectObj* pObject = new SdrRectObj(
- *m_rDrawViewShell.GetDoc(), // TTTT should be reference
- OBJ_TEXT);
+ SdrRectObj* pObject = new SdrRectObj(OBJ_TEXT);
pObject->SetMergedItem(makeSdrTextAutoGrowWidthItem(true));
pObject->SetOutlinerParaObject(pOutliner->CreateParaObject());
pMasterPage->InsertObject(pObject);
@@ -1087,9 +1085,7 @@ void DrawViewShell::FuTemporary(SfxRequest& rReq)
}
// create new object
- SdrGrafObj* pGraphicObj = new SdrGrafObj(
- *GetDoc(),
- aGraphic);
+ SdrGrafObj* pGraphicObj = new SdrGrafObj (aGraphic);
// get some necessary info and ensure it
const SdrMarkList& rMarkList(mpDrawView->GetMarkedObjectList());
@@ -2343,9 +2339,7 @@ void DrawViewShell::FuTemporary(SfxRequest& rReq)
pOutl->QuickInsertField( *pFieldItem, ESelection() );
OutlinerParaObject* pOutlParaObject = pOutl->CreateParaObject();
- SdrRectObj* pRectObj = new SdrRectObj(
- *GetDoc(),
- OBJ_TEXT);
+ SdrRectObj* pRectObj = new SdrRectObj( OBJ_TEXT );
pRectObj->SetMergedItem(makeSdrTextAutoGrowWidthItem(true));
pOutl->UpdateFields();
diff --git a/sd/source/ui/view/drviews8.cxx b/sd/source/ui/view/drviews8.cxx
index e396b8ec6ea8..1181d6c7d820 100644
--- a/sd/source/ui/view/drviews8.cxx
+++ b/sd/source/ui/view/drviews8.cxx
@@ -120,10 +120,7 @@ void DrawViewShell::ScannerEvent()
if( bInsertNewObject )
{
- auto pGrafObj = new SdrGrafObj(
- GetView()->getSdrModelFromSdrView(),
- Graphic(aScanBmp),
- aRect);
+ auto pGrafObj = new SdrGrafObj( Graphic( aScanBmp ), aRect );
SdrPageView* pPV = GetView()->GetSdrPageView();
GetView()->InsertObjectAtView( pGrafObj, *pPV, SdrInsertFlags::SETDEFLAYER );
}
diff --git a/sd/source/ui/view/drviews9.cxx b/sd/source/ui/view/drviews9.cxx
index afc151b29a96..4c2e6b1c3203 100644
--- a/sd/source/ui/view/drviews9.cxx
+++ b/sd/source/ui/view/drviews9.cxx
@@ -169,10 +169,7 @@ void DrawViewShell::ExecGallery(SfxRequest const & rReq)
if( bInsertNewObject )
{
- pGrafObj = new SdrGrafObj(
- GetView()->getSdrModelFromSdrView(),
- aGraphic,
- aRect);
+ pGrafObj = new SdrGrafObj(aGraphic, aRect);
SdrPageView* pPV = mpDrawView->GetSdrPageView();
mpDrawView->InsertObjectAtView(pGrafObj, *pPV, SdrInsertFlags::SETDEFLAYER);
}
diff --git a/sd/source/ui/view/drviewse.cxx b/sd/source/ui/view/drviewse.cxx
index 8b69d3616037..0b082d9e18a9 100644
--- a/sd/source/ui/view/drviewse.cxx
+++ b/sd/source/ui/view/drviewse.cxx
@@ -1458,9 +1458,7 @@ void DrawViewShell::InsertURLField(const OUString& rURL, const OUString& rText,
pOutl->QuickInsertField( aURLItem, ESelection() );
OutlinerParaObject* pOutlParaObject = pOutl->CreateParaObject();
- SdrRectObj* pRectObj = new SdrRectObj(
- GetView()->getSdrModelFromSdrView(),
- OBJ_TEXT);
+ SdrRectObj* pRectObj = new SdrRectObj(OBJ_TEXT);
pOutl->UpdateFields();
pOutl->SetUpdateMode( true );
@@ -1536,12 +1534,8 @@ void DrawViewShell::InsertURLButton(const OUString& rURL, const OUString& rText,
if (bNewObj) try
{
- SdrUnoObj* pUnoCtrl = static_cast< SdrUnoObj* >(
- SdrObjFactory::MakeNewObject(
- GetView()->getSdrModelFromSdrView(),
- SdrInventor::FmForm,
- OBJ_FM_BUTTON,
- mpDrawView->GetSdrPageView()->GetPage()));
+ SdrUnoObj* pUnoCtrl = static_cast< SdrUnoObj* >( SdrObjFactory::MakeNewObject(SdrInventor::FmForm, OBJ_FM_BUTTON,
+ mpDrawView->GetSdrPageView()->GetPage(), GetDoc()) );
Reference< awt::XControlModel > xControlModel( pUnoCtrl->GetUnoControlModel(), uno::UNO_QUERY_THROW );
Reference< beans::XPropertySet > xPropSet( xControlModel, uno::UNO_QUERY_THROW );
diff --git a/sd/source/ui/view/frmview.cxx b/sd/source/ui/view/frmview.cxx
index b08896abf358..3795f9e09b4f 100644
--- a/sd/source/ui/view/frmview.cxx
+++ b/sd/source/ui/view/frmview.cxx
@@ -51,7 +51,7 @@ using namespace ::std;
namespace sd {
FrameView::FrameView(SdDrawDocument* pDrawDoc, FrameView* pFrameView /* = NULK */)
-: SdrView(*pDrawDoc, nullptr), // TTTT SdDrawDocument* -> should be reference
+ : SdrView(pDrawDoc, nullptr),
mnRefCount(0),
mnPresViewShellId(SID_VIEWSHELL0),
mbIsNavigatorShowingAllShapes(false)
diff --git a/sd/source/ui/view/sdview.cxx b/sd/source/ui/view/sdview.cxx
index 7bff93080e61..d0344d2ab4e5 100644
--- a/sd/source/ui/view/sdview.cxx
+++ b/sd/source/ui/view/sdview.cxx
@@ -104,11 +104,10 @@ using namespace com::sun::star::uno;
using namespace sdr::table;
namespace sd {
-View::View(
- SdDrawDocument& rDrawDoc,
- OutputDevice* pOutDev,
- ViewShell* pViewShell)
-: FmFormView(rDrawDoc, pOutDev),
+
+View::View(SdDrawDocument& rDrawDoc, OutputDevice* pOutDev,
+ ViewShell* pViewShell)
+ : FmFormView(&rDrawDoc, pOutDev),
mrDoc(rDrawDoc),
mpDocSh(rDrawDoc.GetDocSh()),
mpViewSh(pViewShell),
@@ -659,7 +658,7 @@ bool View::SdrBeginTextEdit(
EventMultiplexerEventId::BeginTextEdit, static_cast<void*>(pObj) );
if( pOutl==nullptr && pObj )
- pOutl = SdrMakeOutliner(OutlinerMode::TextObject, pObj->getSdrModelFromSdrObject());
+ pOutl = SdrMakeOutliner(OutlinerMode::TextObject, *pObj->GetModel());
// make draw&impress specific initialisations
if( pOutl )
diff --git a/sd/source/ui/view/sdview3.cxx b/sd/source/ui/view/sdview3.cxx
index cf6f72870045..c0f5f5e19413 100644
--- a/sd/source/ui/view/sdview3.cxx
+++ b/sd/source/ui/view/sdview3.cxx
@@ -797,11 +797,7 @@ bool View::InsertData( const TransferableDataHelper& rDataHelper,
aNewSet.Put( pObj->GetMergedItemSet() );
if( bUndo )
- AddUndo(
- new E3dAttributesUndoAction(
- *static_cast< E3dObject* >(pPickObj),
- aNewSet,
- aOldSet));
+ AddUndo( new E3dAttributesUndoAction( mrDoc, static_cast<E3dObject*>(pPickObj), aNewSet, aOldSet ) );
pPickObj->SetMergedItemSetAndBroadcast( aNewSet );
}
@@ -999,11 +995,7 @@ bool View::InsertData( const TransferableDataHelper& rDataHelper,
maDropPos.AdjustY( -(std::min( aSize.Height(), aMaxSize.Height() ) >> 1) );
::tools::Rectangle aRect( maDropPos, aSize );
- SdrOle2Obj* pObj = new SdrOle2Obj(
- getSdrModelFromSdrView(),
- aObjRef,
- aName,
- aRect);
+ SdrOle2Obj* pObj = new SdrOle2Obj( aObjRef, aName, aRect );
SdrPageView* pPV = GetSdrPageView();
SdrInsertFlags nOptions = SdrInsertFlags::SETDEFLAYER;
@@ -1173,11 +1165,7 @@ bool View::InsertData( const TransferableDataHelper& rDataHelper,
maDropPos.AdjustY( -(std::min( aSize.Height(), aMaxSize.Height() ) >> 1) );
::tools::Rectangle aRect( maDropPos, aSize );
- SdrOle2Obj* pObj = new SdrOle2Obj(
- getSdrModelFromSdrView(),
- aObjRef,
- aName,
- aRect);
+ SdrOle2Obj* pObj = new SdrOle2Obj( aObjRef, aName, aRect );
SdrPageView* pPV = GetSdrPageView();
SdrInsertFlags nOptions = SdrInsertFlags::SETDEFLAYER;
diff --git a/sd/source/ui/view/sdview4.cxx b/sd/source/ui/view/sdview4.cxx
index fb17fcc2df24..f98a8ab1b216 100644
--- a/sd/source/ui/view/sdview4.cxx
+++ b/sd/source/ui/view/sdview4.cxx
@@ -116,10 +116,7 @@ SdrGrafObj* View::InsertGraphic( const Graphic& rGraphic, sal_Int8& rAction,
}
else
{
- pNewGrafObj = new SdrGrafObj(
- getSdrModelFromSdrView(),
- rGraphic,
- pPickObj->GetLogicRect());
+ pNewGrafObj = new SdrGrafObj( rGraphic, pPickObj->GetLogicRect() );
pNewGrafObj->SetEmptyPresObj(true);
}
@@ -192,10 +189,7 @@ SdrGrafObj* View::InsertGraphic( const Graphic& rGraphic, sal_Int8& rAction,
MapMode( MapUnit::Map100thMM ) );
}
- pNewGrafObj = new SdrGrafObj(
- getSdrModelFromSdrView(),
- rGraphic,
- ::tools::Rectangle(rPos, aSize));
+ pNewGrafObj = new SdrGrafObj( rGraphic, ::tools::Rectangle( rPos, aSize ) );
SdrPage* pPage = pPV->GetPage();
Size aPageSize( pPage->GetSize() );
aPageSize.AdjustWidth( -(pPage->GetLeftBorder() + pPage->GetRightBorder()) );
@@ -335,9 +329,7 @@ SdrMediaObj* View::InsertMediaObj( const OUString& rMediaURL, const OUString& rM
pUserCall = pPickObj->GetUserCall(); // ReplaceObjectAtView can free pPickObj
}
- pNewMediaObj = new SdrMediaObj(
- getSdrModelFromSdrView(),
- aRect);
+ pNewMediaObj = new SdrMediaObj( aRect );
bool bIsPres = false;
if( pPickObj )
@@ -537,11 +529,7 @@ IMPL_LINK_NOARG(View, DropInsertFileHdl, Timer *, void)
aRect = ::tools::Rectangle( maDropPos, aSize );
- SdrOle2Obj* pOleObj = new SdrOle2Obj(
- getSdrModelFromSdrView(),
- svt::EmbeddedObjectRef(xObj, nAspect),
- aName,
- aRect);
+ SdrOle2Obj* pOleObj = new SdrOle2Obj( svt::EmbeddedObjectRef( xObj, nAspect ), aName, aRect );
SdrInsertFlags nOptions = SdrInsertFlags::SETDEFLAYER;
if (mpViewSh != nullptr)
diff --git a/svx/inc/dragmt3d.hxx b/svx/inc/dragmt3d.hxx
index 2ac1274fbb96..d8eba435c667 100644
--- a/svx/inc/dragmt3d.hxx
+++ b/svx/inc/dragmt3d.hxx
@@ -30,7 +30,7 @@
class E3dDragMethodUnit
{
public:
- E3dObject& mr3DObj;
+ E3dObject* mp3DObj;
basegfx::B3DPolyPolygon maWireframePoly;
basegfx::B3DHomMatrix maDisplayTransform;
basegfx::B3DHomMatrix maInvDisplayTransform;
@@ -39,8 +39,8 @@ public:
sal_Int32 mnStartAngle;
sal_Int32 mnLastAngle;
- E3dDragMethodUnit(E3dObject& r3DObj)
- : mr3DObj(r3DObj),
+ E3dDragMethodUnit()
+ : mp3DObj(nullptr),
maWireframePoly(),
maDisplayTransform(),
maInvDisplayTransform(),
@@ -48,8 +48,7 @@ public:
maTransform(),
mnStartAngle(0),
mnLastAngle(0)
- {
- }
+ {}
};
// Derivative of SdrDragMethod for 3D objects
diff --git a/svx/inc/sdr/properties/attributeproperties.hxx b/svx/inc/sdr/properties/attributeproperties.hxx
index d12374f31ee1..603442634df2 100644
--- a/svx/inc/sdr/properties/attributeproperties.hxx
+++ b/svx/inc/sdr/properties/attributeproperties.hxx
@@ -31,12 +31,6 @@ namespace sdr
{
class AttributeProperties : public DefaultProperties, public SfxListener, public svl::StyleSheetUser
{
- // get the correct (#119287#) default SfyStyleSheet from SdrObject's SdrModel
- SfxStyleSheet* ImpGetDefaultStyleSheet() const;
-
- // core to set parent at SfxItemSet and to execute the hard attribute computations
- void ImpSetParentAtSfxItemSet(bool bDontRemoveHardAttr);
-
// add style sheet, do all the necessary handling
void ImpAddStyleSheet(SfxStyleSheet* pNewStyleSheet, bool bDontRemoveHardAttr);
@@ -66,10 +60,6 @@ namespace sdr
// Clone() operator, normally just calls the local copy constructor
virtual BaseProperties& Clone(SdrObject& rObj) const override;
- // Get the local ItemSet. This directly returns the local ItemSet of the object. No
- // merging of ItemSets is done for e.g. Group objects.
- virtual const SfxItemSet& GetObjectItemSet() const override;
-
// destructor
virtual ~AttributeProperties() override;
@@ -79,6 +69,12 @@ namespace sdr
// get the installed StyleSheet
virtual SfxStyleSheet* GetStyleSheet() const override;
+ // Move properties to a new ItemPool.
+ virtual void MoveToItemPool(SfxItemPool* pSrcPool, SfxItemPool* pDestPool, SdrModel* pNewModel) override;
+
+ // Set new model.
+ virtual void SetModel(SdrModel* pOldModel, SdrModel* pNewModel) override;
+
// force all attributes which come from styles to hard attributes
// to be able to live without the style.
virtual void ForceStyleToHardAttributes() override;
diff --git a/svx/inc/sdr/properties/e3dsceneproperties.hxx b/svx/inc/sdr/properties/e3dsceneproperties.hxx
index 00d377766e01..3705fd684258 100644
--- a/svx/inc/sdr/properties/e3dsceneproperties.hxx
+++ b/svx/inc/sdr/properties/e3dsceneproperties.hxx
@@ -68,6 +68,9 @@ namespace sdr
// get the installed StyleSheet
virtual SfxStyleSheet* GetStyleSheet() const override;
+ // Move properties to a new ItemPool. Default implementation does nothing.
+ virtual void MoveToItemPool(SfxItemPool* pSrcPool, SfxItemPool* pDestPool, SdrModel* pNewModel) override;
+
// Special for scene:
void SetSceneItemsFromCamera();
};
diff --git a/svx/inc/sdr/properties/groupproperties.hxx b/svx/inc/sdr/properties/groupproperties.hxx
index 9b6b28a73dc3..af197dc91360 100644
--- a/svx/inc/sdr/properties/groupproperties.hxx
+++ b/svx/inc/sdr/properties/groupproperties.hxx
@@ -103,6 +103,9 @@ namespace sdr
// DefaultProperties::GetObjectItemSet() if a new ItemSet is created
virtual void ForceDefaultAttributes() override;
+ // Move properties to a new ItemPool.
+ virtual void MoveToItemPool(SfxItemPool* pSrcPool, SfxItemPool* pDestPool, SdrModel* pNewModel) override;
+
// force all attributes which come from styles to hard attributes
// to be able to live without the style.
virtual void ForceStyleToHardAttributes() override;
diff --git a/svx/source/accessibility/AccessibleEmptyEditSource.cxx b/svx/source/accessibility/AccessibleEmptyEditSource.cxx
index 19a09ec8f502..6cbd41f35ce0 100644
--- a/svx/source/accessibility/AccessibleEmptyEditSource.cxx
+++ b/svx/source/accessibility/AccessibleEmptyEditSource.cxx
@@ -218,7 +218,8 @@ namespace accessibility
mrViewWindow(rViewWindow),
mbEditSourceEmpty( true )
{
- StartListening( mrObj.getSdrModelFromSdrObject() );
+ if( mrObj.GetModel() )
+ StartListening( *mrObj.GetModel() );
}
AccessibleEmptyEditSource::~AccessibleEmptyEditSource()
@@ -231,7 +232,8 @@ namespace accessibility
}
else
{
- EndListening( mrObj.getSdrModelFromSdrObject() );
+ if( mrObj.GetModel() )
+ EndListening( *mrObj.GetModel() );
}
}
@@ -254,7 +256,8 @@ namespace accessibility
void AccessibleEmptyEditSource::Switch2ProxyEditSource()
{
// deregister EmptyEditSource model listener
- EndListening( mrObj.getSdrModelFromSdrObject() );
+ if( mrObj.GetModel() )
+ EndListening( *mrObj.GetModel() );
::std::unique_ptr< SvxEditSource > pProxySource( new AccessibleProxyEditSource_Impl(mrObj, mrView, mrViewWindow) );
mpEditSource.swap(pProxySource);
diff --git a/svx/source/accessibility/AccessibleGraphicShape.cxx b/svx/source/accessibility/AccessibleGraphicShape.cxx
index fba25f4ad007..31c4690f5b97 100644
--- a/svx/source/accessibility/AccessibleGraphicShape.cxx
+++ b/svx/source/accessibility/AccessibleGraphicShape.cxx
@@ -169,7 +169,7 @@ OUString AccessibleGraphicShape::CreateAccessibleDescription()
// Return this object's role.
sal_Int16 SAL_CALL AccessibleGraphicShape::getAccessibleRole()
{
- if( m_pShape->getSdrModelFromSdrObject().GetImageMapForObject(m_pShape) != nullptr )
+ if( m_pShape->GetModel()->GetImageMapForObject(m_pShape) != nullptr )
return AccessibleRole::IMAGE_MAP;
else
return AccessibleShape::getAccessibleRole();
diff --git a/svx/source/core/extedit.cxx b/svx/source/core/extedit.cxx
index dab305257299..a00216d40b16 100644
--- a/svx/source/core/extedit.cxx
+++ b/svx/source/core/extedit.cxx
@@ -154,13 +154,12 @@ void ExternalToolEdit::Edit(GraphicObject const*const pGraphicObject)
}
SdrExternalToolEdit::SdrExternalToolEdit(
- FmFormView* pView,
- SdrObject* pObj)
-: m_pView(pView)
- ,m_pObj(pObj)
+ FmFormView *const pView, SdrObject *const pObj)
+ : m_pView(pView)
+ , m_pObj(pObj)
{
assert(m_pObj && m_pView);
- StartListening(m_pObj->getSdrModelFromSdrObject());
+ StartListening(*m_pObj->GetModel());
}
diff --git a/svx/source/customshapes/EnhancedCustomShape2d.cxx b/svx/source/customshapes/EnhancedCustomShape2d.cxx
index f2a00feaad80..2386b5887d8f 100644
--- a/svx/source/customshapes/EnhancedCustomShape2d.cxx
+++ b/svx/source/customshapes/EnhancedCustomShape2d.cxx
@@ -1980,10 +1980,7 @@ void EnhancedCustomShape2d::CreateSubPath(
{
basegfx::B2DPolyPolygon aClosedPolyPolygon(aNewB2DPolyPolygon);
aClosedPolyPolygon.setClosed(true);
- SdrPathObj* pFill = new SdrPathObj(
- mrSdrObjCustomShape.getSdrModelFromSdrObject(),
- OBJ_POLY,
- aClosedPolyPolygon);
+ SdrPathObj* pFill = new SdrPathObj(OBJ_POLY, aClosedPolyPolygon);
SfxItemSet aTempSet(*this);
aTempSet.Put(makeSdrShadowItem(false));
aTempSet.Put(XLineStyleItem(drawing::LineStyle_NONE));
@@ -1998,7 +1995,6 @@ void EnhancedCustomShape2d::CreateSubPath(
// to correct the polygon (here: open it) using the type, the last edge may get lost.
// Thus, use a type that fits the polygon
SdrPathObj* pStroke = new SdrPathObj(
- mrSdrObjCustomShape.getSdrModelFromSdrObject(),
aNewB2DPolyPolygon.isClosed() ? OBJ_POLY : OBJ_PLIN,
aNewB2DPolyPolygon);
SfxItemSet aTempSet(*this);
@@ -2018,7 +2014,6 @@ void EnhancedCustomShape2d::CreateSubPath(
{
// see comment above about OBJ_PLIN
pObj = new SdrPathObj(
- mrSdrObjCustomShape.getSdrModelFromSdrObject(),
aNewB2DPolyPolygon.isClosed() ? OBJ_POLY : OBJ_PLIN,
aNewB2DPolyPolygon);
aTempSet.Put(XFillStyleItem(drawing::FillStyle_NONE));
@@ -2026,10 +2021,7 @@ void EnhancedCustomShape2d::CreateSubPath(
else
{
aNewB2DPolyPolygon.setClosed(true);
- pObj = new SdrPathObj(
- mrSdrObjCustomShape.getSdrModelFromSdrObject(),
- OBJ_POLY,
- aNewB2DPolyPolygon);
+ pObj = new SdrPathObj(OBJ_POLY, aNewB2DPolyPolygon);
}
if(bNoStroke)
@@ -2380,7 +2372,7 @@ SdrObject* EnhancedCustomShape2d::CreatePathObj( bool bLineGeometryNeededOnly )
// copy remaining objects to pRet
if(vObjectList.size() > 1)
{
- pRet = new SdrObjGroup(mrSdrObjCustomShape.getSdrModelFromSdrObject());
+ pRet = new SdrObjGroup;
for ( std::pair< SdrPathObj*, double >& rCandidate : vObjectList )
{
@@ -2412,7 +2404,7 @@ SdrObject* EnhancedCustomShape2d::CreateObject( bool bLineGeometryNeededOnly )
if ( eSpType == mso_sptRectangle )
{
- pRet = new SdrRectObj(mrSdrObjCustomShape.getSdrModelFromSdrObject(), aLogicRect);
+ pRet = new SdrRectObj( aLogicRect );
pRet->SetMergedItemSet( *this );
}
if ( !pRet )
diff --git a/svx/source/customshapes/EnhancedCustomShape3d.cxx b/svx/source/customshapes/EnhancedCustomShape3d.cxx
index a0e2a6badba0..60177fc9fbe8 100644
--- a/svx/source/customshapes/EnhancedCustomShape3d.cxx
+++ b/svx/source/customshapes/EnhancedCustomShape3d.cxx
@@ -255,24 +255,27 @@ SdrObject* EnhancedCustomShape3d::Create3DObject(
const SdrObject* pShape2d,
const SdrObjCustomShape& rSdrObjCustomShape)
{
- SdrObject* pRet(nullptr);
- const SdrCustomShapeGeometryItem& rGeometryItem(rSdrObjCustomShape.GetMergedItem(SDRATTR_CUSTOMSHAPE_GEOMETRY));
- double fMap(1.0), *pMap = nullptr;
- Fraction aFraction( rSdrObjCustomShape.getSdrModelFromSdrObject().GetScaleFraction() );
+ SdrObject* pRet = nullptr;
+ SdrModel* pModel = rSdrObjCustomShape.GetModel();
+ const SdrCustomShapeGeometryItem& rGeometryItem = rSdrObjCustomShape.GetMergedItem( SDRATTR_CUSTOMSHAPE_GEOMETRY );
- if ( aFraction.GetNumerator() != 1 || aFraction.GetDenominator() != 1 )
+ double fMap, *pMap = nullptr;
+ if ( pModel )
{
- fMap *= double(aFraction);
- pMap = &fMap;
- }
-
- if ( rSdrObjCustomShape.getSdrModelFromSdrObject().GetScaleUnit() != MapUnit::Map100thMM )
- {
- DBG_ASSERT( rSdrObjCustomShape.getSdrModelFromSdrObject().GetScaleUnit() == MapUnit::MapTwip, "EnhancedCustomShape3d::Current MapMode is Unsupported" );
- fMap *= 1440.0 / 2540.0;
- pMap = &fMap;
+ fMap = 1.0;
+ Fraction aFraction( pModel->GetScaleFraction() );
+ if ( aFraction.GetNumerator() != 1 || aFraction.GetDenominator() != 1 )
+ {
+ fMap *= double(aFraction);
+ pMap = &fMap;
+ }
+ if ( pModel->GetScaleUnit() != MapUnit::Map100thMM )
+ {
+ DBG_ASSERT( pModel->GetScaleUnit() == MapUnit::MapTwip, "EnhancedCustomShape3d::Current MapMode is Unsupported" );
+ fMap *= 1440.0 / 2540.0;
+ pMap = &fMap;
+ }
}
-
if ( GetBool( rGeometryItem, "Extrusion", false ) )
{
bool bIsMirroredX(rSdrObjCustomShape.IsMirroredX());
@@ -323,7 +326,7 @@ SdrObject* EnhancedCustomShape3d::Create3DObject(
a3DDefaultAttr.SetDefaultLatheCharacterMode( true );
a3DDefaultAttr.SetDefaultExtrudeCharacterMode( true );
- E3dScene* pScene = new E3dScene(rSdrObjCustomShape.getSdrModelFromSdrObject());
+ E3dScene* pScene = new E3dScene;
bool bSceneHasObjects ( false );
bool bUseTwoFillStyles( false );
@@ -477,15 +480,10 @@ SdrObject* EnhancedCustomShape3d::Create3DObject(
aBoundRect2d.Union( aBoundRect );
// #i122777# depth 0 is okay for planes when using double-sided
- E3dCompoundObject* p3DObj = new E3dExtrudeObj(
- rSdrObjCustomShape.getSdrModelFromSdrObject(),
- a3DDefaultAttr,
- aPolyPoly,
- bUseTwoFillStyles ? 0 : fDepth );
+ E3dCompoundObject* p3DObj = new E3dExtrudeObj( a3DDefaultAttr, aPolyPoly, bUseTwoFillStyles ? 0 : fDepth );
p3DObj->NbcSetLayer( pShape2d->GetLayer() );
p3DObj->SetMergedItemSet( aLocalSet );
-
if ( bIsPlaceholderObject )
aPlaceholderObjectList.push_back( p3DObj );
else if ( bUseTwoFillStyles )
@@ -532,11 +530,7 @@ SdrObject* EnhancedCustomShape3d::Create3DObject(
}
}
pScene->Insert3DObj( p3DObj );
- p3DObj = new E3dExtrudeObj(
- rSdrObjCustomShape.getSdrModelFromSdrObject(),
- a3DDefaultAttr,
- aPolyPoly,
- fDepth);
+ p3DObj = new E3dExtrudeObj( a3DDefaultAttr, aPolyPoly, fDepth );
p3DObj->NbcSetLayer( pShape2d->GetLayer() );
p3DObj->SetMergedItemSet( aLocalSet );
if ( bUseExtrusionColor )
@@ -547,11 +541,7 @@ SdrObject* EnhancedCustomShape3d::Create3DObject(
pScene->Insert3DObj( p3DObj );
// #i122777# depth 0 is okay for planes when using double-sided
- p3DObj = new E3dExtrudeObj(
- rSdrObjCustomShape.getSdrModelFromSdrObject(),
- a3DDefaultAttr,
- aPolyPoly,
- 0);
+ p3DObj = new E3dExtrudeObj( a3DDefaultAttr, aPolyPoly, 0 );
p3DObj->NbcSetLayer( pShape2d->GetLayer() );
p3DObj->SetMergedItemSet( aLocalSet );
diff --git a/svx/source/customshapes/EnhancedCustomShapeEngine.cxx b/svx/source/customshapes/EnhancedCustomShapeEngine.cxx
index 753d43c3a0c7..133c008ebc4e 100644
--- a/svx/source/customshapes/EnhancedCustomShapeEngine.cxx
+++ b/svx/source/customshapes/EnhancedCustomShapeEngine.cxx
@@ -167,7 +167,7 @@ SdrObject* EnhancedCustomShapeEngine::ImplForceGroupWithText(
if ( dynamic_cast<const SdrObjGroup*>( pRenderedShape) == nullptr )
{
SdrObject* pTmp = pRenderedShape;
- pRenderedShape = new SdrObjGroup(rSdrObjCustomShape.getSdrModelFromSdrObject());
+ pRenderedShape = new SdrObjGroup();
static_cast<SdrObjGroup*>(pRenderedShape)->GetSubList()->NbcInsertObject( pTmp );
}
static_cast<SdrObjGroup*>(pRenderedShape)->GetSubList()->NbcInsertObject( pShadowGeometry->Clone(), 0 );
@@ -181,9 +181,10 @@ SdrObject* EnhancedCustomShapeEngine::ImplForceGroupWithText(
{
// #i37011# also create a text object and add at rPos + 1
SdrObject* pTextObj = SdrObjFactory::MakeNewObject(
- rSdrObjCustomShape.getSdrModelFromSdrObject(),
rSdrObjCustomShape.GetObjInventor(),
- OBJ_TEXT);
+ OBJ_TEXT,
+ nullptr,
+ rSdrObjCustomShape.GetModel());
// Copy text content
OutlinerParaObject* pParaObj(rSdrObjCustomShape.GetOutlinerParaObject());
@@ -232,7 +233,7 @@ SdrObject* EnhancedCustomShapeEngine::ImplForceGroupWithText(
if ( dynamic_cast<const SdrObjGroup*>( pRenderedShape) == nullptr )
{
SdrObject* pTmp = pRenderedShape;
- pRenderedShape = new SdrObjGroup(rSdrObjCustomShape.getSdrModelFromSdrObject());
+ pRenderedShape = new SdrObjGroup();
static_cast<SdrObjGroup*>(pRenderedShape)->GetSubList()->NbcInsertObject( pTmp );
}
static_cast<SdrObjGroup*>(pRenderedShape)->GetSubList()->NbcInsertObject( pTextObj );
@@ -247,11 +248,12 @@ SdrObject* EnhancedCustomShapeEngine::ImplForceGroupWithText(
if ( dynamic_cast<const SdrObjGroup*>( pRenderedShape) == nullptr )
{
SdrObject* pTmp = pRenderedShape;
- pRenderedShape = new SdrObjGroup(rSdrObjCustomShape.getSdrModelFromSdrObject());
+ pRenderedShape = new SdrObjGroup();
static_cast<SdrObjGroup*>(pRenderedShape)->GetSubList()->NbcInsertObject( pTmp );
}
pRenderedShape->SetPage(rSdrObjCustomShape.GetPage());
+ pRenderedShape->SetModel(rSdrObjCustomShape.GetModel());
}
}
@@ -389,7 +391,9 @@ awt::Rectangle SAL_CALL EnhancedCustomShapeEngine::getTextBounds()
SdrObjCustomShape& rSdrObjCustomShape(static_cast< SdrObjCustomShape& >(*GetSdrObjectFromXShape(mxShape)));
uno::Reference< document::XActionLockable > xLockable( mxShape, uno::UNO_QUERY );
- if(xLockable.is() && !xLockable->isActionLocked())
+ if(rSdrObjCustomShape.GetModel()
+ && xLockable.is()
+ && !xLockable->isActionLocked())
{
EnhancedCustomShape2d aCustomShape2d(rSdrObjCustomShape);
tools::Rectangle aRect( aCustomShape2d.GetTextRect() );
diff --git a/svx/source/customshapes/EnhancedCustomShapeFontWork.cxx b/svx/source/customshapes/EnhancedCustomShapeFontWork.cxx
index 9bfed5d53ab4..71dc441f1727 100644
--- a/svx/source/customshapes/EnhancedCustomShapeFontWork.cxx
+++ b/svx/source/customshapes/EnhancedCustomShapeFontWork.cxx
@@ -853,17 +853,13 @@ SdrObject* CreateSdrObjectFromParagraphOutlines(
++aTextAreaIter;
}
- pRet = new SdrPathObj(
- rSdrObjCustomShape.getSdrModelFromSdrObject(),
- OBJ_POLY,
- aPolyPoly);
+ pRet = new SdrPathObj( OBJ_POLY, aPolyPoly );
SfxItemSet aSet(rSdrObjCustomShape.GetMergedItemSet());
aSet.ClearItem( SDRATTR_TEXTDIRECTION ); //SJ: vertical writing is not required, by removing this item no outliner is created
aSet.Put(makeSdrShadowItem(false)); // #i37011# NO shadow for FontWork geometry
pRet->SetMergedItemSet( aSet ); // * otherwise we would crash, because the outliner tries to create a Paraobject, but there is no model
}
-
return pRet;
}
diff --git a/svx/source/dialog/connctrl.cxx b/svx/source/dialog/connctrl.cxx
index 9440ce6796a6..b9a8ea76b1bd 100644
--- a/svx/source/dialog/connctrl.cxx
+++ b/svx/source/dialog/connctrl.cxx
@@ -39,7 +39,7 @@
SvxXConnectionPreview::SvxXConnectionPreview( vcl::Window* pParent, WinBits nStyle)
: Control(pParent, nStyle)
, pEdgeObj(nullptr)
- , pSdrPage(nullptr)
+ , pObjList(nullptr)
, pView(nullptr)
{
SetMapMode(MapMode(MapUnit::Map100thMM));
@@ -55,7 +55,7 @@ SvxXConnectionPreview::~SvxXConnectionPreview()
void SvxXConnectionPreview::dispose()
{
- delete pSdrPage;
+ delete pObjList;
Control::dispose();
}
@@ -76,13 +76,13 @@ Size SvxXConnectionPreview::GetOptimalSize() const
void SvxXConnectionPreview::AdaptSize()
{
// Adapt size
- if( !pSdrPage )
+ if( !pObjList )
return;
SetMapMode(MapMode(MapUnit::Map100thMM));
OutputDevice* pOD = pView->GetFirstOutputDevice(); // GetWin( 0 );
- tools::Rectangle aRect = pSdrPage->GetAllObjBoundRect();
+ tools::Rectangle aRect = pObjList->GetAllObjBoundRect();
MapMode aMapMode = GetMapMode();
aMapMode.SetMapUnit( pOD->GetMapMode().GetMapUnit() );
@@ -171,43 +171,37 @@ void SvxXConnectionPreview::Construct()
// potential memory leak here (!). Create SdrObjList only when there is
// not yet one.
- if(!pSdrPage)
+ if(!pObjList)
{
- pSdrPage = new SdrPage(
- pView->getSdrModelFromSdrView(),
- false);
+ pObjList = new SdrObjList( pView->GetModel(), nullptr );
}
if( pTmpObj1 )
{
SdrObject* pObj1 = pTmpObj1->Clone();
- pSdrPage->InsertObject( pObj1 );
+ pObjList->InsertObject( pObj1 );
pEdgeObj->ConnectToNode( true, pObj1 );
}
-
if( pTmpObj2 )
{
SdrObject* pObj2 = pTmpObj2->Clone();
- pSdrPage->InsertObject( pObj2 );
+ pObjList->InsertObject( pObj2 );
pEdgeObj->ConnectToNode( false, pObj2 );
}
-
- pSdrPage->InsertObject( pEdgeObj );
+ pObjList->InsertObject( pEdgeObj );
}
}
}
if( !pEdgeObj )
- {
- pEdgeObj = new SdrEdgeObj(pView->getSdrModelFromSdrView());
- }
+ pEdgeObj = new SdrEdgeObj();
AdaptSize();
}
void SvxXConnectionPreview::Paint(vcl::RenderContext& rRenderContext, const tools::Rectangle&)
{
- if (pSdrPage)
+ if (pObjList)
{
// This will not work anymore. To not start at Adam and Eve, i will
// ATM not try to change all this stuff to really using an own model
@@ -218,9 +212,9 @@ void SvxXConnectionPreview::Paint(vcl::RenderContext& rRenderContext, const tool
// New stuff: Use a ObjectContactOfObjListPainter.
sdr::contact::SdrObjectVector aObjectVector;
- for (size_t a = 0; a < pSdrPage->GetObjCount(); ++a)
+ for (size_t a = 0; a < pObjList->GetObjCount(); ++a)
{
- SdrObject* pObject = pSdrPage->GetObj(a);
+ SdrObject* pObject = pObjList->GetObj(a);
DBG_ASSERT(pObject,
"SvxXConnectionPreview::Paint: Corrupt ObjectList (!)");
aObjectVector.push_back(pObject);
diff --git a/svx/source/dialog/contwnd.cxx b/svx/source/dialog/contwnd.cxx
index c041a7240032..e404154ed46d 100644
--- a/svx/source/dialog/contwnd.cxx
+++ b/svx/source/dialog/contwnd.cxx
@@ -61,10 +61,7 @@ void ContourWindow::SetPolyPolygon(const tools::PolyPolygon& rPolyPoly)
{
basegfx::B2DPolyPolygon aPolyPolygon;
aPolyPolygon.append(aPolyPoly[ i ].getB2DPolygon());
- SdrPathObj* pPathObj = new SdrPathObj(
- *pModel,
- OBJ_PATHFILL,
- aPolyPolygon);
+ SdrPathObj* pPathObj = new SdrPathObj( OBJ_PATHFILL, aPolyPolygon );
SfxItemSet aSet(pModel->GetItemPool());
diff --git a/svx/source/dialog/dlgctl3d.cxx b/svx/source/dialog/dlgctl3d.cxx
index 22bb53ba2d18..0eee4586f225 100644
--- a/svx/source/dialog/dlgctl3d.cxx
+++ b/svx/source/dialog/dlgctl3d.cxx
@@ -92,12 +92,12 @@ void Svx3DPreviewControl::Construct()
mpModel->InsertPage( mpFmPage, 0 );
// 3D View
- mp3DView = new E3dView(*mpModel, this );
+ mp3DView = new E3dView( mpModel, this );
mp3DView->SetBufferedOutputAllowed(true);
mp3DView->SetBufferedOverlayAllowed(true);
// 3D Scene
- mpScene = new E3dScene(*mpModel);
+ mpScene = new E3dScene;
// initially create object
SetObjectType(SvxPreviewObjectType::SPHERE);
@@ -204,7 +204,6 @@ void Svx3DPreviewControl::SetObjectType(SvxPreviewObjectType nType)
case SvxPreviewObjectType::SPHERE:
{
mp3DObj = new E3dSphereObj(
- *mpModel,
mp3DView->Get3DDefaultAttributes(),
basegfx::B3DPoint( 0, 0, 0 ),
basegfx::B3DVector( 5000, 5000, 5000 ));
@@ -214,7 +213,6 @@ void Svx3DPreviewControl::SetObjectType(SvxPreviewObjectType nType)
case SvxPreviewObjectType::CUBE:
{
mp3DObj = new E3dCubeObj(
- *mpModel,
mp3DView->Get3DDefaultAttributes(),
basegfx::B3DPoint( -2500, -2500, -2500 ),
basegfx::B3DVector( 5000, 5000, 5000 ));
@@ -288,7 +286,6 @@ void Svx3DLightControl::Construct2()
// create invisible expansion object
const double fMaxExpansion(RADIUS_LAMP_BIG + RADIUS_LAMP_PREVIEW_SIZE);
mpExpansionObject = new E3dCubeObj(
- *mpModel,
mp3DView->Get3DDefaultAttributes(),
basegfx::B3DPoint(-fMaxExpansion, -fMaxExpansion, -fMaxExpansion),
basegfx::B3DVector(2.0 * fMaxExpansion, 2.0 * fMaxExpansion, 2.0 * fMaxExpansion));
@@ -312,7 +309,6 @@ void Svx3DLightControl::Construct2()
// create object for it
mpLampBottomObject = new E3dPolygonObj(
- *mpModel,
basegfx::B3DPolyPolygon(a3DCircle));
mpScene->Insert3DObj( mpLampBottomObject );
@@ -326,7 +322,6 @@ void Svx3DLightControl::Construct2()
// create object for it
mpLampShaftObject = new E3dPolygonObj(
- *mpModel,
basegfx::B3DPolyPolygon(a3DHalfCircle));
mpScene->Insert3DObj( mpLampShaftObject );
@@ -388,7 +383,6 @@ void Svx3DLightControl::ConstructLightObjects()
const double fLampSize(bIsSelectedLight ? RADIUS_LAMP_BIG : RADIUS_LAMP_SMALL);
E3dObject* pNewLight = new E3dSphereObj(
- *mpModel,
mp3DView->Get3DDefaultAttributes(),
basegfx::B3DPoint( 0, 0, 0 ),
basegfx::B3DVector( fLampSize, fLampSize, fLampSize));
diff --git a/svx/source/dialog/dlgctrl.cxx b/svx/source/dialog/dlgctrl.cxx
index 7e2ffb67c0e3..d89b71b3e2a1 100644
--- a/svx/source/dialog/dlgctrl.cxx
+++ b/svx/source/dialog/dlgctrl.cxx
@@ -1468,9 +1468,14 @@ SvxXLinePreview::SvxXLinePreview(vcl::Window* pParent)
{
InitSettings( true, true );
- mpLineObjA = new SdrPathObj(getModel(), OBJ_LINE);
- mpLineObjB = new SdrPathObj(getModel(), OBJ_PLIN);
- mpLineObjC = new SdrPathObj(getModel(), OBJ_PLIN);
+ mpLineObjA = new SdrPathObj(OBJ_LINE);
+ mpLineObjA->SetModel(&getModel());
+
+ mpLineObjB = new SdrPathObj(OBJ_PLIN);
+ mpLineObjB->SetModel(&getModel());
+
+ mpLineObjC = new SdrPathObj(OBJ_PLIN);
+ mpLineObjC->SetModel(&getModel());
}
VCL_BUILDER_FACTORY(SvxXLinePreview)
@@ -1558,16 +1563,15 @@ void SvxXLinePreview::Paint(vcl::RenderContext& rRenderContext, const tools::Rec
}
SvxXRectPreview::SvxXRectPreview(vcl::Window* pParent)
-: SvxPreviewBase(pParent)
- ,mpRectangleObject(nullptr)
+ : SvxPreviewBase(pParent)
+ , mpRectangleObject(nullptr)
{
InitSettings(true, true);
// create RectangleObject
const tools::Rectangle aObjectSize(Point(), GetOutputSize());
- mpRectangleObject = new SdrRectObj(
- getModel(),
- aObjectSize);
+ mpRectangleObject = new SdrRectObj(aObjectSize);
+ mpRectangleObject->SetModel(&getModel());
}
void SvxXRectPreview::Resize()
@@ -1576,9 +1580,8 @@ void SvxXRectPreview::Resize()
SdrObject *pOrigObject = mpRectangleObject;
if (pOrigObject)
{
- mpRectangleObject = new SdrRectObj(
- getModel(),
- aObjectSize);
+ mpRectangleObject = new SdrRectObj(aObjectSize);
+ mpRectangleObject->SetModel(&getModel());
SetAttributes(pOrigObject->GetMergedItemSet());
SdrObject::Free(pOrigObject);
}
@@ -1634,15 +1637,13 @@ SvxXShadowPreview::SvxXShadowPreview( vcl::Window* pParent )
// create RectangleObject
const tools::Rectangle aObjectSize( Point( aSize.Width(), aSize.Height() ), aSize );
- mpRectangleObject = new SdrRectObj(
- getModel(),
- aObjectSize);
+ mpRectangleObject = new SdrRectObj(aObjectSize);
+ mpRectangleObject->SetModel(&getModel());
// create ShadowObject
const tools::Rectangle aShadowSize( Point( aSize.Width(), aSize.Height() ), aSize );
- mpRectangleShadow = new SdrRectObj(
- getModel(),
- aShadowSize);
+ mpRectangleShadow = new SdrRectObj(aShadowSize);
+ mpRectangleShadow->SetModel(&getModel());
}
VCL_BUILDER_FACTORY(SvxXShadowPreview)
diff --git a/svx/source/dialog/graphctl.cxx b/svx/source/dialog/graphctl.cxx
index 07ff51e01fd9..481c55ccd418 100644
--- a/svx/source/dialog/graphctl.cxx
+++ b/svx/source/dialog/graphctl.cxx
@@ -142,7 +142,7 @@ void GraphCtrl::InitSdrModel()
pModel->SetChanged( false );
// Creating a View
- pView = new GraphCtrlView(*pModel, this);
+ pView = new GraphCtrlView( pModel, this );
pView->SetWorkArea( tools::Rectangle( Point(), aGraphSize ) );
pView->EnableExtendedMouseEventDispatcher( true );
pView->ShowSdrPage(pView->GetModel()->GetPage(0));
diff --git a/svx/source/dialog/imapwnd.cxx b/svx/source/dialog/imapwnd.cxx
index 557bbb005a95..da1a22a37ed9 100644
--- a/svx/source/dialog/imapwnd.cxx
+++ b/svx/source/dialog/imapwnd.cxx
@@ -195,10 +195,7 @@ SdrObject* IMapWindow::CreateObj( const IMapObject* pIMapObj )
// clipped on CanvasPane
aDrawRect.Intersection( aClipRect );
- pSdrObj = static_cast<SdrObject*>(
- new SdrRectObj(
- *pModel,
- aDrawRect));
+ pSdrObj = static_cast<SdrObject*>(new SdrRectObj( aDrawRect ));
pCloneIMapObj.reset(static_cast<IMapObject*>(new IMapRectangleObject( *pIMapRectObj )));
}
break;
@@ -214,13 +211,7 @@ SdrObject* IMapWindow::CreateObj( const IMapObject* pIMapObj )
// limited to CanvasPane
aCircle.Intersection( aClipRect );
- pSdrObj = static_cast<SdrObject*>(
- new SdrCircObj(
- *pModel,
- OBJ_CIRC,
- aCircle,
- 0,
- 36000));
+ pSdrObj = static_cast<SdrObject*>(new SdrCircObj( OBJ_CIRC, aCircle, 0, 36000 ));
pCloneIMapObj.reset(static_cast<IMapObject*>(new IMapCircleObject( *pIMapCircleObj )));
}
break;
@@ -237,13 +228,7 @@ SdrObject* IMapWindow::CreateObj( const IMapObject* pIMapObj )
// clipped on CanvasPane
aDrawRect.Intersection( aClipRect );
- pSdrObj = static_cast<SdrObject*>(
- new SdrCircObj(
- *pModel,
- OBJ_CIRC,
- aDrawRect,
- 0,
- 36000));
+ pSdrObj = static_cast<SdrObject*>(new SdrCircObj( OBJ_CIRC, aDrawRect, 0, 36000 ));
}
else
{
@@ -255,11 +240,7 @@ SdrObject* IMapWindow::CreateObj( const IMapObject* pIMapObj )
basegfx::B2DPolygon aPolygon;
aPolygon.append(aDrawPoly.getB2DPolygon());
- pSdrObj = static_cast<SdrObject*>(
- new SdrPathObj(
- *pModel,
- OBJ_POLY,
- basegfx::B2DPolyPolygon(aPolygon)));
+ pSdrObj = static_cast<SdrObject*>(new SdrPathObj(OBJ_POLY, basegfx::B2DPolyPolygon(aPolygon)));
}
pCloneIMapObj.reset(static_cast<IMapObject*>(new IMapPolygonObject( *pIMapPolyObj )));
@@ -764,10 +745,7 @@ void IMapWindow::CreateDefaultObject()
aPagePos.AdjustY((aPageSize.Height() / 2) - (nDefaultObjectSizeHeight / 2) );
tools::Rectangle aNewObjectRectangle(aPagePos, Size(nDefaultObjectSizeWidth, nDefaultObjectSizeHeight));
- SdrObject* pObj = SdrObjFactory::MakeNewObject(
- *pModel,
- pView->GetCurrentObjInventor(),
- pView->GetCurrentObjIdentifier());
+ SdrObject* pObj = SdrObjFactory::MakeNewObject( pView->GetCurrentObjInventor(), pView->GetCurrentObjIdentifier(), nullptr, pModel);
pObj->SetLogicRect(aNewObjectRectangle);
switch( pObj->GetObjIdentifier() )
diff --git a/svx/source/dialog/measctrl.cxx b/svx/source/dialog/measctrl.cxx
index 03e630041189..ddca770b766d 100644
--- a/svx/source/dialog/measctrl.cxx
+++ b/svx/source/dialog/measctrl.cxx
@@ -42,11 +42,9 @@ SvxXMeasurePreview::SvxXMeasurePreview(vcl::Window* pParent, WinBits nStyle)
Point aPt1 = Point(aSize.Width() / 5, static_cast<long>(aSize.Height() / 2));
Point aPt2 = Point(aSize.Width() * 4 / 5, static_cast<long>(aSize.Height() / 2));
+ pMeasureObj = new SdrMeasureObj(aPt1, aPt2);
pModel = new SdrModel();
- pMeasureObj = new SdrMeasureObj(
- *pModel,
- aPt1,
- aPt2);
+ pMeasureObj->SetModel(pModel);
bool bHighContrast = GetSettings().GetStyleSettings().GetHighContrastMode();
SetDrawMode(bHighContrast ? OUTPUT_DRAWMODE_CONTRAST : OUTPUT_DRAWMODE_COLOR);
diff --git a/svx/source/engine3d/cube3d.cxx b/svx/source/engine3d/cube3d.cxx
index 509688fe2f77..6583969bb771 100644
--- a/svx/source/engine3d/cube3d.cxx
+++ b/svx/source/engine3d/cube3d.cxx
@@ -35,31 +35,25 @@ sdr::contact::ViewContact* E3dCubeObj::CreateObjectSpecificViewContact()
}
-E3dCubeObj::E3dCubeObj(
- SdrModel& rSdrModel,
- const E3dDefaultAttributes& rDefault,
- const basegfx::B3DPoint& aPos,
- const basegfx::B3DVector& r3DSize)
-: E3dCompoundObject(rSdrModel)
+E3dCubeObj::E3dCubeObj(E3dDefaultAttributes& rDefault, const basegfx::B3DPoint& aPos, const basegfx::B3DVector& r3DSize)
+: E3dCompoundObject()
{
// Set Defaults
SetDefaultAttributes(rDefault);
- // position centre or left, bottom, back (dependent on bPosIsCenter)
- aCubePos = aPos;
+ aCubePos = aPos; // position centre or left, bottom, back (dependent on bPosIsCenter)
aCubeSize = r3DSize;
}
-E3dCubeObj::E3dCubeObj(SdrModel& rSdrModel)
-: E3dCompoundObject(rSdrModel)
+E3dCubeObj::E3dCubeObj()
+: E3dCompoundObject()
{
// Set Defaults
- const E3dDefaultAttributes aDefault;
-
+ E3dDefaultAttributes aDefault;
SetDefaultAttributes(aDefault);
}
-void E3dCubeObj::SetDefaultAttributes(const E3dDefaultAttributes& rDefault)
+void E3dCubeObj::SetDefaultAttributes(E3dDefaultAttributes& rDefault)
{
aCubePos = rDefault.GetDefaultCubePos();
aCubeSize = rDefault.GetDefaultCubeSize();
@@ -78,22 +72,9 @@ SdrObject *E3dCubeObj::DoConvertToPolyObj(bool /*bBezier*/, bool /*bAddText*/) c
return nullptr;
}
-E3dCubeObj* E3dCubeObj::Clone(SdrModel* pTargetModel) const
-{
- return CloneHelper< E3dCubeObj >(pTargetModel);
-}
-
-E3dCubeObj& E3dCubeObj::operator=(const E3dCubeObj& rObj)
+E3dCubeObj* E3dCubeObj::Clone() const
{
- if( this == &rObj )
- return *this;
- E3dCompoundObject::operator=(rObj);
-
- aCubePos = rObj.aCubePos;
- aCubeSize = rObj.aCubeSize;
- bPosIsCenter = rObj.bPosIsCenter;
-
- return *this;
+ return CloneHelper< E3dCubeObj >();
}
// Set local parameters with geometry re-creating
diff --git a/svx/source/engine3d/dragmt3d.cxx b/svx/source/engine3d/dragmt3d.cxx
index 5e070abb6c43..e55931b568f5 100644
--- a/svx/source/engine3d/dragmt3d.cxx
+++ b/svx/source/engine3d/dragmt3d.cxx
@@ -73,7 +73,8 @@ E3dDragMethod::E3dDragMethod (
if(pE3dObj)
{
// fill new interaction unit
- E3dDragMethodUnit aNewUnit(*pE3dObj);
+ E3dDragMethodUnit aNewUnit;
+ aNewUnit.mp3DObj = pE3dObj;
// get transformations
aNewUnit.maInitTransform = aNewUnit.maTransform = pE3dObj->GetTransform();
@@ -156,15 +157,13 @@ bool E3dDragMethod::EndSdrDrag(bool /*bCopy*/)
for(nOb=0;nOb<nCnt;nOb++)
{
E3dDragMethodUnit& rCandidate = maGrp[nOb];
- E3DModifySceneSnapRectUpdater aUpdater(&rCandidate.mr3DObj);
- rCandidate.mr3DObj.SetTransform(rCandidate.maTransform);
+ E3DModifySceneSnapRectUpdater aUpdater(rCandidate.mp3DObj);
+ rCandidate.mp3DObj->SetTransform(rCandidate.maTransform);
if( bUndo )
{
- getSdrDragView().AddUndo(
- new E3dRotateUndoAction(
- rCandidate.mr3DObj,
- rCandidate.maInitTransform,
- rCandidate.maTransform));
+ getSdrDragView().AddUndo(new E3dRotateUndoAction(rCandidate.mp3DObj->GetModel(),
+ rCandidate.mp3DObj, rCandidate.maInitTransform,
+ rCandidate.maTransform));
}
}
if( bUndo )
@@ -186,8 +185,8 @@ void E3dDragMethod::CancelSdrDrag()
{
// Restore transformation
E3dDragMethodUnit& rCandidate = maGrp[nOb];
- E3DModifySceneSnapRectUpdater aUpdater(&rCandidate.mr3DObj);
- rCandidate.mr3DObj.SetTransform(rCandidate.maInitTransform);
+ E3DModifySceneSnapRectUpdater aUpdater(rCandidate.mp3DObj);
+ rCandidate.mp3DObj->SetTransform(rCandidate.maInitTransform);
}
}
}
@@ -225,7 +224,7 @@ void E3dDragMethod::CreateOverlayGeometry(sdr::overlay::OverlayManager& rOverlay
if(nPlyCnt)
{
- const sdr::contact::ViewContactOfE3dScene& rVCScene = static_cast< sdr::contact::ViewContactOfE3dScene& >(rCandidate.mr3DObj.GetScene()->GetViewContact());
+ const sdr::contact::ViewContactOfE3dScene& rVCScene = static_cast< sdr::contact::ViewContactOfE3dScene& >(rCandidate.mp3DObj->GetScene()->GetViewContact());
const drawinglayer::geometry::ViewInformation3D& aViewInfo3D(rVCScene.getViewInformation3D());
const basegfx::B3DHomMatrix aWorldToView(aViewInfo3D.getDeviceToView() * aViewInfo3D.getProjection() * aViewInfo3D.getOrientation());
const basegfx::B3DHomMatrix aTransform(aWorldToView * rCandidate.maDisplayTransform);
@@ -262,7 +261,7 @@ E3dDragRotate::E3dDragRotate(SdrDragView &_rView,
if(nCnt)
{
- const E3dScene *pScene = maGrp[0].mr3DObj.GetScene();
+ const E3dScene *pScene = maGrp[0].mp3DObj->GetScene();
if(pScene)
{
@@ -272,7 +271,7 @@ E3dDragRotate::E3dDragRotate(SdrDragView &_rView,
for(sal_uInt32 nOb(0); nOb < nCnt; nOb++)
{
E3dDragMethodUnit& rCandidate = maGrp[nOb];
- basegfx::B3DPoint aObjCenter = rCandidate.mr3DObj.GetBoundVolume().getCenter();
+ basegfx::B3DPoint aObjCenter = rCandidate.mp3DObj->GetBoundVolume().getCenter();
const basegfx::B3DHomMatrix aTransform(aViewInfo3D.getOrientation() * rCandidate.maDisplayTransform * rCandidate.maInitTransform);
aObjCenter = aTransform * aObjCenter;
@@ -388,7 +387,7 @@ void E3dDragRotate::MoveSdrDrag(const Point& rPnt)
}
// Transformation in eye coordinates, there rotate then and back
- const sdr::contact::ViewContactOfE3dScene& rVCScene = static_cast< sdr::contact::ViewContactOfE3dScene& >(rCandidate.mr3DObj.GetScene()->GetViewContact());
+ const sdr::contact::ViewContactOfE3dScene& rVCScene = static_cast< sdr::contact::ViewContactOfE3dScene& >(rCandidate.mp3DObj->GetScene()->GetViewContact());
const drawinglayer::geometry::ViewInformation3D& aViewInfo3D(rVCScene.getViewInformation3D());
basegfx::B3DHomMatrix aInverseOrientation(aViewInfo3D.getOrientation());
aInverseOrientation.invert();
@@ -406,8 +405,8 @@ void E3dDragRotate::MoveSdrDrag(const Point& rPnt)
if(mbMoveFull)
{
- E3DModifySceneSnapRectUpdater aUpdater(&rCandidate.mr3DObj);
- rCandidate.mr3DObj.SetTransform(rCandidate.maTransform);
+ E3DModifySceneSnapRectUpdater aUpdater(rCandidate.mp3DObj);
+ rCandidate.mp3DObj->SetTransform(rCandidate.maTransform);
}
else
{
@@ -505,7 +504,7 @@ void E3dDragMove::MoveSdrDrag(const Point& rPnt)
for(sal_uInt32 nOb(0); nOb < nCnt; nOb++)
{
E3dDragMethodUnit& rCandidate = maGrp[nOb];
- const sdr::contact::ViewContactOfE3dScene& rVCScene = static_cast< sdr::contact::ViewContactOfE3dScene& >(rCandidate.mr3DObj.GetScene()->GetViewContact());
+ const sdr::contact::ViewContactOfE3dScene& rVCScene = static_cast< sdr::contact::ViewContactOfE3dScene& >(rCandidate.mp3DObj->GetScene()->GetViewContact());
const drawinglayer::geometry::ViewInformation3D& aViewInfo3D(rVCScene.getViewInformation3D());
// move coor from 2d world to 3d Eye
@@ -555,8 +554,8 @@ void E3dDragMove::MoveSdrDrag(const Point& rPnt)
if(mbMoveFull)
{
- E3DModifySceneSnapRectUpdater aUpdater(&rCandidate.mr3DObj);
- rCandidate.mr3DObj.SetTransform(rCandidate.maTransform);
+ E3DModifySceneSnapRectUpdater aUpdater(rCandidate.mp3DObj);
+ rCandidate.mp3DObj->SetTransform(rCandidate.maTransform);
}
else
{
@@ -576,10 +575,10 @@ void E3dDragMove::MoveSdrDrag(const Point& rPnt)
for(sal_uInt32 nOb(0); nOb < nCnt; nOb++)
{
E3dDragMethodUnit& rCandidate = maGrp[nOb];
- const basegfx::B3DPoint aObjectCenter(rCandidate.mr3DObj.GetBoundVolume().getCenter());
+ const basegfx::B3DPoint aObjectCenter(rCandidate.mp3DObj->GetBoundVolume().getCenter());
// transform from 2D world view to 3D eye
- const sdr::contact::ViewContactOfE3dScene& rVCScene = static_cast< sdr::contact::ViewContactOfE3dScene& >(rCandidate.mr3DObj.GetScene()->GetViewContact());
+ const sdr::contact::ViewContactOfE3dScene& rVCScene = static_cast< sdr::contact::ViewContactOfE3dScene& >(rCandidate.mp3DObj->GetScene()->GetViewContact());
const drawinglayer::geometry::ViewInformation3D& aViewInfo3D(rVCScene.getViewInformation3D());
basegfx::B2DPoint aGlobalScaleStart2D(static_cast<double>(aStartPos.X()), static_cast<double>(aStartPos.Y()));
@@ -674,14 +673,14 @@ void E3dDragMove::MoveSdrDrag(const Point& rPnt)
if(mbMoveFull)
{
- E3DModifySceneSnapRectUpdater aUpdater(&rCandidate.mr3DObj);
- rCandidate.mr3DObj.SetTransform(rCandidate.maTransform);
+ E3DModifySceneSnapRectUpdater aUpdater(rCandidate.mp3DObj);
+ rCandidate.mp3DObj->SetTransform(rCandidate.maTransform);
}
else
{
Hide();
rCandidate.maWireframePoly.clear();
- rCandidate.maWireframePoly = rCandidate.mr3DObj.CreateWireframe();
+ rCandidate.maWireframePoly = rCandidate.mp3DObj->CreateWireframe();
rCandidate.maWireframePoly.transform(rCandidate.maTransform);
Show();
}
diff --git a/svx/source/engine3d/e3dsceneupdater.cxx b/svx/source/engine3d/e3dsceneupdater.cxx
index 28c472727e17..bc696daebafb 100644
--- a/svx/source/engine3d/e3dsceneupdater.cxx
+++ b/svx/source/engine3d/e3dsceneupdater.cxx
@@ -29,27 +29,30 @@ E3DModifySceneSnapRectUpdater::E3DModifySceneSnapRectUpdater(const SdrObject* pO
mpViewInformation3D(nullptr)
{
// Secure old 3D transformation stack before modification
- if(const E3dObject* pE3dObject = dynamic_cast< const E3dObject* >(pObject))
+ if(pObject)
{
- mpScene = pE3dObject->GetScene();
+ const E3dObject* pE3dObject = dynamic_cast< const E3dObject* >(pObject);
- if(mpScene && mpScene->GetScene() == mpScene)
+ if(pE3dObject)
{
- // if there is a scene and it's the outmost scene, get current 3D range
- const sdr::contact::ViewContactOfE3dScene& rVCScene = static_cast< sdr::contact::ViewContactOfE3dScene& >(mpScene->GetViewContact());
- const basegfx::B3DRange aAllContentRange(rVCScene.getAllContentRange3D());
+ mpScene = pE3dObject->GetScene();
- if(aAllContentRange.isEmpty())
+ if(mpScene && mpScene->GetScene() == mpScene)
{
- // no content, nothing to do
- mpScene = nullptr;
- }
- else
- {
- // secure current 3D transformation stack
- mpViewInformation3D.reset(
- new drawinglayer::geometry::ViewInformation3D(
- rVCScene.getViewInformation3D(aAllContentRange)));
+ // if there is a scene and it's the outmost scene, get current 3D range
+ const sdr::contact::ViewContactOfE3dScene& rVCScene = static_cast< sdr::contact::ViewContactOfE3dScene& >(mpScene->GetViewContact());
+ const basegfx::B3DRange aAllContentRange(rVCScene.getAllContentRange3D());
+
+ if(aAllContentRange.isEmpty())
+ {
+ // no content, nothing to do
+ mpScene = nullptr;
+ }
+ else
+ {
+ // secure current 3D transformation stack
+ mpViewInformation3D.reset( new drawinglayer::geometry::ViewInformation3D(rVCScene.getViewInformation3D(aAllContentRange)) );
+ }
}
}
}
diff --git a/svx/source/engine3d/e3dundo.cxx b/svx/source/engine3d/e3dundo.cxx
index 47268fcda660..e194dd661ef1 100644
--- a/svx/source/engine3d/e3dundo.cxx
+++ b/svx/source/engine3d/e3dundo.cxx
@@ -38,32 +38,36 @@ bool E3dUndoAction::CanRepeat(SfxRepeatTarget&) const
// Undo destructor for 3D-Rotation
-E3dRotateUndoAction::~E3dRotateUndoAction()
+
+E3dRotateUndoAction::~E3dRotateUndoAction ()
{
}
// Undo for 3D-Rotation on the Rotation matrix
-void E3dRotateUndoAction::Undo()
+
+void E3dRotateUndoAction::Undo ()
{
- E3DModifySceneSnapRectUpdater aUpdater(&mrMy3DObj);
- mrMy3DObj.SetTransform(maMyOldRotation);
+ E3DModifySceneSnapRectUpdater aUpdater(pMy3DObj);
+ pMy3DObj->SetTransform(aMyOldRotation);
}
// Redo for 3D-Rotation on the Rotation matrix
-void E3dRotateUndoAction::Redo()
+
+void E3dRotateUndoAction::Redo ()
{
- E3DModifySceneSnapRectUpdater aUpdater(&mrMy3DObj);
- mrMy3DObj.SetTransform(maMyNewRotation);
+ E3DModifySceneSnapRectUpdater aUpdater(pMy3DObj);
+ pMy3DObj->SetTransform(aMyNewRotation);
}
-E3dAttributesUndoAction::E3dAttributesUndoAction(
- E3dObject& rInObject,
- const SfxItemSet& rNewSet,
- const SfxItemSet& rOldSet)
-: SdrUndoAction(rInObject.getSdrModelFromSdrObject())
- ,mrObject(rInObject)
- ,maNewSet(rNewSet)
- ,maOldSet(rOldSet)
+
+E3dAttributesUndoAction::E3dAttributesUndoAction( SdrModel &rModel,
+ E3dObject* pInObject,
+ const SfxItemSet& rNewSet,
+ const SfxItemSet& rOldSet)
+ : SdrUndoAction( rModel )
+ , pObject ( pInObject )
+ , aNewSet ( rNewSet )
+ , aOldSet ( rOldSet )
{
}
@@ -76,17 +80,18 @@ E3dAttributesUndoAction::~E3dAttributesUndoAction()
void E3dAttributesUndoAction::Undo()
{
- E3DModifySceneSnapRectUpdater aUpdater(&mrObject);
- mrObject.SetMergedItemSetAndBroadcast(maOldSet);
+ E3DModifySceneSnapRectUpdater aUpdater(pObject);
+ pObject->SetMergedItemSetAndBroadcast(aOldSet);
}
void E3dAttributesUndoAction::Redo()
{
- E3DModifySceneSnapRectUpdater aUpdater(&mrObject);
- mrObject.SetMergedItemSetAndBroadcast(maNewSet);
+ E3DModifySceneSnapRectUpdater aUpdater(pObject);
+ pObject->SetMergedItemSetAndBroadcast(aNewSet);
}
// Multiple Undo is not possible
+
bool E3dAttributesUndoAction::CanRepeat(SfxRepeatTarget& /*rView*/) const
{
return false;
diff --git a/svx/source/engine3d/extrud3d.cxx b/svx/source/engine3d/extrud3d.cxx
index 0a929970e50e..3b3bb93956c3 100644
--- a/svx/source/engine3d/extrud3d.cxx
+++ b/svx/source/engine3d/extrud3d.cxx
@@ -39,24 +39,24 @@
// DrawContact section
+
sdr::contact::ViewContact* E3dExtrudeObj::CreateObjectSpecificViewContact()
{
return new sdr::contact::ViewContactOfE3dExtrude(*this);
}
+
sdr::properties::BaseProperties* E3dExtrudeObj::CreateObjectSpecificProperties()
{
return new sdr::properties::E3dExtrudeProperties(*this);
}
+
// Constructor creates a two cover surface tools::PolyPolygon and (point-count 1) side
// surfaces rectangles from the passed PolyPolygon
-E3dExtrudeObj::E3dExtrudeObj(
- SdrModel& rSdrModel,
- const E3dDefaultAttributes& rDefault,
- const basegfx::B2DPolyPolygon& rPP,
- double fDepth)
-: E3dCompoundObject(rSdrModel),
+
+E3dExtrudeObj::E3dExtrudeObj(E3dDefaultAttributes const & rDefault, const basegfx::B2DPolyPolygon& rPP, double fDepth)
+: E3dCompoundObject(),
maExtrudePolygon(rPP)
{
// since the old class PolyPolygon3D did mirror the given PolyPolygons in Y, do the same here
@@ -71,16 +71,15 @@ E3dExtrudeObj::E3dExtrudeObj(
GetProperties().SetObjectItemDirect(makeSvx3DDepthItem(static_cast<sal_uInt32>(fDepth + 0.5)));
}
-E3dExtrudeObj::E3dExtrudeObj(SdrModel& rSdrModel)
-: E3dCompoundObject(rSdrModel)
+E3dExtrudeObj::E3dExtrudeObj()
+: E3dCompoundObject()
{
// Set Defaults
- const E3dDefaultAttributes aDefault;
-
+ E3dDefaultAttributes aDefault;
SetDefaultAttributes(aDefault);
}
-void E3dExtrudeObj::SetDefaultAttributes(const E3dDefaultAttributes& rDefault)
+void E3dExtrudeObj::SetDefaultAttributes(E3dDefaultAttributes const & rDefault)
{
GetProperties().SetObjectItemDirect(Svx3DSmoothNormalsItem(rDefault.GetDefaultExtrudeSmoothed()));
GetProperties().SetObjectItemDirect(Svx3DSmoothLidsItem(rDefault.GetDefaultExtrudeSmoothFrontBack()));
@@ -98,21 +97,11 @@ sal_uInt16 E3dExtrudeObj::GetObjIdentifier() const
return E3D_EXTRUDEOBJ_ID;
}
-E3dExtrudeObj* E3dExtrudeObj::Clone(SdrModel* pTargetModel) const
+E3dExtrudeObj* E3dExtrudeObj::Clone() const
{
- return CloneHelper< E3dExtrudeObj >(pTargetModel);
+ return CloneHelper< E3dExtrudeObj >();
}
-E3dExtrudeObj& E3dExtrudeObj::operator=(const E3dExtrudeObj& rObj)
-{
- if( this == &rObj )
- return *this;
- E3dCompoundObject::operator=(rObj);
-
- maExtrudePolygon = rObj.maExtrudePolygon;
-
- return *this;
-}
// Set local parameters with geometry re-creating
@@ -205,7 +194,7 @@ SdrAttrObj* E3dExtrudeObj::GetBreakObj()
{
// create PathObj
basegfx::B2DPolyPolygon aPoly = TransformToScreenCoor(aBackSide);
- SdrPathObj* pPathObj = new SdrPathObj(getSdrModelFromSdrObject(), OBJ_PLIN, aPoly);
+ SdrPathObj* pPathObj = new SdrPathObj(OBJ_PLIN, aPoly);
SfxItemSet aSet(GetObjectItemSet());
aSet.Put(XLineStyleItem(css::drawing::LineStyle_SOLID));
diff --git a/svx/source/engine3d/lathe3d.cxx b/svx/source/engine3d/lathe3d.cxx
index 74097eb29f63..99268c6d5ff8 100644
--- a/svx/source/engine3d/lathe3d.cxx
+++ b/svx/source/engine3d/lathe3d.cxx
@@ -37,22 +37,23 @@
// DrawContact section
+
sdr::contact::ViewContact* E3dLatheObj::CreateObjectSpecificViewContact()
{
return new sdr::contact::ViewContactOfE3dLathe(*this);
}
+
sdr::properties::BaseProperties* E3dLatheObj::CreateObjectSpecificProperties()
{
return new sdr::properties::E3dLatheProperties(*this);
}
+
// Constructor from 3D polygon, scale is the conversion factor for the coordinates
-E3dLatheObj::E3dLatheObj(
- SdrModel& rSdrModel,
- const E3dDefaultAttributes& rDefault,
- const basegfx::B2DPolyPolygon& rPoly2D)
-: E3dCompoundObject(rSdrModel),
+
+E3dLatheObj::E3dLatheObj(E3dDefaultAttributes const & rDefault, const basegfx::B2DPolyPolygon& rPoly2D)
+: E3dCompoundObject(),
maPolyPoly2D(rPoly2D)
{
// since the old class PolyPolygon3D did mirror the given PolyPolygons in Y, do the same here
@@ -81,16 +82,15 @@ E3dLatheObj::E3dLatheObj(
}
}
-E3dLatheObj::E3dLatheObj(SdrModel& rSdrModel)
-: E3dCompoundObject(rSdrModel)
+E3dLatheObj::E3dLatheObj()
+: E3dCompoundObject()
{
// Set Defaults
- const E3dDefaultAttributes aDefault;
-
+ E3dDefaultAttributes aDefault;
SetDefaultAttributes(aDefault);
}
-void E3dLatheObj::SetDefaultAttributes(const E3dDefaultAttributes& rDefault)
+void E3dLatheObj::SetDefaultAttributes(E3dDefaultAttributes const & rDefault)
{
GetProperties().SetObjectItemDirect(Svx3DSmoothNormalsItem(rDefault.GetDefaultLatheSmoothed()));
GetProperties().SetObjectItemDirect(Svx3DSmoothLidsItem(rDefault.GetDefaultLatheSmoothFrontBack()));
@@ -104,20 +104,9 @@ sal_uInt16 E3dLatheObj::GetObjIdentifier() const
return E3D_LATHEOBJ_ID;
}
-E3dLatheObj* E3dLatheObj::Clone(SdrModel* pTargetModel) const
+E3dLatheObj* E3dLatheObj::Clone() const
{
- return CloneHelper< E3dLatheObj >(pTargetModel);
-}
-
-E3dLatheObj& E3dLatheObj::operator=(const E3dLatheObj& rObj)
-{
- if( this == &rObj )
- return *this;
- E3dCompoundObject::operator=(rObj);
-
- maPolyPoly2D = rObj.maPolyPoly2D;
-
- return *this;
+ return CloneHelper< E3dLatheObj >();
}
// Convert the object to group object consisting of n polygons
@@ -187,7 +176,7 @@ SdrAttrObj* E3dLatheObj::GetBreakObj()
// create PathObj
basegfx::B3DPolyPolygon aLathePoly3D(basegfx::utils::createB3DPolyPolygonFromB2DPolyPolygon(maPolyPoly2D));
basegfx::B2DPolyPolygon aTransPoly(TransformToScreenCoor(aLathePoly3D));
- SdrPathObj* pPathObj = new SdrPathObj(getSdrModelFromSdrObject(), OBJ_PLIN, aTransPoly);
+ SdrPathObj* pPathObj = new SdrPathObj(OBJ_PLIN, aTransPoly);
// Set Attribute
SfxItemSet aSet(GetObjectItemSet());
diff --git a/svx/source/engine3d/obj3d.cxx b/svx/source/engine3d/obj3d.cxx
index 959ecf1f0c49..73a0675efdb4 100644
--- a/svx/source/engine3d/obj3d.cxx
+++ b/svx/source/engine3d/obj3d.cxx
@@ -81,16 +81,16 @@ using namespace com::sun::star;
// List for 3D-Objects
+
+
E3dObjList::E3dObjList()
-: SdrObjList(nullptr)
+: SdrObjList(nullptr, nullptr)
{
}
-E3dObjList* E3dObjList::CloneSdrObjList(SdrModel* pNewModel) const
+E3dObjList::E3dObjList(const E3dObjList&)
+: SdrObjList()
{
- E3dObjList* pObjList = new E3dObjList();
- pObjList->lateInitSdrObjList(*this, pNewModel);
- return pObjList;
}
E3dObjList::~E3dObjList()
@@ -169,9 +169,8 @@ sdr::properties::BaseProperties* E3dObject::CreateObjectSpecificProperties()
}
-E3dObject::E3dObject(SdrModel& rSdrModel)
-: SdrAttrObj(rSdrModel),
- maSubList(),
+E3dObject::E3dObject()
+: maSubList(),
maLocalBoundVol(),
maTransformation(),
maFullTransform(),
@@ -304,7 +303,14 @@ void E3dObject::SetPage(SdrPage* pNewPage)
maSubList.SetPage(pNewPage);
}
+void E3dObject::SetModel(SdrModel* pNewModel)
+{
+ SdrAttrObj::SetModel(pNewModel);
+ maSubList.SetModel(pNewModel);
+}
+
// resize object, used from old 2d interfaces, e.g. in Move/Scale dialog (F4)
+
void E3dObject::NbcResize(const Point& rRef, const Fraction& xFact, const Fraction& yFact)
{
// Movement in X, Y in the eye coordinate system
@@ -650,9 +656,9 @@ OUString E3dObject::TakeObjNamePlural() const
return ImpGetResStr(STR_ObjNamePluralObj3d);
}
-E3dObject* E3dObject::Clone(SdrModel* pTargetModel) const
+E3dObject* E3dObject::Clone() const
{
- return CloneHelper< E3dObject >(pTargetModel);
+ return CloneHelper< E3dObject >();
}
E3dObject& E3dObject::operator=(const E3dObject& rObj)
@@ -730,8 +736,9 @@ sdr::properties::BaseProperties* E3dCompoundObject::CreateObjectSpecificProperti
return new sdr::properties::E3dCompoundProperties(*this);
}
-E3dCompoundObject::E3dCompoundObject(SdrModel& rSdrModel)
-: E3dObject(rSdrModel),
+
+E3dCompoundObject::E3dCompoundObject()
+: E3dObject(),
aMaterialAmbientColor()
{
// Set defaults
@@ -874,20 +881,9 @@ void E3dCompoundObject::RecalcSnapRect()
}
}
-E3dCompoundObject* E3dCompoundObject::Clone(SdrModel* pTargetModel) const
+E3dCompoundObject* E3dCompoundObject::Clone() const
{
- return CloneHelper< E3dCompoundObject >(pTargetModel);
-}
-
-E3dCompoundObject& E3dCompoundObject::operator=(const E3dCompoundObject& rObj)
-{
- if( this == &rObj )
- return *this;
- E3dObject::operator=(rObj);
-
- aMaterialAmbientColor = rObj.aMaterialAmbientColor;
-
- return *this;
+ return CloneHelper< E3dCompoundObject >();
}
// convert given basegfx::B3DPolyPolygon to screen coor
diff --git a/svx/source/engine3d/objfac3d.cxx b/svx/source/engine3d/objfac3d.cxx
index 58e1479e413b..b704cf2b848d 100644
--- a/svx/source/engine3d/objfac3d.cxx
+++ b/svx/source/engine3d/objfac3d.cxx
@@ -52,19 +52,24 @@ IMPL_STATIC_LINK( E3dObjFactory, MakeObject, SdrObjCreatorParams, aParams, SdrOb
switch ( aParams.nObjIdentifier )
{
case E3D_SCENE_ID:
- return new E3dScene(aParams.rSdrModel);
+ return new E3dScene();
case E3D_POLYGONOBJ_ID :
- return new E3dPolygonObj(aParams.rSdrModel);
+ return new E3dPolygonObj();
case E3D_CUBEOBJ_ID :
- return new E3dCubeObj(aParams.rSdrModel);
+ return new E3dCubeObj();
case E3D_SPHEREOBJ_ID:
- return new E3dSphereObj(aParams.rSdrModel);
+ // Gets the dummy constructor, as this is only called when
+ // loading documents. The actual number of segments is however
+ // determined only after loading the members. This will result
+ // in that the first sphere will be immediately destroyed,
+ // although it was never used.
+ return new E3dSphereObj(E3dSphereObj::DUMMY);
case E3D_EXTRUDEOBJ_ID:
- return new E3dExtrudeObj(aParams.rSdrModel);
+ return new E3dExtrudeObj();
case E3D_LATHEOBJ_ID:
- return new E3dLatheObj(aParams.rSdrModel);
+ return new E3dLatheObj();
case E3D_COMPOUNDOBJ_ID:
- return new E3dCompoundObject(aParams.rSdrModel);
+ return new E3dCompoundObject();
}
}
return nullptr;
diff --git a/svx/source/engine3d/polygn3d.cxx b/svx/source/engine3d/polygn3d.cxx
index bcb9ba81b9eb..190c0ca89ee5 100644
--- a/svx/source/engine3d/polygn3d.cxx
+++ b/svx/source/engine3d/polygn3d.cxx
@@ -25,16 +25,17 @@
#include <basegfx/polygon/b3dpolygon.hxx>
#include <basegfx/polygon/b3dpolygontools.hxx>
+
// DrawContact section
+
sdr::contact::ViewContact* E3dPolygonObj::CreateObjectSpecificViewContact()
{
return new sdr::contact::ViewContactOfE3dPolygon(*this);
}
E3dPolygonObj::E3dPolygonObj(
- SdrModel& rSdrModel,
const basegfx::B3DPolyPolygon& rPolyPoly3D)
-: E3dCompoundObject(rSdrModel),
+: E3dCompoundObject(),
bLineOnly(true)
{
// Set geometry
@@ -47,9 +48,9 @@ E3dPolygonObj::E3dPolygonObj(
CreateDefaultTexture();
}
-E3dPolygonObj::E3dPolygonObj(SdrModel& rSdrModel)
-: E3dCompoundObject(rSdrModel),
- bLineOnly(false)
+E3dPolygonObj::E3dPolygonObj()
+: E3dCompoundObject(),
+ bLineOnly(false) // added missing initialisation
{
// Create no geometry
}
@@ -218,23 +219,9 @@ SdrObject *E3dPolygonObj::DoConvertToPolyObj(bool /*bBezier*/, bool /*bAddText*/
return nullptr;
}
-E3dPolygonObj* E3dPolygonObj::Clone(SdrModel* pTargetModel) const
+E3dPolygonObj* E3dPolygonObj::Clone() const
{
- return CloneHelper< E3dPolygonObj >(pTargetModel);
-}
-
-E3dPolygonObj& E3dPolygonObj::operator=(const E3dPolygonObj& rObj)
-{
- if( this == &rObj )
- return *this;
- E3dCompoundObject::operator=(rObj);
-
- aPolyPoly3D = rObj.aPolyPoly3D;
- aPolyNormals3D = rObj.aPolyNormals3D;
- aPolyTexture2D = rObj.aPolyTexture2D;
- bLineOnly = rObj.bLineOnly;
-
- return *this;
+ return CloneHelper< E3dPolygonObj >();
}
void E3dPolygonObj::SetLineOnly(bool bNew)
diff --git a/svx/source/engine3d/scene3d.cxx b/svx/source/engine3d/scene3d.cxx
index 38961d3ccfa8..444331de3472 100644
--- a/svx/source/engine3d/scene3d.cxx
+++ b/svx/source/engine3d/scene3d.cxx
@@ -170,8 +170,8 @@ sdr::contact::ViewContact* E3dScene::CreateObjectSpecificViewContact()
}
-E3dScene::E3dScene(SdrModel& rSdrModel)
-: E3dObject(rSdrModel),
+E3dScene::E3dScene()
+: E3dObject(),
aCamera(basegfx::B3DPoint(0.0, 0.0, 4.0), basegfx::B3DPoint()),
mp3DDepthRemapper(nullptr),
bDrawOnlySelected(false),
@@ -411,9 +411,24 @@ void E3dScene::removeAllNonSelectedObjects()
}
}
-E3dScene* E3dScene::Clone(SdrModel* pTargetModel) const
+E3dScene* E3dScene::Clone() const
{
- return CloneHelper< E3dScene >(pTargetModel);
+ return CloneHelper< E3dScene >();
+}
+
+void E3dScene::SuspendReportingDirtyRects()
+{
+ GetScene()->mbSkipSettingDirty = true;
+}
+
+void E3dScene::ResumeReportingDirtyRects()
+{
+ GetScene()->mbSkipSettingDirty = false;
+}
+
+void E3dScene::SetAllSceneRectsDirty()
+{
+ GetScene()->SetRectsDirty();
}
E3dScene& E3dScene::operator=(const E3dScene& rObj)
@@ -448,21 +463,6 @@ E3dScene& E3dScene::operator=(const E3dScene& rObj)
return *this;
}
-void E3dScene::SuspendReportingDirtyRects()
-{
- GetScene()->mbSkipSettingDirty = true;
-}
-
-void E3dScene::ResumeReportingDirtyRects()
-{
- GetScene()->mbSkipSettingDirty = false;
-}
-
-void E3dScene::SetAllSceneRectsDirty()
-{
- GetScene()->SetRectsDirty();
-}
-
// Rebuild Light- and label- object lists rebuild (after loading, allocation)
void E3dScene::RebuildLists()
diff --git a/svx/source/engine3d/sphere3d.cxx b/svx/source/engine3d/sphere3d.cxx
index 75670c2e28d7..ecac05170094 100644
--- a/svx/source/engine3d/sphere3d.cxx
+++ b/svx/source/engine3d/sphere3d.cxx
@@ -33,24 +33,25 @@
#include <sdr/contact/viewcontactofe3dsphere.hxx>
#include <basegfx/polygon/b3dpolygon.hxx>
+
// DrawContact section
+
sdr::contact::ViewContact* E3dSphereObj::CreateObjectSpecificViewContact()
{
return new sdr::contact::ViewContactOfE3dSphere(*this);
}
+
sdr::properties::BaseProperties* E3dSphereObj::CreateObjectSpecificProperties()
{
return new sdr::properties::E3dSphereProperties(*this);
}
+
// Build Sphere from polygon facets in latitude and longitude
-E3dSphereObj::E3dSphereObj(
- SdrModel& rSdrModel,
- const E3dDefaultAttributes& rDefault,
- const basegfx::B3DPoint& rCenter,
- const basegfx::B3DVector& r3DSize)
-: E3dCompoundObject(rSdrModel)
+
+E3dSphereObj::E3dSphereObj(E3dDefaultAttributes& rDefault, const basegfx::B3DPoint& rCenter, const basegfx::B3DVector& r3DSize)
+: E3dCompoundObject()
{
// Set defaults
SetDefaultAttributes(rDefault);
@@ -59,16 +60,23 @@ E3dSphereObj::E3dSphereObj(
aSize = r3DSize;
}
-E3dSphereObj::E3dSphereObj(SdrModel& rSdrModel)
-: E3dCompoundObject(rSdrModel)
+// Create Sphere without creating the Polygons within
+
+// This call is from the 3D Object Factory (objfac3d.cxx) and only when loading
+// of documents. Here you do not need CreateSphere call, since the real number
+// of segments is not even known yet. This was until 10.02.1997 a (small)
+// memory leak.
+
+E3dSphereObj::E3dSphereObj(Dummy /*dummy*/)
+// the parameters it needs to be able to distinguish which
+// constructors of the two is meant. The above is the default.
{
// Set defaults
- const E3dDefaultAttributes aDefault;
-
+ E3dDefaultAttributes aDefault;
SetDefaultAttributes(aDefault);
}
-void E3dSphereObj::SetDefaultAttributes(const E3dDefaultAttributes& rDefault)
+void E3dSphereObj::SetDefaultAttributes(E3dDefaultAttributes& rDefault)
{
// Set defaults
aCenter = rDefault.GetDefaultSphereCenter();
@@ -87,21 +95,9 @@ SdrObject *E3dSphereObj::DoConvertToPolyObj(bool /*bBezier*/, bool /*bAddText*/)
return nullptr;
}
-E3dSphereObj* E3dSphereObj::Clone(SdrModel* pTargetModel) const
-{
- return CloneHelper< E3dSphereObj >(pTargetModel);
-}
-
-E3dSphereObj& E3dSphereObj::operator=(const E3dSphereObj& rObj)
+E3dSphereObj* E3dSphereObj::Clone() const
{
- if( this == &rObj )
- return *this;
- E3dCompoundObject::operator=(rObj);
-
- aCenter = rObj.aCenter;
- aSize = rObj.aSize;
-
- return *this;
+ return CloneHelper< E3dSphereObj >();
}
// Set local parameters with geometry re-creating
diff --git a/svx/source/engine3d/view3d.cxx b/svx/source/engine3d/view3d.cxx
index 31d6c36bb44c..33d051f23309 100644
--- a/svx/source/engine3d/view3d.cxx
+++ b/svx/source/engine3d/view3d.cxx
@@ -224,12 +224,10 @@ void Impl3DMirrorConstructOverlay::SetMirrorAxis(Point aMirrorAxisA, Point aMirr
}
}
-E3dView::E3dView(
- SdrModel& rSdrModel,
- OutputDevice* pOut)
-: SdrView(rSdrModel, pOut)
+E3dView::E3dView(SdrModel* pModel, OutputDevice* pOut) :
+ SdrView(pModel, pOut)
{
- InitView();
+ InitView ();
}
// DrawMarkedObj override, since possibly only a single 3D object is to be
@@ -581,6 +579,7 @@ bool E3dView::ImpCloneAll3DObjectsToDestScene(E3dScene const * pSrcScene, E3dSce
pNewCompoundObj->SetTransform(aModifyingTransform * aNewObjectTrans);
// fill and insert new object
+ pNewCompoundObj->SetModel(pDstScene->GetModel());
pNewCompoundObj->SetPage(pDstScene->GetPage());
pNewCompoundObj->NbcSetLayer(pCompoundObj->GetLayer());
pNewCompoundObj->NbcSetStyleSheet(pCompoundObj->GetStyleSheet(), true);
@@ -701,15 +700,10 @@ void E3dView::ImpCreateSingle3DObjectFlat(E3dScene* pScene, SdrObject* pObj, boo
if(pPath)
{
E3dDefaultAttributes aDefault = Get3DDefaultAttributes();
-
if(bExtrude)
- {
aDefault.SetDefaultExtrudeCharacterMode(true);
- }
else
- {
aDefault.SetDefaultLatheCharacterMode(true);
- }
// Get Itemset of the original object
SfxItemSet aSet(pObj->GetMergedItemSet());
@@ -742,13 +736,13 @@ void E3dView::ImpCreateSingle3DObjectFlat(E3dScene* pScene, SdrObject* pObj, boo
E3dObject* p3DObj = nullptr;
if(bExtrude)
{
- p3DObj = new E3dExtrudeObj(pObj->getSdrModelFromSdrObject(), aDefault, pPath->GetPathPoly(), fDepth);
+ p3DObj = new E3dExtrudeObj(aDefault, pPath->GetPathPoly(), fDepth);
}
else
{
basegfx::B2DPolyPolygon aPolyPoly2D(pPath->GetPathPoly());
aPolyPoly2D.transform(rLatheMat);
- p3DObj = new E3dLatheObj(pObj->getSdrModelFromSdrObject(), aDefault, aPolyPoly2D);
+ p3DObj = new E3dLatheObj(aDefault, aPolyPoly2D);
}
// Set attribute
@@ -842,10 +836,8 @@ void E3dView::ConvertMarkedObjTo3D(bool bExtrude, const basegfx::B2DPoint& rPnt1
else
BegUndo(SvxResId(RID_SVX_3D_UNDO_LATHE));
- SdrModel& rSdrModel(GetSdrMarkByIndex(0)->GetMarkedSdrObj()->getSdrModelFromSdrObject());
-
// Create a new scene for the created 3D object
- E3dScene* pScene = new E3dScene(rSdrModel);
+ E3dScene* pScene = new E3dScene;
// Determine rectangle and possibly correct it
tools::Rectangle aRect = GetAllMarkedRect();
@@ -1270,6 +1262,7 @@ bool E3dView::BegDragObj(const Point& rPnt, OutputDevice* pOut,
}
// Set current 3D drawing object, create the scene for this
+
E3dScene* E3dView::SetCurrent3DObj(E3dObject* p3DObj)
{
DBG_ASSERT(p3DObj != nullptr, "Who puts in a NULL-pointer here");
@@ -1282,7 +1275,7 @@ E3dScene* E3dView::SetCurrent3DObj(E3dObject* p3DObj)
tools::Rectangle aRect(0,0, static_cast<long>(fW), static_cast<long>(fH));
- E3dScene* pScene = new E3dScene(p3DObj->getSdrModelFromSdrObject());
+ E3dScene* pScene = new E3dScene;
InitScene(pScene, fW, fH, aVolume.getMaxZ() + ((fW + fH) / 4.0));
diff --git a/svx/source/form/fmdmod.cxx b/svx/source/form/fmdmod.cxx
index ac197b2ff419..d487399fedf9 100644
--- a/svx/source/form/fmdmod.cxx
+++ b/svx/source/form/fmdmod.cxx
@@ -31,7 +31,6 @@ using namespace ::svxform;
::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface > SAL_CALL SvxFmMSFactory::createInstance(const OUString& rServiceSpecifier)
{
::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface > xRet;
-
if ( rServiceSpecifier.startsWith( "com.sun.star.form.component." ) )
{
css::uno::Reference<css::uno::XComponentContext> xContext = comphelper::getProcessComponentContext();
@@ -39,17 +38,11 @@ using namespace ::svxform;
}
else if ( rServiceSpecifier == "com.sun.star.drawing.ControlShape" )
{
- SdrModel* pTargetModel = getSdrModelFromUnoModel();
- OSL_ENSURE(pTargetModel, "Got no SdrModel for SdrShape construction (!)");
- SdrObject* pObj = new FmFormObj(*pTargetModel);
+ SdrObject* pObj = new FmFormObj();
xRet = static_cast<cppu::OWeakObject*>(static_cast<SvxShape_UnoImplHelper*>(new SvxShapeControl(pObj)));
}
-
if (!xRet.is())
- {
xRet = SvxUnoDrawMSFactory::createInstance(rServiceSpecifier);
- }
-
return xRet;
}
diff --git a/svx/source/form/fmdpage.cxx b/svx/source/form/fmdpage.cxx
index 45ac667c50eb..1e81e8fe08e8 100644
--- a/svx/source/form/fmdpage.cxx
+++ b/svx/source/form/fmdpage.cxx
@@ -73,13 +73,10 @@ SdrObject *SvxFmDrawPage::CreateSdrObject_( const css::uno::Reference< css::draw
if ( aShapeType == "com.sun.star.drawing.ShapeControl" // compatibility
|| aShapeType == "com.sun.star.drawing.ControlShape"
)
- {
- return new FmFormObj(GetSdrPage()->getSdrModelFromSdrPage());
- }
+ return new FmFormObj();
else
- {
return SvxDrawPage::CreateSdrObject_( xDescr );
- }
+
}
css::uno::Reference< css::drawing::XShape > SvxFmDrawPage::CreateShape( SdrObject *pObj ) const
diff --git a/svx/source/form/fmobj.cxx b/svx/source/form/fmobj.cxx
index 44431b8018da..5863ec9f38f6 100644
--- a/svx/source/form/fmobj.cxx
+++ b/svx/source/form/fmobj.cxx
@@ -55,27 +55,26 @@ using namespace ::com::sun::star::container;
using namespace ::svxform;
-FmFormObj::FmFormObj(
- SdrModel& rSdrModel,
- const OUString& rModelName)
-: SdrUnoObj(rSdrModel, rModelName)
- ,m_nPos(-1)
- ,m_pLastKnownRefDevice(nullptr)
+FmFormObj::FmFormObj(const OUString& rModelName)
+ :SdrUnoObj ( rModelName )
+ ,m_nPos ( -1 )
+ ,m_pLastKnownRefDevice ( nullptr )
{
+
// normally, this is done in SetUnoControlModel, but if the call happened in the base class ctor,
// then our incarnation of it was not called (since we were not constructed at this time).
impl_checkRefDevice_nothrow( true );
}
-FmFormObj::FmFormObj(SdrModel& rSdrModel)
-: SdrUnoObj(rSdrModel, "")
- ,m_nPos(-1)
- ,m_pLastKnownRefDevice(nullptr)
+
+FmFormObj::FmFormObj()
+ :SdrUnoObj ( "" )
+ ,m_nPos ( -1 )
+ ,m_pLastKnownRefDevice ( nullptr )
{
- // Stuff that old SetModel also did:
- impl_checkRefDevice_nothrow();
}
+
FmFormObj::~FmFormObj()
{
@@ -106,7 +105,7 @@ void FmFormObj::ClearObjEnv()
void FmFormObj::impl_checkRefDevice_nothrow( bool _force )
{
- const FmFormModel* pFormModel = dynamic_cast<FmFormModel*>(&getSdrModelFromSdrObject());
+ const FmFormModel* pFormModel = dynamic_cast<FmFormModel*>( GetModel() );
if ( !pFormModel || !pFormModel->ControlsUseRefDevice() )
return;
@@ -358,9 +357,9 @@ void FmFormObj::clonedFrom(const FmFormObj* _pSource)
}
-FmFormObj* FmFormObj::Clone(SdrModel* pTargetModel) const
+FmFormObj* FmFormObj::Clone() const
{
- FmFormObj* pFormObject = CloneHelper< FmFormObj >(pTargetModel);
+ FmFormObj* pFormObject = CloneHelper< FmFormObj >();
DBG_ASSERT(pFormObject != nullptr, "FmFormObj::Clone : invalid clone !");
if (pFormObject)
pFormObject->clonedFrom(this);
@@ -369,6 +368,13 @@ FmFormObj* FmFormObj::Clone(SdrModel* pTargetModel) const
}
+void FmFormObj::NbcReformatText()
+{
+ impl_checkRefDevice_nothrow();
+ SdrUnoObj::NbcReformatText();
+}
+
+
FmFormObj& FmFormObj::operator= (const FmFormObj& rObj)
{
if( this == &rObj )
@@ -395,13 +401,6 @@ FmFormObj& FmFormObj::operator= (const FmFormObj& rObj)
}
-void FmFormObj::NbcReformatText()
-{
- impl_checkRefDevice_nothrow();
- SdrUnoObj::NbcReformatText();
-}
-
-
namespace
{
OUString lcl_getFormComponentAccessPath(const Reference< XInterface >& _xElement, Reference< XInterface >& _rTopLevelElement)
@@ -585,6 +584,14 @@ Reference< XInterface > FmFormObj::ensureModelEnv(const Reference< XInterface >
return Reference<XInterface>( xDestContainer, UNO_QUERY );
}
+
+void FmFormObj::SetModel( SdrModel* _pNewModel )
+{
+ SdrUnoObj::SetModel( _pNewModel );
+ impl_checkRefDevice_nothrow();
+}
+
+
FmFormObj* FmFormObj::GetFormObject( SdrObject* _pSdrObject )
{
FmFormObj* pFormObject = dynamic_cast< FmFormObj* >( _pSdrObject );
diff --git a/svx/source/form/fmobjfac.cxx b/svx/source/form/fmobjfac.cxx
index a640caac7c0c..bfc834e9cd1a 100644
--- a/svx/source/form/fmobjfac.cxx
+++ b/svx/source/form/fmobjfac.cxx
@@ -106,10 +106,10 @@ namespace
}
}
-IMPL_STATIC_LINK(FmFormObjFactory, MakeObject, SdrObjCreatorParams, aParams, SdrObject*)
+IMPL_STATIC_LINK(
+ FmFormObjFactory, MakeObject, SdrObjCreatorParams, aParams, SdrObject*)
{
SdrObject* pNewObj = nullptr;
-
if (aParams.nInventor == SdrInventor::FmForm)
{
OUString sServiceSpecifier;
@@ -213,9 +213,9 @@ IMPL_STATIC_LINK(FmFormObjFactory, MakeObject, SdrObjCreatorParams, aParams, Sdr
// create the actual object
if ( !sServiceSpecifier.isEmpty() )
- pNewObj = new FmFormObj(aParams.rSdrModel, sServiceSpecifier);
+ pNewObj = new FmFormObj(sServiceSpecifier);
else
- pNewObj = new FmFormObj(aParams.rSdrModel);
+ pNewObj = new FmFormObj();
// initialize some properties which we want to differ from the defaults
for ( PropertyValueArray::const_iterator aInitProp = aInitialProperties.begin();
diff --git a/svx/source/form/fmpage.cxx b/svx/source/form/fmpage.cxx
index ca79aba3845f..7f267cbbcf03 100644
--- a/svx/source/form/fmpage.cxx
+++ b/svx/source/form/fmpage.cxx
@@ -49,17 +49,22 @@ using com::sun::star::uno::UNO_QUERY;
FmFormPage::FmFormPage(FmFormModel& rModel, bool bMasterPage)
-: SdrPage(rModel, bMasterPage)
- ,m_pImpl( new FmFormPageImpl( *this ) )
+ :SdrPage(rModel, bMasterPage)
+ ,m_pImpl( new FmFormPageImpl( *this ) )
{
}
-void FmFormPage::lateInit(const FmFormPage& rPage)
+
+FmFormPage::FmFormPage(const FmFormPage& rPage)
+ :SdrPage(rPage)
+ ,m_pImpl(new FmFormPageImpl( *this ) )
+{
+}
+
+void FmFormPage::lateInit(const FmFormPage& rPage, FmFormModel* const pNewModel)
{
- // call parent
- SdrPage::lateInit( rPage );
+ SdrPage::lateInit( rPage, pNewModel );
- // copy local variables (former stuff from copy constructor)
m_pImpl->initFrom( rPage.GetImpl() );
m_sPageName = rPage.m_sPageName;
}
@@ -69,22 +74,65 @@ FmFormPage::~FmFormPage()
{
}
-SdrPage* FmFormPage::Clone(SdrModel* pNewModel) const
+
+void FmFormPage::SetModel(SdrModel* pNewModel)
+{
+ /* #35055# */
+ // we want to call the super's "SetModel" method even if the model is the
+ // same, in case code somewhere in the system depends on it. But our code
+ // doesn't, so get the old model to do a check.
+ SdrModel *pOldModel = GetModel();
+
+ SdrPage::SetModel( pNewModel );
+
+ /* #35055# */
+ if ( ( pOldModel != pNewModel ) && m_pImpl )
+ {
+ try
+ {
+ Reference< css::form::XForms > xForms( m_pImpl->getForms( false ) );
+ if ( xForms.is() )
+ {
+ // we want to keep the current collection, just reset the model
+ // with which it's associated.
+ FmFormModel* pDrawModel = static_cast<FmFormModel*>( GetModel() );
+ SfxObjectShell* pObjShell = pDrawModel->GetObjectShell();
+ if ( pObjShell )
+ xForms->setParent( pObjShell->GetModel() );
+ }
+ }
+ catch( css::uno::Exception const& )
+ {
+ OSL_FAIL( "UNO Exception caught resetting model for m_pImpl (FmFormPageImpl) in FmFormPage::SetModel" );
+ }
+ }
+}
+
+
+SdrPage* FmFormPage::Clone() const
+{
+ return Clone(nullptr);
+}
+
+SdrPage* FmFormPage::Clone(SdrModel* const pNewModel) const
{
- FmFormModel& rFmFormModel(static_cast< FmFormModel& >(nullptr == pNewModel ? getSdrModelFromSdrPage() : *pNewModel));
- FmFormPage* pClonedFmFormPage(
- new FmFormPage(
- rFmFormModel,
- IsMasterPage()));
- pClonedFmFormPage->lateInit(*this);
- return pClonedFmFormPage;
+ FmFormPage* const pNewPage = new FmFormPage(*this);
+ FmFormModel* pFormModel = nullptr;
+ if (pNewModel)
+ {
+ pFormModel = dynamic_cast<FmFormModel*>(pNewModel);
+ assert(pFormModel);
+ }
+ pNewPage->lateInit(*this, pFormModel);
+ return pNewPage;
}
void FmFormPage::InsertObject(SdrObject* pObj, size_t nPos)
{
SdrPage::InsertObject( pObj, nPos );
- static_cast< FmFormModel& >(getSdrModelFromSdrPage()).GetUndoEnv().Inserted(pObj);
+ if (GetModel())
+ static_cast<FmFormModel*>(GetModel())->GetUndoEnv().Inserted(pObj);
}
@@ -169,8 +217,8 @@ bool FmFormPage::RequestHelp( vcl::Window* pWindow, SdrView const * pView,
SdrObject* FmFormPage::RemoveObject(size_t nObjNum)
{
SdrObject* pObj = SdrPage::RemoveObject(nObjNum);
- if (pObj)
- static_cast< FmFormModel& >(getSdrModelFromSdrPage()).GetUndoEnv().Removed(pObj);
+ if (pObj && GetModel())
+ static_cast<FmFormModel*>(GetModel())->GetUndoEnv().Removed(pObj);
return pObj;
}
diff --git a/svx/source/form/fmpgeimp.cxx b/svx/source/form/fmpgeimp.cxx
index 417f84a1212c..3d974c0eb02e 100644
--- a/svx/source/form/fmpgeimp.cxx
+++ b/svx/source/form/fmpgeimp.cxx
@@ -315,15 +315,16 @@ const Reference< css::form::XForms >& FmFormPageImpl::getForms( bool _bForceCrea
m_aFormsCreationHdl.Call( *this );
}
- FmFormModel& rFmFormModel(dynamic_cast< FmFormModel& >(m_rPage.getSdrModelFromSdrPage()));
+ FmFormModel* pFormsModel = dynamic_cast<FmFormModel*>( m_rPage.GetModel() );
// give the newly created collection a place in the universe
- SfxObjectShell* pObjShell(rFmFormModel.GetObjectShell());
+ SfxObjectShell* pObjShell = pFormsModel ? pFormsModel->GetObjectShell() : nullptr;
if ( pObjShell )
m_xForms->setParent( pObjShell->GetModel() );
// tell the UNDO environment that we have a new forms collection
- rFmFormModel.GetUndoEnv().AddForms( Reference<XNameContainer>(m_xForms,UNO_QUERY_THROW) );
+ if ( pFormsModel )
+ pFormsModel->GetUndoEnv().AddForms( Reference<XNameContainer>(m_xForms,UNO_QUERY_THROW) );
}
return m_xForms;
}
@@ -395,13 +396,13 @@ Reference< XForm > FmFormPageImpl::getDefaultForm()
// did not find an existing suitable form -> create a new one
if ( !xForm.is() )
{
- SdrModel& rModel(m_rPage.getSdrModelFromSdrPage());
+ SdrModel* pModel = m_rPage.GetModel();
- if( rModel.IsUndoEnabled() )
+ if( pModel->IsUndoEnabled() )
{
OUString aStr(SvxResId(RID_STR_FORM));
OUString aUndoStr(SvxResId(RID_STR_UNDO_CONTAINER_INSERT));
- rModel.BegUndo(aUndoStr.replaceFirst("'#'", aStr));
+ pModel->BegUndo(aUndoStr.replaceFirst("'#'", aStr));
}
try
@@ -416,15 +417,13 @@ Reference< XForm > FmFormPageImpl::getDefaultForm()
OUString sName = SvxResId(RID_STR_STDFORMNAME);
xFormProps->setPropertyValue( FM_PROP_NAME, makeAny( sName ) );
- if( rModel.IsUndoEnabled() )
+ if( pModel->IsUndoEnabled() )
{
- rModel.AddUndo(
- new FmUndoContainerAction(
- static_cast< FmFormModel& >(rModel),
- FmUndoContainerAction::Inserted,
- xForms,
- xForm,
- xForms->getCount()));
+ pModel->AddUndo(new FmUndoContainerAction(*static_cast<FmFormModel*>(pModel),
+ FmUndoContainerAction::Inserted,
+ xForms,
+ xForm,
+ xForms->getCount()));
}
xForms->insertByName( sName, makeAny( xForm ) );
xCurrentForm = xForm;
@@ -435,8 +434,8 @@ Reference< XForm > FmFormPageImpl::getDefaultForm()
xForm.clear();
}
- if( rModel.IsUndoEnabled() )
- rModel.EndUndo();
+ if( pModel->IsUndoEnabled() )
+ pModel->EndUndo();
}
return xForm;
@@ -475,15 +474,16 @@ Reference< css::form::XForm > FmFormPageImpl::findPlaceInFormComponentHierarchy
// If no css::form found, then create a new one
if (!xForm.is())
{
- SdrModel& rModel(m_rPage.getSdrModelFromSdrPage());
- const bool bUndo(rModel.IsUndoEnabled());
+ SdrModel* pModel = m_rPage.GetModel();
+
+ const bool bUndo = pModel->IsUndoEnabled();
if( bUndo )
{
OUString aStr(SvxResId(RID_STR_FORM));
OUString aUndoStr(SvxResId(RID_STR_UNDO_CONTAINER_INSERT));
aUndoStr = aUndoStr.replaceFirst("#", aStr);
- rModel.BegUndo(aUndoStr);
+ pModel->BegUndo(aUndoStr);
}
xForm.set(::comphelper::getProcessServiceFactory()->createInstance(FM_SUN_COMPONENT_FORM), UNO_QUERY);
@@ -515,19 +515,17 @@ Reference< css::form::XForm > FmFormPageImpl::findPlaceInFormComponentHierarchy
if( bUndo )
{
Reference< css::container::XIndexContainer > xContainer( getForms(), UNO_QUERY );
- rModel.AddUndo(
- new FmUndoContainerAction(
- static_cast< FmFormModel& >(rModel),
- FmUndoContainerAction::Inserted,
- xContainer,
- xForm,
- xContainer->getCount()));
+ pModel->AddUndo(new FmUndoContainerAction(*static_cast<FmFormModel*>(pModel),
+ FmUndoContainerAction::Inserted,
+ xContainer,
+ xForm,
+ xContainer->getCount()));
}
getForms()->insertByName( sName, makeAny( xForm ) );
if( bUndo )
- rModel.EndUndo();
+ pModel->EndUndo();
}
xCurrentForm = xForm;
}
diff --git a/svx/source/form/fmshimp.cxx b/svx/source/form/fmshimp.cxx
index 560b2fa5c70b..a21e90431d7b 100644
--- a/svx/source/form/fmshimp.cxx
+++ b/svx/source/form/fmshimp.cxx
@@ -3845,8 +3845,10 @@ void FmXFormShell::loadForms_Lock(FmFormPage* _pPage, const LoadFormsFlags _nBeh
{
// lock the undo env so the forms can change non-transient properties while loading
// (without this my doc's modified flag would be set)
- FmFormModel& rFmFormModel(dynamic_cast< FmFormModel& >(_pPage->getSdrModelFromSdrPage()));
- rFmFormModel.GetUndoEnv().Lock();
+ FmFormModel* pModel = dynamic_cast<FmFormModel*>( _pPage->GetModel() );
+ DBG_ASSERT( pModel, "FmXFormShell::loadForms: invalid model!" );
+ if ( pModel )
+ pModel->GetUndoEnv().Lock();
// load all forms
Reference< XIndexAccess > xForms;
@@ -3892,8 +3894,9 @@ void FmXFormShell::loadForms_Lock(FmFormPage* _pPage, const LoadFormsFlags _nBeh
}
}
- // unlock the environment
- rFmFormModel.GetUndoEnv().UnLock();
+ if ( pModel )
+ // unlock the environment
+ pModel->GetUndoEnv().UnLock();
}
}
diff --git a/svx/source/form/fmview.cxx b/svx/source/form/fmview.cxx
index 6acd8b890e2d..2adad0dc524f 100644
--- a/svx/source/form/fmview.cxx
+++ b/svx/source/form/fmview.cxx
@@ -77,14 +77,14 @@ using namespace ::com::sun::star::util;
using namespace ::svxform;
using namespace ::svx;
-FmFormView::FmFormView(
- SdrModel& rSdrModel,
- OutputDevice* pOut)
-: E3dView(rSdrModel, pOut)
+
+FmFormView::FmFormView( FmFormModel* pModel, OutputDevice* pOut )
+ :E3dView(pModel,pOut)
{
Init();
}
+
void FmFormView::Init()
{
pFormShell = nullptr;
diff --git a/svx/source/form/fmvwimp.cxx b/svx/source/form/fmvwimp.cxx
index 30dd8add1b1d..cbf975fe0a2d 100644
--- a/svx/source/form/fmvwimp.cxx
+++ b/svx/source/form/fmvwimp.cxx
@@ -1350,7 +1350,7 @@ SdrObject* FmXFormView::implCreateFieldControl( const svx::ODataAccessDescriptor
if ( bCheckbox )
return pControl;
- SdrObjGroup* pGroup = new SdrObjGroup(getView()->getSdrModelFromSdrView());
+ SdrObjGroup* pGroup = new SdrObjGroup();
SdrObjList* pObjList = pGroup->GetSubList();
pObjList->InsertObject( pLabel );
pObjList->InsertObject( pControl );
@@ -1462,7 +1462,7 @@ SdrObject* FmXFormView::implCreateXFormsControl( const svx::OXFormsDescriptor &_
// group objects
- SdrObjGroup* pGroup = new SdrObjGroup(getView()->getSdrModelFromSdrView());
+ SdrObjGroup* pGroup = new SdrObjGroup();
SdrObjList* pObjList = pGroup->GetSubList();
pObjList->InsertObject(pLabel);
pObjList->InsertObject(pControl);
@@ -1476,11 +1476,7 @@ SdrObject* FmXFormView::implCreateXFormsControl( const svx::OXFormsDescriptor &_
const MapMode eSourceMode(MapUnit::Map100thMM);
const sal_uInt16 nObjID = OBJ_FM_BUTTON;
::Size controlSize(4000, 500);
- FmFormObj *pControl = static_cast<FmFormObj*>(
- SdrObjFactory::MakeNewObject(
- getView()->getSdrModelFromSdrView(),
- SdrInventor::FmForm,
- nObjID));
+ FmFormObj *pControl = static_cast<FmFormObj*>(SdrObjFactory::MakeNewObject( SdrInventor::FmForm, nObjID, nullptr ));
controlSize.setWidth( long(controlSize.Width() * eTargetMode.GetScaleX()) );
controlSize.setHeight( long(controlSize.Height() * eTargetMode.GetScaleY()) );
::Point controlPos( OutputDevice::LogicToLogic( ::Point( controlSize.Width(), 0 ), eSourceMode, eTargetMode ) );
@@ -1580,18 +1576,11 @@ bool FmXFormView::createControlLabelPair( OutputDevice const & _rOutDev, sal_Int
// the label
::std::unique_ptr< SdrUnoObj > pLabel;
Reference< XPropertySet > xLabelModel;
-
if ( bNeedLabel )
{
pLabel.reset( dynamic_cast< SdrUnoObj* >(
- SdrObjFactory::MakeNewObject(
- *_pModel,
- _nInventor,
- _nLabelObjectID,
- _pLabelPage)));
-
+ SdrObjFactory::MakeNewObject( _nInventor, _nLabelObjectID, _pLabelPage, _pModel ) ) );
OSL_ENSURE( pLabel.get(), "FmXFormView::createControlLabelPair: could not create the label!" );
-
if ( !pLabel.get() )
return false;
@@ -1617,14 +1606,8 @@ bool FmXFormView::createControlLabelPair( OutputDevice const & _rOutDev, sal_Int
// the control
::std::unique_ptr< SdrUnoObj > pControl( dynamic_cast< SdrUnoObj* >(
- SdrObjFactory::MakeNewObject(
- *_pModel,
- _nInventor,
- _nControlObjectID,
- _pControlPage)));
-
+ SdrObjFactory::MakeNewObject( _nInventor, _nControlObjectID, _pControlPage, _pModel ) ) );
OSL_ENSURE( pControl.get(), "FmXFormView::createControlLabelPair: could not create the control!" );
-
if ( !pControl.get() )
return false;
diff --git a/svx/source/gallery2/galobj.cxx b/svx/source/gallery2/galobj.cxx
index a91fabd1c527..d9e6a205cbfe 100644
--- a/svx/source/gallery2/galobj.cxx
+++ b/svx/source/gallery2/galobj.cxx
@@ -458,7 +458,7 @@ bool SgaObjectSvDraw::CreateThumb( const FmFormModel& rModel )
if(aObjRect.GetWidth() && aObjRect.GetHeight())
{
ScopedVclPtrInstance< VirtualDevice > pVDev;
- FmFormView aView(const_cast< FmFormModel& >(rModel), pVDev);
+ FmFormView aView(const_cast< FmFormModel* >(&rModel), pVDev);
aView.ShowSdrPage(const_cast< FmFormPage* >(pPage));
aView.MarkAllObj();
diff --git a/svx/source/gallery2/galtheme.cxx b/svx/source/gallery2/galtheme.cxx
index 9c8b27bef7d5..de21ba0307bb 100644
--- a/svx/source/gallery2/galtheme.cxx
+++ b/svx/source/gallery2/galtheme.cxx
@@ -801,7 +801,7 @@ bool GalleryTheme::GetGraphic(sal_uInt32 nPos, Graphic& rGraphic)
{
ScopedVclPtrInstance< VirtualDevice > pVDev;
pVDev->SetMapMode( MapMode( MapUnit::Map100thMM ) );
- FmFormView aView(*aModel.GetModel(), pVDev);
+ FmFormView aView( aModel.GetModel(), pVDev );
aView.hideMarkHandles();
aView.ShowSdrPage(aView.GetModel()->GetPage(0));
@@ -1244,7 +1244,7 @@ bool GalleryTheme::InsertTransferable(const uno::Reference< datatransfer::XTrans
if( aModel.GetModel() )
{
SdrPage* pPage = aModel.GetModel()->GetPage(0);
- SdrGrafObj* pGrafObj = new SdrGrafObj(*aModel.GetModel(), *pGraphic );
+ SdrGrafObj* pGrafObj = new SdrGrafObj( *pGraphic );
pGrafObj->AppendUserData( new SgaIMapInfo( aImageMap ) );
pPage->InsertObject( pGrafObj );
diff --git a/svx/source/inc/cell.hxx b/svx/source/inc/cell.hxx
index 86c7579e1726..5b7f71b04c89 100644
--- a/svx/source/inc/cell.hxx
+++ b/svx/source/inc/cell.hxx
@@ -91,6 +91,8 @@ public:
SVX_DLLPRIVATE SdrTextVertAdjust GetTextVerticalAdjust() const;
SdrTextHorzAdjust GetTextHorizontalAdjust() const;
+ SVX_DLLPRIVATE virtual void SetModel(SdrModel* pNewModel) override;
+
SVX_DLLPRIVATE void merge( sal_Int32 nColumnSpan, sal_Int32 nRowSpan );
SVX_DLLPRIVATE void mergeContent( const CellRef& xSourceCell );
SVX_DLLPRIVATE void replaceContentAndFormating( const CellRef& xSourceCell );
diff --git a/svx/source/inc/fmobj.hxx b/svx/source/inc/fmobj.hxx
index da9f7c6fbfd7..6b9adf61c548 100644
--- a/svx/source/inc/fmobj.hxx
+++ b/svx/source/inc/fmobj.hxx
@@ -27,7 +27,7 @@
// FmFormObj
-class SVX_DLLPUBLIC FmFormObj : public SdrUnoObj
+class SVX_DLLPUBLIC FmFormObj: public SdrUnoObj
{
FmFormObj( const FmFormObj& ) = delete;
@@ -47,10 +47,9 @@ class SVX_DLLPUBLIC FmFormObj : public SdrUnoObj
// only to be used for comparison with the current ref device!
public:
- FmFormObj(
- SdrModel& rSdrModel,
- const OUString& rModelName);
- FmFormObj(SdrModel& rSdrModel);
+ FmFormObj(const OUString& rModelName);
+ FmFormObj();
+
SAL_DLLPRIVATE const css::uno::Reference< css::container::XIndexContainer>&
GetOriginalParent() const { return m_xParent; }
@@ -73,10 +72,12 @@ public:
SAL_DLLPRIVATE virtual sal_uInt16 GetObjIdentifier() const override;
SAL_DLLPRIVATE virtual void NbcReformatText() override;
- SAL_DLLPRIVATE virtual FmFormObj* Clone(SdrModel* pTargetModel = nullptr) const override;
+ SAL_DLLPRIVATE virtual FmFormObj* Clone() const override;
// #116235# virtual SdrObject* Clone(SdrPage* pPage, SdrModel* pModel) const;
SAL_DLLPRIVATE FmFormObj& operator= (const FmFormObj& rObj);
+ SAL_DLLPRIVATE virtual void SetModel(SdrModel* pNewModel) override;
+
SAL_DLLPRIVATE void clonedFrom(const FmFormObj* _pSource);
SAL_DLLPRIVATE static css::uno::Reference< css::uno::XInterface> ensureModelEnv(
diff --git a/svx/source/inc/tablemodel.hxx b/svx/source/inc/tablemodel.hxx
index 791a4310f190..e59626da0200 100644
--- a/svx/source/inc/tablemodel.hxx
+++ b/svx/source/inc/tablemodel.hxx
@@ -176,7 +176,7 @@ private:
rtl::Reference< TableColumns > mxTableColumns;
rtl::Reference< TableRows > mxTableRows;
- SdrTableObj* mpTableObj; // TTTT should be reference
+ SdrTableObj* mpTableObj;
bool mbModified;
bool mbNotifyPending;
diff --git a/svx/source/sdr/contact/viewcontactofgraphic.cxx b/svx/source/sdr/contact/viewcontactofgraphic.cxx
index 3c0622bad264..b7c3086fe735 100644
--- a/svx/source/sdr/contact/viewcontactofgraphic.cxx
+++ b/svx/source/sdr/contact/viewcontactofgraphic.cxx
@@ -241,7 +241,7 @@ namespace sdr
aDraftText += " ...";
}
- if (!aDraftText.isEmpty())
+ if (!aDraftText.isEmpty() && GetGrafObject().GetModel())
{
// #i103255# Goal is to produce TextPrimitives which hold the given text as
// BlockText in the available space. It would be very tricky to do
@@ -253,7 +253,8 @@ namespace sdr
// needed and can be deleted.
// create temp RectObj as TextObj and set needed attributes
- SdrRectObj aRectObj(GetGrafObject().getSdrModelFromSdrObject(), OBJ_TEXT);
+ SdrRectObj aRectObj(OBJ_TEXT);
+ aRectObj.SetModel(GetGrafObject().GetModel());
aRectObj.NbcSetText(aDraftText);
aRectObj.SetMergedItem(SvxColorItem(COL_LIGHTRED, EE_CHAR_COLOR));
diff --git a/svx/source/sdr/contact/viewcontactofsdrrectobj.cxx b/svx/source/sdr/contact/viewcontactofsdrrectobj.cxx
index f02ba917280c..c0ab639395de 100644
--- a/svx/source/sdr/contact/viewcontactofsdrrectobj.cxx
+++ b/svx/source/sdr/contact/viewcontactofsdrrectobj.cxx
@@ -72,7 +72,8 @@ drawinglayer::primitive2d::Primitive2DContainer ViewContactOfSdrRectObj::createV
drawinglayer::primitive2d::calculateRelativeCornerRadius(nCornerRadius, aObjectRange, fCornerRadiusX, fCornerRadiusY);
// #i105856# use knowledge about pickthrough from the model
- const bool bPickThroughTransparentTextFrames(GetRectObj().getSdrModelFromSdrObject().IsPickThroughTransparentTextFrames());
+ const bool bPickThroughTransparentTextFrames(
+ GetRectObj().GetModel() && GetRectObj().GetModel()->IsPickThroughTransparentTextFrames());
// create primitive. Always create primitives to allow the decomposition of
// SdrRectanglePrimitive2D to create needed invisible elements for HitTest and/or BoundRect
diff --git a/svx/source/sdr/contact/viewobjectcontactofgraphic.cxx b/svx/source/sdr/contact/viewobjectcontactofgraphic.cxx
index f6e425fb1cfa..95ed93a42b4c 100644
--- a/svx/source/sdr/contact/viewobjectcontactofgraphic.cxx
+++ b/svx/source/sdr/contact/viewobjectcontactofgraphic.cxx
@@ -242,7 +242,7 @@ namespace sdr
{
// prepare primitive generation with evtl. loading the graphic when it's swapped out
SdrGrafObj& rGrafObj = const_cast< ViewObjectContactOfGraphic* >(this)->getSdrGrafObj();
- bool bDoAsynchronGraphicLoading(rGrafObj.getSdrModelFromSdrObject().IsSwapGraphics());
+ bool bDoAsynchronGraphicLoading(rGrafObj.GetModel() && rGrafObj.GetModel()->IsSwapGraphics());
if( bDoAsynchronGraphicLoading && rGrafObj.IsSwappedOut() )
{
diff --git a/svx/source/sdr/primitive2d/sdrattributecreator.cxx b/svx/source/sdr/primitive2d/sdrattributecreator.cxx
index 452971758bbc..60e130c8b949 100644
--- a/svx/source/sdr/primitive2d/sdrattributecreator.cxx
+++ b/svx/source/sdr/primitive2d/sdrattributecreator.cxx
@@ -527,7 +527,7 @@ namespace drawinglayer
bool bChainable = rTextObj.IsChainable();
- if(rText.GetOutlinerParaObject())
+ if(rText.GetOutlinerParaObject() && rText.GetModel())
{
// added TextEdit text suppression
bool bInEditMode(false);
@@ -564,7 +564,7 @@ namespace drawinglayer
const SdrTextAniKind eAniKind(rTextObj.GetTextAniKind());
// #i107346#
- const SdrOutliner& rDrawTextOutliner(rText.GetObject().getSdrModelFromSdrObject().GetDrawOutliner(&rTextObj));
+ const SdrOutliner& rDrawTextOutliner = rText.GetModel()->GetDrawOutliner(&rTextObj);
const bool bWrongSpell(rDrawTextOutliner.GetControlWord() & EEControlBits::ONLINESPELLING);
return attribute::SdrTextAttribute(
diff --git a/svx/source/sdr/primitive2d/sdrtextprimitive2d.cxx b/svx/source/sdr/primitive2d/sdrtextprimitive2d.cxx
index e3d7aba47366..0cdd5d0216d2 100644
--- a/svx/source/sdr/primitive2d/sdrtextprimitive2d.cxx
+++ b/svx/source/sdr/primitive2d/sdrtextprimitive2d.cxx
@@ -64,16 +64,16 @@ namespace
sal_Int16 nRetval(0);
SdrPage* pPage = GetSdrPageFromXDrawPage(rxDrawPage);
- if(pPage)
+ if(pPage && pPage->GetModel())
{
if( (pPage->GetPageNum() == 0) && !pPage->IsMasterPage() )
{
// handout page!
- return pPage->getSdrModelFromSdrPage().getHandoutPageCount();
+ return pPage->GetModel()->getHandoutPageCount();
}
else
{
- const sal_uInt16 nPageCount(pPage->getSdrModelFromSdrPage().GetPageCount());
+ const sal_uInt16 nPageCount(pPage->GetModel()->GetPageCount());
nRetval = (static_cast<sal_Int16>(nPageCount) - 1) / 2;
}
}
@@ -188,9 +188,9 @@ namespace drawinglayer
}
// #i101443# check change of TextBackgroundolor
- if(!bDoDelete && getSdrText())
+ if(!bDoDelete && getSdrText() && getSdrText()->GetModel())
{
- SdrOutliner& rDrawOutliner = getSdrText()->GetObject().getSdrModelFromSdrObject().GetDrawOutliner();
+ SdrOutliner& rDrawOutliner = getSdrText()->GetModel()->GetDrawOutliner();
aNewTextBackgroundColor = rDrawOutliner.GetBackgroundColor();
bNewTextBackgroundColorIsSet = true;
@@ -223,9 +223,9 @@ namespace drawinglayer
nCurrentlyValidPageCount = getPageCount(xCurrentlyVisualizingPage);
}
- if(!bNewTextBackgroundColorIsSet && getSdrText())
+ if(!bNewTextBackgroundColorIsSet && getSdrText() && getSdrText()->GetModel())
{
- SdrOutliner& rDrawOutliner = getSdrText()->GetObject().getSdrModelFromSdrObject().GetDrawOutliner();
+ SdrOutliner& rDrawOutliner = getSdrText()->GetModel()->GetDrawOutliner();
aNewTextBackgroundColor = rDrawOutliner.GetBackgroundColor();
}
diff --git a/svx/source/sdr/properties/attributeproperties.cxx b/svx/source/sdr/properties/attributeproperties.cxx
index d14b7ffd6b2f..b4038eab847a 100644
--- a/svx/source/sdr/properties/attributeproperties.cxx
+++ b/svx/source/sdr/properties/attributeproperties.cxx
@@ -44,40 +44,33 @@
#include <svx/svdmodel.hxx>
#include <svx/svdtrans.hxx>
#include <svx/svdpage.hxx>
-#include <svx/svdograf.hxx>
-#include <svx/svdoole2.hxx>
+
namespace sdr
{
namespace properties
{
- SfxStyleSheet* AttributeProperties::ImpGetDefaultStyleSheet() const
+ void AttributeProperties::ImpAddStyleSheet(SfxStyleSheet* pNewStyleSheet, bool bDontRemoveHardAttr)
{
- // use correct default stylesheet #119287#
- const SdrGrafObj* pIsSdrGrafObj(dynamic_cast< const SdrGrafObj* >(&GetSdrObject()));
- const SdrOle2Obj* pIsSdrOle2Obj(dynamic_cast< const SdrOle2Obj* >(&GetSdrObject()));
- SfxStyleSheet* pRetval(nullptr);
+ // test if old StyleSheet is cleared, else it would be lost
+ // after this method -> memory leak (!)
+ DBG_ASSERT(!mpStyleSheet, "Old style sheet not deleted before setting new one (!)");
- if(pIsSdrGrafObj || pIsSdrOle2Obj)
- {
- pRetval = GetSdrObject().getSdrModelFromSdrObject().GetDefaultStyleSheetForSdrGrafObjAndSdrOle2Obj();
- }
- else
+ if(pNewStyleSheet)
{
- pRetval = GetSdrObject().getSdrModelFromSdrObject().GetDefaultStyleSheet();
- }
+ mpStyleSheet = pNewStyleSheet;
- return pRetval;
- }
+ // local ItemSet is needed here, force it
+ GetObjectItemSet();
+
+ // register as listener
+ StartListening(pNewStyleSheet->GetPool());
+ StartListening(*pNewStyleSheet);
- void AttributeProperties::ImpSetParentAtSfxItemSet(bool bDontRemoveHardAttr)
- {
- if(HasSfxItemSet() && mpStyleSheet)
- {
// Delete hard attributes where items are set in the style sheet
if(!bDontRemoveHardAttr)
{
- const SfxItemSet& rStyle = mpStyleSheet->GetItemSet();
+ const SfxItemSet& rStyle = pNewStyleSheet->GetItemSet();
SfxWhichIter aIter(rStyle);
sal_uInt16 nWhich = aIter.FirstWhich();
@@ -93,37 +86,7 @@ namespace sdr
}
// set new stylesheet as parent
- mpItemSet->SetParent(&mpStyleSheet->GetItemSet());
- }
- else
- {
- OSL_ENSURE(false, "ImpSetParentAtSfxItemSet called without SfxItemSet/SfxStyleSheet (!)");
- }
- }
-
- void AttributeProperties::ImpAddStyleSheet(SfxStyleSheet* pNewStyleSheet, bool bDontRemoveHardAttr)
- {
- // test if old StyleSheet is cleared, else it would be lost
- // after this method -> memory leak (!)
- DBG_ASSERT(!mpStyleSheet, "Old style sheet not deleted before setting new one (!)");
-
- if(pNewStyleSheet)
- {
- // local remember
- mpStyleSheet = pNewStyleSheet;
-
- if(HasSfxItemSet())
- {
- // register as listener
- StartListening(pNewStyleSheet->GetPool());
- StartListening(*pNewStyleSheet);
-
- // only apply the following when we have an SfxItemSet already, else
- if(GetStyleSheet())
- {
- ImpSetParentAtSfxItemSet(bDontRemoveHardAttr);
- }
- }
+ mpItemSet->SetParent(&pNewStyleSheet->GetItemSet());
}
}
@@ -136,7 +99,7 @@ namespace sdr
EndListening(mpStyleSheet->GetPool());
// reset parent of ItemSet
- if(HasSfxItemSet())
+ if(mpItemSet)
{
mpItemSet->SetParent(nullptr);
}
@@ -164,59 +127,15 @@ namespace sdr
: DefaultProperties(rObj),
mpStyleSheet(nullptr)
{
- // Do nothing else, esp. do *not* try to get and set
- // a default SfxStyle sheet. Nothing is allowed to be done
- // that may lead to calls to virtual functions like
- // CreateObjectSpecificItemSet - these would go *wrong*.
- // Thus the rest is lazy-init from here.
}
AttributeProperties::AttributeProperties(const AttributeProperties& rProps, SdrObject& rObj)
: DefaultProperties(rProps, rObj),
mpStyleSheet(nullptr)
{
- SfxStyleSheet* pTargetStyleSheet(rProps.GetStyleSheet());
-
- if(pTargetStyleSheet && &rObj.getSdrModelFromSdrObject() != &GetSdrObject().getSdrModelFromSdrObject())
+ if(rProps.GetStyleSheet())
{
- // TTTT It is a clone to another model, thus the TargetStyleSheet
- // is probably also from another SdrModel, so do *not* simply use it.
- //
- // The DefaultProperties::Clone already has cloned the ::SET items
- // to a new SfxItemSet in the new SfxItemPool. There are quite some
- // possibilities to continue:
- // - Do not use StyleSheet (will do this for now)
- // - Search for same StyleSheet in Target-SdrModel and use if found
- // (use e.g. Name)
- // - Clone used StyleSheet(s) to Target-SdrModel and use
- // - Set all Attributes from the StyleSheet as hard attributes at the
- // SfxItemSet
- // The original AW080 uses 'ImpModelChange' (see there) which Clones
- // and uses the used StyleSheets if there is a Target-SfxItemPool
- // and sets to hard attributes if not. This may be used later if needed,
- // but for now only a single UnitTest uses this Clone-scenario and works
- // well with not using the TargetStyleSheet. The logic Cloning
- // StyleSheets *should* - if needed - be on a higher level where it is
- // potentially better known what would be the correct thing to do.
- pTargetStyleSheet = nullptr;
- }
-
- if(pTargetStyleSheet)
- {
- if(HasSfxItemSet())
- {
- // The SfxItemSet has been cloned and exists,
- // we can directly set the SfxStyleSheet at it
- ImpAddStyleSheet(pTargetStyleSheet, true);
- }
- else
- {
- // No SfxItemSet exists yet (there is none in
- // the source, so none was cloned). Remember the
- // SfxStyleSheet to set it when the SfxItemSet
- // got constructed on-demand
- mpStyleSheet = pTargetStyleSheet;
- }
+ ImpAddStyleSheet(rProps.GetStyleSheet(), true);
}
}
@@ -230,42 +149,6 @@ namespace sdr
return *(new AttributeProperties(*this, rObj));
}
- const SfxItemSet& AttributeProperties::GetObjectItemSet() const
- {
- // remember if we had a SfxItemSet already
- const bool bHadSfxItemSet(HasSfxItemSet());
-
- // call parent - this will then guarantee
- // SfxItemSet existance
- DefaultProperties::GetObjectItemSet();
-
- if(!bHadSfxItemSet)
- {
- if(GetStyleSheet())
- {
- // Late-Init of setting parent to SfxStyleSheet after
- // it's creation. See copy-constructor and how it remembers
- // the SfxStyleSheet there.
- // It is necessary to reset mpStyleSheet to nullptr to
- // not trigger alarm insde ImpAddStyleSheet (!)
- SfxStyleSheet* pNew(mpStyleSheet);
- const_cast< AttributeProperties* >(this)->mpStyleSheet = nullptr;
- const_cast< AttributeProperties* >(this)->ImpAddStyleSheet(
- pNew,
- true);
- }
- else
- {
- // Set missing defaults and do not RemoveHardAttributes
- const_cast< AttributeProperties* >(this)->ImpAddStyleSheet(
- ImpGetDefaultStyleSheet(),
- true);
- }
- }
-
- return *mpItemSet;
- }
-
void AttributeProperties::ItemSetChanged(const SfxItemSet& /*rSet*/)
{
// own modifications
@@ -281,72 +164,64 @@ namespace sdr
if(pNewItem)
{
const SfxPoolItem* pResultItem = nullptr;
- SdrModel& rModel(GetSdrObject().getSdrModelFromSdrObject());
+ SdrModel* pModel = GetSdrObject().GetModel();
switch( nWhich )
{
case XATTR_FILLBITMAP:
{
- // TTTT checkForUniqueItem should use SdrModel&
- pResultItem = static_cast<const XFillBitmapItem*>(pNewItem)->checkForUniqueItem( &rModel );
+ pResultItem = static_cast<const XFillBitmapItem*>(pNewItem)->checkForUniqueItem( pModel );
break;
}
case XATTR_LINEDASH:
{
- pResultItem = static_cast<const XLineDashItem*>(pNewItem)->checkForUniqueItem( &rModel );
+ pResultItem = static_cast<const XLineDashItem*>(pNewItem)->checkForUniqueItem( pModel );
break;
}
case XATTR_LINESTART:
{
- pResultItem = static_cast<const XLineStartItem*>(pNewItem)->checkForUniqueItem( &rModel );
+ pResultItem = static_cast<const XLineStartItem*>(pNewItem)->checkForUniqueItem( pModel );
break;
}
case XATTR_LINEEND:
{
- pResultItem = static_cast<const XLineEndItem*>(pNewItem)->checkForUniqueItem( &rModel );
+ pResultItem = static_cast<const XLineEndItem*>(pNewItem)->checkForUniqueItem( pModel );
break;
}
case XATTR_FILLGRADIENT:
{
- pResultItem = static_cast<const XFillGradientItem*>(pNewItem)->checkForUniqueItem( &rModel );
+ pResultItem = static_cast<const XFillGradientItem*>(pNewItem)->checkForUniqueItem( pModel );
break;
}
case XATTR_FILLFLOATTRANSPARENCE:
{
// #85953# allow all kinds of XFillFloatTransparenceItem to be set
- pResultItem = static_cast<const XFillFloatTransparenceItem*>(pNewItem)->checkForUniqueItem( &rModel );
+ pResultItem = static_cast<const XFillFloatTransparenceItem*>(pNewItem)->checkForUniqueItem( pModel );
break;
}
case XATTR_FILLHATCH:
{
- pResultItem = static_cast<const XFillHatchItem*>(pNewItem)->checkForUniqueItem( &rModel );
+ pResultItem = static_cast<const XFillHatchItem*>(pNewItem)->checkForUniqueItem( pModel );
break;
}
}
// set item
- if(!HasSfxItemSet())
- {
- GetObjectItemSet();
- }
-
+ GetObjectItemSet();
if(pResultItem)
{
// force ItemSet
mpItemSet->Put(*pResultItem);
-
// delete item if it was a generated one
delete pResultItem;
}
else
- {
mpItemSet->Put(*pNewItem);
- }
}
else
{
// clear item if ItemSet exists
- if(HasSfxItemSet())
+ if(mpItemSet)
{
mpItemSet->ClearItem(nWhich);
}
@@ -355,12 +230,6 @@ namespace sdr
void AttributeProperties::SetStyleSheet(SfxStyleSheet* pNewStyleSheet, bool bDontRemoveHardAttr)
{
- // guarantee SfxItemSet existance here
- if(!HasSfxItemSet())
- {
- GetObjectItemSet();
- }
-
ImpRemoveStyleSheet();
ImpAddStyleSheet(pNewStyleSheet, bDontRemoveHardAttr);
@@ -374,18 +243,237 @@ namespace sdr
return mpStyleSheet;
}
- void AttributeProperties::ForceStyleToHardAttributes()
+ void AttributeProperties::MoveToItemPool(SfxItemPool* pSrcPool, SfxItemPool* pDestPool, SdrModel* pNewModel)
{
- if(!GetStyleSheet() || dynamic_cast<const SfxStyleSheet *>(mpStyleSheet) == nullptr)
- return;
+ OSL_ASSERT(pNewModel!=nullptr);
- // force SfxItemSet existence
- if(!HasSfxItemSet())
+ if(pSrcPool && pDestPool && (pSrcPool != pDestPool))
{
- GetObjectItemSet();
+ if(mpItemSet)
+ {
+ // migrate ItemSet to new pool. Scaling is NOT necessary
+ // because this functionality is used by UNDO only. Thus
+ // objects and ItemSets would be moved back to their original
+ // pool before usage.
+ SfxStyleSheet* pStySheet = GetStyleSheet();
+
+ if(pStySheet)
+ {
+ ImpRemoveStyleSheet();
+ }
+
+ auto pOldSet = std::move(mpItemSet);
+ mpItemSet.reset(pOldSet->Clone(false, pDestPool));
+ SdrModel::MigrateItemSet(pOldSet.get(), mpItemSet.get(), pNewModel);
+
+ // set stylesheet (if used)
+ if(pStySheet)
+ {
+ // #i109515#
+ SfxItemPool* pStyleSheetPool = &pStySheet->GetPool().GetPool();
+
+ if(pStyleSheetPool == pDestPool)
+ {
+ // just re-set stylesheet
+ ImpAddStyleSheet(pStySheet, true);
+ }
+ else
+ {
+ // StyleSheet is NOT from the correct pool.
+ // Look one up in the right pool with the same
+ // name or use the default.
+
+ // Look up the style in the new document.
+ OSL_ASSERT(pNewModel->GetStyleSheetPool() != nullptr);
+ SfxStyleSheet* pNewStyleSheet = dynamic_cast<SfxStyleSheet*>(
+ pNewModel->GetStyleSheetPool()->Find(
+ pStySheet->GetName(),
+ SfxStyleFamily::All));
+ if (pNewStyleSheet == nullptr
+ || &pNewStyleSheet->GetPool().GetPool() != pDestPool)
+ {
+ // There is no copy of the style in the new
+ // document. Use the default as a fallback.
+ pNewStyleSheet = pNewModel->GetDefaultStyleSheet();
+ }
+ ImpAddStyleSheet(pNewStyleSheet, true);
+ }
+ }
+ }
}
+ }
+
+ void AttributeProperties::SetModel(SdrModel* pOldModel, SdrModel* pNewModel)
+ {
+ if(pOldModel != pNewModel && pNewModel)
+ {
+ // For a living model move the items from one pool to the other
+ if(pOldModel)
+ {
+ // If metric has changed, scale items.
+ MapUnit aOldUnit(pOldModel->GetScaleUnit());
+ MapUnit aNewUnit(pNewModel->GetScaleUnit());
+ bool bScaleUnitChanged(aNewUnit != aOldUnit);
+ Fraction aMetricFactor;
+
+ if(bScaleUnitChanged)
+ {
+ aMetricFactor = GetMapFactor(aOldUnit, aNewUnit).X();
+ Scale(aMetricFactor);
+ }
+
+ // Move all styles which are used by the object to the new
+ // StyleSheet pool
+ SfxStyleSheet* pOldStyleSheet = GetStyleSheet();
+
+ if(pOldStyleSheet)
+ {
+ SfxStyleSheetBase* pSheet = pOldStyleSheet;
+ SfxStyleSheetBasePool* pOldPool = pOldModel->GetStyleSheetPool();
+ SfxStyleSheetBasePool* pNewPool = pNewModel->GetStyleSheetPool();
+ DBG_ASSERT(pOldPool, "Properties::SetModel(): Object has StyleSheet but no StyleSheetPool (!)");
+
+ if(pOldPool && pNewPool)
+ {
+ // build a list of to-be-copied Styles
+ std::vector<SfxStyleSheetBase*> aStyleList;
+ SfxStyleSheetBase* pAnchor = nullptr;
+
+ while(pSheet)
+ {
+ pAnchor = pNewPool->Find(pSheet->GetName(), pSheet->GetFamily());
+
+ if(!pAnchor)
+ {
+ aStyleList.push_back(pSheet);
+ pSheet = pOldPool->Find(pSheet->GetParent(), pSheet->GetFamily());
+ }
+ else
+ {
+ // the style does exist
+ pSheet = nullptr;
+ }
+ }
+
+ // copy and set the parents
+ SfxStyleSheetBase* pNewSheet = nullptr;
+ SfxStyleSheetBase* pLastSheet = nullptr;
+ SfxStyleSheetBase* pForThisObject = nullptr;
+
+ for (std::vector<SfxStyleSheetBase*>::const_iterator iter = aStyleList.begin(), aEnd = aStyleList.end()
+ ; iter != aEnd; ++iter)
+ {
+ pNewSheet = &pNewPool->Make((*iter)->GetName(), (*iter)->GetFamily(), (*iter)->GetMask());
+ pNewSheet->GetItemSet().Put((*iter)->GetItemSet(), false);
+
+ if(bScaleUnitChanged)
+ {
+ sdr::properties::ScaleItemSet(pNewSheet->GetItemSet(), aMetricFactor);
+ }
+
+ if(pLastSheet)
+ {
+ pLastSheet->SetParent(pNewSheet->GetName());
+ }
+
+ if(!pForThisObject)
+ {
+ pForThisObject = pNewSheet;
+ }
+
+ pLastSheet = pNewSheet;
+ }
+
+ // Set link to the Style found in the Pool
+ if(pAnchor && pLastSheet)
+ {
+ pLastSheet->SetParent(pAnchor->GetName());
+ }
+
+ // if list was empty (all Styles exist in destination pool)
+ // pForThisObject is not yet set
+ if(!pForThisObject && pAnchor)
+ {
+ pForThisObject = pAnchor;
+ }
+
+ // De-register at old and register at new Style
+ if(GetStyleSheet() != pForThisObject)
+ {
+ ImpRemoveStyleSheet();
+ ImpAddStyleSheet(static_cast<SfxStyleSheet*>(pForThisObject), true);
+ }
+ }
+ else
+ {
+ // there is no StyleSheetPool in the new model, thus set
+ // all items as hard items in the object
+ std::vector<const SfxItemSet*> aSetList;
+ const SfxItemSet* pItemSet = &pOldStyleSheet->GetItemSet();
+
+ while(pItemSet)
+ {
+ aSetList.push_back(pItemSet);
+ pItemSet = pItemSet->GetParent();
+ }
+
+ auto pNewSet = CreateObjectSpecificItemSet(pNewModel->GetItemPool());
+
+ std::vector<const SfxItemSet*>::reverse_iterator riter;
+ for (riter = aSetList.rbegin(); riter != aSetList.rend(); ++riter)
+ pNewSet->Put(*(*riter));
+
+ // Items which were hard attributes before need to stay
+ if(mpItemSet)
+ {
+ SfxWhichIter aIter(*mpItemSet);
+ sal_uInt16 nWhich = aIter.FirstWhich();
+
+ while(nWhich)
+ {
+ if(mpItemSet->GetItemState(nWhich, false) == SfxItemState::SET)
+ {
+ pNewSet->Put(mpItemSet->Get(nWhich));
+ }
+
+ nWhich = aIter.NextWhich();
+ }
+ }
+
+ if(bScaleUnitChanged)
+ {
+ ScaleItemSet(*pNewSet, aMetricFactor);
+ }
+
+ if(mpItemSet)
+ {
+ if(GetStyleSheet())
+ {
+ ImpRemoveStyleSheet();
+ }
+ }
+
+ mpItemSet = std::move(pNewSet);
+ }
+ }
+ }
+
+ // each object gets the default Style if there is none set yet.
+ if(!GetStyleSheet() && pNewModel)
+ {
+ GetObjectItemSet(); // #118414 force ItemSet to allow style to be set
+ SetStyleSheet(pNewModel->GetDefaultStyleSheet(), true);
+ }
+ }
+ }
+
+ void AttributeProperties::ForceStyleToHa