diff options
author | Julien Nabet <serval2412@yahoo.fr> | 2024-02-27 08:16:00 +0100 |
---|---|---|
committer | Julien Nabet <serval2412@yahoo.fr> | 2024-02-28 10:55:45 +0100 |
commit | 458f4c9b489d92947c4122e7c450f65f90aa4efe (patch) | |
tree | cec789c31df0f93c6afefce7d5fc2840ad7d47ae /svx | |
parent | a7dd2e5a4712083cc5934e1d677e7dff86ceb7e6 (diff) |
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 <serval2412@yahoo.fr>
Diffstat (limited to 'svx')
-rw-r--r-- | svx/source/engine3d/float3d.cxx | 27 | ||||
-rw-r--r-- | svx/source/engine3d/svx3ditems.cxx | 6 | ||||
-rw-r--r-- | svx/source/sdr/primitive3d/sdrattributecreator3d.cxx | 15 |
3 files changed, 24 insertions, 24 deletions
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 |