include/svx/svx3ditems.hxx | 4 +- include/svx/unoshprp.hxx | 4 +- svx/source/engine3d/float3d.cxx | 27 ++++++++++++------- svx/source/engine3d/svx3ditems.cxx | 6 ++-- svx/source/sdr/primitive3d/sdrattributecreator3d.cxx | 15 ++-------- xmloff/source/draw/sdpropls.cxx | 11 ++++--- 6 files changed, 34 insertions(+), 33 deletions(-)
New commits: commit 458f4c9b489d92947c4122e7c450f65f90aa4efe Author: Julien Nabet <serval2...@yahoo.fr> AuthorDate: Tue Feb 27 08:16:00 2024 +0100 Commit: Julien Nabet <serval2...@yahoo.fr> CommitDate: Wed Feb 28 10:55:45 2024 +0100 tdf#159874: Inspection of 3D object in Dev Tools crashes LO (take 2) To not trigger tdf#159911 (FILEOPEN: 3D object is displayed as black/white) Let's initialize Svx3DTextureKindItem to 2 which corresponds to COLOR in TextureKind2.idl (see https://opengrok.libreoffice.org/xref/core/offapi/com/sun/star/drawing/TextureKind2.idl?r=5687eba4) but now to avoid the crash, we must replace all uses of TextureKind by TextureKind2 Anyway, TextureKind has been deprecated since 2000 (see https://cgit.freedesktop.org/libreoffice/core/commit/?id=4f9e6d84feb36ab3072dafbab0ba4ae46d264f9b "#80594# added a new TextureKind2 enum because of missing value in TextureKind") + use css::drawing::TextureKind2_LUMINANCE + css::drawing::TextureKind2_COLOR instead of wrong numbers Change-Id: I969bd9ba1c6752111a6e6f5cd2c6c608568e43e5 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/163998 Tested-by: Jenkins Reviewed-by: Julien Nabet <serval2...@yahoo.fr> diff --git a/include/svx/svx3ditems.hxx b/include/svx/svx3ditems.hxx index 7cb5eae6e399..c749b7eab112 100644 --- a/include/svx/svx3ditems.hxx +++ b/include/svx/svx3ditems.hxx @@ -119,9 +119,9 @@ inline SfxUInt16Item makeSvx3DMaterialSpecularIntensityItem(sal_uInt16 nVal) { class UNLESS_MERGELIBS(SVXCORE_DLLPUBLIC) Svx3DTextureKindItem final : public SfxUInt16Item { public: - Svx3DTextureKindItem(sal_uInt16 nVal = 3); + Svx3DTextureKindItem(sal_uInt16 nVal = 2); - // use drawing::TextureKind + // use drawing::TextureKind2 SVX_DLLPRIVATE virtual bool QueryValue( css::uno::Any& rVal, sal_uInt8 nMemberId = 0 ) const override; SVX_DLLPRIVATE virtual bool PutValue( const css::uno::Any& rVal, sal_uInt8 nMemberId ) override; SVX_DLLPRIVATE virtual Svx3DTextureKindItem* Clone(SfxItemPool* pPool = nullptr) const override; diff --git a/include/svx/unoshprp.hxx b/include/svx/unoshprp.hxx index 53561015804b..0bf49b7a3e8c 100644 --- a/include/svx/unoshprp.hxx +++ b/include/svx/unoshprp.hxx @@ -55,7 +55,7 @@ #include <com/sun/star/drawing/ShadeMode.hpp> #include <com/sun/star/drawing/Position3D.hpp> #include <com/sun/star/drawing/NormalsKind.hpp> -#include <com/sun/star/drawing/TextureKind.hpp> +#include <com/sun/star/drawing/TextureKind2.hpp> #include <com/sun/star/drawing/TextureMode.hpp> #include <com/sun/star/drawing/TextureProjectionMode.hpp> #include <com/sun/star/drawing/PolyPolygonShape3D.hpp> @@ -529,7 +529,7 @@ { UNO_NAME_3D_NORMALS_KIND ,SDRATTR_3DOBJ_NORMALS_KIND , ::cppu::UnoType<css::drawing::NormalsKind>::get(), 0, 0}, \ { UNO_NAME_3D_SHADOW_3D ,SDRATTR_3DOBJ_SHADOW_3D , cppu::UnoType<bool>::get(), 0, 0}, \ { UNO_NAME_3D_TEXTURE_FILTER ,SDRATTR_3DOBJ_TEXTURE_FILTER , cppu::UnoType<bool>::get(), 0, 0}, \ - { UNO_NAME_3D_TEXTURE_KIND ,SDRATTR_3DOBJ_TEXTURE_KIND , ::cppu::UnoType<css::drawing::TextureKind>::get(), 0, 0}, \ + { UNO_NAME_3D_TEXTURE_KIND ,SDRATTR_3DOBJ_TEXTURE_KIND , ::cppu::UnoType<css::drawing::TextureKind2>::get(), 0, 0}, \ { UNO_NAME_3D_TEXTURE_MODE ,SDRATTR_3DOBJ_TEXTURE_MODE , ::cppu::UnoType<css::drawing::TextureMode>::get(), 0, 0}, \ { UNO_NAME_3D_TEXTURE_PROJ_X ,SDRATTR_3DOBJ_TEXTURE_PROJ_X , ::cppu::UnoType<css::drawing::TextureProjectionMode>::get(), 0, 0}, \ { UNO_NAME_3D_TEXTURE_PROJ_Y ,SDRATTR_3DOBJ_TEXTURE_PROJ_Y , ::cppu::UnoType<css::drawing::TextureProjectionMode>::get(), 0, 0}, \ diff --git a/svx/source/engine3d/float3d.cxx b/svx/source/engine3d/float3d.cxx index 035ca293faa6..aa27d5319a3c 100644 --- a/svx/source/engine3d/float3d.cxx +++ b/svx/source/engine3d/float3d.cxx @@ -50,6 +50,7 @@ #include <svtools/unitconv.hxx> #include <svx/float3d.hxx> +#include <com/sun/star/drawing/TextureKind2.hpp> #include <bitmaps.hlst> @@ -1349,12 +1350,13 @@ void Svx3DWin::Update( SfxItemSet const & rAttrs ) if( eState != SfxItemState::DONTCARE ) { sal_uInt16 nValue = rAttrs.Get(SDRATTR_3DOBJ_TEXTURE_KIND).GetValue(); + drawing::TextureKind2 objTextKind = static_cast<drawing::TextureKind2>(nValue); - if( ( !m_xBtnTexLuminance->get_active() && nValue == 1 ) || - ( !m_xBtnTexColor->get_active() && nValue == 3 ) ) + if( ( !m_xBtnTexLuminance->get_active() && objTextKind == css::drawing::TextureKind2_LUMINANCE ) || + ( !m_xBtnTexColor->get_active() && objTextKind == css::drawing::TextureKind2_COLOR ) ) { - m_xBtnTexLuminance->set_active( nValue == 1 ); - m_xBtnTexColor->set_active( nValue == 3 ); + m_xBtnTexLuminance->set_active( objTextKind == css::drawing::TextureKind2_LUMINANCE ); + m_xBtnTexColor->set_active( objTextKind == css::drawing::TextureKind2_COLOR ); bUpdate = true; } } @@ -2044,14 +2046,21 @@ void Svx3DWin::GetAttr( SfxItemSet& rAttrs ) // Textures // Art - nValue = 99; + drawing::TextureKind2 objTextKind = css::drawing::TextureKind2_LUMINANCE; + bool bSet = false; if( m_xBtnTexLuminance->get_active() ) - nValue = 1; + { + objTextKind = css::drawing::TextureKind2_LUMINANCE; + bSet = true; + } else if( m_xBtnTexColor->get_active() ) - nValue = 3; + { + objTextKind = css::drawing::TextureKind2_COLOR; + bSet = true; + } - if( nValue == 1 || nValue == 3 ) - rAttrs.Put(Svx3DTextureKindItem(nValue)); + if(bSet) + rAttrs.Put(Svx3DTextureKindItem(static_cast<sal_uInt16>(objTextKind))); else rAttrs.InvalidateItem(SDRATTR_3DOBJ_TEXTURE_KIND); diff --git a/svx/source/engine3d/svx3ditems.cxx b/svx/source/engine3d/svx3ditems.cxx index 68f31b1203e0..1bfa4f559111 100644 --- a/svx/source/engine3d/svx3ditems.cxx +++ b/svx/source/engine3d/svx3ditems.cxx @@ -20,7 +20,7 @@ #include <svx/svx3ditems.hxx> #include <com/sun/star/drawing/NormalsKind.hpp> #include <com/sun/star/drawing/TextureProjectionMode.hpp> -#include <com/sun/star/drawing/TextureKind.hpp> +#include <com/sun/star/drawing/TextureKind2.hpp> #include <com/sun/star/drawing/TextureMode.hpp> #include <com/sun/star/drawing/ProjectionMode.hpp> #include <com/sun/star/drawing/ShadeMode.hpp> @@ -191,13 +191,13 @@ Svx3DTextureProjectionYItem* Svx3DTextureProjectionYItem::Clone(SfxItemPool* /*p // Svx3DTextureKindItem: use drawing::TextureKind bool Svx3DTextureKindItem::QueryValue(uno::Any& rVal, sal_uInt8 /*nMemberId*/) const { - rVal <<= static_cast<drawing::TextureKind>(GetValue()); + rVal <<= static_cast<drawing::TextureKind2>(GetValue()); return true; } bool Svx3DTextureKindItem::PutValue(const uno::Any& rVal, sal_uInt8 /*nMemberId*/) { - drawing::TextureKind eVar; + drawing::TextureKind2 eVar; if (!(rVal >>= eVar)) return false; SetValue(static_cast<sal_Int16>(eVar)); diff --git a/svx/source/sdr/primitive3d/sdrattributecreator3d.cxx b/svx/source/sdr/primitive3d/sdrattributecreator3d.cxx index 6bf8f8c6e2e0..cb9f3badbfbe 100644 --- a/svx/source/sdr/primitive3d/sdrattributecreator3d.cxx +++ b/svx/source/sdr/primitive3d/sdrattributecreator3d.cxx @@ -85,18 +85,9 @@ namespace drawinglayer::primitive2d const bool bTextureFilter(rSet.Get(SDRATTR_3DOBJ_TEXTURE_FILTER).GetValue()); // get texture kind - // TextureKind: 1 == Base3DTextureLuminance, 2 == Base3DTextureIntensity, 3 == Base3DTextureColor - css::drawing::TextureKind2 aTextureKind(css::drawing::TextureKind2_LUMINANCE); - const sal_uInt16 nTextureKind(rSet.Get(SDRATTR_3DOBJ_TEXTURE_KIND).GetValue()); - - if(2 == nTextureKind) - { - aTextureKind = css::drawing::TextureKind2_INTENSITY; - } - else if(3 == nTextureKind) - { - aTextureKind = css::drawing::TextureKind2_COLOR; - } + // TextureKind: 0 == Base3DTextureLuminance, 1 == Base3DTextureIntensity, 2 == Base3DTextureColor + // see offapi/com/sun/star/drawing/TextureKind2.idl + css::drawing::TextureKind2 aTextureKind = static_cast<css::drawing::TextureKind2>(rSet.Get(SDRATTR_3DOBJ_TEXTURE_KIND).GetValue()); // get texture mode // TextureMode: 1 == Base3DTextureReplace, 2 == Base3DTextureModulate, 3 == Base3DTextureBlend diff --git a/xmloff/source/draw/sdpropls.cxx b/xmloff/source/draw/sdpropls.cxx index 50ccd70a49b4..e4d40003527f 100644 --- a/xmloff/source/draw/sdpropls.cxx +++ b/xmloff/source/draw/sdpropls.cxx @@ -52,7 +52,7 @@ #include <xmloff/xmlnamespace.hxx> #include <com/sun/star/drawing/NormalsKind.hpp> #include <com/sun/star/drawing/TextureProjectionMode.hpp> -#include <com/sun/star/drawing/TextureKind.hpp> +#include <com/sun/star/drawing/TextureKind2.hpp> #include <com/sun/star/drawing/TextureMode.hpp> #include <com/sun/star/beans/XPropertySet.hpp> #include <xmloff/txtprmap.hxx> @@ -549,11 +549,12 @@ SvXMLEnumMapEntry<drawing::TextureProjectionMode> const aXML_TexGenerationY_Enu { XML_TOKEN_INVALID, drawing::TextureProjectionMode(0) } }; -SvXMLEnumMapEntry<drawing::TextureKind> const aXML_TexKind_EnumMap[] = +SvXMLEnumMapEntry<drawing::TextureKind2> const aXML_TexKind_EnumMap[] = { - { XML_LUMINANCE, drawing::TextureKind_LUMINANCE }, - { XML_COLOR, drawing::TextureKind_COLOR }, - { XML_TOKEN_INVALID, drawing::TextureKind(0) } + { XML_LUMINANCE, drawing::TextureKind2_LUMINANCE }, + { XML_INTENSITY, drawing::TextureKind2_INTENSITY }, + { XML_COLOR, drawing::TextureKind2_COLOR }, + { XML_TOKEN_INVALID, drawing::TextureKind2(0) } }; SvXMLEnumMapEntry<drawing::TextureMode> const aXML_TexMode_EnumMap[] =