summaryrefslogtreecommitdiffstats
path: root/svx/inc
diff options
context:
space:
mode:
Diffstat (limited to 'svx/inc')
-rw-r--r--svx/inc/AccessibleTableShape.hxx215
-rw-r--r--svx/inc/AffineMatrixItem.hxx44
-rw-r--r--svx/inc/CommonStylePreviewRenderer.hxx72
-rw-r--r--svx/inc/DescriptionGenerator.hxx140
-rw-r--r--svx/inc/GalleryControl.hxx52
-rw-r--r--svx/inc/ParaLineSpacingPopup.hxx46
-rw-r--r--svx/inc/TextCharacterSpacingPopup.hxx44
-rw-r--r--svx/inc/TextUnderlinePopup.hxx44
-rw-r--r--svx/inc/XPropertyTable.hxx35
-rw-r--r--svx/inc/bitmaps.hlst280
-rw-r--r--svx/inc/colrctrl.hxx102
-rw-r--r--svx/inc/dbcharsethelper.hxx34
-rw-r--r--svx/inc/dragmt3d.hxx122
-rw-r--r--svx/inc/dstribut_enum.hxx39
-rw-r--r--svx/inc/extrud3d.hxx112
-rw-r--r--svx/inc/extrusiondepthdialog.hxx41
-rw-r--r--svx/inc/fieldunit.hrc46
-rw-r--r--svx/inc/fmstring.hrc57
-rw-r--r--svx/inc/formnavi.hrc53
-rw-r--r--svx/inc/frmsel.hrc57
-rw-r--r--svx/inc/galbrws2.hxx185
-rw-r--r--svx/inc/galleryfilestorage.hxx108
-rw-r--r--svx/inc/galleryfilestorageentry.hxx66
-rw-r--r--svx/inc/gallerystoragelocations.hxx51
-rw-r--r--svx/inc/galobj.hxx177
-rw-r--r--svx/inc/getallcharpropids.hxx36
-rw-r--r--svx/inc/helpids.h66
-rw-r--r--svx/inc/inspectorvalues.hrc29
-rw-r--r--svx/inc/layctrl.hxx62
-rw-r--r--svx/inc/lboxctrl.hxx57
-rw-r--r--svx/inc/legacyitem.hxx60
-rw-r--r--svx/inc/numberingtype.hrc74
-rw-r--r--svx/inc/palettes.hxx106
-rw-r--r--svx/inc/pch/precompiled_svx.cxx12
-rw-r--r--svx/inc/pch/precompiled_svx.hxx438
-rw-r--r--svx/inc/pch/precompiled_svxcore.cxx12
-rw-r--r--svx/inc/pch/precompiled_svxcore.hxx556
-rw-r--r--svx/inc/polygn3d.hxx66
-rw-r--r--svx/inc/rotationstrings.hrc28
-rw-r--r--svx/inc/samecontent.hrc28
-rw-r--r--svx/inc/sdgcoitm.hxx69
-rw-r--r--svx/inc/sdginitm.hxx39
-rw-r--r--svx/inc/sdgtritm.hxx40
-rw-r--r--svx/inc/sdr/attribute/sdreffectstextattribute.hxx67
-rw-r--r--svx/inc/sdr/attribute/sdrfilltextattribute.hxx60
-rw-r--r--svx/inc/sdr/attribute/sdrformtextattribute.hxx81
-rw-r--r--svx/inc/sdr/attribute/sdrformtextoutlineattribute.hxx74
-rw-r--r--svx/inc/sdr/attribute/sdrlineeffectstextattribute.hxx62
-rw-r--r--svx/inc/sdr/attribute/sdrlinefilleffectstextattribute.hxx63
-rw-r--r--svx/inc/sdr/attribute/sdrtextattribute.hxx116
-rw-r--r--svx/inc/sdr/contact/objectcontactofobjlistpainter.hxx115
-rw-r--r--svx/inc/sdr/contact/viewcontactofe3d.hxx94
-rw-r--r--svx/inc/sdr/contact/viewcontactofe3dcube.hxx52
-rw-r--r--svx/inc/sdr/contact/viewcontactofe3dextrude.hxx53
-rw-r--r--svx/inc/sdr/contact/viewcontactofe3dlathe.hxx53
-rw-r--r--svx/inc/sdr/contact/viewcontactofe3dpolygon.hxx51
-rw-r--r--svx/inc/sdr/contact/viewcontactofe3dsphere.hxx53
-rw-r--r--svx/inc/sdr/contact/viewcontactofgraphic.hxx74
-rw-r--r--svx/inc/sdr/contact/viewcontactofgroup.hxx57
-rw-r--r--svx/inc/sdr/contact/viewcontactofmasterpagedescriptor.hxx68
-rw-r--r--svx/inc/sdr/contact/viewcontactofpageobj.hxx53
-rw-r--r--svx/inc/sdr/contact/viewcontactofsdrcaptionobj.hxx46
-rw-r--r--svx/inc/sdr/contact/viewcontactofsdrcircobj.hxx52
-rw-r--r--svx/inc/sdr/contact/viewcontactofsdredgeobj.hxx52
-rw-r--r--svx/inc/sdr/contact/viewcontactofsdrmeasureobj.hxx52
-rw-r--r--svx/inc/sdr/contact/viewcontactofsdrobjcustomshape.hxx55
-rw-r--r--svx/inc/sdr/contact/viewcontactofsdrole2obj.hxx70
-rw-r--r--svx/inc/sdr/contact/viewcontactofsdrpage.hxx211
-rw-r--r--svx/inc/sdr/contact/viewcontactofsdrpathobj.hxx52
-rw-r--r--svx/inc/sdr/contact/viewcontactofsdrrectobj.hxx46
-rw-r--r--svx/inc/sdr/contact/viewcontactoftextobj.hxx37
-rw-r--r--svx/inc/sdr/contact/viewcontactofunocontrol.hxx77
-rw-r--r--svx/inc/sdr/contact/viewobjectcontactofe3d.hxx52
-rw-r--r--svx/inc/sdr/contact/viewobjectcontactofe3dscene.hxx47
-rw-r--r--svx/inc/sdr/contact/viewobjectcontactofgraphic.hxx42
-rw-r--r--svx/inc/sdr/contact/viewobjectcontactofgroup.hxx45
-rw-r--r--svx/inc/sdr/contact/viewobjectcontactofmasterpagedescriptor.hxx45
-rw-r--r--svx/inc/sdr/contact/viewobjectcontactofpageobj.hxx50
-rw-r--r--svx/inc/sdr/contact/viewobjectcontactofsdrmediaobj.hxx69
-rw-r--r--svx/inc/sdr/contact/viewobjectcontactofsdrole2obj.hxx44
-rw-r--r--svx/inc/sdr/contact/viewobjectcontactofsdrpage.hxx176
-rw-r--r--svx/inc/sdr/contact/viewobjectcontactofunocontrol.hxx125
-rw-r--r--svx/inc/sdr/overlay/overlaycrosshair.hxx45
-rw-r--r--svx/inc/sdr/overlay/overlayhandle.hxx41
-rw-r--r--svx/inc/sdr/overlay/overlayhelpline.hxx54
-rw-r--r--svx/inc/sdr/overlay/overlayline.hxx53
-rw-r--r--svx/inc/sdr/overlay/overlaymanagerbuffered.hxx76
-rw-r--r--svx/inc/sdr/overlay/overlayobjectcell.hxx50
-rw-r--r--svx/inc/sdr/overlay/overlayrectangle.hxx65
-rw-r--r--svx/inc/sdr/overlay/overlayrollingrectangle.hxx62
-rw-r--r--svx/inc/sdr/overlay/overlaytools.hxx289
-rw-r--r--svx/inc/sdr/overlay/overlaytriangle.hxx45
-rw-r--r--svx/inc/sdr/primitive2d/primitivefactory2d.hxx68
-rw-r--r--svx/inc/sdr/primitive2d/sdrattributecreator.hxx129
-rw-r--r--svx/inc/sdr/primitive2d/sdrcaptionprimitive2d.hxx72
-rw-r--r--svx/inc/sdr/primitive2d/sdrconnectorprimitive2d.hxx62
-rw-r--r--svx/inc/sdr/primitive2d/sdrcustomshapeprimitive2d.hxx80
-rw-r--r--svx/inc/sdr/primitive2d/sdrdecompositiontools.hxx88
-rw-r--r--svx/inc/sdr/primitive2d/sdrellipseprimitive2d.hxx94
-rw-r--r--svx/inc/sdr/primitive2d/sdrgrafprimitive2d.hxx65
-rw-r--r--svx/inc/sdr/primitive2d/sdrmeasureprimitive2d.hxx118
-rw-r--r--svx/inc/sdr/primitive2d/sdrole2primitive2d.hxx65
-rw-r--r--svx/inc/sdr/primitive2d/sdrolecontentprimitive2d.hxx73
-rw-r--r--svx/inc/sdr/primitive2d/sdrpathprimitive2d.hxx82
-rw-r--r--svx/inc/sdr/primitive2d/sdrprimitivetools.hxx42
-rw-r--r--svx/inc/sdr/primitive2d/sdrrectangleprimitive2d.hxx73
-rw-r--r--svx/inc/sdr/primitive2d/sdrtextprimitive2d.hxx336
-rw-r--r--svx/inc/sdr/primitive3d/sdrattributecreator3d.hxx44
-rw-r--r--svx/inc/sdr/properties/attributeproperties.hxx96
-rw-r--r--svx/inc/sdr/properties/captionproperties.hxx62
-rw-r--r--svx/inc/sdr/properties/cellproperties.hxx80
-rw-r--r--svx/inc/sdr/properties/circleproperties.hxx62
-rw-r--r--svx/inc/sdr/properties/connectorproperties.hxx58
-rw-r--r--svx/inc/sdr/properties/customshapeproperties.hxx86
-rw-r--r--svx/inc/sdr/properties/e3dcompoundproperties.hxx63
-rw-r--r--svx/inc/sdr/properties/e3dextrudeproperties.hxx52
-rw-r--r--svx/inc/sdr/properties/e3dlatheproperties.hxx52
-rw-r--r--svx/inc/sdr/properties/e3dproperties.hxx56
-rw-r--r--svx/inc/sdr/properties/e3dsceneproperties.hxx78
-rw-r--r--svx/inc/sdr/properties/e3dsphereproperties.hxx52
-rw-r--r--svx/inc/sdr/properties/emptyproperties.hxx75
-rw-r--r--svx/inc/sdr/properties/graphicproperties.hxx65
-rw-r--r--svx/inc/sdr/properties/groupproperties.hxx97
-rw-r--r--svx/inc/sdr/properties/itemsettools.hxx59
-rw-r--r--svx/inc/sdr/properties/measureproperties.hxx62
-rw-r--r--svx/inc/sdr/properties/oleproperties.hxx51
-rw-r--r--svx/inc/sdr/properties/pageproperties.hxx80
-rw-r--r--svx/inc/sdr/properties/rectangleproperties.hxx56
-rw-r--r--svx/inc/sdr/properties/textproperties.hxx89
-rw-r--r--svx/inc/shapecollection.hxx74
-rw-r--r--svx/inc/spacing.hrc95
-rw-r--r--svx/inc/strings.hxx394
-rw-r--r--svx/inc/svxerr.hrc78
-rw-r--r--svx/inc/swframeposstrings.hrc78
-rw-r--r--svx/inc/sxallitm.hxx63
-rw-r--r--svx/inc/sxcaitm.hxx48
-rw-r--r--svx/inc/sxcikitm.hxx41
-rw-r--r--svx/inc/sxfiitm.hxx39
-rw-r--r--svx/inc/sxlayitm.hxx43
-rw-r--r--svx/inc/sxlogitm.hxx45
-rw-r--r--svx/inc/sxmfsitm.hxx35
-rw-r--r--svx/inc/sxmkitm.hxx44
-rw-r--r--svx/inc/sxmoitm.hxx42
-rw-r--r--svx/inc/sxmovitm.hxx45
-rw-r--r--svx/inc/sxmsitm.hxx43
-rw-r--r--svx/inc/sxmtaitm.hxx50
-rw-r--r--svx/inc/sxoneitm.hxx63
-rw-r--r--svx/inc/sxopitm.hxx45
-rw-r--r--svx/inc/sxreaitm.hxx46
-rw-r--r--svx/inc/sxreoitm.hxx46
-rw-r--r--svx/inc/sxroaitm.hxx40
-rw-r--r--svx/inc/sxrooitm.hxx36
-rw-r--r--svx/inc/sxsaitm.hxx40
-rw-r--r--svx/inc/sxsalitm.hxx45
-rw-r--r--svx/inc/sxsiitm.hxx30
-rw-r--r--svx/inc/sxsoitm.hxx45
-rw-r--r--svx/inc/sxtraitm.hxx63
-rw-r--r--svx/inc/tabwin.hrc36
-rw-r--r--svx/inc/tbxcolorupdate.hxx154
-rw-r--r--svx/inc/textchain.hxx106
-rw-r--r--svx/inc/textchaincursor.hxx63
-rw-r--r--svx/inc/textchainflow.hxx100
-rw-r--r--svx/inc/txenctab.hrc115
-rw-r--r--svx/inc/uiobject.hxx54
-rw-r--r--svx/inc/unomlstr.hxx47
-rw-r--r--svx/inc/verttexttbxctrl.hxx74
-rw-r--r--svx/inc/xftshtit.hxx37
-rw-r--r--svx/inc/xpolyimp.hxx63
168 files changed, 12998 insertions, 0 deletions
diff --git a/svx/inc/AccessibleTableShape.hxx b/svx/inc/AccessibleTableShape.hxx
new file mode 100644
index 0000000000..1a13ec36e6
--- /dev/null
+++ b/svx/inc/AccessibleTableShape.hxx
@@ -0,0 +1,215 @@
+/* -*- 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_INC_ACCESSIBLETABLESHAPE_HXX
+#define INCLUDED_SVX_INC_ACCESSIBLETABLESHAPE_HXX
+
+#include <com/sun/star/accessibility/XAccessibleTable.hpp>
+
+#include <rtl/ref.hxx>
+
+#include <cppuhelper/implbase.hxx>
+
+#include <svx/AccessibleShape.hxx>
+#include <com/sun/star/view/XSelectionChangeListener.hpp>
+#include <com/sun/star/accessibility/XAccessibleTableSelection.hpp>
+
+namespace sdr::table { class SvxTableController; }
+
+namespace accessibility
+{
+ class AccessibleTableShapeImpl;
+ class AccessibleCell;
+
+ typedef ::cppu::ImplInheritanceHelper< AccessibleShape,
+ css::accessibility::XAccessibleTable,
+ css::view::XSelectionChangeListener
+ > AccessibleTableShape_Base;
+class AccessibleTableShape final : public AccessibleTableShape_Base, public css::accessibility::XAccessibleTableSelection
+{
+ sal_Int32 mnPreviousSelectionCount;
+public:
+ AccessibleTableShape( const AccessibleShapeInfo& rShapeInfo, const AccessibleShapeTreeInfo& rShapeTreeInfo );
+ virtual ~AccessibleTableShape( ) override;
+ AccessibleTableShape(const AccessibleTableShape&) = delete;
+ AccessibleTableShape& operator=(const AccessibleTableShape&) = delete;
+
+ virtual void Init() override;
+
+ // XInterface
+ virtual css::uno::Any SAL_CALL queryInterface( const css::uno::Type& aType ) override;
+ virtual void SAL_CALL acquire( ) noexcept override;
+ virtual void SAL_CALL release( ) noexcept override;
+
+ // XAccessibleContext
+ virtual sal_Int64 SAL_CALL getAccessibleChildCount( ) override;
+ virtual css::uno::Reference< css::accessibility::XAccessible > SAL_CALL getAccessibleChild( sal_Int64 i ) override;
+ virtual sal_Int16 SAL_CALL getAccessibleRole() override;
+
+ // XAccessibleTable
+ virtual sal_Int32 SAL_CALL getAccessibleRowCount() override;
+ virtual sal_Int32 SAL_CALL getAccessibleColumnCount( ) override;
+ virtual OUString SAL_CALL getAccessibleRowDescription( sal_Int32 nRow ) override;
+ virtual OUString SAL_CALL getAccessibleColumnDescription( sal_Int32 nColumn ) override;
+ virtual sal_Int32 SAL_CALL getAccessibleRowExtentAt( sal_Int32 nRow, sal_Int32 nColumn ) override;
+ virtual sal_Int32 SAL_CALL getAccessibleColumnExtentAt( sal_Int32 nRow, sal_Int32 nColumn ) override;
+ virtual css::uno::Reference< css::accessibility::XAccessibleTable > SAL_CALL getAccessibleRowHeaders( ) override;
+ virtual css::uno::Reference< css::accessibility::XAccessibleTable > SAL_CALL getAccessibleColumnHeaders( ) override;
+ virtual css::uno::Sequence< sal_Int32 > SAL_CALL getSelectedAccessibleRows( ) override;
+ virtual css::uno::Sequence< sal_Int32 > SAL_CALL getSelectedAccessibleColumns( ) override;
+ virtual sal_Bool SAL_CALL isAccessibleRowSelected( sal_Int32 nRow ) override;
+ virtual sal_Bool SAL_CALL isAccessibleColumnSelected( sal_Int32 nColumn ) override;
+ virtual css::uno::Reference< css::accessibility::XAccessible > SAL_CALL getAccessibleCellAt( sal_Int32 nRow, sal_Int32 nColumn ) override;
+ virtual css::uno::Reference< css::accessibility::XAccessible > SAL_CALL getAccessibleCaption( ) override;
+ virtual css::uno::Reference< css::accessibility::XAccessible > SAL_CALL getAccessibleSummary( ) override;
+ virtual sal_Bool SAL_CALL isAccessibleSelected( sal_Int32 nRow, sal_Int32 nColumn ) override;
+ virtual sal_Int64 SAL_CALL getAccessibleIndex( sal_Int32 nRow, sal_Int32 nColumn ) override;
+ virtual sal_Int32 SAL_CALL getAccessibleRow( sal_Int64 nChildIndex ) override;
+ virtual sal_Int32 SAL_CALL getAccessibleColumn( sal_Int64 nChildIndex ) override;
+
+ // XAccessibleSelection
+ virtual void SAL_CALL selectAccessibleChild( sal_Int64 nChildIndex ) override;
+ virtual sal_Bool SAL_CALL isAccessibleChildSelected( sal_Int64 nChildIndex ) override;
+ virtual void SAL_CALL clearAccessibleSelection( ) override;
+ virtual void SAL_CALL selectAllAccessibleChildren( ) override;
+ virtual sal_Int64 SAL_CALL getSelectedAccessibleChildCount( ) override;
+ virtual css::uno::Reference< css::accessibility::XAccessible > SAL_CALL getSelectedAccessibleChild( sal_Int64 nSelectedChildIndex ) override;
+ virtual void SAL_CALL deselectAccessibleChild( sal_Int64 nChildIndex ) override;
+ // XAccessibleTableSelection
+ virtual sal_Bool SAL_CALL selectRow( sal_Int32 row ) override ;
+ virtual sal_Bool SAL_CALL selectColumn( sal_Int32 column ) override ;
+ virtual sal_Bool SAL_CALL unselectRow( sal_Int32 row ) override ;
+ virtual sal_Bool SAL_CALL unselectColumn( sal_Int32 column ) override ;
+
+ // XServiceInfo
+ virtual OUString SAL_CALL getImplementationName( ) override;
+
+ // XComponent
+ virtual void SAL_CALL disposing( ) override;
+
+ // XSelectionChangeListener
+ virtual void SAL_CALL
+ disposing (const css::lang::EventObject& Source) override;
+ virtual void SAL_CALL
+ selectionChanged (const css::lang::EventObject& rEvent) override;
+ using AccessibleShape::disposing;
+ friend class AccessibleTableHeaderShape;
+
+ /// @throws css::lang::IndexOutOfBoundsException
+ void getColumnAndRow( sal_Int64 nChildIndex, sal_Int32& rnColumn, sal_Int32& rnRow );
+ // overwrite the SetState & ResetState to do special operation for table cell's internal text
+ virtual bool SetState (sal_Int64 aState) override;
+ virtual bool ResetState (sal_Int64 aState) override;
+ // The following two methods are used to set state directly on table object, instead of the internal cell or paragraph.
+ bool SetStateDirectly (sal_Int64 aState);
+ bool ResetStateDirectly (sal_Int64 aState);
+ // Get the currently active cell which is text editing
+ AccessibleCell* GetActiveAccessibleCell();
+
+private:
+ virtual OUString CreateAccessibleBaseName() override;
+
+ sdr::table::SvxTableController* getTableController();
+
+ /// @throws css::lang::IndexOutOfBoundsException
+ void checkCellPosition( sal_Int32 nCol, sal_Int32 nRow );
+
+ rtl::Reference< AccessibleTableShapeImpl > mxImpl;
+ sal_Int64 GetIndexOfSelectedChild( sal_Int64 nSelectedChildIndex ) const;
+};
+
+typedef ::cppu::WeakImplHelper<
+ css::accessibility::XAccessible,
+ css::accessibility::XAccessibleComponent,
+ css::accessibility::XAccessibleContext,
+ css::accessibility::XAccessibleTable,
+ css::accessibility::XAccessibleTableSelection >
+ AccessibleTableHeaderShape_BASE;
+
+class AccessibleTableHeaderShape final : public AccessibleTableHeaderShape_BASE
+{
+public:
+ // bRow, true means rowheader, false means columnheader
+ AccessibleTableHeaderShape( AccessibleTableShape* pTable, bool bRow );
+ virtual ~AccessibleTableHeaderShape() override;
+ AccessibleTableHeaderShape(const AccessibleTableHeaderShape&) = delete;
+ AccessibleTableHeaderShape& operator=(const AccessibleTableHeaderShape&) = delete;
+
+ // XAccessible
+ virtual css::uno::Reference< css::accessibility::XAccessibleContext> SAL_CALL getAccessibleContext( ) override;
+
+ // XAccessibleContext
+ virtual sal_Int64 SAL_CALL getAccessibleChildCount( ) override;
+ virtual css::uno::Reference< css::accessibility::XAccessible > SAL_CALL getAccessibleChild( sal_Int64 i ) override;
+ virtual css::uno::Reference< css::accessibility::XAccessible > SAL_CALL getAccessibleParent( ) override;
+ virtual sal_Int64 SAL_CALL getAccessibleIndexInParent( ) override;
+ virtual sal_Int16 SAL_CALL getAccessibleRole( ) override;
+ virtual OUString SAL_CALL getAccessibleDescription( ) override;
+ virtual OUString SAL_CALL getAccessibleName( ) override;
+ virtual sal_Int64 SAL_CALL getAccessibleStateSet( ) override;
+ virtual css::uno::Reference< css::accessibility::XAccessibleRelationSet > SAL_CALL getAccessibleRelationSet( ) override;
+ virtual css::lang::Locale SAL_CALL getLocale( ) override;
+
+ //XAccessibleComponent
+ virtual sal_Bool SAL_CALL containsPoint( const css::awt::Point& aPoint ) override;
+ 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;
+ virtual void SAL_CALL grabFocus( ) override;
+
+ // XAccessibleTable
+ virtual sal_Int32 SAL_CALL getAccessibleRowCount() override;
+ virtual sal_Int32 SAL_CALL getAccessibleColumnCount( ) override;
+ virtual OUString SAL_CALL getAccessibleRowDescription( sal_Int32 nRow ) override;
+ virtual OUString SAL_CALL getAccessibleColumnDescription( sal_Int32 nColumn ) override;
+ virtual sal_Int32 SAL_CALL getAccessibleRowExtentAt( sal_Int32 nRow, sal_Int32 nColumn ) override;
+ virtual sal_Int32 SAL_CALL getAccessibleColumnExtentAt( sal_Int32 nRow, sal_Int32 nColumn ) override;
+ virtual css::uno::Reference< css::accessibility::XAccessibleTable > SAL_CALL getAccessibleRowHeaders( ) override;
+ virtual css::uno::Reference< css::accessibility::XAccessibleTable > SAL_CALL getAccessibleColumnHeaders( ) override;
+ virtual css::uno::Sequence< sal_Int32 > SAL_CALL getSelectedAccessibleRows( ) override;
+ virtual css::uno::Sequence< sal_Int32 > SAL_CALL getSelectedAccessibleColumns( ) override;
+ virtual sal_Bool SAL_CALL isAccessibleRowSelected( sal_Int32 nRow ) override;
+ virtual sal_Bool SAL_CALL isAccessibleColumnSelected( sal_Int32 nColumn ) override;
+ virtual css::uno::Reference< css::accessibility::XAccessible > SAL_CALL getAccessibleCellAt( sal_Int32 nRow, sal_Int32 nColumn ) override;
+ virtual css::uno::Reference< css::accessibility::XAccessible > SAL_CALL getAccessibleCaption( ) override;
+ virtual css::uno::Reference< css::accessibility::XAccessible > SAL_CALL getAccessibleSummary( ) override;
+ virtual sal_Bool SAL_CALL isAccessibleSelected( sal_Int32 nRow, sal_Int32 nColumn ) override;
+ virtual sal_Int64 SAL_CALL getAccessibleIndex( sal_Int32 nRow, sal_Int32 nColumn ) override;
+ virtual sal_Int32 SAL_CALL getAccessibleRow( sal_Int64 nChildIndex ) override;
+ virtual sal_Int32 SAL_CALL getAccessibleColumn( sal_Int64 nChildIndex ) override;
+
+ // XAccessibleTableSelection
+ virtual sal_Bool SAL_CALL selectRow( sal_Int32 row ) override ;
+ virtual sal_Bool SAL_CALL selectColumn( sal_Int32 column ) override ;
+ virtual sal_Bool SAL_CALL unselectRow( sal_Int32 row ) override ;
+ virtual sal_Bool SAL_CALL unselectColumn( sal_Int32 column ) override ;
+private:
+ bool mbRow;
+ rtl::Reference< AccessibleTableShape > mpTable;
+};
+
+} // end of namespace accessibility
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/svx/inc/AffineMatrixItem.hxx b/svx/inc/AffineMatrixItem.hxx
new file mode 100644
index 0000000000..c7eb5cb71e
--- /dev/null
+++ b/svx/inc/AffineMatrixItem.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 .
+ */
+#pragma once
+
+#include <com/sun/star/geometry/AffineMatrix2D.hpp>
+#include <sal/types.h>
+#include <svl/poolitem.hxx>
+
+class SfxItemPool;
+
+class AffineMatrixItem final : public SfxPoolItem
+{
+private:
+ css::geometry::AffineMatrix2D maMatrix;
+
+public:
+ AffineMatrixItem(const css::geometry::AffineMatrix2D* pMatrix);
+ AffineMatrixItem(const AffineMatrixItem&);
+ virtual ~AffineMatrixItem() override;
+
+ virtual bool operator==(const SfxPoolItem&) const override;
+ virtual AffineMatrixItem* 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;
+};
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/svx/inc/CommonStylePreviewRenderer.hxx b/svx/inc/CommonStylePreviewRenderer.hxx
new file mode 100644
index 0000000000..0e99421b4b
--- /dev/null
+++ b/svx/inc/CommonStylePreviewRenderer.hxx
@@ -0,0 +1,72 @@
+/* -*- 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/.
+ */
+
+#pragma once
+
+#include <optional>
+#include <vector>
+
+#include <editeng/editeng.hxx>
+#include <editeng/svxfont.hxx>
+#include <sfx2/objsh.hxx>
+#include <sfx2/StylePreviewRenderer.hxx>
+#include <rtl/ustring.hxx>
+#include <tools/color.hxx>
+#include <tools/gen.hxx>
+
+class OutputDevice;
+class SfxStyleSheetBase;
+
+using namespace css;
+
+namespace svx
+{
+class CommonStylePreviewRenderer final : public sfx2::StylePreviewRenderer
+{
+ std::optional<SvxFont> m_oFont;
+ std::optional<SvxFont> m_oCJKFont;
+ std::optional<SvxFont> m_oCTLFont;
+ Color maFontColor;
+ Color maHighlightColor;
+ Color maBackgroundColor;
+ tools::Long mnHeight;
+ tools::Long mnBaseLine;
+ OUString maStyleName;
+ OUString maScriptText;
+ struct ScriptInfo
+ {
+ tools::Long textWidth;
+ SvtScriptType scriptType;
+ sal_Int32 changePos;
+ ScriptInfo(SvtScriptType scrptType, sal_Int32 position)
+ : textWidth(0)
+ , scriptType(scrptType)
+ , changePos(position)
+ {
+ }
+ };
+ std::vector<ScriptInfo> maScriptChanges;
+
+ bool SetFontSize(const SfxItemSet& rSet, sal_uInt16 nSlot, SvxFont& rFont);
+ void CalcRenderSize();
+ void CheckScript();
+
+public:
+ CommonStylePreviewRenderer(const SfxObjectShell& rShell, OutputDevice& rOutputDev,
+ SfxStyleSheetBase* pStyle, tools::Long nMaxHeight);
+ virtual ~CommonStylePreviewRenderer() override;
+
+ virtual bool recalculate() override;
+ virtual bool render(const tools::Rectangle& aRectangle,
+ RenderAlign eRenderAlign = RenderAlign::CENTER) override;
+};
+
+} // end namespace svx
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/svx/inc/DescriptionGenerator.hxx b/svx/inc/DescriptionGenerator.hxx
new file mode 100644
index 0000000000..ca74204b59
--- /dev/null
+++ b/svx/inc/DescriptionGenerator.hxx
@@ -0,0 +1,140 @@
+/* -*- 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 <sal/config.h>
+
+#include <string_view>
+
+#include <com/sun/star/uno/Reference.hxx>
+#include <rtl/ustrbuf.hxx>
+#include <unotools/resmgr.hxx>
+
+namespace com::sun::star::beans
+{
+class XPropertySet;
+}
+namespace com::sun::star::drawing
+{
+class XShape;
+}
+
+namespace accessibility
+{
+/** This class creates description strings for shapes.
+ <p>Initialized with a given shape additional calls to the
+ <member>addProperty</member> method will build a descriptive string that
+ starts with a general shape description and the shapes style. Appended
+ are all the specified property names and values that differ from the
+ default values in the style.</p>
+*/
+class DescriptionGenerator
+{
+public:
+ enum class PropertyType
+ {
+ Color,
+ Integer
+ };
+
+ /** Creates a new description generator with an empty description
+ string. Usually you will want to call initialize next to specify
+ a general description of the shape.
+ @param xShape
+ The shape from which properties will be extracted by later calls
+ to <member>addProperty</member>.
+ */
+ DescriptionGenerator(css::uno::Reference<css::drawing::XShape> xShape);
+
+ ~DescriptionGenerator();
+
+ /** Initialize the description with the given prefix followed by the
+ shape style in parentheses and a colon.
+ @param sPrefix
+ An introductory description of the shape that is made more
+ specific by later calls to <member>addProperty</member>.
+ */
+ void Initialize(std::u16string_view sPrefix);
+
+ /** Initialize the description with the specified string from the
+ resource followed by the shape style in parentheses and a colon.
+ @param pResourceId
+ A resource id the specifies the introductory description of the
+ shape that is made more specific by later calls to
+ <member>addProperty</member>.
+ */
+ void Initialize(TranslateId pResourceId);
+
+ /** Returns the description string and then resets it. Usually called
+ as last method before destroying the object.
+ @return
+ The description string in its current form.
+ */
+ OUString operator()(void);
+
+ /** Add the given property name and its associated value to the
+ description string. If the property value does not differ from the
+ default value of the shape's style then the description string is
+ not modified.
+ @param sPropertyName
+ The Name of the property to append.
+ @param aType
+ Type of the property's value. It controls the transformation
+ into the value's string representation.
+ @param sLocalizedName
+ Localized name of the property. An empty string tells the
+ method to use the property name instead.
+ */
+ void AddProperty(const OUString& sPropertyName, PropertyType aType);
+
+ /** Append the given string as is to the current description.
+ @param sString
+ String to append to the current description. It is not modified
+ in any way.
+ */
+ void AppendString(std::u16string_view sString);
+
+private:
+ /// Reference to the shape from which the properties are extracted.
+ css::uno::Reference<css::drawing::XShape> mxShape;
+
+ /// Reference to the shape's property set.
+ css::uno::Reference<css::beans::XPropertySet> mxSet;
+
+ /// The description string that is build.
+ OUStringBuffer msDescription;
+
+ /** This flag is used to determine whether to insert a separator e.g. a
+ comma before the next property.
+ */
+ bool mbIsFirstProperty;
+
+ /** Add a property value formatted as color to the description string.
+ */
+ void AddColor(const OUString& sPropertyName);
+
+ /** Add a property value formatted as integer to the description string.
+ */
+ void AddInteger(const OUString& sPropertyName);
+};
+
+} // end of namespace accessibility
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/svx/inc/GalleryControl.hxx b/svx/inc/GalleryControl.hxx
new file mode 100644
index 0000000000..d5835fb575
--- /dev/null
+++ b/svx/inc/GalleryControl.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_INC_GALLERYCONTROL_HXX
+#define INCLUDED_SVX_INC_GALLERYCONTROL_HXX
+
+#include <config_options.h>
+#include <sfx2/sidebar/PanelLayout.hxx>
+#include <svx/svxdllapi.h>
+
+class SfxBindings;
+
+class Gallery;
+class GalleryBrowser1;
+class GalleryBrowser2;
+class FmFormModel;
+class Splitter;
+
+namespace svx::sidebar
+{
+class UNLESS_MERGELIBS(SVXCORE_DLLPUBLIC) GalleryControl final : public PanelLayout
+{
+public:
+ GalleryControl(weld::Widget* pParentWindow);
+ virtual ~GalleryControl() override;
+
+private:
+ Gallery* mpGallery;
+ std::unique_ptr<GalleryBrowser1> mxBrowser1;
+ std::unique_ptr<GalleryBrowser2> mxBrowser2;
+};
+
+} // end of namespace svx::sidebar
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/svx/inc/ParaLineSpacingPopup.hxx b/svx/inc/ParaLineSpacingPopup.hxx
new file mode 100644
index 0000000000..0b042f44b1
--- /dev/null
+++ b/svx/inc/ParaLineSpacingPopup.hxx
@@ -0,0 +1,46 @@
+/* -*- 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 <svtools/popupwindowcontroller.hxx>
+
+namespace svx
+{
+class SvxLineSpacingToolBoxControl final : public svt::PopupWindowController
+{
+public:
+ explicit SvxLineSpacingToolBoxControl(
+ const css::uno::Reference<css::uno::XComponentContext>& rContext);
+ virtual ~SvxLineSpacingToolBoxControl() override;
+
+ virtual void SAL_CALL execute(sal_Int16 KeyModifier) override;
+
+ virtual VclPtr<vcl::Window> createVclPopupWindow(vcl::Window* pParent) override;
+ virtual std::unique_ptr<WeldToolbarPopup> weldPopupWindow() override;
+
+ // XServiceInfo
+ virtual OUString SAL_CALL getImplementationName() override;
+ virtual css::uno::Sequence<OUString> SAL_CALL getSupportedServiceNames() override;
+
+ // XInitialization
+ virtual void SAL_CALL initialize(const css::uno::Sequence<css::uno::Any>& rArguments) override;
+};
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/svx/inc/TextCharacterSpacingPopup.hxx b/svx/inc/TextCharacterSpacingPopup.hxx
new file mode 100644
index 0000000000..bb1092c820
--- /dev/null
+++ b/svx/inc/TextCharacterSpacingPopup.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 .
+ */
+#pragma once
+
+#include <svtools/popupwindowcontroller.hxx>
+
+namespace svx
+{
+class TextCharacterSpacingPopup final : public svt::PopupWindowController
+{
+public:
+ TextCharacterSpacingPopup(const css::uno::Reference<css::uno::XComponentContext>& rContext);
+ virtual ~TextCharacterSpacingPopup() override;
+
+ virtual std::unique_ptr<WeldToolbarPopup> weldPopupWindow() override;
+ virtual VclPtr<vcl::Window> createVclPopupWindow(vcl::Window* pParent) override;
+
+ // XServiceInfo
+ virtual OUString SAL_CALL getImplementationName() override;
+ virtual css::uno::Sequence<OUString> SAL_CALL getSupportedServiceNames() override;
+
+ // XInitialization
+ virtual void SAL_CALL initialize(const css::uno::Sequence<css::uno::Any>& rArguments) override;
+};
+
+} // end of namespace svx
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/svx/inc/TextUnderlinePopup.hxx b/svx/inc/TextUnderlinePopup.hxx
new file mode 100644
index 0000000000..973f50c531
--- /dev/null
+++ b/svx/inc/TextUnderlinePopup.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 .
+ */
+#pragma once
+
+#include <svtools/popupwindowcontroller.hxx>
+
+namespace svx
+{
+class TextUnderlinePopup final : public svt::PopupWindowController
+{
+public:
+ TextUnderlinePopup(const css::uno::Reference<css::uno::XComponentContext>& rContext);
+ virtual ~TextUnderlinePopup() override;
+
+ virtual std::unique_ptr<WeldToolbarPopup> weldPopupWindow() override;
+ virtual VclPtr<vcl::Window> createVclPopupWindow(vcl::Window* pParent) override;
+
+ // XServiceInfo
+ virtual OUString SAL_CALL getImplementationName() override;
+ virtual css::uno::Sequence<OUString> SAL_CALL getSupportedServiceNames() override;
+
+ // XInitialization
+ virtual void SAL_CALL initialize(const css::uno::Sequence<css::uno::Any>& rArguments) override;
+};
+
+} // end of namespace svx
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/svx/inc/XPropertyTable.hxx b/svx/inc/XPropertyTable.hxx
new file mode 100644
index 0000000000..e9f76965ef
--- /dev/null
+++ b/svx/inc/XPropertyTable.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 .
+ */
+
+#pragma once
+
+#include <com/sun/star/container/XNameContainer.hpp>
+#include <svx/xtable.hxx>
+
+// FIXME: should have a single factory method with an enumeration here [!]
+
+css::uno::Reference< css::container::XNameContainer > SvxUnoXColorTable_createInstance( XPropertyList& rList ) noexcept;
+css::uno::Reference< css::container::XNameContainer > SvxUnoXLineEndTable_createInstance( XPropertyList& rList ) noexcept;
+css::uno::Reference< css::container::XNameContainer > SvxUnoXDashTable_createInstance( XPropertyList& rList ) noexcept;
+css::uno::Reference< css::container::XNameContainer > SvxUnoXHatchTable_createInstance( XPropertyList& rList ) noexcept;
+css::uno::Reference< css::container::XNameContainer > SvxUnoXGradientTable_createInstance( XPropertyList& rList ) noexcept;
+css::uno::Reference< css::container::XNameContainer > SvxUnoXBitmapTable_createInstance( XPropertyList& rList ) noexcept;
+
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/svx/inc/bitmaps.hlst b/svx/inc/bitmaps.hlst
new file mode 100644
index 0000000000..aaa07a3383
--- /dev/null
+++ b/svx/inc/bitmaps.hlst
@@ -0,0 +1,280 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4; fill-column: 100 -*- */
+/*
+ * 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/.
+ */
+#pragma once
+
+#include <rtl/ustring.hxx>
+
+inline constexpr OUString RID_SVXCTRL_RECTBTNS = u"svx/res/rectbtns.png"_ustr;
+
+inline constexpr OUString RID_SVXBMP_FRMSEL_ARROW1 = u"svx/res/frmsel1.png"_ustr;
+inline constexpr OUString RID_SVXBMP_FRMSEL_ARROW2 = u"svx/res/frmsel2.png"_ustr;
+inline constexpr OUString RID_SVXBMP_FRMSEL_ARROW3 = u"svx/res/frmsel3.png"_ustr;
+inline constexpr OUString RID_SVXBMP_FRMSEL_ARROW4 = u"svx/res/frmsel4.png"_ustr;
+inline constexpr OUString RID_SVXBMP_FRMSEL_ARROW5 = u"svx/res/frmsel5.png"_ustr;
+inline constexpr OUString RID_SVXBMP_FRMSEL_ARROW6 = u"svx/res/frmsel6.png"_ustr;
+inline constexpr OUString RID_SVXBMP_FRMSEL_ARROW7 = u"svx/res/frmsel7.png"_ustr;
+inline constexpr OUString RID_SVXBMP_FRMSEL_ARROW8 = u"svx/res/frmsel8.png"_ustr;
+inline constexpr OUString RID_SVXBMP_FRMSEL_ARROW9 = u"svx/res/frmsel9.png"_ustr;
+inline constexpr OUString RID_SVXBMP_FRMSEL_ARROW10 = u"svx/res/frmsel10.png"_ustr;
+inline constexpr OUString RID_SVXBMP_FRMSEL_ARROW11 = u"svx/res/frmsel11.png"_ustr;
+inline constexpr OUString RID_SVXBMP_FRMSEL_ARROW12 = u"svx/res/frmsel12.png"_ustr;
+inline constexpr OUString RID_SVXBMP_FRMSEL_ARROW13 = u"svx/res/frmsel13.png"_ustr;
+inline constexpr OUString RID_SVXBMP_FRMSEL_ARROW14 = u"svx/res/frmsel14.png"_ustr;
+inline constexpr OUString RID_SVXBMP_FRMSEL_ARROW15 = u"svx/res/frmsel15.png"_ustr;
+inline constexpr OUString RID_SVXBMP_FRMSEL_ARROW16 = u"svx/res/frmsel16.png"_ustr;
+
+inline constexpr OUString RID_SVXBMP_NOTCHECKED = u"svx/res/notcheck.png"_ustr;
+inline constexpr OUString RID_SVXBMP_CHECKED = u"svx/res/lngcheck.png"_ustr;
+
+inline constexpr OUString RID_SVXBMP_GREENCHECK = u"svx/res/nu01.png"_ustr;
+inline constexpr OUString RID_SVXBMP_YELLOWCHECK = u"svx/res/nu04.png"_ustr;
+inline constexpr OUString RID_SVXBMP_REDCROSS = u"svx/res/nu02.png"_ustr;
+inline constexpr OUString RID_SVXBMP_SHADOW_ANGLE = u"svx/res/fw018.png"_ustr;
+inline constexpr OUString RID_SVXBMP_SHADOW_SIZE = u"svx/res/fw019.png"_ustr;
+inline constexpr OUString RID_SVXBMP_SHADOW_XDIST = u"svx/res/fw016.png"_ustr;
+inline constexpr OUString RID_SVXBMP_SHADOW_YDIST = u"svx/res/fw017.png"_ustr;
+
+inline constexpr OUString RID_SVXBMP_DIRECTION_DIRECTION_NW = u"svx/res/directionnorthwest_22.png"_ustr;
+inline constexpr OUString RID_SVXBMP_DIRECTION_DIRECTION_N = u"svx/res/directionnorth_22.png"_ustr;
+inline constexpr OUString RID_SVXBMP_DIRECTION_DIRECTION_NE = u"svx/res/directionnortheast_22.png"_ustr;
+inline constexpr OUString RID_SVXBMP_DIRECTION_DIRECTION_W = u"svx/res/directionwest_22.png"_ustr;
+inline constexpr OUString RID_SVXBMP_DIRECTION_DIRECTION_NONE = u"svx/res/directionstraight_22.png"_ustr;
+inline constexpr OUString RID_SVXBMP_DIRECTION_DIRECTION_E = u"svx/res/directioneast_22.png"_ustr;
+inline constexpr OUString RID_SVXBMP_DIRECTION_DIRECTION_SW = u"svx/res/directionsouthwest_22.png"_ustr;
+inline constexpr OUString RID_SVXBMP_DIRECTION_DIRECTION_S = u"svx/res/directionsouth_22.png"_ustr;
+inline constexpr OUString RID_SVXBMP_DIRECTION_DIRECTION_SE = u"svx/res/directionsoutheast_22.png"_ustr;
+inline constexpr OUString RID_SVXBMP_LIGHT_OFF_FROM_TOP_LEFT = u"svx/res/lightofffromtopleft_22.png"_ustr;
+inline constexpr OUString RID_SVXBMP_LIGHT_OFF_FROM_TOP = u"svx/res/lightofffromtop_22.png"_ustr;
+inline constexpr OUString RID_SVXBMP_LIGHT_OFF_FROM_TOP_RIGHT = u"svx/res/lightofffromtopright_22.png"_ustr;
+inline constexpr OUString RID_SVXBMP_LIGHT_OFF_FROM_LEFT = u"svx/res/lightofffromleft_22.png"_ustr;
+inline constexpr OUString RID_SVXBMP_LIGHT_OFF_FROM_RIGHT = u"svx/res/lightofffromright_22.png"_ustr;
+inline constexpr OUString RID_SVXBMP_LIGHT_OFF_FROM_BOTTOM_LEFT = u"svx/res/lightofffrombottomleft_22.png"_ustr;
+inline constexpr OUString RID_SVXBMP_LIGHT_OFF_FROM_BOTTOM = u"svx/res/lightofffrombottom_22.png"_ustr;
+inline constexpr OUString RID_SVXBMP_LIGHT_OFF_FROM_BOTTOM_RIGHT = u"svx/res/lightofffrombottomright_22.png"_ustr;
+inline constexpr OUString RID_SVXBMP_LIGHT_ON_FROM_TOP_LEFT = u"svx/res/lightonfromtopleft_22.png"_ustr;
+inline constexpr OUString RID_SVXBMP_LIGHT_ON_FROM_TOP = u"svx/res/lightonfromtop_22.png"_ustr;
+inline constexpr OUString RID_SVXBMP_LIGHT_ON_FROM_TOP_RIGHT = u"svx/res/lightonfromtopright_22.png"_ustr;
+inline constexpr OUString RID_SVXBMP_LIGHT_ON_FROM_LEFT = u"svx/res/lightonfromleft_22.png"_ustr;
+inline constexpr OUString RID_SVXBMP_LIGHT_ON_FROM_RIGHT = u"svx/res/lightonfromright_22.png"_ustr;
+inline constexpr OUString RID_SVXBMP_LIGHT_ON_FROM_BOTTOM_LEFT = u"svx/res/lightonfrombottomleft_22.png"_ustr;
+inline constexpr OUString RID_SVXBMP_LIGHT_ON_FROM_BOTTOM = u"svx/res/lightonfrombottom_22.png"_ustr;
+inline constexpr OUString RID_SVXBMP_LIGHT_ON_FROM_BOTTOM_RIGHT = u"svx/res/lightonfrombottomright_22.png"_ustr;
+inline constexpr OUString RID_SVXBMP_LIGHT_PREVIEW_FROM_TOP_LEFT = u"svx/res/lightfromtopleft_22.png"_ustr;
+inline constexpr OUString RID_SVXBMP_LIGHT_PREVIEW_FROM_TOP = u"svx/res/lightfromtop_22.png"_ustr;
+inline constexpr OUString RID_SVXBMP_LIGHT_PREVIEW_FROM_TOP_RIGHT = u"svx/res/lightfromtopright_22.png"_ustr;
+inline constexpr OUString RID_SVXBMP_LIGHT_PREVIEW_FROM_LEFT = u"svx/res/lightfromleft_22.png"_ustr;
+inline constexpr OUString RID_SVXBMP_LIGHT_PREVIEW_FROM_RIGHT = u"svx/res/lightfromright_22.png"_ustr;
+inline constexpr OUString RID_SVXBMP_LIGHT_PREVIEW_FROM_FRONT = u"svx/res/lightfromfront_22.png"_ustr;
+inline constexpr OUString RID_SVXBMP_LIGHT_PREVIEW_FROM_BOTTOM_LEFT = u"svx/res/lightfrombottomleft_22.png"_ustr;
+inline constexpr OUString RID_SVXBMP_LIGHT_PREVIEW_FROM_BOTTOM = u"svx/res/lightfrombottom_22.png"_ustr;
+inline constexpr OUString RID_SVXBMP_LIGHT_PREVIEW_FROM_BOTTOM_RIGHT = u"svx/res/lightfrombottomright_22.png"_ustr;
+
+inline constexpr OUString RID_SVXBMP_LAMP_ON = u"svx/res/lighton.png"_ustr;
+inline constexpr OUString RID_SVXBMP_LAMP_OFF = u"svx/res/light.png"_ustr;
+
+inline constexpr OUString RID_SVXBMP_ELEMENT = u"res/da03.png"_ustr;
+inline constexpr OUString RID_SVXBMP_ATTRIBUTE = u"res/da04.png"_ustr;
+inline constexpr OUString RID_SVXBMP_TEXT = u"res/da05.png"_ustr;
+inline constexpr OUString RID_SVXBMP_OTHER = u"res/da06.png"_ustr;
+
+inline constexpr OUString RID_SVXBMP_FORM = u"res/sx10593.png"_ustr;
+inline constexpr OUString RID_SVXBMP_CONTROL = u"res/sx10144.png"_ustr;
+inline constexpr OUString RID_SVXBMP_BUTTON = u"res/sx10594.png"_ustr;
+inline constexpr OUString RID_SVXBMP_RADIOBUTTON = u"res/sx10595.png"_ustr;
+inline constexpr OUString RID_SVXBMP_CHECKBOX = u"res/sx10596.png"_ustr;
+inline constexpr OUString RID_SVXBMP_FIXEDTEXT = u"res/sx10597.png"_ustr;
+inline constexpr OUString RID_SVXBMP_GROUPBOX = u"res/sx10598.png"_ustr;
+inline constexpr OUString RID_SVXBMP_EDITBOX = u"res/sx10599.png"_ustr;
+inline constexpr OUString RID_SVXBMP_LISTBOX = u"res/sx10600.png"_ustr;
+inline constexpr OUString RID_SVXBMP_COMBOBOX = u"res/sx10601.png"_ustr;
+inline constexpr OUString RID_SVXBMP_FORMS = u"res/sx18013.png"_ustr;
+inline constexpr OUString RID_SVXBMP_IMAGEBUTTON = u"res/sx10604.png"_ustr;
+inline constexpr OUString RID_SVXBMP_IMAGECONTROL = u"res/sx10710.png"_ustr;
+inline constexpr OUString RID_SVXBMP_FILECONTROL = u"res/sx10605.png"_ustr;
+inline constexpr OUString RID_SVXBMP_DATEFIELD = u"res/sx10704.png"_ustr;
+inline constexpr OUString RID_SVXBMP_TIMEFIELD = u"res/sx10705.png"_ustr;
+inline constexpr OUString RID_SVXBMP_NUMERICFIELD = u"res/sx10706.png"_ustr;
+inline constexpr OUString RID_SVXBMP_CURRENCYFIELD = u"res/sx10707.png"_ustr;
+inline constexpr OUString RID_SVXBMP_PATTERNFIELD = u"res/sx10708.png"_ustr;
+inline constexpr OUString RID_SVXBMP_HIDDEN = u"res/sx18022.png"_ustr;
+inline constexpr OUString RID_SVXBMP_GRID = u"res/sx10603.png"_ustr;
+inline constexpr OUString RID_SVXBMP_FORMATTEDFIELD = u"res/sx10728.png"_ustr;
+inline constexpr OUString RID_SVXBMP_FILTER = u"res/sx10715.png"_ustr;
+inline constexpr OUString RID_SVXBMP_DATE_N_TIME_FIELDS = u"res/sx10757.png"_ustr;
+inline constexpr OUString RID_SVXBMP_FIELD = u"res/sx18027.png"_ustr;
+inline constexpr OUString RID_SVXBMP_SCROLLBAR = u"res/sx10768.png"_ustr;
+inline constexpr OUString RID_SVXBMP_SPINBUTTON = u"res/sx10769.png"_ustr;
+inline constexpr OUString RID_SVXBMP_NAVIGATIONBAR = u"res/sx10607.png"_ustr;
+
+inline constexpr OUString RID_SVXBMP_THEME_NORMAL = u"svx/res/galnors.png"_ustr;
+inline constexpr OUString RID_SVXBMP_THEME_READONLY = u"svx/res/galrdos.png"_ustr;
+inline constexpr OUString RID_SVXBMP_THEME_DEFAULT = u"svx/res/galdefs.png"_ustr;
+inline constexpr OUString RID_SVXBMP_GALLERY_MEDIA = u"svx/res/galmedia.png"_ustr;
+inline constexpr OUString RID_SVXBMP_GALLERY_SOUND_1 = u"svx/res/galsnd1.png"_ustr;
+inline constexpr OUString RID_SVXBMP_GALLERY_SOUND_2 = u"svx/res/galsnd2.png"_ustr;
+inline constexpr OUString RID_SVXBMP_GALLERY_SOUND_3 = u"svx/res/galsnd3.png"_ustr;
+inline constexpr OUString RID_SVXBMP_GALLERY_SOUND_4 = u"svx/res/galsnd4.png"_ustr;
+inline constexpr OUString RID_SVXBMP_GALLERY_SOUND_5 = u"svx/res/galsnd5.png"_ustr;
+inline constexpr OUString RID_SVXBMP_GALLERY_SOUND_6 = u"svx/res/galsnd6.png"_ustr;
+inline constexpr OUString RID_SVXBMP_GALLERY_SOUND_7 = u"svx/res/galsnd7.png"_ustr;
+
+inline constexpr OUString BMP_NONE_ICON = u"svx/res/symphony/blank.png"_ustr;
+inline constexpr OUString RID_SVXBMP_WIDTH_CUSTOM = u"svx/res/symphony/last_custom_common.png"_ustr;
+inline constexpr OUString RID_SVXBMP_WIDTH_CUSTOM_GRAY = u"svx/res/symphony/last_custom_common_grey.png"_ustr;
+
+inline constexpr OUString BMP_AXIAL = u"svx/res/symphony/axial.png"_ustr;
+inline constexpr OUString BMP_ELLI = u"svx/res/symphony/ellipsoid.png"_ustr;
+inline constexpr OUString BMP_QUAD = u"svx/res/symphony/Quadratic.png"_ustr;
+inline constexpr OUString BMP_RADIAL = u"svx/res/symphony/radial.png"_ustr;
+inline constexpr OUString BMP_SQUARE = u"svx/res/symphony/Square.png"_ustr;
+inline constexpr OUString BMP_LINEAR = u"svx/res/symphony/linear.png"_ustr;
+
+inline constexpr OUString RID_SVXBMP_STANDARD_SELECTION = u"svx/res/standard-selection.png"_ustr;
+inline constexpr OUString RID_SVXBMP_EXTENDING_SELECTION = u"svx/res/extending-selection.png"_ustr;
+inline constexpr OUString RID_SVXBMP_ADDING_SELECTION = u"svx/res/adding-selection.png"_ustr;
+inline constexpr OUString RID_SVXBMP_BLOCK_SELECTION = u"svx/res/block-selection.png"_ustr;
+inline constexpr OUString RID_SVXBMP_POSITION = u"res/sc10223.png"_ustr;
+inline constexpr OUString RID_SVXBMP_SIZE = u"res/sc10224.png"_ustr;
+inline constexpr OUString RID_SVXBMP_SIGNET = u"svx/res/signet_11x16.png"_ustr;
+inline constexpr OUString RID_SVXBMP_SIGNET_BROKEN = u"svx/res/caution_11x16.png"_ustr;
+inline constexpr OUString RID_SVXBMP_SIGNET_NOTVALIDATED = u"svx/res/notcertificate_16.png"_ustr;
+inline constexpr OUString RID_SVXBMP_SLIDERBUTTON = u"svx/res/slidezoombutton_10.png"_ustr;
+inline constexpr OUString RID_SVXBMP_SLIDERDECREASE = u"svx/res/slidezoomout_10.png"_ustr;
+inline constexpr OUString RID_SVXBMP_SLIDERINCREASE = u"svx/res/slidezoomin_10.png"_ustr;
+inline constexpr OUString RID_SVXBMP_DOC_MODIFIED_YES = u"svx/res/doc_modified_yes.png"_ustr;
+inline constexpr OUString RID_SVXBMP_DOC_MODIFIED_NO = u"svx/res/doc_modified_no.png"_ustr;
+inline constexpr OUString RID_SVXBMP_DOC_MODIFIED_FEEDBACK = u"svx/res/doc_modified_feedback.png"_ustr;
+inline constexpr OUString RID_SVXBMP_ZOOM_PAGE = u"svx/res/zoom_page_statusbar.png"_ustr;
+
+inline constexpr OUString BMAP_GrafikEi = u"res/grafikei.png"_ustr;
+inline constexpr OUString SIP_SA_PAGESHADOW35X35 = u"svx/res/pageshadow35x35.png"_ustr;
+inline constexpr OUString SIP_SA_MARKERS = u"svx/res/markers.png"_ustr;
+inline constexpr OUString BMP_SVXOLEOBJ = u"res/oleobj.png"_ustr;
+inline constexpr OUString SIP_SA_CROP_MARKERS = u"svx/res/cropmarkers.png"_ustr;
+#define BMP_MARKER_ANCHOR "svx/res/marker-anchor.png"
+#define BMP_MARKER_ANCHOR_PRESSED "svx/res/marker-anchor-pressed.png"
+#define BMP_MARKER_CIRC7_1 "svx/res/marker-circ7-1.png"
+#define BMP_MARKER_CIRC7_2 "svx/res/marker-circ7-2.png"
+#define BMP_MARKER_CIRC7_3 "svx/res/marker-circ7-3.png"
+#define BMP_MARKER_CIRC7_4 "svx/res/marker-circ7-4.png"
+#define BMP_MARKER_CIRC7_5 "svx/res/marker-circ7-5.png"
+#define BMP_MARKER_CIRC7_6 "svx/res/marker-circ7-6.png"
+#define BMP_MARKER_CIRC9_1 "svx/res/marker-circ9-1.png"
+#define BMP_MARKER_CIRC9_2 "svx/res/marker-circ9-2.png"
+#define BMP_MARKER_CIRC9_3 "svx/res/marker-circ9-3.png"
+#define BMP_MARKER_CIRC9_4 "svx/res/marker-circ9-4.png"
+#define BMP_MARKER_CIRC9_5 "svx/res/marker-circ9-5.png"
+#define BMP_MARKER_CIRC9_6 "svx/res/marker-circ9-6.png"
+#define BMP_MARKER_CIRC11_1 "svx/res/marker-circ11-1.png"
+#define BMP_MARKER_CIRC11_2 "svx/res/marker-circ11-2.png"
+#define BMP_MARKER_CIRC11_3 "svx/res/marker-circ11-3.png"
+#define BMP_MARKER_CIRC11_4 "svx/res/marker-circ11-4.png"
+#define BMP_MARKER_CIRC11_5 "svx/res/marker-circ11-5.png"
+#define BMP_MARKER_CIRC11_6 "svx/res/marker-circ11-6.png"
+#define BMP_MARKER_CROSS "svx/res/marker-cross.png"
+#define BMP_MARKER_ELLI7x9_1 "svx/res/marker-elli7x9-1.png"
+#define BMP_MARKER_ELLI7x9_2 "svx/res/marker-elli7x9-2.png"
+#define BMP_MARKER_ELLI7x9_3 "svx/res/marker-elli7x9-3.png"
+#define BMP_MARKER_ELLI7x9_4 "svx/res/marker-elli7x9-4.png"
+#define BMP_MARKER_ELLI7x9_5 "svx/res/marker-elli7x9-5.png"
+#define BMP_MARKER_ELLI7x9_6 "svx/res/marker-elli7x9-6.png"
+#define BMP_MARKER_ELLI9x7_1 "svx/res/marker-elli9x7-1.png"
+#define BMP_MARKER_ELLI9x7_2 "svx/res/marker-elli9x7-2.png"
+#define BMP_MARKER_ELLI9x7_3 "svx/res/marker-elli9x7-3.png"
+#define BMP_MARKER_ELLI9x7_4 "svx/res/marker-elli9x7-4.png"
+#define BMP_MARKER_ELLI9x7_5 "svx/res/marker-elli9x7-5.png"
+#define BMP_MARKER_ELLI9x7_6 "svx/res/marker-elli9x7-6.png"
+#define BMP_MARKER_ELLI9x11_1 "svx/res/marker-elli9x11-1.png"
+#define BMP_MARKER_ELLI9x11_2 "svx/res/marker-elli9x11-2.png"
+#define BMP_MARKER_ELLI9x11_3 "svx/res/marker-elli9x11-3.png"
+#define BMP_MARKER_ELLI9x11_4 "svx/res/marker-elli9x11-4.png"
+#define BMP_MARKER_ELLI9x11_5 "svx/res/marker-elli9x11-5.png"
+#define BMP_MARKER_ELLI9x11_6 "svx/res/marker-elli9x11-6.png"
+#define BMP_MARKER_ELLI11x9_1 "svx/res/marker-elli11x9-1.png"
+#define BMP_MARKER_ELLI11x9_2 "svx/res/marker-elli11x9-2.png"
+#define BMP_MARKER_ELLI11x9_3 "svx/res/marker-elli11x9-3.png"
+#define BMP_MARKER_ELLI11x9_4 "svx/res/marker-elli11x9-4.png"
+#define BMP_MARKER_ELLI11x9_5 "svx/res/marker-elli11x9-5.png"
+#define BMP_MARKER_ELLI11x9_6 "svx/res/marker-elli11x9-6.png"
+#define BMP_MARKER_GLUE_SELECTED "svx/res/marker-glue-selected.png"
+#define BMP_MARKER_GLUE_UNSELECTED "svx/res/marker-glue-unselected.png"
+#define BMP_MARKER_RECT7_1 "svx/res/marker-rect7-1.png"
+#define BMP_MARKER_RECT7_2 "svx/res/marker-rect7-2.png"
+#define BMP_MARKER_RECT7_3 "svx/res/marker-rect7-3.png"
+#define BMP_MARKER_RECT7_4 "svx/res/marker-rect7-4.png"
+#define BMP_MARKER_RECT7_5 "svx/res/marker-rect7-5.png"
+#define BMP_MARKER_RECT7_6 "svx/res/marker-rect7-6.png"
+#define BMP_MARKER_RECT9_1 "svx/res/marker-rect9-1.png"
+#define BMP_MARKER_RECT9_2 "svx/res/marker-rect9-2.png"
+#define BMP_MARKER_RECT9_3 "svx/res/marker-rect9-3.png"
+#define BMP_MARKER_RECT9_4 "svx/res/marker-rect9-4.png"
+#define BMP_MARKER_RECT9_5 "svx/res/marker-rect9-5.png"
+#define BMP_MARKER_RECT9_6 "svx/res/marker-rect9-6.png"
+#define BMP_MARKER_RECT11_1 "svx/res/marker-rect11-1.png"
+#define BMP_MARKER_RECT11_2 "svx/res/marker-rect11-2.png"
+#define BMP_MARKER_RECT11_3 "svx/res/marker-rect11-3.png"
+#define BMP_MARKER_RECT11_4 "svx/res/marker-rect11-4.png"
+#define BMP_MARKER_RECT11_5 "svx/res/marker-rect11-5.png"
+#define BMP_MARKER_RECT11_6 "svx/res/marker-rect11-6.png"
+#define BMP_MARKER_RECT13_1 "svx/res/marker-rect13-1.png"
+#define BMP_MARKER_RECT13_2 "svx/res/marker-rect13-2.png"
+#define BMP_MARKER_RECT13_3 "svx/res/marker-rect13-3.png"
+#define BMP_MARKER_RECT13_4 "svx/res/marker-rect13-4.png"
+#define BMP_MARKER_RECT13_5 "svx/res/marker-rect13-5.png"
+#define BMP_MARKER_RECT13_6 "svx/res/marker-rect13-6.png"
+#define BMP_MARKER_RECTPLUS7_1 "svx/res/marker-rectplus7-1.png"
+#define BMP_MARKER_RECTPLUS7_2 "svx/res/marker-rectplus7-2.png"
+#define BMP_MARKER_RECTPLUS7_3 "svx/res/marker-rectplus7-3.png"
+#define BMP_MARKER_RECTPLUS7_4 "svx/res/marker-rectplus7-4.png"
+#define BMP_MARKER_RECTPLUS7_5 "svx/res/marker-rectplus7-5.png"
+#define BMP_MARKER_RECTPLUS7_6 "svx/res/marker-rectplus7-6.png"
+#define BMP_MARKER_RECTPLUS9_1 "svx/res/marker-rectplus9-1.png"
+#define BMP_MARKER_RECTPLUS9_2 "svx/res/marker-rectplus9-2.png"
+#define BMP_MARKER_RECTPLUS9_3 "svx/res/marker-rectplus9-3.png"
+#define BMP_MARKER_RECTPLUS9_4 "svx/res/marker-rectplus9-4.png"
+#define BMP_MARKER_RECTPLUS9_5 "svx/res/marker-rectplus9-5.png"
+#define BMP_MARKER_RECTPLUS9_6 "svx/res/marker-rectplus9-6.png"
+#define BMP_MARKER_RECTPLUS11_1 "svx/res/marker-rectplus11-1.png"
+#define BMP_MARKER_RECTPLUS11_2 "svx/res/marker-rectplus11-2.png"
+#define BMP_MARKER_RECTPLUS11_3 "svx/res/marker-rectplus11-3.png"
+#define BMP_MARKER_RECTPLUS11_4 "svx/res/marker-rectplus11-4.png"
+#define BMP_MARKER_RECTPLUS11_5 "svx/res/marker-rectplus11-5.png"
+#define BMP_MARKER_RECTPLUS11_6 "svx/res/marker-rectplus11-6.png"
+
+/*
+ * Bitmaps for SvxFrameWindow
+ */
+inline constexpr OUString RID_SVXBMP_FRAME1 = u"svx/res/fr01.png"_ustr;
+inline constexpr OUString RID_SVXBMP_FRAME2 = u"svx/res/fr02.png"_ustr;
+inline constexpr OUString RID_SVXBMP_FRAME3 = u"svx/res/fr03.png"_ustr;
+inline constexpr OUString RID_SVXBMP_FRAME4 = u"svx/res/fr04.png"_ustr;
+inline constexpr OUString RID_SVXBMP_FRAME5 = u"svx/res/fr05.png"_ustr;
+inline constexpr OUString RID_SVXBMP_FRAME6 = u"svx/res/fr06.png"_ustr;
+inline constexpr OUString RID_SVXBMP_FRAME7 = u"svx/res/fr07.png"_ustr;
+inline constexpr OUString RID_SVXBMP_FRAME8 = u"svx/res/fr08.png"_ustr;
+inline constexpr OUString RID_SVXBMP_FRAME9 = u"svx/res/fr09.png"_ustr;
+inline constexpr OUString RID_SVXBMP_FRAME10 = u"svx/res/fr010.png"_ustr;
+inline constexpr OUString RID_SVXBMP_FRAME11 = u"svx/res/fr011.png"_ustr;
+inline constexpr OUString RID_SVXBMP_FRAME12 = u"svx/res/fr012.png"_ustr;
+inline constexpr OUString RID_SVXBMP_FRAME13 = u"svx/res/fr013.png"_ustr;
+inline constexpr OUString RID_SVXBMP_FRAME14 = u"svx/res/fr014.png"_ustr;
+inline constexpr OUString RID_SVXBMP_FRAME15 = u"svx/res/fr015.png"_ustr;
+inline constexpr OUString RID_SVXBMP_GRAF_RED = u"res/sc10865.png"_ustr;
+inline constexpr OUString RID_SVXBMP_GRAF_GREEN = u"res/sc10866.png"_ustr;
+inline constexpr OUString RID_SVXBMP_GRAF_BLUE = u"res/sc10867.png"_ustr;
+inline constexpr OUString RID_SVXBMP_GRAF_LUMINANCE = u"res/sc10863.png"_ustr;
+inline constexpr OUString RID_SVXBMP_GRAF_CONTRAST = u"res/sc10864.png"_ustr;
+inline constexpr OUString RID_SVXBMP_GRAF_GAMMA = u"res/sc10868.png"_ustr;
+inline constexpr OUString RID_SVXBMP_GRAF_TRANSPARENCE = u"res/sc10869.png"_ustr;
+
+inline constexpr OUString RID_UNODRAW_OBJECTS = u"svx/res/objects.png"_ustr;
+inline constexpr OUString RID_UNODRAW_OLE2 = u"svx/res/ole.png"_ustr;
+inline constexpr OUString RID_UNODRAW_GRAPHICS = u"svx/res/graphic.png"_ustr;
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab cinoptions=b1,g0,N-s cinkeys+=0=break: */
diff --git a/svx/inc/colrctrl.hxx b/svx/inc/colrctrl.hxx
new file mode 100644
index 0000000000..012f008559
--- /dev/null
+++ b/svx/inc/colrctrl.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 .
+ */
+#pragma once
+
+#include <sal/types.h>
+#include <sfx2/dockwin.hxx>
+#include <svl/lstner.hxx>
+#include <svx/SvxColorValueSet.hxx>
+#include <svx/xtable.hxx>
+#include <tools/gen.hxx>
+#include <tools/link.hxx>
+#include <vcl/vclptr.hxx>
+#include <com/sun/star/drawing/FillStyle.hpp>
+
+namespace vcl { class Window; }
+
+class SfxBindings;
+class SfxBroadcaster;
+class SfxChildWindow;
+class SfxHint;
+class SvxColorValueSetData;
+
+/*************************************************************************
+|*
+|* SvxColorValueSet_docking
+|*
+\************************************************************************/
+
+class SAL_WARN_UNUSED SvxColorValueSet_docking final : public SvxColorValueSet
+{
+ rtl::Reference<SvxColorValueSetData> m_xHelper;
+ bool mbLeftButton;
+
+ // ValueSet
+ virtual bool MouseButtonDown(const MouseEvent& rMEvt) override;
+ virtual bool MouseButtonUp(const MouseEvent& rMEvt) override;
+ virtual void SetDrawingArea(weld::DrawingArea* pDrawingArea) override;
+
+ virtual bool StartDrag() override;
+
+public:
+ SvxColorValueSet_docking(std::unique_ptr<weld::ScrolledWindow> pWindow);
+
+ bool IsLeftButton() const { return mbLeftButton; }
+};
+
+/*************************************************************************
+|*
+|* SvxColorDockingWindow
+|*
+\************************************************************************/
+
+class SAL_WARN_UNUSED SvxColorDockingWindow final : public SfxDockingWindow, public SfxListener
+{
+friend class SvxColorChildWindow;
+
+private:
+ XColorListRef pColorList;
+ std::unique_ptr<SvxColorValueSet_docking> xColorSet;
+ std::unique_ptr<weld::CustomWeld> xColorSetWin;
+
+ void FillValueSet();
+
+ DECL_LINK(SelectHdl, ValueSet*, void);
+
+ /** This function is called when the window gets the focus. It grabs
+ the focus to the color value set so that it can be controlled with
+ the keyboard.
+ */
+ virtual void GetFocus() override;
+
+ virtual bool Close() override;
+
+public:
+ SvxColorDockingWindow(SfxBindings* pBindings,
+ SfxChildWindow *pCW,
+ vcl::Window* pParent);
+ virtual ~SvxColorDockingWindow() override;
+ virtual void dispose() override;
+
+ virtual void Notify( SfxBroadcaster& rBC, const SfxHint& rHint ) override;
+
+ virtual bool EventNotify( NotifyEvent& rNEvt ) override;
+};
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/svx/inc/dbcharsethelper.hxx b/svx/inc/dbcharsethelper.hxx
new file mode 100644
index 0000000000..8dfaf27ca6
--- /dev/null
+++ b/svx/inc/dbcharsethelper.hxx
@@ -0,0 +1,34 @@
+/* -*- 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 <rtl/textenc.h>
+
+#include <vector>
+
+namespace svxform::charset_helper
+{
+/** enumerates all supported charsets
+ @return the number of charsets supported
+ */
+sal_Int32 getSupportedTextEncodings(::std::vector<rtl_TextEncoding>& _rEncs);
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/svx/inc/dragmt3d.hxx b/svx/inc/dragmt3d.hxx
new file mode 100644
index 0000000000..79402d0def
--- /dev/null
+++ b/svx/inc/dragmt3d.hxx
@@ -0,0 +1,122 @@
+/* -*- 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_INC_DRAGMT3D_HXX
+#define INCLUDED_SVX_INC_DRAGMT3D_HXX
+
+#include <svx/def3d.hxx>
+#include <svx/svddrgmt.hxx>
+#include <svx/view3d.hxx>
+#include <basegfx/polygon/b3dpolypolygon.hxx>
+#include <basegfx/matrix/b3dhommatrix.hxx>
+
+// Parameters for the interaction of a 3D object
+class E3dDragMethodUnit
+{
+public:
+ E3dObject& mr3DObj;
+ basegfx::B3DPolyPolygon maWireframePoly;
+ basegfx::B3DHomMatrix maDisplayTransform;
+ basegfx::B3DHomMatrix maInvDisplayTransform;
+ basegfx::B3DHomMatrix maInitTransform;
+ basegfx::B3DHomMatrix maTransform;
+ Degree100 mnStartAngle;
+ Degree100 mnLastAngle;
+
+ E3dDragMethodUnit(E3dObject& r3DObj)
+ : mr3DObj(r3DObj),
+ maWireframePoly(),
+ maDisplayTransform(),
+ maInvDisplayTransform(),
+ maInitTransform(),
+ maTransform(),
+ mnStartAngle(0),
+ mnLastAngle(0)
+ {
+ }
+};
+
+// Derivative of SdrDragMethod for 3D objects
+class E3dDragMethod : public SdrDragMethod
+{
+protected:
+ ::std::vector< E3dDragMethodUnit > maGrp;
+ E3dDragConstraint meConstraint;
+ Point maLastPos;
+ tools::Rectangle maFullBound;
+ bool mbMoveFull;
+ bool mbMovedAtAll;
+
+public:
+ E3dDragMethod(
+ SdrDragView &rView,
+ const SdrMarkList& rMark,
+ E3dDragConstraint eConstr,
+ bool bFull);
+
+ virtual OUString GetSdrDragComment() const override;
+ virtual bool BeginSdrDrag() override;
+ virtual void MoveSdrDrag(const Point& rPnt) override;
+ virtual void CancelSdrDrag() override;
+ virtual bool EndSdrDrag(bool bCopy) override;
+
+ // for migration from XOR to overlay
+ virtual void CreateOverlayGeometry(
+ sdr::overlay::OverlayManager& rOverlayManager,
+ const sdr::contact::ObjectContact& rObjectContact) override;
+};
+
+// Derivative of SdrDragMethod for spinning 3D objects
+class E3dDragRotate final : public E3dDragMethod
+{
+ basegfx::B3DPoint maGlobalCenter;
+
+public:
+ E3dDragRotate(
+ SdrDragView &rView,
+ const SdrMarkList& rMark,
+ E3dDragConstraint eConstr,
+ bool bFull);
+
+ virtual void MoveSdrDrag(const Point& rPnt) override;
+ virtual PointerStyle GetSdrDragPointer() const override;
+};
+
+// Derivative of SdrDragMethod for moving 3D sub-objects
+class E3dDragMove final : public E3dDragMethod
+{
+ SdrHdlKind meWhatDragHdl;
+ Point maScaleFixPos;
+
+public:
+ E3dDragMove(
+ SdrDragView &rView,
+ const SdrMarkList& rMark,
+ SdrHdlKind eDrgHdl,
+ E3dDragConstraint eConstr,
+ bool bFull);
+
+ virtual void MoveSdrDrag(const Point& rPnt) override;
+ virtual PointerStyle GetSdrDragPointer() const override;
+};
+
+
+#endif // INCLUDED_SVX_INC_DRAGMT3D_HXX
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/svx/inc/dstribut_enum.hxx b/svx/inc/dstribut_enum.hxx
new file mode 100644
index 0000000000..98d9628507
--- /dev/null
+++ b/svx/inc/dstribut_enum.hxx
@@ -0,0 +1,39 @@
+/* -*- 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
+
+enum class SvxDistributeHorizontal
+{
+ NONE = 0,
+ Left,
+ Center,
+ Distance,
+ Right
+};
+
+enum class SvxDistributeVertical
+{
+ NONE = 0,
+ Top,
+ Center,
+ Distance,
+ Bottom
+};
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/svx/inc/extrud3d.hxx b/svx/inc/extrud3d.hxx
new file mode 100644
index 0000000000..2b8f39d282
--- /dev/null
+++ b/svx/inc/extrud3d.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 .
+ */
+
+#pragma once
+
+#include <config_options.h>
+#include <svl/intitem.hxx>
+#include <svl/itemset.hxx>
+#include <svx/obj3d.hxx>
+#include <svx/svxdllapi.h>
+#include <svx/svddef.hxx>
+#include <svx/svx3ditems.hxx>
+
+class E3dDefaultAttributes;
+
+/*************************************************************************
+|*
+|* 3D extrusion object created from the provided 2D polygon
+|*
+\************************************************************************/
+
+class SAL_WARN_UNUSED UNLESS_MERGELIBS(SVXCORE_DLLPUBLIC) E3dExtrudeObj final : public E3dCompoundObject
+{
+private:
+ // to allow sdr::properties::E3dExtrudeProperties access to SetGeometryValid()
+ friend class sdr::properties::E3dExtrudeProperties;
+
+ // geometry, which determines the object
+ basegfx::B2DPolyPolygon maExtrudePolygon;
+
+ virtual std::unique_ptr<sdr::contact::ViewContact> CreateObjectSpecificViewContact() override;
+ virtual std::unique_ptr<sdr::properties::BaseProperties> CreateObjectSpecificProperties() override;
+ void SetDefaultAttributes(const E3dDefaultAttributes& rDefault);
+
+private:
+ // protected destructor - due to final, make private
+ virtual ~E3dExtrudeObj() override;
+
+public:
+ E3dExtrudeObj(
+ SdrModel& rSdrModel,
+ const E3dDefaultAttributes& rDefault,
+ basegfx::B2DPolyPolygon aPP,
+ double fDepth);
+ E3dExtrudeObj(SdrModel& rSdrModel, E3dExtrudeObj const & rSource);
+ E3dExtrudeObj(SdrModel& rSdrModel);
+
+ // PercentDiagonal: 0..100, before 0.0..0.5
+ sal_uInt16 GetPercentDiagonal() const
+ { return GetObjectItemSet().Get(SDRATTR_3DOBJ_PERCENT_DIAGONAL).GetValue(); }
+
+ // BackScale: 0..100, before 0.0..1.0
+ sal_uInt16 GetPercentBackScale() const
+ { return GetObjectItemSet().Get(SDRATTR_3DOBJ_BACKSCALE).GetValue(); }
+
+ // BackScale: 0..100, before 0.0..1.0
+ sal_uInt32 GetExtrudeDepth() const
+ { return GetObjectItemSet().Get(SDRATTR_3DOBJ_DEPTH).GetValue(); }
+
+ // #107245# GetSmoothNormals() for bExtrudeSmoothed
+ bool GetSmoothNormals() const
+ { return GetObjectItemSet().Get(SDRATTR_3DOBJ_SMOOTH_NORMALS).GetValue(); }
+
+ // #107245# GetSmoothLids() for bExtrudeSmoothFrontBack
+ bool GetSmoothLids() const
+ { return GetObjectItemSet().Get(SDRATTR_3DOBJ_SMOOTH_LIDS).GetValue(); }
+
+ // #107245# GetCharacterMode() for bExtrudeCharacterMode
+ bool GetCharacterMode() const
+ { return GetObjectItemSet().Get(SDRATTR_3DOBJ_CHARACTER_MODE).GetValue(); }
+
+ // #107245# GetCloseFront() for bExtrudeCloseFront
+ bool GetCloseFront() const
+ { return GetObjectItemSet().Get(SDRATTR_3DOBJ_CLOSE_FRONT).GetValue(); }
+
+ // #107245# GetCloseBack() for bExtrudeCloseBack
+ bool GetCloseBack() const
+ { return GetObjectItemSet().Get(SDRATTR_3DOBJ_CLOSE_BACK).GetValue(); }
+
+ virtual SdrObjKind GetObjIdentifier() const override;
+
+ virtual rtl::Reference<SdrObject> CloneSdrObject(SdrModel& rTargetModel) const override;
+
+ // TakeObjName...() is for the display in the UI (for example "3 frames selected")
+ virtual OUString TakeObjNameSingul() const override;
+ virtual OUString TakeObjNamePlural() const override;
+
+ // set/get local parameters with geometry regeneration
+ void SetExtrudePolygon(const basegfx::B2DPolyPolygon &rNew);
+ const basegfx::B2DPolyPolygon &GetExtrudePolygon() const { return maExtrudePolygon; }
+
+ virtual bool IsBreakObjPossible() override;
+ virtual rtl::Reference<SdrAttrObj> GetBreakObj() override;
+};
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/svx/inc/extrusiondepthdialog.hxx b/svx/inc/extrusiondepthdialog.hxx
new file mode 100644
index 0000000000..11d69c1703
--- /dev/null
+++ b/svx/inc/extrusiondepthdialog.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/.
+ *
+ * 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_INC_EXTRUSIONDEPTHDIALOG_HXX
+#define INCLUDED_SVX_INC_EXTRUSIONDEPTHDIALOG_HXX
+
+#include <vcl/weld.hxx>
+
+namespace svx
+{
+class ExtrusionDepthDialog final : public weld::GenericDialogController
+{
+ std::unique_ptr<weld::MetricSpinButton> m_xMtrDepth;
+
+public:
+ ExtrusionDepthDialog(weld::Window* pParent, double fDepth, FieldUnit eDefaultUnit);
+ virtual ~ExtrusionDepthDialog() override;
+
+ double getDepth() const;
+};
+}
+
+#endif // INCLUDED_SVX_INC_EXTRUSIONDEPTHDIALOG_HXX
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/svx/inc/fieldunit.hrc b/svx/inc/fieldunit.hrc
new file mode 100644
index 0000000000..49888736b6
--- /dev/null
+++ b/svx/inc/fieldunit.hrc
@@ -0,0 +1,46 @@
+/* -*- 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_INC_PAGE_HRC
+#define INCLUDED_SVX_INC_PAGE_HRC
+
+#include <tools/fldunit.hxx>
+#include <utility>
+#include <unotools/resmgr.hxx>
+
+#define NC_(Context, String) TranslateId(Context, u8##String)
+
+const std::pair<TranslateId, FieldUnit> RID_SVXSTR_FIELDUNIT_TABLE[] =
+{
+ { NC_("RID_SVXSTR_FIELDUNIT_TABLE", "Millimeter") , FieldUnit::MM },
+ { NC_("RID_SVXSTR_FIELDUNIT_TABLE", "Centimeter") , FieldUnit::CM },
+ { NC_("RID_SVXSTR_FIELDUNIT_TABLE", "Meter") , FieldUnit::M },
+ { NC_("RID_SVXSTR_FIELDUNIT_TABLE", "Kilometer") , FieldUnit::KM },
+ { NC_("RID_SVXSTR_FIELDUNIT_TABLE", "Inch") , FieldUnit::INCH },
+ { NC_("RID_SVXSTR_FIELDUNIT_TABLE", "Foot") , FieldUnit::FOOT },
+ { NC_("RID_SVXSTR_FIELDUNIT_TABLE", "Miles") , FieldUnit::MILE },
+ { NC_("RID_SVXSTR_FIELDUNIT_TABLE", "Pica") , FieldUnit::PICA },
+ { NC_("RID_SVXSTR_FIELDUNIT_TABLE", "Point") , FieldUnit::POINT },
+ { NC_("RID_SVXSTR_FIELDUNIT_TABLE", "Char") , FieldUnit::CHAR },
+ { NC_("RID_SVXSTR_FIELDUNIT_TABLE", "Line") , FieldUnit::LINE },
+};
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/svx/inc/fmstring.hrc b/svx/inc/fmstring.hrc
new file mode 100644
index 0000000000..d630f354b8
--- /dev/null
+++ b/svx/inc/fmstring.hrc
@@ -0,0 +1,57 @@
+/* -*- 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_INC_FMSTRING_HRC
+#define INCLUDED_SVX_INC_FMSTRING_HRC
+
+#include <unotools/resmgr.hxx>
+
+#define NC_(Context, String) TranslateId(Context, u8##String)
+
+const TranslateId RID_RSC_SQL_INTERNATIONAL[] =
+{
+ NC_("RID_RSC_SQL_INTERNATIONAL", "LIKE"),
+ NC_("RID_RSC_SQL_INTERNATIONAL", "NOT"),
+ NC_("RID_RSC_SQL_INTERNATIONAL", "EMPTY"),
+ NC_("RID_RSC_SQL_INTERNATIONAL", "TRUE"),
+ NC_("RID_RSC_SQL_INTERNATIONAL", "FALSE"),
+ NC_("RID_RSC_SQL_INTERNATIONAL", "IS"),
+ NC_("RID_RSC_SQL_INTERNATIONAL", "BETWEEN"),
+ NC_("RID_RSC_SQL_INTERNATIONAL", "OR"),
+ NC_("RID_RSC_SQL_INTERNATIONAL", "AND"),
+ NC_("RID_RSC_SQL_INTERNATIONAL", "Average"),
+ NC_("RID_RSC_SQL_INTERNATIONAL", "Count"),
+ NC_("RID_RSC_SQL_INTERNATIONAL", "Maximum"),
+ NC_("RID_RSC_SQL_INTERNATIONAL", "Minimum"),
+ NC_("RID_RSC_SQL_INTERNATIONAL", "Sum"),
+ NC_("RID_RSC_SQL_INTERNATIONAL", "Every"),
+ NC_("RID_RSC_SQL_INTERNATIONAL", "Any"),
+ NC_("RID_RSC_SQL_INTERNATIONAL", "Some"),
+ NC_("RID_RSC_SQL_INTERNATIONAL", "STDDEV_POP"),
+ NC_("RID_RSC_SQL_INTERNATIONAL", "STDDEV_SAMP"),
+ NC_("RID_RSC_SQL_INTERNATIONAL", "VAR_SAMP"),
+ NC_("RID_RSC_SQL_INTERNATIONAL", "VAR_POP"),
+ NC_("RID_RSC_SQL_INTERNATIONAL", "Collect"),
+ NC_("RID_RSC_SQL_INTERNATIONAL", "Fusion"),
+ NC_("RID_RSC_SQL_INTERNATIONAL", "Intersection")
+};
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/svx/inc/formnavi.hrc b/svx/inc/formnavi.hrc
new file mode 100644
index 0000000000..61a4772b5a
--- /dev/null
+++ b/svx/inc/formnavi.hrc
@@ -0,0 +1,53 @@
+/* -*- 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_INC_FRMSEL_HRC
+#define INCLUDED_SVX_INC_FRMSEL_HRC
+
+#include <unotools/resmgr.hxx>
+
+#define NC_(Context, String) TranslateId(Context, u8##String)
+
+const TranslateId RID_SVXSW_CONVERTMENU[] =
+{
+ NC_("RID_SVXSW_CONVERTMENU|ConvertToEdit", "~Text Box"),
+ NC_("RID_SVXSW_CONVERTMENU|ConvertToButton", "~Button"),
+ NC_("RID_SVXSW_CONVERTMENU|ConvertToFixed", "La~bel field"),
+ NC_("RID_SVXSW_CONVERTMENU|ConvertToList", "L~ist Box"),
+ NC_("RID_SVXSW_CONVERTMENU|ConvertToCheckBox", "~Check Box"),
+ NC_("RID_SVXSW_CONVERTMENU|ConvertToRadio", "~Radio Button"),
+ NC_("RID_SVXSW_CONVERTMENU|ConvertToGroup", "G~roup Box"),
+ NC_("RID_SVXSW_CONVERTMENU|ConvertToCombo", "Combo Bo~x"),
+ NC_("RID_SVXSW_CONVERTMENU|ConvertToImageBtn", "I~mage Button"),
+ NC_("RID_SVXSW_CONVERTMENU|ConvertToFileControl", "~File Selection"),
+ NC_("RID_SVXSW_CONVERTMENU|ConvertToDate", "~Date Field"),
+ NC_("RID_SVXSW_CONVERTMENU|ConvertToTime", "Tim~e Field"),
+ NC_("RID_SVXSW_CONVERTMENU|ConvertToNumeric", "~Numerical Field"),
+ NC_("RID_SVXSW_CONVERTMENU|ConvertToCurrency", "C~urrency Field"),
+ NC_("RID_SVXSW_CONVERTMENU|ConvertToPattern", "~Pattern Field"),
+ NC_("RID_SVXSW_CONVERTMENU|ConvertToImageControl", "Ima~ge Control"),
+ NC_("RID_SVXSW_CONVERTMENU|ConvertToFormatted", "Fo~rmatted Field"),
+ NC_("RID_SVXSW_CONVERTMENU|ConvertToScrollBar", "Scroll bar"),
+ NC_("RID_SVXSW_CONVERTMENU|ConvertToSpinButton", "Spin Button"),
+ NC_("RID_SVXSW_CONVERTMENU|ConvertToNavigationBar", "Navigation Bar")
+};
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/svx/inc/frmsel.hrc b/svx/inc/frmsel.hrc
new file mode 100644
index 0000000000..c3fa77f9b7
--- /dev/null
+++ b/svx/inc/frmsel.hrc
@@ -0,0 +1,57 @@
+/* -*- 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_INC_FRMSEL_HRC
+#define INCLUDED_SVX_INC_FRMSEL_HRC
+
+#include <utility>
+#include <sal/types.h>
+#include <unotools/resmgr.hxx>
+
+#define NC_(Context, String) TranslateId(Context, u8##String)
+
+std::pair<TranslateId, sal_uInt16> RID_SVXSTR_FRMSEL_TEXTS[] =
+{
+ { NC_("RID_SVXSTR_FRMSEL_TEXTS", "Border setting") , 0 },
+ { NC_("RID_SVXSTR_FRMSEL_TEXTS", "Left border line") , 1 },
+ { NC_("RID_SVXSTR_FRMSEL_TEXTS", "Right border line") , 2 },
+ { NC_("RID_SVXSTR_FRMSEL_TEXTS", "Top border line") , 3 },
+ { NC_("RID_SVXSTR_FRMSEL_TEXTS", "Bottom border line") , 4 },
+ { NC_("RID_SVXSTR_FRMSEL_TEXTS", "Horizontal border line") , 5 },
+ { NC_("RID_SVXSTR_FRMSEL_TEXTS", "Vertical border line") , 6 },
+ { NC_("RID_SVXSTR_FRMSEL_TEXTS", "Diagonal border line from top left to bottom right") , 7 },
+ { NC_("RID_SVXSTR_FRMSEL_TEXTS", "Diagonal border line from bottom left to top right") , 8 },
+};
+
+std::pair<TranslateId, sal_uInt16> RID_SVXSTR_FRMSEL_DESCRIPTIONS[] =
+{
+ { NC_("RID_SVXSTR_FRMSEL_DESCRIPTIONS", "Border setting") , 0 },
+ { NC_("RID_SVXSTR_FRMSEL_DESCRIPTIONS", "Left border line") , 1 },
+ { NC_("RID_SVXSTR_FRMSEL_DESCRIPTIONS", "Right border line") , 2 },
+ { NC_("RID_SVXSTR_FRMSEL_DESCRIPTIONS", "Top border line") , 3 },
+ { NC_("RID_SVXSTR_FRMSEL_DESCRIPTIONS", "Bottom border line") , 4 },
+ { NC_("RID_SVXSTR_FRMSEL_DESCRIPTIONS", "Horizontal border line") , 5 },
+ { NC_("RID_SVXSTR_FRMSEL_DESCRIPTIONS", "Vertical border line") , 6 },
+ { NC_("RID_SVXSTR_FRMSEL_DESCRIPTIONS", "Diagonal border line from top left to bottom right") , 7 },
+ { NC_("RID_SVXSTR_FRMSEL_DESCRIPTIONS", "Diagonal border line from bottom left to top right") , 8 },
+};
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/svx/inc/galbrws2.hxx b/svx/inc/galbrws2.hxx
new file mode 100644
index 0000000000..d5ca8a50a0
--- /dev/null
+++ b/svx/inc/galbrws2.hxx
@@ -0,0 +1,185 @@
+/* -*- 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_INC_GALBRWS2_HXX
+#define INCLUDED_SVX_INC_GALBRWS2_HXX
+
+#include <vcl/transfer.hxx>
+#include <svl/lstner.hxx>
+#include <svx/galctrl.hxx>
+
+#include <com/sun/star/frame/XDispatch.hpp>
+#include <com/sun/star/frame/XFrame.hpp>
+#include <com/sun/star/uno/XComponentContext.hpp>
+#include <com/sun/star/util/XURLTransformer.hpp>
+
+
+enum GalleryBrowserMode
+{
+ GALLERYBROWSERMODE_NONE = 0,
+ GALLERYBROWSERMODE_ICON = 1,
+ GALLERYBROWSERMODE_LIST = 2,
+ GALLERYBROWSERMODE_PREVIEW = 3
+};
+
+
+enum class GalleryBrowserTravel
+{
+ First, Last, Previous, Next
+};
+
+enum class GalleryItemFlags {
+ Title = 0x0002,
+ Path = 0x0004
+};
+namespace o3tl
+{
+ template<> struct typed_flags<GalleryItemFlags> : is_typed_flags<GalleryItemFlags, 0x0006> {};
+}
+
+
+class Gallery;
+class GalleryDragDrop;
+class GalleryTheme;
+class GalleryIconView;
+class GalleryListView;
+class GalleryPreview;
+class GalleryTransferable;
+class Menu;
+class SgaObject;
+struct DispatchInfo;
+
+namespace svx::sidebar { class GalleryControl; }
+
+class GalleryBrowser2 final : public SfxListener
+{
+ friend class GalleryBrowser;
+ friend class svx::sidebar::GalleryControl;
+
+private:
+
+ Gallery* mpGallery;
+ GalleryTheme* mpCurTheme;
+ std::unique_ptr<GalleryIconView> mxIconView;
+ std::unique_ptr<weld::CustomWeld> mxIconViewWin;
+ std::unique_ptr<weld::TreeView> mxListView;
+ std::unique_ptr<GalleryDragDrop> mxDragDropTargetHelper;
+ std::unique_ptr<GalleryPreview> mxPreview;
+ std::unique_ptr<weld::CustomWeld> mxPreviewWin;
+ std::unique_ptr<weld::ToggleButton> mxIconButton;
+ std::unique_ptr<weld::ToggleButton> mxListButton;
+ std::unique_ptr<weld::Label> mxInfoBar;
+ Size maPreviewSize;
+ rtl::Reference<GalleryTransferable> m_xHelper;
+ sal_uInt32 mnCurActionPos;
+ GalleryBrowserMode meMode;
+ GalleryBrowserMode meLastMode;
+
+ css::uno::Reference< css::uno::XComponentContext > m_xContext;
+ css::uno::Reference< css::util::XURLTransformer > m_xTransformer;
+
+ void ImplUpdateViews( sal_uInt16 nSelectionId );
+ void ImplUpdateInfoBar();
+ sal_uInt32 ImplGetSelectedItemId( const Point* pSelPosPixel, Point& rSelPos );
+ void ImplSelectItemId(sal_uInt32 nItemId);
+ void ImplUpdateSelection();
+ void UpdateRows(bool bVisibleOnly);
+
+ // SfxListener
+ virtual void Notify( SfxBroadcaster& rBC, const SfxHint& rHint ) override;
+
+ DECL_LINK( SelectObjectHdl, weld::TreeView&, void );
+ DECL_LINK( SelectObjectValueSetHdl, ValueSet*, void );
+ DECL_LINK( SelectTbxHdl, weld::Toggleable&, void );
+ DECL_LINK( PopupMenuHdl, const CommandEvent&, bool );
+ DECL_LINK( KeyInputHdl, const KeyEvent&, bool );
+ DECL_LINK( RowActivatedHdl, weld::TreeView&, bool );
+ DECL_LINK( DragBeginHdl, bool&, bool );
+ DECL_LINK( VisRowsScrolledHdl, weld::TreeView&, void );
+ DECL_LINK( SizeAllocHdl, const Size&, void );
+
+private:
+
+ static GalleryBrowserMode meInitMode;
+
+public:
+
+ static OUString GetItemText( const SgaObject& rObj, GalleryItemFlags nItemTextFlags );
+
+public:
+
+ GalleryBrowser2(weld::Builder& rBuilder, Gallery* pGallery);
+ ~GalleryBrowser2();
+
+ void SelectTheme( std::u16string_view rThemeName );
+
+ GalleryBrowserMode GetMode() const { return meMode; }
+ void SetMode( GalleryBrowserMode eMode );
+
+ weld::Widget* GetViewWindow() const;
+
+ void Travel( GalleryBrowserTravel eTravel );
+
+ INetURLObject GetURL() const;
+ OUString GetFilterName() const;
+
+ sal_Int8 AcceptDrop( const DropTargetHelper& rTarget );
+ sal_Int8 ExecuteDrop( const ExecuteDropEvent& rEvt );
+ bool StartDrag();
+ void TogglePreview();
+ bool ShowContextMenu(const CommandEvent& rCEvt);
+ bool KeyInput(const KeyEvent& rEvt);
+ bool ViewBoxHasFocus() const;
+
+ static css::uno::Reference< css::frame::XFrame > GetFrame();
+ const css::uno::Reference< css::util::XURLTransformer >& GetURLTransformer() const { return m_xTransformer; }
+
+ void Execute(std::u16string_view rIdent);
+ void DispatchAdd(const css::uno::Reference<css::frame::XDispatch> &rxDispatch,
+ const css::util::URL &rURL);
+
+ DECL_STATIC_LINK( GalleryBrowser2, AsyncDispatch_Impl, void*, void );
+};
+
+class GalleryDragDrop final : public DropTargetHelper
+{
+private:
+ GalleryBrowser2* m_pParent;
+
+ virtual sal_Int8 AcceptDrop(const AcceptDropEvent& /*rEvt*/) override
+ {
+ return m_pParent->AcceptDrop(*this);
+ }
+
+ virtual sal_Int8 ExecuteDrop(const ExecuteDropEvent& rEvt) override
+ {
+ return m_pParent->ExecuteDrop(rEvt);
+ }
+
+public:
+ GalleryDragDrop(GalleryBrowser2* pParent, const css::uno::Reference<css::datatransfer::dnd::XDropTarget>& rDropTarget)
+ : DropTargetHelper(rDropTarget)
+ , m_pParent(pParent)
+ {
+ }
+};
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/svx/inc/galleryfilestorage.hxx b/svx/inc/galleryfilestorage.hxx
new file mode 100644
index 0000000000..bafbc13c7b
--- /dev/null
+++ b/svx/inc/galleryfilestorage.hxx
@@ -0,0 +1,108 @@
+/* -*- 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 <svx/galmisc.hxx>
+#include <svx/svxdllapi.h>
+#include <svx/fmmodel.hxx>
+#include "gallerystoragelocations.hxx"
+#include "galleryfilestorage.hxx"
+#include <tools/urlobj.hxx>
+#include <sot/storage.hxx>
+#include <vcl/salctype.hxx>
+
+#include <tools/datetime.hxx>
+
+#include <memory>
+
+class GalleryObjectCollection;
+class SgaObjectSvDraw;
+class SgaObjectBmp;
+class SgaObject;
+class SotStorage;
+struct GalleryObject;
+class FmFormModel;
+class GalleryTheme;
+class GalleryThemeEntry;
+
+class SVXCORE_DLLPUBLIC GalleryFileStorage final
+{
+private:
+ tools::SvRef<SotStorage> m_aSvDrawStorageRef;
+ const GalleryStorageLocations& maGalleryStorageLocations;
+ GalleryObjectCollection& mrGalleryObjectCollection;
+ bool mbReadOnly;
+ OUString m_aDestDir;
+ bool m_bDestDirRelative;
+
+ const INetURLObject& GetSdgURL() const { return maGalleryStorageLocations.GetSdgURL(); }
+ const INetURLObject& GetSdvURL() const { return maGalleryStorageLocations.GetSdvURL(); }
+ const INetURLObject& GetThmURL() const { return maGalleryStorageLocations.GetThmURL(); }
+
+public:
+ GalleryFileStorage(const GalleryStorageLocations& rGalleryStorageLocations,
+ GalleryObjectCollection& rGalleryObjectCollection, bool bReadOnly);
+ SAL_DLLPRIVATE ~GalleryFileStorage();
+
+ void clearSotStorage();
+
+ void setDestDir(const OUString& rDestDir, bool bRelative);
+
+ SAL_DLLPRIVATE void ImplCreateSvDrawStorage();
+ SAL_DLLPRIVATE const tools::SvRef<SotStorage>& GetSvDrawStorage() const;
+
+ const INetURLObject& getThemeURL() const { return maGalleryStorageLocations.getThemeURL(); }
+
+ SAL_DLLPRIVATE bool implWrite(const GalleryTheme& rTheme, const GalleryThemeEntry* pThm);
+
+ void insertObject(const SgaObject& rObj, GalleryObject* pFoundEntry, sal_uInt32 nInsertPos);
+ void removeObject(const std::unique_ptr<GalleryObject>& pEntry);
+
+ std::unique_ptr<SgaObject> implReadSgaObject(GalleryObject const* pEntry);
+ bool implWriteSgaObject(const SgaObject& rObj, sal_uInt32 nPos, GalleryObject* pExistentEntry);
+
+ bool readModel(const GalleryObject* pObject, SdrModel& rModel);
+ SgaObjectSvDraw insertModel(const FmFormModel& rModel, const INetURLObject& rUserURL);
+
+ bool readModelStream(const GalleryObject* pObject,
+ tools::SvRef<SotTempStream> const& rxModelStream);
+ SgaObjectSvDraw insertModelStream(const tools::SvRef<SotTempStream>& rxModelStream,
+ const INetURLObject& rUserURL);
+
+ INetURLObject implCreateUniqueURL(SgaObjKind eObjKind, const INetURLObject& rUserURL,
+ ConvertDataFormat nFormat = ConvertDataFormat::Unknown);
+
+ SgaObjectBmp insertGraphic(const Graphic& rGraphic, const GfxLink& aGfxLink,
+ const ConvertDataFormat& nExportFormat,
+ const INetURLObject& rUserURL);
+
+ SgaObjectSvDraw updateSvDrawObject(const GalleryObject* pEntry);
+
+ void updateTheme();
+ static void insertFileOrDirURL(const INetURLObject& rFileOrDirURL,
+ std::vector<INetURLObject>& rURLVector);
+
+ SvStream& writeGalleryTheme(SvStream& rOStm, const GalleryTheme& rTheme,
+ const GalleryThemeEntry* pThm);
+
+ DateTime getModificationDate() const;
+};
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/svx/inc/galleryfilestorageentry.hxx b/svx/inc/galleryfilestorageentry.hxx
new file mode 100644
index 0000000000..10a020297e
--- /dev/null
+++ b/svx/inc/galleryfilestorageentry.hxx
@@ -0,0 +1,66 @@
+/* -*- 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 <tools/urlobj.hxx>
+#include <svx/galtheme.hxx>
+#include "galleryfilestorage.hxx"
+#include "gallerystoragelocations.hxx"
+#include "galleryfilestorageentry.hxx"
+
+class GalleryObjectCollection;
+
+class GalleryFileStorageEntry final
+{
+private:
+ GalleryStorageLocations maGalleryStorageLocations;
+
+public:
+ GalleryFileStorageEntry();
+ static void CreateUniqueURL(const INetURLObject& rBaseURL, INetURLObject& aURL);
+
+ OUString ReadStrFromIni(std::u16string_view aKeyName) const;
+
+ const INetURLObject& GetThmURL() const { return maGalleryStorageLocations.GetThmURL(); }
+ const INetURLObject& GetSdgURL() const { return maGalleryStorageLocations.GetSdgURL(); }
+ const INetURLObject& GetSdvURL() const { return maGalleryStorageLocations.GetSdvURL(); }
+ const INetURLObject& GetStrURL() const { return maGalleryStorageLocations.GetStrURL(); }
+
+ const GalleryStorageLocations& getGalleryStorageLocations() const
+ {
+ return maGalleryStorageLocations;
+ }
+ GalleryStorageLocations& getGalleryStorageLocations() { return maGalleryStorageLocations; }
+
+ static GalleryThemeEntry* CreateThemeEntry(const INetURLObject& rURL, bool bReadOnly);
+
+ void removeTheme();
+
+ std::unique_ptr<GalleryTheme>& getCachedTheme(std::unique_ptr<GalleryTheme>& pNewTheme);
+
+ void setStorageLocations(INetURLObject& rURL);
+
+ std::unique_ptr<GalleryFileStorage>
+ createGalleryStorageEngine(GalleryObjectCollection& mrGalleryObjectCollection, bool& bReadOnly);
+};
+
+SvStream& ReadGalleryTheme(SvStream& rIn, GalleryTheme& rTheme);
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/svx/inc/gallerystoragelocations.hxx b/svx/inc/gallerystoragelocations.hxx
new file mode 100644
index 0000000000..e30ea9cf0e
--- /dev/null
+++ b/svx/inc/gallerystoragelocations.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 .
+ */
+
+#pragma once
+
+#include <svx/svxdllapi.h>
+#include <tools/urlobj.hxx>
+
+class SVXCORE_DLLPUBLIC GalleryStorageLocations final
+{
+private:
+ INetURLObject maThmURL;
+ INetURLObject maSdgURL;
+ INetURLObject maSdvURL;
+ INetURLObject maStrURL;
+
+ void SetThmExtension(INetURLObject& aURL);
+ void SetSdgExtension(INetURLObject& aURL);
+ void SetSdvExtension(INetURLObject& aURL);
+ void SetStrExtension(INetURLObject& aURL);
+
+public:
+ static INetURLObject ImplGetURLIgnoreCase(const INetURLObject& rURL);
+
+ const INetURLObject& GetThmURL() const { return maThmURL; }
+ const INetURLObject& GetSdgURL() const { return maSdgURL; }
+ const INetURLObject& GetSdvURL() const { return maSdvURL; }
+ const INetURLObject& GetStrURL() const { return maStrURL; }
+
+ void SetStorageLocations(INetURLObject& aURL);
+
+ const INetURLObject& getThemeURL() const { return maSdgURL; }
+};
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/svx/inc/galobj.hxx b/svx/inc/galobj.hxx
new file mode 100644
index 0000000000..df2b5ec368
--- /dev/null
+++ b/svx/inc/galobj.hxx
@@ -0,0 +1,177 @@
+/* -*- 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_INC_GALOBJ_HXX
+#define INCLUDED_SVX_INC_GALOBJ_HXX
+
+#include <config_options.h>
+#include <tools/urlobj.hxx>
+#include <vcl/graph.hxx>
+#include <vcl/gdimtf.hxx>
+#include <svx/galmisc.hxx>
+
+#define S_THUMB 80
+
+
+enum GalSoundType
+{
+ SOUND_STANDARD = 0,
+ SOUND_COMPUTER = 1,
+ SOUND_MISC = 2,
+ SOUND_MUSIC = 3,
+ SOUND_NATURE = 4,
+ SOUND_SPEECH = 5,
+ SOUND_TECHNIC = 6,
+ SOUND_ANIMAL = 7
+};
+
+class UNLESS_MERGELIBS(SVXCORE_DLLPUBLIC) SgaObject
+{
+ friend class GalleryTheme;
+ friend class GalleryFileStorage;
+
+private:
+
+ void ImplUpdateURL( const INetURLObject& rNewURL ) { aURL = rNewURL; }
+
+protected:
+
+ BitmapEx aThumbBmp; // Allow transparence to survive
+ GDIMetaFile aThumbMtf;
+ INetURLObject aURL;
+ OUString aTitle;
+ bool bIsValid;
+ bool bIsThumbBmp;
+
+ virtual void WriteData( SvStream& rOut, const OUString& rDestDir ) const;
+ virtual void ReadData( SvStream& rIn, sal_uInt16& rReadVersion );
+
+ bool CreateThumb( const Graphic& rGraphic );
+
+public:
+ SgaObject();
+ SgaObject(const SgaObject& aObject);
+
+ virtual ~SgaObject() {};
+
+ virtual SgaObjKind GetObjKind() const = 0;
+ virtual sal_uInt16 GetVersion() const = 0;
+
+ virtual BitmapEx GetThumbBmp() const { return aThumbBmp; }
+ const GDIMetaFile& GetThumbMtf() const { return aThumbMtf; }
+ const INetURLObject& GetURL() const { return aURL; }
+ bool IsValid() const { return bIsValid; }
+ bool IsThumbBitmap() const { return bIsThumbBmp; }
+
+ OUString const & GetTitle() const;
+ void SetTitle( const OUString& rTitle );
+
+ friend SvStream& WriteSgaObject( SvStream& rOut, const SgaObject& rObj );
+ friend SvStream& ReadSgaObject( SvStream& rIn, SgaObject& rObj );
+
+ BitmapEx createPreviewBitmapEx(const Size& rSizePixel) const;
+};
+
+class SgaObjectSound final : public SgaObject
+{
+private:
+
+ GalSoundType eSoundType;
+
+ virtual void WriteData( SvStream& rOut, const OUString& rDestDir ) const override;
+ virtual void ReadData( SvStream& rIn, sal_uInt16& rReadVersion ) override;
+
+ virtual sal_uInt16 GetVersion() const override { return 6; }
+
+public:
+
+ SgaObjectSound();
+ SgaObjectSound( const INetURLObject& rURL );
+ virtual ~SgaObjectSound() override;
+
+ virtual SgaObjKind GetObjKind() const override { return SgaObjKind::Sound; }
+ virtual BitmapEx GetThumbBmp() const override;
+};
+
+class FmFormModel;
+
+class SgaObjectSvDraw final : public SgaObject
+{
+ using SgaObject::CreateThumb;
+
+private:
+
+ bool CreateThumb( const FmFormModel& rModel );
+
+ virtual void WriteData( SvStream& rOut, const OUString& rDestDir ) const override;
+ virtual void ReadData( SvStream& rIn, sal_uInt16& rReadVersion ) override;
+
+ virtual sal_uInt16 GetVersion() const override { return 5; }
+
+public:
+
+ SgaObjectSvDraw();
+ SgaObjectSvDraw( const FmFormModel& rModel, const INetURLObject& rURL );
+ SgaObjectSvDraw( SvStream& rIStm, const INetURLObject& rURL );
+
+ virtual SgaObjKind GetObjKind() const override { return SgaObjKind::SvDraw; }
+};
+
+class SgaObjectBmp: public SgaObject
+{
+private:
+
+ void Init( const Graphic& rGraphic, const INetURLObject& rURL );
+
+ virtual void WriteData( SvStream& rOut, const OUString& rDestDir ) const override;
+ virtual void ReadData( SvStream& rIn, sal_uInt16& rReadVersion ) override;
+
+ virtual sal_uInt16 GetVersion() const override { return 5; }
+
+public:
+
+ SgaObjectBmp();
+ SgaObjectBmp( const INetURLObject& rURL );
+ SgaObjectBmp( const Graphic& rGraphic, const INetURLObject& rURL );
+
+ virtual SgaObjKind GetObjKind() const override { return SgaObjKind::Bitmap; }
+};
+
+class SgaObjectAnim : public SgaObjectBmp
+{
+public:
+
+ SgaObjectAnim();
+ SgaObjectAnim( const Graphic& rGraphic, const INetURLObject& rURL );
+
+ virtual SgaObjKind GetObjKind() const override { return SgaObjKind::Animation; }
+};
+
+class SgaObjectINet final : public SgaObjectAnim
+{
+public:
+
+ SgaObjectINet();
+ SgaObjectINet( const Graphic& rGraphic, const INetURLObject& rURL );
+
+ virtual SgaObjKind GetObjKind() const override { return SgaObjKind::Inet; }
+};
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/svx/inc/getallcharpropids.hxx b/svx/inc/getallcharpropids.hxx
new file mode 100644
index 0000000000..3a26f21976
--- /dev/null
+++ b/svx/inc/getallcharpropids.hxx
@@ -0,0 +1,36 @@
+/* -*- 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_INC_GETALLCHARPROPIDS_HXX
+#define INCLUDED_SVX_INC_GETALLCHARPROPIDS_HXX
+
+#include <sal/config.h>
+#include <sal/types.h>
+#include <span>
+#include <vector>
+
+class SfxItemSet;
+class SfxPoolItem;
+
+std::vector<sal_uInt16> GetAllCharPropIds(const SfxItemSet& rSet);
+std::vector<sal_uInt16> GetAllCharPropIds(std::span<const SfxPoolItem* const> aChangedItems);
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/svx/inc/helpids.h b/svx/inc/helpids.h
new file mode 100644
index 0000000000..30e12062db
--- /dev/null
+++ b/svx/inc/helpids.h
@@ -0,0 +1,66 @@
+/* -*- 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_INC_HELPIDS_H
+#define INCLUDED_SVX_INC_HELPIDS_H
+
+#include <rtl/ustring.hxx>
+
+inline constexpr OUString HID_BMPMASK_CTL_QCOL_1 = u"SVX_HID_BMPMASK_CTL_QCOL_1"_ustr;
+inline constexpr OUString HID_COLOR_CTL_COLORS = u"SVX_HID_COLOR_CTL_COLORS"_ustr;
+inline constexpr OUString HID_CTRL3D_HSCROLL = u"SVX_HID_CTRL3D_HSCROLL"_ustr;
+inline constexpr OUString HID_CTRL3D_SWITCHER = u"SVX_HID_CTRL3D_SWITCHER"_ustr;
+inline constexpr OUString HID_CTRL3D_VSCROLL = u"SVX_HID_CTRL3D_VSCROLL"_ustr;
+inline constexpr OUString HID_CTRL_COLOR = u"SVX_HID_CTRL_COLOR"_ustr;
+inline constexpr OUString HID_GALLERY_ICONVIEW = u"SVX_HID_GALLERY_ICONVIEW"_ustr;
+inline constexpr OUString HID_GALLERY_LISTVIEW = u"SVX_HID_GALLERY_LISTVIEW"_ustr;
+inline constexpr OUString HID_GALLERY_NEWTHEME = u"SVX_HID_GALLERY_NEWTHEME"_ustr;
+inline constexpr OUString HID_GALLERY_THEMELIST = u"SVX_HID_GALLERY_THEMELIST"_ustr;
+inline constexpr OUString HID_GALLERY_WINDOW = u"SVX_HID_GALLERY_WINDOW"_ustr;
+inline constexpr OUString HID_POPUP_COLOR = u"SVX_HID_POPUP_COLOR"_ustr;
+inline constexpr OUString HID_POPUP_COLOR_CTRL = u"SVX_HID_POPUP_COLOR_CTRL"_ustr;
+inline constexpr OUString HID_POPUP_FRAME = u"SVX_HID_POPUP_FRAME"_ustr;
+inline constexpr OUString HID_POPUP_LINE = u"SVX_HID_POPUP_LINE"_ustr;
+inline constexpr OUString HID_POPUP_LINEEND = u"SVX_HID_POPUP_LINEEND"_ustr;
+inline constexpr OUString HID_POPUP_LINEEND_CTRL = u"SVX_HID_POPUP_LINEEND_CTRL"_ustr;
+inline constexpr OUString HID_STYLE_LISTBOX = u"SVX_HID_STYLE_LISTBOX"_ustr;
+inline constexpr OUString HID_VALUESET_EXTRUSION_LIGHTING = u"SVX_HID_VALUESET_EXTRUSION_LIGHTING"_ustr;
+inline constexpr OUString HID_UNDERLINE_BTN = u"SVX_HID_UNDERLINE_BTN"_ustr;
+inline constexpr OUString HID_SPACING_MB_KERN = u"SVX_HID_SPACING_MB_KERN"_ustr;
+
+inline constexpr OUString HID_FORM_NAVIGATOR = u"SVX_HID_FORM_NAVIGATOR"_ustr;
+inline constexpr OUString HID_FORM_NAVIGATOR_WIN = u"SVX_HID_FORM_NAVIGATOR_WIN"_ustr;
+inline constexpr OUString HID_FIELD_SEL = u"SVX_HID_FIELD_SEL"_ustr;
+inline constexpr OUString HID_FIELD_SEL_WIN = u"SVX_HID_FIELD_SEL_WIN"_ustr;
+inline constexpr OUString HID_FILTER_NAVIGATOR = u"SVX_HID_FILTER_NAVIGATOR"_ustr;
+inline constexpr OUString HID_FILTER_NAVIGATOR_WIN = u"SVX_HID_FILTER_NAVIGATOR_WIN"_ustr;
+inline constexpr OUString HID_GRID_TRAVEL_FIRST = u"SVX_HID_GRID_TRAVEL_FIRST"_ustr;
+inline constexpr OUString HID_GRID_TRAVEL_PREV = u"SVX_HID_GRID_TRAVEL_PREV"_ustr;
+inline constexpr OUString HID_GRID_TRAVEL_NEXT = u"SVX_HID_GRID_TRAVEL_NEXT"_ustr;
+inline constexpr OUString HID_GRID_TRAVEL_LAST = u"SVX_HID_GRID_TRAVEL_LAST"_ustr;
+inline constexpr OUString HID_GRID_TRAVEL_NEW = u"SVX_HID_GRID_TRAVEL_NEW"_ustr;
+inline constexpr OUString HID_GRID_TRAVEL_ABSOLUTE = u"SVX_HID_GRID_TRAVEL_ABSOLUTE"_ustr;
+inline constexpr OUString HID_GRID_NUMBEROFRECORDS = u"SVX_HID_GRID_NUMBEROFRECORDS"_ustr;
+
+// Help IDs for Manage Track Changes
+inline constexpr OUString HID_REDLINE_CTRL_VIEW = u"SVX_HID_REDLINE_CTRL_VIEW"_ustr;
+inline constexpr OUString HID_REDLINE_CTRL_FILTER = u"SVX_HID_REDLINE_CTRL_FILTER"_ustr;
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/svx/inc/inspectorvalues.hrc b/svx/inc/inspectorvalues.hrc
new file mode 100644
index 0000000000..04b1493a51
--- /dev/null
+++ b/svx/inc/inspectorvalues.hrc
@@ -0,0 +1,29 @@
+/* -*- 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/.
+ */
+
+#pragma once
+
+#define NC_(Context, String) TranslateId(Context, u8##String)
+#define NNC_(Context, StringSingular, StringPlural) TranslateNId(Context, reinterpret_cast<char const *>(u8##StringSingular), reinterpret_cast<char const *>(u8##StringPlural))
+
+/*--------------------------------------------------------------------
+ Description: API names for Paragraph, Character
+ and Text cursor values
+ --------------------------------------------------------------------*/
+
+// Node names
+#define RID_NORMAL NC_("RID_ATTRIBUTE_NAMES_MAP", "Normal")
+#define RID_BOLD NC_("RID_ATTRIBUTE_NAMES_MAP", "Bold")
+#define RID_ITALIC NC_("RID_ATTRIBUTE_NAMES_MAP", "Italic")
+
+#define RID_FALSE NC_("RID_ATTRIBUTE_NAMES_MAP", "False")
+#define RID_TRUE NC_("RID_ATTRIBUTE_NAMES_MAP", "True")
+
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/svx/inc/layctrl.hxx b/svx/inc/layctrl.hxx
new file mode 100644
index 0000000000..34ccc6e546
--- /dev/null
+++ b/svx/inc/layctrl.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/.
+ *
+ * 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 <svtools/popupwindowcontroller.hxx>
+
+class SvxTableToolBoxControl final : public svt::PopupWindowController
+{
+public:
+ SvxTableToolBoxControl(const css::uno::Reference<css::uno::XComponentContext>& rContext);
+ virtual ~SvxTableToolBoxControl() override;
+
+ virtual std::unique_ptr<WeldToolbarPopup> weldPopupWindow() override;
+ virtual VclPtr<vcl::Window> createVclPopupWindow(vcl::Window* pParent) override;
+
+ // XServiceInfo
+ virtual OUString SAL_CALL getImplementationName() override;
+ virtual css::uno::Sequence<OUString> SAL_CALL getSupportedServiceNames() override;
+
+ // XInitialization
+ virtual void SAL_CALL initialize(const css::uno::Sequence<css::uno::Any>& rArguments) override;
+
+ void TableDialog(const css::uno::Sequence<css::beans::PropertyValue>& rArgs);
+ void CloseAndShowTableDialog();
+};
+
+class SvxColumnsToolBoxControl final : public svt::PopupWindowController
+{
+public:
+ SvxColumnsToolBoxControl(const css::uno::Reference<css::uno::XComponentContext>& rContext);
+ virtual ~SvxColumnsToolBoxControl() override;
+
+ virtual std::unique_ptr<WeldToolbarPopup> weldPopupWindow() override;
+ virtual VclPtr<vcl::Window> createVclPopupWindow(vcl::Window* pParent) override;
+
+ // XServiceInfo
+ virtual OUString SAL_CALL getImplementationName() override;
+ virtual css::uno::Sequence<OUString> SAL_CALL getSupportedServiceNames() override;
+
+ // XInitialization
+ virtual void SAL_CALL initialize(const css::uno::Sequence<css::uno::Any>& rArguments) override;
+
+ void InsertColumns(const css::uno::Sequence<css::beans::PropertyValue>& rArgs);
+};
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/svx/inc/lboxctrl.hxx b/svx/inc/lboxctrl.hxx
new file mode 100644
index 0000000000..e09477d722
--- /dev/null
+++ b/svx/inc/lboxctrl.hxx
@@ -0,0 +1,57 @@
+/* -*- 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 <rtl/ustring.hxx>
+#include <vector>
+#include <svtools/popupwindowcontroller.hxx>
+
+class ToolBox;
+class SvxPopupWindowListBox;
+
+class SvxUndoRedoControl final : public svt::PopupWindowController
+{
+ std::vector<OUString> aUndoRedoList;
+ OUString aDefaultTooltip;
+
+public:
+ SvxUndoRedoControl(const css::uno::Reference<css::uno::XComponentContext>& rContext);
+ virtual ~SvxUndoRedoControl() override;
+
+ virtual std::unique_ptr<WeldToolbarPopup> weldPopupWindow() override;
+ virtual VclPtr<vcl::Window> createVclPopupWindow(vcl::Window* pParent) override;
+
+ // XServiceInfo
+ virtual OUString SAL_CALL getImplementationName() override;
+ virtual css::uno::Sequence<OUString> SAL_CALL getSupportedServiceNames() override;
+
+ // XInitialization
+ virtual void SAL_CALL initialize(const css::uno::Sequence<css::uno::Any>& rArguments) override;
+
+ virtual void SAL_CALL statusChanged(const css::frame::FeatureStateEvent& rEvent) override;
+
+ void Do(sal_Int16 nCount);
+
+ void SetText(const OUString& rText);
+
+ void SetInfo(sal_Int32 nCount);
+};
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/svx/inc/legacyitem.hxx b/svx/inc/legacyitem.hxx
new file mode 100644
index 0000000000..b8d1362b44
--- /dev/null
+++ b/svx/inc/legacyitem.hxx
@@ -0,0 +1,60 @@
+/* -*- 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_LEGACYITEM_HXX
+#define INCLUDED_SVX_LEGACYITEM_HXX
+
+#include <sal/types.h>
+
+//////////////////////////////////////////////////////////////////////////////
+// // svx
+// SvxOrientationItem aOrientation( aRotateAngle.GetValue(), aStacked.GetValue(), 0 );
+// SvxMarginItem aMargin;
+// SvxRotateModeItem aRotateMode;
+//////////////////////////////////////////////////////////////////////////////
+
+class SvStream;
+class SvxOrientationItem;
+class SvxMarginItem;
+class SvxRotateModeItem;
+
+namespace legacy
+{
+ namespace SvxOrientation
+ {
+ sal_uInt16 GetVersion(sal_uInt16 nFileFormatVersion);
+ void Create(SvxOrientationItem& rItem, SvStream& rStrm, sal_uInt16 nItemVersion);
+ SvStream& Store(const SvxOrientationItem& rItem, SvStream& rStrm, sal_uInt16 nItemVersion);
+ }
+ namespace SvxMargin
+ {
+ sal_uInt16 GetVersion(sal_uInt16 nFileFormatVersion);
+ void Create(SvxMarginItem& rItem, SvStream& rStrm, sal_uInt16 nItemVersion);
+ SvStream& Store(const SvxMarginItem& rItem, SvStream& rStrm, sal_uInt16 nItemVersion);
+ }
+ namespace SvxRotateMode
+ {
+ sal_uInt16 GetVersion(sal_uInt16 nFileFormatVersion);
+ void Create(SvxRotateModeItem& rItem, SvStream& rStrm, sal_uInt16 nItemVersion);
+ SvStream& Store(const SvxRotateModeItem& rItem, SvStream& rStrm, sal_uInt16 nItemVersion);
+ }
+}
+
+#endif // INCLUDED_SVX_LEGACYITEM_HXX
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/svx/inc/numberingtype.hrc b/svx/inc/numberingtype.hrc
new file mode 100644
index 0000000000..bc7d9f8095
--- /dev/null
+++ b/svx/inc/numberingtype.hrc
@@ -0,0 +1,74 @@
+/* -*- 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_INC_NUMBERINGTYPE_HRC
+#define INCLUDED_SVX_INC_NUMBERINGTYPE_HRC
+
+#include <unotools/resmgr.hxx>
+
+#include <utility>
+
+#define NC_(Context, String) TranslateId(Context, u8##String)
+
+const std::pair<TranslateId, int> RID_SVXSTRARY_NUMBERINGTYPE[] =
+{
+ { /* SVX_NUM_NUMBER_NONE */ NC_("RID_SVXSTRARY_NUMBERINGTYPE", "None") , 5 },
+ { /* SVX_NUM_CHAR_SPECIAL */ NC_("RID_SVXSTRARY_NUMBERINGTYPE", "Bullet") , 6 },
+ { /* SVX_NUM_BITMAP */ NC_("RID_SVXSTRARY_NUMBERINGTYPE", "Graphics") , 8 },
+ { /* SVX_NUM_BITMAP|0x80 */ NC_("RID_SVXSTRARY_NUMBERINGTYPE", "Linked graphics") , 136 },
+ { /* SVX_NUM_ARABIC */ NC_("RID_SVXSTRARY_NUMBERINGTYPE", "1, 2, 3, ...") , 4 },
+ { /* SVX_NUM_CHARS_UPPER_LETTER */ NC_("RID_SVXSTRARY_NUMBERINGTYPE", "A, B, C, ...") , 0 },
+ { /* SVX_NUM_CHARS_LOWER_LETTER */ NC_("RID_SVXSTRARY_NUMBERINGTYPE", "a, b, c, ...") , 1 },
+ { /* SVX_NUM_ROMAN_UPPER */ NC_("RID_SVXSTRARY_NUMBERINGTYPE", "I, II, III, ...") , 2 },
+ { /* SVX_NUM_ROMAN_LOWER */ NC_("RID_SVXSTRARY_NUMBERINGTYPE", "i, ii, iii, ...") , 3 },
+ { /* TEXT_NUMBER */ NC_("RID_SVXSTRARY_NUMBERINGTYPE", "1st, 2nd, 3rd, ...") , 60 },
+ { /* TEXT_CARDINAL */ NC_("RID_SVXSTRARY_NUMBERINGTYPE", "One, Two, Three, ...") , 61 },
+ { /* TEXT_ORDINAL */ NC_("RID_SVXSTRARY_NUMBERINGTYPE", "First, Second, Third, ...") , 62 },
+ { /* SVX_NUM_CHARS_UPPER_LETTER_N */ NC_("RID_SVXSTRARY_NUMBERINGTYPE", "A, .., AA, .., AAA, ...") , 9 },
+ { /* SVX_NUM_CHARS_LOWER_LETTER_N */ NC_("RID_SVXSTRARY_NUMBERINGTYPE", "a, .., aa, .., aaa, ...") , 10 },
+ { /* SYMBOL_CHICAGO */ NC_("RID_SVXSTRARY_NUMBERINGTYPE", "*, †, ‡, §, **, ††, ...") , 63 },
+ { /* NATIVE_NUMBERING */ NC_("RID_SVXSTRARY_NUMBERINGTYPE", "Native Numbering") , 12 },
+ { /* CHARS_CYRILLIC_UPPER_LETTER_BG */ NC_("RID_SVXSTRARY_NUMBERINGTYPE", "А, Б, .., Аа, Аб, ... (Bulgarian)") , 38 },
+ { /* CHARS_CYRILLIC_LOWER_LETTER_BG */ NC_("RID_SVXSTRARY_NUMBERINGTYPE", "а, б, .., аа, аб, ... (Bulgarian)") , 39 },
+ { /* CHARS_CYRILLIC_UPPER_LETTER_N_BG */ NC_("RID_SVXSTRARY_NUMBERINGTYPE", "А, Б, .., Аа, Бб, ... (Bulgarian)") , 40 },
+ { /* CHARS_CYRILLIC_LOWER_LETTER_N_BG */ NC_("RID_SVXSTRARY_NUMBERINGTYPE", "а, б, .., аа, бб, ... (Bulgarian)") , 41 },
+ { /* CHARS_CYRILLIC_UPPER_LETTER_RU */ NC_("RID_SVXSTRARY_NUMBERINGTYPE", "А, Б, .., Аа, Аб, ... (Russian)") , 42 },
+ { /* CHARS_CYRILLIC_LOWER_LETTER_RU */ NC_("RID_SVXSTRARY_NUMBERINGTYPE", "а, б, .., аа, аб, ... (Russian)") , 43 },
+ { /* CHARS_CYRILLIC_UPPER_LETTER_N_RU */ NC_("RID_SVXSTRARY_NUMBERINGTYPE", "А, Б, .., Аа, Бб, ... (Russian)") , 44 },
+ { /* CHARS_CYRILLIC_LOWER_LETTER_N_RU */ NC_("RID_SVXSTRARY_NUMBERINGTYPE", "а, б, .., аа, бб, ... (Russian)") , 45 },
+ { /* CHARS_CYRILLIC_UPPER_LETTER_SR */ NC_("RID_SVXSTRARY_NUMBERINGTYPE", "А, Б, .., Аа, Аб, ... (Serbian)") , 48 },
+ { /* CHARS_CYRILLIC_LOWER_LETTER_SR */ NC_("RID_SVXSTRARY_NUMBERINGTYPE", "а, б, .., аа, аб, ... (Serbian)") , 49 },
+ { /* CHARS_CYRILLIC_UPPER_LETTER_N_SR */ NC_("RID_SVXSTRARY_NUMBERINGTYPE", "А, Б, .., Аа, Бб, ... (Serbian)") , 50 },
+ { /* CHARS_CYRILLIC_LOWER_LETTER_N_SR */ NC_("RID_SVXSTRARY_NUMBERINGTYPE", "а, б, .., аа, бб, ... (Serbian)") , 51 },
+ { /* CHARS_CYRILLIC_UPPER_LETTER_UK */ NC_("RID_SVXSTRARY_NUMBERINGTYPE", "А, Б, .., Аа, Аб, ... (Ukrainian)") , 72 },
+ { /* CHARS_CYRILLIC_LOWER_LETTER_UK */ NC_("RID_SVXSTRARY_NUMBERINGTYPE", "а, б, .., аа, аб, ... (Ukrainian)") , 73 },
+ { /* CHARS_CYRILLIC_UPPER_LETTER_N_UK */ NC_("RID_SVXSTRARY_NUMBERINGTYPE", "А, Б, .., Аа, Бб, ... (Ukrainian)") , 74 },
+ { /* CHARS_CYRILLIC_LOWER_LETTER_N_UK */ NC_("RID_SVXSTRARY_NUMBERINGTYPE", "а, б, .., аа, бб, ... (Ukrainian)") , 75 },
+ { /* CHARS_GREEK_UPPER_LETTER */ NC_("RID_SVXSTRARY_NUMBERINGTYPE", "Α, Β, Γ, ... (Greek)"), 52 },
+ { /* CHARS_GREEK_LOWER_LETTER */ NC_("RID_SVXSTRARY_NUMBERINGTYPE", "α, β, γ, ... (Greek)"), 53 },
+ { /* NUMBER_HEBREW */ NC_("RID_SVXSTRARY_NUMBERINGTYPE", "א...י, יא...כ, ...") , 56 },
+ { /* CHARS_HEBREW */ NC_("RID_SVXSTRARY_NUMBERINGTYPE", "א...ת, אא...תת, ...") , 33 },
+ { /* NUMBER_ARABIC_INDIC */ NC_("RID_SVXSTRARY_NUMBERINGTYPE", "١, ٢, ٣, ٤, ... (Arabic)"), 57 },
+ { /* NUMBER_EAST_ARABIC_INDIC */ NC_("RID_SVXSTRARY_NUMBERINGTYPE", "۱, ۲, ۳, ۴, ... (Farsi)"), 58 },
+ { /* NUMBER_INDIC_DEVANAGARI */ NC_("RID_SVXSTRARY_NUMBERINGTYPE", "१, २, ३, ..."), 59 },
+};
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/svx/inc/palettes.hxx b/svx/inc/palettes.hxx
new file mode 100644
index 0000000000..abeccf0fe2
--- /dev/null
+++ b/svx/inc/palettes.hxx
@@ -0,0 +1,106 @@
+/* -*- 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_INC_PALETTE_HXX
+#define INCLUDED_SVX_INC_PALETTE_HXX
+
+#include <svx/Palette.hxx>
+#include <svx/SvxColorValueSet.hxx>
+#include <svx/xtable.hxx>
+
+class SvFileStream;
+
+typedef std::vector< NamedColor > ColorList;
+
+// ASE = Adobe Swatch Exchange
+
+class PaletteASE final : public Palette
+{
+ bool mbValidPalette;
+ OUString maFPath;
+ OUString maASEPaletteName;
+ ColorList maColors;
+
+ void LoadPalette();
+ PaletteASE(const PaletteASE&) = default;
+public:
+ PaletteASE( OUString aFPath, OUString aFName );
+ virtual ~PaletteASE() override;
+
+ virtual const OUString& GetName() override;
+ virtual const OUString& GetPath() override;
+ virtual void LoadColorSet(SvxColorValueSet& rColorSet) override;
+
+ virtual bool IsValid() override;
+
+ virtual Palette* Clone() const override;
+};
+
+// GPL - this is *not* GNU Public License, but is the Gimp PaLette
+
+class PaletteGPL final : public Palette
+{
+ bool mbLoadedPalette;
+ bool mbValidPalette;
+ OUString maFName;
+ OUString maFPath;
+ OUString maGPLPaletteName;
+ ColorList maColors;
+
+ bool ReadPaletteHeader(SvFileStream& rFileStream);
+ void LoadPaletteHeader();
+ void LoadPalette();
+ PaletteGPL(const PaletteGPL&) = default;
+public:
+ PaletteGPL( OUString aFPath, OUString aFName );
+ virtual ~PaletteGPL() override;
+
+ virtual const OUString& GetName() override;
+ virtual const OUString& GetPath() override;
+ virtual void LoadColorSet(SvxColorValueSet& rColorSet) override;
+
+ virtual bool IsValid() override;
+
+ virtual Palette* Clone() const override;
+};
+
+// SOC - Star Office Color-table
+
+class PaletteSOC final : public Palette
+{
+ bool mbLoadedPalette;
+ OUString maFPath;
+ OUString maSOCPaletteName;
+ XColorListRef mpColorList;
+ PaletteSOC(const PaletteSOC&) = default;
+public:
+ PaletteSOC( OUString aFPath, OUString aFName );
+ virtual ~PaletteSOC() override;
+
+ virtual const OUString& GetName() override;
+ virtual const OUString& GetPath() override;
+ virtual void LoadColorSet(SvxColorValueSet& rColorSet) override;
+
+ virtual bool IsValid() override;
+
+ virtual Palette* Clone() const override;
+};
+
+#endif // INCLUDED_SVX_INC_PALETTE_HXX
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/svx/inc/pch/precompiled_svx.cxx b/svx/inc/pch/precompiled_svx.cxx
new file mode 100644
index 0000000000..a05a248abf
--- /dev/null
+++ b/svx/inc/pch/precompiled_svx.cxx
@@ -0,0 +1,12 @@
+/* -*- 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/.
+ */
+
+#include "precompiled_svx.hxx"
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/svx/inc/pch/precompiled_svx.hxx b/svx/inc/pch/precompiled_svx.hxx
new file mode 100644
index 0000000000..a4e91325d2
--- /dev/null
+++ b/svx/inc/pch/precompiled_svx.hxx
@@ -0,0 +1,438 @@
+/* -*- 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 has been autogenerated by update_pch.sh. It is possible to edit it
+ manually (such as when an include file has been moved/renamed/removed). All such
+ manual changes will be rewritten by the next run of update_pch.sh (which presumably
+ also fixes all possible problems, so it's usually better to use it).
+
+ Generated on 2023-01-10 23:28:52 using:
+ ./bin/update_pch svx svx --cutoff=3 --exclude:system --exclude:module --include:local
+
+ If after updating build fails, use the following command to locate conflicting headers:
+ ./bin/update_pch_bisect ./svx/inc/pch/precompiled_svx.hxx "make svx.build" --find-conflicts
+*/
+
+#include <sal/config.h>
+#if PCH_LEVEL >= 1
+#include <algorithm>
+#include <array>
+#include <cassert>
+#include <climits>
+#include <cmath>
+#include <cstddef>
+#include <cstdlib>
+#include <deque>
+#include <functional>
+#include <limits.h>
+#include <limits>
+#include <map>
+#include <memory>
+#include <mutex>
+#include <numeric>
+#include <optional>
+#include <ostream>
+#include <set>
+#include <span>
+#include <stddef.h>
+#include <string>
+#include <string_view>
+#include <type_traits>
+#include <unordered_map>
+#include <utility>
+#include <vector>
+#include <boost/property_tree/ptree.hpp>
+#include <boost/property_tree/ptree_fwd.hpp>
+#endif // PCH_LEVEL >= 1
+#if PCH_LEVEL >= 2
+#include <osl/diagnose.h>
+#include <osl/endian.h>
+#include <osl/file.hxx>
+#include <osl/interlck.h>
+#include <osl/mutex.hxx>
+#include <osl/thread.h>
+#include <rtl/alloc.h>
+#include <rtl/bootstrap.hxx>
+#include <rtl/instance.hxx>
+#include <rtl/math.hxx>
+#include <rtl/ref.hxx>
+#include <rtl/strbuf.hxx>
+#include <rtl/string.hxx>
+#include <rtl/tencinfo.h>
+#include <rtl/textenc.h>
+#include <rtl/ustrbuf.hxx>
+#include <rtl/ustring.hxx>
+#include <rtl/uuid.h>
+#include <sal/log.hxx>
+#include <sal/macros.h>
+#include <sal/saldllapi.h>
+#include <sal/types.h>
+#include <sal/typesizes.h>
+#include <vcl/BitmapFilter.hxx>
+#include <vcl/EnumContext.hxx>
+#include <vcl/GraphicObject.hxx>
+#include <vcl/InterimItemWindow.hxx>
+#include <vcl/Scanline.hxx>
+#include <vcl/alpha.hxx>
+#include <vcl/bitmapex.hxx>
+#include <vcl/canvastools.hxx>
+#include <vcl/commandevent.hxx>
+#include <vcl/commandinfoprovider.hxx>
+#include <vcl/customweld.hxx>
+#include <vcl/dllapi.h>
+#include <vcl/errinf.hxx>
+#include <vcl/event.hxx>
+#include <vcl/fieldvalues.hxx>
+#include <vcl/font.hxx>
+#include <vcl/gdimtf.hxx>
+#include <vcl/graph.hxx>
+#include <vcl/idle.hxx>
+#include <vcl/image.hxx>
+#include <vcl/imap.hxx>
+#include <vcl/imapobj.hxx>
+#include <vcl/metric.hxx>
+#include <vcl/outdev.hxx>
+#include <vcl/ptrstyle.hxx>
+#include <vcl/settings.hxx>
+#include <vcl/status.hxx>
+#include <vcl/svapp.hxx>
+#include <vcl/task.hxx>
+#include <vcl/timer.hxx>
+#include <vcl/toolbox.hxx>
+#include <vcl/toolboxid.hxx>
+#include <vcl/transfer.hxx>
+#include <vcl/vclenum.hxx>
+#include <vcl/vclptr.hxx>
+#include <vcl/virdev.hxx>
+#include <vcl/weld.hxx>
+#include <vcl/weldutils.hxx>
+#include <vcl/window.hxx>
+#endif // PCH_LEVEL >= 2
+#if PCH_LEVEL >= 3
+#include <basegfx/basegfxdllapi.h>
+#include <basegfx/color/bcolor.hxx>
+#include <basegfx/matrix/b3dhommatrix.hxx>
+#include <basegfx/point/b2dpoint.hxx>
+#include <basegfx/point/b2ipoint.hxx>
+#include <basegfx/point/b3dpoint.hxx>
+#include <basegfx/polygon/b2dpolygontools.hxx>
+#include <basegfx/polygon/b2dpolypolygontools.hxx>
+#include <basegfx/polygon/b3dpolypolygon.hxx>
+#include <basegfx/range/b3drange.hxx>
+#include <basegfx/tuple/b2dtuple.hxx>
+#include <basegfx/tuple/b3dtuple.hxx>
+#include <basegfx/vector/b2dsize.hxx>
+#include <basegfx/vector/b2enums.hxx>
+#include <basegfx/vector/b3dvector.hxx>
+#include <com/sun/star/accessibility/AccessibleEventId.hpp>
+#include <com/sun/star/accessibility/AccessibleRole.hpp>
+#include <com/sun/star/accessibility/AccessibleStateType.hpp>
+#include <com/sun/star/accessibility/XAccessible.hpp>
+#include <com/sun/star/accessibility/XAccessibleContext.hpp>
+#include <com/sun/star/awt/Gradient.hpp>
+#include <com/sun/star/awt/GradientStyle.hpp>
+#include <com/sun/star/awt/Rectangle.hpp>
+#include <com/sun/star/beans/NamedValue.hpp>
+#include <com/sun/star/beans/PropertyValue.hpp>
+#include <com/sun/star/beans/XPropertyChangeListener.hpp>
+#include <com/sun/star/beans/XPropertySet.hpp>
+#include <com/sun/star/container/XIndexAccess.hpp>
+#include <com/sun/star/container/XNameAccess.hpp>
+#include <com/sun/star/container/XNameContainer.hpp>
+#include <com/sun/star/datatransfer/DataFlavor.hpp>
+#include <com/sun/star/datatransfer/XTransferable2.hpp>
+#include <com/sun/star/datatransfer/clipboard/XClipboard.hpp>
+#include <com/sun/star/datatransfer/clipboard/XClipboardOwner.hpp>
+#include <com/sun/star/datatransfer/dnd/DNDConstants.hpp>
+#include <com/sun/star/datatransfer/dnd/DropTargetDragEvent.hpp>
+#include <com/sun/star/datatransfer/dnd/DropTargetDropEvent.hpp>
+#include <com/sun/star/datatransfer/dnd/XDragGestureListener.hpp>
+#include <com/sun/star/datatransfer/dnd/XDragSourceListener.hpp>
+#include <com/sun/star/datatransfer/dnd/XDropTargetListener.hpp>
+#include <com/sun/star/drawing/FillStyle.hpp>
+#include <com/sun/star/drawing/LineCap.hpp>
+#include <com/sun/star/drawing/TextFitToSizeType.hpp>
+#include <com/sun/star/drawing/XShape.hpp>
+#include <com/sun/star/embed/Aspects.hpp>
+#include <com/sun/star/form/FormComponentType.hpp>
+#include <com/sun/star/form/XForm.hpp>
+#include <com/sun/star/form/XFormComponent.hpp>
+#include <com/sun/star/frame/XController.hpp>
+#include <com/sun/star/frame/XDispatchProvider.hpp>
+#include <com/sun/star/frame/XFrame.hpp>
+#include <com/sun/star/frame/XLayoutManager.hpp>
+#include <com/sun/star/frame/XStatusListener.hpp>
+#include <com/sun/star/frame/XTerminateListener.hpp>
+#include <com/sun/star/frame/XToolbarController.hpp>
+#include <com/sun/star/graphic/XGraphic.hpp>
+#include <com/sun/star/lang/DisposedException.hpp>
+#include <com/sun/star/lang/EventObject.hpp>
+#include <com/sun/star/lang/IllegalArgumentException.hpp>
+#include <com/sun/star/lang/IndexOutOfBoundsException.hpp>
+#include <com/sun/star/lang/Locale.hpp>
+#include <com/sun/star/lang/XComponent.hpp>
+#include <com/sun/star/lang/XEventListener.hpp>
+#include <com/sun/star/lang/XInitialization.hpp>
+#include <com/sun/star/lang/XServiceInfo.hpp>
+#include <com/sun/star/lang/XTypeProvider.hpp>
+#include <com/sun/star/lang/XUnoTunnel.hpp>
+#include <com/sun/star/sdbc/XResultSet.hpp>
+#include <com/sun/star/sdbcx/XColumnsSupplier.hpp>
+#include <com/sun/star/sdbcx/XRowLocate.hpp>
+#include <com/sun/star/style/NumberingType.hpp>
+#include <com/sun/star/style/XStyle.hpp>
+#include <com/sun/star/text/DefaultNumberingProvider.hpp>
+#include <com/sun/star/text/WritingMode2.hpp>
+#include <com/sun/star/text/textfield/Type.hpp>
+#include <com/sun/star/uno/Any.hxx>
+#include <com/sun/star/uno/Reference.h>
+#include <com/sun/star/uno/Reference.hxx>
+#include <com/sun/star/uno/Sequence.h>
+#include <com/sun/star/uno/Sequence.hxx>
+#include <com/sun/star/uno/XComponentContext.hpp>
+#include <com/sun/star/uno/XWeak.hpp>
+#include <com/sun/star/util/NumberFormat.hpp>
+#include <com/sun/star/util/URLTransformer.hpp>
+#include <com/sun/star/util/XModifyListener.hpp>
+#include <com/sun/star/util/XUpdatable.hpp>
+#include <com/sun/star/view/XSelectionChangeListener.hpp>
+#include <com/sun/star/view/XSelectionSupplier.hpp>
+#include <comphelper/broadcasthelper.hxx>
+#include <comphelper/compbase.hxx>
+#include <comphelper/comphelperdllapi.h>
+#include <comphelper/diagnose_ex.hxx>
+#include <comphelper/errcode.hxx>
+#include <comphelper/interfacecontainer4.hxx>
+#include <comphelper/lok.hxx>
+#include <comphelper/multicontainer2.hxx>
+#include <comphelper/processfactory.hxx>
+#include <comphelper/proparrhlp.hxx>
+#include <comphelper/propertycontainer.hxx>
+#include <comphelper/propertysequence.hxx>
+#include <comphelper/propertyvalue.hxx>
+#include <comphelper/sequence.hxx>
+#include <comphelper/servicehelper.hxx>
+#include <comphelper/types.hxx>
+#include <cppuhelper/basemutex.hxx>
+#include <cppuhelper/cppuhelperdllapi.h>
+#include <cppuhelper/implbase.hxx>
+#include <cppuhelper/propshlp.hxx>
+#include <cppuhelper/queryinterface.hxx>
+#include <cppuhelper/supportsservice.hxx>
+#include <cppuhelper/weak.hxx>
+#include <cppuhelper/weakagg.hxx>
+#include <drawinglayer/drawinglayerdllapi.h>
+#include <drawinglayer/primitive2d/Primitive2DContainer.hxx>
+#include <drawinglayer/processor2d/baseprocessor2d.hxx>
+#include <drawinglayer/processor2d/processor2dtools.hxx>
+#include <editeng/borderline.hxx>
+#include <editeng/brushitem.hxx>
+#include <editeng/colritem.hxx>
+#include <editeng/editdata.hxx>
+#include <editeng/editeng.hxx>
+#include <editeng/editengdllapi.h>
+#include <editeng/editstat.hxx>
+#include <editeng/eedata.hxx>
+#include <editeng/eeitem.hxx>
+#include <editeng/fhgtitem.hxx>
+#include <editeng/flditem.hxx>
+#include <editeng/fontitem.hxx>
+#include <editeng/frmdir.hxx>
+#include <editeng/lrspitem.hxx>
+#include <editeng/numdef.hxx>
+#include <editeng/numitem.hxx>
+#include <editeng/outliner.hxx>
+#include <editeng/outlobj.hxx>
+#include <editeng/overflowingtxt.hxx>
+#include <editeng/paragraphdata.hxx>
+#include <editeng/postitem.hxx>
+#include <editeng/sizeitem.hxx>
+#include <editeng/svxenum.hxx>
+#include <editeng/svxfont.hxx>
+#include <editeng/udlnitem.hxx>
+#include <editeng/ulspitem.hxx>
+#include <editeng/wghtitem.hxx>
+#include <i18nlangtag/lang.h>
+#include <i18nlangtag/languagetag.hxx>
+#include <i18nlangtag/mslangid.hxx>
+#include <o3tl/cow_wrapper.hxx>
+#include <o3tl/deleter.hxx>
+#include <o3tl/safeint.hxx>
+#include <o3tl/sorted_vector.hxx>
+#include <o3tl/string_view.hxx>
+#include <o3tl/typed_flags_set.hxx>
+#include <o3tl/underlyingenumvalue.hxx>
+#include <o3tl/unit_conversion.hxx>
+#include <officecfg/Office/Common.hxx>
+#include <salhelper/simplereferenceobject.hxx>
+#include <sfx2/app.hxx>
+#include <sfx2/basedlgs.hxx>
+#include <sfx2/bindings.hxx>
+#include <sfx2/chalign.hxx>
+#include <sfx2/childwin.hxx>
+#include <sfx2/ctrlitem.hxx>
+#include <sfx2/dialoghelper.hxx>
+#include <sfx2/dispatch.hxx>
+#include <sfx2/dllapi.h>
+#include <sfx2/dockwin.hxx>
+#include <sfx2/module.hxx>
+#include <sfx2/objsh.hxx>
+#include <sfx2/request.hxx>
+#include <sfx2/shell.hxx>
+#include <sfx2/sidebar/PanelLayout.hxx>
+#include <sfx2/stbitem.hxx>
+#include <sfx2/tabdlg.hxx>
+#include <sfx2/tbxctrl.hxx>
+#include <sfx2/viewfrm.hxx>
+#include <sfx2/viewsh.hxx>
+#include <sfx2/weldutils.hxx>
+#include <sot/exchange.hxx>
+#include <sot/formats.hxx>
+#include <sot/sotdllapi.h>
+#include <svl/SfxBroadcaster.hxx>
+#include <svl/cenumitm.hxx>
+#include <svl/cjkoptions.hxx>
+#include <svl/ctloptions.hxx>
+#include <svl/eitem.hxx>
+#include <svl/hint.hxx>
+#include <svl/intitem.hxx>
+#include <svl/itempool.hxx>
+#include <svl/itemset.hxx>
+#include <svl/languageoptions.hxx>
+#include <svl/lstner.hxx>
+#include <svl/metitem.hxx>
+#include <svl/poolitem.hxx>
+#include <svl/srchitem.hxx>
+#include <svl/stritem.hxx>
+#include <svl/style.hxx>
+#include <svl/stylesheetuser.hxx>
+#include <svl/svldllapi.h>
+#include <svl/typedwhich.hxx>
+#include <svl/undo.hxx>
+#include <svl/whiter.hxx>
+#include <svl/zforlist.hxx>
+#include <svtools/colorcfg.hxx>
+#include <svtools/ehdl.hxx>
+#include <svtools/popupwindowcontroller.hxx>
+#include <svtools/svtdllapi.h>
+#include <svtools/svtresid.hxx>
+#include <svtools/toolbarmenu.hxx>
+#include <svtools/toolboxcontroller.hxx>
+#include <svtools/unitconv.hxx>
+#include <svtools/valueset.hxx>
+#include <toolkit/helper/vclunohelper.hxx>
+#include <tools/UnitConversion.hxx>
+#include <tools/color.hxx>
+#include <tools/date.hxx>
+#include <tools/datetime.hxx>
+#include <tools/debug.hxx>
+#include <tools/degree.hxx>
+#include <tools/fldunit.hxx>
+#include <tools/fract.hxx>
+#include <tools/gen.hxx>
+#include <tools/globname.hxx>
+#include <tools/helpers.hxx>
+#include <tools/link.hxx>
+#include <tools/long.hxx>
+#include <tools/mapunit.hxx>
+#include <tools/poly.hxx>
+#include <tools/resary.hxx>
+#include <tools/solar.h>
+#include <tools/stream.hxx>
+#include <tools/time.hxx>
+#include <tools/toolsdllapi.h>
+#include <tools/urlobj.hxx>
+#include <unotools/configmgr.hxx>
+#include <unotools/fontcvt.hxx>
+#include <unotools/localedatawrapper.hxx>
+#include <unotools/resmgr.hxx>
+#include <unotools/syslocale.hxx>
+#include <unotools/unotoolsdllapi.h>
+#include <unotools/viewoptions.hxx>
+#include <unotools/weakref.hxx>
+#endif // PCH_LEVEL >= 3
+#if PCH_LEVEL >= 4
+#include <cell.hxx>
+#include <charmapacc.hxx>
+#include <fmprop.hxx>
+#include <fmservs.hxx>
+#include <helpids.h>
+#include <svx/algitem.hxx>
+#include <svx/charmap.hxx>
+#include <svx/colorbox.hxx>
+#include <svx/deflt3d.hxx>
+#include <svx/dialmgr.hxx>
+#include <svx/dlgctrl.hxx>
+#include <svx/dlgutil.hxx>
+#include <svx/drawitem.hxx>
+#include <svx/e3ditem.hxx>
+#include <svx/fmmodel.hxx>
+#include <svx/fmshell.hxx>
+#include <svx/fmtools.hxx>
+#include <svx/framebordertype.hxx>
+#include <svx/galmisc.hxx>
+#include <svx/itemwin.hxx>
+#include <svx/itextprovider.hxx>
+#include <svx/labelitemwindow.hxx>
+#include <svx/numvset.hxx>
+#include <svx/obj3d.hxx>
+#include <svx/pageitem.hxx>
+#include <svx/rotmodit.hxx>
+#include <svx/rulritem.hxx>
+#include <svx/sdmetitm.hxx>
+#include <svx/sdooitm.hxx>
+#include <svx/sdprcitm.hxx>
+#include <svx/sdshitm.hxx>
+#include <svx/sdtaditm.hxx>
+#include <svx/sdtaitm.hxx>
+#include <svx/sdtakitm.hxx>
+#include <svx/srchdlg.hxx>
+#include <svx/strarray.hxx>
+#include <svx/svddef.hxx>
+#include <svx/svditer.hxx>
+#include <svx/svdmark.hxx>
+#include <svx/svdmodel.hxx>
+#include <svx/svdoashp.hxx>
+#include <svx/svdoattr.hxx>
+#include <svx/svdobj.hxx>
+#include <svx/svdopath.hxx>
+#include <svx/svdorect.hxx>
+#include <svx/svdotable.hxx>
+#include <svx/svdotext.hxx>
+#include <svx/svdpage.hxx>
+#include <svx/svdpagv.hxx>
+#include <svx/svdtext.hxx>
+#include <svx/svdtrans.hxx>
+#include <svx/svdtypes.hxx>
+#include <svx/svdview.hxx>
+#include <svx/svx3ditems.hxx>
+#include <svx/svxdlg.hxx>
+#include <svx/svxdllapi.h>
+#include <svx/unomid.hxx>
+#include <svx/view3d.hxx>
+#include <svx/viewpt3d.hxx>
+#include <svx/xcolit.hxx>
+#include <svx/xdef.hxx>
+#include <svx/xenum.hxx>
+#include <svx/xfillit0.hxx>
+#include <svx/xflclit.hxx>
+#include <svx/xflftrit.hxx>
+#include <svx/xfltrit.hxx>
+#include <svx/xit.hxx>
+#include <svx/xlineit0.hxx>
+#include <svx/xlnclit.hxx>
+#include <svx/xlntrit.hxx>
+#include <svx/xlnwtit.hxx>
+#include <svx/xpoly.hxx>
+#include <svx/xtable.hxx>
+#include <uiobject.hxx>
+#endif // PCH_LEVEL >= 4
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/svx/inc/pch/precompiled_svxcore.cxx b/svx/inc/pch/precompiled_svxcore.cxx
new file mode 100644
index 0000000000..0848af1b68
--- /dev/null
+++ b/svx/inc/pch/precompiled_svxcore.cxx
@@ -0,0 +1,12 @@
+/* -*- 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/.
+ */
+
+#include "precompiled_svxcore.hxx"
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/svx/inc/pch/precompiled_svxcore.hxx b/svx/inc/pch/precompiled_svxcore.hxx
new file mode 100644
index 0000000000..cc63b1b5a1
--- /dev/null
+++ b/svx/inc/pch/precompiled_svxcore.hxx
@@ -0,0 +1,556 @@
+/* -*- 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 has been autogenerated by update_pch.sh. It is possible to edit it
+ manually (such as when an include file has been moved/renamed/removed). All such
+ manual changes will be rewritten by the next run of update_pch.sh (which presumably
+ also fixes all possible problems, so it's usually better to use it).
+
+ Generated on 2022-08-13 18:01:20 using:
+ ./bin/update_pch svx svxcore --cutoff=7 --exclude:system --include:module --exclude:local
+
+ If after updating build fails, use the following command to locate conflicting headers:
+ ./bin/update_pch_bisect ./svx/inc/pch/precompiled_svxcore.hxx "make svx.build" --find-conflicts
+*/
+
+#include <sal/config.h>
+#if PCH_LEVEL >= 1
+#include <algorithm>
+#include <array>
+#include <cassert>
+#include <chrono>
+#include <cmath>
+#include <cstddef>
+#include <cstdlib>
+#include <cstring>
+#include <deque>
+#include <float.h>
+#include <functional>
+#include <initializer_list>
+#include <iomanip>
+#include <iterator>
+#include <limits.h>
+#include <limits>
+#include <map>
+#include <math.h>
+#include <memory>
+#include <mutex>
+#include <new>
+#include <numeric>
+#include <optional>
+#include <ostream>
+#include <set>
+#include <span>
+#include <stack>
+#include <stddef.h>
+#include <string.h>
+#include <string>
+#include <string_view>
+#include <type_traits>
+#include <unordered_map>
+#include <utility>
+#include <vector>
+#include <boost/property_tree/json_parser.hpp>
+#include <boost/property_tree/ptree.hpp>
+#include <boost/property_tree/ptree_fwd.hpp>
+#endif // PCH_LEVEL >= 1
+#if PCH_LEVEL >= 2
+#include <osl/diagnose.h>
+#include <osl/diagnose.hxx>
+#include <osl/doublecheckedlocking.h>
+#include <osl/endian.h>
+#include <osl/file.hxx>
+#include <osl/getglobalmutex.hxx>
+#include <osl/interlck.h>
+#include <osl/mutex.h>
+#include <osl/mutex.hxx>
+#include <osl/process.h>
+#include <osl/time.h>
+#include <rtl/alloc.h>
+#include <rtl/character.hxx>
+#include <rtl/instance.hxx>
+#include <rtl/locale.h>
+#include <rtl/math.h>
+#include <rtl/math.hxx>
+#include <rtl/ref.hxx>
+#include <rtl/strbuf.h>
+#include <rtl/strbuf.hxx>
+#include <rtl/string.h>
+#include <rtl/string.hxx>
+#include <rtl/stringconcat.hxx>
+#include <rtl/stringutils.hxx>
+#include <rtl/textcvt.h>
+#include <rtl/textenc.h>
+#include <rtl/unload.h>
+#include <rtl/ustrbuf.hxx>
+#include <rtl/ustring.h>
+#include <rtl/ustring.hxx>
+#include <rtl/uuid.h>
+#include <sal/backtrace.hxx>
+#include <sal/log.hxx>
+#include <sal/macros.h>
+#include <sal/saldllapi.h>
+#include <sal/types.h>
+#include <sal/typesizes.h>
+#include <vcl/AccessibleBrowseBoxObjType.hxx>
+#include <vcl/BinaryDataContainer.hxx>
+#include <vcl/BitmapColor.hxx>
+#include <vcl/GraphicAttributes.hxx>
+#include <vcl/GraphicExternalLink.hxx>
+#include <vcl/InterimItemWindow.hxx>
+#include <vcl/Scanline.hxx>
+#include <vcl/WindowPosSize.hxx>
+#include <vcl/alpha.hxx>
+#include <vcl/animate/Animation.hxx>
+#include <vcl/animate/AnimationFrame.hxx>
+#include <vcl/bitmap.hxx>
+#include <vcl/bitmap/BitmapTypes.hxx>
+#include <vcl/bitmapex.hxx>
+#include <vcl/canvastools.hxx>
+#include <vcl/checksum.hxx>
+#include <vcl/commandevent.hxx>
+#include <vcl/ctrl.hxx>
+#include <vcl/customweld.hxx>
+#include <vcl/dllapi.h>
+#include <vcl/dockwin.hxx>
+#include <comphelper/errcode.hxx>
+#include <vcl/event.hxx>
+#include <vcl/fntstyle.hxx>
+#include <vcl/font.hxx>
+#include <vcl/gdimtf.hxx>
+#include <vcl/gfxlink.hxx>
+#include <vcl/graph.hxx>
+#include <vcl/graphicfilter.hxx>
+#include <vcl/headbar.hxx>
+#include <vcl/idle.hxx>
+#include <vcl/image.hxx>
+#include <vcl/keycod.hxx>
+#include <vcl/keycodes.hxx>
+#include <vcl/mapmod.hxx>
+#include <vcl/outdev.hxx>
+#include <vcl/ptrstyle.hxx>
+#include <vcl/region.hxx>
+#include <vcl/settings.hxx>
+#include <vcl/svapp.hxx>
+#include <vcl/syswin.hxx>
+#include <vcl/task.hxx>
+#include <vcl/timer.hxx>
+#include <vcl/toolboxid.hxx>
+#include <vcl/transfer.hxx>
+#include <vcl/vclenum.hxx>
+#include <vcl/vclptr.hxx>
+#include <vcl/vectorgraphicdata.hxx>
+#include <vcl/virdev.hxx>
+#include <vcl/weld.hxx>
+#include <vcl/window.hxx>
+#include <vcl/windowstate.hxx>
+#include <vcl/wintypes.hxx>
+#endif // PCH_LEVEL >= 2
+#if PCH_LEVEL >= 3
+#include <basegfx/basegfxdllapi.h>
+#include <basegfx/color/bcolor.hxx>
+#include <basegfx/matrix/b2dhommatrix.hxx>
+#include <basegfx/matrix/b2dhommatrixtools.hxx>
+#include <basegfx/matrix/b3dhommatrix.hxx>
+#include <basegfx/numeric/ftools.hxx>
+#include <basegfx/point/b2dpoint.hxx>
+#include <basegfx/point/b2ipoint.hxx>
+#include <basegfx/point/b3dpoint.hxx>
+#include <basegfx/polygon/b2dpolygon.hxx>
+#include <basegfx/polygon/b2dpolygontools.hxx>
+#include <basegfx/polygon/b2dpolypolygon.hxx>
+#include <basegfx/polygon/b2dpolypolygontools.hxx>
+#include <basegfx/polygon/b3dpolypolygon.hxx>
+#include <basegfx/range/b2drange.hxx>
+#include <basegfx/range/b2drectangle.hxx>
+#include <basegfx/range/b3drange.hxx>
+#include <basegfx/range/basicrange.hxx>
+#include <basegfx/tuple/Tuple2D.hxx>
+#include <basegfx/tuple/Tuple3D.hxx>
+#include <basegfx/tuple/b2dtuple.hxx>
+#include <basegfx/tuple/b2ituple.hxx>
+#include <basegfx/tuple/b3dtuple.hxx>
+#include <basegfx/utils/common.hxx>
+#include <basegfx/vector/b2dsize.hxx>
+#include <basegfx/vector/b2dvector.hxx>
+#include <basegfx/vector/b2enums.hxx>
+#include <basegfx/vector/b2ivector.hxx>
+#include <basegfx/vector/b3dvector.hxx>
+#include <basic/basicdllapi.h>
+#include <basic/sbxcore.hxx>
+#include <basic/sbxdef.hxx>
+#include <com/sun/star/awt/Key.hpp>
+#include <com/sun/star/awt/KeyGroup.hpp>
+#include <com/sun/star/awt/XBitmap.hpp>
+#include <com/sun/star/awt/XControl.hpp>
+#include <com/sun/star/awt/XWindow.hpp>
+#include <com/sun/star/beans/Property.hpp>
+#include <com/sun/star/beans/PropertyAttribute.hpp>
+#include <com/sun/star/beans/PropertyState.hpp>
+#include <com/sun/star/beans/PropertyValue.hpp>
+#include <com/sun/star/beans/XFastPropertySet.hpp>
+#include <com/sun/star/beans/XMultiPropertySet.hpp>
+#include <com/sun/star/beans/XPropertiesChangeListener.hpp>
+#include <com/sun/star/beans/XPropertyChangeListener.hpp>
+#include <com/sun/star/beans/XPropertySet.hpp>
+#include <com/sun/star/beans/XPropertySetInfo.hpp>
+#include <com/sun/star/beans/XPropertySetOption.hpp>
+#include <com/sun/star/beans/XPropertyState.hpp>
+#include <com/sun/star/beans/XVetoableChangeListener.hpp>
+#include <com/sun/star/container/XChild.hpp>
+#include <com/sun/star/container/XContainerListener.hpp>
+#include <com/sun/star/container/XIndexAccess.hpp>
+#include <com/sun/star/datatransfer/DataFlavor.hpp>
+#include <com/sun/star/datatransfer/XTransferable2.hpp>
+#include <com/sun/star/datatransfer/clipboard/XClipboard.hpp>
+#include <com/sun/star/datatransfer/clipboard/XClipboardOwner.hpp>
+#include <com/sun/star/datatransfer/dnd/DNDConstants.hpp>
+#include <com/sun/star/datatransfer/dnd/DropTargetDragEvent.hpp>
+#include <com/sun/star/datatransfer/dnd/DropTargetDropEvent.hpp>
+#include <com/sun/star/datatransfer/dnd/XDragGestureListener.hpp>
+#include <com/sun/star/datatransfer/dnd/XDragSourceListener.hpp>
+#include <com/sun/star/datatransfer/dnd/XDropTargetListener.hpp>
+#include <com/sun/star/drawing/LineCap.hpp>
+#include <com/sun/star/drawing/NormalsKind.hpp>
+#include <com/sun/star/drawing/TextureKind2.hpp>
+#include <com/sun/star/drawing/TextureMode.hpp>
+#include <com/sun/star/drawing/TextureProjectionMode.hpp>
+#include <com/sun/star/embed/Aspects.hpp>
+#include <com/sun/star/embed/XEmbeddedObject.hpp>
+#include <com/sun/star/form/FormComponentType.hpp>
+#include <com/sun/star/frame/XDispatch.hpp>
+#include <com/sun/star/frame/XFrame.hpp>
+#include <com/sun/star/frame/XModel.hpp>
+#include <com/sun/star/frame/XStatusListener.hpp>
+#include <com/sun/star/frame/XTerminateListener.hpp>
+#include <com/sun/star/frame/XToolbarController.hpp>
+#include <com/sun/star/graphic/XGraphic.hpp>
+#include <com/sun/star/graphic/XPrimitive2D.hpp>
+#include <com/sun/star/graphic/XPrimitive3D.hpp>
+#include <com/sun/star/i18n/CharacterIteratorMode.hpp>
+#include <com/sun/star/i18n/WordType.hpp>
+#include <com/sun/star/lang/DisposedException.hpp>
+#include <com/sun/star/lang/EventObject.hpp>
+#include <com/sun/star/lang/IndexOutOfBoundsException.hpp>
+#include <com/sun/star/lang/Locale.hpp>
+#include <com/sun/star/lang/XComponent.hpp>
+#include <com/sun/star/lang/XEventListener.hpp>
+#include <com/sun/star/lang/XInitialization.hpp>
+#include <com/sun/star/lang/XMultiServiceFactory.hpp>
+#include <com/sun/star/lang/XServiceInfo.hpp>
+#include <com/sun/star/lang/XTypeProvider.hpp>
+#include <com/sun/star/lang/XUnoTunnel.hpp>
+#include <com/sun/star/style/NumberingType.hpp>
+#include <com/sun/star/text/textfield/Type.hpp>
+#include <com/sun/star/uno/Any.h>
+#include <com/sun/star/uno/Any.hxx>
+#include <com/sun/star/uno/Reference.h>
+#include <com/sun/star/uno/Reference.hxx>
+#include <com/sun/star/uno/RuntimeException.hpp>
+#include <com/sun/star/uno/Sequence.h>
+#include <com/sun/star/uno/Sequence.hxx>
+#include <com/sun/star/uno/Type.h>
+#include <com/sun/star/uno/Type.hxx>
+#include <com/sun/star/uno/TypeClass.hdl>
+#include <com/sun/star/uno/XAggregation.hpp>
+#include <com/sun/star/uno/XComponentContext.hpp>
+#include <com/sun/star/uno/XInterface.hpp>
+#include <com/sun/star/uno/XWeak.hpp>
+#include <com/sun/star/uno/genfunc.h>
+#include <com/sun/star/uno/genfunc.hxx>
+#include <com/sun/star/util/Date.hpp>
+#include <com/sun/star/util/DateTime.hpp>
+#include <com/sun/star/util/Time.hpp>
+#include <com/sun/star/util/XAccounting.hpp>
+#include <com/sun/star/util/XCloneable.hpp>
+#include <com/sun/star/util/XUpdatable.hpp>
+#include <com/sun/star/xml/sax/XFastAttributeList.hpp>
+#include <com/sun/star/xml/sax/XFastTokenHandler.hpp>
+#include <comphelper/broadcasthelper.hxx>
+#include <comphelper/compbase.hxx>
+#include <comphelper/comphelperdllapi.h>
+#include <comphelper/interfacecontainer2.hxx>
+#include <comphelper/interfacecontainer3.hxx>
+#include <comphelper/interfacecontainer4.hxx>
+#include <comphelper/lok.hxx>
+#include <comphelper/multicontainer2.hxx>
+#include <comphelper/processfactory.hxx>
+#include <comphelper/propagg.hxx>
+#include <comphelper/proparrhlp.hxx>
+#include <comphelper/property.hxx>
+#include <comphelper/propertycontainer.hxx>
+#include <comphelper/propertycontainerhelper.hxx>
+#include <comphelper/propertyvalue.hxx>
+#include <comphelper/propstate.hxx>
+#include <comphelper/sequence.hxx>
+#include <comphelper/servicehelper.hxx>
+#include <comphelper/string.hxx>
+#include <comphelper/types.hxx>
+#include <comphelper/uno3.hxx>
+#include <connectivity/dbtools.hxx>
+#include <connectivity/dbtoolsdllapi.hxx>
+#include <cppu/cppudllapi.h>
+#include <cppu/unotype.hxx>
+#include <cppuhelper/basemutex.hxx>
+#include <cppuhelper/compbase.hxx>
+#include <cppuhelper/compbase_ex.hxx>
+#include <cppuhelper/cppuhelperdllapi.h>
+#include <cppuhelper/implbase.hxx>
+#include <cppuhelper/implbase_ex.hxx>
+#include <cppuhelper/implbase_ex_post.hxx>
+#include <cppuhelper/implbase_ex_pre.hxx>
+#include <cppuhelper/interfacecontainer.h>
+#include <cppuhelper/propshlp.hxx>
+#include <cppuhelper/queryinterface.hxx>
+#include <cppuhelper/supportsservice.hxx>
+#include <cppuhelper/weak.hxx>
+#include <cppuhelper/weakagg.hxx>
+#include <cppuhelper/weakref.hxx>
+#include <drawinglayer/attribute/fillgradientattribute.hxx>
+#include <drawinglayer/attribute/sdrallattribute3d.hxx>
+#include <drawinglayer/attribute/sdrfillattribute.hxx>
+#include <drawinglayer/attribute/sdrlineattribute.hxx>
+#include <drawinglayer/attribute/sdrlinestartendattribute.hxx>
+#include <drawinglayer/attribute/sdrobjectattribute3d.hxx>
+#include <drawinglayer/attribute/sdrshadowattribute.hxx>
+#include <drawinglayer/drawinglayerdllapi.h>
+#include <drawinglayer/geometry/viewinformation2d.hxx>
+#include <drawinglayer/geometry/viewinformation3d.hxx>
+#include <drawinglayer/primitive2d/BufferedDecompositionPrimitive2D.hxx>
+#include <drawinglayer/primitive2d/CommonTypes.hxx>
+#include <drawinglayer/primitive2d/PolyPolygonColorPrimitive2D.hxx>
+#include <drawinglayer/primitive2d/PolygonHairlinePrimitive2D.hxx>
+#include <drawinglayer/primitive2d/Primitive2DContainer.hxx>
+#include <drawinglayer/primitive2d/Primitive2DVisitor.hxx>
+#include <drawinglayer/primitive2d/baseprimitive2d.hxx>
+#include <drawinglayer/primitive2d/groupprimitive2d.hxx>
+#include <drawinglayer/primitive2d/sdrdecompositiontools2d.hxx>
+#include <drawinglayer/primitive2d/transformprimitive2d.hxx>
+#include <drawinglayer/primitive2d/unifiedtransparenceprimitive2d.hxx>
+#include <drawinglayer/primitive3d/baseprimitive3d.hxx>
+#include <drawinglayer/primitive3d/sdrextrudelathetools3d.hxx>
+#include <drawinglayer/processor2d/baseprocessor2d.hxx>
+#include <drawinglayer/processor2d/processor2dtools.hxx>
+#include <editeng/colritem.hxx>
+#include <editeng/crossedoutitem.hxx>
+#include <editeng/editdata.hxx>
+#include <editeng/editengdllapi.h>
+#include <editeng/editobj.hxx>
+#include <editeng/editstat.hxx>
+#include <editeng/eedata.hxx>
+#include <editeng/eeitem.hxx>
+#include <editeng/fhgtitem.hxx>
+#include <editeng/flditem.hxx>
+#include <editeng/fontitem.hxx>
+#include <editeng/outlobj.hxx>
+#include <editeng/svxenum.hxx>
+#include <editeng/udlnitem.hxx>
+#include <i18nlangtag/i18nlangtagdllapi.h>
+#include <i18nlangtag/lang.h>
+#include <i18nlangtag/languagetag.hxx>
+#include <libxml/xmlwriter.h>
+#include <o3tl/cow_wrapper.hxx>
+#include <o3tl/deleter.hxx>
+#include <o3tl/safeint.hxx>
+#include <o3tl/sorted_vector.hxx>
+#include <o3tl/string_view.hxx>
+#include <o3tl/strong_int.hxx>
+#include <o3tl/typed_flags_set.hxx>
+#include <o3tl/underlyingenumvalue.hxx>
+#include <o3tl/unit_conversion.hxx>
+#include <salhelper/salhelperdllapi.h>
+#include <salhelper/simplereferenceobject.hxx>
+#include <salhelper/singletonref.hxx>
+#include <salhelper/thread.hxx>
+#include <sax/fastattribs.hxx>
+#include <sax/saxdllapi.h>
+#include <sfx2/basedlgs.hxx>
+#include <sfx2/dispatch.hxx>
+#include <sfx2/dllapi.h>
+#include <sfx2/objsh.hxx>
+#include <sfx2/shell.hxx>
+#include <sfx2/viewfrm.hxx>
+#include <sfx2/viewsh.hxx>
+#include <sot/exchange.hxx>
+#include <sot/formats.hxx>
+#include <sot/sotdllapi.h>
+#include <svl/SfxBroadcaster.hxx>
+#include <svl/cenumitm.hxx>
+#include <svl/cintitem.hxx>
+#include <svl/eitem.hxx>
+#include <svl/hint.hxx>
+#include <svl/intitem.hxx>
+#include <svl/itempool.hxx>
+#include <svl/itemset.hxx>
+#include <svl/languageoptions.hxx>
+#include <svl/lstner.hxx>
+#include <svl/poolitem.hxx>
+#include <svl/style.hxx>
+#include <svl/svldllapi.h>
+#include <svl/typedwhich.hxx>
+#include <svl/undo.hxx>
+#include <svl/whiter.hxx>
+#include <svtools/colorcfg.hxx>
+#include <svtools/optionsdrawinglayer.hxx>
+#include <svtools/svtdllapi.h>
+#include <svtools/valueset.hxx>
+#include <toolkit/helper/vclunohelper.hxx>
+#include <tools/UnitConversion.hxx>
+#include <tools/bigint.hxx>
+#include <tools/color.hxx>
+#include <tools/date.hxx>
+#include <tools/datetime.hxx>
+#include <tools/debug.hxx>
+#include <tools/degree.hxx>
+#include <comphelper/diagnose_ex.hxx>
+#include <tools/fldunit.hxx>
+#include <tools/fontenum.hxx>
+#include <tools/gen.hxx>
+#include <tools/globname.hxx>
+#include <tools/helpers.hxx>
+#include <tools/lineend.hxx>
+#include <tools/link.hxx>
+#include <tools/long.hxx>
+#include <tools/mapunit.hxx>
+#include <tools/poly.hxx>
+#include <tools/ref.hxx>
+#include <tools/solar.h>
+#include <tools/stream.hxx>
+#include <tools/time.hxx>
+#include <tools/toolsdllapi.h>
+#include <tools/urlobj.hxx>
+#include <typelib/typeclass.h>
+#include <typelib/typedescription.h>
+#include <typelib/uik.h>
+#include <uno/any2.h>
+#include <uno/data.h>
+#include <uno/sequence2.h>
+#include <unotools/configmgr.hxx>
+#include <unotools/localedatawrapper.hxx>
+#include <unotools/options.hxx>
+#include <unotools/resmgr.hxx>
+#include <unotools/streamwrap.hxx>
+#include <unotools/syslocale.hxx>
+#include <unotools/ucbstreamhelper.hxx>
+#include <unotools/unotoolsdllapi.h>
+#include <xmloff/dllapi.h>
+#include <xmloff/families.hxx>
+#include <xmloff/xmltoken.hxx>
+#endif // PCH_LEVEL >= 3
+#if PCH_LEVEL >= 4
+#include <cell.hxx>
+#include <fmobj.hxx>
+#include <fmpgeimp.hxx>
+#include <fmprop.hxx>
+#include <fmservs.hxx>
+#include <fmundo.hxx>
+#include <svx/dialmgr.hxx>
+#include <svx/e3dsceneupdater.hxx>
+#include <svx/fmmodel.hxx>
+#include <svx/fmpage.hxx>
+#include <svx/fmshell.hxx>
+#include <svx/fmtools.hxx>
+#include <svx/fmview.hxx>
+#include <svx/gallery1.hxx>
+#include <svx/galmisc.hxx>
+#include <svx/galtheme.hxx>
+#include <svx/ipolypolygoneditorcontroller.hxx>
+#include <svx/lathe3d.hxx>
+#include <svx/obj3d.hxx>
+#include <svx/scene3d.hxx>
+#include <svx/sdasitm.hxx>
+#include <svx/sdmetitm.hxx>
+#include <svx/sdooitm.hxx>
+#include <svx/sdr/animation/scheduler.hxx>
+#include <svx/sdr/contact/displayinfo.hxx>
+#include <svx/sdr/contact/objectcontact.hxx>
+#include <svx/sdr/contact/viewcontact.hxx>
+#include <svx/sdr/contact/viewcontactofe3dscene.hxx>
+#include <svx/sdr/contact/viewobjectcontact.hxx>
+#include <svx/sdr/overlay/overlaymanager.hxx>
+#include <svx/sdr/overlay/overlayobject.hxx>
+#include <svx/sdr/primitive2d/svx_primitivetypes2d.hxx>
+#include <svx/sdrhittesthelper.hxx>
+#include <svx/sdrobjectuser.hxx>
+#include <svx/sdrpagewindow.hxx>
+#include <svx/sdrpaintwindow.hxx>
+#include <svx/sdtfchim.hxx>
+#include <svx/sdynitm.hxx>
+#include <svx/selectioncontroller.hxx>
+#include <svx/svddef.hxx>
+#include <svx/svddrag.hxx>
+#include <svx/svdedtv.hxx>
+#include <svx/svdetc.hxx>
+#include <svx/svdhdl.hxx>
+#include <svx/svdhlpln.hxx>
+#include <svx/svditer.hxx>
+#include <svx/svdlayer.hxx>
+#include <svx/svdmark.hxx>
+#include <svx/svdmodel.hxx>
+#include <svx/svdmrkv.hxx>
+#include <svx/svdoashp.hxx>
+#include <svx/svdobj.hxx>
+#include <svx/svdobjkind.hxx>
+#include <svx/svdocapt.hxx>
+#include <svx/svdoedge.hxx>
+#include <svx/svdograf.hxx>
+#include <svx/svdogrp.hxx>
+#include <svx/svdoole2.hxx>
+#include <svx/svdopath.hxx>
+#include <svx/svdorect.hxx>
+#include <svx/svdotable.hxx>
+#include <svx/svdotext.hxx>
+#include <svx/svdouno.hxx>
+#include <svx/svdoutl.hxx>
+#include <svx/svdpage.hxx>
+#include <svx/svdpagv.hxx>
+#include <svx/svdpntv.hxx>
+#include <svx/svdpoev.hxx>
+#include <svx/svdpool.hxx>
+#include <svx/svdsnpv.hxx>
+#include <svx/svdsob.hxx>
+#include <svx/svdtrans.hxx>
+#include <svx/svdtypes.hxx>
+#include <svx/svdundo.hxx>
+#include <svx/svdview.hxx>
+#include <svx/svxdlg.hxx>
+#include <svx/svxdllapi.h>
+#include <svx/unoapi.hxx>
+#include <svx/unofill.hxx>
+#include <svx/unomid.hxx>
+#include <svx/unopage.hxx>
+#include <svx/unoshape.hxx>
+#include <svx/unoshprp.hxx>
+#include <svx/xbtmpit.hxx>
+#include <svx/xdef.hxx>
+#include <svx/xfillit0.hxx>
+#include <svx/xflbmtit.hxx>
+#include <svx/xflbstit.hxx>
+#include <svx/xflclit.hxx>
+#include <svx/xflftrit.hxx>
+#include <svx/xflgrit.hxx>
+#include <svx/xflhtit.hxx>
+#include <svx/xfltrit.hxx>
+#include <svx/xlineit0.hxx>
+#include <svx/xlncapit.hxx>
+#include <svx/xlnclit.hxx>
+#include <svx/xlndsit.hxx>
+#include <svx/xlnedit.hxx>
+#include <svx/xlnedwit.hxx>
+#include <svx/xlnstit.hxx>
+#include <svx/xlnstwit.hxx>
+#include <svx/xlntrit.hxx>
+#include <svx/xlnwtit.hxx>
+#include <svx/xpoly.hxx>
+#include <svx/xtable.hxx>
+#include <tablemodel.hxx>
+#endif // PCH_LEVEL >= 4
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/svx/inc/polygn3d.hxx b/svx/inc/polygn3d.hxx
new file mode 100644
index 0000000000..2f5b9f7fcd
--- /dev/null
+++ b/svx/inc/polygn3d.hxx
@@ -0,0 +1,66 @@
+/* -*- 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 <config_options.h>
+#include <svx/obj3d.hxx>
+#include <svx/svxdllapi.h>
+
+class UNLESS_MERGELIBS(SVXCORE_DLLPUBLIC) E3dPolygonObj final : public E3dCompoundObject
+{
+ // parameters
+ basegfx::B3DPolyPolygon aPolyPoly3D;
+ basegfx::B3DPolyPolygon aPolyNormals3D;
+ basegfx::B2DPolyPolygon aPolyTexture2D;
+ bool bLineOnly;
+
+ SVX_DLLPRIVATE void CreateDefaultNormals();
+ SVX_DLLPRIVATE void CreateDefaultTexture();
+
+ virtual std::unique_ptr<sdr::contact::ViewContact> CreateObjectSpecificViewContact() override;
+
+ // protected destructor
+ virtual ~E3dPolygonObj() override;
+
+public:
+ void SetPolyPolygon3D(const basegfx::B3DPolyPolygon& rNewPolyPoly3D);
+ void SetPolyNormals3D(const basegfx::B3DPolyPolygon& rNewPolyPoly3D);
+ void SetPolyTexture2D(const basegfx::B2DPolyPolygon& rNewPolyPoly2D);
+
+ E3dPolygonObj(SdrModel& rSdrModel, const basegfx::B3DPolyPolygon& rPolyPoly3D);
+ E3dPolygonObj(SdrModel& rSdrModel);
+ E3dPolygonObj(SdrModel& rSdrModel, E3dPolygonObj const& rSource);
+
+ const basegfx::B3DPolyPolygon& GetPolyPolygon3D() const { return aPolyPoly3D; }
+ const basegfx::B3DPolyPolygon& GetPolyNormals3D() const { return aPolyNormals3D; }
+ const basegfx::B2DPolyPolygon& GetPolyTexture2D() const { return aPolyTexture2D; }
+
+ virtual SdrObjKind GetObjIdentifier() const override;
+ virtual rtl::Reference<SdrObject> DoConvertToPolyObj(bool bBezier,
+ bool bAddText) const override;
+
+ virtual rtl::Reference<SdrObject> CloneSdrObject(SdrModel& rTargetModel) const override;
+
+ // LineOnly?
+ bool GetLineOnly() const { return bLineOnly; }
+ void SetLineOnly(bool bNew);
+};
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/svx/inc/rotationstrings.hrc b/svx/inc/rotationstrings.hrc
new file mode 100644
index 0000000000..33ea94f09a
--- /dev/null
+++ b/svx/inc/rotationstrings.hrc
@@ -0,0 +1,28 @@
+/* -*- 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_INC_ROTATIONSTRINGS_HRC
+#define INCLUDED_SVX_INC_ROTATIONSTRINGS_HRC
+
+#include <unotools/resmgr.hxx>
+
+#define NC_(Context, String) TranslateId(Context, u8##String)
+
+const TranslateId RID_SVXITEMS_ROTATE_MODE[] =
+{
+ // enum SvxRotateMode ----------------------------------------------------
+ NC_("RID_SVXITEMS_ROTATE_MODE_STANDARD", "Rotation only within cell"),
+ NC_("RID_SVXITEMS_ROTATE_MODE_TOP", "From upper cell edge"),
+ NC_("RID_SVXITEMS_ROTATE_MODE_CENTER", "From vertical middle cell"),
+ NC_("RID_SVXITEMS_ROTATE_MODE_BOTTOM", "From lower cell edge"),
+};
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/svx/inc/samecontent.hrc b/svx/inc/samecontent.hrc
new file mode 100644
index 0000000000..a6d25f1466
--- /dev/null
+++ b/svx/inc/samecontent.hrc
@@ -0,0 +1,28 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4; fill-column: 100 -*- */
+/*
+ * 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_INC_SPACING_HRC
+#define INCLUDED_SVX_INC_SPACING_HRC
+
+#include <unotools/resmgr.hxx>
+
+#include <utility>
+
+#define NC_(Context, String) TranslateId(Context, u8##String)
+
+const std::pair<TranslateId, int> RID_SVXSTRARY_SAMECONTENT[] =
+{
+ { NC_("RID_SVXSTRARY_SAMECONTENT", "All Pages"), 0 },
+ { NC_("RID_SVXSTRARY_SAMECONTENT", "First Page"), 1 },
+ { NC_("RID_SVXSTRARY_SAMECONTENT", "Left and Right Pages"), 2 },
+ { NC_("RID_SVXSTRARY_SAMECONTENT", "First, Left and Right Pages"), 3 }
+};
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab cinoptions=b1,g0,N-s cinkeys+=0=break: */
diff --git a/svx/inc/sdgcoitm.hxx b/svx/inc/sdgcoitm.hxx
new file mode 100644
index 0000000000..d49bad2072
--- /dev/null
+++ b/svx/inc/sdgcoitm.hxx
@@ -0,0 +1,69 @@
+/* -*- 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 <config_options.h>
+#include <svx/sdprcitm.hxx>
+#include <svx/svddef.hxx>
+#include <svx/svxdllapi.h>
+
+
+// SdrGrafRedItem -
+
+
+class UNLESS_MERGELIBS(SVXCORE_DLLPUBLIC) SdrGrafRedItem final : public SdrSignedPercentItem
+{
+public:
+
+
+ SdrGrafRedItem( short nRedPercent = 0 ) : SdrSignedPercentItem( SDRATTR_GRAFRED, nRedPercent ) {}
+
+ virtual SdrGrafRedItem* Clone( SfxItemPool* pPool = nullptr ) const override;
+};
+
+
+// SdrGrafGreenItem -
+
+
+class UNLESS_MERGELIBS(SVXCORE_DLLPUBLIC) SdrGrafGreenItem final : public SdrSignedPercentItem
+{
+public:
+
+
+ SdrGrafGreenItem( short nGreenPercent = 0 ) : SdrSignedPercentItem( SDRATTR_GRAFGREEN, nGreenPercent ) {}
+
+ virtual SdrGrafGreenItem* Clone( SfxItemPool* pPool = nullptr ) const override;
+};
+
+
+// SdrGrafBlueItem -
+
+
+class UNLESS_MERGELIBS(SVXCORE_DLLPUBLIC) SdrGrafBlueItem final : public SdrSignedPercentItem
+{
+public:
+
+
+ SdrGrafBlueItem( short nBluePercent = 0 ) : SdrSignedPercentItem( SDRATTR_GRAFBLUE, nBluePercent ) {}
+
+ virtual SdrGrafBlueItem* Clone( SfxItemPool* pPool = nullptr ) const override;
+};
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/svx/inc/sdginitm.hxx b/svx/inc/sdginitm.hxx
new file mode 100644
index 0000000000..35cfa3da78
--- /dev/null
+++ b/svx/inc/sdginitm.hxx
@@ -0,0 +1,39 @@
+/* -*- 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 <svx/sdooitm.hxx>
+#include <svx/svddef.hxx>
+
+
+// SdrGrafInvertItem -
+
+
+class SdrGrafInvertItem final : public SdrOnOffItem
+{
+public:
+
+
+ SdrGrafInvertItem( bool bInvert = false ) : SdrOnOffItem( SDRATTR_GRAFINVERT, bInvert ) {}
+
+ virtual SdrGrafInvertItem* Clone( SfxItemPool* pPool = nullptr ) const override;
+};
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/svx/inc/sdgtritm.hxx b/svx/inc/sdgtritm.hxx
new file mode 100644
index 0000000000..084ac69449
--- /dev/null
+++ b/svx/inc/sdgtritm.hxx
@@ -0,0 +1,40 @@
+/* -*- 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 <config_options.h>
+#include <svx/sdprcitm.hxx>
+#include <svx/svddef.hxx>
+#include <svx/svxdllapi.h>
+
+
+// SdrGrafTransparenceItem -
+
+
+class UNLESS_MERGELIBS(SVXCORE_DLLPUBLIC) SdrGrafTransparenceItem final : public SdrPercentItem
+{
+public:
+
+ SdrGrafTransparenceItem( sal_uInt16 nTransparencePercent = 0 ) : SdrPercentItem( SDRATTR_GRAFTRANSPARENCE, nTransparencePercent ) {}
+
+ virtual SdrGrafTransparenceItem* Clone( SfxItemPool* pPool = nullptr ) const override;
+};
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/svx/inc/sdr/attribute/sdreffectstextattribute.hxx b/svx/inc/sdr/attribute/sdreffectstextattribute.hxx
new file mode 100644
index 0000000000..95a7ffa3e3
--- /dev/null
+++ b/svx/inc/sdr/attribute/sdreffectstextattribute.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/.
+ *
+ * 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 <drawinglayer/attribute/sdrshadowattribute.hxx>
+#include <sdr/attribute/sdrtextattribute.hxx>
+#include <drawinglayer/attribute/sdrglowattribute.hxx>
+
+
+namespace drawinglayer::attribute
+ {
+ class SdrEffectsTextAttribute
+ {
+ // shadow and text attributes
+ SdrShadowAttribute maShadow; // shadow attributes (if used)
+ SdrTextAttribute maTextAttribute; // text and text attributes (if used)
+
+ // glow effect
+ SdrGlowAttribute maGlow;
+
+ // soft edge
+ sal_Int32 mnSoftEdgeRadius = 0;
+
+ public:
+ SdrEffectsTextAttribute(
+ SdrShadowAttribute aShadow,
+ SdrTextAttribute aTextAttribute,
+ SdrGlowAttribute aGlow,
+ sal_Int32 nSoftEdgeRadius);
+ SdrEffectsTextAttribute();
+ SdrEffectsTextAttribute(const SdrEffectsTextAttribute& rCandidate);
+ SdrEffectsTextAttribute& operator=(const SdrEffectsTextAttribute& rCandidate);
+
+ // checks if the incarnation is default constructed
+ bool isDefault() const;
+
+ // compare operator
+ bool operator==(const SdrEffectsTextAttribute& rCandidate) const;
+
+ // data access
+ const SdrShadowAttribute& getShadow() const { return maShadow; }
+ const SdrTextAttribute& getText() const { return maTextAttribute; }
+ const SdrGlowAttribute& getGlow() const { return maGlow; }
+ sal_Int32 getSoftEdgeRadius() const { return mnSoftEdgeRadius; }
+ };
+
+} // end of namespace drawinglayer::attribute
+
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/svx/inc/sdr/attribute/sdrfilltextattribute.hxx b/svx/inc/sdr/attribute/sdrfilltextattribute.hxx
new file mode 100644
index 0000000000..98334a3507
--- /dev/null
+++ b/svx/inc/sdr/attribute/sdrfilltextattribute.hxx
@@ -0,0 +1,60 @@
+/* -*- 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_INC_SDR_ATTRIBUTE_SDRFILLTEXTATTRIBUTE_HXX
+#define INCLUDED_SVX_INC_SDR_ATTRIBUTE_SDRFILLTEXTATTRIBUTE_HXX
+
+#include <drawinglayer/attribute/sdrfillattribute.hxx>
+#include <drawinglayer/attribute/fillgradientattribute.hxx>
+#include <sdr/attribute/sdrtextattribute.hxx>
+
+
+namespace drawinglayer::attribute
+ {
+ class SdrFillTextAttribute
+ {
+ // shadow and text attributes
+ SdrFillAttribute maFill; // fill attributes (if used)
+ FillGradientAttribute maFillFloatTransGradient; // fill float transparence gradient (if used)
+ SdrTextAttribute maTextAttribute; // text and text attributes (if used)
+
+ public:
+ SdrFillTextAttribute(
+ SdrFillAttribute aFill,
+ FillGradientAttribute aFillFloatTransGradient,
+ SdrTextAttribute aTextAttribute);
+ SdrFillTextAttribute();
+ SdrFillTextAttribute(const SdrFillTextAttribute& rCandidate);
+ SdrFillTextAttribute& operator=(const SdrFillTextAttribute& rCandidate);
+
+ // compare operator
+ bool operator==(const SdrFillTextAttribute& rCandidate) const;
+
+ // data access
+ const SdrFillAttribute& getFill() const { return maFill; }
+ const FillGradientAttribute& getFillFloatTransGradient() const { return maFillFloatTransGradient; }
+ const SdrTextAttribute& getText() const { return maTextAttribute; }
+ };
+
+} // end of namespace drawinglayer::attribute
+
+
+#endif // INCLUDED_SVX_INC_SDR_ATTRIBUTE_SDRFILLTEXTATTRIBUTE_HXX
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/svx/inc/sdr/attribute/sdrformtextattribute.hxx b/svx/inc/sdr/attribute/sdrformtextattribute.hxx
new file mode 100644
index 0000000000..7167bf6152
--- /dev/null
+++ b/svx/inc/sdr/attribute/sdrformtextattribute.hxx
@@ -0,0 +1,81 @@
+/* -*- 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 <sal/types.h>
+#include <svx/xenum.hxx>
+#include <tools/color.hxx>
+#include <o3tl/cow_wrapper.hxx>
+
+// predefines
+
+class SfxItemSet;
+
+namespace drawinglayer::attribute {
+ class ImpSdrFormTextAttribute;
+ class SdrFormTextOutlineAttribute;
+}
+
+
+namespace drawinglayer::attribute
+ {
+ class SdrFormTextAttribute
+ {
+ public:
+ typedef o3tl::cow_wrapper< ImpSdrFormTextAttribute > ImplType;
+
+ private:
+ ImplType mpSdrFormTextAttribute;
+
+ public:
+ /// constructors/assignmentoperator/destructor
+ SdrFormTextAttribute(const SfxItemSet& rSet);
+ SdrFormTextAttribute();
+ SdrFormTextAttribute(const SdrFormTextAttribute& rCandidate);
+ SdrFormTextAttribute(SdrFormTextAttribute&& rCandidate) noexcept;
+ SdrFormTextAttribute& operator=(const SdrFormTextAttribute& rCandidate);
+ SdrFormTextAttribute& operator=(SdrFormTextAttribute&& rCandidate) noexcept;
+ ~SdrFormTextAttribute();
+
+ // checks if the incarnation is default constructed
+ bool isDefault() const;
+
+ // compare operator
+ bool operator==(const SdrFormTextAttribute& rCandidate) const;
+
+ // data read access
+ sal_Int32 getFormTextDistance() const;
+ sal_Int32 getFormTextStart() const;
+ sal_Int32 getFormTextShdwXVal() const;
+ sal_Int32 getFormTextShdwYVal() const;
+ XFormTextStyle getFormTextStyle() const;
+ XFormTextAdjust getFormTextAdjust() const;
+ XFormTextShadow getFormTextShadow() const;
+ Color const & getFormTextShdwColor() const;
+ const SdrFormTextOutlineAttribute& getOutline() const;
+ const SdrFormTextOutlineAttribute& getShadowOutline() const;
+ bool getFormTextMirror() const;
+ bool getFormTextOutline() const;
+ };
+
+} // end of namespace drawinglayer::attribute
+
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/svx/inc/sdr/attribute/sdrformtextoutlineattribute.hxx b/svx/inc/sdr/attribute/sdrformtextoutlineattribute.hxx
new file mode 100644
index 0000000000..34086c2c8f
--- /dev/null
+++ b/svx/inc/sdr/attribute/sdrformtextoutlineattribute.hxx
@@ -0,0 +1,74 @@
+/* -*- 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_INC_SDR_ATTRIBUTE_SDRFORMTEXTOUTLINEATTRIBUTE_HXX
+#define INCLUDED_SVX_INC_SDR_ATTRIBUTE_SDRFORMTEXTOUTLINEATTRIBUTE_HXX
+
+#include <sal/types.h>
+#include <o3tl/cow_wrapper.hxx>
+
+// predefines
+
+namespace drawinglayer::attribute {
+ class ImpSdrFormTextOutlineAttribute;
+ class LineAttribute;
+ class StrokeAttribute;
+}
+
+
+namespace drawinglayer::attribute
+ {
+ class SdrFormTextOutlineAttribute
+ {
+ public:
+ typedef o3tl::cow_wrapper< ImpSdrFormTextOutlineAttribute > ImplType;
+
+ private:
+ ImplType mpSdrFormTextOutlineAttribute;
+
+ public:
+ /// constructors/assignmentoperator/destructor
+ SdrFormTextOutlineAttribute(
+ const LineAttribute& rLineAttribute,
+ const StrokeAttribute& rStrokeAttribute,
+ sal_uInt8 nTransparence);
+ SdrFormTextOutlineAttribute();
+ SdrFormTextOutlineAttribute(const SdrFormTextOutlineAttribute& rCandidate);
+ SdrFormTextOutlineAttribute& operator=(const SdrFormTextOutlineAttribute& rCandidate);
+ SdrFormTextOutlineAttribute& operator=(SdrFormTextOutlineAttribute&& rCandidate) noexcept;
+ ~SdrFormTextOutlineAttribute();
+
+ // checks if the incarnation is default constructed
+ bool isDefault() const;
+
+ // compare operator
+ bool operator==(const SdrFormTextOutlineAttribute& rCandidate) const;
+
+ // data read access
+ const LineAttribute& getLineAttribute() const;
+ const StrokeAttribute& getStrokeAttribute() const;
+ sal_uInt8 getTransparence() const;
+ };
+
+} // end of namespace drawinglayer::attribute
+
+
+#endif // INCLUDED_SVX_INC_SDR_ATTRIBUTE_SDRFORMTEXTOUTLINEATTRIBUTE_HXX
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/svx/inc/sdr/attribute/sdrlineeffectstextattribute.hxx b/svx/inc/sdr/attribute/sdrlineeffectstextattribute.hxx
new file mode 100644
index 0000000000..3134b0b78b
--- /dev/null
+++ b/svx/inc/sdr/attribute/sdrlineeffectstextattribute.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/.
+ *
+ * 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 <sdr/attribute/sdreffectstextattribute.hxx>
+#include <drawinglayer/attribute/sdrglowattribute.hxx>
+#include <drawinglayer/attribute/sdrlineattribute.hxx>
+#include <drawinglayer/attribute/sdrlinestartendattribute.hxx>
+
+
+namespace drawinglayer::attribute
+ {
+ class SdrLineEffectsTextAttribute : public SdrEffectsTextAttribute
+ {
+ // line, shadow, lineStartEnd and text attributes
+ SdrLineAttribute maLine; // line attributes (if used)
+ SdrLineStartEndAttribute maLineStartEnd; // line start end (if used)
+
+ public:
+ SdrLineEffectsTextAttribute(
+ SdrLineAttribute aLine,
+ SdrLineStartEndAttribute aLineStartEnd,
+ const SdrShadowAttribute& rShadow,
+ const SdrTextAttribute& rTextAttribute,
+ const SdrGlowAttribute& rGlow,
+ sal_Int32 nSoftEdgeRadius);
+ SdrLineEffectsTextAttribute();
+ SdrLineEffectsTextAttribute(const SdrLineEffectsTextAttribute& rCandidate);
+ SdrLineEffectsTextAttribute& operator=(const SdrLineEffectsTextAttribute& rCandidate);
+
+ // checks if the incarnation is default constructed
+ bool isDefault() const;
+
+ // compare operator
+ bool operator==(const SdrLineEffectsTextAttribute& rCandidate) const;
+
+ // data access
+ const SdrLineAttribute& getLine() const { return maLine; }
+ const SdrLineStartEndAttribute& getLineStartEnd() const { return maLineStartEnd; }
+ };
+
+} // end of namespace drawinglayer::attribute
+
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/svx/inc/sdr/attribute/sdrlinefilleffectstextattribute.hxx b/svx/inc/sdr/attribute/sdrlinefilleffectstextattribute.hxx
new file mode 100644
index 0000000000..0adb1e49ff
--- /dev/null
+++ b/svx/inc/sdr/attribute/sdrlinefilleffectstextattribute.hxx
@@ -0,0 +1,63 @@
+/* -*- 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 <sdr/attribute/sdrlineeffectstextattribute.hxx>
+#include <drawinglayer/attribute/sdrfillattribute.hxx>
+#include <drawinglayer/attribute/fillgradientattribute.hxx>
+
+
+namespace drawinglayer::attribute
+ {
+ class SdrLineFillEffectsTextAttribute : public SdrLineEffectsTextAttribute
+ {
+ // add fill and transGradient attributes
+ SdrFillAttribute maFill; // fill attributes (if used)
+ FillGradientAttribute maFillFloatTransGradient; // fill float transparence gradient (if used)
+
+ public:
+ SdrLineFillEffectsTextAttribute(
+ const SdrLineAttribute& rLine,
+ SdrFillAttribute aFill,
+ const SdrLineStartEndAttribute& rLineStartEnd,
+ const SdrShadowAttribute& rShadow,
+ FillGradientAttribute aFillFloatTransGradient,
+ const SdrTextAttribute& rTextAttribute,
+ const SdrGlowAttribute& rGlow,
+ sal_Int32 nSoftEdgeRadius);
+ SdrLineFillEffectsTextAttribute();
+ SdrLineFillEffectsTextAttribute(const SdrLineFillEffectsTextAttribute& rCandidate);
+ SdrLineFillEffectsTextAttribute& operator=(const SdrLineFillEffectsTextAttribute& rCandidate);
+
+ // checks if the incarnation is default constructed
+ bool isDefault() const;
+
+ // compare operator
+ bool operator==(const SdrLineFillEffectsTextAttribute& rCandidate) const;
+
+ // data access
+ const SdrFillAttribute& getFill() const { return maFill; }
+ const FillGradientAttribute& getFillFloatTransGradient() const { return maFillFloatTransGradient; }
+ };
+
+} // end of namespace drawinglayer::attribute
+
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/svx/inc/sdr/attribute/sdrtextattribute.hxx b/svx/inc/sdr/attribute/sdrtextattribute.hxx
new file mode 100644
index 0000000000..19b52d6112
--- /dev/null
+++ b/svx/inc/sdr/attribute/sdrtextattribute.hxx
@@ -0,0 +1,116 @@
+/* -*- 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 <sal/types.h>
+#include <svx/xenum.hxx>
+#include <editeng/outlobj.hxx>
+#include <svx/sdtaitm.hxx>
+#include <o3tl/cow_wrapper.hxx>
+
+// predefines
+
+class SdrText;
+namespace drawinglayer::animation { class AnimationEntryList; }
+namespace drawinglayer::attribute { class SdrFormTextAttribute; }
+namespace drawinglayer::attribute { class ImpSdrTextAttribute; }
+
+
+namespace drawinglayer::attribute
+ {
+ class SdrTextAttribute
+ {
+ public:
+ typedef o3tl::cow_wrapper< ImpSdrTextAttribute > ImplType;
+
+ private:
+ ImplType mpSdrTextAttribute;
+
+ public:
+ /// constructors/assignmentoperator/destructor
+ SdrTextAttribute(
+ const SdrText& rSdrText,
+ const OutlinerParaObject& rOutlinerParaObject,
+ XFormTextStyle eFormTextStyle,
+ sal_Int32 aTextLeftDistance,
+ sal_Int32 aTextUpperDistance,
+ sal_Int32 aTextRightDistance,
+ sal_Int32 aTextLowerDistance,
+ SdrTextHorzAdjust aSdrTextHorzAdjust,
+ SdrTextVertAdjust aSdrTextVertAdjust,
+ bool bContour,
+ bool bFitToSize,
+ bool bAutoFit,
+ bool bHideContour,
+ bool bBlink,
+ bool bScroll,
+ bool bInEditMode,
+ bool bFixedCellHeight,
+ bool bWrongSpell,
+ bool bChainable);
+
+ SdrTextAttribute();
+ SdrTextAttribute(const SdrTextAttribute& rCandidate);
+ SdrTextAttribute(SdrTextAttribute&& rCandidate) noexcept;
+ SdrTextAttribute& operator=(const SdrTextAttribute& rCandidate);
+ SdrTextAttribute& operator=(SdrTextAttribute&& rCandidate) noexcept;
+ ~SdrTextAttribute();
+
+ // checks if the incarnation is default constructed
+ bool isDefault() const;
+
+ // compare operator
+ bool operator==(const SdrTextAttribute& rCandidate) const;
+
+ // data read access
+ const SdrText& getSdrText() const;
+ const OutlinerParaObject& getOutlinerParaObject() const;
+ bool isContour() const;
+ bool isFitToSize() const;
+ bool isAutoFit() const;
+ bool isHideContour() const;
+ bool isBlink() const;
+ bool isScroll() const;
+ bool isInEditMode() const;
+ bool isFixedCellHeight() const;
+ const SdrFormTextAttribute& getSdrFormTextAttribute() const;
+ sal_Int32 getTextLeftDistance() const;
+ sal_Int32 getTextUpperDistance() const;
+ sal_Int32 getTextRightDistance() const;
+ sal_Int32 getTextLowerDistance() const;
+ SdrTextHorzAdjust getSdrTextHorzAdjust() const;
+ SdrTextVertAdjust getSdrTextVertAdjust() const;
+
+ bool isChainable() const;
+
+
+ // helpers: animation timing generators
+ void getBlinkTextTiming(
+ drawinglayer::animation::AnimationEntryList& rAnimList) const;
+ void getScrollTextTiming(
+ drawinglayer::animation::AnimationEntryList& rAnimList,
+ double fFrameLength,
+ double fTextLength) const;
+ };
+
+} // end of namespace drawinglayer::attribute
+
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/svx/inc/sdr/contact/objectcontactofobjlistpainter.hxx b/svx/inc/sdr/contact/objectcontactofobjlistpainter.hxx
new file mode 100644
index 0000000000..c977e04a9f
--- /dev/null
+++ b/svx/inc/sdr/contact/objectcontactofobjlistpainter.hxx
@@ -0,0 +1,115 @@
+/* -*- 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 <config_options.h>
+#include <svx/sdr/contact/objectcontact.hxx>
+#include <svx/svxdllapi.h>
+#include <svx/svdpage.hxx>
+#include <unotools/weakref.hxx>
+
+class SdrPage;
+class SdrObject;
+
+namespace sdr::contact {
+
+class UNLESS_MERGELIBS(SVXCORE_DLLPUBLIC) ObjectContactPainter : public ObjectContact
+{
+protected:
+ // Hierarchy access methods
+ virtual sal_uInt32 GetPaintObjectCount() const = 0;
+ virtual ViewContact& GetPaintObjectViewContact(sal_uInt32 nIndex) = 0;
+
+public:
+ // basic constructor/destructor
+ ObjectContactPainter();
+ virtual ~ObjectContactPainter() override;
+};
+
+// typedef for transferring SdrObject
+typedef ::std::vector< SdrObject* > SdrObjectVector;
+
+class SVXCORE_DLLPUBLIC ObjectContactOfObjListPainter final : public ObjectContactPainter
+{
+ // Target OutputDevice
+ OutputDevice& mrTargetOutputDevice;
+
+ // Set StartPoint for next run, also given in constructor
+ SdrObjectVector maStartObjects;
+
+ // the processed page which is the base e.g. for PageNumberFields
+ const SdrPage* mpProcessedPage;
+
+ // Hierarchy access methods
+ virtual sal_uInt32 GetPaintObjectCount() const override;
+ virtual ViewContact& GetPaintObjectViewContact(sal_uInt32 nIndex) override;
+
+public:
+ // basic constructor/destructor
+ ObjectContactOfObjListPainter(
+ OutputDevice& rTargetDevice,
+ SdrObjectVector&& rObjects,
+ const SdrPage* pProcessedPage);
+ virtual ~ObjectContactOfObjListPainter() override;
+
+ // Process the whole displaying
+ virtual void ProcessDisplay(DisplayInfo& rDisplayInfo) override;
+
+ // recording MetaFile? Default is false
+ virtual bool isOutputToRecordingMetaFile() const override;
+
+ // pdf export? Default is false
+ virtual bool isOutputToPDFFile() const override;
+ virtual bool isExportTaggedPDF() const override;
+ virtual ::vcl::PDFExtOutDevData const* GetPDFExtOutDevData() const override;
+
+ virtual OutputDevice* TryToGetOutputDevice() const override;
+};
+
+class ObjectContactOfPagePainter : public ObjectContactPainter
+{
+ // the original ObjectContact this painter is working on
+ ObjectContact& mrOriginalObjectContact;
+
+ // Set StartPoint for next run, also given in constructor
+ unotools::WeakReference<SdrPage> mxStartPage;
+
+protected:
+ // Hierarchy access methods
+ virtual sal_uInt32 GetPaintObjectCount() const override;
+ virtual ViewContact& GetPaintObjectViewContact(sal_uInt32 nIndex) override;
+
+public:
+ // basic constructor
+ ObjectContactOfPagePainter(ObjectContact& rOriginalObjectContact);
+ virtual ~ObjectContactOfPagePainter() override;
+
+ // set another page
+ void SetStartPage(const SdrPage* pPage);
+ const SdrPage* GetStartPage() const { return mxStartPage.get().get(); }
+ SdrPage* GetStartPage() { return mxStartPage.get().get(); }
+
+ virtual OutputDevice* TryToGetOutputDevice() const override;
+};
+
+}
+
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/svx/inc/sdr/contact/viewcontactofe3d.hxx b/svx/inc/sdr/contact/viewcontactofe3d.hxx
new file mode 100644
index 0000000000..75e88adb99
--- /dev/null
+++ b/svx/inc/sdr/contact/viewcontactofe3d.hxx
@@ -0,0 +1,94 @@
+/* -*- 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 <svx/obj3d.hxx>
+#include <svx/sdr/contact/viewcontactofsdrobj.hxx>
+#include <drawinglayer/primitive3d/baseprimitive3d.hxx>
+
+namespace drawinglayer::attribute
+{
+class SdrLineAttribute;
+}
+namespace basegfx
+{
+class BColor;
+class B3DHomMatrix;
+}
+
+namespace sdr::contact
+{
+class ViewContactOfE3dScene;
+
+class ViewContactOfE3d : public ViewContactOfSdrObj
+{
+protected:
+ // Create an Object-Specific ViewObjectContact, set ViewContact and
+ // ObjectContact. Always needs to return something.
+ virtual ViewObjectContact&
+ CreateObjectSpecificViewObjectContact(ObjectContact& rObjectContact) override;
+
+public:
+ // basic constructor, used from E3dObject.
+ explicit ViewContactOfE3d(E3dObject& rObj);
+ virtual ~ViewContactOfE3d() override;
+
+ // access to E3dObject
+ const E3dObject& GetE3dObject() const { return static_cast<const E3dObject&>(GetSdrObject()); }
+
+ // public helpers
+ drawinglayer::primitive2d::Primitive2DContainer impCreateWithGivenPrimitive3DContainer(
+ const drawinglayer::primitive3d::Primitive3DContainer& rxContent3D) const;
+
+ // primitive stuff
+
+protected:
+ // This method is responsible for creating the graphical visualisation data which is
+ // stored in mxViewIndependentPrimitive3DContainer, but without object transformation
+ virtual drawinglayer::primitive3d::Primitive3DContainer
+ createViewIndependentPrimitive3DContainer() const = 0;
+
+ // This method is responsible for creating the graphical visualisation data derived ONLY from
+ // the model data. The default implementation will try to create a 3D to 2D embedding (will work
+ // when scene is known) which can then be used for 2D processing concerning ranges
+ virtual void createViewIndependentPrimitive2DSequence(
+ drawinglayer::primitive2d::Primitive2DDecompositionVisitor& rVisitor) const override;
+
+public:
+ // access to the local primitive without the object's local 3D transform. This is e.g. needed
+ // to get the not-yet transformed BoundVolume for e.g. interactions
+ drawinglayer::primitive3d::Primitive3DContainer const& getVIP3DSWithoutObjectTransform() const;
+
+ // access to the local primitive. This will ensure that the list is
+ // current in comparing the local list content with a fresh created incarnation. It will
+ // use getVIP3DSWithoutObjectTransform and embed to 3d transform primitive when object's
+ // local 3d transform is used
+ drawinglayer::primitive3d::Primitive3DContainer getViewIndependentPrimitive3DContainer() const;
+
+private:
+ // Primitive3DContainer of the ViewContact. This contains all necessary information
+ // for the graphical visualisation and needs to be supported by all 3D VCs which
+ // can be visualized. It does NOT contain the object transformation to be able to
+ // buffer for all possible usages
+ drawinglayer::primitive3d::Primitive3DContainer mxViewIndependentPrimitive3DContainer;
+};
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/svx/inc/sdr/contact/viewcontactofe3dcube.hxx b/svx/inc/sdr/contact/viewcontactofe3dcube.hxx
new file mode 100644
index 0000000000..5f9a6e4a1d
--- /dev/null
+++ b/svx/inc/sdr/contact/viewcontactofe3dcube.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_INC_SDR_CONTACT_VIEWCONTACTOFE3DCUBE_HXX
+#define INCLUDED_SVX_INC_SDR_CONTACT_VIEWCONTACTOFE3DCUBE_HXX
+
+#include <sdr/contact/viewcontactofe3d.hxx>
+#include <svx/cube3d.hxx>
+
+namespace sdr::contact
+ {
+ class ViewContactOfE3dCube final : public ViewContactOfE3d
+ {
+ public:
+ // basic constructor, used from SdrObject.
+ ViewContactOfE3dCube(E3dCubeObj& rCubeObj);
+ virtual ~ViewContactOfE3dCube() override;
+
+ // access to SdrObject
+ const E3dCubeObj& GetE3dCubeObj() const
+ {
+ return static_cast<const E3dCubeObj&>(GetE3dObject());
+ }
+
+ private:
+ // This method is responsible for creating the graphical visualisation data which is
+ // stored in the local primitive list. Default creates a yellow replacement rectangle.
+ virtual drawinglayer::primitive3d::Primitive3DContainer createViewIndependentPrimitive3DContainer() const override;
+ };
+
+} // end of namespace sdr::contact
+
+
+#endif // INCLUDED_SVX_INC_SDR_CONTACT_VIEWCONTACTOFE3DCUBE_HXX
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/svx/inc/sdr/contact/viewcontactofe3dextrude.hxx b/svx/inc/sdr/contact/viewcontactofe3dextrude.hxx
new file mode 100644
index 0000000000..c31accc2d5
--- /dev/null
+++ b/svx/inc/sdr/contact/viewcontactofe3dextrude.hxx
@@ -0,0 +1,53 @@
+/* -*- 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_INC_SDR_CONTACT_VIEWCONTACTOFE3DEXTRUDE_HXX
+#define INCLUDED_SVX_INC_SDR_CONTACT_VIEWCONTACTOFE3DEXTRUDE_HXX
+
+#include <sdr/contact/viewcontactofe3d.hxx>
+#include <extrud3d.hxx>
+
+
+namespace sdr::contact
+ {
+ class ViewContactOfE3dExtrude final : public ViewContactOfE3d
+ {
+ public:
+ // basic constructor, used from SdrObject.
+ explicit ViewContactOfE3dExtrude(E3dExtrudeObj& rExtrude);
+ virtual ~ViewContactOfE3dExtrude() override;
+
+ // access to SdrObject
+ const E3dExtrudeObj& GetE3dExtrudeObj() const
+ {
+ return static_cast<const E3dExtrudeObj&>(GetE3dObject());
+ }
+
+ private:
+ // This method is responsible for creating the graphical visualisation data which is
+ // stored in the local primitive list. Default creates a yellow replacement rectangle.
+ virtual drawinglayer::primitive3d::Primitive3DContainer createViewIndependentPrimitive3DContainer() const override;
+ };
+
+} // end of namespace sdr::contact
+
+
+#endif // INCLUDED_SVX_INC_SDR_CONTACT_VIEWCONTACTOFE3DEXTRUDE_HXX
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/svx/inc/sdr/contact/viewcontactofe3dlathe.hxx b/svx/inc/sdr/contact/viewcontactofe3dlathe.hxx
new file mode 100644
index 0000000000..d90b33dae3
--- /dev/null
+++ b/svx/inc/sdr/contact/viewcontactofe3dlathe.hxx
@@ -0,0 +1,53 @@
+/* -*- 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_INC_SDR_CONTACT_VIEWCONTACTOFE3DLATHE_HXX
+#define INCLUDED_SVX_INC_SDR_CONTACT_VIEWCONTACTOFE3DLATHE_HXX
+
+#include <sdr/contact/viewcontactofe3d.hxx>
+#include <svx/lathe3d.hxx>
+
+
+namespace sdr::contact
+ {
+ class ViewContactOfE3dLathe final : public ViewContactOfE3d
+ {
+ public:
+ // basic constructor, used from SdrObject.
+ explicit ViewContactOfE3dLathe(E3dLatheObj& rLathe);
+ virtual ~ViewContactOfE3dLathe() override;
+
+ // access to SdrObject
+ const E3dLatheObj& GetE3dLatheObj() const
+ {
+ return static_cast<const E3dLatheObj&>(GetE3dObject());
+ }
+
+ private:
+ // This method is responsible for creating the graphical visualisation data which is
+ // stored in the local primitive list. Default creates a yellow replacement rectangle.
+ virtual drawinglayer::primitive3d::Primitive3DContainer createViewIndependentPrimitive3DContainer() const override;
+ };
+
+} // end of namespace sdr::contact
+
+
+#endif // INCLUDED_SVX_INC_SDR_CONTACT_VIEWCONTACTOFE3DLATHE_HXX
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/svx/inc/sdr/contact/viewcontactofe3dpolygon.hxx b/svx/inc/sdr/contact/viewcontactofe3dpolygon.hxx
new file mode 100644
index 0000000000..bc907451c3
--- /dev/null
+++ b/svx/inc/sdr/contact/viewcontactofe3dpolygon.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_INC_SDR_CONTACT_VIEWCONTACTOFE3DPOLYGON_HXX
+#define INCLUDED_SVX_INC_SDR_CONTACT_VIEWCONTACTOFE3DPOLYGON_HXX
+
+#include <sdr/contact/viewcontactofe3d.hxx>
+#include <polygn3d.hxx>
+
+namespace sdr::contact
+ {
+ class ViewContactOfE3dPolygon final : public ViewContactOfE3d
+ {
+ public:
+ // basic constructor, used from SdrObject.
+ explicit ViewContactOfE3dPolygon(E3dPolygonObj& rPolygon);
+ virtual ~ViewContactOfE3dPolygon() override;
+
+ // access to SdrObject
+ const E3dPolygonObj& GetE3dPolygonObj() const
+ {
+ return static_cast<const E3dPolygonObj&>(GetE3dObject());
+ }
+
+ // This method is responsible for creating the graphical visualisation data which is
+ // stored in the local primitive list. Default creates a yellow replacement rectangle.
+ virtual drawinglayer::primitive3d::Primitive3DContainer createViewIndependentPrimitive3DContainer() const override;
+ };
+
+} // end of namespace sdr::contact
+
+
+#endif // INCLUDED_SVX_INC_SDR_CONTACT_VIEWCONTACTOFE3DPOLYGON_HXX
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/svx/inc/sdr/contact/viewcontactofe3dsphere.hxx b/svx/inc/sdr/contact/viewcontactofe3dsphere.hxx
new file mode 100644
index 0000000000..3bd58dcce9
--- /dev/null
+++ b/svx/inc/sdr/contact/viewcontactofe3dsphere.hxx
@@ -0,0 +1,53 @@
+/* -*- 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_INC_SDR_CONTACT_VIEWCONTACTOFE3DSPHERE_HXX
+#define INCLUDED_SVX_INC_SDR_CONTACT_VIEWCONTACTOFE3DSPHERE_HXX
+
+#include <sdr/contact/viewcontactofe3d.hxx>
+#include <svx/sphere3d.hxx>
+
+
+namespace sdr::contact
+ {
+ class ViewContactOfE3dSphere final : public ViewContactOfE3d
+ {
+ public:
+ // basic constructor, used from SdrObject.
+ explicit ViewContactOfE3dSphere(E3dSphereObj& rSphere);
+ virtual ~ViewContactOfE3dSphere() override;
+
+ // access to SdrObject
+ const E3dSphereObj& GetE3dSphereObj() const
+ {
+ return static_cast<const E3dSphereObj&>(GetE3dObject());
+ }
+
+ private:
+ // This method is responsible for creating the graphical visualisation data which is
+ // stored in the local primitive list. Default creates a yellow replacement rectangle.
+ virtual drawinglayer::primitive3d::Primitive3DContainer createViewIndependentPrimitive3DContainer() const override;
+ };
+
+} // end of namespace sdr::contact
+
+
+#endif // INCLUDED_SVX_INC_SDR_CONTACT_VIEWCONTACTOFE3DSPHERE_HXX
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/svx/inc/sdr/contact/viewcontactofgraphic.hxx b/svx/inc/sdr/contact/viewcontactofgraphic.hxx
new file mode 100644
index 0000000000..bf3ecabcd3
--- /dev/null
+++ b/svx/inc/sdr/contact/viewcontactofgraphic.hxx
@@ -0,0 +1,74 @@
+/* -*- 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_INC_SDR_CONTACT_VIEWCONTACTOFGRAPHIC_HXX
+#define INCLUDED_SVX_INC_SDR_CONTACT_VIEWCONTACTOFGRAPHIC_HXX
+
+#include <sdr/contact/viewcontactoftextobj.hxx>
+#include <svx/svdograf.hxx>
+
+namespace drawinglayer::attribute { class SdrLineFillEffectsTextAttribute; }
+class GraphicAttr;
+
+namespace sdr::contact
+ {
+ class ViewContactOfGraphic final : public ViewContactOfTextObj
+ {
+ private:
+ // helpers for constructing various primitive visualisations in various states
+ drawinglayer::primitive2d::Primitive2DContainer createVIP2DSForPresObj(
+ const basegfx::B2DHomMatrix& rObjectMatrix,
+ const drawinglayer::attribute::SdrLineFillEffectsTextAttribute& rAttribute) const;
+ drawinglayer::primitive2d::Primitive2DContainer createVIP2DSForDraft(
+ const basegfx::B2DHomMatrix& rObjectMatrix,
+ const drawinglayer::attribute::SdrLineFillEffectsTextAttribute& rAttribute) const;
+
+ // Create an Object-Specific ViewObjectContact, set ViewContact and
+ // ObjectContact. Always needs to return something.
+ virtual ViewObjectContact& CreateObjectSpecificViewObjectContact(ObjectContact& rObjectContact) override;
+
+ public:
+ // access to SdrObject
+ const SdrGrafObj& GetGrafObject() const
+ {
+ return static_cast<const SdrGrafObj&>(GetSdrObject());
+ }
+ SdrGrafObj& GetGrafObject()
+ {
+ return static_cast<SdrGrafObj&>(GetSdrObject());
+ }
+
+ // basic constructor, destructor
+ explicit ViewContactOfGraphic(SdrGrafObj& rGrafObj);
+ virtual ~ViewContactOfGraphic() override;
+
+ // helpers for visualisation state
+ bool visualisationUsesPresObj() const;
+ bool visualisationUsesDraft() const;
+
+ private:
+ // This method is responsible for creating the graphical visualisation data
+ // ONLY based on model data
+ virtual void createViewIndependentPrimitive2DSequence(drawinglayer::primitive2d::Primitive2DDecompositionVisitor& rVisitor) const override;
+ };
+} // end of namespace sdr::contact
+
+#endif // INCLUDED_SVX_INC_SDR_CONTACT_VIEWCONTACTOFGRAPHIC_HXX
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/svx/inc/sdr/contact/viewcontactofgroup.hxx b/svx/inc/sdr/contact/viewcontactofgroup.hxx
new file mode 100644
index 0000000000..de1b4aa7fc
--- /dev/null
+++ b/svx/inc/sdr/contact/viewcontactofgroup.hxx
@@ -0,0 +1,57 @@
+/* -*- 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_INC_SDR_CONTACT_VIEWCONTACTOFGROUP_HXX
+#define INCLUDED_SVX_INC_SDR_CONTACT_VIEWCONTACTOFGROUP_HXX
+
+#include <svx/sdr/contact/viewcontactofsdrobj.hxx>
+#include <svx/svdogrp.hxx>
+
+
+namespace sdr::contact
+ {
+ class ViewContactOfGroup final : public ViewContactOfSdrObj
+ {
+ public:
+ // basic constructor, used from SdrObject.
+ explicit ViewContactOfGroup(SdrObjGroup& rGroup);
+ virtual ~ViewContactOfGroup() override;
+
+ private:
+ // Create an Object-Specific ViewObjectContact, set ViewContact and
+ // ObjectContact. Always needs to return something. Default is to create
+ // a standard ViewObjectContact containing the given ObjectContact and *this
+ virtual ViewObjectContact& CreateObjectSpecificViewObjectContact(ObjectContact& rObjectContact) override;
+
+ // internal access to SdrObject
+ const SdrObjGroup& GetSdrObjGroup() const
+ {
+ return static_cast<const SdrObjGroup&>(GetSdrObject());
+ }
+
+ // This method is responsible for creating the graphical visualisation data
+ // ONLY based on model data
+ virtual void createViewIndependentPrimitive2DSequence(drawinglayer::primitive2d::Primitive2DDecompositionVisitor& rVisitor) const override;
+ };
+} // end of namespace sdr::contact
+
+
+#endif // INCLUDED_SVX_INC_SDR_CONTACT_VIEWCONTACTOFGROUP_HXX
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/svx/inc/sdr/contact/viewcontactofmasterpagedescriptor.hxx b/svx/inc/sdr/contact/viewcontactofmasterpagedescriptor.hxx
new file mode 100644
index 0000000000..9d6f86f09e
--- /dev/null
+++ b/svx/inc/sdr/contact/viewcontactofmasterpagedescriptor.hxx
@@ -0,0 +1,68 @@
+/* -*- 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_INC_SDR_CONTACT_VIEWCONTACTOFMASTERPAGEDESCRIPTOR_HXX
+#define INCLUDED_SVX_INC_SDR_CONTACT_VIEWCONTACTOFMASTERPAGEDESCRIPTOR_HXX
+
+#include <sal/types.h>
+#include <svx/sdr/contact/viewcontact.hxx>
+#include <svx/sdrmasterpagedescriptor.hxx>
+
+class SfxItemSet;
+class Bitmap;
+class MapMode;
+
+namespace sdr::contact
+ {
+ class ViewContactOfMasterPageDescriptor final : public ViewContact
+ {
+ // the owner of this ViewContact. Set from constructor and not
+ // to be changed in any way.
+ sdr::MasterPageDescriptor& mrMasterPageDescriptor;
+
+ // Create an Object-Specific ViewObjectContact
+ virtual ViewObjectContact& CreateObjectSpecificViewObjectContact(ObjectContact& rObjectContact) override;
+
+ // This method is responsible for creating the graphical visualisation data
+ virtual void createViewIndependentPrimitive2DSequence(drawinglayer::primitive2d::Primitive2DDecompositionVisitor& rVisitor) const override;
+
+ public:
+ // basic constructor
+ explicit ViewContactOfMasterPageDescriptor(sdr::MasterPageDescriptor& rDescriptor);
+
+ // The destructor.
+ virtual ~ViewContactOfMasterPageDescriptor() override;
+
+ // access to MasterPageDescriptor
+ sdr::MasterPageDescriptor& GetMasterPageDescriptor() const
+ {
+ return mrMasterPageDescriptor;
+ }
+
+ // Access to possible sub-hierarchy and parent
+ virtual sal_uInt32 GetObjectCount() const override;
+ virtual ViewContact& GetViewContact(sal_uInt32 nIndex) const override;
+ virtual ViewContact* GetParentContact() const override;
+ };
+
+} // end of namespace sdr::contact
+
+#endif // INCLUDED_SVX_INC_SDR_CONTACT_VIEWCONTACTOFMASTERPAGEDESCRIPTOR_HXX
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/svx/inc/sdr/contact/viewcontactofpageobj.hxx b/svx/inc/sdr/contact/viewcontactofpageobj.hxx
new file mode 100644
index 0000000000..672d420426
--- /dev/null
+++ b/svx/inc/sdr/contact/viewcontactofpageobj.hxx
@@ -0,0 +1,53 @@
+/* -*- 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 <svx/sdr/contact/viewcontactofsdrobj.hxx>
+#include <svx/svdopage.hxx>
+
+class SdrPage;
+
+namespace sdr::contact
+{
+class ViewContactOfPageObj final : public ViewContactOfSdrObj
+{
+ // Create an Object-Specific ViewObjectContact, set ViewContact and
+ // ObjectContact. Always needs to return something.
+ virtual ViewObjectContact&
+ CreateObjectSpecificViewObjectContact(ObjectContact& rObjectContact) override;
+
+ // create graphical visualisation data
+ virtual void createViewIndependentPrimitive2DSequence(
+ drawinglayer::primitive2d::Primitive2DDecompositionVisitor& rVisitor) const override;
+
+public:
+ // basic constructor, used from SdrObject.
+ explicit ViewContactOfPageObj(SdrPageObj& rPageObj);
+ virtual ~ViewContactOfPageObj() override;
+
+ // #WIP# React on changes of the object of this ViewContact
+ virtual void ActionChanged() override;
+
+ // access to SdrObject
+ const SdrPageObj& GetPageObj() const { return static_cast<const SdrPageObj&>(GetSdrObject()); }
+};
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/svx/inc/sdr/contact/viewcontactofsdrcaptionobj.hxx b/svx/inc/sdr/contact/viewcontactofsdrcaptionobj.hxx
new file mode 100644
index 0000000000..d39758be36
--- /dev/null
+++ b/svx/inc/sdr/contact/viewcontactofsdrcaptionobj.hxx
@@ -0,0 +1,46 @@
+/* -*- 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_INC_SDR_CONTACT_VIEWCONTACTOFSDRCAPTIONOBJ_HXX
+#define INCLUDED_SVX_INC_SDR_CONTACT_VIEWCONTACTOFSDRCAPTIONOBJ_HXX
+
+#include <sdr/contact/viewcontactofsdrrectobj.hxx>
+#include <svx/svdocapt.hxx>
+
+
+namespace sdr::contact
+ {
+ class ViewContactOfSdrCaptionObj final : public ViewContactOfSdrRectObj
+ {
+ public:
+ // basic constructor, used from SdrObject.
+ explicit ViewContactOfSdrCaptionObj(SdrCaptionObj& rCaptionObj);
+ virtual ~ViewContactOfSdrCaptionObj() override;
+
+ private:
+ // This method is responsible for creating the graphical visualisation data
+ // ONLY based on model data
+ virtual void createViewIndependentPrimitive2DSequence(drawinglayer::primitive2d::Primitive2DDecompositionVisitor& rVisitor) const override;
+ };
+} // end of namespace sdr::contact
+
+
+#endif // INCLUDED_SVX_INC_SDR_CONTACT_VIEWCONTACTOFSDRCAPTIONOBJ_HXX
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/svx/inc/sdr/contact/viewcontactofsdrcircobj.hxx b/svx/inc/sdr/contact/viewcontactofsdrcircobj.hxx
new file mode 100644
index 0000000000..281cad9564
--- /dev/null
+++ b/svx/inc/sdr/contact/viewcontactofsdrcircobj.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_INC_SDR_CONTACT_VIEWCONTACTOFSDRCIRCOBJ_HXX
+#define INCLUDED_SVX_INC_SDR_CONTACT_VIEWCONTACTOFSDRCIRCOBJ_HXX
+
+#include <sdr/contact/viewcontactofsdrrectobj.hxx>
+#include <svx/svdocirc.hxx>
+
+
+namespace sdr::contact
+ {
+ class ViewContactOfSdrCircObj final : public ViewContactOfSdrRectObj
+ {
+ public:
+ // basic constructor, used from SdrObject.
+ explicit ViewContactOfSdrCircObj(SdrCircObj& rCircObj);
+ virtual ~ViewContactOfSdrCircObj() override;
+
+ private:
+ // internal access to SdrCircObj
+ const SdrCircObj& GetCircObj() const
+ {
+ return static_cast<const SdrCircObj&>(GetSdrObject());
+ }
+
+ // This method is responsible for creating the graphical visualisation data
+ // ONLY based on model data
+ virtual void createViewIndependentPrimitive2DSequence(drawinglayer::primitive2d::Primitive2DDecompositionVisitor& rVisitor) const override;
+ };
+} // end of namespace sdr::contact
+
+
+#endif // INCLUDED_SVX_INC_SDR_CONTACT_VIEWCONTACTOFSDRCIRCOBJ_HXX
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/svx/inc/sdr/contact/viewcontactofsdredgeobj.hxx b/svx/inc/sdr/contact/viewcontactofsdredgeobj.hxx
new file mode 100644
index 0000000000..24ed402852
--- /dev/null
+++ b/svx/inc/sdr/contact/viewcontactofsdredgeobj.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_INC_SDR_CONTACT_VIEWCONTACTOFSDREDGEOBJ_HXX
+#define INCLUDED_SVX_INC_SDR_CONTACT_VIEWCONTACTOFSDREDGEOBJ_HXX
+
+#include <sdr/contact/viewcontactoftextobj.hxx>
+#include <svx/svdoedge.hxx>
+
+
+namespace sdr::contact
+ {
+ class ViewContactOfSdrEdgeObj final : public ViewContactOfTextObj
+ {
+ public:
+ // basic constructor, used from SdrObject.
+ explicit ViewContactOfSdrEdgeObj(SdrEdgeObj& rEdgeObj);
+ virtual ~ViewContactOfSdrEdgeObj() override;
+
+ private:
+ // internal access to SdrEdgeObj
+ const SdrEdgeObj& GetEdgeObj() const
+ {
+ return static_cast<const SdrEdgeObj&>(GetSdrObject());
+ }
+
+ // This method is responsible for creating the graphical visualisation data
+ // ONLY based on model data
+ virtual void createViewIndependentPrimitive2DSequence(drawinglayer::primitive2d::Primitive2DDecompositionVisitor& rVisitor) const override;
+ };
+} // end of namespace sdr::contact
+
+
+#endif // INCLUDED_SVX_INC_SDR_CONTACT_VIEWCONTACTOFSDREDGEOBJ_HXX
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/svx/inc/sdr/contact/viewcontactofsdrmeasureobj.hxx b/svx/inc/sdr/contact/viewcontactofsdrmeasureobj.hxx
new file mode 100644
index 0000000000..6b4d893234
--- /dev/null
+++ b/svx/inc/sdr/contact/viewcontactofsdrmeasureobj.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_INC_SDR_CONTACT_VIEWCONTACTOFSDRMEASUREOBJ_HXX
+#define INCLUDED_SVX_INC_SDR_CONTACT_VIEWCONTACTOFSDRMEASUREOBJ_HXX
+
+#include <sdr/contact/viewcontactoftextobj.hxx>
+#include <svx/svdomeas.hxx>
+
+
+namespace sdr::contact
+ {
+ class ViewContactOfSdrMeasureObj final : public ViewContactOfTextObj
+ {
+ public:
+ // basic constructor, used from SdrObject.
+ explicit ViewContactOfSdrMeasureObj(SdrMeasureObj& rMeasureObj);
+ virtual ~ViewContactOfSdrMeasureObj() override;
+
+ private:
+ // internal access to SdrMeasureObj
+ const SdrMeasureObj& GetMeasureObj() const
+ {
+ return static_cast<const SdrMeasureObj&>(GetSdrObject());
+ }
+
+ // This method is responsible for creating the graphical visualisation data
+ // ONLY based on model data
+ virtual void createViewIndependentPrimitive2DSequence(drawinglayer::primitive2d::Primitive2DDecompositionVisitor& rVisitor) const override;
+ };
+} // end of namespace sdr::contact
+
+
+#endif // INCLUDED_SVX_INC_SDR_CONTACT_VIEWCONTACTOFSDRMEASUREOBJ_HXX
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/svx/inc/sdr/contact/viewcontactofsdrobjcustomshape.hxx b/svx/inc/sdr/contact/viewcontactofsdrobjcustomshape.hxx
new file mode 100644
index 0000000000..6bdcbb5dfb
--- /dev/null
+++ b/svx/inc/sdr/contact/viewcontactofsdrobjcustomshape.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_INC_SDR_CONTACT_VIEWCONTACTOFSDROBJCUSTOMSHAPE_HXX
+#define INCLUDED_SVX_INC_SDR_CONTACT_VIEWCONTACTOFSDROBJCUSTOMSHAPE_HXX
+
+#include <sdr/contact/viewcontactoftextobj.hxx>
+#include <svx/svdoashp.hxx>
+
+
+namespace sdr::contact
+ {
+ class ViewContactOfSdrObjCustomShape final : public ViewContactOfTextObj
+ {
+ public:
+ // basic constructor, used from SdrObject.
+ explicit ViewContactOfSdrObjCustomShape(SdrObjCustomShape& rCustomShape);
+ virtual ~ViewContactOfSdrObjCustomShape() override;
+
+ private:
+ // internal access to SdrObjCustomShape
+ const SdrObjCustomShape& GetCustomShapeObj() const
+ {
+ return static_cast<const SdrObjCustomShape&>(GetSdrObject());
+ }
+
+ // #i101684# internal tooling
+ basegfx::B2DRange getCorrectedTextBoundRect() const;
+
+ // This method is responsible for creating the graphical visualisation data
+ // ONLY based on model data
+ virtual void createViewIndependentPrimitive2DSequence(drawinglayer::primitive2d::Primitive2DDecompositionVisitor& rVisitor) const override;
+ };
+} // end of namespace sdr::contact
+
+
+#endif // INCLUDED_SVX_INC_SDR_CONTACT_VIEWCONTACTOFSDROBJCUSTOMSHAPE_HXX
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/svx/inc/sdr/contact/viewcontactofsdrole2obj.hxx b/svx/inc/sdr/contact/viewcontactofsdrole2obj.hxx
new file mode 100644
index 0000000000..d5ca82fbcd
--- /dev/null
+++ b/svx/inc/sdr/contact/viewcontactofsdrole2obj.hxx
@@ -0,0 +1,70 @@
+/* -*- 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_INC_SDR_CONTACT_VIEWCONTACTOFSDROLE2OBJ_HXX
+#define INCLUDED_SVX_INC_SDR_CONTACT_VIEWCONTACTOFSDROLE2OBJ_HXX
+
+#include <sdr/contact/viewcontactofsdrrectobj.hxx>
+#include <svx/svdoole2.hxx>
+#include <basegfx/matrix/b2dhommatrix.hxx>
+
+class Graphic;
+
+namespace sdr::contact
+{
+class ViewContactOfSdrOle2Obj final : public ViewContactOfSdrRectObj
+{
+private:
+ // Create an Object-Specific ViewObjectContact, set ViewContact and
+ // ObjectContact. Always needs to return something.
+ virtual ViewObjectContact&
+ CreateObjectSpecificViewObjectContact(ObjectContact& rObjectContact) override;
+
+public:
+ // access to SdrOle2Obj
+ const SdrOle2Obj& GetOle2Obj() const { return static_cast<const SdrOle2Obj&>(GetSdrObject()); }
+
+ /// helper to create transformation from SdrObject
+ basegfx::B2DHomMatrix createObjectTransform() const;
+
+ // basic constructor, used from SdrObject.
+ explicit ViewContactOfSdrOle2Obj(SdrOle2Obj& rOle2Obj);
+ virtual ~ViewContactOfSdrOle2Obj() override;
+
+ // helper for creating an OLE sequence for this object. It takes care od attributes, needed
+ // scaling (e.g. for EmptyPresObj's), the correct graphic and other stuff. It is used from
+ // createViewIndependentPrimitive2DSequence with false, and with evtl. HighContrast true
+ // from the VOC which knows that
+ void createPrimitive2DSequenceWithParameters(
+ drawinglayer::primitive2d::Primitive2DDecompositionVisitor& rVisitor) const;
+
+ virtual basegfx::B2DRange
+ getRange(const drawinglayer::geometry::ViewInformation2D& rViewInfo2D) const override;
+
+private:
+ // This method is responsible for creating the graphical visualisation data
+ // ONLY based on model data, just wraps to call createPrimitive2DSequenceWithParameters(false)
+ virtual void createViewIndependentPrimitive2DSequence(
+ drawinglayer::primitive2d::Primitive2DDecompositionVisitor& rVisitor) const override;
+};
+}
+
+#endif // INCLUDED_SVX_INC_SDR_CONTACT_VIEWCONTACTOFSDROLE2OBJ_HXX
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/svx/inc/sdr/contact/viewcontactofsdrpage.hxx b/svx/inc/sdr/contact/viewcontactofsdrpage.hxx
new file mode 100644
index 0000000000..0f7143aebc
--- /dev/null
+++ b/svx/inc/sdr/contact/viewcontactofsdrpage.hxx
@@ -0,0 +1,211 @@
+/* -*- 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_INC_SDR_CONTACT_VIEWCONTACTOFSDRPAGE_HXX
+#define INCLUDED_SVX_INC_SDR_CONTACT_VIEWCONTACTOFSDRPAGE_HXX
+
+#include <sal/types.h>
+#include <svx/sdr/contact/viewcontact.hxx>
+
+class SdrPage;
+
+namespace sdr::contact {
+
+class ViewContactOfSdrPage;
+
+class ViewContactOfPageSubObject : public ViewContact
+{
+ ViewContactOfSdrPage& mrParentViewContactOfSdrPage;
+
+public:
+ explicit ViewContactOfPageSubObject(ViewContactOfSdrPage& rParentViewContactOfSdrPage);
+ virtual ~ViewContactOfPageSubObject() override;
+
+ virtual ViewContact* GetParentContact() const override;
+ const SdrPage& getPage() const;
+};
+
+class ViewContactOfPageBackground final : public ViewContactOfPageSubObject
+{
+ virtual ViewObjectContact& CreateObjectSpecificViewObjectContact(ObjectContact& rObjectContact) override;
+ virtual void createViewIndependentPrimitive2DSequence(drawinglayer::primitive2d::Primitive2DDecompositionVisitor& rVisitor) const override;
+
+public:
+ explicit ViewContactOfPageBackground(ViewContactOfSdrPage& rParentViewContactOfSdrPage);
+ virtual ~ViewContactOfPageBackground() override;
+};
+
+class ViewContactOfPageShadow final : public ViewContactOfPageSubObject
+{
+ virtual ViewObjectContact& CreateObjectSpecificViewObjectContact(ObjectContact& rObjectContact) override;
+ virtual void createViewIndependentPrimitive2DSequence(drawinglayer::primitive2d::Primitive2DDecompositionVisitor& rVisitor) const override;
+
+public:
+ explicit ViewContactOfPageShadow(ViewContactOfSdrPage& rParentViewContactOfSdrPage);
+ virtual ~ViewContactOfPageShadow() override;
+};
+
+class ViewContactOfPageFill final : public ViewContactOfPageSubObject
+{
+ virtual ViewObjectContact& CreateObjectSpecificViewObjectContact(ObjectContact& rObjectContact) override;
+ virtual void createViewIndependentPrimitive2DSequence(drawinglayer::primitive2d::Primitive2DDecompositionVisitor& rVisitor) const override;
+
+public:
+ explicit ViewContactOfPageFill(ViewContactOfSdrPage& rParentViewContactOfSdrPage);
+ virtual ~ViewContactOfPageFill() override;
+};
+
+class ViewContactOfMasterPage final : public ViewContactOfPageSubObject
+{
+ virtual ViewObjectContact& CreateObjectSpecificViewObjectContact(ObjectContact& rObjectContact) override;
+ virtual void createViewIndependentPrimitive2DSequence(drawinglayer::primitive2d::Primitive2DDecompositionVisitor& rVisitor) const override;
+
+public:
+ explicit ViewContactOfMasterPage(ViewContactOfSdrPage& rParentViewContactOfSdrPage);
+ virtual ~ViewContactOfMasterPage() override;
+};
+
+class ViewContactOfOuterPageBorder final : public ViewContactOfPageSubObject
+{
+ virtual ViewObjectContact& CreateObjectSpecificViewObjectContact(ObjectContact& rObjectContact) override;
+ virtual void createViewIndependentPrimitive2DSequence(drawinglayer::primitive2d::Primitive2DDecompositionVisitor& rVisitor) const override;
+
+public:
+ explicit ViewContactOfOuterPageBorder(ViewContactOfSdrPage& rParentViewContactOfSdrPage);
+ virtual ~ViewContactOfOuterPageBorder() override;
+};
+
+class ViewContactOfInnerPageBorder final : public ViewContactOfPageSubObject
+{
+ virtual ViewObjectContact& CreateObjectSpecificViewObjectContact(ObjectContact& rObjectContact) override;
+ virtual void createViewIndependentPrimitive2DSequence(drawinglayer::primitive2d::Primitive2DDecompositionVisitor& rVisitor) const override;
+
+public:
+ explicit ViewContactOfInnerPageBorder(ViewContactOfSdrPage& rParentViewContactOfSdrPage);
+ virtual ~ViewContactOfInnerPageBorder() override;
+};
+
+/**
+ * This view contact corresponds with all SdrObject instances in a single
+ * SdrPage. Its GetObjectCount() returns the number of SdrObject instances
+ * in the SdrPage that it represents, and its GetViewContact() returns the
+ * view contact of the SdrObject instance associated with the identifier
+ * passed to the method.
+ */
+class ViewContactOfPageHierarchy final : public ViewContactOfPageSubObject
+{
+ virtual ViewObjectContact& CreateObjectSpecificViewObjectContact(ObjectContact& rObjectContact) override;
+ virtual void createViewIndependentPrimitive2DSequence(drawinglayer::primitive2d::Primitive2DDecompositionVisitor& rVisitor) const override;
+
+ SdrObject& GetSdrObject(sal_uInt32 nIndex) const;
+
+public:
+ explicit ViewContactOfPageHierarchy(ViewContactOfSdrPage& rParentViewContactOfSdrPage);
+ virtual ~ViewContactOfPageHierarchy() override;
+
+ virtual sal_uInt32 GetObjectCount() const override;
+ virtual ViewContact& GetViewContact(sal_uInt32 nIndex) const override;
+
+ // optimize version of parent impl to quicker skip hidden SdrObjects
+ virtual void getPrimitive2DSequenceHierarchyOfIndex(
+ sal_uInt32 a, DisplayInfo& rDisplayInfo, ObjectContact& rObjectContact,
+ drawinglayer::primitive2d::Primitive2DDecompositionVisitor& rVisitor) override;
+};
+
+class ViewContactOfGrid final : public ViewContactOfPageSubObject
+{
+ bool mbFront : 1;
+
+ virtual ViewObjectContact& CreateObjectSpecificViewObjectContact(ObjectContact& rObjectContact) override;
+ virtual void createViewIndependentPrimitive2DSequence(drawinglayer::primitive2d::Primitive2DDecompositionVisitor& rVisitor) const override;
+
+public:
+ ViewContactOfGrid(ViewContactOfSdrPage& rParentViewContactOfSdrPage, bool bFront);
+ virtual ~ViewContactOfGrid() override;
+
+ bool getFront() const { return mbFront; }
+};
+
+class ViewContactOfHelplines final : public ViewContactOfPageSubObject
+{
+ bool mbFront : 1;
+
+ virtual ViewObjectContact& CreateObjectSpecificViewObjectContact(ObjectContact& rObjectContact) override;
+ virtual void createViewIndependentPrimitive2DSequence(drawinglayer::primitive2d::Primitive2DDecompositionVisitor& rVisitor) const override;
+
+public:
+ ViewContactOfHelplines(ViewContactOfSdrPage& rParentViewContactOfSdrPage, bool bFront);
+ virtual ~ViewContactOfHelplines() override;
+
+ bool getFront() const { return mbFront; }
+};
+
+class ViewContactOfSdrPage final : public ViewContact
+{
+ // the owner of this ViewContact. Set from constructor and not
+ // to be changed in any way.
+ SdrPage& mrPage;
+
+ // helper viewContacts to build a clear paint hierarchy
+ ViewContactOfPageBackground maViewContactOfPageBackground;
+ ViewContactOfPageShadow maViewContactOfPageShadow;
+ ViewContactOfPageFill maViewContactOfPageFill;
+ ViewContactOfMasterPage maViewContactOfMasterPage;
+ ViewContactOfOuterPageBorder maViewContactOfOuterPageBorder;
+ ViewContactOfInnerPageBorder maViewContactOfInnerPageBorder;
+ ViewContactOfGrid maViewContactOfGridBack;
+ ViewContactOfHelplines maViewContactOfHelplinesBack;
+ ViewContactOfPageHierarchy maViewContactOfPageHierarchy;
+ ViewContactOfGrid maViewContactOfGridFront;
+ ViewContactOfHelplines maViewContactOfHelplinesFront;
+
+ // Create an Object-Specific ViewObjectContact, set ViewContact and
+ // ObjectContact. Always needs to return something. Default is to create
+ // a standard ViewObjectContact containing the given ObjectContact and *this
+ virtual ViewObjectContact& CreateObjectSpecificViewObjectContact(ObjectContact& rObjectContact) override;
+
+public:
+ // access to SdrObject
+ SdrPage& GetSdrPage() const
+ {
+ return mrPage;
+ }
+
+ // basic constructor, used from SdrPage.
+ explicit ViewContactOfSdrPage(SdrPage& rObj);
+ virtual ~ViewContactOfSdrPage() override;
+
+ // Access to possible sub-hierarchy
+ virtual sal_uInt32 GetObjectCount() const override;
+ virtual ViewContact& GetViewContact(sal_uInt32 nIndex) const override;
+
+ // React on changes of the object of this ViewContact
+ virtual void ActionChanged() override;
+
+private:
+ // This method is responsible for creating the graphical visualisation data
+ // ONLY based on model data
+ virtual void createViewIndependentPrimitive2DSequence(drawinglayer::primitive2d::Primitive2DDecompositionVisitor& rVisitor) const override;
+};
+
+}
+
+#endif // INCLUDED_SVX_INC_SDR_CONTACT_VIEWCONTACTOFSDRPAGE_HXX
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/svx/inc/sdr/contact/viewcontactofsdrpathobj.hxx b/svx/inc/sdr/contact/viewcontactofsdrpathobj.hxx
new file mode 100644
index 0000000000..bc4063a42e
--- /dev/null
+++ b/svx/inc/sdr/contact/viewcontactofsdrpathobj.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_INC_SDR_CONTACT_VIEWCONTACTOFSDRPATHOBJ_HXX
+#define INCLUDED_SVX_INC_SDR_CONTACT_VIEWCONTACTOFSDRPATHOBJ_HXX
+
+#include <sdr/contact/viewcontactoftextobj.hxx>
+#include <svx/svdopath.hxx>
+
+
+namespace sdr::contact
+ {
+ class ViewContactOfSdrPathObj final : public ViewContactOfTextObj
+ {
+ public:
+ // basic constructor, used from SdrObject.
+ explicit ViewContactOfSdrPathObj(SdrPathObj& rTextObj);
+ virtual ~ViewContactOfSdrPathObj() override;
+
+ private:
+ // internal access to SdrPathObj
+ const SdrPathObj& GetPathObj() const
+ {
+ return static_cast<const SdrPathObj&>(GetSdrObject());
+ }
+
+ // This method is responsible for creating the graphical visualisation data
+ // ONLY based on model data
+ virtual void createViewIndependentPrimitive2DSequence(drawinglayer::primitive2d::Primitive2DDecompositionVisitor& rVisitor) const override;
+ };
+} // end of namespace sdr::contact
+
+
+#endif // INCLUDED_SVX_INC_SDR_CONTACT_VIEWCONTACTOFSDRPATHOBJ_HXX
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/svx/inc/sdr/contact/viewcontactofsdrrectobj.hxx b/svx/inc/sdr/contact/viewcontactofsdrrectobj.hxx
new file mode 100644
index 0000000000..6971f8f0ca
--- /dev/null
+++ b/svx/inc/sdr/contact/viewcontactofsdrrectobj.hxx
@@ -0,0 +1,46 @@
+/* -*- 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 <sdr/contact/viewcontactoftextobj.hxx>
+#include <svx/svdorect.hxx>
+
+namespace sdr::contact
+{
+class ViewContactOfSdrRectObj : public ViewContactOfTextObj
+{
+protected:
+ // internal access to SdrRectObj
+ const SdrRectObj& GetRectObj() const { return static_cast<const SdrRectObj&>(GetSdrObject()); }
+
+public:
+ // basic constructor, used from SdrObject.
+ explicit ViewContactOfSdrRectObj(SdrRectObj& rTextObj);
+ virtual ~ViewContactOfSdrRectObj() override;
+
+protected:
+ // This method is responsible for creating the graphical visualisation data
+ // ONLY based on model data
+ virtual void createViewIndependentPrimitive2DSequence(
+ drawinglayer::primitive2d::Primitive2DDecompositionVisitor& rVisitor) const override;
+};
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/svx/inc/sdr/contact/viewcontactoftextobj.hxx b/svx/inc/sdr/contact/viewcontactoftextobj.hxx
new file mode 100644
index 0000000000..cdf88e10c7
--- /dev/null
+++ b/svx/inc/sdr/contact/viewcontactoftextobj.hxx
@@ -0,0 +1,37 @@
+/* -*- 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 <svx/sdr/contact/viewcontactofsdrobj.hxx>
+
+class SdrTextObj;
+
+namespace sdr::contact
+{
+class ViewContactOfTextObj : public ViewContactOfSdrObj
+{
+public:
+ // basic constructor, used from SdrObject.
+ explicit ViewContactOfTextObj(SdrTextObj& rTextObj);
+ virtual ~ViewContactOfTextObj() override;
+};
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/svx/inc/sdr/contact/viewcontactofunocontrol.hxx b/svx/inc/sdr/contact/viewcontactofunocontrol.hxx
new file mode 100644
index 0000000000..04cdf7c07b
--- /dev/null
+++ b/svx/inc/sdr/contact/viewcontactofunocontrol.hxx
@@ -0,0 +1,77 @@
+/* -*- 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_INC_SDR_CONTACT_VIEWCONTACTOFUNOCONTROL_HXX
+#define INCLUDED_SVX_INC_SDR_CONTACT_VIEWCONTACTOFUNOCONTROL_HXX
+
+#include <com/sun/star/uno/Reference.hxx>
+#include <svx/sdr/contact/viewcontactofsdrobj.hxx>
+#include <svx/svdouno.hxx>
+
+class OutputDevice;
+namespace vcl { class Window; }
+namespace com::sun::star {
+ namespace awt {
+ class XControl;
+ class XControlContainer;
+ }
+}
+
+
+namespace sdr::contact {
+
+
+ //= ViewContactOfUnoControl
+
+ class ViewContactOfUnoControl final : public ViewContactOfSdrObj
+ {
+ public:
+ // access to SdrObject
+ const SdrUnoObj& GetSdrUnoObj() const
+ {
+ return static_cast<const SdrUnoObj&>(GetSdrObject());
+ }
+
+ explicit ViewContactOfUnoControl( SdrUnoObj& _rUnoObject );
+ virtual ~ViewContactOfUnoControl() override;
+
+ /** retrieves a temporary XControl instance, whose parent is the given window
+ @seealso SdrUnoObj::GetTemporaryControlForWindow
+ */
+ css::uno::Reference< css::awt::XControl >
+ getTemporaryControlForWindow( const vcl::Window& _rWindow, css::uno::Reference< css::awt::XControlContainer >& _inout_ControlContainer ) const;
+
+ private:
+ virtual ViewObjectContact& CreateObjectSpecificViewObjectContact( ObjectContact& _rObjectContact ) override;
+
+ ViewContactOfUnoControl( const ViewContactOfUnoControl& ) = delete;
+ ViewContactOfUnoControl& operator=( const ViewContactOfUnoControl& ) = delete;
+
+ // This method is responsible for creating the graphical visualisation data
+ // ONLY based on model data
+ virtual void createViewIndependentPrimitive2DSequence(drawinglayer::primitive2d::Primitive2DDecompositionVisitor& rVisitor) const override;
+ };
+
+
+} // namespace sdr::contact
+
+
+#endif // INCLUDED_SVX_INC_SDR_CONTACT_VIEWCONTACTOFUNOCONTROL_HXX
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/svx/inc/sdr/contact/viewobjectcontactofe3d.hxx b/svx/inc/sdr/contact/viewobjectcontactofe3d.hxx
new file mode 100644
index 0000000000..591ed65041
--- /dev/null
+++ b/svx/inc/sdr/contact/viewobjectcontactofe3d.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_INC_SDR_CONTACT_VIEWOBJECTCONTACTOFE3D_HXX
+#define INCLUDED_SVX_INC_SDR_CONTACT_VIEWOBJECTCONTACTOFE3D_HXX
+
+#include <svx/sdr/contact/viewobjectcontactofsdrobj.hxx>
+#include <drawinglayer/primitive3d/baseprimitive3d.hxx>
+
+namespace sdr::contact {
+ class ViewObjectContactOfE3dScene;
+}
+
+namespace sdr::contact
+ {
+ class ViewObjectContactOfE3d final : public ViewObjectContactOfSdrObj
+ {
+ // also override the 2d method to deliver a 2d object with embedded 3d and the 3d transformation which is able to
+ // answer the get2DRange question accordingly
+ virtual void createPrimitive2DSequence(const DisplayInfo& rDisplayInfo, drawinglayer::primitive2d::Primitive2DDecompositionVisitor& rVisitor) const override;
+
+ public:
+ ViewObjectContactOfE3d(ObjectContact& rObjectContact, ViewContact& rViewContact);
+ virtual ~ViewObjectContactOfE3d() override;
+
+ // access to the local primitive sequence. This will ensure that the list is
+ // current in comparing the local list content with a fresh created incarnation
+ // This method will not handle included hierarchies or visibility.
+ drawinglayer::primitive3d::Primitive3DContainer getPrimitive3DContainer(const DisplayInfo& rDisplayInfo) const;
+ };
+
+} // end of namespace sdr::contact
+
+#endif // INCLUDED_SVX_INC_SDR_CONTACT_VIEWOBJECTCONTACTOFE3D_HXX
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/svx/inc/sdr/contact/viewobjectcontactofe3dscene.hxx b/svx/inc/sdr/contact/viewobjectcontactofe3dscene.hxx
new file mode 100644
index 0000000000..cc1b2e7c34
--- /dev/null
+++ b/svx/inc/sdr/contact/viewobjectcontactofe3dscene.hxx
@@ -0,0 +1,47 @@
+/* -*- 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_INC_SDR_CONTACT_VIEWOBJECTCONTACTOFE3DSCENE_HXX
+#define INCLUDED_SVX_INC_SDR_CONTACT_VIEWOBJECTCONTACTOFE3DSCENE_HXX
+
+#include <svx/sdr/contact/viewobjectcontactofsdrobj.hxx>
+
+
+namespace sdr::contact
+ {
+ class ViewObjectContactOfE3dScene final : public ViewObjectContactOfSdrObj
+ {
+ // 2d primitive creator
+ virtual void createPrimitive2DSequence(const DisplayInfo& rDisplayInfo, drawinglayer::primitive2d::Primitive2DDecompositionVisitor& rVisitor) const override;
+
+ public:
+ // basic constructor.
+ ViewObjectContactOfE3dScene(ObjectContact& rObjectContact, ViewContact& rViewContact);
+ virtual ~ViewObjectContactOfE3dScene() override;
+
+ // process this primitive: Eventually also recursively travel an existing hierarchy,
+ // e.g. for group objects, scenes or pages. This method will test geometrical visibility.
+ virtual void getPrimitive2DSequenceHierarchy(DisplayInfo& rDisplayInfo, drawinglayer::primitive2d::Primitive2DDecompositionVisitor& rVisitor ) const override;
+ };
+} // end of namespace sdr::contact
+
+
+#endif // INCLUDED_SVX_INC_SDR_CONTACT_VIEWOBJECTCONTACTOFE3DSCENE_HXX
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/svx/inc/sdr/contact/viewobjectcontactofgraphic.hxx b/svx/inc/sdr/contact/viewobjectcontactofgraphic.hxx
new file mode 100644
index 0000000000..74e616a45b
--- /dev/null
+++ b/svx/inc/sdr/contact/viewobjectcontactofgraphic.hxx
@@ -0,0 +1,42 @@
+/* -*- 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_INC_SDR_CONTACT_VIEWOBJECTCONTACTOFGRAPHIC_HXX
+#define INCLUDED_SVX_INC_SDR_CONTACT_VIEWOBJECTCONTACTOFGRAPHIC_HXX
+
+#include <svx/sdr/contact/viewobjectcontactofsdrobj.hxx>
+
+class SdrGrafObj;
+
+namespace sdr::contact
+ {
+ class ViewObjectContactOfGraphic final : public ViewObjectContactOfSdrObj
+ {
+ // This method is responsible for creating the graphical visualisation data
+ virtual void createPrimitive2DSequence(const DisplayInfo& rDisplayInfo, drawinglayer::primitive2d::Primitive2DDecompositionVisitor& rVisitor) const override;
+
+ public:
+ ViewObjectContactOfGraphic(ObjectContact& rObjectContact, ViewContact& rViewContact);
+ virtual ~ViewObjectContactOfGraphic() override;
+ };
+} // end of namespace sdr::contact
+
+#endif // INCLUDED_SVX_INC_SDR_CONTACT_VIEWOBJECTCONTACTOFGRAPHIC_HXX
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/svx/inc/sdr/contact/viewobjectcontactofgroup.hxx b/svx/inc/sdr/contact/viewobjectcontactofgroup.hxx
new file mode 100644
index 0000000000..96697b0202
--- /dev/null
+++ b/svx/inc/sdr/contact/viewobjectcontactofgroup.hxx
@@ -0,0 +1,45 @@
+/* -*- 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_INC_SDR_CONTACT_VIEWOBJECTCONTACTOFGROUP_HXX
+#define INCLUDED_SVX_INC_SDR_CONTACT_VIEWOBJECTCONTACTOFGROUP_HXX
+
+#include <svx/sdr/contact/viewobjectcontactofsdrobj.hxx>
+
+namespace sdr::contact
+ {
+ class ViewObjectContactOfGroup final : public ViewObjectContactOfSdrObj
+ {
+ public:
+ // basic constructor.
+ ViewObjectContactOfGroup(ObjectContact& rObjectContact, ViewContact& rViewContact);
+ virtual ~ViewObjectContactOfGroup() override;
+
+ // This method recursively paints the draw hierarchy.
+ virtual void getPrimitive2DSequenceHierarchy(DisplayInfo& rDisplayInfo, drawinglayer::primitive2d::Primitive2DDecompositionVisitor& rVisitor ) const override;
+
+ private:
+ virtual bool isPrimitiveVisibleOnAnyLayer(const SdrLayerIDSet& aLayers) const override;
+ };
+
+} // end of namespace sdr::contact
+
+#endif // INCLUDED_SVX_INC_SDR_CONTACT_VIEWOBJECTCONTACTOFGROUP_HXX
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/svx/inc/sdr/contact/viewobjectcontactofmasterpagedescriptor.hxx b/svx/inc/sdr/contact/viewobjectcontactofmasterpagedescriptor.hxx
new file mode 100644
index 0000000000..613e7f8b06
--- /dev/null
+++ b/svx/inc/sdr/contact/viewobjectcontactofmasterpagedescriptor.hxx
@@ -0,0 +1,45 @@
+/* -*- 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_INC_SDR_CONTACT_VIEWOBJECTCONTACTOFMASTERPAGEDESCRIPTOR_HXX
+#define INCLUDED_SVX_INC_SDR_CONTACT_VIEWOBJECTCONTACTOFMASTERPAGEDESCRIPTOR_HXX
+
+#include <svx/sdr/contact/viewobjectcontact.hxx>
+
+namespace sdr {
+ class MasterPageDescriptor;
+}
+
+namespace sdr::contact
+ {
+ class ViewObjectContactOfMasterPageDescriptor final : public ViewObjectContact
+ {
+ public:
+ ViewObjectContactOfMasterPageDescriptor(ObjectContact& rObjectContact, ViewContact& rViewContact);
+ virtual ~ViewObjectContactOfMasterPageDescriptor() override;
+
+ virtual bool isPrimitiveVisible(const DisplayInfo& rDisplayInfo) const override;
+ virtual void getPrimitive2DSequenceHierarchy(DisplayInfo& rDisplayInfo, drawinglayer::primitive2d::Primitive2DDecompositionVisitor& rVisitor ) const override;
+ };
+
+} // end of namespace sdr::contact
+
+#endif // INCLUDED_SVX_INC_SDR_CONTACT_VIEWOBJECTCONTACTOFMASTERPAGEDESCRIPTOR_HXX
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/svx/inc/sdr/contact/viewobjectcontactofpageobj.hxx b/svx/inc/sdr/contact/viewobjectcontactofpageobj.hxx
new file mode 100644
index 0000000000..b651e083ec
--- /dev/null
+++ b/svx/inc/sdr/contact/viewobjectcontactofpageobj.hxx
@@ -0,0 +1,50 @@
+/* -*- 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 <svx/sdr/contact/viewobjectcontactofsdrobj.hxx>
+#include <memory>
+
+class SdrPage;
+
+namespace sdr::contact
+{
+class PagePrimitiveExtractor;
+
+class ViewObjectContactOfPageObj final : public ViewObjectContactOfSdrObj
+{
+private:
+ // the page painter helper
+ std::unique_ptr<PagePrimitiveExtractor> mpExtractor;
+
+ // This method is responsible for creating the graphical visualisation data which is
+ // stored/cached in the local primitive.
+ // This method will not handle included hierarchies and not check geometric visibility.
+ virtual void createPrimitive2DSequence(
+ const DisplayInfo& rDisplayInfo,
+ drawinglayer::primitive2d::Primitive2DDecompositionVisitor& rVisitor) const override;
+
+public:
+ ViewObjectContactOfPageObj(ObjectContact& rObjectContact, ViewContact& rViewContact);
+ virtual ~ViewObjectContactOfPageObj() override;
+};
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/svx/inc/sdr/contact/viewobjectcontactofsdrmediaobj.hxx b/svx/inc/sdr/contact/viewobjectcontactofsdrmediaobj.hxx
new file mode 100644
index 0000000000..891c920aed
--- /dev/null
+++ b/svx/inc/sdr/contact/viewobjectcontactofsdrmediaobj.hxx
@@ -0,0 +1,69 @@
+/* -*- 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_INC_SDR_CONTACT_VIEWOBJECTCONTACTOFSDRMEDIAOBJ_HXX
+#define INCLUDED_SVX_INC_SDR_CONTACT_VIEWOBJECTCONTACTOFSDRMEDIAOBJ_HXX
+
+#include <svx/sdr/contact/viewobjectcontactofsdrobj.hxx>
+#include <svx/sdr/contact/viewobjectcontact.hxx>
+#include <config_features.h>
+#include <tools/gen.hxx>
+#include <memory>
+
+namespace avmedia { class MediaItem; }
+namespace vcl { class Window; }
+
+namespace sdr::contact
+ {
+ class SdrMediaWindow;
+
+ class ViewObjectContactOfSdrMediaObj final : public ViewObjectContactOfSdrObj
+ {
+ public:
+
+ ViewObjectContactOfSdrMediaObj( ObjectContact& rObjectContact,
+ ViewContact& rViewContact,
+ const ::avmedia::MediaItem& rMediaItem );
+ virtual ~ViewObjectContactOfSdrMediaObj() override;
+
+ public:
+
+ vcl::Window* getWindow() const;
+
+ Size getPreferredSize() const;
+
+ void updateMediaItem( ::avmedia::MediaItem& rItem ) const;
+ void executeMediaItem( const ::avmedia::MediaItem& rItem );
+
+ virtual void ActionChanged() override;
+
+ private:
+ void updateMediaWindow(bool bShow) const;
+
+#if HAVE_FEATURE_AVMEDIA
+ std::unique_ptr<sdr::contact::SdrMediaWindow> mpMediaWindow;
+#endif
+ };
+
+} // end of namespace sdr::contact
+
+
+#endif // INCLUDED_SVX_INC_SDR_CONTACT_VIEWOBJECTCONTACTOFSDRMEDIAOBJ_HXX
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/svx/inc/sdr/contact/viewobjectcontactofsdrole2obj.hxx b/svx/inc/sdr/contact/viewobjectcontactofsdrole2obj.hxx
new file mode 100644
index 0000000000..2279f9b459
--- /dev/null
+++ b/svx/inc/sdr/contact/viewobjectcontactofsdrole2obj.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_INC_SDR_CONTACT_VIEWOBJECTCONTACTOFSDROLE2OBJ_HXX
+#define INCLUDED_SVX_INC_SDR_CONTACT_VIEWOBJECTCONTACTOFSDROLE2OBJ_HXX
+
+#include <svx/sdr/contact/viewobjectcontactofsdrobj.hxx>
+
+class SdrOle2Obj;
+
+namespace sdr::contact
+{
+class ViewObjectContactOfSdrOle2Obj final : public ViewObjectContactOfSdrObj
+{
+ // This method is responsible for creating the graphical visualisation data
+ virtual void createPrimitive2DSequence(
+ const DisplayInfo& rDisplayInfo,
+ drawinglayer::primitive2d::Primitive2DDecompositionVisitor& rVisitor) const override;
+
+public:
+ ViewObjectContactOfSdrOle2Obj(ObjectContact& rObjectContact, ViewContact& rViewContact);
+ virtual ~ViewObjectContactOfSdrOle2Obj() override;
+};
+}
+
+#endif // INCLUDED_SVX_INC_SDR_CONTACT_VIEWOBJECTCONTACTOFSDROLE2OBJ_HXX
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/svx/inc/sdr/contact/viewobjectcontactofsdrpage.hxx b/svx/inc/sdr/contact/viewobjectcontactofsdrpage.hxx
new file mode 100644
index 0000000000..a6fa46d430
--- /dev/null
+++ b/svx/inc/sdr/contact/viewobjectcontactofsdrpage.hxx
@@ -0,0 +1,176 @@
+/* -*- 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_INC_SDR_CONTACT_VIEWOBJECTCONTACTOFSDRPAGE_HXX
+#define INCLUDED_SVX_INC_SDR_CONTACT_VIEWOBJECTCONTACTOFSDRPAGE_HXX
+
+#include <svx/sdr/contact/viewobjectcontact.hxx>
+
+class SdrPage;
+
+namespace sdr::contact
+ {
+ class ViewObjectContactOfPageSubObject : public ViewObjectContact
+ {
+ protected:
+ const SdrPage& getPage() const;
+
+ public:
+ ViewObjectContactOfPageSubObject(ObjectContact& rObjectContact, ViewContact& rViewContact);
+ virtual ~ViewObjectContactOfPageSubObject() override;
+
+ virtual bool isPrimitiveVisible(const DisplayInfo& rDisplayInfo) const override;
+ virtual bool isPrimitiveGhosted(const DisplayInfo& rDisplayInfo) const override;
+ };
+
+} // end of namespace sdr::contact
+
+namespace sdr::contact
+ {
+ class ViewObjectContactOfPageBackground final : public ViewObjectContactOfPageSubObject
+ {
+ virtual void createPrimitive2DSequence(const DisplayInfo& rDisplayInfo, drawinglayer::primitive2d::Primitive2DDecompositionVisitor& rVisitor) const override;
+
+ public:
+ ViewObjectContactOfPageBackground(ObjectContact& rObjectContact, ViewContact& rViewContact);
+ virtual ~ViewObjectContactOfPageBackground() override;
+
+ virtual bool isPrimitiveVisible(const DisplayInfo& rDisplayInfo) const override;
+ };
+
+} // end of namespace sdr::contact
+
+namespace sdr::contact
+ {
+ class ViewObjectContactOfMasterPage final : public ViewObjectContactOfPageSubObject
+ {
+ protected:
+ public:
+ ViewObjectContactOfMasterPage(ObjectContact& rObjectContact, ViewContact& rViewContact);
+ virtual ~ViewObjectContactOfMasterPage() override;
+
+ virtual bool isPrimitiveVisible(const DisplayInfo& rDisplayInfo) const override;
+ };
+} // end of namespace sdr::contact
+
+namespace sdr::contact
+ {
+ class ViewObjectContactOfPageFill final : public ViewObjectContactOfPageSubObject
+ {
+ virtual void createPrimitive2DSequence(const DisplayInfo& rDisplayInfo, drawinglayer::primitive2d::Primitive2DDecompositionVisitor& rVisitor) const override;
+
+ public:
+ ViewObjectContactOfPageFill(ObjectContact& rObjectContact, ViewContact& rViewContact);
+ virtual ~ViewObjectContactOfPageFill() override;
+
+ virtual bool isPrimitiveVisible(const DisplayInfo& rDisplayInfo) const override;
+ };
+} // end of namespace sdr::contact
+
+namespace sdr::contact
+ {
+ class ViewObjectContactOfPageShadow final : public ViewObjectContactOfPageSubObject
+ {
+ public:
+ ViewObjectContactOfPageShadow(ObjectContact& rObjectContact, ViewContact& rViewContact);
+ virtual ~ViewObjectContactOfPageShadow() override;
+
+ virtual bool isPrimitiveVisible(const DisplayInfo& rDisplayInfo) const override;
+ };
+} // end of namespace sdr::contact
+
+namespace sdr::contact
+ {
+ class ViewObjectContactOfOuterPageBorder final : public ViewObjectContactOfPageSubObject
+ {
+ public:
+ ViewObjectContactOfOuterPageBorder(ObjectContact& rObjectContact, ViewContact& rViewContact);
+ virtual ~ViewObjectContactOfOuterPageBorder() override;
+
+ virtual bool isPrimitiveVisible(const DisplayInfo& rDisplayInfo) const override;
+ };
+} // end of namespace sdr::contact
+
+namespace sdr::contact
+ {
+ class ViewObjectContactOfInnerPageBorder final : public ViewObjectContactOfPageSubObject
+ {
+ public:
+ ViewObjectContactOfInnerPageBorder(ObjectContact& rObjectContact, ViewContact& rViewContact);
+ virtual ~ViewObjectContactOfInnerPageBorder() override;
+
+ virtual bool isPrimitiveVisible(const DisplayInfo& rDisplayInfo) const override;
+ };
+} // end of namespace sdr::contact
+
+namespace sdr::contact
+ {
+ class ViewObjectContactOfPageHierarchy final : public ViewObjectContactOfPageSubObject
+ {
+ public:
+ ViewObjectContactOfPageHierarchy(ObjectContact& rObjectContact, ViewContact& rViewContact);
+ virtual ~ViewObjectContactOfPageHierarchy() override;
+
+ virtual void getPrimitive2DSequenceHierarchy(DisplayInfo& rDisplayInfo, drawinglayer::primitive2d::Primitive2DDecompositionVisitor& rVisitor ) const override;
+ };
+} // end of namespace sdr::contact
+
+namespace sdr::contact
+ {
+ class ViewObjectContactOfPageGrid final : public ViewObjectContactOfPageSubObject
+ {
+ virtual void createPrimitive2DSequence(const DisplayInfo& rDisplayInfo, drawinglayer::primitive2d::Primitive2DDecompositionVisitor& rVisitor) const override;
+
+ public:
+ ViewObjectContactOfPageGrid(ObjectContact& rObjectContact, ViewContact& rViewContact);
+ virtual ~ViewObjectContactOfPageGrid() override;
+
+ virtual bool isPrimitiveVisible(const DisplayInfo& rDisplayInfo) const override;
+ };
+} // end of namespace sdr::contact
+
+namespace sdr::contact
+ {
+ class ViewObjectContactOfPageHelplines final : public ViewObjectContactOfPageSubObject
+ {
+ virtual void createPrimitive2DSequence(const DisplayInfo& rDisplayInfo, drawinglayer::primitive2d::Primitive2DDecompositionVisitor& rVisitor) const override;
+
+ public:
+ ViewObjectContactOfPageHelplines(ObjectContact& rObjectContact, ViewContact& rViewContact);
+ virtual ~ViewObjectContactOfPageHelplines() override;
+
+ virtual bool isPrimitiveVisible(const DisplayInfo& rDisplayInfo) const override;
+ };
+} // end of namespace sdr::contact
+
+namespace sdr::contact
+ {
+ class ViewObjectContactOfSdrPage final : public ViewObjectContact
+ {
+ public:
+ ViewObjectContactOfSdrPage(ObjectContact& rObjectContact, ViewContact& rViewContact);
+ virtual ~ViewObjectContactOfSdrPage() override;
+
+ virtual void getPrimitive2DSequenceHierarchy(DisplayInfo& rDisplayInfo, drawinglayer::primitive2d::Primitive2DDecompositionVisitor& rVisitor ) const override;
+ };
+} // end of namespace sdr::contact
+
+#endif // INCLUDED_SVX_INC_SDR_CONTACT_VIEWOBJECTCONTACTOFSDRPAGE_HXX
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/svx/inc/sdr/contact/viewobjectcontactofunocontrol.hxx b/svx/inc/sdr/contact/viewobjectcontactofunocontrol.hxx
new file mode 100644
index 0000000000..d7dc8ffdda
--- /dev/null
+++ b/svx/inc/sdr/contact/viewobjectcontactofunocontrol.hxx
@@ -0,0 +1,125 @@
+/* -*- 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_INC_SDR_CONTACT_VIEWOBJECTCONTACTOFUNOCONTROL_HXX
+#define INCLUDED_SVX_INC_SDR_CONTACT_VIEWOBJECTCONTACTOFUNOCONTROL_HXX
+
+#include <svx/sdr/contact/viewobjectcontactofsdrobj.hxx>
+
+#include <com/sun/star/uno/Reference.hxx>
+#include <rtl/ref.hxx>
+
+class OutputDevice;
+namespace vcl { class Window; }
+class SdrUnoObj;
+namespace com::sun::star {
+ namespace awt {
+ class XControl;
+ class XControlContainer;
+ }
+}
+
+
+namespace sdr::contact {
+
+
+ class ViewContactOfUnoControl;
+ class ObjectContactOfPageView;
+
+ //= ViewObjectContactOfUnoControl
+
+ class ViewObjectContactOfUnoControl_Impl;
+ class ViewObjectContactOfUnoControl : public ViewObjectContactOfSdrObj
+ {
+ protected:
+ ::rtl::Reference< ViewObjectContactOfUnoControl_Impl > m_pImpl;
+
+ public:
+ ViewObjectContactOfUnoControl( ObjectContact& _rObjectContact, ViewContactOfUnoControl& _rViewContact );
+
+ /// returns the ->XControl instance belonging to the instance, creates it if necessary
+ css::uno::Reference< css::awt::XControl >
+ getControl();
+
+ /** retrieves a temporary XControl instance, whose parent is the given device
+ @seealso SdrUnoObj::GetTemporaryControlForWindow
+ */
+ static css::uno::Reference< css::awt::XControl >
+ getTemporaryControlForWindow(
+ const vcl::Window& _rWindow,
+ css::uno::Reference< css::awt::XControlContainer >& _inout_ControlContainer,
+ const SdrUnoObj& _rUnoObject
+ );
+
+ /// ensures that the control belonging to this instances has a given visibility
+ void ensureControlVisibility( bool _bVisible ) const;
+
+ /** sets the design/alive mode of the control
+ */
+ void setControlDesignMode( bool _bDesignMode ) const;
+
+ /** callback from impl class to react on changes of properties form the XControlModel
+ */
+ void propertyChange();
+
+ /** React on changes of the object of this ViewContact
+ */
+ virtual void ActionChanged() override;
+
+ /** to be called when any aspect of the control which requires view updates changed
+ */
+ struct ImplAccess { friend class ViewObjectContactOfUnoControl_Impl; friend class ViewObjectContactOfUnoControl; private: ImplAccess() { } };
+ void onControlChangedOrModified( ImplAccess ) { impl_onControlChangedOrModified(); }
+
+ protected:
+ virtual ~ViewObjectContactOfUnoControl() override;
+
+ // support for Primitive2D
+ virtual void createPrimitive2DSequence(const DisplayInfo& rDisplayInfo, drawinglayer::primitive2d::Primitive2DDecompositionVisitor& rVisitor) const override;
+
+ // visibility check
+ virtual bool isPrimitiveVisible( const DisplayInfo& _rDisplayInfo ) const override;
+ /// to be called when any aspect of the control which requires view updates changed
+ void impl_onControlChangedOrModified();
+
+ private:
+ ViewObjectContactOfUnoControl( const ViewObjectContactOfUnoControl& ) = delete;
+ ViewObjectContactOfUnoControl& operator=( const ViewObjectContactOfUnoControl& ) = delete;
+ };
+
+ class UnoControlPrintOrPreviewContact final : public ViewObjectContactOfUnoControl
+ {
+ public:
+ UnoControlPrintOrPreviewContact( ObjectContactOfPageView& _rObjectContact, ViewContactOfUnoControl& _rViewContact );
+ virtual ~UnoControlPrintOrPreviewContact() override;
+
+ private:
+ UnoControlPrintOrPreviewContact( const UnoControlPrintOrPreviewContact& ) = delete;
+ UnoControlPrintOrPreviewContact& operator=( const UnoControlPrintOrPreviewContact& ) = delete;
+
+ virtual void createPrimitive2DSequence(const DisplayInfo& rDisplayInfo, drawinglayer::primitive2d::Primitive2DDecompositionVisitor& rVisitor) const override;
+ };
+
+
+} // namespace sdr::contact
+
+
+#endif // INCLUDED_SVX_INC_SDR_CONTACT_VIEWOBJECTCONTACTOFUNOCONTROL_HXX
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/svx/inc/sdr/overlay/overlaycrosshair.hxx b/svx/inc/sdr/overlay/overlaycrosshair.hxx
new file mode 100644
index 0000000000..09dccf4a8d
--- /dev/null
+++ b/svx/inc/sdr/overlay/overlaycrosshair.hxx
@@ -0,0 +1,45 @@
+/* -*- 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_INC_SDR_OVERLAY_OVERLAYCROSSHAIR_HXX
+#define INCLUDED_SVX_INC_SDR_OVERLAY_OVERLAYCROSSHAIR_HXX
+
+#include <svx/sdr/overlay/overlayobject.hxx>
+
+
+namespace sdr::overlay
+ {
+ class OverlayCrosshairStriped final : public OverlayObjectWithBasePosition
+ {
+ // geometry creation for OverlayObject
+ virtual drawinglayer::primitive2d::Primitive2DContainer createOverlayObjectPrimitive2DSequence() override;
+
+ public:
+ explicit OverlayCrosshairStriped(const basegfx::B2DPoint& rBasePos);
+ virtual ~OverlayCrosshairStriped() override;
+
+ // react on stripe definition change
+ virtual void stripeDefinitionHasChanged() override;
+ };
+} // end of namespace sdr::overlay
+
+
+#endif // INCLUDED_SVX_INC_SDR_OVERLAY_OVERLAYCROSSHAIR_HXX
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/svx/inc/sdr/overlay/overlayhandle.hxx b/svx/inc/sdr/overlay/overlayhandle.hxx
new file mode 100644
index 0000000000..882fb702cb
--- /dev/null
+++ b/svx/inc/sdr/overlay/overlayhandle.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_SDR_OVERLAY_OVERLAYHANDLE_HXX
+#define INCLUDED_SVX_SDR_OVERLAY_OVERLAYHANDLE_HXX
+
+#include <svx/sdr/overlay/overlayobject.hxx>
+#include <basegfx/vector/b2dsize.hxx>
+
+namespace sdr::overlay {
+
+
+class OverlayHandle final : public OverlayObjectWithBasePosition
+{
+ basegfx::B2DSize maSize;
+ Color maStrokeColor;
+
+ // geometry creation for OverlayObject
+ virtual drawinglayer::primitive2d::Primitive2DContainer createOverlayObjectPrimitive2DSequence() override;
+
+public:
+ OverlayHandle(const basegfx::B2DPoint& rBasePos,
+ const basegfx::B2DSize& rSize,
+ Color const & rStrokeColor,
+ Color const & rFillColor);
+
+ virtual ~OverlayHandle() override;
+};
+
+} // end of namespace sdr::overlay
+
+#endif // INCLUDED_SVX_SDR_OVERLAY_OVERLAYHANDLE_HXX
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/svx/inc/sdr/overlay/overlayhelpline.hxx b/svx/inc/sdr/overlay/overlayhelpline.hxx
new file mode 100644
index 0000000000..834f7e40a7
--- /dev/null
+++ b/svx/inc/sdr/overlay/overlayhelpline.hxx
@@ -0,0 +1,54 @@
+/* -*- 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_INC_SDR_OVERLAY_OVERLAYHELPLINE_HXX
+#define INCLUDED_SVX_INC_SDR_OVERLAY_OVERLAYHELPLINE_HXX
+
+#include <svx/sdr/overlay/overlayobject.hxx>
+#include <svx/svdhlpln.hxx>
+
+
+namespace sdr::overlay
+ {
+ class OverlayHelplineStriped final : public OverlayObjectWithBasePosition
+ {
+ // remember HelpLineKind
+ SdrHelpLineKind meKind;
+
+ // geometry creation for OverlayObject
+ virtual drawinglayer::primitive2d::Primitive2DContainer createOverlayObjectPrimitive2DSequence() override;
+
+ public:
+ explicit OverlayHelplineStriped(
+ const basegfx::B2DPoint& rBasePos,
+ SdrHelpLineKind eNewKind);
+ virtual ~OverlayHelplineStriped() override;
+
+ // dat read access
+ SdrHelpLineKind getKind() const { return meKind; }
+
+ // react on stripe definition change
+ virtual void stripeDefinitionHasChanged() override;
+ };
+} // end of namespace sdr::overlay
+
+
+#endif // INCLUDED_SVX_INC_SDR_OVERLAY_OVERLAYHELPLINE_HXX
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/svx/inc/sdr/overlay/overlayline.hxx b/svx/inc/sdr/overlay/overlayline.hxx
new file mode 100644
index 0000000000..425ea96b72
--- /dev/null
+++ b/svx/inc/sdr/overlay/overlayline.hxx
@@ -0,0 +1,53 @@
+/* -*- 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_INC_SDR_OVERLAY_OVERLAYLINE_HXX
+#define INCLUDED_SVX_INC_SDR_OVERLAY_OVERLAYLINE_HXX
+
+#include <svx/sdr/overlay/overlayobject.hxx>
+
+
+namespace sdr::overlay
+ {
+ class OverlayLineStriped final : public OverlayObjectWithBasePosition
+ {
+ // second position in pixel
+ basegfx::B2DPoint maSecondPosition;
+
+ // geometry creation for OverlayObject
+ virtual drawinglayer::primitive2d::Primitive2DContainer createOverlayObjectPrimitive2DSequence() override;
+
+ public:
+ OverlayLineStriped(
+ const basegfx::B2DPoint& rBasePos,
+ const basegfx::B2DPoint& rSecondPos);
+ virtual ~OverlayLineStriped() override;
+
+ // change second position
+ const basegfx::B2DPoint& getSecondPosition() const { return maSecondPosition; }
+
+ // react on stripe definition change
+ virtual void stripeDefinitionHasChanged() override;
+ };
+} // end of namespace sdr::overlay
+
+
+#endif // INCLUDED_SVX_INC_SDR_OVERLAY_OVERLAYLINE_HXX
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/svx/inc/sdr/overlay/overlaymanagerbuffered.hxx b/svx/inc/sdr/overlay/overlaymanagerbuffered.hxx
new file mode 100644
index 0000000000..a5acd6abc3
--- /dev/null
+++ b/svx/inc/sdr/overlay/overlaymanagerbuffered.hxx
@@ -0,0 +1,76 @@
+/* -*- 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_INC_SDR_OVERLAY_OVERLAYMANAGERBUFFERED_HXX
+#define INCLUDED_SVX_INC_SDR_OVERLAY_OVERLAYMANAGERBUFFERED_HXX
+
+#include <svx/sdr/overlay/overlaymanager.hxx>
+#include <basegfx/range/b2irange.hxx>
+#include <vcl/virdev.hxx>
+#include <vcl/idle.hxx>
+
+
+namespace sdr::overlay
+ {
+ class OverlayManagerBuffered final : public OverlayManager
+ {
+ // The VirtualDevice for draw window content buffering, this
+ // is the view content without overlay
+ ScopedVclPtr<VirtualDevice> mpBufferDevice;
+
+ // #i73602# The VirtualDevice for OverlayPaint buffering. This
+ // is an extra device to avoid flickering of overlay paints
+ ScopedVclPtr<VirtualDevice> mpOutputBufferDevice;
+
+ // Idle for buffering
+ Idle maBufferIdle;
+
+ // Range for buffering (in pixel to be independent from mapMode)
+ basegfx::B2IRange maBufferRememberedRangePixel;
+
+ // link for timer
+ DECL_LINK(ImpBufferTimerHandler, Timer*, void);
+
+ // Internal methods for buffering
+ void ImpPrepareBufferDevice();
+ void ImpRestoreBackground() const ;
+ void ImpRestoreBackground(const vcl::Region& rRegionPixel) const;
+ void ImpSaveBackground(const vcl::Region& rRegion, OutputDevice* pPreRenderDevice);
+
+ OverlayManagerBuffered(OutputDevice& rOutputDevice);
+ virtual ~OverlayManagerBuffered() override;
+
+ public:
+ static rtl::Reference<OverlayManager> create(OutputDevice& rOutputDevice);
+
+ // complete redraw
+ virtual void completeRedraw(const vcl::Region& rRegion, OutputDevice* pPreRenderDevice = nullptr) const override;
+
+ // flush. Do buffered updates.
+ virtual void flush() override;
+
+ // invalidate the given range at local OutputDevice
+ virtual void invalidateRange(const basegfx::B2DRange& rRange) override;
+ };
+} // end of namespace sdr::overlay
+
+
+#endif // INCLUDED_SVX_INC_SDR_OVERLAY_OVERLAYMANAGERBUFFERED_HXX
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/svx/inc/sdr/overlay/overlayobjectcell.hxx b/svx/inc/sdr/overlay/overlayobjectcell.hxx
new file mode 100644
index 0000000000..566f8156d8
--- /dev/null
+++ b/svx/inc/sdr/overlay/overlayobjectcell.hxx
@@ -0,0 +1,50 @@
+/* -*- 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 <svx/sdr/overlay/overlayobject.hxx>
+
+#include <vector>
+
+
+namespace sdr::overlay
+ {
+ // OverlayObjectCell - used for cell cursor, selection and AutoFill handle
+
+ class OverlayObjectCell final : public OverlayObject
+ {
+ public:
+ typedef ::std::vector< basegfx::B2DRange > RangeVector;
+
+ private:
+ RangeVector maRectangles;
+
+ // geometry creation for OverlayObject
+ virtual drawinglayer::primitive2d::Primitive2DContainer createOverlayObjectPrimitive2DSequence() override;
+
+ public:
+ OverlayObjectCell( const Color& rColor, RangeVector&& rRects);
+ virtual ~OverlayObjectCell() override;
+ };
+
+} // end of namespace sdr::overlay
+
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/svx/inc/sdr/overlay/overlayrectangle.hxx b/svx/inc/sdr/overlay/overlayrectangle.hxx
new file mode 100644
index 0000000000..399a9d5c97
--- /dev/null
+++ b/svx/inc/sdr/overlay/overlayrectangle.hxx
@@ -0,0 +1,65 @@
+/* -*- 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_INC_SDR_OVERLAY_OVERLAYRECTANGLE_HXX
+#define INCLUDED_SVX_INC_SDR_OVERLAY_OVERLAYRECTANGLE_HXX
+
+#include <svx/sdr/overlay/overlayobject.hxx>
+
+namespace tools { class PolyPolygon; }
+
+namespace sdr::overlay
+ {
+ class OverlayRectangle final : public OverlayObjectWithBasePosition
+ {
+ // geometric definitions
+ basegfx::B2DPoint maSecondPosition;
+ const double mfTransparence;
+ const double mfDiscreteGrow;
+ const double mfDiscreteShrink;
+ const double mfRotation;
+
+ // #i53216# added CursorBlinkTime (in ms)
+ sal_uInt32 mnBlinkTime;
+
+ // Flag to remember which state to draw. Inited with false (0)
+ bool mbOverlayState : 1;
+
+ // geometry creation for OverlayObject
+ virtual drawinglayer::primitive2d::Primitive2DContainer createOverlayObjectPrimitive2DSequence() override;
+
+ public:
+ OverlayRectangle(
+ const basegfx::B2DPoint& rBasePosition,
+ const basegfx::B2DPoint& rSecondPosition,
+ const Color& rHatchColor,
+ double fTransparence,
+ double fDiscreteGrow,
+ double fDiscreteShrink,
+ double fRotation,
+ bool bAnimate);
+
+ // execute event from base class sdr::animation::Event. Default
+ // implementation does nothing and does not create a new event.
+ virtual void Trigger(sal_uInt32 nTime) override;
+ };
+} // end of namespace sdr::overlay
+
+#endif // INCLUDED_SVX_INC_SDR_OVERLAY_OVERLAYRECTANGLE_HXX
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/svx/inc/sdr/overlay/overlayrollingrectangle.hxx b/svx/inc/sdr/overlay/overlayrollingrectangle.hxx
new file mode 100644
index 0000000000..ecdfd1a502
--- /dev/null
+++ b/svx/inc/sdr/overlay/overlayrollingrectangle.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/.
+ *
+ * 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_INC_SDR_OVERLAY_OVERLAYROLLINGRECTANGLE_HXX
+#define INCLUDED_SVX_INC_SDR_OVERLAY_OVERLAYROLLINGRECTANGLE_HXX
+
+#include <svx/sdr/overlay/overlayobject.hxx>
+
+
+namespace sdr::overlay
+ {
+ class OverlayRollingRectangleStriped final : public OverlayObjectWithBasePosition
+ {
+ // second position in pixel
+ basegfx::B2DPoint maSecondPosition;
+
+ // Flag to switch on/off long lines to the OutputDevice bounds
+ bool mbExtendedLines : 1;
+
+ // Flag to switch on/off the bounds itself
+ bool mbShowBounds : 1;
+
+ // geometry creation for OverlayObject
+ virtual drawinglayer::primitive2d::Primitive2DContainer createOverlayObjectPrimitive2DSequence() override;
+
+ public:
+ OverlayRollingRectangleStriped(
+ const basegfx::B2DPoint& rBasePos,
+ const basegfx::B2DPoint& rSecondPos,
+ bool bExtendedLines,
+ bool bShowBounds = true);
+ virtual ~OverlayRollingRectangleStriped() override;
+
+ // change second position
+ const basegfx::B2DPoint& getSecondPosition() const { return maSecondPosition; }
+ void setSecondPosition(const basegfx::B2DPoint& rNew);
+
+ // react on stripe definition change
+ virtual void stripeDefinitionHasChanged() override;
+ };
+} // end of namespace sdr::overlay
+
+
+#endif // INCLUDED_SVX_INC_SDR_OVERLAY_OVERLAYROLLINGRECTANGLE_HXX
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/svx/inc/sdr/overlay/overlaytools.hxx b/svx/inc/sdr/overlay/overlaytools.hxx
new file mode 100644
index 0000000000..3b0e1be438
--- /dev/null
+++ b/svx/inc/sdr/overlay/overlaytools.hxx
@@ -0,0 +1,289 @@
+/* -*- 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_INC_SDR_OVERLAY_OVERLAYTOOLS_HXX
+#define INCLUDED_SVX_INC_SDR_OVERLAY_OVERLAYTOOLS_HXX
+
+#include <drawinglayer/primitive2d/primitivetools2d.hxx>
+#include <vcl/bitmapex.hxx>
+#include <basegfx/vector/b2dsize.hxx>
+
+namespace drawinglayer::primitive2d {
+
+class OverlayStaticRectanglePrimitive final : public DiscreteMetricDependentPrimitive2D
+{
+private:
+ basegfx::B2DPoint maPosition;
+ basegfx::B2DSize maSize;
+
+ // the graphic definition
+ basegfx::BColor maStrokeColor;
+ basegfx::BColor maFillColor;
+ double mfTransparence;
+
+ // the rotation of the primitive itself
+ double mfRotation;
+
+ virtual void create2DDecomposition(Primitive2DContainer& rContainer, const geometry::ViewInformation2D& rViewInformation) const override;
+
+public:
+ OverlayStaticRectanglePrimitive(
+ const basegfx::B2DPoint& rPosition,
+ const basegfx::B2DSize& rSize,
+ const basegfx::BColor& rStrokeColor,
+ const basegfx::BColor& rFillColor,
+ double fTransparence,
+ double fRotation);
+
+ // compare operator
+ virtual bool operator==( const BasePrimitive2D& rPrimitive ) const override;
+
+ virtual sal_uInt32 getPrimitive2DID() const override;
+};
+
+} // end of namespace drawinglayer::primitive2d
+
+// Overlay helper class which holds a BotmapEx which is to be visualized
+// at the given logic position with the Bitmap's pixel size, unscaled and
+// unrotated (like a marker). The discrete pixel on the bitmap associated
+// with the target position is given in discrete X,Y coordinates
+namespace drawinglayer::primitive2d
+ {
+ class OverlayBitmapExPrimitive final : public DiscreteMetricDependentPrimitive2D
+ {
+ private:
+ // The BitmapEx to use, PixelSize is used
+ BitmapEx maBitmapEx;
+
+ // The logic position
+ basegfx::B2DPoint maBasePosition;
+
+ // The pixel inside the BitmapEx which is associated with
+ // the target position (offset in the bitmap)
+ sal_uInt16 mnCenterX;
+ sal_uInt16 mnCenterY;
+
+ // evtl. rotation and shear around center
+ double mfShearX;
+ double mfRotation;
+
+ virtual void create2DDecomposition(Primitive2DContainer& rContainer, const geometry::ViewInformation2D& rViewInformation) const override;
+
+ public:
+ OverlayBitmapExPrimitive(
+ const BitmapEx& rBitmapEx,
+ const basegfx::B2DPoint& rBasePosition,
+ sal_uInt16 nCenterX,
+ sal_uInt16 nCenterY,
+ double fShearX,
+ double fRotation);
+
+ // data access
+ const BitmapEx& getBitmapEx() const { return maBitmapEx; }
+ const basegfx::B2DPoint& getBasePosition() const { return maBasePosition; }
+ sal_uInt16 getCenterX() const { return mnCenterX; }
+ sal_uInt16 getCenterY() const { return mnCenterY; }
+ double getShearX() const { return mfShearX; }
+ double getRotation() const { return mfRotation; }
+
+ // compare operator
+ virtual bool operator==( const BasePrimitive2D& rPrimitive ) const override;
+
+ virtual sal_uInt32 getPrimitive2DID() const override;
+ };
+} // end of namespace drawinglayer::primitive2d
+
+
+// Overlay helper class for a crosshair
+namespace drawinglayer::primitive2d
+ {
+ class OverlayCrosshairPrimitive final : public ViewportDependentPrimitive2D
+ {
+ private:
+ // The logic position
+ basegfx::B2DPoint maBasePosition;
+
+ // The stripe colors and length
+ basegfx::BColor maRGBColorA;
+ basegfx::BColor maRGBColorB;
+ double mfDiscreteDashLength;
+
+ virtual void create2DDecomposition(Primitive2DContainer& rContainer, const geometry::ViewInformation2D& rViewInformation) const override;
+
+ public:
+ OverlayCrosshairPrimitive(
+ const basegfx::B2DPoint& rBasePosition,
+ const basegfx::BColor& rRGBColorA,
+ const basegfx::BColor& rRGBColorB,
+ double fDiscreteDashLength);
+
+ // data access
+ const basegfx::B2DPoint& getBasePosition() const { return maBasePosition; }
+ const basegfx::BColor& getRGBColorA() const { return maRGBColorA; }
+ const basegfx::BColor& getRGBColorB() const { return maRGBColorB; }
+ double getDiscreteDashLength() const { return mfDiscreteDashLength; }
+
+ // compare operator
+ virtual bool operator==( const BasePrimitive2D& rPrimitive ) const override;
+
+ virtual sal_uInt32 getPrimitive2DID() const override;
+ };
+} // end of namespace drawinglayer::primitive2d
+
+
+// Overlay helper class for a hatch rectangle as used e.g. for text object
+// selection highlighting
+namespace drawinglayer::primitive2d
+ {
+ class OverlayRectanglePrimitive final : public DiscreteMetricDependentPrimitive2D
+ {
+ private:
+ // the logic rectangle definition
+ basegfx::B2DRange maObjectRange;
+
+ // the graphic definition
+ basegfx::BColor maColor;
+ double mfTransparence;
+
+ // the discrete grow and shrink of the box
+ double mfDiscreteGrow;
+ double mfDiscreteShrink;
+
+ // the rotation of the primitive itself
+ double mfRotation;
+
+ virtual void create2DDecomposition(Primitive2DContainer& rContainer, const geometry::ViewInformation2D& rViewInformation) const override;
+
+ public:
+ OverlayRectanglePrimitive(
+ const basegfx::B2DRange& rObjectRange,
+ const basegfx::BColor& rColor,
+ double fTransparence,
+ double fDiscreteGrow,
+ double fDiscreteShrink,
+ double fRotation);
+
+ // data access
+ const basegfx::B2DRange& getObjectRange() const { return maObjectRange; }
+ const basegfx::BColor& getColor() const { return maColor; }
+ double getTransparence() const { return mfTransparence; }
+ double getDiscreteGrow() const { return mfDiscreteGrow; }
+ double getDiscreteShrink() const { return mfDiscreteShrink; }
+ double getRotation() const { return mfRotation; }
+
+ // compare operator
+ virtual bool operator==( const BasePrimitive2D& rPrimitive ) const override;
+
+ virtual sal_uInt32 getPrimitive2DID() const override;
+ };
+} // end of namespace drawinglayer::primitive2d
+
+
+// Overlay helper class for a striped helpline
+
+namespace drawinglayer::primitive2d
+ {
+ enum HelplineStyle
+ {
+ HELPLINESTYLE_POINT,
+ HELPLINESTYLE_VERTICAL,
+ HELPLINESTYLE_HORIZONTAL
+ };
+
+ class OverlayHelplineStripedPrimitive final : public ViewportDependentPrimitive2D
+ {
+ private:
+ // The logic position
+ basegfx::B2DPoint maBasePosition;
+
+ // the style
+ HelplineStyle meStyle;
+
+ // The stripe colors and length
+ basegfx::BColor maRGBColorA;
+ basegfx::BColor maRGBColorB;
+ double mfDiscreteDashLength;
+
+ virtual void create2DDecomposition(Primitive2DContainer& rContainer, const geometry::ViewInformation2D& rViewInformation) const override;
+
+ public:
+ OverlayHelplineStripedPrimitive(
+ const basegfx::B2DPoint& rBasePosition,
+ HelplineStyle eStyle,
+ const basegfx::BColor& rRGBColorA,
+ const basegfx::BColor& rRGBColorB,
+ double fDiscreteDashLength);
+
+ // data access
+ const basegfx::B2DPoint& getBasePosition() const { return maBasePosition; }
+ HelplineStyle getStyle() const { return meStyle; }
+ const basegfx::BColor& getRGBColorA() const { return maRGBColorA; }
+ const basegfx::BColor& getRGBColorB() const { return maRGBColorB; }
+ double getDiscreteDashLength() const { return mfDiscreteDashLength; }
+
+ // compare operator
+ virtual bool operator==( const BasePrimitive2D& rPrimitive ) const override;
+
+ virtual sal_uInt32 getPrimitive2DID() const override;
+ };
+} // end of namespace drawinglayer::primitive2d
+
+
+// Overlay helper class for rolling rectangle helplines. This primitive is
+// only for the extended lines to the ends of the view
+
+namespace drawinglayer::primitive2d
+ {
+ class OverlayRollingRectanglePrimitive final : public ViewportDependentPrimitive2D
+ {
+ private:
+ // The logic range
+ basegfx::B2DRange maRollingRectangle;
+
+ // The stripe colors and length
+ basegfx::BColor maRGBColorA;
+ basegfx::BColor maRGBColorB;
+ double mfDiscreteDashLength;
+
+ virtual void create2DDecomposition(Primitive2DContainer& rContainer, const geometry::ViewInformation2D& rViewInformation) const override;
+
+ public:
+ OverlayRollingRectanglePrimitive(
+ const basegfx::B2DRange& aRollingRectangle,
+ const basegfx::BColor& rRGBColorA,
+ const basegfx::BColor& rRGBColorB,
+ double fDiscreteDashLength);
+
+ // data access
+ const basegfx::B2DRange& getRollingRectangle() const { return maRollingRectangle; }
+ const basegfx::BColor& getRGBColorA() const { return maRGBColorA; }
+ const basegfx::BColor& getRGBColorB() const { return maRGBColorB; }
+ double getDiscreteDashLength() const { return mfDiscreteDashLength; }
+
+ // compare operator
+ virtual bool operator==( const BasePrimitive2D& rPrimitive ) const override;
+
+ virtual sal_uInt32 getPrimitive2DID() const override;
+ };
+} // end of namespace drawinglayer::primitive2d
+
+
+#endif // INCLUDED_SVX_INC_SDR_OVERLAY_OVERLAYTOOLS_HXX
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/svx/inc/sdr/overlay/overlaytriangle.hxx b/svx/inc/sdr/overlay/overlaytriangle.hxx
new file mode 100644
index 0000000000..0601122a5e
--- /dev/null
+++ b/svx/inc/sdr/overlay/overlaytriangle.hxx
@@ -0,0 +1,45 @@
+/* -*- 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 <svx/sdr/overlay/overlayobject.hxx>
+
+namespace sdr::overlay
+ {
+ class OverlayTriangle final : public OverlayObjectWithBasePosition
+ {
+ // second and third position in pixel
+ basegfx::B2DPoint maSecondPosition;
+ basegfx::B2DPoint maThirdPosition;
+
+ // geometry creation for OverlayObject
+ virtual drawinglayer::primitive2d::Primitive2DContainer createOverlayObjectPrimitive2DSequence() override;
+
+ public:
+ OverlayTriangle(
+ const basegfx::B2DPoint& rBasePos,
+ const basegfx::B2DPoint& rSecondPos,
+ const basegfx::B2DPoint& rThirdPos,
+ Color aTriangleColor);
+ virtual ~OverlayTriangle() override;
+ };
+} // end of namespace sdr::overlay
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/svx/inc/sdr/primitive2d/primitivefactory2d.hxx b/svx/inc/sdr/primitive2d/primitivefactory2d.hxx
new file mode 100644
index 0000000000..eb1c8fd9b9
--- /dev/null
+++ b/svx/inc/sdr/primitive2d/primitivefactory2d.hxx
@@ -0,0 +1,68 @@
+/* -*- 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 <drawinglayer/primitive2d/Primitive2DVisitor.hxx>
+#include <com/sun/star/graphic/XPrimitiveFactory2D.hpp>
+#include <com/sun/star/lang/XServiceInfo.hpp>
+#include <comphelper/compbase.hxx>
+#include <cppuhelper/supportsservice.hxx>
+
+typedef comphelper::WeakComponentImplHelper<css::graphic::XPrimitiveFactory2D,
+ css::lang::XServiceInfo>
+ PrimitiveFactory2DImplBase;
+
+// base class for C++ implementation of css::graphic::XPrimitiveFactory2D
+class PrimitiveFactory2D final : public PrimitiveFactory2DImplBase
+{
+public:
+ PrimitiveFactory2D() {}
+
+ // Methods from XPrimitiveFactory2D
+ virtual css::uno::Sequence<css::uno::Reference<css::graphic::XPrimitive2D>>
+ SAL_CALL createPrimitivesFromXShape(
+ const css::uno::Reference<css::drawing::XShape>& xShape,
+ const css::uno::Sequence<css::beans::PropertyValue>& aParms) override;
+ virtual css::uno::Sequence<css::uno::Reference<css::graphic::XPrimitive2D>>
+ SAL_CALL createPrimitivesFromXDrawPage(
+ const css::uno::Reference<css::drawing::XDrawPage>& xDrawPage,
+ const css::uno::Sequence<css::beans::PropertyValue>& aParms) override;
+
+ static void createPrimitivesFromXShape(
+ const css::uno::Reference<css::drawing::XShape>& xShape,
+ const css::uno::Sequence<css::beans::PropertyValue>& /*aParms*/,
+ drawinglayer::primitive2d::Primitive2DDecompositionVisitor& rVisitor);
+
+ OUString SAL_CALL getImplementationName() override
+ {
+ return "com.sun.star.comp.graphic.PrimitiveFactory2D";
+ }
+
+ sal_Bool SAL_CALL supportsService(OUString const& ServiceName) override
+ {
+ return cppu::supportsService(this, ServiceName);
+ }
+
+ css::uno::Sequence<OUString> SAL_CALL getSupportedServiceNames() override
+ {
+ return { "com.sun.star.graphic.PrimitiveFactory2D" };
+ }
+};
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/svx/inc/sdr/primitive2d/sdrattributecreator.hxx b/svx/inc/sdr/primitive2d/sdrattributecreator.hxx
new file mode 100644
index 0000000000..92a2b102ff
--- /dev/null
+++ b/svx/inc/sdr/primitive2d/sdrattributecreator.hxx
@@ -0,0 +1,129 @@
+/* -*- 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 <sal/types.h>
+#include <svx/svxdllapi.h>
+
+
+// predefines
+class SfxItemSet;
+class SdrText;
+
+namespace drawinglayer::attribute {
+ class SdrLineAttribute;
+ class SdrLineStartEndAttribute;
+ class SdrShadowAttribute;
+ class SdrGlowAttribute;
+ class SdrFillAttribute;
+ class SdrTextAttribute;
+ class FillGradientAttribute;
+ class SdrFillGraphicAttribute;
+ class SdrEffectsTextAttribute;
+ class SdrLineEffectsTextAttribute;
+ class SdrLineFillEffectsTextAttribute;
+ class SdrLineFillShadowAttribute3D;
+ class SdrSceneAttribute;
+ class SdrLightingAttribute;
+ class SdrFillTextAttribute;
+}
+
+namespace basegfx {
+ class B2DRange;
+}
+
+
+namespace drawinglayer::primitive2d
+ {
+ // SdrAttribute creators
+ attribute::SdrLineAttribute SVXCORE_DLLPUBLIC createNewSdrLineAttribute(
+ const SfxItemSet& rSet);
+
+ attribute::SdrLineStartEndAttribute SVXCORE_DLLPUBLIC createNewSdrLineStartEndAttribute(
+ const SfxItemSet& rSet,
+ double fWidth);
+
+ attribute::SdrShadowAttribute createNewSdrShadowAttribute(
+ const SfxItemSet& rSet);
+
+ attribute::SdrFillAttribute SVXCORE_DLLPUBLIC createNewSdrFillAttribute(
+ const SfxItemSet& rSet);
+
+ // #i101508# Support handing over given text-to-border distances
+ attribute::SdrTextAttribute createNewSdrTextAttribute(
+ const SfxItemSet& rSet,
+ const SdrText& rText,
+ const sal_Int32* pLeft = nullptr,
+ const sal_Int32* pUpper = nullptr,
+ const sal_Int32* pRight = nullptr,
+ const sal_Int32* pLower = nullptr);
+
+ attribute::FillGradientAttribute SVXCORE_DLLPUBLIC createNewTransparenceGradientAttribute(
+ const SfxItemSet& rSet);
+
+ attribute::SdrFillGraphicAttribute createNewSdrFillGraphicAttribute(
+ const SfxItemSet& rSet);
+
+ attribute::SdrEffectsTextAttribute createNewSdrEffectsTextAttribute(
+ const SfxItemSet& rSet,
+ const SdrText* pText,
+ bool bSuppressText); // #i98072# added option to suppress text on demand
+
+ attribute::SdrLineEffectsTextAttribute createNewSdrLineEffectsTextAttribute(
+ const SfxItemSet& rSet,
+ const SdrText* pText);
+
+ attribute::SdrLineFillEffectsTextAttribute createNewSdrLineFillEffectsTextAttribute(
+ const SfxItemSet& rSet,
+ const SdrText* pText,
+ bool bHasContent, // used from OLE and graphic
+ bool bSuppressShadow = false); // used from SC notes
+
+ attribute::SdrLineFillShadowAttribute3D createNewSdrLineFillShadowAttribute(
+ const SfxItemSet& rSet,
+ bool bSuppressFill);
+
+ attribute::SdrSceneAttribute createNewSdrSceneAttribute(
+ const SfxItemSet& rSet);
+
+ attribute::SdrLightingAttribute createNewSdrLightingAttribute(
+ const SfxItemSet& rSet);
+
+ // #i101508# Support handing over given text-to-border distances
+ attribute::SdrFillTextAttribute createNewSdrFillTextAttribute(
+ const SfxItemSet& rSet,
+ const SdrText* pSdrText,
+ const sal_Int32* pLeft = nullptr,
+ const sal_Int32* pUpper = nullptr,
+ const sal_Int32* pRight = nullptr,
+ const sal_Int32* pLower = nullptr);
+
+ // helpers
+ void calculateRelativeCornerRadius(
+ sal_Int32 nRadius,
+ const ::basegfx::B2DRange& rObjectRange,
+ double& rfCornerRadiusX,
+ double& rfCornerRadiusY);
+
+
+} // end of namespace drawinglayer::primitive2d
+
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/svx/inc/sdr/primitive2d/sdrcaptionprimitive2d.hxx b/svx/inc/sdr/primitive2d/sdrcaptionprimitive2d.hxx
new file mode 100644
index 0000000000..eaa6665647
--- /dev/null
+++ b/svx/inc/sdr/primitive2d/sdrcaptionprimitive2d.hxx
@@ -0,0 +1,72 @@
+/* -*- 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_INC_SDR_PRIMITIVE2D_SDRCAPTIONPRIMITIVE2D_HXX
+#define INCLUDED_SVX_INC_SDR_PRIMITIVE2D_SDRCAPTIONPRIMITIVE2D_HXX
+
+#include <drawinglayer/primitive2d/BufferedDecompositionPrimitive2D.hxx>
+#include <basegfx/matrix/b2dhommatrix.hxx>
+#include <sdr/attribute/sdrlinefilleffectstextattribute.hxx>
+#include <basegfx/polygon/b2dpolygon.hxx>
+
+
+// predefines
+
+
+namespace drawinglayer::primitive2d
+ {
+ class SdrCaptionPrimitive2D final : public BufferedDecompositionPrimitive2D
+ {
+ private:
+ ::basegfx::B2DHomMatrix maTransform;
+ attribute::SdrLineFillEffectsTextAttribute maSdrLFSTAttribute;
+ ::basegfx::B2DPolygon maTail;
+ double mfCornerRadiusX; // [0.0..1.0] relative to 1/2 width
+ double mfCornerRadiusY; // [0.0..1.0] relative to 1/2 height
+
+ // local decomposition.
+ virtual void create2DDecomposition(Primitive2DContainer& rContainer, const geometry::ViewInformation2D& aViewInformation) const override;
+
+ public:
+ SdrCaptionPrimitive2D(
+ ::basegfx::B2DHomMatrix aTransform,
+ const attribute::SdrLineFillEffectsTextAttribute& rSdrLFSTAttribute,
+ ::basegfx::B2DPolygon aTail,
+ double fCornerRadiusX,
+ double fCornerRadiusY);
+
+ // compare operator
+ virtual bool operator==(const BasePrimitive2D& rPrimitive) const override;
+
+ // data access
+ const ::basegfx::B2DHomMatrix& getTransform() const { return maTransform; }
+ const attribute::SdrLineFillEffectsTextAttribute& getSdrLFSTAttribute() const { return maSdrLFSTAttribute; }
+ const ::basegfx::B2DPolygon& getTail() const { return maTail; }
+ double getCornerRadiusX() const { return mfCornerRadiusX; }
+ double getCornerRadiusY() const { return mfCornerRadiusY; }
+
+ // provide unique ID
+ virtual sal_uInt32 getPrimitive2DID() const override;
+ };
+} // end of namespace drawinglayer::primitive2d
+
+
+#endif // INCLUDED_SVX_INC_SDR_PRIMITIVE2D_SDRCAPTIONPRIMITIVE2D_HXX
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/svx/inc/sdr/primitive2d/sdrconnectorprimitive2d.hxx b/svx/inc/sdr/primitive2d/sdrconnectorprimitive2d.hxx
new file mode 100644
index 0000000000..9b7d6648d0
--- /dev/null
+++ b/svx/inc/sdr/primitive2d/sdrconnectorprimitive2d.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/.
+ *
+ * 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_INC_SDR_PRIMITIVE2D_SDRCONNECTORPRIMITIVE2D_HXX
+#define INCLUDED_SVX_INC_SDR_PRIMITIVE2D_SDRCONNECTORPRIMITIVE2D_HXX
+
+#include <drawinglayer/primitive2d/BufferedDecompositionPrimitive2D.hxx>
+#include <sdr/attribute/sdrlineeffectstextattribute.hxx>
+#include <basegfx/polygon/b2dpolygon.hxx>
+
+
+// predefines
+
+
+namespace drawinglayer::primitive2d
+ {
+ class SdrConnectorPrimitive2D final : public BufferedDecompositionPrimitive2D
+ {
+ private:
+ attribute::SdrLineEffectsTextAttribute maSdrLSTAttribute;
+ ::basegfx::B2DPolygon maUnitPolygon;
+
+ // local decomposition.
+ virtual void create2DDecomposition(Primitive2DContainer& rContainer, const geometry::ViewInformation2D& aViewInformation) const override;
+
+ public:
+ SdrConnectorPrimitive2D(
+ const attribute::SdrLineEffectsTextAttribute& rSdrLSTAttribute,
+ ::basegfx::B2DPolygon aUnitPolygon);
+
+ // data access
+ const attribute::SdrLineEffectsTextAttribute& getSdrLSTAttribute() const { return maSdrLSTAttribute; }
+ const ::basegfx::B2DPolygon& getUnitPolygon() const { return maUnitPolygon; }
+
+ // compare operator
+ virtual bool operator==(const BasePrimitive2D& rPrimitive) const override;
+
+ // provide unique ID
+ virtual sal_uInt32 getPrimitive2DID() const override;
+ };
+} // end of namespace drawinglayer::primitive2d
+
+
+#endif // INCLUDED_SVX_INC_SDR_PRIMITIVE2D_SDRCONNECTORPRIMITIVE2D_HXX
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/svx/inc/sdr/primitive2d/sdrcustomshapeprimitive2d.hxx b/svx/inc/sdr/primitive2d/sdrcustomshapeprimitive2d.hxx
new file mode 100644
index 0000000000..cef7f29f59
--- /dev/null
+++ b/svx/inc/sdr/primitive2d/sdrcustomshapeprimitive2d.hxx
@@ -0,0 +1,80 @@
+/* -*- 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_INC_SDR_PRIMITIVE2D_SDRCUSTOMSHAPEPRIMITIVE2D_HXX
+#define INCLUDED_SVX_INC_SDR_PRIMITIVE2D_SDRCUSTOMSHAPEPRIMITIVE2D_HXX
+
+#include <drawinglayer/primitive2d/BufferedDecompositionPrimitive2D.hxx>
+#include <basegfx/matrix/b2dhommatrix.hxx>
+#include <sdr/attribute/sdreffectstextattribute.hxx>
+
+
+// predefines
+
+
+namespace drawinglayer::primitive2d
+ {
+ class SdrCustomShapePrimitive2D final : public BufferedDecompositionPrimitive2D
+ {
+ private:
+ attribute::SdrEffectsTextAttribute maSdrSTAttribute;
+ Primitive2DContainer maSubPrimitives;
+ basegfx::B2DHomMatrix maTextBox;
+
+ // defines if SdrTextWordWrapItem was set at SdrObjCustomShape which means
+ // that the text needs to be block formatted
+ bool mbWordWrap : 1;
+
+ // defines that the object contains/is a 3D AutoShape. Needed for
+ // making exceptions with shadow generation
+ bool mb3DShape : 1;
+
+ basegfx::B2DHomMatrix maTransform;
+
+ // local decomposition.
+ virtual void create2DDecomposition(Primitive2DContainer& rContainer, const geometry::ViewInformation2D& aViewInformation) const override;
+
+ public:
+ SdrCustomShapePrimitive2D(
+ const attribute::SdrEffectsTextAttribute& rSdrSTAttribute,
+ Primitive2DContainer&& rSubPrimitives,
+ basegfx::B2DHomMatrix aTextBox,
+ bool bWordWrap,
+ bool b3DShape,
+ basegfx::B2DHomMatrix aObjectMatrix);
+
+ // data access
+ const attribute::SdrEffectsTextAttribute& getSdrSTAttribute() const { return maSdrSTAttribute; }
+ const Primitive2DContainer& getSubPrimitives() const { return maSubPrimitives; }
+ const basegfx::B2DHomMatrix& getTextBox() const { return maTextBox; }
+ bool getWordWrap() const { return mbWordWrap; }
+ bool get3DShape() const { return mb3DShape; }
+
+ // compare operator
+ virtual bool operator==(const BasePrimitive2D& rPrimitive) const override;
+
+ // provide unique ID
+ virtual sal_uInt32 getPrimitive2DID() const override;
+ };
+} // end of namespace drawinglayer::primitive2d
+
+
+#endif // INCLUDED_SVX_INC_SDR_PRIMITIVE2D_SDRCUSTOMSHAPEPRIMITIVE2D_HXX
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/svx/inc/sdr/primitive2d/sdrdecompositiontools.hxx b/svx/inc/sdr/primitive2d/sdrdecompositiontools.hxx
new file mode 100644
index 0000000000..ac65e0eda3
--- /dev/null
+++ b/svx/inc/sdr/primitive2d/sdrdecompositiontools.hxx
@@ -0,0 +1,88 @@
+/* -*- 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 <basegfx/matrix/b2dhommatrix.hxx>
+#include <drawinglayer/attribute/sdrglowattribute.hxx>
+#include <drawinglayer/primitive2d/Primitive2DContainer.hxx>
+
+#include <svx/svxdllapi.h>
+
+// predefines
+namespace basegfx {
+ class B2DPolygon;
+ class B2DPolyPolygon;
+ class B2DHomMatrix;
+}
+
+namespace drawinglayer::attribute {
+ class SdrFillAttribute;
+ class SdrLineAttribute;
+ class FillGradientAttribute;
+ class SdrShadowAttribute;
+ class SdrLineStartEndAttribute;
+ class SdrTextAttribute;
+}
+
+
+namespace drawinglayer::primitive2d
+ {
+ Primitive2DReference SVXCORE_DLLPUBLIC createPolyPolygonFillPrimitive(
+ const basegfx::B2DPolyPolygon& rPolyPolygon,
+ const attribute::SdrFillAttribute& rFill,
+ const attribute::FillGradientAttribute& rFillGradient);
+
+ Primitive2DReference SVXCORE_DLLPUBLIC createPolyPolygonFillPrimitive(
+ const basegfx::B2DPolyPolygon& rPolyPolygon,
+ const basegfx::B2DRange& rDefinitionRange,
+ const attribute::SdrFillAttribute& rFill,
+ const attribute::FillGradientAttribute& rFillGradient);
+
+ Primitive2DReference SVXCORE_DLLPUBLIC createPolygonLinePrimitive(
+ const basegfx::B2DPolygon& rPolygon,
+ const attribute::SdrLineAttribute& rLine,
+ const attribute::SdrLineStartEndAttribute& rStroke);
+
+ Primitive2DReference SVXCORE_DLLPUBLIC createTextPrimitive(
+ const basegfx::B2DPolyPolygon& rUnitPolyPolygon,
+ const basegfx::B2DHomMatrix& rObjectTransform,
+ const attribute::SdrTextAttribute& rText,
+ const attribute::SdrLineAttribute& rStroke,
+ bool bCellText,
+ bool bWordWrap);
+
+ Primitive2DContainer SVXCORE_DLLPUBLIC createEmbeddedShadowPrimitive(
+ Primitive2DContainer&& rContent,
+ const attribute::SdrShadowAttribute& rShadow,
+ const basegfx::B2DHomMatrix& rObjectMatrix = basegfx::B2DHomMatrix(),
+ const Primitive2DContainer* pContentForShadow = nullptr);
+
+ Primitive2DContainer SVXCORE_DLLPUBLIC createEmbeddedGlowPrimitive(
+ Primitive2DContainer&& rContent,
+ const attribute::SdrGlowAttribute& rGlow);
+
+ Primitive2DContainer SVXCORE_DLLPUBLIC createEmbeddedSoftEdgePrimitive(
+ Primitive2DContainer&& aContent,
+ sal_Int32 nRadius);
+
+} // end of namespace drawinglayer::primitive2d
+
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/svx/inc/sdr/primitive2d/sdrellipseprimitive2d.hxx b/svx/inc/sdr/primitive2d/sdrellipseprimitive2d.hxx
new file mode 100644
index 0000000000..3eacda3eee
--- /dev/null
+++ b/svx/inc/sdr/primitive2d/sdrellipseprimitive2d.hxx
@@ -0,0 +1,94 @@
+/* -*- 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_INC_SDR_PRIMITIVE2D_SDRELLIPSEPRIMITIVE2D_HXX
+#define INCLUDED_SVX_INC_SDR_PRIMITIVE2D_SDRELLIPSEPRIMITIVE2D_HXX
+
+#include <drawinglayer/primitive2d/BufferedDecompositionPrimitive2D.hxx>
+#include <basegfx/matrix/b2dhommatrix.hxx>
+#include <sdr/attribute/sdrlinefilleffectstextattribute.hxx>
+
+
+// predefines
+
+
+namespace drawinglayer::primitive2d
+ {
+ class SdrEllipsePrimitive2D : public BufferedDecompositionPrimitive2D
+ {
+ private:
+ ::basegfx::B2DHomMatrix maTransform;
+ attribute::SdrLineFillEffectsTextAttribute maSdrLFSTAttribute;
+
+ // local decomposition.
+ virtual void create2DDecomposition(Primitive2DContainer& rContainer, const geometry::ViewInformation2D& aViewInformation) const override;
+
+ public:
+ SdrEllipsePrimitive2D(
+ ::basegfx::B2DHomMatrix aTransform,
+ const attribute::SdrLineFillEffectsTextAttribute& rSdrLFSTAttribute);
+
+ // data access
+ const ::basegfx::B2DHomMatrix& getTransform() const { return maTransform; }
+ const attribute::SdrLineFillEffectsTextAttribute& getSdrLFSTAttribute() const { return maSdrLFSTAttribute; }
+
+ // compare operator
+ virtual bool operator==(const BasePrimitive2D& rPrimitive) const override;
+
+ // provide unique ID
+ virtual sal_uInt32 getPrimitive2DID() const override;
+ };
+} // end of namespace drawinglayer::primitive2d
+
+
+namespace drawinglayer::primitive2d
+ {
+ class SdrEllipseSegmentPrimitive2D final : public SdrEllipsePrimitive2D
+ {
+ private:
+ double mfStartAngle;
+ double mfEndAngle;
+
+ bool mbCloseSegment : 1;
+ bool mbCloseUsingCenter : 1;
+
+ // local decomposition.
+ virtual void create2DDecomposition(Primitive2DContainer& rContainer, const geometry::ViewInformation2D& aViewInformation) const override;
+
+ public:
+ SdrEllipseSegmentPrimitive2D(
+ const ::basegfx::B2DHomMatrix& rTransform,
+ const attribute::SdrLineFillEffectsTextAttribute& rSdrLFSTAttribute,
+ double fStartAngle,
+ double fEndAngle,
+ bool bCloseSegment,
+ bool bCloseUsingCenter);
+
+ // compare operator
+ virtual bool operator==(const BasePrimitive2D& rPrimitive) const override;
+
+ // provide unique ID
+ virtual sal_uInt32 getPrimitive2DID() const override;
+ };
+} // end of namespace drawinglayer::primitive2d
+
+
+#endif // INCLUDED_SVX_INC_SDR_PRIMITIVE2D_SDRELLIPSEPRIMITIVE2D_HXX
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/svx/inc/sdr/primitive2d/sdrgrafprimitive2d.hxx b/svx/inc/sdr/primitive2d/sdrgrafprimitive2d.hxx
new file mode 100644
index 0000000000..16f84c86bc
--- /dev/null
+++ b/svx/inc/sdr/primitive2d/sdrgrafprimitive2d.hxx
@@ -0,0 +1,65 @@
+/* -*- 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 <drawinglayer/primitive2d/BufferedDecompositionPrimitive2D.hxx>
+#include <basegfx/matrix/b2dhommatrix.hxx>
+#include <vcl/GraphicObject.hxx>
+#include <sdr/attribute/sdrlinefilleffectstextattribute.hxx>
+
+namespace drawinglayer::primitive2d
+{
+class SdrGrafPrimitive2D final : public BufferedDecompositionPrimitive2D
+{
+private:
+ ::basegfx::B2DHomMatrix maTransform;
+ attribute::SdrLineFillEffectsTextAttribute maSdrLFSTAttribute;
+ GraphicObject maGraphicObject;
+ GraphicAttr maGraphicAttr;
+
+ // local decomposition.
+ virtual void
+ create2DDecomposition(Primitive2DContainer& rContainer,
+ const geometry::ViewInformation2D& aViewInformation) const override;
+
+public:
+ SdrGrafPrimitive2D(::basegfx::B2DHomMatrix aTransform,
+ const attribute::SdrLineFillEffectsTextAttribute& rSdrLFSTAttribute,
+ const GraphicObject& rGraphicObject, const GraphicAttr& rGraphicAttr);
+
+ // data access
+ const ::basegfx::B2DHomMatrix& getTransform() const { return maTransform; }
+ const attribute::SdrLineFillEffectsTextAttribute& getSdrLFSTAttribute() const
+ {
+ return maSdrLFSTAttribute;
+ }
+ const GraphicObject& getGraphicObject() const { return maGraphicObject; }
+ const GraphicAttr& getGraphicAttr() const { return maGraphicAttr; }
+ bool isTransparent() const;
+
+ // compare operator
+ virtual bool operator==(const BasePrimitive2D& rPrimitive) const override;
+
+ // provide unique ID
+ virtual sal_uInt32 getPrimitive2DID() const override;
+};
+} // end of namespace drawinglayer::primitive2d
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/svx/inc/sdr/primitive2d/sdrmeasureprimitive2d.hxx b/svx/inc/sdr/primitive2d/sdrmeasureprimitive2d.hxx
new file mode 100644
index 0000000000..4bc8de10b5
--- /dev/null
+++ b/svx/inc/sdr/primitive2d/sdrmeasureprimitive2d.hxx
@@ -0,0 +1,118 @@
+/* -*- 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_INC_SDR_PRIMITIVE2D_SDRMEASUREPRIMITIVE2D_HXX
+#define INCLUDED_SVX_INC_SDR_PRIMITIVE2D_SDRMEASUREPRIMITIVE2D_HXX
+
+#include <drawinglayer/primitive2d/BufferedDecompositionPrimitive2D.hxx>
+#include <sdr/attribute/sdrlineeffectstextattribute.hxx>
+
+
+// predefines
+
+namespace drawinglayer::primitive2d {
+ enum MeasureTextPosition
+ {
+ MEASURETEXTPOSITION_AUTOMATIC,
+ MEASURETEXTPOSITION_NEGATIVE,
+ MEASURETEXTPOSITION_CENTERED,
+ MEASURETEXTPOSITION_POSITIVE
+ };
+}
+
+namespace drawinglayer::attribute {
+ class SdrLineAttribute;
+}
+
+
+namespace drawinglayer::primitive2d
+ {
+ class SdrMeasurePrimitive2D final : public BufferedDecompositionPrimitive2D
+ {
+ private:
+ attribute::SdrLineEffectsTextAttribute maSdrLSTAttribute;
+ basegfx::B2DPoint maStart;
+ basegfx::B2DPoint maEnd;
+ MeasureTextPosition meHorizontal;
+ MeasureTextPosition meVertical;
+ double mfDistance;
+ double mfUpper;
+ double mfLower;
+ double mfLeftDelta;
+ double mfRightDelta;
+
+ bool mbBelow : 1;
+ bool mbTextRotation : 1;
+ bool mbTextAutoAngle : 1;
+
+ // internal decomposition helper
+ Primitive2DReference impCreatePart(
+ const attribute::SdrLineAttribute& rLineAttribute,
+ const basegfx::B2DHomMatrix& rObjectMatrix,
+ const basegfx::B2DPoint& rStart,
+ const basegfx::B2DPoint& rEnd,
+ bool bLeftActive,
+ bool bRightActive) const;
+
+ // local decomposition.
+ virtual void create2DDecomposition(Primitive2DContainer& rContainer, const geometry::ViewInformation2D& aViewInformation) const override;
+
+ public:
+ SdrMeasurePrimitive2D(
+ const attribute::SdrLineEffectsTextAttribute& rSdrLSTAttribute,
+ const basegfx::B2DPoint& rStart,
+ const basegfx::B2DPoint& rEnd,
+ MeasureTextPosition eHorizontal,
+ MeasureTextPosition eVertical,
+ double fDistance,
+ double fUpper,
+ double fLower,
+ double fLeftDelta,
+ double fRightDelta,
+ bool bBelow,
+ bool bTextRotation,
+ bool bTextAutoAngle);
+
+ // data access
+ const attribute::SdrLineEffectsTextAttribute& getSdrLSTAttribute() const { return maSdrLSTAttribute; }
+ const basegfx::B2DPoint& getStart() const { return maStart; }
+ const basegfx::B2DPoint& getEnd() const { return maEnd; }
+ MeasureTextPosition getHorizontal() const { return meHorizontal; }
+ MeasureTextPosition getVertical() const { return meVertical; }
+ double getDistance() const { return mfDistance; }
+ double getUpper() const { return mfUpper; }
+ double getLower() const { return mfLower; }
+ double getLeftDelta() const { return mfLeftDelta; }
+ double getRightDelta() const { return mfRightDelta; }
+ bool getBelow() const { return mbBelow; }
+ bool getTextRotation() const { return mbTextRotation; }
+ bool getTextAutoAngle() const { return mbTextAutoAngle; }
+
+ // compare operator
+ virtual bool operator==(const BasePrimitive2D& rPrimitive) const override;
+
+ // provide unique ID
+ virtual sal_uInt32 getPrimitive2DID() const override;
+ };
+} // end of namespace drawinglayer::primitive2d
+
+
+#endif // INCLUDED_SVX_INC_SDR_PRIMITIVE2D_SDRMEASUREPRIMITIVE2D_HXX
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/svx/inc/sdr/primitive2d/sdrole2primitive2d.hxx b/svx/inc/sdr/primitive2d/sdrole2primitive2d.hxx
new file mode 100644
index 0000000000..59b5188bc3
--- /dev/null
+++ b/svx/inc/sdr/primitive2d/sdrole2primitive2d.hxx
@@ -0,0 +1,65 @@
+/* -*- 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_INC_SDR_PRIMITIVE2D_SDROLE2PRIMITIVE2D_HXX
+#define INCLUDED_SVX_INC_SDR_PRIMITIVE2D_SDROLE2PRIMITIVE2D_HXX
+
+#include <drawinglayer/primitive2d/baseprimitive2d.hxx>
+#include <basegfx/matrix/b2dhommatrix.hxx>
+#include <sdr/attribute/sdrlinefilleffectstextattribute.hxx>
+
+
+// predefines
+
+
+namespace drawinglayer::primitive2d
+ {
+ class SdrOle2Primitive2D final : public BasePrimitive2D
+ {
+ private:
+ Primitive2DContainer maOLEContent;
+ basegfx::B2DHomMatrix maTransform;
+ attribute::SdrLineFillEffectsTextAttribute maSdrLFSTAttribute;
+
+ public:
+ SdrOle2Primitive2D(
+ Primitive2DContainer&& rOLEContent,
+ basegfx::B2DHomMatrix aTransform,
+ const attribute::SdrLineFillEffectsTextAttribute& rSdrLFSTAttribute);
+
+ // data access
+ const Primitive2DContainer& getOLEContent() const { return maOLEContent; }
+ const basegfx::B2DHomMatrix& getTransform() const { return maTransform; }
+ const attribute::SdrLineFillEffectsTextAttribute& getSdrLFSTAttribute() const { return maSdrLFSTAttribute; }
+
+ // compare operator
+ virtual bool operator==(const BasePrimitive2D& rPrimitive) const override;
+
+ // local decomposition.
+ virtual void get2DDecomposition(Primitive2DDecompositionVisitor& rVisitor, const geometry::ViewInformation2D& aViewInformation) const override;
+
+ // provide unique ID
+ virtual sal_uInt32 getPrimitive2DID() const override;
+ };
+} // end of namespace drawinglayer::primitive2d
+
+
+#endif // INCLUDED_SVX_INC_SDR_PRIMITIVE2D_SDROLE2PRIMITIVE2D_HXX
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/svx/inc/sdr/primitive2d/sdrolecontentprimitive2d.hxx b/svx/inc/sdr/primitive2d/sdrolecontentprimitive2d.hxx
new file mode 100644
index 0000000000..20d6943997
--- /dev/null
+++ b/svx/inc/sdr/primitive2d/sdrolecontentprimitive2d.hxx
@@ -0,0 +1,73 @@
+/* -*- 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_INC_SDR_PRIMITIVE2D_SDROLECONTENTPRIMITIVE2D_HXX
+#define INCLUDED_SVX_INC_SDR_PRIMITIVE2D_SDROLECONTENTPRIMITIVE2D_HXX
+
+#include <drawinglayer/primitive2d/BufferedDecompositionPrimitive2D.hxx>
+#include <basegfx/matrix/b2dhommatrix.hxx>
+#include <unotools/weakref.hxx>
+
+
+// predefinitions
+
+class SdrOle2Obj;
+
+
+namespace drawinglayer::primitive2d
+ {
+ class SdrOleContentPrimitive2D final : public BufferedDecompositionPrimitive2D
+ {
+ private:
+ unotools::WeakReference<SdrOle2Obj> mpSdrOle2Obj;
+ basegfx::B2DHomMatrix maObjectTransform;
+
+ // #i104867# The GraphicVersion number to identify in operator== if
+ // the graphic has changed, but without fetching it (which may
+ // be expensive, e.g. triggering chart creation)
+ sal_uInt32 mnGraphicVersion;
+
+ // local decomposition.
+ virtual void create2DDecomposition(Primitive2DContainer& rContainer, const geometry::ViewInformation2D& aViewInformation) const override;
+
+ public:
+ SdrOleContentPrimitive2D(
+ const SdrOle2Obj& rSdrOle2Obj,
+ basegfx::B2DHomMatrix aObjectTransform,
+ sal_uInt32 nGraphicVersion
+ );
+
+ // compare operator
+ virtual bool operator==(const BasePrimitive2D& rPrimitive) const override;
+
+ // The default implementation will use getDecomposition results to create the range
+ virtual basegfx::B2DRange getB2DRange(const geometry::ViewInformation2D& rViewInformation) const override;
+
+ // data access
+ const basegfx::B2DHomMatrix& getObjectTransform() const { return maObjectTransform; }
+
+ // provide unique ID
+ virtual sal_uInt32 getPrimitive2DID() const override;
+ };
+} // end of namespace drawinglayer::primitive2d
+
+
+#endif // INCLUDED_SVX_INC_SDR_PRIMITIVE2D_SDROLECONTENTPRIMITIVE2D_HXX
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/svx/inc/sdr/primitive2d/sdrpathprimitive2d.hxx b/svx/inc/sdr/primitive2d/sdrpathprimitive2d.hxx
new file mode 100644
index 0000000000..68abc8067d
--- /dev/null
+++ b/svx/inc/sdr/primitive2d/sdrpathprimitive2d.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_INC_SDR_PRIMITIVE2D_SDRPATHPRIMITIVE2D_HXX
+#define INCLUDED_SVX_INC_SDR_PRIMITIVE2D_SDRPATHPRIMITIVE2D_HXX
+
+#include <drawinglayer/primitive2d/BufferedDecompositionPrimitive2D.hxx>
+#include <basegfx/matrix/b2dhommatrix.hxx>
+#include <sdr/attribute/sdrlinefilleffectstextattribute.hxx>
+#include <basegfx/polygon/b2dpolypolygon.hxx>
+
+
+// predefines
+
+
+namespace drawinglayer::primitive2d
+ {
+ class SdrPathPrimitive2D final : public BufferedDecompositionPrimitive2D
+ {
+ private:
+ basegfx::B2DHomMatrix maTransform;
+ attribute::SdrLineFillEffectsTextAttribute maSdrLFSTAttribute;
+ basegfx::B2DPolyPolygon maUnitPolyPolygon;
+
+ // OperationSmiley: Added to be able to define a FillGeometry different from local
+ // geometry. It is ignored when empty and/or equal to UnitPolyPolygon.
+ // If used and there is a fill, the object's geometry (maUnitPolyPolygon) will be filled,
+ // but UnitDefinitionPolyPolygon will be used to define the FillStyle. Thus when
+ // using the 'same' UnitDefinitionPolyPolygon for multiple definitions,
+ // all filled stuff using it will fit seamlessly together.
+ // 'same' is in quotes since it is a UnitPolygon, so being relative to the
+ // unit polygon of the local geometry (UnitPolyPolygon). The definition is complete
+ // when applying the also given transformation (maTransform)
+ basegfx::B2DPolyPolygon maUnitDefinitionPolyPolygon;
+
+ // local decomposition.
+ virtual void create2DDecomposition(Primitive2DContainer& rContainer, const geometry::ViewInformation2D& aViewInformation) const override;
+
+ public:
+ // OperationSmiley: Extended to UnitDefinitionPolyPolygon, but when needed
+ // a 2nd version without can be defined that just does not set the
+ // maUnitDefinitionPolyPolygon or set equal to UnitPolyPolygon
+ SdrPathPrimitive2D(
+ basegfx::B2DHomMatrix aTransform,
+ const attribute::SdrLineFillEffectsTextAttribute& rSdrLFSTAttribute,
+ basegfx::B2DPolyPolygon aUnitPolyPolygon,
+ basegfx::B2DPolyPolygon aUnitDefinitionPolyPolygon);
+
+ // data access
+ const basegfx::B2DHomMatrix& getTransform() const { return maTransform; }
+ const attribute::SdrLineFillEffectsTextAttribute& getSdrLFSTAttribute() const { return maSdrLFSTAttribute; }
+ const basegfx::B2DPolyPolygon& getUnitPolyPolygon() const { return maUnitPolyPolygon; }
+ const basegfx::B2DPolyPolygon& getUnitDefinitionPolyPolygon() const { return maUnitDefinitionPolyPolygon; }
+
+ // compare operator
+ virtual bool operator==(const BasePrimitive2D& rPrimitive) const override;
+
+ // provide unique ID
+ virtual sal_uInt32 getPrimitive2DID() const override;
+ };
+} // end of namespace drawinglayer::primitive2d
+
+
+#endif // INCLUDED_SVX_INC_SDR_PRIMITIVE2D_SDRPATHPRIMITIVE2D_HXX
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/svx/inc/sdr/primitive2d/sdrprimitivetools.hxx b/svx/inc/sdr/primitive2d/sdrprimitivetools.hxx
new file mode 100644
index 0000000000..71e50cdf7f
--- /dev/null
+++ b/svx/inc/sdr/primitive2d/sdrprimitivetools.hxx
@@ -0,0 +1,42 @@
+/* -*- 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_INC_SDR_PRIMITIVE2D_SDRPRIMITIVETOOLS_HXX
+#define INCLUDED_SVX_INC_SDR_PRIMITIVE2D_SDRPRIMITIVETOOLS_HXX
+
+#include <vcl/bitmapex.hxx>
+
+// predefines
+
+namespace basegfx
+{
+class BColor;
+}
+
+// helper methods
+
+namespace drawinglayer::primitive2d
+{
+// create a 3x3 cross in given color as BitmapEx
+BitmapEx createDefaultCross_3x3(const basegfx::BColor& rBColor);
+} // end of namespace drawinglayer::primitive2d
+
+#endif // INCLUDED_SVX_INC_SDR_PRIMITIVE2D_SDRPRIMITIVETOOLS_HXX
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/svx/inc/sdr/primitive2d/sdrrectangleprimitive2d.hxx b/svx/inc/sdr/primitive2d/sdrrectangleprimitive2d.hxx
new file mode 100644
index 0000000000..f306e5642c
--- /dev/null
+++ b/svx/inc/sdr/primitive2d/sdrrectangleprimitive2d.hxx
@@ -0,0 +1,73 @@
+/* -*- 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_INC_SDR_PRIMITIVE2D_SDRRECTANGLEPRIMITIVE2D_HXX
+#define INCLUDED_SVX_INC_SDR_PRIMITIVE2D_SDRRECTANGLEPRIMITIVE2D_HXX
+
+#include <drawinglayer/primitive2d/BufferedDecompositionPrimitive2D.hxx>
+#include <basegfx/matrix/b2dhommatrix.hxx>
+#include <sdr/attribute/sdrlinefilleffectstextattribute.hxx>
+
+
+// predefines
+
+
+namespace drawinglayer::primitive2d
+ {
+ class SdrRectanglePrimitive2D final : public BufferedDecompositionPrimitive2D
+ {
+ private:
+ basegfx::B2DHomMatrix maTransform;
+ attribute::SdrLineFillEffectsTextAttribute maSdrLFSTAttribute;
+ double mfCornerRadiusX; // [0.0..1.0] relative to 1/2 width
+ double mfCornerRadiusY; // [0.0..1.0] relative to 1/2 height
+
+ // flag which decides if the HitArea should be the filled geometry
+ bool mbForceFillForHitTest : 1;
+
+ // local decomposition.
+ virtual void create2DDecomposition(Primitive2DContainer& rContainer, const geometry::ViewInformation2D& aViewInformation) const override;
+
+ public:
+ SdrRectanglePrimitive2D(
+ basegfx::B2DHomMatrix aTransform,
+ const attribute::SdrLineFillEffectsTextAttribute& rSdrLFSTAttribute,
+ double fCornerRadiusX,
+ double fCornerRadiusY,
+ bool bForceFillForHitTest);
+
+ // data access
+ const basegfx::B2DHomMatrix& getTransform() const { return maTransform; }
+ const attribute::SdrLineFillEffectsTextAttribute& getSdrLFSTAttribute() const { return maSdrLFSTAttribute; }
+ double getCornerRadiusX() const { return mfCornerRadiusX; }
+ double getCornerRadiusY() const { return mfCornerRadiusY; }
+ bool getForceFillForHitTest() const { return mbForceFillForHitTest; }
+
+ // compare operator
+ virtual bool operator==(const BasePrimitive2D& rPrimitive) const override;
+
+ // provide unique ID
+ virtual sal_uInt32 getPrimitive2DID() const override;
+ };
+} // end of namespace drawinglayer::primitive2d
+
+
+#endif // INCLUDED_SVX_INC_SDR_PRIMITIVE2D_SDRRECTANGLEPRIMITIVE2D_HXX
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/svx/inc/sdr/primitive2d/sdrtextprimitive2d.hxx b/svx/inc/sdr/primitive2d/sdrtextprimitive2d.hxx
new file mode 100644
index 0000000000..dfe66d3b60
--- /dev/null
+++ b/svx/inc/sdr/primitive2d/sdrtextprimitive2d.hxx
@@ -0,0 +1,336 @@
+/* -*- 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_INC_SDR_PRIMITIVE2D_SDRTEXTPRIMITIVE2D_HXX
+#define INCLUDED_SVX_INC_SDR_PRIMITIVE2D_SDRTEXTPRIMITIVE2D_HXX
+
+#include <drawinglayer/primitive2d/BufferedDecompositionPrimitive2D.hxx>
+#include <basegfx/polygon/b2dpolypolygon.hxx>
+#include <basegfx/matrix/b2dhommatrix.hxx>
+#include <com/sun/star/drawing/XDrawPage.hpp>
+#include <editeng/outlobj.hxx>
+#include <tools/color.hxx>
+#include <sdr/attribute/sdrformtextattribute.hxx>
+#include <tools/weakbase.h>
+#include <svx/sdtaitm.hxx>
+#include <rtl/ref.hxx>
+#include <unotools/weakref.hxx>
+
+
+// predefines
+class SdrText;
+
+
+namespace drawinglayer::primitive2d
+ {
+ class SdrTextPrimitive2D : public BufferedDecompositionPrimitive2D
+ {
+ private:
+ // The text model data; this should later just be the OutlinerParaObject or
+ // something equal
+ ::unotools::WeakReference< SdrText > mxSdrText;
+
+ // #i97628#
+ // The text content; now as local OutlinerParaObject copy (internally RefCounted and
+ // COW) and in exclusive, local form as needed in a primitive
+ const OutlinerParaObject maOutlinerParaObject;
+
+ // remember last VisualizingPage for which a decomposition was made. If the new target
+ // is not given or different, the decomposition needs to be potentially removed
+ // for supporting e.g. page number change on MasterPage objects or the different
+ // field renderings in SubGeometry and MasterPage node
+ css::uno::Reference< css::drawing::XDrawPage > mxLastVisualizingPage;
+
+ // remember last PageNumber for which a decomposition was made. This is only used
+ // when mbContainsPageField is true, else it is 0
+ sal_Int16 mnLastPageNumber;
+
+ // remember last PageCount for which a decomposition was made. This is only used
+ // when mbContainsPageCountField is true, else it is 0
+ sal_Int16 mnLastPageCount;
+
+ // #i101443# remember last TextBackgroundColor to decide if a new decomposition is
+ // needed because of background color change
+ Color maLastTextBackgroundColor;
+
+ // is there a PageNumber, Header, Footer or DateTimeField used? Evaluated at construction
+ bool mbContainsPageField : 1;
+ bool mbContainsPageCountField : 1;
+ bool mbContainsOtherFields : 1;
+
+ protected:
+ // support for XTEXT_PAINTSHAPE_BEGIN/XTEXT_PAINTSHAPE_END Metafile comments
+ static void encapsulateWithTextHierarchyBlockPrimitive2D(Primitive2DContainer& rContainer, Primitive2DContainer&& aCandidate);
+
+ public:
+ SdrTextPrimitive2D(
+ const SdrText* pSdrText,
+ OutlinerParaObject aOutlinerParaObjectPtr);
+
+ // get data
+ const SdrText* getSdrText() const;
+ const OutlinerParaObject& getOutlinerParaObject() const { return maOutlinerParaObject; }
+
+ // compare operator
+ virtual bool operator==(const BasePrimitive2D& rPrimitive) const override;
+
+ // own get2DDecomposition to take aspect of decomposition with or without spell checker
+ // into account
+ virtual void get2DDecomposition(Primitive2DDecompositionVisitor& rVisitor, const geometry::ViewInformation2D& rViewInformation) const override;
+
+ // transformed clone operator
+ virtual rtl::Reference<SdrTextPrimitive2D> createTransformedClone(const basegfx::B2DHomMatrix& rTransform) const = 0;
+ };
+} // end of namespace drawinglayer::primitive2d
+
+
+namespace drawinglayer::primitive2d
+ {
+ class SdrContourTextPrimitive2D final : public SdrTextPrimitive2D
+ {
+ private:
+ // unit contour polygon (scaled to [0.0 .. 1.0])
+ basegfx::B2DPolyPolygon maUnitPolyPolygon;
+
+ // complete contour polygon transform (scale, rotate, shear, translate)
+ basegfx::B2DHomMatrix maObjectTransform;
+
+ // local decomposition.
+ virtual void create2DDecomposition(Primitive2DContainer& rContainer, const geometry::ViewInformation2D& aViewInformation) const override;
+
+ public:
+ SdrContourTextPrimitive2D(
+ const SdrText* pSdrText,
+ const OutlinerParaObject& rOutlinerParaObjectPtr,
+ basegfx::B2DPolyPolygon aUnitPolyPolygon,
+ basegfx::B2DHomMatrix aObjectTransform);
+
+ // get data
+ const basegfx::B2DPolyPolygon& getUnitPolyPolygon() const { return maUnitPolyPolygon; }
+ const basegfx::B2DHomMatrix& getObjectTransform() const { return maObjectTransform; }
+
+ // compare operator
+ virtual bool operator==(const BasePrimitive2D& rPrimitive) const override;
+
+ // transformed clone operator
+ virtual rtl::Reference<SdrTextPrimitive2D> createTransformedClone(const basegfx::B2DHomMatrix& rTransform) const override;
+
+ // provide unique ID
+ virtual sal_uInt32 getPrimitive2DID() const override;
+ };
+} // end of namespace drawinglayer::primitive2d
+
+
+namespace drawinglayer::primitive2d
+ {
+ class SdrPathTextPrimitive2D final : public SdrTextPrimitive2D
+ {
+ private:
+ // the path to use. Each paragraph will use one Polygon.
+ basegfx::B2DPolyPolygon maPathPolyPolygon;
+
+ // the Fontwork parameters
+ attribute::SdrFormTextAttribute maSdrFormTextAttribute;
+
+ // local decomposition.
+ virtual void create2DDecomposition(Primitive2DContainer& rContainer, const geometry::ViewInformation2D& aViewInformation) const override;
+
+ public:
+ SdrPathTextPrimitive2D(
+ const SdrText* pSdrText,
+ const OutlinerParaObject& rOutlinerParaObjectPtr,
+ basegfx::B2DPolyPolygon aPathPolyPolygon,
+ attribute::SdrFormTextAttribute aSdrFormTextAttribute);
+
+ // get data
+ const basegfx::B2DPolyPolygon& getPathPolyPolygon() const { return maPathPolyPolygon; }
+ const attribute::SdrFormTextAttribute& getSdrFormTextAttribute() const { return maSdrFormTextAttribute; }
+
+ // compare operator
+ virtual bool operator==(const BasePrimitive2D& rPrimitive) const override;
+
+ // transformed clone operator
+ virtual rtl::Reference<SdrTextPrimitive2D> createTransformedClone(const basegfx::B2DHomMatrix& rTransform) const override;
+
+ // provide unique ID
+ virtual sal_uInt32 getPrimitive2DID() const override;
+ };
+} // end of namespace drawinglayer::primitive2d
+
+
+namespace drawinglayer::primitive2d
+ {
+ class SdrBlockTextPrimitive2D final : public SdrTextPrimitive2D
+ {
+ private:
+ // text range transformation from unit range ([0.0 .. 1.0]) to text range
+ basegfx::B2DHomMatrix maTextRangeTransform;
+
+ // text alignments
+ SdrTextHorzAdjust maSdrTextHorzAdjust;
+ SdrTextVertAdjust maSdrTextVertAdjust;
+
+ bool mbFixedCellHeight : 1;
+ bool mbUnlimitedPage : 1; // force layout with no text break
+ bool mbCellText : 1; // this is a cell text as block text
+ bool mbWordWrap : 1; // for CustomShapes text layout
+
+ // local decomposition.
+ virtual void create2DDecomposition(Primitive2DContainer& rContainer, const geometry::ViewInformation2D& aViewInformation) const override;
+
+ public:
+ SdrBlockTextPrimitive2D(
+ const SdrText* pSdrText,
+ const OutlinerParaObject& rOutlinerParaObjectPtr,
+ basegfx::B2DHomMatrix aTextRangeTransform,
+ SdrTextHorzAdjust aSdrTextHorzAdjust,
+ SdrTextVertAdjust aSdrTextVertAdjust,
+ bool bFixedCellHeight,
+ bool bUnlimitedPage,
+ bool bCellText,
+ bool bWordWrap);
+
+ // get data
+ const basegfx::B2DHomMatrix& getTextRangeTransform() const { return maTextRangeTransform; }
+ SdrTextHorzAdjust getSdrTextHorzAdjust() const { return maSdrTextHorzAdjust; }
+ SdrTextVertAdjust getSdrTextVertAdjust() const { return maSdrTextVertAdjust; }
+ bool isFixedCellHeight() const { return mbFixedCellHeight; }
+ bool getUnlimitedPage() const { return mbUnlimitedPage; }
+ bool getCellText() const { return mbCellText; }
+ bool getWordWrap() const { return mbWordWrap; }
+
+ // compare operator
+ virtual bool operator==(const BasePrimitive2D& rPrimitive) const override;
+
+ // transformed clone operator
+ virtual rtl::Reference<SdrTextPrimitive2D> createTransformedClone(const basegfx::B2DHomMatrix& rTransform) const override;
+
+ // provide unique ID
+ virtual sal_uInt32 getPrimitive2DID() const override;
+ };
+} // end of namespace drawinglayer::primitive2d
+
+
+namespace drawinglayer::primitive2d
+ {
+ class SdrStretchTextPrimitive2D final : public SdrTextPrimitive2D
+ {
+ private:
+ // text range transformation from unit range ([0.0 .. 1.0]) to text range
+ basegfx::B2DHomMatrix maTextRangeTransform;
+
+ bool mbFixedCellHeight : 1;
+
+ // local decomposition.
+ virtual void create2DDecomposition(Primitive2DContainer& rContainer, const geometry::ViewInformation2D& aViewInformation) const override;
+
+ public:
+ SdrStretchTextPrimitive2D(
+ const SdrText* pSdrText,
+ const OutlinerParaObject& rOutlinerParaObjectPtr,
+ basegfx::B2DHomMatrix aTextRangeTransform,
+ bool bFixedCellHeight);
+
+ // get data
+ const basegfx::B2DHomMatrix& getTextRangeTransform() const { return maTextRangeTransform; }
+ bool isFixedCellHeight() const { return mbFixedCellHeight; }
+
+ // compare operator
+ virtual bool operator==(const BasePrimitive2D& rPrimitive) const override;
+
+ // transformed clone operator
+ virtual rtl::Reference<SdrTextPrimitive2D> createTransformedClone(const basegfx::B2DHomMatrix& rTransform) const override;
+
+ // provide unique ID
+ virtual sal_uInt32 getPrimitive2DID() const override;
+ };
+} // end of namespace drawinglayer::primitive2d
+
+
+namespace drawinglayer::primitive2d
+ {
+ class SdrAutoFitTextPrimitive2D final : public SdrTextPrimitive2D
+ {
+ private:
+ ::basegfx::B2DHomMatrix maTextRangeTransform; // text range transformation from unit range ([0.0 .. 1.0]) to text range
+
+ bool mbWordWrap : 1; // for CustomShapes text layout
+
+ // local decomposition.
+ virtual void create2DDecomposition(Primitive2DContainer& rContainer, const geometry::ViewInformation2D& aViewInformation) const override;
+
+ public:
+ SdrAutoFitTextPrimitive2D(
+ const SdrText* pSdrText,
+ const OutlinerParaObject& rOutlinerParaObjectPtr,
+ ::basegfx::B2DHomMatrix aTextRangeTransform,
+ bool bWordWrap);
+
+ // get data
+ const basegfx::B2DHomMatrix& getTextRangeTransform() const { return maTextRangeTransform; }
+ bool getWordWrap() const { return mbWordWrap; }
+
+ // compare operator
+ virtual bool operator==(const BasePrimitive2D& rPrimitive) const override;
+
+ // transformed clone operator
+ virtual rtl::Reference<SdrTextPrimitive2D> createTransformedClone(const ::basegfx::B2DHomMatrix& rTransform) const override;
+
+ // provide unique ID
+ virtual sal_uInt32 getPrimitive2DID() const override;
+ };
+} // end of namespace drawinglayer::primitive2d
+
+namespace drawinglayer::primitive2d
+ {
+ class SdrChainedTextPrimitive2D final : public SdrTextPrimitive2D
+ {
+ private:
+ // XXX: might have position of overflowing text
+
+ ::basegfx::B2DHomMatrix maTextRangeTransform; // text range transformation from unit range ([0.0 .. 1.0]) to text range
+
+ // local decomposition.
+ virtual void create2DDecomposition(Primitive2DContainer& rContainer, const geometry::ViewInformation2D& aViewInformation) const override;
+
+ public:
+ SdrChainedTextPrimitive2D(
+ const SdrText* pSdrText,
+ const OutlinerParaObject& rOutlinerParaObjectPtrs,
+ ::basegfx::B2DHomMatrix aTextRangeTransform);
+
+ // get data
+ const basegfx::B2DHomMatrix& getTextRangeTransform() const { return maTextRangeTransform; }
+ //bool getWordWrap() const { return true; } // XXX: Hack! Should have a proper implementation//
+
+ // compare operator
+ virtual bool operator==(const BasePrimitive2D& rPrimitive) const override;
+
+ // transformed clone operator
+ virtual rtl::Reference<SdrTextPrimitive2D> createTransformedClone(const basegfx::B2DHomMatrix& rTransform) const override;
+
+ // provide unique ID
+ virtual sal_uInt32 getPrimitive2DID() const override;
+ };
+} // end of namespace drawinglayer::primitive2d
+
+
+#endif // INCLUDED_SVX_INC_SDR_PRIMITIVE2D_SDRTEXTPRIMITIVE2D_HXX
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/svx/inc/sdr/primitive3d/sdrattributecreator3d.hxx b/svx/inc/sdr/primitive3d/sdrattributecreator3d.hxx
new file mode 100644
index 0000000000..3f51784274
--- /dev/null
+++ b/svx/inc/sdr/primitive3d/sdrattributecreator3d.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_INC_SDR_PRIMITIVE3D_SDRATTRIBUTECREATOR3D_HXX
+#define INCLUDED_SVX_INC_SDR_PRIMITIVE3D_SDRATTRIBUTECREATOR3D_HXX
+
+#include <drawinglayer/attribute/sdrobjectattribute3d.hxx>
+
+// predefines
+class SfxItemSet;
+namespace basegfx {
+ class B2DRange;
+}
+
+
+namespace drawinglayer::primitive2d
+{
+ // SdrAttribute creators
+ attribute::Sdr3DObjectAttribute createNewSdr3DObjectAttribute(const SfxItemSet& rSet);
+
+ // helpers
+
+} // end of namespace drawinglayer::attribute
+
+
+#endif // INCLUDED_SVX_INC_SDR_PRIMITIVE3D_SDRATTRIBUTECREATOR3D_HXX
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/svx/inc/sdr/properties/attributeproperties.hxx b/svx/inc/sdr/properties/attributeproperties.hxx
new file mode 100644
index 0000000000..bdaf48822b
--- /dev/null
+++ b/svx/inc/sdr/properties/attributeproperties.hxx
@@ -0,0 +1,96 @@
+/* -*- 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_SDR_PROPERTIES_ATTRIBUTEPROPERTIES_HXX
+#define INCLUDED_SVX_SDR_PROPERTIES_ATTRIBUTEPROPERTIES_HXX
+
+#include <svl/lstner.hxx>
+#include <svl/stylesheetuser.hxx>
+#include <svx/sdr/properties/defaultproperties.hxx>
+
+
+namespace sdr::properties
+ {
+ class AttributeProperties : public DefaultProperties, public SfxListener, public svl::StyleSheetUser
+ {
+ // core to set parent at SfxItemSet and to execute the hard attribute computations
+ void ImpSetParentAtSfxItemSet(bool bDontRemoveHardAttr);
+
+ // add style sheet, do all the necessary handling
+ void ImpAddStyleSheet(SfxStyleSheet* pNewStyleSheet, bool bDontRemoveHardAttr);
+
+ // remove StyleSheet, do all the necessary handling
+ void ImpRemoveStyleSheet();
+
+ protected:
+ // create a new itemset
+ virtual SfxItemSet CreateObjectSpecificItemSet(SfxItemPool& pPool) override;
+
+ // Do the ItemChange, may do special handling
+ virtual void ItemChange(const sal_uInt16 nWhich, const SfxPoolItem* pNewItem = nullptr) override;
+
+ // react on ItemSet changes
+ virtual void ItemSetChanged(std::span< const SfxPoolItem* const > aChangedItems, sal_uInt16 nDeletedWhich) override;
+
+ // apply the correct SfyStyleSheet from SdrObject's SdrModel
+ virtual void applyDefaultStyleSheetFromSdrModel();
+
+ // basic constructor
+ explicit AttributeProperties(SdrObject& rObj);
+
+ // constructor for copying, but using new object
+ AttributeProperties(const AttributeProperties& rProps, SdrObject& rObj);
+
+ public:
+ // Clone() operator, normally just calls the local copy constructor
+ virtual std::unique_ptr<BaseProperties> Clone(SdrObject& rObj) const override;
+
+ // Get the local ItemSet. This directly returns the local ItemSet of the object. No
+ // merging of ItemSets is done for e.g. Group objects.
+ virtual const SfxItemSet& GetObjectItemSet() const override;
+
+ // destructor
+ virtual ~AttributeProperties() override;
+
+ // set a new StyleSheet and broadcast
+ virtual void SetStyleSheet(SfxStyleSheet* pNewStyleSheet, bool bDontRemoveHardAttr,
+ bool bBroadcast) override;
+
+ // get the installed StyleSheet
+ virtual SfxStyleSheet* GetStyleSheet() const override;
+
+ // force all attributes which come from styles to hard attributes
+ // to be able to live without the style.
+ virtual void ForceStyleToHardAttributes() override;
+
+ // This is the Notify(...) from 2nd base class SfxListener
+ virtual void Notify(SfxBroadcaster& rBC, const SfxHint& rHint) override;
+
+ virtual bool isUsedByModel() const override;
+ private:
+ // the StyleSheet of this object
+ SfxStyleSheet* mpStyleSheet;
+ };
+
+} // end of namespace sdr::properties
+
+
+#endif // INCLUDED_SVX_SDR_PROPERTIES_ATTRIBUTEPROPERTIES_HXX
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/svx/inc/sdr/properties/captionproperties.hxx b/svx/inc/sdr/properties/captionproperties.hxx
new file mode 100644
index 0000000000..625830c5e8
--- /dev/null
+++ b/svx/inc/sdr/properties/captionproperties.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/.
+ *
+ * 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_INC_SDR_PROPERTIES_CAPTIONPROPERTIES_HXX
+#define INCLUDED_SVX_INC_SDR_PROPERTIES_CAPTIONPROPERTIES_HXX
+
+#include <sdr/properties/rectangleproperties.hxx>
+
+
+namespace sdr::properties
+ {
+ class CaptionProperties final : public RectangleProperties
+ {
+ // create a new itemset
+ virtual SfxItemSet CreateObjectSpecificItemSet(SfxItemPool& rPool) override;
+
+ // react on ItemSet changes
+ virtual void ItemSetChanged(std::span< const SfxPoolItem* const > aChangedItems, sal_uInt16 nDeletedWhich) override;
+
+ public:
+ // basic constructor
+ explicit CaptionProperties(SdrObject& rObj);
+
+ // constructor for copying, but using new object
+ CaptionProperties(const CaptionProperties& rProps, SdrObject& rObj);
+
+ // destructor
+ virtual ~CaptionProperties() override;
+
+ // Clone() operator, normally just calls the local copy constructor
+ virtual std::unique_ptr<BaseProperties> Clone(SdrObject& rObj) const override;
+
+ // set a new StyleSheet and broadcast
+ virtual void SetStyleSheet(SfxStyleSheet* pNewStyleSheet, bool bDontRemoveHardAttr,
+ bool bBroadcast) override;
+
+ // force default attributes for a specific object type, called from
+ // DefaultProperties::GetObjectItemSet() if a new ItemSet is created
+ virtual void ForceDefaultAttributes() override;
+ };
+} // end of namespace sdr::properties
+
+
+#endif // INCLUDED_SVX_INC_SDR_PROPERTIES_CAPTIONPROPERTIES_HXX
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/svx/inc/sdr/properties/cellproperties.hxx b/svx/inc/sdr/properties/cellproperties.hxx
new file mode 100644
index 0000000000..653c3b158a
--- /dev/null
+++ b/svx/inc/sdr/properties/cellproperties.hxx
@@ -0,0 +1,80 @@
+/* -*- 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 "textproperties.hxx"
+#include <svx/itextprovider.hxx>
+#include <rtl/ref.hxx>
+
+namespace sdr::table
+{
+class Cell;
+typedef rtl::Reference<sdr::table::Cell> CellRef;
+}
+
+namespace sdr::properties
+{
+class CellTextProvider final : public svx::ITextProvider
+{
+public:
+ explicit CellTextProvider(sdr::table::CellRef xCell);
+ virtual ~CellTextProvider();
+
+private:
+ virtual sal_Int32 getTextCount() const override;
+ virtual SdrText* getText(sal_Int32 nIndex) const override;
+
+private:
+ const sdr::table::CellRef m_xCell;
+};
+
+class CellProperties final : public TextProperties
+{
+protected:
+ // create a new itemset
+ SfxItemSet CreateObjectSpecificItemSet(SfxItemPool& rPool) override;
+
+ const svx::ITextProvider& getTextProvider() const override;
+
+public:
+ // basic constructor
+ CellProperties(SdrObject& rObj, ::sdr::table::Cell* pCell);
+
+ // constructor for copying, but using new object
+ CellProperties(const CellProperties& rProps, SdrObject& rObj, sdr::table::Cell* pCell);
+ ~CellProperties();
+
+ // Clone() operator, normally just calls the local copy constructor
+ std::unique_ptr<BaseProperties> Clone(SdrObject& rObj) const override;
+
+ void ForceDefaultAttributes() override;
+
+ void ItemSetChanged(std::span<const SfxPoolItem* const> aChangedItems,
+ sal_uInt16 nDeletedWhich) override;
+
+ void ItemChange(const sal_uInt16 nWhich, const SfxPoolItem* pNewItem = nullptr) override;
+
+private:
+ sdr::table::CellRef mxCell;
+ const CellTextProvider maTextProvider;
+};
+
+} // namespace sdr::properties
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/svx/inc/sdr/properties/circleproperties.hxx b/svx/inc/sdr/properties/circleproperties.hxx
new file mode 100644
index 0000000000..3283aa6579
--- /dev/null
+++ b/svx/inc/sdr/properties/circleproperties.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/.
+ *
+ * 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_INC_SDR_PROPERTIES_CIRCLEPROPERTIES_HXX
+#define INCLUDED_SVX_INC_SDR_PROPERTIES_CIRCLEPROPERTIES_HXX
+
+#include <sdr/properties/rectangleproperties.hxx>
+
+
+namespace sdr::properties
+ {
+ class CircleProperties final : public RectangleProperties
+ {
+ // create a new itemset
+ virtual SfxItemSet CreateObjectSpecificItemSet(SfxItemPool& rPool) override;
+
+ // react on ItemSet changes
+ virtual void ItemSetChanged(std::span< const SfxPoolItem* const > aChangedItems, sal_uInt16 nDeletedWhich) override;
+
+ public:
+ // basic constructor
+ explicit CircleProperties(SdrObject& rObj);
+
+ // constructor for copying, but using new object
+ CircleProperties(const CircleProperties& rProps, SdrObject& rObj);
+
+ // destructor
+ virtual ~CircleProperties() override;
+
+ // Clone() operator, normally just calls the local copy constructor
+ virtual std::unique_ptr<BaseProperties> Clone(SdrObject& rObj) const override;
+
+ // set a new StyleSheet and broadcast
+ virtual void SetStyleSheet(SfxStyleSheet* pNewStyleSheet, bool bDontRemoveHardAttr,
+ bool bBroadcast) override;
+
+ // force default attributes for a specific object type, called from
+ // DefaultProperties::GetObjectItemSet() if a new ItemSet is created
+ virtual void ForceDefaultAttributes() override;
+ };
+} // end of namespace sdr::properties
+
+
+#endif // INCLUDED_SVX_INC_SDR_PROPERTIES_CIRCLEPROPERTIES_HXX
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/svx/inc/sdr/properties/connectorproperties.hxx b/svx/inc/sdr/properties/connectorproperties.hxx
new file mode 100644
index 0000000000..238b6f2364
--- /dev/null
+++ b/svx/inc/sdr/properties/connectorproperties.hxx
@@ -0,0 +1,58 @@
+/* -*- 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_INC_SDR_PROPERTIES_CONNECTORPROPERTIES_HXX
+#define INCLUDED_SVX_INC_SDR_PROPERTIES_CONNECTORPROPERTIES_HXX
+
+#include <sdr/properties/textproperties.hxx>
+
+
+namespace sdr::properties
+ {
+ class ConnectorProperties final : public TextProperties
+ {
+ // create a new itemset
+ virtual SfxItemSet CreateObjectSpecificItemSet(SfxItemPool& rPool) override;
+
+ // react on ItemSet changes
+ virtual void ItemSetChanged(std::span< const SfxPoolItem* const > aChangedItems, sal_uInt16 nDeletedWhich) override;
+
+ public:
+ // basic constructor
+ explicit ConnectorProperties(SdrObject& rObj);
+
+ // constructor for copying, but using new object
+ ConnectorProperties(const ConnectorProperties& rProps, SdrObject& rObj);
+
+ // destructor
+ virtual ~ConnectorProperties() override;
+
+ // Clone() operator, normally just calls the local copy constructor
+ virtual std::unique_ptr<BaseProperties> Clone(SdrObject& rObj) const override;
+
+ // set a new StyleSheet and broadcast
+ virtual void SetStyleSheet(SfxStyleSheet* pNewStyleSheet, bool bDontRemoveHardAttr,
+ bool bBroadcast) override;
+ };
+} // end of namespace sdr::properties
+
+
+#endif // INCLUDED_SVX_INC_SDR_PROPERTIES_CONNECTORPROPERTIES_HXX
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/svx/inc/sdr/properties/customshapeproperties.hxx b/svx/inc/sdr/properties/customshapeproperties.hxx
new file mode 100644
index 0000000000..964c956e3d
--- /dev/null
+++ b/svx/inc/sdr/properties/customshapeproperties.hxx
@@ -0,0 +1,86 @@
+/* -*- 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_INC_SDR_PROPERTIES_CUSTOMSHAPEPROPERTIES_HXX
+#define INCLUDED_SVX_INC_SDR_PROPERTIES_CUSTOMSHAPEPROPERTIES_HXX
+
+#include <sdr/properties/textproperties.hxx>
+
+
+namespace sdr::properties
+ {
+ class CustomShapeProperties final : public TextProperties
+ {
+ private:
+ void UpdateTextFrameStatus(bool bInvalidateRenderGeometry);
+
+ // create a new itemset
+ virtual SfxItemSet CreateObjectSpecificItemSet(SfxItemPool& rPool) override;
+
+ // test changeability for a single item
+ virtual bool AllowItemChange(const sal_uInt16 nWhich, const SfxPoolItem* pNewItem = nullptr) const override;
+
+ // react on ItemSet changes
+ virtual void ItemSetChanged(std::span< const SfxPoolItem* const > aChangedItems, sal_uInt16 nDeletedWhich) override;
+
+ // react on Item change
+ virtual void ItemChange(const sal_uInt16 nWhich, const SfxPoolItem* pNewItem = nullptr) override;
+
+ // Called after ItemChange() is done for all items. Allows local reactions on
+ // specific item changes
+ virtual void PostItemChange(const sal_uInt16 nWhich) override;
+
+ // clear single item
+ virtual void ClearObjectItem(const sal_uInt16 nWhich = 0) override;
+
+ // clear single item direct, do not do any notifies or things like that.
+ // Also supports complete deletion of items when default parameter 0 is used.
+ virtual void ClearObjectItemDirect(const sal_uInt16 nWhich) override;
+
+ public:
+
+ // set a new StyleSheet and broadcast
+ virtual void SetStyleSheet(SfxStyleSheet* pNewStyleSheet, bool bDontRemoveHardAttr,
+ bool bBroadcast) override;
+
+ // force default attributes for a specific object type, called from
+ // DefaultProperties::GetObjectItemSet() if a new ItemSet is created
+ virtual void ForceDefaultAttributes() override;
+
+ // basic constructor
+ explicit CustomShapeProperties(SdrObject& rObj);
+
+ // constructor for copying, but using new object
+ CustomShapeProperties(const CustomShapeProperties& rProps, SdrObject& rObj);
+
+ // destructor
+ virtual ~CustomShapeProperties() override;
+
+ // Clone() operator, normally just calls the local copy constructor
+ virtual std::unique_ptr<BaseProperties> Clone(SdrObject& rObj) const override;
+
+ // This is the notifier from SfxListener
+ virtual void Notify(SfxBroadcaster& rBC, const SfxHint& rHint) override;
+ };
+} // end of namespace sdr::properties
+
+
+#endif // INCLUDED_SVX_INC_SDR_PROPERTIES_CUSTOMSHAPEPROPERTIES_HXX
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/svx/inc/sdr/properties/e3dcompoundproperties.hxx b/svx/inc/sdr/properties/e3dcompoundproperties.hxx
new file mode 100644
index 0000000000..96abc06f2d
--- /dev/null
+++ b/svx/inc/sdr/properties/e3dcompoundproperties.hxx
@@ -0,0 +1,63 @@
+/* -*- 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_SDR_PROPERTIES_E3DCOMPOUNDPROPERTIES_HXX
+#define INCLUDED_SVX_SDR_PROPERTIES_E3DCOMPOUNDPROPERTIES_HXX
+
+#include <sdr/properties/e3dproperties.hxx>
+
+
+namespace sdr::properties
+ {
+ class E3dCompoundProperties : public E3dProperties
+ {
+ protected:
+ // Called after ItemChange() is done for all items.
+ virtual void PostItemChange(const sal_uInt16 nWhich) override;
+
+ public:
+ // basic constructor
+ explicit E3dCompoundProperties(SdrObject& rObj);
+
+ // constructor for copying, but using new object
+ E3dCompoundProperties(const E3dCompoundProperties& rProps, SdrObject& rObj);
+
+ // destructor
+ virtual ~E3dCompoundProperties() override;
+
+ // Clone() operator, normally just calls the local copy constructor
+ virtual std::unique_ptr<BaseProperties> Clone(SdrObject& rObj) const override;
+
+ // Get merged ItemSet. Normally, this maps directly to GetObjectItemSet(), but may
+ // be overridden e.g for group objects to return a merged ItemSet of the object.
+ // When using this method the returned ItemSet may contain items in the state
+ // SfxItemState::DONTCARE which means there were several such items with different
+ // values.
+ virtual const SfxItemSet& GetMergedItemSet() const override;
+
+ // Set merged ItemSet. Normally, this maps to SetObjectItemSet().
+ virtual void SetMergedItemSet(const SfxItemSet& rSet, bool bClearAllItems = false) override;
+ };
+
+} // end of namespace sdr::properties
+
+
+#endif // INCLUDED_SVX_SDR_PROPERTIES_E3DCOMPOUNDPROPERTIES_HXX
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/svx/inc/sdr/properties/e3dextrudeproperties.hxx b/svx/inc/sdr/properties/e3dextrudeproperties.hxx
new file mode 100644
index 0000000000..072b1c7969
--- /dev/null
+++ b/svx/inc/sdr/properties/e3dextrudeproperties.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_INC_SDR_PROPERTIES_E3DEXTRUDEPROPERTIES_HXX
+#define INCLUDED_SVX_INC_SDR_PROPERTIES_E3DEXTRUDEPROPERTIES_HXX
+
+#include <sdr/properties/e3dcompoundproperties.hxx>
+
+
+namespace sdr::properties
+ {
+ class E3dExtrudeProperties final : public E3dCompoundProperties
+ {
+ // Called after ItemChange() is done for all items.
+ virtual void PostItemChange(const sal_uInt16 nWhich) override;
+
+ public:
+ // basic constructor
+ explicit E3dExtrudeProperties(SdrObject& rObj);
+
+ // constructor for copying, but using new object
+ E3dExtrudeProperties(const E3dExtrudeProperties& rProps, SdrObject& rObj);
+
+ // destructor
+ virtual ~E3dExtrudeProperties() override;
+
+ // Clone() operator, normally just calls the local copy constructor
+ virtual std::unique_ptr<BaseProperties> Clone(SdrObject& rObj) const override;
+ };
+
+} // end of namespace sdr::properties
+
+
+#endif // INCLUDED_SVX_INC_SDR_PROPERTIES_E3DEXTRUDEPROPERTIES_HXX
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/svx/inc/sdr/properties/e3dlatheproperties.hxx b/svx/inc/sdr/properties/e3dlatheproperties.hxx
new file mode 100644
index 0000000000..56e46fb8b5
--- /dev/null
+++ b/svx/inc/sdr/properties/e3dlatheproperties.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_INC_SDR_PROPERTIES_E3DLATHEPROPERTIES_HXX
+#define INCLUDED_SVX_INC_SDR_PROPERTIES_E3DLATHEPROPERTIES_HXX
+
+#include <sdr/properties/e3dcompoundproperties.hxx>
+
+
+namespace sdr::properties
+ {
+ class E3dLatheProperties final : public E3dCompoundProperties
+ {
+ // Called after ItemChange() is done for all items.
+ virtual void PostItemChange(const sal_uInt16 nWhich) override;
+
+ public:
+ // basic constructor
+ explicit E3dLatheProperties(SdrObject& rObj);
+
+ // constructor for copying, but using new object
+ E3dLatheProperties(const E3dLatheProperties& rProps, SdrObject& rObj);
+
+ // destructor
+ virtual ~E3dLatheProperties() override;
+
+ // Clone() operator, normally just calls the local copy constructor
+ virtual std::unique_ptr<BaseProperties> Clone(SdrObject& rObj) const override;
+ };
+
+} // end of namespace sdr::properties
+
+
+#endif // INCLUDED_SVX_INC_SDR_PROPERTIES_E3DLATHEPROPERTIES_HXX
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/svx/inc/sdr/properties/e3dproperties.hxx b/svx/inc/sdr/properties/e3dproperties.hxx
new file mode 100644
index 0000000000..519bf904a4
--- /dev/null
+++ b/svx/inc/sdr/properties/e3dproperties.hxx
@@ -0,0 +1,56 @@
+/* -*- 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_SDR_PROPERTIES_E3DPROPERTIES_HXX
+#define INCLUDED_SVX_SDR_PROPERTIES_E3DPROPERTIES_HXX
+
+#include <sdr/properties/attributeproperties.hxx>
+
+
+namespace sdr::properties
+ {
+ class E3dProperties : public AttributeProperties
+ {
+ protected:
+ // create a new itemset
+ virtual SfxItemSet CreateObjectSpecificItemSet(SfxItemPool& rPool) override;
+
+ // react on ItemSet changes
+ virtual void ItemSetChanged(std::span< const SfxPoolItem* const > aChangedItems, sal_uInt16 nDeletedWhich) override;
+
+ public:
+ // basic constructor
+ explicit E3dProperties(SdrObject& rObj);
+
+ // constructor for copying, but using new object
+ E3dProperties(const E3dProperties& rProps, SdrObject& rObj);
+
+ // destructor
+ virtual ~E3dProperties() override;
+
+ // Clone() operator, normally just calls the local copy constructor
+ virtual std::unique_ptr<BaseProperties> Clone(SdrObject& rObj) const override;
+ };
+
+} // end of namespace sdr::properties
+
+
+#endif // INCLUDED_SVX_SDR_PROPERTIES_E3DPROPERTIES_HXX
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/svx/inc/sdr/properties/e3dsceneproperties.hxx b/svx/inc/sdr/properties/e3dsceneproperties.hxx
new file mode 100644
index 0000000000..4606499bdf
--- /dev/null
+++ b/svx/inc/sdr/properties/e3dsceneproperties.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_INC_SDR_PROPERTIES_E3DSCENEPROPERTIES_HXX
+#define INCLUDED_SVX_INC_SDR_PROPERTIES_E3DSCENEPROPERTIES_HXX
+
+#include <sdr/properties/e3dproperties.hxx>
+
+
+namespace sdr::properties
+ {
+ class E3dSceneProperties final : public E3dProperties
+ {
+ // Called after ItemChange() is done for all items.
+ virtual void PostItemChange(const sal_uInt16 nWhich) override;
+
+ public:
+ // basic constructor
+ explicit E3dSceneProperties(SdrObject& rObj);
+
+ // constructor for copying, but using new object
+ E3dSceneProperties(const E3dSceneProperties& rProps, SdrObject& rObj);
+
+ // destructor
+ virtual ~E3dSceneProperties() override;
+
+ // Clone() operator, normally just calls the local copy constructor
+ virtual std::unique_ptr<BaseProperties> Clone(SdrObject& rObj) const override;
+
+ // get merged ItemSet. Normally, this maps directly to GetObjectItemSet(), but may
+ // be overridden e.g for group objects to return a merged ItemSet of the object.
+ // When using this method the returned ItemSet may contain items in the state
+ // SfxItemState::DONTCARE which means there were several such items with different
+ // values.
+ virtual const SfxItemSet& GetMergedItemSet() const override;
+
+ // Set merged ItemSet. Normally, this maps to SetObjectItemSet().
+ virtual void SetMergedItemSet(const SfxItemSet& rSet, bool bClearAllItems = false) override;
+
+ // Set a single item, iterate over hierarchies if necessary.
+ virtual void SetMergedItem(const SfxPoolItem& rItem) override;
+
+ // Clear a single item, iterate over hierarchies if necessary.
+ virtual void ClearMergedItem(const sal_uInt16 nWhich) override;
+
+ // set a new StyleSheet and broadcast
+ virtual void SetStyleSheet(SfxStyleSheet* pNewStyleSheet, bool bDontRemoveHardAttr,
+ bool bBroadcast) override;
+
+ // get the installed StyleSheet
+ virtual SfxStyleSheet* GetStyleSheet() const override;
+
+ // Special for scene:
+ void SetSceneItemsFromCamera();
+ };
+
+} // end of namespace sdr::properties
+
+
+#endif // INCLUDED_SVX_INC_SDR_PROPERTIES_E3DSCENEPROPERTIES_HXX
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/svx/inc/sdr/properties/e3dsphereproperties.hxx b/svx/inc/sdr/properties/e3dsphereproperties.hxx
new file mode 100644
index 0000000000..61870c939d
--- /dev/null
+++ b/svx/inc/sdr/properties/e3dsphereproperties.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_INC_SDR_PROPERTIES_E3DSPHEREPROPERTIES_HXX
+#define INCLUDED_SVX_INC_SDR_PROPERTIES_E3DSPHEREPROPERTIES_HXX
+
+#include <sdr/properties/e3dcompoundproperties.hxx>
+
+
+namespace sdr::properties
+ {
+ class E3dSphereProperties final : public E3dCompoundProperties
+ {
+ // Called after ItemChange() is done for all items.
+ virtual void PostItemChange(const sal_uInt16 nWhich) override;
+
+ public:
+ // basic constructor
+ explicit E3dSphereProperties(SdrObject& rObj);
+
+ // constructor for copying, but using new object
+ E3dSphereProperties(const E3dSphereProperties& rProps, SdrObject& rObj);
+
+ // destructor
+ virtual ~E3dSphereProperties() override;
+
+ // Clone() operator, normally just calls the local copy constructor
+ virtual std::unique_ptr<BaseProperties> Clone(SdrObject& rObj) const override;
+ };
+
+} // end of namespace sdr::properties
+
+
+#endif // INCLUDED_SVX_INC_SDR_PROPERTIES_E3DSPHEREPROPERTIES_HXX
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/svx/inc/sdr/properties/emptyproperties.hxx b/svx/inc/sdr/properties/emptyproperties.hxx
new file mode 100644
index 0000000000..f51c97a01f
--- /dev/null
+++ b/svx/inc/sdr/properties/emptyproperties.hxx
@@ -0,0 +1,75 @@
+/* -*- 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_SDR_PROPERTIES_EMPTYPROPERTIES_HXX
+#define INCLUDED_SVX_SDR_PROPERTIES_EMPTYPROPERTIES_HXX
+
+#include <sal/config.h>
+
+#include <optional>
+
+#include <svx/sdr/properties/properties.hxx>
+#include <svl/itemset.hxx>
+
+
+namespace sdr::properties
+ {
+ class EmptyProperties final : public BaseProperties
+ {
+ public:
+ // basic constructor
+ explicit EmptyProperties(SdrObject& rObj);
+
+ // Clone() operator, normally just calls the local copy constructor
+ virtual std::unique_ptr<BaseProperties> Clone(SdrObject& rObj) const override;
+
+ // create a new object specific itemset with object specific ranges.
+ virtual SfxItemSet CreateObjectSpecificItemSet(SfxItemPool& pPool) override;
+
+ // get itemset
+ virtual const SfxItemSet& GetObjectItemSet() const override;
+
+ // set single item
+ virtual void SetObjectItem(const SfxPoolItem& rItem) override;
+
+ // set single item direct, do not do any notifies or things like that
+ virtual void SetObjectItemDirect(const SfxPoolItem& rItem) override;
+
+ // clear single item
+ virtual void ClearObjectItem(const sal_uInt16 nWhich = 0) override;
+
+ // clear single item direct, do not do any notifies or things like that.
+ // Also supports complete deletion of items when default parameter 0 is used.
+ virtual void ClearObjectItemDirect(const sal_uInt16 nWhich) override;
+
+ // set complete item set
+ virtual void SetObjectItemSet(const SfxItemSet& rSet) override;
+
+ // set a new StyleSheet and broadcast
+ virtual void SetStyleSheet(SfxStyleSheet* pNewStyleSheet, bool bDontRemoveHardAttr,
+ bool bBroadcast) override;
+
+ // get the installed StyleSheet
+ virtual SfxStyleSheet* GetStyleSheet() const override;
+ };
+} // end of namespace sdr::properties
+
+#endif // INCLUDED_SVX_SDR_PROPERTIES_EMPTYPROPERTIES_HXX
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/svx/inc/sdr/properties/graphicproperties.hxx b/svx/inc/sdr/properties/graphicproperties.hxx
new file mode 100644
index 0000000000..415d3681c5
--- /dev/null
+++ b/svx/inc/sdr/properties/graphicproperties.hxx
@@ -0,0 +1,65 @@
+/* -*- 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_INC_SDR_PROPERTIES_GRAPHICPROPERTIES_HXX
+#define INCLUDED_SVX_INC_SDR_PROPERTIES_GRAPHICPROPERTIES_HXX
+
+#include <sdr/properties/rectangleproperties.hxx>
+
+
+namespace sdr::properties
+ {
+ class GraphicProperties final : public RectangleProperties
+ {
+ // apply the correct SfyStyleSheet from SdrObject's SdrModel
+ virtual void applyDefaultStyleSheetFromSdrModel() override;
+
+ // create a new itemset
+ virtual SfxItemSet CreateObjectSpecificItemSet(SfxItemPool& rPool) override;
+
+ // react on ItemSet changes
+ virtual void ItemSetChanged(std::span< const SfxPoolItem* const > aChangedItems, sal_uInt16 nDeletedWhich) override;
+
+ public:
+ // basic constructor
+ explicit GraphicProperties(SdrObject& rObj);
+
+ // constructor for copying, but using new object
+ GraphicProperties(const GraphicProperties& rProps, SdrObject& rObj);
+
+ // destructor
+ virtual ~GraphicProperties() override;
+
+ // Clone() operator, normally just calls the local copy constructor
+ virtual std::unique_ptr<BaseProperties> Clone(SdrObject& rObj) const override;
+
+ // set a new StyleSheet and broadcast
+ virtual void SetStyleSheet(SfxStyleSheet* pNewStyleSheet, bool bDontRemoveHardAttr,
+ bool bBroadcast) override;
+
+ // force default attributes for a specific object type, called from
+ // DefaultProperties::GetObjectItemSet() if a new ItemSet is created
+ virtual void ForceDefaultAttributes() override;
+ };
+} // end of namespace sdr::properties
+
+
+#endif // INCLUDED_SVX_INC_SDR_PROPERTIES_GRAPHICPROPERTIES_HXX
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/svx/inc/sdr/properties/groupproperties.hxx b/svx/inc/sdr/properties/groupproperties.hxx
new file mode 100644
index 0000000000..d31806d06b
--- /dev/null
+++ b/svx/inc/sdr/properties/groupproperties.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_INC_SDR_PROPERTIES_GROUPPROPERTIES_HXX
+#define INCLUDED_SVX_INC_SDR_PROPERTIES_GROUPPROPERTIES_HXX
+
+#include <svx/sdr/properties/properties.hxx>
+#include <svl/itemset.hxx>
+#include <optional>
+
+namespace sdr::properties
+ {
+ class GroupProperties final : public BaseProperties
+ {
+ // the to be used ItemSet
+ mutable std::optional<SfxItemSet> moMergedItemSet;
+ public:
+ // basic constructor
+ explicit GroupProperties(SdrObject& rObj);
+
+ // destructor
+ virtual ~GroupProperties() override;
+
+ // create a new object specific itemset with object specific ranges.
+ virtual SfxItemSet CreateObjectSpecificItemSet(SfxItemPool& pPool) override;
+
+ // Clone() operator, normally just calls the local copy constructor
+ virtual std::unique_ptr<BaseProperties> Clone(SdrObject& rObj) const override;
+
+ // get itemset
+ virtual const SfxItemSet& GetObjectItemSet() const override;
+
+ // get merged ItemSet. Normally, this maps directly to GetObjectItemSet(), but may
+ // be overridden e.g for group objects to return a merged ItemSet of the object.
+ // When using this method the returned ItemSet may contain items in the state
+ // SfxItemState::DONTCARE which means there were several such items with different
+ // values.
+ virtual const SfxItemSet& GetMergedItemSet() const override;
+
+ // Set merged ItemSet. Normally, this maps to SetObjectItemSet().
+ virtual void SetMergedItemSet(const SfxItemSet& rSet, bool bClearAllItems = false) override;
+
+ // set single item
+ virtual void SetObjectItem(const SfxPoolItem& rItem) override;
+
+ // set single item direct, do not do any notifies or things like that
+ virtual void SetObjectItemDirect(const SfxPoolItem& rItem) override;
+
+ // clear single item
+ virtual void ClearObjectItem(const sal_uInt16 nWhich = 0) override;
+
+ // clear single item direct, do not do any notifies or things like that.
+ // Also supports complete deletion of items when default parameter 0 is used.
+ virtual void ClearObjectItemDirect(const sal_uInt16 nWhich) override;
+
+ // Set a single item, iterate over hierarchies if necessary.
+ virtual void SetMergedItem(const SfxPoolItem& rItem) override;
+
+ // Clear a single item, iterate over hierarchies if necessary.
+ virtual void ClearMergedItem(const sal_uInt16 nWhich) override;
+
+ // set complete item set
+ virtual void SetObjectItemSet(const SfxItemSet& rSet) override;
+
+ // set a new StyleSheet
+ virtual void SetStyleSheet(SfxStyleSheet* pNewStyleSheet, bool bDontRemoveHardAttr,
+ bool bBroadcast) override;
+
+ // get the local StyleSheet
+ virtual SfxStyleSheet* GetStyleSheet() const override;
+
+ // force all attributes which come from styles to hard attributes
+ // to be able to live without the style.
+ virtual void ForceStyleToHardAttributes() override;
+ };
+} // end of namespace sdr::properties
+
+
+#endif // INCLUDED_SVX_INC_SDR_PROPERTIES_GROUPPROPERTIES_HXX
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/svx/inc/sdr/properties/itemsettools.hxx b/svx/inc/sdr/properties/itemsettools.hxx
new file mode 100644
index 0000000000..3f7225161e
--- /dev/null
+++ b/svx/inc/sdr/properties/itemsettools.hxx
@@ -0,0 +1,59 @@
+/* -*- 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_INC_SDR_PROPERTIES_ITEMSETTOOLS_HXX
+#define INCLUDED_SVX_INC_SDR_PROPERTIES_ITEMSETTOOLS_HXX
+
+#include <sal/types.h>
+#include <tools/gen.hxx>
+#include <vector>
+
+class SdrObject;
+class SfxItemSet;
+class Fraction;
+
+// class to remember broadcast start positions
+namespace sdr::properties
+ {
+ class ItemChangeBroadcaster
+ {
+ std::vector< tools::Rectangle > maRectangles;
+
+ public:
+ explicit ItemChangeBroadcaster(const SdrObject& rObj);
+
+ sal_uInt32 GetRectangleCount() const
+ {
+ return maRectangles.size();
+ }
+ const tools::Rectangle& GetRectangle(sal_uInt32 nIndex) const
+ {
+ return maRectangles[nIndex];
+ }
+ };
+} // end of namespace sdr::properties
+
+namespace sdr::properties
+ {
+ void ScaleItemSet(SfxItemSet& rSet, const Fraction& rScale);
+} // end of namespace sdr::properties
+
+#endif // INCLUDED_SVX_INC_SDR_PROPERTIES_ITEMSETTOOLS_HXX
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/svx/inc/sdr/properties/measureproperties.hxx b/svx/inc/sdr/properties/measureproperties.hxx
new file mode 100644
index 0000000000..323cfaa6de
--- /dev/null
+++ b/svx/inc/sdr/properties/measureproperties.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/.
+ *
+ * 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_INC_SDR_PROPERTIES_MEASUREPROPERTIES_HXX
+#define INCLUDED_SVX_INC_SDR_PROPERTIES_MEASUREPROPERTIES_HXX
+
+#include <sdr/properties/textproperties.hxx>
+
+
+namespace sdr::properties
+ {
+ class MeasureProperties final : public TextProperties
+ {
+ // create a new itemset
+ virtual SfxItemSet CreateObjectSpecificItemSet(SfxItemPool& rPool) override;
+
+ // react on ItemSet changes
+ virtual void ItemSetChanged(std::span< const SfxPoolItem* const > aChangedItems, sal_uInt16 nDeletedWhich) override;
+
+ public:
+ // basic constructor
+ explicit MeasureProperties(SdrObject& rObj);
+
+ // constructor for copying, but using new object
+ MeasureProperties(const MeasureProperties& rProps, SdrObject& rObj);
+
+ // destructor
+ virtual ~MeasureProperties() override;
+
+ // Clone() operator, normally just calls the local copy constructor
+ virtual std::unique_ptr<BaseProperties> Clone(SdrObject& rObj) const override;
+
+ // set a new StyleSheet and broadcast
+ virtual void SetStyleSheet(SfxStyleSheet* pNewStyleSheet, bool bDontRemoveHardAttr,
+ bool bBroadcast) override;
+
+ // force default attributes for a specific object type, called from
+ // DefaultProperties::GetObjectItemSet() if a new ItemSet is created
+ virtual void ForceDefaultAttributes() override;
+ };
+} // end of namespace sdr::properties
+
+
+#endif // INCLUDED_SVX_INC_SDR_PROPERTIES_MEASUREPROPERTIES_HXX
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/svx/inc/sdr/properties/oleproperties.hxx b/svx/inc/sdr/properties/oleproperties.hxx
new file mode 100644
index 0000000000..2a35c3ad0e
--- /dev/null
+++ b/svx/inc/sdr/properties/oleproperties.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_INC_SDR_PROPERTIES_OLEPROPERTIES_HXX
+#define INCLUDED_SVX_INC_SDR_PROPERTIES_OLEPROPERTIES_HXX
+
+#include <sdr/properties/rectangleproperties.hxx>
+
+
+namespace sdr::properties
+ {
+ class OleProperties final : public RectangleProperties
+ {
+ // apply the correct SfyStyleSheet from SdrObject's SdrModel
+ virtual void applyDefaultStyleSheetFromSdrModel() override;
+
+ public:
+ // basic constructor
+ explicit OleProperties(SdrObject& rObj);
+
+ // constructor for copying, but using new object
+ OleProperties(const OleProperties& rProps, SdrObject& rObj);
+
+ // destructor
+ virtual ~OleProperties() override;
+
+ // Clone() operator, normally just calls the local copy constructor
+ virtual std::unique_ptr<BaseProperties> Clone(SdrObject& rObj) const override;
+ };
+} // end of namespace sdr::properties
+
+
+#endif // INCLUDED_SVX_INC_SDR_PROPERTIES_OLEPROPERTIES_HXX
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/svx/inc/sdr/properties/pageproperties.hxx b/svx/inc/sdr/properties/pageproperties.hxx
new file mode 100644
index 0000000000..acd1d919f2
--- /dev/null
+++ b/svx/inc/sdr/properties/pageproperties.hxx
@@ -0,0 +1,80 @@
+/* -*- 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_INC_SDR_PROPERTIES_PAGEPROPERTIES_HXX
+#define INCLUDED_SVX_INC_SDR_PROPERTIES_PAGEPROPERTIES_HXX
+
+#include <svx/sdr/properties/properties.hxx>
+#include <svl/itemset.hxx>
+#include <optional>
+
+namespace sdr::properties
+ {
+ class PageProperties final : public BaseProperties
+ {
+ // the to be used ItemSet
+ mutable std::optional<SfxItemSet> mxEmptyItemSet;
+
+ public:
+ // basic constructor
+ explicit PageProperties(SdrObject& rObj);
+
+ // constructor for copying, but using new object
+ PageProperties(const PageProperties& rProps, SdrObject& rObj);
+
+ // destructor
+ virtual ~PageProperties() override;
+
+ // create a new object specific itemset with object specific ranges.
+ virtual SfxItemSet CreateObjectSpecificItemSet(SfxItemPool& pPool) override;
+
+ // Clone() operator, normally just calls the local copy constructor
+ virtual std::unique_ptr<BaseProperties> Clone(SdrObject& rObj) const override;
+
+ virtual const SfxItemSet& GetObjectItemSet() const override;
+
+ // get the installed StyleSheet
+ virtual SfxStyleSheet* GetStyleSheet() const override;
+
+ // set the installed StyleSheet
+ virtual void SetStyleSheet(SfxStyleSheet* pStyleSheet, bool bDontRemoveHardAttr,
+ bool bBroadcast) override;
+
+ // clear single item
+ virtual void ClearObjectItem(const sal_uInt16 nWhich = 0) override;
+
+ // set single item
+ virtual void SetObjectItem(const SfxPoolItem& rItem) override;
+
+ // set single item direct, do not do any notifies or things like that
+ virtual void SetObjectItemDirect(const SfxPoolItem& rItem) override;
+
+ // clear single item direct, do not do any notifies or things like that.
+ // Also supports complete deletion of items when default parameter 0 is used.
+ virtual void ClearObjectItemDirect(const sal_uInt16 nWhich) override;
+
+ // set complete item set
+ virtual void SetObjectItemSet(const SfxItemSet& rSet) override;
+ };
+} // end of namespace sdr::properties
+
+
+#endif // INCLUDED_SVX_INC_SDR_PROPERTIES_PAGEPROPERTIES_HXX
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/svx/inc/sdr/properties/rectangleproperties.hxx b/svx/inc/sdr/properties/rectangleproperties.hxx
new file mode 100644
index 0000000000..b0d6845f78
--- /dev/null
+++ b/svx/inc/sdr/properties/rectangleproperties.hxx
@@ -0,0 +1,56 @@
+/* -*- 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_SDR_PROPERTIES_RECTANGLEPROPERTIES_HXX
+#define INCLUDED_SVX_SDR_PROPERTIES_RECTANGLEPROPERTIES_HXX
+
+#include <sdr/properties/textproperties.hxx>
+
+
+namespace sdr::properties
+ {
+ class RectangleProperties : public TextProperties
+ {
+ protected:
+ // react on ItemSet changes
+ virtual void ItemSetChanged(std::span< const SfxPoolItem* const > aChangedItems, sal_uInt16 nDeletedWhich) override;
+
+ public:
+ // basic constructor
+ explicit RectangleProperties(SdrObject& rObj);
+
+ // constructor for copying, but using new object
+ RectangleProperties(const RectangleProperties& rProps, SdrObject& rObj);
+
+ // destructor
+ virtual ~RectangleProperties() override;
+
+ // Clone() operator, normally just calls the local copy constructor
+ virtual std::unique_ptr<BaseProperties> Clone(SdrObject& rObj) const override;
+
+ // set a new StyleSheet and broadcast
+ virtual void SetStyleSheet(SfxStyleSheet* pNewStyleSheet, bool bDontRemoveHardAttr,
+ bool bBroadcast) override;
+ };
+} // end of namespace sdr::properties
+
+
+#endif // INCLUDED_SVX_SDR_PROPERTIES_RECTANGLEPROPERTIES_HXX
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/svx/inc/sdr/properties/textproperties.hxx b/svx/inc/sdr/properties/textproperties.hxx
new file mode 100644
index 0000000000..bc46ef1b8b
--- /dev/null
+++ b/svx/inc/sdr/properties/textproperties.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/.
+ *
+ * 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_SDR_PROPERTIES_TEXTPROPERTIES_HXX
+#define INCLUDED_SVX_SDR_PROPERTIES_TEXTPROPERTIES_HXX
+
+#include <svx/itextprovider.hxx>
+#include <sdr/properties/attributeproperties.hxx>
+
+
+namespace sdr::properties
+ {
+ class TextProperties : public AttributeProperties
+ {
+ private:
+ // #i101556# versioning support
+ sal_uInt32 maVersion;
+
+ protected:
+ // create a new itemset
+ virtual SfxItemSet CreateObjectSpecificItemSet(SfxItemPool& rPool) override;
+
+ // Do the ItemChange, may do special handling
+ virtual void ItemChange(const sal_uInt16 nWhich, const SfxPoolItem* pNewItem = nullptr) override;
+
+ // react on ItemSet changes
+ virtual void ItemSetChanged(std::span< const SfxPoolItem* const > aChangedItems, sal_uInt16 nDeletedWhich) override;
+
+ /// Get the TextProvider related to our SdrObject
+ virtual const svx::ITextProvider& getTextProvider() const;
+
+ public:
+ // basic constructor
+ explicit TextProperties(SdrObject& rObj);
+
+ // constructor for copying, but using new object
+ TextProperties(const TextProperties& rProps, SdrObject& rObj);
+
+ // destructor
+ virtual ~TextProperties() override;
+
+ // Clone() operator, normally just calls the local copy constructor
+ virtual std::unique_ptr<BaseProperties> Clone(SdrObject& rObj) const override;
+
+ // set a new StyleSheet and broadcast
+ virtual void SetStyleSheet(SfxStyleSheet* pNewStyleSheet, bool bDontRemoveHardAttr,
+ bool bBroadcast) override;
+
+ // force default attributes for a specific object type, called from
+ // DefaultProperties::GetObjectItemSet() if a new ItemSet is created
+ virtual void ForceDefaultAttributes() override;
+
+ // force all attributes which come from styles to hard attributes
+ // to be able to live without the style.
+ virtual void ForceStyleToHardAttributes() override;
+
+ // This is the notifier from SfxListener
+ virtual void Notify(SfxBroadcaster& rBC, const SfxHint& rHint) override;
+
+ // Set single item at the local ItemSet. *Does not use* AllowItemChange(),
+ // ItemChange(), PostItemChange() and ItemSetChanged() calls.
+ void SetObjectItemNoBroadcast(const SfxPoolItem& rItem);
+
+ // #i101556# versioning support
+ virtual sal_uInt32 getVersion() const override;
+ void increaseVersion() { maVersion++; }
+ };
+} // end of namespace sdr::properties
+
+
+#endif // INCLUDED_SVX_SDR_PROPERTIES_TEXTPROPERTIES_HXX
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/svx/inc/shapecollection.hxx b/svx/inc/shapecollection.hxx
new file mode 100644
index 0000000000..3c3dde9d1e
--- /dev/null
+++ b/svx/inc/shapecollection.hxx
@@ -0,0 +1,74 @@
+/* -*- 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 <cppuhelper/implbase3.hxx>
+#include <comphelper/interfacecontainer4.hxx>
+#include <com/sun/star/drawing/XShapes.hpp>
+#include <com/sun/star/lang/XServiceInfo.hpp>
+#include <com/sun/star/uno/XComponentContext.hpp>
+#include <com/sun/star/lang/XComponent.hpp>
+#include <mutex>
+#include <vector>
+
+class SvxShapeCollection final
+ : public cppu::WeakAggImplHelper3<css::drawing::XShapes, css::lang::XServiceInfo,
+ css::lang::XComponent>
+{
+private:
+ std::mutex m_aMutex;
+ std::vector<css::uno::Reference<css::drawing::XShape>> maShapeContainer;
+ comphelper::OInterfaceContainerHelper4<css::lang::XEventListener> maEventListeners;
+ bool bDisposed = false;
+ bool bInDispose = false;
+
+public:
+ SvxShapeCollection() noexcept;
+
+ // XInterface
+ virtual void SAL_CALL release() noexcept override;
+
+ // XComponent
+ virtual void SAL_CALL dispose() override;
+ virtual void SAL_CALL
+ addEventListener(const css::uno::Reference<css::lang::XEventListener>& aListener) override;
+ virtual void SAL_CALL
+ removeEventListener(const css::uno::Reference<css::lang::XEventListener>& aListener) override;
+
+ // XIndexAccess
+ virtual sal_Int32 SAL_CALL getCount() override;
+ virtual css::uno::Any SAL_CALL getByIndex(sal_Int32 Index) override;
+
+ // XElementAccess
+ virtual css::uno::Type SAL_CALL getElementType() override;
+ virtual sal_Bool SAL_CALL hasElements() override;
+
+ // XShapes
+ virtual void SAL_CALL add(const css::uno::Reference<css::drawing::XShape>& xShape) override;
+ virtual void SAL_CALL remove(const css::uno::Reference<css::drawing::XShape>& xShape) override;
+
+ // XServiceInfo
+ virtual OUString SAL_CALL getImplementationName() override;
+ virtual sal_Bool SAL_CALL supportsService(const OUString& ServiceName) override;
+ virtual css::uno::Sequence<OUString> SAL_CALL getSupportedServiceNames() override;
+
+ void getAllShapes(std::vector<css::uno::Reference<css::drawing::XShape>>& rShapes) const;
+};
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/svx/inc/spacing.hrc b/svx/inc/spacing.hrc
new file mode 100644
index 0000000000..742b499dc3
--- /dev/null
+++ b/svx/inc/spacing.hrc
@@ -0,0 +1,95 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4; fill-column: 100 -*- */
+/*
+ * 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_INC_SPACING_HRC
+#define INCLUDED_SVX_INC_SPACING_HRC
+
+#include <unotools/resmgr.hxx>
+
+#define NC_(Context, String) TranslateId(Context, u8##String)
+
+struct measurement
+{
+ TranslateId key;
+ int twips;
+ int human;
+};
+
+// To translators: this is a listbox labelled by "Spacing:", inch units
+const measurement RID_SVXSTRARY_SPACING_INCH[] =
+{
+ { NC_("RID_SVXSTRARY_SPACING_INCH", "None"), 0, 0 },
+ { NC_("RID_SVXSTRARY_SPACING_INCH", "Extra Small (1/16″)"), 91, 0 },
+ { NC_("RID_SVXSTRARY_SPACING_INCH", "Small (1/8″)"), 181, 0 },
+ { NC_("RID_SVXSTRARY_SPACING_INCH", "Small Medium (1/4″)"), 363, 0 },
+ { NC_("RID_SVXSTRARY_SPACING_INCH", "Medium (3/8″)"), 539, 0 },
+ { NC_("RID_SVXSTRARY_SPACING_INCH", "Medium Large (1/2″)"), 720, 0 },
+ { NC_("RID_SVXSTRARY_SPACING_INCH", "Large (3/4″)"), 1077, 0 },
+ { NC_("RID_SVXSTRARY_SPACING_INCH", "Extra Large (1″)"), 1440, 0 },
+ { {}, 0, 0 }
+};
+
+// To translators: this is a listbox labelled by "Spacing:", cm units
+const measurement RID_SVXSTRARY_SPACING_CM[] =
+{
+ { NC_("RID_SVXSTRARY_SPACING_CM", "None"), 0, 0 },
+ // Extra Small (0.16 cm)
+ { NC_("RID_SVXSTRARY_SPACING_CM", "Extra Small (%1)"), 91, 16 },
+ // Small (0.32 cm)
+ { NC_("RID_SVXSTRARY_SPACING_CM", "Small (%1)"), 181, 32 },
+ // Small Medium (0.64 cm)
+ { NC_("RID_SVXSTRARY_SPACING_CM", "Small Medium (%1)"), 363, 64 },
+ // Medium (0.95 cm)
+ { NC_("RID_SVXSTRARY_SPACING_CM", "Medium (%1)"), 539, 95 },
+ // Medium Large (1.27 cm)
+ { NC_("RID_SVXSTRARY_SPACING_CM", "Medium Large (%1)"), 720, 127 },
+ // Large (1.9 cm)
+ { NC_("RID_SVXSTRARY_SPACING_CM", "Large (%1)"), 1077, 190 },
+ // Extra Large (2.54 cm)
+ { NC_("RID_SVXSTRARY_SPACING_CM", "Extra Large (%1)"), 1440, 254 },
+ { {}, 0, 0 }
+};
+
+// To translators: this is a listbox labelled by "Margins:", inch units
+const measurement RID_SVXSTRARY_MARGINS_INCH[] =
+{
+ { NC_("RID_SVXSTRARY_MARGINS_INCH", "None"), 0, 0 },
+ { NC_("RID_SVXSTRARY_MARGINS_INCH", "Extra Small (1/16″)"), 91, 0 },
+ { NC_("RID_SVXSTRARY_MARGINS_INCH", "Small (1/8″)"), 181, 0 },
+ { NC_("RID_SVXSTRARY_MARGINS_INCH", "Small Medium (1/4″)"), 363, 0 },
+ { NC_("RID_SVXSTRARY_MARGINS_INCH", "Medium (3/8″)"), 539, 0 },
+ { NC_("RID_SVXSTRARY_MARGINS_INCH", "Medium Large (1/2″)"), 720, 0 },
+ { NC_("RID_SVXSTRARY_MARGINS_INCH", "Large (3/4″)"), 1077, 0 },
+ { NC_("RID_SVXSTRARY_MARGINS_INCH", "Extra Large (1″)"), 1440, 0 },
+ { {}, 0, 0 }
+};
+
+// To translators: this is a listbox labelled by "Margins:", cm units
+const measurement RID_SVXSTRARY_MARGINS_CM[] =
+{
+ { NC_("RID_SVXSTRARY_MARGINS_CM", "None"), 0, 0 },
+ // Extra Small (0.16 cm)
+ { NC_("RID_SVXSTRARY_MARGINS_CM", "Extra Small (%1)"), 91, 16 },
+ // Small (0.32 cm)
+ { NC_("RID_SVXSTRARY_MARGINS_CM", "Small (%1)"), 181, 32 },
+ // Small Medium (0.64 cm)
+ { NC_("RID_SVXSTRARY_MARGINS_CM", "Small Medium (%1)"), 363, 64 },
+ // Medium (0.95 cm)
+ { NC_("RID_SVXSTRARY_MARGINS_CM", "Medium (%1)"), 539, 95 },
+ // Medium Large (1.27 cm)
+ { NC_("RID_SVXSTRARY_MARGINS_CM", "Medium Large (%1)"), 720, 127 },
+ // Large (1.9 cm)
+ { NC_("RID_SVXSTRARY_MARGINS_CM", "Large (%1)"), 1077, 190 },
+ // Extra Large (2.54 cm)
+ { NC_("RID_SVXSTRARY_MARGINS_CM", "Extra Large (%1)"), 1440, 254 },
+ { {}, 0, 0 }
+};
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab cinoptions=b1,g0,N-s cinkeys+=0=break: */
diff --git a/svx/inc/strings.hxx b/svx/inc/strings.hxx
new file mode 100644
index 0000000000..ce55c4c875
--- /dev/null
+++ b/svx/inc/strings.hxx
@@ -0,0 +1,394 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4; fill-column: 100 -*- */
+/*
+ * 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/.
+ */
+#pragma once
+
+#include <rtl/ustring.hxx>
+
+inline constexpr OUString RID_GALLERYSTR_THEME_HTMLBUTTONS = u"private://gallery/hidden/HtmlExportButtons"_ustr;
+inline constexpr OUString RID_GALLERYSTR_THEME_POWERPOINT = u"private://gallery/hidden/imgppt"_ustr;
+inline constexpr OUString RID_GALLERYSTR_THEME_RULERS = u"Rulers"_ustr;
+inline constexpr OUString RID_GALLERYSTR_THEME_USERSOUNDS = u"private://gallery/hidden/usersounds"_ustr;
+inline constexpr OUString RID_GALLERYSTR_THEME_DUMMY5 = u"Dummy 5"_ustr;
+inline constexpr OUString RID_GALLERYSTR_THEME_FONTWORK = u"private://gallery/hidden/fontwork"_ustr;
+inline constexpr OUString RID_GALLERYSTR_THEME_FONTWORK_VERTICAL = u"private://gallery/hidden/fontworkvertical"_ustr;
+
+// Reference-strings for standardcolor-table
+inline constexpr OUString RID_SVXSTR_COLOR_BLACK_DEF = u"Black"_ustr;
+inline constexpr OUString RID_SVXSTR_COLOR_BLUE_DEF = u"Blue"_ustr;
+inline constexpr OUString RID_SVXSTR_COLOR_GREEN_DEF = u"Green"_ustr;
+inline constexpr OUString RID_SVXSTR_COLOR_RED_DEF = u"Red"_ustr;
+inline constexpr OUString RID_SVXSTR_COLOR_GREY_DEF = u"Gray"_ustr;
+inline constexpr OUString RID_SVXSTR_COLOR_YELLOW_DEF = u"Yellow"_ustr;
+inline constexpr OUString RID_SVXSTR_COLOR_WHITE_DEF = u"White"_ustr;
+inline constexpr OUString RID_SVXSTR_COLOR_BLUEGREY_DEF = u"Blue gray"_ustr;
+inline constexpr OUString RID_SVXSTR_COLOR_ORANGE_DEF = u"Orange"_ustr;
+inline constexpr OUString RID_SVXSTR_COLOR_MAGENTA_DEF = u"Magenta"_ustr;
+inline constexpr OUString RID_SVXSTR_COLOR_BORDEAUX_DEF = u"Bordeaux"_ustr;
+inline constexpr OUString RID_SVXSTR_COLOR_PALE_YELLOW_DEF = u"Pale yellow"_ustr;
+inline constexpr OUString RID_SVXSTR_COLOR_PALE_GREEN_DEF = u"Pale green"_ustr;
+inline constexpr OUString RID_SVXSTR_COLOR_DARKVIOLET_DEF = u"Dark violet"_ustr;
+inline constexpr OUString RID_SVXSTR_COLOR_SALMON_DEF = u"Salmon"_ustr;
+inline constexpr OUString RID_SVXSTR_COLOR_SEABLUE_DEF = u"Sea blue"_ustr;
+inline constexpr OUString RID_SVXSTR_COLOR_CHART_DEF = u"Chart"_ustr;
+inline constexpr OUString RID_SVXSTR_COLOR_PURPLE_DEF = u"Purple"_ustr;
+inline constexpr OUString RID_SVXSTR_COLOR_SKYBLUE_DEF = u"Sky blue"_ustr;
+inline constexpr OUString RID_SVXSTR_COLOR_YELLOWGREEN_DEF = u"Yellow green"_ustr;
+inline constexpr OUString RID_SVXSTR_COLOR_PINK_DEF = u"Pink"_ustr;
+inline constexpr OUString RID_SVXSTR_COLOR_TURQUOISE_DEF = u"Turquoise"_ustr;
+inline constexpr OUString RID_SVXSTR_COLOR_BLUE_CLASSIC_DEF = u"Blue classic"_ustr;
+inline constexpr OUString RID_SVXSTR_COLOR_GOLD_DEF = u"Gold"_ustr;
+inline constexpr OUString RID_SVXSTR_COLOR_BRICK_DEF = u"Brick"_ustr;
+inline constexpr OUString RID_SVXSTR_COLOR_INDIGO_DEF = u"Indigo"_ustr;
+inline constexpr OUString RID_SVXSTR_COLOR_TEAL_DEF = u"Teal"_ustr;
+inline constexpr OUString RID_SVXSTR_COLOR_LIME_DEF = u"Lime"_ustr;
+// Reference strings: Light variants of the standard color palette
+inline constexpr OUString RID_SVXSTR_COLOR_LIGHTGRAY_DEF = u"Light Gray"_ustr;
+inline constexpr OUString RID_SVXSTR_COLOR_LIGHTYELLOW_DEF = u"Light Yellow"_ustr;
+inline constexpr OUString RID_SVXSTR_COLOR_LIGHTGOLD_DEF = u"Light Gold"_ustr;
+inline constexpr OUString RID_SVXSTR_COLOR_LIGHTORANGE_DEF = u"Light Orange"_ustr;
+inline constexpr OUString RID_SVXSTR_COLOR_LIGHTBRICK_DEF = u"Light Brick"_ustr;
+inline constexpr OUString RID_SVXSTR_COLOR_LIGHTRED_DEF = u"Light Red"_ustr;
+inline constexpr OUString RID_SVXSTR_COLOR_LIGHTMAGENTA_DEF = u"Light Magenta"_ustr;
+inline constexpr OUString RID_SVXSTR_COLOR_LIGHTPURPLE_DEF = u"Light Purple"_ustr;
+inline constexpr OUString RID_SVXSTR_COLOR_LIGHTINDIGO_DEF = u"Light Indigo"_ustr;
+inline constexpr OUString RID_SVXSTR_COLOR_LIGHTBLUE_DEF = u"Light Blue"_ustr;
+inline constexpr OUString RID_SVXSTR_COLOR_LIGHTTEAL_DEF = u"Light Teal"_ustr;
+inline constexpr OUString RID_SVXSTR_COLOR_LIGHTGREEN_DEF = u"Light Green"_ustr;
+inline constexpr OUString RID_SVXSTR_COLOR_LIGHTLIME_DEF = u"Light Lime"_ustr;
+// Reference strings: Dark variants of the standard color palette
+inline constexpr OUString RID_SVXSTR_COLOR_DARKGRAY_DEF = u"Dark Gray"_ustr;
+inline constexpr OUString RID_SVXSTR_COLOR_DARKYELLOW_DEF = u"Dark Yellow"_ustr;
+inline constexpr OUString RID_SVXSTR_COLOR_DARKGOLD_DEF = u"Dark Gold"_ustr;
+inline constexpr OUString RID_SVXSTR_COLOR_DARKORANGE_DEF = u"Dark Orange"_ustr;
+inline constexpr OUString RID_SVXSTR_COLOR_DARKBRICK_DEF = u"Dark Brick"_ustr;
+inline constexpr OUString RID_SVXSTR_COLOR_DARKRED_DEF = u"Dark Red"_ustr;
+inline constexpr OUString RID_SVXSTR_COLOR_DARKMAGENTA_DEF = u"Dark Magenta"_ustr;
+inline constexpr OUString RID_SVXSTR_COLOR_DARKPURPLE_DEF = u"Dark Purple"_ustr;
+inline constexpr OUString RID_SVXSTR_COLOR_DARKINDIGO_DEF = u"Dark Indigo"_ustr;
+inline constexpr OUString RID_SVXSTR_COLOR_DARKBLUE_DEF = u"Dark Blue"_ustr;
+inline constexpr OUString RID_SVXSTR_COLOR_DARKTEAL_DEF = u"Dark Teal"_ustr;
+inline constexpr OUString RID_SVXSTR_COLOR_DARKGREEN_DEF = u"Dark Green"_ustr;
+inline constexpr OUString RID_SVXSTR_COLOR_DARKLIME_DEF = u"Dark Lime"_ustr;
+// Reference strings for the Tonal palette
+inline constexpr OUString RID_SVXSTR_COLOR_VIOLET_DEF = u"Violet"_ustr;
+inline constexpr OUString RID_SVXSTR_COLOR_VIOLET_OUG_DEF = u"Violet (Out of Gamut)"_ustr;
+inline constexpr OUString RID_SVXSTR_COLOR_BLUE_OUG_DEF = u"Blue (Out of Gamut)"_ustr;
+inline constexpr OUString RID_SVXSTR_COLOR_AZURE_OUG_DEF = u"Azure (Out of Gamut)"_ustr;
+inline constexpr OUString RID_SVXSTR_COLOR_SPRINGGREEN_OUG_DEF = u"Spring Green (Out of Gamut)"_ustr;
+inline constexpr OUString RID_SVXSTR_COLOR_GREEN_OUG_DEF = u"Green (Out of Gamut)"_ustr;
+inline constexpr OUString RID_SVXSTR_COLOR_CHARTREUSEGREEN_OUG_DEF = u"Chartreuse Green (Out of Gamut)"_ustr;
+inline constexpr OUString RID_SVXSTR_COLOR_ORANGE_OUG_DEF = u"Orange (Out of Gamut)"_ustr;
+inline constexpr OUString RID_SVXSTR_COLOR_RED_OUG_DEF = u"Red (Out of Gamut)"_ustr;
+inline constexpr OUString RID_SVXSTR_COLOR_ROSE_OUG_DEF = u"Rose (Out of Gamut)"_ustr;
+inline constexpr OUString RID_SVXSTR_COLOR_AZURE_DEF = u"Azure"_ustr;
+inline constexpr OUString RID_SVXSTR_COLOR_CYAN_DEF = u"Cyan"_ustr;
+inline constexpr OUString RID_SVXSTR_COLOR_SPRINGGREEN_DEF = u"Spring Green"_ustr;
+inline constexpr OUString RID_SVXSTR_COLOR_CHARTREUSEGREEN_DEF = u"Chartreuse Green"_ustr;
+inline constexpr OUString RID_SVXSTR_COLOR_ROSE_DEF = u"Rose"_ustr;
+// Reference strings for the Material palette
+inline constexpr OUString RID_SVXSTR_COLOR_MATERIAL_GRAY_A_DEF = u"Gray A"_ustr;
+inline constexpr OUString RID_SVXSTR_COLOR_MATERIAL_YELLOW_A_DEF = u"Yellow A"_ustr;
+inline constexpr OUString RID_SVXSTR_COLOR_MATERIAL_AMBER_A_DEF = u"Amber A"_ustr;
+inline constexpr OUString RID_SVXSTR_COLOR_MATERIAL_AMBER_DEF = u"Amber"_ustr;
+inline constexpr OUString RID_SVXSTR_COLOR_MATERIAL_ORANGE_A_DEF = u"Orange A"_ustr;
+inline constexpr OUString RID_SVXSTR_COLOR_MATERIAL_DEEP_ORANGE_A_DEF = u"Deep Orange A"_ustr;
+inline constexpr OUString RID_SVXSTR_COLOR_MATERIAL_DEEP_ORANGE_DEF = u"Deep Orange"_ustr;
+inline constexpr OUString RID_SVXSTR_COLOR_MATERIAL_RED_A_DEF = u"Red A"_ustr;
+inline constexpr OUString RID_SVXSTR_COLOR_MATERIAL_PINK_A_DEF = u"Pink A"_ustr;
+inline constexpr OUString RID_SVXSTR_COLOR_MATERIAL_PURPLE_A_DEF = u"Purple A"_ustr;
+inline constexpr OUString RID_SVXSTR_COLOR_MATERIAL_DEEP_PURPLE_A_DEF = u"Deep Purple A"_ustr;
+inline constexpr OUString RID_SVXSTR_COLOR_MATERIAL_DEEP_PURPLE_DEF = u"Deep Purple"_ustr;
+inline constexpr OUString RID_SVXSTR_COLOR_MATERIAL_INDIGO_A_DEF = u"Indigo A"_ustr;
+inline constexpr OUString RID_SVXSTR_COLOR_MATERIAL_BLUE_A_DEF = u"Blue A"_ustr;
+inline constexpr OUString RID_SVXSTR_COLOR_MATERIAL_LIGHT_BLUE_A_DEF = u"Light Blue A"_ustr;
+inline constexpr OUString RID_SVXSTR_COLOR_MATERIAL_CYAN_A_DEF = u"Cyan A"_ustr;
+inline constexpr OUString RID_SVXSTR_COLOR_MATERIAL_TEAL_A_DEF = u"Teal A"_ustr;
+inline constexpr OUString RID_SVXSTR_COLOR_MATERIAL_GREEN_A_DEF = u"Green A"_ustr;
+inline constexpr OUString RID_SVXSTR_COLOR_MATERIAL_LIGHT_GREEN_A_DEF = u"Light Green A"_ustr;
+inline constexpr OUString RID_SVXSTR_COLOR_MATERIAL_LIME_A_DEF = u"Lime A"_ustr;
+inline constexpr OUString RID_SVXSTR_COLOR_MATERIAL_BROWN_A_DEF = u"Brown A"_ustr;
+inline constexpr OUString RID_SVXSTR_COLOR_MATERIAL_BROWN_DEF = u"Brown"_ustr;
+inline constexpr OUString RID_SVXSTR_COLOR_MATERIAL_BLUE_GRAY_A_DEF = u"Blue Gray A"_ustr;
+inline constexpr OUString RID_SVXSTR_COLOR_MATERIAL_BLUE_GRAY_DEF = u"Blue Gray"_ustr;
+// Reference-strings for standard-gradient-table
+inline constexpr OUString RID_SVXSTR_GRDT0_DEF = u"Gradient"_ustr;
+inline constexpr OUString RID_SVXSTR_GRDT1_DEF = u"Linear blue/white"_ustr;
+inline constexpr OUString RID_SVXSTR_GRDT2_DEF = u"Linear magenta/green"_ustr;
+inline constexpr OUString RID_SVXSTR_GRDT3_DEF = u"Linear yellow/brown"_ustr;
+inline constexpr OUString RID_SVXSTR_GRDT4_DEF = u"Radial green/black"_ustr;
+inline constexpr OUString RID_SVXSTR_GRDT5_DEF = u"Radial red/yellow"_ustr;
+inline constexpr OUString RID_SVXSTR_GRDT6_DEF = u"Rectangular red/white"_ustr;
+inline constexpr OUString RID_SVXSTR_GRDT7_DEF = u"Square yellow/white"_ustr;
+inline constexpr OUString RID_SVXSTR_GRDT8_DEF = u"Ellipsoid blue grey/light blue"_ustr;
+inline constexpr OUString RID_SVXSTR_GRDT9_DEF = u"Axial light red/white"_ustr;
+inline constexpr OUString RID_SVXSTR_GRDT10_DEF = u"Diagonal 1l"_ustr;
+inline constexpr OUString RID_SVXSTR_GRDT11_DEF = u"Diagonal 1r"_ustr;
+inline constexpr OUString RID_SVXSTR_GRDT12_DEF = u"Diagonal 2l"_ustr;
+inline constexpr OUString RID_SVXSTR_GRDT13_DEF = u"Diagonal 2r"_ustr;
+inline constexpr OUString RID_SVXSTR_GRDT14_DEF = u"Diagonal 3l"_ustr;
+inline constexpr OUString RID_SVXSTR_GRDT15_DEF = u"Diagonal 3r"_ustr;
+inline constexpr OUString RID_SVXSTR_GRDT16_DEF = u"Diagonal 4l"_ustr;
+inline constexpr OUString RID_SVXSTR_GRDT17_DEF = u"Diagonal 4r"_ustr;
+inline constexpr OUString RID_SVXSTR_GRDT18_DEF = u"Diagonal Blue"_ustr;
+inline constexpr OUString RID_SVXSTR_GRDT19_DEF = u"Diagonal Green"_ustr;
+inline constexpr OUString RID_SVXSTR_GRDT20_DEF = u"Diagonal Orange"_ustr;
+inline constexpr OUString RID_SVXSTR_GRDT21_DEF = u"Diagonal Red"_ustr;
+inline constexpr OUString RID_SVXSTR_GRDT22_DEF = u"Diagonal Turquoise"_ustr;
+inline constexpr OUString RID_SVXSTR_GRDT23_DEF = u"Diagonal Violet"_ustr;
+inline constexpr OUString RID_SVXSTR_GRDT24_DEF = u"From a Corner"_ustr;
+inline constexpr OUString RID_SVXSTR_GRDT25_DEF = u"From a Corner, Blue"_ustr;
+inline constexpr OUString RID_SVXSTR_GRDT26_DEF = u"From a Corner, Green"_ustr;
+inline constexpr OUString RID_SVXSTR_GRDT27_DEF = u"From a Corner, Orange"_ustr;
+inline constexpr OUString RID_SVXSTR_GRDT28_DEF = u"From a Corner, Red"_ustr;
+inline constexpr OUString RID_SVXSTR_GRDT29_DEF = u"From a Corner, Turquoise"_ustr;
+inline constexpr OUString RID_SVXSTR_GRDT30_DEF = u"From a Corner, Violet"_ustr;
+inline constexpr OUString RID_SVXSTR_GRDT31_DEF = u"From the Middle"_ustr;
+inline constexpr OUString RID_SVXSTR_GRDT32_DEF = u"From the Middle, Blue"_ustr;
+inline constexpr OUString RID_SVXSTR_GRDT33_DEF = u"From the Middle, Green"_ustr;
+inline constexpr OUString RID_SVXSTR_GRDT34_DEF = u"From the Middle, Orange"_ustr;
+inline constexpr OUString RID_SVXSTR_GRDT35_DEF = u"From the Middle, Red"_ustr;
+inline constexpr OUString RID_SVXSTR_GRDT36_DEF = u"From the Middle, Turquoise"_ustr;
+inline constexpr OUString RID_SVXSTR_GRDT37_DEF = u"From the Middle, Violet"_ustr;
+inline constexpr OUString RID_SVXSTR_GRDT38_DEF = u"Horizontal"_ustr;
+inline constexpr OUString RID_SVXSTR_GRDT39_DEF = u"Horizontal Blue"_ustr;
+inline constexpr OUString RID_SVXSTR_GRDT40_DEF = u"Horizontal Green"_ustr;
+inline constexpr OUString RID_SVXSTR_GRDT41_DEF = u"Horizontal Orange"_ustr;
+inline constexpr OUString RID_SVXSTR_GRDT42_DEF = u"Horizontal Red"_ustr;
+inline constexpr OUString RID_SVXSTR_GRDT43_DEF = u"Horizontal Turquoise"_ustr;
+inline constexpr OUString RID_SVXSTR_GRDT44_DEF = u"Horizontal Violet"_ustr;
+inline constexpr OUString RID_SVXSTR_GRDT45_DEF = u"Radial"_ustr;
+inline constexpr OUString RID_SVXSTR_GRDT46_DEF = u"Radial Blue"_ustr;
+inline constexpr OUString RID_SVXSTR_GRDT47_DEF = u"Radial Green"_ustr;
+inline constexpr OUString RID_SVXSTR_GRDT48_DEF = u"Radial Orange"_ustr;
+inline constexpr OUString RID_SVXSTR_GRDT49_DEF = u"Radial Red"_ustr;
+inline constexpr OUString RID_SVXSTR_GRDT50_DEF = u"Radial Turquoise"_ustr;
+inline constexpr OUString RID_SVXSTR_GRDT51_DEF = u"Radial Violet"_ustr;
+inline constexpr OUString RID_SVXSTR_GRDT52_DEF = u"Vertical"_ustr;
+inline constexpr OUString RID_SVXSTR_GRDT53_DEF = u"Vertical Blue"_ustr;
+inline constexpr OUString RID_SVXSTR_GRDT54_DEF = u"Vertical Green"_ustr;
+inline constexpr OUString RID_SVXSTR_GRDT55_DEF = u"Vertical Orange"_ustr;
+inline constexpr OUString RID_SVXSTR_GRDT56_DEF = u"Vertical Red"_ustr;
+inline constexpr OUString RID_SVXSTR_GRDT57_DEF = u"Vertical Turquoise"_ustr;
+inline constexpr OUString RID_SVXSTR_GRDT58_DEF = u"Vertical Violet"_ustr;
+inline constexpr OUString RID_SVXSTR_GRDT59_DEF = u"Gray Gradient"_ustr;
+inline constexpr OUString RID_SVXSTR_GRDT60_DEF = u"Yellow Gradient"_ustr;
+inline constexpr OUString RID_SVXSTR_GRDT61_DEF = u"Orange Gradient"_ustr;
+inline constexpr OUString RID_SVXSTR_GRDT62_DEF = u"Red Gradient"_ustr;
+inline constexpr OUString RID_SVXSTR_GRDT63_DEF = u"Pink Gradient"_ustr;
+inline constexpr OUString RID_SVXSTR_GRDT64_DEF = u"Sky"_ustr;
+inline constexpr OUString RID_SVXSTR_GRDT65_DEF = u"Cyan Gradient"_ustr;
+inline constexpr OUString RID_SVXSTR_GRDT66_DEF = u"Blue Gradient"_ustr;
+inline constexpr OUString RID_SVXSTR_GRDT67_DEF = u"Purple Pipe"_ustr;
+inline constexpr OUString RID_SVXSTR_GRDT68_DEF = u"Night"_ustr;
+inline constexpr OUString RID_SVXSTR_GRDT69_DEF = u"Green Gradient"_ustr;
+//actual gradients defined for 6.1
+inline constexpr OUString RID_SVXSTR_GRDT70_DEF = u"Pastel Bouquet"_ustr;
+inline constexpr OUString RID_SVXSTR_GRDT71_DEF = u"Pastel Dream"_ustr;
+inline constexpr OUString RID_SVXSTR_GRDT72_DEF = u"Blue Touch"_ustr;
+inline constexpr OUString RID_SVXSTR_GRDT73_DEF = u"Blank with Gray"_ustr;
+inline constexpr OUString RID_SVXSTR_GRDT74_DEF = u"London Mist"_ustr;
+inline constexpr OUString RID_SVXSTR_GRDT75_DEF = u"Submarine"_ustr;
+inline constexpr OUString RID_SVXSTR_GRDT76_DEF = u"Midnight"_ustr;
+inline constexpr OUString RID_SVXSTR_GRDT77_DEF = u"Deep Ocean"_ustr;
+inline constexpr OUString RID_SVXSTR_GRDT78_DEF = u"Mahogany"_ustr;
+inline constexpr OUString RID_SVXSTR_GRDT79_DEF = u"Green Grass"_ustr;
+inline constexpr OUString RID_SVXSTR_GRDT80_DEF = u"Neon Light"_ustr;
+inline constexpr OUString RID_SVXSTR_GRDT81_DEF = u"Sunshine"_ustr;
+inline constexpr OUString RID_SVXSTR_GRDT82_DEF = u"Rainbow"_ustr;
+inline constexpr OUString RID_SVXSTR_GRDT83_DEF = u"Sunrise"_ustr;
+inline constexpr OUString RID_SVXSTR_GRDT84_DEF = u"Sunset"_ustr;
+// Reference-strings for standard-hatch-table
+inline constexpr OUString RID_SVXSTR_HATCH0_DEF = u"Black 0 Degrees"_ustr;
+inline constexpr OUString RID_SVXSTR_HATCH1_DEF = u"Black 90 Degrees"_ustr;
+inline constexpr OUString RID_SVXSTR_HATCH2_DEF = u"Black 180 Degrees Crossed"_ustr;
+inline constexpr OUString RID_SVXSTR_HATCH3_DEF = u"Blue 45 Degrees"_ustr;
+inline constexpr OUString RID_SVXSTR_HATCH4_DEF = u"Blue -45 Degrees"_ustr;
+inline constexpr OUString RID_SVXSTR_HATCH5_DEF = u"Blue 45 Degrees Crossed"_ustr;
+inline constexpr OUString RID_SVXSTR_HATCH6_DEF = u"Green 30 Degrees"_ustr;
+inline constexpr OUString RID_SVXSTR_HATCH7_DEF = u"Green 60 Degrees"_ustr;
+inline constexpr OUString RID_SVXSTR_HATCH8_DEF = u"Green 90 Degrees Triple"_ustr;
+inline constexpr OUString RID_SVXSTR_HATCH9_DEF = u"Red 45 Degrees"_ustr;
+inline constexpr OUString RID_SVXSTR_HATCH10_DEF = u"Red 90 Degrees Crossed"_ustr;
+inline constexpr OUString RID_SVXSTR_HATCH11_DEF = u"Red -45 Degrees Triple"_ustr;
+inline constexpr OUString RID_SVXSTR_HATCH12_DEF = u"Yellow 45 Degrees"_ustr;
+inline constexpr OUString RID_SVXSTR_HATCH13_DEF = u"Yellow 45 Degrees Crossed"_ustr;
+inline constexpr OUString RID_SVXSTR_HATCH14_DEF = u"Yellow 45 Degrees Triple"_ustr;
+inline constexpr OUString RID_SVXSTR_HATCH15_DEF = u"Hatching"_ustr;
+// Reference-strings for standard-bitmap-table
+inline constexpr OUString RID_SVXSTR_BMP0_DEF = u"Empty"_ustr;
+inline constexpr OUString RID_SVXSTR_BMP1_DEF = u"Painted White"_ustr;
+inline constexpr OUString RID_SVXSTR_BMP2_DEF = u"Paper Texture"_ustr;
+inline constexpr OUString RID_SVXSTR_BMP3_DEF = u"Paper Crumpled"_ustr;
+inline constexpr OUString RID_SVXSTR_BMP4_DEF = u"Paper Graph"_ustr;
+inline constexpr OUString RID_SVXSTR_BMP5_DEF = u"Parchment Paper"_ustr;
+inline constexpr OUString RID_SVXSTR_BMP6_DEF = u"Fence"_ustr;
+inline constexpr OUString RID_SVXSTR_BMP7_DEF = u"Wooden Board"_ustr;
+inline constexpr OUString RID_SVXSTR_BMP8_DEF = u"Maple Leaves"_ustr;
+inline constexpr OUString RID_SVXSTR_BMP9_DEF = u"Lawn"_ustr;
+inline constexpr OUString RID_SVXSTR_BMP10_DEF = u"Colorful Pebbles"_ustr;
+inline constexpr OUString RID_SVXSTR_BMP11_DEF = u"Coffee Beans"_ustr;
+inline constexpr OUString RID_SVXSTR_BMP12_DEF = u"Little Clouds"_ustr;
+inline constexpr OUString RID_SVXSTR_BMP13_DEF = u"Bathroom Tiles"_ustr;
+inline constexpr OUString RID_SVXSTR_BMP14_DEF = u"Wall of Rock"_ustr;
+inline constexpr OUString RID_SVXSTR_BMP15_DEF = u"Zebra"_ustr;
+inline constexpr OUString RID_SVXSTR_BMP16_DEF = u"Color Stripes"_ustr;
+inline constexpr OUString RID_SVXSTR_BMP17_DEF = u"Gravel"_ustr;
+inline constexpr OUString RID_SVXSTR_BMP18_DEF = u"Parchment Studio"_ustr;
+inline constexpr OUString RID_SVXSTR_BMP19_DEF = u"Night Sky"_ustr;
+inline constexpr OUString RID_SVXSTR_BMP20_DEF = u"Pool"_ustr;
+inline constexpr OUString RID_SVXSTR_BMP21_DEF = u"Bitmap"_ustr;
+inline constexpr OUString RID_SVXSTR_BMP79_DEF = u"Invoice Paper"_ustr;
+inline constexpr OUString RID_SVXSTR_BMP80_DEF = u"Concrete"_ustr;
+inline constexpr OUString RID_SVXSTR_BMP81_DEF = u"Brick Wall"_ustr;
+inline constexpr OUString RID_SVXSTR_BMP82_DEF = u"Stone Wall"_ustr;
+inline constexpr OUString RID_SVXSTR_BMP83_DEF = u"Floral"_ustr;
+inline constexpr OUString RID_SVXSTR_BMP84_DEF = u"Space"_ustr;
+inline constexpr OUString RID_SVXSTR_BMP85_DEF = u"Ice light"_ustr;
+inline constexpr OUString RID_SVXSTR_BMP86_DEF = u"Marble"_ustr;
+inline constexpr OUString RID_SVXSTR_BMP87_DEF = u"Sand light"_ustr;
+inline constexpr OUString RID_SVXSTR_BMP88_DEF = u"Stone"_ustr;
+inline constexpr OUString RID_SVXSTR_BMP89_DEF = u"White Diffusion"_ustr;
+inline constexpr OUString RID_SVXSTR_BMP90_DEF = u"Surface"_ustr;
+inline constexpr OUString RID_SVXSTR_BMP91_DEF = u"Cardboard"_ustr;
+inline constexpr OUString RID_SVXSTR_BMP92_DEF = u"Studio"_ustr;
+// Reference strings for patterns - they are a variation of bitmaps
+inline constexpr OUString RID_SVXSTR_BMP22_DEF = u"5 Percent"_ustr;
+inline constexpr OUString RID_SVXSTR_BMP23_DEF = u"10 Percent"_ustr;
+inline constexpr OUString RID_SVXSTR_BMP24_DEF = u"20 Percent"_ustr;
+inline constexpr OUString RID_SVXSTR_BMP25_DEF = u"25 Percent"_ustr;
+inline constexpr OUString RID_SVXSTR_BMP26_DEF = u"30 Percent"_ustr;
+inline constexpr OUString RID_SVXSTR_BMP27_DEF = u"40 Percent"_ustr;
+inline constexpr OUString RID_SVXSTR_BMP28_DEF = u"50 Percent"_ustr;
+inline constexpr OUString RID_SVXSTR_BMP29_DEF = u"60 Percent"_ustr;
+inline constexpr OUString RID_SVXSTR_BMP30_DEF = u"70 Percent"_ustr;
+inline constexpr OUString RID_SVXSTR_BMP31_DEF = u"75 Percent"_ustr;
+inline constexpr OUString RID_SVXSTR_BMP32_DEF = u"80 Percent"_ustr;
+inline constexpr OUString RID_SVXSTR_BMP33_DEF = u"90 Percent"_ustr;
+inline constexpr OUString RID_SVXSTR_BMP34_DEF = u"Light Downward Diagonal"_ustr;
+inline constexpr OUString RID_SVXSTR_BMP35_DEF = u"Light Upward Diagonal"_ustr;
+inline constexpr OUString RID_SVXSTR_BMP36_DEF = u"Dark Downward Diagonal"_ustr;
+inline constexpr OUString RID_SVXSTR_BMP37_DEF = u"Dark Upward Diagonal"_ustr;
+inline constexpr OUString RID_SVXSTR_BMP38_DEF = u"Wide Downward Diagonal"_ustr;
+inline constexpr OUString RID_SVXSTR_BMP39_DEF = u"Wide Upward Diagonal"_ustr;
+inline constexpr OUString RID_SVXSTR_BMP40_DEF = u"Light Vertical"_ustr;
+inline constexpr OUString RID_SVXSTR_BMP41_DEF = u"Light Horizontal"_ustr;
+inline constexpr OUString RID_SVXSTR_BMP42_DEF = u"Narrow Vertical"_ustr;
+inline constexpr OUString RID_SVXSTR_BMP43_DEF = u"Narrow Horizontal"_ustr;
+inline constexpr OUString RID_SVXSTR_BMP44_DEF = u"Dark Vertical"_ustr;
+inline constexpr OUString RID_SVXSTR_BMP45_DEF = u"Dark Horizontal"_ustr;
+inline constexpr OUString RID_SVXSTR_BMP46_DEF = u"Dashed Downward Diagonal"_ustr;
+inline constexpr OUString RID_SVXSTR_BMP47_DEF = u"Dashed Upward Diagonal"_ustr;
+inline constexpr OUString RID_SVXSTR_BMP48_DEF = u"Dashed Horizontal"_ustr;
+inline constexpr OUString RID_SVXSTR_BMP49_DEF = u"Dashed Vertical"_ustr;
+inline constexpr OUString RID_SVXSTR_BMP50_DEF = u"Small Confetti"_ustr;
+inline constexpr OUString RID_SVXSTR_BMP51_DEF = u"Large Confetti"_ustr;
+inline constexpr OUString RID_SVXSTR_BMP52_DEF = u"Zig Zag"_ustr;
+inline constexpr OUString RID_SVXSTR_BMP53_DEF = u"Wave"_ustr;
+inline constexpr OUString RID_SVXSTR_BMP54_DEF = u"Diagonal Brick"_ustr;
+inline constexpr OUString RID_SVXSTR_BMP55_DEF = u"Horizontal Brick"_ustr;
+inline constexpr OUString RID_SVXSTR_BMP56_DEF = u"Weave"_ustr;
+inline constexpr OUString RID_SVXSTR_BMP57_DEF = u"Plaid"_ustr;
+inline constexpr OUString RID_SVXSTR_BMP58_DEF = u"Divot"_ustr;
+inline constexpr OUString RID_SVXSTR_BMP59_DEF = u"Dotted Grid"_ustr;
+inline constexpr OUString RID_SVXSTR_BMP60_DEF = u"Dotted Diamond"_ustr;
+inline constexpr OUString RID_SVXSTR_BMP61_DEF = u"Shingle"_ustr;
+inline constexpr OUString RID_SVXSTR_BMP62_DEF = u"Trellis"_ustr;
+inline constexpr OUString RID_SVXSTR_BMP63_DEF = u"Sphere"_ustr;
+inline constexpr OUString RID_SVXSTR_BMP64_DEF = u"Small Grid"_ustr;
+inline constexpr OUString RID_SVXSTR_BMP65_DEF = u"Large Grid"_ustr;
+inline constexpr OUString RID_SVXSTR_BMP66_DEF = u"Small Checker Board"_ustr;
+inline constexpr OUString RID_SVXSTR_BMP67_DEF = u"Large Checker Board"_ustr;
+inline constexpr OUString RID_SVXSTR_BMP68_DEF = u"Outlined Diamond"_ustr;
+inline constexpr OUString RID_SVXSTR_BMP69_DEF = u"Solid Diamond"_ustr;
+inline constexpr OUString RID_SVXSTR_BMP70_DEF = u"Vertical"_ustr;
+inline constexpr OUString RID_SVXSTR_BMP71_DEF = u"Horizontal"_ustr;
+inline constexpr OUString RID_SVXSTR_BMP72_DEF = u"Downward Diagonal"_ustr;
+inline constexpr OUString RID_SVXSTR_BMP73_DEF = u"Upward Diagonal"_ustr;
+inline constexpr OUString RID_SVXSTR_BMP74_DEF = u"Cross"_ustr;
+inline constexpr OUString RID_SVXSTR_BMP75_DEF = u"Diagonal Cross"_ustr;
+inline constexpr OUString RID_SVXSTR_BMP76_DEF = u"Dashed Dotted"_ustr;
+inline constexpr OUString RID_SVXSTR_BMP77_DEF = u"Dashed Dotted Upward Diagonal"_ustr;
+inline constexpr OUString RID_SVXSTR_BMP78_DEF = u"Solid Dotted"_ustr;
+// Reference-strings for standard-dash-table;
+inline constexpr OUString RID_SVXSTR_DASH0_DEF = u"Dot"_ustr;
+inline constexpr OUString RID_SVXSTR_DASH1_DEF = u"Long Dot"_ustr;
+inline constexpr OUString RID_SVXSTR_DASH2_DEF = u"Dot (Rounded)"_ustr;
+inline constexpr OUString RID_SVXSTR_DASH3_DEF = u"Dash"_ustr;
+inline constexpr OUString RID_SVXSTR_DASH4_DEF = u"Long Dash"_ustr;
+inline constexpr OUString RID_SVXSTR_DASH5_DEF = u"Double Dash"_ustr;
+inline constexpr OUString RID_SVXSTR_DASH6_DEF = u"Long Dash Dot"_ustr;
+inline constexpr OUString RID_SVXSTR_DASH7_DEF = u"Double Dash Dot"_ustr;
+inline constexpr OUString RID_SVXSTR_DASH8_DEF = u"Double Dash Dot Dot"_ustr;
+inline constexpr OUString RID_SVXSTR_DASH9_DEF = u"Ultrafine Dotted (var)"_ustr;
+inline constexpr OUString RID_SVXSTR_DASH10_DEF = u"Fine Dotted"_ustr;
+inline constexpr OUString RID_SVXSTR_DASH11_DEF = u"Ultrafine Dashed"_ustr;
+inline constexpr OUString RID_SVXSTR_DASH12_DEF = u"Fine Dashed"_ustr;
+inline constexpr OUString RID_SVXSTR_DASH13_DEF = u"Fine Dashed (var)"_ustr;
+inline constexpr OUString RID_SVXSTR_DASH14_DEF = u"Dashed (var)"_ustr;
+inline constexpr OUString RID_SVXSTR_DASH15_DEF = u"Sparse Dash"_ustr;
+inline constexpr OUString RID_SVXSTR_DASH16_DEF = u"3 Dashes 3 Dots (var)"_ustr;
+inline constexpr OUString RID_SVXSTR_DASH17_DEF = u"Ultrafine 2 Dots 3 Dashes"_ustr;
+inline constexpr OUString RID_SVXSTR_DASH18_DEF = u"2 Dots 1 Dash"_ustr;
+inline constexpr OUString RID_SVXSTR_DASH19_DEF = u"Line with Fine Dots"_ustr;
+inline constexpr OUString RID_SVXSTR_DASH20_DEF = u"Dash Dot"_ustr;
+inline constexpr OUString RID_SVXSTR_DASH21_DEF = u"Long Dot (Rounded)"_ustr;
+inline constexpr OUString RID_SVXSTR_DASH22_DEF = u"Dash Dot Dot"_ustr;
+inline constexpr OUString RID_SVXSTR_DASH23_DEF = u"Dash (Rounded)"_ustr;
+inline constexpr OUString RID_SVXSTR_DASH24_DEF = u"Long Dash (Rounded)"_ustr;
+inline constexpr OUString RID_SVXSTR_DASH25_DEF = u"Double Dash (Rounded)"_ustr;
+inline constexpr OUString RID_SVXSTR_DASH26_DEF = u"Dash Dot (Rounded)"_ustr;
+inline constexpr OUString RID_SVXSTR_DASH27_DEF = u"Long Dash Dot (Rounded)"_ustr;
+inline constexpr OUString RID_SVXSTR_DASH28_DEF = u"Double Dash Dot (Rounded)"_ustr;
+inline constexpr OUString RID_SVXSTR_DASH29_DEF = u"Dash Dot Dot (Rounded)"_ustr;
+inline constexpr OUString RID_SVXSTR_DASH30_DEF = u"Double Dash Dot Dot (Rounded)"_ustr;
+
+// Reference-strings for standard-line-end-table
+inline constexpr OUString RID_SVXSTR_LEND0_DEF = u"Concave short"_ustr;
+inline constexpr OUString RID_SVXSTR_LEND1_DEF = u"Square 45"_ustr;
+inline constexpr OUString RID_SVXSTR_LEND2_DEF = u"Arrow short"_ustr;
+inline constexpr OUString RID_SVXSTR_LEND3_DEF = u"Dimension Lines"_ustr;
+inline constexpr OUString RID_SVXSTR_LEND4_DEF = u"Double Arrow"_ustr;
+inline constexpr OUString RID_SVXSTR_LEND5_DEF = u"Triangle"_ustr;
+inline constexpr OUString RID_SVXSTR_LEND6_DEF = u"Concave"_ustr;
+inline constexpr OUString RID_SVXSTR_LEND7_DEF = u"Arrow large"_ustr;
+inline constexpr OUString RID_SVXSTR_LEND8_DEF = u"Dimension Line"_ustr;
+inline constexpr OUString RID_SVXSTR_LEND9_DEF = u"Circle"_ustr;
+inline constexpr OUString RID_SVXSTR_LEND10_DEF = u"Square"_ustr;
+inline constexpr OUString RID_SVXSTR_LEND11_DEF = u"Arrow"_ustr;
+inline constexpr OUString RID_SVXSTR_LEND12_DEF = u"Half Circle"_ustr;
+inline constexpr OUString RID_SVXSTR_LEND13_DEF = u"Triangle unfilled"_ustr;
+inline constexpr OUString RID_SVXSTR_LEND14_DEF = u"Diamond unfilled"_ustr;
+inline constexpr OUString RID_SVXSTR_LEND15_DEF = u"Diamond"_ustr;
+inline constexpr OUString RID_SVXSTR_LEND16_DEF = u"Circle unfilled"_ustr;
+inline constexpr OUString RID_SVXSTR_LEND17_DEF = u"Square 45 unfilled"_ustr;
+inline constexpr OUString RID_SVXSTR_LEND18_DEF = u"Square unfilled"_ustr;
+inline constexpr OUString RID_SVXSTR_LEND19_DEF = u"Half Circle unfilled"_ustr;
+inline constexpr OUString RID_SVXSTR_LEND20_DEF = u"Dimension Line Arrow"_ustr;
+inline constexpr OUString RID_SVXSTR_LEND21_DEF = u"Line short"_ustr;
+inline constexpr OUString RID_SVXSTR_LEND22_DEF = u"Line"_ustr;
+inline constexpr OUString RID_SVXSTR_LEND23_DEF = u"Half Arrow left"_ustr;
+inline constexpr OUString RID_SVXSTR_LEND24_DEF = u"Half Arrow right"_ustr;
+inline constexpr OUString RID_SVXSTR_LEND25_DEF = u"Reversed Arrow"_ustr;
+inline constexpr OUString RID_SVXSTR_LEND26_DEF = u"CF One"_ustr;
+inline constexpr OUString RID_SVXSTR_LEND27_DEF = u"CF Only One"_ustr;
+inline constexpr OUString RID_SVXSTR_LEND28_DEF = u"CF Many"_ustr;
+inline constexpr OUString RID_SVXSTR_LEND29_DEF = u"CF Many One"_ustr;
+inline constexpr OUString RID_SVXSTR_LEND30_DEF = u"CF Zero One"_ustr;
+inline constexpr OUString RID_SVXSTR_LEND31_DEF = u"CF Zero Many"_ustr;
+// Reference-strings for standard transparence gradients
+inline constexpr OUString RID_SVXSTR_TRASNGR0_DEF = u"Transparency"_ustr;
+inline constexpr OUString RID_SVXSTR_COLOR_LIBRE_GREEN_1_DEF = u"Green 1 (%PRODUCTNAME Main Color)"_ustr;
+inline constexpr OUString RID_SVXSTR_COLOR_LIBRE_GREEN_ACCENT_DEF = u"Green Accent"_ustr;;
+inline constexpr OUString RID_SVXSTR_COLOR_LIBRE_BLUE_ACCENT_DEF = u"Blue Accent"_ustr;
+inline constexpr OUString RID_SVXSTR_COLOR_LIBRE_ORANGE_ACCENT_DEF = u"Orange Accent"_ustr;
+inline constexpr OUString RID_SVXSTR_COLOR_LIBRE_PURPLE_DEF = u"Purple"_ustr;
+inline constexpr OUString RID_SVXSTR_COLOR_LIBRE_PURPLE_ACCENT_DEF = u"Purple Accent"_ustr;
+inline constexpr OUString RID_SVXSTR_COLOR_LIBRE_YELLOW_ACCENT_DEF = u"Yellow Accent"_ustr;
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab cinoptions=b1,g0,N-s cinkeys+=0=break: */
diff --git a/svx/inc/svxerr.hrc b/svx/inc/svxerr.hrc
new file mode 100644
index 0000000000..d968a5b747
--- /dev/null
+++ b/svx/inc/svxerr.hrc
@@ -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_INC_SVXERR_HRC
+#define INCLUDED_SVX_INC_SVXERR_HRC
+
+#define NC_(Context, String) TranslateId(Context, u8##String)
+
+#include <svx/svxerr.hxx>
+#include <editeng/editerr.hxx>
+
+// Error-Context ---------------------------------------------------------
+const ErrMsgCode RID_SVXERRCTX[] =
+{
+ { NC_("RID_SVXERRCTX", "$(ERR) executing the thesaurus.") ,
+ ErrCode(ERRCTX_SVX_LINGU_THESAURUS) },
+ { NC_("RID_SVXERRCTX", "$(ERR) executing the spellcheck.") ,
+ ErrCode(ERRCTX_SVX_LINGU_SPELLING) },
+ { NC_("RID_SVXERRCTX", "$(ERR) executing the hyphenation.") ,
+ ErrCode(ERRCTX_SVX_LINGU_HYPHENATION) },
+ { NC_("RID_SVXERRCTX", "$(ERR) creating a dictionary.") ,
+ ErrCode(ERRCTX_SVX_LINGU_DICTIONARY) },
+ { NC_("RID_SVXERRCTX", "$(ERR) setting background attribute.") ,
+ ErrCode(ERRCTX_SVX_BACKGROUND) },
+ { NC_("RID_SVXERRCTX", "$(ERR) loading the graphics.") ,
+ ErrCode(ERRCTX_SVX_IMPORT_GRAPHIC) },
+ { {}, ERRCODE_NONE }
+};
+
+// Error-Code ------------------------------------------------------------
+const ErrMsgCode RID_SVXERRCODE[] =
+{
+ { NC_("RID_SVXERRCODE", "$(ARG1) is not supported by the spellcheck function or is not presently active.\nPlease check your installation and, if necessary, install the required language module\nor activate it under 'Tools - Options - Languages and Locales - Writing Aids'."),
+ ERRCODE_SVX_LINGU_LANGUAGENOTEXISTS },
+ { NC_("RID_SVXERRCODE", "Spellcheck is not available.") ,
+ ERRCODE_SVX_LINGU_LINGUNOTEXISTS },
+ { NC_("RID_SVXERRCODE", "The custom dictionary $(ARG1) cannot be created.") ,
+ ERRCODE_SVX_LINGU_DICT_NOTWRITEABLE },
+ { NC_("RID_SVXERRCODE", "The graphic $(ARG1) could not be found.") ,
+ ERRCODE_SVX_GRAPHIC_NOTREADABLE },
+ { NC_("RID_SVXERRCODE", "An unlinked graphic could not be loaded."),
+ ERRCODE_SVX_GRAPHIC_WRONG_FILEFORMAT },
+ { NC_("RID_SVXERRCODE", "A language has not been fixed for the selected term."),
+ ERRCODE_SVX_LINGU_NOLANGUAGE },
+ { NC_("RID_SVXERRCODE", "All changes to the Basic Code are lost. The original VBA Macro Code is saved instead."),
+ ERRCODE_SVX_MODIFIED_VBASIC_STORAGE },
+ { NC_("RID_SVXERRCODE", "The original VBA Basic Code contained in the document will not be saved."),
+ ERRCODE_SVX_VBASIC_STORAGE_EXIST },
+ { NC_("RID_SVXERRCODE", "The password is incorrect. The document cannot be opened."),
+ ERRCODE_SVX_WRONGPASS },
+ { NC_("RID_SVXERRCODE", "The encryption method used in this document is not supported. Only Microsoft Office 97/2000 compatible password encryption is supported."),
+ ERRCODE_SVX_READ_FILTER_CRYPT },
+ { NC_("RID_SVXERRCODE", "The loading of password-encrypted Microsoft PowerPoint presentations is not supported."),
+ ERRCODE_SVX_READ_FILTER_PPOINT },
+ { NC_("RID_SVXERRCODE", "Password protection is not supported when documents are saved in a Microsoft Office format.\nDo you want to save the document without password protection?"),
+ ERRCODE_SVX_EXPORT_FILTER_CRYPT },
+ { {}, ERRCODE_NONE }
+};
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/svx/inc/swframeposstrings.hrc b/svx/inc/swframeposstrings.hrc
new file mode 100644
index 0000000000..ff2aea4ef0
--- /dev/null
+++ b/svx/inc/swframeposstrings.hrc
@@ -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_INC_SWFRAMEPOSSTRINGS_HRC
+#define INCLUDED_SVX_INC_SWFRAMEPOSSTRINGS_HRC
+
+#include <unotools/resmgr.hxx>
+
+#define NC_(Context, String) TranslateId(Context, u8##String)
+
+//the following string have to match the (enum values) positions in svx/swframeposstrings.hxx!
+const TranslateId RID_SVXSW_FRAMEPOSITIONS[] =
+{
+ NC_("RID_SVXSW_FRAMEPOSITIONS", "Left"),
+ NC_("RID_SVXSW_FRAMEPOSITIONS", "Right"),
+ NC_("RID_SVXSW_FRAMEPOSITIONS", "From left"),
+ NC_("RID_SVXSW_FRAMEPOSITIONS", "Inside"),
+ NC_("RID_SVXSW_FRAMEPOSITIONS", "Outside"),
+ NC_("RID_SVXSW_FRAMEPOSITIONS", "From inside"),
+ NC_("RID_SVXSW_FRAMEPOSITIONS", "Entire paragraph area"),
+ NC_("RID_SVXSW_FRAMEPOSITIONS", "Paragraph text area"),
+ NC_("RID_SVXSW_FRAMEPOSITIONS", "Left of page text area"),
+ NC_("RID_SVXSW_FRAMEPOSITIONS", "Right of page text area"),
+ NC_("RID_SVXSW_FRAMEPOSITIONS", "Left of paragraph text area"),
+ NC_("RID_SVXSW_FRAMEPOSITIONS", "Right of paragraph text area"),
+ NC_("RID_SVXSW_FRAMEPOSITIONS", "Inner page border"),
+ NC_("RID_SVXSW_FRAMEPOSITIONS", "Outer page border"),
+ NC_("RID_SVXSW_FRAMEPOSITIONS", "Inner paragraph border"),
+ NC_("RID_SVXSW_FRAMEPOSITIONS", "Outer paragraph border"),
+ NC_("RID_SVXSW_FRAMEPOSITIONS", "Entire page"),
+ NC_("RID_SVXSW_FRAMEPOSITIONS", "Page text area"),
+ NC_("RID_SVXSW_FRAMEPOSITIONS", "Above page text area"),
+ NC_("RID_SVXSW_FRAMEPOSITIONS", "Below page text area"),
+ NC_("RID_SVXSW_FRAMEPOSITIONS", "Base line"),
+ NC_("RID_SVXSW_FRAMEPOSITIONS", "Character"),
+ NC_("RID_SVXSW_FRAMEPOSITIONS", "Row"),
+ NC_("RID_SVXSW_FRAMEPOSITIONS", "Entire paragraph area"),
+ NC_("RID_SVXSW_FRAMEPOSITIONS", "Paragraph text area"),
+ NC_("RID_SVXSW_FRAMEPOSITIONS", "Left of frame text area"),
+ NC_("RID_SVXSW_FRAMEPOSITIONS", "Right of frame text area"),
+ NC_("RID_SVXSW_FRAMEPOSITIONS", "Entire frame"),
+ NC_("RID_SVXSW_FRAMEPOSITIONS", "Frame text area"),
+ NC_("RID_SVXSW_FRAMEPOSITIONS", "Inner frame border"),
+ NC_("RID_SVXSW_FRAMEPOSITIONS", "Outer frame border"),
+ NC_("RID_SVXSW_FRAMEPOSITIONS", "Top"),
+ NC_("RID_SVXSW_FRAMEPOSITIONS", "Bottom"),
+ NC_("RID_SVXSW_FRAMEPOSITIONS", "Center"),
+ NC_("RID_SVXSW_FRAMEPOSITIONS", "Center"),
+ NC_("RID_SVXSW_FRAMEPOSITIONS", "From top"),
+ NC_("RID_SVXSW_FRAMEPOSITIONS", "From bottom"),
+ NC_("RID_SVXSW_FRAMEPOSITIONS", "Below"),
+ NC_("RID_SVXSW_FRAMEPOSITIONS", "From right"),
+ NC_("RID_SVXSW_FRAMEPOSITIONS", "Top page border"),
+ NC_("RID_SVXSW_FRAMEPOSITIONS", "Bottom page border"),
+ NC_("RID_SVXSW_FRAMEPOSITIONS", "Top paragraph border"),
+ NC_("RID_SVXSW_FRAMEPOSITIONS", "Bottom paragraph border"),
+ NC_("RID_SVXSW_FRAMEPOSITIONS", "Line of text")
+};
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/svx/inc/sxallitm.hxx b/svx/inc/sxallitm.hxx
new file mode 100644
index 0000000000..144d3bae2b
--- /dev/null
+++ b/svx/inc/sxallitm.hxx
@@ -0,0 +1,63 @@
+/* -*- 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_INC_SXALLITM_HXX
+#define INCLUDED_SVX_INC_SXALLITM_HXX
+
+#include <svx/svddef.hxx>
+#include <svx/sdmetitm.hxx>
+
+class SdrAllPositionXItem final : public SdrMetricItem {
+public:
+ SdrAllPositionXItem(tools::Long nPosX=0): SdrMetricItem(SDRATTR_ALLPOSITIONX,nPosX) {}
+ virtual SdrAllPositionXItem* Clone(SfxItemPool*) const override
+ {
+ return new SdrAllPositionXItem(*this);
+ }
+};
+
+class SdrAllPositionYItem final : public SdrMetricItem {
+public:
+ SdrAllPositionYItem(tools::Long nPosY=0): SdrMetricItem(SDRATTR_ALLPOSITIONY,nPosY) {}
+ virtual SdrAllPositionYItem* Clone(SfxItemPool*) const override
+ {
+ return new SdrAllPositionYItem(*this);
+ }
+};
+
+class SdrAllSizeWidthItem final : public SdrMetricItem {
+public:
+ SdrAllSizeWidthItem(tools::Long nWdt=0): SdrMetricItem(SDRATTR_ALLSIZEWIDTH,nWdt) {}
+ virtual SdrAllSizeWidthItem* Clone(SfxItemPool*) const override
+ {
+ return new SdrAllSizeWidthItem(*this);
+ }
+};
+
+class SdrAllSizeHeightItem final : public SdrMetricItem {
+public:
+ SdrAllSizeHeightItem(tools::Long nHgt=0): SdrMetricItem(SDRATTR_ALLSIZEHEIGHT,nHgt) {}
+ virtual SdrAllSizeHeightItem* Clone(SfxItemPool*) const override
+ {
+ return new SdrAllSizeHeightItem(*this);
+ }
+};
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/svx/inc/sxcaitm.hxx b/svx/inc/sxcaitm.hxx
new file mode 100644
index 0000000000..26d4a31943
--- /dev/null
+++ b/svx/inc/sxcaitm.hxx
@@ -0,0 +1,48 @@
+/* -*- 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 <svx/svddef.hxx>
+
+#include <svx/sdangitm.hxx>
+
+// SDRATTR_CAPTIONFIXEDANGLE SdrOnOffItem:
+// sal_True=angle predefined by SdrCaptionAngleItem
+// sal_False=free angle
+
+// class SdrCaptionAngleItem
+// angle in 1/100 degree
+// only if Type2, Type3 and Type4
+// and only if SdrCaptionIsFixedAngleItem=TRUE
+
+class SdrCaptionAngleItem final : public SdrAngleItem
+{
+public:
+ SdrCaptionAngleItem(Degree100 nAngle = 0_deg100)
+ : SdrAngleItem(SDRATTR_CAPTIONANGLE, nAngle)
+ {
+ }
+ virtual SdrCaptionAngleItem* Clone(SfxItemPool*) const override
+ {
+ return new SdrCaptionAngleItem(*this);
+ }
+};
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/svx/inc/sxcikitm.hxx b/svx/inc/sxcikitm.hxx
new file mode 100644
index 0000000000..738e593665
--- /dev/null
+++ b/svx/inc/sxcikitm.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/.
+ *
+ * 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_INC_SXCIKITM_HXX
+#define INCLUDED_SVX_INC_SXCIKITM_HXX
+
+#include <svx/svddef.hxx>
+#include <svl/eitem.hxx>
+#include <svx/svdocirc.hxx>
+
+class SdrCircKindItem final : public SfxEnumItem<SdrCircKind> {
+public:
+ SdrCircKindItem(SdrCircKind eKind=SdrCircKind::Full): SfxEnumItem(SDRATTR_CIRCKIND, eKind) {}
+ virtual SdrCircKindItem* Clone(SfxItemPool* pPool=nullptr) const override;
+ virtual sal_uInt16 GetValueCount() const override; // { return 4; }
+
+ 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;
+
+ static OUString GetValueTextByPos(sal_uInt16 nPos);
+ virtual bool GetPresentation(SfxItemPresentation ePres, MapUnit eCoreMetric, MapUnit ePresMetric, OUString& rText, const IntlWrapper&) const override;
+};
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/svx/inc/sxfiitm.hxx b/svx/inc/sxfiitm.hxx
new file mode 100644
index 0000000000..b629acfeba
--- /dev/null
+++ b/svx/inc/sxfiitm.hxx
@@ -0,0 +1,39 @@
+/* -*- 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 <svl/poolitem.hxx>
+#include <tools/fract.hxx>
+
+/*************************************************************************/
+/* FractionItem */
+/*************************************************************************/
+
+class SdrFractionItem: public SfxPoolItem {
+ Fraction nValue;
+public:
+ SdrFractionItem(sal_uInt16 nId, const Fraction& rVal): SfxPoolItem(nId), nValue(rVal) {}
+ virtual bool operator==(const SfxPoolItem&) const override;
+ virtual bool GetPresentation(SfxItemPresentation ePresentation, MapUnit eCoreMetric, MapUnit ePresentationMetric, OUString &rText, const IntlWrapper&) const override;
+ virtual SdrFractionItem* Clone(SfxItemPool *pPool=nullptr) const override;
+ const Fraction& GetValue() const { return nValue; }
+};
+
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/svx/inc/sxlayitm.hxx b/svx/inc/sxlayitm.hxx
new file mode 100644
index 0000000000..be444bec33
--- /dev/null
+++ b/svx/inc/sxlayitm.hxx
@@ -0,0 +1,43 @@
+/* -*- 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_INC_SXLAYITM_HXX
+#define INCLUDED_SVX_INC_SXLAYITM_HXX
+
+#include <svx/svddef.hxx>
+#include <svl/stritem.hxx>
+#include <svl/intitem.hxx>
+#include <svx/svdtypes.hxx>
+
+class SdrLayerIdItem final : public SfxInt16Item {
+public:
+ SdrLayerIdItem(SdrLayerID nId): SfxInt16Item(SDRATTR_LAYERID,nId.get()) {}
+ SdrLayerID GetValue() const { return SdrLayerID(SfxInt16Item::GetValue()); }
+ virtual SdrLayerIdItem* Clone(SfxItemPool* pPool=nullptr) const override;
+};
+
+class SdrLayerNameItem final : public SfxStringItem {
+public:
+ SdrLayerNameItem() : SfxStringItem() { SetWhich(SDRATTR_LAYERNAME); }
+ SdrLayerNameItem(const OUString& rStr) : SfxStringItem(SDRATTR_LAYERNAME,rStr) {}
+ virtual SdrLayerNameItem* Clone(SfxItemPool* pPool=nullptr) const override;
+};
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/svx/inc/sxlogitm.hxx b/svx/inc/sxlogitm.hxx
new file mode 100644
index 0000000000..20d61724b3
--- /dev/null
+++ b/svx/inc/sxlogitm.hxx
@@ -0,0 +1,45 @@
+/* -*- 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_INC_SXLOGITM_HXX
+#define INCLUDED_SVX_INC_SXLOGITM_HXX
+
+#include <svx/svddef.hxx>
+#include <svx/sdmetitm.hxx>
+
+class SdrLogicSizeWidthItem final : public SdrMetricItem {
+public:
+ SdrLogicSizeWidthItem(tools::Long nWdt=0): SdrMetricItem(SDRATTR_LOGICSIZEWIDTH,nWdt) {}
+ virtual SdrLogicSizeWidthItem* Clone(SfxItemPool*) const override
+ {
+ return new SdrLogicSizeWidthItem(*this);
+ }
+};
+
+class SdrLogicSizeHeightItem final : public SdrMetricItem {
+public:
+ SdrLogicSizeHeightItem(tools::Long nHgt=0): SdrMetricItem(SDRATTR_LOGICSIZEHEIGHT,nHgt) {}
+ virtual SdrLogicSizeHeightItem* Clone(SfxItemPool*) const override
+ {
+ return new SdrLogicSizeHeightItem(*this);
+ }
+};
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/svx/inc/sxmfsitm.hxx b/svx/inc/sxmfsitm.hxx
new file mode 100644
index 0000000000..c3c0709523
--- /dev/null
+++ b/svx/inc/sxmfsitm.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 .
+ */
+#pragma once
+
+#include <svx/svddef.hxx>
+#include <svl/stritem.hxx>
+
+// Format string (similar to Calc), e.g. "#.###,00km"
+// overwrites SdrMeasureUnitItem and SdrMeasureShowUnitItem
+class SdrMeasureFormatStringItem final : public SfxStringItem {
+public:
+ SdrMeasureFormatStringItem() : SfxStringItem() { SetWhich(SDRATTR_MEASUREFORMATSTRING); }
+ virtual SdrMeasureFormatStringItem* Clone(SfxItemPool*) const override
+ {
+ return new SdrMeasureFormatStringItem(*this);
+ }
+};
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/svx/inc/sxmkitm.hxx b/svx/inc/sxmkitm.hxx
new file mode 100644
index 0000000000..12769a0857
--- /dev/null
+++ b/svx/inc/sxmkitm.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_INC_SXMKITM_HXX
+#define INCLUDED_SVX_INC_SXMKITM_HXX
+
+#include <svx/svddef.hxx>
+#include <svl/eitem.hxx>
+
+enum SdrMeasureKind {SDRMEASURE_STD,SDRMEASURE_RADIUS}; // n.i.
+
+
+
+class SdrMeasureKindItem final : public SfxEnumItem<SdrMeasureKind> {
+public:
+ SdrMeasureKindItem() : SfxEnumItem(SDRATTR_MEASUREKIND, SDRMEASURE_STD) {}
+ virtual SdrMeasureKindItem* Clone(SfxItemPool* pPool=nullptr) const override;
+ virtual sal_uInt16 GetValueCount() const override; // { return 2; }
+
+ 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;
+
+ static OUString GetValueTextByPos(sal_uInt16 nPos);
+ virtual bool GetPresentation(SfxItemPresentation ePres, MapUnit eCoreMetric, MapUnit ePresMetric, OUString& rText, const IntlWrapper&) const override;
+};
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/svx/inc/sxmoitm.hxx b/svx/inc/sxmoitm.hxx
new file mode 100644
index 0000000000..f207f74117
--- /dev/null
+++ b/svx/inc/sxmoitm.hxx
@@ -0,0 +1,42 @@
+/* -*- 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_INC_SXMOITM_HXX
+#define INCLUDED_SVX_INC_SXMOITM_HXX
+
+#include <svx/svddef.hxx>
+#include <svx/sdmetitm.hxx>
+
+// Overlap of the measure line over the measure helper lines
+// Only of the measure arrows are on the outside
+class SdrMeasureOverhangItem final : public SdrMetricItem
+{
+public:
+ SdrMeasureOverhangItem(tools::Long nVal)
+ : SdrMetricItem(SDRATTR_MEASUREOVERHANG, nVal)
+ {
+ }
+ virtual SdrMeasureOverhangItem* Clone(SfxItemPool*) const override
+ {
+ return new SdrMeasureOverhangItem(*this);
+ }
+};
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/svx/inc/sxmovitm.hxx b/svx/inc/sxmovitm.hxx
new file mode 100644
index 0000000000..eda423e27c
--- /dev/null
+++ b/svx/inc/sxmovitm.hxx
@@ -0,0 +1,45 @@
+/* -*- 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_INC_SXMOVITM_HXX
+#define INCLUDED_SVX_INC_SXMOVITM_HXX
+
+#include <svx/svddef.hxx>
+#include <svx/sdmetitm.hxx>
+
+class SdrMoveXItem final : public SdrMetricItem {
+public:
+ SdrMoveXItem(): SdrMetricItem(SDRATTR_MOVEX,0) {}
+ SdrMoveXItem* Clone(SfxItemPool*) const override
+ {
+ return new SdrMoveXItem(*this);
+ }
+};
+
+class SdrMoveYItem final : public SdrMetricItem {
+public:
+ SdrMoveYItem(): SdrMetricItem(SDRATTR_MOVEY,0) {}
+ SdrMoveYItem* Clone(SfxItemPool*) const override
+ {
+ return new SdrMoveYItem(*this);
+ }
+};
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/svx/inc/sxmsitm.hxx b/svx/inc/sxmsitm.hxx
new file mode 100644
index 0000000000..f821c73fe0
--- /dev/null
+++ b/svx/inc/sxmsitm.hxx
@@ -0,0 +1,43 @@
+/* -*- 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_INC_SXMSITM_HXX
+#define INCLUDED_SVX_INC_SXMSITM_HXX
+
+#include <svx/svddef.hxx>
+#include "sxsiitm.hxx"
+
+// Measure scale setting
+// We do not overwrite a measure scale (UIScale), If the model already has one set.
+// Instead, we multiply them with each other.
+class SdrMeasureScaleItem final : public SdrScaleItem
+{
+public:
+ SdrMeasureScaleItem()
+ : SdrScaleItem(SDRATTR_MEASURESCALE, Fraction(1, 1))
+ {
+ }
+ virtual SdrMeasureScaleItem* Clone(SfxItemPool*) const override
+ {
+ return new SdrMeasureScaleItem(*this);
+ }
+};
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/svx/inc/sxmtaitm.hxx b/svx/inc/sxmtaitm.hxx
new file mode 100644
index 0000000000..cb94874bdf
--- /dev/null
+++ b/svx/inc/sxmtaitm.hxx
@@ -0,0 +1,50 @@
+/* -*- 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_INC_SXMTAITM_HXX
+#define INCLUDED_SVX_INC_SXMTAITM_HXX
+
+#include <svx/svddef.hxx>
+#include <svx/sdynitm.hxx>
+#include <svx/sdangitm.hxx>
+
+// Turn text automatically in wright position (automatic UpsideDown).
+// TextUpsideDown stays active and turns the text again if sal_True.
+class SdrMeasureTextAutoAngleItem final : public SdrYesNoItem {
+public:
+ SdrMeasureTextAutoAngleItem(bool bOn=true): SdrYesNoItem(SDRATTR_MEASURETEXTAUTOANGLE,bOn) {}
+ virtual SdrMeasureTextAutoAngleItem* Clone(SfxItemPool*) const override
+ {
+ return new SdrMeasureTextAutoAngleItem(*this);
+ }
+};
+
+// Preferred perspective for reading text is only evaluated if TextAutoAngle=TRUE.
+// Angle in 1/100deg from viewpoint of the user.
+class SdrMeasureTextAutoAngleViewItem final : public SdrAngleItem {
+public:
+ SdrMeasureTextAutoAngleViewItem(Degree100 nVal=31500_deg100): SdrAngleItem(SDRATTR_MEASURETEXTAUTOANGLEVIEW,nVal) {}
+ virtual SdrMeasureTextAutoAngleViewItem* Clone(SfxItemPool*) const override
+ {
+ return new SdrMeasureTextAutoAngleViewItem(*this);
+ }
+};
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/svx/inc/sxoneitm.hxx b/svx/inc/sxoneitm.hxx
new file mode 100644
index 0000000000..424563008b
--- /dev/null
+++ b/svx/inc/sxoneitm.hxx
@@ -0,0 +1,63 @@
+/* -*- 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_INC_SXONEITM_HXX
+#define INCLUDED_SVX_INC_SXONEITM_HXX
+
+#include <svx/svddef.hxx>
+#include <svx/sdmetitm.hxx>
+
+class SdrOnePositionXItem final : public SdrMetricItem {
+public:
+ SdrOnePositionXItem(tools::Long nPosX=0): SdrMetricItem(SDRATTR_ONEPOSITIONX,nPosX) {}
+ virtual SdrOnePositionXItem* Clone(SfxItemPool*) const override
+ {
+ return new SdrOnePositionXItem(*this);
+ }
+};
+
+class SdrOnePositionYItem final : public SdrMetricItem {
+public:
+ SdrOnePositionYItem(tools::Long nPosY=0): SdrMetricItem(SDRATTR_ONEPOSITIONY,nPosY) {}
+ virtual SdrOnePositionYItem* Clone(SfxItemPool*) const override
+ {
+ return new SdrOnePositionYItem(*this);
+ }
+};
+
+class SdrOneSizeWidthItem final : public SdrMetricItem {
+public:
+ SdrOneSizeWidthItem(tools::Long nWdt=0): SdrMetricItem(SDRATTR_ONESIZEWIDTH,nWdt) {}
+ virtual SdrOneSizeWidthItem* Clone(SfxItemPool*) const override
+ {
+ return new SdrOneSizeWidthItem(*this);
+ }
+};
+
+class SdrOneSizeHeightItem final : public SdrMetricItem {
+public:
+ SdrOneSizeHeightItem(tools::Long nHgt=0): SdrMetricItem(SDRATTR_ONESIZEHEIGHT,nHgt) {}
+ virtual SdrOneSizeHeightItem* Clone(SfxItemPool*) const override
+ {
+ return new SdrOneSizeHeightItem(*this);
+ }
+};
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/svx/inc/sxopitm.hxx b/svx/inc/sxopitm.hxx
new file mode 100644
index 0000000000..cd7d2bb1f5
--- /dev/null
+++ b/svx/inc/sxopitm.hxx
@@ -0,0 +1,45 @@
+/* -*- 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_INC_SXOPITM_HXX
+#define INCLUDED_SVX_INC_SXOPITM_HXX
+
+#include <svx/svddef.hxx>
+#include <svx/sdynitm.hxx>
+
+class SdrObjPrintableItem final : public SdrYesNoItem {
+public:
+ SdrObjPrintableItem(bool bOn=false): SdrYesNoItem(SDRATTR_OBJPRINTABLE,bOn) {}
+ virtual SdrObjPrintableItem* Clone(SfxItemPool*) const override
+ {
+ return new SdrObjPrintableItem(*this);
+ }
+};
+
+class SdrObjVisibleItem final : public SdrYesNoItem {
+public:
+ SdrObjVisibleItem(bool bOn=true): SdrYesNoItem(SDRATTR_OBJVISIBLE,bOn) {}
+ virtual SdrObjVisibleItem* Clone(SfxItemPool*) const override
+ {
+ return new SdrObjVisibleItem(*this);
+ }
+};
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/svx/inc/sxreaitm.hxx b/svx/inc/sxreaitm.hxx
new file mode 100644
index 0000000000..2887e8ba0a
--- /dev/null
+++ b/svx/inc/sxreaitm.hxx
@@ -0,0 +1,46 @@
+/* -*- 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_INC_SXREAITM_HXX
+#define INCLUDED_SVX_INC_SXREAITM_HXX
+
+#include <svx/svddef.hxx>
+
+#include "sxfiitm.hxx"
+
+class SdrResizeXAllItem final : public SdrFractionItem {
+public:
+ SdrResizeXAllItem(): SdrFractionItem(SDRATTR_RESIZEXALL,Fraction(1,1)) {}
+ virtual SdrResizeXAllItem* Clone(SfxItemPool*) const override
+ {
+ return new SdrResizeXAllItem(*this);
+ }
+};
+
+class SdrResizeYAllItem final : public SdrFractionItem {
+public:
+ SdrResizeYAllItem(): SdrFractionItem(SDRATTR_RESIZEYALL,Fraction(1,1)) {}
+ virtual SdrResizeYAllItem* Clone(SfxItemPool*) const override
+ {
+ return new SdrResizeYAllItem(*this);
+ }
+};
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/svx/inc/sxreoitm.hxx b/svx/inc/sxreoitm.hxx
new file mode 100644
index 0000000000..19d1cb6b8c
--- /dev/null
+++ b/svx/inc/sxreoitm.hxx
@@ -0,0 +1,46 @@
+/* -*- 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_INC_SXREOITM_HXX
+#define INCLUDED_SVX_INC_SXREOITM_HXX
+
+#include <svx/svddef.hxx>
+
+#include "sxfiitm.hxx"
+
+class SdrResizeXOneItem final : public SdrFractionItem {
+public:
+ SdrResizeXOneItem(): SdrFractionItem(SDRATTR_RESIZEXONE,Fraction(1,1)) {}
+ SdrResizeXOneItem* Clone(SfxItemPool*) const override
+ {
+ return new SdrResizeXOneItem(*this);
+ }
+};
+
+class SdrResizeYOneItem final : public SdrFractionItem {
+public:
+ SdrResizeYOneItem(): SdrFractionItem(SDRATTR_RESIZEYONE,Fraction(1,1)) {}
+ SdrResizeYOneItem* Clone(SfxItemPool*) const override
+ {
+ return new SdrResizeYOneItem(*this);
+ }
+};
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/svx/inc/sxroaitm.hxx b/svx/inc/sxroaitm.hxx
new file mode 100644
index 0000000000..7f1aec1c54
--- /dev/null
+++ b/svx/inc/sxroaitm.hxx
@@ -0,0 +1,40 @@
+/* -*- 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_INC_SXROAITM_HXX
+#define INCLUDED_SVX_INC_SXROAITM_HXX
+
+#include <svx/svddef.hxx>
+#include <svx/sdangitm.hxx>
+
+class SdrRotateAllItem final : public SdrAngleItem
+{
+public:
+ SdrRotateAllItem()
+ : SdrAngleItem(SDRATTR_ROTATEALL, 0_deg100)
+ {
+ }
+ virtual SdrRotateAllItem* Clone(SfxItemPool*) const override
+ {
+ return new SdrRotateAllItem(*this);
+ }
+};
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/svx/inc/sxrooitm.hxx b/svx/inc/sxrooitm.hxx
new file mode 100644
index 0000000000..f14bcf77f1
--- /dev/null
+++ b/svx/inc/sxrooitm.hxx
@@ -0,0 +1,36 @@
+/* -*- 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_INC_SXROOITM_HXX
+#define INCLUDED_SVX_INC_SXROOITM_HXX
+
+#include <svx/svddef.hxx>
+#include <svx/sdangitm.hxx>
+
+class SdrRotateOneItem final : public SdrAngleItem {
+public:
+ SdrRotateOneItem(): SdrAngleItem(SDRATTR_ROTATEONE,0_deg100) {}
+ SdrRotateOneItem* Clone(SfxItemPool*) const override
+ {
+ return new SdrRotateOneItem(*this);
+ }
+};
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/svx/inc/sxsaitm.hxx b/svx/inc/sxsaitm.hxx
new file mode 100644
index 0000000000..190d66d7b6
--- /dev/null
+++ b/svx/inc/sxsaitm.hxx
@@ -0,0 +1,40 @@
+/* -*- 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_INC_SXSAITM_HXX
+#define INCLUDED_SVX_INC_SXSAITM_HXX
+
+#include <svx/svddef.hxx>
+#include <svx/sdangitm.hxx>
+
+class SdrShearAngleItem final : public SdrAngleItem
+{
+public:
+ SdrShearAngleItem(Degree100 nAngle = 0_deg100)
+ : SdrAngleItem(SDRATTR_SHEARANGLE, nAngle)
+ {
+ }
+ virtual SdrShearAngleItem* Clone(SfxItemPool*) const override
+ {
+ return new SdrShearAngleItem(*this);
+ }
+};
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/svx/inc/sxsalitm.hxx b/svx/inc/sxsalitm.hxx
new file mode 100644
index 0000000000..304396206a
--- /dev/null
+++ b/svx/inc/sxsalitm.hxx
@@ -0,0 +1,45 @@
+/* -*- 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_INC_SXSALITM_HXX
+#define INCLUDED_SVX_INC_SXSALITM_HXX
+
+#include <svx/svddef.hxx>
+#include <svx/sdangitm.hxx>
+
+class SdrHorzShearAllItem final : public SdrAngleItem {
+public:
+ SdrHorzShearAllItem(): SdrAngleItem(SDRATTR_HORZSHEARALL,0_deg100) {}
+ virtual SdrHorzShearAllItem* Clone(SfxItemPool*) const override
+ {
+ return new SdrHorzShearAllItem(*this);
+ }
+};
+
+class SdrVertShearAllItem final : public SdrAngleItem {
+public:
+ SdrVertShearAllItem(): SdrAngleItem(SDRATTR_VERTSHEARALL,0_deg100) {}
+ virtual SdrVertShearAllItem* Clone(SfxItemPool*) const override
+ {
+ return new SdrVertShearAllItem(*this);
+ }
+};
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/svx/inc/sxsiitm.hxx b/svx/inc/sxsiitm.hxx
new file mode 100644
index 0000000000..2a5d658639
--- /dev/null
+++ b/svx/inc/sxsiitm.hxx
@@ -0,0 +1,30 @@
+/* -*- 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 "sxfiitm.hxx"
+
+class SdrScaleItem: public SdrFractionItem {
+public:
+ SdrScaleItem(sal_uInt16 nId, const Fraction& rVal): SdrFractionItem(nId,rVal) {}
+ virtual bool GetPresentation(SfxItemPresentation ePresentation, MapUnit eCoreMetric, MapUnit ePresentationMetric, OUString &rText, const IntlWrapper&) const override;
+ virtual SdrScaleItem* Clone(SfxItemPool *pPool=nullptr) const override;
+};
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/svx/inc/sxsoitm.hxx b/svx/inc/sxsoitm.hxx
new file mode 100644
index 0000000000..ce5ce237e1
--- /dev/null
+++ b/svx/inc/sxsoitm.hxx
@@ -0,0 +1,45 @@
+/* -*- 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_INC_SXSOITM_HXX
+#define INCLUDED_SVX_INC_SXSOITM_HXX
+
+#include <svx/svddef.hxx>
+#include <svx/sdangitm.hxx>
+
+class SdrHorzShearOneItem final : public SdrAngleItem {
+public:
+ SdrHorzShearOneItem(): SdrAngleItem(SDRATTR_HORZSHEARONE,0_deg100) {}
+ SdrHorzShearOneItem* Clone(SfxItemPool*) const override
+ {
+ return new SdrHorzShearOneItem(*this);
+ }
+};
+
+class SdrVertShearOneItem final : public SdrAngleItem {
+public:
+ SdrVertShearOneItem(): SdrAngleItem(SDRATTR_VERTSHEARONE,0_deg100) {}
+ SdrVertShearOneItem* Clone(SfxItemPool*) const override
+ {
+ return new SdrVertShearOneItem(*this);
+ }
+};
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/svx/inc/sxtraitm.hxx b/svx/inc/sxtraitm.hxx
new file mode 100644
index 0000000000..2a1fdec4cc
--- /dev/null
+++ b/svx/inc/sxtraitm.hxx
@@ -0,0 +1,63 @@
+/* -*- 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_INC_SXTRAITM_HXX
+#define INCLUDED_SVX_INC_SXTRAITM_HXX
+
+#include <svx/svddef.hxx>
+#include <svx/sdmetitm.hxx>
+
+class SdrTransformRef1XItem final : public SdrMetricItem {
+public:
+ SdrTransformRef1XItem(tools::Long nHgt=0): SdrMetricItem(SDRATTR_TRANSFORMREF1X,nHgt) {}
+ virtual SdrTransformRef1XItem* Clone(SfxItemPool*) const override
+ {
+ return new SdrTransformRef1XItem(*this);
+ }
+};
+
+class SdrTransformRef1YItem final : public SdrMetricItem {
+public:
+ SdrTransformRef1YItem(tools::Long nHgt=0): SdrMetricItem(SDRATTR_TRANSFORMREF1Y,nHgt) {}
+ virtual SdrTransformRef1YItem* Clone(SfxItemPool*) const override
+ {
+ return new SdrTransformRef1YItem(*this);
+ }
+};
+
+class SdrTransformRef2XItem final : public SdrMetricItem {
+public:
+ SdrTransformRef2XItem(tools::Long nHgt=0): SdrMetricItem(SDRATTR_TRANSFORMREF2X,nHgt) {}
+ virtual SdrTransformRef2XItem* Clone(SfxItemPool*) const override
+ {
+ return new SdrTransformRef2XItem(*this);
+ }
+};
+
+class SdrTransformRef2YItem final : public SdrMetricItem {
+public:
+ SdrTransformRef2YItem(tools::Long nHgt=0): SdrMetricItem(SDRATTR_TRANSFORMREF2Y,nHgt) {}
+ virtual SdrTransformRef2YItem* Clone(SfxItemPool*) const override
+ {
+ return new SdrTransformRef2YItem(*this);
+ }
+};
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/svx/inc/tabwin.hrc b/svx/inc/tabwin.hrc
new file mode 100644
index 0000000000..05733288e5
--- /dev/null
+++ b/svx/inc/tabwin.hrc
@@ -0,0 +1,36 @@
+/* -*- 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_INC_TABWIN_HRC
+#define INCLUDED_SVX_INC_TABWIN_HRC
+
+#include <unotools/resmgr.hxx>
+
+#define NC_(Context, String) TranslateId(Context, u8##String)
+
+const TranslateId RID_RSC_TABWIN_PREFIX[] =
+{
+ NC_("RID_RSC_TABWIN_PREFIX", "Table"),
+ NC_("RID_RSC_TABWIN_PREFIX", "Query"),
+ NC_("RID_RSC_TABWIN_PREFIX", "SQL")
+};
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/svx/inc/tbxcolorupdate.hxx b/svx/inc/tbxcolorupdate.hxx
new file mode 100644
index 0000000000..075c7b28dd
--- /dev/null
+++ b/svx/inc/tbxcolorupdate.hxx
@@ -0,0 +1,154 @@
+/* -*- 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 <tools/gen.hxx>
+#include <tools/color.hxx>
+#include <vcl/vclenum.hxx>
+#include <vcl/vclptr.hxx>
+#include <vcl/toolbox.hxx>
+#include <vcl/toolboxid.hxx>
+#include <svl/lstner.hxx>
+#include <svx/Palette.hxx>
+#include <com/sun/star/drawing/LineStyle.hpp>
+#include <com/sun/star/frame/FeatureStateEvent.hpp>
+#include <com/sun/star/frame/XFrame.hpp>
+
+class ToolBox;
+class VirtualDevice;
+
+namespace weld
+{
+ class Toolbar;
+}
+
+namespace svx
+{
+
+
+ //= ToolboxButtonColorUpdater
+
+ /** helper class to update a color in a toolbox button image
+
+ formerly known as SvxTbxButtonColorUpdater_Impl, residing in svx/source/tbxctrls/colorwindow.hxx.
+ */
+ class ToolboxButtonColorUpdaterBase : public SfxListener
+ {
+ public:
+ ToolboxButtonColorUpdaterBase(bool bWideButton, OUString aCommandLabel,
+ OUString aCommandURL, sal_uInt16 nSlotId,
+ css::uno::Reference<css::frame::XFrame> xFrame);
+
+ virtual ~ToolboxButtonColorUpdaterBase();
+
+ void Notify(SfxBroadcaster& rBC, const SfxHint& rHint) override;
+ void SetRecentColor(const NamedColor& rNamedColor);
+ void Update( const NamedColor& rNamedColor );
+ void Update( const Color& rColor, bool bForceUpdate = false );
+ Color const & GetCurrentColor() const { return maCurColor; }
+ OUString GetCurrentColorName() const;
+
+ private:
+ ToolboxButtonColorUpdaterBase(ToolboxButtonColorUpdaterBase const &) = delete;
+ ToolboxButtonColorUpdaterBase& operator =(ToolboxButtonColorUpdaterBase const &) = delete;
+
+ protected:
+ bool mbWideButton;
+ bool mbWasHiContrastMode;
+ sal_uInt16 mnSlotId;
+ Color maCurColor;
+ tools::Rectangle maUpdRect;
+ Size maBmpSize;
+ vcl::ImageType meImageType;
+ OUString maCommandLabel;
+ OUString maCommandURL;
+ css::uno::Reference<css::frame::XFrame> mxFrame;
+
+ void Init(sal_uInt16 nSlotId);
+
+ virtual void SetQuickHelpText(const OUString& rText) = 0;
+ virtual OUString GetQuickHelpText() const = 0;
+ virtual void SetImage(VirtualDevice* pVirDev) = 0;
+ virtual VclPtr<VirtualDevice> CreateVirtualDevice() const = 0;
+ // true -> use Device to Record to Metafile, false -> Render to Device
+ virtual bool RecordVirtualDevice() const = 0;
+ virtual vcl::ImageType GetImageSize() const = 0;
+ virtual Size GetItemSize(const Size& rImageSize) const = 0;
+ };
+
+ class VclToolboxButtonColorUpdater final : public ToolboxButtonColorUpdaterBase
+ {
+ public:
+ VclToolboxButtonColorUpdater(sal_uInt16 nSlotId, ToolBoxItemId nTbxBtnId, ToolBox* ptrTbx, bool bWideButton,
+ const OUString& rCommandLabel, const OUString& rCommandURL,
+ const css::uno::Reference<css::frame::XFrame>& rFrame);
+
+
+ private:
+ ToolBoxItemId mnBtnId;
+ VclPtr<ToolBox> mpTbx;
+
+ virtual void SetQuickHelpText(const OUString& rText) override;
+ virtual OUString GetQuickHelpText() const override;
+ virtual void SetImage(VirtualDevice* pVirDev) override;
+ virtual VclPtr<VirtualDevice> CreateVirtualDevice() const override;
+ virtual bool RecordVirtualDevice() const override
+ {
+ return true;
+ }
+ virtual vcl::ImageType GetImageSize() const override;
+ virtual Size GetItemSize(const Size& rImageSize) const override;
+ };
+
+ class ToolboxButtonColorUpdater final : public ToolboxButtonColorUpdaterBase
+ {
+ public:
+ ToolboxButtonColorUpdater(sal_uInt16 nSlotId, const OUString& rTbxBtnId, weld::Toolbar* ptrTbx, bool bWideButton,
+ const OUString& rCommandLabel, const css::uno::Reference<css::frame::XFrame>& rFrame);
+
+ private:
+ OUString msBtnId;
+ weld::Toolbar* mpTbx;
+
+ virtual void SetQuickHelpText(const OUString& rText) override;
+ virtual OUString GetQuickHelpText() const override;
+ virtual void SetImage(VirtualDevice* pVirDev) override;
+ virtual VclPtr<VirtualDevice> CreateVirtualDevice() const override;
+ virtual bool RecordVirtualDevice() const override
+ {
+ return false;
+ }
+ virtual vcl::ImageType GetImageSize() const override;
+ virtual Size GetItemSize(const Size& rImageSize) const override;
+ };
+
+ class ToolboxButtonLineStyleUpdater
+ {
+ private:
+ css::drawing::LineStyle m_eXLS;
+ int m_nDashStyleIndex;
+ public:
+ ToolboxButtonLineStyleUpdater();
+ void Update(const css::frame::FeatureStateEvent& rEvent);
+ int GetStyleIndex() const;
+ };
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/svx/inc/textchain.hxx b/svx/inc/textchain.hxx
new file mode 100644
index 0000000000..0607052b18
--- /dev/null
+++ b/svx/inc/textchain.hxx
@@ -0,0 +1,106 @@
+/* -*- 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 <editeng/editdata.hxx>
+#include <map>
+
+class ImpChainLinkProperties;
+class SdrTextObj;
+class SdrModel;
+
+namespace rtl
+{
+class OUString;
+}
+
+typedef OUString ChainLinkId;
+
+enum class CursorChainingEvent : sal_uInt8
+{
+ TO_NEXT_LINK,
+ TO_PREV_LINK,
+ UNCHANGED,
+ NULL_EVENT
+};
+
+class ImpChainLinkProperties
+{
+protected:
+ friend class TextChain;
+
+ ImpChainLinkProperties()
+ {
+ aNilChainingEvent = false;
+ aCursorEvent = CursorChainingEvent::NULL_EVENT;
+ aPreChainingSel = ESelection(0, 0, 0, 0);
+ aPostChainingSel = ESelection(0, 0, 0, 0);
+ aIsPartOfLastParaInNextLink = false; // XXX: Should come from file
+ aSwitchingToNextBox = false;
+ }
+
+private:
+ // NOTE: Remember to set default value in constructor when adding field
+ ESelection aPreChainingSel;
+ ESelection aPostChainingSel;
+ CursorChainingEvent aCursorEvent;
+ bool aNilChainingEvent;
+ bool aIsPartOfLastParaInNextLink;
+ bool aSwitchingToNextBox;
+};
+
+class TextChain
+{
+public:
+ ~TextChain();
+
+ ImpChainLinkProperties* GetLinkProperties(const SdrTextObj*);
+
+ // Specific Link Properties
+ CursorChainingEvent const& GetCursorEvent(const SdrTextObj*);
+ void SetCursorEvent(const SdrTextObj*, CursorChainingEvent const&);
+
+ bool GetNilChainingEvent(const SdrTextObj*);
+ void SetNilChainingEvent(const SdrTextObj*, bool);
+
+ ESelection const& GetPreChainingSel(const SdrTextObj*);
+ void SetPreChainingSel(const SdrTextObj*, ESelection const&);
+
+ ESelection const& GetPostChainingSel(const SdrTextObj*);
+ void SetPostChainingSel(const SdrTextObj*, ESelection const&);
+
+ // return whether a paragraph is split between this box and the next
+ bool GetIsPartOfLastParaInNextLink(const SdrTextObj*);
+ void SetIsPartOfLastParaInNextLink(const SdrTextObj*, bool);
+
+ // return whether we are currently moving the cursor to the next box (useful to know whether we should prevent SetOutlinerParaObject invocations in SdrTextObj::EndTextEdit)
+ bool GetSwitchingToNextBox(const SdrTextObj*);
+ void SetSwitchingToNextBox(const SdrTextObj*, bool);
+
+protected:
+ TextChain();
+
+private:
+ std::map<ChainLinkId, ImpChainLinkProperties*> maLinkPropertiesMap;
+
+ friend class SdrModel;
+};
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/svx/inc/textchaincursor.hxx b/svx/inc/textchaincursor.hxx
new file mode 100644
index 0000000000..30399207a7
--- /dev/null
+++ b/svx/inc/textchaincursor.hxx
@@ -0,0 +1,63 @@
+/* -*- 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 <sal/types.h>
+
+class SdrObjEditView;
+class SdrTextObj;
+class KeyEvent;
+class SdrOutliner;
+enum class CursorChainingEvent : sal_uInt8;
+struct ESelection;
+
+
+class TextChainCursorManager
+{
+public:
+ TextChainCursorManager(SdrObjEditView *pEditView, const SdrTextObj *pTextObj);
+
+ bool HandleKeyEvent( const KeyEvent& rKEvt );
+
+ // Used by HandledKeyEvent and basic building block for handling cursor event
+ void HandleCursorEvent(const CursorChainingEvent aCurEvt,
+ const ESelection& aNewSel);
+
+ // To be used after chaining event to deal with some nuisances
+ void HandleCursorEventAfterChaining(const CursorChainingEvent aCurEvt,
+ const ESelection& aNewSel);
+
+private:
+ SdrObjEditView *mpEditView;
+ const SdrTextObj *mpTextObj;
+
+ // flag for handling of CANC which is kind of an exceptional case
+ bool mbHandlingDel;
+
+ void impChangeEditingTextObj(SdrTextObj *pTargetTextObj, ESelection aNewSel);
+ void impDetectEvent(const KeyEvent& rKEvt,
+ CursorChainingEvent& rOutCursorEvt,
+ ESelection& rOutSel,
+ bool& rOutHandled);
+};
+
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
+
diff --git a/svx/inc/textchainflow.hxx b/svx/inc/textchainflow.hxx
new file mode 100644
index 0000000000..d423939b6b
--- /dev/null
+++ b/svx/inc/textchainflow.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 .
+ */
+
+#pragma once
+
+#include "textchain.hxx"
+#include <memory>
+
+class SdrTextObj;
+class SdrOutliner;
+class NonOverflowingText;
+class OverflowingText;
+class TextChain;
+class OutlinerParaObject;
+class OFlowChainedText;
+class UFlowChainedText;
+
+class TextChainFlow
+{
+public:
+ TextChainFlow(SdrTextObj* pChainTarget);
+ virtual ~TextChainFlow();
+
+ // Check for flow events in Outliner
+ virtual void CheckForFlowEvents(SdrOutliner*);
+
+ void ExecuteUnderflow(SdrOutliner*);
+
+ // Uses two outliners: one for the non-overflow text and one for overflowing (might be the same)
+ void ExecuteOverflow(SdrOutliner*, SdrOutliner*);
+
+ bool IsOverflow() const;
+ bool IsUnderflow() const;
+
+ SdrTextObj* GetLinkTarget() const;
+
+protected:
+ void impCheckForFlowEvents(SdrOutliner*, SdrOutliner*);
+
+ TextChain* GetTextChain() const;
+
+ virtual void impLeaveOnlyNonOverflowingText(SdrOutliner*);
+ void impMoveChainedTextToNextLink(SdrOutliner*);
+
+ virtual void impSetFlowOutlinerParams(SdrOutliner*, SdrOutliner*);
+
+private:
+ void impUpdateCursorInfo();
+
+protected:
+ std::unique_ptr<OFlowChainedText> mpOverflChText;
+ std::unique_ptr<UFlowChainedText> mpUnderflChText;
+ // Cursor related
+ ESelection maOverflowPosSel;
+ ESelection maPostChainingSel;
+ bool mbPossiblyCursorOut;
+
+private:
+ SdrTextObj* mpTargetLink;
+ SdrTextObj* mpNextLink;
+ TextChain* mpTextChain;
+ bool mbOFisUFinduced;
+ bool bUnderflow;
+ bool bOverflow;
+};
+
+// NOTE: EditingTextChainFlow might be strongly coupled with behavior in SdrTextObj::onChainingEvent
+class EditingTextChainFlow final : public TextChainFlow
+{
+public:
+ EditingTextChainFlow(SdrTextObj*);
+ virtual void CheckForFlowEvents(SdrOutliner*) override;
+
+ //virtual void ExecuteOverflow(SdrOutliner *, SdrOutliner *) override;
+
+private:
+ virtual void impLeaveOnlyNonOverflowingText(SdrOutliner*) override;
+
+ virtual void impSetFlowOutlinerParams(SdrOutliner*, SdrOutliner*) override;
+
+ void impBroadcastCursorInfo() const;
+};
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/svx/inc/txenctab.hrc b/svx/inc/txenctab.hrc
new file mode 100644
index 0000000000..3648ce6ddb
--- /dev/null
+++ b/svx/inc/txenctab.hrc
@@ -0,0 +1,115 @@
+/* -*- 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_INC_TXENCTAB_HRC
+#define INCLUDED_SVX_INC_TXENCTAB_HRC
+
+#include <rtl/textenc.h>
+#include <unotools/resmgr.hxx>
+#include <utility>
+
+#define NC_(Context, String) TranslateId(Context, u8##String)
+
+// Encodings for which no conversion exist yet are commented out.
+
+const std::pair<TranslateId, rtl_TextEncoding> RID_SVXSTR_TEXTENCODING_TABLE[] =
+{
+ { NC_("RID_SVXSTR_TEXTENCODING_TABLE", "Western Europe (Windows-1252/WinLatin 1)") , RTL_TEXTENCODING_MS_1252 },
+ { NC_("RID_SVXSTR_TEXTENCODING_TABLE", "Western Europe (Apple Macintosh)") , RTL_TEXTENCODING_APPLE_ROMAN },
+ { NC_("RID_SVXSTR_TEXTENCODING_TABLE", "Western Europe (DOS/OS2-850/International)") , RTL_TEXTENCODING_IBM_850 },
+ { NC_("RID_SVXSTR_TEXTENCODING_TABLE", "Western Europe (DOS/OS2-437/US)") , RTL_TEXTENCODING_IBM_437 },
+ { NC_("RID_SVXSTR_TEXTENCODING_TABLE", "Western Europe (DOS/OS2-860/Portuguese)") , RTL_TEXTENCODING_IBM_860 },
+ { NC_("RID_SVXSTR_TEXTENCODING_TABLE", "Western Europe (DOS/OS2-861/Icelandic)") , RTL_TEXTENCODING_IBM_861 },
+ { NC_("RID_SVXSTR_TEXTENCODING_TABLE", "Western Europe (DOS/OS2-863/French (Can.))") , RTL_TEXTENCODING_IBM_863 },
+ { NC_("RID_SVXSTR_TEXTENCODING_TABLE", "Western Europe (DOS/OS2-865/Nordic)") , RTL_TEXTENCODING_IBM_865 },
+ { NC_("RID_SVXSTR_TEXTENCODING_TABLE", "Western Europe (ASCII/US)") , RTL_TEXTENCODING_ASCII_US },
+ { NC_("RID_SVXSTR_TEXTENCODING_TABLE", "Western Europe (ISO-8859-1)") , RTL_TEXTENCODING_ISO_8859_1 },
+ { NC_("RID_SVXSTR_TEXTENCODING_TABLE", "Eastern Europe (ISO-8859-2)") , RTL_TEXTENCODING_ISO_8859_2 },
+ { NC_("RID_SVXSTR_TEXTENCODING_TABLE", "Latin 3 (ISO-8859-3)") , RTL_TEXTENCODING_ISO_8859_3 },
+ { NC_("RID_SVXSTR_TEXTENCODING_TABLE", "Baltic (ISO-8859-4)") , RTL_TEXTENCODING_ISO_8859_4 },
+ { NC_("RID_SVXSTR_TEXTENCODING_TABLE", "Cyrillic (ISO-8859-5)") , RTL_TEXTENCODING_ISO_8859_5 },
+ { NC_("RID_SVXSTR_TEXTENCODING_TABLE", "Arabic (ISO-8859-6)") , RTL_TEXTENCODING_ISO_8859_6 },
+ { NC_("RID_SVXSTR_TEXTENCODING_TABLE", "Greek (ISO-8859-7)") , RTL_TEXTENCODING_ISO_8859_7 },
+ { NC_("RID_SVXSTR_TEXTENCODING_TABLE", "Hebrew (ISO-8859-8)") , RTL_TEXTENCODING_ISO_8859_8 },
+ { NC_("RID_SVXSTR_TEXTENCODING_TABLE", "Turkish (ISO-8859-9)") , RTL_TEXTENCODING_ISO_8859_9 },
+ { NC_("RID_SVXSTR_TEXTENCODING_TABLE", "Western Europe (ISO-8859-14)") , RTL_TEXTENCODING_ISO_8859_14 },
+ { NC_("RID_SVXSTR_TEXTENCODING_TABLE", "Western Europe (ISO-8859-15/EURO)") , RTL_TEXTENCODING_ISO_8859_15 },
+ { NC_("RID_SVXSTR_TEXTENCODING_TABLE", "Greek (DOS/OS2-737)") , RTL_TEXTENCODING_IBM_737 },
+ { NC_("RID_SVXSTR_TEXTENCODING_TABLE", "Baltic (DOS/OS2-775)") , RTL_TEXTENCODING_IBM_775 },
+ { NC_("RID_SVXSTR_TEXTENCODING_TABLE", "Eastern Europe (DOS/OS2-852)") , RTL_TEXTENCODING_IBM_852 },
+ { NC_("RID_SVXSTR_TEXTENCODING_TABLE", "Cyrillic (DOS/OS2-855)") , RTL_TEXTENCODING_IBM_855 },
+ { NC_("RID_SVXSTR_TEXTENCODING_TABLE", "Turkish (DOS/OS2-857)") , RTL_TEXTENCODING_IBM_857 },
+ { NC_("RID_SVXSTR_TEXTENCODING_TABLE", "Hebrew (DOS/OS2-862)") , RTL_TEXTENCODING_IBM_862 },
+ { NC_("RID_SVXSTR_TEXTENCODING_TABLE", "Arabic (DOS/OS2-864)") , RTL_TEXTENCODING_IBM_864 },
+ { NC_("RID_SVXSTR_TEXTENCODING_TABLE", "Cyrillic (DOS/OS2-866/Russian)") , RTL_TEXTENCODING_IBM_866 },
+ { NC_("RID_SVXSTR_TEXTENCODING_TABLE", "Greek (DOS/OS2-869/Modern)") , RTL_TEXTENCODING_IBM_869 },
+ { NC_("RID_SVXSTR_TEXTENCODING_TABLE", "Eastern Europe (Windows-1250/WinLatin 2)") , RTL_TEXTENCODING_MS_1250 },
+ { NC_("RID_SVXSTR_TEXTENCODING_TABLE", "Cyrillic (Windows-1251)") , RTL_TEXTENCODING_MS_1251 },
+ { NC_("RID_SVXSTR_TEXTENCODING_TABLE", "Greek (Windows-1253)") , RTL_TEXTENCODING_MS_1253 },
+ { NC_("RID_SVXSTR_TEXTENCODING_TABLE", "Turkish (Windows-1254)") , RTL_TEXTENCODING_MS_1254 },
+ { NC_("RID_SVXSTR_TEXTENCODING_TABLE", "Hebrew (Windows-1255)") , RTL_TEXTENCODING_MS_1255 },
+ { NC_("RID_SVXSTR_TEXTENCODING_TABLE", "Arabic (Windows-1256)") , RTL_TEXTENCODING_MS_1256 },
+ { NC_("RID_SVXSTR_TEXTENCODING_TABLE", "Baltic (Windows-1257)") , RTL_TEXTENCODING_MS_1257 },
+ { NC_("RID_SVXSTR_TEXTENCODING_TABLE", "Vietnamese (Windows-1258)") , RTL_TEXTENCODING_MS_1258 },
+ { NC_("RID_SVXSTR_TEXTENCODING_TABLE", "Eastern Europe (Apple Macintosh)") , RTL_TEXTENCODING_APPLE_CENTEURO },
+ { NC_("RID_SVXSTR_TEXTENCODING_TABLE", "Eastern Europe (Apple Macintosh/Croatian)") , RTL_TEXTENCODING_APPLE_CROATIAN },
+ { NC_("RID_SVXSTR_TEXTENCODING_TABLE", "Cyrillic (Apple Macintosh)") , RTL_TEXTENCODING_APPLE_CYRILLIC },
+ { NC_("RID_SVXSTR_TEXTENCODING_TABLE", "Greek (Apple Macintosh)") , RTL_TEXTENCODING_APPLE_GREEK },
+ { NC_("RID_SVXSTR_TEXTENCODING_TABLE", "Western Europe (Apple Macintosh/Icelandic)") , RTL_TEXTENCODING_APPLE_ICELAND },
+ { NC_("RID_SVXSTR_TEXTENCODING_TABLE", "Eastern Europe (Apple Macintosh/Romanian)") , RTL_TEXTENCODING_APPLE_ROMANIAN },
+ { NC_("RID_SVXSTR_TEXTENCODING_TABLE", "Turkish (Apple Macintosh)") , RTL_TEXTENCODING_APPLE_TURKISH },
+ { NC_("RID_SVXSTR_TEXTENCODING_TABLE", "Cyrillic (Apple Macintosh/Ukrainian)") , RTL_TEXTENCODING_APPLE_UKRAINIAN },
+ { NC_("RID_SVXSTR_TEXTENCODING_TABLE", "Chinese simplified (Apple Macintosh)") , RTL_TEXTENCODING_APPLE_CHINSIMP },
+ { NC_("RID_SVXSTR_TEXTENCODING_TABLE", "Chinese traditional (Apple Macintosh)") , RTL_TEXTENCODING_APPLE_CHINTRAD },
+ { NC_("RID_SVXSTR_TEXTENCODING_TABLE", "Japanese (Apple Macintosh)") , RTL_TEXTENCODING_APPLE_JAPANESE },
+ { NC_("RID_SVXSTR_TEXTENCODING_TABLE", "Korean (Apple Macintosh)") , RTL_TEXTENCODING_APPLE_KOREAN },
+ { NC_("RID_SVXSTR_TEXTENCODING_TABLE", "Japanese (Windows-932)") , RTL_TEXTENCODING_MS_932 },
+ { NC_("RID_SVXSTR_TEXTENCODING_TABLE", "Chinese simplified (Windows-936)") , RTL_TEXTENCODING_MS_936 },
+ { NC_("RID_SVXSTR_TEXTENCODING_TABLE", "Korean (Windows-949)") , RTL_TEXTENCODING_MS_949 },
+ { NC_("RID_SVXSTR_TEXTENCODING_TABLE", "Chinese traditional (Windows-950)") , RTL_TEXTENCODING_MS_950 },
+ { NC_("RID_SVXSTR_TEXTENCODING_TABLE", "Japanese (Shift-JIS)") , RTL_TEXTENCODING_SHIFT_JIS },
+ { NC_("RID_SVXSTR_TEXTENCODING_TABLE", "Chinese simplified (GB-2312)") , RTL_TEXTENCODING_GB_2312 },
+ { NC_("RID_SVXSTR_TEXTENCODING_TABLE", "Chinese simplified (GB-18030)") , RTL_TEXTENCODING_GB_18030 },
+ { NC_("RID_SVXSTR_TEXTENCODING_TABLE", "Chinese traditional (GBT-12345)") , RTL_TEXTENCODING_GBT_12345 },
+ { NC_("RID_SVXSTR_TEXTENCODING_TABLE", "Chinese simplified (GBK/GB-2312-80)") , RTL_TEXTENCODING_GBK },
+ { NC_("RID_SVXSTR_TEXTENCODING_TABLE", "Chinese traditional (Big5)") , RTL_TEXTENCODING_BIG5 },
+ { NC_("RID_SVXSTR_TEXTENCODING_TABLE", "Chinese traditional (BIG5-HKSCS)") , RTL_TEXTENCODING_BIG5_HKSCS },
+ { NC_("RID_SVXSTR_TEXTENCODING_TABLE", "Japanese (EUC-JP)") , RTL_TEXTENCODING_EUC_JP },
+ { NC_("RID_SVXSTR_TEXTENCODING_TABLE", "Chinese simplified (EUC-CN)") , RTL_TEXTENCODING_EUC_CN },
+ { NC_("RID_SVXSTR_TEXTENCODING_TABLE", "Chinese traditional (EUC-TW)") , RTL_TEXTENCODING_EUC_TW },
+ { NC_("RID_SVXSTR_TEXTENCODING_TABLE", "Japanese (ISO-2022-JP)") , RTL_TEXTENCODING_ISO_2022_JP },
+ { NC_("RID_SVXSTR_TEXTENCODING_TABLE", "Chinese simplified (ISO-2022-CN)") , RTL_TEXTENCODING_ISO_2022_CN },
+ { NC_("RID_SVXSTR_TEXTENCODING_TABLE", "Cyrillic (KOI8-R)") , RTL_TEXTENCODING_KOI8_R },
+ { NC_("RID_SVXSTR_TEXTENCODING_TABLE", "Unicode (UTF-7)") , RTL_TEXTENCODING_UTF7 },
+ { NC_("RID_SVXSTR_TEXTENCODING_TABLE", "Unicode (UTF-8)") , RTL_TEXTENCODING_UTF8 },
+ { NC_("RID_SVXSTR_TEXTENCODING_TABLE", "Eastern Europe (ISO-8859-10)") , RTL_TEXTENCODING_ISO_8859_10 },
+ { NC_("RID_SVXSTR_TEXTENCODING_TABLE", "Eastern Europe (ISO-8859-13)") , RTL_TEXTENCODING_ISO_8859_13 },
+ { NC_("RID_SVXSTR_TEXTENCODING_TABLE", "Korean (EUC-KR)") , RTL_TEXTENCODING_EUC_KR },
+ { NC_("RID_SVXSTR_TEXTENCODING_TABLE", "Korean (ISO-2022-KR)") , RTL_TEXTENCODING_ISO_2022_KR },
+ { NC_("RID_SVXSTR_TEXTENCODING_TABLE", "Korean (Windows-Johab-1361)") , RTL_TEXTENCODING_MS_1361 },
+ { NC_("RID_SVXSTR_TEXTENCODING_TABLE", "Unicode (UTF-16)") , RTL_TEXTENCODING_UCS2 },
+ { NC_("RID_SVXSTR_TEXTENCODING_TABLE", "Thai (ISO-8859-11/TIS-620)") , RTL_TEXTENCODING_TIS_620 },
+ { NC_("RID_SVXSTR_TEXTENCODING_TABLE", "Thai (Windows-874)") , RTL_TEXTENCODING_MS_874 },
+ { NC_("RID_SVXSTR_TEXTENCODING_TABLE", "Cyrillic (KOI8-U)") , RTL_TEXTENCODING_KOI8_U },
+ { NC_("RID_SVXSTR_TEXTENCODING_TABLE", "Cyrillic (PT154)") , RTL_TEXTENCODING_PT154 }
+};
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/svx/inc/uiobject.hxx b/svx/inc/uiobject.hxx
new file mode 100644
index 0000000000..bddf321a13
--- /dev/null
+++ b/svx/inc/uiobject.hxx
@@ -0,0 +1,54 @@
+/* -*- 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_INC_UIOBJECT_HXX
+#define INCLUDED_SVX_INC_UIOBJECT_HXX
+
+#include <memory>
+#include <vcl/uitest/uiobject.hxx>
+#include <svx/numvset.hxx>
+
+class SvxShowCharSet;
+class SvxNumValueSet;
+
+class SvxShowCharSetUIObject final : public DrawingAreaUIObject
+{
+ SvxShowCharSet* mpCharSet;
+
+public:
+ SvxShowCharSetUIObject(const VclPtr<vcl::Window>& rCharSetWin);
+
+ virtual void execute(const OUString& rAction, const StringMap& rParameters) override;
+
+ static std::unique_ptr<UIObject> create(vcl::Window* pWindow);
+
+private:
+ OUString get_name() const override;
+};
+
+class SvxNumValueSetUIObject final : public DrawingAreaUIObject
+{
+ SvxNumValueSet* mpNumValueSet;
+
+public:
+ SvxNumValueSetUIObject(vcl::Window* pNumValueSetWin);
+
+ virtual void execute(const OUString& rAction, const StringMap& rParameters) override;
+
+ static std::unique_ptr<UIObject> create(vcl::Window* pWindow);
+
+ virtual StringMap get_state() override;
+
+private:
+ OUString get_name() const override;
+};
+
+#endif // INCLUDED_SVX_INC_UIOBJECT_HXX
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/svx/inc/unomlstr.hxx b/svx/inc/unomlstr.hxx
new file mode 100644
index 0000000000..c5bf5e3bd9
--- /dev/null
+++ b/svx/inc/unomlstr.hxx
@@ -0,0 +1,47 @@
+/* -*- 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_INC_UNOMLSTR_HXX
+#define INCLUDED_SVX_INC_UNOMLSTR_HXX
+
+#include <com/sun/star/util/XModifyListener.hpp>
+#include <cppuhelper/implbase.hxx>
+
+class SdrObject;
+
+class SvxUnoShapeModifyListener final : public ::cppu::WeakImplHelper<css::util::XModifyListener>
+{
+ SdrObject* mpObj;
+
+public:
+ SvxUnoShapeModifyListener(SdrObject* pObj) noexcept;
+ virtual ~SvxUnoShapeModifyListener() noexcept override;
+
+ // css::util::XModifyListener
+ virtual void SAL_CALL modified(const css::lang::EventObject& aEvent) override;
+
+ // css::lang::XEventListener
+ virtual void SAL_CALL disposing(const css::lang::EventObject& Source) override;
+
+ // internal
+ void invalidate() noexcept;
+};
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/svx/inc/verttexttbxctrl.hxx b/svx/inc/verttexttbxctrl.hxx
new file mode 100644
index 0000000000..05b675f1e3
--- /dev/null
+++ b/svx/inc/verttexttbxctrl.hxx
@@ -0,0 +1,74 @@
+/* -*- 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 <com/sun/star/lang/XServiceInfo.hpp>
+
+#include <cppuhelper/implbase.hxx>
+#include <svtools/toolboxcontroller.hxx>
+
+//HACK to avoid duplicate ImplInheritanceHelper symbols with MSVC:
+class SAL_DLLPUBLIC_TEMPLATE SvxVertCTLTextTbxCtrl_Base
+ : public cppu::ImplInheritanceHelper<svt::ToolboxController, css::lang::XServiceInfo>
+{
+ using ImplInheritanceHelper::ImplInheritanceHelper;
+};
+
+/*
+ control to remove/insert cjk settings dependent vertical text toolbox item
+ */
+class SvxVertCTLTextTbxCtrl : public SvxVertCTLTextTbxCtrl_Base
+{
+ bool m_bVisible;
+
+public:
+ explicit SvxVertCTLTextTbxCtrl(
+ const css::uno::Reference<css::uno::XComponentContext>& rContext);
+
+ virtual ~SvxVertCTLTextTbxCtrl() override;
+
+ // XInitialization
+ virtual void SAL_CALL initialize(const css::uno::Sequence<css::uno::Any>& rArguments) override;
+
+ // XServiceInfo
+ virtual OUString SAL_CALL getImplementationName() override = 0;
+ virtual sal_Bool SAL_CALL supportsService(const OUString& ServiceName) override;
+ virtual css::uno::Sequence<OUString> SAL_CALL getSupportedServiceNames() override;
+
+ // XStatusListener
+ virtual void SAL_CALL statusChanged(const css::frame::FeatureStateEvent& rEvent) override;
+};
+
+class SvxCTLTextTbxCtrl final : public SvxVertCTLTextTbxCtrl
+{
+public:
+ SvxCTLTextTbxCtrl(const css::uno::Reference<css::uno::XComponentContext>& rContext);
+
+ virtual OUString SAL_CALL getImplementationName() override;
+};
+
+class SvxVertTextTbxCtrl final : public SvxVertCTLTextTbxCtrl
+{
+public:
+ SvxVertTextTbxCtrl(const css::uno::Reference<css::uno::XComponentContext>& rContext);
+
+ virtual OUString SAL_CALL getImplementationName() override;
+};
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/svx/inc/xftshtit.hxx b/svx/inc/xftshtit.hxx
new file mode 100644
index 0000000000..aaefab9514
--- /dev/null
+++ b/svx/inc/xftshtit.hxx
@@ -0,0 +1,37 @@
+/* -*- 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 <svl/intitem.hxx>
+
+/*************************************************************************
+|*
+|* FormText item for transparent shadow
+|*
+\************************************************************************/
+
+class XFormTextShadowTranspItem final : public SfxUInt16Item
+{
+public:
+ XFormTextShadowTranspItem(sal_uInt16 nShdwTransparence = 0);
+ virtual XFormTextShadowTranspItem* Clone(SfxItemPool* pPool = nullptr) const override;
+};
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/svx/inc/xpolyimp.hxx b/svx/inc/xpolyimp.hxx
new file mode 100644
index 0000000000..425d2a5510
--- /dev/null
+++ b/svx/inc/xpolyimp.hxx
@@ -0,0 +1,63 @@
+/* -*- 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_INC_XPOLYIMP_HXX
+#define INCLUDED_SVX_INC_XPOLYIMP_HXX
+
+#include <svx/xpoly.hxx>
+#include <memory>
+#include <vector>
+
+class Point;
+
+class ImpXPolygon
+{
+public:
+ std::unique_ptr<Point[]> pPointAry;
+ std::unique_ptr<PolyFlags[]>
+ pFlagAry;
+ Point* pOldPointAry;
+ bool bDeleteOldPoints;
+ sal_uInt16 nSize;
+ sal_uInt16 nResize;
+ sal_uInt16 nPoints;
+
+ ImpXPolygon( sal_uInt16 nInitSize, sal_uInt16 nResize=16 );
+ ImpXPolygon( const ImpXPolygon& rImpXPoly );
+ ~ImpXPolygon();
+
+ bool operator==(const ImpXPolygon& rImpXPoly) const;
+
+ void CheckPointDelete() const;
+
+ void Resize( sal_uInt16 nNewSize, bool bDeletePoints = true );
+ void InsertSpace( sal_uInt16 nPos, sal_uInt16 nCount );
+ void Remove( sal_uInt16 nPos, sal_uInt16 nCount );
+};
+
+class ImpXPolyPolygon
+{
+public:
+ ::std::vector< XPolygon > aXPolyList;
+};
+
+
+#endif // INCLUDED_SVX_INC_XPOLYIMP_HXX
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */