Compare commits

...

No commits in common. "main" and "gh-pages" have entirely different histories.

1374 changed files with 229380 additions and 268968 deletions

25
.gitignore vendored
View File

@ -1,17 +1,10 @@
# Ignore files and directories made by `cmake .`.
CMakeFiles/
Makefile
cmake_install.cmake
/CMakeCache.txt
/CPackConfig.cmake
/CPackSourceConfig.cmake
/CTestCustom.cmake
/LICENSE.txt
/OpenJPEGConfig.cmake
/libopenjp2.pc
/src/bin/common/opj_apps_config.h
/src/lib/openjp2/opj_config.h
/src/lib/openjp2/opj_config_private.h
_site/*
_theme_packages/*
# Ignore directories made by `make`.
/bin/
Thumbs.db
.DS_Store
!.gitkeep
.rbenv-version
.rvmrc

View File

@ -1,93 +0,0 @@
language: c
matrix:
include:
- os: osx
compiler: clang
env: OPJ_CI_ARCH=x86_64 OPJ_CI_BUILD_CONFIGURATION=Release OPJ_CI_INCLUDE_IF_DEPLOY=1
- os: linux
compiler: gcc
env: OPJ_CI_ARCH=x86_64 OPJ_CI_BUILD_CONFIGURATION=Release OPJ_CI_INCLUDE_IF_DEPLOY=1
- os: linux
compiler: gcc
env: OPJ_CI_ARCH=x86_64 OPJ_CI_BUILD_CONFIGURATION=Release OPJ_NUM_THREADS=2
- os: linux
compiler: gcc
env: OPJ_CI_ARCH=i386 OPJ_CI_BUILD_CONFIGURATION=Release
addons:
apt:
packages:
- gcc-multilib
- os: linux
compiler: gcc
env: OPJ_CI_ARCH=x86_64 OPJ_CI_BUILD_CONFIGURATION=Debug
- os: linux
compiler: clang
env: OPJ_CI_ARCH=x86_64 OPJ_CI_BUILD_CONFIGURATION=Debug OPJ_CI_ASAN=1
- os: linux
compiler: clang-3.8
env: OPJ_CI_ARCH=x86_64 OPJ_CI_BUILD_CONFIGURATION=Release
addons:
apt:
sources:
- llvm-toolchain-precise-3.8
- ubuntu-toolchain-r-test
packages:
- clang-3.8
- os: linux
compiler: x86_64-w64-mingw32-gcc
env: OPJ_CI_ARCH=x86_64 OPJ_CI_BUILD_CONFIGURATION=Release
addons:
apt:
packages:
- gcc-mingw-w64-base
- binutils-mingw-w64-x86-64
- gcc-mingw-w64-x86-64
- gcc-mingw-w64
- os: linux
compiler: x86_64-w64-mingw32-gcc
env: OPJ_CI_ARCH=i386 OPJ_CI_BUILD_CONFIGURATION=Release
addons:
apt:
packages:
- gcc-mingw-w64-base
- binutils-mingw-w64-i686
- gcc-mingw-w64-i686
- gcc-mingw-w64
- os: linux
compiler: gcc-4.8
env: OPJ_CI_ABI_CHECK=1
addons:
apt:
sources:
- ubuntu-toolchain-r-test
packages:
- gcc-4.8
- libelf-dev
- elfutils
- texinfo
- exuberant-ctags
install:
- ./tools/travis-ci/install.sh
script:
- ./tools/travis-ci/run.sh
- ./tools/travis-ci/abi-check.sh
before_deploy:
- export OPJ_RELEASE_PKG_FILE=$(ls build/openjpeg-${TRAVIS_TAG}*)
- echo "deploying $OPJ_RELEASE_PKG_FILE to GitHub releases"
deploy:
provider: releases
api_key:
secure: Npi13uOffALCVNwea4p4q8v85Lo/WsRqaeZQcWrAkt8MxRnfvWQtmnuwmHnVB6Cig+T1lVUHrklOaJIApIb6nkGq3CS/9bD8+SCS2NEdAAP/QYWnBi0ubWXVMRyDLypmwRpzLNSZ0xLYGFUl2PjieZYKRcz1dd/J7S+FnXhPtdjXweq0FS63zTcMe7ggjfmzSOWUCEFmMjZPaM0Be+3PweieCO1dxlHuy7ugCkx2S7d+5hNsicIhQmTADjqtJAkHoMhYqu6/yLFxhjO/+f938PATFULdODTvjCsUwdN/ySWi1Oj4uPAntfytZP7H6YrzLh8dS73QCsdkhhDJIgJskHIBSbRyyEVUnOvQgD9VaBVGHtc1KtZQTwc41OUO3BGPHl97s3oX6bqWqo/L53dB3TPHGx+1+2HL/F0zaDZuHhAKMkPwe8LFPMPB/ur65zXMHjnWb2ZTVVdoIvkbQ7nu8ApI60ejxocYBsEyAuC2CPXU2ki4jdEhm0E1hIziWNE9/LTuM17ziQuJ6WpXOSMrfP4o5aVDmLp5ZGBSocrspOksgyI9XogHaO/r+Y6N3exy+giObFfMHkZVUpsKrKmtOJ7TC1Vg5HsYGlWW8RN8dkJV47bUXm9K4sMos9eYMUt/czykPAs+132cogpII3QxXpFZQqZg6SEPVfOiyqQzTUI=
file_glob: true
file: "${OPJ_RELEASE_PKG_FILE}"
skip_cleanup: true
on:
repo: uclouvain/openjpeg
tags: true
condition: "$OPJ_CI_INCLUDE_IF_DEPLOY = 1"

1
404.html Normal file
View File

@ -0,0 +1 @@
Sorry this page does not exist =(

View File

@ -1,21 +0,0 @@
# Authors of OpenJPEG
See also [THANKS](https://github.com/uclouvain/openjpeg/blob/master/THANKS.md)
David Janssens designed and implemented the first version of OpenJPEG.
Kaori Hagihara designed and implemented the first version of OpenJPIP.
Jerome Fimes implemented the alpha version of OpenJPEG 2.0.
Giuseppe Baruffa added the JPWL functionalities.
Mickaël Savinaud implemented the final OpenJPEG 2.0 version based on a big merge between 1.5 version and alpha version of 2.0.
Mathieu Malaterre participated to the OpenJPEG 2.0 version and improved the libraries and utilities.
Yannick Verschueren,
Herve Drolon,
Francois-Olivier Devaux,
Antonin Descampe
improved the libraries and utilities.

View File

@ -1,388 +0,0 @@
# Main CMakeLists.txt to build the OpenJPEG project using CMake (www.cmake.org)
# Written by Mathieu Malaterre
# This CMake project will by default create a library called openjpeg
# But if you want to use this project within your own (CMake) project
# you will eventually like to prefix the library to avoid linking confusion
# For this purpose you can define a CMake var: OPENJPEG_NAMESPACE to whatever you like
# e.g.:
# set(OPENJPEG_NAMESPACE "GDCMOPENJPEG")
cmake_minimum_required(VERSION 2.8.2)
if(COMMAND CMAKE_POLICY)
cmake_policy(SET CMP0003 NEW)
if (NOT (${CMAKE_VERSION} VERSION_LESS 3.0))
cmake_policy(SET CMP0042 NEW)
endif()
endif()
if(NOT OPENJPEG_NAMESPACE)
set(OPENJPEG_NAMESPACE "OPENJPEG")
set(OPENJPEG_STANDALONE 1)
endif()
# In all cases:
#string(TOLOWER ${OPENJPEG_NAMESPACE} OPENJPEG_LIBRARY_NAME)
set(OPENJPEG_LIBRARY_NAME openjp2)
project(${OPENJPEG_NAMESPACE} C)
# Do full dependency headers.
include_regular_expression("^.*$")
#-----------------------------------------------------------------------------
# OPENJPEG version number, useful for packaging and doxygen doc:
set(OPENJPEG_VERSION_MAJOR 2)
set(OPENJPEG_VERSION_MINOR 2)
set(OPENJPEG_VERSION_BUILD 0)
set(OPENJPEG_VERSION
"${OPENJPEG_VERSION_MAJOR}.${OPENJPEG_VERSION_MINOR}.${OPENJPEG_VERSION_BUILD}")
set(PACKAGE_VERSION
"${OPENJPEG_VERSION_MAJOR}.${OPENJPEG_VERSION_MINOR}.${OPENJPEG_VERSION_BUILD}")
# Because autotools does not support X.Y notation for SOVERSION, we have to use
# two numbering, one for the openjpeg version and one for openjpeg soversion
# version | soversion
# 1.0 | 0
# 1.1 | 1
# 1.2 | 2
# 1.3 | 3
# 1.4 | 4
# 1.5 | 5
# 1.5.1 | 5
# 2.0 | 6
# 2.0.1 | 6
# 2.1 | 7
# 2.1.1 | 7
# 2.1.2 | 7
# 2.2.0 | 8
# above is the recommendation by the OPJ team. If you really need to override this default,
# you can specify your own OPENJPEG_SOVERSION at cmake configuration time:
# cmake -DOPENJPEG_SOVERSION:STRING=42 /path/to/openjpeg
if(NOT OPENJPEG_SOVERSION)
set(OPENJPEG_SOVERSION 7)
endif(NOT OPENJPEG_SOVERSION)
set(OPENJPEG_LIBRARY_PROPERTIES
VERSION "${OPENJPEG_VERSION_MAJOR}.${OPENJPEG_VERSION_MINOR}.${OPENJPEG_VERSION_BUILD}"
SOVERSION "${OPENJPEG_SOVERSION}"
)
# --------------------------------------------------------------------------
# Path to additional CMake modules
set(CMAKE_MODULE_PATH
${${OPENJPEG_NAMESPACE}_SOURCE_DIR}/cmake
${CMAKE_MODULE_PATH})
# --------------------------------------------------------------------------
# On Visual Studio 8 MS deprecated C. This removes all 1.276E1265 security
# warnings
if(WIN32)
if(NOT BORLAND)
if(NOT CYGWIN)
if(NOT MINGW)
if(NOT ITK_ENABLE_VISUAL_STUDIO_DEPRECATED_C_WARNINGS)
add_definitions(
-D_CRT_FAR_MAPPINGS_NO_DEPRECATE
-D_CRT_IS_WCTYPE_NO_DEPRECATE
-D_CRT_MANAGED_FP_NO_DEPRECATE
-D_CRT_NONSTDC_NO_DEPRECATE
-D_CRT_SECURE_NO_DEPRECATE
-D_CRT_SECURE_NO_DEPRECATE_GLOBALS
-D_CRT_SETERRORMODE_BEEP_SLEEP_NO_DEPRECATE
-D_CRT_TIME_FUNCTIONS_NO_DEPRECATE
-D_CRT_VCCLRIT_NO_DEPRECATE
-D_SCL_SECURE_NO_DEPRECATE
)
endif()
endif()
endif()
endif()
endif()
# --------------------------------------------------------------------------
# Install directories
# Build DOCUMENTATION (not in ALL target and only if Doxygen is found)
option(BUILD_DOC "Build the HTML documentation (with doxygen if available)." OFF)
string(TOLOWER ${PROJECT_NAME} projectname)
set(OPENJPEG_INSTALL_SUBDIR "${projectname}-${OPENJPEG_VERSION_MAJOR}.${OPENJPEG_VERSION_MINOR}")
if(NOT OPENJPEG_INSTALL_BIN_DIR)
set(OPENJPEG_INSTALL_BIN_DIR "bin")
endif()
if(NOT OPENJPEG_INSTALL_LIB_DIR)
set(OPENJPEG_INSTALL_LIB_DIR "lib")
endif()
if(NOT OPENJPEG_INSTALL_SHARE_DIR)
set(OPENJPEG_INSTALL_SHARE_DIR "share")
endif()
if(NOT OPENJPEG_INSTALL_DATA_DIR)
set(OPENJPEG_INSTALL_DATA_DIR "${OPENJPEG_INSTALL_SHARE_DIR}/${OPENJPEG_INSTALL_SUBDIR}")
endif()
if(NOT OPENJPEG_INSTALL_INCLUDE_DIR)
set(OPENJPEG_INSTALL_INCLUDE_DIR "include/${OPENJPEG_INSTALL_SUBDIR}")
endif()
if(BUILD_DOC)
if(NOT OPENJPEG_INSTALL_MAN_DIR)
set(OPENJPEG_INSTALL_MAN_DIR "share/man/")
endif()
if(NOT OPENJPEG_INSTALL_DOC_DIR)
set(OPENJPEG_INSTALL_DOC_DIR "share/doc/${OPENJPEG_INSTALL_SUBDIR}")
endif()
endif()
if(NOT OPENJPEG_INSTALL_JNI_DIR)
if(WIN32)
set(OPENJPEG_INSTALL_JNI_DIR ${OPENJPEG_INSTALL_BIN_DIR})
else()
set(OPENJPEG_INSTALL_JNI_DIR ${OPENJPEG_INSTALL_LIB_DIR})
endif()
endif()
if(NOT OPENJPEG_INSTALL_PACKAGE_DIR)
# We could install *.cmake files in share/ however those files contains
# hardcoded path to libraries on a multi-arch system (fedora/debian) those
# path will be different (lib/i386-linux-gnu vs lib/x86_64-linux-gnu)
set(OPENJPEG_INSTALL_PACKAGE_DIR "${OPENJPEG_INSTALL_LIB_DIR}/${OPENJPEG_INSTALL_SUBDIR}")
endif()
if (APPLE)
list(APPEND OPENJPEG_LIBRARY_PROPERTIES INSTALL_NAME_DIR "${CMAKE_INSTALL_PREFIX}/${OPENJPEG_INSTALL_LIB_DIR}")
option(OPJ_USE_DSYMUTIL "Call dsymutil on binaries after build." OFF)
endif()
#-----------------------------------------------------------------------------
# Big endian test:
include (${CMAKE_ROOT}/Modules/TestBigEndian.cmake)
TEST_BIG_ENDIAN(OPJ_BIG_ENDIAN)
#-----------------------------------------------------------------------------
# Setup file for setting custom ctest vars
configure_file(
${${OPENJPEG_NAMESPACE}_SOURCE_DIR}/cmake/CTestCustom.cmake.in
${${OPENJPEG_NAMESPACE}_BINARY_DIR}/CTestCustom.cmake
@ONLY
)
#-----------------------------------------------------------------------------
# OpenJPEG build configuration options.
option(BUILD_SHARED_LIBS "Build OpenJPEG shared library and link executables against it." ON)
set (EXECUTABLE_OUTPUT_PATH ${OPENJPEG_BINARY_DIR}/bin CACHE PATH "Single output directory for building all executables.")
set (LIBRARY_OUTPUT_PATH ${OPENJPEG_BINARY_DIR}/bin CACHE PATH "Single output directory for building all libraries.")
mark_as_advanced(LIBRARY_OUTPUT_PATH EXECUTABLE_OUTPUT_PATH)
#-----------------------------------------------------------------------------
# configure name mangling to allow multiple libraries to coexist
# peacefully
if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/openjpeg_mangle.h.in)
set(MANGLE_PREFIX ${OPENJPEG_LIBRARY_NAME})
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/openjpeg_mangle.h.in
${CMAKE_CURRENT_BINARY_DIR}/openjpeg_mangle.h
@ONLY)
endif()
#-----------------------------------------------------------------------------
# Compiler specific flags:
if(CMAKE_COMPILER_IS_GNUCC)
# For all builds, make sure openjpeg is std99 compliant:
# set(CMAKE_C_FLAGS "-Wall -std=c99 ${CMAKE_C_FLAGS}") # FIXME: this setting prevented us from setting a coverage build.
# Do not use ffast-math for all build, it would produce incorrect results, only set for release:
set(OPENJPEG_LIBRARY_COMPILE_OPTIONS ${OPENJPEG_LIBRARY_COMPILE_OPTIONS} "$<$<CONFIG:Release>:-ffast-math>")
endif()
#-----------------------------------------------------------------------------
# opj_config.h generation (1/2)
# Check if some include files are provided by the system
include(EnsureFileInclude)
# These files are mandatory
ensure_file_include("string.h" HAVE_STRING_H YES)
ensure_file_include("memory.h" HAVE_MEMORY_H YES)
ensure_file_include("stdlib.h" HAVE_STDLIB_H YES)
ensure_file_include("stdio.h" HAVE_STDIO_H YES)
ensure_file_include("math.h" HAVE_MATH_H YES)
ensure_file_include("float.h" HAVE_FLOAT_H YES)
ensure_file_include("time.h" HAVE_TIME_H YES)
ensure_file_include("stdarg.h" HAVE_STDARG_H YES)
ensure_file_include("ctype.h" HAVE_CTYPE_H YES)
ensure_file_include("assert.h" HAVE_ASSERT_H YES)
# For the following files, we provide an alternative, they are not mandatory
ensure_file_include("stdint.h" OPJ_HAVE_STDINT_H NO)
ensure_file_include("inttypes.h" OPJ_HAVE_INTTYPES_H NO)
# why check this one ? for openjpip ?
include (${CMAKE_ROOT}/Modules/CheckIncludeFile.cmake)
CHECK_INCLUDE_FILE("strings.h" HAVE_STRINGS_H)
CHECK_INCLUDE_FILE("sys/stat.h" HAVE_SYS_STAT_H)
CHECK_INCLUDE_FILE("sys/types.h" HAVE_SYS_TYPES_H)
CHECK_INCLUDE_FILE("unistd.h" HAVE_UNISTD_H)
# Enable Large file support
include(TestLargeFiles)
OPJ_TEST_LARGE_FILES(OPJ_HAVE_LARGEFILES)
# Allocating Aligned Memory Blocks
include(CheckIncludeFiles)
check_include_files(malloc.h OPJ_HAVE_MALLOC_H)
include(CheckSymbolExists)
# _aligned_alloc https://msdn.microsoft.com/en-us/library/8z34s9c6.aspx
check_symbol_exists(_aligned_malloc malloc.h OPJ_HAVE__ALIGNED_MALLOC)
# posix_memalign (needs _POSIX_C_SOURCE >= 200112L on Linux)
set(CMAKE_REQUIRED_DEFINITIONS -D_POSIX_C_SOURCE=200112L)
check_symbol_exists(posix_memalign stdlib.h OPJ_HAVE_POSIX_MEMALIGN)
unset(CMAKE_REQUIRED_DEFINITIONS)
# memalign (obsolete)
check_symbol_exists(memalign malloc.h OPJ_HAVE_MEMALIGN)
#-----------------------------------------------------------------------------
# Build Library
if(BUILD_JPIP_SERVER)
find_package(CURL REQUIRED)
find_package(FCGI REQUIRED)
find_package(Threads REQUIRED)
if(NOT CMAKE_USE_PTHREADS_INIT)
message(FATAL_ERROR "Only pthread are supported")
endif()
endif()
add_subdirectory(src/lib)
option(BUILD_LUTS_GENERATOR "Build utility to generate t1_luts.h" OFF)
#-----------------------------------------------------------------------------
# Build Applications
option(BUILD_CODEC "Build the CODEC executables" ON)
option(BUILD_MJ2 "Build the MJ2 executables." OFF)
option(BUILD_JPWL "Build the JPWL library and executables" OFF)
option(BUILD_JPIP "Build the JPIP library and executables." OFF)
if(BUILD_JPIP)
option(BUILD_JPIP_SERVER "Build the JPIP server." OFF)
endif()
option(BUILD_VIEWER "Build the OPJViewer executable (C++)" OFF)
option(BUILD_JAVA "Build the openjpeg jar (Java)" OFF)
option(BUILD_JP3D "Build the JP3D comp" OFF)
mark_as_advanced(BUILD_VIEWER)
mark_as_advanced(BUILD_JAVA)
mark_as_advanced(BUILD_JP3D)
if(BUILD_CODEC OR BUILD_MJ2)
# OFF: It will only build 3rd party libs if they are not found on the system
# ON: 3rd party libs will ALWAYS be build, and used
option(BUILD_THIRDPARTY "Build the thirdparty executables if it is needed" OFF)
add_subdirectory(thirdparty)
add_subdirectory(src/bin)
endif ()
add_subdirectory(wrapping)
#-----------------------------------------------------------------------------
# opj_config.h generation (2/2)
configure_file(
${CMAKE_CURRENT_SOURCE_DIR}/src/lib/openjp2/opj_config.h.cmake.in
${CMAKE_CURRENT_BINARY_DIR}/src/lib/openjp2/opj_config.h
@ONLY
)
configure_file(
${CMAKE_CURRENT_SOURCE_DIR}/src/lib/openjp2/opj_config_private.h.cmake.in
${CMAKE_CURRENT_BINARY_DIR}/src/lib/openjp2/opj_config_private.h
@ONLY
)
#-----------------------------------------------------------------------------
# build documentation in doc subdir:
if(BUILD_DOC)
add_subdirectory(doc)
endif()
#-----------------------------------------------------------------------------
# Buld Testing
option(BUILD_TESTING "Build the tests." OFF)
if(BUILD_TESTING)
if(BUILD_CODEC)
enable_testing()
include(CTest)
# Search openjpeg data needed for the tests
# They could be found via git on the OpenJPEG GitHub code project
# git clone https://github.com/uclouvain/openjpeg-data.git
find_path(OPJ_DATA_ROOT README-OPJ-Data
PATHS $ENV{OPJ_DATA_ROOT} ${CMAKE_SOURCE_DIR}/../data
NO_DEFAULT_PATH NO_CMAKE_FIND_ROOT_PATH
)
# Add repository where to find tests
add_subdirectory(tests)
else()
message(FATAL_ERROR "You need build codec to run the tests")
endif()
endif()
#-----------------------------------------------------------------------------
# install all targets referenced as OPENJPEGTargets
install(EXPORT OpenJPEGTargets DESTINATION ${OPENJPEG_INSTALL_PACKAGE_DIR})
configure_file( ${${OPENJPEG_NAMESPACE}_SOURCE_DIR}/cmake/OpenJPEGConfig.cmake.in
${${OPENJPEG_NAMESPACE}_BINARY_DIR}/OpenJPEGConfig.cmake
@ONLY
)
install( FILES ${OPENJPEG_BINARY_DIR}/OpenJPEGConfig.cmake
DESTINATION ${OPENJPEG_INSTALL_PACKAGE_DIR}
)
#-----------------------------------------------------------------------------
# install CHANGES and LICENSE
if(BUILD_DOC)
if(EXISTS ${OPENJPEG_SOURCE_DIR}/CHANGES)
install(FILES CHANGES DESTINATION ${OPENJPEG_INSTALL_DOC_DIR})
endif()
install(FILES LICENSE DESTINATION ${OPENJPEG_INSTALL_DOC_DIR})
endif()
include (cmake/OpenJPEGCPack.cmake)
#-----------------------------------------------------------------------------
# pkgconfig support
# enabled by default on Unix, disabled by default on other platforms
if(UNIX)
option(BUILD_PKGCONFIG_FILES "Build and install pkg-config files" ON)
else()
option(BUILD_PKGCONFIG_FILES "Build and install pkg-config files" OFF)
endif()
if(BUILD_PKGCONFIG_FILES)
# install in lib and not share (see multi-arch note above)
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/src/lib/openjp2/libopenjp2.pc.cmake.in
${CMAKE_CURRENT_BINARY_DIR}/libopenjp2.pc @ONLY)
install( FILES ${CMAKE_CURRENT_BINARY_DIR}/libopenjp2.pc DESTINATION
${OPENJPEG_INSTALL_LIB_DIR}/pkgconfig )
#
if(BUILD_JPWL)
# install in lib and not share (see multi-arch note above)
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/src/lib/openjpwl/libopenjpwl.pc.cmake.in
${CMAKE_CURRENT_BINARY_DIR}/libopenjpwl.pc @ONLY)
install( FILES ${CMAKE_CURRENT_BINARY_DIR}/libopenjpwl.pc DESTINATION
${OPENJPEG_INSTALL_LIB_DIR}/pkgconfig )
endif()
#
if(BUILD_JPIP)
# install in lib and not share (see multi-arch note above)
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/src/lib/openjpip/libopenjpip.pc.cmake.in
${CMAKE_CURRENT_BINARY_DIR}/libopenjpip.pc @ONLY)
install( FILES ${CMAKE_CURRENT_BINARY_DIR}/libopenjpip.pc DESTINATION
${OPENJPEG_INSTALL_LIB_DIR}/pkgconfig )
endif()
#
if(BUILD_JP3D)
# install in lib and not share (see multi-arch note above)
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/src/lib/openjp3d/libopenjp3d.pc.cmake.in
${CMAKE_CURRENT_BINARY_DIR}/libopenjp3d.pc @ONLY)
install( FILES ${CMAKE_CURRENT_BINARY_DIR}/libopenjp3d.pc DESTINATION
${OPENJPEG_INSTALL_LIB_DIR}/pkgconfig )
endif()
endif()
#-----------------------------------------------------------------------------

1
CNAME Normal file
View File

@ -0,0 +1 @@
www.openjpeg.org

View File

@ -1,7 +0,0 @@
set(CTEST_PROJECT_NAME "OPENJPEG")
set(CTEST_NIGHTLY_START_TIME "3:00:00 UTC")
set(CTEST_DROP_METHOD "http")
set(CTEST_DROP_SITE "my.cdash.org")
set(CTEST_DROP_LOCATION "/submit.php?project=OPENJPEG")
set(CTEST_DROP_SITE_CDASH TRUE)

16
History.markdown Normal file
View File

@ -0,0 +1,16 @@
## HEAD
### Major Enhancements
### Minor Enahncements
* Add `drafts` folder support (#167)
* Add `excerpt` support (#168)
* Create History.markdown to help project management (#169)
### Bug Fixes
### Site Enhancements
### Compatibility updates
* Update `preview` task

View File

@ -1,75 +0,0 @@
# OpenJPEG installation
The build method maintained by OpenJPEG is [CMake](https://cmake.org/).
## UNIX/LINUX - MacOS (terminal) - WINDOWS (cygwin, MinGW)
To build the library, type from source tree directory:
```
mkdir build
cd build
cmake ..
make
```
Binaries are then located in the 'bin' directory.
To install the library, type with root privileges:
```
make install
make clean
```
To build the html documentation, you need doxygen to be installed on your system.
It will create an "html" directory in TOP\_LEVEL/build/doc)
```
make doc
```
Main available cmake flags:
* To specify the install path: '-DCMAKE\_INSTALL\_PREFIX=/path'
* To build the shared libraries and links the executables against it: '-DBUILD\_SHARED\_LIBS:bool=on' (default: 'ON')
> Note: when using this option, static libraries are not built and executables are dynamically linked.
* To build the CODEC executables: '-DBUILD\_CODEC:bool=on' (default: 'ON')
* [OBSOLETE] To build the MJ2 executables: '-DBUILD\_MJ2:bool=on' (default: 'OFF')
* [OBSOLETE] To build the JPWL executables and JPWL library: '-DBUILD\_JPWL:bool=on' (default: 'OFF')
* [OBSOLETE] To build the JPIP client (java compiler recommended) library and executables: '-DBUILD\_JPIP:bool=on' (default: 'OFF')
* [OBSOLETE] To build the JPIP server (need fcgi) library and executables: '-DBUILD\_JPIP\_SERVER:bool=on' (default: 'OFF')
* To enable testing (and automatic result upload to http://my.cdash.org/index.php?project=OPENJPEG):
```
cmake . -DBUILD_TESTING:BOOL=ON -DOPJ_DATA_ROOT:PATH='path/to/the/data/directory' -DBUILDNAME:STRING='name_of_the_build'
make
make Experimental
```
Note : test data is available on the following github repo: https://github.com/uclouvain/openjpeg-data
If '-DOPJ\_DATA\_ROOT:PATH' option is omitted, test files will be automatically searched in '${CMAKE\_SOURCE\_DIR}/../data'.
Note 2 : to execute the encoding test suite, kakadu binaries are needed to decode encoded image and compare it to the baseline. Kakadu binaries are freely available for non-commercial purposes at http://www.kakadusoftware.com. kdu\_expand will need to be in your PATH for cmake to find it.
Note 3 : OpenJPEG encoder and decoder (not the library itself !) depends on several libraries: png, tiff, lcms, z. If these libraries are not found on the system, they are automatically built from the versions available in the source tree. You can force the use of these embedded version with BUILD\_THIRDPARTY:BOOL=ON. On a Debian-like system you can also simply install these libraries with:
```
sudo apt-get install liblcms2-dev libtiff-dev libpng-dev libz-dev
```
Note 4 : On MacOS, if it does not work, try adding the following flag to the cmake command :
```
-DCMAKE_OSX_ARCHITECTURES:STRING=i386
```
## MacOS (XCode) - WINDOWS (VisualStudio, etc)
You can use cmake to generate the project files for the IDE you are using (VC2010, XCode, etc).
Type 'cmake --help' for available generators on your platform.
# Using OpenJPEG
To use openjpeg exported cmake file, simply create your application doing:
```
$ cat CMakeLists.txt
find_package(OpenJPEG REQUIRED)
include_directories(${OPENJPEG_INCLUDE_DIRS})
add_executable(myapp myapp.c)
target_link_libraries(myapp ${OPENJPEG_LIBRARIES})
```

39
LICENSE
View File

@ -1,39 +0,0 @@
/*
* The copyright in this software is being made available under the 2-clauses
* BSD License, included below. This software may be subject to other third
* party and contributor rights, including patent rights, and no such rights
* are granted under this license.
*
* Copyright (c) 2002-2014, Universite catholique de Louvain (UCL), Belgium
* Copyright (c) 2002-2014, Professor Benoit Macq
* Copyright (c) 2003-2014, Antonin Descampe
* Copyright (c) 2003-2009, Francois-Olivier Devaux
* Copyright (c) 2005, Herve Drolon, FreeImage Team
* Copyright (c) 2002-2003, Yannick Verschueren
* Copyright (c) 2001-2003, David Janssens
* Copyright (c) 2011-2012, Centre National d'Etudes Spatiales (CNES), France
* Copyright (c) 2012, CS Systemes d'Information, France
*
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. 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.
*/

