summaryrefslogtreecommitdiff
path: root/svx
diff options
context:
space:
mode:
authorJulien Nabet <serval2412@yahoo.fr>2024-02-27 08:16:00 +0100
committerJulien Nabet <serval2412@yahoo.fr>2024-02-28 10:55:45 +0100
commit458f4c9b489d92947c4122e7c450f65f90aa4efe (patch)
treecec789c31df0f93c6afefce7d5fc2840ad7d47ae /svx
parenta7dd2e5a4712083cc5934e1d677e7dff86ceb7e6 (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.cxx27
-rw-r--r--svx/source/engine3d/svx3ditems.cxx6
-rw-r--r--svx/source/sdr/primitive3d/sdrattributecreator3d.cxx15
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