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[] =

Reply via email to