From 940b4d1848e8c70ab7642901a68594e8016caffc Mon Sep 17 00:00:00 2001
From: Daniel Baumann
Date: Sat, 27 Apr 2024 18:51:28 +0200
Subject: Adding upstream version 1:7.0.4.
Signed-off-by: Daniel Baumann
---
include/svx/AccessibilityCheckDialog.hxx | 62 +
include/svx/AccessibleControlShape.hxx | 207 +++
include/svx/AccessibleGraphicShape.hxx | 105 ++
include/svx/AccessibleOLEShape.hxx | 112 ++
include/svx/AccessibleShape.hxx | 439 +++++
include/svx/AccessibleShapeInfo.hxx | 97 ++
include/svx/AccessibleShapeTreeInfo.hxx | 203 +++
include/svx/AccessibleTextHelper.hxx | 366 +++++
include/svx/ActionDescriptionProvider.hxx | 55 +
include/svx/ChildrenManager.hxx | 209 +++
include/svx/ClassificationCommon.hxx | 67 +
include/svx/ClassificationDialog.hxx | 89 +
include/svx/ClassificationField.hxx | 99 ++
include/svx/ColorSets.hxx | 71 +
include/svx/CommonStyleManager.hxx | 41 +
include/svx/DiagramDataInterface.hxx | 52 +
include/svx/EnhancedCustomShape2d.hxx | 222 +++
include/svx/EnhancedCustomShapeFunctionParser.hxx | 248 +++
include/svx/EnhancedCustomShapeGeometry.hxx | 105 ++
include/svx/EnhancedCustomShapeTypeNames.hxx | 35 +
include/svx/IAccessibleParent.hxx | 102 ++
include/svx/IAccessibleViewForwarder.hxx | 100 ++
include/svx/IAccessibleViewForwarderListener.hxx | 52 +
include/svx/ImageMapInfo.hxx | 55 +
include/svx/Palette.hxx | 44 +
include/svx/PaletteManager.hxx | 79 +
include/svx/ParaLineSpacingPopup.hxx | 51 +
include/svx/ParaSpacingControl.hxx | 121 ++
include/svx/ParseContext.hxx | 78 +
include/svx/ShapeTypeHandler.hxx | 199 +++
include/svx/SmartTagItem.hxx | 82 +
include/svx/SmartTagMgr.hxx | 230 +++
include/svx/SpellDialogChildWindow.hxx | 117 ++
include/svx/SvxColorChildWindow.hxx | 40 +
include/svx/SvxColorValueSet.hxx | 47 +
include/svx/SvxNumOptionsTabPageHelper.hxx | 50 +
include/svx/SvxPresetListBox.hxx | 66 +
include/svx/SvxShapeTypes.hxx | 72 +
include/svx/TextCharacterSpacingPopup.hxx | 48 +
include/svx/TextUnderlinePopup.hxx | 49 +
include/svx/UnoNamespaceMap.hxx | 36 +
include/svx/XPropertyEntry.hxx | 54 +
include/svx/algitem.hxx | 97 ++
include/svx/anchorid.hxx | 46 +
include/svx/autoformathelper.hxx | 222 +++
include/svx/bmpmask.hxx | 177 ++
include/svx/camera3d.hxx | 68 +
include/svx/charmap.hxx | 163 ++
include/svx/charthelper.hxx | 61 +
include/svx/chrtitem.hxx | 152 ++
include/svx/clipboardctl.hxx | 57 +
include/svx/clipfmtitem.hxx | 62 +
include/svx/colorbox.hxx | 94 ++
include/svx/colorwindow.hxx | 139 ++
include/svx/compressgraphicdialog.hxx | 102 ++
include/svx/connctrl.hxx | 69 +
include/svx/contdlg.hxx | 77 +
include/svx/ctredlin.hxx | 337 ++++
include/svx/cube3d.hxx | 95 ++
include/svx/dataaccessdescriptor.hxx | 131 ++
include/svx/databaselocationinput.hxx | 82 +
include/svx/databaseregistrationui.hxx | 42 +
include/svx/dbaexchange.hxx | 275 ++++
include/svx/dbaobjectex.hxx | 73 +
include/svx/def3d.hxx | 46 +
include/svx/deflt3d.hxx | 97 ++
include/svx/dialcontrol.hxx | 171 ++
include/svx/dialmgr.hxx | 30 +
include/svx/dialogs.hrc | 120 ++
include/svx/dlgctl3d.hxx | 184 +++
include/svx/dlgctrl.hxx | 412 +++++
include/svx/dlgutil.hxx | 38 +
include/svx/drawitem.hxx | 201 +++
include/svx/dstribut_enum.hxx | 42 +
include/svx/e3ditem.hxx | 49 +
include/svx/e3dsceneupdater.hxx | 70 +
include/svx/e3dundo.hxx | 107 ++
include/svx/extedit.hxx | 62 +
include/svx/extrusionbar.hxx | 58 +
include/svx/f3dchild.hxx | 44 +
include/svx/fillctrl.hxx | 111 ++
include/svx/flagsdef.hxx | 130 ++
include/svx/float3d.hxx | 291 ++++
include/svx/fmdmod.hxx | 39 +
include/svx/fmdpage.hxx | 64 +
include/svx/fmglob.hxx | 52 +
include/svx/fmgridcl.hxx | 199 +++
include/svx/fmgridif.hxx | 533 ++++++
include/svx/fmmodel.hxx | 84 +
include/svx/fmobjfac.hxx | 40 +
include/svx/fmpage.hxx | 79 +
include/svx/fmsearch.hxx | 66 +
include/svx/fmshell.hxx | 171 ++
include/svx/fmsrccfg.hxx | 145 ++
include/svx/fmsrcimp.hxx | 349 ++++
include/svx/fmtools.hxx | 175 ++
include/svx/fmview.hxx | 156 ++
include/svx/fntctrl.hxx | 75 +
include/svx/fontwork.hxx | 142 ++
include/svx/fontworkbar.hxx | 58 +
include/svx/fontworkgallery.hxx | 80 +
include/svx/formatpaintbrushctrl.hxx | 59 +
include/svx/framebordertype.hxx | 56 +
include/svx/framelink.hxx | 205 +++
include/svx/framelinkarray.hxx | 324 ++++
include/svx/frmdirlbox.hxx | 71 +
include/svx/frmsel.hxx | 192 +++
include/svx/galctrl.hxx | 120 ++
include/svx/gallery.hxx | 137 ++
include/svx/gallery1.hxx | 138 ++
include/svx/galleryitem.hxx | 68 +
include/svx/galmisc.hxx | 197 +++
include/svx/galtheme.hxx | 217 +++
include/svx/globl3d.hxx | 36 +
include/svx/grafctrl.hxx | 121 ++
include/svx/graphctl.hxx | 161 ++
include/svx/graphichelper.hxx | 43 +
include/svx/grfcrop.hxx | 69 +
include/svx/grfflt.hxx | 43 +
include/svx/gridctrl.hxx | 599 +++++++
include/svx/hdft.hxx | 134 ++
include/svx/helperhittest3d.hxx | 99 ++
include/svx/hexcolorcontrol.hxx | 57 +
include/svx/hlnkitem.hxx | 105 ++
include/svx/hyperdlg.hxx | 50 +
include/svx/ifaceids.hxx | 36 +
include/svx/imapdlg.hxx | 145 ++
include/svx/insctrl.hxx | 46 +
include/svx/ipolypolygoneditorcontroller.hxx | 77 +
include/svx/itemwin.hxx | 64 +
include/svx/itextprovider.hxx | 42 +
include/svx/labelitemwindow.hxx | 30 +
include/svx/langbox.hxx | 117 ++
include/svx/lathe3d.hxx | 125 ++
include/svx/layctrl.hxx | 66 +
include/svx/lboxctrl.hxx | 56 +
include/svx/legacyitem.hxx | 60 +
include/svx/linectrl.hxx | 87 +
include/svx/linkwarn.hxx | 38 +
include/svx/measctrl.hxx | 55 +
include/svx/modctrl.hxx | 55 +
include/svx/msdffdef.hxx | 858 ++++++++++
include/svx/nbdtmg.hxx | 210 +++
include/svx/nbdtmgfact.hxx | 30 +
include/svx/numfmtsh.hxx | 228 +++
include/svx/numinf.hxx | 74 +
include/svx/numvset.hxx | 104 ++
include/svx/obj3d.hxx | 190 +++
include/svx/objfac3d.hxx | 48 +
include/svx/ofaitem.hxx | 62 +
include/svx/optgenrl.hxx | 45 +
include/svx/optgrid.hxx | 136 ++
include/svx/pagectrl.hxx | 153 ++
include/svx/pageitem.hxx | 117 ++
include/svx/pagenumberlistbox.hxx | 45 +
include/svx/papersizelistbox.hxx | 54 +
include/svx/paraprev.hxx | 103 ++
include/svx/passwd.hxx | 55 +
include/svx/polypolygoneditor.hxx | 67 +
include/svx/postattr.hxx | 100 ++
include/svx/pszctrl.hxx | 48 +
include/svx/rectenum.hxx | 37 +
include/svx/relfld.hxx | 73 +
include/svx/rotmodit.hxx | 61 +
include/svx/rubydialog.hxx | 140 ++
include/svx/ruler.hxx | 285 ++++
include/svx/rulritem.hxx | 232 +++
include/svx/samecontentlistbox.hxx | 32 +
include/svx/scene3d.hxx | 193 +++
include/svx/sdangitm.hxx | 42 +
include/svx/sdasitm.hxx | 99 ++
include/svx/sderitm.hxx | 31 +
include/svx/sdgcpitm.hxx | 45 +
include/svx/sdggaitm.hxx | 46 +
include/svx/sdgluitm.hxx | 58 +
include/svx/sdgmoitm.hxx | 52 +
include/svx/sdmetitm.hxx | 46 +
include/svx/sdooitm.hxx | 43 +
include/svx/sdprcitm.hxx | 57 +
include/svx/sdr/animation/animationstate.hxx | 66 +
include/svx/sdr/animation/objectanimator.hxx | 44 +
include/svx/sdr/animation/scheduler.hxx | 102 ++
.../sdr/attribute/sdrallfillattributeshelper.hxx | 93 ++
include/svx/sdr/contact/displayinfo.hxx | 107 ++
include/svx/sdr/contact/objectcontact.hxx | 175 ++
.../svx/sdr/contact/objectcontactofpageview.hxx | 120 ++
include/svx/sdr/contact/viewcontact.hxx | 148 ++
include/svx/sdr/contact/viewcontactofe3dscene.hxx | 103 ++
.../svx/sdr/contact/viewcontactofsdrmediaobj.hxx | 75 +
include/svx/sdr/contact/viewcontactofsdrobj.hxx | 87 +
include/svx/sdr/contact/viewcontactofvirtobj.hxx | 54 +
include/svx/sdr/contact/viewobjectcontact.hxx | 138 ++
.../svx/sdr/contact/viewobjectcontactofsdrobj.hxx | 65 +
.../sdr/contact/viewobjectcontactredirector.hxx | 55 +
.../svx/sdr/overlay/overlayanimatedbitmapex.hxx | 84 +
include/svx/sdr/overlay/overlaybitmapex.hxx | 64 +
include/svx/sdr/overlay/overlaymanager.hxx | 139 ++
include/svx/sdr/overlay/overlayobject.hxx | 206 +++
include/svx/sdr/overlay/overlayobjectlist.hxx | 72 +
include/svx/sdr/overlay/overlaypolypolygon.hxx | 56 +
.../overlay/overlayprimitive2dsequenceobject.hxx | 50 +
include/svx/sdr/overlay/overlayselection.hxx | 80 +
.../sdr/primitive2d/sdrframeborderprimitive2d.hxx | 132 ++
.../svx/sdr/primitive2d/svx_primitivetypes2d.hxx | 55 +
include/svx/sdr/properties/defaultproperties.hxx | 111 ++
include/svx/sdr/properties/properties.hxx | 213 +++
include/svx/sdr/table/tablecontroller.hxx | 198 +++
include/svx/sdr/table/tabledesign.hxx | 48 +
include/svx/sdrhittesthelper.hxx | 73 +
include/svx/sdrmasterpagedescriptor.hxx | 79 +
include/svx/sdrobjectfilter.hxx | 50 +
include/svx/sdrobjectuser.hxx | 51 +
include/svx/sdrpageuser.hxx | 51 +
include/svx/sdrpagewindow.hxx | 99 ++
include/svx/sdrpaintwindow.hxx | 150 ++
include/svx/sdrundomanager.hxx | 70 +
include/svx/sdshcitm.hxx | 31 +
include/svx/sdshitm.hxx | 31 +
include/svx/sdshtitm.hxx | 31 +
include/svx/sdsxyitm.hxx | 35 +
include/svx/sdtaaitm.hxx | 38 +
include/svx/sdtacitm.hxx | 36 +
include/svx/sdtaditm.hxx | 50 +
include/svx/sdtagitm.hxx | 35 +
include/svx/sdtaiitm.hxx | 51 +
include/svx/sdtaitm.hxx | 74 +
include/svx/sdtakitm.hxx | 94 ++
include/svx/sdtayitm.hxx | 35 +
include/svx/sdtcfitm.hxx | 31 +
include/svx/sdtditm.hxx | 43 +
include/svx/sdtfchim.hxx | 44 +
include/svx/sdtfsitm.hxx | 66 +
include/svx/sdtmfitm.hxx | 43 +
include/svx/sdynitm.hxx | 41 +
include/svx/searchcharmap.hxx | 70 +
include/svx/selctrl.hxx | 46 +
include/svx/selectioncontroller.hxx | 86 +
include/svx/shapeproperty.hxx | 42 +
include/svx/shapepropertynotifier.hxx | 145 ++
include/svx/sidebar/AreaPropertyPanelBase.hxx | 178 ++
.../svx/sidebar/AreaTransparencyGradientPopup.hxx | 68 +
.../svx/sidebar/ContextChangeEventMultiplexer.hxx | 65 +
include/svx/sidebar/LinePropertyPanelBase.hxx | 147 ++
include/svx/sidebar/LineWidthPopup.hxx | 71 +
include/svx/sidebar/SelectionAnalyzer.hxx | 75 +
include/svx/sidebar/SelectionChangeHandler.hxx | 77 +
include/svx/sidebar/ValueSetWithTextControl.hxx | 63 +
include/svx/spacinglistbox.hxx | 35 +
include/svx/sphere3d.hxx | 91 ++
include/svx/srchdlg.hxx | 269 +++
include/svx/strarray.hxx | 53 +
include/svx/strings.hrc | 1717 ++++++++++++++++++++
include/svx/svdcrtv.hxx | 167 ++
include/svx/svddef.hxx | 432 +++++
include/svx/svddrag.hxx | 165 ++
include/svx/svddrgmt.hxx | 305 ++++
include/svx/svddrgv.hxx | 233 +++
include/svx/svdedtv.hxx | 414 +++++
include/svx/svdedxv.hxx | 303 ++++
include/svx/svdetc.hxx | 211 +++
include/svx/svdglev.hxx | 85 +
include/svx/svdglue.hxx | 149 ++
include/svx/svdhdl.hxx | 537 ++++++
include/svx/svdhlpln.hxx | 91 ++
include/svx/svditer.hxx | 74 +
include/svx/svdlayer.hxx | 166 ++
include/svx/svdmark.hxx | 263 +++
include/svx/svdmodel.hxx | 633 ++++++++
include/svx/svdmrkv.hxx | 457 ++++++
include/svx/svdoashp.hxx | 256 +++
include/svx/svdoattr.hxx | 72 +
include/svx/svdobj.hxx | 1099 +++++++++++++
include/svx/svdocapt.hxx | 159 ++
include/svx/svdocirc.hxx | 147 ++
include/svx/svdoedge.hxx | 412 +++++
include/svx/svdograf.hxx | 302 ++++
include/svx/svdogrp.hxx | 114 ++
include/svx/svdomeas.hxx | 201 +++
include/svx/svdomedia.hxx | 85 +
include/svx/svdoole2.hxx | 205 +++
include/svx/svdopage.hxx | 72 +
include/svx/svdopath.hxx | 169 ++
include/svx/svdorect.hxx | 129 ++
include/svx/svdotable.hxx | 292 ++++
include/svx/svdotext.hxx | 636 ++++++++
include/svx/svdouno.hxx | 146 ++
include/svx/svdoutl.hxx | 53 +
include/svx/svdovirt.hxx | 150 ++
include/svx/svdpage.hxx | 536 ++++++
include/svx/svdpagv.hxx | 262 +++
include/svx/svdpntv.hxx | 520 ++++++
include/svx/svdpoev.hxx | 85 +
include/svx/svdpool.hxx | 50 +
include/svx/svdsnpv.hxx | 289 ++++
include/svx/svdsob.hxx | 92 ++
include/svx/svdtext.hxx | 83 +
include/svx/svdtrans.hxx | 302 ++++
include/svx/svdtypes.hxx | 94 ++
include/svx/svdundo.hxx | 746 +++++++++
include/svx/svdview.hxx | 281 ++++
include/svx/svdviter.hxx | 87 +
include/svx/svdxcgv.hxx | 116 ++
include/svx/svx3ditems.hxx | 319 ++++
include/svx/svxdlg.hxx | 464 ++++++
include/svx/svxdllapi.h | 40 +
include/svx/svxerr.hxx | 62 +
include/svx/svxgrahicitem.hxx | 44 +
include/svx/svxids.hrc | 1023 ++++++++++++
include/svx/svxitems.hrc | 94 ++
include/svx/swframeexample.hxx | 94 ++
include/svx/swframeposstrings.hxx | 83 +
include/svx/swframetypes.hxx | 48 +
include/svx/swframevalidation.hxx | 85 +
include/svx/sxcecitm.hxx | 98 ++
include/svx/sxcgitm.hxx | 40 +
include/svx/sxciaitm.hxx | 35 +
include/svx/sxcllitm.hxx | 61 +
include/svx/sxctitm.hxx | 41 +
include/svx/sxekitm.hxx | 44 +
include/svx/sxelditm.hxx | 48 +
include/svx/sxenditm.hxx | 72 +
include/svx/sxmbritm.hxx | 46 +
include/svx/sxmlhitm.hxx | 65 +
include/svx/sxmtfitm.hxx | 70 +
include/svx/sxmtpitm.hxx | 62 +
include/svx/sxmtritm.hxx | 54 +
include/svx/sxmuitm.hxx | 44 +
include/svx/tabarea.hxx | 37 +
include/svx/tabline.hxx | 35 +
include/svx/tbcontrl.hxx | 281 ++++
include/svx/tbxcolor.hxx | 55 +
include/svx/tbxcolorupdate.hxx | 143 ++
include/svx/tbxctl.hxx | 54 +
include/svx/transfrmhelper.hxx | 51 +
include/svx/txencbox.hxx | 163 ++
include/svx/txenctab.hxx | 35 +
include/svx/ucsubset.hxx | 73 +
include/svx/uiobject.hxx | 37 +
include/svx/unoapi.hxx | 95 ++
include/svx/unobrushitemhelper.hxx | 54 +
include/svx/unofill.hxx | 37 +
include/svx/unomaster.hxx | 76 +
include/svx/unomid.hxx | 97 ++
include/svx/unomod.hxx | 67 +
include/svx/unomodel.hxx | 109 ++
include/svx/unopage.hxx | 142 ++
include/svx/unopool.hxx | 97 ++
include/svx/unoprov.hxx | 125 ++
include/svx/unoshape.hxx | 858 ++++++++++
include/svx/unoshprp.hxx | 564 +++++++
include/svx/unoshtxt.hxx | 89 +
include/svx/verttexttbxctrl.hxx | 77 +
include/svx/view3d.hxx | 120 ++
include/svx/viewlayoutitem.hxx | 51 +
include/svx/viewpt3d.hxx | 95 ++
include/svx/weldeditview.hxx | 87 +
include/svx/xbitmap.hxx | 59 +
include/svx/xbtmpit.hxx | 67 +
include/svx/xcolit.hxx | 57 +
include/svx/xdash.hxx | 69 +
include/svx/xdef.hxx | 149 ++
include/svx/xenum.hxx | 31 +
include/svx/xfillit0.hxx | 55 +
include/svx/xflasit.hxx | 44 +
include/svx/xflbckit.hxx | 47 +
include/svx/xflbmpit.hxx | 46 +
include/svx/xflbmsli.hxx | 41 +
include/svx/xflbmsxy.hxx | 60 +
include/svx/xflbmtit.hxx | 42 +
include/svx/xflboxy.hxx | 54 +
include/svx/xflbstit.hxx | 42 +
include/svx/xflbtoxy.hxx | 54 +
include/svx/xflclit.hxx | 56 +
include/svx/xflftrit.hxx | 63 +
include/svx/xflgrit.hxx | 64 +
include/svx/xflhtit.hxx | 63 +
include/svx/xfltrit.hxx | 46 +
include/svx/xftadit.hxx | 48 +
include/svx/xftdiit.hxx | 42 +
include/svx/xftmrit.hxx | 42 +
include/svx/xftouit.hxx | 44 +
include/svx/xftshcit.hxx | 44 +
include/svx/xftshit.hxx | 48 +
include/svx/xftshxy.hxx | 57 +
include/svx/xftstit.hxx | 43 +
include/svx/xgrad.hxx | 83 +
include/svx/xgrscit.hxx | 45 +
include/svx/xhatch.hxx | 57 +
include/svx/xit.hxx | 68 +
include/svx/xlineit0.hxx | 48 +
include/svx/xlinjoit.hxx | 49 +
include/svx/xlnasit.hxx | 44 +
include/svx/xlncapit.hxx | 50 +
include/svx/xlnclit.hxx | 49 +
include/svx/xlndsit.hxx | 66 +
include/svx/xlnedcit.hxx | 45 +
include/svx/xlnedit.hxx | 61 +
include/svx/xlnedwit.hxx | 48 +
include/svx/xlnstcit.hxx | 45 +
include/svx/xlnstit.hxx | 61 +
include/svx/xlnstwit.hxx | 48 +
include/svx/xlntrit.hxx | 45 +
include/svx/xlnwtit.hxx | 46 +
include/svx/xmleohlp.hxx | 127 ++
include/svx/xmlexchg.hxx | 89 +
include/svx/xmlgrhlp.hxx | 125 ++
include/svx/xmlsecctrl.hxx | 46 +
include/svx/xoutbmp.hxx | 76 +
include/svx/xpoly.hxx | 154 ++
include/svx/xpool.hxx | 50 +
include/svx/xsflclit.hxx | 40 +
include/svx/xtable.hxx | 404 +++++
include/svx/xtextit0.hxx | 61 +
include/svx/zoom_def.hxx | 30 +
include/svx/zoomctrl.hxx | 62 +
include/svx/zoomsliderctrl.hxx | 56 +
include/svx/zoomslideritem.hxx | 54 +
417 files changed, 52192 insertions(+)
create mode 100644 include/svx/AccessibilityCheckDialog.hxx
create mode 100644 include/svx/AccessibleControlShape.hxx
create mode 100644 include/svx/AccessibleGraphicShape.hxx
create mode 100644 include/svx/AccessibleOLEShape.hxx
create mode 100644 include/svx/AccessibleShape.hxx
create mode 100644 include/svx/AccessibleShapeInfo.hxx
create mode 100644 include/svx/AccessibleShapeTreeInfo.hxx
create mode 100644 include/svx/AccessibleTextHelper.hxx
create mode 100644 include/svx/ActionDescriptionProvider.hxx
create mode 100644 include/svx/ChildrenManager.hxx
create mode 100644 include/svx/ClassificationCommon.hxx
create mode 100644 include/svx/ClassificationDialog.hxx
create mode 100644 include/svx/ClassificationField.hxx
create mode 100644 include/svx/ColorSets.hxx
create mode 100644 include/svx/CommonStyleManager.hxx
create mode 100644 include/svx/DiagramDataInterface.hxx
create mode 100644 include/svx/EnhancedCustomShape2d.hxx
create mode 100644 include/svx/EnhancedCustomShapeFunctionParser.hxx
create mode 100644 include/svx/EnhancedCustomShapeGeometry.hxx
create mode 100644 include/svx/EnhancedCustomShapeTypeNames.hxx
create mode 100644 include/svx/IAccessibleParent.hxx
create mode 100644 include/svx/IAccessibleViewForwarder.hxx
create mode 100644 include/svx/IAccessibleViewForwarderListener.hxx
create mode 100644 include/svx/ImageMapInfo.hxx
create mode 100644 include/svx/Palette.hxx
create mode 100644 include/svx/PaletteManager.hxx
create mode 100644 include/svx/ParaLineSpacingPopup.hxx
create mode 100644 include/svx/ParaSpacingControl.hxx
create mode 100644 include/svx/ParseContext.hxx
create mode 100644 include/svx/ShapeTypeHandler.hxx
create mode 100644 include/svx/SmartTagItem.hxx
create mode 100644 include/svx/SmartTagMgr.hxx
create mode 100644 include/svx/SpellDialogChildWindow.hxx
create mode 100644 include/svx/SvxColorChildWindow.hxx
create mode 100644 include/svx/SvxColorValueSet.hxx
create mode 100644 include/svx/SvxNumOptionsTabPageHelper.hxx
create mode 100644 include/svx/SvxPresetListBox.hxx
create mode 100644 include/svx/SvxShapeTypes.hxx
create mode 100644 include/svx/TextCharacterSpacingPopup.hxx
create mode 100644 include/svx/TextUnderlinePopup.hxx
create mode 100644 include/svx/UnoNamespaceMap.hxx
create mode 100644 include/svx/XPropertyEntry.hxx
create mode 100644 include/svx/algitem.hxx
create mode 100644 include/svx/anchorid.hxx
create mode 100644 include/svx/autoformathelper.hxx
create mode 100644 include/svx/bmpmask.hxx
create mode 100644 include/svx/camera3d.hxx
create mode 100644 include/svx/charmap.hxx
create mode 100644 include/svx/charthelper.hxx
create mode 100644 include/svx/chrtitem.hxx
create mode 100644 include/svx/clipboardctl.hxx
create mode 100644 include/svx/clipfmtitem.hxx
create mode 100644 include/svx/colorbox.hxx
create mode 100644 include/svx/colorwindow.hxx
create mode 100644 include/svx/compressgraphicdialog.hxx
create mode 100644 include/svx/connctrl.hxx
create mode 100644 include/svx/contdlg.hxx
create mode 100644 include/svx/ctredlin.hxx
create mode 100644 include/svx/cube3d.hxx
create mode 100644 include/svx/dataaccessdescriptor.hxx
create mode 100644 include/svx/databaselocationinput.hxx
create mode 100644 include/svx/databaseregistrationui.hxx
create mode 100644 include/svx/dbaexchange.hxx
create mode 100644 include/svx/dbaobjectex.hxx
create mode 100644 include/svx/def3d.hxx
create mode 100644 include/svx/deflt3d.hxx
create mode 100644 include/svx/dialcontrol.hxx
create mode 100644 include/svx/dialmgr.hxx
create mode 100644 include/svx/dialogs.hrc
create mode 100644 include/svx/dlgctl3d.hxx
create mode 100644 include/svx/dlgctrl.hxx
create mode 100644 include/svx/dlgutil.hxx
create mode 100644 include/svx/drawitem.hxx
create mode 100644 include/svx/dstribut_enum.hxx
create mode 100644 include/svx/e3ditem.hxx
create mode 100644 include/svx/e3dsceneupdater.hxx
create mode 100644 include/svx/e3dundo.hxx
create mode 100644 include/svx/extedit.hxx
create mode 100644 include/svx/extrusionbar.hxx
create mode 100644 include/svx/f3dchild.hxx
create mode 100644 include/svx/fillctrl.hxx
create mode 100644 include/svx/flagsdef.hxx
create mode 100644 include/svx/float3d.hxx
create mode 100644 include/svx/fmdmod.hxx
create mode 100644 include/svx/fmdpage.hxx
create mode 100644 include/svx/fmglob.hxx
create mode 100644 include/svx/fmgridcl.hxx
create mode 100644 include/svx/fmgridif.hxx
create mode 100644 include/svx/fmmodel.hxx
create mode 100644 include/svx/fmobjfac.hxx
create mode 100644 include/svx/fmpage.hxx
create mode 100644 include/svx/fmsearch.hxx
create mode 100644 include/svx/fmshell.hxx
create mode 100644 include/svx/fmsrccfg.hxx
create mode 100644 include/svx/fmsrcimp.hxx
create mode 100644 include/svx/fmtools.hxx
create mode 100644 include/svx/fmview.hxx
create mode 100644 include/svx/fntctrl.hxx
create mode 100644 include/svx/fontwork.hxx
create mode 100644 include/svx/fontworkbar.hxx
create mode 100644 include/svx/fontworkgallery.hxx
create mode 100644 include/svx/formatpaintbrushctrl.hxx
create mode 100644 include/svx/framebordertype.hxx
create mode 100644 include/svx/framelink.hxx
create mode 100644 include/svx/framelinkarray.hxx
create mode 100644 include/svx/frmdirlbox.hxx
create mode 100644 include/svx/frmsel.hxx
create mode 100644 include/svx/galctrl.hxx
create mode 100644 include/svx/gallery.hxx
create mode 100644 include/svx/gallery1.hxx
create mode 100644 include/svx/galleryitem.hxx
create mode 100644 include/svx/galmisc.hxx
create mode 100644 include/svx/galtheme.hxx
create mode 100644 include/svx/globl3d.hxx
create mode 100644 include/svx/grafctrl.hxx
create mode 100644 include/svx/graphctl.hxx
create mode 100644 include/svx/graphichelper.hxx
create mode 100644 include/svx/grfcrop.hxx
create mode 100644 include/svx/grfflt.hxx
create mode 100644 include/svx/gridctrl.hxx
create mode 100644 include/svx/hdft.hxx
create mode 100644 include/svx/helperhittest3d.hxx
create mode 100644 include/svx/hexcolorcontrol.hxx
create mode 100644 include/svx/hlnkitem.hxx
create mode 100644 include/svx/hyperdlg.hxx
create mode 100644 include/svx/ifaceids.hxx
create mode 100644 include/svx/imapdlg.hxx
create mode 100644 include/svx/insctrl.hxx
create mode 100644 include/svx/ipolypolygoneditorcontroller.hxx
create mode 100644 include/svx/itemwin.hxx
create mode 100644 include/svx/itextprovider.hxx
create mode 100644 include/svx/labelitemwindow.hxx
create mode 100644 include/svx/langbox.hxx
create mode 100644 include/svx/lathe3d.hxx
create mode 100644 include/svx/layctrl.hxx
create mode 100644 include/svx/lboxctrl.hxx
create mode 100644 include/svx/legacyitem.hxx
create mode 100644 include/svx/linectrl.hxx
create mode 100644 include/svx/linkwarn.hxx
create mode 100644 include/svx/measctrl.hxx
create mode 100644 include/svx/modctrl.hxx
create mode 100644 include/svx/msdffdef.hxx
create mode 100644 include/svx/nbdtmg.hxx
create mode 100644 include/svx/nbdtmgfact.hxx
create mode 100644 include/svx/numfmtsh.hxx
create mode 100644 include/svx/numinf.hxx
create mode 100644 include/svx/numvset.hxx
create mode 100644 include/svx/obj3d.hxx
create mode 100644 include/svx/objfac3d.hxx
create mode 100644 include/svx/ofaitem.hxx
create mode 100644 include/svx/optgenrl.hxx
create mode 100644 include/svx/optgrid.hxx
create mode 100644 include/svx/pagectrl.hxx
create mode 100644 include/svx/pageitem.hxx
create mode 100644 include/svx/pagenumberlistbox.hxx
create mode 100644 include/svx/papersizelistbox.hxx
create mode 100644 include/svx/paraprev.hxx
create mode 100644 include/svx/passwd.hxx
create mode 100644 include/svx/polypolygoneditor.hxx
create mode 100644 include/svx/postattr.hxx
create mode 100644 include/svx/pszctrl.hxx
create mode 100644 include/svx/rectenum.hxx
create mode 100644 include/svx/relfld.hxx
create mode 100644 include/svx/rotmodit.hxx
create mode 100644 include/svx/rubydialog.hxx
create mode 100644 include/svx/ruler.hxx
create mode 100644 include/svx/rulritem.hxx
create mode 100644 include/svx/samecontentlistbox.hxx
create mode 100644 include/svx/scene3d.hxx
create mode 100644 include/svx/sdangitm.hxx
create mode 100644 include/svx/sdasitm.hxx
create mode 100644 include/svx/sderitm.hxx
create mode 100644 include/svx/sdgcpitm.hxx
create mode 100644 include/svx/sdggaitm.hxx
create mode 100644 include/svx/sdgluitm.hxx
create mode 100644 include/svx/sdgmoitm.hxx
create mode 100644 include/svx/sdmetitm.hxx
create mode 100644 include/svx/sdooitm.hxx
create mode 100644 include/svx/sdprcitm.hxx
create mode 100644 include/svx/sdr/animation/animationstate.hxx
create mode 100644 include/svx/sdr/animation/objectanimator.hxx
create mode 100644 include/svx/sdr/animation/scheduler.hxx
create mode 100644 include/svx/sdr/attribute/sdrallfillattributeshelper.hxx
create mode 100644 include/svx/sdr/contact/displayinfo.hxx
create mode 100644 include/svx/sdr/contact/objectcontact.hxx
create mode 100644 include/svx/sdr/contact/objectcontactofpageview.hxx
create mode 100644 include/svx/sdr/contact/viewcontact.hxx
create mode 100644 include/svx/sdr/contact/viewcontactofe3dscene.hxx
create mode 100644 include/svx/sdr/contact/viewcontactofsdrmediaobj.hxx
create mode 100644 include/svx/sdr/contact/viewcontactofsdrobj.hxx
create mode 100644 include/svx/sdr/contact/viewcontactofvirtobj.hxx
create mode 100644 include/svx/sdr/contact/viewobjectcontact.hxx
create mode 100644 include/svx/sdr/contact/viewobjectcontactofsdrobj.hxx
create mode 100644 include/svx/sdr/contact/viewobjectcontactredirector.hxx
create mode 100644 include/svx/sdr/overlay/overlayanimatedbitmapex.hxx
create mode 100644 include/svx/sdr/overlay/overlaybitmapex.hxx
create mode 100644 include/svx/sdr/overlay/overlaymanager.hxx
create mode 100644 include/svx/sdr/overlay/overlayobject.hxx
create mode 100644 include/svx/sdr/overlay/overlayobjectlist.hxx
create mode 100644 include/svx/sdr/overlay/overlaypolypolygon.hxx
create mode 100644 include/svx/sdr/overlay/overlayprimitive2dsequenceobject.hxx
create mode 100644 include/svx/sdr/overlay/overlayselection.hxx
create mode 100644 include/svx/sdr/primitive2d/sdrframeborderprimitive2d.hxx
create mode 100644 include/svx/sdr/primitive2d/svx_primitivetypes2d.hxx
create mode 100644 include/svx/sdr/properties/defaultproperties.hxx
create mode 100644 include/svx/sdr/properties/properties.hxx
create mode 100644 include/svx/sdr/table/tablecontroller.hxx
create mode 100644 include/svx/sdr/table/tabledesign.hxx
create mode 100644 include/svx/sdrhittesthelper.hxx
create mode 100644 include/svx/sdrmasterpagedescriptor.hxx
create mode 100644 include/svx/sdrobjectfilter.hxx
create mode 100644 include/svx/sdrobjectuser.hxx
create mode 100644 include/svx/sdrpageuser.hxx
create mode 100644 include/svx/sdrpagewindow.hxx
create mode 100644 include/svx/sdrpaintwindow.hxx
create mode 100644 include/svx/sdrundomanager.hxx
create mode 100644 include/svx/sdshcitm.hxx
create mode 100644 include/svx/sdshitm.hxx
create mode 100644 include/svx/sdshtitm.hxx
create mode 100644 include/svx/sdsxyitm.hxx
create mode 100644 include/svx/sdtaaitm.hxx
create mode 100644 include/svx/sdtacitm.hxx
create mode 100644 include/svx/sdtaditm.hxx
create mode 100644 include/svx/sdtagitm.hxx
create mode 100644 include/svx/sdtaiitm.hxx
create mode 100644 include/svx/sdtaitm.hxx
create mode 100644 include/svx/sdtakitm.hxx
create mode 100644 include/svx/sdtayitm.hxx
create mode 100644 include/svx/sdtcfitm.hxx
create mode 100644 include/svx/sdtditm.hxx
create mode 100644 include/svx/sdtfchim.hxx
create mode 100644 include/svx/sdtfsitm.hxx
create mode 100644 include/svx/sdtmfitm.hxx
create mode 100644 include/svx/sdynitm.hxx
create mode 100644 include/svx/searchcharmap.hxx
create mode 100644 include/svx/selctrl.hxx
create mode 100644 include/svx/selectioncontroller.hxx
create mode 100644 include/svx/shapeproperty.hxx
create mode 100644 include/svx/shapepropertynotifier.hxx
create mode 100644 include/svx/sidebar/AreaPropertyPanelBase.hxx
create mode 100644 include/svx/sidebar/AreaTransparencyGradientPopup.hxx
create mode 100644 include/svx/sidebar/ContextChangeEventMultiplexer.hxx
create mode 100644 include/svx/sidebar/LinePropertyPanelBase.hxx
create mode 100644 include/svx/sidebar/LineWidthPopup.hxx
create mode 100644 include/svx/sidebar/SelectionAnalyzer.hxx
create mode 100644 include/svx/sidebar/SelectionChangeHandler.hxx
create mode 100644 include/svx/sidebar/ValueSetWithTextControl.hxx
create mode 100644 include/svx/spacinglistbox.hxx
create mode 100644 include/svx/sphere3d.hxx
create mode 100644 include/svx/srchdlg.hxx
create mode 100644 include/svx/strarray.hxx
create mode 100644 include/svx/strings.hrc
create mode 100644 include/svx/svdcrtv.hxx
create mode 100644 include/svx/svddef.hxx
create mode 100644 include/svx/svddrag.hxx
create mode 100644 include/svx/svddrgmt.hxx
create mode 100644 include/svx/svddrgv.hxx
create mode 100644 include/svx/svdedtv.hxx
create mode 100644 include/svx/svdedxv.hxx
create mode 100644 include/svx/svdetc.hxx
create mode 100644 include/svx/svdglev.hxx
create mode 100644 include/svx/svdglue.hxx
create mode 100644 include/svx/svdhdl.hxx
create mode 100644 include/svx/svdhlpln.hxx
create mode 100644 include/svx/svditer.hxx
create mode 100644 include/svx/svdlayer.hxx
create mode 100644 include/svx/svdmark.hxx
create mode 100644 include/svx/svdmodel.hxx
create mode 100644 include/svx/svdmrkv.hxx
create mode 100644 include/svx/svdoashp.hxx
create mode 100644 include/svx/svdoattr.hxx
create mode 100644 include/svx/svdobj.hxx
create mode 100644 include/svx/svdocapt.hxx
create mode 100644 include/svx/svdocirc.hxx
create mode 100644 include/svx/svdoedge.hxx
create mode 100644 include/svx/svdograf.hxx
create mode 100644 include/svx/svdogrp.hxx
create mode 100644 include/svx/svdomeas.hxx
create mode 100644 include/svx/svdomedia.hxx
create mode 100644 include/svx/svdoole2.hxx
create mode 100644 include/svx/svdopage.hxx
create mode 100644 include/svx/svdopath.hxx
create mode 100644 include/svx/svdorect.hxx
create mode 100644 include/svx/svdotable.hxx
create mode 100644 include/svx/svdotext.hxx
create mode 100644 include/svx/svdouno.hxx
create mode 100644 include/svx/svdoutl.hxx
create mode 100644 include/svx/svdovirt.hxx
create mode 100644 include/svx/svdpage.hxx
create mode 100644 include/svx/svdpagv.hxx
create mode 100644 include/svx/svdpntv.hxx
create mode 100644 include/svx/svdpoev.hxx
create mode 100644 include/svx/svdpool.hxx
create mode 100644 include/svx/svdsnpv.hxx
create mode 100644 include/svx/svdsob.hxx
create mode 100644 include/svx/svdtext.hxx
create mode 100644 include/svx/svdtrans.hxx
create mode 100644 include/svx/svdtypes.hxx
create mode 100644 include/svx/svdundo.hxx
create mode 100644 include/svx/svdview.hxx
create mode 100644 include/svx/svdviter.hxx
create mode 100644 include/svx/svdxcgv.hxx
create mode 100644 include/svx/svx3ditems.hxx
create mode 100644 include/svx/svxdlg.hxx
create mode 100644 include/svx/svxdllapi.h
create mode 100644 include/svx/svxerr.hxx
create mode 100644 include/svx/svxgrahicitem.hxx
create mode 100644 include/svx/svxids.hrc
create mode 100644 include/svx/svxitems.hrc
create mode 100644 include/svx/swframeexample.hxx
create mode 100644 include/svx/swframeposstrings.hxx
create mode 100644 include/svx/swframetypes.hxx
create mode 100644 include/svx/swframevalidation.hxx
create mode 100644 include/svx/sxcecitm.hxx
create mode 100644 include/svx/sxcgitm.hxx
create mode 100644 include/svx/sxciaitm.hxx
create mode 100644 include/svx/sxcllitm.hxx
create mode 100644 include/svx/sxctitm.hxx
create mode 100644 include/svx/sxekitm.hxx
create mode 100644 include/svx/sxelditm.hxx
create mode 100644 include/svx/sxenditm.hxx
create mode 100644 include/svx/sxmbritm.hxx
create mode 100644 include/svx/sxmlhitm.hxx
create mode 100644 include/svx/sxmtfitm.hxx
create mode 100644 include/svx/sxmtpitm.hxx
create mode 100644 include/svx/sxmtritm.hxx
create mode 100644 include/svx/sxmuitm.hxx
create mode 100644 include/svx/tabarea.hxx
create mode 100644 include/svx/tabline.hxx
create mode 100644 include/svx/tbcontrl.hxx
create mode 100644 include/svx/tbxcolor.hxx
create mode 100644 include/svx/tbxcolorupdate.hxx
create mode 100644 include/svx/tbxctl.hxx
create mode 100644 include/svx/transfrmhelper.hxx
create mode 100644 include/svx/txencbox.hxx
create mode 100644 include/svx/txenctab.hxx
create mode 100644 include/svx/ucsubset.hxx
create mode 100644 include/svx/uiobject.hxx
create mode 100644 include/svx/unoapi.hxx
create mode 100644 include/svx/unobrushitemhelper.hxx
create mode 100644 include/svx/unofill.hxx
create mode 100644 include/svx/unomaster.hxx
create mode 100644 include/svx/unomid.hxx
create mode 100644 include/svx/unomod.hxx
create mode 100644 include/svx/unomodel.hxx
create mode 100644 include/svx/unopage.hxx
create mode 100644 include/svx/unopool.hxx
create mode 100644 include/svx/unoprov.hxx
create mode 100644 include/svx/unoshape.hxx
create mode 100644 include/svx/unoshprp.hxx
create mode 100644 include/svx/unoshtxt.hxx
create mode 100644 include/svx/verttexttbxctrl.hxx
create mode 100644 include/svx/view3d.hxx
create mode 100644 include/svx/viewlayoutitem.hxx
create mode 100644 include/svx/viewpt3d.hxx
create mode 100644 include/svx/weldeditview.hxx
create mode 100644 include/svx/xbitmap.hxx
create mode 100644 include/svx/xbtmpit.hxx
create mode 100644 include/svx/xcolit.hxx
create mode 100644 include/svx/xdash.hxx
create mode 100644 include/svx/xdef.hxx
create mode 100644 include/svx/xenum.hxx
create mode 100644 include/svx/xfillit0.hxx
create mode 100644 include/svx/xflasit.hxx
create mode 100644 include/svx/xflbckit.hxx
create mode 100644 include/svx/xflbmpit.hxx
create mode 100644 include/svx/xflbmsli.hxx
create mode 100644 include/svx/xflbmsxy.hxx
create mode 100644 include/svx/xflbmtit.hxx
create mode 100644 include/svx/xflboxy.hxx
create mode 100644 include/svx/xflbstit.hxx
create mode 100644 include/svx/xflbtoxy.hxx
create mode 100644 include/svx/xflclit.hxx
create mode 100644 include/svx/xflftrit.hxx
create mode 100644 include/svx/xflgrit.hxx
create mode 100644 include/svx/xflhtit.hxx
create mode 100644 include/svx/xfltrit.hxx
create mode 100644 include/svx/xftadit.hxx
create mode 100644 include/svx/xftdiit.hxx
create mode 100644 include/svx/xftmrit.hxx
create mode 100644 include/svx/xftouit.hxx
create mode 100644 include/svx/xftshcit.hxx
create mode 100644 include/svx/xftshit.hxx
create mode 100644 include/svx/xftshxy.hxx
create mode 100644 include/svx/xftstit.hxx
create mode 100644 include/svx/xgrad.hxx
create mode 100644 include/svx/xgrscit.hxx
create mode 100644 include/svx/xhatch.hxx
create mode 100644 include/svx/xit.hxx
create mode 100644 include/svx/xlineit0.hxx
create mode 100644 include/svx/xlinjoit.hxx
create mode 100644 include/svx/xlnasit.hxx
create mode 100644 include/svx/xlncapit.hxx
create mode 100644 include/svx/xlnclit.hxx
create mode 100644 include/svx/xlndsit.hxx
create mode 100644 include/svx/xlnedcit.hxx
create mode 100644 include/svx/xlnedit.hxx
create mode 100644 include/svx/xlnedwit.hxx
create mode 100644 include/svx/xlnstcit.hxx
create mode 100644 include/svx/xlnstit.hxx
create mode 100644 include/svx/xlnstwit.hxx
create mode 100644 include/svx/xlntrit.hxx
create mode 100644 include/svx/xlnwtit.hxx
create mode 100644 include/svx/xmleohlp.hxx
create mode 100644 include/svx/xmlexchg.hxx
create mode 100644 include/svx/xmlgrhlp.hxx
create mode 100644 include/svx/xmlsecctrl.hxx
create mode 100644 include/svx/xoutbmp.hxx
create mode 100644 include/svx/xpoly.hxx
create mode 100644 include/svx/xpool.hxx
create mode 100644 include/svx/xsflclit.hxx
create mode 100644 include/svx/xtable.hxx
create mode 100644 include/svx/xtextit0.hxx
create mode 100644 include/svx/zoom_def.hxx
create mode 100644 include/svx/zoomctrl.hxx
create mode 100644 include/svx/zoomsliderctrl.hxx
create mode 100644 include/svx/zoomslideritem.hxx
(limited to 'include/svx')
diff --git a/include/svx/AccessibilityCheckDialog.hxx b/include/svx/AccessibilityCheckDialog.hxx
new file mode 100644
index 000000000..9c17aba29
--- /dev/null
+++ b/include/svx/AccessibilityCheckDialog.hxx
@@ -0,0 +1,62 @@
+/* -*- 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/.
+ *
+ */
+
+#ifndef INCLUDED_SVX_ACCESSIBILITYCHECKDIALOG_HXX
+#define INCLUDED_SVX_ACCESSIBILITYCHECKDIALOG_HXX
+
+#include
+#include
+#include
+#include
+#include
+#include
+
+namespace svx
+{
+class AccessibilityCheckEntry final
+{
+private:
+ std::unique_ptr m_xBuilder;
+ std::unique_ptr m_xContainer;
+ std::unique_ptr m_xLabel;
+ std::unique_ptr m_xGotoButton;
+
+ std::shared_ptr const& m_pAccessibilityIssue;
+
+public:
+ AccessibilityCheckEntry(weld::Container* pParent,
+ std::shared_ptr const& pAccessibilityIssue);
+
+ weld::Widget* get_widget() const { return m_xContainer.get(); }
+
+ DECL_LINK(GotoButtonClicked, weld::Button&, void);
+};
+
+class SVX_DLLPUBLIC AccessibilityCheckDialog final : public weld::GenericDialogController
+{
+private:
+ sfx::AccessibilityIssueCollection m_aIssueCollection;
+ std::vector> m_aAccessibilityCheckEntries;
+
+ // Controls
+ std::unique_ptr m_xAccessibilityCheckBox;
+
+public:
+ AccessibilityCheckDialog(weld::Window* pParent,
+ sfx::AccessibilityIssueCollection const& rIssueCollection);
+ virtual ~AccessibilityCheckDialog() override;
+ virtual short run() override;
+};
+
+} // end svx namespace
+
+#endif // INCLUDED_SVX_ACCESSIBILITYCHECKDIALOG_HXX
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/include/svx/AccessibleControlShape.hxx b/include/svx/AccessibleControlShape.hxx
new file mode 100644
index 000000000..a90ab5ee9
--- /dev/null
+++ b/include/svx/AccessibleControlShape.hxx
@@ -0,0 +1,207 @@
+/* -*- 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_SVX_ACCESSIBLECONTROLSHAPE_HXX
+#define INCLUDED_SVX_ACCESSIBLECONTROLSHAPE_HXX
+
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+
+namespace com::sun::star {
+ namespace accessibility { class XAccessible; }
+ namespace accessibility { class XAccessibleContext; }
+ namespace accessibility { struct AccessibleEventObject; }
+ namespace accessibility { class XAccessibleRelationSet; }
+ namespace awt { class XControl; }
+ namespace beans { class XPropertySet; }
+ namespace beans { class XPropertySetInfo; }
+ namespace beans { struct PropertyChangeEvent; }
+ namespace container { struct ContainerEvent; }
+ namespace lang { class XComponent; }
+ namespace lang { class XTypeProvider; }
+ namespace uno { class XAggregation; }
+ namespace util { struct ModeChangeEvent; }
+}
+
+namespace comphelper
+{
+ class OWrappedAccessibleChildrenManager;
+}
+
+namespace accessibility {
+
+ class AccessibleShapeInfo;
+ class AccessibleShapeTreeInfo;
+
+ typedef ::cppu::ImplHelper4 < css::beans::XPropertyChangeListener
+ , css::util::XModeChangeListener
+ , css::container::XContainerListener
+ , css::accessibility::XAccessibleEventListener
+ > AccessibleControlShape_Base;
+/** @descr
+*/
+class SAL_DLLPUBLIC_RTTI AccessibleControlShape final
+ :public AccessibleShape
+ ,public AccessibleControlShape_Base
+{
+public:
+ //===== internal ========================================================
+ AccessibleControlShape(
+ const AccessibleShapeInfo& rShapeInfo,
+ const AccessibleShapeTreeInfo& rShapeTreeInfo);
+ virtual ~AccessibleControlShape( ) override;
+
+ const css::uno::Reference< css::beans::XPropertySet >& GetControlModel( ) const { return m_xControlModel;}
+ AccessibleControlShape* GetLabeledByControlShape();
+
+private:
+ //--- XAccessibleComponent -------------------------------
+ /// forward the focus to the contained control(in alive mode)
+ virtual void SAL_CALL grabFocus( ) override;
+
+ //--- XAccessibleContext ---------------------------------
+ virtual sal_Int32 SAL_CALL getAccessibleChildCount( ) override;
+ virtual css::uno::Reference< css::accessibility::XAccessible > SAL_CALL getAccessibleChild( sal_Int32 i ) override;
+ virtual css::uno::Reference< css::accessibility::XAccessibleRelationSet > SAL_CALL getAccessibleRelationSet( ) override;
+
+ //--- XServiceInfo ---------------------------------------
+ virtual OUString SAL_CALL getImplementationName( ) override;
+
+ //--- XInterface -----------------------------------------
+ DECLARE_XINTERFACE( )
+
+ //--- XTypeProvider --------------------------------------
+ DECLARE_XTYPEPROVIDER( )
+
+ //--- XPropertyChangeListener ----------------------------
+ virtual void SAL_CALL propertyChange( const css::beans::PropertyChangeEvent& _rEvent ) override;
+
+ //--- XComponent -----------------------------------------
+ virtual void SAL_CALL disposing( ) override;
+
+ //--- XEventListener -------------------------------------
+ virtual void SAL_CALL disposing(const css::lang::EventObject& Source) override;
+
+ //--- XModeChangeListener --------------------------------
+ virtual void SAL_CALL modeChanged( const css::util::ModeChangeEvent& _rSource ) override;
+
+ //--- XAccessibleEventListener ----------------------------
+ virtual void SAL_CALL notifyEvent( const css::accessibility::AccessibleEventObject& aEvent ) override;
+
+ // XVclContainerListener
+ virtual void SAL_CALL elementInserted( const css::container::ContainerEvent& Event ) override;
+ virtual void SAL_CALL elementRemoved( const css::container::ContainerEvent& Event ) override;
+ virtual void SAL_CALL elementReplaced( const css::container::ContainerEvent& Event ) override;
+
+ /** Initialize a new shape. See the documentation of the base' constructor
+ for the reason of this method's existence.
+ */
+ virtual void Init( ) override;
+
+ /// Create a name string that contains the accessible name.
+ virtual OUString
+ CreateAccessibleBaseName( ) override;
+
+ /** Create a unique name string that contains the accessible name. The
+ name consists of the base name and the index.
+ */
+ virtual OUString
+ CreateAccessibleName( ) override;
+
+ /// Create a description string that contains the accessible description.
+ OUString CreateAccessibleDescription();
+
+#ifdef DBG_UTIL
+ /// Set the specified state
+ virtual bool SetState( sal_Int16 _nState ) override;
+#endif // DBG_UTIL
+
+ /// (safely) reads the given property from the model of the UNO control
+ OUString getControlModelStringProperty( const OUString& _rPropertyName ) const;
+
+ /// ensure that our control model exists(will be retrieved upon need only)
+ bool ensureControlModelAccess( );
+
+ /// ensures that we're listening for the given property if(and only if!) necessary
+ bool ensureListeningState( const bool _bCurrentlyListening, const bool _bNeedNewListening,
+ const OUString& _rPropertyName );
+
+ /// starts multiplexing the state changes of our aggregate context
+ void startStateMultiplexing( );
+ /// stops multiplexing the state changes of our aggregate context
+ void stopStateMultiplexing( );
+
+ /** adjusts our AccessibleRole, depending on the control type we're working for
+
+ Only to be called during initialization
+ */
+ void adjustAccessibleRole( );
+
+ /** initializes composed states of the context
+
+ Some of the states of our inner context need to be propagated to the "composed context", too
+ (such as "checked" for check boxes). At lifetime, this is done by multiplexing state changes,
+ at initialization time, this method is used.
+ */
+ void initializeComposedState( );
+
+ AccessibleControlShape(const AccessibleControlShape&) = delete;
+ AccessibleControlShape& operator= (const AccessibleControlShape&) = delete;
+
+ css::uno::Reference< css::beans::XPropertySet >
+ m_xControlModel;
+ css::uno::Reference< css::beans::XPropertySetInfo >
+ m_xModelPropsMeta; // cache this for performance reasons
+ css::uno::Reference< css::awt::XControl >
+ m_xUnoControl; // our UNO control
+
+ css::uno::WeakReference< css::accessibility::XAccessibleContext >
+ m_aControlContext; // the AccessibleContext of the control
+ css::uno::Reference< css::uno::XAggregation >
+ m_xControlContextProxy; // the proxy for "aggregating" the AccessibleContext of the control
+ css::uno::Reference< css::lang::XTypeProvider >
+ m_xControlContextTypeAccess; // cached interface of our aggregate
+ css::uno::Reference< css::lang::XComponent >
+ m_xControlContextComponent; // cached interface of our aggregate
+
+ rtl::Reference<::comphelper::OWrappedAccessibleChildrenManager>
+ m_pChildManager;
+
+ bool m_bListeningForName : 1; // are we currently listening for changes of the "Name" property?
+ bool m_bListeningForDesc : 1; // are we currently listening for changes of the "HelpText" property?
+ bool m_bMultiplexingStates : 1; // are we currently multiplexing state changes of the native context?
+ bool m_bDisposeNativeContext : 1; // do we need to dispose mxNativeContextComponent?
+ bool m_bWaitingForControl : 1; // if we are created before our control exists, we need to wait for it to appear ...
+};
+
+} // end of namespace accessibility
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/include/svx/AccessibleGraphicShape.hxx b/include/svx/AccessibleGraphicShape.hxx
new file mode 100644
index 000000000..fcffbdd39
--- /dev/null
+++ b/include/svx/AccessibleGraphicShape.hxx
@@ -0,0 +1,105 @@
+/* -*- 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_SVX_ACCESSIBLEGRAPHICSHAPE_HXX
+#define INCLUDED_SVX_ACCESSIBLEGRAPHICSHAPE_HXX
+
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+
+namespace accessibility {
+
+class AccessibleShapeInfo;
+class AccessibleShapeTreeInfo;
+
+/** @descr
+ This class makes graphic shapes accessible. With respect to its
+ base class AccessibleShape it supports the additional
+ XAccessibleImage interface.
+*/
+class SVX_DLLPUBLIC AccessibleGraphicShape
+ : public AccessibleShape,
+ public css::accessibility::XAccessibleImage
+{
+public:
+ //===== internal ========================================================
+ AccessibleGraphicShape (
+ const AccessibleShapeInfo& rShapeInfo,
+ const AccessibleShapeTreeInfo& rShapeTreeInfo);
+
+ virtual ~AccessibleGraphicShape() override;
+
+ //===== XAccessibleImage ================================================
+
+ OUString SAL_CALL getAccessibleImageDescription() override;
+
+ sal_Int32 SAL_CALL getAccessibleImageHeight() override;
+
+ sal_Int32 SAL_CALL getAccessibleImageWidth() override;
+
+ //===== XInterface ======================================================
+
+ virtual css::uno::Any SAL_CALL
+ queryInterface (const css::uno::Type & rType) override;
+
+ virtual void SAL_CALL
+ acquire()
+ throw () override;
+
+ virtual void SAL_CALL
+ release()
+ throw () override;
+
+ //===== XServiceInfo ====================================================
+
+ /** Returns an identifier for the implementation of this object.
+ */
+ virtual OUString SAL_CALL
+ getImplementationName() override;
+
+ virtual css::uno::Sequence< OUString> SAL_CALL
+ getSupportedServiceNames() override;
+
+ //===== XTypeProvider ===================================================
+
+ virtual css::uno::Sequence< css::uno::Type> SAL_CALL
+ getTypes() override;
+
+protected:
+ /// Create a name string that contains the accessible name.
+ virtual OUString
+ CreateAccessibleBaseName () override;
+
+private:
+ AccessibleGraphicShape (const AccessibleGraphicShape&) = delete;
+
+ AccessibleGraphicShape& operator= (const AccessibleGraphicShape&) = delete;
+};
+
+} // end of namespace accessibility
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/include/svx/AccessibleOLEShape.hxx b/include/svx/AccessibleOLEShape.hxx
new file mode 100644
index 000000000..5119da016
--- /dev/null
+++ b/include/svx/AccessibleOLEShape.hxx
@@ -0,0 +1,112 @@
+/* -*- 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_SVX_ACCESSIBLEOLESHAPE_HXX
+#define INCLUDED_SVX_ACCESSIBLEOLESHAPE_HXX
+
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+
+namespace com::sun::star {
+ namespace accessibility { class XAccessibleKeyBinding; }
+}
+
+namespace accessibility {
+
+class AccessibleShapeInfo;
+class AccessibleShapeTreeInfo;
+
+/** @descr
+ This class makes OLE objects accessible. With respect to its
+ base class AccessibleShape it supports the additional
+ XAccessibleAction interface.
+*/
+class SVX_DLLPUBLIC AccessibleOLEShape
+ : public AccessibleShape,
+ public css::accessibility::XAccessibleAction
+{
+public:
+ //===== internal ========================================================
+ AccessibleOLEShape (
+ const AccessibleShapeInfo& rShapeInfo,
+ const AccessibleShapeTreeInfo& rShapeTreeInfo);
+ virtual ~AccessibleOLEShape() override;
+
+ //===== XAccessibleAction ===============================================
+
+ sal_Int32 SAL_CALL getAccessibleActionCount() override;
+
+ sal_Bool SAL_CALL doAccessibleAction (sal_Int32 nIndex) override;
+
+ OUString SAL_CALL getAccessibleActionDescription (sal_Int32 nIndex) override;
+
+ css::uno::Reference<
+ css::accessibility::XAccessibleKeyBinding> SAL_CALL getAccessibleActionKeyBinding (
+ sal_Int32 nIndex) override;
+
+ //===== XInterface ======================================================
+
+ virtual css::uno::Any SAL_CALL
+ queryInterface (const css::uno::Type & rType) override;
+
+ virtual void SAL_CALL
+ acquire()
+ throw () override;
+
+ virtual void SAL_CALL
+ release()
+ throw () override;
+
+ //===== XServiceInfo ====================================================
+
+ virtual OUString SAL_CALL
+ getImplementationName() override;
+
+ virtual css::uno::Sequence< OUString> SAL_CALL
+ getSupportedServiceNames() override;
+
+ //===== XTypeProvider ===================================================
+
+ virtual css::uno::Sequence< css::uno::Type> SAL_CALL
+ getTypes() override;
+// ====== XAccessibleExtendedAttributes =====================================
+ virtual css::uno::Any SAL_CALL getExtendedAttributes() override ;
+protected:
+ /// Create a name string that contains the accessible name.
+ virtual OUString
+ CreateAccessibleBaseName () override;
+
+private:
+ AccessibleOLEShape (const AccessibleOLEShape&) = delete;
+
+ AccessibleOLEShape& operator= (const AccessibleOLEShape&) = delete;
+};
+
+} // end of namespace accessibility
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/include/svx/AccessibleShape.hxx b/include/svx/AccessibleShape.hxx
new file mode 100644
index 000000000..046463e66
--- /dev/null
+++ b/include/svx/AccessibleShape.hxx
@@ -0,0 +1,439 @@
+/* -*- 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_SVX_ACCESSIBLESHAPE_HXX
+#define INCLUDED_SVX_ACCESSIBLESHAPE_HXX
+
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+
+namespace com::sun::star {
+ namespace accessibility { class XAccessible; }
+ namespace accessibility { class XAccessibleEventListener; }
+ namespace accessibility { class XAccessibleHyperlink; }
+ namespace accessibility { class XAccessibleRelationSet; }
+ namespace accessibility { class XAccessibleStateSet; }
+ namespace beans { struct PropertyValue; }
+ namespace document { struct EventObject; }
+ namespace drawing { class XShape; }
+ namespace uno { class XInterface; }
+}
+
+class SdrObject;
+
+namespace accessibility {
+
+class AccessibleShapeInfo;
+class AccessibleTextHelper;
+class ChildrenManager;
+class IAccessibleParent;
+
+/** This base class provides a base implementation for all shapes. For more
+ detailed documentation about the methods refer to the descriptions of
+ the implemented interfaces. These are, among others,
+ XAccessible, XAccessibleContext,
+ XAccessibleComponent and
+ XAccessibleExtendedComponent.
+
+ The children of a shape can stem from two sources which, in case of
+ SVX and SD shapes, are mutually exclusive. This implementation,
+ however, handles both simultaneously to cope with future extensions or
+ shapes from other projects.
+
+ - If this shape is a group shape, i.e. a
+ SvxShapeGroup or a Svx3DSceneObject, it
+ can have nested shapes.
+ - If this shape is a descendant from SvxShapeText
+ then the text paragraphs are its children.
+
+
+
+ Accessible shapes do not listen for disposing() calls of the UNO
+ shapes they make accessible. This is the task of their owner, usually a
+ container, who can then call dispose() at the accessible object.
+*/
+class SVX_DLLPUBLIC AccessibleShape
+ : public AccessibleContextBase,
+ public AccessibleComponentBase,
+ public css::accessibility::XAccessibleSelection,
+ public css::accessibility::XAccessibleExtendedAttributes,
+ public css::accessibility::XAccessibleGroupPosition,
+ public css::accessibility::XAccessibleHypertext,
+ public IAccessibleViewForwarderListener,
+ public css::document::XShapeEventListener,
+ public css::lang::XUnoTunnel
+{
+public:
+ //===== internal ========================================================
+
+ /** Create a new accessible object that makes the given shape accessible.
+ @param rShapeInfo
+ This object contains all information specific to the new
+ accessible shape. That are e.g. the shape to be made accessible
+ and the accessible object that will become the parent of the new
+ object.
+ @param rShapeTreeInfo
+ Bundle of information passed to this shape and all of its descendants.
+ @attention
+ Always call the init method after creating a
+ new accessible shape. This is one way to overcome the potential
+ problem of registering the new object with e.g. event
+ broadcasters. That would delete the new object if a broadcaster
+ would not keep a strong reference to the new object.
+ */
+ AccessibleShape (
+ const AccessibleShapeInfo& rShapeInfo,
+ const AccessibleShapeTreeInfo& rShapeTreeInfo);
+ //Solution: Overwrite the object's current name.
+ virtual OUString SAL_CALL getAccessibleName() override;
+ virtual OUString SAL_CALL getAccessibleDescription() override;
+ virtual css::uno::Reference< css::accessibility::XAccessibleRelationSet> SAL_CALL getAccessibleRelationSet() override;
+//===== XAccessibleSelection ============================================
+
+ virtual void SAL_CALL selectAccessibleChild(
+ sal_Int32 nChildIndex ) override;
+
+ virtual sal_Bool SAL_CALL isAccessibleChildSelected(
+ sal_Int32 nChildIndex ) override;
+
+ virtual void SAL_CALL clearAccessibleSelection( ) override;
+
+ virtual void SAL_CALL selectAllAccessibleChildren( ) override;
+
+ virtual sal_Int32 SAL_CALL getSelectedAccessibleChildCount( ) override;
+
+ virtual css::uno::Reference< css::accessibility::XAccessible > SAL_CALL getSelectedAccessibleChild(
+ sal_Int32 nSelectedChildIndex ) override;
+
+ virtual void SAL_CALL deselectAccessibleChild(
+ sal_Int32 nSelectedChildIndex ) override;
+
+ // ====== XAccessibleExtendedAttributes =====================================
+ virtual css::uno::Any SAL_CALL getExtendedAttributes() override ;
+ /// Return this object's role.
+ virtual sal_Int16 SAL_CALL getAccessibleRole() override;
+ //===== XAccessibleGroupPosition =========================================
+ virtual css::uno::Sequence< sal_Int32 > SAL_CALL
+ getGroupPosition( const css::uno::Any& rAny ) override;
+ virtual OUString SAL_CALL getObjectLink( const css::uno::Any& accoject ) override;
+ /** The destructor releases its children manager and text engine if
+ still existent. These are responsible to send appropriate events.
+ */
+ virtual ~AccessibleShape() override;
+
+ /** Initialize a new shape. See the documentation of the constructor
+ for the reason of this method's existence.
+ */
+ virtual void Init();
+
+ /** Set the specified state. If the state is FOCUSED
+ then, additionally to the inherited functionality, the focus
+ listeners registered with the XAccessibleComponent
+ interface are called (if that state really changes).
+
+ @param aState
+ The state to turn on.
+
+ @return
+ The returned flag indicates whether the specified state has been
+ changed (), i.e. it has formerly not been set.
+ */
+ virtual bool SetState (sal_Int16 aState) override;
+
+ /** Reset the specified state. If the state is FOCUSED
+ then, additionally to the inherited functionality, the focus
+ listeners registered with the XAccessibleComponent
+ interface are called (if that state really changes).
+
+ @param aState
+ The state to turn off.
+
+ @return
+ The returned flag indicates whether the specified state has been
+ changed (), i.e. it has formerly been set.
+ */
+ virtual bool ResetState (sal_Int16 aState) override;
+
+ /** Return the state of the specified state. Take the
+ FOCUSED state from the accessible edit engine.
+
+ @param aState
+ The state for which to return its value.
+ @return
+ A value of indicates that the state is set. A
+ value indicates an unset state or the inability to access the
+ entity that manages the state set.
+
+ */
+ bool GetState (sal_Int16 aState);
+
+
+ //===== XAccessibleContext ==============================================
+
+ /// Return the number of currently visible children.
+ virtual sal_Int32 SAL_CALL
+ getAccessibleChildCount() override;
+
+ /** Return the specified child.
+ @param nIndex
+ Index of the requested child.
+ @return
+ Reference of the requested child which is the accessible object
+ of a visible shape.
+ @throws IndexOutOfBoundsException
+ Throws an exception if the index is not valid.
+ */
+ virtual css::uno::Reference<
+ css::accessibility::XAccessible> SAL_CALL
+ getAccessibleChild (sal_Int32 nIndex) override;
+
+
+ /// Return the set of current states.
+ virtual css::uno::Reference<
+ css::accessibility::XAccessibleStateSet> SAL_CALL
+ getAccessibleStateSet() override;
+
+ /// Return this objects index among the parents children.
+ virtual sal_Int32 SAL_CALL
+ getAccessibleIndexInParent() override;
+
+ //===== XAccessibleComponent ============================================
+
+ virtual css::uno::Reference<
+ css::accessibility::XAccessible > SAL_CALL
+ getAccessibleAtPoint (const css::awt::Point& aPoint) override;
+
+ virtual css::awt::Rectangle SAL_CALL getBounds() override;
+
+ virtual css::awt::Point SAL_CALL getLocation() override;
+
+ virtual css::awt::Point SAL_CALL getLocationOnScreen() override;
+
+ virtual css::awt::Size SAL_CALL getSize() override;
+
+ virtual sal_Int32 SAL_CALL getForeground() override;
+
+ virtual sal_Int32 SAL_CALL getBackground() override;
+
+ //===== XAccessibleEventBroadcaster =====================================
+
+ /** This call is forwarded to a) the base class and b) to the
+ accessible edit engine if it is present.
+
+ @param rxListener
+ This listener is informed about accessibility events.
+ */
+ virtual void SAL_CALL
+ addAccessibleEventListener (
+ const css::uno::Reference<
+ css::accessibility::XAccessibleEventListener >& rxListener) override;
+
+ /** This call is forwarded to a) the base class and b) to the
+ accessible edit engine if it is present.
+
+ @param rxListener
+ This listener will not be informed about accessibility events
+ anymore.
+ */
+ virtual void SAL_CALL
+ removeAccessibleEventListener (
+ const css::uno::Reference<
+ css::accessibility::XAccessibleEventListener >& rxListener) override;
+
+
+ //===== XInterface ======================================================
+
+ virtual css::uno::Any SAL_CALL
+ queryInterface (const css::uno::Type & rType) override;
+
+ virtual void SAL_CALL
+ acquire()
+ throw () override;
+
+ virtual void SAL_CALL
+ release()
+ throw () override;
+
+
+ //===== XServiceInfo ====================================================
+
+ /** Returns an identifier for the implementation of this object.
+ */
+ virtual OUString SAL_CALL
+ getImplementationName() override;
+
+ virtual css::uno::Sequence< OUString> SAL_CALL
+ getSupportedServiceNames() override;
+
+ //===== XTypeProvider ===================================================
+
+ virtual css::uno::Sequence< css::uno::Type> SAL_CALL
+ getTypes() override;
+
+ //===== IAccessibleViewForwarderListener ================================
+ virtual void ViewForwarderChanged() override;
+
+ /** Listen for disposing events of the model. The accessible shape
+ remains functional when this happens.
+ */
+ void disposing (const css::lang::EventObject& Source);
+
+ //===== document::XShapeEventListener ========================================
+
+ virtual void SAL_CALL
+ notifyShapeEvent (const css::document::EventObject& rEventObject) override;
+
+
+ //===== XUnoTunnel ========================================================
+
+ UNO3_GETIMPLEMENTATION_DECL(AccessibleShape)
+
+ //===== XAccessibleHypertext ========================================================
+ virtual sal_Int32 SAL_CALL getHyperLinkCount() override;
+ virtual css::uno::Reference< css::accessibility::XAccessibleHyperlink >
+ SAL_CALL getHyperLink( sal_Int32 nLinkIndex ) override;
+ virtual sal_Int32 SAL_CALL getHyperLinkIndex( sal_Int32 nCharIndex ) override;
+ //===== XAccessibleText ==================================================
+ virtual sal_Int32 SAL_CALL getCaretPosition( ) override;
+ virtual sal_Bool SAL_CALL setCaretPosition( sal_Int32 nIndex ) override;
+ virtual sal_Unicode SAL_CALL getCharacter( sal_Int32 nIndex ) override;//Shen Zhen Jie changed sal_Unicode to sal_uInt32; change back to sal_Unicode
+ virtual css::uno::Sequence< css::beans::PropertyValue > SAL_CALL getCharacterAttributes( sal_Int32 nIndex, const css::uno::Sequence< OUString >& aRequestedAttributes ) override;
+ virtual css::awt::Rectangle SAL_CALL getCharacterBounds( sal_Int32 nIndex ) override;
+ virtual sal_Int32 SAL_CALL getCharacterCount( ) override;
+ virtual sal_Int32 SAL_CALL getIndexAtPoint( const css::awt::Point& aPoint ) override;
+ virtual OUString SAL_CALL getSelectedText( ) override;
+ virtual sal_Int32 SAL_CALL getSelectionStart( ) override;
+ virtual sal_Int32 SAL_CALL getSelectionEnd( ) override;
+ virtual sal_Bool SAL_CALL setSelection( sal_Int32 nStartIndex, sal_Int32 nEndIndex ) override;
+ virtual OUString SAL_CALL getText( ) override;
+ virtual OUString SAL_CALL getTextRange( sal_Int32 nStartIndex, sal_Int32 nEndIndex ) override;
+ virtual css::accessibility::TextSegment SAL_CALL getTextAtIndex( sal_Int32 nIndex, sal_Int16 aTextType ) override;
+ virtual css::accessibility::TextSegment SAL_CALL getTextBeforeIndex( sal_Int32 nIndex, sal_Int16 aTextType ) override;
+ virtual css::accessibility::TextSegment SAL_CALL getTextBehindIndex( sal_Int32 nIndex, sal_Int16 aTextType ) override;
+ virtual sal_Bool SAL_CALL copyText( sal_Int32 nStartIndex, sal_Int32 nEndIndex ) override;
+ virtual sal_Bool SAL_CALL scrollSubstringTo( sal_Int32 nStartIndex, sal_Int32 nEndIndex, css::accessibility::AccessibleScrollType aScrollType) override;
+
+ //===== Misc ========================================================
+
+ const css::uno::Reference< css::drawing::XShape >&
+ GetXShape() const { return mxShape; }
+
+ /** set the index _nIndex at the accessible shape
+ @param _nIndex
+ The new index in parent.
+ */
+ void setIndexInParent(sal_Int32 _nIndex) { m_nIndexInParent = _nIndex; }
+
+protected:
+ /// Children manager. May be empty if there are no children.
+ std::unique_ptr mpChildrenManager;
+
+ /// Reference to the actual shape.
+ css::uno::Reference<
+ css::drawing::XShape> mxShape;
+
+ /** Bundle of information passed to all shapes in a document tree.
+ */
+ AccessibleShapeTreeInfo maShapeTreeInfo;
+
+ /** the index in parent.
+ */
+ sal_Int32 m_nIndexInParent;
+
+ /** The accessible text engine. May be NULL if it can not be created.
+ */
+ std::unique_ptr mpText;
+
+ /** This object can be used to modify the child list of our parent.
+ */
+ IAccessibleParent* mpParent;
+
+ /** This object can be removed when we have an extra interface to ask if the shape is selected
+ */
+ SdrObject* m_pShape;
+
+ /** This method is called from the component helper base class while
+ disposing.
+ */
+ virtual void SAL_CALL disposing() override;
+
+ /** Create a base name string that contains the accessible name.
+
+ @throws css::uno::RuntimeException
+ */
+ virtual OUString
+ CreateAccessibleBaseName();
+
+ /** Create a unique name string that contains the accessible name. The
+ name consists of the base name and the index.
+ */
+ virtual OUString
+ CreateAccessibleName() override;
+
+ /// @throws css::uno::RuntimeException
+ OUString
+ GetFullAccessibleName(AccessibleShape *shape);
+ virtual OUString GetStyle();
+ /** Update the OPAQUE and SELECTED state.
+ */
+ void UpdateStates();
+
+private:
+ AccessibleShape (const AccessibleShape&) = delete;
+ AccessibleShape& operator= (const AccessibleShape&) = delete;
+ //Old accessible name
+ OUString aAccName;
+
+ /** Call this method when the title, name, or description of the mxShape
+ member (may) have been changed.
+ This method adapts the name and description members of the
+ AccessibleContextBase base class.
+ */
+ void UpdateNameAndDescription();
+};
+
+} // end of namespace accessibility
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/include/svx/AccessibleShapeInfo.hxx b/include/svx/AccessibleShapeInfo.hxx
new file mode 100644
index 000000000..5cb9bfb0d
--- /dev/null
+++ b/include/svx/AccessibleShapeInfo.hxx
@@ -0,0 +1,97 @@
+/* -*- 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_SVX_ACCESSIBLESHAPEINFO_HXX
+#define INCLUDED_SVX_ACCESSIBLESHAPEINFO_HXX
+
+#include
+#include
+
+namespace com::sun::star {
+ namespace accessibility { class XAccessible; }
+ namespace drawing { class XShape; }
+}
+
+namespace accessibility {
+
+class IAccessibleParent;
+
+/** @descr
+ This class is a container for the information specific for a single
+ shape that is passed to the constructor of that shape. It allows to
+ separate the class definitions of the shapes from the information
+ needed on construction. Only the shapes' implementation has to be
+ adapted to a modified AccessibleShapeInfo definition.
+
+ Note that this class complements the
+ AccessibleShapeTreeInfo interface which contains
+ information that is passed to all shapes in a subtree not just to a
+ single shape.
+*/
+class SVX_DLLPUBLIC AccessibleShapeInfo
+{
+public:
+ /** The shape itself for which an accessible object is to be
+ constructed.
+ */
+ css::uno::Reference<
+ css::drawing::XShape> mxShape;
+
+ /** The accessible parent object of the shape.
+ */
+ css::uno::Reference<
+ css::accessibility::XAccessible> mxParent;
+
+ /** This object that may be realized by the same implementation as that
+ of that of mxParent can be used to modify
+ parent/child relationships with the shape as initiator.
+ Note that NULL is a valid value for this member.
+ */
+ IAccessibleParent* mpChildrenManager;
+
+ /** Copy the given values into the members described above.
+ */
+ AccessibleShapeInfo (
+ const css::uno::Reference<
+ css::drawing::XShape>& rxShape,
+ const css::uno::Reference<
+ css::accessibility::XAccessible>& rxParent,
+ IAccessibleParent* pChildrenManager);
+
+ /** Copy the given values into the members described above.
+ The accessible parent implementation object is set to NULL.
+ */
+ AccessibleShapeInfo (
+ const css::uno::Reference<
+ css::drawing::XShape>& rxShape,
+ const css::uno::Reference<
+ css::accessibility::XAccessible>& rxParent);
+
+ ~AccessibleShapeInfo();
+
+ AccessibleShapeInfo (const AccessibleShapeInfo&);
+private:
+ AccessibleShapeInfo& operator= (const AccessibleShapeInfo&) = delete;
+};
+
+} // end of namespace accessibility
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/include/svx/AccessibleShapeTreeInfo.hxx b/include/svx/AccessibleShapeTreeInfo.hxx
new file mode 100644
index 000000000..220bc2649
--- /dev/null
+++ b/include/svx/AccessibleShapeTreeInfo.hxx
@@ -0,0 +1,203 @@
+/* -*- 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_SVX_ACCESSIBLESHAPETREEINFO_HXX
+#define INCLUDED_SVX_ACCESSIBLESHAPETREEINFO_HXX
+
+#include
+#include
+#include
+
+namespace com::sun::star {
+ namespace accessibility { class XAccessibleComponent; }
+ namespace document { class XShapeEventBroadcaster; }
+ namespace frame { class XController; }
+}
+
+class SdrView;
+
+namespace accessibility {
+
+class IAccessibleViewForwarder;
+
+/** This class bundles all information that is passed down the tree of
+ accessible shapes so that each shape has access to that info.
+
+ There are basically four members that can be set and queried:
+
+ - The model broadcaster is used for getting notified about shape
+ changes. Using this broadcaster makes in unnecessary to register at
+ each shape separately.
+ - The view forwarder is responsible for transformation between
+ coordinate systems and for providing the visible area both with respect
+ to a specific window.
+ - The SdrView is used for creating accessible edit engines.
+ - The Window is used for creating accessible edit engines.
+
+*/
+class SVX_DLLPUBLIC AccessibleShapeTreeInfo
+{
+public:
+ /** Use this constructor to create an empty object that is filled later
+ with more meaningful data.
+ */
+ AccessibleShapeTreeInfo();
+
+ /** Create a copy of the given shape info.
+ @param rInfo
+ The shape tree info object to copy.
+ */
+ AccessibleShapeTreeInfo (const AccessibleShapeTreeInfo& rInfo);
+
+ ~AccessibleShapeTreeInfo();
+
+ AccessibleShapeTreeInfo& operator= (const AccessibleShapeTreeInfo& rInfo);
+
+ void dispose();
+
+ /** Deprecated. Don't use this method.
+ */
+ void SetDocumentWindow (const css::uno::Reference<
+ css::accessibility::XAccessibleComponent>& rxViewWindow);
+
+ /** Deprecated. Don't use this method.
+ */
+ const css::uno::Reference<
+ css::accessibility::XAccessibleComponent>&
+ GetDocumentWindow() const { return mxDocumentWindow;}
+
+ /** Set a new broadcaster that sends events indicating shape changes.
+ The broadcaster usually is or belongs to a document model.
+ @param rxModelBroadcaster
+ The new broadcaster. It replaces the current one. An empty
+ reference may be passed to unset the broadcaster
+ */
+ void SetModelBroadcaster (const css::uno::Reference<
+ css::document::XShapeEventBroadcaster>& rxModelBroadcaster);
+
+ /** Return the current model broadcaster.
+ @return
+ The returned reference may be empty if the broadcaster has not
+ been set or has been set to an empty reference.
+ */
+ const css::uno::Reference<
+ css::document::XShapeEventBroadcaster>&
+ GetModelBroadcaster() const { return mxModelBroadcaster;}
+
+ /** Set the view that will be used to construct SvxTextEditSources which
+ in turn are used to create accessible edit engines.
+ @param pView
+ The new SdrView that replaces the current one. A NULL pointer
+ may be passed to unset the view.
+ */
+ void SetSdrView (SdrView* pView);
+
+ /** Return the current SdrView.
+ @return
+ The returned value may be NULL.
+ */
+ SdrView* GetSdrView() const { return mpView;}
+
+ /** Set a new controller. This will usually but not necessarily
+ correspond to the SdrView.
+ @param rxController
+ The new controller that replaces the current one. An empty
+ reference may be passed to unset the controller.
+ */
+ void SetController (const css::uno::Reference<
+ css::frame::XController>& rxController);
+
+ /** Return the currently set controller.
+ @return
+ The reference to the currently set controller may be empty.
+ */
+ const css::uno::Reference<
+ css::frame::XController>&
+ GetController() const { return mxController;}
+
+ /** Set the window that is used to construct SvxTextEditSources which in
+ turn is used to create accessible edit engines.
+ */
+ void SetDevice(OutputDevice* pWindow);
+
+ /** Return the current Window.
+ @return
+ The returned value may be NULL.
+ */
+ vcl::Window* GetWindow() const
+ {
+ if (mpWindow && mpWindow->GetOutDevType() == OUTDEV_WINDOW)
+ return static_cast(mpWindow.get());
+ return nullptr;
+ }
+ OutputDevice* GetDevice() const { return mpWindow;}
+
+ /** The view forwarder allows the transformation between internal
+ and pixel coordinates and can be asked for the visible area.
+ @param pViewForwarder
+ This view forwarder replaces the current one.
+ */
+ void SetViewForwarder (const IAccessibleViewForwarder* pViewForwarder);
+
+ /** Return the current view forwarder.
+ @return
+ The returned pointer may be NULL.
+ */
+ const IAccessibleViewForwarder* GetViewForwarder() const { return mpViewForwarder;}
+
+private:
+ /** Deprecated.
+ */
+ css::uno::Reference<
+ css::accessibility::XAccessibleComponent> mxDocumentWindow;
+
+ /** this broadcaster sends events indicating shape changes.
+ The broadcaster usually is or belongs to a document model.
+
+ This once was named mxControllerBroadcaster.
+ */
+ css::uno::Reference<
+ css::document::XShapeEventBroadcaster> mxModelBroadcaster;
+
+ /** This view is necessary to construct an SvxTextEditSource which in
+ turn is used to create an accessible edit engine.
+ */
+ SdrView* mpView;
+
+ /** The controller is used e.g. for obtaining the selected shapes.
+ */
+ css::uno::Reference<
+ css::frame::XController> mxController;
+
+ /** This window is necessary to construct an SvxTextEditSource which in
+ turn is used to create an accessible edit engine.
+ */
+ VclPtr mpWindow;
+
+ /** The view forwarder allows the transformation between internal
+ and pixel coordinates and can be asked for the visible area.
+ */
+ const IAccessibleViewForwarder* mpViewForwarder;
+};
+
+} // end of namespace accessibility
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/include/svx/AccessibleTextHelper.hxx b/include/svx/AccessibleTextHelper.hxx
new file mode 100644
index 000000000..5f646d832
--- /dev/null
+++ b/include/svx/AccessibleTextHelper.hxx
@@ -0,0 +1,366 @@
+/* -*- 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_SVX_ACCESSIBLETEXTHELPER_HXX
+#define INCLUDED_SVX_ACCESSIBLETEXTHELPER_HXX
+
+#include
+#include
+
+#include
+#include
+#include
+
+namespace com::sun::star {
+ namespace accessibility { class XAccessible; }
+ namespace accessibility { class XAccessibleEventListener; }
+ namespace awt { struct Point; }
+}
+
+class Point;
+class SvxEditSource;
+
+namespace accessibility
+{
+
+ class AccessibleTextHelper_Impl;
+
+ /** Helper class for objects containing EditEngine/Outliner text
+
+ This class provides the methods from the XAccessibleContext,
+ XAccessibleEventBroadcaster and XAccessibleComponent
+ interfaces, that are common to all accessible objects
+ containing an edit engine.
+
+ The text contained in the EditEngine/Outliner is presented as
+ children of this class, namely for every text paragraph a
+ AccessibleEditableTextPara child object is generated. As this
+ class manages these children for itself, it has to send out
+ AccessibleEventId::CHILD events on your
+ behalf. Thus, you must forward every call to your
+ addEventListener()/removeEventListener() methods to the
+ AccessibleTextHelper (methods
+ AddEventListener/RemoveEventListener), otherwise none or not
+ everyone of your event listener will notice child changes.
+
+ You have to implement the SvxEditSource, SvxTextForwarder,
+ SvxViewForwarder and SvxEditViewForwarder interfaces in order
+ to enable your object to cooperate with this
+ class. SvxTextForwarder encapsulates the fact that text
+ objects do not necessarily have an EditEngine at their
+ disposal, SvxViewForwarder and SvxEditViewForwarder do the
+ same for the document and the edit view. The three mentioned
+ forwarder objects are not stored by the AccessibleTextHelper,
+ but fetched every time from the SvxEditSource. So you are best
+ off making your SvxEditSource::Get*Forwarder methods cache the
+ current forwarder.
+
+ To support changes in edit mode or conversion of fixed text
+ into EditEngine text, you can change the SvxEditSource this
+ class is referring to. This might render all children invalid
+ and change the child count, since the AccessibleTextHelper
+ reinitializes itself from scratch.
+
+ This class registers itself at the SvxEditSource as a state
+ listener and manages the state of its children (i.e. the
+ paragraphs). See the method documentation of
+ AccessibleTextHelper::SetEditSource for the expected
+ events. Generally, be prepared that when sending any of these
+ events via SvxEditSource::GetBroadcaster() broadcaster, the
+ AccessibleTextHelper will call the SvxEditSource and their
+ forwarder to update it's state. Avoid being inconsistent in
+ the facts you tell in the events, e.g. when sending a
+ SfxHintId::TextParaInserted event, the
+ SvxEditSource::GetTextForwarder().GetParagraphCount() should
+ already include the newly inserted paragraph.
+
+ @attention All public methods must not be called with any
+ mutex hold, except when calling from the main thread (with
+ holds the solar mutex), unless stated otherwise. This is
+ because they themselves might need the solar mutex in addition
+ to the object mutex, and the ordering of the locking must be:
+ first solar mutex, then object mutex. Furthermore, state
+ change events might be fired internally.
+
+ @derive Use this class in an aggregation and forward, or
+ derive from it and overwrite.
+ too.
+
+ @see SvxEditSource
+ @see SvxTextForwarder
+ @see SvxViewForwarder
+ @see SvxEditViewForwarder
+ */
+ class SVX_DLLPUBLIC AccessibleTextHelper final
+ {
+
+ public:
+ typedef ::std::vector< sal_Int16 > VectorOfStates;
+
+ /** Create accessible text object for given edit source
+
+ @param pEditSource
+ The edit source to use. Object ownership is transferred
+ from the caller to the callee. The object listens on the
+ SvxEditSource for object disposal, so no provisions have
+ to be taken if the caller destroys the data (e.g. the
+ model) contained in the given SvxEditSource.
+
+ */
+ explicit AccessibleTextHelper( ::std::unique_ptr< SvxEditSource > && pEditSource );
+
+ ~AccessibleTextHelper();
+
+ AccessibleTextHelper( const AccessibleTextHelper& ) = delete;
+ AccessibleTextHelper& operator= ( const AccessibleTextHelper& ) = delete;
+
+ /** Query the current edit source
+
+ @attention This method returns by reference, so you are
+ responsible for serialization (typically, you acquired the
+ solar mutex when calling this method). Thus, the method
+ should only be called from the main office thread.
+
+ */
+ const SvxEditSource& GetEditSource() const;
+
+ /** Set the current edit source
+
+ @attention Might fire state change events, therefore,
+ don't hold any mutex except solar mutex, which you are
+ required to lock before. This method should only be called
+ from the main office thread.
+
+ The EditSource set here is required to broadcast out the
+ following hints: SfxHintId::EditSourceParasMoved,
+ SfxHintId::EditSourceSelectionChanged, SfxHintId::TextModified,
+ SfxHintId::TextParaInserted, SfxHintId::TextParaRemoved,
+ SfxHintId::TextHeightChanged,
+ SfxHintId::TextViewScrolled. Otherwise, not all state changes
+ will get noticed by the accessibility object. Further
+ more, when the corresponding core object or the model is
+ dying, either the edit source must be set to NULL or it
+ has to broadcast a SfxHintId::Dying hint.
+
+ If the SvxEditSource's managed text can change between
+ edit/non-edit mode (i.e. there are times when
+ SvxEditSource::GetEditViewForwarder(sal_False) returns
+ NULL), then the two additional hints are required:
+ SdrHintKind::BeginEdit and SdrHintKind::EndEdit. When the
+ AccessibleTextHelper receives a SdrHintKind::BeginEdit, it expects
+ the SvxEditSource already in edit mode. On a SdrHintKind::EndEdit,
+ edit mode must already been left. The rationale for these
+ events are the fact that focus and selection have to be
+ updated in edit mode, and completely relinquished and
+ reset to the parent (for the focus) in non-edit mode.
+
+ This class does not have a dispose method, since it is not
+ a UNO component. Nevertheless, it holds C++ references to
+ several core objects, so you should issue a
+ SetEditSource(::std::unique_ptr()) in
+ your dispose() method.
+
+ @param pEditSource
+ The new edit source to set. Object ownership is transferred
+ from the caller to the callee.
+ */
+ void SetEditSource( ::std::unique_ptr< SvxEditSource > && pEditSource );
+
+ /** Set the event source
+
+ You should set the event source before registering any
+ event listener and before requesting any child. Children
+ of this object receive the event source as their parent
+ accessible object. That is, the event source is best set
+ in your object's init method.
+
+ @attention When setting a reference here, you should call
+ Dispose() when you as the owner are disposing, since until
+ then this object will hold that reference
+
+ @param rInterface
+ The interface that should be set as the source for
+ accessibility events sent by this object.
+ */
+ void SetEventSource( const css::uno::Reference< css::accessibility::XAccessible >& rInterface );
+
+ /** Set offset of EditEngine/Outliner from parent
+
+ If the origin of the underlying EditEngine/Outliner does
+ not correspond to the upper left corner of the object
+ using this class, you have to specify the offset.
+
+ @attention Might fire state change events, therefore,
+ don't hold any mutex except solar mutex, which you are
+ required to lock before. This method should only be called
+ from the main office thread.
+
+ @param rPoint
+ The offset in screen coordinates (i.e. pixel)
+ */
+ void SetOffset( const Point& rPoint );
+
+ /** Set offset the object adds to all children's indices
+
+ This can be used if the owner of this object has children
+ handled by itself. Setting an offset different from 0
+ leads to this object mimicking that all its children are
+ within the range [nOffset, GetChildCount()+nOffset). That
+ means, GetChild() also expects the index to be in this
+ range.
+
+ @attention Might fire state change events, therefore,
+ don't hold any mutex except solar mutex, which you are
+ required to lock before. This method should only be called
+ from the main office thread.
+
+ @param nOffset
+ The offset to add to every children's index.
+ */
+ void SetStartIndex( sal_Int32 nOffset );
+
+ /** Query offset the object adds to all children's indices
+
+ @return the offset to add to every children's index.
+ */
+ sal_Int32 GetStartIndex() const;
+
+ /** Sets a vector of additional accessible states.
+
+ The states are passed to every created child object
+ (text paragraph). The state values are defined in
+ css::accessibility::AccessibleStateType.
+
+ This function has to be called before querying for
+ any children (e.g. with GetChild()).
+ */
+ void SetAdditionalChildStates( const VectorOfStates& rChildStates );
+
+ /** Update the visible children
+
+ @attention Might fire state change events, therefore,
+ don't hold any mutex except solar mutex, which you are
+ required to lock before. This method should only be called
+ from the main office thread.
+
+ This method reevaluates the visibility of all
+ children. Call this method if your visibility state has
+ changed somehow, e.g. if the visible area has changed and
+ the AccessibleTextHelper isn't notified internally
+ (e.g. via SfxHintId::TextViewScrolled). Normally, there should
+ not be a need to call this method.
+ */
+ void UpdateChildren();
+
+ /** Drop all references and enter disposed state
+
+ This method drops all references to external objects (also
+ the event source reference set via SetEventSource()) and
+ sets the object into the disposed state (i.e. the methods
+ return default values or throw a uno::DisposedException
+ exception).
+ */
+ void Dispose();
+
+ /** Set the focus state of the accessibility object
+
+ Since this class handles children which also might get the
+ focus, the user of this class is encouraged to delegate
+ focus handling. Whenever the focus state of the
+ surrounding object changes, this method has to be called.
+
+ The protocol of focus handling for a user of this class is
+ then to call SetFocus() with the appropriate focus state,
+ and HaveFocus() to determine the focus state you tell the
+ outside.
+
+ @attention Might fire state change events, therefore,
+ don't hold any mutex except solar mutex, which you are
+ required to lock before. This method should only be called
+ from the main office thread.
+
+ @param bHaveFocus
+ Whether we got or we lost the focus. Set to true if
+ focus is gotten, false otherwise.
+
+ @see HaveFocus()
+ */
+ void SetFocus( bool bHaveFocus = true );
+
+ /** Query the focus state of the surrounding object
+
+ If focus handling is delegated to this class, determine
+ focus state with this method. Be prepared that even if you
+ set the focus with SetFocus(true), this method might
+ return false. This is the case if one of the children
+ actually got the focus.
+
+ @return the state of the focus ownership
+ */
+ bool HaveFocus();
+
+ // XAccessibleContext child handling methods
+
+ /** Implements getAccessibleChildCount
+
+ @attention Don't call with locked mutexes. You may hold
+ the solar mutex, but this method acquires it anyway.
+ */
+ sal_Int32 GetChildCount() const;
+ /** Implements getAccessibleChild
+
+ @attention Don't call with locked mutexes. You may hold
+ the solar mutex, but this method acquires it anyway.
+ */
+ css::uno::Reference< css::accessibility::XAccessible > GetChild( sal_Int32 i );
+
+ // XAccessibleEventBroadcaster child related methods
+
+ /** Implements addEventListener
+
+ @attention Don't call with locked mutexes
+ */
+ void AddEventListener( const css::uno::Reference< css::accessibility::XAccessibleEventListener >& xListener );
+ /** Implements removeEventListener
+
+ @attention Don't call with locked mutexes
+ */
+ void RemoveEventListener( const css::uno::Reference< css::accessibility::XAccessibleEventListener >& xListener );
+
+ // XAccessibleComponent child related methods
+
+ /** Implements getAccessibleAt
+
+ @attention Don't call with locked mutexes. You may hold
+ the solar mutex, but this method acquires it anyway.
+ */
+ css::uno::Reference< css::accessibility::XAccessible > GetAt( const css::awt::Point& aPoint );
+
+ private:
+
+ /// @dyn
+ const std::unique_ptr< AccessibleTextHelper_Impl > mpImpl;
+
+ };
+
+} // end of namespace accessibility
+
+#endif // INCLUDED_SVX_ACCESSIBLETEXTHELPER_HXX
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/include/svx/ActionDescriptionProvider.hxx b/include/svx/ActionDescriptionProvider.hxx
new file mode 100644
index 000000000..204c4f6e9
--- /dev/null
+++ b/include/svx/ActionDescriptionProvider.hxx
@@ -0,0 +1,55 @@
+/* -*- 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_SVX_ACTIONDESCRIPTIONPROVIDER_HXX
+#define INCLUDED_SVX_ACTIONDESCRIPTIONPROVIDER_HXX
+
+#include
+#include
+
+
+/** This class provides localized descriptions for some basic actions done with objects.
+The strings are intended to be provided to the user e.g. as description for undo actions in the menu.
+The name of the object acted on and the type of action needs to be given as input parameter.
+*/
+
+class SVX_DLLPUBLIC ActionDescriptionProvider
+{
+public:
+ enum class ActionType
+ {
+ Insert
+ , Delete
+ , Move
+ , Resize
+ , Rotate
+ , Format
+ , MoveToTop
+ , MoveToBottom
+ , PosSize
+ };
+
+public:
+ static OUString createDescription( ActionType eActionType
+ , const OUString& rObjectName );
+};
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/include/svx/ChildrenManager.hxx b/include/svx/ChildrenManager.hxx
new file mode 100644
index 000000000..14a90c754
--- /dev/null
+++ b/include/svx/ChildrenManager.hxx
@@ -0,0 +1,209 @@
+/* -*- 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_SVX_CHILDRENMANAGER_HXX
+#define INCLUDED_SVX_CHILDRENMANAGER_HXX
+
+#include
+
+#include
+#include
+#include
+
+namespace com::sun::star {
+ namespace accessibility { class XAccessible; }
+ namespace drawing { class XShape; }
+ namespace drawing { class XShapes; }
+}
+
+namespace accessibility {
+
+class AccessibleContextBase;
+class AccessibleShapeTreeInfo;
+class ChildrenManagerImpl;
+
+/** The AccessibleChildrenManager class acts as a cache of the
+ accessible objects of the currently visible shapes of a draw page and as
+ a factory to create the corresponding accessible object for a given
+ shape.
+
+ There are two sources of shapes. The first is a list of UNO shapes.
+ It is passes to the constructor and can be re-set with a call to
+ SetShapeList. Accessibility objects which represent
+ these shapes are constructed usually on demand. The second source is a
+ set of single AccessibleShape objects added by calls to
+ AddAccessibleShape. These are not modified by this
+ class. They are only copied into the list of visible shapes depending
+ on their visibility. The later list can be cleared by calling
+ ClearAccessibleShapeList. The actual set of children
+ accessible through the GetChildrenCount and
+ GetChild methods are the accessible objects that lie
+ completely or partially inside the visible area obtained from the view
+ forwarder in the shape tree info.
+
+ A children manager registers itself at the broadcaster passed to its
+ constructor and transforms/forwards the received events to the listeners
+ of the also given context base. The transformation process includes
+ interpreting a document::XEventListener, the change from
+ XShape references to the associated XAccessible reference, and the
+ creation of an XAccessibleEventObject. The event object is then passed
+ to the fireEvent method of the context and from there
+ forwarded to all listeners.
+
+ Note that some of the data given to the constructor is passed to the
+ accessible shape objects created by that child manager which in turn
+ pass these data to their child managers. The data is thus propagated
+ down a tree of child managers/accessible shape objects from a top level
+ class that is usually a document/model. This is the way to give all
+ accessible objects access to data normally known only to the top level
+ owner of the shapes.
+*/
+class SVX_DLLPUBLIC ChildrenManager final
+{
+public:
+ /** Create a children manager, which manages the children of the given
+ parent. The parent is used for creating accessible objects. The
+ list of shapes for which to create those objects is not derived from
+ the parent and has to be provided separately by calling one of the
+ update methods.
+ @param rxParent
+ The parent of the accessible objects which will be created
+ on demand at some point of time in the future.
+ @param rxShapeList
+ List of UNO shapes to manage.
+ @param rShapeTreeInfo
+ Bundle of information passed down the shape tree.
+ @param rContext
+ An accessible context object that is called for firing events
+ for new and deleted children, i.e. that holds a list of
+ listeners to be informed.
+ */
+ ChildrenManager (const css::uno::Reference<
+ css::accessibility::XAccessible>& rxParent,
+ const css::uno::Reference<
+ css::drawing::XShapes>& rxShapeList,
+ const AccessibleShapeTreeInfo& rShapeTreeInfo,
+ AccessibleContextBase& rContext);
+
+ /** If there still are managed children these are marked as DEFUNC and
+ released.
+ */
+ ~ChildrenManager();
+
+ /** Return the number of currently visible accessible children.
+ @return
+ If there are no children a 0 is returned.
+ */
+ long GetChildCount() const throw ();
+
+ /** Return the requested accessible child or throw and
+ IndexOutOfBoundsException if the given index is invalid.
+ @param nIndex
+ Index of the requested child. Call getChildCount for obtaining
+ the number of children.
+ @return
+ In case of a valid index this method returns a reference to the
+ requested accessible child. This reference is empty if it has
+ not been possible to create the accessible object of the
+ corresponding shape.
+ @throws
+ Throws an IndexOutOfBoundsException if the index is not valid.
+ */
+ css::uno::Reference<
+ css::accessibility::XAccessible>
+ GetChild (long nIndex);
+ /// @throws css::lang::IndexOutOfBoundsException
+ /// @throws css::uno::RuntimeException
+ css::uno::Reference< css::drawing::XShape> GetChildShape (long nIndex);
+
+ /** Update the child manager. Take care of a modified set of children
+ and modified visible area. This method can optimize the update
+ process with respect separate updates of a modified children list
+ and visible area.
+ @param bCreateNewObjectsOnDemand
+ If then accessible objects associated with the visible
+ shapes are created only when asked for. No event is sent on
+ creation. If then the accessible objects are created
+ before this method returns and events are sent to inform the
+ listeners of the new object.
+ */
+ void Update (bool bCreateNewObjectsOnDemand = true);
+
+ /** Replace the list of UNO shapes by the specified list.
+ @param xShapeList
+ The new list of shapes.
+ */
+ void SetShapeList (const css::uno::Reference<
+ css::drawing::XShapes>& xShapeList);
+
+ /** Add an accessible shape. The difference to the UNO shapes in the
+ list passed to the constructor the specified object does not have to
+ be created by the shape factory. This gives the caller full control
+ over object creation.
+
+ @param shape must be non-null
+ */
+ void AddAccessibleShape (css::uno::Reference const & shape);
+
+ /** Clear the list of accessible shapes which have been added by
+ previous calls to AddAccessibleShape.
+ */
+ void ClearAccessibleShapeList();
+
+ /** Take a new event shape tree info. Call this method to inform the
+ children manager of a change of the info bundle.
+ @param rShapeTreeInfo
+ The new info that replaces the current one.
+ */
+ void SetInfo (AccessibleShapeTreeInfo const & rShapeTreeInfo);
+
+ /** Update the SELECTED and FOCUSED states of all visible children
+ according to the given selection. This includes setting
+ and resetting the states.
+ */
+ void UpdateSelection();
+
+ /** Return whether one of the shapes managed by this object has
+ currently the focus.
+ @return
+ Returns when there is a shape that has the focus and
+ when there is no such shape.
+ */
+ bool HasFocus() const;
+
+ /** When there is a shape that currently has the focus,
+ i.e. HasFocus() returns then remove the
+ focus from that shape. Otherwise nothing changes.
+ */
+ void RemoveFocus();
+
+ void ViewForwarderChanged();
+
+private:
+ rtl::Reference mpImpl;
+
+ ChildrenManager (const ChildrenManager&) = delete;
+ ChildrenManager& operator= (const ChildrenManager&) = delete;
+};
+
+} // end of namespace accessibility
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/include/svx/ClassificationCommon.hxx b/include/svx/ClassificationCommon.hxx
new file mode 100644
index 000000000..52fc3db39
--- /dev/null
+++ b/include/svx/ClassificationCommon.hxx
@@ -0,0 +1,67 @@
+/* -*- 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/.
+ *
+ */
+
+#ifndef INCLUDED_SVX_CLASSIFICATIONCOMMON_HXX
+#define INCLUDED_SVX_CLASSIFICATIONCOMMON_HXX
+
+#include
+#include
+#include
+#include
+
+namespace com::sun::star::beans
+{
+class XPropertyContainer;
+}
+namespace com::sun::star::beans
+{
+struct Property;
+}
+namespace svx
+{
+class ClassificationResult;
+}
+
+namespace svx
+{
+namespace classification
+{
+SVX_DLLPUBLIC OUString
+convertClassificationResultToString(std::vector const& rResults);
+
+SVX_DLLPUBLIC OUString
+getProperty(css::uno::Reference const& rxPropertyContainer,
+ OUString const& rName);
+
+SVX_DLLPUBLIC bool containsProperty(css::uno::Sequence const& rProperties,
+ OUString const& rName);
+
+SVX_DLLPUBLIC void
+removeAllProperties(css::uno::Reference const& rxPropertyContainer);
+
+SVX_DLLPUBLIC bool addOrInsertDocumentProperty(
+ css::uno::Reference const& rxPropertyContainer,
+ OUString const& rsKey, OUString const& rsValue);
+
+SVX_DLLPUBLIC void insertFullTextualRepresentationAsDocumentProperty(
+ css::uno::Reference const& rxPropertyContainer,
+ sfx::ClassificationKeyCreator const& rKeyCreator,
+ std::vector const& rResults);
+
+SVX_DLLPUBLIC void
+insertCreationOrigin(css::uno::Reference const& rxPropertyContainer,
+ sfx::ClassificationKeyCreator const& rKeyCreator,
+ sfx::ClassificationCreationOrigin eOrigin);
+}
+} // end svx::classification namespace
+
+#endif // INCLUDED_SVX_CLASSIFICATIONCOMMON_HXX
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/include/svx/ClassificationDialog.hxx b/include/svx/ClassificationDialog.hxx
new file mode 100644
index 000000000..d03445c77
--- /dev/null
+++ b/include/svx/ClassificationDialog.hxx
@@ -0,0 +1,89 @@
+/* -*- 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/.
+ *
+ */
+
+#ifndef INCLUDED_SVX_CLASSIFICATIONDIALOG_HXX
+#define INCLUDED_SVX_CLASSIFICATIONDIALOG_HXX
+
+#include
+#include
+#include
+#include
+#include
+
+namespace svx { class ClassificationEditView; }
+namespace weld { class CustomWeld; }
+
+namespace svx {
+
+class SVX_DLLPUBLIC ClassificationDialog final : public weld::GenericDialogController
+{
+private:
+ SfxClassificationHelper maHelper;
+ SfxClassificationHelper maInternationalHelper;
+
+ const bool m_bPerParagraph;
+ const std::function m_aParagraphSignHandler;
+
+ ImplSVEvent* m_nAsyncExpandEvent;
+ sal_Int32 m_nCurrentSelectedCategory;
+
+ std::vector> m_aRecentlyUsedValuesCollection;
+ std::vector m_aInitialValues;
+
+ std::unique_ptr m_xOkButton;
+ std::unique_ptr m_xSignButton;
+ std::unique_ptr m_xToolBox;
+ std::unique_ptr m_xRecentlyUsedListBox;
+ std::unique_ptr m_xClassificationListBox;
+ std::unique_ptr m_xInternationalClassificationListBox;
+ std::unique_ptr m_xMarkingLabel;
+ std::unique_ptr m_xMarkingListBox;
+ std::unique_ptr m_xIntellectualPropertyPartListBox;
+ std::unique_ptr m_xIntellectualPropertyPartNumberListBox;
+ std::unique_ptr m_xIntellectualPropertyPartAddButton;
+ std::unique_ptr m_xIntellectualPropertyPartEdit;
+ std::unique_ptr m_xIntellectualPropertyExpander;
+ std::unique_ptr m_xEditWindow;
+ std::unique_ptr m_xEditWindowWeld;
+
+ DECL_LINK(ButtonClicked, weld::Button&, void);
+ DECL_LINK(OkHdl, weld::Button&, void);
+ DECL_LINK(SelectToolboxHdl, weld::ToggleButton&, void);
+ DECL_LINK(SelectClassificationHdl, weld::ComboBox&, void);
+ DECL_LINK(SelectMarkingHdl, weld::TreeView&, bool);
+ DECL_LINK(SelectIPPartNumbersHdl, weld::TreeView&, bool);
+ DECL_LINK(SelectRecentlyUsedHdl, weld::ComboBox&, void);
+ DECL_LINK(SelectIPPartHdl, weld::TreeView&, bool);
+ DECL_LINK(EditWindowModifiedHdl, LinkParamNone*, void);
+ DECL_STATIC_LINK(ClassificationDialog, ExpandedHdl, weld::Expander&, void);
+ DECL_STATIC_LINK(ClassificationDialog, KeyInput, const KeyEvent&, bool);
+ DECL_LINK(OnAsyncExpandHdl, void*, void);
+
+ void insertField(ClassificationType eType, OUString const & rString, OUString const & rFullString, OUString const & rIdentifier = OUString());
+ void insertCategoryField(sal_Int32 nID);
+
+ void readIn(std::vector const & rInput);
+ void readRecentlyUsed();
+ void writeRecentlyUsed();
+ void toggleWidgetsDependingOnCategory();
+
+public:
+ ClassificationDialog(weld::Window* pParent, bool bPerParagraph, const std::function& rParagraphSignHandler = [](){});
+ ~ClassificationDialog() override;
+
+ std::vector getResult();
+ void setupValues(std::vector const & rInput);
+};
+
+} // end svx namespace
+
+#endif // INCLUDED_SVX_CLASSIFICATIONDIALOG_HXX
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/include/svx/ClassificationField.hxx b/include/svx/ClassificationField.hxx
new file mode 100644
index 000000000..f932a665f
--- /dev/null
+++ b/include/svx/ClassificationField.hxx
@@ -0,0 +1,99 @@
+/* -*- 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/.
+ *
+ */
+
+#ifndef INCLUDED_SVX_CLASSIFICATIONFIELD_HXX
+#define INCLUDED_SVX_CLASSIFICATIONFIELD_HXX
+
+#include
+#include
+#include
+
+namespace svx {
+
+enum class ClassificationType
+{
+ CATEGORY,
+ MARKING,
+ TEXT,
+ INTELLECTUAL_PROPERTY_PART,
+ PARAGRAPH,
+};
+
+class SVX_DLLPUBLIC ClassificationResult
+{
+public:
+ ClassificationType meType;
+ OUString msName; //< Display text or 'Name' field (from example.xml).
+ OUString msAbbreviatedName; //< Abbreviated name, displayed instead of Name.
+ OUString msIdentifier; //< The identifier of this entry (from example.xml).
+
+ ClassificationResult(ClassificationType eType, const OUString& sName,
+ const OUString& sAbbreviatedName, const OUString& sIdentifier = "")
+ : meType(eType)
+ , msName(sName)
+ , msAbbreviatedName(sAbbreviatedName)
+ , msIdentifier(sIdentifier)
+ {
+ }
+
+ /// Returns the text to display, which is the Abbreviated Name, if provided, otherwise Name.
+ OUString const & getDisplayText() const
+ {
+ return !msAbbreviatedName.isEmpty() ? msAbbreviatedName : msName;
+ }
+
+ bool operator==(const ClassificationResult& rOther) const
+ {
+ return (meType == rOther.meType &&
+ msName == rOther.msName &&
+ msAbbreviatedName == rOther.msAbbreviatedName &&
+ msIdentifier == rOther.msIdentifier);
+ }
+};
+
+class SVX_DLLPUBLIC ClassificationField final : public SvxFieldData
+{
+public:
+ ClassificationType meType;
+ OUString msDescription;
+ OUString msFullClassName;
+ OUString msIdentifier;
+
+ ClassificationField(ClassificationType eType, OUString const & sDescription, OUString const & sFullClassName, OUString const & sIdentifier)
+ : SvxFieldData()
+ , meType(eType)
+ , msDescription(sDescription)
+ , msFullClassName(sFullClassName)
+ , msIdentifier(sIdentifier)
+ {}
+
+ std::unique_ptr Clone() const override
+ {
+ return std::make_unique(meType, msDescription, msFullClassName, msIdentifier);
+ }
+
+ bool operator==(const SvxFieldData& rOther) const override
+ {
+ if (typeid(rOther) != typeid(*this))
+ return false;
+
+ const ClassificationField& rOtherField = static_cast(rOther);
+ return (meType == rOtherField.meType &&
+ msDescription == rOtherField.msDescription &&
+ msFullClassName == rOtherField.msFullClassName &&
+ msIdentifier == rOtherField.msIdentifier);
+ }
+};
+
+} // end svx namespace
+
+#endif // INCLUDED_SVX_CLASSIFICATIONFIELD_HXX
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/include/svx/ColorSets.hxx b/include/svx/ColorSets.hxx
new file mode 100644
index 000000000..88e401aa3
--- /dev/null
+++ b/include/svx/ColorSets.hxx
@@ -0,0 +1,71 @@
+/* -*- 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/.
+ *
+ */
+
+#ifndef INCLUDED_SVX_COLORSETS_HXX
+#define INCLUDED_SVX_COLORSETS_HXX
+
+#include
+
+#include
+#include
+#include
+#include
+
+namespace svx
+{
+
+class ColorSet
+{
+ OUString maColorSetName;
+ std::vector maColors;
+public:
+ ColorSet(OUString const & aName);
+
+ void add(sal_uInt32 nIndex, sal_uInt32 aColorData)
+ {
+ maColors[nIndex] = Color(aColorData);
+ }
+
+ const OUString& getName() const
+ {
+ return maColorSetName;
+ }
+ const Color& getColor(sal_uInt32 nIndex) const
+ {
+ return maColors[nIndex];
+ }
+};
+
+class SVXCORE_DLLPUBLIC ColorSets
+{
+ std::vector maColorSets;
+public:
+ ColorSets();
+ ~ColorSets();
+
+ void init();
+ const std::vector& getColorSets() const
+ {
+ return maColorSets;
+ }
+
+ const ColorSet& getColorSet(sal_uInt32 nIndex)
+ {
+ return maColorSets[nIndex];
+ }
+
+ const ColorSet& getColorSet(const OUString& rName);
+};
+
+} // end of namespace svx
+
+#endif // INCLUDED_SVX_COLORSETS_HXX
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/include/svx/CommonStyleManager.hxx b/include/svx/CommonStyleManager.hxx
new file mode 100644
index 000000000..b7820beb5
--- /dev/null
+++ b/include/svx/CommonStyleManager.hxx
@@ -0,0 +1,41 @@
+/* -*- 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/.
+ */
+
+#ifndef INCLUDED_SVX_COMMONSTYLEMANAGER_HXX
+#define INCLUDED_SVX_COMMONSTYLEMANAGER_HXX
+
+#include
+#include
+
+namespace sfx2 { class StylePreviewRenderer; }
+
+class OutputDevice;
+class SfxObjectShell;
+class SfxStyleSheetBase;
+
+namespace svx
+{
+
+class SVXCORE_DLLPUBLIC CommonStyleManager final : public sfx2::StyleManager
+{
+public:
+ CommonStyleManager(SfxObjectShell& rShell)
+ : StyleManager(rShell)
+ {}
+
+ virtual std::unique_ptr CreateStylePreviewRenderer(
+ OutputDevice& rOutputDev, SfxStyleSheetBase* pStyle,
+ long nMaxHeight) override;
+};
+
+} // end namespace svx
+
+#endif // INCLUDED_SVX_COMMONSTYLEMANAGER_HXX
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/include/svx/DiagramDataInterface.hxx b/include/svx/DiagramDataInterface.hxx
new file mode 100644
index 000000000..f64dc3a09
--- /dev/null
+++ b/include/svx/DiagramDataInterface.hxx
@@ -0,0 +1,52 @@
+/* -*- 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_SVX_DIAGRAMDATAINTERFACE_HXX
+#define INCLUDED_SVX_DIAGRAMDATAINTERFACE_HXX
+
+#include
+#include
+
+#include
+#include
+
+/// Interface class to access diagram data for UI
+class SAL_NO_VTABLE SAL_DLLPUBLIC_RTTI DiagramDataInterface
+{
+public:
+ // get text representation of data tree
+ virtual OUString getString() const = 0;
+
+ // get children of provided data node
+ // use empty string for top-level nodes
+ // returns vector of (id, text)
+ virtual std::vector>
+ getChildren(const OUString& rParentId) const = 0;
+
+ // add new top-level node to data model, returns its id
+ virtual OUString addNode(const OUString& rText) = 0;
+
+ virtual bool removeNode(const OUString& rNodeId) = 0;
+
+protected:
+ ~DiagramDataInterface() throw() {}
+};
+
+#endif // INCLUDED_SVX_DIAGRAMDATAINTERFACE_HXX
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/include/svx/EnhancedCustomShape2d.hxx b/include/svx/EnhancedCustomShape2d.hxx
new file mode 100644
index 000000000..8976b2bdb
--- /dev/null
+++ b/include/svx/EnhancedCustomShape2d.hxx
@@ -0,0 +1,222 @@
+/* -*- 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_SVX_ENHANCEDCUSTOMSHAPE2D_HXX
+#define INCLUDED_SVX_ENHANCEDCUSTOMSHAPE2D_HXX
+
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+
+#include
+#include
+#include
+#include
+
+#include
+#include
+
+namespace com::sun::star::awt { struct Point; }
+
+class Color;
+class SdrObject;
+class SdrPathObj;
+class SdrObjCustomShape;
+
+enum class HandleFlags
+{
+ NONE = 0x0000,
+ MIRRORED_X = 0x0001,
+ MIRRORED_Y = 0x0002,
+ SWITCHED = 0x0004,
+ POLAR = 0x0008,
+ RANGE_X_MINIMUM = 0x0020,
+ RANGE_X_MAXIMUM = 0x0040,
+ RANGE_Y_MINIMUM = 0x0080,
+ RANGE_Y_MAXIMUM = 0x0100,
+ RADIUS_RANGE_MINIMUM = 0x0200,
+ RADIUS_RANGE_MAXIMUM = 0x0400,
+ REFX = 0x0800,
+ REFY = 0x1000,
+ REFANGLE = 0x2000,
+ REFR = 0x4000,
+};
+namespace o3tl
+{
+ template<> struct typed_flags : is_typed_flags {};
+}
+
+// MSDFF_HANDLE_FLAGS_RANGE_Y seems to be not defined in
+// escher, but we are using it internally in to differentiate
+// between X_RANGE and Y_RANGE
+
+class SVXCORE_DLLPUBLIC EnhancedCustomShape2d : public SfxItemSet
+{
+ SdrObjCustomShape& mrSdrObjCustomShape;
+ MSO_SPT eSpType;
+
+ sal_Int32 nCoordLeft;
+ sal_Int32 nCoordTop;
+ sal_Int32 nCoordWidthG;
+ sal_Int32 nCoordHeightG;
+ sal_Int32 nCoordWidth;
+ sal_Int32 nCoordHeight;
+ tools::Rectangle aLogicRect;
+
+ double fXScale;
+ double fYScale;
+ double fXRatio;
+ double fYRatio;
+
+ bool bOOXMLShape;
+
+ sal_Int32 nXRef;
+ sal_Int32 nYRef;
+ sal_uInt32 nColorData;
+
+ /*
+
+ */
+ struct SAL_DLLPRIVATE EquationResult {
+ bool bReady;
+ double fValue;
+ };
+ css::uno::Sequence< OUString > seqEquations;
+ std::vector< std::shared_ptr< EnhancedCustomShape::ExpressionNode > > vNodesSharedPtr;
+ std::vector< EquationResult > vEquationResults;
+
+ css::uno::Sequence< css::drawing::EnhancedCustomShapeSegment > seqSegments;
+ css::uno::Sequence< css::drawing::EnhancedCustomShapeParameterPair> seqCoordinates;
+ css::uno::Sequence< css::drawing::EnhancedCustomShapeTextFrame > seqTextFrames;
+ css::uno::Sequence< css::drawing::EnhancedCustomShapeParameterPair> seqGluePoints;
+ css::uno::Sequence< css::drawing::EnhancedCustomShapeAdjustmentValue > seqAdjustmentValues;
+ css::uno::Sequence< css::beans::PropertyValues > seqHandles;
+ css::uno::Sequence< css::awt::Size > seqSubViewSize;
+
+ bool bFilled : 1;
+ bool bStroked : 1;
+
+ bool bFlipH;
+ bool bFlipV;
+ sal_Int32 nRotateAngle;
+
+ SAL_DLLPRIVATE bool SetAdjustValueAsDouble( const double& rValue, const sal_Int32 nIndex );
+ SAL_DLLPRIVATE sal_Int32 GetLuminanceChange( sal_uInt32 nIndex ) const;
+ SAL_DLLPRIVATE Color GetColorData( const Color& rFillColor, sal_uInt32 nIndex, double dBrightness ) const;
+ SAL_DLLPRIVATE void AdaptObjColor(
+ SdrPathObj& rObj,
+ double dBrightness,
+ const SfxItemSet& rCustomShapeSet,
+ sal_uInt32& nColorIndex,
+ sal_uInt32 nColorCount);
+ SAL_DLLPRIVATE Point GetPoint( const css::drawing::EnhancedCustomShapeParameterPair&,
+ const bool bScale = true, const bool bReplaceGeoSize = false ) const;
+ SAL_DLLPRIVATE basegfx::B2DPoint GetPointAsB2DPoint(const css::drawing::EnhancedCustomShapeParameterPair&,
+ const bool bScale = true, const bool bReplaceGeoSize = false ) const;
+
+ SAL_DLLPRIVATE void CreateSubPath(
+ sal_Int32& rSrcPt,
+ sal_Int32& rSegmentInd,
+ std::vector< std::pair< SdrPathObj*, double> >& rObjectList,
+ bool bLineGeometryNeededOnly,
+ bool bSortFilledObjectsToBack,
+ sal_Int32 nIndex);
+ SAL_DLLPRIVATE SdrObject* CreatePathObj( bool bLineGeometryNeededOnly );
+ SAL_DLLPRIVATE void ApplyShapeAttributes( const SdrCustomShapeGeometryItem& rItem );
+
+ SAL_DLLPRIVATE void SetPathSize( sal_Int32 nIndex = 0 );
+
+ public:
+
+ struct SAL_DLLPRIVATE Handle
+ {
+ HandleFlags nFlags;
+
+ css::drawing::EnhancedCustomShapeParameterPair aPosition;
+ css::drawing::EnhancedCustomShapeParameterPair aPolar;
+
+ sal_Int32 nRefX;
+ sal_Int32 nRefY;
+ sal_Int32 nRefAngle;
+ sal_Int32 nRefR;
+
+ css::drawing::EnhancedCustomShapeParameter aRadiusRangeMinimum;
+ css::drawing::EnhancedCustomShapeParameter aRadiusRangeMaximum;
+ css::drawing::EnhancedCustomShapeParameter aXRangeMinimum;
+ css::drawing::EnhancedCustomShapeParameter aXRangeMaximum;
+ css::drawing::EnhancedCustomShapeParameter aYRangeMinimum;
+ css::drawing::EnhancedCustomShapeParameter aYRangeMaximum;
+
+ Handle()
+ : nFlags(HandleFlags::NONE)
+ , nRefX( -1 )
+ , nRefY( -1 )
+ , nRefAngle( -1 )
+ , nRefR( -1 )
+ {
+ }
+ };
+
+ SAL_DLLPRIVATE bool IsFlipVert() const { return bFlipV; };
+ SAL_DLLPRIVATE bool IsFlipHorz() const { return bFlipH; };
+ SAL_DLLPRIVATE sal_Int32 GetRotateAngle() const { return nRotateAngle; };
+
+ SdrObject* CreateLineGeometry();
+ SdrObject* CreateObject( bool bLineGeometryNeededOnly );
+ void ApplyGluePoints( SdrObject* pObj );
+ tools::Rectangle GetTextRect() const;
+ const tools::Rectangle& GetLogicRect() const { return aLogicRect; }
+
+ sal_uInt32 GetHdlCount() const;
+ bool GetHandlePosition( const sal_uInt32 nIndex, Point& rReturnPosition ) const;
+ bool SetHandleControllerPosition( const sal_uInt32 nIndex, const css::awt::Point& rPosition );
+
+ EnhancedCustomShape2d(SdrObjCustomShape& rSdrObjCustomShape);
+ virtual ~EnhancedCustomShape2d() override;
+
+ SAL_DLLPRIVATE double GetEnumFunc( const EnhancedCustomShape::ExpressionFunct eVal ) const;
+
+ void GetParameter( double& rParameterReturnValue, const css::drawing::EnhancedCustomShapeParameter&,
+ const bool bReplaceGeoWidth, const bool bReplaceGeoHeight ) const;
+ SAL_DLLPRIVATE double GetAdjustValueAsDouble( const sal_Int32 nIndex ) const;
+ SAL_DLLPRIVATE double GetEquationValueAsDouble( const sal_Int32 nIndex ) const;
+
+ static OUString GetEquation( const sal_uInt16 nFlags, sal_Int32 nPara1, sal_Int32 nPara2, sal_Int32 nPara3 );
+
+ SAL_DLLPRIVATE static void AppendEnhancedCustomShapeEquationParameter( OUString& rParameter, const sal_Int32 nPara, const bool bIsSpecialValue );
+
+ static void SetEnhancedCustomShapeParameter( css::drawing::EnhancedCustomShapeParameter&
+ rParameter, const sal_Int32 nValue );
+ static void SetEnhancedCustomShapeHandleParameter( css::drawing::EnhancedCustomShapeParameter&
+ rParameter, const sal_Int32 nPara, const bool bIsSpecialValue, bool bHorz );
+ SAL_DLLPRIVATE static bool ConvertSequenceToEnhancedCustomShape2dHandle( const css::beans::PropertyValues& rHandleProperties,
+ EnhancedCustomShape2d::Handle& rDestinationHandle );
+ SAL_DLLPRIVATE static void SwapStartAndEndArrow( SdrObject* pObj );
+};
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/include/svx/EnhancedCustomShapeFunctionParser.hxx b/include/svx/EnhancedCustomShapeFunctionParser.hxx
new file mode 100644
index 000000000..150c39efc
--- /dev/null
+++ b/include/svx/EnhancedCustomShapeFunctionParser.hxx
@@ -0,0 +1,248 @@
+/* -*- 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_SVX_ENHANCEDCUSTOMSHAPEFUNCTIONPARSER_HXX
+#define INCLUDED_SVX_ENHANCEDCUSTOMSHAPEFUNCTIONPARSER_HXX
+
+#include
+#include
+#include
+#include
+#include
+#include
+
+#include
+
+struct EnhancedCustomShapeEquation
+{
+ sal_Int32 nOperation;
+ sal_Int32 nPara[ 3 ];
+
+ EnhancedCustomShapeEquation() :
+ nOperation ( 0 )
+ {
+ nPara[ 0 ] = nPara[ 1 ] = nPara[ 2 ] = 0;
+ }
+};
+
+class EnhancedCustomShape2d;
+
+namespace EnhancedCustomShape {
+
+enum class ExpressionFunct
+{
+ Const,
+
+ EnumPi,
+ EnumLeft,
+ EnumTop,
+ EnumRight,
+ EnumBottom,
+ EnumXStretch,
+ EnumYStretch,
+ EnumHasStroke,
+ EnumHasFill,
+ EnumWidth,
+ EnumHeight,
+ EnumLogWidth,
+ EnumLogHeight,
+ EnumAdjustment,
+ EnumEquation,
+
+ UnaryAbs,
+ UnarySqrt,
+ UnarySin,
+ UnaryCos,
+ UnaryTan,
+ UnaryAtan,
+ UnaryNeg,
+
+ BinaryPlus,
+ BinaryMinus,
+ BinaryMul,
+ BinaryDiv,
+ BinaryMin,
+ BinaryMax,
+ BinaryAtan2,
+
+ TernaryIf
+};
+
+template< typename charT, typename traits >
+inline std::basic_ostream & operator <<(
+ std::basic_ostream & stream, const ExpressionFunct& eFunc )
+{
+ switch (eFunc)
+ {
+ case ExpressionFunct::Const : return stream << "const";
+
+ case ExpressionFunct::EnumPi : return stream << "pi";
+ case ExpressionFunct::EnumLeft : return stream << "left";
+ case ExpressionFunct::EnumTop : return stream << "top";
+ case ExpressionFunct::EnumRight : return stream << "right";
+ case ExpressionFunct::EnumBottom : return stream << "bottom";
+ case ExpressionFunct::EnumXStretch : return stream << "xstretch";
+ case ExpressionFunct::EnumYStretch : return stream << "ystretch";
+ case ExpressionFunct::EnumHasStroke : return stream << "hasstroke";
+ case ExpressionFunct::EnumHasFill : return stream << "hasfill";
+ case ExpressionFunct::EnumWidth : return stream << "width";
+ case ExpressionFunct::EnumHeight : return stream << "height";
+ case ExpressionFunct::EnumLogWidth : return stream << "logwidth";
+ case ExpressionFunct::EnumLogHeight : return stream << "logheight";
+ case ExpressionFunct::EnumAdjustment : return stream << "adjustment";
+ case ExpressionFunct::EnumEquation : return stream << "equation";
+
+ case ExpressionFunct::UnaryAbs : return stream << "abs";
+ case ExpressionFunct::UnarySqrt : return stream << "sqrt";
+ case ExpressionFunct::UnarySin : return stream << "sin";
+ case ExpressionFunct::UnaryCos : return stream << "cos";
+ case ExpressionFunct::UnaryTan : return stream << "tan";
+ case ExpressionFunct::UnaryAtan : return stream << "atan";
+ case ExpressionFunct::UnaryNeg : return stream << "neg";
+
+ case ExpressionFunct::BinaryPlus : return stream << "plus";
+ case ExpressionFunct::BinaryMinus : return stream << "minus";
+ case ExpressionFunct::BinaryMul : return stream << "mul";
+ case ExpressionFunct::BinaryDiv : return stream << "div";
+ case ExpressionFunct::BinaryMin : return stream << "min";
+ case ExpressionFunct::BinaryMax : return stream << "max";
+ case ExpressionFunct::BinaryAtan2 : return stream << "atan2";
+
+ case ExpressionFunct::TernaryIf : return stream << "if";
+
+ default: return stream << "?(" << static_cast(eFunc) << ")";
+ }
+}
+
+#define EXPRESSION_FLAG_SUMANGLE_MODE 1
+
+SVXCORE_DLLPUBLIC void FillEquationParameter( const css::drawing::EnhancedCustomShapeParameter&, const sal_Int32, EnhancedCustomShapeEquation& );
+
+class SAL_DLLPUBLIC_RTTI ExpressionNode
+{
+public:
+ virtual ~ExpressionNode();
+
+ /** Predicate whether this node is constant.
+
+ This predicate returns true, if this node is
+ neither time- nor ViewInfo dependent. This allows
+ for certain optimizations, i.e. not the full
+ expression tree needs be represented by
+ ExpressionNodes.
+
+ @returns true, if the note is constant
+ */
+ virtual bool isConstant() const = 0;
+
+ /** Operator to calculate function value.
+
+ This method calculates the function value.
+ */
+ virtual double operator()() const = 0;
+
+ /** Operator to retrieve the type of expression node
+ */
+ virtual ExpressionFunct getType() const = 0;
+
+ /** Operator to retrieve the ms version of expression
+ */
+ virtual css::drawing::EnhancedCustomShapeParameter fillNode(
+ std::vector< EnhancedCustomShapeEquation >& rEquations, ExpressionNode* pOptionalArg, sal_uInt32 nFlags ) = 0;
+};
+
+/** This exception is thrown, when the arithmetic expression
+ parser failed to parse a string.
+ */
+struct ParseError
+{
+ ParseError( const char* ) {}
+};
+
+class FunctionParser
+{
+public:
+
+ /** Parse a string
+
+ The following grammar is accepted by this method:
+
+
+ number_digit = '0'|'1'|'2'|'3'|'4'|'5'|'6'|'7'|'8'|'9'
+
+ number = number number_digit | number_digit
+
+ identifier = 'pi'|'left'|'top'|'right'|'bottom'|'xstretch'|'ystretch'|
+ 'hasstroke'|'hasfill'|'width'|'height'|'logwidth'|'logheight'
+
+ unary_function = 'abs'|'sqrt'|'sin'|'cos'|'tan'|'atan'
+ binary_function = 'min'|'max'|'atan2'
+ ternary_function = 'if'
+
+ function_reference = '?' 'a-z,A-Z,0-9' ' '
+ modifier_reference = '$' '0-9' ' '
+
+ basic_expression =
+ number |
+ identifier |
+ function_reference |
+ unary_function '(' additive_expression ')' |
+ binary_function '(' additive_expression ',' additive_expression ')' |
+ ternary_function '(' additive_expression ',' additive_expression ',
+ ' additive_expression ')' | '(' additive_expression ')'
+
+ unary_expression = '-' basic_expression
+
+ multiplicative_expression =
+ basic_expression |
+ multiplicative_expression '*' basic_expression |
+ multiplicative_expression '/' basic_expression
+
+ additive_expression =
+ multiplicative_expression |
+ additive_expression '+' multiplicative_expression |
+ additive_expression '-' multiplicative_expression
+
+
+
+ @param rFunction
+ The string to parse
+
+ @param rCustoShape
+ The CustomShape is required for calculation of dynamic values such
+ "hasstroke", function references and or modifier references ...
+
+ @throws ParseError if an invalid expression is given.
+
+ @return the generated function object.
+ */
+
+ UNLESS_MERGELIBS(SVXCORE_DLLPUBLIC) static std::shared_ptr const & parseFunction( const OUString& rFunction, const EnhancedCustomShape2d& rCustoShape );
+
+ // this is a singleton
+ FunctionParser() = delete;
+ FunctionParser(const FunctionParser&) = delete;
+ FunctionParser& operator=( const FunctionParser& ) = delete;
+};
+
+}
+
+#endif // INCLUDED_SVX_ENHANCEDCUSTOMSHAPEFUNCTIONPARSER_HXX
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/include/svx/EnhancedCustomShapeGeometry.hxx b/include/svx/EnhancedCustomShapeGeometry.hxx
new file mode 100644
index 000000000..a52dc4820
--- /dev/null
+++ b/include/svx/EnhancedCustomShapeGeometry.hxx
@@ -0,0 +1,105 @@
+/* -*- 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_SVX_ENHANCEDCUSTOMSHAPEGEOMETRY_HXX
+#define INCLUDED_SVX_ENHANCEDCUSTOMSHAPEGEOMETRY_HXX
+
+#include
+#include
+#include
+#include
+
+struct SvxMSDffVertPair
+{
+ sal_Int32 nValA;
+ sal_Int32 nValB;
+};
+struct SvxMSDffCalculationData
+{
+ sal_uInt16 nFlags;
+ sal_Int32 nVal[ 3 ];
+};
+struct SvxMSDffTextRectangles
+{
+ SvxMSDffVertPair nPairA;
+ SvxMSDffVertPair nPairB;
+};
+
+enum class SvxMSDffHandleFlags
+{
+ NONE = 0x0000,
+ MIRRORED_X = 0x0001,
+ MIRRORED_Y = 0x0002,
+ SWITCHED = 0x0004,
+ POLAR = 0x0008,
+ MAP = 0x0010,
+ RANGE = 0x0020,
+ RANGE_X_MIN_IS_SPECIAL = 0x0080,
+ RANGE_X_MAX_IS_SPECIAL = 0x0100,
+ RANGE_Y_MIN_IS_SPECIAL = 0x0200,
+ RANGE_Y_MAX_IS_SPECIAL = 0x0400,
+ CENTER_X_IS_SPECIAL = 0x0800,
+ CENTER_Y_IS_SPECIAL = 0x1000,
+ RADIUS_RANGE = 0x2000,
+};
+namespace o3tl
+{
+ template<> struct typed_flags : is_typed_flags {};
+}
+
+struct SvxMSDffHandle
+{
+ SvxMSDffHandleFlags nFlags;
+ sal_Int32 nPositionX, nPositionY, nCenterX, nCenterY, nRangeXMin, nRangeXMax, nRangeYMin, nRangeYMax;
+};
+struct mso_CustomShape
+{
+ SvxMSDffVertPair* pVertices;
+ sal_uInt32 nVertices;
+ sal_uInt16* pElements;
+ sal_uInt32 nElements;
+ SvxMSDffCalculationData* pCalculation;
+ sal_uInt32 nCalculation;
+ sal_Int32* pDefData;
+ SvxMSDffTextRectangles* pTextRect;
+ sal_uInt32 nTextRect;
+ sal_Int32 nCoordWidth;
+ sal_Int32 nCoordHeight;
+ sal_Int32 nXRef;
+ sal_Int32 nYRef;
+ SvxMSDffVertPair* pGluePoints;
+ sal_uInt32 nGluePoints;
+ SvxMSDffHandle* pHandles;
+ sal_uInt32 nHandles;
+};
+
+#define MSO_I | sal_Int32(0x80000000)
+
+bool SortFilledObjectsToBackByDefault( MSO_SPT eSpType );
+SVXCORE_DLLPUBLIC bool IsCustomShapeFilledByDefault( MSO_SPT eSpType );
+SVXCORE_DLLPUBLIC sal_Int16 GetCustomShapeConnectionTypeDefault( MSO_SPT eSpType );
+
+// #i28269#
+SVXCORE_DLLPUBLIC bool IsCustomShapeStrokedByDefault( MSO_SPT eSpType );
+
+SVXCORE_DLLPUBLIC const mso_CustomShape* GetCustomShapeContent( MSO_SPT eSpType );
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/include/svx/EnhancedCustomShapeTypeNames.hxx b/include/svx/EnhancedCustomShapeTypeNames.hxx
new file mode 100644
index 000000000..2e5f49da0
--- /dev/null
+++ b/include/svx/EnhancedCustomShapeTypeNames.hxx
@@ -0,0 +1,35 @@
+/* -*- 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_SVX_ENHANCEDCUSTOMSHAPETYPENAMES_HXX
+#define INCLUDED_SVX_ENHANCEDCUSTOMSHAPETYPENAMES_HXX
+#include
+#include
+#include
+
+namespace EnhancedCustomShapeTypeNames
+{
+ SVXCORE_DLLPUBLIC MSO_SPT Get( const OUString& );
+ SVXCORE_DLLPUBLIC OUString Get( const MSO_SPT );
+ SVXCORE_DLLPUBLIC OUString GetAccName( const OUString& );
+}
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/include/svx/IAccessibleParent.hxx b/include/svx/IAccessibleParent.hxx
new file mode 100644
index 000000000..19284a7d0
--- /dev/null
+++ b/include/svx/IAccessibleParent.hxx
@@ -0,0 +1,102 @@
+/* -*- 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_SVX_IACCESSIBLEPARENT_HXX
+#define INCLUDED_SVX_IACCESSIBLEPARENT_HXX
+
+#include
+
+namespace accessibility { class AccessibleControlShape; }
+namespace com::sun::star::accessibility { class XAccessible; }
+namespace com::sun::star::beans { class XPropertySet; }
+namespace com::sun::star::drawing { class XShape; }
+
+namespace accessibility {
+
+class AccessibleShape;
+class AccessibleShapeTreeInfo;
+
+/** This interface contains methods missing from the
+ XAccessibleContext interface that allow the modification of
+ parent/child relationship.
+*/
+class IAccessibleParent
+{
+public:
+ /** Allow for a virtual destructor.
+ */
+ virtual ~IAccessibleParent(){};
+
+ /** A call to this method requests the implementor to replace one child
+ with another and send the appropriate notifications. That are two
+ child events: One notifying the removal of the current child and one
+ about the existence of the new child. The index of the new child is
+ implementation dependent, i.e. it is not guaranteed that the
+ replacement has the same index as the current child has.
+
+ A default implementation can just use the ShapeTypeHandler::CreateAccessibleObject
+ to let a factory create the new instance with the parameters given, and then
+ place the new shape into the own structures.
+
+ @param pCurrentChild
+ This child is about to be replaced.
+
+ @param _rxShape
+ The UNO shape which the old and new child represent
+
+ @param _nIndex
+ The IndexInParent of the old child. Note that the index in
+ parent of the replacement is not necessarily the same as
+ that of the current child.
+
+ @param _rShapeTreeInfo
+ The TreeInfo for the old child.
+
+ @return
+ If the replacement has taken place successfully is
+ returned. If the replacement can not be carried out or an error
+ occurs that does not result in an exception then is
+ returned.
+
+ @throws RuntimeException
+ in case something went heavily wrong
+ */
+ virtual bool ReplaceChild (
+ AccessibleShape* pCurrentChild,
+ const css::uno::Reference< css::drawing::XShape >& _rxShape,
+ const long _nIndex,
+ const AccessibleShapeTreeInfo& _rShapeTreeInfo
+ ) = 0;
+ //Add this method to support Form Controls
+ /// @throws css::uno::RuntimeException
+ virtual AccessibleControlShape* GetAccControlShapeFromModel
+ (css::beans::XPropertySet*){return nullptr;};
+ /// @throws css::uno::RuntimeException
+ virtual css::uno::Reference<
+ css::accessibility::XAccessible>
+ GetAccessibleCaption (const css::uno::Reference<
+ css::drawing::XShape>&){return nullptr;};
+ virtual bool IsDocumentSelAll(){ return false; }
+};
+
+} // end of namespace accessibility
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/include/svx/IAccessibleViewForwarder.hxx b/include/svx/IAccessibleViewForwarder.hxx
new file mode 100644
index 000000000..247e29c41
--- /dev/null
+++ b/include/svx/IAccessibleViewForwarder.hxx
@@ -0,0 +1,100 @@
+/* -*- 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_SVX_IACCESSIBLEVIEWFORWARDER_HXX
+#define INCLUDED_SVX_IACCESSIBLEVIEWFORWARDER_HXX
+
+#include
+
+
+namespace accessibility {
+
+
+/** This interface provides the means to transform between internal
+ coordinates in 100th of mm and screen coordinates without giving direct
+ access to the underlying view. Each view forwarder represents a
+ specific real or virtual window. A call to
+ GetVisibleArea returns the visible rectangle that
+ corresponds to this window.
+
+ This interface is similar to the SvxViewForwarder but
+ differs in two important points: Firstly the GetVisArea
+ method returns a rectangle in internal coordinates and secondly the
+ transformation methods do not require explicit mapmodes. These have to
+ be provided implicitly by the classes that implement this
+ interface. A third, less important, difference are the additional
+ transformation methods for sizes. The reasons for their existence are
+ convenience and improved performance.
+
+ @attention
+ Note, that modifications of the underlying view that lead to
+ different transformations between internal and screen coordinates or
+ change the validity of the forwarder have to be signaled separately.
+*/
+class IAccessibleViewForwarder
+{
+public:
+ IAccessibleViewForwarder() = default;
+ IAccessibleViewForwarder(IAccessibleViewForwarder const &) = default;
+ IAccessibleViewForwarder(IAccessibleViewForwarder &&) = default;
+ IAccessibleViewForwarder & operator =(IAccessibleViewForwarder const &) = default;
+ IAccessibleViewForwarder & operator =(IAccessibleViewForwarder &&) = default;
+
+ virtual ~IAccessibleViewForwarder(){};
+
+ /** Returns the area of the underlying document that is visible in the
+ * corresponding window.
+
+ @return
+ The rectangle of the visible part of the document. The values
+ are, contrary to the base class, in internal coordinates of
+ 100th of mm.
+ */
+ virtual tools::Rectangle GetVisibleArea() const = 0;
+
+ /** Transform the specified point from internal coordinates in 100th of
+ mm to an absolute screen position.
+
+ @param rPoint
+ Point in internal coordinates (100th of mm).
+
+ @return
+ The same point but in screen coordinates relative to the upper
+ left corner of the (current) screen.
+ */
+ virtual Point LogicToPixel (const Point& rPoint) const = 0;
+
+ /** Transform the specified size from internal coordinates in 100th of
+ mm to a screen oriented pixel size.
+
+ @param rSize
+ Size in internal coordinates (100th of mm).
+
+ @return
+ The same size but in screen coordinates.
+ */
+ virtual Size LogicToPixel (const Size& rSize) const = 0;
+
+};
+
+} // end of namespace accessibility
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/include/svx/IAccessibleViewForwarderListener.hxx b/include/svx/IAccessibleViewForwarderListener.hxx
new file mode 100644
index 000000000..d22c0db56
--- /dev/null
+++ b/include/svx/IAccessibleViewForwarderListener.hxx
@@ -0,0 +1,52 @@
+/* -*- 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_SVX_IACCESSIBLEVIEWFORWARDERLISTENER_HXX
+#define INCLUDED_SVX_IACCESSIBLEVIEWFORWARDERLISTENER_HXX
+
+
+namespace accessibility {
+
+/** The purpose of this interface is to notify a user of an
+ IAccessibleViewForwarder when that view forwarder changes its
+ properties. Such a change may be one of the following:
+
+ - Change of the coordinate transformation.
+ - Change of the visible area (which in turn results in a change of the
+ coordinate transformation.
+ - Change of the validity state of the view forwarder.
+*/
+class IAccessibleViewForwarderListener
+{
+public:
+
+ /** This method is called to indicate a change of the specified view
+ forwarder, specifically, a change in visible area.
+ */
+ virtual void ViewForwarderChanged() = 0;
+
+protected:
+ ~IAccessibleViewForwarderListener() {}
+};
+
+} // end of namespace accessibility
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/include/svx/ImageMapInfo.hxx b/include/svx/ImageMapInfo.hxx
new file mode 100644
index 000000000..7cd8f4f17
--- /dev/null
+++ b/include/svx/ImageMapInfo.hxx
@@ -0,0 +1,55 @@
+/* -*- 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 .
+ */
+
+#pragma once
+
+#include
+#include
+#include
+
+#define SVX_IMAPINFO_ID 2
+
+class SVXCORE_DLLPUBLIC SvxIMapInfo final : public SdrObjUserData, public SfxListener
+{
+ ImageMap aImageMap;
+
+public:
+ SvxIMapInfo(const ImageMap& rImageMap)
+ : SdrObjUserData(SdrInventor::StarDrawUserData, SVX_IMAPINFO_ID)
+ , aImageMap(rImageMap){};
+
+ SvxIMapInfo(const SvxIMapInfo& rIMapInfo)
+ : SdrObjUserData(SdrInventor::StarDrawUserData, SVX_IMAPINFO_ID)
+ , SfxListener()
+ , aImageMap(rIMapInfo.aImageMap){};
+
+ virtual std::unique_ptr Clone(SdrObject*) const override
+ {
+ return std::unique_ptr(new SvxIMapInfo(*this));
+ }
+
+ void SetImageMap(const ImageMap& rIMap) { aImageMap = rIMap; }
+ const ImageMap& GetImageMap() const { return aImageMap; }
+
+ static SvxIMapInfo* GetIMapInfo(const SdrObject* pObject);
+ static IMapObject* GetHitIMapObject(const SdrObject* pObj, const Point& rWinPoint,
+ const vcl::Window* rCmpWnd = nullptr);
+};
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/include/svx/Palette.hxx b/include/svx/Palette.hxx
new file mode 100644
index 000000000..c505eb412
--- /dev/null
+++ b/include/svx/Palette.hxx
@@ -0,0 +1,44 @@
+/* -*- 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_SVX_PALETTE_HXX
+#define INCLUDED_SVX_PALETTE_HXX
+
+#include
+#include
+
+class Color;
+class SvxColorValueSet;
+
+typedef std::pair NamedColor;
+
+class Palette
+{
+public:
+ virtual ~Palette();
+
+ virtual const OUString& GetName() = 0;
+ virtual const OUString& GetPath() = 0;
+ virtual void LoadColorSet(SvxColorValueSet& rColorSet) = 0;
+
+ virtual bool IsValid() = 0;
+};
+
+#endif // INCLUDED_SVX_PALETTE_HXX
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/include/svx/PaletteManager.hxx b/include/svx/PaletteManager.hxx
new file mode 100644
index 000000000..637f7d0e1
--- /dev/null
+++ b/include/svx/PaletteManager.hxx
@@ -0,0 +1,79 @@
+/* -*- 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_SVX_PALETTEMANAGER_HXX
+#define INCLUDED_SVX_PALETTEMANAGER_HXX
+
+#include
+#include
+#include
+
+#include
+#include
+#include
+
+namespace com::sun::star::uno { class XComponentContext; }
+namespace svx { class ToolboxButtonColorUpdaterBase; }
+namespace weld { class Window; }
+
+class SVXCORE_DLLPUBLIC PaletteManager
+{
+ const sal_uInt16 mnMaxRecentColors;
+
+ sal_uInt16 mnNumOfPalettes;
+ sal_uInt16 mnCurrentPalette;
+
+ long mnColorCount;
+ svx::ToolboxButtonColorUpdaterBase* mpBtnUpdater;
+
+ XColorListRef pColorList;
+ std::deque maRecentColors;
+ std::vector> m_Palettes;
+
+ std::function maColorSelectFunction;
+ css::uno::Reference < css::uno::XComponentContext > m_context;
+public:
+ PaletteManager();
+ ~PaletteManager();
+ PaletteManager(const PaletteManager&) = delete;
+ PaletteManager& operator=(const PaletteManager&) = delete;
+ void LoadPalettes();
+ void ReloadColorSet(SvxColorValueSet& rColorSet);
+ void ReloadRecentColorSet(SvxColorValueSet& rColorSet);
+ std::vector GetPaletteList();
+ void SetPalette( sal_Int32 nPos );
+ sal_Int32 GetPalette() const;
+ sal_Int32 GetPaletteCount() const { return mnNumOfPalettes; }
+ OUString GetPaletteName();
+ OUString GetSelectedPalettePath();
+
+ long GetColorCount() const;
+ long GetRecentColorCount() const;
+ void AddRecentColor(const Color& rRecentColor, const OUString& rColorName, bool bFront = true);
+
+ void SetBtnUpdater(svx::ToolboxButtonColorUpdaterBase* pBtnUpdater);
+ void PopupColorPicker(weld::Window* pParent, const OUString& aCommand, const Color& rInitialColor);
+
+ void SetColorSelectFunction(const std::function& aColorSelectFunction);
+
+ static void DispatchColorCommand(const OUString& aCommand, const NamedColor& rColor);
+};
+
+#endif // INCLUDED_SVX_PALETTEMANAGER_HXX
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/include/svx/ParaLineSpacingPopup.hxx b/include/svx/ParaLineSpacingPopup.hxx
new file mode 100644
index 000000000..a595b9570
--- /dev/null
+++ b/include/svx/ParaLineSpacingPopup.hxx
@@ -0,0 +1,51 @@
+/* -*- 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_SVX_SOURCE_SIDEBAR_PARAGRAPH_PARALINESPACINGPOPUP_HXX
+#define INCLUDED_SVX_SOURCE_SIDEBAR_PARAGRAPH_PARALINESPACINGPOPUP_HXX
+
+#include
+#include
+
+namespace svx {
+
+class SvxLineSpacingToolBoxControl final : public svt::PopupWindowController
+{
+public:
+ explicit SvxLineSpacingToolBoxControl( const css::uno::Reference& rContext );
+ virtual ~SvxLineSpacingToolBoxControl() override;
+
+ virtual void SAL_CALL execute(sal_Int16 KeyModifier) override;
+
+ virtual VclPtr createVclPopupWindow( vcl::Window* pParent ) override;
+ virtual std::unique_ptr weldPopupWindow() override;
+
+ // XServiceInfo
+ virtual OUString SAL_CALL getImplementationName() override;
+ virtual css::uno::Sequence SAL_CALL getSupportedServiceNames() override;
+
+ // XInitialization
+ virtual void SAL_CALL initialize( const css::uno::Sequence< css::uno::Any >& rArguments ) override;
+};
+
+}
+
+#endif
+
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/include/svx/ParaSpacingControl.hxx b/include/svx/ParaSpacingControl.hxx
new file mode 100644
index 000000000..cd13bb7d5
--- /dev/null
+++ b/include/svx/ParaSpacingControl.hxx
@@ -0,0 +1,121 @@
+/* -*- 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_SVX_SOURCE_SIDEBAR_PARAGRAPH_PARASPACINGCONTROL_HXX
+#define INCLUDED_SVX_SOURCE_SIDEBAR_PARAGRAPH_PARASPACINGCONTROL_HXX
+
+#include
+#include
+#include
+
+namespace com::sun::star::ui { class XContextChangeEventMultiplexer; }
+namespace com::sun::star::ui { struct ContextChangeEventObject; }
+namespace vcl { class Window; }
+
+namespace svx {
+
+class ParaULSpacingControl : public SfxToolBoxControl
+{
+public:
+ ParaULSpacingControl(sal_uInt16 nSlotId, sal_uInt16 nId, ToolBox& rTbx);
+ virtual ~ParaULSpacingControl() override;
+
+ virtual void StateChanged(sal_uInt16 nSID, SfxItemState eState,
+ const SfxPoolItem* pState) override;
+ virtual VclPtr CreateItemWindow(vcl::Window* pParent) override = 0;
+};
+
+class SVX_DLLPUBLIC ParaAboveSpacingControl final : public ParaULSpacingControl
+{
+public:
+ SFX_DECL_TOOLBOX_CONTROL();
+
+ ParaAboveSpacingControl(sal_uInt16 nSlotId, sal_uInt16 nId, ToolBox& rTbx);
+ virtual VclPtr CreateItemWindow(vcl::Window* pParent) override;
+};
+
+class SVX_DLLPUBLIC ParaBelowSpacingControl final : public ParaULSpacingControl
+{
+public:
+ SFX_DECL_TOOLBOX_CONTROL();
+
+ ParaBelowSpacingControl(sal_uInt16 nSlotId, sal_uInt16 nId, ToolBox& rTbx);
+ virtual VclPtr CreateItemWindow(vcl::Window* pParent) override;
+};
+
+class ParaLRSpacingControl : public SfxToolBoxControl,
+ public css::ui::XContextChangeEventListener
+{
+public:
+ ParaLRSpacingControl(sal_uInt16 nSlotId, sal_uInt16 nId, ToolBox& rTbx);
+ virtual ~ParaLRSpacingControl() override;
+
+ virtual void SAL_CALL dispose() override;
+
+ virtual void StateChanged(sal_uInt16 nSID, SfxItemState eState,
+ const SfxPoolItem* pState) override;
+ virtual VclPtr CreateItemWindow(vcl::Window* pParent) override = 0;
+
+ // XContextChangeEventListener
+ virtual void SAL_CALL notifyContextChangeEvent(const css::ui::ContextChangeEventObject& rEvent) override;
+
+ virtual ::css::uno::Any SAL_CALL queryInterface(const ::css::uno::Type& aType) override;
+
+ virtual void SAL_CALL acquire() throw () override;
+
+ virtual void SAL_CALL disposing(const ::css::lang::EventObject&) override;
+
+ virtual void SAL_CALL release() throw () override;
+
+private:
+ css::uno::Reference m_xMultiplexer;
+};
+
+class SVX_DLLPUBLIC ParaLeftSpacingControl final : public ParaLRSpacingControl
+{
+public:
+ SFX_DECL_TOOLBOX_CONTROL();
+
+ ParaLeftSpacingControl(sal_uInt16 nSlotId, sal_uInt16 nId, ToolBox& rTbx);
+ virtual VclPtr CreateItemWindow(vcl::Window* pParent) override;
+};
+
+class SVX_DLLPUBLIC ParaRightSpacingControl final : public ParaLRSpacingControl
+{
+public:
+ SFX_DECL_TOOLBOX_CONTROL();
+
+ ParaRightSpacingControl(sal_uInt16 nSlotId, sal_uInt16 nId, ToolBox& rTbx);
+ virtual VclPtr CreateItemWindow(vcl::Window* pParent) override;
+};
+
+class SVX_DLLPUBLIC ParaFirstLineSpacingControl final : public ParaLRSpacingControl
+{
+public:
+ SFX_DECL_TOOLBOX_CONTROL();
+
+ ParaFirstLineSpacingControl(sal_uInt16 nSlotId, sal_uInt16 nId, ToolBox& rTbx);
+ virtual VclPtr CreateItemWindow(vcl::Window* pParent) override;
+};
+
+}
+
+#endif
+
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/include/svx/ParseContext.hxx b/include/svx/ParseContext.hxx
new file mode 100644
index 000000000..18c23ad20
--- /dev/null
+++ b/include/svx/ParseContext.hxx
@@ -0,0 +1,78 @@
+/* -*- 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_SVX_PARSECONTEXT_HXX
+#define INCLUDED_SVX_PARSECONTEXT_HXX
+
+#include
+
+#include
+#include
+#include
+#include
+
+namespace svxform
+{
+
+ //= OSystemParseContext
+
+ class SVXCORE_DLLPUBLIC OSystemParseContext final : public ::connectivity::IParseContext
+ {
+ private:
+
+ ::std::vector< OUString > m_aLocalizedKeywords;
+
+ public:
+ OSystemParseContext();
+
+ virtual ~OSystemParseContext();
+ // retrieves language specific error messages
+ virtual OUString getErrorMessage(ErrorCode _eCodes) const override;
+
+ // retrieves language specific keyword strings (only ASCII allowed)
+ virtual OString getIntlKeywordAscii(InternationalKeyCode _eKey) const override;
+
+ // finds out, if we have an international keyword (only ASCII allowed)
+ virtual InternationalKeyCode getIntlKeyCode(const OString& rToken) const override;
+
+ /** gets a locale instance which should be used when parsing in the context specified by this instance
+ if this is not overridden by derived classes, it returns the static default locale.
+ */
+ virtual css::lang::Locale getPreferredLocale( ) const override;
+
+ };
+
+
+ //= OParseContextClient
+
+ /** helper class which needs access to a (shared and ref-counted) OSystemParseContext
+ instance.
+ */
+ class SVXCORE_DLLPUBLIC OParseContextClient
+ {
+ protected:
+ OParseContextClient();
+ virtual ~OParseContextClient();
+
+ const OSystemParseContext* getParseContext() const;
+ };
+}
+#endif // INCLUDED_SVX_PARSECONTEXT_HXX
+
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/include/svx/ShapeTypeHandler.hxx b/include/svx/ShapeTypeHandler.hxx
new file mode 100644
index 000000000..b58463879
--- /dev/null
+++ b/include/svx/ShapeTypeHandler.hxx
@@ -0,0 +1,199 @@
+/* -*- 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_SVX_SHAPETYPEHANDLER_HXX
+#define INCLUDED_SVX_SHAPETYPEHANDLER_HXX
+
+#include
+
+#include
+#include
+#include
+#include
+
+namespace accessibility { class AccessibleShape; }
+namespace accessibility { class AccessibleShapeInfo; }
+namespace accessibility { class AccessibleShapeTreeInfo; }
+namespace com::sun::star::drawing { class XShape; }
+namespace com::sun::star::uno { template class Reference; }
+
+namespace accessibility {
+
+/** Use an integer to represent shape type ids. A ShapeTypeId is unique
+ inside one project but is not over the project boundaries.
+*/
+typedef int ShapeTypeId;
+
+/** Define the function type for creating accessible objects for given
+ service names.
+*/
+typedef AccessibleShape* (*tCreateFunction)
+ (const AccessibleShapeInfo& rShapeInfo,
+ const AccessibleShapeTreeInfo& rShapeTreeInfo,
+ ShapeTypeId nId);
+
+/** Each shape type is described by listing its id, its service name and a
+ function which creates a new accessible object that can represent that
+ service. The id has to be unique with respect to the create function.
+*/
+struct ShapeTypeDescriptor
+{
+ ShapeTypeId mnShapeTypeId;
+ OUString msServiceName;
+ tCreateFunction maCreateFunction;
+ ShapeTypeDescriptor (
+ ShapeTypeId nId, const OUString& sName, tCreateFunction aFunction)
+ : mnShapeTypeId (nId),
+ msServiceName (sName),
+ maCreateFunction (aFunction)
+ {}
+ ShapeTypeDescriptor()
+ : mnShapeTypeId (-1),
+ msServiceName (),
+ maCreateFunction (nullptr)
+ {}
+};
+
+/** @descr
+ This class is a singleton that has the purpose to transform between
+ service names of shapes and associated enum values and to create new
+ accessible objects for given shapes.
+*/
+class SVX_DLLPUBLIC ShapeTypeHandler final
+{
+public:
+ enum { UNKNOWN_SHAPE_TYPE = 0 };
+
+ /** This function returns a reference to the only instance of this class.
+ Use this instance to retrieve a shape's type and service name.
+ @return
+ Returns a reference to a ShapeTypeHandler object.
+ */
+ static ShapeTypeHandler& Instance();
+
+ /** Determines the type id of a shape with the given service name.
+ @param aServiceName
+ Service name of the shape for which to return the type id.
+ @return
+ Returns the type id of the shape with the given service name or
+ -1 when the service name is not known.
+ */
+ ShapeTypeId GetTypeId (const OUString& aServiceName) const;
+
+ /** Determines the type id of the specified shape.
+ @param xShape
+ Reference to the shape for which to return the type id.
+ @return
+ Returns the type id of the specified shape or
+ -1 when the given reference is either not
+ set or the referenced object does not support the
+ XShapeDescriptor interface.
+ */
+ ShapeTypeId GetTypeId (const css::uno::Reference<
+ css::drawing::XShape>& rxShape) const;
+
+ /** Create a new accessible object for the given shape.
+ @param rShapeInfo
+ Bundle of information passed to the new accessible shape.
+ @param rShapeTreeInfo
+ Bundle of information passed down the shape tree.
+ @return
+ Pointer to the implementation object that implements the
+ XAccessible
interface. This pointer may be NULL
+ if the specified shape is of unknown type.
+ */
+ rtl::Reference
+ CreateAccessibleObject (
+ const AccessibleShapeInfo& rShapeInfo,
+ const AccessibleShapeTreeInfo& rShapeTreeInfo) const;
+
+ /** Add new shape types to the internal tables. Each new shape type is
+ described by one shape type descriptor. See
+ ShapeTypeDescriptor for more details.
+
+ @param nDescriptorCount
+ Number of new shape types.
+ @param aDescriptorList
+ Array of new shape type descriptors.
+ */
+ void AddShapeTypeList (int nDescriptorCount,
+ ShapeTypeDescriptor const aDescriptorList[]);
+
+ /// get the accessible base name for an object
+ ///
+ /// @throws css::uno::RuntimeException
+ static OUString CreateAccessibleBaseName (
+ const css::uno::Reference< css::drawing::XShape >& rxShape);
+
+private:
+ // Declare default constructor, copy constructor, destructor, and
+ // assignment operation protected so that no one accidentally creates a
+ // second instance of this singleton class or deletes it.
+ ShapeTypeHandler();
+ ShapeTypeHandler (const ShapeTypeHandler& aHandler); // never implemented, this is a singleton class
+ ShapeTypeHandler& operator= (const ShapeTypeHandler& aHandler); // never implemented, this is a singleton class
+
+ /** This destructor is never called at the moment. But because this
+ class is a singleton this is not a problem.
+ */
+ ~ShapeTypeHandler();
+
+ /// Pointer to the only instance of this class.
+ static ShapeTypeHandler* instance;
+
+ /** List of shape type descriptors. This list is normally build up in
+ several steps when libraries that implement shapes are loaded and
+ call the addShapeTypeList method. After that no modifications of
+ the list take place.
+ */
+ ::std::vector maShapeTypeDescriptorList;
+
+ /** This hash map allows the fast look up of a type descriptor for a
+ given service name.
+ */
+ typedef std::unordered_map tServiceNameToSlotId;
+ mutable tServiceNameToSlotId maServiceNameToSlotId;
+
+ /** Determine the slot id of the specified shape type. With this id
+ internal methods can access the associated type descriptor.
+ @param aServiceName
+ Service name of the shape for which to return the slot id.
+ @return
+ Returns the slot id of the shape with the given service name or
+ 0 when the service name is not known.
+ */
+ SVX_DLLPRIVATE long GetSlotId (const OUString& aServiceName) const;
+
+ /** Determine the slot id of the specified shape type. With this id
+ internal methods can access the associated type descriptor.
+ @param rxShape
+ Shape for which to return the slot id.
+ @return
+ Returns the slot id of the shape with the given service name or
+ 0 when the service name is not known.
+ */
+ SVX_DLLPRIVATE long GetSlotId (const css::uno::Reference<
+ css::drawing::XShape>& rxShape) const;
+};
+
+} // end of namespace accessible
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/include/svx/SmartTagItem.hxx b/include/svx/SmartTagItem.hxx
new file mode 100644
index 000000000..9b8b11049
--- /dev/null
+++ b/include/svx/SmartTagItem.hxx
@@ -0,0 +1,82 @@
+/* -*- 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_SVX_SMARTTAGITEM_HXX
+#define INCLUDED_SVX_SMARTTAGITEM_HXX
+
+#include
+#include
+#include
+#include
+#include
+
+namespace com::sun::star::container {
+ class XStringKeyMap;
+}
+
+namespace com::sun::star::text {
+ class XTextRange;
+}
+
+namespace com::sun::star::frame {
+ class XController;
+}
+class SVX_DLLPUBLIC SvxSmartTagItem final : public SfxPoolItem
+{
+ const css::uno::Sequence < css::uno::Sequence< css::uno::Reference< css::smarttags::XSmartTagAction > > > maActionComponentsSequence;
+ const css::uno::Sequence < css::uno::Sequence< sal_Int32 > > maActionIndicesSequence;
+ const css::uno::Sequence< css::uno::Reference< css::container::XStringKeyMap > > maStringKeyMaps;
+ const css::uno::Reference mxRange;
+ const css::uno::Reference mxController;
+ const css::lang::Locale maLocale;
+ const OUString maApplicationName;
+ const OUString maRangeText;
+
+public:
+ static SfxPoolItem* CreateDefault();
+
+ SvxSmartTagItem( const sal_uInt16 nId,
+ const css::uno::Sequence < css::uno::Sequence< css::uno::Reference< css::smarttags::XSmartTagAction > > >& rActionComponentsSequence,
+ const css::uno::Sequence < css::uno::Sequence< sal_Int32 > >& rActionIndicesSequence,
+ const css::uno::Sequence< css::uno::Reference< css::container::XStringKeyMap > >& rStringKeyMaps,
+ const css::uno::Reference& rRange,
+ const css::uno::Reference& rController,
+ const css::lang::Locale& rLocale,
+ const OUString& rApplicationName,
+ const OUString& rRangeText );
+
+ // "purely virtual methods" from the SfxPoolItem
+ virtual bool operator==( const SfxPoolItem& ) const override;
+ virtual SvxSmartTagItem* Clone( SfxItemPool *pPool = nullptr ) const override;
+ virtual bool QueryValue( css::uno::Any& rVal, sal_uInt8 nMemberId = 0 ) const override;
+ virtual bool PutValue( const css::uno::Any& rVal, sal_uInt8 nMemberId ) override;
+
+ const css::uno::Sequence < css::uno::Sequence< css::uno::Reference< css::smarttags::XSmartTagAction > > >& GetActionComponentsSequence() const { return maActionComponentsSequence; }
+ const css::uno::Sequence < css::uno::Sequence< sal_Int32 > >& GetActionIndicesSequence() const { return maActionIndicesSequence; }
+ const css::uno::Sequence< css::uno::Reference< css::container::XStringKeyMap > >& GetStringKeyMaps() const { return maStringKeyMaps; }
+ const css::uno::Reference& GetTextRange() const { return mxRange; }
+ const css::uno::Reference& GetController() const { return mxController; }
+ const css::lang::Locale& GetLocale() const { return maLocale; }
+ const OUString& GetApplicationName() const { return maApplicationName; }
+ const OUString& GetRangeText() const { return maRangeText; }
+};
+
+#endif // INCLUDED_SVX_SMARTTAGITEM_HXX
+
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/include/svx/SmartTagMgr.hxx b/include/svx/SmartTagMgr.hxx
new file mode 100644
index 000000000..b20f68a60
--- /dev/null
+++ b/include/svx/SmartTagMgr.hxx
@@ -0,0 +1,230 @@
+/* -*- 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_SVX_SMARTTAGMGR_HXX
+#define INCLUDED_SVX_SMARTTAGMGR_HXX
+
+#include
+#include
+#include
+#include
+#include
+#include
+
+#include
+#include