diff -Nru paraview-5.0.0+dfsg1/Applications/ParaView/CMakeLists.txt paraview-5.0.1+dfsg1/Applications/ParaView/CMakeLists.txt
--- paraview-5.0.0+dfsg1/Applications/ParaView/CMakeLists.txt 2016-01-08 20:21:35.000000000 +0000
+++ paraview-5.0.1+dfsg1/Applications/ParaView/CMakeLists.txt 2016-03-28 15:07:03.000000000 +0000
@@ -73,11 +73,15 @@
# ParaView itself needs vtkPVStaticPluginsInit as well.
set(SUPPORT_STATIC_PLUGINS TRUE)
+set(title "ParaView ${PARAVIEW_VERSION_FULL} ${PARAVIEW_BUILD_ARCHITECTURE}-bit")
+if("${VTK_RENDERING_BACKEND}" STREQUAL "OpenGL")
+ set(title "${title} (Legacy Rendering Backend)")
+endif()
#------------------------------------------------------------------------------
# Build the client
build_paraview_client(paraview
APPLICATION_NAME "ParaView"
- TITLE "ParaView ${PARAVIEW_VERSION_FULL} ${PARAVIEW_BUILD_ARCHITECTURE}-bit"
+ TITLE ${title}
ORGANIZATION "ParaView"
VERSION_MAJOR ${PARAVIEW_VERSION_MAJOR}
VERSION_MINOR ${PARAVIEW_VERSION_MINOR}
diff -Nru paraview-5.0.0+dfsg1/Applications/ParaView/Testing/XML/CameraLink.xml paraview-5.0.1+dfsg1/Applications/ParaView/Testing/XML/CameraLink.xml
--- paraview-5.0.0+dfsg1/Applications/ParaView/Testing/XML/CameraLink.xml 2016-01-08 20:21:35.000000000 +0000
+++ paraview-5.0.1+dfsg1/Applications/ParaView/Testing/XML/CameraLink.xml 2016-03-28 15:06:22.000000000 +0000
@@ -1,26 +1,63 @@
-
+
+
+
+
+
+
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
diff -Nru paraview-5.0.0+dfsg1/Applications/ParaView/Testing/XML/CMakeLists.txt paraview-5.0.1+dfsg1/Applications/ParaView/Testing/XML/CMakeLists.txt
--- paraview-5.0.0+dfsg1/Applications/ParaView/Testing/XML/CMakeLists.txt 2016-01-08 20:21:35.000000000 +0000
+++ paraview-5.0.1+dfsg1/Applications/ParaView/Testing/XML/CMakeLists.txt 2016-03-28 15:07:03.000000000 +0000
@@ -81,6 +81,7 @@
SET (TESTS_WITH_INLINE_COMPARES
${CMAKE_CURRENT_SOURCE_DIR}/AxesGrid.xml
+ ${CMAKE_CURRENT_SOURCE_DIR}/CameraLink.xml
${CMAKE_CURRENT_SOURCE_DIR}/Contour.xml
${CMAKE_CURRENT_SOURCE_DIR}/DisconnectAndSaveAnimation.xml
${CMAKE_CURRENT_SOURCE_DIR}/Ensemble.xml
@@ -200,7 +201,6 @@
${CMAKE_CURRENT_SOURCE_DIR}/3DWidgetInCustomFilter.xml
${CMAKE_CURRENT_SOURCE_DIR}/CalcParens.xml
${CMAKE_CURRENT_SOURCE_DIR}/Calculator.xml
- ${CMAKE_CURRENT_SOURCE_DIR}/CameraLink.xml
${CMAKE_CURRENT_SOURCE_DIR}/ChangingTimestepsInStateFiles.xml
${CMAKE_CURRENT_SOURCE_DIR}/ChartAxisRangeAndLabels.xml
${CMAKE_CURRENT_SOURCE_DIR}/CheckableHeader.xml
diff -Nru paraview-5.0.0+dfsg1/Catalyst/Editions/Extras/ParaViewCore/VTKExtensions/Rendering/module.cmake paraview-5.0.1+dfsg1/Catalyst/Editions/Extras/ParaViewCore/VTKExtensions/Rendering/module.cmake
--- paraview-5.0.0+dfsg1/Catalyst/Editions/Extras/ParaViewCore/VTKExtensions/Rendering/module.cmake 2016-01-08 20:21:35.000000000 +0000
+++ paraview-5.0.1+dfsg1/Catalyst/Editions/Extras/ParaViewCore/VTKExtensions/Rendering/module.cmake 2016-03-28 15:07:03.000000000 +0000
@@ -35,7 +35,8 @@
vtkRenderingAnnotation
vtkRenderingCore
vtkRenderingParallel
- vtkicet)
+ vtkicet
+ vtklz4)
endif ()
vtk_module(vtkPVVTKExtensionsRendering
diff -Nru paraview-5.0.0+dfsg1/Catalyst/Editions/HostTools/manifest.json paraview-5.0.1+dfsg1/Catalyst/Editions/HostTools/manifest.json
--- paraview-5.0.0+dfsg1/Catalyst/Editions/HostTools/manifest.json 1970-01-01 00:00:00.000000000 +0000
+++ paraview-5.0.1+dfsg1/Catalyst/Editions/HostTools/manifest.json 2016-03-28 15:06:22.000000000 +0000
@@ -0,0 +1,107 @@
+{
+ "edition": "HostTools",
+ "cmake":{
+ "cache":[
+ { "name":"CMAKE_BUILD_TYPE",
+ "type":"STRING",
+ "value":"Release"
+ },
+ { "name":"BUILD_TESTING",
+ "type":"BOOL",
+ "value":"OFF"
+ },
+ { "name":"PARAVIEW_USE_MPI",
+ "type":"BOOL",
+ "value":"OFF"
+ },
+ { "name":"PARAVIEW_BUILD_QT_GUI",
+ "type":"BOOL",
+ "value":"OFF"
+ },
+ { "name":"PARAVIEW_ENABLE_PYTHON",
+ "type":"BOOL",
+ "value":"OFF"
+ },
+ { "name":"VTK_BUILD_ALL_MODULES",
+ "type":"BOOL",
+ "value":"ON"
+ },
+ { "name":"PARAVIEW_ENABLE_COMMANDLINE_TOOLS",
+ "type":"BOOL",
+ "value":"OFF"
+ },
+ { "name":"Module_vtkUtilitiesWrapClientServer",
+ "type":"BOOL",
+ "value":"ON"
+ },
+ { "name":"Module_vtkWrappingPythonCore",
+ "type":"BOOL",
+ "value":"ON"
+ }
+ ]
+ },
+ "modules":[
+ {
+ "path":"Utilities",
+ "exclude":[
+ { "path":"WrapClientServer" },
+ { "path":"VisItBridge" },
+ { "path":"ColorSeriesToXML" },
+ { "path":"LegacyColorMapXMLToJSON" }
+ ]
+ },
+ { "name":"vtkCommonCore",
+ "path":"VTK/Common/Core",
+ "exclude":[ { "path":"Testing" } ]
+ },
+ { "name":"vtkUtilitiesKWSys",
+ "path":"VTK/Utilities/KWSys"
+ },
+ {
+ "name":"vtkkwiml",
+ "path":"VTK/Utilities/KWIML"
+ },
+ { "name":"vtkUtilitiesHashSource",
+ "path":"VTK/Utilities/HashSource"
+ },
+ { "name":"vtkUtilitiesWrapClientServer",
+ "path":"Utilities/WrapClientServer"
+ },
+ { "name":"vtkWrappingTools",
+ "path":"VTK/Wrapping/Tools"
+ },
+ { "name":"vtkprotobuf",
+ "path":"ThirdParty/protobuf"
+ },
+ { "path":"Wrapping" },
+ { "path":"VTK/Copyright.txt" },
+ { "path":"License_v1.2.txt" },
+ { "path":"CMakeLists.txt" },
+ { "path":"CTestConfig.cmake" },
+ { "path":"CMake" },
+ { "path":"VTK/CMake" },
+ { "path":"VTK/CMakeLists.txt",
+ "patches": [
+ { "path": "VTK-CMake.patch" }
+ ]
+ },
+ { "path":"vtkPVConfig.h.in" },
+ { "path":"Applications",
+ "exclude":[
+ { "path":"ParaView" }
+ ]
+ },
+ { "path":"ParaViewConfigVersion.cmake.in" },
+ { "path":"ParaViewConfig.cmake.in" },
+ { "path":"ParaViewCore/README.txt" },
+ { "path":"VTK/vtkLogo.ico" },
+ { "path":"VTK/README.md" },
+ { "path":"VTK/ThirdParty/utf8" },
+ { "name": "vtkEncodeString",
+ "path": "VTK/Utilities/EncodeString"
+ },
+ { "name": "vtkParseOGLExt",
+ "path": "VTK/Utilities/ParseOGLExt"
+ }
+ ]
+}
diff -Nru paraview-5.0.0+dfsg1/Catalyst/Editions/HostTools/Testing/CMakeLists.txt paraview-5.0.1+dfsg1/Catalyst/Editions/HostTools/Testing/CMakeLists.txt
--- paraview-5.0.0+dfsg1/Catalyst/Editions/HostTools/Testing/CMakeLists.txt 1970-01-01 00:00:00.000000000 +0000
+++ paraview-5.0.1+dfsg1/Catalyst/Editions/HostTools/Testing/CMakeLists.txt 2016-03-28 15:06:22.000000000 +0000
@@ -0,0 +1,7 @@
+cmake_minimum_required(VERSION 2.8)
+include(CTest)
+enable_testing()
+
+find_package(ParaViewCompileTools REQUIRED)
+add_test(NAME WrapClientServer
+ COMMAND vtkWrapClientServer --version)
diff -Nru paraview-5.0.0+dfsg1/Catalyst/Editions/HostTools/VTK-CMake.patch paraview-5.0.1+dfsg1/Catalyst/Editions/HostTools/VTK-CMake.patch
--- paraview-5.0.0+dfsg1/Catalyst/Editions/HostTools/VTK-CMake.patch 1970-01-01 00:00:00.000000000 +0000
+++ paraview-5.0.1+dfsg1/Catalyst/Editions/HostTools/VTK-CMake.patch 2016-03-28 15:06:22.000000000 +0000
@@ -0,0 +1,13 @@
+diff --git a/VTK/CMakeLists.txt b/VTK/CMakeLists.txt
+index d8a5713..d66bdfe 100644
+--- a/VTK/CMakeLists.txt
++++ b/VTK/CMakeLists.txt
+@@ -268,7 +268,7 @@ endif()
+
+ #-----------------------------------------------------------------------------
+ # Add the Remote Subdirectory
+-add_subdirectory(Remote)
++# add_subdirectory(Remote)
+
+ #-----------------------------------------------------------------------------
+ # Do we try to use system libraries by default?
diff -Nru paraview-5.0.0+dfsg1/Catalyst/Editions/Rendering-Base/manifest.json paraview-5.0.1+dfsg1/Catalyst/Editions/Rendering-Base/manifest.json
--- paraview-5.0.0+dfsg1/Catalyst/Editions/Rendering-Base/manifest.json 2016-01-08 20:21:35.000000000 +0000
+++ paraview-5.0.1+dfsg1/Catalyst/Editions/Rendering-Base/manifest.json 2016-03-28 15:07:03.000000000 +0000
@@ -114,6 +114,7 @@
{ "class": "vtkImageCompressor" },
{ "class": "vtkKdTreeGenerator" },
{ "class": "vtkKdTreeManager" },
+ { "class": "vtkLZ4Compressor" },
{ "class": "vtkMarkSelectedRows" },
{ "class": "vtkMPICompositeManager" },
{ "class": "vtkMultiSliceContextItem" },
@@ -122,6 +123,7 @@
{ "class": "vtkPVAxesWidget" },
{ "class": "vtkPVCenterAxesActor" },
{ "class": "vtkPVDefaultPass" },
+ { "class": "vtkPVDiscretizableColorTransferFunction" },
{ "class": "vtkPVGeometryFilter" },
{ "class": "vtkPVGL2PSExporter" },
{ "class": "vtkPVInteractorStyle" },
@@ -911,6 +913,9 @@
},
{ "name": "vtkgl2ps",
"path": "VTK/ThirdParty/gl2ps"
+ },
+ { "name": "vtklz4",
+ "path": "ThirdParty/lz4"
}
],
"proxies":[
diff -Nru paraview-5.0.0+dfsg1/CMake/FindLZ4.cmake paraview-5.0.1+dfsg1/CMake/FindLZ4.cmake
--- paraview-5.0.0+dfsg1/CMake/FindLZ4.cmake 1970-01-01 00:00:00.000000000 +0000
+++ paraview-5.0.1+dfsg1/CMake/FindLZ4.cmake 2016-03-28 15:06:22.000000000 +0000
@@ -0,0 +1,9 @@
+
+find_library(LZ4_LIBRARIES NAMES lz4)
+find_path(LZ4_INCLUDE_DIRS NAMES lz4.h)
+
+include(FindPackageHandleStandardArgs)
+find_package_handle_standard_args(LZ4
+ DEFAULT_MSG
+ LZ4_LIBRARIES
+ LZ4_INCLUDE_DIRS)
diff -Nru paraview-5.0.0+dfsg1/CMake/VTKModules.cmake paraview-5.0.1+dfsg1/CMake/VTKModules.cmake
--- paraview-5.0.0+dfsg1/CMake/VTKModules.cmake 2016-01-08 20:21:35.000000000 +0000
+++ paraview-5.0.1+dfsg1/CMake/VTKModules.cmake 2016-03-28 15:07:03.000000000 +0000
@@ -35,11 +35,6 @@
)
endif()
-if( PARAVIEW_ENABLE_CGNS )
- list(APPEND _vtk_mpi_modules vtkPVVTKExtensionsCGNSReader)
-endif()
-
-
set(_vtk_modules
# VTK modules which ParaView has a explicity compile
# time dependency on
@@ -366,6 +361,10 @@
list (APPEND _vtk_modules vtkIOVisItBridge)
endif()
+if(PARAVIEW_ENABLE_CGNS)
+ list(APPEND _vtk_modules vtkPVVTKExtensionsCGNSReader)
+endif()
+
if (PARAVIEW_ENABLE_MATPLOTLIB)
list (APPEND _vtk_modules vtkRenderingMatplotlib)
endif()
diff -Nru paraview-5.0.0+dfsg1/CMakeLists.txt paraview-5.0.1+dfsg1/CMakeLists.txt
--- paraview-5.0.0+dfsg1/CMakeLists.txt 2016-01-08 20:21:35.000000000 +0000
+++ paraview-5.0.1+dfsg1/CMakeLists.txt 2016-03-28 15:07:03.000000000 +0000
@@ -95,10 +95,10 @@
# Determine ParaView Source Version
set (PARAVIEW_VERSION_MAJOR 5)
set (PARAVIEW_VERSION_MINOR 0)
-set (PARAVIEW_VERSION_PATCH 0)
+set (PARAVIEW_VERSION_PATCH 1)
set (PARAVIEW_VERSION_PATCH_EXTRA)
set (PARAVIEW_VERSION "5.0")
-set (PARAVIEW_VERSION_FULL "5.0.0")
+set (PARAVIEW_VERSION_FULL "5.0.1")
determine_version(${ParaView_SOURCE_DIR} ${GIT_EXECUTABLE} "PARAVIEW")
@@ -218,6 +218,9 @@
# Xdmf3 is not ON by default since it depends on Boost.
option(PARAVIEW_ENABLE_XDMF3 "Enable Xdmf3 support (requires Boost)." OFF)
+# Enable CGNS support
+option(PARAVIEW_ENABLE_CGNS "Enable the CGNS file reader" OFF)
+
if (UNIX)
option(PARAVIEW_ENABLE_FFMPEG "Enable FFMPEG Support." OFF)
endif()
@@ -277,12 +280,6 @@
"Build ParaView with CosmoTools VTK Extensions" OFF
"PARAVIEW_USE_MPI" OFF)
mark_as_advanced(PARAVIEW_ENABLE_COSMOTOOLS)
-
- cmake_dependent_option(PARAVIEW_ENABLE_CGNS
- "Enable the CGNS file reader" OFF
- "PARAVIEW_USE_MPI" OFF)
- mark_as_advanced(PARAVIEW_ENABLE_CGNS)
-
endif()
# Is this a 32 bit or 64bit build. Display this in about dialog.
diff -Nru paraview-5.0.0+dfsg1/CoProcessing/Catalyst/vtkCPProcessor.h paraview-5.0.1+dfsg1/CoProcessing/Catalyst/vtkCPProcessor.h
--- paraview-5.0.0+dfsg1/CoProcessing/Catalyst/vtkCPProcessor.h 2016-01-08 20:21:35.000000000 +0000
+++ paraview-5.0.1+dfsg1/CoProcessing/Catalyst/vtkCPProcessor.h 2016-03-28 15:06:22.000000000 +0000
@@ -82,7 +82,9 @@
/// MPI_COMM_WORLD isn't the proper one. Catalyst is initialized
/// to use MPI_COMM_WORLD by default.
virtual int Initialize();
+#ifndef __WRAP__
virtual int Initialize(vtkMPICommunicatorOpaqueComm& comm);
+#endif
/// Configuration Step:
/// The coprocessor first determines if any coprocessing needs to be done
diff -Nru paraview-5.0.0+dfsg1/CoProcessing/PythonCatalyst/Testing/Cxx/CMakeLists.txt paraview-5.0.1+dfsg1/CoProcessing/PythonCatalyst/Testing/Cxx/CMakeLists.txt
--- paraview-5.0.0+dfsg1/CoProcessing/PythonCatalyst/Testing/Cxx/CMakeLists.txt 2016-01-08 20:21:35.000000000 +0000
+++ paraview-5.0.1+dfsg1/CoProcessing/PythonCatalyst/Testing/Cxx/CMakeLists.txt 2016-03-28 15:06:22.000000000 +0000
@@ -185,5 +185,20 @@
set_tests_properties(CoProcessingFullWorkflowCinema PROPERTIES LABELS "${CP_LABELS}")
endif()
+ find_python_module(numpy numpy_found)
+ if (numpy_found)
+ add_test(NAME CoProcessingFullWorkflowCinemaComposite
+ COMMAND ${CMAKE_COMMAND}
+ -DPARAVIEW_EXECUTABLE:FILEPATH=$
+ -DCOPROCESSING_TEST_DIR:PATH=${PARAVIEW_TEST_DIR}
+ -DPARAVIEW_TEST_XML:FILEPATH=${ParaView_SOURCE_DIR}/Plugins/CatalystScriptGenerator/Testing/CatalystCinemaCompositeGUI.xml
+ -DPVBATCH_EXECUTABLE:FILEPATH=$
+ -DCOPROCESSING_DRIVER_SCRIPT:FILEPATH=${CMAKE_CURRENT_SOURCE_DIR}/waveletdriver.py
+ -DTEST_NAME:STRING=CoProcessingFullWorkflowCinemaComposite
+ -P ${CMAKE_CURRENT_SOURCE_DIR}/CoProcessingFullWorkflowTest.cmake)
+ set_tests_properties(CoProcessingFullWorkflowCinemaComposite PROPERTIES RUN_SERIAL ON)
+ set_tests_properties(CoProcessingFullWorkflowCinemaComposite PROPERTIES LABELS "${CP_LABELS}")
+ endif()
+
ENDIF ()
endif()
diff -Nru paraview-5.0.0+dfsg1/CoProcessing/PythonCatalyst/Testing/Cxx/CoProcessingFullWorkflowTest.cmake paraview-5.0.1+dfsg1/CoProcessing/PythonCatalyst/Testing/Cxx/CoProcessingFullWorkflowTest.cmake
--- paraview-5.0.0+dfsg1/CoProcessing/PythonCatalyst/Testing/Cxx/CoProcessingFullWorkflowTest.cmake 2016-01-08 20:21:35.000000000 +0000
+++ paraview-5.0.1+dfsg1/CoProcessing/PythonCatalyst/Testing/Cxx/CoProcessingFullWorkflowTest.cmake 2016-03-28 15:06:22.000000000 +0000
@@ -70,6 +70,17 @@
return()
endif()
+if("${TEST_NAME}" STREQUAL "CoProcessingFullWorkflowCinemaComposite")
+ if(NOT EXISTS "${COPROCESSING_TEST_DIR}/cinema/composite_image/info.json" OR
+ NOT EXISTS "${COPROCESSING_TEST_DIR}/cinema/composite_image/0.000000e+00_-180_-180/vis=Slice1/Slice1=0.0/colorSlice1=RTData_0.png" OR
+ NOT EXISTS "${COPROCESSING_TEST_DIR}/cinema/composite_image/0.000000e+00_-180_60/vis=Slice1/Slice1=0.0/colorSlice1=depth.im" OR
+ NOT EXISTS "${COPROCESSING_TEST_DIR}/cinema/composite_image/0.000000e+00_60_-180/vis=Slice1/Slice1=0.0/colorSlice1=luminance.png" OR
+ NOT EXISTS "${COPROCESSING_TEST_DIR}/cinema/composite_image/0.000000e+00_60_-180/vis=Slice1/Slice1=0.0/colorSlice1=RTData_0.png")
+ message(FATAL_ERROR "Catalyst did not generate a composite cinema store!")
+ endif()
+ return()
+endif()
+
if(NOT EXISTS "${COPROCESSING_IMAGE_TESTER}")
message(FATAL_ERROR "'${COPROCESSING_IMAGE_TESTER}' does not exist")
endif()
@@ -115,4 +126,4 @@
if(rv)
message(FATAL_ERROR "CoProcessingCompareImageTester second image return value was = '${rv}' ")
endif()
-endif("${TEST_NAME}" STREQUAL "CoProcessingFullWorkflowWithPlots")
\ No newline at end of file
+endif("${TEST_NAME}" STREQUAL "CoProcessingFullWorkflowWithPlots")
diff -Nru paraview-5.0.0+dfsg1/debian/changelog paraview-5.0.1+dfsg1/debian/changelog
--- paraview-5.0.0+dfsg1/debian/changelog 2016-04-05 12:49:14.000000000 +0000
+++ paraview-5.0.1+dfsg1/debian/changelog 2016-04-08 15:21:55.000000000 +0000
@@ -1,14 +1,26 @@
-paraview (5.0.0+dfsg1-2build2) xenial; urgency=medium
+paraview (5.0.1+dfsg1-3) unstable; urgency=medium
- * Rebuild against libmysqlclient20.
+ [ Graham Inggs ]
+ * [5bb46bd] Fix typo in dependencies of paraview-dev. (Closes: #820448)
- -- Robie Basak Tue, 05 Apr 2016 12:49:14 +0000
+ -- Anton Gladky Fri, 08 Apr 2016 17:21:49 +0200
-paraview (5.0.0+dfsg1-2build1) xenial; urgency=medium
+paraview (5.0.1+dfsg1-2) unstable; urgency=medium
- * No-change rebuild for ncurses6 transition.
+ * [2a1316c] Add missing build-dependency libqt5sql5-sqlite.
- -- Matthias Klose Sun, 07 Feb 2016 13:02:15 +0000
+ -- Anton Gladky Thu, 07 Apr 2016 19:49:59 +0200
+
+paraview (5.0.1+dfsg1-1) unstable; urgency=medium
+
+ * [b3f3619] Use dpkg-buildflags. Should fix reproducibility.
+ * [839465d] Fix typo in d/copyright.
+ * [55f10bf] Imported Upstream version 5.0.1+dfsg1
+ * [8c95453] Refresh patches.
+ * [5d50cf5] Switch to Qt5. (Closes: #784505)
+ * [18c7f23] Apply cme fix dpkg.
+
+ -- Anton Gladky Wed, 06 Apr 2016 20:20:29 +0200
paraview (5.0.0+dfsg1-2) unstable; urgency=medium
diff -Nru paraview-5.0.0+dfsg1/debian/control paraview-5.0.1+dfsg1/debian/control
--- paraview-5.0.0+dfsg1/debian/control 2016-02-05 07:17:06.000000000 +0000
+++ paraview-5.0.1+dfsg1/debian/control 2016-04-08 15:20:51.000000000 +0000
@@ -7,20 +7,23 @@
Priority: extra
Build-Depends: debhelper (>= 9),
cmake,
- libqt4-dev,
+ qtbase5-dev-tools,
+ qttools5-dev-tools,
+ qttools5-dev,
+ qtbase5-dev,
libsqlite3-dev,
- qt4-dev-tools,
libboost-all-dev,
- libavformat-dev (>= 4:0.7.1),
+ libavformat-dev,
libavutil-dev,
libavcodec-dev,
libswscale-dev,
+ libqt5sql5-sqlite,
python-dev,
dh-python,
libglu1-mesa-dev,
libxt-dev,
python-all,
- python-all-dev (>= 2.7),
+ python-all-dev,
python-all-dev (<< 2.8),
libxext-dev,
doxygen,
@@ -42,7 +45,7 @@
libhdf5-dev,
hdf5-tools,
libgl2ps-dev,
- libqtwebkit-dev,
+ libqt5webkit5-dev,
libeigen3-dev,
libnetcdf-dev,
libnetcdf-cxx-legacy-dev,
@@ -55,9 +58,9 @@
python-mpi4py,
python-six,
python-twisted
-Standards-Version: 3.9.6
+Standards-Version: 3.9.7
Vcs-Browser: https://anonscm.debian.org/cgit/debian-science/packages/paraview.git
-Vcs-Git: git://anonscm.debian.org/debian-science/packages/paraview.git
+Vcs-Git: https://anonscm.debian.org/git/debian-science/packages/paraview.git
Homepage: http://www.paraview.org/
Package: paraview
@@ -95,12 +98,11 @@
Package: paraview-dev
Architecture: any
Section: libdevel
-Depends: qt4-dev-tools,
+Depends: qtbase5-dev-tools,
${shlibs:Depends},
${misc:Depends},
paraview (= ${binary:Version}),
libeigen3-dev
-Recommends: qt4-dev-tools
Description: Parallel Visualization Application. Development header files
ParaView is an open-source, multi-platform application designed to
visualize data sets of size varying from small to very large. The
@@ -147,7 +149,7 @@
${python:Depends},
${misc:Depends},
${shlibs:Depends},
- python (>= 2.7),
+ python,
python (<< 2.8),
python-vtk6
Provides: ${python:Provides}
diff -Nru paraview-5.0.0+dfsg1/debian/copyright paraview-5.0.1+dfsg1/debian/copyright
--- paraview-5.0.0+dfsg1/debian/copyright 2016-02-04 21:50:55.000000000 +0000
+++ paraview-5.0.1+dfsg1/debian/copyright 2016-04-06 17:50:08.000000000 +0000
@@ -16,7 +16,7 @@
VTK/ThirdParty/gl2ps/vtkgl2ps
VTK/ThirdParty/hdf5/vtkhdf5
VTK/ThirdParty/jpeg/vtkjpeg
- VKT/ThirdParty/jsoncpp/vtkjsoncpp
+ VTK/ThirdParty/jsoncpp/vtkjsoncpp
VTK/ThirdParty/libxml2/vtklibxml2
VTK/ThirdParty/netcdf/vtknetcdf
VTK/ThirdParty/oggtheora/vtkoggtheora
diff -Nru paraview-5.0.0+dfsg1/debian/patches/fix_ftbfs_gcc49.patch paraview-5.0.1+dfsg1/debian/patches/fix_ftbfs_gcc49.patch
--- paraview-5.0.0+dfsg1/debian/patches/fix_ftbfs_gcc49.patch 2016-02-04 21:50:55.000000000 +0000
+++ paraview-5.0.1+dfsg1/debian/patches/fix_ftbfs_gcc49.patch 2016-04-06 14:47:24.000000000 +0000
@@ -4,10 +4,10 @@
Forwarded: https://github.com/Kitware/VTK/pull/7
Last-Update: 2014-05-30
-Index: ParaView-v5.0.0-source/VTK/Filters/ParallelMPI/vtkDistributedDataFilter.cxx
+Index: ParaView-v5.0.1-source/VTK/Filters/ParallelMPI/vtkDistributedDataFilter.cxx
===================================================================
---- ParaView-v5.0.0-source.orig/VTK/Filters/ParallelMPI/vtkDistributedDataFilter.cxx
-+++ ParaView-v5.0.0-source/VTK/Filters/ParallelMPI/vtkDistributedDataFilter.cxx
+--- ParaView-v5.0.1-source.orig/VTK/Filters/ParallelMPI/vtkDistributedDataFilter.cxx
++++ ParaView-v5.0.1-source/VTK/Filters/ParallelMPI/vtkDistributedDataFilter.cxx
@@ -1112,7 +1112,10 @@ vtkDataSet *vtkDistributedDataFilter::Te
vtkIdType cellsPerNode = numTotalCells / nprocs;
diff -Nru paraview-5.0.0+dfsg1/debian/patches/fix_manpages_errors.patch paraview-5.0.1+dfsg1/debian/patches/fix_manpages_errors.patch
--- paraview-5.0.0+dfsg1/debian/patches/fix_manpages_errors.patch 2016-02-04 21:50:55.000000000 +0000
+++ paraview-5.0.1+dfsg1/debian/patches/fix_manpages_errors.patch 2016-04-06 14:47:11.000000000 +0000
@@ -3,10 +3,10 @@
Author: Anton Gladky
Last-Update: 2012-11-25
-Index: ParaView-v5.0.0-source/ThirdParty/IceT/vtkicet/doc/man/man3/icetCreateContext.3
+Index: ParaView-v5.0.1-source/ThirdParty/IceT/vtkicet/doc/man/man3/icetCreateContext.3
===================================================================
---- ParaView-v5.0.0-source.orig/ThirdParty/IceT/vtkicet/doc/man/man3/icetCreateContext.3
-+++ ParaView-v5.0.0-source/ThirdParty/IceT/vtkicet/doc/man/man3/icetCreateContext.3
+--- ParaView-v5.0.1-source.orig/ThirdParty/IceT/vtkicet/doc/man/man3/icetCreateContext.3
++++ ParaView-v5.0.1-source/ThirdParty/IceT/vtkicet/doc/man/man3/icetCreateContext.3
@@ -29,8 +29,7 @@ l l l .
.PP
@@ -17,10 +17,10 @@
context, makes it current, and returns a
handle to the new context. The handle returned is of type
\fBIceTContext\fP\&.
-Index: ParaView-v5.0.0-source/ThirdParty/IceT/vtkicet/doc/man/man3/icetSingleImageStrategy.3
+Index: ParaView-v5.0.1-source/ThirdParty/IceT/vtkicet/doc/man/man3/icetSingleImageStrategy.3
===================================================================
---- ParaView-v5.0.0-source.orig/ThirdParty/IceT/vtkicet/doc/man/man3/icetSingleImageStrategy.3
-+++ ParaView-v5.0.0-source/ThirdParty/IceT/vtkicet/doc/man/man3/icetSingleImageStrategy.3
+--- ParaView-v5.0.1-source.orig/ThirdParty/IceT/vtkicet/doc/man/man3/icetSingleImageStrategy.3
++++ ParaView-v5.0.1-source/ThirdParty/IceT/vtkicet/doc/man/man3/icetSingleImageStrategy.3
@@ -46,7 +46,7 @@ enumerated values:
Automatically
chooses which single image strategy to use based on the number of
@@ -46,10 +46,10 @@
.PP
By default \fBIceT \fPsets the single image strategy to
\fBICET_SINGLE_IMAGE_STRATEGY_AUTOMATIC\fP
-Index: ParaView-v5.0.0-source/ThirdParty/IceT/vtkicet/doc/man/man3/icetImageGetDepthf.3
+Index: ParaView-v5.0.1-source/ThirdParty/IceT/vtkicet/doc/man/man3/icetImageGetDepthf.3
===================================================================
---- ParaView-v5.0.0-source.orig/ThirdParty/IceT/vtkicet/doc/man/man3/icetImageGetDepthf.3
-+++ ParaView-v5.0.0-source/ThirdParty/IceT/vtkicet/doc/man/man3/icetImageGetDepthf.3
+--- ParaView-v5.0.1-source.orig/ThirdParty/IceT/vtkicet/doc/man/man3/icetImageGetDepthf.3
++++ ParaView-v5.0.1-source/ThirdParty/IceT/vtkicet/doc/man/man3/icetImageGetDepthf.3
@@ -15,8 +15,6 @@
\fBicetImageGetColor , \fBicetImageGetDepth\fP\-\- retrieve pixel data buffer from image\fP
@@ -66,10 +66,10 @@
-.igicetImageGetDepth|)textbf
.PP
.\" NOTE: This file is generated, DO NOT EDIT.
-Index: ParaView-v5.0.0-source/ThirdParty/IceT/vtkicet/doc/man/man3/icetImageGetDepthFormat.3
+Index: ParaView-v5.0.1-source/ThirdParty/IceT/vtkicet/doc/man/man3/icetImageGetDepthFormat.3
===================================================================
---- ParaView-v5.0.0-source.orig/ThirdParty/IceT/vtkicet/doc/man/man3/icetImageGetDepthFormat.3
-+++ ParaView-v5.0.0-source/ThirdParty/IceT/vtkicet/doc/man/man3/icetImageGetDepthFormat.3
+--- ParaView-v5.0.1-source.orig/ThirdParty/IceT/vtkicet/doc/man/man3/icetImageGetDepthFormat.3
++++ ParaView-v5.0.1-source/ThirdParty/IceT/vtkicet/doc/man/man3/icetImageGetDepthFormat.3
@@ -15,8 +15,6 @@
\fBicetImageGetColorFormat\fP,\fBicetImageGetDepthFormat\fP\-\- get the format of image buffers
@@ -86,10 +86,10 @@
-.igicetImageGetDepthFormat|)textbf
.PP
.\" NOTE: This file is generated, DO NOT EDIT.
-Index: ParaView-v5.0.0-source/ThirdParty/IceT/vtkicet/doc/man/man3/icetCompositeMode.3
+Index: ParaView-v5.0.1-source/ThirdParty/IceT/vtkicet/doc/man/man3/icetCompositeMode.3
===================================================================
---- ParaView-v5.0.0-source.orig/ThirdParty/IceT/vtkicet/doc/man/man3/icetCompositeMode.3
-+++ ParaView-v5.0.0-source/ThirdParty/IceT/vtkicet/doc/man/man3/icetCompositeMode.3
+--- ParaView-v5.0.1-source.orig/ThirdParty/IceT/vtkicet/doc/man/man3/icetCompositeMode.3
++++ ParaView-v5.0.1-source/ThirdParty/IceT/vtkicet/doc/man/man3/icetCompositeMode.3
@@ -45,8 +45,7 @@ is one of the following enumerations:
.PP
.TP
@@ -110,10 +110,10 @@
operator. in
order for this operation to work, images must have a color buffer (set
with \fBicetSetColorFormat\fP)that has an alpha channel and there must be
-Index: ParaView-v5.0.0-source/ThirdParty/IceT/vtkicet/doc/man/man3/icetImageGetHeight.3
+Index: ParaView-v5.0.1-source/ThirdParty/IceT/vtkicet/doc/man/man3/icetImageGetHeight.3
===================================================================
---- ParaView-v5.0.0-source.orig/ThirdParty/IceT/vtkicet/doc/man/man3/icetImageGetHeight.3
-+++ ParaView-v5.0.0-source/ThirdParty/IceT/vtkicet/doc/man/man3/icetImageGetHeight.3
+--- ParaView-v5.0.1-source.orig/ThirdParty/IceT/vtkicet/doc/man/man3/icetImageGetHeight.3
++++ ParaView-v5.0.1-source/ThirdParty/IceT/vtkicet/doc/man/man3/icetImageGetHeight.3
@@ -15,11 +15,7 @@
\fBicetImageGetWidth\fP,\fBicetImageGetHeight\fP,\fBicetImageGetNumPixels\fP\-\- get dimensions of an image
@@ -135,10 +135,10 @@
-.igicetImageGetHeight|)textbf
.PP
.\" NOTE: This file is generated, DO NOT EDIT.
-Index: ParaView-v5.0.0-source/ThirdParty/IceT/vtkicet/doc/man/man3/icetSetColorFormat.3
+Index: ParaView-v5.0.1-source/ThirdParty/IceT/vtkicet/doc/man/man3/icetSetColorFormat.3
===================================================================
---- ParaView-v5.0.0-source.orig/ThirdParty/IceT/vtkicet/doc/man/man3/icetSetColorFormat.3
-+++ ParaView-v5.0.0-source/ThirdParty/IceT/vtkicet/doc/man/man3/icetSetColorFormat.3
+--- ParaView-v5.0.1-source.orig/ThirdParty/IceT/vtkicet/doc/man/man3/icetSetColorFormat.3
++++ ParaView-v5.0.1-source/ThirdParty/IceT/vtkicet/doc/man/man3/icetSetColorFormat.3
@@ -15,8 +15,6 @@
\fBicetSetColorFormat\fP,\fBicetSetDepthFormat\fP\-\- specifies the buffer formats for \fBIceT \fPto use when creating images
@@ -155,10 +155,10 @@
-.igicetSetDepthFormat|)textbf
.PP
.\" NOTE: This file is generated, DO NOT EDIT.
-Index: ParaView-v5.0.0-source/ThirdParty/IceT/vtkicet/doc/man/man3/icetImageGetColorui.3
+Index: ParaView-v5.0.1-source/ThirdParty/IceT/vtkicet/doc/man/man3/icetImageGetColorui.3
===================================================================
---- ParaView-v5.0.0-source.orig/ThirdParty/IceT/vtkicet/doc/man/man3/icetImageGetColorui.3
-+++ ParaView-v5.0.0-source/ThirdParty/IceT/vtkicet/doc/man/man3/icetImageGetColorui.3
+--- ParaView-v5.0.1-source.orig/ThirdParty/IceT/vtkicet/doc/man/man3/icetImageGetColorui.3
++++ ParaView-v5.0.1-source/ThirdParty/IceT/vtkicet/doc/man/man3/icetImageGetColorui.3
@@ -15,8 +15,6 @@
\fBicetImageGetColor , \fBicetImageGetDepth\fP\-\- retrieve pixel data buffer from image\fP
@@ -175,10 +175,10 @@
-.igicetImageGetDepth|)textbf
.PP
.\" NOTE: This file is generated, DO NOT EDIT.
-Index: ParaView-v5.0.0-source/ThirdParty/IceT/vtkicet/doc/man/man3/icetDisable.3
+Index: ParaView-v5.0.1-source/ThirdParty/IceT/vtkicet/doc/man/man3/icetDisable.3
===================================================================
---- ParaView-v5.0.0-source.orig/ThirdParty/IceT/vtkicet/doc/man/man3/icetDisable.3
-+++ ParaView-v5.0.0-source/ThirdParty/IceT/vtkicet/doc/man/man3/icetDisable.3
+--- ParaView-v5.0.1-source.orig/ThirdParty/IceT/vtkicet/doc/man/man3/icetDisable.3
++++ ParaView-v5.0.1-source/ThirdParty/IceT/vtkicet/doc/man/man3/icetDisable.3
@@ -15,8 +15,7 @@
\fBicetEnable\fP,\fBicetDisable\fP\-\- enable/disable an \fBIceT \fPfeature.
@@ -196,10 +196,10 @@
-.igicetDisable|)textbf
.PP
.\" NOTE: This file is generated, DO NOT EDIT.
-Index: ParaView-v5.0.0-source/ThirdParty/IceT/vtkicet/doc/man/man3/icetDrawCallback.3
+Index: ParaView-v5.0.1-source/ThirdParty/IceT/vtkicet/doc/man/man3/icetDrawCallback.3
===================================================================
---- ParaView-v5.0.0-source.orig/ThirdParty/IceT/vtkicet/doc/man/man3/icetDrawCallback.3
-+++ ParaView-v5.0.0-source/ThirdParty/IceT/vtkicet/doc/man/man3/icetDrawCallback.3
+--- ParaView-v5.0.1-source.orig/ThirdParty/IceT/vtkicet/doc/man/man3/icetDrawCallback.3
++++ ParaView-v5.0.1-source/ThirdParty/IceT/vtkicet/doc/man/man3/icetDrawCallback.3
@@ -18,18 +18,6 @@
.SH Synopsis
@@ -229,10 +229,10 @@
order.
.PP
Note that the \fIprojection_matrix\fP
-Index: ParaView-v5.0.0-source/ThirdParty/IceT/vtkicet/doc/man/man3/icetEnable.3
+Index: ParaView-v5.0.1-source/ThirdParty/IceT/vtkicet/doc/man/man3/icetEnable.3
===================================================================
---- ParaView-v5.0.0-source.orig/ThirdParty/IceT/vtkicet/doc/man/man3/icetEnable.3
-+++ ParaView-v5.0.0-source/ThirdParty/IceT/vtkicet/doc/man/man3/icetEnable.3
+--- ParaView-v5.0.1-source.orig/ThirdParty/IceT/vtkicet/doc/man/man3/icetEnable.3
++++ ParaView-v5.0.1-source/ThirdParty/IceT/vtkicet/doc/man/man3/icetEnable.3
@@ -15,8 +15,7 @@
\fBicetEnable\fP,\fBicetDisable\fP\-\- enable/disable an \fBIceT \fPfeature.
@@ -250,10 +250,10 @@
-.igicetDisable|)textbf
.PP
.\" NOTE: This file is generated, DO NOT EDIT.
-Index: ParaView-v5.0.0-source/ThirdParty/IceT/vtkicet/doc/man/man3/icetImageCopyColorub.3
+Index: ParaView-v5.0.1-source/ThirdParty/IceT/vtkicet/doc/man/man3/icetImageCopyColorub.3
===================================================================
---- ParaView-v5.0.0-source.orig/ThirdParty/IceT/vtkicet/doc/man/man3/icetImageCopyColorub.3
-+++ ParaView-v5.0.0-source/ThirdParty/IceT/vtkicet/doc/man/man3/icetImageCopyColorub.3
+--- ParaView-v5.0.1-source.orig/ThirdParty/IceT/vtkicet/doc/man/man3/icetImageCopyColorub.3
++++ ParaView-v5.0.1-source/ThirdParty/IceT/vtkicet/doc/man/man3/icetImageCopyColorub.3
@@ -15,8 +15,6 @@
\fBicetImageCopyColor\fP,\fBicetImageCopyDepth\fP\-\- retrieve pixel data from image
@@ -270,10 +270,10 @@
-.igicetImageCopyDepth|)textbf
.PP
.\" NOTE: This file is generated, DO NOT EDIT.
-Index: ParaView-v5.0.0-source/ThirdParty/IceT/vtkicet/doc/man/man3/icetImageCopyDepthf.3
+Index: ParaView-v5.0.1-source/ThirdParty/IceT/vtkicet/doc/man/man3/icetImageCopyDepthf.3
===================================================================
---- ParaView-v5.0.0-source.orig/ThirdParty/IceT/vtkicet/doc/man/man3/icetImageCopyDepthf.3
-+++ ParaView-v5.0.0-source/ThirdParty/IceT/vtkicet/doc/man/man3/icetImageCopyDepthf.3
+--- ParaView-v5.0.1-source.orig/ThirdParty/IceT/vtkicet/doc/man/man3/icetImageCopyDepthf.3
++++ ParaView-v5.0.1-source/ThirdParty/IceT/vtkicet/doc/man/man3/icetImageCopyDepthf.3
@@ -15,8 +15,6 @@
\fBicetImageCopyColor\fP,\fBicetImageCopyDepth\fP\-\- retrieve pixel data from image
@@ -290,10 +290,10 @@
-.igicetImageCopyDepth|)textbf
.PP
.\" NOTE: This file is generated, DO NOT EDIT.
-Index: ParaView-v5.0.0-source/ThirdParty/IceT/vtkicet/doc/man/man3/icetImageGetDepth.3
+Index: ParaView-v5.0.1-source/ThirdParty/IceT/vtkicet/doc/man/man3/icetImageGetDepth.3
===================================================================
---- ParaView-v5.0.0-source.orig/ThirdParty/IceT/vtkicet/doc/man/man3/icetImageGetDepth.3
-+++ ParaView-v5.0.0-source/ThirdParty/IceT/vtkicet/doc/man/man3/icetImageGetDepth.3
+--- ParaView-v5.0.1-source.orig/ThirdParty/IceT/vtkicet/doc/man/man3/icetImageGetDepth.3
++++ ParaView-v5.0.1-source/ThirdParty/IceT/vtkicet/doc/man/man3/icetImageGetDepth.3
@@ -15,8 +15,6 @@
\fBicetImageGetColor , \fBicetImageGetDepth\fP\-\- retrieve pixel data buffer from image\fP
@@ -310,10 +310,10 @@
-.igicetImageGetDepth|)textbf
.PP
.\" NOTE: This file is generated, DO NOT EDIT.
-Index: ParaView-v5.0.0-source/ThirdParty/IceT/vtkicet/doc/man/man3/icetImageGetColorub.3
+Index: ParaView-v5.0.1-source/ThirdParty/IceT/vtkicet/doc/man/man3/icetImageGetColorub.3
===================================================================
---- ParaView-v5.0.0-source.orig/ThirdParty/IceT/vtkicet/doc/man/man3/icetImageGetColorub.3
-+++ ParaView-v5.0.0-source/ThirdParty/IceT/vtkicet/doc/man/man3/icetImageGetColorub.3
+--- ParaView-v5.0.1-source.orig/ThirdParty/IceT/vtkicet/doc/man/man3/icetImageGetColorub.3
++++ ParaView-v5.0.1-source/ThirdParty/IceT/vtkicet/doc/man/man3/icetImageGetColorub.3
@@ -15,8 +15,6 @@
\fBicetImageGetColor , \fBicetImageGetDepth\fP\-\- retrieve pixel data buffer from image\fP
@@ -330,10 +330,10 @@
-.igicetImageGetDepth|)textbf
.PP
.\" NOTE: This file is generated, DO NOT EDIT.
-Index: ParaView-v5.0.0-source/ThirdParty/IceT/vtkicet/doc/man/man3/icetImageGetColorFormat.3
+Index: ParaView-v5.0.1-source/ThirdParty/IceT/vtkicet/doc/man/man3/icetImageGetColorFormat.3
===================================================================
---- ParaView-v5.0.0-source.orig/ThirdParty/IceT/vtkicet/doc/man/man3/icetImageGetColorFormat.3
-+++ ParaView-v5.0.0-source/ThirdParty/IceT/vtkicet/doc/man/man3/icetImageGetColorFormat.3
+--- ParaView-v5.0.1-source.orig/ThirdParty/IceT/vtkicet/doc/man/man3/icetImageGetColorFormat.3
++++ ParaView-v5.0.1-source/ThirdParty/IceT/vtkicet/doc/man/man3/icetImageGetColorFormat.3
@@ -15,8 +15,6 @@
\fBicetImageGetColorFormat\fP,\fBicetImageGetDepthFormat\fP\-\- get the format of image buffers
@@ -350,10 +350,10 @@
-.igicetImageGetDepthFormat|)textbf
.PP
.\" NOTE: This file is generated, DO NOT EDIT.
-Index: ParaView-v5.0.0-source/ThirdParty/IceT/vtkicet/doc/man/man3/icetImageGetColorf.3
+Index: ParaView-v5.0.1-source/ThirdParty/IceT/vtkicet/doc/man/man3/icetImageGetColorf.3
===================================================================
---- ParaView-v5.0.0-source.orig/ThirdParty/IceT/vtkicet/doc/man/man3/icetImageGetColorf.3
-+++ ParaView-v5.0.0-source/ThirdParty/IceT/vtkicet/doc/man/man3/icetImageGetColorf.3
+--- ParaView-v5.0.1-source.orig/ThirdParty/IceT/vtkicet/doc/man/man3/icetImageGetColorf.3
++++ ParaView-v5.0.1-source/ThirdParty/IceT/vtkicet/doc/man/man3/icetImageGetColorf.3
@@ -15,8 +15,6 @@
\fBicetImageGetColor , \fBicetImageGetDepth\fP\-\- retrieve pixel data buffer from image\fP
@@ -370,10 +370,10 @@
-.igicetImageGetDepth|)textbf
.PP
.\" NOTE: This file is generated, DO NOT EDIT.
-Index: ParaView-v5.0.0-source/ThirdParty/IceT/vtkicet/doc/man/man3/icetImageCopyColorf.3
+Index: ParaView-v5.0.1-source/ThirdParty/IceT/vtkicet/doc/man/man3/icetImageCopyColorf.3
===================================================================
---- ParaView-v5.0.0-source.orig/ThirdParty/IceT/vtkicet/doc/man/man3/icetImageCopyColorf.3
-+++ ParaView-v5.0.0-source/ThirdParty/IceT/vtkicet/doc/man/man3/icetImageCopyColorf.3
+--- ParaView-v5.0.1-source.orig/ThirdParty/IceT/vtkicet/doc/man/man3/icetImageCopyColorf.3
++++ ParaView-v5.0.1-source/ThirdParty/IceT/vtkicet/doc/man/man3/icetImageCopyColorf.3
@@ -15,8 +15,6 @@
\fBicetImageCopyColor\fP,\fBicetImageCopyDepth\fP\-\- retrieve pixel data from image
@@ -390,10 +390,10 @@
-.igicetImageCopyDepth|)textbf
.PP
.\" NOTE: This file is generated, DO NOT EDIT.
-Index: ParaView-v5.0.0-source/ThirdParty/IceT/vtkicet/doc/man/man3/icetImageGetWidth.3
+Index: ParaView-v5.0.1-source/ThirdParty/IceT/vtkicet/doc/man/man3/icetImageGetWidth.3
===================================================================
---- ParaView-v5.0.0-source.orig/ThirdParty/IceT/vtkicet/doc/man/man3/icetImageGetWidth.3
-+++ ParaView-v5.0.0-source/ThirdParty/IceT/vtkicet/doc/man/man3/icetImageGetWidth.3
+--- ParaView-v5.0.1-source.orig/ThirdParty/IceT/vtkicet/doc/man/man3/icetImageGetWidth.3
++++ ParaView-v5.0.1-source/ThirdParty/IceT/vtkicet/doc/man/man3/icetImageGetWidth.3
@@ -15,11 +15,7 @@
\fBicetImageGetWidth\fP,\fBicetImageGetHeight\fP,\fBicetImageGetNumPixels\fP\-\- get dimensions of an image
@@ -415,10 +415,10 @@
-.igicetImageGetHeight|)textbf
.PP
.\" NOTE: This file is generated, DO NOT EDIT.
-Index: ParaView-v5.0.0-source/ThirdParty/IceT/vtkicet/doc/man/man3/icetStrategy.3
+Index: ParaView-v5.0.1-source/ThirdParty/IceT/vtkicet/doc/man/man3/icetStrategy.3
===================================================================
---- ParaView-v5.0.0-source.orig/ThirdParty/IceT/vtkicet/doc/man/man3/icetStrategy.3
-+++ ParaView-v5.0.0-source/ThirdParty/IceT/vtkicet/doc/man/man3/icetStrategy.3
+--- ParaView-v5.0.1-source.orig/ThirdParty/IceT/vtkicet/doc/man/man3/icetStrategy.3
++++ ParaView-v5.0.1-source/ThirdParty/IceT/vtkicet/doc/man/man3/icetStrategy.3
@@ -50,7 +50,6 @@ whether they draw into it, this strategy
compositing for more than one tile, but is recommended for the single
tile case because it bypasses some of the communication necessary for
@@ -462,10 +462,10 @@
.PP
Not all of the strategies support ordered image composition.
\fBICET_STRATEGY_SEQUENTIAL\fP,
-Index: ParaView-v5.0.0-source/ThirdParty/IceT/vtkicet/doc/man/man3/icetImageCopyColor.3
+Index: ParaView-v5.0.1-source/ThirdParty/IceT/vtkicet/doc/man/man3/icetImageCopyColor.3
===================================================================
---- ParaView-v5.0.0-source.orig/ThirdParty/IceT/vtkicet/doc/man/man3/icetImageCopyColor.3
-+++ ParaView-v5.0.0-source/ThirdParty/IceT/vtkicet/doc/man/man3/icetImageCopyColor.3
+--- ParaView-v5.0.1-source.orig/ThirdParty/IceT/vtkicet/doc/man/man3/icetImageCopyColor.3
++++ ParaView-v5.0.1-source/ThirdParty/IceT/vtkicet/doc/man/man3/icetImageCopyColor.3
@@ -15,8 +15,6 @@
\fBicetImageCopyColor\fP,\fBicetImageCopyDepth\fP\-\- retrieve pixel data from image
@@ -482,10 +482,10 @@
-.igicetImageCopyDepth|)textbf
.PP
.\" NOTE: This file is generated, DO NOT EDIT.
-Index: ParaView-v5.0.0-source/ThirdParty/IceT/vtkicet/doc/man/man3/icetImageCopyDepth.3
+Index: ParaView-v5.0.1-source/ThirdParty/IceT/vtkicet/doc/man/man3/icetImageCopyDepth.3
===================================================================
---- ParaView-v5.0.0-source.orig/ThirdParty/IceT/vtkicet/doc/man/man3/icetImageCopyDepth.3
-+++ ParaView-v5.0.0-source/ThirdParty/IceT/vtkicet/doc/man/man3/icetImageCopyDepth.3
+--- ParaView-v5.0.1-source.orig/ThirdParty/IceT/vtkicet/doc/man/man3/icetImageCopyDepth.3
++++ ParaView-v5.0.1-source/ThirdParty/IceT/vtkicet/doc/man/man3/icetImageCopyDepth.3
@@ -15,8 +15,6 @@
\fBicetImageCopyColor\fP,\fBicetImageCopyDepth\fP\-\- retrieve pixel data from image
@@ -502,10 +502,10 @@
-.igicetImageCopyDepth|)textbf
.PP
.\" NOTE: This file is generated, DO NOT EDIT.
-Index: ParaView-v5.0.0-source/ThirdParty/IceT/vtkicet/doc/man/man3/icetImageGetNumPixels.3
+Index: ParaView-v5.0.1-source/ThirdParty/IceT/vtkicet/doc/man/man3/icetImageGetNumPixels.3
===================================================================
---- ParaView-v5.0.0-source.orig/ThirdParty/IceT/vtkicet/doc/man/man3/icetImageGetNumPixels.3
-+++ ParaView-v5.0.0-source/ThirdParty/IceT/vtkicet/doc/man/man3/icetImageGetNumPixels.3
+--- ParaView-v5.0.1-source.orig/ThirdParty/IceT/vtkicet/doc/man/man3/icetImageGetNumPixels.3
++++ ParaView-v5.0.1-source/ThirdParty/IceT/vtkicet/doc/man/man3/icetImageGetNumPixels.3
@@ -15,11 +15,7 @@
\fBicetImageGetWidth\fP,\fBicetImageGetHeight\fP,\fBicetImageGetNumPixels\fP\-\- get dimensions of an image
@@ -527,10 +527,10 @@
-.igicetImageGetHeight|)textbf
.PP
.\" NOTE: This file is generated, DO NOT EDIT.
-Index: ParaView-v5.0.0-source/ThirdParty/IceT/vtkicet/doc/man/man3/icetSetDepthFormat.3
+Index: ParaView-v5.0.1-source/ThirdParty/IceT/vtkicet/doc/man/man3/icetSetDepthFormat.3
===================================================================
---- ParaView-v5.0.0-source.orig/ThirdParty/IceT/vtkicet/doc/man/man3/icetSetDepthFormat.3
-+++ ParaView-v5.0.0-source/ThirdParty/IceT/vtkicet/doc/man/man3/icetSetDepthFormat.3
+--- ParaView-v5.0.1-source.orig/ThirdParty/IceT/vtkicet/doc/man/man3/icetSetDepthFormat.3
++++ ParaView-v5.0.1-source/ThirdParty/IceT/vtkicet/doc/man/man3/icetSetDepthFormat.3
@@ -15,8 +15,6 @@
\fBicetSetColorFormat\fP,\fBicetSetDepthFormat\fP\-\- specifies the buffer formats for \fBIceT \fPto use when creating images
@@ -547,10 +547,10 @@
-.igicetSetDepthFormat|)textbf
.PP
.\" NOTE: This file is generated, DO NOT EDIT.
-Index: ParaView-v5.0.0-source/ThirdParty/IceT/vtkicet/doc/man/man3/icetImageGetColor.3
+Index: ParaView-v5.0.1-source/ThirdParty/IceT/vtkicet/doc/man/man3/icetImageGetColor.3
===================================================================
---- ParaView-v5.0.0-source.orig/ThirdParty/IceT/vtkicet/doc/man/man3/icetImageGetColor.3
-+++ ParaView-v5.0.0-source/ThirdParty/IceT/vtkicet/doc/man/man3/icetImageGetColor.3
+--- ParaView-v5.0.1-source.orig/ThirdParty/IceT/vtkicet/doc/man/man3/icetImageGetColor.3
++++ ParaView-v5.0.1-source/ThirdParty/IceT/vtkicet/doc/man/man3/icetImageGetColor.3
@@ -15,8 +15,6 @@
\fBicetImageGetColor , \fBicetImageGetDepth\fP\-\- retrieve pixel data buffer from image\fP
@@ -567,10 +567,10 @@
-.igicetImageGetDepth|)textbf
.PP
.\" NOTE: This file is generated, DO NOT EDIT.
-Index: ParaView-v5.0.0-source/ThirdParty/IceT/vtkicet/doc/man/man3/icetImageGetColorcf.3
+Index: ParaView-v5.0.1-source/ThirdParty/IceT/vtkicet/doc/man/man3/icetImageGetColorcf.3
===================================================================
---- ParaView-v5.0.0-source.orig/ThirdParty/IceT/vtkicet/doc/man/man3/icetImageGetColorcf.3
-+++ ParaView-v5.0.0-source/ThirdParty/IceT/vtkicet/doc/man/man3/icetImageGetColorcf.3
+--- ParaView-v5.0.1-source.orig/ThirdParty/IceT/vtkicet/doc/man/man3/icetImageGetColorcf.3
++++ ParaView-v5.0.1-source/ThirdParty/IceT/vtkicet/doc/man/man3/icetImageGetColorcf.3
@@ -15,8 +15,6 @@
\fBicetImageGetColor , \fBicetImageGetDepth\fP\-\- retrieve pixel data buffer from image\fP
@@ -587,10 +587,10 @@
-.igicetImageGetDepth|)textbf
.PP
.\" NOTE: This file is generated, DO NOT EDIT.
-Index: ParaView-v5.0.0-source/ThirdParty/IceT/vtkicet/doc/man/man3/icetImageGetDepthcf.3
+Index: ParaView-v5.0.1-source/ThirdParty/IceT/vtkicet/doc/man/man3/icetImageGetDepthcf.3
===================================================================
---- ParaView-v5.0.0-source.orig/ThirdParty/IceT/vtkicet/doc/man/man3/icetImageGetDepthcf.3
-+++ ParaView-v5.0.0-source/ThirdParty/IceT/vtkicet/doc/man/man3/icetImageGetDepthcf.3
+--- ParaView-v5.0.1-source.orig/ThirdParty/IceT/vtkicet/doc/man/man3/icetImageGetDepthcf.3
++++ ParaView-v5.0.1-source/ThirdParty/IceT/vtkicet/doc/man/man3/icetImageGetDepthcf.3
@@ -15,8 +15,6 @@
\fBicetImageGetColor , \fBicetImageGetDepth\fP\-\- retrieve pixel data buffer from image\fP
@@ -607,10 +607,10 @@
-.igicetImageGetDepth|)textbf
.PP
.\" NOTE: This file is generated, DO NOT EDIT.
-Index: ParaView-v5.0.0-source/ThirdParty/IceT/vtkicet/doc/man/man3/icetImageGetColorcui.3
+Index: ParaView-v5.0.1-source/ThirdParty/IceT/vtkicet/doc/man/man3/icetImageGetColorcui.3
===================================================================
---- ParaView-v5.0.0-source.orig/ThirdParty/IceT/vtkicet/doc/man/man3/icetImageGetColorcui.3
-+++ ParaView-v5.0.0-source/ThirdParty/IceT/vtkicet/doc/man/man3/icetImageGetColorcui.3
+--- ParaView-v5.0.1-source.orig/ThirdParty/IceT/vtkicet/doc/man/man3/icetImageGetColorcui.3
++++ ParaView-v5.0.1-source/ThirdParty/IceT/vtkicet/doc/man/man3/icetImageGetColorcui.3
@@ -15,8 +15,6 @@
\fBicetImageGetColor , \fBicetImageGetDepth\fP\-\- retrieve pixel data buffer from image\fP
@@ -627,10 +627,10 @@
-.igicetImageGetDepth|)textbf
.PP
.\" NOTE: This file is generated, DO NOT EDIT.
-Index: ParaView-v5.0.0-source/ThirdParty/IceT/vtkicet/doc/man/man3/icetImageGetColorcub.3
+Index: ParaView-v5.0.1-source/ThirdParty/IceT/vtkicet/doc/man/man3/icetImageGetColorcub.3
===================================================================
---- ParaView-v5.0.0-source.orig/ThirdParty/IceT/vtkicet/doc/man/man3/icetImageGetColorcub.3
-+++ ParaView-v5.0.0-source/ThirdParty/IceT/vtkicet/doc/man/man3/icetImageGetColorcub.3
+--- ParaView-v5.0.1-source.orig/ThirdParty/IceT/vtkicet/doc/man/man3/icetImageGetColorcub.3
++++ ParaView-v5.0.1-source/ThirdParty/IceT/vtkicet/doc/man/man3/icetImageGetColorcub.3
@@ -15,8 +15,6 @@
\fBicetImageGetColor , \fBicetImageGetDepth\fP\-\- retrieve pixel data buffer from image\fP
diff -Nru paraview-5.0.0+dfsg1/debian/patches/fix_path_paraview.patch paraview-5.0.1+dfsg1/debian/patches/fix_path_paraview.patch
--- paraview-5.0.0+dfsg1/debian/patches/fix_path_paraview.patch 2016-02-04 21:50:55.000000000 +0000
+++ paraview-5.0.1+dfsg1/debian/patches/fix_path_paraview.patch 2016-04-06 14:47:18.000000000 +0000
@@ -2,10 +2,10 @@
Author: Anton Gladky
Last-Update: 2016-02-03
-Index: ParaView-v5.0.0-source/Wrapping/Python/paraview/__init__.py
+Index: ParaView-v5.0.1-source/Wrapping/Python/paraview/__init__.py
===================================================================
---- ParaView-v5.0.0-source.orig/Wrapping/Python/paraview/__init__.py
-+++ ParaView-v5.0.0-source/Wrapping/Python/paraview/__init__.py
+--- ParaView-v5.0.1-source.orig/Wrapping/Python/paraview/__init__.py
++++ ParaView-v5.0.1-source/Wrapping/Python/paraview/__init__.py
@@ -17,6 +17,10 @@ ParaView modules to force backwards comp
from paraview.simple import *
"""
diff -Nru paraview-5.0.0+dfsg1/debian/patches/reduce_cmake_error.cmake paraview-5.0.1+dfsg1/debian/patches/reduce_cmake_error.cmake
--- paraview-5.0.0+dfsg1/debian/patches/reduce_cmake_error.cmake 2016-02-04 21:50:55.000000000 +0000
+++ paraview-5.0.1+dfsg1/debian/patches/reduce_cmake_error.cmake 2016-04-06 14:47:30.000000000 +0000
@@ -3,10 +3,10 @@
Bug-Debian: https://bugs.debian.org/783797
Last-Update: 2015-05-05
-Index: ParaView-v5.0.0-source/VTK/CMake/vtkModuleAPI.cmake
+Index: ParaView-v5.0.1-source/VTK/CMake/vtkModuleAPI.cmake
===================================================================
---- ParaView-v5.0.0-source.orig/VTK/CMake/vtkModuleAPI.cmake
-+++ ParaView-v5.0.0-source/VTK/CMake/vtkModuleAPI.cmake
+--- ParaView-v5.0.1-source.orig/VTK/CMake/vtkModuleAPI.cmake
++++ ParaView-v5.0.1-source/VTK/CMake/vtkModuleAPI.cmake
@@ -50,7 +50,7 @@ macro(vtk_module_load mod)
include(${mod} OPTIONAL)
endif()
diff -Nru paraview-5.0.0+dfsg1/debian/patches/remove_webgl.patch paraview-5.0.1+dfsg1/debian/patches/remove_webgl.patch
--- paraview-5.0.0+dfsg1/debian/patches/remove_webgl.patch 2016-02-04 21:50:55.000000000 +0000
+++ paraview-5.0.1+dfsg1/debian/patches/remove_webgl.patch 2016-04-06 14:48:04.000000000 +0000
@@ -2,10 +2,10 @@
Author: Anton Gladky
Last-Update: 2016-02-03
-Index: ParaView-v5.0.0-source/ParaViewCore/ClientServerCore/Rendering/module.cmake
+Index: ParaView-v5.0.1-source/ParaViewCore/ClientServerCore/Rendering/module.cmake
===================================================================
---- ParaView-v5.0.0-source.orig/ParaViewCore/ClientServerCore/Rendering/module.cmake
-+++ ParaView-v5.0.0-source/ParaViewCore/ClientServerCore/Rendering/module.cmake
+--- ParaView-v5.0.1-source.orig/ParaViewCore/ClientServerCore/Rendering/module.cmake
++++ ParaView-v5.0.1-source/ParaViewCore/ClientServerCore/Rendering/module.cmake
@@ -3,7 +3,7 @@ if(PARAVIEW_USE_PISTON)
list(APPEND __dependencies vtkAcceleratorsPiston)
endif()
diff -Nru paraview-5.0.0+dfsg1/debian/patches/use_system_mpi4py.patch paraview-5.0.1+dfsg1/debian/patches/use_system_mpi4py.patch
--- paraview-5.0.0+dfsg1/debian/patches/use_system_mpi4py.patch 2016-02-04 21:50:55.000000000 +0000
+++ paraview-5.0.1+dfsg1/debian/patches/use_system_mpi4py.patch 2016-04-06 14:48:00.000000000 +0000
@@ -2,10 +2,10 @@
Author: Anton Gladky
Last-Update: 2015-03-24
-Index: paraview-5.0.0+dfsg1/VTK/Parallel/MPI4Py/CMakeLists.txt
+Index: ParaView-v5.0.1-source/VTK/Parallel/MPI4Py/CMakeLists.txt
===================================================================
---- paraview-5.0.0+dfsg1.orig/VTK/Parallel/MPI4Py/CMakeLists.txt
-+++ paraview-5.0.0+dfsg1/VTK/Parallel/MPI4Py/CMakeLists.txt
+--- ParaView-v5.0.1-source.orig/VTK/Parallel/MPI4Py/CMakeLists.txt
++++ ParaView-v5.0.1-source/VTK/Parallel/MPI4Py/CMakeLists.txt
@@ -18,7 +18,7 @@ if(VTK_USE_SYSTEM_MPI4PY)
mark_as_advanced(MPI4PY_INCLUDE_DIR)
endif()
@@ -15,10 +15,10 @@
endif()
include_directories("${MPI4PY_INCLUDE_DIR}")
-Index: paraview-5.0.0+dfsg1/VTK/Parallel/MPI4Py/module.cmake
+Index: ParaView-v5.0.1-source/VTK/Parallel/MPI4Py/module.cmake
===================================================================
---- paraview-5.0.0+dfsg1.orig/VTK/Parallel/MPI4Py/module.cmake
-+++ paraview-5.0.0+dfsg1/VTK/Parallel/MPI4Py/module.cmake
+--- ParaView-v5.0.1-source.orig/VTK/Parallel/MPI4Py/module.cmake
++++ ParaView-v5.0.1-source/VTK/Parallel/MPI4Py/module.cmake
@@ -5,8 +5,6 @@ if (VTK_WRAP_PYTHON)
DEPENDS
vtkParallelMPI
@@ -28,10 +28,10 @@
EXCLUDE_FROM_TCL_WRAPPING
EXCLUDE_FROM_JAVA_WRAPPING
KIT
-Index: paraview-5.0.0+dfsg1/ParaViewCore/ClientServerCore/Core/module.cmake
+Index: ParaView-v5.0.1-source/ParaViewCore/ClientServerCore/Core/module.cmake
===================================================================
---- paraview-5.0.0+dfsg1.orig/ParaViewCore/ClientServerCore/Core/module.cmake
-+++ paraview-5.0.0+dfsg1/ParaViewCore/ClientServerCore/Core/module.cmake
+--- ParaView-v5.0.1-source.orig/ParaViewCore/ClientServerCore/Core/module.cmake
++++ ParaView-v5.0.1-source/ParaViewCore/ClientServerCore/Core/module.cmake
@@ -11,9 +11,6 @@ if (PARAVIEW_ENABLE_PYTHON)
endif ()
diff -Nru paraview-5.0.0+dfsg1/debian/patches/use_system_sqlite.patch paraview-5.0.1+dfsg1/debian/patches/use_system_sqlite.patch
--- paraview-5.0.0+dfsg1/debian/patches/use_system_sqlite.patch 2016-02-04 21:50:55.000000000 +0000
+++ paraview-5.0.1+dfsg1/debian/patches/use_system_sqlite.patch 2016-04-06 14:47:38.000000000 +0000
@@ -3,10 +3,10 @@
Bug-Debian: http://bugs.debian.org/750183
Last-Update: 2014-06-03
-Index: ParaView-v5.0.0-source/VTK/IO/SQL/vtkSQLiteDatabase.cxx
+Index: ParaView-v5.0.1-source/VTK/IO/SQL/vtkSQLiteDatabase.cxx
===================================================================
---- ParaView-v5.0.0-source.orig/VTK/IO/SQL/vtkSQLiteDatabase.cxx
-+++ ParaView-v5.0.0-source/VTK/IO/SQL/vtkSQLiteDatabase.cxx
+--- ParaView-v5.0.1-source.orig/VTK/IO/SQL/vtkSQLiteDatabase.cxx
++++ ParaView-v5.0.1-source/VTK/IO/SQL/vtkSQLiteDatabase.cxx
@@ -29,7 +29,7 @@
#include
#include
@@ -78,10 +78,10 @@
- return vtk_sqlite3_errmsg(this->SQLiteInstance);
+ return sqlite3_errmsg(this->SQLiteInstance);
}
-Index: ParaView-v5.0.0-source/VTK/IO/SQL/vtkSQLiteQuery.cxx
+Index: ParaView-v5.0.1-source/VTK/IO/SQL/vtkSQLiteQuery.cxx
===================================================================
---- ParaView-v5.0.0-source.orig/VTK/IO/SQL/vtkSQLiteQuery.cxx
-+++ ParaView-v5.0.0-source/VTK/IO/SQL/vtkSQLiteQuery.cxx
+--- ParaView-v5.0.1-source.orig/VTK/IO/SQL/vtkSQLiteQuery.cxx
++++ ParaView-v5.0.1-source/VTK/IO/SQL/vtkSQLiteQuery.cxx
@@ -25,7 +25,7 @@
#include "vtkVariant.h"
#include "vtkVariantArray.h"
@@ -422,10 +422,10 @@
{
std::ostringstream errormessage;
errormessage << "sqlite_clear_bindings returned error: " << status;
-Index: ParaView-v5.0.0-source/VTK/IO/SQL/vtkSQLiteQuery.h
+Index: ParaView-v5.0.1-source/VTK/IO/SQL/vtkSQLiteQuery.h
===================================================================
---- ParaView-v5.0.0-source.orig/VTK/IO/SQL/vtkSQLiteQuery.h
-+++ ParaView-v5.0.0-source/VTK/IO/SQL/vtkSQLiteQuery.h
+--- ParaView-v5.0.1-source.orig/VTK/IO/SQL/vtkSQLiteQuery.h
++++ ParaView-v5.0.1-source/VTK/IO/SQL/vtkSQLiteQuery.h
@@ -47,7 +47,7 @@
class vtkSQLiteDatabase;
class vtkVariant;
@@ -444,20 +444,20 @@
bool InitialFetch;
int InitialFetchResult;
char *LastErrorText;
-Index: ParaView-v5.0.0-source/VTK/ThirdParty/sqlite/CMakeLists.txt
+Index: ParaView-v5.0.1-source/VTK/ThirdParty/sqlite/CMakeLists.txt
===================================================================
---- ParaView-v5.0.0-source.orig/VTK/ThirdParty/sqlite/CMakeLists.txt
-+++ ParaView-v5.0.0-source/VTK/ThirdParty/sqlite/CMakeLists.txt
+--- ParaView-v5.0.1-source.orig/VTK/ThirdParty/sqlite/CMakeLists.txt
++++ ParaView-v5.0.1-source/VTK/ThirdParty/sqlite/CMakeLists.txt
@@ -1,4 +1,3 @@
set(vtksqlite_THIRD_PARTY 1)
-set(vtksqlite_LIBRARIES vtksqlite)
+set(vtksqlite_LIBRARIES sqlite3)
vtk_module_export_info()
-add_subdirectory(vtksqlite)
-Index: ParaView-v5.0.0-source/VTK/IO/SQL/vtkSQLiteDatabase.h
+Index: ParaView-v5.0.1-source/VTK/IO/SQL/vtkSQLiteDatabase.h
===================================================================
---- ParaView-v5.0.0-source.orig/VTK/IO/SQL/vtkSQLiteDatabase.h
-+++ ParaView-v5.0.0-source/VTK/IO/SQL/vtkSQLiteDatabase.h
+--- ParaView-v5.0.1-source.orig/VTK/IO/SQL/vtkSQLiteDatabase.h
++++ ParaView-v5.0.1-source/VTK/IO/SQL/vtkSQLiteDatabase.h
@@ -49,7 +49,7 @@
class vtkSQLQuery;
class vtkSQLiteQuery;
diff -Nru paraview-5.0.0+dfsg1/debian/patches/use_system_utf8.patch paraview-5.0.1+dfsg1/debian/patches/use_system_utf8.patch
--- paraview-5.0.0+dfsg1/debian/patches/use_system_utf8.patch 2016-02-04 21:50:55.000000000 +0000
+++ paraview-5.0.1+dfsg1/debian/patches/use_system_utf8.patch 2016-04-06 14:47:54.000000000 +0000
@@ -2,10 +2,10 @@
Author: Anton Gladky
Last-Update: 2016-02-04
-Index: ParaView-v5.0.0-source/VTK/Common/Core/vtkUnicodeString.cxx
+Index: ParaView-v5.0.1-source/VTK/Common/Core/vtkUnicodeString.cxx
===================================================================
---- ParaView-v5.0.0-source.orig/VTK/Common/Core/vtkUnicodeString.cxx
-+++ ParaView-v5.0.0-source/VTK/Common/Core/vtkUnicodeString.cxx
+--- ParaView-v5.0.1-source.orig/VTK/Common/Core/vtkUnicodeString.cxx
++++ ParaView-v5.0.1-source/VTK/Common/Core/vtkUnicodeString.cxx
@@ -41,7 +41,7 @@ vtkUnicodeString::const_iterator::const_
vtkUnicodeString::value_type vtkUnicodeString::const_iterator::operator*() const
@@ -185,10 +185,10 @@
return vtkUnicodeString(from, to);
}
-Index: ParaView-v5.0.0-source/VTK/IO/Core/vtkUTF8TextCodec.cxx
+Index: ParaView-v5.0.1-source/VTK/IO/Core/vtkUTF8TextCodec.cxx
===================================================================
---- ParaView-v5.0.0-source.orig/VTK/IO/Core/vtkUTF8TextCodec.cxx
-+++ ParaView-v5.0.0-source/VTK/IO/Core/vtkUTF8TextCodec.cxx
+--- ParaView-v5.0.1-source.orig/VTK/IO/Core/vtkUTF8TextCodec.cxx
++++ ParaView-v5.0.1-source/VTK/IO/Core/vtkUTF8TextCodec.cxx
@@ -124,7 +124,7 @@ vtkUnicodeString::value_type vtkUTF8Text
throw(std::string("End of Input"));
}
diff -Nru paraview-5.0.0+dfsg1/debian/patches/use_system_xdmf.patch paraview-5.0.1+dfsg1/debian/patches/use_system_xdmf.patch
--- paraview-5.0.0+dfsg1/debian/patches/use_system_xdmf.patch 2016-02-04 21:50:55.000000000 +0000
+++ paraview-5.0.1+dfsg1/debian/patches/use_system_xdmf.patch 2016-04-06 14:47:47.000000000 +0000
@@ -3,10 +3,10 @@
Bug-Debian: http://bugs.debian.org/750182
Last-Update: 2014-06-02
-Index: ParaView-v5.0.0-source/VTK/ThirdParty/xdmf2/CMakeLists.txt
+Index: ParaView-v5.0.1-source/VTK/ThirdParty/xdmf2/CMakeLists.txt
===================================================================
---- ParaView-v5.0.0-source.orig/VTK/ThirdParty/xdmf2/CMakeLists.txt
-+++ ParaView-v5.0.0-source/VTK/ThirdParty/xdmf2/CMakeLists.txt
+--- ParaView-v5.0.1-source.orig/VTK/ThirdParty/xdmf2/CMakeLists.txt
++++ ParaView-v5.0.1-source/VTK/ThirdParty/xdmf2/CMakeLists.txt
@@ -1,44 +1,7 @@
vtk_module_third_party(xdmf2
- LIBRARIES vtkxdmf2
@@ -53,10 +53,10 @@
-add_subdirectory(vtkxdmf2)
-
-vtk_target(vtkxdmf2 NO_INSTALL)
-Index: ParaView-v5.0.0-source/VTK/ThirdParty/xdmf2/vtk_xdmf2.h.in
+Index: ParaView-v5.0.1-source/VTK/ThirdParty/xdmf2/vtk_xdmf2.h.in
===================================================================
---- ParaView-v5.0.0-source.orig/VTK/ThirdParty/xdmf2/vtk_xdmf2.h.in
-+++ ParaView-v5.0.0-source/VTK/ThirdParty/xdmf2/vtk_xdmf2.h.in
+--- ParaView-v5.0.1-source.orig/VTK/ThirdParty/xdmf2/vtk_xdmf2.h.in
++++ ParaView-v5.0.1-source/VTK/ThirdParty/xdmf2/vtk_xdmf2.h.in
@@ -15,5 +15,6 @@
#ifndef vtk_xdmf2_h
#define vtk_xdmf2_h
@@ -64,10 +64,10 @@
+# include
#endif
-Index: ParaView-v5.0.0-source/VTK/IO/Xdmf2/CMakeLists.txt
+Index: ParaView-v5.0.1-source/VTK/IO/Xdmf2/CMakeLists.txt
===================================================================
---- ParaView-v5.0.0-source.orig/VTK/IO/Xdmf2/CMakeLists.txt
-+++ ParaView-v5.0.0-source/VTK/IO/Xdmf2/CMakeLists.txt
+--- ParaView-v5.0.1-source.orig/VTK/IO/Xdmf2/CMakeLists.txt
++++ ParaView-v5.0.1-source/VTK/IO/Xdmf2/CMakeLists.txt
@@ -19,6 +19,3 @@ set_source_files_properties(
vtkXdmfReaderInternal
PROPERTIES WRAP_EXCLUDE_PYTHON 1
@@ -75,10 +75,10 @@
-
-#set(${vtk-module}_NO_HeaderTest 1) # TODO: helper classes and reenable
-vtk_module_library(vtkIOXdmf2 ${Module_SRCS})
-Index: ParaView-v5.0.0-source/VTK/IO/Xdmf3/CMakeLists.txt
+Index: ParaView-v5.0.1-source/VTK/IO/Xdmf3/CMakeLists.txt
===================================================================
---- ParaView-v5.0.0-source.orig/VTK/IO/Xdmf3/CMakeLists.txt
-+++ ParaView-v5.0.0-source/VTK/IO/Xdmf3/CMakeLists.txt
+--- ParaView-v5.0.1-source.orig/VTK/IO/Xdmf3/CMakeLists.txt
++++ ParaView-v5.0.1-source/VTK/IO/Xdmf3/CMakeLists.txt
@@ -18,6 +18,3 @@ set_source_files_properties(
vtkXdmf3SILBuilder
WRAP_EXCLUDE
@@ -86,11 +86,11 @@
-
-include_directories(${XdmfCore_INCLUDE_DIRS} ${XdmfDSM_INCLUDE_DIRS})
-vtk_module_library(vtkIOXdmf3 ${Module_SRCS})
-Index: ParaView-v5.0.0-source/CMake/VTKModules.cmake
+Index: ParaView-v5.0.1-source/CMake/VTKModules.cmake
===================================================================
---- ParaView-v5.0.0-source.orig/CMake/VTKModules.cmake
-+++ ParaView-v5.0.0-source/CMake/VTKModules.cmake
-@@ -324,9 +324,6 @@ set(_vtk_modules
+--- ParaView-v5.0.1-source.orig/CMake/VTKModules.cmake
++++ ParaView-v5.0.1-source/CMake/VTKModules.cmake
+@@ -319,9 +319,6 @@ set(_vtk_modules
# vtkXMLMultiBlockDataWriter
# vtkXMLHierarchicalBoxDataWriter
diff -Nru paraview-5.0.0+dfsg1/debian/rules paraview-5.0.1+dfsg1/debian/rules
--- paraview-5.0.0+dfsg1/debian/rules 2016-02-04 21:50:55.000000000 +0000
+++ paraview-5.0.1+dfsg1/debian/rules 2016-04-07 12:22:58.000000000 +0000
@@ -8,9 +8,12 @@
dh $@ --with python2 --parallel
export LD_LIBRARY_PATH+=:$(CURDIR)/debian/paraview/usr/lib/paraview
+export QT_SELECT=qt5
-export DEB_CFLAGS_MAINT_APPEND = -Wall -pedantic
-export DEB_LDFLAGS_MAINT_APPEND = -Wl,--as-needed
+CPPFLAGS:=$(shell dpkg-buildflags --get CPPFLAGS)
+CFLAGS:=$(shell dpkg-buildflags --get CFLAGS) $(CPPFLAGS) -Wall -pedantic
+CXXFLAGS:=$(shell dpkg-buildflags --get CXXFLAGS) $(CPPFLAGS)
+LDFLAGS:=$(shell dpkg-buildflags --get LDFLAGS) -Wl,--as-needed
# Explicit settings of MPI_* is required see
# http://www.vtk.org/Bug/view.php?id=12572
@@ -57,8 +60,8 @@
-DPARAVIEW_BUILD_PLUGIN_AdiosReader:BOOL=ON \
-DPARAVIEW_BUILD_PLUGIN_EyeDomeLighting:BOOL=ON \
-DPARAVIEW_BUILD_PLUGIN_MobileRemoteControl=OFF \
- -DEigen_DIR=/usr/include/eigen3
-
+ -DEigen_DIR=/usr/include/eigen3 \
+ -DPARAVIEW_QT_VERSION=5
override_dh_auto_configure:
dh_auto_configure -- $(extra_flags)
diff -Nru paraview-5.0.0+dfsg1/ParaViewCore/ClientServerCore/Rendering/vtkPVClientServerSynchronizedRenderers.cxx paraview-5.0.1+dfsg1/ParaViewCore/ClientServerCore/Rendering/vtkPVClientServerSynchronizedRenderers.cxx
--- paraview-5.0.0+dfsg1/ParaViewCore/ClientServerCore/Rendering/vtkPVClientServerSynchronizedRenderers.cxx 2016-01-08 20:21:35.000000000 +0000
+++ paraview-5.0.1+dfsg1/ParaViewCore/ClientServerCore/Rendering/vtkPVClientServerSynchronizedRenderers.cxx 2016-03-28 15:06:22.000000000 +0000
@@ -14,6 +14,7 @@
=========================================================================*/
#include "vtkPVClientServerSynchronizedRenderers.h"
+#include "vtkLZ4Compressor.h"
#include "vtkMultiProcessController.h"
#include "vtkObjectFactory.h"
#include "vtkOpenGLRenderer.h"
@@ -31,7 +32,7 @@
vtkPVClientServerSynchronizedRenderers::vtkPVClientServerSynchronizedRenderers()
{
this->Compressor = NULL;
- this->ConfigureCompressor("vtkSquirtCompressor 0 3");
+ this->ConfigureCompressor("vtkLZ4Compressor 0 3");
this->LossLessCompression = true;
}
@@ -73,6 +74,26 @@
}
//----------------------------------------------------------------------------
+void vtkPVClientServerSynchronizedRenderers::SlaveStartRender()
+{
+ this->Superclass::SlaveStartRender();
+
+#ifdef VTKGL2
+ // In client-server mode, we want all the server ranks to simply render using
+ // a black background. That makes it easier to blend the image we obtain from
+ // the server rank on top of the background rendered locally on the client.
+ // vtkPVSynchronizedRenderer only creates
+ // vtkPVClientServerSynchronizedRenderers in client-server mode that support
+ // image delivery to client (i.e. not in tile-display, or cave mode).
+ // Hence, we know it won't affect server ranks that do display the rendered
+ // result. (Fixes BUG #0015961).
+ this->Renderer->SetBackground(0, 0, 0);
+ this->Renderer->SetGradientBackground(false);
+ this->Renderer->SetTexturedBackground(false);
+#endif
+}
+
+//----------------------------------------------------------------------------
void vtkPVClientServerSynchronizedRenderers::SlaveEndRender()
{
assert(this->ParallelController->IsA("vtkSocketController") ||
@@ -161,6 +182,10 @@
{
comp=vtkZlibImageCompressor::New();
}
+ else if (className == "vtkLZ4Compressor")
+ {
+ comp = vtkLZ4Compressor::New();
+ }
else if (className=="NULL" || className.empty())
{
this->SetCompressor(0);
@@ -194,15 +219,13 @@
// vtkSynchronizedRenderers::PushImageToScreen() should clear the screen by
// default -- I can argue not.
int layer = this->Renderer->GetLayer();
+ int prev = this->Renderer->GetPreserveColorBuffer();
if (layer == 0)
{
- this->Renderer->SetLayer(1);
+ this->Renderer->SetPreserveColorBuffer(1);
}
this->Superclass::PushImageToScreen();
- if (layer == 0)
- {
- this->Renderer->SetLayer(0);
- }
+ this->Renderer->SetPreserveColorBuffer(prev);
}
//----------------------------------------------------------------------------
diff -Nru paraview-5.0.0+dfsg1/ParaViewCore/ClientServerCore/Rendering/vtkPVClientServerSynchronizedRenderers.h paraview-5.0.1+dfsg1/ParaViewCore/ClientServerCore/Rendering/vtkPVClientServerSynchronizedRenderers.h
--- paraview-5.0.0+dfsg1/ParaViewCore/ClientServerCore/Rendering/vtkPVClientServerSynchronizedRenderers.h 2016-01-08 20:21:35.000000000 +0000
+++ paraview-5.0.1+dfsg1/ParaViewCore/ClientServerCore/Rendering/vtkPVClientServerSynchronizedRenderers.h 2016-03-28 15:06:22.000000000 +0000
@@ -67,6 +67,7 @@
void Decompress(vtkUnsignedCharArray* input, vtkUnsignedCharArray* outputBuffer);
virtual void MasterEndRender();
+ virtual void SlaveStartRender();
virtual void SlaveEndRender();
vtkImageCompressor* Compressor;
diff -Nru paraview-5.0.0+dfsg1/ParaViewCore/ServerManager/Core/vtkSMArrayListDomain.cxx paraview-5.0.1+dfsg1/ParaViewCore/ServerManager/Core/vtkSMArrayListDomain.cxx
--- paraview-5.0.0+dfsg1/ParaViewCore/ServerManager/Core/vtkSMArrayListDomain.cxx 2016-01-08 20:21:35.000000000 +0000
+++ paraview-5.0.1+dfsg1/ParaViewCore/ServerManager/Core/vtkSMArrayListDomain.cxx 2016-03-28 15:06:22.000000000 +0000
@@ -212,7 +212,7 @@
{
continue;
}
- assert(acceptable_as != vtkSMInputArrayDomain::ANY);
+ assert(acceptable_as != vtkSMInputArrayDomain::ANY && acceptable_as != vtkSMInputArrayDomain::ANY_EXCEPT_FIELD);
// iterate over all arrays and add them to the list, if acceptable.
for (int idx=0, maxIdx=attrInfo->GetNumberOfArrays(); idx < maxIdx; ++idx)
diff -Nru paraview-5.0.0+dfsg1/ParaViewCore/ServerManager/Core/vtkSMInputArrayDomain.cxx paraview-5.0.1+dfsg1/ParaViewCore/ServerManager/Core/vtkSMInputArrayDomain.cxx
--- paraview-5.0.0+dfsg1/ParaViewCore/ServerManager/Core/vtkSMInputArrayDomain.cxx 2016-01-08 20:21:35.000000000 +0000
+++ paraview-5.0.1+dfsg1/ParaViewCore/ServerManager/Core/vtkSMInputArrayDomain.cxx 2016-03-28 15:06:22.000000000 +0000
@@ -31,17 +31,18 @@
"point",
"cell",
"field",
- "any",
+ "any-except-field",
"vertex",
"edge",
"row",
+ "any",
NULL
};
//---------------------------------------------------------------------------
vtkSMInputArrayDomain::vtkSMInputArrayDomain()
{
- this->AttributeType = vtkSMInputArrayDomain::ANY;
+ this->AttributeType = vtkSMInputArrayDomain::ANY_EXCEPT_FIELD;
this->NumberOfComponents = 0;
}
@@ -142,6 +143,29 @@
attribute_type == ROW;
}
+ if (required_type == ANY_EXCEPT_FIELD)
+ {
+ // Try out all attribute types except field data sequentially.
+ int attribute_types_to_try[] =
+ {
+ vtkDataObject::POINT,
+ vtkDataObject::CELL,
+ vtkDataObject::VERTEX,
+ vtkDataObject::EDGE,
+ vtkDataObject::ROW,
+ -1
+ };
+ for (int cc=0; attribute_types_to_try[cc] != -1; ++cc)
+ {
+ if (vtkSMInputArrayDomain::IsAttributeTypeAcceptable(
+ attribute_types_to_try[cc], attribute_type, acceptable_as_type))
+ {
+ return true;
+ }
+ }
+ return false;
+ }
+
switch (attribute_type)
{
case vtkDataObject::POINT:
diff -Nru paraview-5.0.0+dfsg1/ParaViewCore/ServerManager/Core/vtkSMInputArrayDomain.h paraview-5.0.1+dfsg1/ParaViewCore/ServerManager/Core/vtkSMInputArrayDomain.h
--- paraview-5.0.0+dfsg1/ParaViewCore/ServerManager/Core/vtkSMInputArrayDomain.h 2016-01-08 20:21:35.000000000 +0000
+++ paraview-5.0.1+dfsg1/ParaViewCore/ServerManager/Core/vtkSMInputArrayDomain.h 2016-03-28 15:06:22.000000000 +0000
@@ -29,17 +29,22 @@
// appropriate.
//
// Supported XML attributes:
-// \li \c attribute_type : (optional) value can be 'point', 'cell', 'any',
-// 'vertex', 'edge', 'row', 'none'. If no specified,
-// 'any' is assumed. This indicates the attribute type
-// for acceptable arrays. Note "any" implies all types
-// of attribute data (thus doesn't include field data
-// since it's not attribute data).
+// \li \c attribute_type : (optional) value can be 'point', 'cell', 'field',
+// 'vertex', 'edge', 'row', 'none', 'any-except-field', 'any'.
+// If not specified, 'any-except-field' is assumed. This
+// indicates the attribute type for acceptable arrays.
// \li \c number_of_components : (optional) 0 by default. If non-zero, indicates
// the component count for acceptable arrays.
//
// This domain doesn't support any required properties (to help clean old
// code, we print a warning if any required properties are specified).
+//
+// .SECTION Note on change in behaviour
+// Prior to ParaView 5.0, attribute_type="any" meant all attributes excepting
+// field data. For being consistent with general understanding of "any", this
+// has been changed to include field data arrays since 5.0. Use
+// "any-except-field" for cases where the intention is to match any attribute arrays except
+// field data arrays.
#ifndef vtkSMInputArrayDomain_h
#define vtkSMInputArrayDomain_h
@@ -96,11 +101,12 @@
POINT = vtkDataObject::POINT,
CELL = vtkDataObject::CELL,
FIELD = vtkDataObject::FIELD,
- ANY = vtkDataObject::POINT_THEN_CELL,
+ ANY_EXCEPT_FIELD = vtkDataObject::POINT_THEN_CELL,
VERTEX = vtkDataObject::VERTEX,
EDGE = vtkDataObject::EDGE,
ROW = vtkDataObject::ROW,
- NUMBER_OF_ATTRIBUTE_TYPES = vtkDataObject::NUMBER_OF_ATTRIBUTE_TYPES
+ ANY = vtkDataObject::NUMBER_OF_ATTRIBUTE_TYPES,
+ NUMBER_OF_ATTRIBUTE_TYPES = ANY+1,
};
// Description:
diff -Nru paraview-5.0.0+dfsg1/ParaViewCore/ServerManager/Core/vtkSMParaViewPipelineController.cxx paraview-5.0.1+dfsg1/ParaViewCore/ServerManager/Core/vtkSMParaViewPipelineController.cxx
--- paraview-5.0.0+dfsg1/ParaViewCore/ServerManager/Core/vtkSMParaViewPipelineController.cxx 2016-01-08 20:21:35.000000000 +0000
+++ paraview-5.0.1+dfsg1/ParaViewCore/ServerManager/Core/vtkSMParaViewPipelineController.cxx 2016-03-28 15:07:03.000000000 +0000
@@ -996,6 +996,10 @@
if (proxy)
{
this->InitializeProxy(proxy);
+ if (strcmp(iter->GetProxyName(), "RenderViewSettings") == 0)
+ {
+ this->HandleLZ4Issue(proxy);
+ }
pxm->RegisterProxy(iter->GetGroupName(), iter->GetProxyName(), proxy);
proxy->UpdateVTKObjects();
proxy->Delete();
@@ -1303,6 +1307,42 @@
}
//----------------------------------------------------------------------------
+void vtkSMParaViewPipelineController::HandleLZ4Issue(vtkSMProxy* renderViewSettings)
+{
+ vtkSMProperty* compressorConfig = renderViewSettings->GetProperty("CompressorConfig");
+ if (!compressorConfig)
+ {
+ return;
+ }
+
+ if (vtkPVXMLElement* hints = compressorConfig->GetHints())
+ {
+ if (hints->FindNestedElementByName("SupportsLZ4") != NULL)
+ {
+ return;
+ }
+ }
+
+ // We're dealing with an server that doesn't support LZ4. If the default is to
+ // use LZ4 change it to not use LZ4.
+ vtkSMPropertyHelper helper(compressorConfig);
+ if (strncmp(helper.GetAsString(), "vtkLZ4Compressor", strlen("vtkLZ4Compressor")) != 0)
+ {
+ return;
+ }
+ std::string newvalue("vtkSquirtCompressor");
+ newvalue += helper.GetAsString() + strlen("vtkLZ4Compressor");
+ helper.Set(newvalue.c_str());
+ vtkWarningMacro(
+ "You have connected to a server that doesn't support 'LZ4' compression for delivering "
+ "remotely rendered images to the client. 'LZ4' is your current default "
+ "(and recommended) compression mode. Switching to 'SQUIRT'. "
+ "Remote rendering that uses translucent surfaces or volumes will have artifacts "
+ "with SQUIRT. Switch to zlib or no compression to avoid those, if needed.");
+ renderViewSettings->UpdateVTKObjects();
+}
+
+//----------------------------------------------------------------------------
void vtkSMParaViewPipelineController::PrintSelf(ostream& os, vtkIndent indent)
{
this->Superclass::PrintSelf(os, indent);
diff -Nru paraview-5.0.0+dfsg1/ParaViewCore/ServerManager/Core/vtkSMParaViewPipelineController.h paraview-5.0.1+dfsg1/ParaViewCore/ServerManager/Core/vtkSMParaViewPipelineController.h
--- paraview-5.0.0+dfsg1/ParaViewCore/ServerManager/Core/vtkSMParaViewPipelineController.h 2016-01-08 20:21:35.000000000 +0000
+++ paraview-5.0.1+dfsg1/ParaViewCore/ServerManager/Core/vtkSMParaViewPipelineController.h 2016-03-28 15:07:03.000000000 +0000
@@ -255,6 +255,15 @@
vtkSMParaViewPipelineController(const vtkSMParaViewPipelineController&); // Not implemented
void operator=(const vtkSMParaViewPipelineController&); // Not implemented
+ // Description:
+ // We added support for LZ4 in ParaView 5.0.1. LZ4 is a good default
+ // compression algo to use for client-server images. However since the
+ // implementation is not present in 5.0.0, we have to change the explicitly
+ // avoid choosing LZ4 when connected to ParaView 5.0.0 server using a ParaView
+ // 5.0.1 client. This code does that. We can remove this when we change
+ // version to 5.1 or later.
+ void HandleLZ4Issue(vtkSMProxy* renderViewSettings);
+
class vtkInternals;
vtkInternals* Internals;
//ETX
diff -Nru paraview-5.0.0+dfsg1/ParaViewCore/ServerManager/Default/settings.xml paraview-5.0.1+dfsg1/ParaViewCore/ServerManager/Default/settings.xml
--- paraview-5.0.0+dfsg1/ParaViewCore/ServerManager/Default/settings.xml 2016-01-08 20:21:35.000000000 +0000
+++ paraview-5.0.1+dfsg1/ParaViewCore/ServerManager/Default/settings.xml 2016-03-28 15:06:22.000000000 +0000
@@ -522,7 +522,7 @@
@@ -530,6 +530,9 @@
Set the compression method used when transferring rendered images from
the server to the client.
+
+
+
GetCurrentMetaData()->Get(vtkCompositeDataSet::NAME());
+ std::stringstream ssname;
+ ssname << it->GetCurrentFlatIndex() - 1;
+ const char* name = it->GetCurrentMetaData()->Get(vtkCompositeDataSet::NAME());
+ if (name)
+ {
+ ssname << ": " << name;
+ }
+ compositeName = ssname.str();
break;
}
it->GoToNextItem();
diff -Nru paraview-5.0.0+dfsg1/ParaViewCore/ServerManager/Rendering/vtkSMCameraLink.cxx paraview-5.0.1+dfsg1/ParaViewCore/ServerManager/Rendering/vtkSMCameraLink.cxx
--- paraview-5.0.0+dfsg1/ParaViewCore/ServerManager/Rendering/vtkSMCameraLink.cxx 2016-01-08 20:21:35.000000000 +0000
+++ paraview-5.0.1+dfsg1/ParaViewCore/ServerManager/Rendering/vtkSMCameraLink.cxx 2016-03-28 15:06:22.000000000 +0000
@@ -134,6 +134,7 @@
"CenterOfRotation", "CenterOfRotation",
"CameraParallelScaleInfo", "CameraParallelScale",
"RotationFactor", "RotationFactor",
+ "CameraParallelProjection", "CameraParallelProjection",
0
};
diff -Nru paraview-5.0.0+dfsg1/ParaViewCore/ServerManager/Rendering/vtkSMTransferFunctionProxy.cxx paraview-5.0.1+dfsg1/ParaViewCore/ServerManager/Rendering/vtkSMTransferFunctionProxy.cxx
--- paraview-5.0.0+dfsg1/ParaViewCore/ServerManager/Rendering/vtkSMTransferFunctionProxy.cxx 2016-01-08 20:21:35.000000000 +0000
+++ paraview-5.0.1+dfsg1/ParaViewCore/ServerManager/Rendering/vtkSMTransferFunctionProxy.cxx 2016-03-28 15:06:22.000000000 +0000
@@ -607,7 +607,7 @@
// Since rescaling gets tricky especially when log scaling is involved
// either in the preset or in the proxy we're loading the preset values on,
// we will just "rescale" the range in the preset itself.
- Json::Value& pointsValue = preset.isMember("RGBPoints")?
+ Json::Value& pointsValue = this->GetProperty("RGBPoints")?
preset["RGBPoints"] : preset["Points"];
if (pointsValue.isNull() || !pointsValue.isArray() ||
(pointsValue.size() % 4) != 0 || pointsValue.size() == 0)
diff -Nru paraview-5.0.0+dfsg1/ParaViewCore/ServerManager/SMApplication/Resources/filters.xml paraview-5.0.1+dfsg1/ParaViewCore/ServerManager/SMApplication/Resources/filters.xml
--- paraview-5.0.0+dfsg1/ParaViewCore/ServerManager/SMApplication/Resources/filters.xml 2016-01-08 20:21:35.000000000 +0000
+++ paraview-5.0.1+dfsg1/ParaViewCore/ServerManager/SMApplication/Resources/filters.xml 2016-03-28 15:07:03.000000000 +0000
@@ -6712,7 +6712,7 @@
@@ -8283,8 +8283,7 @@
name="input_type">
-
This property specifies the input to the Stream Tracer
filter.
diff -Nru paraview-5.0.0+dfsg1/ParaViewCore/ServerManager/SMApplication/Resources/proxies_opengl1.xml paraview-5.0.1+dfsg1/ParaViewCore/ServerManager/SMApplication/Resources/proxies_opengl1.xml
--- paraview-5.0.0+dfsg1/ParaViewCore/ServerManager/SMApplication/Resources/proxies_opengl1.xml 2016-01-08 20:21:35.000000000 +0000
+++ paraview-5.0.1+dfsg1/ParaViewCore/ServerManager/SMApplication/Resources/proxies_opengl1.xml 2016-03-28 15:06:22.000000000 +0000
@@ -21,8 +21,7 @@
name="input_type">
-
+
Set the input to the representation.
diff -Nru paraview-5.0.0+dfsg1/ParaViewCore/ServerManager/SMApplication/Resources/proxies_opengl2.xml paraview-5.0.1+dfsg1/ParaViewCore/ServerManager/SMApplication/Resources/proxies_opengl2.xml
--- paraview-5.0.0+dfsg1/ParaViewCore/ServerManager/SMApplication/Resources/proxies_opengl2.xml 2016-01-08 20:21:35.000000000 +0000
+++ paraview-5.0.1+dfsg1/ParaViewCore/ServerManager/SMApplication/Resources/proxies_opengl2.xml 2016-03-28 15:06:22.000000000 +0000
@@ -14,8 +14,7 @@
name="input_type">
-
+
Set the input to the representation.
diff -Nru paraview-5.0.0+dfsg1/ParaViewCore/ServerManager/SMApplication/Resources/pythonfilter.xml paraview-5.0.1+dfsg1/ParaViewCore/ServerManager/SMApplication/Resources/pythonfilter.xml
--- paraview-5.0.0+dfsg1/ParaViewCore/ServerManager/SMApplication/Resources/pythonfilter.xml 2016-01-08 20:21:35.000000000 +0000
+++ paraview-5.0.1+dfsg1/ParaViewCore/ServerManager/SMApplication/Resources/pythonfilter.xml 2016-03-28 15:06:22.000000000 +0000
@@ -92,7 +92,7 @@
-
Set the input of the filter.
diff -Nru paraview-5.0.0+dfsg1/ParaViewCore/ServerManager/SMApplication/Resources/utilities.xml paraview-5.0.1+dfsg1/ParaViewCore/ServerManager/SMApplication/Resources/utilities.xml
--- paraview-5.0.0+dfsg1/ParaViewCore/ServerManager/SMApplication/Resources/utilities.xml 2016-01-08 20:21:35.000000000 +0000
+++ paraview-5.0.1+dfsg1/ParaViewCore/ServerManager/SMApplication/Resources/utilities.xml 2016-03-28 15:07:03.000000000 +0000
@@ -2745,7 +2745,38 @@
+
+ CinemaExporter is a render window
+ exporter which writes out the renderered scene as a
+ Cinema database.
+
+ Name of the file to be written.
+
+
+
+ Script string defining the view selection.
+
+
+ Script string defining the track selection.
+
+
+
+
+
+
+
+
@@ -4171,11 +4171,9 @@
name="VolumeRenderingMode"
number_of_elements="1">
-
- value="2" />
-
+
+
+
-
+
Proxy to show a selection as geometry.
-
+
#include
@@ -54,9 +55,6 @@
#include
-#ifdef PARAVIEW_USE_MPI
-#include "vtkMultiProcessController.h"
-#endif
#include "cgio_helpers.h"
@@ -120,12 +118,10 @@
this->SetNumberOfInputPorts(0);
this->SetNumberOfOutputPorts(1);
-#ifdef PARAVIEW_USE_MPI
this->ProcRank = 0;
this->ProcSize = 1;
this->Controller = NULL;
this->SetController(vtkMultiProcessController::GetGlobalController());
-#endif
}
//----------------------------------------------------------------------------
@@ -140,13 +136,9 @@
this->BaseSelection->RemoveObserver(this->SelectionObserver);
this->BaseSelection->Delete();
this->SelectionObserver->Delete();
-
-#ifdef PARAVIEW_USE_MPI
this->SetController(NULL);
-#endif
}
-#ifdef PARAVIEW_USE_MPI
//----------------------------------------------------------------------------
void vtkCGNSReader::SetController(vtkMultiProcessController* c)
{
@@ -177,7 +169,6 @@
this->ProcSize = 1;
}
}
-#endif
//------------------------------------------------------------------------------
bool vtkCGNSReader::IsVarEnabled(CGNS_ENUMT(GridLocation_t) varcentering,
@@ -2168,7 +2159,6 @@
int nSelectedBases = 0;
unsigned int blockIndex = 0 ;
-#ifdef PARAVIEW_USE_MPI
int processNumber;
int numProcessors;
int startRange, endRange;
@@ -2252,23 +2242,12 @@
this->LoadBndPatch = 0;
this->CreateEachSolutionAsBlock = 0;
}
-#endif
if (!this->Internal.Parse(this->FileName))
{
return 0;
}
-#ifndef PARAVIEW_USE_MPI
- // get the info object
- vtkInformation *outInfo = outputVector->GetInformationObject(0);
-
- // get the output
- vtkMultiBlockDataSet *output =
- vtkMultiBlockDataSet::SafeDownCast(
- outInfo->Get(vtkMultiBlockDataSet::DATA_OBJECT()));
-#endif
-
vtkMultiBlockDataSet* rootNode = output;
vtkDebugMacro(<< "Start Loading CGNS data");
@@ -2443,15 +2422,10 @@
}
}
-#ifdef PARAVIEW_USE_MPI
int zonemin = baseToZoneRange[numBase][0];
int zonemax = baseToZoneRange[numBase][1];
for (int zone = zonemin; zone < zonemax; ++zone)
{
-#else
- for (int zone = 0; zone < nzones; ++zone)
- {
-#endif
CGNSRead::char_33 zoneName;
cgsize_t zsize[9];
CGNS_ENUMT(ZoneType_t) zt = CGNS_ENUMV(ZoneTypeNull);
@@ -2589,7 +2563,6 @@
vtkInformationVector *outputVector)
{
-#ifdef PARAVIEW_USE_MPI
// Setting CAN_HANDLE_PIECE_REQUEST to 1 indicates to the
// upstream consumer that I can provide the same number of pieces
// as there are number of processors
@@ -2601,7 +2574,6 @@
if (this->ProcRank == 0)
{
-#endif
if (!this->FileName)
{
vtkErrorMacro(<< "File name not set\n");
@@ -2625,14 +2597,12 @@
vtkErrorMacro(<< "Failed to parse cgns file: " << this->FileName);
return false;
}
-#ifdef PARAVIEW_USE_MPI
} // End_ProcRank_0
if (this->ProcSize > 1)
{
this->Broadcast(this->Controller);
}
-#endif
this->NumberOfBases = this->Internal.GetNumberOfBaseNodes();
@@ -2973,7 +2943,6 @@
static_cast(clientdata)->Modified();
}
-#ifdef PARAVIEW_USE_MPI
//------------------------------------------------------------------------------
void vtkCGNSReader::Broadcast(vtkMultiProcessController* ctrl)
{
@@ -2983,4 +2952,3 @@
this->Internal.Broadcast(ctrl, rank);
}
}
-#endif
diff -Nru paraview-5.0.0+dfsg1/ParaViewCore/VTKExtensions/CGNSReader/vtkCGNSReader.h paraview-5.0.1+dfsg1/ParaViewCore/VTKExtensions/CGNSReader/vtkCGNSReader.h
--- paraview-5.0.0+dfsg1/ParaViewCore/VTKExtensions/CGNSReader/vtkCGNSReader.h 2016-01-08 20:21:35.000000000 +0000
+++ paraview-5.0.1+dfsg1/ParaViewCore/VTKExtensions/CGNSReader/vtkCGNSReader.h 2016-03-28 15:07:03.000000000 +0000
@@ -35,18 +35,13 @@
#include "vtkMultiBlockDataSetAlgorithm.h"
#include "vtkPVVTKExtensionsCGNSReaderModule.h" // for export macro
-#include "vtkPVConfig.h" // For PARAVIEW_USE_MPI
-
#include "vtkCGNSReaderInternal.h" // For parsing information request
class vtkDataSet;
class vtkDataArraySelection;
class vtkCallbackCommand;
-#ifdef PARAVIEW_USE_MPI
class vtkMultiProcessController;
-#endif
-
class VTKPVVTKEXTENSIONSCGNSREADER_EXPORT vtkCGNSReader : public vtkMultiBlockDataSetAlgorithm
{
public:
@@ -102,7 +97,6 @@
vtkGetMacro(CreateEachSolutionAsBlock,int);
vtkBooleanMacro(CreateEachSolutionAsBlock,int);
-#ifdef PARAVIEW_USE_MPI
// Description:
// Set/get the communication object used to relay a list of files
// from the rank 0 process to all others. This is the only interprocess
@@ -114,8 +108,6 @@
// Sends metadata (that read from the input file, not settings modified
// through this API) from the rank 0 node to all other processes in a job.
void Broadcast( vtkMultiProcessController* ctrl );
-#endif
-
protected:
vtkCGNSReader();
@@ -150,11 +142,9 @@
int GetUnstructuredZone(int base, int zone,
int cell_dim, int phys_dim, cgsize_t *zsize,
vtkMultiBlockDataSet *mbase);
-#ifdef PARAVIEW_USE_MPI
vtkMultiProcessController* Controller;
vtkIdType ProcRank;
vtkIdType ProcSize;
-#endif
#ifndef __WRAP__
bool IsVarEnabled(CGNS_ENUMT(GridLocation_t) varcentering,
diff -Nru paraview-5.0.0+dfsg1/ParaViewCore/VTKExtensions/CGNSReader/vtkCGNSReaderInternal.cxx paraview-5.0.1+dfsg1/ParaViewCore/VTKExtensions/CGNSReader/vtkCGNSReaderInternal.cxx
--- paraview-5.0.0+dfsg1/ParaViewCore/VTKExtensions/CGNSReader/vtkCGNSReaderInternal.cxx 2016-01-08 20:21:35.000000000 +0000
+++ paraview-5.0.1+dfsg1/ParaViewCore/VTKExtensions/CGNSReader/vtkCGNSReaderInternal.cxx 2016-03-28 15:07:03.000000000 +0000
@@ -796,7 +796,6 @@
}
}
-#ifdef PARAVIEW_USE_MPI
//------------------------------------------------------------------------------
static void BroadcastCGNSString(vtkMultiProcessController* ctrl,
CGNSRead::char_33 & str)
@@ -1027,6 +1026,5 @@
CGNSRead::BroadcastString(controller, this->LastReadFilename, rank);
BroadcastDoubleVector(controller, this->GlobalTime, rank);
}
-#endif
}
diff -Nru paraview-5.0.0+dfsg1/ParaViewCore/VTKExtensions/CGNSReader/vtkCGNSReaderInternal.h paraview-5.0.1+dfsg1/ParaViewCore/VTKExtensions/CGNSReader/vtkCGNSReaderInternal.h
--- paraview-5.0.0+dfsg1/ParaViewCore/VTKExtensions/CGNSReader/vtkCGNSReaderInternal.h 2016-01-08 20:21:35.000000000 +0000
+++ paraview-5.0.1+dfsg1/ParaViewCore/VTKExtensions/CGNSReader/vtkCGNSReaderInternal.h 2016-03-28 15:06:22.000000000 +0000
@@ -27,8 +27,6 @@
#ifndef vtkCGNSReaderInternal_h
#define vtkCGNSReaderInternal_h
-#include "vtkPVConfig.h" // For PARAVIEW_USE_MPI
-
#include // DataType, and other definition
#include // Low level IO for fast parsing
@@ -41,9 +39,7 @@
#include "vtkPoints.h"
#include "vtkIdTypeArray.h"
-#ifdef PARAVIEW_USE_MPI
#include "vtkMultiProcessController.h"
-#endif
namespace CGNSRead
{
@@ -265,9 +261,7 @@
// print object debugging purpose
void PrintSelf(std::ostream& os);
-#ifdef PARAVIEW_USE_MPI
void Broadcast ( vtkMultiProcessController* controller, int rank );
-#endif
// Description
// Constructor/Destructor
diff -Nru paraview-5.0.0+dfsg1/ParaViewCore/VTKExtensions/Default/vtkGridAxes3DActor.cxx paraview-5.0.1+dfsg1/ParaViewCore/VTKExtensions/Default/vtkGridAxes3DActor.cxx
--- paraview-5.0.0+dfsg1/ParaViewCore/VTKExtensions/Default/vtkGridAxes3DActor.cxx 2016-01-08 20:21:35.000000000 +0000
+++ paraview-5.0.1+dfsg1/ParaViewCore/VTKExtensions/Default/vtkGridAxes3DActor.cxx 2016-03-28 15:06:22.000000000 +0000
@@ -585,7 +585,11 @@
me = next;
next = vertex;
}
- if (edge_count[EdgeType(viewportPoints[me], viewportPoints[next])] != 1)
+ // edge_count is 1 for no sharing, 2 for sharing between faces and
+ // 3 if there is both sharing between faces and within the same face
+ // (for instance for rendering a box aligned with the ortoghonal
+ // axes in parallel projection
+ if (edge_count[EdgeType(viewportPoints[me], viewportPoints[next])] == 2)
{
overrides[vertex] = false;
}
diff -Nru paraview-5.0.0+dfsg1/ParaViewCore/VTKExtensions/Rendering/CMakeLists.txt paraview-5.0.1+dfsg1/ParaViewCore/VTKExtensions/Rendering/CMakeLists.txt
--- paraview-5.0.0+dfsg1/ParaViewCore/VTKExtensions/Rendering/CMakeLists.txt 2016-01-08 20:21:35.000000000 +0000
+++ paraview-5.0.1+dfsg1/ParaViewCore/VTKExtensions/Rendering/CMakeLists.txt 2016-03-28 15:07:03.000000000 +0000
@@ -40,6 +40,7 @@
vtkImageCompressor.cxx
vtkKdTreeGenerator.cxx
vtkKdTreeManager.cxx
+ vtkLZ4Compressor.cxx
vtkMarkSelectedRows.cxx
vtkMultiSliceContextItem.cxx
vtkOrderedCompositeDistributor.cxx
@@ -81,6 +82,7 @@
vtkViewLayout.cxx
vtkVolumeRepresentationPreprocessor.cxx
vtkZlibImageCompressor.cxx
+ vtkCinemaExporter.cxx
)
# Disabled unless using the OpenGL backend.
diff -Nru paraview-5.0.0+dfsg1/ParaViewCore/VTKExtensions/Rendering/module.cmake paraview-5.0.1+dfsg1/ParaViewCore/VTKExtensions/Rendering/module.cmake
--- paraview-5.0.0+dfsg1/ParaViewCore/VTKExtensions/Rendering/module.cmake 2016-01-08 20:21:35.000000000 +0000
+++ paraview-5.0.1+dfsg1/ParaViewCore/VTKExtensions/Rendering/module.cmake 2016-03-28 15:07:03.000000000 +0000
@@ -51,6 +51,7 @@
vtkRenderingVolumeAMR
PRIVATE_DEPENDS
vtkzlib
+ vtklz4
COMPILE_DEPENDS
vtkUtilitiesEncodeString
diff -Nru paraview-5.0.0+dfsg1/ParaViewCore/VTKExtensions/Rendering/vtkCinemaExporter.cxx paraview-5.0.1+dfsg1/ParaViewCore/VTKExtensions/Rendering/vtkCinemaExporter.cxx
--- paraview-5.0.0+dfsg1/ParaViewCore/VTKExtensions/Rendering/vtkCinemaExporter.cxx 1970-01-01 00:00:00.000000000 +0000
+++ paraview-5.0.1+dfsg1/ParaViewCore/VTKExtensions/Rendering/vtkCinemaExporter.cxx 2016-03-28 15:06:22.000000000 +0000
@@ -0,0 +1,126 @@
+/*=========================================================================
+
+ Program: ParaView
+ Module: vtkCinemaExporter.cxx
+
+ Copyright (c) Kitware, Inc.
+ All rights reserved.
+ See Copyright.txt or http://www.paraview.org/HTML/Copyright.html for details.
+
+ This software is distributed WITHOUT ANY WARRANTY; without even
+ the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
+ PURPOSE. See the above copyright notice for more information.
+
+=========================================================================*/
+#include "vtkObjectFactory.h"
+#include "vtkCinemaExporter.h"
+#include "vtkStdString.h"
+#include "vtkPVConfig.h" // needed for PARAVIEW_ENABLE_PYTHON
+#ifdef PARAVIEW_ENABLE_PYTHON
+#include "vtkPythonInterpreter.h"
+#endif
+
+
+vtkStandardNewMacro(vtkCinemaExporter);
+
+vtkCinemaExporter::vtkCinemaExporter()
+: vtkExporter()
+, FileName(NULL)
+, ViewSelection(NULL)
+, TrackSelection(NULL)
+{
+}
+
+vtkCinemaExporter::~vtkCinemaExporter()
+{
+ delete[] this->FileName;
+ delete[] this->ViewSelection;
+ delete[] this->TrackSelection;
+}
+
+void vtkCinemaExporter::WriteData()
+{
+ if (!this->FileName)
+ {
+ vtkErrorMacro(<< "No file name was specified!");
+ return;
+ }
+
+ if (!this->checkInterpreterInitialization())
+ {
+ return;
+ }
+
+#ifdef PARAVIEW_ENABLE_PYTHON
+ int const r = vtkPythonInterpreter::RunSimpleString(this->GetPythonScript().c_str());
+
+ if (r != 0)
+ {
+ vtkErrorMacro(<< "An error occurred while running the Cinema export script!");
+ return;
+ }
+#endif
+}
+
+bool vtkCinemaExporter::checkInterpreterInitialization()
+{
+#ifdef PARAVIEW_ENABLE_PYTHON
+ if (!vtkPythonInterpreter::IsInitialized())
+ {
+ // Initialize() returns false if already initialized, so a second check is necessary.
+ // (1) is recommended for embedded in the documentation (https://docs.python.org/2/c-api/init.html)
+ vtkPythonInterpreter::Initialize(1);
+ if (!vtkPythonInterpreter::IsInitialized())
+ {
+ vtkErrorMacro(<< "Failed to initialize vtkPythonInterpreter!");
+ return false;
+ }
+ }
+
+ return true;
+#else
+ vtkErrorMacro(<< "Export Failed! Python support is required to export a Cinema store.");
+ return false;
+#endif
+}
+
+const vtkStdString vtkCinemaExporter::GetPythonScript()
+{
+ vtkStdString script;
+ script += "import paraview\n";
+ script += "ready=True\n";
+ script += "try:\n";
+ script += " import paraview.simple\n";
+ script += " import paraview.cinemaIO.cinema_store\n";
+ script += " import paraview.cinemaIO.pv_introspect as pvi\n";
+ script += "except ImportError as e:\n";
+ script += " paraview.print_error('Cannot import cinema')\n";
+ script += " paraview.print_error(e)\n";
+ script += " ready=False\n";
+ script += "if ready:\n";
+ script += " pvi.export_scene(baseDirName=\"";
+ script += this->FileName ? this->FileName : "";
+ script += "\", viewSelection={";
+ script += this->ViewSelection ? this->ViewSelection : "";
+ script += "}, trackSelection={";
+ script += this->TrackSelection ? this->TrackSelection : "";
+ script += "})\n";
+
+ return script;
+}
+
+void vtkCinemaExporter::PrintSelf(ostream& os, vtkIndent indent)
+{
+ this->Superclass::PrintSelf(os, indent);
+
+ char const * fn = this->FileName ? this->FileName : "(null)";
+ os << indent << "FileName: " << fn << '\n';
+
+ char const * vs = this->ViewSelection ? this->ViewSelection : "(null)";
+ os << indent << "ViewSelection: " << vs << '\n';
+
+ char const * ts = this->TrackSelection ? this->TrackSelection : "(null)";
+ os << indent << "TrackSelection: " << ts << '\n';
+
+ os << indent << "PythonScript: " << this->GetPythonScript().c_str() << "\n";
+}
diff -Nru paraview-5.0.0+dfsg1/ParaViewCore/VTKExtensions/Rendering/vtkCinemaExporter.h paraview-5.0.1+dfsg1/ParaViewCore/VTKExtensions/Rendering/vtkCinemaExporter.h
--- paraview-5.0.0+dfsg1/ParaViewCore/VTKExtensions/Rendering/vtkCinemaExporter.h 1970-01-01 00:00:00.000000000 +0000
+++ paraview-5.0.1+dfsg1/ParaViewCore/VTKExtensions/Rendering/vtkCinemaExporter.h 2016-03-28 15:06:22.000000000 +0000
@@ -0,0 +1,76 @@
+/*=========================================================================
+
+ Program: ParaView
+ Module: vtkCinemaExporter.h
+
+ Copyright (c) Kitware, Inc.
+ All rights reserved.
+ See Copyright.txt or http://www.paraview.org/HTML/Copyright.html for details.
+
+ This software is distributed WITHOUT ANY WARRANTY; without even
+ the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
+ PURPOSE. See the above copyright notice for more information.
+
+=========================================================================*/
+// .NAME vtkCinemaExporter - Exports a view as a Cinema database.
+//
+// .SECTION Description
+// Specifies and runs a Python script which uses pv_introspect.py to generate
+// images from a set of parameters of the different elements in a pipeline for
+// later visualization. Takes different options from pqCinemaTrackSelection and
+// pqExportViewSelection as strings to be included in the script.
+#ifndef vtkCinemaExporter_h
+#define vtkCinemaExporter_h
+
+
+#include "vtkExporter.h"
+#include "vtkPVVTKExtensionsRenderingModule.h" // needed for export macro
+
+
+class VTKPVVTKEXTENSIONSRENDERING_EXPORT vtkCinemaExporter : public vtkExporter
+{
+public:
+ static vtkCinemaExporter* New();
+ vtkTypeMacro(vtkCinemaExporter,vtkExporter);
+
+ void PrintSelf(ostream& os, vtkIndent indent);
+
+ vtkSetStringMacro(FileName);
+ vtkGetStringMacro(FileName);
+
+ vtkSetStringMacro(ViewSelection);
+ vtkGetStringMacro(ViewSelection);
+
+ vtkSetStringMacro(TrackSelection);
+ vtkGetStringMacro(TrackSelection);
+
+protected:
+ vtkCinemaExporter();
+ ~vtkCinemaExporter();
+
+ void WriteData();
+
+ /////////////////////////////////////////////////////////////////////////////
+
+ char* FileName;
+
+ char* ViewSelection;
+
+ char* TrackSelection;
+
+private:
+ /// @brief Defines the Python script to be ran.
+ const vtkStdString GetPythonScript();
+
+ /// @brief Checks the initialization status of the Python interpreter and
+ /// initializes it if required.
+ bool checkInterpreterInitialization();
+
+ /// @{
+ /// @brief Not implemented
+ vtkCinemaExporter(const vtkCinemaExporter&); // Not implemented
+ void operator=(const vtkCinemaExporter&); // Not implemented
+ /// @}
+};
+
+#endif
diff -Nru paraview-5.0.0+dfsg1/ParaViewCore/VTKExtensions/Rendering/vtkLZ4Compressor.cxx paraview-5.0.1+dfsg1/ParaViewCore/VTKExtensions/Rendering/vtkLZ4Compressor.cxx
--- paraview-5.0.0+dfsg1/ParaViewCore/VTKExtensions/Rendering/vtkLZ4Compressor.cxx 1970-01-01 00:00:00.000000000 +0000
+++ paraview-5.0.1+dfsg1/ParaViewCore/VTKExtensions/Rendering/vtkLZ4Compressor.cxx 2016-03-28 15:06:22.000000000 +0000
@@ -0,0 +1,164 @@
+/*=========================================================================
+
+ Program: ParaView
+ Module: vtkLZ4Compressor.cxx
+
+ Copyright (c) Kitware, Inc.
+ All rights reserved.
+ See Copyright.txt or http://www.paraview.org/HTML/Copyright.html for details.
+
+ This software is distributed WITHOUT ANY WARRANTY; without even
+ the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
+ PURPOSE. See the above copyright notice for more information.
+
+=========================================================================*/
+#include "vtkLZ4Compressor.h"
+
+#include "vtkMultiProcessStream.h"
+#include "vtkObjectFactory.h"
+#include "vtkUnsignedCharArray.h"
+
+#include
+#include
+#include "vtk_lz4.h"
+
+vtkStandardNewMacro(vtkLZ4Compressor);
+//----------------------------------------------------------------------------
+vtkLZ4Compressor::vtkLZ4Compressor() : Quality(3)
+{
+}
+
+//----------------------------------------------------------------------------
+vtkLZ4Compressor::~vtkLZ4Compressor()
+{
+}
+
+//----------------------------------------------------------------------------
+int vtkLZ4Compressor::Compress()
+{
+ if (!(this->Input && this->Output))
+ {
+ vtkWarningMacro("Cannot compress, empty input or output detected.");
+ return VTK_ERROR;
+ }
+
+ unsigned char compress_masks[6][4] = { {0xFF, 0xFF, 0xFF, 0xFF},
+ {0xFE, 0xFF, 0xFE, 0xFE},
+ {0xFC, 0xFE, 0xFC, 0xFC},
+ {0xF8, 0xFC, 0xF8, 0xF8},
+ {0xF0, 0xF8, 0xF0, 0xF0},
+ {0xE0, 0xF0, 0xE0, 0xE0}};
+
+ int compress_level = this->LossLessMode? 0 : this->Quality;
+ assert(compress_level >=0 && compress_level <= 5);
+
+ // Set bitmask based on compress_level
+ unsigned int compress_mask;
+ // I shifted the level by one so that 0 means no compression.
+ memcpy(&compress_mask, &compress_masks[compress_level], 4);
+
+ vtkUnsignedCharArray* input = this->Input;
+ int inputSize = input->GetNumberOfTuples() * input->GetNumberOfComponents();
+
+ if (this->Quality > 0 && input->GetNumberOfComponents() == 4)
+ {
+ this->TemporaryBuffer->SetNumberOfComponents(input->GetNumberOfComponents());
+ this->TemporaryBuffer->SetNumberOfTuples(input->GetNumberOfTuples());
+ const unsigned int *in = reinterpret_cast(input->GetPointer(0));
+ unsigned int *out = reinterpret_cast(this->TemporaryBuffer->GetPointer(0));
+ for (vtkIdType cc=0, max = this->Input->GetNumberOfTuples(); cc < max; ++cc)
+ {
+ out[cc] = in[cc] & compress_mask;
+ }
+ input = this->TemporaryBuffer.Get();
+ }
+
+ int maxOutputSize = LZ4_compressBound(inputSize);
+ int compressedSize = LZ4_compress_fast(
+ reinterpret_cast(input->GetPointer(0)),
+ reinterpret_cast(this->Output->WritePointer(0, maxOutputSize)),
+ inputSize,
+ maxOutputSize,
+ 16);
+ this->Output->SetNumberOfTuples(compressedSize);
+ return compressedSize > 0? VTK_OK : VTK_ERROR;
+}
+
+//----------------------------------------------------------------------------
+int vtkLZ4Compressor::Decompress()
+{
+ if (!(this->Input && this->Output))
+ {
+ vtkWarningMacro("Cannot decompress, empty input or output detected.");
+ return VTK_ERROR;
+ }
+
+ int maxDecompressedSize = this->Output->GetNumberOfComponents() * this->Output->GetNumberOfTuples();
+ int decompressedSize = LZ4_decompress_safe(
+ reinterpret_cast(this->Input->GetPointer(0)),
+ reinterpret_cast(this->Output->GetPointer(0)),
+ this->Input->GetNumberOfTuples(),
+ maxDecompressedSize);
+
+// // We use LZ4_decompress_safe for now since there seems to be some bug
+// // in LZ4_decompress_fast which is causing segfaults on Windows.
+// int decompressedSize = LZ4_decompress_fast(
+// reinterpret_cast(this->Input->GetPointer(0)),
+// reinterpret_cast(this->Output->GetPointer(0)),
+// maxDecompressedSize);
+ return decompressedSize > 0? VTK_OK : VTK_ERROR;
+}
+
+//-----------------------------------------------------------------------------
+void vtkLZ4Compressor::SaveConfiguration(vtkMultiProcessStream *stream)
+{
+ this->Superclass::SaveConfiguration(stream);
+ *stream << this->Quality;
+}
+
+//-----------------------------------------------------------------------------
+bool vtkLZ4Compressor::RestoreConfiguration(vtkMultiProcessStream *stream)
+{
+ if (this->Superclass::RestoreConfiguration(stream))
+ {
+ int quality;
+ *stream >> quality;
+ this->SetQuality(quality);
+ return true;
+ }
+ return false;
+}
+
+//-----------------------------------------------------------------------------
+const char *vtkLZ4Compressor::SaveConfiguration()
+{
+ std::ostringstream oss;
+ oss
+ << this->Superclass::SaveConfiguration()
+ << " "
+ << this->Quality;
+ this->SetConfiguration(oss.str().c_str());
+ return this->Configuration;
+}
+
+//-----------------------------------------------------------------------------
+const char *vtkLZ4Compressor::RestoreConfiguration(const char *stream)
+{
+ stream = this->Superclass::RestoreConfiguration(stream);
+ if (stream)
+ {
+ std::istringstream iss(stream);
+ int quality;
+ iss >> quality;
+ this->SetQuality(quality);
+ return stream+iss.tellg();
+ }
+ return 0;
+}
+
+//----------------------------------------------------------------------------
+void vtkLZ4Compressor::PrintSelf(ostream& os, vtkIndent indent)
+{
+ this->Superclass::PrintSelf(os, indent);
+ cout << "Quality: " << this->Quality << endl;
+}
diff -Nru paraview-5.0.0+dfsg1/ParaViewCore/VTKExtensions/Rendering/vtkLZ4Compressor.h paraview-5.0.1+dfsg1/ParaViewCore/VTKExtensions/Rendering/vtkLZ4Compressor.h
--- paraview-5.0.0+dfsg1/ParaViewCore/VTKExtensions/Rendering/vtkLZ4Compressor.h 1970-01-01 00:00:00.000000000 +0000
+++ paraview-5.0.1+dfsg1/ParaViewCore/VTKExtensions/Rendering/vtkLZ4Compressor.h 2016-03-28 15:06:22.000000000 +0000
@@ -0,0 +1,73 @@
+/*=========================================================================
+
+ Program: ParaView
+ Module: vtkLZ4Compressor.h
+
+ Copyright (c) Kitware, Inc.
+ All rights reserved.
+ See Copyright.txt or http://www.paraview.org/HTML/Copyright.html for details.
+
+ This software is distributed WITHOUT ANY WARRANTY; without even
+ the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
+ PURPOSE. See the above copyright notice for more information.
+
+=========================================================================*/
+// .NAME vtkLZ4Compressor - Image compressor/decompressor
+// that uses LZ4 for fast lossless compression.
+// .SECTION Description
+// vtkLZ4Compressor uses LZ4 for fast lossless compression and decompression on
+// data.
+
+#ifndef vtkLZ4Compressor_h
+#define vtkLZ4Compressor_h
+
+#include "vtkImageCompressor.h"
+#include "vtkPVVTKExtensionsRenderingModule.h" // needed for exports
+#include "vtkNew.h" // needed for vtkNew
+
+class vtkMultiProcessStream;
+
+class VTKPVVTKEXTENSIONSRENDERING_EXPORT vtkLZ4Compressor : public vtkImageCompressor
+{
+public:
+ static vtkLZ4Compressor* New();
+ vtkTypeMacro(vtkLZ4Compressor, vtkImageCompressor);
+ void PrintSelf(ostream& os, vtkIndent indent);
+
+ // Description:
+ // Set the quality measure. The value can be between 0 and 5. 0 means preserve
+ // input image quality while 5 means improve compression at the cost of image
+ // quality. For quality values > 1, we use a color mask on the input colors
+ // similar to vtkSquirtCompressor.
+ vtkSetClampMacro(Quality, int, 0, 5);
+ vtkGetMacro(Quality, int);
+
+ // Description:
+ // Compress/Decompress data array on the objects input with results
+ // in the objects output. See also Set/GetInput/Output.
+ virtual int Compress();
+ virtual int Decompress();
+
+ // Description:
+ // Serialize/Restore compressor configuration (but not the data) into the stream.
+ virtual void SaveConfiguration(vtkMultiProcessStream *stream);
+ virtual bool RestoreConfiguration(vtkMultiProcessStream *stream);
+ virtual const char *SaveConfiguration();
+ virtual const char *RestoreConfiguration(const char *stream);
+
+//BTX
+protected:
+ vtkLZ4Compressor();
+ ~vtkLZ4Compressor();
+
+ int Quality;
+private:
+ vtkLZ4Compressor(const vtkLZ4Compressor&); // Not implemented
+ void operator=(const vtkLZ4Compressor&); // Not implemented
+
+ // Used when Quality > 1.
+ vtkNew TemporaryBuffer;
+//ETX
+};
+
+#endif
diff -Nru paraview-5.0.0+dfsg1/Plugins/CatalystScriptGenerator/pqCPExportStateWizard.cxx paraview-5.0.1+dfsg1/Plugins/CatalystScriptGenerator/pqCPExportStateWizard.cxx
--- paraview-5.0.0+dfsg1/Plugins/CatalystScriptGenerator/pqCPExportStateWizard.cxx 2016-01-08 20:21:35.000000000 +0000
+++ paraview-5.0.1+dfsg1/Plugins/CatalystScriptGenerator/pqCPExportStateWizard.cxx 2016-03-28 15:06:22.000000000 +0000
@@ -52,6 +52,7 @@
#include
+
namespace
{
static const char* cp_python_export_code =
@@ -62,7 +63,7 @@
" rescale_data_range=%4,\n"
" enable_live_viz=%5,\n"
" live_viz_frequency=%6,\n"
- " cinema_tracks=%7,\n"
+ " cinema_tracks={%7},\n"
" filename='%8')\n";
}
@@ -146,112 +147,20 @@
}
}
else if(this->Internals->outputRendering->isChecked())
- { // we are creating images so add information to the view proxies
- vtkSMSessionProxyManager* proxyManager =
- vtkSMProxyManager::GetProxyManager()->GetActiveSessionProxyManager();
- for(int i=0;iInternals->viewsContainer->count();i++)
- {
- pqImageOutputInfo* viewInfo = dynamic_cast(
- this->Internals->viewsContainer->widget(i));
- pqView* view = viewInfo->getView();
- QSize viewSize = view->getSize();
- vtkSMViewProxy* viewProxy = view->getViewProxy();
- vtkSMRenderViewProxy* rvp = vtkSMRenderViewProxy::SafeDownCast(viewProxy);
- pqRenderView* rview = dynamic_cast(view);
- //cinema camera parameters
- QString cinemaCam = "{}";
- QString camType = viewInfo->getCameraType();
- if (rvp && (camType != "None"))
- {
- cinemaCam = QString("{");
- if (this->Internals->cinemaComposite->isChecked())
- {
- cinemaCam += "\"composite\":True, ";
- }
- cinemaCam += "\"camera\":\"";
- cinemaCam += camType;
- cinemaCam += "\"";
- if (camType != "Static")
- {
- cinemaCam += ", ";
-
- cinemaCam += "\"phi\":[";
- int j;
- for (j = -180; j < 180; j+= (360/viewInfo->getPhi()))
- {
- cinemaCam += QString::number(j) + ",";
- }
- cinemaCam.chop(1);
- cinemaCam += "],";
-
- cinemaCam += "\"theta\":[";
- for (j = -180; j < 180; j+= (360/viewInfo->getTheta()))
- {
- cinemaCam += QString::number(j) + ",";
- }
- cinemaCam.chop(1);
- cinemaCam += "], ";
-
- vtkCamera *cam = rvp->GetActiveCamera();
- double eye[3];
- double at[3];
- double up[3];
- cam->GetPosition(eye);
- rview->getCenterOfRotation(at);
- cam->GetViewUp(up);
- cinemaCam += "\"initial\":{ ";
- cinemaCam += "\"eye\": [" +
- QString::number(eye[0]) + "," + QString::number(eye[1]) + "," + QString::number(eye[2]) + "], ";
- cinemaCam += "\"at\": [" +
- QString::number(at[0]) + "," + QString::number(at[1]) + "," + QString::number(at[2]) + "], ";
- cinemaCam += "\"up\": [" +
- QString::number(up[0]) + "," + QString::number(up[1]) + "," + QString::number(up[2]) + "] ";
- cinemaCam += "} ";
- }
- cinemaCam += "}";
- }
-
- QString info = QString(" '%1' : ['%2', %3, '%4', '%5', '%6', '%7', '%8'],").
- arg(proxyManager->GetProxyName("views", viewProxy)).
- arg(viewInfo->getImageFileName()).arg(viewInfo->getWriteFrequency()).
- arg(static_cast(viewInfo->fitToScreen())).
- arg(viewInfo->getMagnification()).
- arg(viewSize.width()).
- arg(viewSize.height()).
- arg(cinemaCam);
- rendering_info+= info;
- }
- // remove the last comma -- assume that there's at least one view
- rendering_info.chop(1);
+ {
+ // Format as defined in cpstate.py
+ QString format("'%1' : ['%2', %3, '%4', '%5', '%6', '%7', '%8']");
+ rendering_info = this->Internals->wViewSelection->getSelectionAsPythonScript(format,
+ this->Internals->chbComposite->isChecked());
}
- QString cinema_tracks = "{ "; //trailing space matters
+ QString cinema_tracks;
if(this->Internals->outputCinema->isChecked())
{
- for(int i=0;iInternals->cinemaContainer->count();i++)
- {
- pqCinemaTrack *p = dynamic_cast(this->Internals->cinemaContainer->widget(i));
- if (!p->explore())
- {
- continue;
- }
- QString name = p->filterName();
- QString values = "[";
- QVariantList vals = p->scalars();
- for (int j = 0; j < vals.count(); j++)
- {
- values += QString::number(vals.value(j).toDouble());
- values += ",";
- }
- values.chop(1);
- values += "]";
- QString info = QString(" '%1' : %2,").arg(name).arg(values);
- cinema_tracks+= info;
- }
-
- cinema_tracks.chop(1);
+ // Format as defined in pv_introspect.make_cinema_store.make_cinema_store (_userDefinedValues)
+ QString format("'%1' : %2");
+ cinema_tracks = this->Internals->wCinemaTrackSelection->getSelectionAsPythonScript(format);
}
- cinema_tracks+="}";
QString filters ="ParaView Python State Files (*.py);;All files (*)";
diff -Nru paraview-5.0.0+dfsg1/Plugins/CatalystScriptGenerator/Testing/CatalystCinemaCompositeGUI.xml paraview-5.0.1+dfsg1/Plugins/CatalystScriptGenerator/Testing/CatalystCinemaCompositeGUI.xml
--- paraview-5.0.0+dfsg1/Plugins/CatalystScriptGenerator/Testing/CatalystCinemaCompositeGUI.xml 1970-01-01 00:00:00.000000000 +0000
+++ paraview-5.0.1+dfsg1/Plugins/CatalystScriptGenerator/Testing/CatalystCinemaCompositeGUI.xml 2016-03-28 15:07:03.000000000 +0000
@@ -0,0 +1,38 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff -Nru paraview-5.0.0+dfsg1/Plugins/CatalystScriptGenerator/Testing/CatalystCinemaGUI.xml paraview-5.0.1+dfsg1/Plugins/CatalystScriptGenerator/Testing/CatalystCinemaGUI.xml
--- paraview-5.0.0+dfsg1/Plugins/CatalystScriptGenerator/Testing/CatalystCinemaGUI.xml 2016-01-08 20:21:35.000000000 +0000
+++ paraview-5.0.1+dfsg1/Plugins/CatalystScriptGenerator/Testing/CatalystCinemaGUI.xml 2016-03-28 15:07:03.000000000 +0000
@@ -28,9 +28,10 @@
-
-
-
+
+
+
+
diff -Nru paraview-5.0.0+dfsg1/Plugins/PointSprite/Qvis/VolumeAttributes.cpp paraview-5.0.1+dfsg1/Plugins/PointSprite/Qvis/VolumeAttributes.cpp
--- paraview-5.0.0+dfsg1/Plugins/PointSprite/Qvis/VolumeAttributes.cpp 2016-01-08 20:21:35.000000000 +0000
+++ paraview-5.0.1+dfsg1/Plugins/PointSprite/Qvis/VolumeAttributes.cpp 2016-03-28 15:06:22.000000000 +0000
@@ -35,6 +35,7 @@
*
*****************************************************************************/
+#include
#include
#include
#include
@@ -1825,7 +1826,6 @@
// Made the method const.
//
// ****************************************************************************
-#include
void
VolumeAttributes::GetGaussianOpacities(unsigned char *alphas) const
{
diff -Nru paraview-5.0.0+dfsg1/Plugins/StreamingParticles/StreamingParticles.xml paraview-5.0.1+dfsg1/Plugins/StreamingParticles/StreamingParticles.xml
--- paraview-5.0.0+dfsg1/Plugins/StreamingParticles/StreamingParticles.xml 2016-01-08 20:21:35.000000000 +0000
+++ paraview-5.0.1+dfsg1/Plugins/StreamingParticles/StreamingParticles.xml 2016-03-28 15:06:22.000000000 +0000
@@ -14,8 +14,7 @@
name="input_type">
-
+
Set the input to the representation.
diff -Nru paraview-5.0.0+dfsg1/Plugins/TemporalParallelismScriptGenerator/pqTPExportStateWizard.cxx paraview-5.0.1+dfsg1/Plugins/TemporalParallelismScriptGenerator/pqTPExportStateWizard.cxx
--- paraview-5.0.0+dfsg1/Plugins/TemporalParallelismScriptGenerator/pqTPExportStateWizard.cxx 2016-01-08 20:21:35.000000000 +0000
+++ paraview-5.0.1+dfsg1/Plugins/TemporalParallelismScriptGenerator/pqTPExportStateWizard.cxx 2016-03-28 15:06:22.000000000 +0000
@@ -83,7 +83,7 @@
this->Internals->liveViz->hide();
this->Internals->rescaleDataRange->hide();
this->Internals->outputCinema->hide();
- this->Internals->cinemaContainer->hide();
+ this->Internals->wCinemaTrackSelection->hide();
}
//-----------------------------------------------------------------------------
@@ -149,23 +149,8 @@
}
else // we are creating an image so we need to get the proper information from there
{
- vtkSMSessionProxyManager* proxyManager =
- vtkSMProxyManager::GetProxyManager()->GetActiveSessionProxyManager();
- for(int i=0;iInternals->viewsContainer->count();i++)
- {
- pqImageOutputInfo* viewInfo = dynamic_cast(
- this->Internals->viewsContainer->widget(i));
- pqView* view = viewInfo->getView();
- QSize viewSize = view->getSize();
- vtkSMViewProxy* viewProxy = view->getViewProxy();
- QString info = QString(" '%1' : ['%2', '%3', '%4', '%5'],").
- arg(proxyManager->GetProxyName("views", viewProxy)).
- arg(viewInfo->getImageFileName()).arg(viewInfo->getMagnification()).
- arg(viewSize.width()).arg(viewSize.height());
- rendering_info+= info;
- }
- // remove the last comma -- assume that there's at least one view
- rendering_info.chop(1);
+ QString itemFormat = " '%1' : ['%2', '%5', '%6', '%7']";
+ rendering_info = this->Internals->wViewSelection->getSelectionAsPythonScript(itemFormat, false);
}
QString filters ="ParaView Python State Files (*.py);;All files (*)";
@@ -180,6 +165,13 @@
}
QString filename = file_dialog.getSelectedFiles()[0];
+#ifdef _WIN32
+ // Convert to forward slashes. The issue is that the path is interpreted as a
+ // Python string when passed to the interpreter, so a path such as "C:\tests"
+ // is read as "C:ests" which isn't what we want. Since Windows is
+ // flexible anyways, just use Unix separators.
+ filename.replace('\\', '/');
+#endif
// Last Page, export the state.
pqPythonManager* manager = qobject_cast(
diff -Nru paraview-5.0.0+dfsg1/Plugins/TemporalParallelismScriptGenerator/Testing/TemporalParallelism.xml paraview-5.0.1+dfsg1/Plugins/TemporalParallelismScriptGenerator/Testing/TemporalParallelism.xml
--- paraview-5.0.0+dfsg1/Plugins/TemporalParallelismScriptGenerator/Testing/TemporalParallelism.xml 2016-01-08 20:21:35.000000000 +0000
+++ paraview-5.0.1+dfsg1/Plugins/TemporalParallelismScriptGenerator/Testing/TemporalParallelism.xml 2016-03-28 15:06:22.000000000 +0000
@@ -18,7 +18,6 @@
-
diff -Nru paraview-5.0.0+dfsg1/Qt/ApplicationComponents/CMakeLists.txt paraview-5.0.1+dfsg1/Qt/ApplicationComponents/CMakeLists.txt
--- paraview-5.0.0+dfsg1/Qt/ApplicationComponents/CMakeLists.txt 2016-01-08 20:21:35.000000000 +0000
+++ paraview-5.0.1+dfsg1/Qt/ApplicationComponents/CMakeLists.txt 2016-03-28 15:07:03.000000000 +0000
@@ -130,8 +130,6 @@
pqEditColorMapReaction.h
pqEnableWidgetDecorator.cxx
pqEnableWidgetDecorator.h
- pqExportCinemaReaction.cxx
- pqExportCinemaReaction.h
pqExportReaction.cxx
pqExportReaction.h
pqFileNamePropertyWidget.cxx
@@ -339,7 +337,6 @@
pqEditCameraReaction.h
pqEditColorMapReaction.h
pqEnableWidgetDecorator.h
- pqExportCinemaReaction.h
pqExportReaction.h
pqFileNamePropertyWidget.h
pqFiltersMenuReaction.h
diff -Nru paraview-5.0.0+dfsg1/Qt/ApplicationComponents/pqColorAnnotationsPropertyWidget.cxx paraview-5.0.1+dfsg1/Qt/ApplicationComponents/pqColorAnnotationsPropertyWidget.cxx
--- paraview-5.0.0+dfsg1/Qt/ApplicationComponents/pqColorAnnotationsPropertyWidget.cxx 2016-01-08 20:21:35.000000000 +0000
+++ paraview-5.0.1+dfsg1/Qt/ApplicationComponents/pqColorAnnotationsPropertyWidget.cxx 2016-03-28 15:07:03.000000000 +0000
@@ -171,7 +171,7 @@
painter.setBrush(QBrush(this->Color));
painter.drawEllipse(1, 1, radius-2, radius-2);
painter.end();
- return pix;
+ return pix;
}
};
@@ -759,7 +759,7 @@
// Set the merged annotations
this->setAnnotations(mergedAnnotations);
- }
+ }
catch (int)
{
QMessageBox::warning(
diff -Nru paraview-5.0.0+dfsg1/Qt/ApplicationComponents/pqExportCinemaReaction.cxx paraview-5.0.1+dfsg1/Qt/ApplicationComponents/pqExportCinemaReaction.cxx
--- paraview-5.0.0+dfsg1/Qt/ApplicationComponents/pqExportCinemaReaction.cxx 2016-01-08 20:21:35.000000000 +0000
+++ paraview-5.0.1+dfsg1/Qt/ApplicationComponents/pqExportCinemaReaction.cxx 1970-01-01 00:00:00.000000000 +0000
@@ -1,137 +0,0 @@
-/*=========================================================================
-
- Program: ParaView
- Module: pqExportCinemaReaction.cxx
-
- Copyright (c) 2005,2006 Sandia Corporation, Kitware Inc.
- All rights reserved.
-
- ParaView is a free software; you can redistribute it and/or modify it
- under the terms of the ParaView license version 1.2.
-
- See License_v1.2.txt for the full ParaView license.
- A copy of this license can be obtained by contacting
- Kitware Inc.
- 28 Corporate Drive
- Clifton Park, NY 12065
- USA
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHORS OR
-CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
-EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
-PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
-PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
-LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-========================================================================*/
-#include "pqExportCinemaReaction.h"
-
-#include "pqActiveObjects.h"
-#include "pqCoreUtilities.h"
-#include "pqFileDialog.h"
-#include "pqProxyWidget.h"
-#include "vtkNew.h"
-#include "vtkPVConfig.h" // needed for PARAVIEW_ENABLE_PYTHON
-#ifdef PARAVIEW_ENABLE_PYTHON
-# include "vtkPythonInterpreter.h"
-#endif
-#include "vtkSmartPointer.h"
-#include "vtkSMExporterProxy.h"
-#include "vtkSMExporterProxy.h"
-#include "vtkSMTrace.h"
-#include "vtkSMViewExportHelper.h"
-#include "vtkSMViewProxy.h"
-
-#include
-#include
-#include
-#include
-#include
-#include
-#include
-#include
-
-//-----------------------------------------------------------------------------
-pqExportCinemaReaction::pqExportCinemaReaction(QAction* parentObject)
- : Superclass(parentObject)
-{
- // load state enable state depends on whether we are connected to an active
- // server or not and whether
- pqActiveObjects* activeObjects = &pqActiveObjects::instance();
- QObject::connect(activeObjects, SIGNAL(viewChanged(pqView*)),
- this, SLOT(updateEnableState()));
- this->updateEnableState();
-}
-
-//-----------------------------------------------------------------------------
-void pqExportCinemaReaction::updateEnableState()
-{
- // this results in firing of exportable(bool) signal which updates the
- // QAction's state.
- bool enabled = false;
- if (pqView* view = pqActiveObjects::instance().activeView())
- {
- vtkSMViewProxy* viewProxy = view->getViewProxy();
-
- vtkNew helper;
- enabled = (helper->GetSupportedFileTypes(viewProxy).size() > 0);
- }
- this->parentAction()->setEnabled(enabled);
-}
-
-//-----------------------------------------------------------------------------
-void pqExportCinemaReaction::exportActiveView()
-{
-#ifdef PARAVIEW_ENABLE_PYTHON
- pqView* view = pqActiveObjects::instance().activeView();
- if (!view) { return ;}
-
- pqFileDialog folder_dialog(NULL, pqCoreUtilities::mainWidget(),
- tr("Export Cinema:"), QString(), "");
- folder_dialog.setObjectName("CinemaExportDialog");
- folder_dialog.setFileMode(pqFileDialog::Directory);
- if (folder_dialog.exec() == QDialog::Accepted &&
- folder_dialog.getSelectedFiles().size() > 0)
- {
- QString filename = folder_dialog.getSelectedFiles().first();
- //deal with MSWindows
- //there dialog returns the last component with just one slash
- int lastSlash = filename.lastIndexOf("\\");
- if (lastSlash!=-1)
- {
- if (filename[lastSlash-1] != QString("\\")[0])
- {
- filename.insert(lastSlash, "\\");
- }
- }
- //std::cerr << "Selected path: " << qPrintable(filename) << std::endl;
-
- std::string path;
- path += qPrintable(filename);
-
- std::string script;
- script += "import paraview\n";
- script += "ready=True\n";
- script += "try:\n";
- script += " import paraview.simple\n";
- script += " import paraview.cinemaIO.cinema_store\n";
- script += " import paraview.cinemaIO.pv_introspect as pvi\n";
- script += "except ImportError as e:\n";
- script += " paraview.print_error('Cannot import cinema')\n";
- script += " paraview.print_error(e)\n";
- script += " ready=False\n";
- script += "if ready:\n";
- script += " pvi.record(csname=\"";
- script += path.c_str();
- script += "\")\n";
-
- vtkPythonInterpreter::Initialize();
- vtkPythonInterpreter::RunSimpleString(script.c_str());
- }
-#endif
-}
diff -Nru paraview-5.0.0+dfsg1/Qt/ApplicationComponents/pqExportCinemaReaction.h paraview-5.0.1+dfsg1/Qt/ApplicationComponents/pqExportCinemaReaction.h
--- paraview-5.0.0+dfsg1/Qt/ApplicationComponents/pqExportCinemaReaction.h 2016-01-08 20:21:35.000000000 +0000
+++ paraview-5.0.1+dfsg1/Qt/ApplicationComponents/pqExportCinemaReaction.h 1970-01-01 00:00:00.000000000 +0000
@@ -1,65 +0,0 @@
-/*=========================================================================
-
- Program: ParaView
- Module: pqExportCinemaReaction.h
-
- Copyright (c) 2005,2006 Sandia Corporation, Kitware Inc.
- All rights reserved.
-
- ParaView is a free software; you can redistribute it and/or modify it
- under the terms of the ParaView license version 1.2.
-
- See License_v1.2.txt for the full ParaView license.
- A copy of this license can be obtained by contacting
- Kitware Inc.
- 28 Corporate Drive
- Clifton Park, NY 12065
- USA
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHORS OR
-CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
-EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
-PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
-PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
-LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-========================================================================*/
-#ifndef pqExportCinemaReaction_h
-#define pqExportCinemaReaction_h
-
-#include "pqReaction.h"
-
-/// @ingroup Reactions
-/// Reaction for export a Cinema database. Uses pqViewExporterManager for
-/// actual exporting.
-class PQAPPLICATIONCOMPONENTS_EXPORT pqExportCinemaReaction : public pqReaction
-{
- Q_OBJECT
- typedef pqReaction Superclass;
-public:
- /// Constructor. Parent cannot be NULL.
- pqExportCinemaReaction(QAction* parent);
-
- /// Exports the current view.
- void exportActiveView();
-
-public slots:
- /// Updates the enabled state. Applications need not explicitly call
- /// this.
- void updateEnableState();
-
-protected:
- /// Called when the action is triggered.
- virtual void onTriggered()
- { this->exportActiveView(); }
-
-private:
- Q_DISABLE_COPY(pqExportCinemaReaction)
-};
-
-#endif
diff -Nru paraview-5.0.0+dfsg1/Qt/ApplicationComponents/pqExportReaction.cxx paraview-5.0.1+dfsg1/Qt/ApplicationComponents/pqExportReaction.cxx
--- paraview-5.0.0+dfsg1/Qt/ApplicationComponents/pqExportReaction.cxx 2016-01-08 20:21:35.000000000 +0000
+++ paraview-5.0.1+dfsg1/Qt/ApplicationComponents/pqExportReaction.cxx 2016-03-28 15:07:03.000000000 +0000
@@ -7,7 +7,7 @@
All rights reserved.
ParaView is a free software; you can redistribute it and/or modify it
- under the terms of the ParaView license version 1.2.
+ under the terms of the ParaView license version 1.2.
See License_v1.2.txt for the full ParaView license.
A copy of this license can be obtained by contacting
@@ -117,49 +117,23 @@
bool export_cancelled = false;
if (proxyWidget->filterWidgets(true))
{
- QDialog dialog(pqCoreUtilities::mainWidget());
- QVBoxLayout *vbox = new QVBoxLayout(&dialog);
-
- QHBoxLayout *hbox = new QHBoxLayout;
-
- QLabel *label = new QLabel;
- label->setText(tr("Show advanced options:"));
- hbox->addWidget(label);
-
- QToolButton *advancedButton = new QToolButton;
- advancedButton->setIcon(QIcon(":/pqWidgets/Icons/pqAdvanced26.png"));
- advancedButton->setCheckable(true);
- connect(advancedButton, SIGNAL(toggled(bool)),
- proxyWidget, SLOT(filterWidgets(bool)));
- hbox->addWidget(advancedButton);
-
- vbox->addLayout(hbox);
-
- vbox->addWidget(proxyWidget);
-
- vbox->addStretch();
-
- QDialogButtonBox *bbox =
- new QDialogButtonBox(QDialogButtonBox::Save|QDialogButtonBox::Cancel);
- connect(bbox, SIGNAL(accepted()), &dialog, SLOT(accept()));
- connect(bbox, SIGNAL(rejected()), &dialog, SLOT(reject()));
- vbox->addWidget(bbox);
-
- dialog.setWindowTitle(tr("Export Options"));
+ QDialog* dialog = this->createConfigurationDialog(proxyWidget);
// While all widgets are shown, fix the size of the dialog. Add a bit to
// the width, since the default size doesn't leave much room for text in
// the line edits.
- dialog.adjustSize();
- dialog.setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed);
+ dialog->adjustSize();
+ dialog->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed);
// Hide advanced options:
proxyWidget->filterWidgets();
// Show the dialog:
- int dialogCode = dialog.exec();
+ int dialogCode = dialog->exec();
export_cancelled = (static_cast(dialogCode) != QDialog::Accepted);
+ delete dialog;
}
+
delete proxyWidget;
if (!export_cancelled)
{
@@ -171,3 +145,36 @@
}
}
}
+
+// ----------------------------------------------------------------------------
+QDialog* pqExportReaction::createConfigurationDialog(pqProxyWidget* proxyWidget)
+{
+ QDialog* dialog = new QDialog(pqCoreUtilities::mainWidget());
+ dialog->setWindowTitle(tr("Export Options"));
+
+ QLabel *label = new QLabel(dialog);
+ label->setText(tr("Show advanced options:"));
+
+ QToolButton *advancedButton = new QToolButton(dialog);
+ advancedButton->setIcon(QIcon(":/pqWidgets/Icons/pqAdvanced26.png"));
+ advancedButton->setCheckable(true);
+ connect(advancedButton, SIGNAL(toggled(bool)), proxyWidget,
+ SLOT(filterWidgets(bool)));
+
+ QDialogButtonBox *bbox = new QDialogButtonBox(QDialogButtonBox::Save |
+ QDialogButtonBox::Cancel);
+ connect(bbox, SIGNAL(accepted()), dialog, SLOT(accept()));
+ connect(bbox, SIGNAL(rejected()), dialog, SLOT(reject()));
+
+ QHBoxLayout *hbox = new QHBoxLayout();
+ hbox->addWidget(label);
+ hbox->addWidget(advancedButton);
+
+ QVBoxLayout *vbox = new QVBoxLayout(dialog);
+ vbox->addLayout(hbox);
+ vbox->addWidget(proxyWidget);
+ vbox->addStretch();
+ vbox->addWidget(bbox);
+
+ return dialog;
+}
diff -Nru paraview-5.0.0+dfsg1/Qt/ApplicationComponents/pqExportReaction.h paraview-5.0.1+dfsg1/Qt/ApplicationComponents/pqExportReaction.h
--- paraview-5.0.0+dfsg1/Qt/ApplicationComponents/pqExportReaction.h 2016-01-08 20:21:35.000000000 +0000
+++ paraview-5.0.1+dfsg1/Qt/ApplicationComponents/pqExportReaction.h 2016-03-28 15:07:03.000000000 +0000
@@ -7,8 +7,8 @@
All rights reserved.
ParaView is a free software; you can redistribute it and/or modify it
- under the terms of the ParaView license version 1.2.
-
+ under the terms of the ParaView license version 1.2.
+
See License_v1.2.txt for the full ParaView license.
A copy of this license can be obtained by contacting
Kitware Inc.
@@ -34,6 +34,9 @@
#include "pqReaction.h"
+
+class pqProxyWidget;
+
/// @ingroup Reactions
/// Reaction for exporting a view. Uses pqViewExporterManager for actual
/// exporting.
@@ -59,6 +62,9 @@
{ this->exportActiveView(); }
private:
+ /// Creates a dialog widget containing the predefined proxyWidget.
+ QDialog* createConfigurationDialog(pqProxyWidget* proxyWidget);
+
Q_DISABLE_COPY(pqExportReaction)
};
diff -Nru paraview-5.0.0+dfsg1/Qt/ApplicationComponents/pqImageCompressorWidget.cxx paraview-5.0.1+dfsg1/Qt/ApplicationComponents/pqImageCompressorWidget.cxx
--- paraview-5.0.0+dfsg1/Qt/ApplicationComponents/pqImageCompressorWidget.cxx 2016-01-08 20:21:35.000000000 +0000
+++ paraview-5.0.1+dfsg1/Qt/ApplicationComponents/pqImageCompressorWidget.cxx 2016-03-28 15:06:22.000000000 +0000
@@ -38,8 +38,9 @@
#include
static const int NO_COMPRESSION=0;
-static const int SQUIRT_COMPRESSION=1;
-static const int ZLIB_COMPRESSION=2;
+static const int LZ4_COMPRESSION=1;
+static const int SQUIRT_COMPRESSION=2;
+static const int ZLIB_COMPRESSION=3;
//-----------------------------------------------------------------------------
class pqImageCompressorWidget::pqInternals
@@ -115,8 +116,20 @@
"\\s+"
"([01])" // strip alpha (0 or 1).
"$");
+ QRegExp lz4RegExp("^vtkLZ4Compressor"
+ "\\s+" // space
+ "0" // 0
+ "\\s+" // space
+ "([0-9]+)" // num-of-bits.
+ "$");
- if (squirtRegExp.exactMatch(value))
+ if (lz4RegExp.exactMatch(value))
+ {
+ int numBits = lz4RegExp.cap(1).toInt();
+ ui.compressionType->setCurrentIndex(LZ4_COMPRESSION);
+ ui.squirtColorSpace->setValue(numBits);
+ }
+ else if (squirtRegExp.exactMatch(value))
{
int numBits = squirtRegExp.cap(1).toInt();
ui.compressionType->setCurrentIndex(SQUIRT_COMPRESSION);
@@ -144,10 +157,13 @@
Ui::ImageCompressorWidget& ui = this->Internals->Ui;
switch (ui.compressionType->currentIndex())
{
- case 1: // squirt
+ case LZ4_COMPRESSION:
+ return QString("vtkLZ4Compressor 0 %1").arg(ui.squirtColorSpace->value());
+
+ case SQUIRT_COMPRESSION: // squirt
return QString("vtkSquirtCompressor 0 %1").arg(ui.squirtColorSpace->value());
- case 2: // zlib
+ case ZLIB_COMPRESSION: // zlib
return QString("vtkZlibImageCompressor 0 %1 %2 %3")
.arg(ui.zlibLevel->value())
.arg(ui.zlibColorSpace->value())
@@ -161,8 +177,8 @@
void pqImageCompressorWidget::currentIndexChanged(int index)
{
Ui::ImageCompressorWidget& ui = this->Internals->Ui;
- ui.squirtLabel->setVisible(index == SQUIRT_COMPRESSION);
- ui.squirtColorSpace->setVisible(index == SQUIRT_COMPRESSION);
+ ui.squirtLabel->setVisible(index == SQUIRT_COMPRESSION || index == LZ4_COMPRESSION);
+ ui.squirtColorSpace->setVisible(index == SQUIRT_COMPRESSION || index == LZ4_COMPRESSION);
ui.zlibLabel1->setVisible(index == ZLIB_COMPRESSION);
ui.zlibLabel2->setVisible(index == ZLIB_COMPRESSION);
@@ -193,11 +209,11 @@
break;
case ETHERNET_1_GIG:
- this->setCompressorConfig("vtkZlibImageCompressor 0 1 0 0");
+ this->setCompressorConfig("vtkLZ4Compressor 0 5");
break;
case ETHERNET_10_GIG:
- this->setCompressorConfig("vtkSquirtCompressor 0 3");
+ this->setCompressorConfig("vtkLZ4Compressor 0 3");
break;
case SHARED_MEMORY:
diff -Nru paraview-5.0.0+dfsg1/Qt/ApplicationComponents/pqParaViewMenuBuilders.cxx paraview-5.0.1+dfsg1/Qt/ApplicationComponents/pqParaViewMenuBuilders.cxx
--- paraview-5.0.0+dfsg1/Qt/ApplicationComponents/pqParaViewMenuBuilders.cxx 2016-01-08 20:21:35.000000000 +0000
+++ paraview-5.0.1+dfsg1/Qt/ApplicationComponents/pqParaViewMenuBuilders.cxx 2016-03-28 15:06:22.000000000 +0000
@@ -57,7 +57,6 @@
#include "pqDataQueryReaction.h"
#include "pqDeleteReaction.h"
#include "pqDesktopServicesReaction.h"
-#include "pqExportCinemaReaction.h"
#include "pqExportReaction.h"
#include "pqFiltersMenuReaction.h"
#include "pqHelpReaction.h"
@@ -129,11 +128,6 @@
new pqSaveAnimationGeometryReaction(ui.actionFileSaveGeometry);
new pqExportReaction(ui.actionExport);
-#ifdef PARAVIEW_ENABLE_PYTHON
- new pqExportCinemaReaction(ui.actionExportCinema);
-#else
- ui.actionExportCinema->setVisible(false);
-#endif
new pqSaveDataReaction(ui.actionFileSaveData);
new pqLoadRestoreWindowLayoutReaction(true, ui.actionFileLoadWindowLayout);
diff -Nru paraview-5.0.0+dfsg1/Qt/ApplicationComponents/pqRenderViewSelectionReaction.cxx paraview-5.0.1+dfsg1/Qt/ApplicationComponents/pqRenderViewSelectionReaction.cxx
--- paraview-5.0.0+dfsg1/Qt/ApplicationComponents/pqRenderViewSelectionReaction.cxx 2016-01-08 20:21:35.000000000 +0000
+++ paraview-5.0.1+dfsg1/Qt/ApplicationComponents/pqRenderViewSelectionReaction.cxx 2016-03-28 15:06:22.000000000 +0000
@@ -262,6 +262,12 @@
"points and display a tooltip with points information.\n\n"
"Use the 'Esc' key or the same toolbar button to exit this mode.",
QMessageBox::Ok | QMessageBox::Save);
+ // switch the interaction mode to selection mode even though we're no making
+ // selections. This ensures that the render view realizes it's being used
+ // for selection and will not release cached selection render buffers as the
+ // selection interaction progresses (BUG #0015882).
+ vtkSMPropertyHelper(rmp, "InteractionMode").Set(
+ vtkPVRenderView::INTERACTION_MODE_SELECTION);
break;
case ZOOM_TO_BOX:
diff -Nru paraview-5.0.0+dfsg1/Qt/ApplicationComponents/pqStandardPropertyWidgetInterface.cxx paraview-5.0.1+dfsg1/Qt/ApplicationComponents/pqStandardPropertyWidgetInterface.cxx
--- paraview-5.0.0+dfsg1/Qt/ApplicationComponents/pqStandardPropertyWidgetInterface.cxx 2016-01-08 20:21:35.000000000 +0000
+++ paraview-5.0.1+dfsg1/Qt/ApplicationComponents/pqStandardPropertyWidgetInterface.cxx 2016-03-28 15:07:03.000000000 +0000
@@ -66,7 +66,10 @@
#include "pqViewTypePropertyWidget.h"
#include "vtkSMPropertyGroup.h"
#include "vtkSMProperty.h"
-
+#include "vtkPVConfig.h"
+#ifdef PARAVIEW_ENABLE_PYTHON
+#include "pqCinemaConfiguration.h"
+#endif
#include
//-----------------------------------------------------------------------------
@@ -222,6 +225,14 @@
{
return new pqTextLocationWidget(proxy, group);
}
+ else if (QString(group->GetPanelWidget()) == "cinema_export_selector")
+ {
+#ifdef PARAVIEW_ENABLE_PYTHON
+ return new pqCinemaConfiguration(proxy, group);
+#else
+ return NULL;
+#endif
+ }
// *** NOTE: When adding new types, please update the header documentation ***
return 0;
diff -Nru paraview-5.0.0+dfsg1/Qt/ApplicationComponents/pqStandardPropertyWidgetInterface.h paraview-5.0.1+dfsg1/Qt/ApplicationComponents/pqStandardPropertyWidgetInterface.h
--- paraview-5.0.0+dfsg1/Qt/ApplicationComponents/pqStandardPropertyWidgetInterface.h 2016-01-08 20:21:35.000000000 +0000
+++ paraview-5.0.1+dfsg1/Qt/ApplicationComponents/pqStandardPropertyWidgetInterface.h 2016-03-28 15:07:03.000000000 +0000
@@ -86,6 +86,7 @@
/// \li \c FontEditor : pqFontPropertyWidget
/// \li \c LightsEditor : pqLightsPropertyGroup
/// \li \c SeriesEditor : pqSeriesEditorPropertyWidget
+ /// \li \c cinema_export_selector : pqCinemaConfiguration
virtual pqPropertyWidget* createWidgetForPropertyGroup(
vtkSMProxy *proxy, vtkSMPropertyGroup *group);
diff -Nru paraview-5.0.0+dfsg1/Qt/ApplicationComponents/Resources/UI/pqColorMapEditor.ui paraview-5.0.1+dfsg1/Qt/ApplicationComponents/Resources/UI/pqColorMapEditor.ui
--- paraview-5.0.0+dfsg1/Qt/ApplicationComponents/Resources/UI/pqColorMapEditor.ui 2016-01-08 20:21:35.000000000 +0000
+++ paraview-5.0.1+dfsg1/Qt/ApplicationComponents/Resources/UI/pqColorMapEditor.ui 2016-03-28 15:07:03.000000000 +0000
@@ -208,9 +208,6 @@
:/pqWidgets/Icons/pqUpdate16.png:/pqWidgets/Icons/pqUpdate16.png
-
- Alt+A
-
true
@@ -228,9 +225,6 @@
:/pqWidgets/Icons/pqUpdate16.png:/pqWidgets/Icons/pqUpdate16.png
-
- Alt+A
-
true
diff -Nru paraview-5.0.0+dfsg1/Qt/ApplicationComponents/Resources/UI/pqFileMenuBuilder.ui paraview-5.0.1+dfsg1/Qt/ApplicationComponents/Resources/UI/pqFileMenuBuilder.ui
--- paraview-5.0.0+dfsg1/Qt/ApplicationComponents/Resources/UI/pqFileMenuBuilder.ui 2016-01-08 20:21:35.000000000 +0000
+++ paraview-5.0.1+dfsg1/Qt/ApplicationComponents/Resources/UI/pqFileMenuBuilder.ui 2016-03-28 15:06:22.000000000 +0000
@@ -125,11 +125,6 @@
Export Scene...
-
-
- Export Cinema...
-
-
Save Window Layout...
@@ -161,7 +156,6 @@
-
diff -Nru paraview-5.0.0+dfsg1/Qt/ApplicationComponents/Resources/UI/pqImageCompressorWidget.ui paraview-5.0.1+dfsg1/Qt/ApplicationComponents/Resources/UI/pqImageCompressorWidget.ui
--- paraview-5.0.0+dfsg1/Qt/ApplicationComponents/Resources/UI/pqImageCompressorWidget.ui 2016-01-08 20:21:35.000000000 +0000
+++ paraview-5.0.1+dfsg1/Qt/ApplicationComponents/Resources/UI/pqImageCompressorWidget.ui 2016-03-28 15:06:22.000000000 +0000
@@ -7,7 +7,7 @@
0
0
551
- 363
+ 304
@@ -36,6 +36,11 @@
-
+ LZ4
+
+
+ -
+
Squirt (run-length encoding based compression)
@@ -49,7 +54,7 @@
-
- Set the Squirt compression level. Move to right for better compression ratio at the cost of reduced image quality.
+ Set the Squirt/LZ4 compression level. Move to right for better compression ratio at the cost of reduced image quality.
true
diff -Nru paraview-5.0.0+dfsg1/Qt/Components/CMakeLists.txt paraview-5.0.1+dfsg1/Qt/Components/CMakeLists.txt
--- paraview-5.0.0+dfsg1/Qt/Components/CMakeLists.txt 2016-01-08 20:21:35.000000000 +0000
+++ paraview-5.0.1+dfsg1/Qt/Components/CMakeLists.txt 2016-03-28 15:07:03.000000000 +0000
@@ -591,6 +591,9 @@
pqImageOutputInfo.h
pqCinemaTrack.cxx
pqCinemaTrack.h
+ pqCinemaConfiguration.cxx
+ pqExportViewSelection.cxx
+ pqCinemaTrackSelection.cxx
pqSGExportStateWizard.cxx
pqSGExportStateWizard.h
pqSGPluginManager.cxx
@@ -601,6 +604,9 @@
LIST(APPEND Module_MOC_HDRS
pqImageOutputInfo.h
pqCinemaTrack.h
+ pqCinemaConfiguration.h
+ pqExportViewSelection.h
+ pqCinemaTrackSelection.h
pqSGExportStateWizard.h
pqSGPluginManager.h
pqSGWritersMenuManager.h
@@ -609,6 +615,9 @@
Resources/UI/pqImageOutputInfo.ui
Resources/UI/pqCinemaTrack.ui
Resources/UI/pqExportStateWizard.ui
+ Resources/UI/pqCinemaConfiguration.ui
+ Resources/UI/pqExportViewSelection.ui
+ Resources/UI/pqCinemaTrackSelection.ui
)
endif()
diff -Nru paraview-5.0.0+dfsg1/Qt/Components/pqCinemaConfiguration.cxx paraview-5.0.1+dfsg1/Qt/Components/pqCinemaConfiguration.cxx
--- paraview-5.0.0+dfsg1/Qt/Components/pqCinemaConfiguration.cxx 1970-01-01 00:00:00.000000000 +0000
+++ paraview-5.0.1+dfsg1/Qt/Components/pqCinemaConfiguration.cxx 2016-03-28 15:06:22.000000000 +0000
@@ -0,0 +1,114 @@
+/*=========================================================================
+
+ Program: ParaView
+ Module: pqCinemaConfiguration.cxx
+
+ Copyright (c) 2005,2006 Sandia Corporation, Kitware Inc.
+ All rights reserved.
+
+ ParaView is a free software; you can redistribute it and/or modify it
+ under the terms of the ParaView license version 1.2.
+
+ See License_v1.2.txt for the full ParaView license.
+ A copy of this license can be obtained by contacting
+ Kitware Inc.
+ 28 Corporate Drive
+ Clifton Park, NY 12065
+ USA
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHORS OR
+CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+========================================================================*/
+#include "pqCinemaConfiguration.h"
+#include "ui_pqCinemaConfiguration.h"
+#include "pqApplicationCore.h"
+#include "pqServerManagerModel.h"
+#include "pqRenderViewBase.h"
+#include "pqContextView.h"
+#include "pqPipelineFilter.h"
+
+
+// ----------------------------------------------------------------------------
+pqCinemaConfiguration::pqCinemaConfiguration(vtkSMProxy* proxy_, vtkSMPropertyGroup*
+ smpgroup, QWidget* parent_)
+: Superclass(proxy_, parent_)
+, Ui(new Ui::CinemaConfiguration())
+{
+ Q_UNUSED(smpgroup);
+ this->Ui->setupUi(this);
+
+ /* This is necessary to display all the widgets correctly given that
+ QWidget::adjustSize() (see pqExportReaction.cxx) is constrained to a
+ max. of 2/3 of the screen's height
+ (http://doc.qt.io/qt-4.8/qwidget.html#adjustSize). */
+ this->setMinimumHeight(700);
+
+ // link ui to proxy properties
+ this->addPropertyLink(this, "viewSelection", SIGNAL(viewSelectionChanged()),
+ proxy_->GetProperty("ViewSelection"));
+
+ this->addPropertyLink(this, "trackSelection", SIGNAL(trackSelectionChanged()),
+ proxy_->GetProperty("TrackSelection"));
+
+ // update ui with current views and filters and connect signals
+ this->populateElements();
+ this->Ui->wViewSelection->setCinemaVisible(true, false);
+}
+
+pqCinemaConfiguration::~pqCinemaConfiguration()
+{
+ delete Ui;
+}
+
+void pqCinemaConfiguration::updateWidget(bool showing_advanced_properties)
+{
+ Superclass::updateWidget(showing_advanced_properties);
+}
+
+QString pqCinemaConfiguration::viewSelection()
+{
+ // Parameter format pv_introspect.export_scene expects for each view.
+ // (see pv_introspect.py and pqExportViewSelection for more details.
+ QString format("'%1' : ['%2', %3, %4, %5, %6, %7, %8]");
+ QString script = this->Ui->wViewSelection->getSelectionAsPythonScript(format, true);
+
+ return script;
+}
+
+QString pqCinemaConfiguration::trackSelection()
+{
+ // Parameter format pv_introspect.export_scene expects for each cinema track.
+ // (see pv_introspect.py and pqCinemaTrackSelection for more details.
+ QString format("'%1' : %2");
+ QString script = this->Ui->wTrackSelection->getSelectionAsPythonScript(format);
+
+ return script;
+}
+
+void pqCinemaConfiguration::populateElements()
+{
+ pqServerManagerModel* smModel = pqApplicationCore::instance()->getServerManagerModel();
+
+ QList rViews = smModel->findItems();
+ QList cViews = smModel->findItems();
+ this->Ui->wViewSelection->populateViews(rViews, cViews);
+
+ QList filters = smModel->findItems();
+ this->Ui->wTrackSelection->populateTracks(filters);
+}
+
+void pqCinemaConfiguration::hideEvent(QHideEvent* event_)
+{
+ emit changeFinished();
+ Superclass::hideEvent(event_);
+}
diff -Nru paraview-5.0.0+dfsg1/Qt/Components/pqCinemaConfiguration.h paraview-5.0.1+dfsg1/Qt/Components/pqCinemaConfiguration.h
--- paraview-5.0.0+dfsg1/Qt/Components/pqCinemaConfiguration.h 1970-01-01 00:00:00.000000000 +0000
+++ paraview-5.0.1+dfsg1/Qt/Components/pqCinemaConfiguration.h 2016-03-28 15:06:22.000000000 +0000
@@ -0,0 +1,94 @@
+/*=========================================================================
+
+ Program: ParaView
+ Module: pqCinemaConfiguration.h
+
+ Copyright (c) 2005,2006 Sandia Corporation, Kitware Inc.
+ All rights reserved.
+
+ ParaView is a free software; you can redistribute it and/or modify it
+ under the terms of the ParaView license version 1.2.
+
+ See License_v1.2.txt for the full ParaView license.
+ A copy of this license can be obtained by contacting
+ Kitware Inc.
+ 28 Corporate Drive
+ Clifton Park, NY 12065
+ USA
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHORS OR
+CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+========================================================================*/
+#ifndef pqCinemaConfiguration_h
+#define pqCinemaConfiguration_h
+
+#include "pqComponentsModule.h"
+#include "pqPropertyWidget.h"
+
+
+namespace Ui
+{
+ class CinemaConfiguration;
+}
+
+/// @brief PropertyWidget used to define specifics of a Cinema database to be exported.
+///
+/// This widget is used as the panel_widget of the vtkCinemaExporter (see SMApplication/
+/// Resources/utilities.xml), which is called from the top menu "Export Scene...". Some of
+/// its main components are also used in pqSGExportWizard.
+class PQCOMPONENTS_EXPORT pqCinemaConfiguration : public pqPropertyWidget
+{
+ Q_OBJECT;
+ Q_PROPERTY(QString viewSelection READ viewSelection);
+ Q_PROPERTY(QString trackSelection READ trackSelection);
+
+ typedef pqPropertyWidget Superclass;
+
+public:
+
+ pqCinemaConfiguration(vtkSMProxy* proxy_, vtkSMPropertyGroup* smpgroup, QWidget* parent_ = NULL);
+ virtual ~pqCinemaConfiguration();
+
+ virtual void updateWidget(bool showing_advanced_properties);
+
+ /// Get method for the viewSelection Q_PROPERTY. Defines a python script extract describing
+ /// the user-selected view options.
+ QString viewSelection();
+
+ /// Get method for the trackSelection Q_PROPERTY. Defines a python script extract describing
+ /// the user-selected track options.
+ QString trackSelection();
+
+protected:
+
+ /// Updates the vtkCinemaExporter proxy by emitting pqPropertyWidget's changeFinished() signal.
+ void hideEvent(QHideEvent* event_);
+
+signals:
+
+ void compositeChanged();
+
+ void viewSelectionChanged();
+
+ void trackSelectionChanged();
+
+private:
+
+ void populateElements();
+
+ Ui::CinemaConfiguration* Ui;
+
+ Q_DISABLE_COPY(pqCinemaConfiguration);
+};
+
+#endif
diff -Nru paraview-5.0.0+dfsg1/Qt/Components/pqCinemaTrack.cxx paraview-5.0.1+dfsg1/Qt/Components/pqCinemaTrack.cxx
--- paraview-5.0.0+dfsg1/Qt/Components/pqCinemaTrack.cxx 2016-01-08 20:21:35.000000000 +0000
+++ paraview-5.0.1+dfsg1/Qt/Components/pqCinemaTrack.cxx 2016-03-28 15:06:22.000000000 +0000
@@ -51,11 +51,11 @@
//-----------------------------------------------------------------------------
pqCinemaTrack::pqCinemaTrack(
QWidget *parentObject, Qt::WindowFlags parentFlags,
- pqPipelineFilter* filter):
- QWidget(parentObject, parentFlags),
- Track(new Ui::CinemaTrack())
+ pqPipelineFilter* filter)
+: QWidget(parentObject, parentFlags)
+, Track(new Ui::CinemaTrack())
+, valsWidget(NULL)
{
- this->valsWidget = NULL;
this->Track->setupUi(this);
vtkSMProxy *prox = filter->getProxy();
@@ -86,21 +86,20 @@
if (dom)
{
- this->Track->label->setText(filter->getSMName().toLower());
- this->Track->radioButton->setEnabled(true);
- this->Track->radioButton->setChecked(false);
- QObject::connect(this->Track->radioButton, SIGNAL(toggled(bool)),
+ this->Track->label->setText(filter->getSMName());
+ this->Track->chbIncludeTrack->setEnabled(true);
+ this->Track->chbIncludeTrack->setChecked(false);
+ QObject::connect(this->Track->chbIncludeTrack, SIGNAL(toggled(bool)),
this, SLOT(toggleTrack(bool)));
pqScalarValueListPropertyWidget *vals = new pqScalarValueListPropertyWidget(prop, prox, this);
- vals->setFixedHeight(200);
- this->valsWidget = vals;
-
vals->setRangeDomain(dom);
vals->setEnabled(false);
- QVBoxLayout *valsLayout = new QVBoxLayout(this->Track->scrollAreaWidgetContents_2);
- valsLayout->addWidget(vals);
- valsLayout->insertSpacing(-1, 100);
+ vals->setMinimumHeight(100);
+ vals->setFixedHeight(100);
+ vals->setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Expanding);
+ this->layout()->addWidget(vals);
+ this->valsWidget = vals;
}
}
};
@@ -119,7 +118,7 @@
//-----------------------------------------------------------------------------
bool pqCinemaTrack::explore() const
{
- return (this->Track->radioButton->isChecked() &&
+ return (this->Track->chbIncludeTrack->isChecked() &&
this->valsWidget &&
!this->valsWidget->scalars().isEmpty());
}
diff -Nru paraview-5.0.0+dfsg1/Qt/Components/pqCinemaTrackSelection.cxx paraview-5.0.1+dfsg1/Qt/Components/pqCinemaTrackSelection.cxx
--- paraview-5.0.0+dfsg1/Qt/Components/pqCinemaTrackSelection.cxx 1970-01-01 00:00:00.000000000 +0000
+++ paraview-5.0.1+dfsg1/Qt/Components/pqCinemaTrackSelection.cxx 2016-03-28 15:06:22.000000000 +0000
@@ -0,0 +1,167 @@
+/*=========================================================================
+
+ Program: ParaView
+ Module: pqCinemaTrackSelection.cxx
+
+ Copyright (c) 2005,2006 Sandia Corporation, Kitware Inc.
+ All rights reserved.
+
+ ParaView is a free software; you can redistribute it and/or modify it
+ under the terms of the ParaView license version 1.2.
+
+ See License_v1.2.txt for the full ParaView license.
+ A copy of this license can be obtained by contacting
+ Kitware Inc.
+ 28 Corporate Drive
+ Clifton Park, NY 12065
+ USA
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHORS OR
+CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+========================================================================*/
+#include "vtkSMProxy.h"
+
+#include "pqCinemaTrackSelection.h"
+#include "ui_pqCinemaTrackSelection.h"
+#include "pqPipelineFilter.h"
+#include "pqCinemaTrack.h"
+
+
+// ----------------------------------------------------------------------------
+pqCinemaTrackSelection::pqCinemaTrackSelection(QWidget* parent_)
+: QWidget(parent_)
+, Ui(new Ui::CinemaTrackSelection())
+{
+ this->Ui->setupUi(this);
+
+ connect(this->Ui->pbPrevious, SIGNAL(clicked()), this, SLOT(onPreviousClicked()));
+ connect(this->Ui->pbNext, SIGNAL(clicked()), this, SLOT(onNextClicked()));
+}
+
+pqCinemaTrackSelection::~pqCinemaTrackSelection()
+{
+ delete Ui;
+}
+
+// ----------------------------------------------------------------------------
+void pqCinemaTrackSelection::onPreviousClicked()
+{
+ int previousIndex = this->Ui->swTracks->currentIndex() - 1;
+ if (previousIndex >= 0)
+ {
+ this->Ui->swTracks->setCurrentIndex(previousIndex);
+ if (previousIndex == 0) // first track
+ {
+ this->Ui->pbPrevious->setEnabled(false);
+ }
+
+ if (!this->Ui->pbNext->isEnabled())
+ {
+ this->Ui->pbNext->setEnabled(true);
+ }
+ }
+}
+
+// ----------------------------------------------------------------------------
+void pqCinemaTrackSelection::onNextClicked()
+{
+ int nextIndex = this->Ui->swTracks->currentIndex() + 1;
+ if (nextIndex < this->Ui->swTracks->count())
+ {
+ this->Ui->swTracks->setCurrentIndex(nextIndex);
+ if (nextIndex == this->Ui->swTracks->count() - 1) // last track
+ {
+ this->Ui->pbNext->setEnabled(false);
+ }
+
+ if (!this->Ui->pbPrevious->isEnabled())
+ {
+ this->Ui->pbPrevious->setEnabled(true);
+ }
+ }
+}
+
+// ----------------------------------------------------------------------------
+void pqCinemaTrackSelection::populateTracks(QList tracks)
+{
+ Qt::WindowFlags parentFlags = this->Ui->swTracks->windowFlags();
+ foreach(pqPipelineFilter* t, tracks)
+ {
+ // add only cinema-supported filters
+ if (t->getProxy()->GetVTKClassName() &&
+ (!strcmp(t->getProxy()->GetVTKClassName(), "vtkPVContourFilter") ||
+ !strcmp(t->getProxy()->GetVTKClassName(), "vtkPVMetaSliceDataSet") ||
+ !strcmp(t->getProxy()->GetVTKClassName(), "vtkPVMetaClipDataSet")) )
+ {
+ pqCinemaTrack* track = new pqCinemaTrack(this->Ui->swTracks, parentFlags, t);
+ this->Ui->swTracks->addWidget(track);
+ }
+ }
+
+ if (this->Ui->swTracks->count() > 1)
+ {
+ this->Ui->swTracks->setCurrentIndex(0);
+ this->Ui->pbNext->setEnabled(true);
+ }
+}
+
+//-----------------------------------------------------------------------------
+QList pqCinemaTrackSelection::getTracks()
+{
+ QList tracks;
+
+ for (int i = 0 ; i < this->Ui->swTracks->count() ; i++)
+ {
+ if (pqCinemaTrack* track = qobject_cast(
+ this->Ui->swTracks->widget(i)) )
+ {
+ tracks.append(track);
+ }
+ }
+
+ return tracks;
+}
+
+//------------------------------------------------------------------------------
+QString pqCinemaTrackSelection::getSelectionAsPythonScript(QString const & format)
+{
+ QString cinema_tracks;
+ QList tracks = this->getTracks();
+
+ for (int index = 0; index < tracks.count(); index++)
+ {
+ pqCinemaTrack* const & p = tracks.at(index);
+ if (!p->explore())
+ {
+ continue;
+ }
+
+ QString name = p->filterName();
+ QString values = "[";
+ QVariantList vals = p->scalars();
+ for (int j = 0; j < vals.count(); j++)
+ {
+ values += QString::number(vals.value(j).toDouble());
+ values += ",";
+ }
+ values.chop(1);
+ values += "]";
+ QString info = format.arg(name).arg(values);
+ cinema_tracks+= info;
+
+ if (index < tracks.count() - 1)
+ cinema_tracks += ", ";
+ }
+
+ return cinema_tracks;
+}
diff -Nru paraview-5.0.0+dfsg1/Qt/Components/pqCinemaTrackSelection.h paraview-5.0.1+dfsg1/Qt/Components/pqCinemaTrackSelection.h
--- paraview-5.0.0+dfsg1/Qt/Components/pqCinemaTrackSelection.h 1970-01-01 00:00:00.000000000 +0000
+++ paraview-5.0.1+dfsg1/Qt/Components/pqCinemaTrackSelection.h 2016-03-28 15:06:22.000000000 +0000
@@ -0,0 +1,87 @@
+/*=========================================================================
+
+ Program: ParaView
+ Module: pqCinemaTrackSelection.h
+
+ Copyright (c) 2005,2006 Sandia Corporation, Kitware Inc.
+ All rights reserved.
+
+ ParaView is a free software; you can redistribute it and/or modify it
+ under the terms of the ParaView license version 1.2.
+
+ See License_v1.2.txt for the full ParaView license.
+ A copy of this license can be obtained by contacting
+ Kitware Inc.
+ 28 Corporate Drive
+ Clifton Park, NY 12065
+ USA
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHORS OR
+CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+========================================================================*/
+#ifndef pqCinemaTrackSelection_h
+#define pqCinemaTrackSelection_h
+
+#include "pqComponentsModule.h"
+#include
+
+
+namespace Ui
+{
+ class CinemaTrackSelection;
+}
+
+class pqPipelineFilter;
+class pqCinemaTrack;
+
+/// @brief Widget to select among supported Cinema Tracks (filters).
+///
+/// The user selection can be queried as a string to be included in a Python
+/// script directly. The widget is used by pqCinemaConfiguration and
+/// pqSGExportStateWizard.
+class PQCOMPONENTS_EXPORT pqCinemaTrackSelection : public QWidget
+{
+ Q_OBJECT;
+
+public:
+
+ pqCinemaTrackSelection(QWidget* parent_ = NULL);
+ ~pqCinemaTrackSelection();
+
+ /// @note Only some filters are currently supported by Cinema.
+ void populateTracks(QList tracks);
+
+ QList getTracks();
+
+ /// Returns a string containing a comma separated set of cinema tracks with each
+ /// track defined as in 'format'.
+ /// Order of track values:
+ /// 1. Track Name
+ /// 2. Value tuple
+ ///
+ /// Example: Format as defined in pqCinemaConfiguration
+ /// format = "'%1' : 2%"
+ /// returns -> 'name1' : [a, b, c], 'name2' : [d, e, f], ... (for N tracks)
+ QString getSelectionAsPythonScript(QString const & format);
+
+private slots:
+
+ void onPreviousClicked();
+ void onNextClicked();
+
+private:
+
+ Ui::CinemaTrackSelection* Ui;
+};
+
+#endif
diff -Nru paraview-5.0.0+dfsg1/Qt/Components/pqExportViewSelection.cxx paraview-5.0.1+dfsg1/Qt/Components/pqExportViewSelection.cxx
--- paraview-5.0.0+dfsg1/Qt/Components/pqExportViewSelection.cxx 1970-01-01 00:00:00.000000000 +0000
+++ paraview-5.0.1+dfsg1/Qt/Components/pqExportViewSelection.cxx 2016-03-28 15:06:22.000000000 +0000
@@ -0,0 +1,262 @@
+/*=========================================================================
+
+ Program: ParaView
+ Module: pqExportViewSelection.cxx
+
+ Copyright (c) 2005,2006 Sandia Corporation, Kitware Inc.
+ All rights reserved.
+
+ ParaView is a free software; you can redistribute it and/or modify it
+ under the terms of the ParaView license version 1.2.
+
+ See License_v1.2.txt for the full ParaView license.
+ A copy of this license can be obtained by contacting
+ Kitware Inc.
+ 28 Corporate Drive
+ Clifton Park, NY 12065
+ USA
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHORS OR
+CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+========================================================================*/
+#include "vtkCamera.h"
+#include "vtkSMProxyManager.h"
+#include "vtkSMRenderViewProxy.h"
+#include "vtkSMSessionProxyManager.h"
+
+#include "pqExportViewSelection.h"
+#include "ui_pqExportViewSelection.h"
+#include "pqRenderView.h"
+#include "pqContextView.h"
+#include "pqImageOutputInfo.h"
+
+
+// ----------------------------------------------------------------------------
+pqExportViewSelection::pqExportViewSelection(QWidget* parent_)
+: QWidget(parent_)
+, Ui(new Ui::ExportViewSelection())
+{
+ this->Ui->setupUi(this);
+
+ connect(this->Ui->pbPrevious, SIGNAL(clicked()), this, SLOT(onPreviousClicked()));
+ connect(this->Ui->pbNext, SIGNAL(clicked()), this, SLOT(onNextClicked()));
+}
+
+pqExportViewSelection::~pqExportViewSelection()
+{
+ delete this->Ui;
+}
+
+void pqExportViewSelection::onPreviousClicked()
+{
+ int previousIndex = this->Ui->swViews->currentIndex() - 1;
+ if (previousIndex >= 0)
+ {
+ this->Ui->swViews->setCurrentIndex(previousIndex);
+ if (previousIndex == 0) // first view
+ {
+ this->Ui->pbPrevious->setEnabled(false);
+ }
+
+ if (!this->Ui->pbNext->isEnabled())
+ {
+ this->Ui->pbNext->setEnabled(true);
+ }
+ }
+}
+
+void pqExportViewSelection::onNextClicked()
+{
+ int nextIndex = this->Ui->swViews->currentIndex() + 1;
+ if (nextIndex < this->Ui->swViews->count())
+ {
+ this->Ui->swViews->setCurrentIndex(nextIndex);
+ if (nextIndex == this->Ui->swViews->count() - 1) // last view
+ {
+ this->Ui->pbNext->setEnabled(false);
+ }
+
+ if (!this->Ui->pbPrevious->isEnabled())
+ {
+ this->Ui->pbPrevious->setEnabled(true);
+ }
+ }
+}
+
+void pqExportViewSelection::populateViews(QList const & renderViews,
+ QList const & contextViews)
+{
+ int const numberOfViews = renderViews.size() + contextViews.size();
+
+ // first do 2D and 3D render views
+ this->addViews >(renderViews, numberOfViews);
+ this->addViews >(contextViews, numberOfViews);
+
+ if (this->Ui->swViews->count() > 1)
+ {
+ this->Ui->swViews->setCurrentIndex(0);
+ this->Ui->pbNext->setEnabled(true);
+ }
+}
+
+template
+void pqExportViewSelection::addViews(T const & views, int numberOfViews)
+{
+ Qt::WindowFlags parentFlags = this->Ui->swViews->windowFlags();
+ int viewCounter = this->Ui->swViews->count();
+
+ for(typename T::ConstIterator it = views.begin() ; it != views.end() ; it++)
+ {
+ QString viewName = numberOfViews == 1 ? "image_%t.png" :
+ QString("image_%1_%t.png").arg(viewCounter++);
+
+ pqImageOutputInfo* info = new pqImageOutputInfo(this->Ui->swViews, parentFlags, *it, viewName);
+ this->Ui->swViews->addWidget(info);
+ }
+}
+
+QList pqExportViewSelection::getImageOutputInfos()
+{
+ QList infos;
+
+ for (int i = 0 ; i < this->Ui->swViews->count() ; i++)
+ {
+ if (pqImageOutputInfo* qinfo = qobject_cast(
+ this->Ui->swViews->widget(i)) )
+ {
+ infos.append(qinfo);
+ }
+ }
+
+ return infos;
+}
+
+void pqExportViewSelection::setCinemaVisible(bool status, bool specASupport)
+{
+ typedef pqImageOutputInfo* InfoPtr;
+
+ int const size_ = this->Ui->swViews->count();
+ for (int i = 0 ; i < size_ ; i++)
+ {
+ if (InfoPtr info = qobject_cast(this->Ui->swViews->widget(i)))
+ {
+ info->setCinemaVisible(status, specASupport);
+ }
+ }
+}
+
+QString pqExportViewSelection::getSelectionAsPythonScript(QString const & scriptFormat, bool isComposite)
+{
+ QString rendering_info;
+
+ vtkSMSessionProxyManager* proxyManager =
+ vtkSMProxyManager::GetProxyManager()->GetActiveSessionProxyManager();
+
+ QList allViews = this->getImageOutputInfos();
+ for(int index = 0; index < allViews.count(); index++)
+ {
+ pqImageOutputInfo* const & viewInfo = allViews.at(index);
+ pqView* view = viewInfo->getView();
+ QSize viewSize = view->getSize();
+ vtkSMViewProxy* viewProxy = view->getViewProxy();
+ vtkSMRenderViewProxy* rvp = vtkSMRenderViewProxy::SafeDownCast(viewProxy);
+ pqRenderView* rview = dynamic_cast(view);
+
+ //cinema camera parameters
+ QString cinemaCam = "{}";
+ QString camType = viewInfo->getCameraType();
+ if (rvp && (camType != "None"))
+ {
+ cinemaCam = QString("{");
+
+ if (isComposite)
+ {
+ cinemaCam += "\"composite\":True, ";
+ }
+ cinemaCam += "\"camera\":\"";
+ cinemaCam += camType;
+ cinemaCam += "\"";
+ if (camType != "Static")
+ {
+ cinemaCam += ", ";
+
+ cinemaCam += "\"phi\":[";
+ int j;
+ for (j = -180; j < 180; j+= (360/viewInfo->getPhi()))
+ {
+ cinemaCam += QString::number(j) + ",";
+ }
+ cinemaCam.chop(1);
+ cinemaCam += "],";
+
+ cinemaCam += "\"theta\":[";
+ for (j = -180; j < 180; j+= (360/viewInfo->getTheta()))
+ {
+ cinemaCam += QString::number(j) + ",";
+ }
+ cinemaCam.chop(1);
+ cinemaCam += "], ";
+
+ vtkCamera *cam = rvp->GetActiveCamera();
+ double eye[3];
+ double at[3];
+ double up[3];
+ cam->GetPosition(eye);
+ rview->getCenterOfRotation(at);
+ cam->GetViewUp(up);
+ cinemaCam += "\"initial\":{ ";
+ cinemaCam += "\"eye\": [" +
+ QString::number(eye[0]) + "," + QString::number(eye[1]) + "," + QString::number(eye[2]) + "], ";
+ cinemaCam += "\"at\": [" +
+ QString::number(at[0]) + "," + QString::number(at[1]) + "," + QString::number(at[2]) + "], ";
+ cinemaCam += "\"up\": [" +
+ QString::number(up[0]) + "," + QString::number(up[1]) + "," + QString::number(up[2]) + "] ";
+ cinemaCam += "} ";
+ }
+ cinemaCam += "}";
+ }
+
+ QMap parameters;
+ parameters["%1"] = proxyManager->GetProxyName("views", viewProxy);
+ parameters["%2"] = viewInfo->getImageFileName();
+ parameters["%3"] = QString::number(viewInfo->getWriteFrequency());
+ parameters["%4"] = QString::number(static_cast(viewInfo->fitToScreen()));
+ parameters["%5"] = QString::number(viewInfo->getMagnification());
+ parameters["%6"] = QString::number(viewSize.width());
+ parameters["%7"] = QString::number(viewSize.height());
+ parameters["%8"] = cinemaCam;
+
+ QString info = scriptFormat;
+ this->patchFormatString(parameters, info);
+
+ rendering_info += info;
+
+ if (index < allViews.count() - 1)
+ rendering_info += ", ";
+ }
+
+ return rendering_info;
+}
+
+void pqExportViewSelection::patchFormatString(QMap const & parameters, QString & infoFormat)
+{
+ QMapIterator paramIt(parameters);
+ while(paramIt.hasNext())
+ {
+ paramIt.next();
+ if (infoFormat.contains(paramIt.key()))
+ {
+ infoFormat = infoFormat.arg(paramIt.value());
+ }
+ }
+}
diff -Nru paraview-5.0.0+dfsg1/Qt/Components/pqExportViewSelection.h paraview-5.0.1+dfsg1/Qt/Components/pqExportViewSelection.h
--- paraview-5.0.0+dfsg1/Qt/Components/pqExportViewSelection.h 1970-01-01 00:00:00.000000000 +0000
+++ paraview-5.0.1+dfsg1/Qt/Components/pqExportViewSelection.h 2016-03-28 15:06:22.000000000 +0000
@@ -0,0 +1,117 @@
+/*=========================================================================
+
+ Program: ParaView
+ Module: pqExportViewSelection.h
+
+ Copyright (c) 2005,2006 Sandia Corporation, Kitware Inc.
+ All rights reserved.
+
+ ParaView is a free software; you can redistribute it and/or modify it
+ under the terms of the ParaView license version 1.2.
+
+ See License_v1.2.txt for the full ParaView license.
+ A copy of this license can be obtained by contacting
+ Kitware Inc.
+ 28 Corporate Drive
+ Clifton Park, NY 12065
+ USA
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHORS OR
+CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+========================================================================*/
+#ifndef pqExportViewSelection_h
+#define pqExportViewSelection_h
+
+#include "pqComponentsModule.h"
+#include
+
+
+class pqRenderViewBase;
+class pqContextView;
+class pqImageOutputInfo;
+
+namespace Ui
+{
+ class ExportViewSelection;
+}
+
+
+/// @brief Widget to select views to be included in a coprocessing script.
+///
+/// The user selection can be queried as a string to be included in a Python
+/// script directly. The widget is used by pqCinemaConfiguration and
+/// pqSGExportStateWizard.
+class PQCOMPONENTS_EXPORT pqExportViewSelection : public QWidget
+{
+ Q_OBJECT;
+
+public:
+
+ pqExportViewSelection(QWidget* parent_ = NULL);
+ ~pqExportViewSelection();
+
+ void populateViews(QList const & renderViews,
+ QList const & contextViews);
+
+ /// Hides/shows cinema options.
+ /// @note The menu 'Export Scene...' -> 'Cinema' currently only supports
+ /// SpecB, for this reason the specASupport flag is necessary.
+ void setCinemaVisible(bool status, bool specASupport = true);
+
+ QList getImageOutputInfos();
+
+ /// Returns a string containing a comma separated set of views with each
+ /// view defined as in 'format'.
+ /// Order of view values:
+ /// 1. View name
+ /// 2. Image file name
+ /// 3. Frequency
+ /// 4. Fit to screen
+ /// 5. Magnification
+ /// 6. Image width
+ /// 7. Image height
+ /// 8. Cinema specific options (dictionary; phi, theta, composite, etc..)
+ ///
+ /// Example: Format as defined in pqCinemaConfiguration
+ /// format = "'%1' : ['%2', %3, %4, %5, %6, %7, %8]"
+ /// returns -> 'ViewName1' : ['Imname', 1, 1, 1, 1, 1, {'composite': True ...}],
+ /// 'ViewName2' : [...],
+ /// ... (for N views)
+ QString getSelectionAsPythonScript(QString const & scriptFromat, bool isComposite = true);
+
+private slots:
+
+ void onPreviousClicked();
+ void onNextClicked();
+
+private:
+
+ /// Checks if a given string marker exists in infoFormat and replaces it with the
+ /// appropriate value in parameters.
+ /// @note This helper for getSelectionAsPythonScript(...) is needed given that QString::arg's
+ /// result is undefined when called on a string with no unreplaced "%i" markers. See
+ /// , http://doc.qt.io/qt-4.8/qstring.html#arg
+ void patchFormatString(QMap const & parameters, QString & infoFormat);
+
+ /// @note This is templated to handle pqRenderViewBase* and pqContextView*
+ /// given that only these two pqView sub-types are supported by cinema. When
+ /// cinema gives support to all the pqView types the template will be removed.
+ template
+ void addViews(T const & views, int numberOfViews);
+
+///////////////////////////////////////////////////////////////////////////////
+
+ Ui::ExportViewSelection* Ui;
+};
+
+#endif
diff -Nru paraview-5.0.0+dfsg1/Qt/Components/pqImageOutputInfo.cxx paraview-5.0.1+dfsg1/Qt/Components/pqImageOutputInfo.cxx
--- paraview-5.0.0+dfsg1/Qt/Components/pqImageOutputInfo.cxx 2016-01-08 20:21:35.000000000 +0000
+++ paraview-5.0.1+dfsg1/Qt/Components/pqImageOutputInfo.cxx 2016-03-28 15:06:22.000000000 +0000
@@ -44,32 +44,47 @@
//-----------------------------------------------------------------------------
-pqImageOutputInfo::pqImageOutputInfo(
- QWidget *parentObject, Qt::WindowFlags parentFlags,
- pqView* view, QString& viewName):
- QWidget(parentObject, parentFlags),
- Info(new Ui::ImageOutputInfo()),
- View(view)
+pqImageOutputInfo::pqImageOutputInfo(QWidget* parent_)
+: QWidget(parent_)
+, Ui(new Ui::ImageOutputInfo())
{
- this->Info->setupUi(this);
+ this->initialize(0, NULL, "");
+}
+//-----------------------------------------------------------------------------
+pqImageOutputInfo::pqImageOutputInfo(QWidget *parentObject, Qt::WindowFlags
+ parentFlags, pqView* view, QString& viewName)
+: QWidget(parentObject, parentFlags)
+, Ui(new Ui::ImageOutputInfo())
+, View(view)
+{
+ this->initialize(parentFlags, view, viewName);
+};
+
+//-----------------------------------------------------------------------------
+void pqImageOutputInfo::initialize(Qt::WindowFlags parentFlags, pqView* view,
+ QString const & viewName)
+{
+ this->View = view;
+ QWidget::setWindowFlags(parentFlags);
+ this->Ui->setupUi(this);
+ this->Ui->imageFileName->setText(viewName);
- this->Info->imageFileName->setText(viewName);
QObject::connect(
- this->Info->imageFileName, SIGNAL(editingFinished()),
+ this->Ui->imageFileName, SIGNAL(editingFinished()),
this, SLOT(updateImageFileName()));
QObject::connect(
- this->Info->imageType, SIGNAL(currentIndexChanged(const QString&)),
+ this->Ui->imageType, SIGNAL(currentIndexChanged(const QString&)),
this, SLOT(updateImageFileNameExtension(const QString&)));
QObject::connect(
- this->Info->cinemaExport, SIGNAL(currentIndexChanged(const QString&)),
+ this->Ui->cinemaExport, SIGNAL(currentIndexChanged(const QString&)),
this, SLOT(updateCinemaType(const QString&)));
- this->hideCinema();
+ this->setCinemaVisible(false);
this->setupScreenshotInfo();
-};
+}
//-----------------------------------------------------------------------------
pqImageOutputInfo::~pqImageOutputInfo()
@@ -84,56 +99,62 @@
}
//-----------------------------------------------------------------------------
+void pqImageOutputInfo::setView(pqView* const view)
+{
+ this->View = view;
+}
+
+//-----------------------------------------------------------------------------
QString pqImageOutputInfo::getImageFileName()
{
- return this->Info->imageFileName->displayText();
+ return this->Ui->imageFileName->displayText();
}
//-----------------------------------------------------------------------------
void pqImageOutputInfo::hideFrequencyInput()
{
- this->Info->imageWriteFrequency->hide();
- this->Info->imageWriteFrequencyLabel->hide();
+ this->Ui->imageWriteFrequency->hide();
+ this->Ui->imageWriteFrequencyLabel->hide();
}
//-----------------------------------------------------------------------------
void pqImageOutputInfo::showFrequencyInput()
{
- this->Info->imageWriteFrequency->show();
- this->Info->imageWriteFrequencyLabel->show();
+ this->Ui->imageWriteFrequency->show();
+ this->Ui->imageWriteFrequencyLabel->show();
}
//-----------------------------------------------------------------------------
void pqImageOutputInfo::hideFitToScreen()
{
- this->Info->fitToScreen->hide();
+ this->Ui->fitToScreen->hide();
}
//-----------------------------------------------------------------------------
void pqImageOutputInfo::showFitToScreen()
{
- this->Info->fitToScreen->show();
+ this->Ui->fitToScreen->show();
}
//-----------------------------------------------------------------------------
int pqImageOutputInfo::getWriteFrequency()
{
- return this->Info->imageWriteFrequency->value();
+ return this->Ui->imageWriteFrequency->value();
}
//-----------------------------------------------------------------------------
bool pqImageOutputInfo::fitToScreen()
{
- return this->Info->fitToScreen->isChecked();
+ return this->Ui->fitToScreen->isChecked();
}
//-----------------------------------------------------------------------------
int pqImageOutputInfo::getMagnification()
{
- return this->Info->imageMagnification->value();
+ return this->Ui->imageMagnification->value();
}
//-----------------------------------------------------------------------------
void pqImageOutputInfo::updateImageFileName()
{
- QString fileName = this->Info->imageFileName->displayText();
+ QString fileName = this->Ui->imageFileName->displayText();
if(fileName.isNull() || fileName.isEmpty())
{
fileName = "image";
@@ -142,15 +163,15 @@
if(fileName.contains(regExp) == 0)
{
fileName.append(".");
- fileName.append(this->Info->imageType->currentText());
+ fileName.append(this->Ui->imageType->currentText());
}
else
{ // update imageType if it is different
int extensionIndex = fileName.lastIndexOf(".");
QString anExtension = fileName.right(fileName.size()-extensionIndex-1);
- int index = this->Info->imageType->findText(anExtension);
- this->Info->imageType->setCurrentIndex(index);
- fileName = this->Info->imageFileName->displayText();
+ int index = this->Ui->imageType->findText(anExtension);
+ this->Ui->imageType->setCurrentIndex(index);
+ fileName = this->Ui->imageFileName->displayText();
}
if(fileName.contains("%t") == 0)
@@ -158,29 +179,29 @@
fileName.insert(fileName.lastIndexOf("."), "_%t");
}
- this->Info->imageFileName->setText(fileName);
+ this->Ui->imageFileName->setText(fileName);
}
//-----------------------------------------------------------------------------
void pqImageOutputInfo::updateImageFileNameExtension(
const QString& fileExtension)
{
- QString displayText = this->Info->imageFileName->text();
+ QString displayText = this->Ui->imageFileName->text();
std::string newFileName = vtksys::SystemTools::GetFilenameWithoutExtension(
displayText.toLocal8Bit().constData());
newFileName.append(".");
newFileName.append(fileExtension.toLocal8Bit().constData());
- this->Info->imageFileName->setText(QString::fromStdString(newFileName));
+ this->Ui->imageFileName->setText(QString::fromStdString(newFileName));
}
//-----------------------------------------------------------------------------
void pqImageOutputInfo::setupScreenshotInfo()
{
- this->Info->thumbnailLabel->setVisible(true);
+ this->Ui->thumbnailLabel->setVisible(true);
if(!this->View)
{
- cerr << "no view available which seems really weird\n";
+ cerr << "No view has been set!" << '\n';
return;
}
@@ -211,31 +232,39 @@
result->GetPointer(0),
result->GetNumberOfTuples()*result->GetNumberOfComponents(), "PNG");
- this->Info->thumbnailLabel->setPixmap(thumbnail);
+ this->Ui->thumbnailLabel->setPixmap(thumbnail);
}
}
//-----------------------------------------------------------------------------
-void pqImageOutputInfo::hideCinema()
+void pqImageOutputInfo::setCinemaVisible(bool status, bool specASupport)
{
- this->Info->cinemaLabel->hide();
- this->Info->cinemaExport->setEnabled(false);
- this->Info->cinemaExport->hide();
- this->Info->phiLabel->hide();
- this->Info->phiResolution->setEnabled(false);
- this->Info->phiResolution->hide();
- this->Info->thetaLabel->hide();
- this->Info->thetaResolution->setEnabled(false);
- this->Info->thetaResolution->hide();
-}
+ if (status)
+ {
+ this->Ui->gbCinemaOptions->show();
+ this->updateSpherical();
+ }
+ else
+ this->Ui->gbCinemaOptions->hide();
-//-----------------------------------------------------------------------------
-void pqImageOutputInfo::showCinema()
-{
- this->Info->cinemaLabel->show();
- this->Info->cinemaExport->setEnabled(true);
- this->Info->cinemaExport->show();
- this->updateSpherical();
+ // Remove/ add options depending on what is supported
+ if (!specASupport)
+ {
+ this->Ui->cinemaExport->clear();
+ QStringList items;
+ items << "None" << "Spherical";
+ this->Ui->cinemaExport->addItems(items);
+ }
+ else
+ {
+ if (this->Ui->cinemaExport->count() < 3)
+ {
+ this->Ui->cinemaExport->clear();
+ QStringList items;
+ items << "None" << "Static" << "Spherical";
+ this->Ui->cinemaExport->addItems(items);
+ }
+ }
}
//-----------------------------------------------------------------------------
@@ -249,41 +278,33 @@
void pqImageOutputInfo::updateSpherical()
{
const QString& exportChoice =
- this->Info->cinemaExport->currentText();
+ this->Ui->cinemaExport->currentText();
if (exportChoice == "Spherical")
{
- this->Info->phiLabel->show();
- this->Info->phiResolution->setEnabled(true);
- this->Info->phiResolution->show();
- this->Info->thetaLabel->show();
- this->Info->thetaResolution->setEnabled(true);
- this->Info->thetaResolution->show();
+ //this->Ui->wCameraOptions->show();
+ this->Ui->wCameraOptions->setEnabled(true);
}
else
{
- this->Info->phiLabel->hide();
- this->Info->phiResolution->setEnabled(false);
- this->Info->phiResolution->hide();
- this->Info->thetaLabel->hide();
- this->Info->thetaResolution->setEnabled(false);
- this->Info->thetaResolution->hide();
+ //this->Ui->wCameraOptions->hide();
+ this->Ui->wCameraOptions->setEnabled(false);
}
}
//------------------------------------------------------------------------------
const QString pqImageOutputInfo::getCameraType()
{
- return this->Info->cinemaExport->currentText();
+ return this->Ui->cinemaExport->currentText();
}
//------------------------------------------------------------------------------
double pqImageOutputInfo::getPhi()
{
- return this->Info->phiResolution->value();
+ return this->Ui->phiResolution->value();
}
//------------------------------------------------------------------------------
double pqImageOutputInfo::getTheta()
{
- return this->Info->thetaResolution->value();
+ return this->Ui->thetaResolution->value();
}
diff -Nru paraview-5.0.0+dfsg1/Qt/Components/pqImageOutputInfo.h paraview-5.0.1+dfsg1/Qt/Components/pqImageOutputInfo.h
--- paraview-5.0.0+dfsg1/Qt/Components/pqImageOutputInfo.h 2016-01-08 20:21:35.000000000 +0000
+++ paraview-5.0.1+dfsg1/Qt/Components/pqImageOutputInfo.h 2016-03-28 15:06:22.000000000 +0000
@@ -38,16 +38,19 @@
#include
#include
+
class pqView;
namespace Ui { class ImageOutputInfo; }
class PQCOMPONENTS_EXPORT pqImageOutputInfo : public QWidget
{
Q_OBJECT
- typedef QWidget Superclass;
+
public:
- pqImageOutputInfo(
- QWidget *parentObject, Qt::WindowFlags parentFlags, pqView* view, QString& viewName);
+ pqImageOutputInfo(QWidget* parent_ = NULL);
+ pqImageOutputInfo(QWidget* parentObject, Qt::WindowFlags parentFlags,
+ pqView* view, QString& viewName);
+
~pqImageOutputInfo();
void setupScreenshotInfo();
@@ -62,12 +65,13 @@
bool fitToScreen();
int getMagnification();
- void showCinema();
- void hideCinema();
-
+ /// Remove or add options depending on whether cinema is visible
+ /// and specA should be supported.
+ void setCinemaVisible(bool status, bool specASupport = true);
const QString getCameraType();
double getPhi();
double getTheta();
+ void setView(pqView* const view);
public slots:
void updateImageFileName();
@@ -75,10 +79,14 @@
void updateCinemaType(const QString&);
private:
- Q_DISABLE_COPY(pqImageOutputInfo)
- QScopedPointer Info;
- pqView* View;
+
+ void initialize(Qt::WindowFlags parentFlags, pqView* view,
+ QString const & viewName);
void updateSpherical();
+
+ Q_DISABLE_COPY(pqImageOutputInfo)
+ QScopedPointer Ui;
+ pqView* View;
};
#endif
diff -Nru paraview-5.0.0+dfsg1/Qt/Components/pqSGExportStateWizard.cxx paraview-5.0.1+dfsg1/Qt/Components/pqSGExportStateWizard.cxx
--- paraview-5.0.0+dfsg1/Qt/Components/pqSGExportStateWizard.cxx 2016-01-08 20:21:35.000000000 +0000
+++ paraview-5.0.1+dfsg1/Qt/Components/pqSGExportStateWizard.cxx 2016-03-28 15:06:22.000000000 +0000
@@ -144,17 +144,15 @@
QWidget *parentObject, Qt::WindowFlags parentFlags)
: Superclass(parentObject, parentFlags)
{
- this->CurrentView = 0;
::ActiveWizard = this;
this->Internals = new pqInternals();
this->Internals->setupUi(this);
::ActiveWizard = NULL;
//this->setWizardStyle(ModernStyle);
this->setOption(QWizard::NoCancelButton, false);
- this->Internals->viewsContainer->hide();
+ this->Internals->wViewSelection->hide();
this->Internals->rescaleDataRange->hide();
- this->Internals->previousView->hide();
- this->Internals->nextView->hide();
+ this->Internals->laRescaleDataRange->hide();
QObject::connect(this->Internals->allInputs, SIGNAL(itemSelectionChanged()),
this, SLOT(updateAddRemoveButton()));
@@ -173,76 +171,32 @@
this, SLOT(onRemove()));
QObject::connect(this->Internals->outputRendering, SIGNAL(toggled(bool)),
- this->Internals->viewsContainer, SLOT(setVisible(bool)));
+ this->Internals->wViewSelection, SLOT(setVisible(bool)));
+
QObject::connect(this->Internals->outputRendering, SIGNAL(toggled(bool)),
this->Internals->rescaleDataRange, SLOT(setVisible(bool)));
+ QObject::connect(this->Internals->outputRendering, SIGNAL(toggled(bool)),
+ this->Internals->laRescaleDataRange, SLOT(setVisible(bool)));
- QObject::connect(this->Internals->nextView, SIGNAL(pressed()),
- this, SLOT(incrementView()));
- QObject::connect(this->Internals->previousView, SIGNAL(pressed()),
- this, SLOT(decrementView()));
-
- this->CurrentTrack = 0;
- this->Internals->cinemaContainer->hide();
- this->Internals->previousTrack->hide();
- this->Internals->nextTrack->hide();
+ this->Internals->chbComposite->hide();
+ this->Internals->wCinemaTrackSelection->hide();
+ QObject::connect(this->Internals->outputCinema, SIGNAL(toggled(bool)),
+ this->Internals->wCinemaTrackSelection, SLOT(setVisible(bool)));
QObject::connect(this->Internals->outputCinema, SIGNAL(toggled(bool)),
- this->Internals->cinemaContainer, SLOT(setVisible(bool)));
+ this->Internals->chbComposite, SLOT(setVisible(bool)));
QObject::connect(this->Internals->outputCinema, SIGNAL(toggled(bool)),
this, SLOT(toggleCinema(bool)));
- QObject::connect(this->Internals->nextTrack, SIGNAL(pressed()),
- this, SLOT(incrementTrack()));
- QObject::connect(this->Internals->previousTrack, SIGNAL(pressed()),
- this, SLOT(decrementTrack()));
pqServerManagerModel* smModel = pqApplicationCore::instance()->getServerManagerModel();
+
+ // populate views in stacked widget
QList renderViews = smModel->findItems();
QList contextViews = smModel->findItems();
- int viewCounter = 0;
- int numberOfViews = renderViews.size() + contextViews.size();
- // first do 2D and 3D render views
- for(QList::Iterator it=renderViews.begin();
- it!=renderViews.end();it++)
- {
- QString viewName = (numberOfViews == 1 ? "image_%t.png" :
- QString("image_%1_%t.png").arg(viewCounter) );
- pqImageOutputInfo* imageOutputInfo = new pqImageOutputInfo(
- this->Internals->viewsContainer, parentFlags, *it, viewName);
- this->Internals->viewsContainer->addWidget(imageOutputInfo);
- viewCounter++;
- }
- for(QList::Iterator it=contextViews.begin();
- it!=contextViews.end();it++)
- {
- QString viewName = (numberOfViews == 1 ? "image_%t.png" :
- QString("image_%1_%t.png").arg(viewCounter) );
- pqImageOutputInfo* imageOutputInfo = new pqImageOutputInfo(
- this->Internals->viewsContainer, parentFlags, *it, viewName);
- this->Internals->viewsContainer->addWidget(imageOutputInfo);
- viewCounter++;
- }
- if(numberOfViews > 1)
- {
- this->Internals->nextView->setEnabled(true);
- }
- this->Internals->viewsContainer->setCurrentIndex(0);
-
+ this->Internals->wViewSelection->populateViews(renderViews, contextViews);
//look for filters that cinema can parameterize
QList filters = smModel->findItems();
- for(QList::Iterator it=filters.begin();
- it!=filters.end();it++)
- {
- if ((*it)->getProxy()->GetVTKClassName() &&
- (!strcmp((*it)->getProxy()->GetVTKClassName(), "vtkPVContourFilter") ||
- !strcmp((*it)->getProxy()->GetVTKClassName(), "vtkPVMetaSliceDataSet") ||
- !strcmp((*it)->getProxy()->GetVTKClassName(), "vtkPVMetaClipDataSet")))
- {
- pqCinemaTrack *track = new pqCinemaTrack(this->Internals->cinemaContainer, parentFlags, *it);
- this->Internals->cinemaContainer->addWidget(track);
- }
- }
- this->Internals->cinemaContainer->setCurrentIndex(0);
+ this->Internals->wCinemaTrackSelection->populateTracks(filters);
// a bit of a hack but we name the finish button here since for testing
// it's having a hard time finding that button otherwise.
@@ -349,60 +303,9 @@
}
//-----------------------------------------------------------------------------
-void pqSGExportStateWizard::incrementView()
-{
- if(this->CurrentView >= this->Internals->viewsContainer->count()-1)
- {
- cerr << "Already on the last view. Next View button should be disabled.\n";
- this->Internals->nextView->setEnabled(false);
- return;
- }
- if(this->CurrentView == 0)
- {
- this->Internals->previousView->setEnabled(true);
- }
- this->CurrentView++;
- this->Internals->viewsContainer->setCurrentIndex(this->CurrentView);
- if(this->CurrentView >= this->Internals->viewsContainer->count()-1)
- {
- this->Internals->nextView->setEnabled(false);
- }
-}
-
-//-----------------------------------------------------------------------------
-void pqSGExportStateWizard::decrementView()
-{
- if(this->CurrentView <= 0)
- {
- cerr << "Already on the first view. Previous View button should be disabled.\n";
- this->Internals->previousView->setEnabled(false);
- return;
- }
- if(this->CurrentView == this->Internals->viewsContainer->count()-1)
- {
- this->Internals->nextView->setEnabled(true);
- }
- this->CurrentView--;
- this->Internals->viewsContainer->setCurrentIndex(this->CurrentView);
- if(this->CurrentView <= 0)
- {
- this->Internals->previousView->setEnabled(false);
- }
-}
-
-//-----------------------------------------------------------------------------
QList pqSGExportStateWizard::getImageOutputInfos()
{
- QList infos;
- for(int i=0;iInternals->viewsContainer->count();i++)
- {
- if( pqImageOutputInfo* qinfo = qobject_cast(
- this->Internals->viewsContainer->widget(i)) )
- {
- infos.append(qinfo);
- }
- }
- return infos;
+ return this->Internals->wViewSelection->getImageOutputInfos();
}
//-----------------------------------------------------------------------------
@@ -433,82 +336,20 @@
//-----------------------------------------------------------------------------
void pqSGExportStateWizard::toggleCinema(bool state)
{
- QList imageOuts = this->getImageOutputInfos();
- QList::iterator i;
if(state)
{
- this->Internals->cinemaContainer->setEnabled(true);
- if (this->CurrentTrack >= this->Internals->cinemaContainer->count()-1)
- {
- this->Internals->nextTrack->setEnabled(false);
- }
- else
- {
- this->Internals->nextTrack->setEnabled(true);
- }
- if (this->CurrentTrack == 0)
- {
- this->Internals->previousTrack->setEnabled(false);
- }
- else
- {
- this->Internals->previousTrack->setEnabled(true);
- }
- //cinema depends on rendering being on
+ //cinema depends on rendering being on (unchecking it should not be possible)
this->Internals->outputRendering->setChecked(true);
+ this->Internals->outputRendering->setEnabled(false);
//add cinema controls to each view
- for (i = imageOuts.begin(); i != imageOuts.end(); i++)
- {
- (*i)->showCinema();
- }
+ this->Internals->wViewSelection->setCinemaVisible(true);
+ this->Internals->wCinemaTrackSelection->show();
}
else
{
- this->Internals->cinemaContainer->setEnabled(false);
- this->Internals->nextTrack->setEnabled(false);
- this->Internals->previousTrack->setEnabled(false);
- for (i = imageOuts.begin(); i != imageOuts.end(); i++)
- {
- (*i)->hideCinema();
- }
- }
-}
-
-//-----------------------------------------------------------------------------
-void pqSGExportStateWizard::incrementTrack()
-{
- if(this->CurrentTrack >= this->Internals->cinemaContainer->count()-1)
- {
- this->Internals->nextTrack->setEnabled(false);
- return;
- }
- if(this->CurrentTrack == 0)
- {
- this->Internals->previousTrack->setEnabled(true);
- }
- this->CurrentTrack++;
- this->Internals->cinemaContainer->setCurrentIndex(this->CurrentTrack);
- if(this->CurrentTrack >= this->Internals->cinemaContainer->count()-1)
- {
- this->Internals->nextTrack->setEnabled(false);
- }
-}
-//-----------------------------------------------------------------------------
-void pqSGExportStateWizard::decrementTrack()
-{
- if(this->CurrentTrack <= 0)
- {
- this->Internals->previousTrack->setEnabled(false);
- return;
- }
- if(this->CurrentTrack == this->Internals->cinemaContainer->count()-1)
- {
- this->Internals->nextTrack->setEnabled(true);
- }
- this->CurrentTrack--;
- this->Internals->cinemaContainer->setCurrentIndex(this->CurrentTrack);
- if(this->CurrentTrack <= 0)
- {
- this->Internals->previousTrack->setEnabled(false);
+ this->Internals->outputRendering->setChecked(false);
+ this->Internals->outputRendering->setEnabled(true);
+ this->Internals->wViewSelection->setCinemaVisible(false);
+ this->Internals->wCinemaTrackSelection->hide();
}
}
diff -Nru paraview-5.0.0+dfsg1/Qt/Components/pqSGExportStateWizard.h paraview-5.0.1+dfsg1/Qt/Components/pqSGExportStateWizard.h
--- paraview-5.0.0+dfsg1/Qt/Components/pqSGExportStateWizard.h 2016-01-08 20:21:35.000000000 +0000
+++ paraview-5.0.1+dfsg1/Qt/Components/pqSGExportStateWizard.h 2016-03-28 15:06:22.000000000 +0000
@@ -59,11 +59,7 @@
void onShowAllSources(bool);
void onAdd();
void onRemove();
- void incrementView();
- void decrementView();
void toggleCinema(bool);
- void incrementTrack();
- void decrementTrack();
protected:
virtual bool getCommandString(QString& command) = 0;
@@ -75,8 +71,6 @@
private:
Q_DISABLE_COPY(pqSGExportStateWizard)
- int CurrentView;
- int CurrentTrack;
friend class pqSGExportStateWizardPage2;
friend class pqSGExportStateWizardPage3;
};
diff -Nru paraview-5.0.0+dfsg1/Qt/Components/Resources/UI/pqCinemaConfiguration.ui paraview-5.0.1+dfsg1/Qt/Components/Resources/UI/pqCinemaConfiguration.ui
--- paraview-5.0.0+dfsg1/Qt/Components/Resources/UI/pqCinemaConfiguration.ui 1970-01-01 00:00:00.000000000 +0000
+++ paraview-5.0.1+dfsg1/Qt/Components/Resources/UI/pqCinemaConfiguration.ui 2016-03-28 15:06:22.000000000 +0000
@@ -0,0 +1,67 @@
+
+
+ CinemaConfiguration
+
+
+
+ 0
+ 0
+ 522
+ 727
+
+
+
+
+ 0
+ 0
+
+
+
+
+ 0
+ 0
+
+
+
+ Form
+
+
+
-
+
+
+
+ 0
+ 0
+
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+
+
+
+
+
+ pqExportViewSelection
+ QWidget
+
+ 1
+
+
+ pqCinemaTrackSelection
+ QWidget
+
+ 1
+
+
+
+
+
diff -Nru paraview-5.0.0+dfsg1/Qt/Components/Resources/UI/pqCinemaTrackSelection.ui paraview-5.0.1+dfsg1/Qt/Components/Resources/UI/pqCinemaTrackSelection.ui
--- paraview-5.0.0+dfsg1/Qt/Components/Resources/UI/pqCinemaTrackSelection.ui 1970-01-01 00:00:00.000000000 +0000
+++ paraview-5.0.1+dfsg1/Qt/Components/Resources/UI/pqCinemaTrackSelection.ui 2016-03-28 15:06:22.000000000 +0000
@@ -0,0 +1,91 @@
+
+
+ CinemaTrackSelection
+
+
+
+ 0
+ 0
+ 524
+ 257
+
+
+
+
+ 0
+ 0
+
+
+
+ Form
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+ Cinema Track Selection
+
+
+
-
+
+
+
+ 0
+ 0
+
+
+
+ -1
+
+
+
+ -
+
+
-
+
+
+ false
+
+
+
+ 200
+ 16777215
+
+
+
+ Previous Track
+
+
+
+ -
+
+
+ false
+
+
+
+ 200
+ 16777215
+
+
+
+ Next Track
+
+
+
+
+
+
+
+
+
+
+
+
+
diff -Nru paraview-5.0.0+dfsg1/Qt/Components/Resources/UI/pqCinemaTrack.ui paraview-5.0.1+dfsg1/Qt/Components/Resources/UI/pqCinemaTrack.ui
--- paraview-5.0.0+dfsg1/Qt/Components/Resources/UI/pqCinemaTrack.ui 2016-01-08 20:21:35.000000000 +0000
+++ paraview-5.0.1+dfsg1/Qt/Components/Resources/UI/pqCinemaTrack.ui 2016-03-28 15:06:22.000000000 +0000
@@ -6,12 +6,12 @@
0
0
- 315
- 283
+ 316
+ 65
-
+
0
0
@@ -19,7 +19,7 @@
0
- 283
+ 0
@@ -49,46 +49,14 @@
-
-
-
- Check to allow the user to explore this parameter.
-
-
- Qt::LeftToRight
-
+
- Cinema Explore
-
-
- false
+ Include Track
- -
-
-
- Specify values that cinema will expose to the user here.
-
-
- Qt::ScrollBarAlwaysOn
-
-
- true
-
-
-
-
- 0
- 0
- 274
- 224
-
-
-
-
-
diff -Nru paraview-5.0.0+dfsg1/Qt/Components/Resources/UI/pqExportStateWizard.ui paraview-5.0.1+dfsg1/Qt/Components/Resources/UI/pqExportStateWizard.ui
--- paraview-5.0.0+dfsg1/Qt/Components/Resources/UI/pqExportStateWizard.ui 2016-01-08 20:21:35.000000000 +0000
+++ paraview-5.0.1+dfsg1/Qt/Components/Resources/UI/pqExportStateWizard.ui 2016-03-28 15:06:22.000000000 +0000
@@ -6,8 +6,8 @@
0
0
- 583
- 724
+ 628
+ 908
@@ -168,19 +168,180 @@
Select state configuration options.
-
- -
-
-
- false
+
+
-
+
+
+ QFormLayout::AllNonFixedFieldsGrow
-
- Next View
+
+ Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter
-
+
+ Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop
+
+ -
+
+
+ Live Visualization
+
+
+
+ -
+
+
+
+
+
+
+ -
+
+
+ Output rendering components i.e. views
+
+
+
+ -
+
+
+ true
+
+
+
+
+
+ false
+
+
+
+ -
+
+
+ Output to Cinema
+
+
+
+ -
+
+
-
+
+
+
+
+
+
+ -
+
+
+ Qt::Horizontal
+
+
+
+ 40
+ 20
+
+
+
+
+ -
+
+
+ Qt::RightToLeft
+
+
+ Generate Composite
+
+
+ true
+
+
+
+ -
+
+
+ Qt::Horizontal
+
+
+
+ 40
+ 20
+
+
+
+
+
+
+ -
+
+
+ Rescale to Data Range
+
+
+
+ -
+
+
+ true
+
+
+ Check to rescale the data range every outputted time step.
+
+
+ Check to rescale the data range every outputted time step.
+
+
+ Qt::LeftToRight
+
+
+
+
+
+
+ -
+
+
+ Time compartment size
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+
+ 100
+ 16777215
+
+
+
+ The number of processes working together on a specific time step.
+
+
+ Qt::RightToLeft
+
+
+
+
+
+
+
+
+ 1
+
+
+ 1000
+
+
+
+
- -
-
+
-
+
0
@@ -189,23 +350,17 @@
- 300
- 220
+ 0
+ 200
-
- QFrame::Box
-
-
- QFrame::Sunken
+
+ Qt::LeftToRight
- -
-
-
- false
-
+
-
+
0
@@ -214,140 +369,10 @@
- 300
- 150
+ 0
+ 200
-
- QFrame::Box
-
-
- QFrame::Sunken
-
-
- -1
-
-
-
- -
-
-
- Live Visualization
-
-
-
- -
-
-
- false
-
-
- Next Track
-
-
-
- -
-
-
- Time compartment size
-
-
-
- -
-
-
- true
-
-
- Check to rescale the data range every outputted time step.
-
-
- Check to rescale the data range every outputted time step.
-
-
- Qt::LeftToRight
-
-
- Rescale to Data Range
-
-
-
- -
-
-
- The number of processes working together on a specific time step.
-
-
- Qt::RightToLeft
-
-
-
-
-
-
-
-
- 1
-
-
- 1000
-
-
-
- -
-
-
- true
-
-
- Output rendering components i.e. views
-
-
- false
-
-
-
- -
-
-
- false
-
-
- Previous View
-
-
-
- -
-
-
- false
-
-
- Previous Track
-
-
-
- -
-
-
- false
-
-
- enables dynamic layers and colormaps for cinema view(s)
-
-
- Cinema Composite
-
-
-
- -
-
-
- Export views as cinema databases for deferred visualization
-
-
- Output to Cinema
-
@@ -366,120 +391,19 @@
1
+
+ pqExportViewSelection
+ QWidget
+
+ 1
+
+
+ pqCinemaTrackSelection
+ QWidget
+
+ 1
+
-
-
- outputRendering
- toggled(bool)
- previousView
- setVisible(bool)
-
-
- 156
- 86
-
-
- 138
- 339
-
-
-
-
- outputRendering
- toggled(bool)
- nextView
- setVisible(bool)
-
-
- 156
- 86
-
-
- 272
- 339
-
-
-
-
- outputRendering
- toggled(bool)
- viewsContainer
- setVisible(bool)
-
-
- 156
- 86
-
-
- 243
- 217
-
-
-
-
- outputCinema
- toggled(bool)
- previousTrack
- setVisible(bool)
-
-
- 282
- 403
-
-
- 278
- 607
-
-
-
-
- outputCinema
- toggled(bool)
- nextTrack
- setVisible(bool)
-
-
- 282
- 403
-
-
- 448
- 607
-
-
-
-
- outputCinema
- toggled(bool)
- cinemaContainer
- setVisible(bool)
-
-
- 282
- 403
-
-
- 363
- 517
-
-
-
-
- outputCinema
- toggled(bool)
- cinemaComposite
- setEnabled(bool)
-
-
- 286
- 147
-
-
- 459
- 148
-
-
-
-
+
diff -Nru paraview-5.0.0+dfsg1/Qt/Components/Resources/UI/pqExportViewSelection.ui paraview-5.0.1+dfsg1/Qt/Components/Resources/UI/pqExportViewSelection.ui
--- paraview-5.0.0+dfsg1/Qt/Components/Resources/UI/pqExportViewSelection.ui 1970-01-01 00:00:00.000000000 +0000
+++ paraview-5.0.1+dfsg1/Qt/Components/Resources/UI/pqExportViewSelection.ui 2016-03-28 15:06:22.000000000 +0000
@@ -0,0 +1,103 @@
+
+
+ ExportViewSelection
+
+
+
+ 0
+ 0
+ 518
+ 315
+
+
+
+
+ 0
+ 0
+
+
+
+ Form
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+ View Selection
+
+
+
+ 6
+
+
+ 0
+
+
+ 0
+
+
+ 9
+
+
-
+
+
+
+ 0
+ 0
+
+
+
+ -1
+
+
+
+ -
+
+
-
+
+
+ false
+
+
+
+ 200
+ 16777215
+
+
+
+ Previous View
+
+
+
+ -
+
+
+ false
+
+
+
+ 200
+ 16777215
+
+
+
+ Next View
+
+
+
+
+
+
+
+
+
+
+
+
+
diff -Nru paraview-5.0.0+dfsg1/Qt/Components/Resources/UI/pqImageOutputInfo.ui paraview-5.0.1+dfsg1/Qt/Components/Resources/UI/pqImageOutputInfo.ui
--- paraview-5.0.0+dfsg1/Qt/Components/Resources/UI/pqImageOutputInfo.ui 2016-01-08 20:21:35.000000000 +0000
+++ paraview-5.0.1+dfsg1/Qt/Components/Resources/UI/pqImageOutputInfo.ui 2016-03-28 15:06:22.000000000 +0000
@@ -6,12 +6,12 @@
0
0
- 431
- 283
+ 549
+ 396
-
+
0
0
@@ -25,309 +25,373 @@
Form
-
- -
-
-
- true
-
-
- Image Type
-
-
-
- -
-
-
- true
-
-
- File Name
-
+
+
-
+
+
+
-
+
+
-
+
+
+ true
+
+
+ Write Frequency
+
+
+
+ -
+
+
+ true
+
+
+
+ 0
+ 0
+
+
+
+
+ 0
+ 25
+
+
+
-
+
+ png
+
+
+ -
+
+ bmp
+
+
+ -
+
+ ppm
+
+
+ -
+
+ tif
+
+
+ -
+
+ tiff
+
+
+ -
+
+ jpg
+
+
+ -
+
+ jpeg
+
+
+
+
+ -
+
+
+ true
+
+
+ Magnification
+
+
+
+ -
+
+
+ true
+
+
+
+ 0
+ 0
+
+
+
+ 1
+
+
+ 1000
+
+
+
+ -
+
+
+ Check to reset the view to fit the objects to the view every outputted time step.
+
+
+ Check to reset the view to fit the objects to the view every outputted time step.
+
+
+ Qt::LeftToRight
+
+
+
+
+
+
+ -
+
+
+ true
+
+
+
+ 0
+ 0
+
+
+
+ 1
+
+
+ 1000
+
+
+
+ -
+
+
+ true
+
+
+ Image Type
+
+
+
+ -
+
+
+ true
+
+
+ File Name
+
+
+
+ -
+
+
+ Fit to Screen
+
+
+
+ -
+
+
+ true
+
+
+ The file name must contain %t. This gets replaced with the time step.
+
+
+
+
+
+ image_%t.png
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+
+ 200
+ 150
+
+
+
+
+ 147
+ 145
+
+
+
+ View not currently available
+
+
+ false
+
+
+ Qt::AlignCenter
+
+
+ true
+
+
+
+
+
+
- -
-
-
- true
-
-
- Write Frequency
-
-
-
- -
-
+
-
+
-
+
0
0
-
-
- 147
- 145
-
-
-
- View not currently available
-
-
- false
-
-
- Qt::AlignCenter
-
-
- true
+
+ Cinema Options
+
+
-
+
+
-
+
+
+ true
+
+
+
+ 0
+ 0
+
+
+
+
-
+
+
+ true
+
+
+
+ 16777215
+ 20
+
+
+
+ Theta
+
+
+ Qt::AlignCenter
+
+
+
+ -
+
+
+ true
+
+
+
+ 16777215
+ 20
+
+
+
+ Phi
+
+
+ Qt::AlignCenter
+
+
+
+ -
+
+
+ true
+
+
+ The number of camera positions in phi direction.
+
+
+ 1
+
+
+ 30
+
+
+ 12
+
+
+
+ -
+
+
+ true
+
+
+ The number of camera positions in the theta direction.
+
+
+ 1
+
+
+ 30
+
+
+ 12
+
+
+
+
+
+
+ -
+
+
+ true
+
+
+ Export Type
+
+
+
+ -
+
+
+ true
+
+
+
+ 200
+ 16777215
+
+
+
+ Mode for the cinema store of this view: None=no cinema export, Static=Stationary Camera, Spherical=Phi*Theta camera positions around center of rotation.
+
+
-
+
+ None
+
+
+ -
+
+ Static
+
+
+ -
+
+ Spherical
+
+
+
+
+
+
+
- -
-
-
- true
-
-
- 1
-
-
- 1000
-
-
-
- -
-
-
- true
-
-
- The file name must contain %t. This gets replaced with the time step.
-
-
-
-
-
- image_%t.png
-
-
-
- -
-
-
- Check to reset the view to fit the objects to the view every outputted time step.
-
-
- Check to reset the view to fit the objects to the view every outputted time step.
-
-
- Qt::RightToLeft
-
-
- Fit to Screen
-
-
-
- -
-
-
- true
-
-
-
- 0
- 25
-
-
-
-
-
- png
-
-
- -
-
- bmp
-
-
- -
-
- ppm
-
-
- -
-
- tif
-
-
- -
-
- tiff
-
-
- -
-
- jpg
-
-
- -
-
- jpeg
-
-
-
-
- -
-
-
- false
-
-
- Mode for the cinema store of this view: None=no cinema export, Static=Stationary Camera, Spherical=Phi*Theta camera positions around center of rotation.
-
-
-
-
- None
-
-
- -
-
- Static
-
-
- -
-
- Spherical
-
-
-
-
- -
-
-
- true
-
-
- Magnification
-
-
-
- -
-
-
- true
-
-
- 1
-
-
- 1000
-
-
-
- -
-
-
- true
-
-
- Cinema Export
-
-
-
- -
-
-
-
-
-
- true
-
-
-
- 16777215
- 20
-
-
-
- Phi
-
-
- Qt::AlignCenter
-
-
-
- -
-
-
- false
-
-
- The number of camera positions in phi direction.
-
-
- 1
-
-
- 30
-
-
- 12
-
-
-
- -
-
-
- true
-
-
-
- 16777215
- 20
-
-
-
- Theta
-
-
- Qt::AlignCenter
-
-
-
- -
-
-
- false
-
-
- The number of camera positions in the theta direction.
-
-
- 1
-
-
- 30
-
-
- 12
-
-
-
-
-
- -
-
-
- Qt::Vertical
-
-
-
- 20
- 40
-
-
-
-
diff -Nru paraview-5.0.0+dfsg1/Qt/Python/pqPythonScriptEditor.cxx paraview-5.0.1+dfsg1/Qt/Python/pqPythonScriptEditor.cxx
--- paraview-5.0.0+dfsg1/Qt/Python/pqPythonScriptEditor.cxx 2016-01-08 20:21:36.000000000 +0000
+++ paraview-5.0.1+dfsg1/Qt/Python/pqPythonScriptEditor.cxx 2016-03-28 15:06:22.000000000 +0000
@@ -38,12 +38,13 @@
#include "pqSettings.h"
#include "pqPythonSyntaxHighlighter.h"
-#include
#include
+#include
#include
+#include
+#include
#include
#include
-#include
#include
#include
#include
@@ -160,10 +161,12 @@
{
QString userMacroDir = pqCoreUtilities::getParaViewUserDirectory() + "/Macros";
QDir existCheck(userMacroDir);
- if(!existCheck.exists(userMacroDir))
+ if (!existCheck.exists() && !existCheck.mkpath(userMacroDir))
{
- existCheck.mkdir(userMacroDir);
+ qWarning() << "Could not create user Macro directory:" << userMacroDir;
+ return false;
}
+
QString fileName = pqFileDialog::getSaveFileName(NULL, this,
tr("Save Macro"), userMacroDir, tr("Python script (*.py)"));
if (!fileName.isEmpty() && this->saveFile(fileName))
diff -Nru paraview-5.0.0+dfsg1/Testing/Data/Baseline/CameraLink_1.png.md5 paraview-5.0.1+dfsg1/Testing/Data/Baseline/CameraLink_1.png.md5
--- paraview-5.0.0+dfsg1/Testing/Data/Baseline/CameraLink_1.png.md5 2016-01-08 20:21:36.000000000 +0000
+++ paraview-5.0.1+dfsg1/Testing/Data/Baseline/CameraLink_1.png.md5 1970-01-01 00:00:00.000000000 +0000
@@ -1 +0,0 @@
-a4dbb13ab5ee35cb771be2176acca001
diff -Nru paraview-5.0.0+dfsg1/Testing/Data/Baseline/CameraLink_2.png.md5 paraview-5.0.1+dfsg1/Testing/Data/Baseline/CameraLink_2.png.md5
--- paraview-5.0.0+dfsg1/Testing/Data/Baseline/CameraLink_2.png.md5 2016-01-08 20:21:36.000000000 +0000
+++ paraview-5.0.1+dfsg1/Testing/Data/Baseline/CameraLink_2.png.md5 1970-01-01 00:00:00.000000000 +0000
@@ -1 +0,0 @@
-3eff6789ed924a76c75c6caeebca1364
diff -Nru paraview-5.0.0+dfsg1/Testing/Data/Baseline/CameraLink_3.png.md5 paraview-5.0.1+dfsg1/Testing/Data/Baseline/CameraLink_3.png.md5
--- paraview-5.0.0+dfsg1/Testing/Data/Baseline/CameraLink_3.png.md5 2016-01-08 20:21:36.000000000 +0000
+++ paraview-5.0.1+dfsg1/Testing/Data/Baseline/CameraLink_3.png.md5 1970-01-01 00:00:00.000000000 +0000
@@ -1 +0,0 @@
-4bee53e3a7a574cb919bbbe3b0e5b3df
diff -Nru paraview-5.0.0+dfsg1/Testing/Data/Baseline/CameraLink-Parallel.png.md5 paraview-5.0.1+dfsg1/Testing/Data/Baseline/CameraLink-Parallel.png.md5
--- paraview-5.0.0+dfsg1/Testing/Data/Baseline/CameraLink-Parallel.png.md5 1970-01-01 00:00:00.000000000 +0000
+++ paraview-5.0.1+dfsg1/Testing/Data/Baseline/CameraLink-Parallel.png.md5 2016-03-28 15:06:22.000000000 +0000
@@ -0,0 +1 @@
+ed912b061948e50c70562bceb10fe279
diff -Nru paraview-5.0.0+dfsg1/Testing/Data/Baseline/CameraLink-Perspective.png.md5 paraview-5.0.1+dfsg1/Testing/Data/Baseline/CameraLink-Perspective.png.md5
--- paraview-5.0.0+dfsg1/Testing/Data/Baseline/CameraLink-Perspective.png.md5 1970-01-01 00:00:00.000000000 +0000
+++ paraview-5.0.1+dfsg1/Testing/Data/Baseline/CameraLink-Perspective.png.md5 2016-03-28 15:06:22.000000000 +0000
@@ -0,0 +1 @@
+75e36f0460b31cdedf7f0e96159af5b2
diff -Nru paraview-5.0.0+dfsg1/Testing/Data/Baseline/CameraLink.png.md5 paraview-5.0.1+dfsg1/Testing/Data/Baseline/CameraLink.png.md5
--- paraview-5.0.0+dfsg1/Testing/Data/Baseline/CameraLink.png.md5 2016-01-08 20:21:36.000000000 +0000
+++ paraview-5.0.1+dfsg1/Testing/Data/Baseline/CameraLink.png.md5 1970-01-01 00:00:00.000000000 +0000
@@ -1 +0,0 @@
-f7c8b19e8777668db381c7326c5e9379
diff -Nru paraview-5.0.0+dfsg1/ThirdParty/imported.md paraview-5.0.1+dfsg1/ThirdParty/imported.md
--- paraview-5.0.0+dfsg1/ThirdParty/imported.md 1970-01-01 00:00:00.000000000 +0000
+++ paraview-5.0.1+dfsg1/ThirdParty/imported.md 2016-03-28 15:06:22.000000000 +0000
@@ -0,0 +1,3 @@
+# Converted projects
+
+ * [lz4](lz4/update.sh)
diff -Nru paraview-5.0.0+dfsg1/ThirdParty/lz4/CMakeLists.txt paraview-5.0.1+dfsg1/ThirdParty/lz4/CMakeLists.txt
--- paraview-5.0.0+dfsg1/ThirdParty/lz4/CMakeLists.txt 1970-01-01 00:00:00.000000000 +0000
+++ paraview-5.0.1+dfsg1/ThirdParty/lz4/CMakeLists.txt 2016-03-28 15:06:22.000000000 +0000
@@ -0,0 +1,6 @@
+vtk_module_third_party(LZ4
+ LIBRARIES vtklz4
+ INCLUDE_DIRS
+ ${CMAKE_CURRENT_SOURCE_DIR}/vtklz4/lib
+ ${CMAKE_CURRENT_BINARY_DIR}/vtklz4
+ )
diff -Nru paraview-5.0.0+dfsg1/ThirdParty/lz4/module.cmake paraview-5.0.1+dfsg1/ThirdParty/lz4/module.cmake
--- paraview-5.0.0+dfsg1/ThirdParty/lz4/module.cmake 1970-01-01 00:00:00.000000000 +0000
+++ paraview-5.0.1+dfsg1/ThirdParty/lz4/module.cmake 2016-03-28 15:06:22.000000000 +0000
@@ -0,0 +1,2 @@
+vtk_module(vtklz4
+ EXCLUDE_FROM_WRAPPING)
diff -Nru paraview-5.0.0+dfsg1/ThirdParty/lz4/update.sh paraview-5.0.1+dfsg1/ThirdParty/lz4/update.sh
--- paraview-5.0.0+dfsg1/ThirdParty/lz4/update.sh 1970-01-01 00:00:00.000000000 +0000
+++ paraview-5.0.1+dfsg1/ThirdParty/lz4/update.sh 2016-03-28 15:06:22.000000000 +0000
@@ -0,0 +1,28 @@
+#!/usr/bin/env bash
+
+set -e
+set -x
+shopt -s dotglob
+
+readonly name="lz4"
+readonly ownership="lz4 Upstream "
+readonly subtree="ThirdParty/$name/vtk$name"
+readonly repo="https://gitlab.kitware.com/third-party/lz4.git"
+readonly tag="for/paraview"
+
+readonly paths="
+lib/LICENSE
+lib/README.md
+lib/*.h
+lib/*.c
+README.md
+CMakeLists.txt
+
+.gitattributes
+"
+
+extract_source () {
+ git_archive
+}
+
+. "${BASH_SOURCE%/*}/../update-common.sh"
diff -Nru paraview-5.0.0+dfsg1/ThirdParty/lz4/vtklz4/CMakeLists.txt paraview-5.0.1+dfsg1/ThirdParty/lz4/vtklz4/CMakeLists.txt
--- paraview-5.0.0+dfsg1/ThirdParty/lz4/vtklz4/CMakeLists.txt 1970-01-01 00:00:00.000000000 +0000
+++ paraview-5.0.1+dfsg1/ThirdParty/lz4/vtklz4/CMakeLists.txt 2016-03-28 15:06:22.000000000 +0000
@@ -0,0 +1,63 @@
+# XXX(kitware): File copied from cmake_unofficial/CMakeLists.txt and the modified
+# to remove components not needed by ParaView e.g. options to build tools, CPack,
+# etc.
+cmake_minimum_required(VERSION 2.6)
+PROJECT(LZ4)
+set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "LZ4 compression library")
+set(CPACK_PACKAGE_VERSION_MAJOR 1)
+set(CPACK_PACKAGE_VERSION_MINOR 5)
+set(CPACK_PACKAGE_VERSION_PATCH r128)
+set(VERSION_STRING " \"${CPACK_PACKAGE_VERSION_MAJOR}.${CPACK_PACKAGE_VERSION_MINOR}.${CPACK_PACKAGE_VERSION_PATCH}\" ")
+
+include(CheckTypeSize)
+include(GenerateExportHeader)
+
+check_type_size("void *" SIZEOF_VOID_P)
+IF( ${SIZEOF_VOID_P} STREQUAL "8" )
+ set (CMAKE_SYSTEM_PROCESSOR "64bit")
+ MESSAGE( STATUS "64 bit architecture detected size of void * is " ${SIZEOF_VOID_P})
+ENDIF()
+
+# XXX(kitware): avoid quoted variable policy warning from CMake.
+IF(CMAKE_C_COMPILER_ID STREQUAL "GNU" OR
+ CMAKE_C_COMPILER_ID STREQUAL "Clang")
+ SET(GNU_COMPATIBLE_COMPILER 1)
+ENDIF()
+
+if(GNU_COMPATIBLE_COMPILER)
+ if(UNIX AND BUILD_LIBS)
+ add_definitions(-fPIC)
+ endif()
+endif()
+
+set(LZ4_DIR lib/)
+set(LZ4_SRCS_LIB ${LZ4_DIR}lz4.c ${LZ4_DIR}lz4hc.c ${LZ4_DIR}lz4.h ${LZ4_DIR}lz4hc.h ${LZ4_DIR}lz4frame.c ${LZ4_DIR}lz4frame.h ${LZ4_DIR}xxhash.c)
+
+include_directories(${CMAKE_CURRENT_BINARY_DIR} ${LZ4_DIR})
+if(GNU_COMPATIBLE_COMPILER AND (NOT CMAKE_SYSTEM_NAME MATCHES "SunOS"))
+ add_definitions("-std=c99")
+endif()
+add_definitions("-DLZ4_VERSION=\"${CPACK_PACKAGE_VERSION_PATCH}\"")
+
+# XXX(kitware) adding exports for windows shared builds.
+vtk_add_library(vtklz4 ${LZ4_SRCS_LIB} vtklz4Exports.h)
+generate_export_header(vtklz4 EXPORT_FILE_NAME vtklz4Exports.h)
+if(BUILD_SHARED_LIBS)
+ # export flags are only added when building shared libs, they cause
+ # mismatched visibility warnings when building statically since not all
+ # libraries that VTK builds don't set visibility flags. Until we get a
+ # time to do that, we skip visibility flags for static libraries.
+ add_compiler_export_flags(my_abi_flags)
+ set_property(TARGET vtklz4 APPEND PROPERTY COMPILE_FLAGS "${my_abi_flags}")
+endif()
+
+if(NOT VTK_INSTALL_NO_DEVELOPMENT)
+ install(FILES
+ ${LZ4_DIR}/lz4.h
+ ${LZ4_DIR}/lz4hc.h
+ ${LZ4_DIR}/lz4frame.h
+ ${LZ4_DIR}/vtklz4_mangle.h
+ ${CMAKE_CURRENT_BINARY_DIR}/vtklz4Exports.h
+ DESTINATION ${VTK_INSTALL_INCLUDE_DIR}/vtklz4
+ COMPONENT Developmetn)
+endif()
diff -Nru paraview-5.0.0+dfsg1/ThirdParty/lz4/vtklz4/.gitattributes paraview-5.0.1+dfsg1/ThirdParty/lz4/vtklz4/.gitattributes
--- paraview-5.0.0+dfsg1/ThirdParty/lz4/vtklz4/.gitattributes 1970-01-01 00:00:00.000000000 +0000
+++ paraview-5.0.1+dfsg1/ThirdParty/lz4/vtklz4/.gitattributes 2016-03-28 15:06:22.000000000 +0000
@@ -0,0 +1,16 @@
+# Set the default behavior
+* text eol=lf
+
+# Explicitly declare source files
+*.c text eol=lf
+*.h text eol=lf
+
+# Denote files that should not be modified.
+*.odt binary
+*.png binary
+# Visual Studio
+*.sln binary
+*.suo binary
+*.vcxproj* binary
+
+* -whitespace
diff -Nru paraview-5.0.0+dfsg1/ThirdParty/lz4/vtklz4/lib/LICENSE paraview-5.0.1+dfsg1/ThirdParty/lz4/vtklz4/lib/LICENSE
--- paraview-5.0.0+dfsg1/ThirdParty/lz4/vtklz4/lib/LICENSE 1970-01-01 00:00:00.000000000 +0000
+++ paraview-5.0.1+dfsg1/ThirdParty/lz4/vtklz4/lib/LICENSE 2016-03-28 15:06:22.000000000 +0000
@@ -0,0 +1,24 @@
+LZ4 Library
+Copyright (c) 2011-2014, Yann Collet
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without modification,
+are permitted provided that the following conditions are met:
+
+* Redistributions of source code must retain the above copyright notice, this
+ list of conditions and the following disclaimer.
+
+* Redistributions in binary form must reproduce the above copyright notice, this
+ list of conditions and the following disclaimer in the documentation and/or
+ other materials provided with the distribution.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
+ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
\ No newline at end of file
diff -Nru paraview-5.0.0+dfsg1/ThirdParty/lz4/vtklz4/lib/lz4.c paraview-5.0.1+dfsg1/ThirdParty/lz4/vtklz4/lib/lz4.c
--- paraview-5.0.0+dfsg1/ThirdParty/lz4/vtklz4/lib/lz4.c 1970-01-01 00:00:00.000000000 +0000
+++ paraview-5.0.1+dfsg1/ThirdParty/lz4/vtklz4/lib/lz4.c 2016-03-28 15:06:22.000000000 +0000
@@ -0,0 +1,1516 @@
+/*
+ LZ4 - Fast LZ compression algorithm
+ Copyright (C) 2011-2015, Yann Collet.
+
+ BSD 2-Clause License (http://www.opensource.org/licenses/bsd-license.php)
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are
+ met:
+
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above
+ copyright notice, this list of conditions and the following disclaimer
+ in the documentation and/or other materials provided with the
+ distribution.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+ You can contact the author at :
+ - LZ4 source repository : https://github.com/Cyan4973/lz4
+ - LZ4 public forum : https://groups.google.com/forum/#!forum/lz4c
+*/
+
+
+/**************************************
+* Tuning parameters
+**************************************/
+/*
+ * HEAPMODE :
+ * Select how default compression functions will allocate memory for their hash table,
+ * in memory stack (0:default, fastest), or in memory heap (1:requires malloc()).
+ */
+#define HEAPMODE 0
+
+/*
+ * ACCELERATION_DEFAULT :
+ * Select "acceleration" for LZ4_compress_fast() when parameter value <= 0
+ */
+#define ACCELERATION_DEFAULT 1
+
+
+/**************************************
+* CPU Feature Detection
+**************************************/
+/*
+ * LZ4_FORCE_SW_BITCOUNT
+ * Define this parameter if your target system or compiler does not support hardware bit count
+ */
+#if defined(_MSC_VER) && defined(_WIN32_WCE) /* Visual Studio for Windows CE does not support Hardware bit count */
+# define LZ4_FORCE_SW_BITCOUNT
+#endif
+
+
+/**************************************
+* Includes
+**************************************/
+#include "lz4.h"
+
+
+/**************************************
+* Compiler Options
+**************************************/
+#ifdef _MSC_VER /* Visual Studio */
+# define FORCE_INLINE static __forceinline
+# include
+# pragma warning(disable : 4127) /* disable: C4127: conditional expression is constant */
+# pragma warning(disable : 4293) /* disable: C4293: too large shift (32-bits) */
+#else
+# if defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L) /* C99 */
+# if defined(__GNUC__) || defined(__clang__)
+# define FORCE_INLINE static inline __attribute__((always_inline))
+# else
+# define FORCE_INLINE static inline
+# endif
+# else
+# define FORCE_INLINE static
+# endif /* __STDC_VERSION__ */
+#endif /* _MSC_VER */
+
+/* LZ4_GCC_VERSION is defined into lz4.h */
+#if (LZ4_GCC_VERSION >= 302) || (__INTEL_COMPILER >= 800) || defined(__clang__)
+# define expect(expr,value) (__builtin_expect ((expr),(value)) )
+#else
+# define expect(expr,value) (expr)
+#endif
+
+#define likely(expr) expect((expr) != 0, 1)
+#define unlikely(expr) expect((expr) != 0, 0)
+
+
+/**************************************
+* Memory routines
+**************************************/
+#include /* malloc, calloc, free */
+#define ALLOCATOR(n,s) calloc(n,s)
+#define FREEMEM free
+#include /* memset, memcpy */
+#define MEM_INIT memset
+
+
+/**************************************
+* Basic Types
+**************************************/
+#if defined (__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L) /* C99 */
+# include
+ typedef uint8_t BYTE;
+ typedef uint16_t U16;
+ typedef uint32_t U32;
+ typedef int32_t S32;
+ typedef uint64_t U64;
+#else
+ typedef unsigned char BYTE;
+ typedef unsigned short U16;
+ typedef unsigned int U32;
+ typedef signed int S32;
+ typedef unsigned long long U64;
+#endif
+
+
+/**************************************
+* Reading and writing into memory
+**************************************/
+#define STEPSIZE sizeof(size_t)
+
+static unsigned LZ4_64bits(void) { return sizeof(void*)==8; }
+
+static unsigned LZ4_isLittleEndian(void)
+{
+ const union { U32 i; BYTE c[4]; } one = { 1 }; /* don't use static : performance detrimental */
+ return one.c[0];
+}
+
+
+static U16 LZ4_read16(const void* memPtr)
+{
+ U16 val16;
+ memcpy(&val16, memPtr, 2);
+ return val16;
+}
+
+static U16 LZ4_readLE16(const void* memPtr)
+{
+ if (LZ4_isLittleEndian())
+ {
+ return LZ4_read16(memPtr);
+ }
+ else
+ {
+ const BYTE* p = (const BYTE*)memPtr;
+ return (U16)((U16)p[0] + (p[1]<<8));
+ }
+}
+
+static void LZ4_writeLE16(void* memPtr, U16 value)
+{
+ if (LZ4_isLittleEndian())
+ {
+ memcpy(memPtr, &value, 2);
+ }
+ else
+ {
+ BYTE* p = (BYTE*)memPtr;
+ p[0] = (BYTE) value;
+ p[1] = (BYTE)(value>>8);
+ }
+}
+
+static U32 LZ4_read32(const void* memPtr)
+{
+ U32 val32;
+ memcpy(&val32, memPtr, 4);
+ return val32;
+}
+
+static U64 LZ4_read64(const void* memPtr)
+{
+ U64 val64;
+ memcpy(&val64, memPtr, 8);
+ return val64;
+}
+
+static size_t LZ4_read_ARCH(const void* p)
+{
+ if (LZ4_64bits())
+ return (size_t)LZ4_read64(p);
+ else
+ return (size_t)LZ4_read32(p);
+}
+
+
+static void LZ4_copy4(void* dstPtr, const void* srcPtr) { memcpy(dstPtr, srcPtr, 4); }
+
+static void LZ4_copy8(void* dstPtr, const void* srcPtr) { memcpy(dstPtr, srcPtr, 8); }
+
+/* customized version of memcpy, which may overwrite up to 7 bytes beyond dstEnd */
+static void LZ4_wildCopy(void* dstPtr, const void* srcPtr, void* dstEnd)
+{
+ BYTE* d = (BYTE*)dstPtr;
+ const BYTE* s = (const BYTE*)srcPtr;
+ BYTE* e = (BYTE*)dstEnd;
+ do { LZ4_copy8(d,s); d+=8; s+=8; } while (d>3);
+# elif (defined(__clang__) || (LZ4_GCC_VERSION >= 304)) && !defined(LZ4_FORCE_SW_BITCOUNT)
+ return (__builtin_ctzll((U64)val) >> 3);
+# else
+ static const int DeBruijnBytePos[64] = { 0, 0, 0, 0, 0, 1, 1, 2, 0, 3, 1, 3, 1, 4, 2, 7, 0, 2, 3, 6, 1, 5, 3, 5, 1, 3, 4, 4, 2, 5, 6, 7, 7, 0, 1, 2, 3, 3, 4, 6, 2, 6, 5, 5, 3, 4, 5, 6, 7, 1, 2, 4, 6, 4, 4, 5, 7, 2, 6, 5, 7, 6, 7, 7 };
+ return DeBruijnBytePos[((U64)((val & -(long long)val) * 0x0218A392CDABBD3FULL)) >> 58];
+# endif
+ }
+ else /* 32 bits */
+ {
+# if defined(_MSC_VER) && !defined(LZ4_FORCE_SW_BITCOUNT)
+ unsigned long r;
+ _BitScanForward( &r, (U32)val );
+ return (int)(r>>3);
+# elif (defined(__clang__) || (LZ4_GCC_VERSION >= 304)) && !defined(LZ4_FORCE_SW_BITCOUNT)
+ return (__builtin_ctz((U32)val) >> 3);
+# else
+ static const int DeBruijnBytePos[32] = { 0, 0, 3, 0, 3, 1, 3, 0, 3, 2, 2, 1, 3, 2, 0, 1, 3, 3, 1, 2, 2, 2, 2, 0, 3, 1, 2, 0, 1, 0, 1, 1 };
+ return DeBruijnBytePos[((U32)((val & -(S32)val) * 0x077CB531U)) >> 27];
+# endif
+ }
+ }
+ else /* Big Endian CPU */
+ {
+ if (LZ4_64bits())
+ {
+# if defined(_MSC_VER) && defined(_WIN64) && !defined(LZ4_FORCE_SW_BITCOUNT)
+ unsigned long r = 0;
+ _BitScanReverse64( &r, val );
+ return (unsigned)(r>>3);
+# elif (defined(__clang__) || (LZ4_GCC_VERSION >= 304)) && !defined(LZ4_FORCE_SW_BITCOUNT)
+ return (__builtin_clzll((U64)val) >> 3);
+# else
+ unsigned r;
+ if (!(val>>32)) { r=4; } else { r=0; val>>=32; }
+ if (!(val>>16)) { r+=2; val>>=8; } else { val>>=24; }
+ r += (!val);
+ return r;
+# endif
+ }
+ else /* 32 bits */
+ {
+# if defined(_MSC_VER) && !defined(LZ4_FORCE_SW_BITCOUNT)
+ unsigned long r = 0;
+ _BitScanReverse( &r, (unsigned long)val );
+ return (unsigned)(r>>3);
+# elif (defined(__clang__) || (LZ4_GCC_VERSION >= 304)) && !defined(LZ4_FORCE_SW_BITCOUNT)
+ return (__builtin_clz((U32)val) >> 3);
+# else
+ unsigned r;
+ if (!(val>>16)) { r=2; val>>=8; } else { r=0; val>>=24; }
+ r += (!val);
+ return r;
+# endif
+ }
+ }
+}
+
+static unsigned LZ4_count(const BYTE* pIn, const BYTE* pMatch, const BYTE* pInLimit)
+{
+ const BYTE* const pStart = pIn;
+
+ while (likely(pIn compression run slower on incompressible data */
+
+
+/**************************************
+* Local Structures and types
+**************************************/
+typedef struct {
+ U32 hashTable[HASH_SIZE_U32];
+ U32 currentOffset;
+ U32 initCheck;
+ const BYTE* dictionary;
+ BYTE* bufferStart; /* obsolete, used for slideInputBuffer */
+ U32 dictSize;
+} LZ4_stream_t_internal;
+
+typedef enum { notLimited = 0, limitedOutput = 1 } limitedOutput_directive;
+typedef enum { byPtr, byU32, byU16 } tableType_t;
+
+typedef enum { noDict = 0, withPrefix64k, usingExtDict } dict_directive;
+typedef enum { noDictIssue = 0, dictSmall } dictIssue_directive;
+
+typedef enum { endOnOutputSize = 0, endOnInputSize = 1 } endCondition_directive;
+typedef enum { full = 0, partial = 1 } earlyEnd_directive;
+
+
+/**************************************
+* Local Utils
+**************************************/
+int LZ4_versionNumber (void) { return LZ4_VERSION_NUMBER; }
+int LZ4_compressBound(int isize) { return LZ4_COMPRESSBOUND(isize); }
+int LZ4_sizeofState() { return LZ4_STREAMSIZE; }
+
+
+
+/********************************
+* Compression functions
+********************************/
+
+static U32 LZ4_hashSequence(U32 sequence, tableType_t const tableType)
+{
+ if (tableType == byU16)
+ return (((sequence) * 2654435761U) >> ((MINMATCH*8)-(LZ4_HASHLOG+1)));
+ else
+ return (((sequence) * 2654435761U) >> ((MINMATCH*8)-LZ4_HASHLOG));
+}
+
+static const U64 prime5bytes = 889523592379ULL;
+static U32 LZ4_hashSequence64(size_t sequence, tableType_t const tableType)
+{
+ const U32 hashLog = (tableType == byU16) ? LZ4_HASHLOG+1 : LZ4_HASHLOG;
+ const U32 hashMask = (1<> (40 - hashLog)) & hashMask;
+}
+
+static U32 LZ4_hashSequenceT(size_t sequence, tableType_t const tableType)
+{
+ if (LZ4_64bits())
+ return LZ4_hashSequence64(sequence, tableType);
+ return LZ4_hashSequence((U32)sequence, tableType);
+}
+
+static U32 LZ4_hashPosition(const void* p, tableType_t tableType) { return LZ4_hashSequenceT(LZ4_read_ARCH(p), tableType); }
+
+static void LZ4_putPositionOnHash(const BYTE* p, U32 h, void* tableBase, tableType_t const tableType, const BYTE* srcBase)
+{
+ switch (tableType)
+ {
+ case byPtr: { const BYTE** hashTable = (const BYTE**)tableBase; hashTable[h] = p; return; }
+ case byU32: { U32* hashTable = (U32*) tableBase; hashTable[h] = (U32)(p-srcBase); return; }
+ case byU16: { U16* hashTable = (U16*) tableBase; hashTable[h] = (U16)(p-srcBase); return; }
+ }
+}
+
+static void LZ4_putPosition(const BYTE* p, void* tableBase, tableType_t tableType, const BYTE* srcBase)
+{
+ U32 h = LZ4_hashPosition(p, tableType);
+ LZ4_putPositionOnHash(p, h, tableBase, tableType, srcBase);
+}
+
+static const BYTE* LZ4_getPositionOnHash(U32 h, void* tableBase, tableType_t tableType, const BYTE* srcBase)
+{
+ if (tableType == byPtr) { const BYTE** hashTable = (const BYTE**) tableBase; return hashTable[h]; }
+ if (tableType == byU32) { U32* hashTable = (U32*) tableBase; return hashTable[h] + srcBase; }
+ { U16* hashTable = (U16*) tableBase; return hashTable[h] + srcBase; } /* default, to ensure a return */
+}
+
+static const BYTE* LZ4_getPosition(const BYTE* p, void* tableBase, tableType_t tableType, const BYTE* srcBase)
+{
+ U32 h = LZ4_hashPosition(p, tableType);
+ return LZ4_getPositionOnHash(h, tableBase, tableType, srcBase);
+}
+
+FORCE_INLINE int LZ4_compress_generic(
+ void* const ctx,
+ const char* const source,
+ char* const dest,
+ const int inputSize,
+ const int maxOutputSize,
+ const limitedOutput_directive outputLimited,
+ const tableType_t tableType,
+ const dict_directive dict,
+ const dictIssue_directive dictIssue,
+ const U32 acceleration)
+{
+ LZ4_stream_t_internal* const dictPtr = (LZ4_stream_t_internal*)ctx;
+
+ const BYTE* ip = (const BYTE*) source;
+ const BYTE* base;
+ const BYTE* lowLimit;
+ const BYTE* const lowRefLimit = ip - dictPtr->dictSize;
+ const BYTE* const dictionary = dictPtr->dictionary;
+ const BYTE* const dictEnd = dictionary + dictPtr->dictSize;
+ const size_t dictDelta = dictEnd - (const BYTE*)source;
+ const BYTE* anchor = (const BYTE*) source;
+ const BYTE* const iend = ip + inputSize;
+ const BYTE* const mflimit = iend - MFLIMIT;
+ const BYTE* const matchlimit = iend - LASTLITERALS;
+
+ BYTE* op = (BYTE*) dest;
+ BYTE* const olimit = op + maxOutputSize;
+
+ U32 forwardH;
+ size_t refDelta=0;
+
+ /* Init conditions */
+ if ((U32)inputSize > (U32)LZ4_MAX_INPUT_SIZE) return 0; /* Unsupported input size, too large (or negative) */
+ switch(dict)
+ {
+ case noDict:
+ default:
+ base = (const BYTE*)source;
+ lowLimit = (const BYTE*)source;
+ break;
+ case withPrefix64k:
+ base = (const BYTE*)source - dictPtr->currentOffset;
+ lowLimit = (const BYTE*)source - dictPtr->dictSize;
+ break;
+ case usingExtDict:
+ base = (const BYTE*)source - dictPtr->currentOffset;
+ lowLimit = (const BYTE*)source;
+ break;
+ }
+ if ((tableType == byU16) && (inputSize>=LZ4_64Klimit)) return 0; /* Size too large (not within 64K limit) */
+ if (inputSize> LZ4_skipTrigger);
+
+ if (unlikely(forwardIp > mflimit)) goto _last_literals;
+
+ match = LZ4_getPositionOnHash(h, ctx, tableType, base);
+ if (dict==usingExtDict)
+ {
+ if (match<(const BYTE*)source)
+ {
+ refDelta = dictDelta;
+ lowLimit = dictionary;
+ }
+ else
+ {
+ refDelta = 0;
+ lowLimit = (const BYTE*)source;
+ }
+ }
+ forwardH = LZ4_hashPosition(forwardIp, tableType);
+ LZ4_putPositionOnHash(ip, h, ctx, tableType, base);
+
+ } while ( ((dictIssue==dictSmall) ? (match < lowRefLimit) : 0)
+ || ((tableType==byU16) ? 0 : (match + MAX_DISTANCE < ip))
+ || (LZ4_read32(match+refDelta) != LZ4_read32(ip)) );
+ }
+
+ /* Catch up */
+ while ((ip>anchor) && (match+refDelta > lowLimit) && (unlikely(ip[-1]==match[refDelta-1]))) { ip--; match--; }
+
+ {
+ /* Encode Literal length */
+ unsigned litLength = (unsigned)(ip - anchor);
+ token = op++;
+ if ((outputLimited) && (unlikely(op + litLength + (2 + 1 + LASTLITERALS) + (litLength/255) > olimit)))
+ return 0; /* Check output limit */
+ if (litLength>=RUN_MASK)
+ {
+ int len = (int)litLength-RUN_MASK;
+ *token=(RUN_MASK<= 255 ; len-=255) *op++ = 255;
+ *op++ = (BYTE)len;
+ }
+ else *token = (BYTE)(litLength< matchlimit) limit = matchlimit;
+ matchLength = LZ4_count(ip+MINMATCH, match+MINMATCH, limit);
+ ip += MINMATCH + matchLength;
+ if (ip==limit)
+ {
+ unsigned more = LZ4_count(ip, (const BYTE*)source, matchlimit);
+ matchLength += more;
+ ip += more;
+ }
+ }
+ else
+ {
+ matchLength = LZ4_count(ip+MINMATCH, match+MINMATCH, matchlimit);
+ ip += MINMATCH + matchLength;
+ }
+
+ if ((outputLimited) && (unlikely(op + (1 + LASTLITERALS) + (matchLength>>8) > olimit)))
+ return 0; /* Check output limit */
+ if (matchLength>=ML_MASK)
+ {
+ *token += ML_MASK;
+ matchLength -= ML_MASK;
+ for (; matchLength >= 510 ; matchLength-=510) { *op++ = 255; *op++ = 255; }
+ if (matchLength >= 255) { matchLength-=255; *op++ = 255; }
+ *op++ = (BYTE)matchLength;
+ }
+ else *token += (BYTE)(matchLength);
+ }
+
+ anchor = ip;
+
+ /* Test end of chunk */
+ if (ip > mflimit) break;
+
+ /* Fill table */
+ LZ4_putPosition(ip-2, ctx, tableType, base);
+
+ /* Test next position */
+ match = LZ4_getPosition(ip, ctx, tableType, base);
+ if (dict==usingExtDict)
+ {
+ if (match<(const BYTE*)source)
+ {
+ refDelta = dictDelta;
+ lowLimit = dictionary;
+ }
+ else
+ {
+ refDelta = 0;
+ lowLimit = (const BYTE*)source;
+ }
+ }
+ LZ4_putPosition(ip, ctx, tableType, base);
+ if ( ((dictIssue==dictSmall) ? (match>=lowRefLimit) : 1)
+ && (match+MAX_DISTANCE>=ip)
+ && (LZ4_read32(match+refDelta)==LZ4_read32(ip)) )
+ { token=op++; *token=0; goto _next_match; }
+
+ /* Prepare next loop */
+ forwardH = LZ4_hashPosition(++ip, tableType);
+ }
+
+_last_literals:
+ /* Encode Last Literals */
+ {
+ const size_t lastRun = (size_t)(iend - anchor);
+ if ((outputLimited) && ((op - (BYTE*)dest) + lastRun + 1 + ((lastRun+255-RUN_MASK)/255) > (U32)maxOutputSize))
+ return 0; /* Check output limit */
+ if (lastRun >= RUN_MASK)
+ {
+ size_t accumulator = lastRun - RUN_MASK;
+ *op++ = RUN_MASK << ML_BITS;
+ for(; accumulator >= 255 ; accumulator-=255) *op++ = 255;
+ *op++ = (BYTE) accumulator;
+ }
+ else
+ {
+ *op++ = (BYTE)(lastRun<= LZ4_compressBound(inputSize))
+ {
+ if (inputSize < LZ4_64Klimit)
+ return LZ4_compress_generic(state, source, dest, inputSize, 0, notLimited, byU16, noDict, noDictIssue, acceleration);
+ else
+ return LZ4_compress_generic(state, source, dest, inputSize, 0, notLimited, LZ4_64bits() ? byU32 : byPtr, noDict, noDictIssue, acceleration);
+ }
+ else
+ {
+ if (inputSize < LZ4_64Klimit)
+ return LZ4_compress_generic(state, source, dest, inputSize, maxOutputSize, limitedOutput, byU16, noDict, noDictIssue, acceleration);
+ else
+ return LZ4_compress_generic(state, source, dest, inputSize, maxOutputSize, limitedOutput, LZ4_64bits() ? byU32 : byPtr, noDict, noDictIssue, acceleration);
+ }
+}
+
+
+int LZ4_compress_fast(const char* source, char* dest, int inputSize, int maxOutputSize, int acceleration)
+{
+#if (HEAPMODE)
+ void* ctxPtr = ALLOCATOR(1, sizeof(LZ4_stream_t)); /* malloc-calloc always properly aligned */
+#else
+ LZ4_stream_t ctx;
+ void* ctxPtr = &ctx;
+#endif
+
+ int result = LZ4_compress_fast_extState(ctxPtr, source, dest, inputSize, maxOutputSize, acceleration);
+
+#if (HEAPMODE)
+ FREEMEM(ctxPtr);
+#endif
+ return result;
+}
+
+
+int LZ4_compress_default(const char* source, char* dest, int inputSize, int maxOutputSize)
+{
+ return LZ4_compress_fast(source, dest, inputSize, maxOutputSize, 1);
+}
+
+
+/* hidden debug function */
+/* strangely enough, gcc generates faster code when this function is uncommented, even if unused */
+int LZ4_compress_fast_force(const char* source, char* dest, int inputSize, int maxOutputSize, int acceleration)
+{
+ LZ4_stream_t ctx;
+
+ LZ4_resetStream(&ctx);
+
+ if (inputSize < LZ4_64Klimit)
+ return LZ4_compress_generic(&ctx, source, dest, inputSize, maxOutputSize, limitedOutput, byU16, noDict, noDictIssue, acceleration);
+ else
+ return LZ4_compress_generic(&ctx, source, dest, inputSize, maxOutputSize, limitedOutput, LZ4_64bits() ? byU32 : byPtr, noDict, noDictIssue, acceleration);
+}
+
+
+/********************************
+* destSize variant
+********************************/
+
+static int LZ4_compress_destSize_generic(
+ void* const ctx,
+ const char* const src,
+ char* const dst,
+ int* const srcSizePtr,
+ const int targetDstSize,
+ const tableType_t tableType)
+{
+ const BYTE* ip = (const BYTE*) src;
+ const BYTE* base = (const BYTE*) src;
+ const BYTE* lowLimit = (const BYTE*) src;
+ const BYTE* anchor = ip;
+ const BYTE* const iend = ip + *srcSizePtr;
+ const BYTE* const mflimit = iend - MFLIMIT;
+ const BYTE* const matchlimit = iend - LASTLITERALS;
+
+ BYTE* op = (BYTE*) dst;
+ BYTE* const oend = op + targetDstSize;
+ BYTE* const oMaxLit = op + targetDstSize - 2 /* offset */ - 8 /* because 8+MINMATCH==MFLIMIT */ - 1 /* token */;
+ BYTE* const oMaxMatch = op + targetDstSize - (LASTLITERALS + 1 /* token */);
+ BYTE* const oMaxSeq = oMaxLit - 1 /* token */;
+
+ U32 forwardH;
+
+
+ /* Init conditions */
+ if (targetDstSize < 1) return 0; /* Impossible to store anything */
+ if ((U32)*srcSizePtr > (U32)LZ4_MAX_INPUT_SIZE) return 0; /* Unsupported input size, too large (or negative) */
+ if ((tableType == byU16) && (*srcSizePtr>=LZ4_64Klimit)) return 0; /* Size too large (not within 64K limit) */
+ if (*srcSizePtr> LZ4_skipTrigger);
+
+ if (unlikely(forwardIp > mflimit))
+ goto _last_literals;
+
+ match = LZ4_getPositionOnHash(h, ctx, tableType, base);
+ forwardH = LZ4_hashPosition(forwardIp, tableType);
+ LZ4_putPositionOnHash(ip, h, ctx, tableType, base);
+
+ } while ( ((tableType==byU16) ? 0 : (match + MAX_DISTANCE < ip))
+ || (LZ4_read32(match) != LZ4_read32(ip)) );
+ }
+
+ /* Catch up */
+ while ((ip>anchor) && (match > lowLimit) && (unlikely(ip[-1]==match[-1]))) { ip--; match--; }
+
+ {
+ /* Encode Literal length */
+ unsigned litLength = (unsigned)(ip - anchor);
+ token = op++;
+ if (op + ((litLength+240)/255) + litLength > oMaxLit)
+ {
+ /* Not enough space for a last match */
+ op--;
+ goto _last_literals;
+ }
+ if (litLength>=RUN_MASK)
+ {
+ unsigned len = litLength - RUN_MASK;
+ *token=(RUN_MASK<= 255 ; len-=255) *op++ = 255;
+ *op++ = (BYTE)len;
+ }
+ else *token = (BYTE)(litLength< oMaxMatch)
+ {
+ /* Match description too long : reduce it */
+ matchLength = (15-1) + (oMaxMatch-op) * 255;
+ }
+ //printf("offset %5i, matchLength%5i \n", (int)(ip-match), matchLength + MINMATCH);
+ ip += MINMATCH + matchLength;
+
+ if (matchLength>=ML_MASK)
+ {
+ *token += ML_MASK;
+ matchLength -= ML_MASK;
+ while (matchLength >= 255) { matchLength-=255; *op++ = 255; }
+ *op++ = (BYTE)matchLength;
+ }
+ else *token += (BYTE)(matchLength);
+ }
+
+ anchor = ip;
+
+ /* Test end of block */
+ if (ip > mflimit) break;
+ if (op > oMaxSeq) break;
+
+ /* Fill table */
+ LZ4_putPosition(ip-2, ctx, tableType, base);
+
+ /* Test next position */
+ match = LZ4_getPosition(ip, ctx, tableType, base);
+ LZ4_putPosition(ip, ctx, tableType, base);
+ if ( (match+MAX_DISTANCE>=ip)
+ && (LZ4_read32(match)==LZ4_read32(ip)) )
+ { token=op++; *token=0; goto _next_match; }
+
+ /* Prepare next loop */
+ forwardH = LZ4_hashPosition(++ip, tableType);
+ }
+
+_last_literals:
+ /* Encode Last Literals */
+ {
+ size_t lastRunSize = (size_t)(iend - anchor);
+ if (op + 1 /* token */ + ((lastRunSize+240)/255) /* litLength */ + lastRunSize /* literals */ > oend)
+ {
+ /* adapt lastRunSize to fill 'dst' */
+ lastRunSize = (oend-op) - 1;
+ lastRunSize -= (lastRunSize+240)/255;
+ }
+ ip = anchor + lastRunSize;
+
+ if (lastRunSize >= RUN_MASK)
+ {
+ size_t accumulator = lastRunSize - RUN_MASK;
+ *op++ = RUN_MASK << ML_BITS;
+ for(; accumulator >= 255 ; accumulator-=255) *op++ = 255;
+ *op++ = (BYTE) accumulator;
+ }
+ else
+ {
+ *op++ = (BYTE)(lastRunSize<= LZ4_compressBound(*srcSizePtr)) /* compression success is guaranteed */
+ {
+ return LZ4_compress_fast_extState(state, src, dst, *srcSizePtr, targetDstSize, 1);
+ }
+ else
+ {
+ if (*srcSizePtr < LZ4_64Klimit)
+ return LZ4_compress_destSize_generic(state, src, dst, srcSizePtr, targetDstSize, byU16);
+ else
+ return LZ4_compress_destSize_generic(state, src, dst, srcSizePtr, targetDstSize, LZ4_64bits() ? byU32 : byPtr);
+ }
+}
+
+
+int LZ4_compress_destSize(const char* src, char* dst, int* srcSizePtr, int targetDstSize)
+{
+#if (HEAPMODE)
+ void* ctx = ALLOCATOR(1, sizeof(LZ4_stream_t)); /* malloc-calloc always properly aligned */
+#else
+ LZ4_stream_t ctxBody;
+ void* ctx = &ctxBody;
+#endif
+
+ int result = LZ4_compress_destSize_extState(ctx, src, dst, srcSizePtr, targetDstSize);
+
+#if (HEAPMODE)
+ FREEMEM(ctx);
+#endif
+ return result;
+}
+
+
+
+/********************************
+* Streaming functions
+********************************/
+
+LZ4_stream_t* LZ4_createStream(void)
+{
+ LZ4_stream_t* lz4s = (LZ4_stream_t*)ALLOCATOR(8, LZ4_STREAMSIZE_U64);
+ LZ4_STATIC_ASSERT(LZ4_STREAMSIZE >= sizeof(LZ4_stream_t_internal)); /* A compilation error here means LZ4_STREAMSIZE is not large enough */
+ LZ4_resetStream(lz4s);
+ return lz4s;
+}
+
+void LZ4_resetStream (LZ4_stream_t* LZ4_stream)
+{
+ MEM_INIT(LZ4_stream, 0, sizeof(LZ4_stream_t));
+}
+
+int LZ4_freeStream (LZ4_stream_t* LZ4_stream)
+{
+ FREEMEM(LZ4_stream);
+ return (0);
+}
+
+
+#define HASH_UNIT sizeof(size_t)
+int LZ4_loadDict (LZ4_stream_t* LZ4_dict, const char* dictionary, int dictSize)
+{
+ LZ4_stream_t_internal* dict = (LZ4_stream_t_internal*) LZ4_dict;
+ const BYTE* p = (const BYTE*)dictionary;
+ const BYTE* const dictEnd = p + dictSize;
+ const BYTE* base;
+
+ if ((dict->initCheck) || (dict->currentOffset > 1 GB)) /* Uninitialized structure, or reuse overflow */
+ LZ4_resetStream(LZ4_dict);
+
+ if (dictSize < (int)HASH_UNIT)
+ {
+ dict->dictionary = NULL;
+ dict->dictSize = 0;
+ return 0;
+ }
+
+ if ((dictEnd - p) > 64 KB) p = dictEnd - 64 KB;
+ dict->currentOffset += 64 KB;
+ base = p - dict->currentOffset;
+ dict->dictionary = p;
+ dict->dictSize = (U32)(dictEnd - p);
+ dict->currentOffset += dict->dictSize;
+
+ while (p <= dictEnd-HASH_UNIT)
+ {
+ LZ4_putPosition(p, dict->hashTable, byU32, base);
+ p+=3;
+ }
+
+ return dict->dictSize;
+}
+
+
+static void LZ4_renormDictT(LZ4_stream_t_internal* LZ4_dict, const BYTE* src)
+{
+ if ((LZ4_dict->currentOffset > 0x80000000) ||
+ ((size_t)LZ4_dict->currentOffset > (size_t)src)) /* address space overflow */
+ {
+ /* rescale hash table */
+ U32 delta = LZ4_dict->currentOffset - 64 KB;
+ const BYTE* dictEnd = LZ4_dict->dictionary + LZ4_dict->dictSize;
+ int i;
+ for (i=0; ihashTable[i] < delta) LZ4_dict->hashTable[i]=0;
+ else LZ4_dict->hashTable[i] -= delta;
+ }
+ LZ4_dict->currentOffset = 64 KB;
+ if (LZ4_dict->dictSize > 64 KB) LZ4_dict->dictSize = 64 KB;
+ LZ4_dict->dictionary = dictEnd - LZ4_dict->dictSize;
+ }
+}
+
+
+int LZ4_compress_fast_continue (LZ4_stream_t* LZ4_stream, const char* source, char* dest, int inputSize, int maxOutputSize, int acceleration)
+{
+ LZ4_stream_t_internal* streamPtr = (LZ4_stream_t_internal*)LZ4_stream;
+ const BYTE* const dictEnd = streamPtr->dictionary + streamPtr->dictSize;
+
+ const BYTE* smallest = (const BYTE*) source;
+ if (streamPtr->initCheck) return 0; /* Uninitialized structure detected */
+ if ((streamPtr->dictSize>0) && (smallest>dictEnd)) smallest = dictEnd;
+ LZ4_renormDictT(streamPtr, smallest);
+ if (acceleration < 1) acceleration = ACCELERATION_DEFAULT;
+
+ /* Check overlapping input/dictionary space */
+ {
+ const BYTE* sourceEnd = (const BYTE*) source + inputSize;
+ if ((sourceEnd > streamPtr->dictionary) && (sourceEnd < dictEnd))
+ {
+ streamPtr->dictSize = (U32)(dictEnd - sourceEnd);
+ if (streamPtr->dictSize > 64 KB) streamPtr->dictSize = 64 KB;
+ if (streamPtr->dictSize < 4) streamPtr->dictSize = 0;
+ streamPtr->dictionary = dictEnd - streamPtr->dictSize;
+ }
+ }
+
+ /* prefix mode : source data follows dictionary */
+ if (dictEnd == (const BYTE*)source)
+ {
+ int result;
+ if ((streamPtr->dictSize < 64 KB) && (streamPtr->dictSize < streamPtr->currentOffset))
+ result = LZ4_compress_generic(LZ4_stream, source, dest, inputSize, maxOutputSize, limitedOutput, byU32, withPrefix64k, dictSmall, acceleration);
+ else
+ result = LZ4_compress_generic(LZ4_stream, source, dest, inputSize, maxOutputSize, limitedOutput, byU32, withPrefix64k, noDictIssue, acceleration);
+ streamPtr->dictSize += (U32)inputSize;
+ streamPtr->currentOffset += (U32)inputSize;
+ return result;
+ }
+
+ /* external dictionary mode */
+ {
+ int result;
+ if ((streamPtr->dictSize < 64 KB) && (streamPtr->dictSize < streamPtr->currentOffset))
+ result = LZ4_compress_generic(LZ4_stream, source, dest, inputSize, maxOutputSize, limitedOutput, byU32, usingExtDict, dictSmall, acceleration);
+ else
+ result = LZ4_compress_generic(LZ4_stream, source, dest, inputSize, maxOutputSize, limitedOutput, byU32, usingExtDict, noDictIssue, acceleration);
+ streamPtr->dictionary = (const BYTE*)source;
+ streamPtr->dictSize = (U32)inputSize;
+ streamPtr->currentOffset += (U32)inputSize;
+ return result;
+ }
+}
+
+
+/* Hidden debug function, to force external dictionary mode */
+int LZ4_compress_forceExtDict (LZ4_stream_t* LZ4_dict, const char* source, char* dest, int inputSize)
+{
+ LZ4_stream_t_internal* streamPtr = (LZ4_stream_t_internal*)LZ4_dict;
+ int result;
+ const BYTE* const dictEnd = streamPtr->dictionary + streamPtr->dictSize;
+
+ const BYTE* smallest = dictEnd;
+ if (smallest > (const BYTE*) source) smallest = (const BYTE*) source;
+ LZ4_renormDictT((LZ4_stream_t_internal*)LZ4_dict, smallest);
+
+ result = LZ4_compress_generic(LZ4_dict, source, dest, inputSize, 0, notLimited, byU32, usingExtDict, noDictIssue, 1);
+
+ streamPtr->dictionary = (const BYTE*)source;
+ streamPtr->dictSize = (U32)inputSize;
+ streamPtr->currentOffset += (U32)inputSize;
+
+ return result;
+}
+
+
+int LZ4_saveDict (LZ4_stream_t* LZ4_dict, char* safeBuffer, int dictSize)
+{
+ LZ4_stream_t_internal* dict = (LZ4_stream_t_internal*) LZ4_dict;
+ const BYTE* previousDictEnd = dict->dictionary + dict->dictSize;
+
+ if ((U32)dictSize > 64 KB) dictSize = 64 KB; /* useless to define a dictionary > 64 KB */
+ if ((U32)dictSize > dict->dictSize) dictSize = dict->dictSize;
+
+ memmove(safeBuffer, previousDictEnd - dictSize, dictSize);
+
+ dict->dictionary = (const BYTE*)safeBuffer;
+ dict->dictSize = (U32)dictSize;
+
+ return dictSize;
+}
+
+
+
+/*******************************
+* Decompression functions
+*******************************/
+/*
+ * This generic decompression function cover all use cases.
+ * It shall be instantiated several times, using different sets of directives
+ * Note that it is essential this generic function is really inlined,
+ * in order to remove useless branches during compilation optimization.
+ */
+FORCE_INLINE int LZ4_decompress_generic(
+ const char* const source,
+ char* const dest,
+ int inputSize,
+ int outputSize, /* If endOnInput==endOnInputSize, this value is the max size of Output Buffer. */
+
+ int endOnInput, /* endOnOutputSize, endOnInputSize */
+ int partialDecoding, /* full, partial */
+ int targetOutputSize, /* only used if partialDecoding==partial */
+ int dict, /* noDict, withPrefix64k, usingExtDict */
+ const BYTE* const lowPrefix, /* == dest if dict == noDict */
+ const BYTE* const dictStart, /* only if dict==usingExtDict */
+ const size_t dictSize /* note : = 0 if noDict */
+ )
+{
+ /* Local Variables */
+ const BYTE* ip = (const BYTE*) source;
+ const BYTE* const iend = ip + inputSize;
+
+ BYTE* op = (BYTE*) dest;
+ BYTE* const oend = op + outputSize;
+ BYTE* cpy;
+ BYTE* oexit = op + targetOutputSize;
+ const BYTE* const lowLimit = lowPrefix - dictSize;
+
+ const BYTE* const dictEnd = (const BYTE*)dictStart + dictSize;
+ const size_t dec32table[] = {4, 1, 2, 1, 4, 4, 4, 4};
+ const size_t dec64table[] = {0, 0, 0, (size_t)-1, 0, 1, 2, 3};
+
+ const int safeDecode = (endOnInput==endOnInputSize);
+ const int checkOffset = ((safeDecode) && (dictSize < (int)(64 KB)));
+
+
+ /* Special cases */
+ if ((partialDecoding) && (oexit> oend-MFLIMIT)) oexit = oend-MFLIMIT; /* targetOutputSize too high => decode everything */
+ if ((endOnInput) && (unlikely(outputSize==0))) return ((inputSize==1) && (*ip==0)) ? 0 : -1; /* Empty output buffer */
+ if ((!endOnInput) && (unlikely(outputSize==0))) return (*ip==0?1:-1);
+
+
+ /* Main Loop */
+ while (1)
+ {
+ unsigned token;
+ size_t length;
+ const BYTE* match;
+
+ /* get literal length */
+ token = *ip++;
+ if ((length=(token>>ML_BITS)) == RUN_MASK)
+ {
+ unsigned s;
+ do
+ {
+ s = *ip++;
+ length += s;
+ }
+ while (likely((endOnInput)?ip(partialDecoding?oexit:oend-MFLIMIT)) || (ip+length>iend-(2+1+LASTLITERALS))) )
+ || ((!endOnInput) && (cpy>oend-COPYLENGTH)))
+ {
+ if (partialDecoding)
+ {
+ if (cpy > oend) goto _output_error; /* Error : write attempt beyond end of output buffer */
+ if ((endOnInput) && (ip+length > iend)) goto _output_error; /* Error : read attempt beyond end of input buffer */
+ }
+ else
+ {
+ if ((!endOnInput) && (cpy != oend)) goto _output_error; /* Error : block decoding must stop exactly there */
+ if ((endOnInput) && ((ip+length != iend) || (cpy > oend))) goto _output_error; /* Error : input must be consumed */
+ }
+ memcpy(op, ip, length);
+ ip += length;
+ op += length;
+ break; /* Necessarily EOF, due to parsing restrictions */
+ }
+ LZ4_wildCopy(op, ip, cpy);
+ ip += length; op = cpy;
+
+ /* get offset */
+ match = cpy - LZ4_readLE16(ip); ip+=2;
+ if ((checkOffset) && (unlikely(match < lowLimit))) goto _output_error; /* Error : offset outside destination buffer */
+
+ /* get matchlength */
+ length = token & ML_MASK;
+ if (length == ML_MASK)
+ {
+ unsigned s;
+ do
+ {
+ if ((endOnInput) && (ip > iend-LASTLITERALS)) goto _output_error;
+ s = *ip++;
+ length += s;
+ } while (s==255);
+ if ((safeDecode) && unlikely((size_t)(op+length)<(size_t)op)) goto _output_error; /* overflow detection */
+ }
+ length += MINMATCH;
+
+ /* check external dictionary */
+ if ((dict==usingExtDict) && (match < lowPrefix))
+ {
+ if (unlikely(op+length > oend-LASTLITERALS)) goto _output_error; /* doesn't respect parsing restriction */
+
+ if (length <= (size_t)(lowPrefix-match))
+ {
+ /* match can be copied as a single segment from external dictionary */
+ match = dictEnd - (lowPrefix-match);
+ memmove(op, match, length); op += length;
+ }
+ else
+ {
+ /* match encompass external dictionary and current segment */
+ size_t copySize = (size_t)(lowPrefix-match);
+ memcpy(op, dictEnd - copySize, copySize);
+ op += copySize;
+ copySize = length - copySize;
+ if (copySize > (size_t)(op-lowPrefix)) /* overlap within current segment */
+ {
+ BYTE* const endOfMatch = op + copySize;
+ const BYTE* copyFrom = lowPrefix;
+ while (op < endOfMatch) *op++ = *copyFrom++;
+ }
+ else
+ {
+ memcpy(op, lowPrefix, copySize);
+ op += copySize;
+ }
+ }
+ continue;
+ }
+
+ /* copy repeated sequence */
+ cpy = op + length;
+ if (unlikely((op-match)<8))
+ {
+ const size_t dec64 = dec64table[op-match];
+ op[0] = match[0];
+ op[1] = match[1];
+ op[2] = match[2];
+ op[3] = match[3];
+ match += dec32table[op-match];
+ LZ4_copy4(op+4, match);
+ op += 8; match -= dec64;
+ } else { LZ4_copy8(op, match); op+=8; match+=8; }
+
+ if (unlikely(cpy>oend-12))
+ {
+ if (cpy > oend-LASTLITERALS) goto _output_error; /* Error : last LASTLITERALS bytes must be literals */
+ if (op < oend-8)
+ {
+ LZ4_wildCopy(op, match, oend-8);
+ match += (oend-8) - op;
+ op = oend-8;
+ }
+ while (opprefixSize = (size_t) dictSize;
+ lz4sd->prefixEnd = (const BYTE*) dictionary + dictSize;
+ lz4sd->externalDict = NULL;
+ lz4sd->extDictSize = 0;
+ return 1;
+}
+
+/*
+*_continue() :
+ These decoding functions allow decompression of multiple blocks in "streaming" mode.
+ Previously decoded blocks must still be available at the memory position where they were decoded.
+ If it's not possible, save the relevant part of decoded data into a safe buffer,
+ and indicate where it stands using LZ4_setStreamDecode()
+*/
+int LZ4_decompress_safe_continue (LZ4_streamDecode_t* LZ4_streamDecode, const char* source, char* dest, int compressedSize, int maxOutputSize)
+{
+ LZ4_streamDecode_t_internal* lz4sd = (LZ4_streamDecode_t_internal*) LZ4_streamDecode;
+ int result;
+
+ if (lz4sd->prefixEnd == (BYTE*)dest)
+ {
+ result = LZ4_decompress_generic(source, dest, compressedSize, maxOutputSize,
+ endOnInputSize, full, 0,
+ usingExtDict, lz4sd->prefixEnd - lz4sd->prefixSize, lz4sd->externalDict, lz4sd->extDictSize);
+ if (result <= 0) return result;
+ lz4sd->prefixSize += result;
+ lz4sd->prefixEnd += result;
+ }
+ else
+ {
+ lz4sd->extDictSize = lz4sd->prefixSize;
+ lz4sd->externalDict = lz4sd->prefixEnd - lz4sd->extDictSize;
+ result = LZ4_decompress_generic(source, dest, compressedSize, maxOutputSize,
+ endOnInputSize, full, 0,
+ usingExtDict, (BYTE*)dest, lz4sd->externalDict, lz4sd->extDictSize);
+ if (result <= 0) return result;
+ lz4sd->prefixSize = result;
+ lz4sd->prefixEnd = (BYTE*)dest + result;
+ }
+
+ return result;
+}
+
+int LZ4_decompress_fast_continue (LZ4_streamDecode_t* LZ4_streamDecode, const char* source, char* dest, int originalSize)
+{
+ LZ4_streamDecode_t_internal* lz4sd = (LZ4_streamDecode_t_internal*) LZ4_streamDecode;
+ int result;
+
+ if (lz4sd->prefixEnd == (BYTE*)dest)
+ {
+ result = LZ4_decompress_generic(source, dest, 0, originalSize,
+ endOnOutputSize, full, 0,
+ usingExtDict, lz4sd->prefixEnd - lz4sd->prefixSize, lz4sd->externalDict, lz4sd->extDictSize);
+ if (result <= 0) return result;
+ lz4sd->prefixSize += originalSize;
+ lz4sd->prefixEnd += originalSize;
+ }
+ else
+ {
+ lz4sd->extDictSize = lz4sd->prefixSize;
+ lz4sd->externalDict = (BYTE*)dest - lz4sd->extDictSize;
+ result = LZ4_decompress_generic(source, dest, 0, originalSize,
+ endOnOutputSize, full, 0,
+ usingExtDict, (BYTE*)dest, lz4sd->externalDict, lz4sd->extDictSize);
+ if (result <= 0) return result;
+ lz4sd->prefixSize = originalSize;
+ lz4sd->prefixEnd = (BYTE*)dest + originalSize;
+ }
+
+ return result;
+}
+
+
+/*
+Advanced decoding functions :
+*_usingDict() :
+ These decoding functions work the same as "_continue" ones,
+ the dictionary must be explicitly provided within parameters
+*/
+
+FORCE_INLINE int LZ4_decompress_usingDict_generic(const char* source, char* dest, int compressedSize, int maxOutputSize, int safe, const char* dictStart, int dictSize)
+{
+ if (dictSize==0)
+ return LZ4_decompress_generic(source, dest, compressedSize, maxOutputSize, safe, full, 0, noDict, (BYTE*)dest, NULL, 0);
+ if (dictStart+dictSize == dest)
+ {
+ if (dictSize >= (int)(64 KB - 1))
+ return LZ4_decompress_generic(source, dest, compressedSize, maxOutputSize, safe, full, 0, withPrefix64k, (BYTE*)dest-64 KB, NULL, 0);
+ return LZ4_decompress_generic(source, dest, compressedSize, maxOutputSize, safe, full, 0, noDict, (BYTE*)dest-dictSize, NULL, 0);
+ }
+ return LZ4_decompress_generic(source, dest, compressedSize, maxOutputSize, safe, full, 0, usingExtDict, (BYTE*)dest, (const BYTE*)dictStart, dictSize);
+}
+
+int LZ4_decompress_safe_usingDict(const char* source, char* dest, int compressedSize, int maxOutputSize, const char* dictStart, int dictSize)
+{
+ return LZ4_decompress_usingDict_generic(source, dest, compressedSize, maxOutputSize, 1, dictStart, dictSize);
+}
+
+int LZ4_decompress_fast_usingDict(const char* source, char* dest, int originalSize, const char* dictStart, int dictSize)
+{
+ return LZ4_decompress_usingDict_generic(source, dest, 0, originalSize, 0, dictStart, dictSize);
+}
+
+/* debug function */
+int LZ4_decompress_safe_forceExtDict(const char* source, char* dest, int compressedSize, int maxOutputSize, const char* dictStart, int dictSize)
+{
+ return LZ4_decompress_generic(source, dest, compressedSize, maxOutputSize, endOnInputSize, full, 0, usingExtDict, (BYTE*)dest, (const BYTE*)dictStart, dictSize);
+}
+
+
+/***************************************************
+* Obsolete Functions
+***************************************************/
+/* obsolete compression functions */
+int LZ4_compress_limitedOutput(const char* source, char* dest, int inputSize, int maxOutputSize) { return LZ4_compress_default(source, dest, inputSize, maxOutputSize); }
+int LZ4_compress(const char* source, char* dest, int inputSize) { return LZ4_compress_default(source, dest, inputSize, LZ4_compressBound(inputSize)); }
+int LZ4_compress_limitedOutput_withState (void* state, const char* src, char* dst, int srcSize, int dstSize) { return LZ4_compress_fast_extState(state, src, dst, srcSize, dstSize, 1); }
+int LZ4_compress_withState (void* state, const char* src, char* dst, int srcSize) { return LZ4_compress_fast_extState(state, src, dst, srcSize, LZ4_compressBound(srcSize), 1); }
+int LZ4_compress_limitedOutput_continue (LZ4_stream_t* LZ4_stream, const char* src, char* dst, int srcSize, int maxDstSize) { return LZ4_compress_fast_continue(LZ4_stream, src, dst, srcSize, maxDstSize, 1); }
+int LZ4_compress_continue (LZ4_stream_t* LZ4_stream, const char* source, char* dest, int inputSize) { return LZ4_compress_fast_continue(LZ4_stream, source, dest, inputSize, LZ4_compressBound(inputSize), 1); }
+
+/*
+These function names are deprecated and should no longer be used.
+They are only provided here for compatibility with older user programs.
+- LZ4_uncompress is totally equivalent to LZ4_decompress_fast
+- LZ4_uncompress_unknownOutputSize is totally equivalent to LZ4_decompress_safe
+*/
+int LZ4_uncompress (const char* source, char* dest, int outputSize) { return LZ4_decompress_fast(source, dest, outputSize); }
+int LZ4_uncompress_unknownOutputSize (const char* source, char* dest, int isize, int maxOutputSize) { return LZ4_decompress_safe(source, dest, isize, maxOutputSize); }
+
+
+/* Obsolete Streaming functions */
+
+int LZ4_sizeofStreamState() { return LZ4_STREAMSIZE; }
+
+static void LZ4_init(LZ4_stream_t_internal* lz4ds, BYTE* base)
+{
+ MEM_INIT(lz4ds, 0, LZ4_STREAMSIZE);
+ lz4ds->bufferStart = base;
+}
+
+int LZ4_resetStreamState(void* state, char* inputBuffer)
+{
+ if ((((size_t)state) & 3) != 0) return 1; /* Error : pointer is not aligned on 4-bytes boundary */
+ LZ4_init((LZ4_stream_t_internal*)state, (BYTE*)inputBuffer);
+ return 0;
+}
+
+void* LZ4_create (char* inputBuffer)
+{
+ void* lz4ds = ALLOCATOR(8, LZ4_STREAMSIZE_U64);
+ LZ4_init ((LZ4_stream_t_internal*)lz4ds, (BYTE*)inputBuffer);
+ return lz4ds;
+}
+
+char* LZ4_slideInputBuffer (void* LZ4_Data)
+{
+ LZ4_stream_t_internal* ctx = (LZ4_stream_t_internal*)LZ4_Data;
+ int dictSize = LZ4_saveDict((LZ4_stream_t*)LZ4_Data, (char*)ctx->bufferStart, 64 KB);
+ return (char*)(ctx->bufferStart + dictSize);
+}
+
+/* Obsolete streaming decompression functions */
+
+int LZ4_decompress_safe_withPrefix64k(const char* source, char* dest, int compressedSize, int maxOutputSize)
+{
+ return LZ4_decompress_generic(source, dest, compressedSize, maxOutputSize, endOnInputSize, full, 0, withPrefix64k, (BYTE*)dest - 64 KB, NULL, 64 KB);
+}
+
+int LZ4_decompress_fast_withPrefix64k(const char* source, char* dest, int originalSize)
+{
+ return LZ4_decompress_generic(source, dest, 0, originalSize, endOnOutputSize, full, 0, withPrefix64k, (BYTE*)dest - 64 KB, NULL, 64 KB);
+}
+
+#endif /* LZ4_COMMONDEFS_ONLY */
+
diff -Nru paraview-5.0.0+dfsg1/ThirdParty/lz4/vtklz4/lib/lz4frame.c paraview-5.0.1+dfsg1/ThirdParty/lz4/vtklz4/lib/lz4frame.c
--- paraview-5.0.0+dfsg1/ThirdParty/lz4/vtklz4/lib/lz4frame.c 1970-01-01 00:00:00.000000000 +0000
+++ paraview-5.0.1+dfsg1/ThirdParty/lz4/vtklz4/lib/lz4frame.c 2016-03-28 15:06:22.000000000 +0000
@@ -0,0 +1,1479 @@
+/*
+LZ4 auto-framing library
+Copyright (C) 2011-2015, Yann Collet.
+
+BSD 2-Clause License (http://www.opensource.org/licenses/bsd-license.php)
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are
+met:
+
+* Redistributions of source code must retain the above copyright
+notice, this list of conditions and the following disclaimer.
+* Redistributions in binary form must reproduce the above
+copyright notice, this list of conditions and the following disclaimer
+in the documentation and/or other materials provided with the
+distribution.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+You can contact the author at :
+- LZ4 source repository : https://github.com/Cyan4973/lz4
+- LZ4 public forum : https://groups.google.com/forum/#!forum/lz4c
+*/
+
+/* LZ4F is a stand-alone API to create LZ4-compressed Frames
+* in full conformance with specification v1.5.0
+* All related operations, including memory management, are handled by the library.
+* */
+
+
+/**************************************
+* Compiler Options
+**************************************/
+#ifdef _MSC_VER /* Visual Studio */
+# pragma warning(disable : 4127) /* disable: C4127: conditional expression is constant */
+#endif
+
+
+/**************************************
+* Memory routines
+**************************************/
+#include /* malloc, calloc, free */
+#define ALLOCATOR(s) calloc(1,s)
+#define FREEMEM free
+#include /* memset, memcpy, memmove */
+#define MEM_INIT memset
+
+
+/**************************************
+* Includes
+**************************************/
+#include "lz4frame_static.h"
+#include "lz4.h"
+#include "lz4hc.h"
+#include "xxhash.h"
+
+
+/**************************************
+* Basic Types
+**************************************/
+#if defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L) /* C99 */
+# include
+typedef uint8_t BYTE;
+typedef uint16_t U16;
+typedef uint32_t U32;
+typedef int32_t S32;
+typedef uint64_t U64;
+#else
+typedef unsigned char BYTE;
+typedef unsigned short U16;
+typedef unsigned int U32;
+typedef signed int S32;
+typedef unsigned long long U64;
+#endif
+
+
+/**************************************
+* Constants
+**************************************/
+#define KB *(1<<10)
+#define MB *(1<<20)
+#define GB *(1<<30)
+
+#define _1BIT 0x01
+#define _2BITS 0x03
+#define _3BITS 0x07
+#define _4BITS 0x0F
+#define _8BITS 0xFF
+
+#define LZ4F_MAGIC_SKIPPABLE_START 0x184D2A50U
+#define LZ4F_MAGICNUMBER 0x184D2204U
+#define LZ4F_BLOCKUNCOMPRESSED_FLAG 0x80000000U
+#define LZ4F_BLOCKSIZEID_DEFAULT LZ4F_max64KB
+
+static const size_t minFHSize = 7;
+static const size_t maxFHSize = 15;
+static const size_t BHSize = 4;
+static const int minHClevel = 3;
+
+
+/**************************************
+* Structures and local types
+**************************************/
+typedef struct LZ4F_cctx_s
+{
+ LZ4F_preferences_t prefs;
+ U32 version;
+ U32 cStage;
+ size_t maxBlockSize;
+ size_t maxBufferSize;
+ BYTE* tmpBuff;
+ BYTE* tmpIn;
+ size_t tmpInSize;
+ U64 totalInSize;
+ XXH32_state_t xxh;
+ void* lz4CtxPtr;
+ U32 lz4CtxLevel; /* 0: unallocated; 1: LZ4_stream_t; 3: LZ4_streamHC_t */
+} LZ4F_cctx_t;
+
+typedef struct LZ4F_dctx_s
+{
+ LZ4F_frameInfo_t frameInfo;
+ U32 version;
+ U32 dStage;
+ U64 frameRemainingSize;
+ size_t maxBlockSize;
+ size_t maxBufferSize;
+ const BYTE* srcExpect;
+ BYTE* tmpIn;
+ size_t tmpInSize;
+ size_t tmpInTarget;
+ BYTE* tmpOutBuffer;
+ const BYTE* dict;
+ size_t dictSize;
+ BYTE* tmpOut;
+ size_t tmpOutSize;
+ size_t tmpOutStart;
+ XXH32_state_t xxh;
+ BYTE header[16];
+} LZ4F_dctx_t;
+
+
+/**************************************
+* Error management
+**************************************/
+#define LZ4F_GENERATE_STRING(STRING) #STRING,
+static const char* LZ4F_errorStrings[] = { LZ4F_LIST_ERRORS(LZ4F_GENERATE_STRING) };
+
+
+unsigned LZ4F_isError(LZ4F_errorCode_t code)
+{
+ return (code > (LZ4F_errorCode_t)(-LZ4F_ERROR_maxCode));
+}
+
+const char* LZ4F_getErrorName(LZ4F_errorCode_t code)
+{
+ static const char* codeError = "Unspecified error code";
+ if (LZ4F_isError(code)) return LZ4F_errorStrings[-(int)(code)];
+ return codeError;
+}
+
+
+/**************************************
+* Private functions
+**************************************/
+static size_t LZ4F_getBlockSize(unsigned blockSizeID)
+{
+ static const size_t blockSizes[4] = { 64 KB, 256 KB, 1 MB, 4 MB };
+
+ if (blockSizeID == 0) blockSizeID = LZ4F_BLOCKSIZEID_DEFAULT;
+ blockSizeID -= 4;
+ if (blockSizeID > 3) return (size_t)-LZ4F_ERROR_maxBlockSize_invalid;
+ return blockSizes[blockSizeID];
+}
+
+
+/* unoptimized version; solves endianess & alignment issues */
+static U32 LZ4F_readLE32 (const BYTE* srcPtr)
+{
+ U32 value32 = srcPtr[0];
+ value32 += (srcPtr[1]<<8);
+ value32 += (srcPtr[2]<<16);
+ value32 += ((U32)srcPtr[3])<<24;
+ return value32;
+}
+
+static void LZ4F_writeLE32 (BYTE* dstPtr, U32 value32)
+{
+ dstPtr[0] = (BYTE)value32;
+ dstPtr[1] = (BYTE)(value32 >> 8);
+ dstPtr[2] = (BYTE)(value32 >> 16);
+ dstPtr[3] = (BYTE)(value32 >> 24);
+}
+
+static U64 LZ4F_readLE64 (const BYTE* srcPtr)
+{
+ U64 value64 = srcPtr[0];
+ value64 += ((U64)srcPtr[1]<<8);
+ value64 += ((U64)srcPtr[2]<<16);
+ value64 += ((U64)srcPtr[3]<<24);
+ value64 += ((U64)srcPtr[4]<<32);
+ value64 += ((U64)srcPtr[5]<<40);
+ value64 += ((U64)srcPtr[6]<<48);
+ value64 += ((U64)srcPtr[7]<<56);
+ return value64;
+}
+
+static void LZ4F_writeLE64 (BYTE* dstPtr, U64 value64)
+{
+ dstPtr[0] = (BYTE)value64;
+ dstPtr[1] = (BYTE)(value64 >> 8);
+ dstPtr[2] = (BYTE)(value64 >> 16);
+ dstPtr[3] = (BYTE)(value64 >> 24);
+ dstPtr[4] = (BYTE)(value64 >> 32);
+ dstPtr[5] = (BYTE)(value64 >> 40);
+ dstPtr[6] = (BYTE)(value64 >> 48);
+ dstPtr[7] = (BYTE)(value64 >> 56);
+}
+
+
+static BYTE LZ4F_headerChecksum (const void* header, size_t length)
+{
+ U32 xxh = XXH32(header, length, 0);
+ return (BYTE)(xxh >> 8);
+}
+
+
+/**************************************
+* Simple compression functions
+**************************************/
+static LZ4F_blockSizeID_t LZ4F_optimalBSID(const LZ4F_blockSizeID_t requestedBSID, const size_t srcSize)
+{
+ LZ4F_blockSizeID_t proposedBSID = LZ4F_max64KB;
+ size_t maxBlockSize = 64 KB;
+ while (requestedBSID > proposedBSID)
+ {
+ if (srcSize <= maxBlockSize)
+ return proposedBSID;
+ proposedBSID = (LZ4F_blockSizeID_t)((int)proposedBSID + 1);
+ maxBlockSize <<= 2;
+ }
+ return requestedBSID;
+}
+
+
+size_t LZ4F_compressFrameBound(size_t srcSize, const LZ4F_preferences_t* preferencesPtr)
+{
+ LZ4F_preferences_t prefs;
+ size_t headerSize;
+ size_t streamSize;
+
+ if (preferencesPtr!=NULL) prefs = *preferencesPtr;
+ else memset(&prefs, 0, sizeof(prefs));
+
+ prefs.frameInfo.blockSizeID = LZ4F_optimalBSID(prefs.frameInfo.blockSizeID, srcSize);
+ prefs.autoFlush = 1;
+
+ headerSize = maxFHSize; /* header size, including magic number and frame content size*/
+ streamSize = LZ4F_compressBound(srcSize, &prefs);
+
+ return headerSize + streamSize;
+}
+
+
+/* LZ4F_compressFrame()
+* Compress an entire srcBuffer into a valid LZ4 frame, as defined by specification v1.5.0, in a single step.
+* The most important rule is that dstBuffer MUST be large enough (dstMaxSize) to ensure compression completion even in worst case.
+* You can get the minimum value of dstMaxSize by using LZ4F_compressFrameBound()
+* If this condition is not respected, LZ4F_compressFrame() will fail (result is an errorCode)
+* The LZ4F_preferences_t structure is optional : you can provide NULL as argument. All preferences will then be set to default.
+* The result of the function is the number of bytes written into dstBuffer.
+* The function outputs an error code if it fails (can be tested using LZ4F_isError())
+*/
+size_t LZ4F_compressFrame(void* dstBuffer, size_t dstMaxSize, const void* srcBuffer, size_t srcSize, const LZ4F_preferences_t* preferencesPtr)
+{
+ LZ4F_cctx_t cctxI;
+ LZ4_stream_t lz4ctx;
+ LZ4F_preferences_t prefs;
+ LZ4F_compressOptions_t options;
+ LZ4F_errorCode_t errorCode;
+ BYTE* const dstStart = (BYTE*) dstBuffer;
+ BYTE* dstPtr = dstStart;
+ BYTE* const dstEnd = dstStart + dstMaxSize;
+
+ memset(&cctxI, 0, sizeof(cctxI)); /* works because no allocation */
+ memset(&options, 0, sizeof(options));
+
+ cctxI.version = LZ4F_VERSION;
+ cctxI.maxBufferSize = 5 MB; /* mess with real buffer size to prevent allocation; works because autoflush==1 & stableSrc==1 */
+
+ if (preferencesPtr!=NULL)
+ prefs = *preferencesPtr;
+ else
+ memset(&prefs, 0, sizeof(prefs));
+ if (prefs.frameInfo.contentSize != 0)
+ prefs.frameInfo.contentSize = (U64)srcSize; /* auto-correct content size if selected (!=0) */
+
+ if (prefs.compressionLevel < (int)minHClevel)
+ {
+ cctxI.lz4CtxPtr = &lz4ctx;
+ cctxI.lz4CtxLevel = 1;
+ }
+
+ prefs.frameInfo.blockSizeID = LZ4F_optimalBSID(prefs.frameInfo.blockSizeID, srcSize);
+ prefs.autoFlush = 1;
+ if (srcSize <= LZ4F_getBlockSize(prefs.frameInfo.blockSizeID))
+ prefs.frameInfo.blockMode = LZ4F_blockIndependent; /* no need for linked blocks */
+
+ options.stableSrc = 1;
+
+ if (dstMaxSize < LZ4F_compressFrameBound(srcSize, &prefs))
+ return (size_t)-LZ4F_ERROR_dstMaxSize_tooSmall;
+
+ errorCode = LZ4F_compressBegin(&cctxI, dstBuffer, dstMaxSize, &prefs); /* write header */
+ if (LZ4F_isError(errorCode)) return errorCode;
+ dstPtr += errorCode; /* header size */
+
+ errorCode = LZ4F_compressUpdate(&cctxI, dstPtr, dstEnd-dstPtr, srcBuffer, srcSize, &options);
+ if (LZ4F_isError(errorCode)) return errorCode;
+ dstPtr += errorCode;
+
+ errorCode = LZ4F_compressEnd(&cctxI, dstPtr, dstEnd-dstPtr, &options); /* flush last block, and generate suffix */
+ if (LZ4F_isError(errorCode)) return errorCode;
+ dstPtr += errorCode;
+
+ if (prefs.compressionLevel >= (int)minHClevel) /* no allocation necessary with lz4 fast */
+ FREEMEM(cctxI.lz4CtxPtr);
+
+ return (dstPtr - dstStart);
+}
+
+
+/***********************************
+* Advanced compression functions
+***********************************/
+
+/* LZ4F_createCompressionContext() :
+* The first thing to do is to create a compressionContext object, which will be used in all compression operations.
+* This is achieved using LZ4F_createCompressionContext(), which takes as argument a version and an LZ4F_preferences_t structure.
+* The version provided MUST be LZ4F_VERSION. It is intended to track potential version differences between different binaries.
+* The function will provide a pointer to an allocated LZ4F_compressionContext_t object.
+* If the result LZ4F_errorCode_t is not OK_NoError, there was an error during context creation.
+* Object can release its memory using LZ4F_freeCompressionContext();
+*/
+LZ4F_errorCode_t LZ4F_createCompressionContext(LZ4F_compressionContext_t* LZ4F_compressionContextPtr, unsigned version)
+{
+ LZ4F_cctx_t* cctxPtr;
+
+ cctxPtr = (LZ4F_cctx_t*)ALLOCATOR(sizeof(LZ4F_cctx_t));
+ if (cctxPtr==NULL) return (LZ4F_errorCode_t)(-LZ4F_ERROR_allocation_failed);
+
+ cctxPtr->version = version;
+ cctxPtr->cStage = 0; /* Next stage : write header */
+
+ *LZ4F_compressionContextPtr = (LZ4F_compressionContext_t)cctxPtr;
+
+ return LZ4F_OK_NoError;
+}
+
+
+LZ4F_errorCode_t LZ4F_freeCompressionContext(LZ4F_compressionContext_t LZ4F_compressionContext)
+{
+ LZ4F_cctx_t* cctxPtr = (LZ4F_cctx_t*)LZ4F_compressionContext;
+
+ if (cctxPtr != NULL) /* null pointers can be safely provided to this function, like free() */
+ {
+ FREEMEM(cctxPtr->lz4CtxPtr);
+ FREEMEM(cctxPtr->tmpBuff);
+ FREEMEM(LZ4F_compressionContext);
+ }
+
+ return LZ4F_OK_NoError;
+}
+
+
+/* LZ4F_compressBegin() :
+* will write the frame header into dstBuffer.
+* dstBuffer must be large enough to accommodate a header (dstMaxSize). Maximum header size is LZ4F_MAXHEADERFRAME_SIZE bytes.
+* The result of the function is the number of bytes written into dstBuffer for the header
+* or an error code (can be tested using LZ4F_isError())
+*/
+size_t LZ4F_compressBegin(LZ4F_compressionContext_t compressionContext, void* dstBuffer, size_t dstMaxSize, const LZ4F_preferences_t* preferencesPtr)
+{
+ LZ4F_preferences_t prefNull;
+ LZ4F_cctx_t* cctxPtr = (LZ4F_cctx_t*)compressionContext;
+ BYTE* const dstStart = (BYTE*)dstBuffer;
+ BYTE* dstPtr = dstStart;
+ BYTE* headerStart;
+ size_t requiredBuffSize;
+
+ if (dstMaxSize < maxFHSize) return (size_t)-LZ4F_ERROR_dstMaxSize_tooSmall;
+ if (cctxPtr->cStage != 0) return (size_t)-LZ4F_ERROR_GENERIC;
+ memset(&prefNull, 0, sizeof(prefNull));
+ if (preferencesPtr == NULL) preferencesPtr = &prefNull;
+ cctxPtr->prefs = *preferencesPtr;
+
+ /* ctx Management */
+ {
+ U32 tableID = (cctxPtr->prefs.compressionLevel < minHClevel) ? 1 : 2; /* 0:nothing ; 1:LZ4 table ; 2:HC tables */
+ if (cctxPtr->lz4CtxLevel < tableID)
+ {
+ FREEMEM(cctxPtr->lz4CtxPtr);
+ if (cctxPtr->prefs.compressionLevel < minHClevel)
+ cctxPtr->lz4CtxPtr = (void*)LZ4_createStream();
+ else
+ cctxPtr->lz4CtxPtr = (void*)LZ4_createStreamHC();
+ cctxPtr->lz4CtxLevel = tableID;
+ }
+ }
+
+ /* Buffer Management */
+ if (cctxPtr->prefs.frameInfo.blockSizeID == 0) cctxPtr->prefs.frameInfo.blockSizeID = LZ4F_BLOCKSIZEID_DEFAULT;
+ cctxPtr->maxBlockSize = LZ4F_getBlockSize(cctxPtr->prefs.frameInfo.blockSizeID);
+
+ requiredBuffSize = cctxPtr->maxBlockSize + ((cctxPtr->prefs.frameInfo.blockMode == LZ4F_blockLinked) * 128 KB);
+ if (preferencesPtr->autoFlush)
+ requiredBuffSize = (cctxPtr->prefs.frameInfo.blockMode == LZ4F_blockLinked) * 64 KB; /* just needs dict */
+
+ if (cctxPtr->maxBufferSize < requiredBuffSize)
+ {
+ cctxPtr->maxBufferSize = requiredBuffSize;
+ FREEMEM(cctxPtr->tmpBuff);
+ cctxPtr->tmpBuff = (BYTE*)ALLOCATOR(requiredBuffSize);
+ if (cctxPtr->tmpBuff == NULL) return (size_t)-LZ4F_ERROR_allocation_failed;
+ }
+ cctxPtr->tmpIn = cctxPtr->tmpBuff;
+ cctxPtr->tmpInSize = 0;
+ XXH32_reset(&(cctxPtr->xxh), 0);
+ if (cctxPtr->prefs.compressionLevel < minHClevel)
+ LZ4_resetStream((LZ4_stream_t*)(cctxPtr->lz4CtxPtr));
+ else
+ LZ4_resetStreamHC((LZ4_streamHC_t*)(cctxPtr->lz4CtxPtr), cctxPtr->prefs.compressionLevel);
+
+ /* Magic Number */
+ LZ4F_writeLE32(dstPtr, LZ4F_MAGICNUMBER);
+ dstPtr += 4;
+ headerStart = dstPtr;
+
+ /* FLG Byte */
+ *dstPtr++ = (BYTE)(((1 & _2BITS) << 6) /* Version('01') */
+ + ((cctxPtr->prefs.frameInfo.blockMode & _1BIT ) << 5) /* Block mode */
+ + ((cctxPtr->prefs.frameInfo.contentChecksumFlag & _1BIT ) << 2) /* Frame checksum */
+ + ((cctxPtr->prefs.frameInfo.contentSize > 0) << 3)); /* Frame content size */
+ /* BD Byte */
+ *dstPtr++ = (BYTE)((cctxPtr->prefs.frameInfo.blockSizeID & _3BITS) << 4);
+ /* Optional Frame content size field */
+ if (cctxPtr->prefs.frameInfo.contentSize)
+ {
+ LZ4F_writeLE64(dstPtr, cctxPtr->prefs.frameInfo.contentSize);
+ dstPtr += 8;
+ cctxPtr->totalInSize = 0;
+ }
+ /* CRC Byte */
+ *dstPtr = LZ4F_headerChecksum(headerStart, dstPtr - headerStart);
+ dstPtr++;
+
+ cctxPtr->cStage = 1; /* header written, now request input data block */
+
+ return (dstPtr - dstStart);
+}
+
+
+/* LZ4F_compressBound() : gives the size of Dst buffer given a srcSize to handle worst case situations.
+* The LZ4F_frameInfo_t structure is optional :
+* you can provide NULL as argument, preferences will then be set to cover worst case situations.
+* */
+size_t LZ4F_compressBound(size_t srcSize, const LZ4F_preferences_t* preferencesPtr)
+{
+ LZ4F_preferences_t prefsNull;
+ memset(&prefsNull, 0, sizeof(prefsNull));
+ prefsNull.frameInfo.contentChecksumFlag = LZ4F_contentChecksumEnabled; /* worst case */
+ {
+ const LZ4F_preferences_t* prefsPtr = (preferencesPtr==NULL) ? &prefsNull : preferencesPtr;
+ LZ4F_blockSizeID_t bid = prefsPtr->frameInfo.blockSizeID;
+ size_t blockSize = LZ4F_getBlockSize(bid);
+ unsigned nbBlocks = (unsigned)(srcSize / blockSize) + 1;
+ size_t lastBlockSize = prefsPtr->autoFlush ? srcSize % blockSize : blockSize;
+ size_t blockInfo = 4; /* default, without block CRC option */
+ size_t frameEnd = 4 + (prefsPtr->frameInfo.contentChecksumFlag*4);
+
+ return (blockInfo * nbBlocks) + (blockSize * (nbBlocks-1)) + lastBlockSize + frameEnd;;
+ }
+}
+
+
+typedef int (*compressFunc_t)(void* ctx, const char* src, char* dst, int srcSize, int dstSize, int level);
+
+static size_t LZ4F_compressBlock(void* dst, const void* src, size_t srcSize, compressFunc_t compress, void* lz4ctx, int level)
+{
+ /* compress one block */
+ BYTE* cSizePtr = (BYTE*)dst;
+ U32 cSize;
+ cSize = (U32)compress(lz4ctx, (const char*)src, (char*)(cSizePtr+4), (int)(srcSize), (int)(srcSize-1), level);
+ LZ4F_writeLE32(cSizePtr, cSize);
+ if (cSize == 0) /* compression failed */
+ {
+ cSize = (U32)srcSize;
+ LZ4F_writeLE32(cSizePtr, cSize + LZ4F_BLOCKUNCOMPRESSED_FLAG);
+ memcpy(cSizePtr+4, src, srcSize);
+ }
+ return cSize + 4;
+}
+
+
+static int LZ4F_localLZ4_compress_limitedOutput_withState(void* ctx, const char* src, char* dst, int srcSize, int dstSize, int level)
+{
+ (void) level;
+ return LZ4_compress_limitedOutput_withState(ctx, src, dst, srcSize, dstSize);
+}
+
+static int LZ4F_localLZ4_compress_limitedOutput_continue(void* ctx, const char* src, char* dst, int srcSize, int dstSize, int level)
+{
+ (void) level;
+ return LZ4_compress_limitedOutput_continue((LZ4_stream_t*)ctx, src, dst, srcSize, dstSize);
+}
+
+static int LZ4F_localLZ4_compressHC_limitedOutput_continue(void* ctx, const char* src, char* dst, int srcSize, int dstSize, int level)
+{
+ (void) level;
+ return LZ4_compress_HC_continue((LZ4_streamHC_t*)ctx, src, dst, srcSize, dstSize);
+}
+
+static compressFunc_t LZ4F_selectCompression(LZ4F_blockMode_t blockMode, int level)
+{
+ if (level < minHClevel)
+ {
+ if (blockMode == LZ4F_blockIndependent) return LZ4F_localLZ4_compress_limitedOutput_withState;
+ return LZ4F_localLZ4_compress_limitedOutput_continue;
+ }
+ if (blockMode == LZ4F_blockIndependent) return LZ4_compress_HC_extStateHC;
+ return LZ4F_localLZ4_compressHC_limitedOutput_continue;
+}
+
+static int LZ4F_localSaveDict(LZ4F_cctx_t* cctxPtr)
+{
+ if (cctxPtr->prefs.compressionLevel < minHClevel)
+ return LZ4_saveDict ((LZ4_stream_t*)(cctxPtr->lz4CtxPtr), (char*)(cctxPtr->tmpBuff), 64 KB);
+ return LZ4_saveDictHC ((LZ4_streamHC_t*)(cctxPtr->lz4CtxPtr), (char*)(cctxPtr->tmpBuff), 64 KB);
+}
+
+typedef enum { notDone, fromTmpBuffer, fromSrcBuffer } LZ4F_lastBlockStatus;
+
+/* LZ4F_compressUpdate()
+* LZ4F_compressUpdate() can be called repetitively to compress as much data as necessary.
+* The most important rule is that dstBuffer MUST be large enough (dstMaxSize) to ensure compression completion even in worst case.
+* If this condition is not respected, LZ4F_compress() will fail (result is an errorCode)
+* You can get the minimum value of dstMaxSize by using LZ4F_compressBound()
+* The LZ4F_compressOptions_t structure is optional : you can provide NULL as argument.
+* The result of the function is the number of bytes written into dstBuffer : it can be zero, meaning input data was just buffered.
+* The function outputs an error code if it fails (can be tested using LZ4F_isError())
+*/
+size_t LZ4F_compressUpdate(LZ4F_compressionContext_t compressionContext, void* dstBuffer, size_t dstMaxSize, const void* srcBuffer, size_t srcSize, const LZ4F_compressOptions_t* compressOptionsPtr)
+{
+ LZ4F_compressOptions_t cOptionsNull;
+ LZ4F_cctx_t* cctxPtr = (LZ4F_cctx_t*)compressionContext;
+ size_t blockSize = cctxPtr->maxBlockSize;
+ const BYTE* srcPtr = (const BYTE*)srcBuffer;
+ const BYTE* const srcEnd = srcPtr + srcSize;
+ BYTE* const dstStart = (BYTE*)dstBuffer;
+ BYTE* dstPtr = dstStart;
+ LZ4F_lastBlockStatus lastBlockCompressed = notDone;
+ compressFunc_t compress;
+
+
+ if (cctxPtr->cStage != 1) return (size_t)-LZ4F_ERROR_GENERIC;
+ if (dstMaxSize < LZ4F_compressBound(srcSize, &(cctxPtr->prefs))) return (size_t)-LZ4F_ERROR_dstMaxSize_tooSmall;
+ memset(&cOptionsNull, 0, sizeof(cOptionsNull));
+ if (compressOptionsPtr == NULL) compressOptionsPtr = &cOptionsNull;
+
+ /* select compression function */
+ compress = LZ4F_selectCompression(cctxPtr->prefs.frameInfo.blockMode, cctxPtr->prefs.compressionLevel);
+
+ /* complete tmp buffer */
+ if (cctxPtr->tmpInSize > 0) /* some data already within tmp buffer */
+ {
+ size_t sizeToCopy = blockSize - cctxPtr->tmpInSize;
+ if (sizeToCopy > srcSize)
+ {
+ /* add src to tmpIn buffer */
+ memcpy(cctxPtr->tmpIn + cctxPtr->tmpInSize, srcBuffer, srcSize);
+ srcPtr = srcEnd;
+ cctxPtr->tmpInSize += srcSize;
+ /* still needs some CRC */
+ }
+ else
+ {
+ /* complete tmpIn block and then compress it */
+ lastBlockCompressed = fromTmpBuffer;
+ memcpy(cctxPtr->tmpIn + cctxPtr->tmpInSize, srcBuffer, sizeToCopy);
+ srcPtr += sizeToCopy;
+
+ dstPtr += LZ4F_compressBlock(dstPtr, cctxPtr->tmpIn, blockSize, compress, cctxPtr->lz4CtxPtr, cctxPtr->prefs.compressionLevel);
+
+ if (cctxPtr->prefs.frameInfo.blockMode==LZ4F_blockLinked) cctxPtr->tmpIn += blockSize;
+ cctxPtr->tmpInSize = 0;
+ }
+ }
+
+ while ((size_t)(srcEnd - srcPtr) >= blockSize)
+ {
+ /* compress full block */
+ lastBlockCompressed = fromSrcBuffer;
+ dstPtr += LZ4F_compressBlock(dstPtr, srcPtr, blockSize, compress, cctxPtr->lz4CtxPtr, cctxPtr->prefs.compressionLevel);
+ srcPtr += blockSize;
+ }
+
+ if ((cctxPtr->prefs.autoFlush) && (srcPtr < srcEnd))
+ {
+ /* compress remaining input < blockSize */
+ lastBlockCompressed = fromSrcBuffer;
+ dstPtr += LZ4F_compressBlock(dstPtr, srcPtr, srcEnd - srcPtr, compress, cctxPtr->lz4CtxPtr, cctxPtr->prefs.compressionLevel);
+ srcPtr = srcEnd;
+ }
+
+ /* preserve dictionary if necessary */
+ if ((cctxPtr->prefs.frameInfo.blockMode==LZ4F_blockLinked) && (lastBlockCompressed==fromSrcBuffer))
+ {
+ if (compressOptionsPtr->stableSrc)
+ {
+ cctxPtr->tmpIn = cctxPtr->tmpBuff;
+ }
+ else
+ {
+ int realDictSize = LZ4F_localSaveDict(cctxPtr);
+ if (realDictSize==0) return (size_t)-LZ4F_ERROR_GENERIC;
+ cctxPtr->tmpIn = cctxPtr->tmpBuff + realDictSize;
+ }
+ }
+
+ /* keep tmpIn within limits */
+ if ((cctxPtr->tmpIn + blockSize) > (cctxPtr->tmpBuff + cctxPtr->maxBufferSize) /* necessarily LZ4F_blockLinked && lastBlockCompressed==fromTmpBuffer */
+ && !(cctxPtr->prefs.autoFlush))
+ {
+ int realDictSize = LZ4F_localSaveDict(cctxPtr);
+ cctxPtr->tmpIn = cctxPtr->tmpBuff + realDictSize;
+ }
+
+ /* some input data left, necessarily < blockSize */
+ if (srcPtr < srcEnd)
+ {
+ /* fill tmp buffer */
+ size_t sizeToCopy = srcEnd - srcPtr;
+ memcpy(cctxPtr->tmpIn, srcPtr, sizeToCopy);
+ cctxPtr->tmpInSize = sizeToCopy;
+ }
+
+ if (cctxPtr->prefs.frameInfo.contentChecksumFlag == LZ4F_contentChecksumEnabled)
+ XXH32_update(&(cctxPtr->xxh), srcBuffer, srcSize);
+
+ cctxPtr->totalInSize += srcSize;
+ return dstPtr - dstStart;
+}
+
+
+/* LZ4F_flush()
+* Should you need to create compressed data immediately, without waiting for a block to be filled,
+* you can call LZ4_flush(), which will immediately compress any remaining data stored within compressionContext.
+* The result of the function is the number of bytes written into dstBuffer
+* (it can be zero, this means there was no data left within compressionContext)
+* The function outputs an error code if it fails (can be tested using LZ4F_isError())
+* The LZ4F_compressOptions_t structure is optional : you can provide NULL as argument.
+*/
+size_t LZ4F_flush(LZ4F_compressionContext_t compressionContext, void* dstBuffer, size_t dstMaxSize, const LZ4F_compressOptions_t* compressOptionsPtr)
+{
+ LZ4F_cctx_t* cctxPtr = (LZ4F_cctx_t*)compressionContext;
+ BYTE* const dstStart = (BYTE*)dstBuffer;
+ BYTE* dstPtr = dstStart;
+ compressFunc_t compress;
+
+
+ if (cctxPtr->tmpInSize == 0) return 0; /* nothing to flush */
+ if (cctxPtr->cStage != 1) return (size_t)-LZ4F_ERROR_GENERIC;
+ if (dstMaxSize < (cctxPtr->tmpInSize + 8)) return (size_t)-LZ4F_ERROR_dstMaxSize_tooSmall; /* +8 : block header(4) + block checksum(4) */
+ (void)compressOptionsPtr; /* not yet useful */
+
+ /* select compression function */
+ compress = LZ4F_selectCompression(cctxPtr->prefs.frameInfo.blockMode, cctxPtr->prefs.compressionLevel);
+
+ /* compress tmp buffer */
+ dstPtr += LZ4F_compressBlock(dstPtr, cctxPtr->tmpIn, cctxPtr->tmpInSize, compress, cctxPtr->lz4CtxPtr, cctxPtr->prefs.compressionLevel);
+ if (cctxPtr->prefs.frameInfo.blockMode==LZ4F_blockLinked) cctxPtr->tmpIn += cctxPtr->tmpInSize;
+ cctxPtr->tmpInSize = 0;
+
+ /* keep tmpIn within limits */
+ if ((cctxPtr->tmpIn + cctxPtr->maxBlockSize) > (cctxPtr->tmpBuff + cctxPtr->maxBufferSize)) /* necessarily LZ4F_blockLinked */
+ {
+ int realDictSize = LZ4F_localSaveDict(cctxPtr);
+ cctxPtr->tmpIn = cctxPtr->tmpBuff + realDictSize;
+ }
+
+ return dstPtr - dstStart;
+}
+
+
+/* LZ4F_compressEnd()
+* When you want to properly finish the compressed frame, just call LZ4F_compressEnd().
+* It will flush whatever data remained within compressionContext (like LZ4_flush())
+* but also properly finalize the frame, with an endMark and a checksum.
+* The result of the function is the number of bytes written into dstBuffer (necessarily >= 4 (endMark size))
+* The function outputs an error code if it fails (can be tested using LZ4F_isError())
+* The LZ4F_compressOptions_t structure is optional : you can provide NULL as argument.
+* compressionContext can then be used again, starting with LZ4F_compressBegin(). The preferences will remain the same.
+*/
+size_t LZ4F_compressEnd(LZ4F_compressionContext_t compressionContext, void* dstBuffer, size_t dstMaxSize, const LZ4F_compressOptions_t* compressOptionsPtr)
+{
+ LZ4F_cctx_t* cctxPtr = (LZ4F_cctx_t*)compressionContext;
+ BYTE* const dstStart = (BYTE*)dstBuffer;
+ BYTE* dstPtr = dstStart;
+ size_t errorCode;
+
+ errorCode = LZ4F_flush(compressionContext, dstBuffer, dstMaxSize, compressOptionsPtr);
+ if (LZ4F_isError(errorCode)) return errorCode;
+ dstPtr += errorCode;
+
+ LZ4F_writeLE32(dstPtr, 0);
+ dstPtr+=4; /* endMark */
+
+ if (cctxPtr->prefs.frameInfo.contentChecksumFlag == LZ4F_contentChecksumEnabled)
+ {
+ U32 xxh = XXH32_digest(&(cctxPtr->xxh));
+ LZ4F_writeLE32(dstPtr, xxh);
+ dstPtr+=4; /* content Checksum */
+ }
+
+ cctxPtr->cStage = 0; /* state is now re-usable (with identical preferences) */
+
+ if (cctxPtr->prefs.frameInfo.contentSize)
+ {
+ if (cctxPtr->prefs.frameInfo.contentSize != cctxPtr->totalInSize)
+ return (size_t)-LZ4F_ERROR_frameSize_wrong;
+ }
+
+ return dstPtr - dstStart;
+}
+
+
+/**********************************
+* Decompression functions
+**********************************/
+
+/* Resource management */
+
+/* LZ4F_createDecompressionContext() :
+* The first thing to do is to create a decompressionContext object, which will be used in all decompression operations.
+* This is achieved using LZ4F_createDecompressionContext().
+* The function will provide a pointer to a fully allocated and initialized LZ4F_decompressionContext object.
+* If the result LZ4F_errorCode_t is not zero, there was an error during context creation.
+* Object can release its memory using LZ4F_freeDecompressionContext();
+*/
+LZ4F_errorCode_t LZ4F_createDecompressionContext(LZ4F_decompressionContext_t* LZ4F_decompressionContextPtr, unsigned versionNumber)
+{
+ LZ4F_dctx_t* dctxPtr;
+
+ dctxPtr = (LZ4F_dctx_t*)ALLOCATOR(sizeof(LZ4F_dctx_t));
+ if (dctxPtr==NULL) return (LZ4F_errorCode_t)-LZ4F_ERROR_GENERIC;
+
+ dctxPtr->version = versionNumber;
+ *LZ4F_decompressionContextPtr = (LZ4F_decompressionContext_t)dctxPtr;
+ return LZ4F_OK_NoError;
+}
+
+LZ4F_errorCode_t LZ4F_freeDecompressionContext(LZ4F_decompressionContext_t LZ4F_decompressionContext)
+{
+ LZ4F_errorCode_t result = LZ4F_OK_NoError;
+ LZ4F_dctx_t* dctxPtr = (LZ4F_dctx_t*)LZ4F_decompressionContext;
+ if (dctxPtr != NULL) /* can accept NULL input, like free() */
+ {
+ result = (LZ4F_errorCode_t)dctxPtr->dStage;
+ FREEMEM(dctxPtr->tmpIn);
+ FREEMEM(dctxPtr->tmpOutBuffer);
+ FREEMEM(dctxPtr);
+ }
+ return result;
+}
+
+
+/* ******************************************************************** */
+/* ********************* Decompression ******************************** */
+/* ******************************************************************** */
+
+typedef enum { dstage_getHeader=0, dstage_storeHeader,
+ dstage_getCBlockSize, dstage_storeCBlockSize,
+ dstage_copyDirect,
+ dstage_getCBlock, dstage_storeCBlock,
+ dstage_decodeCBlock, dstage_decodeCBlock_intoDst,
+ dstage_decodeCBlock_intoTmp, dstage_flushOut,
+ dstage_getSuffix, dstage_storeSuffix,
+ dstage_getSFrameSize, dstage_storeSFrameSize,
+ dstage_skipSkippable
+} dStage_t;
+
+
+/* LZ4F_decodeHeader
+ return : nb Bytes read from srcVoidPtr (necessarily <= srcSize)
+ or an error code (testable with LZ4F_isError())
+ output : set internal values of dctx, such as
+ dctxPtr->frameInfo and dctxPtr->dStage.
+ input : srcVoidPtr points at the **beginning of the frame**
+*/
+static size_t LZ4F_decodeHeader(LZ4F_dctx_t* dctxPtr, const void* srcVoidPtr, size_t srcSize)
+{
+ BYTE FLG, BD, HC;
+ unsigned version, blockMode, blockChecksumFlag, contentSizeFlag, contentChecksumFlag, blockSizeID;
+ size_t bufferNeeded;
+ size_t frameHeaderSize;
+ const BYTE* srcPtr = (const BYTE*)srcVoidPtr;
+
+ /* need to decode header to get frameInfo */
+ if (srcSize < minFHSize) return (size_t)-LZ4F_ERROR_frameHeader_incomplete; /* minimal frame header size */
+ memset(&(dctxPtr->frameInfo), 0, sizeof(dctxPtr->frameInfo));
+
+ /* special case : skippable frames */
+ if ((LZ4F_readLE32(srcPtr) & 0xFFFFFFF0U) == LZ4F_MAGIC_SKIPPABLE_START)
+ {
+ dctxPtr->frameInfo.frameType = LZ4F_skippableFrame;
+ if (srcVoidPtr == (void*)(dctxPtr->header))
+ {
+ dctxPtr->tmpInSize = srcSize;
+ dctxPtr->tmpInTarget = 8;
+ dctxPtr->dStage = dstage_storeSFrameSize;
+ return srcSize;
+ }
+ else
+ {
+ dctxPtr->dStage = dstage_getSFrameSize;
+ return 4;
+ }
+ }
+
+ /* control magic number */
+ if (LZ4F_readLE32(srcPtr) != LZ4F_MAGICNUMBER) return (size_t)-LZ4F_ERROR_frameType_unknown;
+ dctxPtr->frameInfo.frameType = LZ4F_frame;
+
+ /* Flags */
+ FLG = srcPtr[4];
+ version = (FLG>>6) & _2BITS;
+ blockMode = (FLG>>5) & _1BIT;
+ blockChecksumFlag = (FLG>>4) & _1BIT;
+ contentSizeFlag = (FLG>>3) & _1BIT;
+ contentChecksumFlag = (FLG>>2) & _1BIT;
+
+ /* Frame Header Size */
+ frameHeaderSize = contentSizeFlag ? maxFHSize : minFHSize;
+
+ if (srcSize < frameHeaderSize)
+ {
+ /* not enough input to fully decode frame header */
+ if (srcPtr != dctxPtr->header)
+ memcpy(dctxPtr->header, srcPtr, srcSize);
+ dctxPtr->tmpInSize = srcSize;
+ dctxPtr->tmpInTarget = frameHeaderSize;
+ dctxPtr->dStage = dstage_storeHeader;
+ return srcSize;
+ }
+
+ BD = srcPtr[5];
+ blockSizeID = (BD>>4) & _3BITS;
+
+ /* validate */
+ if (version != 1) return (size_t)-LZ4F_ERROR_headerVersion_wrong; /* Version Number, only supported value */
+ if (blockChecksumFlag != 0) return (size_t)-LZ4F_ERROR_blockChecksum_unsupported; /* Not supported for the time being */
+ if (((FLG>>0)&_2BITS) != 0) return (size_t)-LZ4F_ERROR_reservedFlag_set; /* Reserved bits */
+ if (((BD>>7)&_1BIT) != 0) return (size_t)-LZ4F_ERROR_reservedFlag_set; /* Reserved bit */
+ if (blockSizeID < 4) return (size_t)-LZ4F_ERROR_maxBlockSize_invalid; /* 4-7 only supported values for the time being */
+ if (((BD>>0)&_4BITS) != 0) return (size_t)-LZ4F_ERROR_reservedFlag_set; /* Reserved bits */
+
+ /* check */
+ HC = LZ4F_headerChecksum(srcPtr+4, frameHeaderSize-5);
+ if (HC != srcPtr[frameHeaderSize-1]) return (size_t)-LZ4F_ERROR_headerChecksum_invalid; /* Bad header checksum error */
+
+ /* save */
+ dctxPtr->frameInfo.blockMode = (LZ4F_blockMode_t)blockMode;
+ dctxPtr->frameInfo.contentChecksumFlag = (LZ4F_contentChecksum_t)contentChecksumFlag;
+ dctxPtr->frameInfo.blockSizeID = (LZ4F_blockSizeID_t)blockSizeID;
+ dctxPtr->maxBlockSize = LZ4F_getBlockSize(blockSizeID);
+ if (contentSizeFlag)
+ dctxPtr->frameRemainingSize = dctxPtr->frameInfo.contentSize = LZ4F_readLE64(srcPtr+6);
+
+ /* init */
+ if (contentChecksumFlag) XXH32_reset(&(dctxPtr->xxh), 0);
+
+ /* alloc */
+ bufferNeeded = dctxPtr->maxBlockSize + ((dctxPtr->frameInfo.blockMode==LZ4F_blockLinked) * 128 KB);
+ if (bufferNeeded > dctxPtr->maxBufferSize) /* tmp buffers too small */
+ {
+ FREEMEM(dctxPtr->tmpIn);
+ FREEMEM(dctxPtr->tmpOutBuffer);
+ dctxPtr->maxBufferSize = bufferNeeded;
+ dctxPtr->tmpIn = (BYTE*)ALLOCATOR(dctxPtr->maxBlockSize);
+ if (dctxPtr->tmpIn == NULL) return (size_t)-LZ4F_ERROR_GENERIC;
+ dctxPtr->tmpOutBuffer= (BYTE*)ALLOCATOR(dctxPtr->maxBufferSize);
+ if (dctxPtr->tmpOutBuffer== NULL) return (size_t)-LZ4F_ERROR_GENERIC;
+ }
+ dctxPtr->tmpInSize = 0;
+ dctxPtr->tmpInTarget = 0;
+ dctxPtr->dict = dctxPtr->tmpOutBuffer;
+ dctxPtr->dictSize = 0;
+ dctxPtr->tmpOut = dctxPtr->tmpOutBuffer;
+ dctxPtr->tmpOutStart = 0;
+ dctxPtr->tmpOutSize = 0;
+
+ dctxPtr->dStage = dstage_getCBlockSize;
+
+ return frameHeaderSize;
+}
+
+
+/* LZ4F_getFrameInfo()
+* This function decodes frame header information, such as blockSize.
+* It is optional : you could start by calling directly LZ4F_decompress() instead.
+* The objective is to extract header information without starting decompression, typically for allocation purposes.
+* LZ4F_getFrameInfo() can also be used *after* starting decompression, on a valid LZ4F_decompressionContext_t.
+* The number of bytes read from srcBuffer will be provided within *srcSizePtr (necessarily <= original value).
+* You are expected to resume decompression from where it stopped (srcBuffer + *srcSizePtr)
+* The function result is an hint of the better srcSize to use for next call to LZ4F_decompress,
+* or an error code which can be tested using LZ4F_isError().
+*/
+LZ4F_errorCode_t LZ4F_getFrameInfo(LZ4F_decompressionContext_t dCtx, LZ4F_frameInfo_t* frameInfoPtr,
+ const void* srcBuffer, size_t* srcSizePtr)
+{
+ LZ4F_dctx_t* dctxPtr = (LZ4F_dctx_t*)dCtx;
+
+ if (dctxPtr->dStage > dstage_storeHeader) /* note : requires dstage_* header related to be at beginning of enum */
+ {
+ size_t o=0, i=0;
+ /* frameInfo already decoded */
+ *srcSizePtr = 0;
+ *frameInfoPtr = dctxPtr->frameInfo;
+ return LZ4F_decompress(dCtx, NULL, &o, NULL, &i, NULL);
+ }
+ else
+ {
+ size_t o=0;
+ size_t nextSrcSize = LZ4F_decompress(dCtx, NULL, &o, srcBuffer, srcSizePtr, NULL);
+ if (dctxPtr->dStage <= dstage_storeHeader) /* note : requires dstage_* header related to be at beginning of enum */
+ return (size_t)-LZ4F_ERROR_frameHeader_incomplete;
+ *frameInfoPtr = dctxPtr->frameInfo;
+ return nextSrcSize;
+ }
+}
+
+
+/* trivial redirector, for common prototype */
+static int LZ4F_decompress_safe (const char* source, char* dest, int compressedSize, int maxDecompressedSize, const char* dictStart, int dictSize)
+{
+ (void)dictStart; (void)dictSize;
+ return LZ4_decompress_safe (source, dest, compressedSize, maxDecompressedSize);
+}
+
+
+static void LZ4F_updateDict(LZ4F_dctx_t* dctxPtr, const BYTE* dstPtr, size_t dstSize, const BYTE* dstPtr0, unsigned withinTmp)
+{
+ if (dctxPtr->dictSize==0)
+ dctxPtr->dict = (const BYTE*)dstPtr; /* priority to dictionary continuity */
+
+ if (dctxPtr->dict + dctxPtr->dictSize == dstPtr) /* dictionary continuity */
+ {
+ dctxPtr->dictSize += dstSize;
+ return;
+ }
+
+ if (dstPtr - dstPtr0 + dstSize >= 64 KB) /* dstBuffer large enough to become dictionary */
+ {
+ dctxPtr->dict = (const BYTE*)dstPtr0;
+ dctxPtr->dictSize = dstPtr - dstPtr0 + dstSize;
+ return;
+ }
+
+ if ((withinTmp) && (dctxPtr->dict == dctxPtr->tmpOutBuffer))
+ {
+ /* assumption : dctxPtr->dict + dctxPtr->dictSize == dctxPtr->tmpOut + dctxPtr->tmpOutStart */
+ dctxPtr->dictSize += dstSize;
+ return;
+ }
+
+ if (withinTmp) /* copy relevant dict portion in front of tmpOut within tmpOutBuffer */
+ {
+ size_t preserveSize = dctxPtr->tmpOut - dctxPtr->tmpOutBuffer;
+ size_t copySize = 64 KB - dctxPtr->tmpOutSize;
+ const BYTE* oldDictEnd = dctxPtr->dict + dctxPtr->dictSize - dctxPtr->tmpOutStart;
+ if (dctxPtr->tmpOutSize > 64 KB) copySize = 0;
+ if (copySize > preserveSize) copySize = preserveSize;
+
+ memcpy(dctxPtr->tmpOutBuffer + preserveSize - copySize, oldDictEnd - copySize, copySize);
+
+ dctxPtr->dict = dctxPtr->tmpOutBuffer;
+ dctxPtr->dictSize = preserveSize + dctxPtr->tmpOutStart + dstSize;
+ return;
+ }
+
+ if (dctxPtr->dict == dctxPtr->tmpOutBuffer) /* copy dst into tmp to complete dict */
+ {
+ if (dctxPtr->dictSize + dstSize > dctxPtr->maxBufferSize) /* tmp buffer not large enough */
+ {
+ size_t preserveSize = 64 KB - dstSize; /* note : dstSize < 64 KB */
+ memcpy(dctxPtr->tmpOutBuffer, dctxPtr->dict + dctxPtr->dictSize - preserveSize, preserveSize);
+ dctxPtr->dictSize = preserveSize;
+ }
+ memcpy(dctxPtr->tmpOutBuffer + dctxPtr->dictSize, dstPtr, dstSize);
+ dctxPtr->dictSize += dstSize;
+ return;
+ }
+
+ /* join dict & dest into tmp */
+ {
+ size_t preserveSize = 64 KB - dstSize; /* note : dstSize < 64 KB */
+ if (preserveSize > dctxPtr->dictSize) preserveSize = dctxPtr->dictSize;
+ memcpy(dctxPtr->tmpOutBuffer, dctxPtr->dict + dctxPtr->dictSize - preserveSize, preserveSize);
+ memcpy(dctxPtr->tmpOutBuffer + preserveSize, dstPtr, dstSize);
+ dctxPtr->dict = dctxPtr->tmpOutBuffer;
+ dctxPtr->dictSize = preserveSize + dstSize;
+ }
+}
+
+
+
+/* LZ4F_decompress()
+* Call this function repetitively to regenerate data compressed within srcBuffer.
+* The function will attempt to decode *srcSizePtr from srcBuffer, into dstBuffer of maximum size *dstSizePtr.
+*
+* The number of bytes regenerated into dstBuffer will be provided within *dstSizePtr (necessarily <= original value).
+*
+* The number of bytes effectively read from srcBuffer will be provided within *srcSizePtr (necessarily <= original value).
+* If the number of bytes read is < number of bytes provided, then the decompression operation is not complete.
+* You will have to call it again, continuing from where it stopped.
+*
+* The function result is an hint of the better srcSize to use for next call to LZ4F_decompress.
+* Basically, it's the size of the current (or remaining) compressed block + header of next block.
+* Respecting the hint provides some boost to performance, since it allows less buffer shuffling.
+* Note that this is just a hint, you can always provide any srcSize you want.
+* When a frame is fully decoded, the function result will be 0.
+* If decompression failed, function result is an error code which can be tested using LZ4F_isError().
+*/
+size_t LZ4F_decompress(LZ4F_decompressionContext_t decompressionContext,
+ void* dstBuffer, size_t* dstSizePtr,
+ const void* srcBuffer, size_t* srcSizePtr,
+ const LZ4F_decompressOptions_t* decompressOptionsPtr)
+{
+ LZ4F_dctx_t* dctxPtr = (LZ4F_dctx_t*)decompressionContext;
+ LZ4F_decompressOptions_t optionsNull;
+ const BYTE* const srcStart = (const BYTE*)srcBuffer;
+ const BYTE* const srcEnd = srcStart + *srcSizePtr;
+ const BYTE* srcPtr = srcStart;
+ BYTE* const dstStart = (BYTE*)dstBuffer;
+ BYTE* const dstEnd = dstStart + *dstSizePtr;
+ BYTE* dstPtr = dstStart;
+ const BYTE* selectedIn = NULL;
+ unsigned doAnotherStage = 1;
+ size_t nextSrcSizeHint = 1;
+
+
+ memset(&optionsNull, 0, sizeof(optionsNull));
+ if (decompressOptionsPtr==NULL) decompressOptionsPtr = &optionsNull;
+ *srcSizePtr = 0;
+ *dstSizePtr = 0;
+
+ /* expect to continue decoding src buffer where it left previously */
+ if (dctxPtr->srcExpect != NULL)
+ {
+ if (srcStart != dctxPtr->srcExpect) return (size_t)-LZ4F_ERROR_srcPtr_wrong;
+ }
+
+ /* programmed as a state machine */
+
+ while (doAnotherStage)
+ {
+
+ switch(dctxPtr->dStage)
+ {
+
+ case dstage_getHeader:
+ {
+ if ((size_t)(srcEnd-srcPtr) >= maxFHSize) /* enough to decode - shortcut */
+ {
+ LZ4F_errorCode_t errorCode = LZ4F_decodeHeader(dctxPtr, srcPtr, srcEnd-srcPtr);
+ if (LZ4F_isError(errorCode)) return errorCode;
+ srcPtr += errorCode;
+ break;
+ }
+ dctxPtr->tmpInSize = 0;
+ dctxPtr->tmpInTarget = minFHSize; /* minimum to attempt decode */
+ dctxPtr->dStage = dstage_storeHeader;
+ }
+
+ case dstage_storeHeader:
+ {
+ size_t sizeToCopy = dctxPtr->tmpInTarget - dctxPtr->tmpInSize;
+ if (sizeToCopy > (size_t)(srcEnd - srcPtr)) sizeToCopy = srcEnd - srcPtr;
+ memcpy(dctxPtr->header + dctxPtr->tmpInSize, srcPtr, sizeToCopy);
+ dctxPtr->tmpInSize += sizeToCopy;
+ srcPtr += sizeToCopy;
+ if (dctxPtr->tmpInSize < dctxPtr->tmpInTarget)
+ {
+ nextSrcSizeHint = (dctxPtr->tmpInTarget - dctxPtr->tmpInSize) + BHSize; /* rest of header + nextBlockHeader */
+ doAnotherStage = 0; /* not enough src data, ask for some more */
+ break;
+ }
+ {
+ LZ4F_errorCode_t errorCode = LZ4F_decodeHeader(dctxPtr, dctxPtr->header, dctxPtr->tmpInTarget);
+ if (LZ4F_isError(errorCode)) return errorCode;
+ }
+ break;
+ }
+
+ case dstage_getCBlockSize:
+ {
+ if ((size_t)(srcEnd - srcPtr) >= BHSize)
+ {
+ selectedIn = srcPtr;
+ srcPtr += BHSize;
+ }
+ else
+ {
+ /* not enough input to read cBlockSize field */
+ dctxPtr->tmpInSize = 0;
+ dctxPtr->dStage = dstage_storeCBlockSize;
+ }
+ }
+
+ if (dctxPtr->dStage == dstage_storeCBlockSize)
+ case dstage_storeCBlockSize:
+ {
+ size_t sizeToCopy = BHSize - dctxPtr->tmpInSize;
+ if (sizeToCopy > (size_t)(srcEnd - srcPtr)) sizeToCopy = srcEnd - srcPtr;
+ memcpy(dctxPtr->tmpIn + dctxPtr->tmpInSize, srcPtr, sizeToCopy);
+ srcPtr += sizeToCopy;
+ dctxPtr->tmpInSize += sizeToCopy;
+ if (dctxPtr->tmpInSize < BHSize) /* not enough input to get full cBlockSize; wait for more */
+ {
+ nextSrcSizeHint = BHSize - dctxPtr->tmpInSize;
+ doAnotherStage = 0;
+ break;
+ }
+ selectedIn = dctxPtr->tmpIn;
+ }
+
+ /* case dstage_decodeCBlockSize: */ /* no more direct access, to prevent scan-build warning */
+ {
+ size_t nextCBlockSize = LZ4F_readLE32(selectedIn) & 0x7FFFFFFFU;
+ if (nextCBlockSize==0) /* frameEnd signal, no more CBlock */
+ {
+ dctxPtr->dStage = dstage_getSuffix;
+ break;
+ }
+ if (nextCBlockSize > dctxPtr->maxBlockSize) return (size_t)-LZ4F_ERROR_GENERIC; /* invalid cBlockSize */
+ dctxPtr->tmpInTarget = nextCBlockSize;
+ if (LZ4F_readLE32(selectedIn) & LZ4F_BLOCKUNCOMPRESSED_FLAG)
+ {
+ dctxPtr->dStage = dstage_copyDirect;
+ break;
+ }
+ dctxPtr->dStage = dstage_getCBlock;
+ if (dstPtr==dstEnd)
+ {
+ nextSrcSizeHint = nextCBlockSize + BHSize;
+ doAnotherStage = 0;
+ }
+ break;
+ }
+
+ case dstage_copyDirect: /* uncompressed block */
+ {
+ size_t sizeToCopy = dctxPtr->tmpInTarget;
+ if ((size_t)(srcEnd-srcPtr) < sizeToCopy) sizeToCopy = srcEnd - srcPtr; /* not enough input to read full block */
+ if ((size_t)(dstEnd-dstPtr) < sizeToCopy) sizeToCopy = dstEnd - dstPtr;
+ memcpy(dstPtr, srcPtr, sizeToCopy);
+ if (dctxPtr->frameInfo.contentChecksumFlag) XXH32_update(&(dctxPtr->xxh), srcPtr, sizeToCopy);
+ if (dctxPtr->frameInfo.contentSize) dctxPtr->frameRemainingSize -= sizeToCopy;
+
+ /* dictionary management */
+ if (dctxPtr->frameInfo.blockMode==LZ4F_blockLinked)
+ LZ4F_updateDict(dctxPtr, dstPtr, sizeToCopy, dstStart, 0);
+
+ srcPtr += sizeToCopy;
+ dstPtr += sizeToCopy;
+ if (sizeToCopy == dctxPtr->tmpInTarget) /* all copied */
+ {
+ dctxPtr->dStage = dstage_getCBlockSize;
+ break;
+ }
+ dctxPtr->tmpInTarget -= sizeToCopy; /* still need to copy more */
+ nextSrcSizeHint = dctxPtr->tmpInTarget + BHSize;
+ doAnotherStage = 0;
+ break;
+ }
+
+ case dstage_getCBlock: /* entry from dstage_decodeCBlockSize */
+ {
+ if ((size_t)(srcEnd-srcPtr) < dctxPtr->tmpInTarget)
+ {
+ dctxPtr->tmpInSize = 0;
+ dctxPtr->dStage = dstage_storeCBlock;
+ break;
+ }
+ selectedIn = srcPtr;
+ srcPtr += dctxPtr->tmpInTarget;
+ dctxPtr->dStage = dstage_decodeCBlock;
+ break;
+ }
+
+ case dstage_storeCBlock:
+ {
+ size_t sizeToCopy = dctxPtr->tmpInTarget - dctxPtr->tmpInSize;
+ if (sizeToCopy > (size_t)(srcEnd-srcPtr)) sizeToCopy = srcEnd-srcPtr;
+ memcpy(dctxPtr->tmpIn + dctxPtr->tmpInSize, srcPtr, sizeToCopy);
+ dctxPtr->tmpInSize += sizeToCopy;
+ srcPtr += sizeToCopy;
+ if (dctxPtr->tmpInSize < dctxPtr->tmpInTarget) /* need more input */
+ {
+ nextSrcSizeHint = (dctxPtr->tmpInTarget - dctxPtr->tmpInSize) + BHSize;
+ doAnotherStage=0;
+ break;
+ }
+ selectedIn = dctxPtr->tmpIn;
+ dctxPtr->dStage = dstage_decodeCBlock;
+ break;
+ }
+
+ case dstage_decodeCBlock:
+ {
+ if ((size_t)(dstEnd-dstPtr) < dctxPtr->maxBlockSize) /* not enough place into dst : decode into tmpOut */
+ dctxPtr->dStage = dstage_decodeCBlock_intoTmp;
+ else
+ dctxPtr->dStage = dstage_decodeCBlock_intoDst;
+ break;
+ }
+
+ case dstage_decodeCBlock_intoDst:
+ {
+ int (*decoder)(const char*, char*, int, int, const char*, int);
+ int decodedSize;
+
+ if (dctxPtr->frameInfo.blockMode == LZ4F_blockLinked)
+ decoder = LZ4_decompress_safe_usingDict;
+ else
+ decoder = LZ4F_decompress_safe;
+
+ decodedSize = decoder((const char*)selectedIn, (char*)dstPtr, (int)dctxPtr->tmpInTarget, (int)dctxPtr->maxBlockSize, (const char*)dctxPtr->dict, (int)dctxPtr->dictSize);
+ if (decodedSize < 0) return (size_t)-LZ4F_ERROR_GENERIC; /* decompression failed */
+ if (dctxPtr->frameInfo.contentChecksumFlag) XXH32_update(&(dctxPtr->xxh), dstPtr, decodedSize);
+ if (dctxPtr->frameInfo.contentSize) dctxPtr->frameRemainingSize -= decodedSize;
+
+ /* dictionary management */
+ if (dctxPtr->frameInfo.blockMode==LZ4F_blockLinked)
+ LZ4F_updateDict(dctxPtr, dstPtr, decodedSize, dstStart, 0);
+
+ dstPtr += decodedSize;
+ dctxPtr->dStage = dstage_getCBlockSize;
+ break;
+ }
+
+ case dstage_decodeCBlock_intoTmp:
+ {
+ /* not enough place into dst : decode into tmpOut */
+ int (*decoder)(const char*, char*, int, int, const char*, int);
+ int decodedSize;
+
+ if (dctxPtr->frameInfo.blockMode == LZ4F_blockLinked)
+ decoder = LZ4_decompress_safe_usingDict;
+ else
+ decoder = LZ4F_decompress_safe;
+
+ /* ensure enough place for tmpOut */
+ if (dctxPtr->frameInfo.blockMode == LZ4F_blockLinked)
+ {
+ if (dctxPtr->dict == dctxPtr->tmpOutBuffer)
+ {
+ if (dctxPtr->dictSize > 128 KB)
+ {
+ memcpy(dctxPtr->tmpOutBuffer, dctxPtr->dict + dctxPtr->dictSize - 64 KB, 64 KB);
+ dctxPtr->dictSize = 64 KB;
+ }
+ dctxPtr->tmpOut = dctxPtr->tmpOutBuffer + dctxPtr->dictSize;
+ }
+ else /* dict not within tmp */
+ {
+ size_t reservedDictSpace = dctxPtr->dictSize;
+ if (reservedDictSpace > 64 KB) reservedDictSpace = 64 KB;
+ dctxPtr->tmpOut = dctxPtr->tmpOutBuffer + reservedDictSpace;
+ }
+ }
+
+ /* Decode */
+ decodedSize = decoder((const char*)selectedIn, (char*)dctxPtr->tmpOut, (int)dctxPtr->tmpInTarget, (int)dctxPtr->maxBlockSize, (const char*)dctxPtr->dict, (int)dctxPtr->dictSize);
+ if (decodedSize < 0) return (size_t)-LZ4F_ERROR_decompressionFailed; /* decompression failed */
+ if (dctxPtr->frameInfo.contentChecksumFlag) XXH32_update(&(dctxPtr->xxh), dctxPtr->tmpOut, decodedSize);
+ if (dctxPtr->frameInfo.contentSize) dctxPtr->frameRemainingSize -= decodedSize;
+ dctxPtr->tmpOutSize = decodedSize;
+ dctxPtr->tmpOutStart = 0;
+ dctxPtr->dStage = dstage_flushOut;
+ break;
+ }
+
+ case dstage_flushOut: /* flush decoded data from tmpOut to dstBuffer */
+ {
+ size_t sizeToCopy = dctxPtr->tmpOutSize - dctxPtr->tmpOutStart;
+ if (sizeToCopy > (size_t)(dstEnd-dstPtr)) sizeToCopy = dstEnd-dstPtr;
+ memcpy(dstPtr, dctxPtr->tmpOut + dctxPtr->tmpOutStart, sizeToCopy);
+
+ /* dictionary management */
+ if (dctxPtr->frameInfo.blockMode==LZ4F_blockLinked)
+ LZ4F_updateDict(dctxPtr, dstPtr, sizeToCopy, dstStart, 1);
+
+ dctxPtr->tmpOutStart += sizeToCopy;
+ dstPtr += sizeToCopy;
+
+ /* end of flush ? */
+ if (dctxPtr->tmpOutStart == dctxPtr->tmpOutSize)
+ {
+ dctxPtr->dStage = dstage_getCBlockSize;
+ break;
+ }
+ nextSrcSizeHint = BHSize;
+ doAnotherStage = 0; /* still some data to flush */
+ break;
+ }
+
+ case dstage_getSuffix:
+ {
+ size_t suffixSize = dctxPtr->frameInfo.contentChecksumFlag * 4;
+ if (dctxPtr->frameRemainingSize) return (size_t)-LZ4F_ERROR_frameSize_wrong; /* incorrect frame size decoded */
+ if (suffixSize == 0) /* frame completed */
+ {
+ nextSrcSizeHint = 0;
+ dctxPtr->dStage = dstage_getHeader;
+ doAnotherStage = 0;
+ break;
+ }
+ if ((srcEnd - srcPtr) < 4) /* not enough size for entire CRC */
+ {
+ dctxPtr->tmpInSize = 0;
+ dctxPtr->dStage = dstage_storeSuffix;
+ }
+ else
+ {
+ selectedIn = srcPtr;
+ srcPtr += 4;
+ }
+ }
+
+ if (dctxPtr->dStage == dstage_storeSuffix)
+ case dstage_storeSuffix:
+ {
+ size_t sizeToCopy = 4 - dctxPtr->tmpInSize;
+ if (sizeToCopy > (size_t)(srcEnd - srcPtr)) sizeToCopy = srcEnd - srcPtr;
+ memcpy(dctxPtr->tmpIn + dctxPtr->tmpInSize, srcPtr, sizeToCopy);
+ srcPtr += sizeToCopy;
+ dctxPtr->tmpInSize += sizeToCopy;
+ if (dctxPtr->tmpInSize < 4) /* not enough input to read complete suffix */
+ {
+ nextSrcSizeHint = 4 - dctxPtr->tmpInSize;
+ doAnotherStage=0;
+ break;
+ }
+ selectedIn = dctxPtr->tmpIn;
+ }
+
+ /* case dstage_checkSuffix: */ /* no direct call, to avoid scan-build warning */
+ {
+ U32 readCRC = LZ4F_readLE32(selectedIn);
+ U32 resultCRC = XXH32_digest(&(dctxPtr->xxh));
+ if (readCRC != resultCRC) return (size_t)-LZ4F_ERROR_contentChecksum_invalid;
+ nextSrcSizeHint = 0;
+ dctxPtr->dStage = dstage_getHeader;
+ doAnotherStage = 0;
+ break;
+ }
+
+ case dstage_getSFrameSize:
+ {
+ if ((srcEnd - srcPtr) >= 4)
+ {
+ selectedIn = srcPtr;
+ srcPtr += 4;
+ }
+ else
+ {
+ /* not enough input to read cBlockSize field */
+ dctxPtr->tmpInSize = 4;
+ dctxPtr->tmpInTarget = 8;
+ dctxPtr->dStage = dstage_storeSFrameSize;
+ }
+ }
+
+ if (dctxPtr->dStage == dstage_storeSFrameSize)
+ case dstage_storeSFrameSize:
+ {
+ size_t sizeToCopy = dctxPtr->tmpInTarget - dctxPtr->tmpInSize;
+ if (sizeToCopy > (size_t)(srcEnd - srcPtr)) sizeToCopy = srcEnd - srcPtr;
+ memcpy(dctxPtr->header + dctxPtr->tmpInSize, srcPtr, sizeToCopy);
+ srcPtr += sizeToCopy;
+ dctxPtr->tmpInSize += sizeToCopy;
+ if (dctxPtr->tmpInSize < dctxPtr->tmpInTarget) /* not enough input to get full sBlockSize; wait for more */
+ {
+ nextSrcSizeHint = dctxPtr->tmpInTarget - dctxPtr->tmpInSize;
+ doAnotherStage = 0;
+ break;
+ }
+ selectedIn = dctxPtr->header + 4;
+ }
+
+ /* case dstage_decodeSFrameSize: */ /* no direct access */
+ {
+ size_t SFrameSize = LZ4F_readLE32(selectedIn);
+ dctxPtr->frameInfo.contentSize = SFrameSize;
+ dctxPtr->tmpInTarget = SFrameSize;
+ dctxPtr->dStage = dstage_skipSkippable;
+ break;
+ }
+
+ case dstage_skipSkippable:
+ {
+ size_t skipSize = dctxPtr->tmpInTarget;
+ if (skipSize > (size_t)(srcEnd-srcPtr)) skipSize = srcEnd-srcPtr;
+ srcPtr += skipSize;
+ dctxPtr->tmpInTarget -= skipSize;
+ doAnotherStage = 0;
+ nextSrcSizeHint = dctxPtr->tmpInTarget;
+ if (nextSrcSizeHint) break;
+ dctxPtr->dStage = dstage_getHeader;
+ break;
+ }
+ }
+ }
+
+ /* preserve dictionary within tmp if necessary */
+ if ( (dctxPtr->frameInfo.blockMode==LZ4F_blockLinked)
+ &&(dctxPtr->dict != dctxPtr->tmpOutBuffer)
+ &&(!decompressOptionsPtr->stableDst)
+ &&((unsigned)(dctxPtr->dStage-1) < (unsigned)(dstage_getSuffix-1))
+ )
+ {
+ if (dctxPtr->dStage == dstage_flushOut)
+ {
+ size_t preserveSize = dctxPtr->tmpOut - dctxPtr->tmpOutBuffer;
+ size_t copySize = 64 KB - dctxPtr->tmpOutSize;
+ const BYTE* oldDictEnd = dctxPtr->dict + dctxPtr->dictSize - dctxPtr->tmpOutStart;
+ if (dctxPtr->tmpOutSize > 64 KB) copySize = 0;
+ if (copySize > preserveSize) copySize = preserveSize;
+
+ memcpy(dctxPtr->tmpOutBuffer + preserveSize - copySize, oldDictEnd - copySize, copySize);
+
+ dctxPtr->dict = dctxPtr->tmpOutBuffer;
+ dctxPtr->dictSize = preserveSize + dctxPtr->tmpOutStart;
+ }
+ else
+ {
+ size_t newDictSize = dctxPtr->dictSize;
+ const BYTE* oldDictEnd = dctxPtr->dict + dctxPtr->dictSize;
+ if ((newDictSize) > 64 KB) newDictSize = 64 KB;
+
+ memcpy(dctxPtr->tmpOutBuffer, oldDictEnd - newDictSize, newDictSize);
+
+ dctxPtr->dict = dctxPtr->tmpOutBuffer;
+ dctxPtr->dictSize = newDictSize;
+ dctxPtr->tmpOut = dctxPtr->tmpOutBuffer + newDictSize;
+ }
+ }
+
+ /* require function to be called again from position where it stopped */
+ if (srcPtrsrcExpect = srcPtr;
+ else
+ dctxPtr->srcExpect = NULL;
+
+ *srcSizePtr = (srcPtr - srcStart);
+ *dstSizePtr = (dstPtr - dstStart);
+ return nextSrcSizeHint;
+}
diff -Nru paraview-5.0.0+dfsg1/ThirdParty/lz4/vtklz4/lib/lz4frame.h paraview-5.0.1+dfsg1/ThirdParty/lz4/vtklz4/lib/lz4frame.h
--- paraview-5.0.0+dfsg1/ThirdParty/lz4/vtklz4/lib/lz4frame.h 1970-01-01 00:00:00.000000000 +0000
+++ paraview-5.0.1+dfsg1/ThirdParty/lz4/vtklz4/lib/lz4frame.h 2016-03-28 15:06:22.000000000 +0000
@@ -0,0 +1,307 @@
+/*
+ LZ4 auto-framing library
+ Header File
+ Copyright (C) 2011-2015, Yann Collet.
+ BSD 2-Clause License (http://www.opensource.org/licenses/bsd-license.php)
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are
+ met:
+
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above
+ copyright notice, this list of conditions and the following disclaimer
+ in the documentation and/or other materials provided with the
+ distribution.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+ You can contact the author at :
+ - LZ4 source repository : https://github.com/Cyan4973/lz4
+ - LZ4 public forum : https://groups.google.com/forum/#!forum/lz4c
+*/
+
+/* LZ4F is a stand-alone API to create LZ4-compressed frames
+ * fully conformant to specification v1.5.1.
+ * All related operations, including memory management, are handled by the library.
+ * You don't need lz4.h when using lz4frame.h.
+ * */
+
+#pragma once
+
+/* XXX(kitware): adding headers */
+#include "vtklz4_mangle.h"
+#include "vtklz4Exports.h"
+
+#if defined (__cplusplus)
+extern "C" {
+#endif
+
+/**************************************
+* Includes
+**************************************/
+#include /* size_t */
+
+
+/**************************************
+ * Error management
+ * ************************************/
+typedef size_t LZ4F_errorCode_t;
+
+unsigned LZ4F_isError(LZ4F_errorCode_t code);
+const char* LZ4F_getErrorName(LZ4F_errorCode_t code); /* return error code string; useful for debugging */
+
+
+/**************************************
+ * Frame compression types
+ * ************************************/
+//#define LZ4F_DISABLE_OBSOLETE_ENUMS
+#ifndef LZ4F_DISABLE_OBSOLETE_ENUMS
+# define LZ4F_OBSOLETE_ENUM(x) ,x
+#else
+# define LZ4F_OBSOLETE_ENUM(x)
+#endif
+
+typedef enum {
+ LZ4F_default=0,
+ LZ4F_max64KB=4,
+ LZ4F_max256KB=5,
+ LZ4F_max1MB=6,
+ LZ4F_max4MB=7
+ LZ4F_OBSOLETE_ENUM(max64KB = LZ4F_max64KB)
+ LZ4F_OBSOLETE_ENUM(max256KB = LZ4F_max256KB)
+ LZ4F_OBSOLETE_ENUM(max1MB = LZ4F_max1MB)
+ LZ4F_OBSOLETE_ENUM(max4MB = LZ4F_max4MB)
+} LZ4F_blockSizeID_t;
+
+typedef enum {
+ LZ4F_blockLinked=0,
+ LZ4F_blockIndependent
+ LZ4F_OBSOLETE_ENUM(blockLinked = LZ4F_blockLinked)
+ LZ4F_OBSOLETE_ENUM(blockIndependent = LZ4F_blockIndependent)
+} LZ4F_blockMode_t;
+
+typedef enum {
+ LZ4F_noContentChecksum=0,
+ LZ4F_contentChecksumEnabled
+ LZ4F_OBSOLETE_ENUM(noContentChecksum = LZ4F_noContentChecksum)
+ LZ4F_OBSOLETE_ENUM(contentChecksumEnabled = LZ4F_contentChecksumEnabled)
+} LZ4F_contentChecksum_t;
+
+typedef enum {
+ LZ4F_frame=0,
+ LZ4F_skippableFrame
+ LZ4F_OBSOLETE_ENUM(skippableFrame = LZ4F_skippableFrame)
+} LZ4F_frameType_t;
+
+#ifndef LZ4F_DISABLE_OBSOLETE_ENUMS
+typedef LZ4F_blockSizeID_t blockSizeID_t;
+typedef LZ4F_blockMode_t blockMode_t;
+typedef LZ4F_frameType_t frameType_t;
+typedef LZ4F_contentChecksum_t contentChecksum_t;
+#endif
+
+typedef struct {
+ LZ4F_blockSizeID_t blockSizeID; /* max64KB, max256KB, max1MB, max4MB ; 0 == default */
+ LZ4F_blockMode_t blockMode; /* blockLinked, blockIndependent ; 0 == default */
+ LZ4F_contentChecksum_t contentChecksumFlag; /* noContentChecksum, contentChecksumEnabled ; 0 == default */
+ LZ4F_frameType_t frameType; /* LZ4F_frame, skippableFrame ; 0 == default */
+ unsigned long long contentSize; /* Size of uncompressed (original) content ; 0 == unknown */
+ unsigned reserved[2]; /* must be zero for forward compatibility */
+} LZ4F_frameInfo_t;
+
+typedef struct {
+ LZ4F_frameInfo_t frameInfo;
+ int compressionLevel; /* 0 == default (fast mode); values above 16 count as 16; values below 0 count as 0 */
+ unsigned autoFlush; /* 1 == always flush (reduce need for tmp buffer) */
+ unsigned reserved[4]; /* must be zero for forward compatibility */
+} LZ4F_preferences_t;
+
+
+/***********************************
+ * Simple compression function
+ * *********************************/
+size_t LZ4F_compressFrameBound(size_t srcSize, const LZ4F_preferences_t* preferencesPtr);
+
+size_t LZ4F_compressFrame(void* dstBuffer, size_t dstMaxSize, const void* srcBuffer, size_t srcSize, const LZ4F_preferences_t* preferencesPtr);
+/* LZ4F_compressFrame()
+ * Compress an entire srcBuffer into a valid LZ4 frame, as defined by specification v1.5.1
+ * The most important rule is that dstBuffer MUST be large enough (dstMaxSize) to ensure compression completion even in worst case.
+ * You can get the minimum value of dstMaxSize by using LZ4F_compressFrameBound()
+ * If this condition is not respected, LZ4F_compressFrame() will fail (result is an errorCode)
+ * The LZ4F_preferences_t structure is optional : you can provide NULL as argument. All preferences will be set to default.
+ * The result of the function is the number of bytes written into dstBuffer.
+ * The function outputs an error code if it fails (can be tested using LZ4F_isError())
+ */
+
+
+
+/**********************************
+* Advanced compression functions
+**********************************/
+typedef struct LZ4F_cctx_s* LZ4F_compressionContext_t; /* must be aligned on 8-bytes */
+
+typedef struct {
+ unsigned stableSrc; /* 1 == src content will remain available on future calls to LZ4F_compress(); avoid saving src content within tmp buffer as future dictionary */
+ unsigned reserved[3];
+} LZ4F_compressOptions_t;
+
+/* Resource Management */
+
+#define LZ4F_VERSION 100
+LZ4F_errorCode_t LZ4F_createCompressionContext(LZ4F_compressionContext_t* cctxPtr, unsigned version);
+LZ4F_errorCode_t LZ4F_freeCompressionContext(LZ4F_compressionContext_t cctx);
+/* LZ4F_createCompressionContext() :
+ * The first thing to do is to create a compressionContext object, which will be used in all compression operations.
+ * This is achieved using LZ4F_createCompressionContext(), which takes as argument a version and an LZ4F_preferences_t structure.
+ * The version provided MUST be LZ4F_VERSION. It is intended to track potential version differences between different binaries.
+ * The function will provide a pointer to a fully allocated LZ4F_compressionContext_t object.
+ * If the result LZ4F_errorCode_t is not zero, there was an error during context creation.
+ * Object can release its memory using LZ4F_freeCompressionContext();
+ */
+
+
+/* Compression */
+
+size_t LZ4F_compressBegin(LZ4F_compressionContext_t cctx, void* dstBuffer, size_t dstMaxSize, const LZ4F_preferences_t* prefsPtr);
+/* LZ4F_compressBegin() :
+ * will write the frame header into dstBuffer.
+ * dstBuffer must be large enough to accommodate a header (dstMaxSize). Maximum header size is 15 bytes.
+ * The LZ4F_preferences_t structure is optional : you can provide NULL as argument, all preferences will then be set to default.
+ * The result of the function is the number of bytes written into dstBuffer for the header
+ * or an error code (can be tested using LZ4F_isError())
+ */
+
+size_t LZ4F_compressBound(size_t srcSize, const LZ4F_preferences_t* prefsPtr);
+/* LZ4F_compressBound() :
+ * Provides the minimum size of Dst buffer given srcSize to handle worst case situations.
+ * Different preferences can produce different results.
+ * prefsPtr is optional : you can provide NULL as argument, all preferences will then be set to cover worst case.
+ * This function includes frame termination cost (4 bytes, or 8 if frame checksum is enabled)
+ */
+
+size_t LZ4F_compressUpdate(LZ4F_compressionContext_t cctx, void* dstBuffer, size_t dstMaxSize, const void* srcBuffer, size_t srcSize, const LZ4F_compressOptions_t* cOptPtr);
+/* LZ4F_compressUpdate()
+ * LZ4F_compressUpdate() can be called repetitively to compress as much data as necessary.
+ * The most important rule is that dstBuffer MUST be large enough (dstMaxSize) to ensure compression completion even in worst case.
+ * You can get the minimum value of dstMaxSize by using LZ4F_compressBound().
+ * If this condition is not respected, LZ4F_compress() will fail (result is an errorCode).
+ * LZ4F_compressUpdate() doesn't guarantee error recovery, so you have to reset compression context when an error occurs.
+ * The LZ4F_compressOptions_t structure is optional : you can provide NULL as argument.
+ * The result of the function is the number of bytes written into dstBuffer : it can be zero, meaning input data was just buffered.
+ * The function outputs an error code if it fails (can be tested using LZ4F_isError())
+ */
+
+size_t LZ4F_flush(LZ4F_compressionContext_t cctx, void* dstBuffer, size_t dstMaxSize, const LZ4F_compressOptions_t* cOptPtr);
+/* LZ4F_flush()
+ * Should you need to generate compressed data immediately, without waiting for the current block to be filled,
+ * you can call LZ4_flush(), which will immediately compress any remaining data buffered within cctx.
+ * Note that dstMaxSize must be large enough to ensure the operation will be successful.
+ * LZ4F_compressOptions_t structure is optional : you can provide NULL as argument.
+ * The result of the function is the number of bytes written into dstBuffer
+ * (it can be zero, this means there was no data left within cctx)
+ * The function outputs an error code if it fails (can be tested using LZ4F_isError())
+ */
+
+size_t LZ4F_compressEnd(LZ4F_compressionContext_t cctx, void* dstBuffer, size_t dstMaxSize, const LZ4F_compressOptions_t* cOptPtr);
+/* LZ4F_compressEnd()
+ * When you want to properly finish the compressed frame, just call LZ4F_compressEnd().
+ * It will flush whatever data remained within compressionContext (like LZ4_flush())
+ * but also properly finalize the frame, with an endMark and a checksum.
+ * The result of the function is the number of bytes written into dstBuffer (necessarily >= 4 (endMark), or 8 if optional frame checksum is enabled)
+ * The function outputs an error code if it fails (can be tested using LZ4F_isError())
+ * The LZ4F_compressOptions_t structure is optional : you can provide NULL as argument.
+ * A successful call to LZ4F_compressEnd() makes cctx available again for next compression task.
+ */
+
+
+/***********************************
+* Decompression functions
+***********************************/
+
+typedef struct LZ4F_dctx_s* LZ4F_decompressionContext_t; /* must be aligned on 8-bytes */
+
+typedef struct {
+ unsigned stableDst; /* guarantee that decompressed data will still be there on next function calls (avoid storage into tmp buffers) */
+ unsigned reserved[3];
+} LZ4F_decompressOptions_t;
+
+
+/* Resource management */
+
+LZ4F_errorCode_t LZ4F_createDecompressionContext(LZ4F_decompressionContext_t* dctxPtr, unsigned version);
+LZ4F_errorCode_t LZ4F_freeDecompressionContext(LZ4F_decompressionContext_t dctx);
+/* LZ4F_createDecompressionContext() :
+ * The first thing to do is to create an LZ4F_decompressionContext_t object, which will be used in all decompression operations.
+ * This is achieved using LZ4F_createDecompressionContext().
+ * The version provided MUST be LZ4F_VERSION. It is intended to track potential breaking differences between different versions.
+ * The function will provide a pointer to a fully allocated and initialized LZ4F_decompressionContext_t object.
+ * The result is an errorCode, which can be tested using LZ4F_isError().
+ * dctx memory can be released using LZ4F_freeDecompressionContext();
+ * The result of LZ4F_freeDecompressionContext() is indicative of the current state of decompressionContext when being released.
+ * That is, it should be == 0 if decompression has been completed fully and correctly.
+ */
+
+
+/* Decompression */
+
+size_t LZ4F_getFrameInfo(LZ4F_decompressionContext_t dctx,
+ LZ4F_frameInfo_t* frameInfoPtr,
+ const void* srcBuffer, size_t* srcSizePtr);
+/* LZ4F_getFrameInfo()
+ * This function decodes frame header information (such as max blockSize, frame checksum, etc.).
+ * Its usage is optional : you can start by calling directly LZ4F_decompress() instead.
+ * The objective is to extract frame header information, typically for allocation purposes.
+ * LZ4F_getFrameInfo() can also be used anytime *after* starting decompression, on any valid LZ4F_decompressionContext_t.
+ * The result is *copied* into an existing LZ4F_frameInfo_t structure which must be already allocated.
+ * The number of bytes read from srcBuffer will be provided within *srcSizePtr (necessarily <= original value).
+ * The function result is an hint of how many srcSize bytes LZ4F_decompress() expects for next call,
+ * or an error code which can be tested using LZ4F_isError()
+ * (typically, when there is not enough src bytes to fully decode the frame header)
+ * You are expected to resume decompression from where it stopped (srcBuffer + *srcSizePtr)
+ */
+
+size_t LZ4F_decompress(LZ4F_decompressionContext_t dctx,
+ void* dstBuffer, size_t* dstSizePtr,
+ const void* srcBuffer, size_t* srcSizePtr,
+ const LZ4F_decompressOptions_t* dOptPtr);
+/* LZ4F_decompress()
+ * Call this function repetitively to regenerate data compressed within srcBuffer.
+ * The function will attempt to decode *srcSizePtr bytes from srcBuffer, into dstBuffer of maximum size *dstSizePtr.
+ *
+ * The number of bytes regenerated into dstBuffer will be provided within *dstSizePtr (necessarily <= original value).
+ *
+ * The number of bytes read from srcBuffer will be provided within *srcSizePtr (necessarily <= original value).
+ * If number of bytes read is < number of bytes provided, then decompression operation is not completed.
+ * It typically happens when dstBuffer is not large enough to contain all decoded data.
+ * LZ4F_decompress() must be called again, starting from where it stopped (srcBuffer + *srcSizePtr)
+ * The function will check this condition, and refuse to continue if it is not respected.
+ *
+ * dstBuffer is supposed to be flushed between each call to the function, since its content will be overwritten.
+ * dst arguments can be changed at will with each consecutive call to the function.
+ *
+ * The function result is an hint of how many srcSize bytes LZ4F_decompress() expects for next call.
+ * Schematically, it's the size of the current (or remaining) compressed block + header of next block.
+ * Respecting the hint provides some boost to performance, since it does skip intermediate buffers.
+ * This is just a hint, you can always provide any srcSize you want.
+ * When a frame is fully decoded, the function result will be 0 (no more data expected).
+ * If decompression failed, function result is an error code, which can be tested using LZ4F_isError().
+ *
+ * After a frame is fully decoded, dctx can be used again to decompress another frame.
+ */
+
+
+#if defined (__cplusplus)
+}
+#endif
diff -Nru paraview-5.0.0+dfsg1/ThirdParty/lz4/vtklz4/lib/lz4frame_static.h paraview-5.0.1+dfsg1/ThirdParty/lz4/vtklz4/lib/lz4frame_static.h
--- paraview-5.0.0+dfsg1/ThirdParty/lz4/vtklz4/lib/lz4frame_static.h 1970-01-01 00:00:00.000000000 +0000
+++ paraview-5.0.1+dfsg1/ThirdParty/lz4/vtklz4/lib/lz4frame_static.h 2016-03-28 15:06:22.000000000 +0000
@@ -0,0 +1,81 @@
+/*
+ LZ4 auto-framing library
+ Header File for static linking only
+ Copyright (C) 2011-2015, Yann Collet.
+
+ BSD 2-Clause License (http://www.opensource.org/licenses/bsd-license.php)
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are
+ met:
+
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above
+ copyright notice, this list of conditions and the following disclaimer
+ in the documentation and/or other materials provided with the
+ distribution.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+ You can contact the author at :
+ - LZ4 source repository : https://github.com/Cyan4973/lz4
+ - LZ4 public forum : https://groups.google.com/forum/#!forum/lz4c
+*/
+
+#pragma once
+
+#if defined (__cplusplus)
+extern "C" {
+#endif
+
+/* lz4frame_static.h should be used solely in the context of static linking.
+ * It contains definitions which may still change overtime.
+ * Never use it in the context of DLL linking.
+ * */
+
+
+/**************************************
+* Includes
+**************************************/
+#include "lz4frame.h"
+
+
+/**************************************
+ * Error management
+ * ************************************/
+#define LZ4F_LIST_ERRORS(ITEM) \
+ ITEM(OK_NoError) ITEM(ERROR_GENERIC) \
+ ITEM(ERROR_maxBlockSize_invalid) ITEM(ERROR_blockMode_invalid) ITEM(ERROR_contentChecksumFlag_invalid) \
+ ITEM(ERROR_compressionLevel_invalid) \
+ ITEM(ERROR_headerVersion_wrong) ITEM(ERROR_blockChecksum_unsupported) ITEM(ERROR_reservedFlag_set) \
+ ITEM(ERROR_allocation_failed) \
+ ITEM(ERROR_srcSize_tooLarge) ITEM(ERROR_dstMaxSize_tooSmall) \
+ ITEM(ERROR_frameHeader_incomplete) ITEM(ERROR_frameType_unknown) ITEM(ERROR_frameSize_wrong) \
+ ITEM(ERROR_srcPtr_wrong) \
+ ITEM(ERROR_decompressionFailed) \
+ ITEM(ERROR_headerChecksum_invalid) ITEM(ERROR_contentChecksum_invalid) \
+ ITEM(ERROR_maxCode)
+
+//#define LZ4F_DISABLE_OLD_ENUMS
+#ifndef LZ4F_DISABLE_OLD_ENUMS
+#define LZ4F_GENERATE_ENUM(ENUM) LZ4F_##ENUM, ENUM = LZ4F_##ENUM,
+#else
+#define LZ4F_GENERATE_ENUM(ENUM) LZ4F_##ENUM,
+#endif
+typedef enum { LZ4F_LIST_ERRORS(LZ4F_GENERATE_ENUM) } LZ4F_errorCodes; /* enum is exposed, to handle specific errors; compare function result to -enum value */
+
+
+#if defined (__cplusplus)
+}
+#endif
diff -Nru paraview-5.0.0+dfsg1/ThirdParty/lz4/vtklz4/lib/lz4.h paraview-5.0.1+dfsg1/ThirdParty/lz4/vtklz4/lib/lz4.h
--- paraview-5.0.0+dfsg1/ThirdParty/lz4/vtklz4/lib/lz4.h 1970-01-01 00:00:00.000000000 +0000
+++ paraview-5.0.1+dfsg1/ThirdParty/lz4/vtklz4/lib/lz4.h 2016-03-28 15:06:22.000000000 +0000
@@ -0,0 +1,372 @@
+/*
+ LZ4 - Fast LZ compression algorithm
+ Header File
+ Copyright (C) 2011-2015, Yann Collet.
+
+ BSD 2-Clause License (http://www.opensource.org/licenses/bsd-license.php)
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are
+ met:
+
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above
+ copyright notice, this list of conditions and the following disclaimer
+ in the documentation and/or other materials provided with the
+ distribution.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+ You can contact the author at :
+ - LZ4 source repository : https://github.com/Cyan4973/lz4
+ - LZ4 public forum : https://groups.google.com/forum/#!forum/lz4c
+*/
+#pragma once
+
+/* XXX(kitware): adding headers */
+#include "vtklz4_mangle.h"
+#include "vtklz4Exports.h"
+
+#if defined (__cplusplus)
+extern "C" {
+#endif
+
+/*
+ * lz4.h provides block compression functions, and gives full buffer control to programmer.
+ * If you need to generate inter-operable compressed data (respecting LZ4 frame specification),
+ * and can let the library handle its own memory, please use lz4frame.h instead.
+*/
+
+/**************************************
+* Version
+**************************************/
+#define LZ4_VERSION_MAJOR 1 /* for breaking interface changes */
+#define LZ4_VERSION_MINOR 7 /* for new (non-breaking) interface capabilities */
+#define LZ4_VERSION_RELEASE 1 /* for tweaks, bug-fixes, or development */
+#define LZ4_VERSION_NUMBER (LZ4_VERSION_MAJOR *100*100 + LZ4_VERSION_MINOR *100 + LZ4_VERSION_RELEASE)
+/* XXX(kitware): fix exports*/
+int VTKLZ4_EXPORT LZ4_versionNumber (void);
+
+/**************************************
+* Tuning parameter
+**************************************/
+/*
+ * LZ4_MEMORY_USAGE :
+ * Memory usage formula : N->2^N Bytes (examples : 10 -> 1KB; 12 -> 4KB ; 16 -> 64KB; 20 -> 1MB; etc.)
+ * Increasing memory usage improves compression ratio
+ * Reduced memory usage can improve speed, due to cache effect
+ * Default value is 14, for 16KB, which nicely fits into Intel x86 L1 cache
+ */
+#define LZ4_MEMORY_USAGE 14
+
+
+/**************************************
+* Simple Functions
+**************************************/
+
+/* XXX(kitware): fix exports*/
+int VTKLZ4_EXPORT LZ4_compress_default(const char* source, char* dest, int sourceSize, int maxDestSize);
+int VTKLZ4_EXPORT LZ4_decompress_safe (const char* source, char* dest, int compressedSize, int maxDecompressedSize);
+
+/*
+LZ4_compress_default() :
+ Compresses 'sourceSize' bytes from buffer 'source'
+ into already allocated 'dest' buffer of size 'maxDestSize'.
+ Compression is guaranteed to succeed if 'maxDestSize' >= LZ4_compressBound(sourceSize).
+ It also runs faster, so it's a recommended setting.
+ If the function cannot compress 'source' into a more limited 'dest' budget,
+ compression stops *immediately*, and the function result is zero.
+ As a consequence, 'dest' content is not valid.
+ This function never writes outside 'dest' buffer, nor read outside 'source' buffer.
+ sourceSize : Max supported value is LZ4_MAX_INPUT_VALUE
+ maxDestSize : full or partial size of buffer 'dest' (which must be already allocated)
+ return : the number of bytes written into buffer 'dest' (necessarily <= maxOutputSize)
+ or 0 if compression fails
+
+LZ4_decompress_safe() :
+ compressedSize : is the precise full size of the compressed block.
+ maxDecompressedSize : is the size of destination buffer, which must be already allocated.
+ return : the number of bytes decompressed into destination buffer (necessarily <= maxDecompressedSize)
+ If destination buffer is not large enough, decoding will stop and output an error code (<0).
+ If the source stream is detected malformed, the function will stop decoding and return a negative result.
+ This function is protected against buffer overflow exploits, including malicious data packets.
+ It never writes outside output buffer, nor reads outside input buffer.
+*/
+
+
+/**************************************
+* Advanced Functions
+**************************************/
+#define LZ4_MAX_INPUT_SIZE 0x7E000000 /* 2 113 929 216 bytes */
+#define LZ4_COMPRESSBOUND(isize) ((unsigned)(isize) > (unsigned)LZ4_MAX_INPUT_SIZE ? 0 : (isize) + ((isize)/255) + 16)
+
+/*
+LZ4_compressBound() :
+ Provides the maximum size that LZ4 compression may output in a "worst case" scenario (input data not compressible)
+ This function is primarily useful for memory allocation purposes (destination buffer size).
+ Macro LZ4_COMPRESSBOUND() is also provided for compilation-time evaluation (stack memory allocation for example).
+ Note that LZ4_compress_default() compress faster when dest buffer size is >= LZ4_compressBound(srcSize)
+ inputSize : max supported value is LZ4_MAX_INPUT_SIZE
+ return : maximum output size in a "worst case" scenario
+ or 0, if input size is too large ( > LZ4_MAX_INPUT_SIZE)
+*/
+/* XXX(kitware): fix exports*/
+int VTKLZ4_EXPORT LZ4_compressBound(int inputSize);
+
+/*
+LZ4_compress_fast() :
+ Same as LZ4_compress_default(), but allows to select an "acceleration" factor.
+ The larger the acceleration value, the faster the algorithm, but also the lesser the compression.
+ It's a trade-off. It can be fine tuned, with each successive value providing roughly +~3% to speed.
+ An acceleration value of "1" is the same as regular LZ4_compress_default()
+ Values <= 0 will be replaced by ACCELERATION_DEFAULT (see lz4.c), which is 1.
+*/
+/* XXX(kitware): fix exports*/
+int VTKLZ4_EXPORT LZ4_compress_fast (const char* source, char* dest, int sourceSize, int maxDestSize, int acceleration);
+
+
+/*
+LZ4_compress_fast_extState() :
+ Same compression function, just using an externally allocated memory space to store compression state.
+ Use LZ4_sizeofState() to know how much memory must be allocated,
+ and allocate it on 8-bytes boundaries (using malloc() typically).
+ Then, provide it as 'void* state' to compression function.
+*/
+/* XXX(kitware): fix exports*/
+int VTKLZ4_EXPORT LZ4_sizeofState(void);
+int VTKLZ4_EXPORT LZ4_compress_fast_extState (void* state, const char* source, char* dest, int inputSize, int maxDestSize, int acceleration);
+
+
+/*
+LZ4_compress_destSize() :
+ Reverse the logic, by compressing as much data as possible from 'source' buffer
+ into already allocated buffer 'dest' of size 'targetDestSize'.
+ This function either compresses the entire 'source' content into 'dest' if it's large enough,
+ or fill 'dest' buffer completely with as much data as possible from 'source'.
+ *sourceSizePtr : will be modified to indicate how many bytes where read from 'source' to fill 'dest'.
+ New value is necessarily <= old value.
+ return : Nb bytes written into 'dest' (necessarily <= targetDestSize)
+ or 0 if compression fails
+*/
+/* XXX(kitware): fix exports*/
+int VTKLZ4_EXPORT LZ4_compress_destSize (const char* source, char* dest, int* sourceSizePtr, int targetDestSize);
+
+
+/*
+LZ4_decompress_fast() :
+ originalSize : is the original and therefore uncompressed size
+ return : the number of bytes read from the source buffer (in other words, the compressed size)
+ If the source stream is detected malformed, the function will stop decoding and return a negative result.
+ Destination buffer must be already allocated. Its size must be a minimum of 'originalSize' bytes.
+ note : This function fully respect memory boundaries for properly formed compressed data.
+ It is a bit faster than LZ4_decompress_safe().
+ However, it does not provide any protection against intentionally modified data stream (malicious input).
+ Use this function in trusted environment only (data to decode comes from a trusted source).
+*/
+/* XXX(kitware): fix exports*/
+int VTKLZ4_EXPORT LZ4_decompress_fast (const char* source, char* dest, int originalSize);
+
+/*
+LZ4_decompress_safe_partial() :
+ This function decompress a compressed block of size 'compressedSize' at position 'source'
+ into destination buffer 'dest' of size 'maxDecompressedSize'.
+ The function tries to stop decompressing operation as soon as 'targetOutputSize' has been reached,
+ reducing decompression time.
+ return : the number of bytes decoded in the destination buffer (necessarily <= maxDecompressedSize)
+ Note : this number can be < 'targetOutputSize' should the compressed block to decode be smaller.
+ Always control how many bytes were decoded.
+ If the source stream is detected malformed, the function will stop decoding and return a negative result.
+ This function never writes outside of output buffer, and never reads outside of input buffer. It is therefore protected against malicious data packets
+*/
+/* XXX(kitware): fix exports*/
+int VTKLZ4_EXPORT LZ4_decompress_safe_partial (const char* source, char* dest, int compressedSize, int targetOutputSize, int maxDecompressedSize);
+
+
+/***********************************************
+* Streaming Compression Functions
+***********************************************/
+#define LZ4_STREAMSIZE_U64 ((1 << (LZ4_MEMORY_USAGE-3)) + 4)
+#define LZ4_STREAMSIZE (LZ4_STREAMSIZE_U64 * sizeof(long long))
+/*
+ * LZ4_stream_t
+ * information structure to track an LZ4 stream.
+ * important : init this structure content before first use !
+ * note : only allocated directly the structure if you are statically linking LZ4
+ * If you are using liblz4 as a DLL, please use below construction methods instead.
+ */
+typedef struct { long long table[LZ4_STREAMSIZE_U64]; } LZ4_stream_t;
+
+/*
+ * LZ4_resetStream
+ * Use this function to init an allocated LZ4_stream_t structure
+ */
+void LZ4_resetStream (LZ4_stream_t* streamPtr);
+
+/*
+ * LZ4_createStream will allocate and initialize an LZ4_stream_t structure
+ * LZ4_freeStream releases its memory.
+ * In the context of a DLL (liblz4), please use these methods rather than the static struct.
+ * They are more future proof, in case of a change of LZ4_stream_t size.
+ */
+LZ4_stream_t* LZ4_createStream(void);
+int LZ4_freeStream (LZ4_stream_t* streamPtr);
+
+/*
+ * LZ4_loadDict
+ * Use this function to load a static dictionary into LZ4_stream.
+ * Any previous data will be forgotten, only 'dictionary' will remain in memory.
+ * Loading a size of 0 is allowed.
+ * Return : dictionary size, in bytes (necessarily <= 64 KB)
+ */
+int LZ4_loadDict (LZ4_stream_t* streamPtr, const char* dictionary, int dictSize);
+
+/*
+ * LZ4_compress_fast_continue
+ * Compress buffer content 'src', using data from previously compressed blocks as dictionary to improve compression ratio.
+ * Important : Previous data blocks are assumed to still be present and unmodified !
+ * 'dst' buffer must be already allocated.
+ * If maxDstSize >= LZ4_compressBound(srcSize), compression is guaranteed to succeed, and runs faster.
+ * If not, and if compressed data cannot fit into 'dst' buffer size, compression stops, and function returns a zero.
+ */
+int LZ4_compress_fast_continue (LZ4_stream_t* streamPtr, const char* src, char* dst, int srcSize, int maxDstSize, int acceleration);
+
+/*
+ * LZ4_saveDict
+ * If previously compressed data block is not guaranteed to remain available at its memory location
+ * save it into a safer place (char* safeBuffer)
+ * Note : you don't need to call LZ4_loadDict() afterwards,
+ * dictionary is immediately usable, you can therefore call LZ4_compress_fast_continue()
+ * Return : saved dictionary size in bytes (necessarily <= dictSize), or 0 if error
+ */
+int LZ4_saveDict (LZ4_stream_t* streamPtr, char* safeBuffer, int dictSize);
+
+
+/************************************************
+* Streaming Decompression Functions
+************************************************/
+
+#define LZ4_STREAMDECODESIZE_U64 4
+#define LZ4_STREAMDECODESIZE (LZ4_STREAMDECODESIZE_U64 * sizeof(unsigned long long))
+typedef struct { unsigned long long table[LZ4_STREAMDECODESIZE_U64]; } LZ4_streamDecode_t;
+/*
+ * LZ4_streamDecode_t
+ * information structure to track an LZ4 stream.
+ * init this structure content using LZ4_setStreamDecode or memset() before first use !
+ *
+ * In the context of a DLL (liblz4) please prefer usage of construction methods below.
+ * They are more future proof, in case of a change of LZ4_streamDecode_t size in the future.
+ * LZ4_createStreamDecode will allocate and initialize an LZ4_streamDecode_t structure
+ * LZ4_freeStreamDecode releases its memory.
+ */
+LZ4_streamDecode_t* LZ4_createStreamDecode(void);
+int LZ4_freeStreamDecode (LZ4_streamDecode_t* LZ4_stream);
+
+/*
+ * LZ4_setStreamDecode
+ * Use this function to instruct where to find the dictionary.
+ * Setting a size of 0 is allowed (same effect as reset).
+ * Return : 1 if OK, 0 if error
+ */
+int LZ4_setStreamDecode (LZ4_streamDecode_t* LZ4_streamDecode, const char* dictionary, int dictSize);
+
+/*
+*_continue() :
+ These decoding functions allow decompression of multiple blocks in "streaming" mode.
+ Previously decoded blocks *must* remain available at the memory position where they were decoded (up to 64 KB)
+ In the case of a ring buffers, decoding buffer must be either :
+ - Exactly same size as encoding buffer, with same update rule (block boundaries at same positions)
+ In which case, the decoding & encoding ring buffer can have any size, including very small ones ( < 64 KB).
+ - Larger than encoding buffer, by a minimum of maxBlockSize more bytes.
+ maxBlockSize is implementation dependent. It's the maximum size you intend to compress into a single block.
+ In which case, encoding and decoding buffers do not need to be synchronized,
+ and encoding ring buffer can have any size, including small ones ( < 64 KB).
+ - _At least_ 64 KB + 8 bytes + maxBlockSize.
+ In which case, encoding and decoding buffers do not need to be synchronized,
+ and encoding ring buffer can have any size, including larger than decoding buffer.
+ Whenever these conditions are not possible, save the last 64KB of decoded data into a safe buffer,
+ and indicate where it is saved using LZ4_setStreamDecode()
+*/
+int LZ4_decompress_safe_continue (LZ4_streamDecode_t* LZ4_streamDecode, const char* source, char* dest, int compressedSize, int maxDecompressedSize);
+int LZ4_decompress_fast_continue (LZ4_streamDecode_t* LZ4_streamDecode, const char* source, char* dest, int originalSize);
+
+
+/*
+Advanced decoding functions :
+*_usingDict() :
+ These decoding functions work the same as
+ a combination of LZ4_setStreamDecode() followed by LZ4_decompress_x_continue()
+ They are stand-alone. They don't need nor update an LZ4_streamDecode_t structure.
+*/
+int LZ4_decompress_safe_usingDict (const char* source, char* dest, int compressedSize, int maxDecompressedSize, const char* dictStart, int dictSize);
+int LZ4_decompress_fast_usingDict (const char* source, char* dest, int originalSize, const char* dictStart, int dictSize);
+
+
+
+/**************************************
+* Obsolete Functions
+**************************************/
+/* Deprecate Warnings */
+/* Should these warnings messages be a problem,
+ it is generally possible to disable them,
+ with -Wno-deprecated-declarations for gcc
+ or _CRT_SECURE_NO_WARNINGS in Visual for example.
+ You can also define LZ4_DEPRECATE_WARNING_DEFBLOCK. */
+#ifndef LZ4_DEPRECATE_WARNING_DEFBLOCK
+# define LZ4_DEPRECATE_WARNING_DEFBLOCK
+# define LZ4_GCC_VERSION (__GNUC__ * 100 + __GNUC_MINOR__)
+# if (LZ4_GCC_VERSION >= 405) || defined(__clang__)
+# define LZ4_DEPRECATED(message) __attribute__((deprecated(message)))
+# elif (LZ4_GCC_VERSION >= 301)
+# define LZ4_DEPRECATED(message) __attribute__((deprecated))
+# elif defined(_MSC_VER)
+# define LZ4_DEPRECATED(message) __declspec(deprecated(message))
+# else
+# pragma message("WARNING: You need to implement LZ4_DEPRECATED for this compiler")
+# define LZ4_DEPRECATED(message)
+# endif
+#endif /* LZ4_DEPRECATE_WARNING_DEFBLOCK */
+
+/* Obsolete compression functions */
+/* These functions are planned to start generate warnings by r131 approximately */
+int LZ4_compress (const char* source, char* dest, int sourceSize);
+int LZ4_compress_limitedOutput (const char* source, char* dest, int sourceSize, int maxOutputSize);
+int LZ4_compress_withState (void* state, const char* source, char* dest, int inputSize);
+int LZ4_compress_limitedOutput_withState (void* state, const char* source, char* dest, int inputSize, int maxOutputSize);
+int LZ4_compress_continue (LZ4_stream_t* LZ4_streamPtr, const char* source, char* dest, int inputSize);
+int LZ4_compress_limitedOutput_continue (LZ4_stream_t* LZ4_streamPtr, const char* source, char* dest, int inputSize, int maxOutputSize);
+
+/* Obsolete decompression functions */
+/* These function names are completely deprecated and must no longer be used.
+ They are only provided here for compatibility with older programs.
+ - LZ4_uncompress is the same as LZ4_decompress_fast
+ - LZ4_uncompress_unknownOutputSize is the same as LZ4_decompress_safe
+ These function prototypes are now disabled; uncomment them only if you really need them.
+ It is highly recommended to stop using these prototypes and migrate to maintained ones */
+/* int LZ4_uncompress (const char* source, char* dest, int outputSize); */
+/* int LZ4_uncompress_unknownOutputSize (const char* source, char* dest, int isize, int maxOutputSize); */
+
+/* Obsolete streaming functions; use new streaming interface whenever possible */
+LZ4_DEPRECATED("use LZ4_createStream() instead") void* LZ4_create (char* inputBuffer);
+LZ4_DEPRECATED("use LZ4_createStream() instead") int LZ4_sizeofStreamState(void);
+LZ4_DEPRECATED("use LZ4_resetStream() instead") int LZ4_resetStreamState(void* state, char* inputBuffer);
+LZ4_DEPRECATED("use LZ4_saveDict() instead") char* LZ4_slideInputBuffer (void* state);
+
+/* Obsolete streaming decoding functions */
+LZ4_DEPRECATED("use LZ4_decompress_safe_usingDict() instead") int LZ4_decompress_safe_withPrefix64k (const char* src, char* dst, int compressedSize, int maxDstSize);
+LZ4_DEPRECATED("use LZ4_decompress_fast_usingDict() instead") int LZ4_decompress_fast_withPrefix64k (const char* src, char* dst, int originalSize);
+
+
+#if defined (__cplusplus)
+}
+#endif
diff -Nru paraview-5.0.0+dfsg1/ThirdParty/lz4/vtklz4/lib/lz4hc.c paraview-5.0.1+dfsg1/ThirdParty/lz4/vtklz4/lib/lz4hc.c
--- paraview-5.0.0+dfsg1/ThirdParty/lz4/vtklz4/lib/lz4hc.c 1970-01-01 00:00:00.000000000 +0000
+++ paraview-5.0.1+dfsg1/ThirdParty/lz4/vtklz4/lib/lz4hc.c 2016-03-28 15:06:22.000000000 +0000
@@ -0,0 +1,731 @@
+/*
+ LZ4 HC - High Compression Mode of LZ4
+ Copyright (C) 2011-2015, Yann Collet.
+
+ BSD 2-Clause License (http://www.opensource.org/licenses/bsd-license.php)
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are
+ met:
+
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above
+ copyright notice, this list of conditions and the following disclaimer
+ in the documentation and/or other materials provided with the
+ distribution.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+ You can contact the author at :
+ - LZ4 source repository : https://github.com/Cyan4973/lz4
+ - LZ4 public forum : https://groups.google.com/forum/#!forum/lz4c
+*/
+
+
+
+/**************************************
+* Tuning Parameter
+**************************************/
+static const int LZ4HC_compressionLevel_default = 9;
+
+
+/**************************************
+* Includes
+**************************************/
+#include "lz4hc.h"
+
+
+/**************************************
+* Local Compiler Options
+**************************************/
+#if defined(__GNUC__)
+# pragma GCC diagnostic ignored "-Wunused-function"
+#endif
+
+#if defined (__clang__)
+# pragma clang diagnostic ignored "-Wunused-function"
+#endif
+
+
+/**************************************
+* Common LZ4 definition
+**************************************/
+#define LZ4_COMMONDEFS_ONLY
+#include "lz4.c"
+
+
+/**************************************
+* Local Constants
+**************************************/
+#define DICTIONARY_LOGSIZE 16
+#define MAXD (1<> ((MINMATCH*8)-HASH_LOG))
+//#define DELTANEXTU16(p) chainTable[(p) & MAXD_MASK] /* flexible, MAXD dependent */
+#define DELTANEXTU16(p) chainTable[(U16)(p)] /* faster */
+
+static U32 LZ4HC_hashPtr(const void* ptr) { return HASH_FUNCTION(LZ4_read32(ptr)); }
+
+
+
+/**************************************
+* HC Compression
+**************************************/
+static void LZ4HC_init (LZ4HC_Data_Structure* hc4, const BYTE* start)
+{
+ MEM_INIT((void*)hc4->hashTable, 0, sizeof(hc4->hashTable));
+ MEM_INIT(hc4->chainTable, 0xFF, sizeof(hc4->chainTable));
+ hc4->nextToUpdate = 64 KB;
+ hc4->base = start - 64 KB;
+ hc4->end = start;
+ hc4->dictBase = start - 64 KB;
+ hc4->dictLimit = 64 KB;
+ hc4->lowLimit = 64 KB;
+}
+
+
+/* Update chains up to ip (excluded) */
+FORCE_INLINE void LZ4HC_Insert (LZ4HC_Data_Structure* hc4, const BYTE* ip)
+{
+ U16* chainTable = hc4->chainTable;
+ U32* HashTable = hc4->hashTable;
+ const BYTE* const base = hc4->base;
+ const U32 target = (U32)(ip - base);
+ U32 idx = hc4->nextToUpdate;
+
+ while(idx < target)
+ {
+ U32 h = LZ4HC_hashPtr(base+idx);
+ size_t delta = idx - HashTable[h];
+ if (delta>MAX_DISTANCE) delta = MAX_DISTANCE;
+ DELTANEXTU16(idx) = (U16)delta;
+ HashTable[h] = idx;
+ idx++;
+ }
+
+ hc4->nextToUpdate = target;
+}
+
+
+FORCE_INLINE int LZ4HC_InsertAndFindBestMatch (LZ4HC_Data_Structure* hc4, /* Index table will be updated */
+ const BYTE* ip, const BYTE* const iLimit,
+ const BYTE** matchpos,
+ const int maxNbAttempts)
+{
+ U16* const chainTable = hc4->chainTable;
+ U32* const HashTable = hc4->hashTable;
+ const BYTE* const base = hc4->base;
+ const BYTE* const dictBase = hc4->dictBase;
+ const U32 dictLimit = hc4->dictLimit;
+ const U32 lowLimit = (hc4->lowLimit + 64 KB > (U32)(ip-base)) ? hc4->lowLimit : (U32)(ip - base) - (64 KB - 1);
+ U32 matchIndex;
+ const BYTE* match;
+ int nbAttempts=maxNbAttempts;
+ size_t ml=0;
+
+ /* HC4 match finder */
+ LZ4HC_Insert(hc4, ip);
+ matchIndex = HashTable[LZ4HC_hashPtr(ip)];
+
+ while ((matchIndex>=lowLimit) && (nbAttempts))
+ {
+ nbAttempts--;
+ if (matchIndex >= dictLimit)
+ {
+ match = base + matchIndex;
+ if (*(match+ml) == *(ip+ml)
+ && (LZ4_read32(match) == LZ4_read32(ip)))
+ {
+ size_t mlt = LZ4_count(ip+MINMATCH, match+MINMATCH, iLimit) + MINMATCH;
+ if (mlt > ml) { ml = mlt; *matchpos = match; }
+ }
+ }
+ else
+ {
+ match = dictBase + matchIndex;
+ if (LZ4_read32(match) == LZ4_read32(ip))
+ {
+ size_t mlt;
+ const BYTE* vLimit = ip + (dictLimit - matchIndex);
+ if (vLimit > iLimit) vLimit = iLimit;
+ mlt = LZ4_count(ip+MINMATCH, match+MINMATCH, vLimit) + MINMATCH;
+ if ((ip+mlt == vLimit) && (vLimit < iLimit))
+ mlt += LZ4_count(ip+mlt, base+dictLimit, iLimit);
+ if (mlt > ml) { ml = mlt; *matchpos = base + matchIndex; } /* virtual matchpos */
+ }
+ }
+ matchIndex -= DELTANEXTU16(matchIndex);
+ }
+
+ return (int)ml;
+}
+
+
+FORCE_INLINE int LZ4HC_InsertAndGetWiderMatch (
+ LZ4HC_Data_Structure* hc4,
+ const BYTE* const ip,
+ const BYTE* const iLowLimit,
+ const BYTE* const iHighLimit,
+ int longest,
+ const BYTE** matchpos,
+ const BYTE** startpos,
+ const int maxNbAttempts)
+{
+ U16* const chainTable = hc4->chainTable;
+ U32* const HashTable = hc4->hashTable;
+ const BYTE* const base = hc4->base;
+ const U32 dictLimit = hc4->dictLimit;
+ const BYTE* const lowPrefixPtr = base + dictLimit;
+ const U32 lowLimit = (hc4->lowLimit + 64 KB > (U32)(ip-base)) ? hc4->lowLimit : (U32)(ip - base) - (64 KB - 1);
+ const BYTE* const dictBase = hc4->dictBase;
+ U32 matchIndex;
+ int nbAttempts = maxNbAttempts;
+ int delta = (int)(ip-iLowLimit);
+
+
+ /* First Match */
+ LZ4HC_Insert(hc4, ip);
+ matchIndex = HashTable[LZ4HC_hashPtr(ip)];
+
+ while ((matchIndex>=lowLimit) && (nbAttempts))
+ {
+ nbAttempts--;
+ if (matchIndex >= dictLimit)
+ {
+ const BYTE* matchPtr = base + matchIndex;
+ if (*(iLowLimit + longest) == *(matchPtr - delta + longest))
+ if (LZ4_read32(matchPtr) == LZ4_read32(ip))
+ {
+ int mlt = MINMATCH + LZ4_count(ip+MINMATCH, matchPtr+MINMATCH, iHighLimit);
+ int back = 0;
+
+ while ((ip+back>iLowLimit)
+ && (matchPtr+back > lowPrefixPtr)
+ && (ip[back-1] == matchPtr[back-1]))
+ back--;
+
+ mlt -= back;
+
+ if (mlt > longest)
+ {
+ longest = (int)mlt;
+ *matchpos = matchPtr+back;
+ *startpos = ip+back;
+ }
+ }
+ }
+ else
+ {
+ const BYTE* matchPtr = dictBase + matchIndex;
+ if (LZ4_read32(matchPtr) == LZ4_read32(ip))
+ {
+ size_t mlt;
+ int back=0;
+ const BYTE* vLimit = ip + (dictLimit - matchIndex);
+ if (vLimit > iHighLimit) vLimit = iHighLimit;
+ mlt = LZ4_count(ip+MINMATCH, matchPtr+MINMATCH, vLimit) + MINMATCH;
+ if ((ip+mlt == vLimit) && (vLimit < iHighLimit))
+ mlt += LZ4_count(ip+mlt, base+dictLimit, iHighLimit);
+ while ((ip+back > iLowLimit) && (matchIndex+back > lowLimit) && (ip[back-1] == matchPtr[back-1])) back--;
+ mlt -= back;
+ if ((int)mlt > longest) { longest = (int)mlt; *matchpos = base + matchIndex + back; *startpos = ip+back; }
+ }
+ }
+ matchIndex -= DELTANEXTU16(matchIndex);
+ }
+
+ return longest;
+}
+
+
+typedef enum { noLimit = 0, limitedOutput = 1 } limitedOutput_directive;
+
+#define LZ4HC_DEBUG 0
+#if LZ4HC_DEBUG
+static unsigned debug = 0;
+#endif
+
+FORCE_INLINE int LZ4HC_encodeSequence (
+ const BYTE** ip,
+ BYTE** op,
+ const BYTE** anchor,
+ int matchLength,
+ const BYTE* const match,
+ limitedOutput_directive limitedOutputBuffer,
+ BYTE* oend)
+{
+ int length;
+ BYTE* token;
+
+#if LZ4HC_DEBUG
+ if (debug) printf("literal : %u -- match : %u -- offset : %u\n", (U32)(*ip - *anchor), (U32)matchLength, (U32)(*ip-match));
+#endif
+
+ /* Encode Literal length */
+ length = (int)(*ip - *anchor);
+ token = (*op)++;
+ if ((limitedOutputBuffer) && ((*op + (length>>8) + length + (2 + 1 + LASTLITERALS)) > oend)) return 1; /* Check output limit */
+ if (length>=(int)RUN_MASK) { int len; *token=(RUN_MASK< 254 ; len-=255) *(*op)++ = 255; *(*op)++ = (BYTE)len; }
+ else *token = (BYTE)(length<>8) + (1 + LASTLITERALS) > oend)) return 1; /* Check output limit */
+ if (length>=(int)ML_MASK) { *token+=ML_MASK; length-=ML_MASK; for(; length > 509 ; length-=510) { *(*op)++ = 255; *(*op)++ = 255; } if (length > 254) { length-=255; *(*op)++ = 255; } *(*op)++ = (BYTE)length; }
+ else *token += (BYTE)(length);
+
+ /* Prepare next loop */
+ *ip += matchLength;
+ *anchor = *ip;
+
+ return 0;
+}
+
+
+static int LZ4HC_compress_generic (
+ void* ctxvoid,
+ const char* source,
+ char* dest,
+ int inputSize,
+ int maxOutputSize,
+ int compressionLevel,
+ limitedOutput_directive limit
+ )
+{
+ LZ4HC_Data_Structure* ctx = (LZ4HC_Data_Structure*) ctxvoid;
+ const BYTE* ip = (const BYTE*) source;
+ const BYTE* anchor = ip;
+ const BYTE* const iend = ip + inputSize;
+ const BYTE* const mflimit = iend - MFLIMIT;
+ const BYTE* const matchlimit = (iend - LASTLITERALS);
+
+ BYTE* op = (BYTE*) dest;
+ BYTE* const oend = op + maxOutputSize;
+
+ unsigned maxNbAttempts;
+ int ml, ml2, ml3, ml0;
+ const BYTE* ref=NULL;
+ const BYTE* start2=NULL;
+ const BYTE* ref2=NULL;
+ const BYTE* start3=NULL;
+ const BYTE* ref3=NULL;
+ const BYTE* start0;
+ const BYTE* ref0;
+
+
+ /* init */
+ if (compressionLevel > g_maxCompressionLevel) compressionLevel = g_maxCompressionLevel;
+ if (compressionLevel < 1) compressionLevel = LZ4HC_compressionLevel_default;
+ maxNbAttempts = 1 << (compressionLevel-1);
+ ctx->end += inputSize;
+
+ ip++;
+
+ /* Main Loop */
+ while (ip < mflimit)
+ {
+ ml = LZ4HC_InsertAndFindBestMatch (ctx, ip, matchlimit, (&ref), maxNbAttempts);
+ if (!ml) { ip++; continue; }
+
+ /* saved, in case we would skip too much */
+ start0 = ip;
+ ref0 = ref;
+ ml0 = ml;
+
+_Search2:
+ if (ip+ml < mflimit)
+ ml2 = LZ4HC_InsertAndGetWiderMatch(ctx, ip + ml - 2, ip + 1, matchlimit, ml, &ref2, &start2, maxNbAttempts);
+ else ml2 = ml;
+
+ if (ml2 == ml) /* No better match */
+ {
+ if (LZ4HC_encodeSequence(&ip, &op, &anchor, ml, ref, limit, oend)) return 0;
+ continue;
+ }
+
+ if (start0 < ip)
+ {
+ if (start2 < ip + ml0) /* empirical */
+ {
+ ip = start0;
+ ref = ref0;
+ ml = ml0;
+ }
+ }
+
+ /* Here, start0==ip */
+ if ((start2 - ip) < 3) /* First Match too small : removed */
+ {
+ ml = ml2;
+ ip = start2;
+ ref =ref2;
+ goto _Search2;
+ }
+
+_Search3:
+ /*
+ * Currently we have :
+ * ml2 > ml1, and
+ * ip1+3 <= ip2 (usually < ip1+ml1)
+ */
+ if ((start2 - ip) < OPTIMAL_ML)
+ {
+ int correction;
+ int new_ml = ml;
+ if (new_ml > OPTIMAL_ML) new_ml = OPTIMAL_ML;
+ if (ip+new_ml > start2 + ml2 - MINMATCH) new_ml = (int)(start2 - ip) + ml2 - MINMATCH;
+ correction = new_ml - (int)(start2 - ip);
+ if (correction > 0)
+ {
+ start2 += correction;
+ ref2 += correction;
+ ml2 -= correction;
+ }
+ }
+ /* Now, we have start2 = ip+new_ml, with new_ml = min(ml, OPTIMAL_ML=18) */
+
+ if (start2 + ml2 < mflimit)
+ ml3 = LZ4HC_InsertAndGetWiderMatch(ctx, start2 + ml2 - 3, start2, matchlimit, ml2, &ref3, &start3, maxNbAttempts);
+ else ml3 = ml2;
+
+ if (ml3 == ml2) /* No better match : 2 sequences to encode */
+ {
+ /* ip & ref are known; Now for ml */
+ if (start2 < ip+ml) ml = (int)(start2 - ip);
+ /* Now, encode 2 sequences */
+ if (LZ4HC_encodeSequence(&ip, &op, &anchor, ml, ref, limit, oend)) return 0;
+ ip = start2;
+ if (LZ4HC_encodeSequence(&ip, &op, &anchor, ml2, ref2, limit, oend)) return 0;
+ continue;
+ }
+
+ if (start3 < ip+ml+3) /* Not enough space for match 2 : remove it */
+ {
+ if (start3 >= (ip+ml)) /* can write Seq1 immediately ==> Seq2 is removed, so Seq3 becomes Seq1 */
+ {
+ if (start2 < ip+ml)
+ {
+ int correction = (int)(ip+ml - start2);
+ start2 += correction;
+ ref2 += correction;
+ ml2 -= correction;
+ if (ml2 < MINMATCH)
+ {
+ start2 = start3;
+ ref2 = ref3;
+ ml2 = ml3;
+ }
+ }
+
+ if (LZ4HC_encodeSequence(&ip, &op, &anchor, ml, ref, limit, oend)) return 0;
+ ip = start3;
+ ref = ref3;
+ ml = ml3;
+
+ start0 = start2;
+ ref0 = ref2;
+ ml0 = ml2;
+ goto _Search2;
+ }
+
+ start2 = start3;
+ ref2 = ref3;
+ ml2 = ml3;
+ goto _Search3;
+ }
+
+ /*
+ * OK, now we have 3 ascending matches; let's write at least the first one
+ * ip & ref are known; Now for ml
+ */
+ if (start2 < ip+ml)
+ {
+ if ((start2 - ip) < (int)ML_MASK)
+ {
+ int correction;
+ if (ml > OPTIMAL_ML) ml = OPTIMAL_ML;
+ if (ip + ml > start2 + ml2 - MINMATCH) ml = (int)(start2 - ip) + ml2 - MINMATCH;
+ correction = ml - (int)(start2 - ip);
+ if (correction > 0)
+ {
+ start2 += correction;
+ ref2 += correction;
+ ml2 -= correction;
+ }
+ }
+ else
+ {
+ ml = (int)(start2 - ip);
+ }
+ }
+ if (LZ4HC_encodeSequence(&ip, &op, &anchor, ml, ref, limit, oend)) return 0;
+
+ ip = start2;
+ ref = ref2;
+ ml = ml2;
+
+ start2 = start3;
+ ref2 = ref3;
+ ml2 = ml3;
+
+ goto _Search3;
+ }
+
+ /* Encode Last Literals */
+ {
+ int lastRun = (int)(iend - anchor);
+ if ((limit) && (((char*)op - dest) + lastRun + 1 + ((lastRun+255-RUN_MASK)/255) > (U32)maxOutputSize)) return 0; /* Check output limit */
+ if (lastRun>=(int)RUN_MASK) { *op++=(RUN_MASK< 254 ; lastRun-=255) *op++ = 255; *op++ = (BYTE) lastRun; }
+ else *op++ = (BYTE)(lastRun<base = NULL;
+ ((LZ4HC_Data_Structure*)LZ4_streamHCPtr)->compressionLevel = (unsigned)compressionLevel;
+}
+
+int LZ4_loadDictHC (LZ4_streamHC_t* LZ4_streamHCPtr, const char* dictionary, int dictSize)
+{
+ LZ4HC_Data_Structure* ctxPtr = (LZ4HC_Data_Structure*) LZ4_streamHCPtr;
+ if (dictSize > 64 KB)
+ {
+ dictionary += dictSize - 64 KB;
+ dictSize = 64 KB;
+ }
+ LZ4HC_init (ctxPtr, (const BYTE*)dictionary);
+ if (dictSize >= 4) LZ4HC_Insert (ctxPtr, (const BYTE*)dictionary +(dictSize-3));
+ ctxPtr->end = (const BYTE*)dictionary + dictSize;
+ return dictSize;
+}
+
+
+/* compression */
+
+static void LZ4HC_setExternalDict(LZ4HC_Data_Structure* ctxPtr, const BYTE* newBlock)
+{
+ if (ctxPtr->end >= ctxPtr->base + 4)
+ LZ4HC_Insert (ctxPtr, ctxPtr->end-3); /* Referencing remaining dictionary content */
+ /* Only one memory segment for extDict, so any previous extDict is lost at this stage */
+ ctxPtr->lowLimit = ctxPtr->dictLimit;
+ ctxPtr->dictLimit = (U32)(ctxPtr->end - ctxPtr->base);
+ ctxPtr->dictBase = ctxPtr->base;
+ ctxPtr->base = newBlock - ctxPtr->dictLimit;
+ ctxPtr->end = newBlock;
+ ctxPtr->nextToUpdate = ctxPtr->dictLimit; /* match referencing will resume from there */
+}
+
+static int LZ4_compressHC_continue_generic (LZ4HC_Data_Structure* ctxPtr,
+ const char* source, char* dest,
+ int inputSize, int maxOutputSize, limitedOutput_directive limit)
+{
+ /* auto-init if forgotten */
+ if (ctxPtr->base == NULL)
+ LZ4HC_init (ctxPtr, (const BYTE*) source);
+
+ /* Check overflow */
+ if ((size_t)(ctxPtr->end - ctxPtr->base) > 2 GB)
+ {
+ size_t dictSize = (size_t)(ctxPtr->end - ctxPtr->base) - ctxPtr->dictLimit;
+ if (dictSize > 64 KB) dictSize = 64 KB;
+
+ LZ4_loadDictHC((LZ4_streamHC_t*)ctxPtr, (const char*)(ctxPtr->end) - dictSize, (int)dictSize);
+ }
+
+ /* Check if blocks follow each other */
+ if ((const BYTE*)source != ctxPtr->end)
+ LZ4HC_setExternalDict(ctxPtr, (const BYTE*)source);
+
+ /* Check overlapping input/dictionary space */
+ {
+ const BYTE* sourceEnd = (const BYTE*) source + inputSize;
+ const BYTE* dictBegin = ctxPtr->dictBase + ctxPtr->lowLimit;
+ const BYTE* dictEnd = ctxPtr->dictBase + ctxPtr->dictLimit;
+ if ((sourceEnd > dictBegin) && ((const BYTE*)source < dictEnd))
+ {
+ if (sourceEnd > dictEnd) sourceEnd = dictEnd;
+ ctxPtr->lowLimit = (U32)(sourceEnd - ctxPtr->dictBase);
+ if (ctxPtr->dictLimit - ctxPtr->lowLimit < 4) ctxPtr->lowLimit = ctxPtr->dictLimit;
+ }
+ }
+
+ return LZ4HC_compress_generic (ctxPtr, source, dest, inputSize, maxOutputSize, ctxPtr->compressionLevel, limit);
+}
+
+int LZ4_compress_HC_continue (LZ4_streamHC_t* LZ4_streamHCPtr, const char* source, char* dest, int inputSize, int maxOutputSize)
+{
+ if (maxOutputSize < LZ4_compressBound(inputSize))
+ return LZ4_compressHC_continue_generic ((LZ4HC_Data_Structure*)LZ4_streamHCPtr, source, dest, inputSize, maxOutputSize, limitedOutput);
+ else
+ return LZ4_compressHC_continue_generic ((LZ4HC_Data_Structure*)LZ4_streamHCPtr, source, dest, inputSize, maxOutputSize, noLimit);
+}
+
+
+/* dictionary saving */
+
+int LZ4_saveDictHC (LZ4_streamHC_t* LZ4_streamHCPtr, char* safeBuffer, int dictSize)
+{
+ LZ4HC_Data_Structure* streamPtr = (LZ4HC_Data_Structure*)LZ4_streamHCPtr;
+ int prefixSize = (int)(streamPtr->end - (streamPtr->base + streamPtr->dictLimit));
+ if (dictSize > 64 KB) dictSize = 64 KB;
+ if (dictSize < 4) dictSize = 0;
+ if (dictSize > prefixSize) dictSize = prefixSize;
+ memmove(safeBuffer, streamPtr->end - dictSize, dictSize);
+ {
+ U32 endIndex = (U32)(streamPtr->end - streamPtr->base);
+ streamPtr->end = (const BYTE*)safeBuffer + dictSize;
+ streamPtr->base = streamPtr->end - endIndex;
+ streamPtr->dictLimit = endIndex - dictSize;
+ streamPtr->lowLimit = endIndex - dictSize;
+ if (streamPtr->nextToUpdate < streamPtr->dictLimit) streamPtr->nextToUpdate = streamPtr->dictLimit;
+ }
+ return dictSize;
+}
+
+
+/***********************************
+* Deprecated Functions
+***********************************/
+/* Deprecated compression functions */
+/* These functions are planned to start generate warnings by r131 approximately */
+int LZ4_compressHC(const char* src, char* dst, int srcSize) { return LZ4_compress_HC (src, dst, srcSize, LZ4_compressBound(srcSize), 0); }
+int LZ4_compressHC_limitedOutput(const char* src, char* dst, int srcSize, int maxDstSize) { return LZ4_compress_HC(src, dst, srcSize, maxDstSize, 0); }
+int LZ4_compressHC2(const char* src, char* dst, int srcSize, int cLevel) { return LZ4_compress_HC (src, dst, srcSize, LZ4_compressBound(srcSize), cLevel); }
+int LZ4_compressHC2_limitedOutput(const char* src, char* dst, int srcSize, int maxDstSize, int cLevel) { return LZ4_compress_HC(src, dst, srcSize, maxDstSize, cLevel); }
+int LZ4_compressHC_withStateHC (void* state, const char* src, char* dst, int srcSize) { return LZ4_compress_HC_extStateHC (state, src, dst, srcSize, LZ4_compressBound(srcSize), 0); }
+int LZ4_compressHC_limitedOutput_withStateHC (void* state, const char* src, char* dst, int srcSize, int maxDstSize) { return LZ4_compress_HC_extStateHC (state, src, dst, srcSize, maxDstSize, 0); }
+int LZ4_compressHC2_withStateHC (void* state, const char* src, char* dst, int srcSize, int cLevel) { return LZ4_compress_HC_extStateHC(state, src, dst, srcSize, LZ4_compressBound(srcSize), cLevel); }
+int LZ4_compressHC2_limitedOutput_withStateHC (void* state, const char* src, char* dst, int srcSize, int maxDstSize, int cLevel) { return LZ4_compress_HC_extStateHC(state, src, dst, srcSize, maxDstSize, cLevel); }
+int LZ4_compressHC_continue (LZ4_streamHC_t* ctx, const char* src, char* dst, int srcSize) { return LZ4_compress_HC_continue (ctx, src, dst, srcSize, LZ4_compressBound(srcSize)); }
+int LZ4_compressHC_limitedOutput_continue (LZ4_streamHC_t* ctx, const char* src, char* dst, int srcSize, int maxDstSize) { return LZ4_compress_HC_continue (ctx, src, dst, srcSize, maxDstSize); }
+
+
+/* Deprecated streaming functions */
+/* These functions currently generate deprecation warnings */
+int LZ4_sizeofStreamStateHC(void) { return LZ4_STREAMHCSIZE; }
+
+int LZ4_resetStreamStateHC(void* state, char* inputBuffer)
+{
+ if ((((size_t)state) & (sizeof(void*)-1)) != 0) return 1; /* Error : pointer is not aligned for pointer (32 or 64 bits) */
+ LZ4HC_init((LZ4HC_Data_Structure*)state, (const BYTE*)inputBuffer);
+ ((LZ4HC_Data_Structure*)state)->inputBuffer = (BYTE*)inputBuffer;
+ return 0;
+}
+
+void* LZ4_createHC (char* inputBuffer)
+{
+ void* hc4 = ALLOCATOR(1, sizeof(LZ4HC_Data_Structure));
+ if (hc4 == NULL) return NULL; /* not enough memory */
+ LZ4HC_init ((LZ4HC_Data_Structure*)hc4, (const BYTE*)inputBuffer);
+ ((LZ4HC_Data_Structure*)hc4)->inputBuffer = (BYTE*)inputBuffer;
+ return hc4;
+}
+
+int LZ4_freeHC (void* LZ4HC_Data)
+{
+ FREEMEM(LZ4HC_Data);
+ return (0);
+}
+
+int LZ4_compressHC2_continue (void* LZ4HC_Data, const char* source, char* dest, int inputSize, int compressionLevel)
+{
+ return LZ4HC_compress_generic (LZ4HC_Data, source, dest, inputSize, 0, compressionLevel, noLimit);
+}
+
+int LZ4_compressHC2_limitedOutput_continue (void* LZ4HC_Data, const char* source, char* dest, int inputSize, int maxOutputSize, int compressionLevel)
+{
+ return LZ4HC_compress_generic (LZ4HC_Data, source, dest, inputSize, maxOutputSize, compressionLevel, limitedOutput);
+}
+
+char* LZ4_slideInputBufferHC(void* LZ4HC_Data)
+{
+ LZ4HC_Data_Structure* hc4 = (LZ4HC_Data_Structure*)LZ4HC_Data;
+ int dictSize = LZ4_saveDictHC((LZ4_streamHC_t*)LZ4HC_Data, (char*)(hc4->inputBuffer), 64 KB);
+ return (char*)(hc4->inputBuffer + dictSize);
+}
diff -Nru paraview-5.0.0+dfsg1/ThirdParty/lz4/vtklz4/lib/lz4hc.h paraview-5.0.1+dfsg1/ThirdParty/lz4/vtklz4/lib/lz4hc.h
--- paraview-5.0.0+dfsg1/ThirdParty/lz4/vtklz4/lib/lz4hc.h 1970-01-01 00:00:00.000000000 +0000
+++ paraview-5.0.1+dfsg1/ThirdParty/lz4/vtklz4/lib/lz4hc.h 2016-03-28 15:06:22.000000000 +0000
@@ -0,0 +1,194 @@
+/*
+ LZ4 HC - High Compression Mode of LZ4
+ Header File
+ Copyright (C) 2011-2015, Yann Collet.
+ BSD 2-Clause License (http://www.opensource.org/licenses/bsd-license.php)
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are
+ met:
+
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above
+ copyright notice, this list of conditions and the following disclaimer
+ in the documentation and/or other materials provided with the
+ distribution.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+ You can contact the author at :
+ - LZ4 source repository : https://github.com/Cyan4973/lz4
+ - LZ4 public forum : https://groups.google.com/forum/#!forum/lz4c
+*/
+#pragma once
+
+/* XXX(kitware): adding headers */
+#include "vtklz4_mangle.h"
+#include "vtklz4Exports.h"
+
+#if defined (__cplusplus)
+extern "C" {
+#endif
+
+/*****************************
+* Includes
+*****************************/
+#include /* size_t */
+
+
+/**************************************
+* Block Compression
+**************************************/
+/* XXX(kitware): fix exports*/
+int VTKLZ4_EXPORT LZ4_compress_HC (const char* src, char* dst, int srcSize, int maxDstSize, int compressionLevel);
+/*
+LZ4_compress_HC :
+ Destination buffer 'dst' must be already allocated.
+ Compression completion is guaranteed if 'dst' buffer is sized to handle worst circumstances (data not compressible)
+ Worst size evaluation is provided by function LZ4_compressBound() (see "lz4.h")
+ srcSize : Max supported value is LZ4_MAX_INPUT_SIZE (see "lz4.h")
+ compressionLevel : Recommended values are between 4 and 9, although any value between 0 and 16 will work.
+ 0 means "use default value" (see lz4hc.c).
+ Values >16 behave the same as 16.
+ return : the number of bytes written into buffer 'dst'
+ or 0 if compression fails.
+*/
+
+
+/* Note :
+ Decompression functions are provided within LZ4 source code (see "lz4.h") (BSD license)
+*/
+
+
+/* XXX(kitware): fix exports*/
+int VTKLZ4_EXPORT LZ4_sizeofStateHC(void);
+int VTKLZ4_EXPORT LZ4_compress_HC_extStateHC(void* state, const char* src, char* dst, int srcSize, int maxDstSize, int compressionLevel);
+/*
+LZ4_compress_HC_extStateHC() :
+ Use this function if you prefer to manually allocate memory for compression tables.
+ To know how much memory must be allocated for the compression tables, use :
+ int LZ4_sizeofStateHC();
+
+ Allocated memory must be aligned on 8-bytes boundaries (which a normal malloc() will do properly).
+
+ The allocated memory can then be provided to the compression functions using 'void* state' parameter.
+ LZ4_compress_HC_extStateHC() is equivalent to previously described function.
+ It just uses externally allocated memory for stateHC.
+*/
+
+
+/**************************************
+* Streaming Compression
+**************************************/
+#define LZ4_STREAMHCSIZE 262192
+#define LZ4_STREAMHCSIZE_SIZET (LZ4_STREAMHCSIZE / sizeof(size_t))
+typedef struct { size_t table[LZ4_STREAMHCSIZE_SIZET]; } LZ4_streamHC_t;
+/*
+ LZ4_streamHC_t
+ This structure allows static allocation of LZ4 HC streaming state.
+ State must then be initialized using LZ4_resetStreamHC() before first use.
+
+ Static allocation should only be used in combination with static linking.
+ If you want to use LZ4 as a DLL, please use construction functions below, which are future-proof.
+*/
+
+
+LZ4_streamHC_t* LZ4_createStreamHC(void);
+int LZ4_freeStreamHC (LZ4_streamHC_t* streamHCPtr);
+/*
+ These functions create and release memory for LZ4 HC streaming state.
+ Newly created states are already initialized.
+ Existing state space can be re-used anytime using LZ4_resetStreamHC().
+ If you use LZ4 as a DLL, use these functions instead of static structure allocation,
+ to avoid size mismatch between different versions.
+*/
+
+void LZ4_resetStreamHC (LZ4_streamHC_t* streamHCPtr, int compressionLevel);
+int LZ4_loadDictHC (LZ4_streamHC_t* streamHCPtr, const char* dictionary, int dictSize);
+
+int LZ4_compress_HC_continue (LZ4_streamHC_t* streamHCPtr, const char* src, char* dst, int srcSize, int maxDstSize);
+
+int LZ4_saveDictHC (LZ4_streamHC_t* streamHCPtr, char* safeBuffer, int maxDictSize);
+
+/*
+ These functions compress data in successive blocks of any size, using previous blocks as dictionary.
+ One key assumption is that previous blocks (up to 64 KB) remain read-accessible while compressing next blocks.
+ There is an exception for ring buffers, which can be smaller 64 KB.
+ Such case is automatically detected and correctly handled by LZ4_compress_HC_continue().
+
+ Before starting compression, state must be properly initialized, using LZ4_resetStreamHC().
+ A first "fictional block" can then be designated as initial dictionary, using LZ4_loadDictHC() (Optional).
+
+ Then, use LZ4_compress_HC_continue() to compress each successive block.
+ It works like LZ4_compress_HC(), but use previous memory blocks as dictionary to improve compression.
+ Previous memory blocks (including initial dictionary when present) must remain accessible and unmodified during compression.
+ As a reminder, size 'dst' buffer to handle worst cases, using LZ4_compressBound(), to ensure success of compression operation.
+
+ If, for any reason, previous data blocks can't be preserved unmodified in memory during next compression block,
+ you must save it to a safer memory space, using LZ4_saveDictHC().
+ Return value of LZ4_saveDictHC() is the size of dictionary effectively saved into 'safeBuffer'.
+*/
+
+
+
+/**************************************
+* Deprecated Functions
+**************************************/
+/* Deprecate Warnings */
+/* Should these warnings messages be a problem,
+ it is generally possible to disable them,
+ with -Wno-deprecated-declarations for gcc
+ or _CRT_SECURE_NO_WARNINGS in Visual for example.
+ You can also define LZ4_DEPRECATE_WARNING_DEFBLOCK. */
+#ifndef LZ4_DEPRECATE_WARNING_DEFBLOCK
+# define LZ4_DEPRECATE_WARNING_DEFBLOCK
+# define LZ4_GCC_VERSION (__GNUC__ * 100 + __GNUC_MINOR__)
+# if (LZ4_GCC_VERSION >= 405) || defined(__clang__)
+# define LZ4_DEPRECATED(message) __attribute__((deprecated(message)))
+# elif (LZ4_GCC_VERSION >= 301)
+# define LZ4_DEPRECATED(message) __attribute__((deprecated))
+# elif defined(_MSC_VER)
+# define LZ4_DEPRECATED(message) __declspec(deprecated(message))
+# else
+# pragma message("WARNING: You need to implement LZ4_DEPRECATED for this compiler")
+# define LZ4_DEPRECATED(message)
+# endif
+#endif // LZ4_DEPRECATE_WARNING_DEFBLOCK
+
+/* compression functions */
+/* these functions are planned to trigger warning messages by r131 approximately */
+int LZ4_compressHC (const char* source, char* dest, int inputSize);
+int LZ4_compressHC_limitedOutput (const char* source, char* dest, int inputSize, int maxOutputSize);
+int LZ4_compressHC2 (const char* source, char* dest, int inputSize, int compressionLevel);
+int LZ4_compressHC2_limitedOutput (const char* source, char* dest, int inputSize, int maxOutputSize, int compressionLevel);
+int LZ4_compressHC_withStateHC (void* state, const char* source, char* dest, int inputSize);
+int LZ4_compressHC_limitedOutput_withStateHC (void* state, const char* source, char* dest, int inputSize, int maxOutputSize);
+int LZ4_compressHC2_withStateHC (void* state, const char* source, char* dest, int inputSize, int compressionLevel);
+int LZ4_compressHC2_limitedOutput_withStateHC(void* state, const char* source, char* dest, int inputSize, int maxOutputSize, int compressionLevel);
+int LZ4_compressHC_continue (LZ4_streamHC_t* LZ4_streamHCPtr, const char* source, char* dest, int inputSize);
+int LZ4_compressHC_limitedOutput_continue (LZ4_streamHC_t* LZ4_streamHCPtr, const char* source, char* dest, int inputSize, int maxOutputSize);
+
+/* Streaming functions following the older model; should no longer be used */
+LZ4_DEPRECATED("use LZ4_createStreamHC() instead") void* LZ4_createHC (char* inputBuffer);
+LZ4_DEPRECATED("use LZ4_saveDictHC() instead") char* LZ4_slideInputBufferHC (void* LZ4HC_Data);
+LZ4_DEPRECATED("use LZ4_freeStreamHC() instead") int LZ4_freeHC (void* LZ4HC_Data);
+LZ4_DEPRECATED("use LZ4_compress_HC_continue() instead") int LZ4_compressHC2_continue (void* LZ4HC_Data, const char* source, char* dest, int inputSize, int compressionLevel);
+LZ4_DEPRECATED("use LZ4_compress_HC_continue() instead") int LZ4_compressHC2_limitedOutput_continue (void* LZ4HC_Data, const char* source, char* dest, int inputSize, int maxOutputSize, int compressionLevel);
+LZ4_DEPRECATED("use LZ4_createStreamHC() instead") int LZ4_sizeofStreamStateHC(void);
+LZ4_DEPRECATED("use LZ4_resetStreamHC() instead") int LZ4_resetStreamStateHC(void* state, char* inputBuffer);
+
+
+#if defined (__cplusplus)
+}
+#endif
diff -Nru paraview-5.0.0+dfsg1/ThirdParty/lz4/vtklz4/lib/README.md paraview-5.0.1+dfsg1/ThirdParty/lz4/vtklz4/lib/README.md
--- paraview-5.0.0+dfsg1/ThirdParty/lz4/vtklz4/lib/README.md 1970-01-01 00:00:00.000000000 +0000
+++ paraview-5.0.1+dfsg1/ThirdParty/lz4/vtklz4/lib/README.md 2016-03-28 15:06:22.000000000 +0000
@@ -0,0 +1,21 @@
+LZ4 - Library Files
+================================
+
+The __lib__ directory contains several files, but you don't necessarily need them all.
+
+To integrate fast LZ4 compression/decompression into your program, you basically just need "**lz4.c**" and "**lz4.h**".
+
+For more compression at the cost of compression speed (while preserving decompression speed), use **lz4hc** on top of regular lz4. `lz4hc` only provides compression functions. It also needs `lz4` to compile properly.
+
+If you want to produce files or data streams compatible with `lz4` command line utility, use **lz4frame**. This library encapsulates lz4-compressed blocks into the [official interoperable frame format]. In order to work properly, lz4frame needs lz4 and lz4hc, and also **xxhash**, which provides error detection algorithm.
+(_Advanced stuff_ : It's possible to hide xxhash symbols into a local namespace. This is what `liblz4` does, to avoid symbol duplication in case a user program would link to several libraries containing xxhash symbols.)
+
+A more complex "lz4frame_static.h" is also provided, although its usage is not recommended. It contains definitions which are not guaranteed to remain stable within future versions. Use for static linking ***only***.
+
+The other files are not source code. There are :
+
+ - LICENSE : contains the BSD license text
+ - Makefile : script to compile or install lz4 library (static or dynamic)
+ - liblz4.pc.in : for pkg-config (make install)
+
+[official interoperable frame format]: ../lz4_Frame_format.md
diff -Nru paraview-5.0.0+dfsg1/ThirdParty/lz4/vtklz4/lib/vtklz4_mangle.h paraview-5.0.1+dfsg1/ThirdParty/lz4/vtklz4/lib/vtklz4_mangle.h
--- paraview-5.0.0+dfsg1/ThirdParty/lz4/vtklz4/lib/vtklz4_mangle.h 1970-01-01 00:00:00.000000000 +0000
+++ paraview-5.0.1+dfsg1/ThirdParty/lz4/vtklz4/lib/vtklz4_mangle.h 2016-03-28 15:06:22.000000000 +0000
@@ -0,0 +1,110 @@
+#ifndef vtklz4_mangle_h
+#define vtklz4_mangle_h
+
+/*
+
+This header file mangles all symbols exported from the lz4 library.
+It is included in all files while building the lz4 library. Due to
+namespace pollution, no lz4 headers should be included in .h files in
+VTK.
+
+The following command was used to obtain the symbol list:
+
+nm liblz4.a | grep " [TR] "
+*/
+
+#define LZ4_compress vtk_LZ4_compress
+#define LZ4_compressBound vtk_LZ4_compressBound
+#define LZ4_compress_continue vtk_LZ4_compress_continue
+#define LZ4_compress_default vtk_LZ4_compress_default
+#define LZ4_compress_destSize vtk_LZ4_compress_destSize
+#define LZ4_compress_fast vtk_LZ4_compress_fast
+#define LZ4_compress_fast_continue vtk_LZ4_compress_fast_continue
+#define LZ4_compress_fast_extState vtk_LZ4_compress_fast_extState
+#define LZ4_compress_fast_force vtk_LZ4_compress_fast_force
+#define LZ4_compress_forceExtDict vtk_LZ4_compress_forceExtDict
+#define LZ4_compress_limitedOutput vtk_LZ4_compress_limitedOutput
+#define LZ4_compress_limitedOutput_continue vtk_LZ4_compress_limitedOutput_continue
+#define LZ4_compress_limitedOutput_withState vtk_LZ4_compress_limitedOutput_withState
+#define LZ4_compress_withState vtk_LZ4_compress_withState
+#define LZ4_create vtk_LZ4_create
+#define LZ4_createStream vtk_LZ4_createStream
+#define LZ4_createStreamDecode vtk_LZ4_createStreamDecode
+#define LZ4_decompress_fast vtk_LZ4_decompress_fast
+#define LZ4_decompress_fast_continue vtk_LZ4_decompress_fast_continue
+#define LZ4_decompress_fast_usingDict vtk_LZ4_decompress_fast_usingDict
+#define LZ4_decompress_fast_withPrefix64k vtk_LZ4_decompress_fast_withPrefix64k
+#define LZ4_decompress_safe vtk_LZ4_decompress_safe
+#define LZ4_decompress_safe_continue vtk_LZ4_decompress_safe_continue
+#define LZ4_decompress_safe_forceExtDict vtk_LZ4_decompress_safe_forceExtDict
+#define LZ4_decompress_safe_partial vtk_LZ4_decompress_safe_partial
+#define LZ4_decompress_safe_usingDict vtk_LZ4_decompress_safe_usingDict
+#define LZ4_decompress_safe_withPrefix64k vtk_LZ4_decompress_safe_withPrefix64k
+#define LZ4_freeStream vtk_LZ4_freeStream
+#define LZ4_freeStreamDecode vtk_LZ4_freeStreamDecode
+#define LZ4_loadDict vtk_LZ4_loadDict
+#define LZ4_resetStream vtk_LZ4_resetStream
+#define LZ4_resetStreamState vtk_LZ4_resetStreamState
+#define LZ4_saveDict vtk_LZ4_saveDict
+#define LZ4_setStreamDecode vtk_LZ4_setStreamDecode
+#define LZ4_sizeofState vtk_LZ4_sizeofState
+#define LZ4_sizeofStreamState vtk_LZ4_sizeofStreamState
+#define LZ4_slideInputBuffer vtk_LZ4_slideInputBuffer
+#define LZ4_uncompress vtk_LZ4_uncompress
+#define LZ4_uncompress_unknownOutputSize vtk_LZ4_uncompress_unknownOutputSize
+#define LZ4_versionNumber vtk_LZ4_versionNumber
+#define LZ4_compressHC vtk_LZ4_compressHC
+#define LZ4_compress_HC vtk_LZ4_compress_HC
+#define LZ4_compressHC2 vtk_LZ4_compressHC2
+#define LZ4_compressHC2_continue vtk_LZ4_compressHC2_continue
+#define LZ4_compressHC2_limitedOutput vtk_LZ4_compressHC2_limitedOutput
+#define LZ4_compressHC2_limitedOutput_continue vtk_LZ4_compressHC2_limitedOutput_continue
+#define LZ4_compressHC2_limitedOutput_withStateHC vtk_LZ4_compressHC2_limitedOutput_withStateHC
+#define LZ4_compressHC2_withStateHC vtk_LZ4_compressHC2_withStateHC
+#define LZ4_compress_HC_continue vtk_LZ4_compress_HC_continue
+#define LZ4_compressHC_continue vtk_LZ4_compressHC_continue
+#define LZ4_compress_HC_extStateHC vtk_LZ4_compress_HC_extStateHC
+#define LZ4_compressHC_limitedOutput vtk_LZ4_compressHC_limitedOutput
+#define LZ4_compressHC_limitedOutput_continue vtk_LZ4_compressHC_limitedOutput_continue
+#define LZ4_compressHC_limitedOutput_withStateHC vtk_LZ4_compressHC_limitedOutput_withStateHC
+#define LZ4_compressHC_withStateHC vtk_LZ4_compressHC_withStateHC
+#define LZ4_createHC vtk_LZ4_createHC
+#define LZ4_createStreamHC vtk_LZ4_createStreamHC
+#define LZ4_freeHC vtk_LZ4_freeHC
+#define LZ4_freeStreamHC vtk_LZ4_freeStreamHC
+#define LZ4_loadDictHC vtk_LZ4_loadDictHC
+#define LZ4_resetStreamHC vtk_LZ4_resetStreamHC
+#define LZ4_resetStreamStateHC vtk_LZ4_resetStreamStateHC
+#define LZ4_saveDictHC vtk_LZ4_saveDictHC
+#define LZ4_sizeofStateHC vtk_LZ4_sizeofStateHC
+#define LZ4_sizeofStreamStateHC vtk_LZ4_sizeofStreamStateHC
+#define LZ4_slideInputBufferHC vtk_LZ4_slideInputBufferHC
+#define LZ4F_compressBegin vtk_LZ4F_compressBegin
+#define LZ4F_compressBound vtk_LZ4F_compressBound
+#define LZ4F_compressEnd vtk_LZ4F_compressEnd
+#define LZ4F_compressFrame vtk_LZ4F_compressFrame
+#define LZ4F_compressFrameBound vtk_LZ4F_compressFrameBound
+#define LZ4F_compressUpdate vtk_LZ4F_compressUpdate
+#define LZ4F_createCompressionContext vtk_LZ4F_createCompressionContext
+#define LZ4F_createDecompressionContext vtk_LZ4F_createDecompressionContext
+#define LZ4F_decompress vtk_LZ4F_decompress
+#define LZ4F_flush vtk_LZ4F_flush
+#define LZ4F_freeCompressionContext vtk_LZ4F_freeCompressionContext
+#define LZ4F_freeDecompressionContext vtk_LZ4F_freeDecompressionContext
+#define LZ4F_getErrorName vtk_LZ4F_getErrorName
+#define LZ4F_getFrameInfo vtk_LZ4F_getFrameInfo
+#define LZ4F_isError vtk_LZ4F_isError
+#define XXH32 vtk_XXH32
+#define XXH32_createState vtk_XXH32_createState
+#define XXH32_digest vtk_XXH32_digest
+#define XXH32_freeState vtk_XXH32_freeState
+#define XXH32_reset vtk_XXH32_reset
+#define XXH32_update vtk_XXH32_update
+#define XXH64 vtk_XXH64
+#define XXH64_createState vtk_XXH64_createState
+#define XXH64_digest vtk_XXH64_digest
+#define XXH64_freeState vtk_XXH64_freeState
+#define XXH64_reset vtk_XXH64_reset
+#define XXH64_update vtk_XXH64_update
+
+#endif
diff -Nru paraview-5.0.0+dfsg1/ThirdParty/lz4/vtklz4/lib/xxhash.c paraview-5.0.1+dfsg1/ThirdParty/lz4/vtklz4/lib/xxhash.c
--- paraview-5.0.0+dfsg1/ThirdParty/lz4/vtklz4/lib/xxhash.c 1970-01-01 00:00:00.000000000 +0000
+++ paraview-5.0.1+dfsg1/ThirdParty/lz4/vtklz4/lib/xxhash.c 2016-03-28 15:06:22.000000000 +0000
@@ -0,0 +1,915 @@
+/*
+xxHash - Fast Hash algorithm
+Copyright (C) 2012-2015, Yann Collet
+
+BSD 2-Clause License (http://www.opensource.org/licenses/bsd-license.php)
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are
+met:
+
+* Redistributions of source code must retain the above copyright
+notice, this list of conditions and the following disclaimer.
+* Redistributions in binary form must reproduce the above
+copyright notice, this list of conditions and the following disclaimer
+in the documentation and/or other materials provided with the
+distribution.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+You can contact the author at :
+- xxHash source repository : https://github.com/Cyan4973/xxHash
+*/
+
+
+/**************************************
+* Tuning parameters
+**************************************/
+/* Unaligned memory access is automatically enabled for "common" CPU, such as x86.
+ * For others CPU, the compiler will be more cautious, and insert extra code to ensure aligned access is respected.
+ * If you know your target CPU supports unaligned memory access, you want to force this option manually to improve performance.
+ * You can also enable this parameter if you know your input data will always be aligned (boundaries of 4, for U32).
+ */
+#if defined(__ARM_FEATURE_UNALIGNED) || defined(__i386) || defined(_M_IX86) || defined(__x86_64__) || defined(_M_X64)
+# define XXH_USE_UNALIGNED_ACCESS 1
+#endif
+
+/* XXH_ACCEPT_NULL_INPUT_POINTER :
+ * If the input pointer is a null pointer, xxHash default behavior is to trigger a memory access error, since it is a bad pointer.
+ * When this option is enabled, xxHash output for null input pointers will be the same as a null-length input.
+ * By default, this option is disabled. To enable it, uncomment below define :
+ */
+/* #define XXH_ACCEPT_NULL_INPUT_POINTER 1 */
+
+/* XXH_FORCE_NATIVE_FORMAT :
+ * By default, xxHash library provides endian-independant Hash values, based on little-endian convention.
+ * Results are therefore identical for little-endian and big-endian CPU.
+ * This comes at a performance cost for big-endian CPU, since some swapping is required to emulate little-endian format.
+ * Should endian-independance be of no importance for your application, you may set the #define below to 1.
+ * It will improve speed for Big-endian CPU.
+ * This option has no impact on Little_Endian CPU.
+ */
+#define XXH_FORCE_NATIVE_FORMAT 0
+
+
+/**************************************
+* Compiler Specific Options
+***************************************/
+#ifdef _MSC_VER /* Visual Studio */
+# pragma warning(disable : 4127) /* disable: C4127: conditional expression is constant */
+# define FORCE_INLINE static __forceinline
+#else
+# if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L /* C99 */
+# ifdef __GNUC__
+# define FORCE_INLINE static inline __attribute__((always_inline))
+# else
+# define FORCE_INLINE static inline
+# endif
+# else
+# define FORCE_INLINE static
+# endif /* __STDC_VERSION__ */
+#endif
+
+
+/**************************************
+* Includes & Memory related functions
+***************************************/
+#include "xxhash.h"
+/* Modify the local functions below should you wish to use some other memory routines */
+/* for malloc(), free() */
+#include
+static void* XXH_malloc(size_t s) { return malloc(s); }
+static void XXH_free (void* p) { free(p); }
+/* for memcpy() */
+#include
+static void* XXH_memcpy(void* dest, const void* src, size_t size) { return memcpy(dest,src,size); }
+
+
+/**************************************
+* Basic Types
+***************************************/
+#if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L /* C99 */
+# include
+ typedef uint8_t BYTE;
+ typedef uint16_t U16;
+ typedef uint32_t U32;
+ typedef int32_t S32;
+ typedef uint64_t U64;
+#else
+ typedef unsigned char BYTE;
+ typedef unsigned short U16;
+ typedef unsigned int U32;
+ typedef signed int S32;
+ typedef unsigned long long U64;
+#endif
+
+static U32 XXH_read32(const void* memPtr)
+{
+ U32 val32;
+ memcpy(&val32, memPtr, 4);
+ return val32;
+}
+
+static U64 XXH_read64(const void* memPtr)
+{
+ U64 val64;
+ memcpy(&val64, memPtr, 8);
+ return val64;
+}
+
+
+
+/******************************************
+* Compiler-specific Functions and Macros
+******************************************/
+#define GCC_VERSION (__GNUC__ * 100 + __GNUC_MINOR__)
+
+/* Note : although _rotl exists for minGW (GCC under windows), performance seems poor */
+#if defined(_MSC_VER)
+# define XXH_rotl32(x,r) _rotl(x,r)
+# define XXH_rotl64(x,r) _rotl64(x,r)
+#else
+# define XXH_rotl32(x,r) ((x << r) | (x >> (32 - r)))
+# define XXH_rotl64(x,r) ((x << r) | (x >> (64 - r)))
+#endif
+
+#if defined(_MSC_VER) /* Visual Studio */
+# define XXH_swap32 _byteswap_ulong
+# define XXH_swap64 _byteswap_uint64
+#elif GCC_VERSION >= 403
+# define XXH_swap32 __builtin_bswap32
+# define XXH_swap64 __builtin_bswap64
+#else
+static U32 XXH_swap32 (U32 x)
+{
+ return ((x << 24) & 0xff000000 ) |
+ ((x << 8) & 0x00ff0000 ) |
+ ((x >> 8) & 0x0000ff00 ) |
+ ((x >> 24) & 0x000000ff );
+}
+static U64 XXH_swap64 (U64 x)
+{
+ return ((x << 56) & 0xff00000000000000ULL) |
+ ((x << 40) & 0x00ff000000000000ULL) |
+ ((x << 24) & 0x0000ff0000000000ULL) |
+ ((x << 8) & 0x000000ff00000000ULL) |
+ ((x >> 8) & 0x00000000ff000000ULL) |
+ ((x >> 24) & 0x0000000000ff0000ULL) |
+ ((x >> 40) & 0x000000000000ff00ULL) |
+ ((x >> 56) & 0x00000000000000ffULL);
+}
+#endif
+
+
+/***************************************
+* Architecture Macros
+***************************************/
+typedef enum { XXH_bigEndian=0, XXH_littleEndian=1 } XXH_endianess;
+#ifndef XXH_CPU_LITTLE_ENDIAN /* XXH_CPU_LITTLE_ENDIAN can be defined externally, for example using a compiler switch */
+static const int one = 1;
+# define XXH_CPU_LITTLE_ENDIAN (*(const char*)(&one))
+#endif
+
+
+/*****************************
+* Memory reads
+*****************************/
+typedef enum { XXH_aligned, XXH_unaligned } XXH_alignment;
+
+FORCE_INLINE U32 XXH_readLE32_align(const void* ptr, XXH_endianess endian, XXH_alignment align)
+{
+ if (align==XXH_unaligned)
+ return endian==XXH_littleEndian ? XXH_read32(ptr) : XXH_swap32(XXH_read32(ptr));
+ else
+ return endian==XXH_littleEndian ? *(const U32*)ptr : XXH_swap32(*(const U32*)ptr);
+}
+
+FORCE_INLINE U32 XXH_readLE32(const void* ptr, XXH_endianess endian)
+{
+ return XXH_readLE32_align(ptr, endian, XXH_unaligned);
+}
+
+FORCE_INLINE U64 XXH_readLE64_align(const void* ptr, XXH_endianess endian, XXH_alignment align)
+{
+ if (align==XXH_unaligned)
+ return endian==XXH_littleEndian ? XXH_read64(ptr) : XXH_swap64(XXH_read64(ptr));
+ else
+ return endian==XXH_littleEndian ? *(const U64*)ptr : XXH_swap64(*(const U64*)ptr);
+}
+
+FORCE_INLINE U64 XXH_readLE64(const void* ptr, XXH_endianess endian)
+{
+ return XXH_readLE64_align(ptr, endian, XXH_unaligned);
+}
+
+
+/***************************************
+* Macros
+***************************************/
+#define XXH_STATIC_ASSERT(c) { enum { XXH_static_assert = 1/(!!(c)) }; } /* use only *after* variable declarations */
+
+
+/***************************************
+* Constants
+***************************************/
+#define PRIME32_1 2654435761U
+#define PRIME32_2 2246822519U
+#define PRIME32_3 3266489917U
+#define PRIME32_4 668265263U
+#define PRIME32_5 374761393U
+
+#define PRIME64_1 11400714785074694791ULL
+#define PRIME64_2 14029467366897019727ULL
+#define PRIME64_3 1609587929392839161ULL
+#define PRIME64_4 9650029242287828579ULL
+#define PRIME64_5 2870177450012600261ULL
+
+
+/*****************************
+* Simple Hash Functions
+*****************************/
+FORCE_INLINE U32 XXH32_endian_align(const void* input, size_t len, U32 seed, XXH_endianess endian, XXH_alignment align)
+{
+ const BYTE* p = (const BYTE*)input;
+ const BYTE* bEnd = p + len;
+ U32 h32;
+#define XXH_get32bits(p) XXH_readLE32_align(p, endian, align)
+
+#ifdef XXH_ACCEPT_NULL_INPUT_POINTER
+ if (p==NULL)
+ {
+ len=0;
+ bEnd=p=(const BYTE*)(size_t)16;
+ }
+#endif
+
+ if (len>=16)
+ {
+ const BYTE* const limit = bEnd - 16;
+ U32 v1 = seed + PRIME32_1 + PRIME32_2;
+ U32 v2 = seed + PRIME32_2;
+ U32 v3 = seed + 0;
+ U32 v4 = seed - PRIME32_1;
+
+ do
+ {
+ v1 += XXH_get32bits(p) * PRIME32_2;
+ v1 = XXH_rotl32(v1, 13);
+ v1 *= PRIME32_1;
+ p+=4;
+ v2 += XXH_get32bits(p) * PRIME32_2;
+ v2 = XXH_rotl32(v2, 13);
+ v2 *= PRIME32_1;
+ p+=4;
+ v3 += XXH_get32bits(p) * PRIME32_2;
+ v3 = XXH_rotl32(v3, 13);
+ v3 *= PRIME32_1;
+ p+=4;
+ v4 += XXH_get32bits(p) * PRIME32_2;
+ v4 = XXH_rotl32(v4, 13);
+ v4 *= PRIME32_1;
+ p+=4;
+ }
+ while (p<=limit);
+
+ h32 = XXH_rotl32(v1, 1) + XXH_rotl32(v2, 7) + XXH_rotl32(v3, 12) + XXH_rotl32(v4, 18);
+ }
+ else
+ {
+ h32 = seed + PRIME32_5;
+ }
+
+ h32 += (U32) len;
+
+ while (p+4<=bEnd)
+ {
+ h32 += XXH_get32bits(p) * PRIME32_3;
+ h32 = XXH_rotl32(h32, 17) * PRIME32_4 ;
+ p+=4;
+ }
+
+ while (p> 15;
+ h32 *= PRIME32_2;
+ h32 ^= h32 >> 13;
+ h32 *= PRIME32_3;
+ h32 ^= h32 >> 16;
+
+ return h32;
+}
+
+
+unsigned XXH32 (const void* input, size_t len, unsigned seed)
+{
+#if 0
+ /* Simple version, good for code maintenance, but unfortunately slow for small inputs */
+ XXH32_state_t state;
+ XXH32_reset(&state, seed);
+ XXH32_update(&state, input, len);
+ return XXH32_digest(&state);
+#else
+ XXH_endianess endian_detected = (XXH_endianess)XXH_CPU_LITTLE_ENDIAN;
+
+# if !defined(XXH_USE_UNALIGNED_ACCESS)
+ if ((((size_t)input) & 3) == 0) /* Input is 4-bytes aligned, leverage the speed benefit */
+ {
+ if ((endian_detected==XXH_littleEndian) || XXH_FORCE_NATIVE_FORMAT)
+ return XXH32_endian_align(input, len, seed, XXH_littleEndian, XXH_aligned);
+ else
+ return XXH32_endian_align(input, len, seed, XXH_bigEndian, XXH_aligned);
+ }
+# endif
+
+ if ((endian_detected==XXH_littleEndian) || XXH_FORCE_NATIVE_FORMAT)
+ return XXH32_endian_align(input, len, seed, XXH_littleEndian, XXH_unaligned);
+ else
+ return XXH32_endian_align(input, len, seed, XXH_bigEndian, XXH_unaligned);
+#endif
+}
+
+FORCE_INLINE U64 XXH64_endian_align(const void* input, size_t len, U64 seed, XXH_endianess endian, XXH_alignment align)
+{
+ const BYTE* p = (const BYTE*)input;
+ const BYTE* bEnd = p + len;
+ U64 h64;
+#define XXH_get64bits(p) XXH_readLE64_align(p, endian, align)
+
+#ifdef XXH_ACCEPT_NULL_INPUT_POINTER
+ if (p==NULL)
+ {
+ len=0;
+ bEnd=p=(const BYTE*)(size_t)32;
+ }
+#endif
+
+ if (len>=32)
+ {
+ const BYTE* const limit = bEnd - 32;
+ U64 v1 = seed + PRIME64_1 + PRIME64_2;
+ U64 v2 = seed + PRIME64_2;
+ U64 v3 = seed + 0;
+ U64 v4 = seed - PRIME64_1;
+
+ do
+ {
+ v1 += XXH_get64bits(p) * PRIME64_2;
+ p+=8;
+ v1 = XXH_rotl64(v1, 31);
+ v1 *= PRIME64_1;
+ v2 += XXH_get64bits(p) * PRIME64_2;
+ p+=8;
+ v2 = XXH_rotl64(v2, 31);
+ v2 *= PRIME64_1;
+ v3 += XXH_get64bits(p) * PRIME64_2;
+ p+=8;
+ v3 = XXH_rotl64(v3, 31);
+ v3 *= PRIME64_1;
+ v4 += XXH_get64bits(p) * PRIME64_2;
+ p+=8;
+ v4 = XXH_rotl64(v4, 31);
+ v4 *= PRIME64_1;
+ }
+ while (p<=limit);
+
+ h64 = XXH_rotl64(v1, 1) + XXH_rotl64(v2, 7) + XXH_rotl64(v3, 12) + XXH_rotl64(v4, 18);
+
+ v1 *= PRIME64_2;
+ v1 = XXH_rotl64(v1, 31);
+ v1 *= PRIME64_1;
+ h64 ^= v1;
+ h64 = h64 * PRIME64_1 + PRIME64_4;
+
+ v2 *= PRIME64_2;
+ v2 = XXH_rotl64(v2, 31);
+ v2 *= PRIME64_1;
+ h64 ^= v2;
+ h64 = h64 * PRIME64_1 + PRIME64_4;
+
+ v3 *= PRIME64_2;
+ v3 = XXH_rotl64(v3, 31);
+ v3 *= PRIME64_1;
+ h64 ^= v3;
+ h64 = h64 * PRIME64_1 + PRIME64_4;
+
+ v4 *= PRIME64_2;
+ v4 = XXH_rotl64(v4, 31);
+ v4 *= PRIME64_1;
+ h64 ^= v4;
+ h64 = h64 * PRIME64_1 + PRIME64_4;
+ }
+ else
+ {
+ h64 = seed + PRIME64_5;
+ }
+
+ h64 += (U64) len;
+
+ while (p+8<=bEnd)
+ {
+ U64 k1 = XXH_get64bits(p);
+ k1 *= PRIME64_2;
+ k1 = XXH_rotl64(k1,31);
+ k1 *= PRIME64_1;
+ h64 ^= k1;
+ h64 = XXH_rotl64(h64,27) * PRIME64_1 + PRIME64_4;
+ p+=8;
+ }
+
+ if (p+4<=bEnd)
+ {
+ h64 ^= (U64)(XXH_get32bits(p)) * PRIME64_1;
+ h64 = XXH_rotl64(h64, 23) * PRIME64_2 + PRIME64_3;
+ p+=4;
+ }
+
+ while (p> 33;
+ h64 *= PRIME64_2;
+ h64 ^= h64 >> 29;
+ h64 *= PRIME64_3;
+ h64 ^= h64 >> 32;
+
+ return h64;
+}
+
+
+unsigned long long XXH64 (const void* input, size_t len, unsigned long long seed)
+{
+#if 0
+ /* Simple version, good for code maintenance, but unfortunately slow for small inputs */
+ XXH64_state_t state;
+ XXH64_reset(&state, seed);
+ XXH64_update(&state, input, len);
+ return XXH64_digest(&state);
+#else
+ XXH_endianess endian_detected = (XXH_endianess)XXH_CPU_LITTLE_ENDIAN;
+
+# if !defined(XXH_USE_UNALIGNED_ACCESS)
+ if ((((size_t)input) & 7)==0) /* Input is aligned, let's leverage the speed advantage */
+ {
+ if ((endian_detected==XXH_littleEndian) || XXH_FORCE_NATIVE_FORMAT)
+ return XXH64_endian_align(input, len, seed, XXH_littleEndian, XXH_aligned);
+ else
+ return XXH64_endian_align(input, len, seed, XXH_bigEndian, XXH_aligned);
+ }
+# endif
+
+ if ((endian_detected==XXH_littleEndian) || XXH_FORCE_NATIVE_FORMAT)
+ return XXH64_endian_align(input, len, seed, XXH_littleEndian, XXH_unaligned);
+ else
+ return XXH64_endian_align(input, len, seed, XXH_bigEndian, XXH_unaligned);
+#endif
+}
+
+/****************************************************
+* Advanced Hash Functions
+****************************************************/
+
+/*** Allocation ***/
+typedef struct
+{
+ U64 total_len;
+ U32 seed;
+ U32 v1;
+ U32 v2;
+ U32 v3;
+ U32 v4;
+ U32 mem32[4]; /* defined as U32 for alignment */
+ U32 memsize;
+} XXH_istate32_t;
+
+typedef struct
+{
+ U64 total_len;
+ U64 seed;
+ U64 v1;
+ U64 v2;
+ U64 v3;
+ U64 v4;
+ U64 mem64[4]; /* defined as U64 for alignment */
+ U32 memsize;
+} XXH_istate64_t;
+
+
+XXH32_state_t* XXH32_createState(void)
+{
+ XXH_STATIC_ASSERT(sizeof(XXH32_state_t) >= sizeof(XXH_istate32_t)); /* A compilation error here means XXH32_state_t is not large enough */
+ return (XXH32_state_t*)XXH_malloc(sizeof(XXH32_state_t));
+}
+XXH_errorcode XXH32_freeState(XXH32_state_t* statePtr)
+{
+ XXH_free(statePtr);
+ return XXH_OK;
+}
+
+XXH64_state_t* XXH64_createState(void)
+{
+ XXH_STATIC_ASSERT(sizeof(XXH64_state_t) >= sizeof(XXH_istate64_t)); /* A compilation error here means XXH64_state_t is not large enough */
+ return (XXH64_state_t*)XXH_malloc(sizeof(XXH64_state_t));
+}
+XXH_errorcode XXH64_freeState(XXH64_state_t* statePtr)
+{
+ XXH_free(statePtr);
+ return XXH_OK;
+}
+
+
+/*** Hash feed ***/
+
+XXH_errorcode XXH32_reset(XXH32_state_t* state_in, U32 seed)
+{
+ XXH_istate32_t* state = (XXH_istate32_t*) state_in;
+ state->seed = seed;
+ state->v1 = seed + PRIME32_1 + PRIME32_2;
+ state->v2 = seed + PRIME32_2;
+ state->v3 = seed + 0;
+ state->v4 = seed - PRIME32_1;
+ state->total_len = 0;
+ state->memsize = 0;
+ return XXH_OK;
+}
+
+XXH_errorcode XXH64_reset(XXH64_state_t* state_in, unsigned long long seed)
+{
+ XXH_istate64_t* state = (XXH_istate64_t*) state_in;
+ state->seed = seed;
+ state->v1 = seed + PRIME64_1 + PRIME64_2;
+ state->v2 = seed + PRIME64_2;
+ state->v3 = seed + 0;
+ state->v4 = seed - PRIME64_1;
+ state->total_len = 0;
+ state->memsize = 0;
+ return XXH_OK;
+}
+
+
+FORCE_INLINE XXH_errorcode XXH32_update_endian (XXH32_state_t* state_in, const void* input, size_t len, XXH_endianess endian)
+{
+ XXH_istate32_t* state = (XXH_istate32_t *) state_in;
+ const BYTE* p = (const BYTE*)input;
+ const BYTE* const bEnd = p + len;
+
+#ifdef XXH_ACCEPT_NULL_INPUT_POINTER
+ if (input==NULL) return XXH_ERROR;
+#endif
+
+ state->total_len += len;
+
+ if (state->memsize + len < 16) /* fill in tmp buffer */
+ {
+ XXH_memcpy((BYTE*)(state->mem32) + state->memsize, input, len);
+ state->memsize += (U32)len;
+ return XXH_OK;
+ }
+
+ if (state->memsize) /* some data left from previous update */
+ {
+ XXH_memcpy((BYTE*)(state->mem32) + state->memsize, input, 16-state->memsize);
+ {
+ const U32* p32 = state->mem32;
+ state->v1 += XXH_readLE32(p32, endian) * PRIME32_2;
+ state->v1 = XXH_rotl32(state->v1, 13);
+ state->v1 *= PRIME32_1;
+ p32++;
+ state->v2 += XXH_readLE32(p32, endian) * PRIME32_2;
+ state->v2 = XXH_rotl32(state->v2, 13);
+ state->v2 *= PRIME32_1;
+ p32++;
+ state->v3 += XXH_readLE32(p32, endian) * PRIME32_2;
+ state->v3 = XXH_rotl32(state->v3, 13);
+ state->v3 *= PRIME32_1;
+ p32++;
+ state->v4 += XXH_readLE32(p32, endian) * PRIME32_2;
+ state->v4 = XXH_rotl32(state->v4, 13);
+ state->v4 *= PRIME32_1;
+ p32++;
+ }
+ p += 16-state->memsize;
+ state->memsize = 0;
+ }
+
+ if (p <= bEnd-16)
+ {
+ const BYTE* const limit = bEnd - 16;
+ U32 v1 = state->v1;
+ U32 v2 = state->v2;
+ U32 v3 = state->v3;
+ U32 v4 = state->v4;
+
+ do
+ {
+ v1 += XXH_readLE32(p, endian) * PRIME32_2;
+ v1 = XXH_rotl32(v1, 13);
+ v1 *= PRIME32_1;
+ p+=4;
+ v2 += XXH_readLE32(p, endian) * PRIME32_2;
+ v2 = XXH_rotl32(v2, 13);
+ v2 *= PRIME32_1;
+ p+=4;
+ v3 += XXH_readLE32(p, endian) * PRIME32_2;
+ v3 = XXH_rotl32(v3, 13);
+ v3 *= PRIME32_1;
+ p+=4;
+ v4 += XXH_readLE32(p, endian) * PRIME32_2;
+ v4 = XXH_rotl32(v4, 13);
+ v4 *= PRIME32_1;
+ p+=4;
+ }
+ while (p<=limit);
+
+ state->v1 = v1;
+ state->v2 = v2;
+ state->v3 = v3;
+ state->v4 = v4;
+ }
+
+ if (p < bEnd)
+ {
+ XXH_memcpy(state->mem32, p, bEnd-p);
+ state->memsize = (int)(bEnd-p);
+ }
+
+ return XXH_OK;
+}
+
+XXH_errorcode XXH32_update (XXH32_state_t* state_in, const void* input, size_t len)
+{
+ XXH_endianess endian_detected = (XXH_endianess)XXH_CPU_LITTLE_ENDIAN;
+
+ if ((endian_detected==XXH_littleEndian) || XXH_FORCE_NATIVE_FORMAT)
+ return XXH32_update_endian(state_in, input, len, XXH_littleEndian);
+ else
+ return XXH32_update_endian(state_in, input, len, XXH_bigEndian);
+}
+
+
+
+FORCE_INLINE U32 XXH32_digest_endian (const XXH32_state_t* state_in, XXH_endianess endian)
+{
+ const XXH_istate32_t* state = (const XXH_istate32_t*) state_in;
+ const BYTE * p = (const BYTE*)state->mem32;
+ const BYTE* bEnd = (const BYTE*)(state->mem32) + state->memsize;
+ U32 h32;
+
+ if (state->total_len >= 16)
+ {
+ h32 = XXH_rotl32(state->v1, 1) + XXH_rotl32(state->v2, 7) + XXH_rotl32(state->v3, 12) + XXH_rotl32(state->v4, 18);
+ }
+ else
+ {
+ h32 = state->seed + PRIME32_5;
+ }
+
+ h32 += (U32) state->total_len;
+
+ while (p+4<=bEnd)
+ {
+ h32 += XXH_readLE32(p, endian) * PRIME32_3;
+ h32 = XXH_rotl32(h32, 17) * PRIME32_4;
+ p+=4;
+ }
+
+ while (p> 15;
+ h32 *= PRIME32_2;
+ h32 ^= h32 >> 13;
+ h32 *= PRIME32_3;
+ h32 ^= h32 >> 16;
+
+ return h32;
+}
+
+
+U32 XXH32_digest (const XXH32_state_t* state_in)
+{
+ XXH_endianess endian_detected = (XXH_endianess)XXH_CPU_LITTLE_ENDIAN;
+
+ if ((endian_detected==XXH_littleEndian) || XXH_FORCE_NATIVE_FORMAT)
+ return XXH32_digest_endian(state_in, XXH_littleEndian);
+ else
+ return XXH32_digest_endian(state_in, XXH_bigEndian);
+}
+
+
+FORCE_INLINE XXH_errorcode XXH64_update_endian (XXH64_state_t* state_in, const void* input, size_t len, XXH_endianess endian)
+{
+ XXH_istate64_t * state = (XXH_istate64_t *) state_in;
+ const BYTE* p = (const BYTE*)input;
+ const BYTE* const bEnd = p + len;
+
+#ifdef XXH_ACCEPT_NULL_INPUT_POINTER
+ if (input==NULL) return XXH_ERROR;
+#endif
+
+ state->total_len += len;
+
+ if (state->memsize + len < 32) /* fill in tmp buffer */
+ {
+ XXH_memcpy(((BYTE*)state->mem64) + state->memsize, input, len);
+ state->memsize += (U32)len;
+ return XXH_OK;
+ }
+
+ if (state->memsize) /* some data left from previous update */
+ {
+ XXH_memcpy(((BYTE*)state->mem64) + state->memsize, input, 32-state->memsize);
+ {
+ const U64* p64 = state->mem64;
+ state->v1 += XXH_readLE64(p64, endian) * PRIME64_2;
+ state->v1 = XXH_rotl64(state->v1, 31);
+ state->v1 *= PRIME64_1;
+ p64++;
+ state->v2 += XXH_readLE64(p64, endian) * PRIME64_2;
+ state->v2 = XXH_rotl64(state->v2, 31);
+ state->v2 *= PRIME64_1;
+ p64++;
+ state->v3 += XXH_readLE64(p64, endian) * PRIME64_2;
+ state->v3 = XXH_rotl64(state->v3, 31);
+ state->v3 *= PRIME64_1;
+ p64++;
+ state->v4 += XXH_readLE64(p64, endian) * PRIME64_2;
+ state->v4 = XXH_rotl64(state->v4, 31);
+ state->v4 *= PRIME64_1;
+ p64++;
+ }
+ p += 32-state->memsize;
+ state->memsize = 0;
+ }
+
+ if (p+32 <= bEnd)
+ {
+ const BYTE* const limit = bEnd - 32;
+ U64 v1 = state->v1;
+ U64 v2 = state->v2;
+ U64 v3 = state->v3;
+ U64 v4 = state->v4;
+
+ do
+ {
+ v1 += XXH_readLE64(p, endian) * PRIME64_2;
+ v1 = XXH_rotl64(v1, 31);
+ v1 *= PRIME64_1;
+ p+=8;
+ v2 += XXH_readLE64(p, endian) * PRIME64_2;
+ v2 = XXH_rotl64(v2, 31);
+ v2 *= PRIME64_1;
+ p+=8;
+ v3 += XXH_readLE64(p, endian) * PRIME64_2;
+ v3 = XXH_rotl64(v3, 31);
+ v3 *= PRIME64_1;
+ p+=8;
+ v4 += XXH_readLE64(p, endian) * PRIME64_2;
+ v4 = XXH_rotl64(v4, 31);
+ v4 *= PRIME64_1;
+ p+=8;
+ }
+ while (p<=limit);
+
+ state->v1 = v1;
+ state->v2 = v2;
+ state->v3 = v3;
+ state->v4 = v4;
+ }
+
+ if (p < bEnd)
+ {
+ XXH_memcpy(state->mem64, p, bEnd-p);
+ state->memsize = (int)(bEnd-p);
+ }
+
+ return XXH_OK;
+}
+
+XXH_errorcode XXH64_update (XXH64_state_t* state_in, const void* input, size_t len)
+{
+ XXH_endianess endian_detected = (XXH_endianess)XXH_CPU_LITTLE_ENDIAN;
+
+ if ((endian_detected==XXH_littleEndian) || XXH_FORCE_NATIVE_FORMAT)
+ return XXH64_update_endian(state_in, input, len, XXH_littleEndian);
+ else
+ return XXH64_update_endian(state_in, input, len, XXH_bigEndian);
+}
+
+
+
+FORCE_INLINE U64 XXH64_digest_endian (const XXH64_state_t* state_in, XXH_endianess endian)
+{
+ const XXH_istate64_t * state = (const XXH_istate64_t *) state_in;
+ const BYTE * p = (const BYTE*)state->mem64;
+ const BYTE* bEnd = (const BYTE*)state->mem64 + state->memsize;
+ U64 h64;
+
+ if (state->total_len >= 32)
+ {
+ U64 v1 = state->v1;
+ U64 v2 = state->v2;
+ U64 v3 = state->v3;
+ U64 v4 = state->v4;
+
+ h64 = XXH_rotl64(v1, 1) + XXH_rotl64(v2, 7) + XXH_rotl64(v3, 12) + XXH_rotl64(v4, 18);
+
+ v1 *= PRIME64_2;
+ v1 = XXH_rotl64(v1, 31);
+ v1 *= PRIME64_1;
+ h64 ^= v1;
+ h64 = h64*PRIME64_1 + PRIME64_4;
+
+ v2 *= PRIME64_2;
+ v2 = XXH_rotl64(v2, 31);
+ v2 *= PRIME64_1;
+ h64 ^= v2;
+ h64 = h64*PRIME64_1 + PRIME64_4;
+
+ v3 *= PRIME64_2;
+ v3 = XXH_rotl64(v3, 31);
+ v3 *= PRIME64_1;
+ h64 ^= v3;
+ h64 = h64*PRIME64_1 + PRIME64_4;
+
+ v4 *= PRIME64_2;
+ v4 = XXH_rotl64(v4, 31);
+ v4 *= PRIME64_1;
+ h64 ^= v4;
+ h64 = h64*PRIME64_1 + PRIME64_4;
+ }
+ else
+ {
+ h64 = state->seed + PRIME64_5;
+ }
+
+ h64 += (U64) state->total_len;
+
+ while (p+8<=bEnd)
+ {
+ U64 k1 = XXH_readLE64(p, endian);
+ k1 *= PRIME64_2;
+ k1 = XXH_rotl64(k1,31);
+ k1 *= PRIME64_1;
+ h64 ^= k1;
+ h64 = XXH_rotl64(h64,27) * PRIME64_1 + PRIME64_4;
+ p+=8;
+ }
+
+ if (p+4<=bEnd)
+ {
+ h64 ^= (U64)(XXH_readLE32(p, endian)) * PRIME64_1;
+ h64 = XXH_rotl64(h64, 23) * PRIME64_2 + PRIME64_3;
+ p+=4;
+ }
+
+ while (p> 33;
+ h64 *= PRIME64_2;
+ h64 ^= h64 >> 29;
+ h64 *= PRIME64_3;
+ h64 ^= h64 >> 32;
+
+ return h64;
+}
+
+
+unsigned long long XXH64_digest (const XXH64_state_t* state_in)
+{
+ XXH_endianess endian_detected = (XXH_endianess)XXH_CPU_LITTLE_ENDIAN;
+
+ if ((endian_detected==XXH_littleEndian) || XXH_FORCE_NATIVE_FORMAT)
+ return XXH64_digest_endian(state_in, XXH_littleEndian);
+ else
+ return XXH64_digest_endian(state_in, XXH_bigEndian);
+}
+
+
diff -Nru paraview-5.0.0+dfsg1/ThirdParty/lz4/vtklz4/lib/xxhash.h paraview-5.0.1+dfsg1/ThirdParty/lz4/vtklz4/lib/xxhash.h
--- paraview-5.0.0+dfsg1/ThirdParty/lz4/vtklz4/lib/xxhash.h 1970-01-01 00:00:00.000000000 +0000
+++ paraview-5.0.1+dfsg1/ThirdParty/lz4/vtklz4/lib/xxhash.h 2016-03-28 15:06:22.000000000 +0000
@@ -0,0 +1,194 @@
+/*
+ xxHash - Extremely Fast Hash algorithm
+ Header File
+ Copyright (C) 2012-2015, Yann Collet.
+
+ BSD 2-Clause License (http://www.opensource.org/licenses/bsd-license.php)
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are
+ met:
+
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above
+ copyright notice, this list of conditions and the following disclaimer
+ in the documentation and/or other materials provided with the
+ distribution.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+ You can contact the author at :
+ - xxHash source repository : https://github.com/Cyan4973/xxHash
+*/
+
+/* Notice extracted from xxHash homepage :
+
+xxHash is an extremely fast Hash algorithm, running at RAM speed limits.
+It also successfully passes all tests from the SMHasher suite.
+
+Comparison (single thread, Windows Seven 32 bits, using SMHasher on a Core 2 Duo @3GHz)
+
+Name Speed Q.Score Author
+xxHash 5.4 GB/s 10
+CrapWow 3.2 GB/s 2 Andrew
+MumurHash 3a 2.7 GB/s 10 Austin Appleby
+SpookyHash 2.0 GB/s 10 Bob Jenkins
+SBox 1.4 GB/s 9 Bret Mulvey
+Lookup3 1.2 GB/s 9 Bob Jenkins
+SuperFastHash 1.2 GB/s 1 Paul Hsieh
+CityHash64 1.05 GB/s 10 Pike & Alakuijala
+FNV 0.55 GB/s 5 Fowler, Noll, Vo
+CRC32 0.43 GB/s 9
+MD5-32 0.33 GB/s 10 Ronald L. Rivest
+SHA1-32 0.28 GB/s 10
+
+Q.Score is a measure of quality of the hash function.
+It depends on successfully passing SMHasher test set.
+10 is a perfect score.
+
+A 64-bits version, named XXH64, is available since r35.
+It offers much better speed, but for 64-bits applications only.
+Name Speed on 64 bits Speed on 32 bits
+XXH64 13.8 GB/s 1.9 GB/s
+XXH32 6.8 GB/s 6.0 GB/s
+*/
+
+#pragma once
+
+#include "vtklz4_mangle.h"
+
+#if defined (__cplusplus)
+extern "C" {
+#endif
+
+
+/*****************************
+* Definitions
+*****************************/
+#include /* size_t */
+typedef enum { XXH_OK=0, XXH_ERROR } XXH_errorcode;
+
+
+/*****************************
+* Namespace Emulation
+*****************************/
+/* Motivations :
+
+If you need to include xxHash into your library,
+but wish to avoid xxHash symbols to be present on your library interface
+in an effort to avoid potential name collision if another library also includes xxHash,
+
+you can use XXH_NAMESPACE, which will automatically prefix any symbol from xxHash
+with the value of XXH_NAMESPACE (so avoid to keep it NULL, and avoid numeric values).
+
+Note that no change is required within the calling program :
+it can still call xxHash functions using their regular name.
+They will be automatically translated by this header.
+*/
+#ifdef XXH_NAMESPACE
+# define XXH_CAT(A,B) A##B
+# define XXH_NAME2(A,B) XXH_CAT(A,B)
+# define XXH32 XXH_NAME2(XXH_NAMESPACE, XXH32)
+# define XXH64 XXH_NAME2(XXH_NAMESPACE, XXH64)
+# define XXH32_createState XXH_NAME2(XXH_NAMESPACE, XXH32_createState)
+# define XXH64_createState XXH_NAME2(XXH_NAMESPACE, XXH64_createState)
+# define XXH32_freeState XXH_NAME2(XXH_NAMESPACE, XXH32_freeState)
+# define XXH64_freeState XXH_NAME2(XXH_NAMESPACE, XXH64_freeState)
+# define XXH32_reset XXH_NAME2(XXH_NAMESPACE, XXH32_reset)
+# define XXH64_reset XXH_NAME2(XXH_NAMESPACE, XXH64_reset)
+# define XXH32_update XXH_NAME2(XXH_NAMESPACE, XXH32_update)
+# define XXH64_update XXH_NAME2(XXH_NAMESPACE, XXH64_update)
+# define XXH32_digest XXH_NAME2(XXH_NAMESPACE, XXH32_digest)
+# define XXH64_digest XXH_NAME2(XXH_NAMESPACE, XXH64_digest)
+#endif
+
+
+/*****************************
+* Simple Hash Functions
+*****************************/
+
+unsigned int XXH32 (const void* input, size_t length, unsigned seed);
+unsigned long long XXH64 (const void* input, size_t length, unsigned long long seed);
+
+/*
+XXH32() :
+ Calculate the 32-bits hash of sequence "length" bytes stored at memory address "input".
+ The memory between input & input+length must be valid (allocated and read-accessible).
+ "seed" can be used to alter the result predictably.
+ This function successfully passes all SMHasher tests.
+ Speed on Core 2 Duo @ 3 GHz (single thread, SMHasher benchmark) : 5.4 GB/s
+XXH64() :
+ Calculate the 64-bits hash of sequence of length "len" stored at memory address "input".
+ Faster on 64-bits systems. Slower on 32-bits systems.
+*/
+
+
+
+/*****************************
+* Advanced Hash Functions
+*****************************/
+typedef struct { long long ll[ 6]; } XXH32_state_t;
+typedef struct { long long ll[11]; } XXH64_state_t;
+
+/*
+These structures allow static allocation of XXH states.
+States must then be initialized using XXHnn_reset() before first use.
+
+If you prefer dynamic allocation, please refer to functions below.
+*/
+
+XXH32_state_t* XXH32_createState(void);
+XXH_errorcode XXH32_freeState(XXH32_state_t* statePtr);
+
+XXH64_state_t* XXH64_createState(void);
+XXH_errorcode XXH64_freeState(XXH64_state_t* statePtr);
+
+/*
+These functions create and release memory for XXH state.
+States must then be initialized using XXHnn_reset() before first use.
+*/
+
+
+XXH_errorcode XXH32_reset (XXH32_state_t* statePtr, unsigned seed);
+XXH_errorcode XXH32_update (XXH32_state_t* statePtr, const void* input, size_t length);
+unsigned int XXH32_digest (const XXH32_state_t* statePtr);
+
+XXH_errorcode XXH64_reset (XXH64_state_t* statePtr, unsigned long long seed);
+XXH_errorcode XXH64_update (XXH64_state_t* statePtr, const void* input, size_t length);
+unsigned long long XXH64_digest (const XXH64_state_t* statePtr);
+
+/*
+These functions calculate the xxHash of an input provided in multiple smaller packets,
+as opposed to an input provided as a single block.
+
+XXH state space must first be allocated, using either static or dynamic method provided above.
+
+Start a new hash by initializing state with a seed, using XXHnn_reset().
+
+Then, feed the hash state by calling XXHnn_update() as many times as necessary.
+Obviously, input must be valid, meaning allocated and read accessible.
+The function returns an error code, with 0 meaning OK, and any other value meaning there is an error.
+
+Finally, you can produce a hash anytime, by using XXHnn_digest().
+This function returns the final nn-bits hash.
+You can nonetheless continue feeding the hash state with more input,
+and therefore get some new hashes, by calling again XXHnn_digest().
+
+When you are done, don't forget to free XXH state space, using typically XXHnn_freeState().
+*/
+
+
+#if defined (__cplusplus)
+}
+#endif
diff -Nru paraview-5.0.0+dfsg1/ThirdParty/lz4/vtklz4/README.md paraview-5.0.1+dfsg1/ThirdParty/lz4/vtklz4/README.md
--- paraview-5.0.0+dfsg1/ThirdParty/lz4/vtklz4/README.md 1970-01-01 00:00:00.000000000 +0000
+++ paraview-5.0.1+dfsg1/ThirdParty/lz4/vtklz4/README.md 2016-03-28 15:06:22.000000000 +0000
@@ -0,0 +1,88 @@
+LZ4 - Extremely fast compression
+================================
+
+LZ4 is lossless compression algorithm,
+providing compression speed at 400 MB/s per core,
+scalable with multi-cores CPU.
+It also features an extremely fast decoder,
+with speed in multiple GB/s per core,
+typically reaching RAM speed limits on multi-core systems.
+
+Speed can be tuned dynamically, selecting an "acceleration" factor
+which trades compression ratio for more speed up.
+On the other end, a high compression derivative, LZ4_HC, is also provided,
+trading CPU time for improved compression ratio.
+All versions feature the same excellent decompression speed.
+
+
+|Branch |Status |
+|------------|---------|
+|master | [![Build Status][travisMasterBadge]][travisLink] [![Build status][AppveyorMasterBadge]][AppveyorLink] [![coverity][coverBadge]][coverlink] |
+|dev | [![Build Status][travisDevBadge]][travisLink] [![Build status][AppveyorDevBadge]][AppveyorLink] |
+
+[travisMasterBadge]: https://travis-ci.org/Cyan4973/lz4.svg?branch=master "Continuous Integration test suite"
+[travisDevBadge]: https://travis-ci.org/Cyan4973/lz4.svg?branch=dev "Continuous Integration test suite"
+[travisLink]: https://ci.appveyor.com/project/YannCollet/lz4
+[AppveyorMasterBadge]: https://ci.appveyor.com/api/projects/status/v6kxv9si529477cq/branch/master?svg=true "Visual test suite"
+[AppveyorDevBadge]: https://ci.appveyor.com/api/projects/status/v6kxv9si529477cq/branch/dev?svg=true "Visual test suite"
+[AppveyorLink]: https://ci.appveyor.com/project/YannCollet/lz4
+[coverBadge]: https://scan.coverity.com/projects/4735/badge.svg "Static code analysis of Master branch"
+[coverlink]: https://scan.coverity.com/projects/4735
+
+> **Branch Policy:**
+
+> - The "master" branch is considered stable, at all times.
+> - The "dev" branch is the one where all contributions must be merged
+ before being promoted to master.
+> + If you plan to propose a patch, please commit into the "dev" branch,
+ or its own feature branch.
+ Direct commit to "master" are not permitted.
+
+Benchmarks
+-------------------------
+
+The benchmark uses the [Open-Source Benchmark program by m^2 (v0.14.3)]
+compiled with GCC v4.8.2 on Linux Mint 64-bits v17.
+The reference system uses a Core i5-4300U @1.9GHz.
+Benchmark evaluates the compression of reference [Silesia Corpus]
+in single-thread mode.
+
+| Compressor | Ratio | Compression | Decompression |
+| ---------- | ----- | ----------- | ------------- |
+| memcpy | 1.000 | 4200 MB/s | 4200 MB/s |
+|**LZ4 fast 17 (r129)**| 1.607 |**690 MB/s** | **2220 MB/s** |
+|**LZ4 default (r129)**|**2.101**|**385 MB/s** | **1850 MB/s** |
+| LZO 2.06 | 2.108 | 350 MB/s | 510 MB/s |
+| QuickLZ 1.5.1.b6 | 2.238 | 320 MB/s | 380 MB/s |
+| Snappy 1.1.0 | 2.091 | 250 MB/s | 960 MB/s |
+| LZF v3.6 | 2.073 | 175 MB/s | 500 MB/s |
+| zlib 1.2.8 -1 | 2.730 | 59 MB/s | 250 MB/s |
+|**LZ4 HC (r129)** |**2.720**| 22 MB/s | **1830 MB/s** |
+| zlib 1.2.8 -6 | 3.099 | 18 MB/s | 270 MB/s |
+
+
+Documentation
+-------------------------
+
+The raw LZ4 block compression format is detailed within [lz4_Block_format].
+
+To compress an arbitrarily long file or data stream, multiple blocks are required.
+Organizing these blocks and providing a common header format to handle their content
+is the purpose of the Frame format, defined into [lz4_Frame_format].
+Interoperable versions of LZ4 must respect this frame format.
+
+
+Other source versions
+-------------------------
+
+Beyond the C reference source,
+many contributors have created versions of lz4 in multiple languages
+(Java, C#, Python, Perl, Ruby, etc.).
+A list of known source ports is maintained on the [LZ4 Homepage].
+
+
+[Open-Source Benchmark program by m^2 (v0.14.3)]: http://encode.ru/threads/1371-Filesystem-benchmark?p=34029&viewfull=1#post34029
+[Silesia Corpus]: http://sun.aei.polsl.pl/~sdeor/index.php?page=silesia
+[lz4_Block_format]: lz4_Block_format.md
+[lz4_Frame_format]: lz4_Frame_format.md
+[LZ4 Homepage]: http://www.lz4.org
\ No newline at end of file
diff -Nru paraview-5.0.0+dfsg1/ThirdParty/lz4/vtk_lz4.h.in paraview-5.0.1+dfsg1/ThirdParty/lz4/vtk_lz4.h.in
--- paraview-5.0.0+dfsg1/ThirdParty/lz4/vtk_lz4.h.in 1970-01-01 00:00:00.000000000 +0000
+++ paraview-5.0.1+dfsg1/ThirdParty/lz4/vtk_lz4.h.in 2016-03-28 15:06:22.000000000 +0000
@@ -0,0 +1,25 @@
+/*=========================================================================
+
+ Program: ParaView
+ Module: vtk_lz4.h.in
+
+ Copyright (c) Kitware, Inc.
+ All rights reserved.
+ See Copyright.txt or http://www.paraview.org/HTML/Copyright.html for details.
+
+ This software is distributed WITHOUT ANY WARRANTY; without even
+ the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
+ PURPOSE. See the above copyright notice for more information.
+
+=========================================================================*/
+#ifndef vtk_lz4_h
+#define vtk_lz4_h
+
+#cmakedefine VTK_USE_SYSTEM_LZ4
+#ifdef VTK_USE_SYSTEM_LZ4
+# include
+#else
+# include
+#endif
+
+#endif
diff -Nru paraview-5.0.0+dfsg1/ThirdParty/update-common.sh paraview-5.0.1+dfsg1/ThirdParty/update-common.sh
--- paraview-5.0.0+dfsg1/ThirdParty/update-common.sh 1970-01-01 00:00:00.000000000 +0000
+++ paraview-5.0.1+dfsg1/ThirdParty/update-common.sh 2016-03-28 15:06:22.000000000 +0000
@@ -0,0 +1,146 @@
+########################################################################
+# Script for updating third party packages.
+#
+# This script should be sourced in a project-specific script which sets
+# the following variables:
+#
+# name
+# The name of the project.
+# ownership
+# A git author name/email for the commits.
+# subtree
+# The location of the thirdparty package within the main source
+# tree.
+# repo
+# The git repository to use as upstream.
+# tag
+# The tag, branch or commit hash to use for upstream.
+# shortlog
+# Optional. Set to 'true' to get a shortlog in the commit message.
+#
+# Additionally, an "extract_source" function must be defined. It will be
+# run within the checkout of the project on the requested tag. It should
+# should place the desired tree into $extractdir/$name-reduced. This
+# directory will be used as the newest commit for the project.
+#
+# For convenience, the function may use the "git_archive" function which
+# does a standard "git archive" extraction using the (optional) "paths"
+# variable to only extract a subset of the source tree.
+########################################################################
+
+########################################################################
+# Utility functions
+########################################################################
+git_archive () {
+ git archive --prefix="$name-reduced/" HEAD -- $paths | \
+ tar -C "$extractdir" -x
+}
+
+die () {
+ echo >&2 "$@"
+ exit 1
+}
+
+warn () {
+ echo >&2 "warning: $@"
+}
+
+readonly regex_date='20[0-9][0-9]-[0-9][0-9]-[0-9][0-9]'
+readonly basehash_regex="$name $regex_date ([0-9a-f]*)"
+readonly basehash="$( git rev-list --author="$ownership" --grep="$basehash_regex" -n 1 HEAD )"
+readonly upstream_old_short="$( git cat-file commit "$basehash" | sed -n '/'"$basehash_regex"'/ {s/.*(//;s/)//;p}' | egrep '^[0-9a-f]+$' )"
+
+########################################################################
+# Sanity checking
+########################################################################
+[ -n "$name" ] || \
+ die "'name' is empty"
+[ -n "$ownership" ] || \
+ die "'ownership' is empty"
+[ -n "$subtree" ] || \
+ die "'subtree' is empty"
+[ -n "$repo" ] || \
+ die "'repo' is empty"
+[ -n "$tag" ] || \
+ die "'tag' is empty"
+[ -n "$basehash" ] || \
+ warn "'basehash' is empty; performing initial import"
+readonly do_shortlog="${shortlog-false}"
+
+readonly workdir="$PWD/work"
+readonly upstreamdir="$workdir/upstream"
+readonly extractdir="$workdir/extract"
+
+[ -d "$workdir" ] && \
+ die "error: workdir '$workdir' already exists"
+
+trap "rm -rf '$workdir'" EXIT
+
+# Get upstream
+git clone "$repo" "$upstreamdir"
+
+if [ -n "$basehash" ]; then
+ # Use the existing package's history
+ git worktree add "$extractdir" "$basehash"
+ # Clear out the working tree
+ pushd "$extractdir"
+ git ls-files | xargs rm -v
+ popd
+else
+ # Create a repo to hold this package's history
+ mkdir -p "$extractdir"
+ git -C "$extractdir" init
+fi
+
+# Extract the subset of upstream we care about
+pushd "$upstreamdir"
+git checkout "$tag"
+readonly upstream_hash="$( git rev-parse HEAD )"
+readonly upstream_hash_short="$( git rev-parse --short=8 "$upstream_hash" )"
+readonly upstream_datetime="$( git rev-list "$upstream_hash" --format='%ci' -n 1 | grep -e "^$regex_date" )"
+readonly upstream_date="$( echo "$upstream_datetime" | grep -o -e "$regex_date" )"
+if $do_shortlog && [ -n "$basehash" ]; then
+ readonly commit_shortlog="
+
+Upstream Shortlog
+-----------------
+
+$( git shortlog --no-merges --abbrev=8 --format='%h %s' "$upstream_old_short".."$upstream_hash" )"
+else
+ readonly commit_shortlog=""
+fi
+extract_source || \
+ die "failed to extract source"
+popd
+
+[ -d "$extractdir/$name-reduced" ] || \
+ die "expected directory to extract does not exist"
+readonly commit_summary="$name $upstream_date ($upstream_hash_short)"
+
+# Commit the subset
+pushd "$extractdir"
+mv -v "$name-reduced/"* .
+rmdir "$name-reduced/"
+git add -A .
+git commit -n --author="$ownership" --date="$upstream_datetime" -F - <<-EOF
+$commit_summary
+
+Code extracted from:
+
+ $repo
+
+at commit $upstream_hash ($tag).$commit_shortlog
+EOF
+git branch -f "upstream-$name"
+popd
+
+# Merge the subset into this repository
+if [ -n "$basehash" ]; then
+ git merge --log -s recursive "-Xsubtree=$subtree/" --no-commit "upstream-$name"
+else
+ git fetch "$extractdir" "upstream-$name:upstream-$name"
+ git merge --log -s ours --no-commit "upstream-$name"
+ git read-tree -u --prefix="$subtree/" "upstream-$name"
+fi
+git commit --no-edit
+git branch -d "upstream-$name"
diff -Nru paraview-5.0.0+dfsg1/ThirdParty/UPDATING.md paraview-5.0.1+dfsg1/ThirdParty/UPDATING.md
--- paraview-5.0.0+dfsg1/ThirdParty/UPDATING.md 1970-01-01 00:00:00.000000000 +0000
+++ paraview-5.0.1+dfsg1/ThirdParty/UPDATING.md 2016-03-28 15:06:22.000000000 +0000
@@ -0,0 +1,4 @@
+# Updating Third Party Projects
+
+Refer to [VTK's documentation](../VTK/ThirdParty/UPDATING.md) for updating
+third party modules.
diff -Nru paraview-5.0.0+dfsg1/Utilities/Doxygen/pages/MajorAPIChanges.md paraview-5.0.1+dfsg1/Utilities/Doxygen/pages/MajorAPIChanges.md
--- paraview-5.0.0+dfsg1/Utilities/Doxygen/pages/MajorAPIChanges.md 2016-01-08 20:21:36.000000000 +0000
+++ paraview-5.0.1+dfsg1/Utilities/Doxygen/pages/MajorAPIChanges.md 2016-03-28 15:07:03.000000000 +0000
@@ -4,6 +4,18 @@
This page documents major API/design changes between different versions since we
started tracking these (starting after version 4.2).
+Changes in 5.0.1
+----------------
+
+###Changes to vtkSMInputArrayDomain###
+
+vtkSMInputArrayDomain has changed the meaning of **"any"** attribute type. It
+now includes field data arrays. To exclude field data arrays from the field
+selection, change this to **"any-except-field"**. This is also the default for
+vtkSMInputArrayDomain, hence simply removing the `attribute_type` field is also
+an acceptable solution and is the recommended approach so that the XML can work
+without changes in earlier versions of ParaView as well.
+
Changes in 5.0
--------------
diff -Nru paraview-5.0.0+dfsg1/VTK/CMake/VTKConfig.cmake.in paraview-5.0.1+dfsg1/VTK/CMake/VTKConfig.cmake.in
--- paraview-5.0.0+dfsg1/VTK/CMake/VTKConfig.cmake.in 2016-01-08 20:22:21.000000000 +0000
+++ paraview-5.0.1+dfsg1/VTK/CMake/VTKConfig.cmake.in 2016-03-28 15:07:10.000000000 +0000
@@ -6,7 +6,8 @@
# to load VTK's settings for an external project.
@VTK_CONFIG_CODE@
-if (@VTK_USE_CXX11_FEATURES@)
+set(VTK_USE_CXX11_FEATURES @VTK_USE_CXX11_FEATURES@)
+if (VTK_USE_CXX11_FEATURES)
if (CMAKE_VERSION VERSION_LESS "3.1")
message(FATAL_ERROR "VTK was built with C++11 features using CMake's CXX_STANDARD_REQUIRED feature. Configuring projects this way requires a newer version of CMake. Please update to CMake 3.1 or newer")
endif()
diff -Nru paraview-5.0.0+dfsg1/VTK/Common/DataModel/vtkExtractStructuredGridHelper.cxx paraview-5.0.1+dfsg1/VTK/Common/DataModel/vtkExtractStructuredGridHelper.cxx
--- paraview-5.0.0+dfsg1/VTK/Common/DataModel/vtkExtractStructuredGridHelper.cxx 2016-01-08 20:22:21.000000000 +0000
+++ paraview-5.0.1+dfsg1/VTK/Common/DataModel/vtkExtractStructuredGridHelper.cxx 2016-03-28 15:06:47.000000000 +0000
@@ -493,7 +493,8 @@
for( K(ijk)=KMIN(outCellExt); K(ijk) <= KMAX(outCellExt); ++K(ijk) )
{
K(src_ijk) = useMapping ? this->GetMappedExtentValue(2, K(ijk)) : K(ijk);
- if (K(src_ijk) == KMAX(this->InputWholeExtent) && K(src_ijk) != 0)
+ if (K(src_ijk) == KMAX(this->InputWholeExtent) &&
+ KMIN(this->InputWholeExtent) != KMAX(this->InputWholeExtent))
{
--K(src_ijk);
}
@@ -501,7 +502,8 @@
for( J(ijk)=JMIN(outCellExt); J(ijk) <= JMAX(outCellExt); ++J(ijk) )
{
J(src_ijk) = useMapping ? this->GetMappedExtentValue(1, J(ijk)) : J(ijk);
- if (J(src_ijk) == JMAX(this->InputWholeExtent) && J(src_ijk) != 0)
+ if (J(src_ijk) == JMAX(this->InputWholeExtent) &&
+ JMIN(this->InputWholeExtent) != JMAX(this->InputWholeExtent))
{
--J(src_ijk);
}
@@ -534,7 +536,8 @@
{
I(src_ijk) = useMapping ? this->GetMappedExtentValue(0, I(ijk))
: I(ijk);
- if (I(src_ijk) == IMAX(this->InputWholeExtent) && I(src_ijk) != 0)
+ if (I(src_ijk) == IMAX(this->InputWholeExtent) &&
+ IMIN(this->InputWholeExtent) != IMAX(this->InputWholeExtent))
{
--I(src_ijk);
}
diff -Nru paraview-5.0.0+dfsg1/VTK/Common/Math/vtkMatrix3x3.cxx paraview-5.0.1+dfsg1/VTK/Common/Math/vtkMatrix3x3.cxx
--- paraview-5.0.0+dfsg1/VTK/Common/Math/vtkMatrix3x3.cxx 2016-01-08 20:22:21.000000000 +0000
+++ paraview-5.0.1+dfsg1/VTK/Common/Math/vtkMatrix3x3.cxx 2016-03-28 15:07:10.000000000 +0000
@@ -87,7 +87,7 @@
#ifndef VTK_LEGACY_REMOVE
double *vtkMatrix3x3::operator[](const unsigned int i)
{
- VTK_LEGACY_BODY(vtkMatrix3x3::operator[], "VTK 7.1");
+ VTK_LEGACY_BODY(vtkMatrix3x3::operator[], "VTK 7.0");
return &(this->Element[i][0]);
}
#endif
@@ -96,7 +96,7 @@
#ifndef VTK_LEGACY_REMOVE
const double *vtkMatrix3x3::operator[](unsigned int i) const
{
- VTK_LEGACY_BODY(vtkMatrix3x3::operator[], "VTK 7.1");
+ VTK_LEGACY_BODY(vtkMatrix3x3::operator[], "VTK 7.0");
return &(this->Element[i][0]);
}
#endif
@@ -141,7 +141,7 @@
#ifndef VTK_LEGACY_REMOVE
void vtkMatrix3x3::Adjoint(vtkMatrix3x3 &in, vtkMatrix3x3 &out)
{
- VTK_LEGACY_BODY(vtkMatrix3x3::Adjoint, "VTK 7.1");
+ VTK_LEGACY_BODY(vtkMatrix3x3::Adjoint, "VTK 7.0");
this->Adjoint(&in, &out);
}
#endif
@@ -150,7 +150,7 @@
#ifndef VTK_LEGACY_REMOVE
double vtkMatrix3x3::Determinant(vtkMatrix3x3 &in)
{
- VTK_LEGACY_BODY(vtkMatrix3x3::Determinant, "VTK 7.1");
+ VTK_LEGACY_BODY(vtkMatrix3x3::Determinant, "VTK 7.0");
return vtkMatrix3x3::Determinant(*in.Element);
}
#endif
@@ -159,7 +159,7 @@
#ifndef VTK_LEGACY_REMOVE
double vtkMatrix3x3::Determinant(vtkMatrix3x3 *in)
{
- VTK_LEGACY_BODY(vtkMatrix3x3::Determinant, "VTK 7.1");
+ VTK_LEGACY_BODY(vtkMatrix3x3::Determinant, "VTK 7.0");
return vtkMatrix3x3::Determinant(*in->Element);
}
#endif
@@ -168,7 +168,7 @@
#ifndef VTK_LEGACY_REMOVE
void vtkMatrix3x3::Invert(vtkMatrix3x3 &in, vtkMatrix3x3 &out)
{
- VTK_LEGACY_BODY(vtkMatrix3x3::Invert, "VTK 7.1");
+ VTK_LEGACY_BODY(vtkMatrix3x3::Invert, "VTK 7.0");
this->Invert(&in, &out);
}
#endif
@@ -177,7 +177,7 @@
#ifndef VTK_LEGACY_REMOVE
void vtkMatrix3x3::Transpose(vtkMatrix3x3 &in, vtkMatrix3x3 &out)
{
- VTK_LEGACY_BODY(vtkMatrix3x3::Transpose, "VTK 7.1");
+ VTK_LEGACY_BODY(vtkMatrix3x3::Transpose, "VTK 7.0");
this->Transpose(&in, &out);
}
#endif
@@ -187,7 +187,7 @@
void vtkMatrix3x3::PointMultiply(const double elements[9],
const float in[3], float result[3])
{
- VTK_LEGACY_BODY(vtkMatrix3x3::PointMultiply, "VTK 7.1");
+ VTK_LEGACY_BODY(vtkMatrix3x3::PointMultiply, "VTK 7.0");
double newElements[9];
vtkMatrix3x3::Transpose(elements, newElements);
vtkMatrix3x3::MultiplyPoint(newElements, in, result);
@@ -199,7 +199,7 @@
void vtkMatrix3x3::PointMultiply(const double elements[9],
const double in[3], double result[3])
{
- VTK_LEGACY_BODY(vtkMatrix3x3::PointMultiply, "VTK 7.1");
+ VTK_LEGACY_BODY(vtkMatrix3x3::PointMultiply, "VTK 7.0");
double newElements[9];
vtkMatrix3x3::Transpose(elements, newElements);
vtkMatrix3x3::MultiplyPoint(newElements, in, result);
diff -Nru paraview-5.0.0+dfsg1/VTK/Common/Math/vtkMatrix4x4.cxx paraview-5.0.1+dfsg1/VTK/Common/Math/vtkMatrix4x4.cxx
--- paraview-5.0.0+dfsg1/VTK/Common/Math/vtkMatrix4x4.cxx 2016-01-08 20:22:21.000000000 +0000
+++ paraview-5.0.1+dfsg1/VTK/Common/Math/vtkMatrix4x4.cxx 2016-03-28 15:07:10.000000000 +0000
@@ -79,7 +79,7 @@
#ifndef VTK_LEGACY_REMOVE
double *vtkMatrix4x4::operator[](const unsigned int i)
{
- VTK_LEGACY_BODY(vtkMatrix4x4::operator[], "VTK 7.1");
+ VTK_LEGACY_BODY(vtkMatrix4x4::operator[], "VTK 7.0");
return &(this->Element[i][0]);
}
#endif
@@ -88,7 +88,7 @@
#ifndef VTK_LEGACY_REMOVE
const double *vtkMatrix4x4::operator[](unsigned int i) const
{
- VTK_LEGACY_BODY(vtkMatrix4x4::operator[], "VTK 7.1");
+ VTK_LEGACY_BODY(vtkMatrix4x4::operator[], "VTK 7.0");
return &(this->Element[i][0]);
}
#endif
@@ -97,7 +97,7 @@
#ifndef VTK_LEGACY_REMOVE
void vtkMatrix4x4::Adjoint(vtkMatrix4x4 &in, vtkMatrix4x4 &out)
{
- VTK_LEGACY_BODY(vtkMatrix4x4::Adjoint, "VTK 7.1");
+ VTK_LEGACY_BODY(vtkMatrix4x4::Adjoint, "VTK 7.0");
this->Adjoint(&in, &out);
}
#endif
@@ -106,7 +106,7 @@
#ifndef VTK_LEGACY_REMOVE
double vtkMatrix4x4::Determinant(vtkMatrix4x4 &in)
{
- VTK_LEGACY_BODY(vtkMatrix4x4::Determinant, "VTK 7.1");
+ VTK_LEGACY_BODY(vtkMatrix4x4::Determinant, "VTK 7.0");
return vtkMatrix4x4::Determinant(*in.Element);
}
#endif
@@ -115,7 +115,7 @@
#ifndef VTK_LEGACY_REMOVE
double vtkMatrix4x4::Determinant(vtkMatrix4x4 *in)
{
- VTK_LEGACY_BODY(vtkMatrix4x4::Determinant, "VTK 7.1");
+ VTK_LEGACY_BODY(vtkMatrix4x4::Determinant, "VTK 7.0");
return vtkMatrix4x4::Determinant(*in->Element);
}
#endif
@@ -124,7 +124,7 @@
#ifndef VTK_LEGACY_REMOVE
void vtkMatrix4x4::Invert(vtkMatrix4x4 &in, vtkMatrix4x4 &out)
{
- VTK_LEGACY_BODY(vtkMatrix4x4::Invert, "VTK 7.1");
+ VTK_LEGACY_BODY(vtkMatrix4x4::Invert, "VTK 7.0");
this->Invert(&in, &out);
}
#endif
@@ -133,7 +133,7 @@
#ifndef VTK_LEGACY_REMOVE
void vtkMatrix4x4::Transpose(vtkMatrix4x4 &in, vtkMatrix4x4 &out)
{
- VTK_LEGACY_BODY(vtkMatrix4x4::Transpose, "VTK 7.1");
+ VTK_LEGACY_BODY(vtkMatrix4x4::Transpose, "VTK 7.0");
this->Transpose(&in, &out);
}
#endif
@@ -143,7 +143,7 @@
void vtkMatrix4x4::PointMultiply(const double elements[16],
const float in[4], float result[4])
{
- VTK_LEGACY_BODY(vtkMatrix4x4::PointMultiply, "VTK 7.1");
+ VTK_LEGACY_BODY(vtkMatrix4x4::PointMultiply, "VTK 7.0");
double newElements[16];
vtkMatrix4x4::Transpose(elements, newElements);
vtkMatrix4x4::MultiplyPoint(newElements, in, result);
@@ -155,7 +155,7 @@
void vtkMatrix4x4::PointMultiply(const double elements[16],
const double in[4], double result[4])
{
- VTK_LEGACY_BODY(vtkMatrix4x4::PointMultiply, "VTK 7.1");
+ VTK_LEGACY_BODY(vtkMatrix4x4::PointMultiply, "VTK 7.0");
double newElements[16];
vtkMatrix4x4::Transpose(elements, newElements);
vtkMatrix4x4::MultiplyPoint(newElements, in, result);
diff -Nru paraview-5.0.0+dfsg1/VTK/IO/EnSight/vtkEnSightGoldBinaryReader.cxx paraview-5.0.1+dfsg1/VTK/IO/EnSight/vtkEnSightGoldBinaryReader.cxx
--- paraview-5.0.0+dfsg1/VTK/IO/EnSight/vtkEnSightGoldBinaryReader.cxx 2016-01-08 20:22:21.000000000 +0000
+++ paraview-5.0.1+dfsg1/VTK/IO/EnSight/vtkEnSightGoldBinaryReader.cxx 2016-03-28 15:07:10.000000000 +0000
@@ -34,9 +34,17 @@
#include
#include