diff options
author | Noel Grandin <noelgrandin@gmail.com> | 2020-02-07 20:42:58 +0200 |
---|---|---|
committer | Noel Grandin <noel.grandin@collabora.co.uk> | 2020-02-12 13:11:28 +0100 |
commit | 1f625b3f74c6e6e5ef345a3e017061be918e443b (patch) | |
tree | 4182a64dd93a6449135ddd87ef6526567f6c7cdc /svx/inc | |
parent | 1b4f6c81de2af3b165594654966bcd5b62dc6081 (diff) |
move some svx/ headers inside the module
Change-Id: I8d9a50039a8139caebb2cfb83ca476d39432f255
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/88238
Tested-by: Jenkins
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
Diffstat (limited to 'svx/inc')
63 files changed, 2327 insertions, 36 deletions
diff --git a/svx/inc/AffineMatrixItem.hxx b/svx/inc/AffineMatrixItem.hxx new file mode 100644 index 000000000000..7d1c48a538f6 --- /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 000000000000..88e3d6ddeb0c --- /dev/null +++ b/svx/inc/CommonStylePreviewRenderer.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/. + */ + +#pragma once + +#include <memory> + +#include <sfx2/objsh.hxx> +#include <sfx2/StylePreviewRenderer.hxx> +#include <rtl/ustring.hxx> +#include <tools/color.hxx> +#include <tools/gen.hxx> + +class OutputDevice; +class SfxStyleSheetBase; +class SvxFont; + +namespace svx +{ + +class CommonStylePreviewRenderer final : public sfx2::StylePreviewRenderer +{ + std::unique_ptr<SvxFont> m_pFont; + Color maFontColor; + Color maBackgroundColor; + Size maPixelSize; + OUString const maStyleName; + +public: + CommonStylePreviewRenderer(const SfxObjectShell& rShell, OutputDevice& rOutputDev, + SfxStyleSheetBase* pStyle, long nMaxHeight); + virtual ~CommonStylePreviewRenderer() override; + + virtual bool recalculate() override; + virtual Size getRenderSize() 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 000000000000..c1407a769188 --- /dev/null +++ b/svx/inc/DescriptionGenerator.hxx @@ -0,0 +1,134 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this 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/uno/Reference.hxx> +#include <rtl/ustrbuf.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 (const OUString& 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(const char* 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 (const OUString& 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/XPropertyTable.hxx b/svx/inc/XPropertyTable.hxx new file mode 100644 index 000000000000..87015e2f1363 --- /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/uno/XInterface.hpp> +#include <svx/xtable.hxx> + +// FIXME: should have a single factory method with an enumeration here [!] + +css::uno::Reference< css::uno::XInterface > SvxUnoXColorTable_createInstance( XPropertyList* pList ) throw(); +css::uno::Reference< css::uno::XInterface > SvxUnoXLineEndTable_createInstance( XPropertyList* pList ) throw(); +css::uno::Reference< css::uno::XInterface > SvxUnoXDashTable_createInstance( XPropertyList* pList ) throw(); +css::uno::Reference< css::uno::XInterface > SvxUnoXHatchTable_createInstance( XPropertyList* pList ) throw(); +css::uno::Reference< css::uno::XInterface > SvxUnoXGradientTable_createInstance( XPropertyList* pList ) throw(); +css::uno::Reference< css::uno::XInterface > SvxUnoXBitmapTable_createInstance( XPropertyList* pList ) throw(); + + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/svx/inc/colrctrl.hxx b/svx/inc/colrctrl.hxx new file mode 100644 index 000000000000..f7005730c7af --- /dev/null +++ b/svx/inc/colrctrl.hxx @@ -0,0 +1,110 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this 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 <vcl/transfer.hxx> +#include <svx/SvxColorValueSet.hxx> +#include <svx/xtable.hxx> +#include <tools/gen.hxx> +#include <tools/link.hxx> +#include <vcl/vclptr.hxx> + +namespace vcl { class Window; } + +class SfxBindings; +class SfxBroadcaster; +class SfxChildWindow; +class SfxHint; + +/************************************************************************* +|* +|* SvxColorValueSet_docking +|* +\************************************************************************/ + +class SAL_WARN_UNUSED SvxColorValueSet_docking final : public SvxColorValueSet, public DragSourceHelper +{ + bool mbLeftButton; + Point aDragPosPixel; + + void DoDrag(); + + // ValueSet + virtual void MouseButtonDown( const MouseEvent& rMEvt ) override; + virtual void MouseButtonUp( const MouseEvent& rMEvt ) override; + + // DragSourceHelper + virtual void StartDrag( sal_Int8 nAction, const Point& rPtPixel ) override; + + DECL_LINK(ExecDragHdl, void*, void); + +public: + SvxColorValueSet_docking( vcl::Window* pParent ); + + bool IsLeftButton() const { return mbLeftButton; } +}; + +/************************************************************************* +|* +|* SvxColorDockingWindow +|* +\************************************************************************/ + +class SAL_WARN_UNUSED SvxColorDockingWindow final : public SfxDockingWindow, public SfxListener +{ +friend class SvxColorChildWindow; + +private: + XColorListRef pColorList; + VclPtr<SvxColorValueSet_docking> aColorSet; + sal_uInt16 nCols; + sal_uInt16 nLines; + long nCount; + Size aItemSize; + + void FillValueSet(); + void SetSize(); + 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; + virtual void Resize() override; + virtual void Resizing( Size& rSize ) 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 000000000000..218d2b85af87 --- /dev/null +++ b/svx/inc/dbcharsethelper.hxx @@ -0,0 +1,38 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this 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 { namespace 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/extrud3d.hxx b/svx/inc/extrud3d.hxx new file mode 100644 index 000000000000..124e7e93da2d --- /dev/null +++ b/svx/inc/extrud3d.hxx @@ -0,0 +1,113 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this 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> +#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 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); + + // 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 sal_uInt16 GetObjIdentifier() const override; + + virtual E3dExtrudeObj* CloneSdrObject(SdrModel& rTargetModel) const override; + + // implemented mainly for the purposes of Clone() + E3dExtrudeObj& operator=(const E3dExtrudeObj& rObj); + + // 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/pch/precompiled_svx.hxx b/svx/inc/pch/precompiled_svx.hxx index c463eccb9b4a..cf586c07325f 100644 --- a/svx/inc/pch/precompiled_svx.hxx +++ b/svx/inc/pch/precompiled_svx.hxx @@ -368,7 +368,7 @@ #include <svx/AccessibleShape.hxx> #include <svx/AccessibleShapeInfo.hxx> #include <svx/AccessibleTextHelper.hxx> -#include <svx/DescriptionGenerator.hxx> +#include <DescriptionGenerator.hxx> #include <svx/IAccessibleViewForwarder.hxx> #include <svx/ShapeTypeHandler.hxx> #include <svx/SvxShapeTypes.hxx> diff --git a/svx/inc/pch/precompiled_svxcore.hxx b/svx/inc/pch/precompiled_svxcore.hxx index a441ac85ab86..b35efb4736d3 100644 --- a/svx/inc/pch/precompiled_svxcore.hxx +++ b/svx/inc/pch/precompiled_svxcore.hxx @@ -448,10 +448,10 @@ #include <fmservs.hxx> #include <fmshimp.hxx> #include <fmundo.hxx> -#include <svx/XPropertyTable.hxx> +#include <XPropertyTable.hxx> #include <svx/dialmgr.hxx> #include <svx/e3dsceneupdater.hxx> -#include <svx/extrud3d.hxx> +#include <extrud3d.hxx> #include <svx/fmglob.hxx> #include <svx/fmmodel.hxx> #include <svx/fmpage.hxx> @@ -472,7 +472,7 @@ #include <svx/sdr/animation/scheduler.hxx> #include <svx/sdr/contact/displayinfo.hxx> #include <svx/sdr/contact/objectcontact.hxx> -#include <svx/sdr/contact/objectcontactofobjlistpainter.hxx> +#include <sdr/contact/objectcontactofobjlistpainter.hxx> #include <svx/sdr/contact/objectcontactofpageview.hxx> #include <svx/sdr/contact/viewcontact.hxx> #include <svx/sdr/contact/viewcontactofe3dscene.hxx> @@ -481,8 +481,8 @@ #include <svx/sdr/overlay/overlaymanager.hxx> #include <svx/sdr/overlay/overlayobject.hxx> #include <svx/sdr/overlay/overlaypolypolygon.hxx> -#include <svx/sdr/primitive2d/sdrattributecreator.hxx> -#include <svx/sdr/primitive2d/sdrdecompositiontools.hxx> +#include <sdr/primitive2d/sdrattributecreator.hxx> +#include <sdr/primitive2d/sdrdecompositiontools.hxx> #include <svx/sdr/primitive2d/svx_primitivetypes2d.hxx> #include <svx/sdrhittesthelper.hxx> #include <svx/sdrpagewindow.hxx> @@ -527,7 +527,7 @@ #include <svx/svx3ditems.hxx> #include <svx/svxdlg.hxx> #include <svx/svxdllapi.h> -#include <svx/textchain.hxx> +#include <textchain.hxx> #include <svx/unoapi.hxx> #include <svx/unofill.hxx> #include <svx/unomid.hxx> diff --git a/svx/inc/polygn3d.hxx b/svx/inc/polygn3d.hxx new file mode 100644 index 000000000000..4a2d7cc4a101 --- /dev/null +++ b/svx/inc/polygn3d.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 <svx/obj3d.hxx> +#include <svx/svxdllapi.h> + +class 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); + + const basegfx::B3DPolyPolygon& GetPolyPolygon3D() const { return aPolyPoly3D; } + const basegfx::B3DPolyPolygon& GetPolyNormals3D() const { return aPolyNormals3D; } + const basegfx::B2DPolyPolygon& GetPolyTexture2D() const { return aPolyTexture2D; } + + virtual sal_uInt16 GetObjIdentifier() const override; + virtual SdrObjectUniquePtr DoConvertToPolyObj(bool bBezier, bool bAddText) const override; + + virtual E3dPolygonObj* CloneSdrObject(SdrModel& rTargetModel) const override; + + // implemented mainly for the purposes of Clone() + E3dPolygonObj& operator=(const E3dPolygonObj& rObj); + + // LineOnly? + bool GetLineOnly() const { return bLineOnly; } + void SetLineOnly(bool bNew); +}; + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/svx/inc/sdgcoitm.hxx b/svx/inc/sdgcoitm.hxx new file mode 100644 index 000000000000..23b7825bfeb9 --- /dev/null +++ b/svx/inc/sdgcoitm.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 <svx/sdprcitm.hxx> +#include <svx/svddef.hxx> +#include <svx/svxdllapi.h> + + +// SdrGrafRedItem - + + +class SVXCORE_DLLPUBLIC SdrGrafRedItem : public SdrSignedPercentItem +{ +public: + + + SdrGrafRedItem( short nRedPercent = 0 ) : SdrSignedPercentItem( SDRATTR_GRAFRED, nRedPercent ) {} + + virtual SdrGrafRedItem* Clone( SfxItemPool* pPool = nullptr ) const override; +}; + + +// SdrGrafGreenItem - + + +class SVXCORE_DLLPUBLIC SdrGrafGreenItem : public SdrSignedPercentItem +{ +public: + + + SdrGrafGreenItem( short nGreenPercent = 0 ) : SdrSignedPercentItem( SDRATTR_GRAFGREEN, nGreenPercent ) {} + + virtual SdrGrafGreenItem* Clone( SfxItemPool* pPool = nullptr ) const override; +}; + + +// SdrGrafBlueItem - + + +class SVXCORE_DLLPUBLIC SdrGrafBlueItem : 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 000000000000..ef5ef1a02db6 --- /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 : 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 000000000000..87b39d863b4e --- /dev/null +++ b/svx/inc/sdgtritm.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/sdprcitm.hxx> +#include <svx/svddef.hxx> +#include <svx/svxdllapi.h> + + +// SdrGrafTransparenceItem - + + +class SVXCORE_DLLPUBLIC SdrGrafTransparenceItem : 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/sdrfilltextattribute.hxx b/svx/inc/sdr/attribute/sdrfilltextattribute.hxx index 74d992917fe5..bef9d543021e 100644 --- a/svx/inc/sdr/attribute/sdrfilltextattribute.hxx +++ b/svx/inc/sdr/attribute/sdrfilltextattribute.hxx @@ -22,7 +22,7 @@ #include <drawinglayer/attribute/sdrfillattribute.hxx> #include <drawinglayer/attribute/fillgradientattribute.hxx> -#include <svx/sdr/attribute/sdrtextattribute.hxx> +#include <sdr/attribute/sdrtextattribute.hxx> namespace drawinglayer diff --git a/svx/inc/sdr/attribute/sdrformtextattribute.hxx b/svx/inc/sdr/attribute/sdrformtextattribute.hxx new file mode 100644 index 000000000000..9b7f7a72fbd4 --- /dev/null +++ b/svx/inc/sdr/attribute/sdrformtextattribute.hxx @@ -0,0 +1,83 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this 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 { namespace attribute { + class ImpSdrFormTextAttribute; + class SdrFormTextOutlineAttribute; +}} + + +namespace drawinglayer +{ + namespace 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 attribute +} // end of namespace drawinglayer + + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/svx/inc/sdr/attribute/sdrlinefillshadowtextattribute.hxx b/svx/inc/sdr/attribute/sdrlinefillshadowtextattribute.hxx new file mode 100644 index 000000000000..519800e7dd02 --- /dev/null +++ b/svx/inc/sdr/attribute/sdrlinefillshadowtextattribute.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/sdrlineshadowtextattribute.hxx> +#include <drawinglayer/attribute/sdrfillattribute.hxx> +#include <drawinglayer/attribute/fillgradientattribute.hxx> + + +namespace drawinglayer +{ + namespace attribute + { + class SdrLineFillShadowTextAttribute : public SdrLineShadowTextAttribute + { + // add fill and transGradient attributes + SdrFillAttribute maFill; // fill attributes (if used) + FillGradientAttribute maFillFloatTransGradient; // fill float transparence gradient (if used) + + public: + SdrLineFillShadowTextAttribute( + const SdrLineAttribute& rLine, + const SdrFillAttribute& rFill, + const SdrLineStartEndAttribute& rLineStartEnd, + const SdrShadowAttribute& rShadow, + const FillGradientAttribute& rFillFloatTransGradient, + const SdrTextAttribute& rTextAttribute); + SdrLineFillShadowTextAttribute(); + SdrLineFillShadowTextAttribute(const SdrLineFillShadowTextAttribute& rCandidate); + SdrLineFillShadowTextAttribute& operator=(const SdrLineFillShadowTextAttribute& rCandidate); + + // checks if the incarnation is default constructed + bool isDefault() const; + + // compare operator + bool operator==(const SdrLineFillShadowTextAttribute& rCandidate) const; + + // data access + const SdrFillAttribute& getFill() const { return maFill; } + const FillGradientAttribute& getFillFloatTransGradient() const { return maFillFloatTransGradient; } + }; + } // end of namespace attribute +} // end of namespace drawinglayer + + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/svx/inc/sdr/attribute/sdrlineshadowtextattribute.hxx b/svx/inc/sdr/attribute/sdrlineshadowtextattribute.hxx new file mode 100644 index 000000000000..af7df7982422 --- /dev/null +++ b/svx/inc/sdr/attribute/sdrlineshadowtextattribute.hxx @@ -0,0 +1,61 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this 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/sdrshadowtextattribute.hxx> +#include <drawinglayer/attribute/sdrlineattribute.hxx> +#include <drawinglayer/attribute/sdrlinestartendattribute.hxx> + + +namespace drawinglayer +{ + namespace attribute + { + class SdrLineShadowTextAttribute : public SdrShadowTextAttribute + { + // line, shadow, lineStartEnd and text attributes + SdrLineAttribute maLine; // line attributes (if used) + SdrLineStartEndAttribute maLineStartEnd; // line start end (if used) + + public: + SdrLineShadowTextAttribute( + const SdrLineAttribute& rLine, + const SdrLineStartEndAttribute& rLineStartEnd, + const SdrShadowAttribute& rShadow, + const SdrTextAttribute& rTextAttribute); + SdrLineShadowTextAttribute(); + SdrLineShadowTextAttribute(const SdrLineShadowTextAttribute& rCandidate); + SdrLineShadowTextAttribute& operator=(const SdrLineShadowTextAttribute& rCandidate); + + // checks if the incarnation is default constructed + bool isDefault() const; + + // compare operator + bool operator==(const SdrLineShadowTextAttribute& rCandidate) const; + + // data access + const SdrLineAttribute& getLine() const { return maLine; } + const SdrLineStartEndAttribute& getLineStartEnd() const { return maLineStartEnd; } + }; + } // end of namespace attribute +} // end of namespace drawinglayer + + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/svx/inc/sdr/attribute/sdrshadowtextattribute.hxx b/svx/inc/sdr/attribute/sdrshadowtextattribute.hxx new file mode 100644 index 000000000000..c58437b70928 --- /dev/null +++ b/svx/inc/sdr/attribute/sdrshadowtextattribute.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 . + */ + +#pragma once + +#include <drawinglayer/attribute/sdrshadowattribute.hxx> +#include <sdr/attribute/sdrtextattribute.hxx> + + +namespace drawinglayer +{ + namespace attribute + { + class SdrShadowTextAttribute + { + // shadow and text attributes + SdrShadowAttribute maShadow; // shadow attributes (if used) + SdrTextAttribute maTextAttribute; // text and text attributes (if used) + + public: + SdrShadowTextAttribute( + const SdrShadowAttribute& rShadow, + const SdrTextAttribute& rTextAttribute); + SdrShadowTextAttribute(); + SdrShadowTextAttribute(const SdrShadowTextAttribute& rCandidate); + SdrShadowTextAttribute& operator=(const SdrShadowTextAttribute& rCandidate); + + // checks if the incarnation is default constructed + bool isDefault() const; + + // compare operator + bool operator==(const SdrShadowTextAttribute& rCandidate) const; + + // data access + const SdrShadowAttribute& getShadow() const { return maShadow; } + const SdrTextAttribute& getText() const { return maTextAttribute; } + }; + } // end of namespace attribute +} // end of namespace drawinglayer + + +/* 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 000000000000..d3fb22e140ed --- /dev/null +++ b/svx/inc/sdr/attribute/sdrtextattribute.hxx @@ -0,0 +1,127 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this 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 { namespace animation { + class AnimationEntryList; +}} + +namespace drawinglayer { namespace attribute { + class SdrFormTextAttribute; +}} + +namespace drawinglayer { namespace attribute { + class ImpSdrTextAttribute; +}} + + +namespace drawinglayer +{ + namespace 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 attribute +} // end of namespace drawinglayer + + +/* 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 000000000000..6f914a87549c --- /dev/null +++ b/svx/inc/sdr/contact/objectcontactofobjlistpainter.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 <svx/sdr/contact/objectcontact.hxx> +#include <svx/svxdllapi.h> +#include <svx/svdpage.hxx> +#include <tools/weakbase.hxx> + +class SdrPage; +class SdrObject; + +namespace sdr { namespace contact { + +class 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, + const 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 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 + tools::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(); } + SdrPage* GetStartPage() { return mxStartPage.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 000000000000..7151071c5c59 --- /dev/null +++ b/svx/inc/sdr/contact/viewcontactofe3d.hxx @@ -0,0 +1,95 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this 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 { namespace attribute { + class SdrLineAttribute; +}} + +namespace basegfx { + class BColor; + class B3DHomMatrix; +} + +namespace sdr { namespace 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 drawinglayer::primitive2d::Primitive2DContainer createViewIndependentPrimitive2DSequence() 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 index 8b45f78869ab..933bc8d14d57 100644 --- a/svx/inc/sdr/contact/viewcontactofe3dcube.hxx +++ b/svx/inc/sdr/contact/viewcontactofe3dcube.hxx @@ -20,7 +20,7 @@ #ifndef INCLUDED_SVX_INC_SDR_CONTACT_VIEWCONTACTOFE3DCUBE_HXX #define INCLUDED_SVX_INC_SDR_CONTACT_VIEWCONTACTOFE3DCUBE_HXX -#include <svx/sdr/contact/viewcontactofe3d.hxx> +#include <sdr/contact/viewcontactofe3d.hxx> #include <svx/cube3d.hxx> namespace sdr diff --git a/svx/inc/sdr/contact/viewcontactofe3dextrude.hxx b/svx/inc/sdr/contact/viewcontactofe3dextrude.hxx index d5a070986696..0d96fb989050 100644 --- a/svx/inc/sdr/contact/viewcontactofe3dextrude.hxx +++ b/svx/inc/sdr/contact/viewcontactofe3dextrude.hxx @@ -20,8 +20,8 @@ #ifndef INCLUDED_SVX_INC_SDR_CONTACT_VIEWCONTACTOFE3DEXTRUDE_HXX #define INCLUDED_SVX_INC_SDR_CONTACT_VIEWCONTACTOFE3DEXTRUDE_HXX -#include <svx/sdr/contact/viewcontactofe3d.hxx> -#include <svx/extrud3d.hxx> +#include <sdr/contact/viewcontactofe3d.hxx> +#include <extrud3d.hxx> namespace sdr diff --git a/svx/inc/sdr/contact/viewcontactofe3dlathe.hxx b/svx/inc/sdr/contact/viewcontactofe3dlathe.hxx index 65ef74141a92..00e42754f226 100644 --- a/svx/inc/sdr/contact/viewcontactofe3dlathe.hxx +++ b/svx/inc/sdr/contact/viewcontactofe3dlathe.hxx @@ -20,7 +20,7 @@ #ifndef INCLUDED_SVX_INC_SDR_CONTACT_VIEWCONTACTOFE3DLATHE_HXX #define INCLUDED_SVX_INC_SDR_CONTACT_VIEWCONTACTOFE3DLATHE_HXX -#include <svx/sdr/contact/viewcontactofe3d.hxx> +#include <sdr/contact/viewcontactofe3d.hxx> #include <svx/lathe3d.hxx> diff --git a/svx/inc/sdr/contact/viewcontactofe3dpolygon.hxx b/svx/inc/sdr/contact/viewcontactofe3dpolygon.hxx index 2dfc5f5789f3..16116cc19af7 100644 --- a/svx/inc/sdr/contact/viewcontactofe3dpolygon.hxx +++ b/svx/inc/sdr/contact/viewcontactofe3dpolygon.hxx @@ -20,8 +20,8 @@ #ifndef INCLUDED_SVX_INC_SDR_CONTACT_VIEWCONTACTOFE3DPOLYGON_HXX #define INCLUDED_SVX_INC_SDR_CONTACT_VIEWCONTACTOFE3DPOLYGON_HXX -#include <svx/sdr/contact/viewcontactofe3d.hxx> -#include <svx/polygn3d.hxx> +#include <sdr/contact/viewcontactofe3d.hxx> +#include <polygn3d.hxx> namespace sdr { diff --git a/svx/inc/sdr/contact/viewcontactofe3dsphere.hxx b/svx/inc/sdr/contact/viewcontactofe3dsphere.hxx index ad4262657d3e..78d9a7ca7826 100644 --- a/svx/inc/sdr/contact/viewcontactofe3dsphere.hxx +++ b/svx/inc/sdr/contact/viewcontactofe3dsphere.hxx @@ -20,7 +20,7 @@ #ifndef INCLUDED_SVX_INC_SDR_CONTACT_VIEWCONTACTOFE3DSPHERE_HXX #define INCLUDED_SVX_INC_SDR_CONTACT_VIEWCONTACTOFE3DSPHERE_HXX -#include <svx/sdr/contact/viewcontactofe3d.hxx> +#include <sdr/contact/viewcontactofe3d.hxx> #include <svx/sphere3d.hxx> diff --git a/svx/inc/sdr/contact/viewcontactofgraphic.hxx b/svx/inc/sdr/contact/viewcontactofgraphic.hxx index 22083324e97a..4d16d91940f8 100644 --- a/svx/inc/sdr/contact/viewcontactofgraphic.hxx +++ b/svx/inc/sdr/contact/viewcontactofgraphic.hxx @@ -20,7 +20,7 @@ #ifndef INCLUDED_SVX_INC_SDR_CONTACT_VIEWCONTACTOFGRAPHIC_HXX #define INCLUDED_SVX_INC_SDR_CONTACT_VIEWCONTACTOFGRAPHIC_HXX -#include <svx/sdr/contact/viewcontactoftextobj.hxx> +#include <sdr/contact/viewcontactoftextobj.hxx> #include <svx/svdograf.hxx> namespace drawinglayer { namespace attribute { class SdrLineFillShadowTextAttribute; }} diff --git a/svx/inc/sdr/contact/viewcontactofpageobj.hxx b/svx/inc/sdr/contact/viewcontactofpageobj.hxx new file mode 100644 index 000000000000..bfb2d8f1c908 --- /dev/null +++ b/svx/inc/sdr/contact/viewcontactofpageobj.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 . + */ + +#pragma once + +#include <svx/sdr/contact/viewcontactofsdrobj.hxx> +#include <svx/svxdllapi.h> +#include <svx/svdopage.hxx> + +class SdrPage; + +namespace sdr { namespace 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 drawinglayer::primitive2d::Primitive2DContainer createViewIndependentPrimitive2DSequence() 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 index 20d9646e1006..6e2f07b5a1df 100644 --- a/svx/inc/sdr/contact/viewcontactofsdrcaptionobj.hxx +++ b/svx/inc/sdr/contact/viewcontactofsdrcaptionobj.hxx @@ -20,7 +20,7 @@ #ifndef INCLUDED_SVX_INC_SDR_CONTACT_VIEWCONTACTOFSDRCAPTIONOBJ_HXX #define INCLUDED_SVX_INC_SDR_CONTACT_VIEWCONTACTOFSDRCAPTIONOBJ_HXX -#include <svx/sdr/contact/viewcontactofsdrrectobj.hxx> +#include <sdr/contact/viewcontactofsdrrectobj.hxx> #include <svx/svdocapt.hxx> diff --git a/svx/inc/sdr/contact/viewcontactofsdrcircobj.hxx b/svx/inc/sdr/contact/viewcontactofsdrcircobj.hxx index d5b42b7e5bdd..64972ebee3ff 100644 --- a/svx/inc/sdr/contact/viewcontactofsdrcircobj.hxx +++ b/svx/inc/sdr/contact/viewcontactofsdrcircobj.hxx @@ -20,7 +20,7 @@ #ifndef INCLUDED_SVX_INC_SDR_CONTACT_VIEWCONTACTOFSDRCIRCOBJ_HXX #define INCLUDED_SVX_INC_SDR_CONTACT_VIEWCONTACTOFSDRCIRCOBJ_HXX -#include <svx/sdr/contact/viewcontactofsdrrectobj.hxx> +#include <sdr/contact/viewcontactofsdrrectobj.hxx> #include <svx/svdocirc.hxx> diff --git a/svx/inc/sdr/contact/viewcontactofsdredgeobj.hxx b/svx/inc/sdr/contact/viewcontactofsdredgeobj.hxx index a8ad594019ab..fb22bf97d424 100644 --- a/svx/inc/sdr/contact/viewcontactofsdredgeobj.hxx +++ b/svx/inc/sdr/contact/viewcontactofsdredgeobj.hxx @@ -20,7 +20,7 @@ #ifndef INCLUDED_SVX_INC_SDR_CONTACT_VIEWCONTACTOFSDREDGEOBJ_HXX #define INCLUDED_SVX_INC_SDR_CONTACT_VIEWCONTACTOFSDREDGEOBJ_HXX -#include <svx/sdr/contact/viewcontactoftextobj.hxx> +#include <sdr/contact/viewcontactoftextobj.hxx> #include <svx/svdoedge.hxx> diff --git a/svx/inc/sdr/contact/viewcontactofsdrmeasureobj.hxx b/svx/inc/sdr/contact/viewcontactofsdrmeasureobj.hxx index f0c351c45672..caeaa283cc39 100644 --- a/svx/inc/sdr/contact/viewcontactofsdrmeasureobj.hxx +++ b/svx/inc/sdr/contact/viewcontactofsdrmeasureobj.hxx @@ -20,7 +20,7 @@ #ifndef INCLUDED_SVX_INC_SDR_CONTACT_VIEWCONTACTOFSDRMEASUREOBJ_HXX #define INCLUDED_SVX_INC_SDR_CONTACT_VIEWCONTACTOFSDRMEASUREOBJ_HXX -#include <svx/sdr/contact/viewcontactoftextobj.hxx> +#include <sdr/contact/viewcontactoftextobj.hxx> #include <svx/svdomeas.hxx> diff --git a/svx/inc/sdr/contact/viewcontactofsdrobjcustomshape.hxx b/svx/inc/sdr/contact/viewcontactofsdrobjcustomshape.hxx index acaf4c1b8fce..9834de646a6b 100644 --- a/svx/inc/sdr/contact/viewcontactofsdrobjcustomshape.hxx +++ b/svx/inc/sdr/contact/viewcontactofsdrobjcustomshape.hxx @@ -20,7 +20,7 @@ #ifndef INCLUDED_SVX_INC_SDR_CONTACT_VIEWCONTACTOFSDROBJCUSTOMSHAPE_HXX #define INCLUDED_SVX_INC_SDR_CONTACT_VIEWCONTACTOFSDROBJCUSTOMSHAPE_HXX -#include <svx/sdr/contact/viewcontactoftextobj.hxx> +#include <sdr/contact/viewcontactoftextobj.hxx> #include <svx/svdoashp.hxx> diff --git a/svx/inc/sdr/contact/viewcontactofsdrole2obj.hxx b/svx/inc/sdr/contact/viewcontactofsdrole2obj.hxx index e70f64faa362..cbab385fb3c7 100644 --- a/svx/inc/sdr/contact/viewcontactofsdrole2obj.hxx +++ b/svx/inc/sdr/contact/viewcontactofsdrole2obj.hxx @@ -20,7 +20,7 @@ #ifndef INCLUDED_SVX_INC_SDR_CONTACT_VIEWCONTACTOFSDROLE2OBJ_HXX #define INCLUDED_SVX_INC_SDR_CONTACT_VIEWCONTACTOFSDROLE2OBJ_HXX -#include <svx/sdr/contact/viewcontactofsdrrectobj.hxx> +#include <sdr/contact/viewcontactofsdrrectobj.hxx> #include <svx/svdoole2.hxx> #include <basegfx/matrix/b2dhommatrix.hxx> diff --git a/svx/inc/sdr/contact/viewcontactofsdrpathobj.hxx b/svx/inc/sdr/contact/viewcontactofsdrpathobj.hxx index bbb7d264704f..f2055f74cc15 100644 --- a/svx/inc/sdr/contact/viewcontactofsdrpathobj.hxx +++ b/svx/inc/sdr/contact/viewcontactofsdrpathobj.hxx @@ -20,7 +20,7 @@ #ifndef INCLUDED_SVX_INC_SDR_CONTACT_VIEWCONTACTOFSDRPATHOBJ_HXX #define INCLUDED_SVX_INC_SDR_CONTACT_VIEWCONTACTOFSDRPATHOBJ_HXX -#include <svx/sdr/contact/viewcontactoftextobj.hxx> +#include <sdr/contact/viewcontactoftextobj.hxx> #include <svx/svdopath.hxx> diff --git a/svx/inc/sdr/contact/viewcontactofsdrrectobj.hxx b/svx/inc/sdr/contact/viewcontactofsdrrectobj.hxx new file mode 100644 index 000000000000..5fe37f7cbfad --- /dev/null +++ b/svx/inc/sdr/contact/viewcontactofsdrrectobj.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 . + */ + +#pragma once + +#include <sdr/contact/viewcontactoftextobj.hxx> +#include <svx/svdorect.hxx> + +namespace sdr { namespace 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 drawinglayer::primitive2d::Primitive2DContainer createViewIndependentPrimitive2DSequence() 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 000000000000..ca6a6b30fc8a --- /dev/null +++ b/svx/inc/sdr/contact/viewcontactoftextobj.hxx @@ -0,0 +1,38 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this 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 { namespace 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/viewobjectcontactofpageobj.hxx b/svx/inc/sdr/contact/viewobjectcontactofpageobj.hxx new file mode 100644 index 000000000000..64851fe8ec9d --- /dev/null +++ b/svx/inc/sdr/contact/viewobjectcontactofpageobj.hxx @@ -0,0 +1,51 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +#pragma once + +#include <svx/sdr/contact/viewobjectcontactofsdrobj.hxx> +#include <memory> + +class SdrPage; + +namespace sdr { namespace 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 drawinglayer::primitive2d::Primitive2DContainer createPrimitive2DSequence(const DisplayInfo& rDisplayInfo) const override; + +public: + ViewObjectContactOfPageObj(ObjectContact& rObjectContact, ViewContact& rViewContact); + virtual ~ViewObjectContactOfPageObj() override; +}; + +}} + + + +/* 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 000000000000..63669ba06ec7 --- /dev/null +++ b/svx/inc/sdr/overlay/overlayobjectcell.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/overlay/overlayobject.hxx> + +#include <vector> + + +namespace sdr +{ + namespace 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, const RangeVector& rRects); + virtual ~OverlayObjectCell() override; + }; + + } // end of namespace overlay +} // end of namespace sdr + + +/* 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 000000000000..730671f80d83 --- /dev/null +++ b/svx/inc/sdr/overlay/overlaytriangle.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/sdr/overlay/overlayobject.hxx> + +namespace sdr +{ + namespace overlay + { + class OverlayTriangle final : public OverlayObjectWithBasePosition + { + // second and third position in pixel + basegfx::B2DPoint const maSecondPosition; + basegfx::B2DPoint const 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 overlay +} // end of namespace sdr + +/* 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 000000000000..1d9e17d60d2a --- /dev/null +++ b/svx/inc/sdr/primitive2d/sdrattributecreator.hxx @@ -0,0 +1,129 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +#pragma once + +#include <sal/types.h> +#include <svx/svxdllapi.h> + + +// predefines +class SfxItemSet; +class SdrText; + +namespace drawinglayer { namespace attribute { + class SdrLineAttribute; + class SdrLineStartEndAttribute; + class SdrShadowAttribute; + class SdrFillAttribute; + class SdrTextAttribute; + class FillGradientAttribute; + class SdrFillGraphicAttribute; + class SdrShadowTextAttribute; + class SdrLineShadowTextAttribute; + class SdrLineFillShadowTextAttribute; + class SdrLineFillShadowAttribute3D; + class SdrSceneAttribute; + class SdrLightingAttribute; + class SdrFillTextAttribute; +}} + +namespace basegfx { + class B2DRange; +} + + +namespace drawinglayer +{ + namespace 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::SdrShadowTextAttribute createNewSdrShadowTextAttribute( + const SfxItemSet& rSet, + const SdrText* pText, + bool bSuppressText); // #i98072# added option to suppress text on demand + + attribute::SdrLineShadowTextAttribute createNewSdrLineShadowTextAttribute( + const SfxItemSet& rSet, + const SdrText* pText); + + attribute::SdrLineFillShadowTextAttribute createNewSdrLineFillShadowTextAttribute( + 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 primitive2d +} // end of namespace drawinglayer + + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/svx/inc/sdr/primitive2d/sdrcaptionprimitive2d.hxx b/svx/inc/sdr/primitive2d/sdrcaptionprimitive2d.hxx index 23e180129384..a0ec102cab73 100644 --- a/svx/inc/sdr/primitive2d/sdrcaptionprimitive2d.hxx +++ b/svx/inc/sdr/primitive2d/sdrcaptionprimitive2d.hxx @@ -22,7 +22,7 @@ #include <drawinglayer/primitive2d/baseprimitive2d.hxx> #include <basegfx/matrix/b2dhommatrix.hxx> -#include <svx/sdr/attribute/sdrlinefillshadowtextattribute.hxx> +#include <sdr/attribute/sdrlinefillshadowtextattribute.hxx> #include <basegfx/polygon/b2dpolygon.hxx> diff --git a/svx/inc/sdr/primitive2d/sdrconnectorprimitive2d.hxx b/svx/inc/sdr/primitive2d/sdrconnectorprimitive2d.hxx index 16f08c23c9cd..64cfddc43203 100644 --- a/svx/inc/sdr/primitive2d/sdrconnectorprimitive2d.hxx +++ b/svx/inc/sdr/primitive2d/sdrconnectorprimitive2d.hxx @@ -21,7 +21,7 @@ #define INCLUDED_SVX_INC_SDR_PRIMITIVE2D_SDRCONNECTORPRIMITIVE2D_HXX #include <drawinglayer/primitive2d/baseprimitive2d.hxx> -#include <svx/sdr/attribute/sdrlineshadowtextattribute.hxx> +#include <sdr/attribute/sdrlineshadowtextattribute.hxx> #include <basegfx/polygon/b2dpolygon.hxx> diff --git a/svx/inc/sdr/primitive2d/sdrcustomshapeprimitive2d.hxx b/svx/inc/sdr/primitive2d/sdrcustomshapeprimitive2d.hxx index 910673c705cf..4012ed29613d 100644 --- a/svx/inc/sdr/primitive2d/sdrcustomshapeprimitive2d.hxx +++ b/svx/inc/sdr/primitive2d/sdrcustomshapeprimitive2d.hxx @@ -22,7 +22,7 @@ #include <drawinglayer/primitive2d/baseprimitive2d.hxx> #include <basegfx/matrix/b2dhommatrix.hxx> -#include <svx/sdr/attribute/sdrshadowtextattribute.hxx> +#include <sdr/attribute/sdrshadowtextattribute.hxx> // predefines diff --git a/svx/inc/sdr/primitive2d/sdrdecompositiontools.hxx b/svx/inc/sdr/primitive2d/sdrdecompositiontools.hxx new file mode 100644 index 000000000000..f55edda1b7c1 --- /dev/null +++ b/svx/inc/sdr/primitive2d/sdrdecompositiontools.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 . + */ + +#pragma once + +#include <drawinglayer/primitive2d/baseprimitive2d.hxx> +#include <svx/svxdllapi.h> + +// predefines +namespace basegfx { + class B2DPolygon; + class B2DPolyPolygon; + class B2DHomMatrix; +} + +namespace drawinglayer { namespace attribute { + class SdrFillAttribute; + class SdrLineAttribute; + class FillGradientAttribute; + class SdrShadowAttribute; + class SdrLineStartEndAttribute; + class SdrTextAttribute; +}} + + +namespace drawinglayer +{ + namespace 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( + const Primitive2DContainer& rContent, + const attribute::SdrShadowAttribute& rShadow); + + } // end of namespace primitive2d +} // end of namespace drawinglayer + + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/svx/inc/sdr/primitive2d/sdrellipseprimitive2d.hxx b/svx/inc/sdr/primitive2d/sdrellipseprimitive2d.hxx index 58ae7579d0bd..746d46a75585 100644 --- a/svx/inc/sdr/primitive2d/sdrellipseprimitive2d.hxx +++ b/svx/inc/sdr/primitive2d/sdrellipseprimitive2d.hxx @@ -22,7 +22,7 @@ #include <drawinglayer/primitive2d/baseprimitive2d.hxx> #include <basegfx/matrix/b2dhommatrix.hxx> -#include <svx/sdr/attribute/sdrlinefillshadowtextattribute.hxx> +#include <sdr/attribute/sdrlinefillshadowtextattribute.hxx> // predefines diff --git a/svx/inc/sdr/primitive2d/sdrgrafprimitive2d.hxx b/svx/inc/sdr/primitive2d/sdrgrafprimitive2d.hxx index cc815806734a..2a317df334d6 100644 --- a/svx/inc/sdr/primitive2d/sdrgrafprimitive2d.hxx +++ b/svx/inc/sdr/primitive2d/sdrgrafprimitive2d.hxx @@ -23,7 +23,7 @@ #include <drawinglayer/primitive2d/baseprimitive2d.hxx> #include <basegfx/matrix/b2dhommatrix.hxx> #include <vcl/GraphicObject.hxx> -#include <svx/sdr/attribute/sdrlinefillshadowtextattribute.hxx> +#include <sdr/attribute/sdrlinefillshadowtextattribute.hxx> // predefines diff --git a/svx/inc/sdr/primitive2d/sdrmeasureprimitive2d.hxx b/svx/inc/sdr/primitive2d/sdrmeasureprimitive2d.hxx index 2854750d8dbf..aa666a4ec051 100644 --- a/svx/inc/sdr/primitive2d/sdrmeasureprimitive2d.hxx +++ b/svx/inc/sdr/primitive2d/sdrmeasureprimitive2d.hxx @@ -21,7 +21,7 @@ #define INCLUDED_SVX_INC_SDR_PRIMITIVE2D_SDRMEASUREPRIMITIVE2D_HXX #include <drawinglayer/primitive2d/baseprimitive2d.hxx> -#include <svx/sdr/attribute/sdrlineshadowtextattribute.hxx> +#include <sdr/attribute/sdrlineshadowtextattribute.hxx> // predefines diff --git a/svx/inc/sdr/primitive2d/sdrole2primitive2d.hxx b/svx/inc/sdr/primitive2d/sdrole2primitive2d.hxx index aab22d94fac4..722244e463af 100644 --- a/svx/inc/sdr/primitive2d/sdrole2primitive2d.hxx +++ b/svx/inc/sdr/primitive2d/sdrole2primitive2d.hxx @@ -22,7 +22,7 @@ #include <drawinglayer/primitive2d/baseprimitive2d.hxx> #include <basegfx/matrix/b2dhommatrix.hxx> -#include <svx/sdr/attribute/sdrlinefillshadowtextattribute.hxx> +#include <sdr/attribute/sdrlinefillshadowtextattribute.hxx> // predefines diff --git a/svx/inc/sdr/primitive2d/sdrpathprimitive2d.hxx b/svx/inc/sdr/primitive2d/sdrpathprimitive2d.hxx index af0e44acf4dc..1373c5986cf4 100644 --- a/svx/inc/sdr/primitive2d/sdrpathprimitive2d.hxx +++ b/svx/inc/sdr/primitive2d/sdrpathprimitive2d.hxx @@ -22,7 +22,7 @@ #include <drawinglayer/primitive2d/baseprimitive2d.hxx> #include <basegfx/matrix/b2dhommatrix.hxx> -#include <svx/sdr/attribute/sdrlinefillshadowtextattribute.hxx> +#include <sdr/attribute/sdrlinefillshadowtextattribute.hxx> #include <basegfx/polygon/b2dpolypolygon.hxx> diff --git a/svx/inc/sdr/primitive2d/sdrrectangleprimitive2d.hxx b/svx/inc/sdr/primitive2d/sdrrectangleprimitive2d.hxx index ae7414c0b5c4..276bbcdb57c1 100644 --- a/svx/inc/sdr/primitive2d/sdrrectangleprimitive2d.hxx +++ b/svx/inc/sdr/primitive2d/sdrrectangleprimitive2d.hxx @@ -22,7 +22,7 @@ #include <drawinglayer/primitive2d/baseprimitive2d.hxx> #include <basegfx/matrix/b2dhommatrix.hxx> -#include <svx/sdr/attribute/sdrlinefillshadowtextattribute.hxx> +#include <sdr/attribute/sdrlinefillshadowtextattribute.hxx> // predefines diff --git a/svx/inc/sdr/primitive2d/sdrtextprimitive2d.hxx b/svx/inc/sdr/primitive2d/sdrtextprimitive2d.hxx index ea95065b17b3..1edd4377672a 100644 --- a/svx/inc/sdr/primitive2d/sdrtextprimitive2d.hxx +++ b/svx/inc/sdr/primitive2d/sdrtextprimitive2d.hxx @@ -26,7 +26,7 @@ #include <com/sun/star/drawing/XDrawPage.hpp> #include <editeng/outlobj.hxx> #include <tools/color.hxx> -#include <svx/sdr/attribute/sdrformtextattribute.hxx> +#include <sdr/attribute/sdrformtextattribute.hxx> #include <tools/weakbase.h> #include <svx/sdtaitm.hxx> diff --git a/svx/inc/sxcaitm.hxx b/svx/inc/sxcaitm.hxx new file mode 100644 index 000000000000..fc36d007604a --- /dev/null +++ b/svx/inc/sxcaitm.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 <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(long nAngle=0): 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/sxfiitm.hxx b/svx/inc/sxfiitm.hxx new file mode 100644 index 000000000000..b629acfebaf7 --- /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/sxmfsitm.hxx b/svx/inc/sxmfsitm.hxx new file mode 100644 index 000000000000..5a9049740481 --- /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: 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/sxmsitm.hxx b/svx/inc/sxmsitm.hxx index 914553c5c5e7..78dea13bf74e 100644 --- a/svx/inc/sxmsitm.hxx +++ b/svx/inc/sxmsitm.hxx @@ -20,7 +20,7 @@ #define INCLUDED_SVX_INC_SXMSITM_HXX #include <svx/svddef.hxx> -#include <svx/sxsiitm.hxx> +#include "sxsiitm.hxx" // Measure scale setting // We do not overwrite a measure scale (UIScale), If the model already has one set. diff --git a/svx/inc/sxreaitm.hxx b/svx/inc/sxreaitm.hxx index 409a6512a1cf..b7675a63c88c 100644 --- a/svx/inc/sxreaitm.hxx +++ b/svx/inc/sxreaitm.hxx @@ -21,7 +21,7 @@ #include <svx/svddef.hxx> -#include <svx/sxfiitm.hxx> +#include "sxfiitm.hxx" class SdrResizeXAllItem: public SdrFractionItem { public: diff --git a/svx/inc/sxreoitm.hxx b/svx/inc/sxreoitm.hxx index 0c58a3f618f5..b619f57f888a 100644 --- a/svx/inc/sxreoitm.hxx +++ b/svx/inc/sxreoitm.hxx @@ -21,7 +21,7 @@ #include <svx/svddef.hxx> -#include <svx/sxfiitm.hxx> +#include "sxfiitm.hxx" class SdrResizeXOneItem: public SdrFractionItem { public: diff --git a/svx/inc/sxsiitm.hxx b/svx/inc/sxsiitm.hxx new file mode 100644 index 000000000000..2a5d6586393f --- /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/textchain.hxx b/svx/inc/textchain.hxx new file mode 100644 index 000000000000..d5cae0be281c --- /dev/null +++ b/svx/inc/textchain.hxx @@ -0,0 +1,105 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +#pragma once + +#include <editeng/editdata.hxx> +#include <map> + +class ImpChainLinkProperties; +class SdrTextObj; +class SdrModel; + +namespace rtl { + class OUString; +} + +typedef OUString ChainLinkId; + +enum class CursorChainingEvent +{ + 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 + bool aNilChainingEvent; + CursorChainingEvent aCursorEvent; + ESelection aPreChainingSel; + ESelection aPostChainingSel; + 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 000000000000..8dfb65725a92 --- /dev/null +++ b/svx/inc/textchaincursor.hxx @@ -0,0 +1,61 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this 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 + +class SdrObjEditView; +class SdrTextObj; +class KeyEvent; +class SdrOutliner; +enum class CursorChainingEvent; +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 000000000000..c823663d631b --- /dev/null +++ b/svx/inc/textchainflow.hxx @@ -0,0 +1,104 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this 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: + // Cursor related + bool mbPossiblyCursorOut; + ESelection maOverflowPosSel; + ESelection maPostChainingSel; + + std::unique_ptr<OFlowChainedText> mpOverflChText; + std::unique_ptr<UFlowChainedText> mpUnderflChText; + + void impCheckForFlowEvents(SdrOutliner *, SdrOutliner *); + + TextChain *GetTextChain() const; + + virtual void impLeaveOnlyNonOverflowingText(SdrOutliner *); + void impMoveChainedTextToNextLink(SdrOutliner *); + + virtual void impSetFlowOutlinerParams(SdrOutliner *, SdrOutliner *); + +private: + bool mbOFisUFinduced; + + void impUpdateCursorInfo(); + + SdrTextObj *mpTargetLink; + SdrTextObj *mpNextLink; + + TextChain *mpTextChain; + + bool bUnderflow; + bool bOverflow; +}; + + +// NOTE: EditingTextChainFlow might be strongly coupled with behavior in SdrTextObj::onChainingEvent +class EditingTextChainFlow : public TextChainFlow +{ +public: + EditingTextChainFlow(SdrTextObj *); + virtual void CheckForFlowEvents(SdrOutliner *) override; + + //virtual void ExecuteOverflow(SdrOutliner *, SdrOutliner *) override; + +protected: + virtual void impLeaveOnlyNonOverflowingText(SdrOutliner *) override; + + virtual void impSetFlowOutlinerParams(SdrOutliner *, SdrOutliner *) override; + +private: + void impBroadcastCursorInfo() const; +}; + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/svx/inc/xftshtit.hxx b/svx/inc/xftshtit.hxx new file mode 100644 index 000000000000..e8f223e6b820 --- /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: */ |