[Libreoffice-commits] core.git: avmedia/source configure.ac download.lst external/libgltf include/vcl RepositoryExternal.mk vcl/source

Zolnai Tamás tamas.zolnai at collabora.com
Fri Aug 29 03:01:56 PDT 2014


 RepositoryExternal.mk                                |    8 ----
 avmedia/source/opengl/oglframegrabber.hxx            |    4 --
 avmedia/source/opengl/oglplayer.cxx                  |   16 +++++++-
 avmedia/source/opengl/oglplayer.hxx                  |    6 +--
 avmedia/source/opengl/oglwindow.cxx                  |   36 +++++++++---------
 avmedia/source/opengl/oglwindow.hxx                  |    6 ---
 configure.ac                                         |    2 -
 download.lst                                         |    4 +-
 external/libgltf/UnpackedTarball_libgltf.mk          |    2 -
 external/libgltf/patches/append_shader_version.patch |   37 -------------------
 external/libgltf/patches/missing_include.patch       |   11 -----
 include/vcl/opengl/OpenGLContext.hxx                 |    2 +
 vcl/source/opengl/OpenGLContext.cxx                  |    6 +++
 13 files changed, 47 insertions(+), 93 deletions(-)

New commits:
commit a60cc580212e2770c3aef7decfa09b64d4a3e52f
Author: Zolnai Tamás <tamas.zolnai at collabora.com>
Date:   Fri Aug 29 11:55:23 2014 +0200

    Upgrade libgltf to 0.0.1
    
    News in this version:
    - Solve some limitations of walkthrough mode (fdo#81425)
    - Multisampling (better rendering quality, mainly at the edges)
    - Better error handling (no crash in case of invalid input file)
    
    Change-Id: I46fdf56b00476614487fbcc04178e43e33a01794
    Reviewed-on: https://gerrit.libreoffice.org/11179
    Reviewed-by: Zolnai Tamás <tamas.zolnai at collabora.com>
    Tested-by: Zolnai Tamás <tamas.zolnai at collabora.com>

diff --git a/RepositoryExternal.mk b/RepositoryExternal.mk
index 05e1e05..1350449 100644
--- a/RepositoryExternal.mk
+++ b/RepositoryExternal.mk
@@ -3352,11 +3352,6 @@ $(call gb_LinkTarget_use_external_project,$(1),libgltf)
 
 endef
 
-define gb_ExternalProject__use_libgltf
-$(call gb_ExternalProject_use_external_project,$(1),libgltf)
-
-endef
-
 else # SYSTEM_LIBGLTF
 
 define gb_LinkTarget__use_libgltf
@@ -3365,9 +3360,6 @@ $(call gb_LinkTarget_set_include,$(1),\
 	$(LIBGLTF_CFLAGS) \
 )
 $(call gb_LinkTarget_add_libs,$(1),$(LIBGLTF_LIBS))
-$(call gb_LinkTarget_add_defs,$(1),\
-	-DSYSTEM_LIBGLTF \
-)
 
 endef
 
diff --git a/avmedia/source/opengl/oglframegrabber.hxx b/avmedia/source/opengl/oglframegrabber.hxx
index 0d38224..5beb15b 100644
--- a/avmedia/source/opengl/oglframegrabber.hxx
+++ b/avmedia/source/opengl/oglframegrabber.hxx
@@ -14,11 +14,7 @@
 #include <com/sun/star/lang/XServiceInfo.hpp>
 #include <com/sun/star/media/XFrameGrabber.hpp>
 
-#ifdef SYSTEM_LIBGLTF
-#include <libgltf/libgltf.h>
-#else
 #include <libgltf.h>
-#endif
 
 namespace avmedia { namespace ogl {
 
diff --git a/avmedia/source/opengl/oglplayer.cxx b/avmedia/source/opengl/oglplayer.cxx
index ff766e3..0b7e242 100644
--- a/avmedia/source/opengl/oglplayer.cxx
+++ b/avmedia/source/opengl/oglplayer.cxx
@@ -262,6 +262,12 @@ uno::Reference< media::XPlayerWindow > SAL_CALL OGLPlayer::createPlayerWindow( c
         return uno::Reference< media::XPlayerWindow >();
     }
 
+    if( !m_aContext.supportMultiSampling() )
+    {
+        SAL_WARN("avmedia.opengl", "Context does not support multisampling!");
+        return uno::Reference< media::XPlayerWindow >();
+    }
+
     if( !lcl_CheckOpenGLRequirements() )
     {
         SAL_WARN("avmedia.opengl", "Your platform does not have the minimal OpenGL requiremenets!");
@@ -280,7 +286,7 @@ uno::Reference< media::XPlayerWindow > SAL_CALL OGLPlayer::createPlayerWindow( c
     releaseInputFiles();
     if( nRet != 0 )
     {
-        SAL_WARN("avmedia.opengl", "Error occured while parsing *.json file! Error code: " << nRet);
+        SAL_WARN("avmedia.opengl", "Error occured while setting up the scene! Error code: " << nRet);
         return uno::Reference< media::XPlayerWindow >();
     }
     // The background color is white by default, but we need to separate the
@@ -302,6 +308,12 @@ uno::Reference< media::XFrameGrabber > SAL_CALL OGLPlayer::createFrameGrabber()
         return uno::Reference< media::XFrameGrabber >();
     }
 
+    if( !m_aContext.supportMultiSampling() )
+    {
+        SAL_WARN("avmedia.opengl", "Context does not support multisampling!");
+        return uno::Reference< media::XFrameGrabber >();
+    }
+
     if( !lcl_CheckOpenGLRequirements() )
     {
         SAL_WARN("avmedia.opengl", "Your platform does not have the minimal OpenGL requiremenets!");
@@ -317,7 +329,7 @@ uno::Reference< media::XFrameGrabber > SAL_CALL OGLPlayer::createFrameGrabber()
     releaseInputFiles();
     if( nRet != 0 )
     {
-        SAL_WARN("avmedia.opengl", "Error occured while parsing *.json file! Error code: " << nRet);
+        SAL_WARN("avmedia.opengl", "Error occured while setting up the scene! Error code: " << nRet);
         return uno::Reference< media::XFrameGrabber >();
     }
     glClearColor(0.5f, 0.5f, 0.5f, 0.5f);
diff --git a/avmedia/source/opengl/oglplayer.hxx b/avmedia/source/opengl/oglplayer.hxx
index 75e2964..e7a4ecc 100644
--- a/avmedia/source/opengl/oglplayer.hxx
+++ b/avmedia/source/opengl/oglplayer.hxx
@@ -14,11 +14,9 @@
 #include <cppuhelper/basemutex.hxx>
 #include <com/sun/star/lang/XServiceInfo.hpp>
 #include <com/sun/star/media/XPlayer.hpp>
-#ifdef SYSTEM_LIBGLTF
-#include <libgltf/libgltf.h>
-#else
+
 #include <libgltf.h>
-#endif
+
 #include <vcl/opengl/OpenGLContext.hxx>
 #include <vcl/timer.hxx>
 
diff --git a/avmedia/source/opengl/oglwindow.cxx b/avmedia/source/opengl/oglwindow.cxx
index 31ee383..1cbc86c 100644
--- a/avmedia/source/opengl/oglwindow.cxx
+++ b/avmedia/source/opengl/oglwindow.cxx
@@ -22,7 +22,6 @@ OGLWindow::OGLWindow( glTFHandle& rHandle, OpenGLContext& rContext, Window& rEve
     , m_bVisible ( false )
     , m_aLastMousePos(Point(0,0))
     , m_bIsOrbitMode( false )
-    , m_fCameraDistance(0.0)
 {
 }
 
@@ -254,15 +253,15 @@ IMPL_LINK(OGLWindow, CameraHandler, VclWindowEvent*, pEvent)
                     glm::vec3 vMove = vView-vEye;
                     vMove = glm::normalize(vMove);
                     vMove *= 25.0f;
-                    glm::vec3 vStrafe = glm::cross(vView-vEye, vUp);
+                    glm::vec3 vStrafe = glm::cross(vMove, vUp);
                     vStrafe = glm::normalize(vStrafe);
                     vStrafe *= 25.0f;
-                    glm::vec3 vMup = glm::cross(vView-vEye,glm::vec3(1.0f,0.0f,0.0f) );
-                    vMup = glm::normalize(vMup);
-                    vMup *= 25.0f;
+                    glm::vec3 vMup = vUp * 25.0f;
 
                     if( !m_bIsOrbitMode )
                     {
+                        if(nCode == KEY_E)vMoveBy += vMup*(0.0005f*fModelSize);
+                        if(nCode == KEY_Q)vMoveBy -= vMup*(0.0005f*fModelSize);
                         if(nCode == KEY_W)vMoveBy += vMove*(0.0005f*fModelSize);
                         if(nCode == KEY_S)vMoveBy -= vMove*(0.0005f*fModelSize);
                         if(nCode == KEY_A)vMoveBy -= vStrafe*(0.0005f*fModelSize);
@@ -270,15 +269,24 @@ IMPL_LINK(OGLWindow, CameraHandler, VclWindowEvent*, pEvent)
                     }
                     else
                     {
-                        if(nCode == KEY_E)vMoveBy += vMove*(0.0005f*fModelSize);
-                        if(nCode == KEY_Q)vMoveBy -= vMove*(0.0005f*fModelSize);
+                        bool bZoomIn = false;
+                        bool bZoomOut = false;
+                        if(nCode == KEY_E)
+                        {
+                            vMoveBy += vMove*(0.0005f*fModelSize);
+                            bZoomIn = true;
+                        }
+                        if(nCode == KEY_Q)
+                        {
+                            vMoveBy -= vMove*(0.0005f*fModelSize);
+                            bZoomOut = true;
+                        }
 
                         // Limit zooming in orbit mode
-                        m_fCameraDistance += vMoveBy.z;
-                        if ((m_fCameraDistance < 0.5 * fModelSize && vMoveBy.z < 0.0 ) ||
-                            (m_fCameraDistance > 2 * fModelSize && vMoveBy.z > 0.0 ))
+                        float fCameraDistFromModelGlobe = glm::length(vEye + vMoveBy - vView) - fModelSize / 2.0f;
+                        if ((fCameraDistFromModelGlobe < 0.5 * fModelSize && bZoomIn ) ||
+                            (fCameraDistFromModelGlobe > 2 * fModelSize && bZoomOut ))
                         {
-                            m_fCameraDistance -= vMoveBy.z;
                             vMoveBy = glm::vec3(0.0);
                         }
                     }
@@ -320,12 +328,6 @@ IMPL_LINK(OGLWindow, CameraHandler, VclWindowEvent*, pEvent)
                 {
                     gltf_orbit_mode_start(&m_rHandle);
                     m_bIsOrbitMode = true;
-                    // Set default camera distance
-                    glm::vec3 vEye;
-                    glm::vec3 vView;
-                    glm::vec3 vUp;
-                    gltf_get_camera_pos(&m_rHandle, &vEye,&vView,&vUp);
-                    m_fCameraDistance = vEye.z - gltf_get_model_center_pos(&m_rHandle)->z - (gltf_get_model_size(&m_rHandle)/2.0);
                 }
             }
             else if(nCode == KEY_F)
diff --git a/avmedia/source/opengl/oglwindow.hxx b/avmedia/source/opengl/oglwindow.hxx
index 0802bb3..5078ebe 100644
--- a/avmedia/source/opengl/oglwindow.hxx
+++ b/avmedia/source/opengl/oglwindow.hxx
@@ -17,11 +17,8 @@
 #include <com/sun/star/media/XPlayerWindow.hpp>
 #include <com/sun/star/media/ZoomLevel.hpp>
 
-#ifdef SYSTEM_LIBGLTF
-#include <libgltf/libgltf.h>
-#else
 #include <libgltf.h>
-#endif
+
 #include <vcl/opengl/OpenGLContext.hxx>
 #include <vcl/syschild.hxx>
 
@@ -76,7 +73,6 @@ private:
     bool m_bVisible;
     Point m_aLastMousePos;
     bool m_bIsOrbitMode;
-    double m_fCameraDistance;
 };
 
 } // namespace ogl
diff --git a/configure.ac b/configure.ac
index bceb70f..93a7598 100644
--- a/configure.ac
+++ b/configure.ac
@@ -10591,7 +10591,7 @@ if test "x$enable_gltf" != "xno" -a $_os != iOS -a $_os != Android; then
     AC_DEFINE(HAVE_FEATURE_GLTF,1)
     if test "$with_system_libgltf" = "yes"; then
 	SYSTEM_LIBGLTF=TRUE
-	PKG_CHECK_MODULES( LIBGLTF, libgltf-0.0 )
+	PKG_CHECK_MODULES( LIBGLTF, [libgltf-0.0 >= 0.0.1] )
     else
     	BUILD_TYPE="$BUILD_TYPE LIBGLTF"
     fi
diff --git a/download.lst b/download.lst
index 5c7b88f..af3a23c 100644
--- a/download.lst
+++ b/download.lst
@@ -89,8 +89,8 @@ export LIBATOMIC_OPS_TARBALL := libatomic_ops-7_2d.zip
 export LIBEOT_MD5SUM := aa24f5dd2a2992f4a116aa72af817548
 export LIBEOT_TARBALL := libeot-0.01.tar.bz2
 export LIBEXTTEXTCAT_TARBALL := 10d61fbaa6a06348823651b1bd7940fe-libexttextcat-3.4.4.tar.bz2
-export LIBGLTF_MD5SUM := ca5436e916bfe70694adfe2607782786
-export LIBGLTF_TARBALL := libgltf-0.0.0.tar.bz2
+export LIBGLTF_MD5SUM := 03821c9c827e647fb5fedb12496e0067
+export LIBGLTF_TARBALL := libgltf-0.0.1.tar.bz2
 export LIBLANGTAG_TARBALL := 36271d3fa0d9dec1632029b6d7aac925-liblangtag-0.5.1.tar.bz2
 export LIBXMLSEC_TARBALL := 1f24ab1d39f4a51faf22244c94a6203f-xmlsec1-1.2.14.tar.gz
 export LIBXML_TARBALL := 9c0cfef285d5c4a5c80d00904ddab380-libxml2-2.9.1.tar.gz
diff --git a/external/libgltf/UnpackedTarball_libgltf.mk b/external/libgltf/UnpackedTarball_libgltf.mk
index 34214a2..176c1d1 100644
--- a/external/libgltf/UnpackedTarball_libgltf.mk
+++ b/external/libgltf/UnpackedTarball_libgltf.mk
@@ -16,8 +16,6 @@ $(eval $(call gb_UnpackedTarball_set_patchflags,libgltf,--binary))
 $(eval $(call gb_UnpackedTarball_set_patchlevel,libgltf,1))
 
 $(eval $(call gb_UnpackedTarball_add_patches,libgltf,\
-	external/libgltf/patches/missing_include.patch \
-	external/libgltf/patches/append_shader_version.patch \
 ))
 
 # vim: set noet sw=4 ts=4:
diff --git a/external/libgltf/patches/append_shader_version.patch b/external/libgltf/patches/append_shader_version.patch
deleted file mode 100644
index 27f0cc6..0000000
--- a/external/libgltf/patches/append_shader_version.patch
+++ /dev/null
@@ -1,37 +0,0 @@
-diff -ur libgltf.org/src/Shaders.cpp libgltf/src/Shaders.cpp
---- libgltf.org/src/Shaders.cpp	2014-08-18 09:19:48.323955939 +0200
-+++ libgltf/src/Shaders.cpp	2014-08-18 09:20:46.711953465 +0200
-@@ -11,6 +11,7 @@
- 
- #include <GL/glew.h>
- #include <cstdio>
-+#include <cstring>
- 
- namespace libgltf
- {
-@@ -166,7 +167,24 @@
-                                   unsigned int shaderId)
- {
-     GLint iGLSize = iSize;
--    glShaderSource(shaderId, 1, &pShader, &iGLSize);
-+    if( strstr(pShader,"#version") == 0 )
-+    {
-+        const GLchar* aSources[] = {
-+            "#version 130\n",
-+            pShader,
-+        };
-+
-+        const GLint aSizes[] = {
-+            strlen("#version 130\n"),
-+            iGLSize,
-+        };
-+
-+        glShaderSource(shaderId, 2, &aSources[0], &aSizes[0]);
-+    }
-+    else
-+    {
-+        glShaderSource(shaderId, 1, &pShader, &iGLSize);
-+    }
-     glCompileShader(shaderId);
-     int iStatus = 0;
-     glGetShaderiv(shaderId, GL_COMPILE_STATUS, &iStatus);
diff --git a/external/libgltf/patches/missing_include.patch b/external/libgltf/patches/missing_include.patch
deleted file mode 100644
index 8b05224..0000000
--- a/external/libgltf/patches/missing_include.patch
+++ /dev/null
@@ -1,11 +0,0 @@
-diff -ur libgltf.org/src/Shaders.cpp libgltf/src/Shaders.cpp
---- libgltf.org/src/Shaders.cpp	2014-08-05 11:40:30.387537876 +0200
-+++ libgltf/src/Shaders.cpp	2014-08-05 11:41:13.887536123 +0200
-@@ -10,6 +10,7 @@
- #include "Shaders.h"
- 
- #include <GL/glew.h>
-+#include <cstdio>
- 
- namespace libgltf
- {
diff --git a/include/vcl/opengl/OpenGLContext.hxx b/include/vcl/opengl/OpenGLContext.hxx
index 8faaf7b..699fb29 100644
--- a/include/vcl/opengl/OpenGLContext.hxx
+++ b/include/vcl/opengl/OpenGLContext.hxx
@@ -172,6 +172,8 @@ public:
         return mbInitialized;
     }
 
+    bool supportMultiSampling() const;
+
     static SystemWindowData generateWinData(Window* pParent);
 
 private:
diff --git a/vcl/source/opengl/OpenGLContext.cxx b/vcl/source/opengl/OpenGLContext.cxx
index 707b0d8..25db6d5 100644
--- a/vcl/source/opengl/OpenGLContext.cxx
+++ b/vcl/source/opengl/OpenGLContext.cxx
@@ -906,4 +906,10 @@ const SystemChildWindow* OpenGLContext::getChildWindow() const
     return m_pChildWindow;
 }
 
+bool OpenGLContext::supportMultiSampling() const
+{
+    return m_aGLWin.bMultiSampleSupported;
+}
+
+
 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */


More information about the Libreoffice-commits mailing list