diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-07 09:06:44 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-07 09:06:44 +0000 |
commit | ed5640d8b587fbcfed7dd7967f3de04b37a76f26 (patch) | |
tree | 7a5f7c6c9d02226d7471cb3cc8fbbf631b415303 /svx/inc | |
parent | Initial commit. (diff) | |
download | libreoffice-upstream.tar.xz libreoffice-upstream.zip |
Adding upstream version 4:7.4.7.upstream/4%7.4.7upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to '')
164 files changed, 12592 insertions, 0 deletions
diff --git a/svx/inc/AccessibleTableShape.hxx b/svx/inc/AccessibleTableShape.hxx new file mode 100644 index 000000000..16dcf4fe3 --- /dev/null +++ b/svx/inc/AccessibleTableShape.hxx @@ -0,0 +1,216 @@ +/* -*- 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_Int32 SAL_CALL getAccessibleChildCount( ) override; + virtual css::uno::Reference< css::accessibility::XAccessible > SAL_CALL getAccessibleChild( sal_Int32 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_Int32 SAL_CALL getAccessibleIndex( sal_Int32 nRow, sal_Int32 nColumn ) override; + virtual sal_Int32 SAL_CALL getAccessibleRow( sal_Int32 nChildIndex ) override; + virtual sal_Int32 SAL_CALL getAccessibleColumn( sal_Int32 nChildIndex ) override; + + // XAccessibleSelection + virtual void SAL_CALL selectAccessibleChild( sal_Int32 nChildIndex ) override; + virtual sal_Bool SAL_CALL isAccessibleChildSelected( sal_Int32 nChildIndex ) override; + virtual void SAL_CALL clearAccessibleSelection( ) override; + virtual void SAL_CALL selectAllAccessibleChildren( ) override; + virtual sal_Int32 SAL_CALL getSelectedAccessibleChildCount( ) override; + virtual css::uno::Reference< css::accessibility::XAccessible > SAL_CALL getSelectedAccessibleChild( sal_Int32 nSelectedChildIndex ) override; + virtual void SAL_CALL deselectAccessibleChild( sal_Int32 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_Int32 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_Int16 aState) override; + virtual bool ResetState (sal_Int16 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_Int16 aState); + bool ResetStateDirectly (sal_Int16 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_Int32 GetIndexOfSelectedChild( sal_Int32 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 cppu::BaseMutex, + 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_Int32 SAL_CALL getAccessibleChildCount( ) override; + virtual css::uno::Reference< css::accessibility::XAccessible > SAL_CALL getAccessibleChild( sal_Int32 i ) override; + virtual css::uno::Reference< css::accessibility::XAccessible > SAL_CALL getAccessibleParent( ) override; + virtual sal_Int32 SAL_CALL getAccessibleIndexInParent( ) override; + virtual sal_Int16 SAL_CALL getAccessibleRole( ) override; + virtual OUString SAL_CALL getAccessibleDescription( ) override; + virtual OUString SAL_CALL getAccessibleName( ) override; + virtual css::uno::Reference< css::accessibility::XAccessibleStateSet > 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_Int32 SAL_CALL getAccessibleIndex( sal_Int32 nRow, sal_Int32 nColumn ) override; + virtual sal_Int32 SAL_CALL getAccessibleRow( sal_Int32 nChildIndex ) override; + virtual sal_Int32 SAL_CALL getAccessibleColumn( sal_Int32 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 000000000..c7eb5cb71 --- /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 000000000..b613f489f --- /dev/null +++ b/svx/inc/CommonStylePreviewRenderer.hxx @@ -0,0 +1,49 @@ +/* -*- 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 <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; + +namespace svx +{ +class CommonStylePreviewRenderer final : public sfx2::StylePreviewRenderer +{ + std::optional<SvxFont> m_oFont; + Color maFontColor; + Color maHighlightColor; + Color maBackgroundColor; + Size maPixelSize; + OUString maStyleName; + + Size getRenderSize() const; + +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 000000000..b696cc33e --- /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(const 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 000000000..d5835fb57 --- /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 000000000..0b042f44b --- /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 000000000..bb1092c82 --- /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 000000000..973f50c53 --- /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 000000000..e9f76965e --- /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 000000000..4b2fcf0ce --- /dev/null +++ b/svx/inc/bitmaps.hlst @@ -0,0 +1,288 @@ +/* -*- 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 OUStringLiteral RID_SVXCTRL_RECTBTNS = u"svx/res/rectbtns.png"; + +inline constexpr OUStringLiteral RID_SVXBMP_FRMSEL_ARROW1 = u"svx/res/frmsel1.png"; +inline constexpr OUStringLiteral RID_SVXBMP_FRMSEL_ARROW2 = u"svx/res/frmsel2.png"; +inline constexpr OUStringLiteral RID_SVXBMP_FRMSEL_ARROW3 = u"svx/res/frmsel3.png"; +inline constexpr OUStringLiteral RID_SVXBMP_FRMSEL_ARROW4 = u"svx/res/frmsel4.png"; +inline constexpr OUStringLiteral RID_SVXBMP_FRMSEL_ARROW5 = u"svx/res/frmsel5.png"; +inline constexpr OUStringLiteral RID_SVXBMP_FRMSEL_ARROW6 = u"svx/res/frmsel6.png"; +inline constexpr OUStringLiteral RID_SVXBMP_FRMSEL_ARROW7 = u"svx/res/frmsel7.png"; +inline constexpr OUStringLiteral RID_SVXBMP_FRMSEL_ARROW8 = u"svx/res/frmsel8.png"; +inline constexpr OUStringLiteral RID_SVXBMP_FRMSEL_ARROW9 = u"svx/res/frmsel9.png"; +inline constexpr OUStringLiteral RID_SVXBMP_FRMSEL_ARROW10 = u"svx/res/frmsel10.png"; +inline constexpr OUStringLiteral RID_SVXBMP_FRMSEL_ARROW11 = u"svx/res/frmsel11.png"; +inline constexpr OUStringLiteral RID_SVXBMP_FRMSEL_ARROW12 = u"svx/res/frmsel12.png"; +inline constexpr OUStringLiteral RID_SVXBMP_FRMSEL_ARROW13 = u"svx/res/frmsel13.png"; +inline constexpr OUStringLiteral RID_SVXBMP_FRMSEL_ARROW14 = u"svx/res/frmsel14.png"; +inline constexpr OUStringLiteral RID_SVXBMP_FRMSEL_ARROW15 = u"svx/res/frmsel15.png"; +inline constexpr OUStringLiteral RID_SVXBMP_FRMSEL_ARROW16 = u"svx/res/frmsel16.png"; + +inline constexpr OUStringLiteral RID_SVXBMP_NOTCHECKED = u"svx/res/notcheck.png"; +inline constexpr OUStringLiteral RID_SVXBMP_CHECKED = u"svx/res/lngcheck.png"; + +inline constexpr OUStringLiteral RID_SVXBMP_GREENCHECK = u"svx/res/nu01.png"; +inline constexpr OUStringLiteral RID_SVXBMP_YELLOWCHECK = u"svx/res/nu04.png"; +inline constexpr OUStringLiteral RID_SVXBMP_REDCROSS = u"svx/res/nu02.png"; +inline constexpr OUStringLiteral RID_SVXBMP_SHADOW_ANGLE = u"svx/res/fw018.png"; +inline constexpr OUStringLiteral RID_SVXBMP_SHADOW_SIZE = u"svx/res/fw019.png"; +inline constexpr OUStringLiteral RID_SVXBMP_SHADOW_XDIST = u"svx/res/fw016.png"; +inline constexpr OUStringLiteral RID_SVXBMP_SHADOW_YDIST = u"svx/res/fw017.png"; + +inline constexpr OUStringLiteral RID_SVXBMP_DIRECTION_DIRECTION_NW = u"svx/res/directionnorthwest_22.png"; +inline constexpr OUStringLiteral RID_SVXBMP_DIRECTION_DIRECTION_N = u"svx/res/directionnorth_22.png"; +inline constexpr OUStringLiteral RID_SVXBMP_DIRECTION_DIRECTION_NE = u"svx/res/directionnortheast_22.png"; +inline constexpr OUStringLiteral RID_SVXBMP_DIRECTION_DIRECTION_W = u"svx/res/directionwest_22.png"; +inline constexpr OUStringLiteral RID_SVXBMP_DIRECTION_DIRECTION_NONE = u"svx/res/directionstraight_22.png"; +inline constexpr OUStringLiteral RID_SVXBMP_DIRECTION_DIRECTION_E = u"svx/res/directioneast_22.png"; +inline constexpr OUStringLiteral RID_SVXBMP_DIRECTION_DIRECTION_SW = u"svx/res/directionsouthwest_22.png"; +inline constexpr OUStringLiteral RID_SVXBMP_DIRECTION_DIRECTION_S = u"svx/res/directionsouth_22.png"; +inline constexpr OUStringLiteral RID_SVXBMP_DIRECTION_DIRECTION_SE = u"svx/res/directionsoutheast_22.png"; +inline constexpr OUStringLiteral RID_SVXBMP_LIGHT_OFF_FROM_TOP_LEFT = u"svx/res/lightofffromtopleft_22.png"; +inline constexpr OUStringLiteral RID_SVXBMP_LIGHT_OFF_FROM_TOP = u"svx/res/lightofffromtop_22.png"; +inline constexpr OUStringLiteral RID_SVXBMP_LIGHT_OFF_FROM_TOP_RIGHT = u"svx/res/lightofffromtopright_22.png"; +inline constexpr OUStringLiteral RID_SVXBMP_LIGHT_OFF_FROM_LEFT = u"svx/res/lightofffromleft_22.png"; +inline constexpr OUStringLiteral RID_SVXBMP_LIGHT_OFF_FROM_RIGHT = u"svx/res/lightofffromright_22.png"; +inline constexpr OUStringLiteral RID_SVXBMP_LIGHT_OFF_FROM_BOTTOM_LEFT = u"svx/res/lightofffrombottomleft_22.png"; +inline constexpr OUStringLiteral RID_SVXBMP_LIGHT_OFF_FROM_BOTTOM = u"svx/res/lightofffrombottom_22.png"; +inline constexpr OUStringLiteral RID_SVXBMP_LIGHT_OFF_FROM_BOTTOM_RIGHT = u"svx/res/lightofffrombottomright_22.png"; +inline constexpr OUStringLiteral RID_SVXBMP_LIGHT_ON_FROM_TOP_LEFT = u"svx/res/lightonfromtopleft_22.png"; +inline constexpr OUStringLiteral RID_SVXBMP_LIGHT_ON_FROM_TOP = u"svx/res/lightonfromtop_22.png"; +inline constexpr OUStringLiteral RID_SVXBMP_LIGHT_ON_FROM_TOP_RIGHT = u"svx/res/lightonfromtopright_22.png"; +inline constexpr OUStringLiteral RID_SVXBMP_LIGHT_ON_FROM_LEFT = u"svx/res/lightonfromleft_22.png"; +inline constexpr OUStringLiteral RID_SVXBMP_LIGHT_ON_FROM_RIGHT = u"svx/res/lightonfromright_22.png"; +inline constexpr OUStringLiteral RID_SVXBMP_LIGHT_ON_FROM_BOTTOM_LEFT = u"svx/res/lightonfrombottomleft_22.png"; +inline constexpr OUStringLiteral RID_SVXBMP_LIGHT_ON_FROM_BOTTOM = u"svx/res/lightonfrombottom_22.png"; +inline constexpr OUStringLiteral RID_SVXBMP_LIGHT_ON_FROM_BOTTOM_RIGHT = u"svx/res/lightonfrombottomright_22.png"; +inline constexpr OUStringLiteral RID_SVXBMP_LIGHT_PREVIEW_FROM_TOP_LEFT = u"svx/res/lightfromtopleft_22.png"; +inline constexpr OUStringLiteral RID_SVXBMP_LIGHT_PREVIEW_FROM_TOP = u"svx/res/lightfromtop_22.png"; +inline constexpr OUStringLiteral RID_SVXBMP_LIGHT_PREVIEW_FROM_TOP_RIGHT = u"svx/res/lightfromtopright_22.png"; +inline constexpr OUStringLiteral RID_SVXBMP_LIGHT_PREVIEW_FROM_LEFT = u"svx/res/lightfromleft_22.png"; +inline constexpr OUStringLiteral RID_SVXBMP_LIGHT_PREVIEW_FROM_RIGHT = u"svx/res/lightfromright_22.png"; +inline constexpr OUStringLiteral RID_SVXBMP_LIGHT_PREVIEW_FROM_FRONT = u"svx/res/lightfromfront_22.png"; +inline constexpr OUStringLiteral RID_SVXBMP_LIGHT_PREVIEW_FROM_BOTTOM_LEFT = u"svx/res/lightfrombottomleft_22.png"; +inline constexpr OUStringLiteral RID_SVXBMP_LIGHT_PREVIEW_FROM_BOTTOM = u"svx/res/lightfrombottom_22.png"; +inline constexpr OUStringLiteral RID_SVXBMP_LIGHT_PREVIEW_FROM_BOTTOM_RIGHT = u"svx/res/lightfrombottomright_22.png"; + +inline constexpr OUStringLiteral RID_SVXBMP_LAMP_ON = u"svx/res/lighton.png"; +inline constexpr OUStringLiteral RID_SVXBMP_LAMP_OFF = u"svx/res/light.png"; + +inline constexpr OUStringLiteral RID_SVXBMP_ELEMENT = u"res/da03.png"; +inline constexpr OUStringLiteral RID_SVXBMP_ATTRIBUTE = u"res/da04.png"; +inline constexpr OUStringLiteral RID_SVXBMP_TEXT = u"res/da05.png"; +inline constexpr OUStringLiteral RID_SVXBMP_OTHER = u"res/da06.png"; + +inline constexpr OUStringLiteral RID_SVXBMP_FORM = u"res/sx10593.png"; +inline constexpr OUStringLiteral RID_SVXBMP_CONTROL = u"res/sx10144.png"; +inline constexpr OUStringLiteral RID_SVXBMP_BUTTON = u"res/sx10594.png"; +inline constexpr OUStringLiteral RID_SVXBMP_RADIOBUTTON = u"res/sx10595.png"; +inline constexpr OUStringLiteral RID_SVXBMP_CHECKBOX = u"res/sx10596.png"; +inline constexpr OUStringLiteral RID_SVXBMP_FIXEDTEXT = u"res/sx10597.png"; +inline constexpr OUStringLiteral RID_SVXBMP_GROUPBOX = u"res/sx10598.png"; +inline constexpr OUStringLiteral RID_SVXBMP_EDITBOX = u"res/sx10599.png"; +inline constexpr OUStringLiteral RID_SVXBMP_LISTBOX = u"res/sx10600.png"; +inline constexpr OUStringLiteral RID_SVXBMP_COMBOBOX = u"res/sx10601.png"; +inline constexpr OUStringLiteral RID_SVXBMP_FORMS = u"res/sx18013.png"; +inline constexpr OUStringLiteral RID_SVXBMP_IMAGEBUTTON = u"res/sx10604.png"; +inline constexpr OUStringLiteral RID_SVXBMP_IMAGECONTROL = u"res/sx10710.png"; +inline constexpr OUStringLiteral RID_SVXBMP_FILECONTROL = u"res/sx10605.png"; +inline constexpr OUStringLiteral RID_SVXBMP_DATEFIELD = u"res/sx10704.png"; +inline constexpr OUStringLiteral RID_SVXBMP_TIMEFIELD = u"res/sx10705.png"; +inline constexpr OUStringLiteral RID_SVXBMP_NUMERICFIELD = u"res/sx10706.png"; +inline constexpr OUStringLiteral RID_SVXBMP_CURRENCYFIELD = u"res/sx10707.png"; +inline constexpr OUStringLiteral RID_SVXBMP_PATTERNFIELD = u"res/sx10708.png"; +inline constexpr OUStringLiteral RID_SVXBMP_HIDDEN = u"res/sx18022.png"; +inline constexpr OUStringLiteral RID_SVXBMP_GRID = u"res/sx10603.png"; +inline constexpr OUStringLiteral RID_SVXBMP_FORMATTEDFIELD = u"res/sx10728.png"; +inline constexpr OUStringLiteral RID_SVXBMP_FILTER = u"res/sx10715.png"; +inline constexpr OUStringLiteral RID_SVXBMP_DATE_N_TIME_FIELDS = u"res/sx10757.png"; +inline constexpr OUStringLiteral RID_SVXBMP_FIELD = u"res/sx18027.png"; +inline constexpr OUStringLiteral RID_SVXBMP_SCROLLBAR = u"res/sx10768.png"; +inline constexpr OUStringLiteral RID_SVXBMP_SPINBUTTON = u"res/sx10769.png"; +inline constexpr OUStringLiteral RID_SVXBMP_NAVIGATIONBAR = u"res/sx10607.png"; + +inline constexpr OUStringLiteral RID_SVXBMP_THEME_NORMAL = u"svx/res/galnors.png"; +inline constexpr OUStringLiteral RID_SVXBMP_THEME_READONLY = u"svx/res/galrdos.png"; +inline constexpr OUStringLiteral RID_SVXBMP_THEME_DEFAULT = u"svx/res/galdefs.png"; +inline constexpr OUStringLiteral RID_SVXBMP_GALLERY_MEDIA = u"svx/res/galmedia.png"; +inline constexpr OUStringLiteral RID_SVXBMP_GALLERY_SOUND_1 = u"svx/res/galsnd1.png"; +inline constexpr OUStringLiteral RID_SVXBMP_GALLERY_SOUND_2 = u"svx/res/galsnd2.png"; +inline constexpr OUStringLiteral RID_SVXBMP_GALLERY_SOUND_3 = u"svx/res/galsnd3.png"; +inline constexpr OUStringLiteral RID_SVXBMP_GALLERY_SOUND_4 = u"svx/res/galsnd4.png"; +inline constexpr OUStringLiteral RID_SVXBMP_GALLERY_SOUND_5 = u"svx/res/galsnd5.png"; +inline constexpr OUStringLiteral RID_SVXBMP_GALLERY_SOUND_6 = u"svx/res/galsnd6.png"; +inline constexpr OUStringLiteral RID_SVXBMP_GALLERY_SOUND_7 = u"svx/res/galsnd7.png"; + +inline constexpr OUStringLiteral BMP_NONE_ICON = u"svx/res/symphony/blank.png"; +inline constexpr OUStringLiteral BMP_WIDTH1_ICON = u"svx/res/symphony/width1.png"; +inline constexpr OUStringLiteral BMP_WIDTH2_ICON = u"svx/res/symphony/width2.png"; +inline constexpr OUStringLiteral BMP_WIDTH3_ICON = u"svx/res/symphony/width3.png"; +inline constexpr OUStringLiteral BMP_WIDTH4_ICON = u"svx/res/symphony/width4.png"; +inline constexpr OUStringLiteral BMP_WIDTH5_ICON = u"svx/res/symphony/width5.png"; +inline constexpr OUStringLiteral BMP_WIDTH6_ICON = u"svx/res/symphony/width6.png"; +inline constexpr OUStringLiteral BMP_WIDTH7_ICON = u"svx/res/symphony/width7.png"; +inline constexpr OUStringLiteral BMP_WIDTH8_ICON = u"svx/res/symphony/width8.png"; +inline constexpr OUStringLiteral RID_SVXBMP_WIDTH_CUSTOM = u"svx/res/symphony/last_custom_common.png"; +inline constexpr OUStringLiteral RID_SVXBMP_WIDTH_CUSTOM_GRAY = u"svx/res/symphony/last_custom_common_grey.png"; + +inline constexpr OUStringLiteral BMP_AXIAL = u"svx/res/symphony/axial.png"; +inline constexpr OUStringLiteral BMP_ELLI = u"svx/res/symphony/ellipsoid.png"; +inline constexpr OUStringLiteral BMP_QUAD = u"svx/res/symphony/Quadratic.png"; +inline constexpr OUStringLiteral BMP_RADIAL = u"svx/res/symphony/radial.png"; +inline constexpr OUStringLiteral BMP_SQUARE = u"svx/res/symphony/Square.png"; +inline constexpr OUStringLiteral BMP_LINEAR = u"svx/res/symphony/linear.png"; + +inline constexpr OUStringLiteral RID_SVXBMP_STANDARD_SELECTION = u"svx/res/standard-selection_10x22.png"; +inline constexpr OUStringLiteral RID_SVXBMP_EXTENDING_SELECTION = u"svx/res/extending-selection_10x22.png"; +inline constexpr OUStringLiteral RID_SVXBMP_ADDING_SELECTION = u"svx/res/adding-selection_10x22.png"; +inline constexpr OUStringLiteral RID_SVXBMP_BLOCK_SELECTION = u"svx/res/block-selection_10x22.png"; +inline constexpr OUStringLiteral RID_SVXBMP_POSITION = u"res/sc10223.png"; +inline constexpr OUStringLiteral RID_SVXBMP_SIZE = u"res/sc10224.png"; +inline constexpr OUStringLiteral RID_SVXBMP_SIGNET = u"svx/res/signet_11x16.png"; +inline constexpr OUStringLiteral RID_SVXBMP_SIGNET_BROKEN = u"svx/res/caution_11x16.png"; +inline constexpr OUStringLiteral RID_SVXBMP_SIGNET_NOTVALIDATED = u"svx/res/notcertificate_16.png"; +inline constexpr OUStringLiteral RID_SVXBMP_SLIDERBUTTON = u"svx/res/slidezoombutton_10.png"; +inline constexpr OUStringLiteral RID_SVXBMP_SLIDERDECREASE = u"svx/res/slidezoomout_10.png"; +inline constexpr OUStringLiteral RID_SVXBMP_SLIDERINCREASE = u"svx/res/slidezoomin_10.png"; +inline constexpr OUStringLiteral RID_SVXBMP_DOC_MODIFIED_YES = u"svx/res/doc_modified_yes_14.png"; +inline constexpr OUStringLiteral RID_SVXBMP_DOC_MODIFIED_NO = u"svx/res/doc_modified_no_14.png"; +inline constexpr OUStringLiteral RID_SVXBMP_DOC_MODIFIED_FEEDBACK = u"svx/res/doc_modified_feedback.png"; +inline constexpr OUStringLiteral RID_SVXBMP_ZOOM_PAGE = u"svx/res/zoom_page_statusbar.png"; + +inline constexpr OUStringLiteral BMAP_GrafikEi = u"res/grafikei.png"; +inline constexpr OUStringLiteral SIP_SA_PAGESHADOW35X35 = u"svx/res/pageshadow35x35.png"; +inline constexpr OUStringLiteral SIP_SA_MARKERS = u"svx/res/markers.png"; +inline constexpr OUStringLiteral BMP_SVXOLEOBJ = u"res/oleobj.png"; +inline constexpr OUStringLiteral SIP_SA_CROP_MARKERS = u"svx/res/cropmarkers.png"; +#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 OUStringLiteral RID_SVXBMP_FRAME1 = u"svx/res/fr01.png"; +inline constexpr OUStringLiteral RID_SVXBMP_FRAME2 = u"svx/res/fr02.png"; +inline constexpr OUStringLiteral RID_SVXBMP_FRAME3 = u"svx/res/fr03.png"; +inline constexpr OUStringLiteral RID_SVXBMP_FRAME4 = u"svx/res/fr04.png"; +inline constexpr OUStringLiteral RID_SVXBMP_FRAME5 = u"svx/res/fr05.png"; +inline constexpr OUStringLiteral RID_SVXBMP_FRAME6 = u"svx/res/fr06.png"; +inline constexpr OUStringLiteral RID_SVXBMP_FRAME7 = u"svx/res/fr07.png"; +inline constexpr OUStringLiteral RID_SVXBMP_FRAME8 = u"svx/res/fr08.png"; +inline constexpr OUStringLiteral RID_SVXBMP_FRAME9 = u"svx/res/fr09.png"; +inline constexpr OUStringLiteral RID_SVXBMP_FRAME10 = u"svx/res/fr010.png"; +inline constexpr OUStringLiteral RID_SVXBMP_FRAME11 = u"svx/res/fr011.png"; +inline constexpr OUStringLiteral RID_SVXBMP_FRAME12 = u"svx/res/fr012.png"; +inline constexpr OUStringLiteral RID_SVXBMP_FRAME13 = u"svx/res/fr013.png"; +inline constexpr OUStringLiteral RID_SVXBMP_FRAME14 = u"svx/res/fr014.png"; +inline constexpr OUStringLiteral RID_SVXBMP_FRAME15 = u"svx/res/fr015.png"; +inline constexpr OUStringLiteral RID_SVXBMP_GRAF_RED = u"res/sc10865.png"; +inline constexpr OUStringLiteral RID_SVXBMP_GRAF_GREEN = u"res/sc10866.png"; +inline constexpr OUStringLiteral RID_SVXBMP_GRAF_BLUE = u"res/sc10867.png"; +inline constexpr OUStringLiteral RID_SVXBMP_GRAF_LUMINANCE = u"res/sc10863.png"; +inline constexpr OUStringLiteral RID_SVXBMP_GRAF_CONTRAST = u"res/sc10864.png"; +inline constexpr OUStringLiteral RID_SVXBMP_GRAF_GAMMA = u"res/sc10868.png"; +inline constexpr OUStringLiteral RID_SVXBMP_GRAF_TRANSPARENCE = u"res/sc10869.png"; + +inline constexpr OUStringLiteral RID_UNODRAW_OBJECTS = u"svx/res/objects.png"; +inline constexpr OUStringLiteral RID_UNODRAW_OLE2 = u"svx/res/ole.png"; +inline constexpr OUStringLiteral RID_UNODRAW_GRAPHICS = u"svx/res/graphic.png"; + +/* 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 000000000..012f00855 --- /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 000000000..8dfaf27ca --- /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 000000000..79402d0de --- /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 000000000..98d962850 --- /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 000000000..1b0e5a248 --- /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, + const basegfx::B2DPolyPolygon& rPP, + 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 E3dExtrudeObj* 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 std::unique_ptr<SdrAttrObj,SdrObjectFreeOp> 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 000000000..11d69c170 --- /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 000000000..7de4c1cd7 --- /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, reinterpret_cast<char const *>(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 000000000..01919405b --- /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, reinterpret_cast<char const *>(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 000000000..8af028117 --- /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, reinterpret_cast<char const *>(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 000000000..84fe78a23 --- /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, reinterpret_cast<char const *>(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 000000000..2cf8609ed --- /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(); + void 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::string_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/galleryobjectbinarystorage.hxx b/svx/inc/galleryobjectbinarystorage.hxx new file mode 100644 index 000000000..611ff637b --- /dev/null +++ b/svx/inc/galleryobjectbinarystorage.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 <tools/urlobj.hxx> +#include <svx/galleryobjectstorage.hxx> + +class GalleryObjectBinaryStorage final : public GalleryObjectStorage +{ +private: + INetURLObject m_aURL; + +public: + void setURL(INetURLObject aURL); + const INetURLObject& getURL() const { return m_aURL; } +}; + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/svx/inc/galleryobjectxmlstorage.hxx b/svx/inc/galleryobjectxmlstorage.hxx new file mode 100644 index 000000000..f72d7067a --- /dev/null +++ b/svx/inc/galleryobjectxmlstorage.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 <tools/urlobj.hxx> +#include <svx/galleryobjectstorage.hxx> + +class GalleryObjectXMLStorage final : public GalleryObjectStorage +{ +private: + INetURLObject m_aURL; + +public: + void setURL(INetURLObject aURL); + const INetURLObject& getURL() const { return m_aURL; } +}; + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/svx/inc/galobj.hxx b/svx/inc/galobj.hxx new file mode 100644 index 000000000..29c053baa --- /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 GalleryBinaryEngine; + +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 000000000..e5c8d98f3 --- /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 <o3tl/span.hxx> +#include <vector> + +class SfxItemSet; +class SfxPoolItem; + +std::vector<sal_uInt16> GetAllCharPropIds(const SfxItemSet& rSet); +std::vector<sal_uInt16> GetAllCharPropIds(o3tl::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 000000000..625cc4304 --- /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/string.hxx> + +inline constexpr OStringLiteral HID_BMPMASK_CTL_QCOL_1 = "SVX_HID_BMPMASK_CTL_QCOL_1"; +inline constexpr OStringLiteral HID_COLOR_CTL_COLORS = "SVX_HID_COLOR_CTL_COLORS"; +inline constexpr OStringLiteral HID_CTRL3D_HSCROLL = "SVX_HID_CTRL3D_HSCROLL"; +inline constexpr OStringLiteral HID_CTRL3D_SWITCHER = "SVX_HID_CTRL3D_SWITCHER"; +inline constexpr OStringLiteral HID_CTRL3D_VSCROLL = "SVX_HID_CTRL3D_VSCROLL"; +inline constexpr OStringLiteral HID_CTRL_COLOR = "SVX_HID_CTRL_COLOR"; +inline constexpr OStringLiteral HID_GALLERY_ICONVIEW = "SVX_HID_GALLERY_ICONVIEW"; +inline constexpr OStringLiteral HID_GALLERY_LISTVIEW = "SVX_HID_GALLERY_LISTVIEW"; +inline constexpr OStringLiteral HID_GALLERY_NEWTHEME = "SVX_HID_GALLERY_NEWTHEME"; +inline constexpr OStringLiteral HID_GALLERY_THEMELIST = "SVX_HID_GALLERY_THEMELIST"; +inline constexpr OStringLiteral HID_GALLERY_WINDOW = "SVX_HID_GALLERY_WINDOW"; +inline constexpr OStringLiteral HID_POPUP_COLOR = "SVX_HID_POPUP_COLOR"; +inline constexpr OStringLiteral HID_POPUP_COLOR_CTRL = "SVX_HID_POPUP_COLOR_CTRL"; +inline constexpr OStringLiteral HID_POPUP_FRAME = "SVX_HID_POPUP_FRAME"; +inline constexpr OStringLiteral HID_POPUP_LINE = "SVX_HID_POPUP_LINE"; +inline constexpr OStringLiteral HID_POPUP_LINEEND = "SVX_HID_POPUP_LINEEND"; +inline constexpr OStringLiteral HID_POPUP_LINEEND_CTRL = "SVX_HID_POPUP_LINEEND_CTRL"; +inline constexpr OStringLiteral HID_STYLE_LISTBOX = "SVX_HID_STYLE_LISTBOX"; +inline constexpr OStringLiteral HID_VALUESET_EXTRUSION_LIGHTING = "SVX_HID_VALUESET_EXTRUSION_LIGHTING"; +inline constexpr OStringLiteral HID_UNDERLINE_BTN = "SVX_HID_UNDERLINE_BTN"; +inline constexpr OStringLiteral HID_SPACING_MB_KERN = "SVX_HID_SPACING_MB_KERN"; + +inline constexpr OStringLiteral HID_FORM_NAVIGATOR = "SVX_HID_FORM_NAVIGATOR"; +inline constexpr OStringLiteral HID_FORM_NAVIGATOR_WIN = "SVX_HID_FORM_NAVIGATOR_WIN"; +inline constexpr OStringLiteral HID_FIELD_SEL = "SVX_HID_FIELD_SEL"; +inline constexpr OStringLiteral HID_FIELD_SEL_WIN = "SVX_HID_FIELD_SEL_WIN"; +inline constexpr OStringLiteral HID_FILTER_NAVIGATOR = "SVX_HID_FILTER_NAVIGATOR"; +inline constexpr OStringLiteral HID_FILTER_NAVIGATOR_WIN = "SVX_HID_FILTER_NAVIGATOR_WIN"; +inline constexpr OStringLiteral HID_GRID_TRAVEL_FIRST = "SVX_HID_GRID_TRAVEL_FIRST"; +inline constexpr OStringLiteral HID_GRID_TRAVEL_PREV = "SVX_HID_GRID_TRAVEL_PREV"; +inline constexpr OStringLiteral HID_GRID_TRAVEL_NEXT = "SVX_HID_GRID_TRAVEL_NEXT"; +inline constexpr OStringLiteral HID_GRID_TRAVEL_LAST = "SVX_HID_GRID_TRAVEL_LAST"; +inline constexpr OStringLiteral HID_GRID_TRAVEL_NEW = "SVX_HID_GRID_TRAVEL_NEW"; +inline constexpr OStringLiteral HID_GRID_TRAVEL_ABSOLUTE = "SVX_HID_GRID_TRAVEL_ABSOLUTE"; +inline constexpr OStringLiteral HID_GRID_NUMBEROFRECORDS = "SVX_HID_GRID_NUMBEROFRECORDS"; + +// Help IDs for Manage Track Changes +inline constexpr OStringLiteral HID_REDLINE_CTRL_VIEW = "SVX_HID_REDLINE_CTRL_VIEW"; +inline constexpr OStringLiteral HID_REDLINE_CTRL_FILTER = "SVX_HID_REDLINE_CTRL_FILTER"; + +#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 000000000..0c09dc4a0 --- /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, reinterpret_cast<char const *>(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 000000000..34ccc6e54 --- /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 000000000..e09477d72 --- /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/numberingtype.hrc b/svx/inc/numberingtype.hrc new file mode 100644 index 000000000..4e2ab1f6d --- /dev/null +++ b/svx/inc/numberingtype.hrc @@ -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_NUMBERINGTYPE_HRC +#define INCLUDED_SVX_INC_NUMBERINGTYPE_HRC + +#include <unotools/resmgr.hxx> + +#include <utility> + +#define NC_(Context, String) TranslateId(Context, reinterpret_cast<char const *>(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_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 000000000..9469659d2 --- /dev/null +++ b/svx/inc/palettes.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_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(); +public: + PaletteASE( const OUString &rFPath, const OUString &rFName ); + virtual ~PaletteASE() override; + + virtual const OUString& GetName() override; + virtual const OUString& GetPath() override; + virtual void LoadColorSet(SvxColorValueSet& rColorSet) override; + + virtual bool IsValid() 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(); +public: + PaletteGPL( const OUString &rFPath, const OUString &rFName ); + virtual ~PaletteGPL() override; + + virtual const OUString& GetName() override; + virtual const OUString& GetPath() override; + virtual void LoadColorSet(SvxColorValueSet& rColorSet) override; + + virtual bool IsValid() override; +}; + +// SOC - Star Office Color-table + +class PaletteSOC final : public Palette +{ + bool mbLoadedPalette; + OUString maFPath; + OUString maSOCPaletteName; + XColorListRef mpColorList; +public: + PaletteSOC( const OUString &rFPath, const OUString &rFName ); + virtual ~PaletteSOC() override; + + virtual const OUString& GetName() override; + virtual const OUString& GetPath() override; + virtual void LoadColorSet(SvxColorValueSet& rColorSet) override; + + virtual bool IsValid() 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 000000000..a05a248ab --- /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 000000000..f6206e076 --- /dev/null +++ b/svx/inc/pch/precompiled_svx.hxx @@ -0,0 +1,443 @@ +/* -*- 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-01-26 09:16:16 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 <cstddef> +#include <cstdlib> +#include <deque> +#include <functional> +#include <limits.h> +#include <map> +#include <memory> +#include <mutex> +#include <numeric> +#include <optional> +#include <ostream> +#include <set> +#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/errcode.hxx> +#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/range/b2drange.hxx> +#include <basegfx/range/basicrange.hxx> +#include <basegfx/tuple/b2dtuple.hxx> +#include <basegfx/vector/b2dvector.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/i18n/BreakIterator.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/uno/genfunc.hxx> +#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/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 <comphelper/weak.hxx> +#include <cppu/unotype.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/CommonTypes.hxx> +#include <drawinglayer/primitive2d/Primitive2DContainer.hxx> +#include <drawinglayer/primitive2d/Primitive2DVisitor.hxx> +#include <drawinglayer/primitive2d/baseprimitive2d.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/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/diagnose_ex.h> +#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 <typelib/typedescription.h> +#include <uno/data.h> +#include <unotools/accessiblestatesethelper.hxx> +#include <unotools/fontcvt.hxx> +#include <unotools/localedatawrapper.hxx> +#include <unotools/pathoptions.hxx> +#include <unotools/resmgr.hxx> +#include <unotools/syslocale.hxx> +#include <unotools/unotoolsdllapi.h> +#include <unotools/viewoptions.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/xgrad.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 000000000..0848af1b6 --- /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 000000000..1f963c6e9 --- /dev/null +++ b/svx/inc/pch/precompiled_svxcore.hxx @@ -0,0 +1,552 @@ +/* -*- 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-01-26 09:16:35 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 <limits.h> +#include <limits> +#include <map> +#include <math.h> +#include <memory> +#include <mutex> +#include <new> +#include <numeric> +#include <optional> +#include <ostream> +#include <set> +#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/optional/optional.hpp> +#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/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/alpha.hxx> +#include <vcl/animate/Animation.hxx> +#include <vcl/animate/AnimationBitmap.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 <vcl/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/mapmod.hxx> +#include <vcl/outdev.hxx> +#include <vcl/ptrstyle.hxx> +#include <vcl/region.hxx> +#include <vcl/scopedbitmapaccess.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> +#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/XBitmap.hpp> +#include <com/sun/star/awt/XControl.hpp> +#include <com/sun/star/awt/XFocusListener.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/span.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/dllapi.h> +#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 <tools/diagnose_ex.h> +#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 <tools/wintypes.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 000000000..5a4a234eb --- /dev/null +++ b/svx/inc/polygn3d.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 <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 SdrObjectUniquePtr DoConvertToPolyObj(bool bBezier, bool bAddText) const override; + + virtual E3dPolygonObj* 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 000000000..c4e8d2879 --- /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, reinterpret_cast<char const *>(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 000000000..bb3afa499 --- /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, reinterpret_cast<char const *>(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 000000000..d49bad207 --- /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 000000000..35cfa3da7 --- /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 000000000..084ac6944 --- /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 000000000..e1826552d --- /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( + const SdrShadowAttribute& rShadow, + const SdrTextAttribute& rTextAttribute, + const SdrGlowAttribute& rGlow, + 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 000000000..3bb66c809 --- /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( + const SdrFillAttribute& rFill, + const FillGradientAttribute& rFillFloatTransGradient, + const SdrTextAttribute& rTextAttribute); + 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 000000000..7167bf615 --- /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 000000000..34086c2c8 --- /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 000000000..1e7f694c7 --- /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( + const SdrLineAttribute& rLine, + const SdrLineStartEndAttribute& rLineStartEnd, + 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 000000000..7bb85e897 --- /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, + const SdrFillAttribute& rFill, + const SdrLineStartEndAttribute& rLineStartEnd, + const SdrShadowAttribute& rShadow, + const FillGradientAttribute& rFillFloatTransGradient, + 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 000000000..19b52d611 --- /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 000000000..af72593ad --- /dev/null +++ b/svx/inc/sdr/contact/objectcontactofobjlistpainter.hxx @@ -0,0 +1,114 @@ +/* -*- 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 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 000000000..553407deb --- /dev/null +++ b/svx/inc/sdr/contact/viewcontactofe3d.hxx @@ -0,0 +1,93 @@ +/* -*- 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 + + // 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; + +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; +}; +} + +/* 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 000000000..5f9a6e4a1 --- /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 000000000..c31accc2d --- /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 000000000..d90b33dae --- /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 000000000..bc907451c --- /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 000000000..3bd58dcce --- /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 000000000..bf3ecabcd --- /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 000000000..de1b4aa7f --- /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 000000000..9d6f86f09 --- /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 000000000..672d42042 --- /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 000000000..d39758be3 --- /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 000000000..281cad956 --- /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 000000000..24ed40285 --- /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 000000000..6b4d89323 --- /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 000000000..6bdcbb5df --- /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 000000000..d5ca82fbc --- /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 000000000..98d6f577e --- /dev/null +++ b/svx/inc/sdr/contact/viewcontactofsdrpage.hxx @@ -0,0 +1,204 @@ +/* -*- 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; + +public: + explicit ViewContactOfPageHierarchy(ViewContactOfSdrPage& rParentViewContactOfSdrPage); + virtual ~ViewContactOfPageHierarchy() override; + + virtual sal_uInt32 GetObjectCount() const override; + virtual ViewContact& GetViewContact(sal_uInt32 nIndex) const 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 000000000..bc4063a42 --- /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 000000000..6971f8f0c --- /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 000000000..cdf88e10c --- /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 000000000..04cdf7c07 --- /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 000000000..591ed6504 --- /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 000000000..cc1b2e7c3 --- /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 000000000..74e616a45 --- /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 000000000..96697b020 --- /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 000000000..613e7f8b0 --- /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 000000000..b651e083e --- /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 000000000..891c920ae --- /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 000000000..2279f9b45 --- /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 000000000..a6fa46d43 --- /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 000000000..d7dc8ffdd --- /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 000000000..09dccf4a8 --- /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 000000000..882fb702c --- /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 000000000..834f7e40a --- /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 000000000..425ea96b7 --- /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 000000000..a5acd6abc --- /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 000000000..566f8156d --- /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 000000000..399a9d5c9 --- /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 000000000..ecdfd1a50 --- /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 000000000..c058116f4 --- /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 assocciated +// 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 assocciated 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 000000000..0601122a5 --- /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 000000000..ffe099e60 --- /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 css::uno::Sequence<OUString>{ "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 000000000..f372741fa --- /dev/null +++ b/svx/inc/sdr/primitive2d/sdrattributecreator.hxx @@ -0,0 +1,128 @@ +/* -*- 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 + + 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 000000000..1051fbb7e --- /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( + const ::basegfx::B2DHomMatrix& rTransform, + const attribute::SdrLineFillEffectsTextAttribute& rSdrLFSTAttribute, + const ::basegfx::B2DPolygon& rTail, + 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 000000000..d105a5c87 --- /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, + const ::basegfx::B2DPolygon& rUnitPolygon); + + // 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 000000000..f5ed1f6b2 --- /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, + const basegfx::B2DHomMatrix& rTextBox, + bool bWordWrap, + bool b3DShape, + const basegfx::B2DHomMatrix& rObjectMatrix); + + // 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 000000000..ac65e0eda --- /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 000000000..9b4bf4ebe --- /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( + const ::basegfx::B2DHomMatrix& rTransform, + 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 000000000..5e349de4c --- /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(const ::basegfx::B2DHomMatrix& rTransform, + 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 000000000..4bc8de10b --- /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 000000000..615eb3299 --- /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, + const basegfx::B2DHomMatrix& rTransform, + 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 000000000..c73478042 --- /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 <tools/weakbase.h> + + +// predefinitions + +class SdrOle2Obj; + + +namespace drawinglayer::primitive2d + { + class SdrOleContentPrimitive2D final : public BufferedDecompositionPrimitive2D + { + private: + tools::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, + const basegfx::B2DHomMatrix& rObjectTransform, + 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 000000000..6e4819a89 --- /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( + const basegfx::B2DHomMatrix& rTransform, + const attribute::SdrLineFillEffectsTextAttribute& rSdrLFSTAttribute, + const basegfx::B2DPolyPolygon& rUnitPolyPolygon, + const basegfx::B2DPolyPolygon& rUnitDefinitionPolyPolygon); + + // 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 000000000..71e50cdf7 --- /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 000000000..6480f03c6 --- /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( + const basegfx::B2DHomMatrix& rTransform, + 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 000000000..ab1483be7 --- /dev/null +++ b/svx/inc/sdr/primitive2d/sdrtextprimitive2d.hxx @@ -0,0 +1,335 @@ +/* -*- 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> + + +// 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 + ::tools::WeakReference< SdrText > mrSdrText; + + // #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, + const OutlinerParaObject& rOutlinerParaObjectPtr); + + // 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, + const basegfx::B2DPolyPolygon& rUnitPolyPolygon, + const basegfx::B2DHomMatrix& rObjectTransform); + + // 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, + const basegfx::B2DPolyPolygon& rPathPolyPolygon, + const attribute::SdrFormTextAttribute& rSdrFormTextAttribute); + + // 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, + const basegfx::B2DHomMatrix& rTextRangeTransform, + 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, + const basegfx::B2DHomMatrix& rTextRangeTransform, + 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, + const ::basegfx::B2DHomMatrix& rTextRangeTransform, + 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, + const ::basegfx::B2DHomMatrix& rTextRangeTransform); + + // 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 000000000..3f5178427 --- /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 000000000..d2f1aa15a --- /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: + // the StyleSheet of this object + SfxStyleSheet* mpStyleSheet; + + // 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(o3tl::span< const SfxPoolItem* const > aChangedItems, sal_uInt16 nDeletedWhich) override; + + // apply the correct SfyStyleSheet from SdrObject's SdrModel + virtual void applyDefaultStyleSheetFromSdrModel(); + + public: + // basic constructor + explicit AttributeProperties(SdrObject& rObj); + + // constructor for copying, but using new object + AttributeProperties(const AttributeProperties& rProps, SdrObject& rObj); + + // 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; + }; + +} // 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 000000000..238ec4682 --- /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(o3tl::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/circleproperties.hxx b/svx/inc/sdr/properties/circleproperties.hxx new file mode 100644 index 000000000..9eaa09dbc --- /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(o3tl::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 000000000..b3f116289 --- /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(o3tl::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 000000000..1cc83a2cf --- /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(o3tl::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 000000000..96abc06f2 --- /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 000000000..072b1c796 --- /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 000000000..56e46fb8b --- /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 000000000..caef0ff57 --- /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(o3tl::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 000000000..4606499bd --- /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 000000000..61870c939 --- /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 000000000..f51c97a01 --- /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 000000000..7f842a9dc --- /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(o3tl::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 000000000..40e944eb5 --- /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> mxItemSet; + 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 000000000..3f7225161 --- /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 000000000..001f9778c --- /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(o3tl::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 000000000..abd321ba7 --- /dev/null +++ b/svx/inc/sdr/properties/oleproperties.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_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; + + // 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_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 000000000..acd1d919f --- /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 000000000..7694e9d3c --- /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(o3tl::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 000000000..916e5a7f6 --- /dev/null +++ b/svx/inc/sdr/properties/textproperties.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 . + */ + +#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(o3tl::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; + }; +} // end of namespace sdr::properties + + +#endif // INCLUDED_SVX_SDR_PROPERTIES_TEXTPROPERTIES_HXX + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/svx/inc/spacing.hrc b/svx/inc/spacing.hrc new file mode 100644 index 000000000..1719d215d --- /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, reinterpret_cast<char const *>(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 000000000..1c917bee9 --- /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 OUStringLiteral RID_GALLERYSTR_THEME_HTMLBUTTONS = u"private://gallery/hidden/HtmlExportButtons"; +inline constexpr OUStringLiteral RID_GALLERYSTR_THEME_POWERPOINT = u"private://gallery/hidden/imgppt"; +inline constexpr OUStringLiteral RID_GALLERYSTR_THEME_RULERS = u"Rulers"; +inline constexpr OUStringLiteral RID_GALLERYSTR_THEME_USERSOUNDS = u"private://gallery/hidden/usersounds"; +inline constexpr OUStringLiteral RID_GALLERYSTR_THEME_DUMMY5 = u"Dummy 5"; +inline constexpr OUStringLiteral RID_GALLERYSTR_THEME_FONTWORK = u"private://gallery/hidden/fontwork"; +inline constexpr OUStringLiteral RID_GALLERYSTR_THEME_FONTWORK_VERTICAL = u"private://gallery/hidden/fontworkvertical"; + +// Reference-strings for standardcolor-table +inline constexpr OUStringLiteral RID_SVXSTR_COLOR_BLACK_DEF = u"Black"; +inline constexpr OUStringLiteral RID_SVXSTR_COLOR_BLUE_DEF = u"Blue"; +inline constexpr OUStringLiteral RID_SVXSTR_COLOR_GREEN_DEF = u"Green"; +inline constexpr OUStringLiteral RID_SVXSTR_COLOR_RED_DEF = u"Red"; +inline constexpr OUStringLiteral RID_SVXSTR_COLOR_GREY_DEF = u"Gray"; +inline constexpr OUStringLiteral RID_SVXSTR_COLOR_YELLOW_DEF = u"Yellow"; +inline constexpr OUStringLiteral RID_SVXSTR_COLOR_WHITE_DEF = u"White"; +inline constexpr OUStringLiteral RID_SVXSTR_COLOR_BLUEGREY_DEF = u"Blue gray"; +inline constexpr OUStringLiteral RID_SVXSTR_COLOR_ORANGE_DEF = u"Orange"; +inline constexpr OUStringLiteral RID_SVXSTR_COLOR_MAGENTA_DEF = u"Magenta"; +inline constexpr OUStringLiteral RID_SVXSTR_COLOR_BORDEAUX_DEF = u"Bordeaux"; +inline constexpr OUStringLiteral RID_SVXSTR_COLOR_PALE_YELLOW_DEF = u"Pale yellow"; +inline constexpr OUStringLiteral RID_SVXSTR_COLOR_PALE_GREEN_DEF = u"Pale green"; +inline constexpr OUStringLiteral RID_SVXSTR_COLOR_DARKVIOLET_DEF = u"Dark violet"; +inline constexpr OUStringLiteral RID_SVXSTR_COLOR_SALMON_DEF = u"Salmon"; +inline constexpr OUStringLiteral RID_SVXSTR_COLOR_SEABLUE_DEF = u"Sea blue"; +inline constexpr OUStringLiteral RID_SVXSTR_COLOR_CHART_DEF = u"Chart"; +inline constexpr OUStringLiteral RID_SVXSTR_COLOR_PURPLE_DEF = u"Purple"; +inline constexpr OUStringLiteral RID_SVXSTR_COLOR_SKYBLUE_DEF = u"Sky blue"; +inline constexpr OUStringLiteral RID_SVXSTR_COLOR_YELLOWGREEN_DEF = u"Yellow green"; +inline constexpr OUStringLiteral RID_SVXSTR_COLOR_PINK_DEF = u"Pink"; +inline constexpr OUStringLiteral RID_SVXSTR_COLOR_TURQUOISE_DEF = u"Turquoise"; +inline constexpr OUStringLiteral RID_SVXSTR_COLOR_BLUE_CLASSIC_DEF = u"Blue classic"; +inline constexpr OUStringLiteral RID_SVXSTR_COLOR_GOLD_DEF = u"Gold"; +inline constexpr OUStringLiteral RID_SVXSTR_COLOR_BRICK_DEF = u"Brick"; +inline constexpr OUStringLiteral RID_SVXSTR_COLOR_INDIGO_DEF = u"Indigo"; +inline constexpr OUStringLiteral RID_SVXSTR_COLOR_TEAL_DEF = u"Teal"; +inline constexpr OUStringLiteral RID_SVXSTR_COLOR_LIME_DEF = u"Lime"; +// Reference strings: Light variants of the standard color palette +inline constexpr OUStringLiteral RID_SVXSTR_COLOR_LIGHTGRAY_DEF = u"Light Gray"; +inline constexpr OUStringLiteral RID_SVXSTR_COLOR_LIGHTYELLOW_DEF = u"Light Yellow"; +inline constexpr OUStringLiteral RID_SVXSTR_COLOR_LIGHTGOLD_DEF = u"Light Gold"; +inline constexpr OUStringLiteral RID_SVXSTR_COLOR_LIGHTORANGE_DEF = u"Light Orange"; +inline constexpr OUStringLiteral RID_SVXSTR_COLOR_LIGHTBRICK_DEF = u"Light Brick"; +inline constexpr OUStringLiteral RID_SVXSTR_COLOR_LIGHTRED_DEF = u"Light Red"; +inline constexpr OUStringLiteral RID_SVXSTR_COLOR_LIGHTMAGENTA_DEF = u"Light Magenta"; +inline constexpr OUStringLiteral RID_SVXSTR_COLOR_LIGHTPURPLE_DEF = u"Light Purple"; +inline constexpr OUStringLiteral RID_SVXSTR_COLOR_LIGHTINDIGO_DEF = u"Light Indigo"; +inline constexpr OUStringLiteral RID_SVXSTR_COLOR_LIGHTBLUE_DEF = u"Light Blue"; +inline constexpr OUStringLiteral RID_SVXSTR_COLOR_LIGHTTEAL_DEF = u"Light Teal"; +inline constexpr OUStringLiteral RID_SVXSTR_COLOR_LIGHTGREEN_DEF = u"Light Green"; +inline constexpr OUStringLiteral RID_SVXSTR_COLOR_LIGHTLIME_DEF = u"Light Lime"; +// Reference strings: Dark variants of the standard color palette +inline constexpr OUStringLiteral RID_SVXSTR_COLOR_DARKGRAY_DEF = u"Dark Gray"; +inline constexpr OUStringLiteral RID_SVXSTR_COLOR_DARKYELLOW_DEF = u"Dark Yellow"; +inline constexpr OUStringLiteral RID_SVXSTR_COLOR_DARKGOLD_DEF = u"Dark Gold"; +inline constexpr OUStringLiteral RID_SVXSTR_COLOR_DARKORANGE_DEF = u"Dark Orange"; +inline constexpr OUStringLiteral RID_SVXSTR_COLOR_DARKBRICK_DEF = u"Dark Brick"; +inline constexpr OUStringLiteral RID_SVXSTR_COLOR_DARKRED_DEF = u"Dark Red"; +inline constexpr OUStringLiteral RID_SVXSTR_COLOR_DARKMAGENTA_DEF = u"Dark Magenta"; +inline constexpr OUStringLiteral RID_SVXSTR_COLOR_DARKPURPLE_DEF = u"Dark Purple"; +inline constexpr OUStringLiteral RID_SVXSTR_COLOR_DARKINDIGO_DEF = u"Dark Indigo"; +inline constexpr OUStringLiteral RID_SVXSTR_COLOR_DARKBLUE_DEF = u"Dark Blue"; +inline constexpr OUStringLiteral RID_SVXSTR_COLOR_DARKTEAL_DEF = u"Dark Teal"; +inline constexpr OUStringLiteral RID_SVXSTR_COLOR_DARKGREEN_DEF = u"Dark Green"; +inline constexpr OUStringLiteral RID_SVXSTR_COLOR_DARKLIME_DEF = u"Dark Lime"; +// Reference strings for the Tonal palette +inline constexpr OUStringLiteral RID_SVXSTR_COLOR_VIOLET_DEF = u"Violet"; +inline constexpr OUStringLiteral RID_SVXSTR_COLOR_VIOLET_OUG_DEF = u"Violet (Out of Gamut)"; +inline constexpr OUStringLiteral RID_SVXSTR_COLOR_BLUE_OUG_DEF = u"Blue (Out of Gamut)"; +inline constexpr OUStringLiteral RID_SVXSTR_COLOR_AZURE_OUG_DEF = u"Azure (Out of Gamut)"; +inline constexpr OUStringLiteral RID_SVXSTR_COLOR_SPRINGGREEN_OUG_DEF = u"Spring Green (Out of Gamut)"; +inline constexpr OUStringLiteral RID_SVXSTR_COLOR_GREEN_OUG_DEF = u"Green (Out of Gamut)"; +inline constexpr OUStringLiteral RID_SVXSTR_COLOR_CHARTREUSEGREEN_OUG_DEF = u"Chartreuse Green (Out of Gamut)"; +inline constexpr OUStringLiteral RID_SVXSTR_COLOR_ORANGE_OUG_DEF = u"Orange (Out of Gamut)"; +inline constexpr OUStringLiteral RID_SVXSTR_COLOR_RED_OUG_DEF = u"Red (Out of Gamut)"; +inline constexpr OUStringLiteral RID_SVXSTR_COLOR_ROSE_OUG_DEF = u"Rose (Out of Gamut)"; +inline constexpr OUStringLiteral RID_SVXSTR_COLOR_AZURE_DEF = u"Azure"; +inline constexpr OUStringLiteral RID_SVXSTR_COLOR_CYAN_DEF = u"Cyan"; +inline constexpr OUStringLiteral RID_SVXSTR_COLOR_SPRINGGREEN_DEF = u"Spring Green"; +inline constexpr OUStringLiteral RID_SVXSTR_COLOR_CHARTREUSEGREEN_DEF = u"Chartreuse Green"; +inline constexpr OUStringLiteral RID_SVXSTR_COLOR_ROSE_DEF = u"Rose"; +// Reference strings for the Material palette +inline constexpr OUStringLiteral RID_SVXSTR_COLOR_MATERIAL_GRAY_A_DEF = u"Gray A"; +inline constexpr OUStringLiteral RID_SVXSTR_COLOR_MATERIAL_YELLOW_A_DEF = u"Yellow A"; +inline constexpr OUStringLiteral RID_SVXSTR_COLOR_MATERIAL_AMBER_A_DEF = u"Amber A"; +inline constexpr OUStringLiteral RID_SVXSTR_COLOR_MATERIAL_AMBER_DEF = u"Amber"; +inline constexpr OUStringLiteral RID_SVXSTR_COLOR_MATERIAL_ORANGE_A_DEF = u"Orange A"; +inline constexpr OUStringLiteral RID_SVXSTR_COLOR_MATERIAL_DEEP_ORANGE_A_DEF = u"Deep Orange A"; +inline constexpr OUStringLiteral RID_SVXSTR_COLOR_MATERIAL_DEEP_ORANGE_DEF = u"Deep Orange"; +inline constexpr OUStringLiteral RID_SVXSTR_COLOR_MATERIAL_RED_A_DEF = u"Red A"; +inline constexpr OUStringLiteral RID_SVXSTR_COLOR_MATERIAL_PINK_A_DEF = u"Pink A"; +inline constexpr OUStringLiteral RID_SVXSTR_COLOR_MATERIAL_PURPLE_A_DEF = u"Purple A"; +inline constexpr OUStringLiteral RID_SVXSTR_COLOR_MATERIAL_DEEP_PURPLE_A_DEF = u"Deep Purple A"; +inline constexpr OUStringLiteral RID_SVXSTR_COLOR_MATERIAL_DEEP_PURPLE_DEF = u"Deep Purple"; +inline constexpr OUStringLiteral RID_SVXSTR_COLOR_MATERIAL_INDIGO_A_DEF = u"Indigo A"; +inline constexpr OUStringLiteral RID_SVXSTR_COLOR_MATERIAL_BLUE_A_DEF = u"Blue A"; +inline constexpr OUStringLiteral RID_SVXSTR_COLOR_MATERIAL_LIGHT_BLUE_A_DEF = u"Light Blue A"; +inline constexpr OUStringLiteral RID_SVXSTR_COLOR_MATERIAL_CYAN_A_DEF = u"Cyan A"; +inline constexpr OUStringLiteral RID_SVXSTR_COLOR_MATERIAL_TEAL_A_DEF = u"Teal A"; +inline constexpr OUStringLiteral RID_SVXSTR_COLOR_MATERIAL_GREEN_A_DEF = u"Green A"; +inline constexpr OUStringLiteral RID_SVXSTR_COLOR_MATERIAL_LIGHT_GREEN_A_DEF = u"Light Green A"; +inline constexpr OUStringLiteral RID_SVXSTR_COLOR_MATERIAL_LIME_A_DEF = u"Lime A"; +inline constexpr OUStringLiteral RID_SVXSTR_COLOR_MATERIAL_BROWN_A_DEF = u"Brown A"; +inline constexpr OUStringLiteral RID_SVXSTR_COLOR_MATERIAL_BROWN_DEF = u"Brown"; +inline constexpr OUStringLiteral RID_SVXSTR_COLOR_MATERIAL_BLUE_GRAY_A_DEF = u"Blue Gray A"; +inline constexpr OUStringLiteral RID_SVXSTR_COLOR_MATERIAL_BLUE_GRAY_DEF = u"Blue Gray"; +// Reference-strings for standard-gradient-table +inline constexpr OUStringLiteral RID_SVXSTR_GRDT0_DEF = u"Gradient"; +inline constexpr OUStringLiteral RID_SVXSTR_GRDT1_DEF = u"Linear blue/white"; +inline constexpr OUStringLiteral RID_SVXSTR_GRDT2_DEF = u"Linear magenta/green"; +inline constexpr OUStringLiteral RID_SVXSTR_GRDT3_DEF = u"Linear yellow/brown"; +inline constexpr OUStringLiteral RID_SVXSTR_GRDT4_DEF = u"Radial green/black"; +inline constexpr OUStringLiteral RID_SVXSTR_GRDT5_DEF = u"Radial red/yellow"; +inline constexpr OUStringLiteral RID_SVXSTR_GRDT6_DEF = u"Rectangular red/white"; +inline constexpr OUStringLiteral RID_SVXSTR_GRDT7_DEF = u"Square yellow/white"; +inline constexpr OUStringLiteral RID_SVXSTR_GRDT8_DEF = u"Ellipsoid blue grey/light blue"; +inline constexpr OUStringLiteral RID_SVXSTR_GRDT9_DEF = u"Axial light red/white"; +inline constexpr OUStringLiteral RID_SVXSTR_GRDT10_DEF = u"Diagonal 1l"; +inline constexpr OUStringLiteral RID_SVXSTR_GRDT11_DEF = u"Diagonal 1r"; +inline constexpr OUStringLiteral RID_SVXSTR_GRDT12_DEF = u"Diagonal 2l"; +inline constexpr OUStringLiteral RID_SVXSTR_GRDT13_DEF = u"Diagonal 2r"; +inline constexpr OUStringLiteral RID_SVXSTR_GRDT14_DEF = u"Diagonal 3l"; +inline constexpr OUStringLiteral RID_SVXSTR_GRDT15_DEF = u"Diagonal 3r"; +inline constexpr OUStringLiteral RID_SVXSTR_GRDT16_DEF = u"Diagonal 4l"; +inline constexpr OUStringLiteral RID_SVXSTR_GRDT17_DEF = u"Diagonal 4r"; +inline constexpr OUStringLiteral RID_SVXSTR_GRDT18_DEF = u"Diagonal Blue"; +inline constexpr OUStringLiteral RID_SVXSTR_GRDT19_DEF = u"Diagonal Green"; +inline constexpr OUStringLiteral RID_SVXSTR_GRDT20_DEF = u"Diagonal Orange"; +inline constexpr OUStringLiteral RID_SVXSTR_GRDT21_DEF = u"Diagonal Red"; +inline constexpr OUStringLiteral RID_SVXSTR_GRDT22_DEF = u"Diagonal Turquoise"; +inline constexpr OUStringLiteral RID_SVXSTR_GRDT23_DEF = u"Diagonal Violet"; +inline constexpr OUStringLiteral RID_SVXSTR_GRDT24_DEF = u"From a Corner"; +inline constexpr OUStringLiteral RID_SVXSTR_GRDT25_DEF = u"From a Corner, Blue"; +inline constexpr OUStringLiteral RID_SVXSTR_GRDT26_DEF = u"From a Corner, Green"; +inline constexpr OUStringLiteral RID_SVXSTR_GRDT27_DEF = u"From a Corner, Orange"; +inline constexpr OUStringLiteral RID_SVXSTR_GRDT28_DEF = u"From a Corner, Red"; +inline constexpr OUStringLiteral RID_SVXSTR_GRDT29_DEF = u"From a Corner, Turquoise"; +inline constexpr OUStringLiteral RID_SVXSTR_GRDT30_DEF = u"From a Corner, Violet"; +inline constexpr OUStringLiteral RID_SVXSTR_GRDT31_DEF = u"From the Middle"; +inline constexpr OUStringLiteral RID_SVXSTR_GRDT32_DEF = u"From the Middle, Blue"; +inline constexpr OUStringLiteral RID_SVXSTR_GRDT33_DEF = u"From the Middle, Green"; +inline constexpr OUStringLiteral RID_SVXSTR_GRDT34_DEF = u"From the Middle, Orange"; +inline constexpr OUStringLiteral RID_SVXSTR_GRDT35_DEF = u"From the Middle, Red"; +inline constexpr OUStringLiteral RID_SVXSTR_GRDT36_DEF = u"From the Middle, Turquoise"; +inline constexpr OUStringLiteral RID_SVXSTR_GRDT37_DEF = u"From the Middle, Violet"; +inline constexpr OUStringLiteral RID_SVXSTR_GRDT38_DEF = u"Horizontal"; +inline constexpr OUStringLiteral RID_SVXSTR_GRDT39_DEF = u"Horizontal Blue"; +inline constexpr OUStringLiteral RID_SVXSTR_GRDT40_DEF = u"Horizontal Green"; +inline constexpr OUStringLiteral RID_SVXSTR_GRDT41_DEF = u"Horizontal Orange"; +inline constexpr OUStringLiteral RID_SVXSTR_GRDT42_DEF = u"Horizontal Red"; +inline constexpr OUStringLiteral RID_SVXSTR_GRDT43_DEF = u"Horizontal Turquoise"; +inline constexpr OUStringLiteral RID_SVXSTR_GRDT44_DEF = u"Horizontal Violet"; +inline constexpr OUStringLiteral RID_SVXSTR_GRDT45_DEF = u"Radial"; +inline constexpr OUStringLiteral RID_SVXSTR_GRDT46_DEF = u"Radial Blue"; +inline constexpr OUStringLiteral RID_SVXSTR_GRDT47_DEF = u"Radial Green"; +inline constexpr OUStringLiteral RID_SVXSTR_GRDT48_DEF = u"Radial Orange"; +inline constexpr OUStringLiteral RID_SVXSTR_GRDT49_DEF = u"Radial Red"; +inline constexpr OUStringLiteral RID_SVXSTR_GRDT50_DEF = u"Radial Turquoise"; +inline constexpr OUStringLiteral RID_SVXSTR_GRDT51_DEF = u"Radial Violet"; +inline constexpr OUStringLiteral RID_SVXSTR_GRDT52_DEF = u"Vertical"; +inline constexpr OUStringLiteral RID_SVXSTR_GRDT53_DEF = u"Vertical Blue"; +inline constexpr OUStringLiteral RID_SVXSTR_GRDT54_DEF = u"Vertical Green"; +inline constexpr OUStringLiteral RID_SVXSTR_GRDT55_DEF = u"Vertical Orange"; +inline constexpr OUStringLiteral RID_SVXSTR_GRDT56_DEF = u"Vertical Red"; +inline constexpr OUStringLiteral RID_SVXSTR_GRDT57_DEF = u"Vertical Turquoise"; +inline constexpr OUStringLiteral RID_SVXSTR_GRDT58_DEF = u"Vertical Violet"; +inline constexpr OUStringLiteral RID_SVXSTR_GRDT59_DEF = u"Gray Gradient"; +inline constexpr OUStringLiteral RID_SVXSTR_GRDT60_DEF = u"Yellow Gradient"; +inline constexpr OUStringLiteral RID_SVXSTR_GRDT61_DEF = u"Orange Gradient"; +inline constexpr OUStringLiteral RID_SVXSTR_GRDT62_DEF = u"Red Gradient"; +inline constexpr OUStringLiteral RID_SVXSTR_GRDT63_DEF = u"Pink Gradient"; +inline constexpr OUStringLiteral RID_SVXSTR_GRDT64_DEF = u"Sky"; +inline constexpr OUStringLiteral RID_SVXSTR_GRDT65_DEF = u"Cyan Gradient"; +inline constexpr OUStringLiteral RID_SVXSTR_GRDT66_DEF = u"Blue Gradient"; +inline constexpr OUStringLiteral RID_SVXSTR_GRDT67_DEF = u"Purple Pipe"; +inline constexpr OUStringLiteral RID_SVXSTR_GRDT68_DEF = u"Night"; +inline constexpr OUStringLiteral RID_SVXSTR_GRDT69_DEF = u"Green Gradient"; +//actual gradients defined for 6.1 +inline constexpr OUStringLiteral RID_SVXSTR_GRDT70_DEF = u"Pastel Bouquet"; +inline constexpr OUStringLiteral RID_SVXSTR_GRDT71_DEF = u"Pastel Dream"; +inline constexpr OUStringLiteral RID_SVXSTR_GRDT72_DEF = u"Blue Touch"; +inline constexpr OUStringLiteral RID_SVXSTR_GRDT73_DEF = u"Blank with Gray"; +inline constexpr OUStringLiteral RID_SVXSTR_GRDT74_DEF = u"Spotted Gray"; +inline constexpr OUStringLiteral RID_SVXSTR_GRDT75_DEF = u"London Mist"; +inline constexpr OUStringLiteral RID_SVXSTR_GRDT76_DEF = u"Teal to Blue"; +inline constexpr OUStringLiteral RID_SVXSTR_GRDT77_DEF = u"Midnight"; +inline constexpr OUStringLiteral RID_SVXSTR_GRDT78_DEF = u"Deep Ocean"; +inline constexpr OUStringLiteral RID_SVXSTR_GRDT79_DEF = u"Submarine"; +inline constexpr OUStringLiteral RID_SVXSTR_GRDT80_DEF = u"Green Grass"; +inline constexpr OUStringLiteral RID_SVXSTR_GRDT81_DEF = u"Neon Light"; +inline constexpr OUStringLiteral RID_SVXSTR_GRDT82_DEF = u"Sunshine"; +inline constexpr OUStringLiteral RID_SVXSTR_GRDT83_DEF = u"Present"; +inline constexpr OUStringLiteral RID_SVXSTR_GRDT84_DEF = u"Mahogany"; +// Reference-strings for standard-hatch-table +inline constexpr OUStringLiteral RID_SVXSTR_HATCH0_DEF = u"Black 0 Degrees"; +inline constexpr OUStringLiteral RID_SVXSTR_HATCH1_DEF = u"Black 90 Degrees"; +inline constexpr OUStringLiteral RID_SVXSTR_HATCH2_DEF = u"Black 180 Degrees Crossed"; +inline constexpr OUStringLiteral RID_SVXSTR_HATCH3_DEF = u"Blue 45 Degrees"; +inline constexpr OUStringLiteral RID_SVXSTR_HATCH4_DEF = u"Blue -45 Degrees"; +inline constexpr OUStringLiteral RID_SVXSTR_HATCH5_DEF = u"Blue 45 Degrees Crossed"; +inline constexpr OUStringLiteral RID_SVXSTR_HATCH6_DEF = u"Green 30 Degrees"; +inline constexpr OUStringLiteral RID_SVXSTR_HATCH7_DEF = u"Green 60 Degrees"; +inline constexpr OUStringLiteral RID_SVXSTR_HATCH8_DEF = u"Green 90 Degrees Triple"; +inline constexpr OUStringLiteral RID_SVXSTR_HATCH9_DEF = u"Red 45 Degrees"; +inline constexpr OUStringLiteral RID_SVXSTR_HATCH10_DEF = u"Red 90 Degrees Crossed"; +inline constexpr OUStringLiteral RID_SVXSTR_HATCH11_DEF = u"Red -45 Degrees Triple"; +inline constexpr OUStringLiteral RID_SVXSTR_HATCH12_DEF = u"Yellow 45 Degrees"; +inline constexpr OUStringLiteral RID_SVXSTR_HATCH13_DEF = u"Yellow 45 Degrees Crossed"; +inline constexpr OUStringLiteral RID_SVXSTR_HATCH14_DEF = u"Yellow 45 Degrees Triple"; +inline constexpr OUStringLiteral RID_SVXSTR_HATCH15_DEF = u"Hatching"; +// Reference-strings for standard-bitmap-table +inline constexpr OUStringLiteral RID_SVXSTR_BMP0_DEF = u"Empty"; +inline constexpr OUStringLiteral RID_SVXSTR_BMP1_DEF = u"Painted White"; +inline constexpr OUStringLiteral RID_SVXSTR_BMP2_DEF = u"Paper Texture"; +inline constexpr OUStringLiteral RID_SVXSTR_BMP3_DEF = u"Paper Crumpled"; +inline constexpr OUStringLiteral RID_SVXSTR_BMP4_DEF = u"Paper Graph"; +inline constexpr OUStringLiteral RID_SVXSTR_BMP5_DEF = u"Parchment Paper"; +inline constexpr OUStringLiteral RID_SVXSTR_BMP6_DEF = u"Fence"; +inline constexpr OUStringLiteral RID_SVXSTR_BMP7_DEF = u"Wooden Board"; +inline constexpr OUStringLiteral RID_SVXSTR_BMP8_DEF = u"Maple Leaves"; +inline constexpr OUStringLiteral RID_SVXSTR_BMP9_DEF = u"Lawn"; +inline constexpr OUStringLiteral RID_SVXSTR_BMP10_DEF = u"Colorful Pebbles"; +inline constexpr OUStringLiteral RID_SVXSTR_BMP11_DEF = u"Coffee Beans"; +inline constexpr OUStringLiteral RID_SVXSTR_BMP12_DEF = u"Little Clouds"; +inline constexpr OUStringLiteral RID_SVXSTR_BMP13_DEF = u"Bathroom Tiles"; +inline constexpr OUStringLiteral RID_SVXSTR_BMP14_DEF = u"Wall of Rock"; +inline constexpr OUStringLiteral RID_SVXSTR_BMP15_DEF = u"Zebra"; +inline constexpr OUStringLiteral RID_SVXSTR_BMP16_DEF = u"Color Stripes"; +inline constexpr OUStringLiteral RID_SVXSTR_BMP17_DEF = u"Gravel"; +inline constexpr OUStringLiteral RID_SVXSTR_BMP18_DEF = u"Parchment Studio"; +inline constexpr OUStringLiteral RID_SVXSTR_BMP19_DEF = u"Night Sky"; +inline constexpr OUStringLiteral RID_SVXSTR_BMP20_DEF = u"Pool"; +inline constexpr OUStringLiteral RID_SVXSTR_BMP21_DEF = u"Bitmap"; +inline constexpr OUStringLiteral RID_SVXSTR_BMP79_DEF = u"Invoice Paper"; +inline constexpr OUStringLiteral RID_SVXSTR_BMP80_DEF = u"Concrete"; +inline constexpr OUStringLiteral RID_SVXSTR_BMP81_DEF = u"Brick Wall"; +inline constexpr OUStringLiteral RID_SVXSTR_BMP82_DEF = u"Stone Wall"; +inline constexpr OUStringLiteral RID_SVXSTR_BMP83_DEF = u"Floral"; +inline constexpr OUStringLiteral RID_SVXSTR_BMP84_DEF = u"Space"; +inline constexpr OUStringLiteral RID_SVXSTR_BMP85_DEF = u"Ice light"; +inline constexpr OUStringLiteral RID_SVXSTR_BMP86_DEF = u"Marble"; +inline constexpr OUStringLiteral RID_SVXSTR_BMP87_DEF = u"Sand light"; +inline constexpr OUStringLiteral RID_SVXSTR_BMP88_DEF = u"Stone"; +inline constexpr OUStringLiteral RID_SVXSTR_BMP89_DEF = u"White Diffusion"; +inline constexpr OUStringLiteral RID_SVXSTR_BMP90_DEF = u"Surface"; +inline constexpr OUStringLiteral RID_SVXSTR_BMP91_DEF = u"Cardboard"; +inline constexpr OUStringLiteral RID_SVXSTR_BMP92_DEF = u"Studio"; +// Reference strings for patterns - they are a variation of bitmaps +inline constexpr OUStringLiteral RID_SVXSTR_BMP22_DEF = u"5 Percent"; +inline constexpr OUStringLiteral RID_SVXSTR_BMP23_DEF = u"10 Percent"; +inline constexpr OUStringLiteral RID_SVXSTR_BMP24_DEF = u"20 Percent"; +inline constexpr OUStringLiteral RID_SVXSTR_BMP25_DEF = u"25 Percent"; +inline constexpr OUStringLiteral RID_SVXSTR_BMP26_DEF = u"30 Percent"; +inline constexpr OUStringLiteral RID_SVXSTR_BMP27_DEF = u"40 Percent"; +inline constexpr OUStringLiteral RID_SVXSTR_BMP28_DEF = u"50 Percent"; +inline constexpr OUStringLiteral RID_SVXSTR_BMP29_DEF = u"60 Percent"; +inline constexpr OUStringLiteral RID_SVXSTR_BMP30_DEF = u"70 Percent"; +inline constexpr OUStringLiteral RID_SVXSTR_BMP31_DEF = u"75 Percent"; +inline constexpr OUStringLiteral RID_SVXSTR_BMP32_DEF = u"80 Percent"; +inline constexpr OUStringLiteral RID_SVXSTR_BMP33_DEF = u"90 Percent"; +inline constexpr OUStringLiteral RID_SVXSTR_BMP34_DEF = u"Light Downward Diagonal"; +inline constexpr OUStringLiteral RID_SVXSTR_BMP35_DEF = u"Light Upward Diagonal"; +inline constexpr OUStringLiteral RID_SVXSTR_BMP36_DEF = u"Dark Downward Diagonal"; +inline constexpr OUStringLiteral RID_SVXSTR_BMP37_DEF = u"Dark Upward Diagonal"; +inline constexpr OUStringLiteral RID_SVXSTR_BMP38_DEF = u"Wide Downward Diagonal"; +inline constexpr OUStringLiteral RID_SVXSTR_BMP39_DEF = u"Wide Upward Diagonal"; +inline constexpr OUStringLiteral RID_SVXSTR_BMP40_DEF = u"Light Vertical"; +inline constexpr OUStringLiteral RID_SVXSTR_BMP41_DEF = u"Light Horizontal"; +inline constexpr OUStringLiteral RID_SVXSTR_BMP42_DEF = u"Narrow Vertical"; +inline constexpr OUStringLiteral RID_SVXSTR_BMP43_DEF = u"Narrow Horizontal"; +inline constexpr OUStringLiteral RID_SVXSTR_BMP44_DEF = u"Dark Vertical"; +inline constexpr OUStringLiteral RID_SVXSTR_BMP45_DEF = u"Dark Horizontal"; +inline constexpr OUStringLiteral RID_SVXSTR_BMP46_DEF = u"Dashed Downward Diagonal"; +inline constexpr OUStringLiteral RID_SVXSTR_BMP47_DEF = u"Dashed Upward Diagonal"; +inline constexpr OUStringLiteral RID_SVXSTR_BMP48_DEF = u"Dashed Horizontal"; +inline constexpr OUStringLiteral RID_SVXSTR_BMP49_DEF = u"Dashed Vertical"; +inline constexpr OUStringLiteral RID_SVXSTR_BMP50_DEF = u"Small Confetti"; +inline constexpr OUStringLiteral RID_SVXSTR_BMP51_DEF = u"Large Confetti"; +inline constexpr OUStringLiteral RID_SVXSTR_BMP52_DEF = u"Zig Zag"; +inline constexpr OUStringLiteral RID_SVXSTR_BMP53_DEF = u"Wave"; +inline constexpr OUStringLiteral RID_SVXSTR_BMP54_DEF = u"Diagonal Brick"; +inline constexpr OUStringLiteral RID_SVXSTR_BMP55_DEF = u"Horizontal Brick"; +inline constexpr OUStringLiteral RID_SVXSTR_BMP56_DEF = u"Weave"; +inline constexpr OUStringLiteral RID_SVXSTR_BMP57_DEF = u"Plaid"; +inline constexpr OUStringLiteral RID_SVXSTR_BMP58_DEF = u"Divot"; +inline constexpr OUStringLiteral RID_SVXSTR_BMP59_DEF = u"Dotted Grid"; +inline constexpr OUStringLiteral RID_SVXSTR_BMP60_DEF = u"Dotted Diamond"; +inline constexpr OUStringLiteral RID_SVXSTR_BMP61_DEF = u"Shingle"; +inline constexpr OUStringLiteral RID_SVXSTR_BMP62_DEF = u"Trellis"; +inline constexpr OUStringLiteral RID_SVXSTR_BMP63_DEF = u"Sphere"; +inline constexpr OUStringLiteral RID_SVXSTR_BMP64_DEF = u"Small Grid"; +inline constexpr OUStringLiteral RID_SVXSTR_BMP65_DEF = u"Large Grid"; +inline constexpr OUStringLiteral RID_SVXSTR_BMP66_DEF = u"Small Checker Board"; +inline constexpr OUStringLiteral RID_SVXSTR_BMP67_DEF = u"Large Checker Board"; +inline constexpr OUStringLiteral RID_SVXSTR_BMP68_DEF = u"Outlined Diamond"; +inline constexpr OUStringLiteral RID_SVXSTR_BMP69_DEF = u"Solid Diamond"; +inline constexpr OUStringLiteral RID_SVXSTR_BMP70_DEF = u"Vertical"; +inline constexpr OUStringLiteral RID_SVXSTR_BMP71_DEF = u"Horizontal"; +inline constexpr OUStringLiteral RID_SVXSTR_BMP72_DEF = u"Downward Diagonal"; +inline constexpr OUStringLiteral RID_SVXSTR_BMP73_DEF = u"Upward Diagonal"; +inline constexpr OUStringLiteral RID_SVXSTR_BMP74_DEF = u"Cross"; +inline constexpr OUStringLiteral RID_SVXSTR_BMP75_DEF = u"Diagonal Cross"; +inline constexpr OUStringLiteral RID_SVXSTR_BMP76_DEF = u"Dashed Dotted"; +inline constexpr OUStringLiteral RID_SVXSTR_BMP77_DEF = u"Dashed Dotted Upward Diagonal"; +inline constexpr OUStringLiteral RID_SVXSTR_BMP78_DEF = u"Solid Dotted"; +// Reference-strings for standard-dash-table; +inline constexpr OUStringLiteral RID_SVXSTR_DASH0_DEF = u"Dot"; +inline constexpr OUStringLiteral RID_SVXSTR_DASH1_DEF = u"Long Dot"; +inline constexpr OUStringLiteral RID_SVXSTR_DASH2_DEF = u"Dot (Rounded)"; +inline constexpr OUStringLiteral RID_SVXSTR_DASH3_DEF = u"Dash"; +inline constexpr OUStringLiteral RID_SVXSTR_DASH4_DEF = u"Long Dash"; +inline constexpr OUStringLiteral RID_SVXSTR_DASH5_DEF = u"Double Dash"; +inline constexpr OUStringLiteral RID_SVXSTR_DASH6_DEF = u"Long Dash Dot"; +inline constexpr OUStringLiteral RID_SVXSTR_DASH7_DEF = u"Double Dash Dot"; +inline constexpr OUStringLiteral RID_SVXSTR_DASH8_DEF = u"Double Dash Dot Dot"; +inline constexpr OUStringLiteral RID_SVXSTR_DASH9_DEF = u"Ultrafine Dotted (var)"; +inline constexpr OUStringLiteral RID_SVXSTR_DASH10_DEF = u"Fine Dotted"; +inline constexpr OUStringLiteral RID_SVXSTR_DASH11_DEF = u"Ultrafine Dashed"; +inline constexpr OUStringLiteral RID_SVXSTR_DASH12_DEF = u"Fine Dashed"; +inline constexpr OUStringLiteral RID_SVXSTR_DASH13_DEF = u"Fine Dashed (var)"; +inline constexpr OUStringLiteral RID_SVXSTR_DASH14_DEF = u"Dashed (var)"; +inline constexpr OUStringLiteral RID_SVXSTR_DASH15_DEF = u"Line Style 9"; +inline constexpr OUStringLiteral RID_SVXSTR_DASH16_DEF = u"3 Dashes 3 Dots (var)"; +inline constexpr OUStringLiteral RID_SVXSTR_DASH17_DEF = u"Ultrafine 2 Dots 3 Dashes"; +inline constexpr OUStringLiteral RID_SVXSTR_DASH18_DEF = u"2 Dots 1 Dash"; +inline constexpr OUStringLiteral RID_SVXSTR_DASH19_DEF = u"Line with Fine Dots"; +inline constexpr OUStringLiteral RID_SVXSTR_DASH20_DEF = u"Dash Dot"; +inline constexpr OUStringLiteral RID_SVXSTR_DASH21_DEF = u"Long Dot (Rounded)"; +inline constexpr OUStringLiteral RID_SVXSTR_DASH22_DEF = u"Dash Dot Dot"; +inline constexpr OUStringLiteral RID_SVXSTR_DASH23_DEF = u"Dash (Rounded)"; +inline constexpr OUStringLiteral RID_SVXSTR_DASH24_DEF = u"Long Dash (Rounded)"; +inline constexpr OUStringLiteral RID_SVXSTR_DASH25_DEF = u"Double Dash (Rounded)"; +inline constexpr OUStringLiteral RID_SVXSTR_DASH26_DEF = u"Dash Dot (Rounded)"; +inline constexpr OUStringLiteral RID_SVXSTR_DASH27_DEF = u"Long Dash Dot (Rounded)"; +inline constexpr OUStringLiteral RID_SVXSTR_DASH28_DEF = u"Double Dash Dot (Rounded)"; +inline constexpr OUStringLiteral RID_SVXSTR_DASH29_DEF = u"Dash Dot Dot (Rounded)"; +inline constexpr OUStringLiteral RID_SVXSTR_DASH30_DEF = u"Double Dash Dot Dot (Rounded)"; + +// Reference-strings for standard-line-end-table +inline constexpr OUStringLiteral RID_SVXSTR_LEND0_DEF = u"Concave short"; +inline constexpr OUStringLiteral RID_SVXSTR_LEND1_DEF = u"Square 45"; +inline constexpr OUStringLiteral RID_SVXSTR_LEND2_DEF = u"Arrow short"; +inline constexpr OUStringLiteral RID_SVXSTR_LEND3_DEF = u"Dimension Lines"; +inline constexpr OUStringLiteral RID_SVXSTR_LEND4_DEF = u"Double Arrow"; +inline constexpr OUStringLiteral RID_SVXSTR_LEND5_DEF = u"Triangle"; +inline constexpr OUStringLiteral RID_SVXSTR_LEND6_DEF = u"Concave"; +inline constexpr OUStringLiteral RID_SVXSTR_LEND7_DEF = u"Arrow large"; +inline constexpr OUStringLiteral RID_SVXSTR_LEND8_DEF = u"Dimension Line"; +inline constexpr OUStringLiteral RID_SVXSTR_LEND9_DEF = u"Circle"; +inline constexpr OUStringLiteral RID_SVXSTR_LEND10_DEF = u"Square"; +inline constexpr OUStringLiteral RID_SVXSTR_LEND11_DEF = u"Arrow"; +inline constexpr OUStringLiteral RID_SVXSTR_LEND12_DEF = u"Half Circle"; +inline constexpr OUStringLiteral RID_SVXSTR_LEND13_DEF = u"Triangle unfilled"; +inline constexpr OUStringLiteral RID_SVXSTR_LEND14_DEF = u"Diamond unfilled"; +inline constexpr OUStringLiteral RID_SVXSTR_LEND15_DEF = u"Diamond"; +inline constexpr OUStringLiteral RID_SVXSTR_LEND16_DEF = u"Circle unfilled"; +inline constexpr OUStringLiteral RID_SVXSTR_LEND17_DEF = u"Square 45 unfilled"; +inline constexpr OUStringLiteral RID_SVXSTR_LEND18_DEF = u"Square unfilled"; +inline constexpr OUStringLiteral RID_SVXSTR_LEND19_DEF = u"Half Circle unfilled"; +inline constexpr OUStringLiteral RID_SVXSTR_LEND20_DEF = u"Dimension Line Arrow"; +inline constexpr OUStringLiteral RID_SVXSTR_LEND21_DEF = u"Line short"; +inline constexpr OUStringLiteral RID_SVXSTR_LEND22_DEF = u"Line"; +inline constexpr OUStringLiteral RID_SVXSTR_LEND23_DEF = u"Half Arrow left"; +inline constexpr OUStringLiteral RID_SVXSTR_LEND24_DEF = u"Half Arrow right"; +inline constexpr OUStringLiteral RID_SVXSTR_LEND25_DEF = u"Reversed Arrow"; +inline constexpr OUStringLiteral RID_SVXSTR_LEND26_DEF = u"CF One"; +inline constexpr OUStringLiteral RID_SVXSTR_LEND27_DEF = u"CF Only One"; +inline constexpr OUStringLiteral RID_SVXSTR_LEND28_DEF = u"CF Many"; +inline constexpr OUStringLiteral RID_SVXSTR_LEND29_DEF = u"CF Many One"; +inline constexpr OUStringLiteral RID_SVXSTR_LEND30_DEF = u"CF Zero One"; +inline constexpr OUStringLiteral RID_SVXSTR_LEND31_DEF = u"CF Zero Many"; +// Reference-strings for standard transparence gradients +inline constexpr OUStringLiteral RID_SVXSTR_TRASNGR0_DEF = u"Transparency"; +inline constexpr OUStringLiteral RID_SVXSTR_COLOR_LIBRE_GREEN_1_DEF = u"Green 1 (%PRODUCTNAME Main Color)"; +inline constexpr OUStringLiteral RID_SVXSTR_COLOR_LIBRE_GREEN_ACCENT_DEF = u"Green Accent";; +inline constexpr OUStringLiteral RID_SVXSTR_COLOR_LIBRE_BLUE_ACCENT_DEF = u"Blue Accent"; +inline constexpr OUStringLiteral RID_SVXSTR_COLOR_LIBRE_ORANGE_ACCENT_DEF = u"Orange Accent"; +inline constexpr OUStringLiteral RID_SVXSTR_COLOR_LIBRE_PURPLE_DEF = u"Purple"; +inline constexpr OUStringLiteral RID_SVXSTR_COLOR_LIBRE_PURPLE_ACCENT_DEF = u"Purple Accent"; +inline constexpr OUStringLiteral RID_SVXSTR_COLOR_LIBRE_YELLOW_ACCENT_DEF = u"Yellow Accent"; + +/* 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 000000000..40066df41 --- /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, reinterpret_cast<char const *>(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 - Language Settings - 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 000000000..f7c845dba --- /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, reinterpret_cast<char const *>(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 000000000..144d3bae2 --- /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 000000000..26d4a3194 --- /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 000000000..738e59366 --- /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 000000000..b629acfeb --- /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 000000000..be444bec3 --- /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 000000000..20d61724b --- /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 000000000..c3c070952 --- /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 000000000..12769a085 --- /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 000000000..f207f7411 --- /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 000000000..eda423e27 --- /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 000000000..f821c73fe --- /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 000000000..cb94874bd --- /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 000000000..424563008 --- /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 000000000..cd7d2bb1f --- /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 000000000..2887e8ba0 --- /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 000000000..19d1cb6b8 --- /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 000000000..7f1aec1c5 --- /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 000000000..f14bcf77f --- /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 000000000..190d66d7b --- /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 000000000..304396206 --- /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 000000000..2a5d65863 --- /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 000000000..ce5ce237e --- /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 000000000..2a1fdec4c --- /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 000000000..fbfda4ff9 --- /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, reinterpret_cast<char const *>(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 000000000..478937674 --- /dev/null +++ b/svx/inc/tbxcolorupdate.hxx @@ -0,0 +1,150 @@ +/* -*- 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 <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: + ToolboxButtonColorUpdaterBase(bool bWideButton, const OUString& rCommandLabel, + const OUString& rCommandURL, + const css::uno::Reference<css::frame::XFrame>& rFrame); + + virtual ~ToolboxButtonColorUpdaterBase(); + + 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; + 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 OString& rTbxBtnId, weld::Toolbar* ptrTbx, bool bWideButton, + const OUString& rCommandLabel, const css::uno::Reference<css::frame::XFrame>& rFrame); + + private: + OString 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 000000000..0607052b1 --- /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 000000000..30399207a --- /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 000000000..d423939b6 --- /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 000000000..dc3e7ef6c --- /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, reinterpret_cast<char const *>(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 000000000..bddf321a1 --- /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 000000000..989fa3cc4 --- /dev/null +++ b/svx/inc/unomlstr.hxx @@ -0,0 +1,49 @@ +/* -*- 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/implbase1.hxx> + +class SdrObject; + +class SvxUnoShapeModifyListener final + : public ::cppu::WeakAggImplHelper1<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 000000000..05b675f1e --- /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 000000000..aaefab951 --- /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 000000000..425d2a551 --- /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: */ |