72
NEWS.md
View File

@ -1,72 +0,0 @@
# OpenJPEG NEWS
More details in the [Changelog](https://github.com/uclouvain/openjpeg/blob/master/CHANGELOG.md)
## OpenJPEG 2.1.2
* Bug fixes (including security fixes)
* No API/ABI break compared to v2.1.1
## OpenJPEG 2.1.1
* Huge amount of critical bugfixes
* Speed improvements
* No API/ABI break compared to v2.1
## OpenJPEG 2.1.0
### New Features
* Digital Cinema profiles have been fixed and updated
* New option to disable MCT if needed
* extended RAW support: it is now possible to input raw images
with subsampled color components (422, 420, etc)
* New way to deal with profiles
### API/ABI modifications
(see [here](http://www.openjpeg.org/abi-check/timeline/openjpeg/) for details)
* Removed deprecated functions
* opj_stream_create_default_file_stream(FILE*,...)
* opj_stream_create_file_stream(FILE*,...)
* opj_stream_set_user_data (opj_stream_t* p_stream, void * p_data)
* Added
* opj_stream_create_default_file_stream(char*,...)
* opj_stream_create_file_stream(char*,...)
* opj_stream_destroy(opj_stream_t*)
* opj_stream_set_user_data (opj_stream_t* p_stream, void * p_data,
... opj_stream_free_user_data_fn p_function)
* JPEG 2000 profiles and Part-2 extensions defined through '#define'
* Changed
* 'alpha' field added to 'opj_image_comp' structure
* 'OPJ_CLRSPC_EYCC' added to enum COLOR_SPACE
* 'OPJ_CLRSPC_CMYK' added to enum COLOR_SPACE
* 'OPJ_CODEC_JPP' and 'OPJ_CODEC_JPX' added to CODEC_FORMAT
(not yet used in use)
* 'max_cs_size' and 'rsiz' fields added to opj_cparameters_t
### Misc
* OpenJPEG is now officially conformant with JPEG 2000 Part-1
and will soon become official reference software at the
JPEG committee.
* Huge amount of bug fixes. See CHANGES for details.
## OpenJPEG 2.0.0
### New Features
* streaming capabilities
* merge JP3D
### API modifications
(see [here](http://www.openjpeg.org/abi-check/timeline/openjpeg/) for details)
* Use a 64bits capable API
### Misc
* removed autotools build system
* folders hierarchies reorganisation
* Huge amount of bug fixes. See CHANGES for details.

120
README.md
View File

@ -1,82 +1,78 @@
# Jekyll-Bootstrap
# OPENJPEG Library and Applications
The quickest way to start and publish your Jekyll powered blog. 100% compatible with GitHub pages
## What is OpenJPEG ?
## Usage
OpenJPEG is an open-source JPEG 2000 codec written in C language. It has been developed in order to promote the use of [JPEG 2000](http://www.jpeg.org/jpeg2000), a still-image compression standard from the Joint Photographic Experts Group ([JPEG](http://www.jpeg.org)). Since April 2015, it is officially recognized by ISO/IEC and ITU-T as a [JPEG 2000 Reference Software](http://www.itu.int/rec/T-REC-T.804-201504-I!Amd2).
For all usage and documentation please see: <http://jekyllbootstrap.com>
## Who can use the code ?
[![badge-license]][link-license]
## Version
Anyone. As the OpenJPEG code is released under the [BSD 2-clause "Simplified" License][link-license], anyone can use or modify the code, even for commercial applications. The only restriction is to retain the copyright in the sources or in the binaries documentation. Of course, if you modified the code in a way that might be of interest for other users, you are encouraged to share it (through a [github pull request](https://github.com/uclouvain/openjpeg/pulls) or by filling an [issue](https://github.com/uclouvain/openjpeg/issues)) but this is not a requirement.
0.3.0 - stable and versioned using [semantic versioning](http://semver.org/).
## How to install and use OpenJPEG ?
API Documentation needs a major refactoring. Meanwhile, you can check [installation](https://github.com/uclouvain/openjpeg/wiki/Installation) instructions and [codec documentation](https://github.com/uclouvain/openjpeg/wiki/DocJ2KCodec).
## Current Status
[![badge-build]][link-build]
**NOTE:** 0.3.0 introduces a new theme which is not backwards compatible in the sense it won't _look_ like the old version.
However, the actual API has not changed at all.
You might want to run 0.3.0 in a branch to make sure you are ok with the theme design changes.
[![badge-msvc-build]][link-msvc-build]
## Milestones
[![badge-coverity]][link-coverity]
[0.4.0](https://github.com/plusjade/jekyll-bootstrap/milestones/v%200.4.0) - next release [ETA 03/29/2015]
## Who are the developers ?
### GOALS
The library is developed and maintained by the Image and Signal Processing Group ([ISPGroup](http://sites.uclouvain.be/ispgroup/)), in the Université catholique de Louvain ([UCL](http://www.uclouvain.be/en-index.html), with the support of the [CNES](https://cnes.fr/), the [CS](http://www.c-s.fr/) company and the [intoPIX](http://www.intopix.com) company. The JPWL module has been developed by the Digital Signal Processing Lab ([DSPLab](http://dsplab.diei.unipg.it/)) of the University of Perugia, Italy ([UNIPG](http://www.unipg.it/)).
* No open PRs against master branch.
* Squash some bugs.
* Add some new features (low-hanging fruit).
* Establish social media presence.
## Details on folders hierarchy
* src
* lib
* openjp2: contains the sources of the openjp2 library (Part 1 & 2)
* openjpwl: contains the additional sources if you want to build a JPWL-flavoured library.
* openjpip: complete client-server architecture for remote browsing of jpeg 2000 images.
* openjp3d: JP3D implementation
* openmj2: MJ2 implementation
* bin: contains all applications that use the openjpeg library
* common: common files to all applications
* jp2: a basic codec
* mj2: motion jpeg 2000 executables
* jpip: OpenJPIP applications (server and dec server)
* java: a Java client viewer for JPIP
* jp3d: JP3D applications
* tcltk: a test tool for JP3D
* wx
* OPJViewer: gui for displaying j2k files (based on wxWidget)
* wrapping
* java: java jni to use openjpeg in a java program
* thirdparty: thirdparty libraries used by some applications. These libraries will be built only if there are not found on the system. Note that libopenjpeg itself does not have any dependency.
* doc: doxygen documentation setup file and man pages
* tests: configuration files and utilities for the openjpeg test suite. All test images are located in [openjpeg-data](https://github.com/uclouvain/openjpeg-data) repository.
* cmake: cmake related files
### Bugs
See [LICENSE][link-license] for license and copyright information.
|Bug |Description
|------|---------------
|[#86](https://github.com/plusjade/jekyll-bootstrap/issues/86) |&#x2611; Facebook Comments
|[#113](https://github.com/plusjade/jekyll-bootstrap/issues/113)|&#x2611; ASSET_PATH w/ page & post
|[#144](https://github.com/plusjade/jekyll-bootstrap/issues/144)|&#x2610; BASE_PATH w/ FQDN
|[#227](https://github.com/plusjade/jekyll-bootstrap/issues/227)|&#x2611; Redundant JB/setup
See [INSTALL](https://github.com/uclouvain/openjpeg/blob/master/INSTALL.md) for installation procedures.
### Features
See [NEWS](https://github.com/uclouvain/openjpeg/blob/master/NEWS.md) for user visible changes in successive releases.
|Bug |Description
|------|---------------
|[#98](https://github.com/plusjade/jekyll-bootstrap/issues/98) |&#x2611; GIST Integration
|[#244](https://github.com/plusjade/jekyll-bootstrap/issues/244)|&#x2611; JB/file_exists Helper
|[#42](https://github.com/plusjade/jekyll-bootstrap/issues/42) |&#x2611; Sort collections of Pages / Posts
|[#84](https://github.com/plusjade/jekyll-bootstrap/issues/84) |&#x2610; Detecting production mode
## API/ABI
### TODOS
An API/ABI timeline is automatically updated [here][link-api-timeline].
Review existing pull requests against plusjake/jekyll-bootstrap:master. Merge or close each.
OpenJPEG strives to provide a stable API/ABI for your applications. As such it
only exposes a limited subset of its functions. It uses a mechanism of
exporting/hiding functions. If you are unsure which functions you can use in
your applications, you should compile OpenJPEG using something similar to gcc:
`-fvisibility=hidden` compilation flag.
See also: http://gcc.gnu.org/wiki/Visibility
* Create twitter account. Add link / icon on jekyllbootstrap.com.
* Create blog posts under plusjade/gh-pages, expose on jekyllbootstrap.com, feed to twitter account.
* Announce state of project, announce roadmap(s), announce new versions as theyre released.
On windows, MSVC directly supports export/hiding function and as such the only
API available is the one supported by OpenJPEG.
## Contributing
[comment-license]: https://img.shields.io/github/license/uclouvain/openjpeg.svg "https://img.shields.io/badge/license-BSD--2--Clause-blue.svg"
[badge-license]: https://img.shields.io/badge/license-BSD--2--Clause-blue.svg "BSD 2-clause "Simplified" License"
[link-license]: https://github.com/uclouvain/openjpeg/blob/master/LICENSE "BSD 2-clause "Simplified" License"
[badge-build]: https://travis-ci.org/uclouvain/openjpeg.svg?branch=master "Build Status"
[link-build]: https://travis-ci.org/uclouvain/openjpeg "Build Status"
[badge-msvc-build]: https://ci.appveyor.com/api/projects/status/github/uclouvain/openjpeg?branch=master&svg=true "Windows Build Status"
[link-msvc-build]: https://ci.appveyor.com/project/detonin/openjpeg/branch/master "Windows Build Status"
[badge-coverity]: https://scan.coverity.com/projects/6383/badge.svg "Coverity Scan Build Status"
[link-coverity]: https://scan.coverity.com/projects/uclouvain-openjpeg "Coverity Scan Build Status"
[link-api-timeline]: http://www.openjpeg.org/abi-check/timeline/openjpeg "OpenJPEG API/ABI timeline"
To contribute to the framework please make sure to checkout your branch based on `jb-development`!!
This is very important as it allows me to accept your pull request without having to publish a public version release.
Small, atomic Features, bugs, etc.
Use the `jb-development` branch but note it will likely change fast as pull requests are accepted.
Please rebase as often as possible when working.
Work on small, atomic features/bugs to avoid upstream commits affecting/breaking your development work.
For Big Features or major API extensions/edits:
This is the one case where I'll accept pull-requests based off the master branch.
This allows you to work in isolation but it means I'll have to manually merge your work into the next public release.
Translation : it might take a bit longer so please be patient! (but sincerely thank you).
**Jekyll-Bootstrap Documentation Website.**
The documentation website at <http://jekyllbootstrap.com> is maintained at https://github.com/plusjade/jekyllbootstrap.com
## License
[MIT](http://opensource.org/licenses/MIT)

306
Rakefile Normal file
View File

@ -0,0 +1,306 @@
require "rubygems"
require 'rake'
require 'yaml'
require 'time'
SOURCE = "."
CONFIG = {
'version' => "0.3.0",
'themes' => File.join(SOURCE, "_includes", "themes"),
'layouts' => File.join(SOURCE, "_layouts"),
'posts' => File.join(SOURCE, "_posts"),
'post_ext' => "md",
'theme_package_version' => "0.1.0"
}
# Path configuration helper
module JB
class Path
SOURCE = "."
Paths = {
:layouts => "_layouts",
:themes => "_includes/themes",
:theme_assets => "assets/themes",
:theme_packages => "_theme_packages",
:posts => "_posts"
}
def self.base
SOURCE
end
# build a path relative to configured path settings.
def self.build(path, opts = {})
opts[:root] ||= SOURCE
path = "#{opts[:root]}/#{Paths[path.to_sym]}/#{opts[:node]}".split("/")
path.compact!
File.__send__ :join, path
end
end #Path
end #JB
# Usage: rake post title="A Title" [date="2012-02-09"] [tags=[tag1,tag2]] [category="category"]
desc "Begin a new post in #{CONFIG['posts']}"
task :post do
abort("rake aborted: '#{CONFIG['posts']}' directory not found.") unless FileTest.directory?(CONFIG['posts'])
title = ENV["title"] || "new-post"
tags = ENV["tags"] || "[]"
category = ENV["category"] || ""
category = "\"#{category.gsub(/-/,' ')}\"" if !category.empty?
slug = title.downcase.strip.gsub(' ', '-').gsub(/[^\w-]/, '')
begin
date = (ENV['date'] ? Time.parse(ENV['date']) : Time.now).strftime('%Y-%m-%d')
rescue => e
puts "Error - date format must be YYYY-MM-DD, please check you typed it correctly!"
exit -1
end
filename = File.join(CONFIG['posts'], "#{date}-#{slug}.#{CONFIG['post_ext']}")
if File.exist?(filename)
abort("rake aborted!") if ask("#{filename} already exists. Do you want to overwrite?", ['y', 'n']) == 'n'
end
puts "Creating new post: #{filename}"
open(filename, 'w') do |post|
post.puts "---"
post.puts "layout: post"
post.puts "title: \"#{title.gsub(/-/,' ')}\""
post.puts 'description: ""'
post.puts "category: #{category}"
post.puts "tags: #{tags}"
post.puts "---"
post.puts "{% include JB/setup %}"
end
end # task :post
# Usage: rake page name="about.html"
# You can also specify a sub-directory path.
# If you don't specify a file extention we create an index.html at the path specified
desc "Create a new page."
task :page do
name = ENV["name"] || "new-page.md"
filename = File.join(SOURCE, "#{name}")
filename = File.join(filename, "index.html") if File.extname(filename) == ""
title = File.basename(filename, File.extname(filename)).gsub(/[\W\_]/, " ").gsub(/\b\w/){$&.upcase}
if File.exist?(filename)
abort("rake aborted!") if ask("#{filename} already exists. Do you want to overwrite?", ['y', 'n']) == 'n'
end
mkdir_p File.dirname(filename)
puts "Creating new page: #{filename}"
open(filename, 'w') do |post|
post.puts "---"
post.puts "layout: page"
post.puts "title: \"#{title}\""
post.puts 'description: ""'
post.puts "---"
post.puts "{% include JB/setup %}"
end
end # task :page
desc "Launch preview environment"
task :preview do
system "jekyll serve -w"
end # task :preview
# Public: Alias - Maintains backwards compatability for theme switching.
task :switch_theme => "theme:switch"
namespace :theme do
# Public: Switch from one theme to another for your blog.
#
# name - String, Required. name of the theme you want to switch to.
# The theme must be installed into your JB framework.
#
# Examples
#
# rake theme:switch name="the-program"
#
# Returns Success/failure messages.
desc "Switch between Jekyll-bootstrap themes."
task :switch do
theme_name = ENV["name"].to_s
theme_path = File.join(CONFIG['themes'], theme_name)
settings_file = File.join(theme_path, "settings.yml")
non_layout_files = ["settings.yml"]
abort("rake aborted: name cannot be blank") if theme_name.empty?
abort("rake aborted: '#{theme_path}' directory not found.") unless FileTest.directory?(theme_path)
abort("rake aborted: '#{CONFIG['layouts']}' directory not found.") unless FileTest.directory?(CONFIG['layouts'])
Dir.glob("#{theme_path}/*") do |filename|
next if non_layout_files.include?(File.basename(filename).downcase)
puts "Generating '#{theme_name}' layout: #{File.basename(filename)}"
open(File.join(CONFIG['layouts'], File.basename(filename)), 'w') do |page|
page.puts "---"
page.puts File.read(settings_file) if File.exist?(settings_file)
page.puts "layout: default" unless File.basename(filename, ".html").downcase == "default"
page.puts "---"
page.puts "{% include JB/setup %}"
page.puts "{% include themes/#{theme_name}/#{File.basename(filename)} %}"
end
end
puts "=> Theme successfully switched!"
puts "=> Reload your web-page to check it out =)"
end # task :switch
# Public: Install a theme using the theme packager.
# Version 0.1.0 simple 1:1 file matching.
#
# git - String, Optional path to the git repository of the theme to be installed.
# name - String, Optional name of the theme you want to install.
# Passing name requires that the theme package already exist.
#
# Examples
#
# rake theme:install git="https://github.com/jekyllbootstrap/theme-twitter.git"
# rake theme:install name="cool-theme"
#
# Returns Success/failure messages.
desc "Install theme"
task :install do
if ENV["git"]
manifest = theme_from_git_url(ENV["git"])
name = manifest["name"]
else
name = ENV["name"].to_s.downcase
end
packaged_theme_path = JB::Path.build(:theme_packages, :node => name)
abort("rake aborted!
=> ERROR: 'name' cannot be blank") if name.empty?
abort("rake aborted!
=> ERROR: '#{packaged_theme_path}' directory not found.
=> Installable themes can be added via git. You can find some here: http://github.com/jekyllbootstrap
=> To download+install run: `rake theme:install git='[PUBLIC-CLONE-URL]'`
=> example : rake theme:install git='git@github.com:jekyllbootstrap/theme-the-program.git'
") unless FileTest.directory?(packaged_theme_path)
manifest = verify_manifest(packaged_theme_path)
# Get relative paths to packaged theme files
# Exclude directories as they'll be recursively created. Exclude meta-data files.
packaged_theme_files = []
FileUtils.cd(packaged_theme_path) {
Dir.glob("**/*.*") { |f|
next if ( FileTest.directory?(f) || f =~ /^(manifest|readme|packager)/i )
packaged_theme_files << f
}
}
# Mirror each file into the framework making sure to prompt if already exists.
packaged_theme_files.each do |filename|
file_install_path = File.join(JB::Path.base, filename)
if File.exist? file_install_path and ask("#{file_install_path} already exists. Do you want to overwrite?", ['y', 'n']) == 'n'
next
else
mkdir_p File.dirname(file_install_path)
cp_r File.join(packaged_theme_path, filename), file_install_path
end
end
puts "=> #{name} theme has been installed!"
puts "=> ---"
if ask("=> Want to switch themes now?", ['y', 'n']) == 'y'
system("rake switch_theme name='#{name}'")
end
end
# Public: Package a theme using the theme packager.
# The theme must be structured using valid JB API.
# In other words packaging is essentially the reverse of installing.
#
# name - String, Required name of the theme you want to package.
#
# Examples
#
# rake theme:package name="twitter"
#
# Returns Success/failure messages.
desc "Package theme"
task :package do
name = ENV["name"].to_s.downcase
theme_path = JB::Path.build(:themes, :node => name)
asset_path = JB::Path.build(:theme_assets, :node => name)
abort("rake aborted: name cannot be blank") if name.empty?
abort("rake aborted: '#{theme_path}' directory not found.") unless FileTest.directory?(theme_path)
abort("rake aborted: '#{asset_path}' directory not found.") unless FileTest.directory?(asset_path)
## Mirror theme's template directory (_includes)
packaged_theme_path = JB::Path.build(:themes, :root => JB::Path.build(:theme_packages, :node => name))
mkdir_p packaged_theme_path
cp_r theme_path, packaged_theme_path
## Mirror theme's asset directory
packaged_theme_assets_path = JB::Path.build(:theme_assets, :root => JB::Path.build(:theme_packages, :node => name))
mkdir_p packaged_theme_assets_path
cp_r asset_path, packaged_theme_assets_path
## Log packager version
packager = {"packager" => {"version" => CONFIG["theme_package_version"].to_s } }
open(JB::Path.build(:theme_packages, :node => "#{name}/packager.yml"), "w") do |page|
page.puts packager.to_yaml
end
puts "=> '#{name}' theme is packaged and available at: #{JB::Path.build(:theme_packages, :node => name)}"
end
end # end namespace :theme
# Internal: Download and process a theme from a git url.
# Notice we don't know the name of the theme until we look it up in the manifest.
# So we'll have to change the folder name once we get the name.
#
# url - String, Required url to git repository.
#
# Returns theme manifest hash
def theme_from_git_url(url)
tmp_path = JB::Path.build(:theme_packages, :node => "_tmp")
abort("rake aborted: system call to git clone failed") if !system("git clone #{url} #{tmp_path}")
manifest = verify_manifest(tmp_path)
new_path = JB::Path.build(:theme_packages, :node => manifest["name"])
if File.exist?(new_path) && ask("=> #{new_path} theme package already exists. Override?", ['y', 'n']) == 'n'
remove_dir(tmp_path)
abort("rake aborted: '#{manifest["name"]}' already exists as theme package.")
end
remove_dir(new_path) if File.exist?(new_path)
mv(tmp_path, new_path)
manifest
end
# Internal: Process theme package manifest file.
#
# theme_path - String, Required. File path to theme package.
#
# Returns theme manifest hash
def verify_manifest(theme_path)
manifest_path = File.join(theme_path, "manifest.yml")
manifest_file = File.open( manifest_path )
abort("rake aborted: repo must contain valid manifest.yml") unless File.exist? manifest_file
manifest = YAML.load( manifest_file )
manifest_file.close
manifest
end
def ask(message, valid_options)
if valid_options
answer = get_stdin("#{message} #{valid_options.to_s.gsub(/"/, '').gsub(/, /,'/')} ") while !valid_options.include?(answer)
else
answer = get_stdin(message)
end
answer
end
def get_stdin(message)
print message
STDIN.gets.chomp
end
#Load custom rake scripts
Dir['_rake/*.rake'].each { |r| load r }

View File

@ -1,39 +0,0 @@
# OpenJPEG THANKS file
Many people have contributed to OpenJPEG by reporting problems, suggesting various improvements,
or submitting actual code. Here is a list of these people. Help me keep
it complete and exempt of errors.
* Giuseppe Baruffa
* Ben Boeckel
* Aaron Boxer
* David Burken
* Matthieu Darbois
* Rex Dieter
* Herve Drolon
* Antonin Descampe
* Francois-Olivier Devaux
* Parvatha Elangovan
* Jerôme Fimes
* Bob Friesenhahn
* Kaori Hagihara
* Luc Hermitte
* Luis Ibanez
* David Janssens
* Hans Johnson
* Callum Lerwick
* Ke Liu (Tencent's Xuanwu LAB)
* Sebastien Lugan
* Benoit Macq
* Mathieu Malaterre
* Julien Malik
* Arnaud Maye
* Vincent Nicolas
* Aleksander Nikolic (Cisco Talos)
* Glenn Pearson
* Even Rouault
* Dzonatas Sol
* Winfried Szukalski
* Vincent Torri
* Yannick Verschueren
* Peter Wimmer

159
_config.yml Normal file
View File

@ -0,0 +1,159 @@
# This is the default format.
# For more see: http://jekyllrb.com/docs/permalinks/
permalink: /:categories/:year/:month/:day/:title
exclude: [".rvmrc", ".rbenv-version", "README.md", "Rakefile", "changelog.md"]
highlighter: rouge
paginate: 3
# Themes are encouraged to use these universal variables
# so be sure to set them if your theme uses them.
#
title : OpenJPEG
tagline: An open-source JPEG 2000 codec written in C.
author :
name : Université de Louvain (UCL), Belgium
email : info@openjpeg.org
github : uclouvain/openjpeg
twitter : openjpeg
#feedburner : feedname
# Version of binary release (update this for each new release!)
binVersion: 2.1.2
# Remaining URLs
gitURL: https://github.com/uclouvain/openjpeg
issuesURL: https://github.com/uclouvain/openjpeg/issues
testDataURL: https://github.com/uclouvain/openjpeg/openjpeg-data
uclURL: http://www.uclouvain.be/en-index.html
icteamURL: https://www.uclouvain.be/en-icteam.html
intopixURL: http://www.intopix.com/
latestReleaseURL: https://github.com/uclouvain/openjpeg/releases/latest
allReleasesURL: https://github.com/uclouvain/openjpeg/releases/
docInstallURL: https://github.com/uclouvain/openjpeg/wiki/Installation
docUsageURL: https://github.com/uclouvain/openjpeg/wiki/DocJ2KCodec
docAPIURL: http://www.openjpeg.org/libdoc/index.html
ciURL: http://my.cdash.org/index.php?project=OPENJPEG
dataURL: https://github.com/uclouvain/openjpeg-data
newIssueURL: https://github.com/uclouvain/openjpeg/issues/new
mlURL: 'https://groups.google.com/forum/#!forum/openjpeg'
mlsubURL: 'https://groups.google.com/forum/#!forum/openjpeg/join'
refSoftURL: http://www.jpeg.org/jpeg2000/software.html
openjpipURL: https://github.com/uclouvain/openjpeg/wiki/OpenJPIP
# The production_url is only used when full-domain names are needed
# such as sitemap.txt
# Most places will/should use BASE_PATH to make the urls
#
# If you have set a CNAME (pages.github.com) set your custom domain here.
# Else if you are pushing to username.github.io, replace with your username.
# Finally if you are pushing to a GitHub project page, include the project name at the end.
#
production_url : http://uclouvain.github.io/openjpeg
# All Jekyll-Bootstrap specific configurations are namespaced into this hash
#
JB :
version : 0.3.0
# All links will be namespaced by BASE_PATH if defined.
# Links in your website should always be prefixed with {{BASE_PATH}}
# however this value will be dynamically changed depending on your deployment situation.
#
# CNAME (http://yourcustomdomain.com)
# DO NOT SET BASE_PATH
# (urls will be prefixed with "/" and work relatively)
#
# GitHub Pages (http://username.github.io)
# DO NOT SET BASE_PATH
# (urls will be prefixed with "/" and work relatively)
#
# GitHub Project Pages (http://username.github.io/project-name)
#
# A GitHub Project site exists in the `gh-pages` branch of one of your repositories.
# REQUIRED! Set BASE_PATH to: http://username.github.io/project-name
#
# CAUTION:
# - When in Localhost, your site will run from root "/" regardless of BASE_PATH
# - Only the following values are falsy: ["", null, false]
# - When setting BASE_PATH it must be a valid url.
# This means always setting the protocol (http|https) or prefixing with "/"
#BASE_PATH : false
BASE_PATH : http://www.openjpeg.org
# By default, the asset_path is automatically defined relative to BASE_PATH plus the enabled theme.
# ex: [BASE_PATH]/assets/themes/[THEME-NAME]
#
# Override this by defining an absolute path to assets here.
# ex:
# http://s3.amazonaws.com/yoursite/themes/watermelon
# /assets
#
ASSET_PATH : false
# These paths are to the main pages Jekyll-Bootstrap ships with.
# Some JB helpers refer to these paths; change them here if needed.
#
archive_path: /archive.html
categories_path : /categories.html
tags_path : /tags.html
atom_path : /atom.xml
rss_path : /rss.xml
# Settings for comments helper
# Set 'provider' to the comment provider you want to use.
# Set 'provider' to false to turn commenting off globally.
#
comments :
provider : false
disqus :
short_name : jekyllbootstrap
livefyre :
site_id : 123
intensedebate :
account : 123abc
facebook :
appid : 123
num_posts: 5
width: 580
colorscheme: light
duoshuo :
short_name : jekyllbootstrap
# Settings for analytics helper
# Set 'provider' to the analytics provider you want to use.
# Set 'provider' to false to turn analytics off globally.
#
analytics :
provider : google
#gauges :
# site_id : 'SITE ID'
google :
tracking_id : 'UA-119953-1'
#getclicky :
# site_id :
#mixpanel :
# token : '_MIXPANEL_TOKEN_'
#piwik :
# baseURL : 'myserver.tld/piwik' # Piwik installation address (without protocol)
# idsite : '1' # the id of the site on Piwik
# Settings for sharing helper.
# Sharing is for things like tweet, plusone, like, reddit buttons etc.
# Set 'provider' to the sharing provider you want to use.
# Set 'provider' to false to turn sharing off globally.
#
sharing :
provider : false
# Settings for all other include helpers can be defined by creating
# a hash with key named for the given helper. ex:
#
# pages_list :
# provider : "custom"
#
# Setting any helper's provider to 'custom' will bypass the helper code
# and include your custom code. Your custom file must be defined at:
# ./_includes/custom/[HELPER]
# where [HELPER] is the name of the helper you are overriding.

View File

@ -0,0 +1,10 @@
---
layout: post
category : lessons
tagline: "Supporting tagline"
tags : [intro, beginner, jekyll, tutorial]
---
{% include JB/setup %}
This is an example of a draft. Read more here: [http://jekyllrb.com/docs/drafts/](http://jekyllrb.com/docs/drafts/)

20
_includes/JB/analytics Normal file
View File

@ -0,0 +1,20 @@
{% include JB/is_production %}
{% if is_production and site.JB.analytics.provider and page.JB.analytics != false %}
{% case site.JB.analytics.provider %}
{% when "gauges" %}
{% include JB/analytics-providers/gauges %}
{% when "google" %}
{% include JB/analytics-providers/google %}
{% when "getclicky" %}
{% include JB/analytics-providers/getclicky %}
{% when "mixpanel" %}
{% include JB/analytics-providers/mixpanel %}
{% when "piwik" %}
{% include JB/analytics-providers/piwik %}
{% when "custom" %}
{% include custom/analytics %}
{% endcase %}
{% endif %}

View File

@ -0,0 +1,13 @@
<script type="text/javascript">
var _gauges = _gauges || [];
(function() {
var t = document.createElement('script');
t.type = 'text/javascript';
t.async = true;
t.id = 'gauges-tracker';
t.setAttribute('data-site-id', '{{ site.JB.analytics.gauges.site_id }}');
t.src = '//secure.gaug.es/track.js';
var s = document.getElementsByTagName('script')[0];
s.parentNode.insertBefore(t, s);
})();
</script>

View File

@ -0,0 +1,12 @@
<script type="text/javascript">
var clicky_site_ids = clicky_site_ids || [];
clicky_site_ids.push({{ site.JB.analytics.getclicky.site_id }});
(function() {
var s = document.createElement('script');
s.type = 'text/javascript';
s.async = true;
s.src = '//static.getclicky.com/js';
( document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0] ).appendChild( s );
})();
</script>
<noscript><p><img alt="Clicky" width="1" height="1" src="//in.getclicky.com/{{ site.JB.analytics.getclicky.site_id }}ns.gif" /></p></noscript>

View File

@ -0,0 +1,11 @@
<script type="text/javascript">
var _gaq = _gaq || [];
_gaq.push(['_setAccount', '{{ site.JB.analytics.google.tracking_id }}']);
_gaq.push(['_trackPageview']);
(function() {
var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
})();
</script>

View File

@ -0,0 +1,9 @@
<script>
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
ga('create', {{ site.JB.analytics.googleUA.tracking_id }}', {% if site.JB.analytics.googleUA.property_name %}{{ site.JB.analytics.googleUA.property_name }}{% else %}'auto'{% endif %});
ga('send', 'pageview');
</script>

View File

@ -0,0 +1,11 @@
<script type="text/javascript">
var mpq = [];
mpq.push(["init", "{{ site.JB.analytics.mixpanel.token}}"]);
(function(){var b,a,e,d,c;b=document.createElement("script");b.type="text/javascript";
b.async=true;b.src=(document.location.protocol==="https:"?"https:":"http:")+
"//api.mixpanel.com/site_media/js/api/mixpanel.js";a=document.getElementsByTagName("script")[0];
a.parentNode.insertBefore(b,a);e=function(f){return function(){mpq.push(
[f].concat(Array.prototype.slice.call(arguments,0)))}};d=["init","track","track_links",
"track_forms","register","register_once","identify","name_tag","set_config"];for(c=0;c<
d.length;c++){mpq[d[c]]=e(d[c])}})();
</script>

View File

@ -0,0 +1,10 @@
<script type="text/javascript">
var pkBaseURL = (("https:" == document.location.protocol) ? "https://{{ site.JB.analytics.piwik.baseURL }}/" : "http://{{ site.JB.analytics.piwik.baseURL }}/");
document.write(unescape("%3Cscript src='" + pkBaseURL + "piwik.js' type='text/javascript'%3E%3C/script%3E"));
</script><script type="text/javascript">
try {
var piwikTracker = Piwik.getTracker(pkBaseURL + "piwik.php", {{ site.JB.analytics.piwik.idsite }});
piwikTracker.trackPageView();
piwikTracker.enableLinkTracking();
} catch( err ) {}
</script><noscript><p><img src="http://{{ site.JB.analytics.piwik.baseURL }}/piwik.php?idsite={{ site.JB.analytics.piwik.idsite }}" style="border:0" alt="" /></p></noscript>

View File

@ -0,0 +1,37 @@
{% comment %}<!--
The categories_list include is a listing helper for categories.
Usage:
1) assign the 'categories_list' variable to a valid array of tags.
2) include JB/categories_list
example:
<ul>
{% assign categories_list = site.categories %}
{% include JB/categories_list %}
</ul>
Notes:
Categories can be either a Hash of Category objects (hashes) or an Array of category-names (strings).
The encapsulating 'if' statement checks whether categories_list is a Hash or Array.
site.categories is a Hash while page.categories is an array.
This helper can be seen in use at: ../_layouts/default.html
-->{% endcomment %}
{% if site.JB.categories_list.provider == "custom" %}
{% include custom/categories_list %}
{% else %}
{% if categories_list.first[0] == null %}
{% for category in categories_list %}
<li><a href="{{ BASE_PATH }}{{ site.JB.categories_path }}#{{ category }}-ref">
{{ category | join: "/" }} <span>{{ site.categories[category].size }}</span>
</a></li>
{% endfor %}
{% else %}
{% for category in categories_list %}
<li><a href="{{ BASE_PATH }}{{ site.JB.categories_path }}#{{ category[0] }}-ref">
{{ category[0] | join: "/" }} <span>{{ category[1].size }}</span>
</a></li>
{% endfor %}
{% endif %}
{% endif %}
{% assign categories_list = nil %}

18
_includes/JB/comments Normal file
View File

@ -0,0 +1,18 @@
{% if site.JB.comments.provider and page.comments != false %}
{% case site.JB.comments.provider %}
{% when "disqus" %}
{% include JB/comments-providers/disqus %}
{% when "livefyre" %}
{% include JB/comments-providers/livefyre %}
{% when "intensedebate" %}
{% include JB/comments-providers/intensedebate %}
{% when "facebook" %}
{% include JB/comments-providers/facebook %}
{% when "duoshuo" %}
{% include JB/comments-providers/duoshuo %}
{% when "custom" %}
{% include custom/comments %}
{% endcase %}
{% endif %}

View File

@ -0,0 +1,15 @@
<div id="disqus_thread"></div>
<script type="text/javascript">
{% include JB/is_production %}
{% if is_production == false %}var disqus_developer = 1;{% endif %}
var disqus_shortname = '{{ site.JB.comments.disqus.short_name }}'; // required: replace example with your forum shortname
{% if page.wordpress_id %}var disqus_identifier = '{{page.wordpress_id}} {{site.production_url}}/?p={{page.wordpress_id}}';{% endif %}
/* * * DON'T EDIT BELOW THIS LINE * * */
(function() {
var dsq = document.createElement('script'); dsq.type = 'text/javascript'; dsq.async = true;
dsq.src = 'http://' + disqus_shortname + '.disqus.com/embed.js';
(document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(dsq);
})();
</script>
<noscript>Please enable JavaScript to view the <a href="http://disqus.com/?ref_noscript">comments powered by Disqus.</a></noscript>
<a href="http://disqus.com" class="dsq-brlink">blog comments powered by <span class="logo-disqus">Disqus</span></a>

View File

@ -0,0 +1,14 @@
<!-- Duoshuo Comment BEGIN -->
<div class="ds-thread"{% if page.wordpress_id %} data-thread-key="{{page.wordpress_id}}"{% endif %}></div>
<script type="text/javascript">
var duoshuoQuery = {short_name:'{{ site.JB.comments.duoshuo.short_name }}'};
(function() {
var ds = document.createElement('script');
ds.type = 'text/javascript';ds.async = true;
ds.src = 'http://static.duoshuo.com/embed.js';
ds.charset = 'UTF-8';
(document.getElementsByTagName('head')[0]
|| document.getElementsByTagName('body')[0]).appendChild(ds);
})();
</script>
<!-- Duoshuo Comment END -->

View File

@ -0,0 +1,9 @@
<div id="fb-root"></div>
<script>(function(d, s, id) {
var js, fjs = d.getElementsByTagName(s)[0];
if (d.getElementById(id)) return;
js = d.createElement(s); js.id = id;
js.src = "//connect.facebook.net/en_US/all.js#xfbml=1&appId={{ site.JB.comments.facebook.appid }}";
fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));</script>
<div class="fb-comments" data-href="{{ site.production_url }}{{ page.url }}" data-num-posts="{{ site.JB.comments.facebook.num_posts }}" data-width="{{ site.JB.comments.facebook.width }}" data-colorscheme="{{ site.JB.comments.facebook.colorscheme }}"></div>

View File

@ -0,0 +1,6 @@
<script>
var idcomments_acct = '{{ site.JB.comments.intensedebate.account }}';
var idcomments_post_id;
var idcomments_post_url;
</script>
<script type="text/javascript" src="http://www.intensedebate.com/js/genericCommentWrapperV2.js"></script>

View File

@ -0,0 +1,6 @@
<script type='text/javascript' src='http://zor.livefyre.com/wjs/v1.0/javascripts/livefyre_init.js'></script>
<script type='text/javascript'>
var fyre = LF({
site_id: {{ site.JB.comments.livefyre.site_id }}
});
</script>

3
_includes/JB/feedburner Normal file
View File

@ -0,0 +1,3 @@
{% if site.author.feedburner != null %}
<link href="http://feeds.feedburner.com/{{ site.author.feedburner }}" rel="alternate" title="{{ site.title }}" type="application/atom+xml" />
{% endif %}

26
_includes/JB/file_exists Normal file
View File

@ -0,0 +1,26 @@
{% comment %}<!--
param: file = "/example/file.png"
return: file_exists_result = true
examples:
{% include JB/file_exists file="/404.html" %}
{% if file_exists_result %}Found "/404.html"!{% else %}Did not find "/404.html".{% endif %}
{% assign filename = "/405.html" %}
{% include JB/file_exists file=filename %}
{% if file_exists_result %}Found "{{ filename }}"!{% else %}Did not find "{{ filename }}".{% endif %}
NOTE: the BREAK statement in the FOR loop assumes Liquid >= 2.5.0
-->{% endcomment %}
{% assign file_exists_result = false %}
{% if include.file %}
{% for static_file in site.static_files %}
{% if static_file.path == include.file %}
{% assign file_exists_result = true %}
{% break %}
{% endif %}
{% endfor %}
{% endif %}

19
_includes/JB/gist Normal file
View File

@ -0,0 +1,19 @@
{% comment %}<!--
The gist include allows you to embed GitHub Gist snippets in your content.
Usage:
1) include JB/gist
2) specify the gist_id parameter (REQUIRED)
3) specify the gist_file parameter (OPTIONAL)
example:
<ul>
{% include JB/gist gist_id="fdcfeaba4f33c172828d" %}
{% include JB/gist gist_id="fdcfeaba4f33c172828d" gist_file="jekyll-bootstrap.js" %}
</ul>
-->{% endcomment %}
<div id="gist">
<script src="https://gist.github.com/{{ include.gist_id }}.js{% if include.gist_file %}?file={{ include.gist_file }}{% endif %}"></script>
<noscript>
<pre>https://gist.github.com/{{include.gist_id}}.js{% if include.gist_file %}?file={{include.gist_file}}{% endif %}</pre>
</noscript>
</div>

View File

@ -0,0 +1,39 @@
{% capture jbcache %}{% comment %}
Determine whether or not the site is being built in a production environment.
Parameters:
None.
Returns:
is_production: [true|false]
jb_prod_env: [development|github|other]
Examples:
{% include JB/is_production %}
{% if is_production != true %}
<h3>This is Private</h3>
<p>I love to watch television in my undies. Don't tell anyone!</p>
{% endif %}
<h3>This is Public</h3>
<p>I have no unusual quirks.</p>
{% endcomment %}
{% assign is_production = false %}
{% assign jb_prod_env = "development" %}
{% if jekyll.environment != "development" %}
{% assign is_production = true %}
{% assign jb_prod_env = jekyll.environment %}
{% endif %}
{% if site.github %}
{% assign is_production = true %}
{% assign jb_prod_env = "github" %}
{% endif %}
{% endcapture %}{% assign jbcache = nil %}

32
_includes/JB/liquid_raw Normal file
View File

@ -0,0 +1,32 @@
{% comment%}<!--
The liquid_raw helper is a way to display raw liquid code, as opposed to parsing it.
Normally you'd use Liquid's built in 'raw' tag.
The problem is GitHub Jekyll does not support the current Liquid release.
GitHub Jekyll supports the deprecated 'literal' tag.
Using one will break the other if you plan to deploy to GitHub pages.
see: https://github.com/mojombo/jekyll/issues/425
Since I don't want to mess with Liquid versions, I'll just rewrite the way I
intend to give liquid examples. It's not an elegant solution by any means:
Usage:
1) Define a 'text' variable with the block of liquid code you intend to display.
2) Pass the text variable to include JB/liquid_raw
example:
{% capture text %}|.% for tag in tags_list %.|
<li><a href="|.{ site.var.tags_path }.||.{ tag[0] }.|-ref">|.{ tag[0] }.| <span>|.{tag[1].size}.|</span></a></li>
|.% endfor %.|
|.% assign tags_list = null %.|{% endcapture %}
{% include JB/liquid_raw %}
As seen here, you must use "|." and ".|" as opening and closing brackets.
-->{% endcomment%}
{% if site.JB.liquid_raw.provider == "custom" %}
{% include custom/liquid_raw %}
{% else %}
<pre><code>{{text | replace:"|.", "&#123;" | replace:".|", "&#125;" | replace:">", "&gt;" | replace:"<", "&lt;" }}</code></pre>
{% endif %}
{% assign text = nil %}

39
_includes/JB/pages_list Normal file
View File

@ -0,0 +1,39 @@
{% comment %}<!--
The pages_list include is a listing helper.
Usage:
1) assign the 'pages_list' variable to a valid array of pages or posts.
2) include JB/pages_list
example:
<ul>
{% assign pages_list = site.pages %}
{% include JB/pages_list %}
</ul>
Grouping: (optional):
assign the 'group' variable to constrain the list to only pages/posts
in the given group. Note you must define the group manually in the page/post
meta-data to use this feature.
Grouping is mainly helpful for non-post pages.
If you want to group posts, it's easier/better to tag them, then pass the tagged posts array.
i.e. site.tags.cool_tag (this returns an array of posts tagged: cool_tag)
This helper can be seen in use at: ../_layouts/default.html
-->{% endcomment %}
{% if site.JB.pages_list.provider == "custom" %}
{% include custom/pages_list %}
{% else %}
{% for node in pages_list %}
{% if node.title != null %}
{% if group == null or group == node.group %}
{% if page.url == node.url %}
<li class="active"><a href="{{ BASE_PATH }}{{node.url}}" class="active">{{node.title}}</a></li>
{% else %}
<li><a href="{{ BASE_PATH }}{{node.url}}">{{node.title}}</a></li>
{% endif %}
{% endif %}
{% endif %}
{% endfor %}
{% endif %}
{% assign pages_list = nil %}
{% assign group = nil %}

View File

@ -0,0 +1,55 @@
{% comment %}<!--
Collate_posts helper. Collated posts by year and month.
Usage:
1) assign the 'posts_collate' variable to a valid array of posts.
2) include JB/posts_collate
example:
{% assign posts_collate = site.posts %}
{% include JB/posts_collate %}
Ordering:
Posts are displayed in reverse chronological order.
For normal chronological order:
1) Change the for loop to this:
=> 'for post in site.posts reversed'
2) Next make sure to change 'post.previous.date' to:
=> 'post.next.date'
-->{% endcomment %}
{% if site.JB.posts_collate.provider == "custom" %}
{% include custom/posts_collate %}
{% else %}
{% for post in posts_collate %}
{% capture this_year %}{{ post.date | date: "%Y" }}{% endcapture %}
{% capture this_month %}{{ post.date | date: "%B" }}{% endcapture %}
{% capture next_year %}{{ post.previous.date | date: "%Y" }}{% endcapture %}
{% capture next_month %}{{ post.previous.date | date: "%B" }}{% endcapture %}
{% if forloop.first %}
<h2>{{this_year}}</h2>
<h3>{{this_month}}</h3>
<ul>
{% endif %}
<li><span>{{ post.date | date: "%B %e, %Y" }}</span> &raquo; <a href="{{ BASE_PATH }}{{ post.url }}">{{ post.title }}</a></li>
{% if forloop.last %}
</ul>
{% else %}
{% if this_year != next_year %}
</ul>
<h2>{{next_year}}</h2>
<h3>{{next_month}}</h3>
<ul>
{% else %}
{% if this_month != next_month %}
</ul>
<h3>{{next_month}}</h3>
<ul>
{% endif %}
{% endif %}
{% endif %}
{% endfor %}
{% endif %}
{% assign posts_collate = nil %}

23
_includes/JB/setup Normal file
View File

@ -0,0 +1,23 @@
{% capture jbcache %}
<!--
- Dynamically set liquid variables for working with URLs/paths
-->
{% include JB/is_production %}
{% if site.JB.setup.provider == "custom" %}
{% include custom/setup %}
{% else %}
{% if is_production and site.JB.BASE_PATH and site.JB.BASE_PATH != '' %}
{% assign BASE_PATH = site.JB.BASE_PATH %}
{% assign HOME_PATH = site.JB.BASE_PATH %}
{% else %}
{% assign BASE_PATH = nil %}
{% assign HOME_PATH = "/" %}
{% endif %}
{% if site.JB.ASSET_PATH %}
{% assign ASSET_PATH = site.JB.ASSET_PATH %}
{% else %}
{% capture ASSET_PATH %}{{ BASE_PATH }}/assets/themes/{{ layout.theme.name }}{% endcapture %}
{% endif %}
{% endif %}
{% endcapture %}{% assign jbcache = nil %}

9
_includes/JB/sharing Normal file
View File

@ -0,0 +1,9 @@
{% include JB/is_production %}
{% if is_production and site.JB.sharing.provider and page.JB.sharing != false %}
{% case site.JB.sharing.provider %}
{% when "custom" %}
{% include custom/sharing %}
{% endcase %}
{% endif %}

View File

@ -0,0 +1,81 @@
{% capture jbcache %}{% comment %}
Sort the given array or map.
Parameters:
collection: the array or map to sort [REQUIRED]
sort_by: the property to sort by [OPTIONAL]
sort_descending: reverse the collection [OPTIONAL]
Returns:
sort_result: the sorted collection
Examples:
<h3>Pages</h3>
<ol>
{% include JB/sort_collection collection=site.pages sort_by="title" %}
{% assign pages_list = sort_result %}
{% include JB/pages_list %}
</ol>
<h3>Pages [Reversed]</h3>
<ol>
{% include JB/sort_collection collection=site.pages sort_by="title" sort_descending=true %}
{% assign pages_list = sort_result %}
{% include JB/pages_list %}
</ol>
<h3>Array</h3>
<ol>
{% assign test_array = "one,two,three,four" | split: "," %}
{% include JB/sort_collection collection=test_array %}
{% for test in sort_result %}
<li>{{test}}</li>
{% endfor %}
</ol>
<h3>Array [Reversed]</h3>
<ol>
{% assign test_array = "one,two,three,four" | split: "," %}
{% include JB/sort_collection collection=test_array sort_descending=true %}
{% for test in sort_result %}
<li>{{test}}</li>
{% endfor %}
</ol>
{% endcomment %}
{% assign is_array = true %}
{% assign sort_result = "," | split: "," %}
{% assign collection = include.collection %}
{% if include.sort_by %}
{% assign sort_by = include.sort_by %}
{% else %}
{% assign sort_by = "title" %}
{% endif %}
{% if collection and collection.size > 0 %}
{% for x in collection.first %}
{% if x[1].size > 0 %}
{% assign is_array = false %}
{% endif %}
{% break %}
{% endfor %}
{% if is_array == false %}
{% assign sort_result = collection | sort: sort_by %}
{% else %}
{% assign sort_result = collection | sort %}
{% endif %}
{% if include.sort_descending %}
{% assign reversed = "," | split: "," %}
{% for index in (1..sort_result.size) %}
{% assign i = sort_result.size | minus: index %}
{% assign reversed = reversed | push: sort_result[i] %}
{% endfor %}
{% assign sort_result = reversed %}
{% assign reversed = nil %}
{% endif %}
{% endif %}{% endcapture %}{% assign jbcache = nil %}

33
_includes/JB/tags_list Normal file
View File

@ -0,0 +1,33 @@
{% comment %}<!--
The tags_list include is a listing helper for tags.
Usage:
1) assign the 'tags_list' variable to a valid array of tags.
2) include JB/tags_list
example:
<ul>
{% assign tags_list = site.tags %}
{% include JB/tags_list %}
</ul>
Notes:
Tags can be either a Hash of tag objects (hashes) or an Array of tag-names (strings).
The encapsulating 'if' statement checks whether tags_list is a Hash or Array.
site.tags is a Hash while page.tags is an array.
This helper can be seen in use at: ../_layouts/default.html
-->{% endcomment %}
{% if site.JB.tags_list.provider == "custom" %}
{% include custom/tags_list %}
{% else %}
{% if tags_list.first[0] == null %}
{% for tag in tags_list %}
<li><a href="{{ BASE_PATH }}{{ site.JB.tags_path }}#{{ tag }}-ref">{{ tag }} <span>{{ site.tags[tag].size }}</span></a></li>
{% endfor %}
{% else %}
{% for tag in tags_list %}
<li><a href="{{ BASE_PATH }}{{ site.JB.tags_path }}#{{ tag[0] }}-ref">{{ tag[0] }} <span>{{ tag[1].size }}</span></a></li>
{% endfor %}
{% endif %}
{% endif %}
{% assign tags_list = nil %}

View File

@ -0,0 +1,98 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<title>{{ page.title }}</title>
{% if page.description %}<meta name="description" content="{{ page.description }}">{% endif %}
<meta name="author" content="{{ site.author.name }}">
<!-- Enable responsive viewport -->
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<!-- Bootstrap styles -->
<link href="{{ ASSET_PATH }}/bootstrap/css/bootstrap.min.css" rel="stylesheet">
<!-- Optional theme -->
<link href="{{ ASSET_PATH }}/bootstrap/css/bootstrap-theme.min.css" rel="stylesheet">
<!-- Sticky Footer -->
<link href="{{ ASSET_PATH }}/bootstrap/css/bs-sticky-footer.css" rel="stylesheet">
<!-- Custom styles -->
<link href="{{ ASSET_PATH }}/css/style.css?body=1" rel="stylesheet" type="text/css" media="all">
<!-- HTML5 Shim and Respond.js IE8 support of HTML5 elements and media queries -->
<!-- WARNING: Respond.js doesn't work if you view the page via file:// -->
<!--[if lt IE 9]>
<script src="https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js"></script>
<script src="https://oss.maxcdn.com/libs/respond.js/1.3.0/respond.min.js"></script>
<![endif]-->
<!-- Fav and touch icons -->
<!-- Update these with your own images
<link rel="shortcut icon" href="images/favicon.ico">
<link rel="apple-touch-icon" href="images/apple-touch-icon.png">
<link rel="apple-touch-icon" sizes="72x72" href="images/apple-touch-icon-72x72.png">
<link rel="apple-touch-icon" sizes="114x114" href="images/apple-touch-icon-114x114.png">
-->
<!-- atom & rss feed -->
<link href="{{ BASE_PATH }}{{ site.JB.atom_path }}" type="application/atom+xml" rel="alternate" title="Sitewide ATOM Feed">
<link href="{{ BASE_PATH }}{{ site.JB.rss_path }}" type="application/rss+xml" rel="alternate" title="Sitewide RSS Feed">
</head>
<body>
<div id="wrap">
<nav class="navbar navbar-default" role="navigation">
<!-- Brand and toggle get grouped for better mobile display -->
<div class="navbar-header">
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#jb-navbar-collapse">
<span class="sr-only">Toggle navigation</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<a class="navbar-brand" href="{{ HOME_PATH }}">{{ site.title }}</a>
</div>
<!-- Collect the nav links, forms, and other content for toggling -->
<div class="collapse navbar-collapse" id="jb-navbar-collapse">
<ul class="nav navbar-nav">
{% assign pages_list = site.pages %}
{% assign group = 'navigation' %}
{% include JB/pages_list %}
</ul>
<form class="navbar-form navbar-right" role="search">
<div class="form-group">
<input type="text" class="form-control" placeholder="Search">
</div>
<button type="submit" class="btn btn-default">Submit</button>
</form>
</div><!-- /.navbar-collapse -->
</nav>
<div class="container">
{{ content }}
</div>
</div>
<div id="footer">
<div class="container">
<p>&copy; {{ site.time | date: '%Y' }} {{ site.author.name }}
with help from <a href="http://jekyllbootstrap.com" target="_blank" title="The Definitive Jekyll Blogging Framework">Jekyll Bootstrap</a>
and <a href="http://getbootstrap.com" target="_blank">Bootstrap</a>
</p>
</div>
</div>
{% include JB/analytics %}
<!-- Latest compiled and minified JavaScript, requires jQuery 1.x (2.x not supported in IE8) -->
<!-- Placed at the end of the document so the pages load faster -->
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
<script src="{{ ASSET_PATH }}/bootstrap/js/bootstrap.min.js"></script>
</body>
</html>

View File

@ -0,0 +1,9 @@
<div class="page-header">
<h1>{{ page.title }} {% if page.tagline %} <small>{{ page.tagline }}</small>{% endif %}</h1>
</div>
<div class="row">
<div class="col-xs-12">
{{ content }}
</div>
</div>

View File

@ -0,0 +1,47 @@
<div class="page-header">
<h1>{{ page.title }} {% if page.tagline %}<small>{{page.tagline}}</small>{% endif %}</h1>
</div>
<div class="row post-full">
<div class="col-xs-12">
<div class="date">
<span>{{ page.date | date_to_long_string }}</span>
</div>
<div class="content">
{{ content }}
</div>
{% unless page.categories == empty %}
<ul class="tag_box inline">
<li><i class="glyphicon glyphicon-open"></i></li>
{% assign categories_list = page.categories %}
{% include JB/categories_list %}
</ul>
{% endunless %}
{% unless page.tags == empty %}
<ul class="tag_box inline">
<li><i class="glyphicon glyphicon-tags"></i></li>
{% assign tags_list = page.tags %}
{% include JB/tags_list %}
</ul>
{% endunless %}
<hr>
<ul class="pagination">
{% if page.previous %}
<li class="prev"><a href="{{ BASE_PATH }}{{ page.previous.url }}" title="{{ page.previous.title }}">&laquo; Previous</a></li>
{% else %}
<li class="prev disabled"><a>&larr; Previous</a></li>
{% endif %}
<li><a href="{{ BASE_PATH }}{{ site.JB.archive_path }}">Archive</a></li>
{% if page.next %}
<li class="next"><a href="{{ BASE_PATH }}{{ page.next.url }}" title="{{ page.next.title }}">Next &raquo;</a></li>
{% else %}
<li class="next disabled"><a>Next &rarr;</a>
{% endif %}
</ul>
<hr>
{% include JB/comments %}
</div>
</div>

View File

@ -0,0 +1,2 @@
theme :
name : bootstrap-3

View File

@ -0,0 +1,148 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>{{ page.title }}</title>
{% if page.description %}<meta name="description" content="{{ page.description }}">{% endif %}
<meta name="author" content="{{ site.author.name }}">
<!-- Enable responsive viewport -->
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<!-- Le HTML5 shim, for IE6-8 support of HTML elements -->
<!--[if lt IE 9]>
<script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
<![endif]-->
<!-- Le styles -->
<link href="{{ ASSET_PATH }}/bootstrap/css/bootstrap.2.2.2.min.css" rel="stylesheet">
<link href="{{ ASSET_PATH }}/css/style.css?body=1" rel="stylesheet" type="text/css" media="all">
<!-- Le fav and touch icons -->
<!-- Update these with your own images -->
<link rel="shortcut icon" href="assets/images/favicon.ico">
<link rel="apple-touch-icon" href="images/apple-touch-icon.png">
<link rel="apple-touch-icon" sizes="72x72" href="images/apple-touch-icon-72x72.png">
<link rel="apple-touch-icon" sizes="114x114" href="images/apple-touch-icon-114x114.png">
<!-- atom & rss feed -->
<link href="{{ BASE_PATH }}{{ site.JB.atom_path }}" type="application/atom+xml" rel="alternate" title="Sitewide ATOM Feed">
<link href="{{ BASE_PATH }}{{ site.JB.rss_path }}" type="application/rss+xml" rel="alternate" title="Sitewide RSS Feed">
</head>
<body>
<!-- Place banner image aligned with column layout -->
<div class="top-area">
<div class="container-fluid">
<div class="row-fluid">
<div class="span2">
</div>
<div class="span10">
<!-- Column center (banner goes here) -->
<div class="banner-header">
<!--<a href="{{ HOME_PATH }}"><img src="{{ site.url }}/assets/images/logoopenjpeg_616x198.png" alt="openjpeg" width="616" height="198"></a> -->
<a href="{{ BASE_PATH }}"><img src="{{ BASE_PATH }}/assets/images/opj_logo_full.png" alt="opj_logo" width="650"></a>
<!--<a href="{{ BASE_PATH }}"><img src="{{ BASE_PATH }}/assets/images/openjpeg_simple.png" alt="openjpeg" width="300"></a>-->
<div class="banner-tagline">{{ site.tagline }}</div>
</div>
</div>
</div>
</div>
</div>
<div class="container-fluid">
<div class="row-fluid">
<div class="span2">
<div class="sidebar">
<h2>Downloads</h2>
<p><a href="{{ site.latestReleaseURL }}">Latest release (v{{ site.binVersion }})</a></p>
<p><a href="{{ site.allReleasesURL }}">Previous releases</a></p>
</div>
<div class="sidebar">
<h2>Documentation</h2>
<p><a href="{{ site.docInstallURL }}">Build / Installation</a></p>
<p><a href="{{ site.docUsageURL }}">Usage</a></p>
<p><a href="{{ site.openjpipURL }}">OpenJPIP</a></p>
</div>
<div class="sidebar">
<h2>Community</h2>
<p><a href="{{ site.mlURL }}">Mailing-list</a> (<a href="{{ site.mlsubURL }}">subscribe</a>)</p>
<p><a href="{{ site.issuesURL }}">Issue tracker</a> (<a href="{{ site.newIssueURL }}">fill an issue</a>)</p>
</div>
<div class="sidebar">
<h2>Developers</h2>
<p><a href="{{ site.gitURL }}">Source code</a></p>
<p><a href="{{ site.dataURL }}">Test files</a></p>
<p><a href="{{ site.ciURL }}">CDash</a></p>
<p><a href="{{ BASE_PATH}}/doxygen">Doxygen</a></p>
<p><a href="{{ BASE_PATH}}/abi-check/timeline/openjpeg">ABI/API timeline</a></p>
</div>
</div>
<div class="span6">
<!-- Column center (main content) -->
<div class="content">
{{ content }}
</div>
</div>
<div class="span3">
<div class="sidebarLeft">
<!-- Column right -->
<p><a href="{{ site.refSoftURL}}"><img src="{{ BASE_PATH }}/assets/images/J2Klogo_wide.png" alt="JPEG 2000 Reference software" width="200"></a></p>
<br>
<p><a href="{{ site.uclURL}}"><img src="{{ BASE_PATH }}/assets/images/UCL_logo.png" alt="UCL" width="160"></a></p>
<br>
<!--<p><a href="{{ site.icteamURL}}"><img src="{{ BASE_PATH }}/assets/images/logo-icteam.jpg" alt="ICTEAM" width="160"></a></p>
<br>-->
<p><a href="{{ site.intopixURL}}"><img src="{{ BASE_PATH }}/assets/images/logo_intopix.png" alt="INTOPIX" width="160"></a></p>
<br><br>
<p><a class="twitter-timeline" href="https://twitter.com/OpenJPEG" data-widget-id="619207551389986816">Tweets de @OpenJPEG</a>
<script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0],p=/^http:/.test(d.location)?'http':'https';if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src=p+"://platform.twitter.com/widgets.js";fjs.parentNode.insertBefore(js,fjs);}}(document,"script","twitter-wjs");</script></p>
<figure>
<a href="{{ BASE_PATH }}/rss.xml"><img src="{{ BASE_PATH }}/assets/images/feed-icon-32.png" alt="RSS" width="32" height="32"></a>
<figcaption>
<a href="{{ BASE_PATH }}/rss.xml">RSS</a>
</figcaption>
</figure>
<figure>
<a href="{{ BASE_PATH }}/atom.xml"><img src="{{ BASE_PATH }}/assets/images/feed-icon-32.png" alt="ATOM" width="32" height="32"></a>
<figcaption>
<a href="{{ BASE_PATH }}/atom.xml">ATOM</a>
</figcaption>
</figure>
</div>
</div>
</div>
<footer>
<hr>
<div class="row-fluid">
<div class="span2">
<!-- Column left (empty) -->
</div>
<div class="span6">
<!-- Column center (footer text) -->
<p><small>&copy; {{ site.time | date: '%Y' }} {{ site.author.name }}
with help from <a href="http://jekyllbootstrap.com" target="_blank" title="The Definitive Jekyll Blogging Framework">Jekyll Bootstrap</a>
and <a href="http://getbootstrap.com" target="_blank">Bootstrap</a></p>
</div>
</div>
</footer>
</div>
{% include JB/analytics %}
</body>
</html>

View File

@ -0,0 +1,18 @@
<!--
<div class="page-header">
<h1>{{ page.title }} {% if page.tagline %} <small>{{ page.tagline }}</small>{% endif %}</h1>
</div>
-->
<div class="newsbar">
<h2>Latest news</h2>
<p align=center><a class="twitter-timeline" href="https://twitter.com/OpenJPEG" data-widget-id="619207551389986816" data-chrome="nofooter noheader noborders noscrollbar" height="150">Tweets de @OpenJPEG</a>
<script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0],p=/^http:/.test(d.location)?'http':'https';if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src=p+"://platform.twitter.com/widgets.js";fjs.parentNode.insertBefore(js,fjs);}}(document,"script","twitter-wjs");</script></p>
<!--<p align="center"><a href="{{ BASE_PATH }}/archive.html">News Archive</a></p>-->
</div>
<div class="row-fluid">
<div class="span12">
{{ content }}
</div>
</div>

View File

@ -0,0 +1,13 @@
<!--
<div class="page-header">
<h1>{{ page.title }} {% if page.tagline %} <small>{{ page.tagline }}</small>{% endif %}</h1>
</div>
-->
<div class="row-fluid">
<div class="span12">
{{ content }}
</div>
</div>

View File

@ -0,0 +1,50 @@
<!-- <div class="page-header">
<h1>{{ page.title }} {% if page.tagline %}<small>{{page.tagline}}</small>{% endif %}</h1>
</div> -->
<div class="row-fluid post-full">
<div class="span12">
<h1>{{ page.title }}</h1>
<div class="date">
<span>{{ page.date | date_to_long_string }}</span>
</div>
<div class="content">
{{ content }}
</div>
{% unless page.categories == empty %}
<ul class="tag_box inline">
<li><i class="icon-folder-open"></i></li>
{% assign categories_list = page.categories %}
{% include JB/categories_list %}
</ul>
{% endunless %}
{% unless page.tags == empty %}
<ul class="tag_box inline">
<li><i class="icon-tags"></i></li>
{% assign tags_list = page.tags %}
{% include JB/tags_list %}
</ul>
{% endunless %}
<hr>
<div class="pagination">
<ul>
{% if page.previous %}
<li class="prev"><a href="{{ BASE_PATH }}{{ page.previous.url }}" title="{{ page.previous.title }}">&larr; Previous</a></li>
{% else %}
<li class="prev disabled"><a>&larr; Previous</a></li>
{% endif %}
<li><a href="{{ BASE_PATH }}{{ site.JB.archive_path }}">Archive</a></li>
{% if page.next %}
<li class="next"><a href="{{ BASE_PATH }}{{ page.next.url }}" title="{{ page.next.title }}">Next &rarr;</a></li>
{% else %}
<li class="next disabled"><a>Next &rarr;</a>
{% endif %}
</ul>
</div>
<hr>
{% include JB/comments %}
</div>
</div>

View File

@ -0,0 +1,2 @@
theme :
name : twitter

6
_layouts/default.html Normal file
View File

@ -0,0 +1,6 @@
---
theme :
name : twitter
---
{% include JB/setup %}
{% include themes/twitter/default.html %}

7
_layouts/main.html Normal file
View File

@ -0,0 +1,7 @@
---
theme :
name : twitter
layout: default
---
{% include JB/setup %}
{% include themes/twitter/main.html %}

7
_layouts/page.html Normal file
View File

@ -0,0 +1,7 @@
---
theme :
name : twitter
layout: default
---
{% include JB/setup %}
{% include themes/twitter/page.html %}

7
_layouts/post.html Normal file
View File

@ -0,0 +1,7 @@
---
theme :
name : twitter
layout: default
---
{% include JB/setup %}
{% include themes/twitter/post.html %}

38
_plugins/debug.rb Normal file
View File

@ -0,0 +1,38 @@
# A simple way to inspect liquid template variables.
# Usage:
# Can be used anywhere liquid syntax is parsed (templates, includes, posts/pages)
# {{ site | debug }}
# {{ site.posts | debug }}
#
require 'pp'
module Jekyll
# Need to overwrite the inspect method here because the original
# uses < > to encapsulate the psuedo post/page objects in which case
# the output is taken for HTML tags and hidden from view.
#
class Post
def inspect
"#Jekyll:Post @id=#{self.id.inspect}"
end
end
class Page
def inspect
"#Jekyll:Page @name=#{self.name.inspect}"
end
end
end # Jekyll
module Jekyll
module DebugFilter
def debug(obj, stdout=false)
puts obj.pretty_inspect if stdout
"<pre>#{obj.class}\n#{obj.pretty_inspect}</pre>"
end
end # DebugFilter
end # Jekyll
Liquid::Template.register_filter(Jekyll::DebugFilter)

View File

@ -0,0 +1,59 @@
---
layout: post
title: Older news
---
{% include JB/setup %}
## 15 December 2005: OpenJPEG 1.0 has been released
Thanks to Hervé Drolon from the [Freeimage project](http://freeimage.sourceforge.net/), major enhancements have been brought to the OpenJPEG library. They are shortly summarized in the following list. As you will see, this new version is completely "iso-functional" in comparison with the previous one... Nevertheless, deep changes have been made giving the openjpeg library enough robustness to release version 1.0. The new library structure, function names, ... are largely inspired from the work that has been done for the JPEG library.
We hope that this robust and stable version of the OpenJPEG library will help you even more when building your JPEG 2000 applications !
Major changes :
* User interface : the UI is now independent from the library code. In order to use the library, in addition to the binary of the library itself, you only need one header file : openjpeg.h. The interface is actually much inspired from the LibJPEG library. A DLL target will be added soon to the .lib/.so/.a targets already present.
* Multi-threading : one of the major enhancements of this version : the library can know be used in multi-thread applications.
* Error handling : the error handling system has been completely rebuilt and uses now an event managing system with callbacks. It manages errors, warnings and debug infos (like processing time, ...). Moreover, this system is easily extensible to other kind of events.
* Parameters : parameters are sent to the codec through new strcutures called opj\_cparameters\_t et opj\_dparameters\_t. Adding new parameters is now very easy using these structures.
* Documentation : the library is now documented with the Javadoc Standard. An html version of the documentation generated with Doxygen will soon be online.
## 1 september 2005: Forum has been opened
A forum has been opened where questions and comments can be posted about the library. Feel free to contribute !
## 27 april 2005: Version 0.97
Most of the the new features of version 0.97 are related to MJ2. It now includes a metadata reader from a Motion JPEG 2000 video file that generates an XML file with a representation of that content. This part of the OpenJPEG codec has been developped by Glenn Pearson . Thanks for his contributions ! This version also includes optimisations of the J2K and MJ2 codecs. Check the documentation for more info.
## 26 january 2005 : "layering" option added to the decoder
A '-l' option has been added to the decoder. This option allows user to specify the maximum number of layers to be decoded. In addition to this, the command line for the decoder (j2k\_to\_image) has been updated.
## 14 december 2004 : Version 0.96
This version integrated also updates for j2k, jp2 and mj2 file formats.
## 13 december 2004: Modularity increased with MJ2 files
The modularity of the MJ2 codec has been increased. Two tools (MJ2\_Wrapper and MJ2\_Extractor) are independant from OpenJPEG and enable you to wrap JPEG 2000 codestream into a MJ2 file, and to extract codestreams from MJ2 files. Besides these two new tools, the MJ2 codec compresses YUV frames to an MJ2 file, and decompresses them using the OpenJPEG codec.
## 20 July 2004 : Version 0.95
The main update of the version 0.95 is the Class-1 Profile-1 compliance of the decoder. We are working hard to make the whole codec full part-1 compliant as soon as possible (some tests are still to be made on the encoder). This version 0.95 integrates also recent updates like jp2 or mj2 file formats support
## 15 July 2004 : MJ2 files encoding and decoding
You can now create and decode Motion JPEG 2000 files with OpenJPEG. The compression from YUV files can be achieved using all standard OpenJPEG coding options applied to the J2K codestreams. You can use standard MJ2 boxes, or define your own. The decompression of MJ2 files to YUV is straightforward. For the moment, this new option is available only in the CVS package (**not** in the version 0.9 package).
## 25 June 2004 : JP2-format encoding and decoding
JP2 file-format is now managed by OpenJPEG. Just specify a .jp2 extension in place of the .j2k extension. At the encoder, you may specify the content of the JP2 boxes, or use the standard ones created by default. At the decoder, a JP2-structure is created and can be used afterwards. For the moment, this new option is available only in the CVS package (**not** in the version 0.9 package).
## 3 May 2004 : Version 0.9
Version 0.9 has been released. Several new features are available :
* Option '-reduce n' added to the decoder. The decoder stops the inverse wavelet transform at the right resolution define through the option '-reduce n'. The value entered means that the dimension of the output image will be 2n times smaller than the original one.
* New information inside index. In addition to the information already present in the index structure (byterange, ...), the distortion reduction brought by each packet has been added. This can be useful when browsing very large images through a network (JPIP protocol) or when evaluating the importance of each packet for error resilience. The structure of the index is fully described in the documentation.
* Option '-q n' added to the encoder. This option enables the user to specifiy a psnr to which he/she wants the image to be compressed, in place of a compression ratio. The encoder will then give the smallest codestream reaching this quality level. The options '-q' and '-r' cannot be used together of course.

View File

@ -0,0 +1,7 @@
---
layout: post
title: CMake files available
---
{% include JB/setup %}
Thanks to Mathieu Malaterre from the [GDCM project](http://www.creatis.insa-lyon.fr/Public/Gdcm/Main.html), CMake files have been added to the cvs repository. CMake is a cross-platform, open-source make system. Makefiles and project files for almost any platform can now easily be generated. Feel free to test them on your own platform and provide feedback.

View File

@ -0,0 +1,14 @@
---
layout: post
title: Lots of news
---
{% include JB/setup %}
We haven't been very active in updating this page recently. Here is a summary of the recent (and "not so recent") changes:
* Group: In replacement of the forum, we've created a new moderated group to discuss about the OpenJPEG library. All your suggestion, comments and questions are welcome.
* Version 1.1.1 has been released. Compared to version 1.0, this version of the library is more stable and has been (slightly) optimized for speed.
* OPJViewer, and multi-platform JPEG 2000 viewer based on OpenJPEG, has been developped by the DSPLab of the University of Perugia. It is available from the SVN and currently in the win32 compiled version of OpenJPEG V1.1.1
* JPWL: OpenJPEG is now compatible with the JPWL standard. This module is developped by the DSPLab of the University of Perugia.
* 16 bit files are correctly handled by OpenJPEG.
* SL: OpenJPEG is the JPEG 2000 codec used in the Open Source version of Second Life.

View File

@ -0,0 +1,14 @@
---
layout: post
title: OpenJPEG 1.2 released
---
{% include JB/setup %}
We're very happy to announce that [OpenJPEG version 1.2](https://github.com/uclouvain/openjpeg/releases/tag/version.1.2) has been released. Here are the three main novelties:
* Digital Cinema: OpenJPEG is now capable of encoding and decoding JPEG 2000 streams compatible with the JPEG Profile-3 (2K images) and Profile-4 (4K images). These profiles correspond to the [DCI specifications](http://www.dcimovies.com/).
* Optimizations: The two main cores in terms of computation complexity (DWT and T1) have been optimized.
* TIFF files are now handled. 8,12 and 16 bits per component are allowed.
More generally, the library robustness has been increased and several bugs have been corrected.
Since the library structure has been modified, we have increased the soversion (it is now set to 2).

View File

@ -0,0 +1,14 @@
---
layout: post
title: OpenJPEG 1.3 released
---
{% include JB/setup %}
[OpenJPEG version 1.3](https://github.com/uclouvain/openjpeg/releases/tag/version.1.3) has been released ! Here are the main characteristics of this new release:
* Optimizations: Many optimizations have been implemented, leading to a significant decrease in the memory usage for large images and speed increase. The T1 and DWT are the main modules that have been optimized.
* Indexing: The creation of indexes is now possible at encoding and decoding. An index provides useful information on the JPEG 2000 codestream like the progression order, number of layers and resolutions, the position and distorsion of each packets, ...
* OPJViewer: The viewer has evolved a lot since version 1.2 ! It is now available on WIN32 and Linux32 and Linux64.
* File formats: More uncompressed formats are handled. The RAW and TGA formats are added to the already available ones: TIF, BMP, PNM, PGM, PPM and PGX.
The library interface is basically the same as in version 1.2, with new features added.

View File

@ -0,0 +1,7 @@
---
layout: post
title: Version 2 added as a branch
---
{% include JB/setup %}
Version 2 of OpenJPEG (still in alpha testing) has been added as a branch on the svn. More info on version 2 [here](http://groups.google.fr/group/openjpeg/browse_thread/thread/c5189f1a959ca813/46a52883c2827b0a?hl=en&q=).

View File

@ -0,0 +1,7 @@
---
layout: post
title: OpenJPEG 1.5 released
---
{% include JB/setup %}
[OpenJPEG 1.5](https://github.com/uclouvain/openjpeg/releases/tag/version.1.5) has been released.

View File

@ -0,0 +1,7 @@
---
layout: post
title: OpenJPIP 1.0 included in OpenJPEG suite
---
{% include JB/setup %}
OpenJPEG now includes OpenJPIP, a JPIP library written by Kaori Hagihara. More info [here](https://github.com/uclouvain/openjpeg/wiki/JPIP).

View File

@ -0,0 +1,7 @@
---
layout: post
title: OpenJPEG 1.5 released
---
{% include JB/setup %}
[OpenJPEG 1.5](https://github.com/uclouvain/openjpeg/releases/tag/version.1.5) has been released.

View File

@ -0,0 +1,7 @@
---
layout: post
title: OpenJPEG 1.5.1 released
---
{% include JB/setup %}
[OpenJPEG 1.5.1](https://github.com/uclouvain/openjpeg/releases/tag/version.1.5.1) has been released.

View File

@ -0,0 +1,7 @@
---
layout: post
title: OpenJPEG 2.0.0 released
---
{% include JB/setup %}
[OpenJPEG 2.0.0](https://github.com/uclouvain/openjpeg/releases/tag/version.2.0.0) has been released.

View File

@ -0,0 +1,7 @@
---
layout: post
title: OpenJPEG 1.5.2 released
---
{% include JB/setup %}
[OpenJPEG 1.5.2](https://github.com/uclouvain/openjpeg/releases/tag/version.1.5.2) has been released.

View File

@ -0,0 +1,7 @@
---
layout: post
title: OpenJPEG 2.0.1 released
---
{% include JB/setup %}
[OpenJPEG 2.0.1](https://github.com/uclouvain/openjpeg/releases/tag/version.2.0.1) has been released.

View File

@ -0,0 +1,7 @@
---
layout: post
title: OpenJPEG 2.1.0 released
---
{% include JB/setup %}
[OpenJPEG 2.1.0](https://github.com/uclouvain/openjpeg/releases/tag/version.2.1) has been released.

View File

@ -0,0 +1,8 @@
---
layout: post
title: OpenJPEG is officially a JPEG 2000 reference software
---
{% include JB/setup %}
Good news! ISO/IEC 15444-5:2003/AMD.2 has finally been published, meaning that OpenJPEG is now officially a reference software for JPEG 2000 Part-1.
See [here](http://www.jpeg.org/items/20150709_press.html) for the press release from last JPEG meeting in Warsaw (look for the JPEG 2000 section).

View File

@ -0,0 +1,32 @@
---
layout: post
title: Project migrated from googlecode to github + new website
---
{% include JB/setup %}
Better late than never, OpenJPEG has finally entirely moved to github.
- the repo is now at: <https://github.com/uclouvain/openjpeg>
- test data is now in a separate repo at: <https://github.com/uclouvain/openjpeg-data>
- the issue tracker is now at: <https://github.com/uclouvain/openjpeg/issues>
- the wiki is there: <https://github.com/uclouvain/openjpeg/wiki>
I invite you to update your working copies to link to the new repo.
Ive disabled yesterday the issue tab on googlecode, and removed existing commit rights.
A few comments about the migration:
- source has been migrated with whole history of revisions
- thanks to some (human) support from github, we were able to keep original timestamps of the issues and comments.
- issue and comment authorship could *not* be migrated: everything is authored by « gcode-importer ». However, the original author is always mentioned and in many cases, the link has been made to the corresponding github account (if we knew the mapping between gcode and github). This means that original authors will *not* get notified in case of issue updates so I invite interested people to subscribe to issues if needed.
- if issues had an assignee (« owner » in googlecode), it has been kept.
What is still to be done
- Reformat wiki: for now, pages have simply been imported « as is » from gcode, so a refactoring is needed here.
- Clean up obsolete branches in the repo.
- Continuous integration: update CDash, setup travis (?), configure jenkins (we have now a dedicated server for this).
I saw there are already a few forks of the repo, feel free to submit your pull request if you think what you did in your fork could benefit all openjpeg users. For those not familiar with this workflow, I invite them to read the github doc ([here](https://help.github.com/articles/using-pull-requests/) for instance) as pull requests will now be the preferred workflow to suggest changes for the library.
Last but not least, OpenJPEG has also a new website that makes use of the powerful [Jekyll](http://jekyllrb.com/) engine made available by Github Pages.

View File

@ -0,0 +1,9 @@
---
layout: post
title: Continuous Integration improvements
---
{% include JB/setup %}
Release process has been drastically automated, thanks to the powerful tools from github, travis and appveyor. Making a release is now (almost) as easy as tagging the right branch in the github repo: it automatically creates the releases and upload the binaries. So OpenJPEG will eventually have a release cycle thats worth its name: every 3 months at max, Ill tag the repo to trigger a new release.
And, among the bunch of tests that are automatically done for each commit, the results of the API/ABI compliance check is now directly uploaded on the OpenJPEG website: http://www.openjpeg.org/abi-check/timeline/openjpeg/, so that we can follow the compliance from one commit to another.

View File

@ -0,0 +1,10 @@
---
layout: post
title: OpenJPEG 2.1.1 released
---
{% include JB/setup %}
Well, miracles happen, [OpenJPEG 2.1.1](https://github.com/uclouvain/openjpeg/releases/tag/v2.1.1) is released today.
No fancy additional features, no API/ABI break compared to OpenJPEG 2.1 … Mostly a release with the *huge* amount of critical bug fixes brought to the library since 2 years. A release that will therefore mostly interest linux distributions package maintainers.
See full change log [here](https://github.com/uclouvain/openjpeg/blob/openjpeg-2.1/CHANGELOG.md).

View File

@ -0,0 +1,22 @@
---
layout: post
title: OpenJPEG 2.1.2 released
---
{% include JB/setup %}
Good news everyone!
[OpenJPEG 2.1.2](https://github.com/uclouvain/openjpeg/releases/tag/v2.1.2) is released today.
Important security fixes and third party libraries update.
[Changelog](https://github.com/uclouvain/openjpeg/blob/openjpeg-2.1/CHANGELOG.md)
[Full Changelog](https://github.com/uclouvain/openjpeg/compare/v2.1.1...v2.1.2)
Note that meanwhile, in the master branch, an important improvement has been merged, namely T1 optimizations and multithreading support (contribution from Even Rouault … Thanks a lot !). A (much) faster OpenJPEG is on track … Stay tuned for v2.2.0.
Enjoy,
Antonin

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,7 @@
{
"Object": "lib/libopenjpeg.so",
"Lang": "C",
"TotalSymbols": "127",
"PublicABI": "1",
"Version": "1.7"
}

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,7 @@
{
"Object": "lib/libopenjpeg.so",
"Lang": "C",
"TotalSymbols": "132",
"PublicABI": "1",
"Version": "1.7"
}

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,7 @@
{
"Object": "lib/libopenjpeg.so.1.4.0",
"Lang": "C",
"TotalSymbols": "21",
"PublicABI": "1",
"Version": "1.7"
}

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,7 @@
{
"Object": "lib/libopenjpeg.so.1.5.1",
"Lang": "C",
"TotalSymbols": "21",
"PublicABI": "1",
"Version": "1.7"
}

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,7 @@
{
"Object": "lib/libopenjpeg.so.1.5.2",
"Lang": "C",
"TotalSymbols": "21",
"PublicABI": "1",
"Version": "1.7"
}

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,7 @@
{
"Object": "lib/libopenjpeg.so.1.5.0",
"Lang": "C",
"TotalSymbols": "21",
"PublicABI": "1",
"Version": "1.7"
}

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,7 @@
{
"Object": "lib/libopenjp2.so.2.0.1",
"Lang": "C",
"TotalSymbols": "43",
"PublicABI": "1",
"Version": "1.7"
}

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,7 @@
{
"Object": "lib/libopenjp2.so.2.0.0",
"Lang": "C",
"TotalSymbols": "43",
"PublicABI": "1",
"Version": "1.7"
}

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,7 @@
{
"Object": "lib/libopenjp2.so.2.1.1",
"Lang": "C",
"TotalSymbols": "43",
"PublicABI": "1",
"Version": "1.7"
}

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,7 @@
{
"Object": "lib/libopenjp2.so.2.1.2",
"Lang": "C",
"TotalSymbols": "43",
"PublicABI": "1",
"Version": "1.7"
}

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,7 @@
{
"Object": "lib/libopenjp2.so.2.1.0",
"Lang": "C",
"TotalSymbols": "43",
"PublicABI": "1",
"Version": "1.7"
}

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,7 @@
{
"Object": "lib/libopenjp2.so.2.2.0",
"Lang": "C",
"TotalSymbols": "46",
"PublicABI": "1",
"Version": "1.7"
}

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,7 @@
{
"Object": "lib/libopenjp2.so.2.1.2",
"Lang": "C",
"TotalSymbols": "43",
"PublicABI": "1",
"Version": "1.7"
}

Some files were not shown because too many files have changed in this diff Show More