Compare commits

..
1 Commits
Author SHA1 Message Date
Cédrik Fuoco b35fb73b86 Update release type (#1839)
Signed-off-by: Cédrik Fuoco <cedrik.fuoco@autodesk.com>
2023-08-31 21:38:17 -04:00
1071 changed files with 47166 additions and 170041 deletions
-20
View File
@@ -1,20 +0,0 @@
# SPDX-License-Identifier: BSD-3-Clause
# Copyright Contributors to the OpenColorIO Project.
version: 2
updates:
- package-ecosystem: "github-actions"
directory: "/"
schedule:
interval: "monthly"
# Only do security updates rather than all version updates.
open-pull-requests-limit: 0
- package-ecosystem: "pip"
directory: "/"
schedule:
interval: "monthly"
# Only do security updates rather than all version updates.
open-pull-requests-limit: 0
+8 -10
View File
@@ -27,29 +27,27 @@ jobs:
# ---------------------------------------------------------------------------
linux_sonarcloud:
name: 'Linux VFX CY2023 SonarCloud'
name: 'Linux CentOS 7 VFX CY2022 SonarCloud <GCC 9.3.1>'
# Don't run on OCIO forks
if: github.repository == 'AcademySoftwareFoundation/OpenColorIO'
# GH-hosted VM. The build runs in ASWF 'container' defined below.
# GH-hosted VM. The build runs in CentOS 7 'container' defined below.
runs-on: ubuntu-latest
container:
# DockerHub: https://hub.docker.com/u/aswf
# Source: https://github.com/AcademySoftwareFoundation/aswf-docker
image: aswf/ci-ocio:2023
image: aswf/ci-ocio:2022
env:
CXX: g++
CC: gcc
steps:
- name: Checkout
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
uses: actions/checkout@v3
with:
fetch-depth: 50
- name: Install build-wrapper
uses: SonarSource/sonarqube-scan-action/install-build-wrapper@59db25f34e16620e48ab4bb9e4a5dce155cb5432 # v8.0.0
- name: Install docs env
run: share/ci/scripts/linux/dnf/install_docs_env.sh
run: share/ci/scripts/linux/yum/install_docs_env.sh
- name: Install tests env
run: share/ci/scripts/linux/dnf/install_tests_env.sh
run: share/ci/scripts/linux/yum/install_tests_env.sh
- name: Create build directories
run: |
mkdir _install
@@ -59,7 +57,7 @@ jobs:
cmake ../. \
-DCMAKE_INSTALL_PREFIX=../_install \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_CXX_STANDARD=17 \
-DCMAKE_CXX_STANDARD=14 \
-DCMAKE_CXX_FLAGS="-g -O0 -fprofile-arcs -ftest-coverage" \
-DCMAKE_CXX_OUTPUT_EXTENSION_REPLACE=ON \
-DCMAKE_EXE_LINKER_FLAGS="-lgcov" \
@@ -78,7 +76,7 @@ jobs:
- name: Generate code coverage report
run: share/ci/scripts/linux/run_gcov.sh
- name: Run sonar-scanner
uses: SonarSource/sonarqube-scan-action@59db25f34e16620e48ab4bb9e4a5dce155cb5432 # v8.0.0
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }}
run: sonar-scanner -X -Dsonar.login=$SONAR_TOKEN
+119 -253
View File
@@ -40,7 +40,7 @@ jobs:
# ---------------------------------------------------------------------------
linux:
name: 'Linux VFX CY${{ matrix.vfx-cy }}
name: 'Linux CentOS 7 VFX CY${{ matrix.vfx-cy }}
<${{ matrix.compiler-desc }}
config=${{ matrix.build-type }},
shared=${{ matrix.build-shared }},
@@ -52,19 +52,18 @@ jobs:
if: |
github.event_name == 'push' ||
github.event.pull_request.head.repo.full_name != github.repository
# GH-hosted VM. The build runs in ASWF 'container' defined below.
# GH-hosted VM. The build runs in CentOS 7 'container' defined below.
runs-on: ubuntu-latest
container:
# DockerHub: https://hub.docker.com/u/aswf
# Source: https://github.com/AcademySoftwareFoundation/aswf-docker
image: aswf/ci-ocio:${{ matrix.container-tag || matrix.vfx-cy }}
image: aswf/ci-ocio:${{ matrix.vfx-cy }}
strategy:
fail-fast: false
matrix:
build: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]
include:
# -------------------------------------------------------------------
# VFX CY2026 (Python 3.13)
# VFX CY2023 (Python 3.10)
# -------------------------------------------------------------------
- build: 12
build-type: Debug
@@ -73,13 +72,11 @@ jobs:
build-openfx: 'ON'
use-simd: 'ON'
use-oiio: 'ON'
aswf-ocio-version: 2.5.2
cxx-standard: 20
cxx-standard: 17
cxx-compiler: clang++
cc-compiler: clang
compiler-desc: Clang
vfx-cy: 2026
install-ext-packages: MISSING
vfx-cy: 2023
- build: 11
build-type: Release
build-shared: 'ON'
@@ -91,8 +88,7 @@ jobs:
cxx-compiler: g++
cc-compiler: gcc
compiler-desc: GCC
vfx-cy: 2026
install-ext-packages: ALL
vfx-cy: 2023
- build: 10
build-type: Release
build-shared: 'OFF'
@@ -100,14 +96,13 @@ jobs:
build-openfx: 'OFF'
use-simd: 'ON'
use-oiio: 'OFF'
cxx-standard: 17
cxx-standard: 11
cxx-compiler: g++
cc-compiler: gcc
compiler-desc: GCC
vfx-cy: 2026
install-ext-packages: ALL
vfx-cy: 2023
# -------------------------------------------------------------------
# VFX CY2025 (Python 3.11)
# VFX CY2022 (Python 3.9)
# -------------------------------------------------------------------
- build: 9
build-type: Debug
@@ -116,13 +111,11 @@ jobs:
build-openfx: 'ON'
use-simd: 'ON'
use-oiio: 'ON'
aswf-ocio-version: 2.4.2
cxx-standard: 20
cxx-standard: 17
cxx-compiler: clang++
cc-compiler: clang
compiler-desc: Clang
vfx-cy: 2025
install-ext-packages: MISSING
vfx-cy: 2022
- build: 8
build-type: Release
build-shared: 'ON'
@@ -134,8 +127,7 @@ jobs:
cxx-compiler: g++
cc-compiler: gcc
compiler-desc: GCC
vfx-cy: 2025
install-ext-packages: ALL
vfx-cy: 2022
- build: 7
build-type: Release
build-shared: 'OFF'
@@ -143,116 +135,100 @@ jobs:
build-openfx: 'OFF'
use-simd: 'ON'
use-oiio: 'OFF'
cxx-standard: 17
cxx-standard: 11
cxx-compiler: g++
cc-compiler: gcc
compiler-desc: GCC
vfx-cy: 2025
install-ext-packages: ALL
vfx-cy: 2022
# -------------------------------------------------------------------
# VFX CY2024 (Python 3.11)
# VFX CY2021 (Python 3.7)
# -------------------------------------------------------------------
- build: 6
build-type: Debug
build-type: Release
build-shared: 'ON'
build-docs: 'OFF'
build-openfx: 'ON'
build-openfx: 'OFF'
use-simd: 'ON'
use-oiio: 'ON'
aswf-ocio-version: 2.3.2
cxx-standard: 20
cxx-standard: 17
cxx-compiler: clang++
cc-compiler: clang
compiler-desc: Clang
vfx-cy: 2024
install-ext-packages: MISSING
vfx-cy: 2021
- build: 5
build-type: Release
build-shared: 'ON'
build-docs: 'ON'
build-shared: 'OFF'
build-docs: 'OFF'
build-openfx: 'ON'
use-simd: 'OFF'
use-oiio: 'OFF'
cxx-standard: 17
cxx-compiler: g++
cc-compiler: gcc
compiler-desc: GCC
vfx-cy: 2024
install-ext-packages: ALL
cxx-standard: 14
cxx-compiler: clang++
cc-compiler: clang
compiler-desc: Clang
vfx-cy: 2021
- build: 4
build-type: Release
build-shared: 'OFF'
build-type: Debug
build-shared: 'ON'
build-docs: 'OFF'
build-openfx: 'OFF'
use-simd: 'ON'
use-oiio: 'OFF'
cxx-standard: 17
cxx-standard: 11
cxx-compiler: g++
cc-compiler: gcc
compiler-desc: GCC
vfx-cy: 2024
install-ext-packages: ALL
vfx-cy: 2021
# -------------------------------------------------------------------
# VFX CY2023 (Python 3.10)
# VFX CY2020 (Python 3.7)
# -------------------------------------------------------------------
- build: 3
build-type: Debug
build-type: Release
build-shared: 'ON'
build-docs: 'OFF'
build-openfx: 'ON'
use-simd: 'OFF'
use-oiio: 'OFF'
cxx-standard: 14
cxx-compiler: clang++
cc-compiler: clang
compiler-desc: Clang
vfx-cy: 2020
- build: 2
build-type: Debug
build-shared: 'OFF'
build-docs: 'OFF'
build-openfx: 'ON'
use-simd: 'ON'
use-oiio: 'ON'
aswf-ocio-version: 2.2.1
cxx-standard: 20
cxx-compiler: clang++
cc-compiler: clang
compiler-desc: Clang
vfx-cy: 2023
install-ext-packages: MISSING
- build: 2
build-type: Release
build-shared: 'ON'
build-docs: 'ON'
build-openfx: 'ON'
use-simd: 'OFF'
use-oiio: 'OFF'
cxx-standard: 17
cxx-standard: 14
cxx-compiler: g++
cc-compiler: gcc
compiler-desc: GCC
vfx-cy: 2023
install-ext-packages: ALL
vfx-cy: 2020
- build: 1
build-type: Release
build-shared: 'OFF'
build-shared: 'ON'
build-docs: 'OFF'
build-openfx: 'OFF'
use-simd: 'ON'
use-oiio: 'OFF'
cxx-standard: 17
cxx-standard: 11
cxx-compiler: g++
cc-compiler: gcc
compiler-desc: GCC
vfx-cy: 2023
install-ext-packages: ALL
vfx-cy: 2020
env:
CXX: ${{ matrix.cxx-compiler }}
CC: ${{ matrix.cc-compiler }}
steps:
- name: Checkout
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
uses: actions/checkout@v3
- name: Install docs env
run: share/ci/scripts/linux/dnf/install_docs_env.sh
run: share/ci/scripts/linux/yum/install_docs_env.sh
if: matrix.build-docs == 'ON'
- name: Install tests env
run: share/ci/scripts/linux/dnf/install_tests_env.sh
- name: Install ASWF OpenColorIO for OpenImageIO
# The container's prebuilt OpenImageIO is linked against a specific
# OpenColorIO release that the container does not ship (it's built
# from source here instead). Fetch that release from the ASWF Conan
# remote so OpenImageIO's dependency resolves at link/run time.
if: matrix.use-oiio == 'ON'
run: share/ci/scripts/linux/dnf/install_aswf_opencolorio.sh ${{ matrix.aswf-ocio-version }} ${{ matrix.vfx-cy }}
run: share/ci/scripts/linux/yum/install_tests_env.sh
- name: Create build directories
run: |
mkdir _install
@@ -269,7 +245,7 @@ jobs:
-DOCIO_BUILD_GPU_TESTS=OFF \
-DOCIO_USE_SIMD=${{ matrix.use-simd }} \
-DOCIO_USE_OIIO_FOR_APPS=${{ matrix.use-oiio }} \
-DOCIO_INSTALL_EXT_PACKAGES=${{ matrix.install-ext-packages }} \
-DOCIO_INSTALL_EXT_PACKAGES=ALL \
-DOCIO_WARNING_AS_ERROR=ON \
-DPython_EXECUTABLE=$(which python)
working-directory: _build
@@ -313,7 +289,7 @@ jobs:
-Dpystring_ROOT=${{ env.ocio_build_path }}/ext/dist \
-Dyaml-cpp_ROOT=${{ env.ocio_build_path }}/ext/dist \
-Dyaml-cpp_STATIC_LIBRARY=ON \
-Dyaml-cpp_VERSION=0.8.0 \
-Dyaml-cpp_VERSION=0.7.0 \
-DZLIB_ROOT=${{ env.ocio_build_path }}/ext/dist \
-DZLIB_STATIC_LIBRARY=ON \
-Dminizip-ng_ROOT=${{ env.ocio_build_path }}/ext/dist \
@@ -324,11 +300,11 @@ jobs:
working-directory: _build/tests/cmake-consumer-dist
# ---------------------------------------------------------------------------
# macOS Intel
# macOS
# ---------------------------------------------------------------------------
macos:
name: 'macOS 15 intel
name: 'macOS 11
<AppleClang
arch=${{ matrix.arch-type }},
config=${{ matrix.build-type }},
@@ -342,11 +318,22 @@ jobs:
if: |
github.event_name == 'push' ||
github.event.pull_request.head.repo.full_name != github.repository
runs-on: macos-15-intel
runs-on: macos-11
strategy:
matrix:
build: [3, 4]
build: [1, 2, 3, 4]
include:
- build: 5
arch-type: "x86_64"
build-type: Release
build-shared: 'ON'
build-docs: 'OFF'
build-openfx: 'ON'
use-simd: 'ON'
use-oiio: 'ON'
cxx-standard: 17
python-version: '3.11'
# Keeping one universal build
- build: 4
arch-type: "x86_64;arm64"
build-type: Release
@@ -355,25 +342,45 @@ jobs:
build-openfx: 'OFF'
use-simd: 'ON'
use-oiio: 'OFF'
cxx-standard: 20
python-version: '3.12'
cxx-standard: 11
python-version: '3.10'
- build: 3
arch-type: "x86_64"
build-type: Release
build-shared: 'ON'
build-docs: 'ON'
build-openfx: 'OFF'
use-simd: 'OFF'
use-oiio: 'OFF'
cxx-standard: 11
python-version: '3.10'
- build: 2
arch-type: "x86_64"
build-type: Debug
build-shared: 'ON'
build-docs: 'OFF'
build-openfx: 'ON'
use-simd: 'ON'
use-oiio: 'OFF'
cxx-standard: 11
python-version: '3.9'
- build: 1
arch-type: "x86_64"
build-type: Release
build-shared: 'OFF'
build-docs: 'OFF'
build-openfx: 'ON'
use-simd: 'OFF'
use-simd: 'ON'
use-oiio: 'OFF'
cxx-standard: 17
python-version: '3.10'
cxx-standard: 14
python-version: '3.7'
steps:
- name: Setup Python
uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0
uses: actions/setup-python@v4
with:
python-version: ${{ matrix.python-version }}
- name: Checkout
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
uses: actions/checkout@v3
- name: Install docs env
run: share/ci/scripts/macos/install_docs_env.sh
if: matrix.build-docs == 'ON'
@@ -426,9 +433,9 @@ jobs:
# The yaml-cpp_VERSION is set below because Findyaml-cpp.cmake needs it but is unable to
# extract it from the headers, like the other modules.
#
# Prefer the static version of each dependencies by using <pkg>_STATIC_LIBRARY.
# Alternatively, this can be done by setting <pkg>_LIBRARY and <pkg>_INCLUDE_DIR to
# the static version of the package.
# Prefer the static version of each dependencies by using <pkg>_STATIC_LIBRARY.
# Alternatively, this can be done by setting <pkg>_LIBRARY and <pkg>_INCLUDE_DIR to
# the static version of the package.
run: |
cmake . \
-DCMAKE_PREFIX_PATH=../../../_install \
@@ -440,146 +447,7 @@ jobs:
-Dpystring_ROOT=${{ env.ocio_build_path }}/ext/dist \
-Dyaml-cpp_ROOT=${{ env.ocio_build_path }}/ext/dist \
-Dyaml-cpp_STATIC_LIBRARY=ON \
-Dyaml-cpp_VERSION=0.8.0 \
-DZLIB_ROOT=${{ env.ocio_build_path }}/ext/dist \
-DZLIB_STATIC_LIBRARY=ON \
-Dminizip-ng_ROOT=${{ env.ocio_build_path }}/ext/dist \
-Dminizip-ng_STATIC_LIBRARY=ON
cmake --build . \
--config ${{ matrix.build-type }}
./consumer
working-directory: _build/tests/cmake-consumer-dist
# ---------------------------------------------------------------------------
# macOS Arm
# ---------------------------------------------------------------------------
macos-arm:
name: 'macOS 14 arm
<AppleClang
arch=${{ matrix.arch-type }},
config=${{ matrix.build-type }},
shared=${{ matrix.build-shared }},
simd=${{ matrix.use-simd }},
cxx=${{ matrix.cxx-standard }},
python=${{ matrix.python-version }},
docs=${{ matrix.build-docs }},
oiio=${{ matrix.use-oiio}}>'
runs-on: macos-14
strategy:
matrix:
build: [1, 2]
include:
- build: 1
arch-type: "arm64"
test-rosetta: "OFF"
build-type: Release
build-shared: 'ON'
build-docs: 'ON'
build-openfx: 'OFF'
use-simd: 'ON'
use-oiio: 'ON'
cxx-standard: 20
python-version: '3.13'
- build: 2
arch-type: "x86_64;arm64"
test-rosetta: "ON"
build-type: Release
build-shared: 'ON'
build-docs: 'OFF'
build-openfx: 'OFF'
use-simd: 'ON'
use-oiio: 'OFF'
cxx-standard: 17
python-version: '3.12'
steps:
- name: Setup Python
uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0
with:
python-version: ${{ matrix.python-version }}
- name: Checkout
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- name: Install docs env
run: share/ci/scripts/macos/install_docs_env.sh
if: matrix.build-docs == 'ON'
- name: Install tests env
run: share/ci/scripts/macos/install_tests_env.sh
- name: Install OIIO
if: matrix.use-oiio == 'ON'
run: time share/ci/scripts/macos/install_oiio.sh
- name: Create build directories
run: |
mkdir _install
mkdir _build
- name: Configure
run: |
OIIO_CMAKE_ARGS=()
if [ "${{ matrix.use-oiio }}" = "ON" ]; then
OIIO_CMAKE_ARGS+=(-DOpenImageIO_ROOT=$(brew --prefix openimageio))
fi
cmake ../. \
-DCMAKE_INSTALL_PREFIX=../_install \
-DCMAKE_BUILD_TYPE=${{ matrix.build-type }} \
-DCMAKE_CXX_STANDARD=${{ matrix.cxx-standard }} \
-DBUILD_SHARED_LIBS=${{ matrix.build-shared }} \
-DOCIO_BUILD_DOCS=${{ matrix.build-docs }} \
-DOCIO_BUILD_OPENFX=${{ matrix.build-openfx }} \
-DOCIO_BUILD_GPU_TESTS=OFF \
-DOCIO_USE_SIMD=${{ matrix.use-simd }} \
-DOCIO_USE_OIIO_FOR_APPS=${{ matrix.use-oiio }} \
-DOCIO_INSTALL_EXT_PACKAGES=ALL \
-DOCIO_WARNING_AS_ERROR=ON \
-DPython_EXECUTABLE=$(which python) \
-DCMAKE_OSX_ARCHITECTURES="${{ matrix.arch-type }}" \
"${OIIO_CMAKE_ARGS[@]}"
working-directory: _build
- name: Build
run: |
cmake --build . \
--target install \
--config ${{ matrix.build-type }} \
-- -j$(sysctl -n hw.ncpu)
echo "ocio_build_path=$(pwd)" >> $GITHUB_ENV
working-directory: _build
- name: Test
run: ctest -V -C ${{ matrix.build-type }}
working-directory: _build
- name: Test Rosetta
if: matrix.test-rosetta == 'ON'
run: |
/usr/bin/arch -x86_64 /bin/zsh -c "ctest -V -C ${{ matrix.build-type }}"
working-directory: _build
- name: Test CMake Consumer with shared OCIO
if: matrix.build-shared == 'ON'
run: |
cmake . \
-DCMAKE_PREFIX_PATH=../../../_install \
-DCMAKE_BUILD_TYPE=${{ matrix.build-type }}
cmake --build . \
--config ${{ matrix.build-type }}
./consumer
working-directory: _build/tests/cmake-consumer-dist
- name: Test CMake Consumer with static OCIO
if: matrix.build-shared == 'OFF'
# The yaml-cpp_VERSION is set below because Findyaml-cpp.cmake needs it but is unable to
# extract it from the headers, like the other modules.
#
# Prefer the static version of each dependencies by using <pkg>_STATIC_LIBRARY.
# Alternatively, this can be done by setting <pkg>_LIBRARY and <pkg>_INCLUDE_DIR to
# the static version of the package.
run: |
cmake . \
-DCMAKE_PREFIX_PATH=../../../_install \
-DCMAKE_BUILD_TYPE=${{ matrix.build-type }} \
-Dexpat_ROOT=${{ env.ocio_build_path }}/ext/dist \
-Dexpat_STATIC_LIBRARY=ON \
-DImath_ROOT=${{ env.ocio_build_path }}/ext/dist \
-DImath_STATIC_LIBRARY=ON \
-Dpystring_ROOT=${{ env.ocio_build_path }}/ext/dist \
-Dyaml-cpp_ROOT=${{ env.ocio_build_path }}/ext/dist \
-Dyaml-cpp_STATIC_LIBRARY=ON \
-Dyaml-cpp_VERSION=0.8.0 \
-Dyaml-cpp_VERSION=0.7.0 \
-DZLIB_ROOT=${{ env.ocio_build_path }}/ext/dist \
-DZLIB_STATIC_LIBRARY=ON \
-Dminizip-ng_ROOT=${{ env.ocio_build_path }}/ext/dist \
@@ -592,9 +460,11 @@ jobs:
# ---------------------------------------------------------------------------
# Windows
# ---------------------------------------------------------------------------
# TODO: Install pythonXX_d.lib (or work around it being needed) to support
# Debug build testing with Python bindings and docs enabled.
windows:
name: 'Windows 2022
name: 'Windows 2019
<MSVC
config=${{ matrix.build-type }},
shared=${{ matrix.build-shared }},
@@ -607,7 +477,7 @@ jobs:
if: |
github.event_name == 'push' ||
github.event.pull_request.head.repo.full_name != github.repository
runs-on: windows-2022
runs-on: windows-2019
strategy:
matrix:
build: [1, 2, 3, 4]
@@ -618,19 +488,18 @@ jobs:
build-docs: 'OFF'
build-openfx: 'ON'
use-simd: 'OFF'
# NB: OIIO is not currently set up for Windows CI builds
use-oiio: 'OFF'
cxx-standard: 20
python-version: '3.13'
use-oiio: 'ON'
cxx-standard: 17
python-version: '3.11'
- build: 3
build-type: Release
build-shared: 'OFF'
build-docs: 'ON'
build-docs: 'OFF'
build-openfx: 'OFF'
use-simd: 'ON'
use-oiio: 'OFF'
cxx-standard: 17
python-version: '3.12'
cxx-standard: 11
python-version: '3.9'
- build: 2
build-type: Debug
build-shared: 'ON'
@@ -638,8 +507,8 @@ jobs:
build-openfx: 'OFF'
use-simd: 'ON'
use-oiio: 'OFF'
cxx-standard: 17
python-version: '3.11'
cxx-standard: 11
python-version: '3.8'
# C++14, OpenEXR, OpenFX
- build: 1
build-type: Release
@@ -648,20 +517,17 @@ jobs:
build-openfx: 'ON'
use-simd: 'ON'
use-oiio: 'OFF'
cxx-standard: 17
python-version: '3.10'
cxx-standard: 14
python-version: '3.7'
steps:
- name: Setup Python
uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0
uses: actions/setup-python@v4
with:
python-version: ${{ matrix.python-version }}
- name: Checkout
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
uses: actions/checkout@v3
- name: Install docs env
run: |
DOXYGEN_PATH=$GITHUB_WORKSPACE/doxygen
share/ci/scripts/windows/install_docs_env.sh "$DOXYGEN_PATH"
echo "$DOXYGEN_PATH" >> $GITHUB_PATH
run: share/ci/scripts/windows/install_docs_env.sh
shell: bash
if: matrix.build-docs == 'ON'
- name: Install tests env
@@ -733,7 +599,7 @@ jobs:
-Dpystring_ROOT=${{ env.ocio_build_path }}/ext/dist \
-Dyaml-cpp_ROOT=${{ env.ocio_build_path }}/ext/dist \
-Dyaml-cpp_STATIC_LIBRARY=ON \
-Dyaml-cpp_VERSION=0.8.0 \
-Dyaml-cpp_VERSION=0.7.0 \
-DZLIB_ROOT=${{ env.ocio_build_path }}/ext/dist \
-DZLIB_STATIC_LIBRARY=ON \
-Dminizip-ng_ROOT=${{ env.ocio_build_path }}/ext/dist \
+85 -72
View File
@@ -27,20 +27,19 @@ jobs:
# ---------------------------------------------------------------------------
linux_latest:
name: 'Linux VFX CY${{ matrix.vfx-cy }} latest
name: 'Linux CentOS 7 VFX CY${{ matrix.vfx-cy }} latest
<${{ matrix.compiler-desc }}
cxx=${{ matrix.cxx-standard }},
docs=${{ matrix.build-docs }}>'
# Don't run on OCIO forks
if: github.repository == 'AcademySoftwareFoundation/OpenColorIO'
# GH-hosted VM. The build runs in ASWF 'container' defined below.
# GH-hosted VM. The build runs in CentOS 7 'container' defined below.
runs-on: ubuntu-latest
container:
# DockerHub: https://hub.docker.com/u/aswf
# Source: https://github.com/AcademySoftwareFoundation/aswf-docker
image: aswf/ci-base:${{ matrix.vfx-cy }}
strategy:
fail-fast: false
matrix:
build: [1, 2, 3, 4]
include:
@@ -50,67 +49,72 @@ jobs:
- build: 1
build-docs: 'ON'
build-openfx: 'ON'
cxx-standard: 20
cxx-compiler: g++
cc-compiler: gcc
compiler-desc: GCC
vfx-cy: 2025
- build: 2
build-docs: 'OFF'
build-openfx: 'OFF'
cxx-standard: 17
cxx-compiler: g++
cc-compiler: gcc
compiler-desc: GCC
vfx-cy: 2024
vfx-cy: 2022
- build: 2
build-docs: 'OFF'
build-openfx: 'OFF'
cxx-standard: 14
cxx-compiler: g++
cc-compiler: gcc
compiler-desc: GCC
vfx-cy: 2021
# -------------------------------------------------------------------
# Clang
# -------------------------------------------------------------------
- build: 3
build-docs: 'OFF'
build-openfx: 'OFF'
cxx-standard: 20
cxx-compiler: clang++
cc-compiler: clang
compiler-desc: Clang
vfx-cy: 2025
- build: 4
build-docs: 'ON'
build-openfx: 'ON'
cxx-standard: 17
cxx-compiler: clang++
cc-compiler: clang
compiler-desc: Clang
vfx-cy: 2024
vfx-cy: 2022
- build: 4
build-docs: 'ON'
build-openfx: 'ON'
cxx-standard: 14
cxx-compiler: clang++
cc-compiler: clang
compiler-desc: Clang
vfx-cy: 2021
env:
CXX: ${{ matrix.cxx-compiler }}
CC: ${{ matrix.cc-compiler }}
steps:
- name: Checkout
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
uses: actions/checkout@v3
- name: Install docs env
run: share/ci/scripts/linux/dnf/install_docs_env.sh
run: share/ci/scripts/linux/yum/install_docs_env.sh
if: matrix.build-docs == 'ON'
- name: Install tests env
run: share/ci/scripts/linux/dnf/install_tests_env.sh
run: share/ci/scripts/linux/yum/install_tests_env.sh
- name: Setup ext environment
run: |
EXT_PATH=/usr/local
echo "EXT_PATH=$EXT_PATH" >> $GITHUB_ENV
- name: Install indirect dependencies
run: |
share/ci/scripts/multi/install_pugixml.sh latest
- name: Install fixed ext package versions
# Minizip-ng depends on ZLIB. ZLIB must be installed first.
run: |
share/ci/scripts/multi/install_expat.sh 2.7.2 $EXT_PATH
share/ci/scripts/multi/install_lcms2.sh 2.17 $EXT_PATH
share/ci/scripts/multi/install_yaml-cpp.sh 0.8.0 $EXT_PATH
share/ci/scripts/multi/install_pystring.sh 1.1.4 $EXT_PATH
share/ci/scripts/multi/install_pybind11.sh 3.0.1 $EXT_PATH
share/ci/scripts/multi/install_zlib.sh 1.3.1 $EXT_PATH
share/ci/scripts/multi/install_minizip-ng.sh 4.0.10 $EXT_PATH
share/ci/scripts/multi/install_expat.sh 2.4.1 $EXT_PATH
share/ci/scripts/multi/install_lcms2.sh 2.2 $EXT_PATH
share/ci/scripts/multi/install_yaml-cpp.sh 0.7.0 $EXT_PATH
share/ci/scripts/multi/install_pystring.sh 1.1.3 $EXT_PATH
share/ci/scripts/multi/install_pybind11.sh 2.9.2 $EXT_PATH
share/ci/scripts/multi/install_zlib.sh 1.2.12 $EXT_PATH
share/ci/scripts/multi/install_minizip-ng.sh 3.0.6 $EXT_PATH
- name: Install latest ext package versions
run: |
share/ci/scripts/multi/install_imath.sh latest $EXT_PATH
share/ci/scripts/multi/install_openexr.sh latest $EXT_PATH
share/ci/scripts/multi/install_oiio.sh latest $EXT_PATH
share/ci/scripts/multi/install_osl.sh latest $EXT_PATH
share/ci/scripts/multi/install_openfx.sh latest $EXT_PATH
- name: Create build directories
run: |
@@ -127,7 +131,8 @@ jobs:
-DOCIO_BUILD_GPU_TESTS=OFF \
-DOCIO_INSTALL_EXT_PACKAGES=NONE \
-DOCIO_WARNING_AS_ERROR=OFF \
-DPython_EXECUTABLE=$(which python)
-DPython_EXECUTABLE=$(which python) \
-DOCIO_USE_OIIO_CMAKE_CONFIG=ON
working-directory: _build
- name: Build
run: |
@@ -146,8 +151,6 @@ jobs:
-DCMAKE_BUILD_TYPE=Release
cmake --build . \
--config Release
# ASWF ci-base 2025.2 is missing lib64 (2025.1 have it)
export LD_LIBRARY_PATH=/usr/local/lib64:$LD_LIBRARY_PATH
./consumer
working-directory: _build/tests/cmake-consumer-dist
@@ -171,20 +174,20 @@ jobs:
- build: 1
build-docs: 'ON'
build-openfx: 'ON'
cxx-standard: 20
python-version: '3.14'
cxx-standard: 17
python-version: '3.11'
- build: 2
build-docs: 'ON'
build-openfx: 'ON'
cxx-standard: 17
python-version: '3.10'
cxx-standard: 14
python-version: '3.9'
steps:
- name: Setup Python
uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0
uses: actions/setup-python@v4
with:
python-version: ${{ matrix.python-version }}
- name: Checkout
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
uses: actions/checkout@v3
- name: Install docs env
run: share/ci/scripts/macos/install_docs_env.sh
if: matrix.build-docs == 'ON'
@@ -192,23 +195,29 @@ jobs:
run: share/ci/scripts/macos/install_tests_env.sh
- name: Setup ext environment
run: |
EXT_PATH=$GITHUB_WORKSPACE/_ext
EXT_PATH=/usr/local
echo "EXT_PATH=$EXT_PATH" >> $GITHUB_ENV
echo "CMAKE_PREFIX_PATH=$EXT_PATH" >> $GITHUB_ENV
- name: Install indirect dependencies
run: |
share/ci/scripts/macos/install_bison.sh latest
share/ci/scripts/macos/install_boost.sh latest
share/ci/scripts/multi/install_pugixml.sh latest $EXT_PATH
- name: Install fixed ext package versions
# Minizip-ng depends on ZLIB. ZLIB must be installed first.
run: |
share/ci/scripts/multi/install_expat.sh 2.7.2 $EXT_PATH
share/ci/scripts/multi/install_lcms2.sh 2.17 $EXT_PATH
share/ci/scripts/multi/install_yaml-cpp.sh 0.8.0 $EXT_PATH
share/ci/scripts/multi/install_pystring.sh 1.1.4 $EXT_PATH
share/ci/scripts/multi/install_pybind11.sh 3.0.1 $EXT_PATH
share/ci/scripts/multi/install_zlib.sh 1.3.1 $EXT_PATH
share/ci/scripts/multi/install_minizip-ng.sh 4.0.10 $EXT_PATH
share/ci/scripts/multi/install_expat.sh 2.4.1 $EXT_PATH
share/ci/scripts/multi/install_lcms2.sh 2.2 $EXT_PATH
share/ci/scripts/multi/install_yaml-cpp.sh 0.7.0 $EXT_PATH
share/ci/scripts/multi/install_pystring.sh 1.1.3 $EXT_PATH
share/ci/scripts/multi/install_pybind11.sh 2.9.2 $EXT_PATH
share/ci/scripts/multi/install_zlib.sh 1.2.12 $EXT_PATH
share/ci/scripts/multi/install_minizip-ng.sh 3.0.6 $EXT_PATH
- name: Install latest ext package versions
run: |
share/ci/scripts/multi/install_imath.sh latest $EXT_PATH
share/ci/scripts/multi/install_openexr.sh latest $EXT_PATH
share/ci/scripts/multi/install_oiio.sh latest $EXT_PATH
share/ci/scripts/multi/install_osl.sh latest $EXT_PATH
share/ci/scripts/multi/install_openfx.sh latest $EXT_PATH
- name: Create build directories
run: |
@@ -225,7 +234,8 @@ jobs:
-DOCIO_BUILD_GPU_TESTS=OFF \
-DOCIO_INSTALL_EXT_PACKAGES=NONE \
-DOCIO_WARNING_AS_ERROR=OFF \
-DPython_EXECUTABLE=$(which python)
-DPython_EXECUTABLE=$(which python) \
-DOCIO_USE_OIIO_CMAKE_CONFIG=ON
working-directory: _build
- name: Build
run: |
@@ -244,7 +254,6 @@ jobs:
-DCMAKE_BUILD_TYPE=Release
cmake --build . \
--config Release
export DYLD_LIBRARY_PATH=$EXT_PATH/lib:$DYLD_LIBRARY_PATH
./consumer
working-directory: _build/tests/cmake-consumer-dist
@@ -268,27 +277,22 @@ jobs:
- build: 1
build-docs: 'ON'
build-openfx: 'ON'
cxx-standard: 20
python-version: '3.14'
use-oiio: 'ON'
cxx-standard: 17
python-version: '3.11'
- build: 2
build-docs: 'ON'
build-openfx: 'ON'
cxx-standard: 17
python-version: '3.10'
use-oiio: 'OFF'
cxx-standard: 14
python-version: '3.9'
steps:
- name: Setup Python
uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0
uses: actions/setup-python@v4
with:
python-version: ${{ matrix.python-version }}
- name: Checkout
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
uses: actions/checkout@v3
- name: Install docs env
run: |
DOXYGEN_PATH=$GITHUB_WORKSPACE/doxygen
share/ci/scripts/windows/install_docs_env.sh "$DOXYGEN_PATH"
echo "$DOXYGEN_PATH" >> $GITHUB_PATH
run: share/ci/scripts/windows/install_docs_env.sh
shell: bash
if: matrix.build-docs == 'ON'
- name: Install tests env
@@ -308,24 +312,32 @@ jobs:
run: |
vcpkg install zlib:x64-windows
vcpkg install tiff:x64-windows
vcpkg install directx-headers:x64-windows
vcpkg install boost-asio:x64-windows
vcpkg install boost-container:x64-windows
vcpkg install boost-filesystem:x64-windows
vcpkg install boost-math:x64-windows
vcpkg install boost-stacktrace:x64-windows
vcpkg install boost-system:x64-windows
vcpkg install boost-thread:x64-windows
share/ci/scripts/multi/install_pugixml.sh latest $EXT_PATH
shell: bash
- name: Install fixed ext package versions
# Minizip-ng depends on ZLIB. ZLIB must be installed first.
run: |
share/ci/scripts/multi/install_lcms2.sh 2.17 $EXT_PATH
share/ci/scripts/multi/install_yaml-cpp.sh 0.8.0 $EXT_PATH
share/ci/scripts/multi/install_pystring.sh 1.1.4 $EXT_PATH
share/ci/scripts/multi/install_pybind11.sh 3.0.1 $EXT_PATH
share/ci/scripts/multi/install_expat.sh 2.7.2 $EXT_PATH
share/ci/scripts/multi/install_zlib.sh 1.3.1 $EXT_PATH
share/ci/scripts/multi/install_minizip-ng.sh 4.0.10 $EXT_PATH
share/ci/scripts/multi/install_lcms2.sh 2.2 $EXT_PATH
share/ci/scripts/multi/install_yaml-cpp.sh 0.7.0 $EXT_PATH
share/ci/scripts/multi/install_pystring.sh 1.1.3 $EXT_PATH
share/ci/scripts/multi/install_pybind11.sh 2.9.2 $EXT_PATH
share/ci/scripts/multi/install_expat.sh 2.4.1 $EXT_PATH
share/ci/scripts/multi/install_zlib.sh 1.2.12 $EXT_PATH
share/ci/scripts/multi/install_minizip-ng.sh 3.0.6 $EXT_PATH
shell: bash
# OSL not installed due to LLVM compilation time.
- name: Install latest ext package versions
run: |
share/ci/scripts/multi/install_imath.sh latest $EXT_PATH
share/ci/scripts/multi/install_openexr.sh latest $EXT_PATH
share/ci/scripts/multi/install_oiio.sh latest $EXT_PATH
share/ci/scripts/multi/install_openfx.sh latest $EXT_PATH
shell: bash
- name: Create build directories
@@ -346,7 +358,8 @@ jobs:
-DOCIO_INSTALL_EXT_PACKAGES=NONE \
-DOCIO_WARNING_AS_ERROR=OFF \
-DPython_EXECUTABLE=$(which python) \
-DOCIO_BUILD_PYTHON=OFF
-DOCIO_BUILD_PYTHON=OFF \
-DOCIO_USE_OIIO_CMAKE_CONFIG=ON
shell: bash
working-directory: _build
- name: Build
-85
View File
@@ -1,85 +0,0 @@
# SPDX-License-Identifier: BSD-3-Clause
# Copyright Contributors to the OpenColorIO Project.
#
# GitHub Actions workflow file
# https://help.github.com/en/actions/reference/workflow-syntax-for-github-actions
name: Deploy OCIO Homepage
on:
# Runs on pushes targeting the default branch
push:
branches:
- main
paths:
- 'docs/site/**'
# Allows you to run this workflow manually from the Actions tab
workflow_dispatch:
# Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages
permissions:
contents: read
pages: write
id-token: write
# Allow only one concurrent deployment, skipping runs queued between the run in-progress and latest queued.
# However, do NOT cancel in-progress runs as we want to allow these production deployments to complete.
concurrency:
group: "pages"
cancel-in-progress: false
# Default to bash
defaults:
run:
shell: bash
jobs:
# Build job
build:
if: github.repository == 'AcademySoftwareFoundation/OpenColorIO'
runs-on: ubuntu-latest
env:
HUGO_VERSION: 0.128.0
steps:
- name: Install Hugo CLI
run: |
wget -O ${{ runner.temp }}/hugo.deb https://github.com/gohugoio/hugo/releases/download/v${HUGO_VERSION}/hugo_extended_${HUGO_VERSION}_linux-amd64.deb \
&& sudo dpkg -i ${{ runner.temp }}/hugo.deb
- name: Install Dart Sass
run: sudo snap install dart-sass
- name: Checkout
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
submodules: recursive
- name: Setup Pages
id: pages
uses: actions/configure-pages@45bfe0192ca1faeb007ade9deae92b16b8254a0d # 6.0.0
- name: Install Node.js dependencies
run: "[[ -f package-lock.json || -f npm-shrinkwrap.json ]] && npm ci || true"
- name: Build with Hugo
env:
HUGO_CACHEDIR: ${{ runner.temp }}/hugo_cache
HUGO_ENVIRONMENT: production
run: |
cd docs/site/homepage
hugo -D \
--minify \
--baseURL "${{ steps.pages.outputs.base_url }}/" \
--themesDir ../..
- name: Upload artifact
uses: actions/upload-pages-artifact@fc324d3547104276b827a68afc52ff2a11cc49c9 # 5.0.0
with:
path: docs/site/homepage/public
# Deployment job
deploy:
environment:
name: github-pages
url: ${{ steps.deployment.outputs.page_url }}
runs-on: ubuntu-latest
needs: build
steps:
- name: Deploy to GitHub Pages
id: deployment
uses: actions/deploy-pages@cd2ce8fcbc39b97be8ca5fce6e763baed58fa128 # 5.0.0
+2 -1
View File
@@ -16,6 +16,8 @@ on:
tags-ignore:
- v0.*
- v1.*
paths:
- .github/workflows/gpu_workflow.yml
jobs:
# ---------------------------------------------------------------------------
@@ -43,4 +45,3 @@ jobs:
with:
project-name: OpenColorIO
buildspec-override: buildspec.yml
image-override: aswf/ci-ocio:2025
+25 -25
View File
@@ -46,7 +46,7 @@ jobs:
build-python: ON
build-type: Release
build-shared: ON
cxx-standard: 23
cxx-standard: 20
cxx-compiler: g++
cc-compiler: gcc
compiler-desc: GCC
@@ -55,7 +55,7 @@ jobs:
build-python: OFF
build-type: Debug
build-shared: ON
cxx-standard: 23
cxx-standard: 20
cxx-compiler: g++
cc-compiler: gcc
compiler-desc: GCC
@@ -67,7 +67,7 @@ jobs:
build-python: ON
build-type: Release
build-shared: ON
cxx-standard: 23
cxx-standard: 20
cxx-compiler: clang++
cc-compiler: clang
compiler-desc: Clang
@@ -76,7 +76,7 @@ jobs:
build-python: OFF
build-type: Debug
build-shared: ON
cxx-standard: 23
cxx-standard: 20
cxx-compiler: clang++
cc-compiler: clang
compiler-desc: Clang
@@ -86,9 +86,9 @@ jobs:
CC: ${{ matrix.cc-compiler }}
steps:
- name: Checkout
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
uses: actions/checkout@v3
- name: Install tests env
run: share/ci/scripts/linux/dnf/install_tests_env.sh
run: share/ci/scripts/linux/yum/install_tests_env.sh
- name: Create build directories
run: |
mkdir _install
@@ -101,10 +101,10 @@ jobs:
-DCMAKE_CXX_STANDARD=${{ matrix.cxx-standard }} \
-DBUILD_SHARED_LIBS=${{ matrix.build-shared }} \
-DOCIO_BUILD_DOCS=OFF \
-DOCIO_BUILD_OPENFX=OFF \
-DOCIO_BUILD_OPENFX=ON \
-DOCIO_BUILD_GPU_TESTS=OFF \
-DOCIO_BUILD_PYTHON=${{ matrix.build-python}} \
-DOCIO_USE_SIMD=ON \
-DOCIO_USE_SSE=ON \
-DOCIO_USE_OIIO_FOR_APPS=OFF \
-DOCIO_INSTALL_EXT_PACKAGES=ALL \
-DOCIO_WARNING_AS_ERROR=ON \
@@ -153,7 +153,7 @@ jobs:
-Dpystring_ROOT=${{ env.ocio_build_path }}/ext/dist \
-Dyaml-cpp_ROOT=${{ env.ocio_build_path }}/ext/dist \
-Dyaml-cpp_STATIC_LIBRARY=ON \
-Dyaml-cpp_VERSION=0.8.0 \
-Dyaml-cpp_VERSION=0.7.0 \
-DZLIB_ROOT=${{ env.ocio_build_path }}/ext/dist \
-DZLIB_STATIC_LIBRARY=ON \
-Dminizip-ng_ROOT=${{ env.ocio_build_path }}/ext/dist \
@@ -185,23 +185,23 @@ jobs:
build-python: ON
build-type: Release
build-shared: ON
cxx-standard: 23
cxx-standard: 20
enable-sanitizer: OFF
python-version: '3.14'
python-version: '3.11'
- build: 2
build-python: OFF
build-type: Debug
build-shared: ON
cxx-standard: 23
cxx-standard: 20
enable-sanitizer: ON
python-version: '3.10'
python-version: '3.11'
steps:
- name: Setup Python
uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0
uses: actions/setup-python@v4
with:
python-version: ${{ matrix.python-version }}
- name: Checkout
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
uses: actions/checkout@v3
- name: Install tests env
run: share/ci/scripts/macos/install_tests_env.sh
- name: Create build directories
@@ -216,10 +216,10 @@ jobs:
-DCMAKE_CXX_STANDARD=${{ matrix.cxx-standard }} \
-DBUILD_SHARED_LIBS=${{ matrix.build-shared }} \
-DOCIO_BUILD_DOCS=OFF \
-DOCIO_BUILD_OPENFX=OFF \
-DOCIO_BUILD_OPENFX=ON \
-DOCIO_BUILD_GPU_TESTS=OFF \
-DOCIO_BUILD_PYTHON=${{ matrix.build-python}} \
-DOCIO_USE_SIMD=ON \
-DOCIO_USE_SSE=ON \
-DOCIO_USE_OIIO_FOR_APPS=OFF \
-DOCIO_INSTALL_EXT_PACKAGES=ALL \
-DOCIO_WARNING_AS_ERROR=ON \
@@ -266,7 +266,7 @@ jobs:
-Dpystring_ROOT=${{ env.ocio_build_path }}/ext/dist \
-Dyaml-cpp_ROOT=${{ env.ocio_build_path }}/ext/dist \
-Dyaml-cpp_STATIC_LIBRARY=ON \
-Dyaml-cpp_VERSION=0.8.0 \
-Dyaml-cpp_VERSION=0.7.0 \
-DZLIB_ROOT=${{ env.ocio_build_path }}/ext/dist \
-DZLIB_STATIC_LIBRARY=ON \
-Dminizip-ng_ROOT=${{ env.ocio_build_path }}/ext/dist \
@@ -299,20 +299,20 @@ jobs:
build-type: Release
build-shared: ON
cxx-standard: 20
python-version: '3.14'
python-version: '3.11'
- build: 2
build-python: ON
build-type: Debug
build-shared: ON
cxx-standard: 20
python-version: '3.10'
python-version: '3.11'
steps:
- name: Setup Python
uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0
uses: actions/setup-python@v4
with:
python-version: ${{ matrix.python-version }}
- name: Checkout
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
uses: actions/checkout@v3
- name: Install tests env
run: share/ci/scripts/windows/install_tests_env.sh
shell: bash
@@ -330,10 +330,10 @@ jobs:
-DCMAKE_GENERATOR_PLATFORM=x64 \
-DBUILD_SHARED_LIBS=${{ matrix.build-shared }} \
-DOCIO_BUILD_DOCS=OFF \
-DOCIO_BUILD_OPENFX=OFF \
-DOCIO_BUILD_OPENFX=ON \
-DOCIO_BUILD_GPU_TESTS=OFF \
-DOCIO_BUILD_PYTHON=${{ matrix.build-python}} \
-DOCIO_USE_SIMD=ON \
-DOCIO_USE_SSE=ON \
-DOCIO_USE_OIIO_FOR_APPS=OFF \
-DOCIO_INSTALL_EXT_PACKAGES=ALL \
-DOCIO_WARNING_AS_ERROR=ON \
@@ -383,7 +383,7 @@ jobs:
-Dpystring_ROOT=${{ env.ocio_build_path }}/ext/dist \
-Dyaml-cpp_ROOT=${{ env.ocio_build_path }}/ext/dist \
-Dyaml-cpp_STATIC_LIBRARY=ON \
-Dyaml-cpp_VERSION=0.8.0 \
-Dyaml-cpp_VERSION=0.7.0 \
-DZLIB_ROOT=${{ env.ocio_build_path }}/ext/dist \
-DZLIB_STATIC_LIBRARY=ON \
-Dminizip-ng_ROOT=${{ env.ocio_build_path }}/ext/dist \
-67
View File
@@ -1,67 +0,0 @@
# SPDX-License-Identifier: BSD-3-Clause
# Copyright Contributors to the OpenColorIO Project.
#
# Releases are signed via https://github.com/sigstore/sigstore-python.
# See https://docs.sigstore.dev for information about sigstore.
#
# This action creates a .tar.gz of the complete OpenColorIO source tree at
# the given release tag, signs it via sigstore, and uploads the
# .tar.gz and the associated .tar.gz.sigstore credential bundle.
#
# To verify a downloaded release at a given tag:
#
# % pip install sigstore
# % sigstore verify github --cert-identity https://github.com/AcademySoftwareFoundation/OpenColorIO/.github/workflows/release-sign.yml@refs/tags/<tag> OpenColorIO-<tag>.tar.gz
#
name: Sign Release
on:
release:
types: [published]
permissions:
contents: read
jobs:
release:
name: Sign & upload release artifacts
runs-on: ubuntu-latest
env:
TAG: ${{ github.ref_name }}
permissions:
contents: write
id-token: write
repository-projects: write
steps:
- name: Set Prefix
# The tag name begins with a 'v', e.g. "v2.4.0", but the prefix
# should omit the 'v', so the tarball "OpenColorIO-2.4.0.tar.gz"
# extracts files into "OpenColorIO-2.4.0/...". This matches
# the GitHub release page autogenerated artifact conventions.
run: |
echo OCIO_PREFIX=OpenColorIO-${TAG//v}/ >> $GITHUB_ENV
echo OCIO_TARBALL=OpenColorIO-${TAG//v}.tar.gz >> $GITHUB_ENV
shell: bash
- name: Checkout
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- name: Create archive
run: git archive --format=tar.gz -o ${OCIO_TARBALL} --prefix ${OCIO_PREFIX} ${TAG}
- name: Sign archive with Sigstore
uses: sigstore/gh-action-sigstore-python@04cffa1d795717b140764e8b640de88853c92acc # v3.3.0
with:
inputs: ${{ env.OCIO_TARBALL }}
upload-signing-artifacts: false
release-signing-artifacts: false
- name: Upload release archive
env:
GH_TOKEN: ${{ github.token }}
run: gh release upload ${TAG} ${OCIO_TARBALL} ${OCIO_TARBALL}.sigstore.json
+88 -205
View File
@@ -50,18 +50,18 @@ jobs:
github.repository == 'AcademySoftwareFoundation/OpenColorIO'
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- name: Build SDist
run: pipx run build --sdist
- uses: actions/checkout@v3
- name: Check metadata
run: pipx run twine check dist/*
- name: Build SDist
run: pipx run build --sdist
- uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f # v7.0.0
with:
name: cibw-sdist
path: dist/*.tar.gz
- name: Check metadata
run: pipx run twine check dist/*
- uses: actions/upload-artifact@v3
with:
path: dist/*.tar.gz
# ---------------------------------------------------------------------------
# Linux Wheels
@@ -78,130 +78,63 @@ jobs:
matrix:
include:
# -------------------------------------------------------------------
# CPython 64 bits manylinux_2_28
# CPython 64 bits
# -------------------------------------------------------------------
- build: CPython 3.10 64 bits manylinux_2_28
manylinux: manylinux_2_28
python: cp310-manylinux_x86_64
- build: CPython 3.7 64 bits
python: cp37-manylinux*
arch: x86_64
- build: CPython 3.11 64 bits manylinux_2_28
manylinux: manylinux_2_28
python: cp311-manylinux_x86_64
- build: CPython 3.8 64 bits
python: cp38-manylinux*
arch: x86_64
- build: CPython 3.12 64 bits manylinux_2_28
manylinux: manylinux_2_28
python: cp312-manylinux_x86_64
- build: CPython 3.9 64 bits
python: cp39-manylinux*
arch: x86_64
- build: CPython 3.13 64 bits manylinux_2_28
manylinux: manylinux_2_28
python: cp313-manylinux_x86_64
- build: CPython 3.10 64 bits
python: cp310-manylinux*
arch: x86_64
- build: CPython 3.14 64 bits manylinux_2_28
manylinux: manylinux_2_28
python: cp314-manylinux_x86_64
- build: CPython 3.11 64 bits
python: cp311-manylinux*
arch: x86_64
# -------------------------------------------------------------------
# CPython 64 bits manylinux2014
# CPython ARM 64 bits
# -------------------------------------------------------------------
- build: CPython 3.10 64 bits manylinux2014
manylinux: manylinux2014
python: cp310-manylinux_x86_64
arch: x86_64
- build: CPython 3.11 64 bits manylinux2014
manylinux: manylinux2014
python: cp311-manylinux_x86_64
arch: x86_64
- build: CPython 3.12 64 bits manylinux2014
manylinux: manylinux2014
python: cp312-manylinux_x86_64
arch: x86_64
- build: CPython 3.13 64 bits manylinux2014
manylinux: manylinux2014
python: cp313-manylinux_x86_64
arch: x86_64
- build: CPython 3.14 64 bits manylinux2014
manylinux: manylinux2014
python: cp314-manylinux_x86_64
arch: x86_64
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0
name: Install Python
with:
python-version: '3.11'
- name: Build wheels
uses: pypa/cibuildwheel@ee02a1537ce3071a004a6b08c41e72f0fdc42d9a # v3.4.0
env:
CIBW_BUILD: ${{ matrix.python }}
CIBW_ARCHS: ${{ matrix.arch }}
CIBW_MANYLINUX_X86_64_IMAGE: ${{ matrix.manylinux }}
CIBW_BEFORE_BUILD: "pip install sphinx-press-theme"
- uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f # v7.0.0
with:
name: cibw-wheels-${{ matrix.python }}-${{ matrix.manylinux }}
path: ./wheelhouse/*.whl
# ---------------------------------------------------------------------------
# Linux ARM Wheels
# ---------------------------------------------------------------------------
linux-arm:
name: Build wheels on Linux ARM
runs-on: ubuntu-24.04-arm
# Don't run on OCIO forks
if: |
github.event_name != 'schedule' ||
github.repository == 'AcademySoftwareFoundation/OpenColorIO'
strategy:
matrix:
include:
# -------------------------------------------------------------------
# CPython ARM 64 bits manylinux2014
# -------------------------------------------------------------------
- build: CPython 3.10 ARM 64 bits manylinux2014
manylinux: manylinux2014
python: cp310-manylinux_aarch64
- build: CPython 3.7 ARM 64 bits
python: cp37-manylinux*
arch: aarch64
- build: CPython 3.11 ARM 64 bits manylinux2014
manylinux: manylinux2014
python: cp311-manylinux_aarch64
- build: CPython 3.8 ARM 64 bits
python: cp38-manylinux*
arch: aarch64
- build: CPython 3.12 ARM 64 bits manylinux2014
manylinux: manylinux2014
python: cp312-manylinux_aarch64
- build: CPython 3.9 ARM 64 bits
python: cp39-manylinux*
arch: aarch64
- build: CPython 3.13 ARM 64 bits manylinux2014
manylinux: manylinux2014
python: cp313-manylinux_aarch64
- build: CPython 3.10 ARM 64 bits
python: cp310-manylinux*
arch: aarch64
- build: CPython 3.14 ARM 64 bits manylinux2014
manylinux: manylinux2014
python: cp314-manylinux_aarch64
- build: CPython 3.11 ARM 64 bits
python: cp311-manylinux*
arch: aarch64
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- uses: actions/checkout@v3
- uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0
- uses: actions/setup-python@v4
name: Install Python
with:
python-version: '3.11'
python-version: '3.8'
- name: Set up QEMU
uses: docker/setup-qemu-action@v2
with:
platforms: all
- name: Build wheels
uses: pypa/cibuildwheel@ee02a1537ce3071a004a6b08c41e72f0fdc42d9a # v3.4.0
uses: pypa/cibuildwheel@v2.13.1
env:
CIBW_BUILD: ${{ matrix.python }}
CIBW_ARCHS: ${{ matrix.arch }}
CIBW_MANYLINUX_AARCH64_IMAGE: ${{ matrix.manylinux }}
CIBW_BEFORE_BUILD: "pip install sphinx-press-theme"
- uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f # v7.0.0
- uses: actions/upload-artifact@v3
with:
name: cibw-wheels-${{ matrix.python }}-${{ matrix.manylinux }}
path: ./wheelhouse/*.whl
# ---------------------------------------------------------------------------
@@ -210,7 +143,7 @@ jobs:
macos:
name: Build wheels on macOS
runs-on: macos-15-intel
runs-on: macos-11
# Don't run on OCIO forks
if: |
github.event_name != 'schedule' ||
@@ -221,97 +154,53 @@ jobs:
# -------------------------------------------------------------------
# CPython 64 bits
# -------------------------------------------------------------------
- build: CPython 3.7 64 bits
python: cp37-*
arch: x86_64
- build: CPython 3.8 64 bits
python: cp38-*
arch: x86_64
- build: CPython 3.9 64 bits
python: cp39-*
arch: x86_64
- build: CPython 3.10 64 bits
python: cp310-macosx_x86_64
python: cp310-*
arch: x86_64
- build: CPython 3.11 64 bits
python: cp311-macosx_x86_64
python: cp311-*
arch: x86_64
- build: CPython 3.12 64 bits
python: cp312-macosx_x86_64
arch: x86_64
- build: CPython 3.13 64 bits
python: cp313-macosx_x86_64
arch: x86_64
- build: CPython 3.14 64 bits
python: cp314-macosx_x86_64
arch: x86_64
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0
name: Install Python
with:
python-version: '3.11'
- name: Remove brew OpenEXR/Imath
run: |
brew uninstall --ignore-dependencies openexr imath || true
- name: Build wheels
uses: pypa/cibuildwheel@ee02a1537ce3071a004a6b08c41e72f0fdc42d9a # v3.4.0
env:
CIBW_BUILD: ${{ matrix.python }}
CIBW_ARCHS: ${{ matrix.arch }}
CIBW_BEFORE_BUILD: "pip install sphinx-press-theme"
- uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f # v7.0.0
with:
name: cibw-wheels-${{ matrix.python }}
path: ./wheelhouse/*.whl
# ---------------------------------------------------------------------------
# macOS ARM Wheels
# ---------------------------------------------------------------------------
macos-arm:
name: Build wheels on macOS ARM
runs-on: macos-14
# Don't run on OCIO forks
if: |
github.event_name != 'schedule' ||
github.repository == 'AcademySoftwareFoundation/OpenColorIO'
strategy:
matrix:
include:
# -------------------------------------------------------------------
# CPython ARM 64 bits
# -------------------------------------------------------------------
- build: CPython 3.8 ARM 64 bits
python: cp38-*
arch: arm64
- build: CPython 3.9 ARM 64 bits
python: cp39-*
arch: arm64
- build: CPython 3.10 ARM 64 bits
python: cp310-macosx_arm64
python: cp310-*
arch: arm64
- build: CPython 3.11 ARM 64 bits
python: cp311-macosx_arm64
arch: arm64
- build: CPython 3.12 ARM 64 bits
python: cp312-macosx_arm64
arch: arm64
- build: CPython 3.13 ARM 64 bits
python: cp313-macosx_arm64
arch: arm64
- build: CPython 3.14 ARM 64 bits
python: cp314-macosx_arm64
python: cp311-*
arch: arm64
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- uses: actions/checkout@v3
- uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0
- uses: actions/setup-python@v4
name: Install Python
with:
python-version: '3.11'
python-version: '3.8'
- name: Build wheels
uses: pypa/cibuildwheel@ee02a1537ce3071a004a6b08c41e72f0fdc42d9a # v3.4.0
uses: pypa/cibuildwheel@v2.13.1
env:
CIBW_BUILD: ${{ matrix.python }}
CIBW_ARCHS: ${{ matrix.arch }}
CIBW_BEFORE_BUILD: "pip install sphinx-press-theme"
- uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f # v7.0.0
- uses: actions/upload-artifact@v3
with:
name: cibw-wheels-${{ matrix.python }}
path: ./wheelhouse/*.whl
# ---------------------------------------------------------------------------
@@ -320,7 +209,7 @@ jobs:
windows:
name: Build wheels on Windows
runs-on: windows-2022
runs-on: windows-2019
# Don't run on OCIO forks
if: |
github.event_name != 'schedule' ||
@@ -331,60 +220,54 @@ jobs:
# -------------------------------------------------------------------
# CPython 64 bits
# -------------------------------------------------------------------
- build: CPython 3.7 64 bits
python: cp37-*
arch: AMD64
- build: CPython 3.8 64 bits
python: cp38-*
arch: AMD64
- build: CPython 3.9 64 bits
python: cp39-*
arch: AMD64
- build: CPython 3.10 64 bits
python: cp310-win_amd64
python: cp310-*
arch: AMD64
- build: CPython 3.11 64 bits
python: cp311-win_amd64
arch: AMD64
- build: CPython 3.12 64 bits
python: cp312-win_amd64
arch: AMD64
- build: CPython 3.13 64 bits
python: cp313-win_amd64
arch: AMD64
- build: CPython 3.14 64 bits
python: cp314-win_amd64
python: cp311-*
arch: AMD64
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- uses: actions/checkout@v3
- uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0
- uses: actions/setup-python@v4
name: Install Python
with:
python-version: '3.11'
python-version: '3.8'
- name: Build wheels
uses: pypa/cibuildwheel@ee02a1537ce3071a004a6b08c41e72f0fdc42d9a # v3.4.0
uses: pypa/cibuildwheel@v2.13.1
env:
CIBW_BUILD: ${{ matrix.python }}
CIBW_ARCHS: ${{ matrix.arch }}
CIBW_BEFORE_BUILD: "pip install sphinx-press-theme"
- uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f # v7.0.0
- uses: actions/upload-artifact@v3
with:
name: cibw-wheels-${{ matrix.python }}
path: ./wheelhouse/*.whl
# ---------------------------------------------------------------------------
# Upload
# ---------------------------------------------------------------------------
upload_pypi:
needs: [sdist, linux, linux-arm, macos, macos-arm, windows]
needs: [sdist, linux, macos, windows]
runs-on: ubuntu-latest
if: github.event_name == 'push' && startsWith(github.event.ref, 'refs/tags/v')
steps:
- uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0
- uses: actions/setup-python@v4
- uses: actions/download-artifact@70fc10c6e5e1ce46ad2ea6f2b72d43f7d47b13c3 # v8.0.0
- uses: actions/download-artifact@v3
with:
pattern: cibw-*
name: artifact
path: dist
merge-multiple: true
- uses: pypa/gh-action-pypi-publish@ed0c53931b1dc9bd32cbe73a98c7f6766f8a527e # v1.13.0
- uses: pypa/gh-action-pypi-publish@release/v1
with:
user: __token__
password: ${{ secrets.PYPI_API_TOKEN }}
+1 -5
View File
@@ -10,8 +10,4 @@ dist*
mastercopy
*.pyc
!*.yml
.idea/
.venv/
.vscode/
src/apps/ocioview/uv.lock
.vscode
-23
View File
@@ -1,23 +0,0 @@
# SPDX-License-Identifier: BSD-3-Clause
# Copyright Contributors to the OpenColorIO Project.
# Read the Docs configuration file
# See https://docs.readthedocs.io/en/stable/config-file/v2.html for details
version: 2
build:
os: ubuntu-lts-latest
tools:
python: "3.14"
sphinx:
configuration: docs/conf.py
formats:
- pdf
- htmlzip
python:
install:
- requirements: docs/requirements.txt
-5
View File
@@ -3,13 +3,8 @@
This file documents releases up to 1.1.1. For a description of version 2.0 and later
please refer to the Releases page on GitHub:
https://github.com/AcademySoftwareFoundation/OpenColorIO/releases
and for more details please see the release notes in latest documentation pages:
https://opencolorio.readthedocs.io/en/latest/releases/_index.html#releases
**Version 1.1.1 (April 2 2019):**
* Added optional compatibility for building apps with OpenImageIO 1.9+
* Added USE_SSE checks to fix Linux build failure
+13 -38
View File
@@ -5,7 +5,7 @@
###############################################################################
# CMake definition.
cmake_minimum_required(VERSION 3.14...4.0)
cmake_minimum_required(VERSION 3.13)
set(CMAKE_MODULE_PATH
${CMAKE_MODULE_PATH}
@@ -21,7 +21,7 @@ set(CMAKE_WARN_DEPRECATED ON)
if(APPLE AND NOT DEFINED CMAKE_OSX_DEPLOYMENT_TARGET)
# The value of this variable should be set prior to the first project() command invocation
# because it may influence configuration of the toolchain and flags.
set(CMAKE_OSX_DEPLOYMENT_TARGET "10.15" CACHE STRING "Minimum OS X deployment version")
set(CMAKE_OSX_DEPLOYMENT_TARGET "10.13" CACHE STRING "Minimum OS X deployment version")
endif()
@@ -29,13 +29,13 @@ endif()
# Project definition.
project(OpenColorIO
VERSION 2.6.0
VERSION 2.3.0
DESCRIPTION "OpenColorIO (OCIO) is a complete color management solution"
HOMEPAGE_URL https://github.com/AcademySoftwareFoundation/OpenColorIO
LANGUAGES CXX C)
# "dev", "beta1", rc1", etc or "" for an official release.
set(OpenColorIO_VERSION_RELEASE_TYPE "dev")
set(OpenColorIO_VERSION_RELEASE_TYPE "")
###############################################################################
@@ -144,7 +144,8 @@ option(OCIO_BUILD_TESTS "Specify whether to build unittests" ON)
option(OCIO_BUILD_GPU_TESTS "Specify whether to build gpu unittests" ON)
option(OCIO_USE_HEADLESS "Specify whether the GPU rendering is headless" OFF)
option(OCIO_BUILD_DOCS "Specify whether to build documentation" OFF)
option(OCIO_BUILD_FROZEN_DOCS "Specify whether to build frozen documentation, necessary when modifying the OCIO public API" OFF)
option(OCIO_BUILD_DOCS "Specify whether to build documentation" ${OCIO_BUILD_FROZEN_DOCS})
option(OCIO_BUILD_PYTHON "Specify whether to build python bindings" ON)
set (OCIO_PYTHON_VERSION "" CACHE STRING
@@ -179,16 +180,8 @@ option(OCIO_USE_OIIO_FOR_APPS "Request OIIO to build apps (ociolutimage, ociocon
if (NOT APPLE)
if("${CMAKE_GENERATOR_PLATFORM}" MATCHES "(ARM64|arm64)" OR CMAKE_SYSTEM_PROCESSOR STREQUAL "ARM64")
set(OCIO_ARCH_X86 0)
set(OCIO_BUILD_ENABLE_OPTIMIZATIONS_SSE ON)
set(OCIO_BUILD_ENABLE_OPTIMIZATIONS_AVX OFF)
set(OCIO_BUILD_ENABLE_OPTIMIZATIONS_F16C OFF)
elseif ("${CMAKE_SYSTEM_PROCESSOR}" MATCHES "(AMD64|IA64|EM64T|x86_64|X86|i386|i686)")
if ("${CMAKE_SYSTEM_PROCESSOR}" MATCHES "(AMD64|IA64|EM64T|X86|x86_64|i386|i686)")
# Intel-based architecture (not APPLE)
if ("${CMAKE_SYSTEM_PROCESSOR}" MATCHES "(X86|i386|i686)")
set(OCIO_ARCH_X86_32 1)
endif()
set(OCIO_ARCH_X86 1)
set(OCIO_BUILD_ENABLE_OPTIMIZATIONS_SSE ON)
set(OCIO_BUILD_ENABLE_OPTIMIZATIONS_AVX ON)
@@ -274,7 +267,7 @@ option(OCIO_USE_AVX2 "Specify whether to enable AVX2 CPU performance optimizatio
option(OCIO_USE_AVX512 "Specify whether to enable AVX512 CPU performance optimizations" ${OCIO_BUILD_ENABLE_OPTIMIZATIONS_AVX})
option(OCIO_USE_F16C "Specify whether to enable F16C CPU performance optimizations" ${OCIO_BUILD_ENABLE_OPTIMIZATIONS_F16C})
if (APPLE OR WIN32)
if (APPLE)
# TODO: Revisit whether that option is necessary.
option(OCIO_USE_SSE2NEON "Specify whether to enable SSE CPU performance optimizations using SSE2NEON for Apple ARM architecture" ON)
mark_as_advanced(OCIO_USE_SSE2NEON)
@@ -287,19 +280,6 @@ message(STATUS "")
message(STATUS "Checking for GPU configuration...")
include(CheckSupportGL)
# DirectX 12 is only available on Windows.
if(WIN32)
option(OCIO_DIRECTX_ENABLED "Enable DirectX 12 GPU rendering support" ON)
else()
set(OCIO_DIRECTX_ENABLED OFF CACHE BOOL "Enable DirectX 12 GPU rendering support" FORCE)
endif()
mark_as_advanced(OCIO_DIRECTX_ENABLED)
# Vulkan is cross-platform but requires an external SDK, so it is off by
# default; enable explicitly with -DOCIO_VULKAN_ENABLED=ON.
option(OCIO_VULKAN_ENABLED "Enable Vulkan GPU rendering support" OFF)
mark_as_advanced(OCIO_VULKAN_ENABLED)
###############################################################################
# Check for ARM neon here because we need to know if ARM NEON is supported
@@ -349,10 +329,8 @@ if(OCIO_USE_SIMD AND OCIO_USE_SSE2NEON AND COMPILER_SUPPORTS_ARM_NEON)
add_library(sse2neon INTERFACE)
# Add the include directories to the target.
target_include_directories(sse2neon INTERFACE "${sse2neon_INCLUDE_DIR}")
if(NOT MSVC)
# Ignore the warnings coming from sse2neon.h as they are false positives.
target_compile_options(sse2neon INTERFACE -Wno-unused-parameter)
endif()
# Ignore the warnings coming from sse2neon.h as they are false positives.
target_compile_options(sse2neon INTERFACE -Wno-unused-parameter)
endif()
endif()
@@ -362,11 +340,6 @@ endif()
include(CompilerFlags)
###############################################################################
# Include utility functions for setting debugging environments
include(DebuggerEnvironment)
###############################################################################
# External linking options
@@ -414,7 +387,9 @@ if(NOT DEFINED OCIO_NAMESPACE)
elseif(OCIO_NAMESPACE STREQUAL "")
message(FATAL_ERROR "A namespace cannot be empty.")
else()
message(STATUS "Setting namespace to '${OCIO_NAMESPACE}'.")
set(OCIO_NAMESPACE "OpenColorIO_${OCIO_NAMESPACE}_v${OpenColorIO_VERSION_MAJOR}_${OpenColorIO_VERSION_MINOR}${OpenColorIO_VERSION_RELEASE_TYPE}" CACHE STRING
"Specify the main OCIO C++ namespace: Options include OpenColorIO OpenColorIO_<YOURFACILITY> etc.")
message(STATUS "Setting namespace to '${OCIO_NAMESPACE}' as none was specified.")
endif()
+10 -21
View File
@@ -3,32 +3,21 @@
# OpenColorIO Committers
### Current OpenColorIO Committers
The current OpenColorIO Committers are:
| Name | GitHub ID |
| -------------- | ----------------- |
| Michael Dolan | @michdolan |
| Mark Boorer | @Shootfast |
| Sean Cooper | @scoopxyz |
| Doug Walker | @doug-walker |
| Kevin Wheatley | @KevinJW |
| Rémi Achard | @remia |
| Carol Payne | @carolalynn |
| Thomas Mansencal | @KelSolaar |
| Mark Reid | @markreidvfx |
| Cuneyt Ozdas | @cozdas |
### Emeritus OpenColorIO Committers
| Name | GitHub ID |
| -------------- | ----------------- |
| -------------- | -----------------
| Malcolm Humphreys | @malcolmhumphreys |
| Jeremy Selan | @jeremyselan |
| Steve Lavietes | @stevelavietes |
| Robert Molholm | @rmolholm |
| Michael Dolan | @michdolan |
| Mark Boorer | @Shootfast |
| Matthias Scharfenberg | @Tristimulus |
| Patrick Hodoul | @hodoulp |
| Cottalango Leon | @loorthu |
| Sean Cooper | @scoopxyz
| Patrick Hodoul | @hodoulp
| Cottalango Leon | @loorthu
| Doug Walker | @doug-walker |
| Kevin Wheatley | @KevinJW |
| Rémi Achard | @remia |
| Cédrik Fuoco | @cedrik-fuoco-adsk |
| Larry Gritz | @lgritz |
| Michael Parsons | @mlfp |
+1 -1
View File
@@ -243,7 +243,7 @@ expected to validate the behavior of every part of OCIO:
* Any change to existing functionality should have tests added if they
don't already exist.
The test should be run, via ``ctest``, before submitting a pull request.
The test should should be run, via ``ctest``, before submitting a pull request.
## Versioning Policy
+14 -21
View File
@@ -69,14 +69,7 @@ A subset of the Committers forms the Technical Steering Committee (TSC), which
has final authority over this project. As defined in the project charter, TSC
responsibilities include, but are not limited to:
* Coordinating technical direction of the Project, including but not limited to:
* Participating in roadmapping and feature priority each year
* Participating in Working Groups as appropriate
* Actively tracking development & giving feedback promptly
* Participating in maintenance of technical documentation
* Actively discussing issues & reviewing pull requests
* Actively monitoring and assisting contributors on GitHub
* Actively monitoring and assisting folks on the OCIO slack instance
* Coordinating technical direction of the Project
* Project governance and process (including this policy)
* Contribution policy
* GitHub repository hosting
@@ -88,7 +81,7 @@ communities
matters relating to the code base that affect multiple projects
* Coordinating any marketing, events, or communications regarding the project
Within the TSC are two elected leadership roles to be held by its members and
Within the TSC are three elected leadership roles to be held by its members and
voted on annually. Any TSC member can express interest in serving in a role, or
nominate another member to serve. There are no term limits, and one person may
hold multiple roles simultaneously. Should a TSC member resign from a leadership
@@ -103,6 +96,10 @@ providing oversight to project administration.
technical decisions, and is responsible for avoiding "design by committee"
pitfalls.
* ACES TAC Rep: This position maintains oversight of the critical relationship
between OCIO and ACES, representing OCIO on the ACES TAC and facilitating
coordination of shared initiatives between both project's leadership.
At the time of election, the TSC will also agree upon which of these two leaders
will serve as the OpenColorIO ASWF (Academy Software Foundation) TAC (Technical
Advisory Council) representative for the term. This member represents the
@@ -112,6 +109,7 @@ project at all ASWF TAC meetings.
* Chair: Carol Payne
* Chief Architect: Doug Walker
* ACES TAC Rep: Sean Cooper
### TSC Members
@@ -120,20 +118,15 @@ project at all ASWF TAC meetings.
* Mei Chu - Sony Pictures Imageworks
* Sean Cooper - ARRI
* Michael Dolan - Epic Games
* Patrick Hodoul - Autodesk
* Zach Lewis - Method Studios
* Thomas Mansencal - Wētā FX
* Cuneyt Ozdas - Autodesk
* Carol Payne - Independent Consultant
* Thomas Mansencal - WetaFX
* Carol Payne - Netflix
* Carl Rand - Weta Digital
* Mark Titchener - Foundry
* Mark Reid - Animal Logic
* Doug Walker - Autodesk
* Kevin Wheatley - Framestore
### TSC Emeritus
* Patrick Hodoul - Autodesk
* Carl Rand - Wētā FX
### TSC Meetings
Any meetings of the TSC are intended to be open to the public, except where
@@ -153,7 +146,7 @@ happen continuously on GitHub and be handled by the larger group of Committers.
Any community member or Contributor can ask that something be reviewed by the
TSC by logging a GitHub issue. Any Committer, TSC member, or the meeting chair
can bring the issue to the TSC's attention by applying the `Needs Discussion` label.
can bring the issue to the TSC's attention by applying the `tsc-review` label.
Prior to each TSC meeting, the meeting chair will share the agenda with members
of the TSC. TSC members can also add items to the agenda at the beginning of
@@ -162,11 +155,11 @@ each meeting. The meeting chair and the TSC cannot veto or remove items.
The TSC may invite additional persons to participate in a non-voting capacity.
The meeting chair is responsible for ensuring that minutes are taken and that
notes are submitted after the meeting to the public wiki.
notes are submitted after the meeting to the public mailing list.
Due to the challenges of scheduling a global meeting with participants in
several time zones, the TSC will seek to resolve as many agenda items as
possible outside of meetings via discussion on Slack or other methods.
possible outside of meetings on the public mailing list.
### TSC Nomination
+4 -10
View File
@@ -38,7 +38,7 @@ Houdini, Silhouette FX, and
[others](https://opencolorio.org/#supported_apps).
OpenColorIO is free and open source software ([LICENSE](LICENSE)), and
one of several projects actively sponsored by the ASWF
one of several projects actvively sponsored by the ASWF
([Academy Software Foundation](https://www.aswf.io/)).
OpenColorIO Project Mission
@@ -50,12 +50,12 @@ content creation applications and pipelines.
OpenColorIO aims to:
* be stable, secure, and thoroughly tested on Linux, macOS, and Windows
* be stable, secure, and thouroughly tested on Linux, macOS, and Windows
* be performant on modern CPUs and GPUs
* be simple, scalable, and well documented
* be compatible with critical color and imaging standards
* provide lossless color processing wherever possible
* maintain config backwards compatibility across major versions
* maintain config backwards compatability across major versions
* have every new feature carefully reviewed by leaders from the motion picture,
VFX, animation, and video game industries
* have a healthy and active community
@@ -65,14 +65,13 @@ OpenColorIO Project Governance
------------------------------
OpenColorIO is governed by the Academy Software Foundation (ASWF). See
[GOVERNANCE.md](GOVERNANCE.md) for detailed information about how the project
[GOVERNANCE.md](GOVERNANCE.md) for detailed infomation about how the project
operates.
Web Resources
-------------
* Website: <http://opencolorio.org>
* Documentation: <https://opencolorio.readthedocs.io/en/latest/>
* Mailing lists:
* Developer: <ocio-dev@lists.aswf.io>
* User: <ocio-user@lists.aswf.io>
@@ -100,11 +99,6 @@ The following reference implementations are provided:
* Other
* nuke-default
Sources for the newer builtin ACES configuration files can be found in the releases section of the
[OpenColorIO-Config-ACES](https://github.com/AcademySoftwareFoundation/OpenColorIO-Config-ACES)
repository.
Acknowledgements
----------------
+14 -7
View File
@@ -14,15 +14,23 @@ would be naive to say our code is immune to every exploit.
## Reporting Vulnerabilities
Quickly resolving security related issues is a priority. The best way to report a
vulnerability is to file a GitHub security advisory. If that is not possible, it
is also fine to email your report to security@opencolorio.org. Only the project
administrators have access to these reports.
Quickly resolving security related issues is a priority. If you think
you've found a potential vulnerability in OpenColorIO, please report it by
emailing security@opencolorio.org. Only TSC members and ASWF project
management have access to these messages.
Include detailed steps to reproduce the issue, and any other information that
could aid an investigation. Someone will assess the report and make every
effort to respond within 14 days.
## Outstanding Security Issues
None
## Addressed Security Issues
None
## File Format Expectations
Attempting to read an OCIO config (YAML) file will:
@@ -57,6 +65,5 @@ It is a bug if calling a function with well-formed arguments causes the
library to crash. It is a security issue if calling a function with
well-formed arguments causes arbitrary code execution.
## History of CVE Fixes
CVE-2026-42450 -- Stack buffer overflow in sscanf. (Fixed in OCIO 2.5.2)
We do not consider this as severe as file format issues because in most
deployments the parameter space is not exposed to potential attackers.
+1 -1
View File
@@ -45,7 +45,7 @@ if(${Python_VERSION_MAJOR} GREATER_EQUAL 3)
# Breathe
# https://pypi.org/project/breathe/
find_python_package(breathe REQUIRED)
###########################################################################
### Setup PYTHONPATH ###
+4 -40
View File
@@ -12,22 +12,7 @@ ColorSpaceMenuHelpers
.. group-tab:: Python
.. autofunction:: PyOpenColorIO.ColorSpaceHelpers.AddColorSpace
.. autoclass:: PyOpenColorIO.ColorSpaceMenuParameters
:members:
:undoc-members:
:special-members: __init__, __str__
:exclude-members: AddedColorSpaceIterator
.. autoclass:: PyOpenColorIO.ColorSpaceMenuHelper
:members:
:undoc-members:
:special-members: __init__, __str__
:exclude-members: ColorSpaceLevelIterator
.. autoclass:: PyOpenColorIO.ColorSpaceMenuHelper.ColorSpaceLevelIterator
:special-members: __getitem__, __iter__, __len__, __next__
.. include:: python/${PYDIR}/pyopencolorio_colorspacehelpers.rst
.. group-tab:: C++
@@ -53,10 +38,7 @@ DisplayViewHelpers
.. group-tab:: Python
.. autofunction:: PyOpenColorIO.DisplayViewHelpers.GetProcessor
.. autofunction:: PyOpenColorIO.DisplayViewHelpers.GetIdentityProcessor
.. autofunction:: PyOpenColorIO.DisplayViewHelpers.AddDisplayView
.. autofunction:: PyOpenColorIO.DisplayViewHelpers.RemoveDisplayView
.. include:: python/${PYDIR}/pyopencolorio_displayviewhelpers.rst
.. group-tab:: C++
@@ -71,10 +53,7 @@ LegacyViewingPipeline
.. group-tab:: Python
.. autoclass:: PyOpenColorIO.LegacyViewingPipeline
:members:
:undoc-members:
:special-members: __init__, __str__
.. include:: python/${PYDIR}/pyopencolorio_legacyviewingpipeline.rst
.. group-tab:: C++
@@ -94,22 +73,7 @@ MixingHelpers
.. group-tab:: Python
.. autoclass:: PyOpenColorIO.MixingSlider
:members:
:undoc-members:
:special-members: __init__, __str__
.. autoclass:: PyOpenColorIO.MixingColorSpaceManager
:members:
:undoc-members:
:special-members: __init__, __str__
:exclude-members: MixingSpaceIterator, MixingEncodingIterator
.. autoclass:: PyOpenColorIO.MixingColorSpaceManager.MixingSpaceIterator
:special-members: __getitem__, __iter__, __len__, __next__
.. autoclass:: PyOpenColorIO.MixingColorSpaceManager.MixingEncodingIterator
:special-members: __getitem__, __iter__, __len__, __next__
.. include:: python/${PYDIR}/pyopencolorio_mixinghelpers.rst
.. group-tab:: C++
+1 -8
View File
@@ -9,14 +9,7 @@ Baker
.. group-tab:: Python
.. autoclass:: PyOpenColorIO.Baker
:members:
:undoc-members:
:special-members: __init__
:exclude-members: FormatIterator
.. autoclass:: PyOpenColorIO.Baker.FormatIterator
:special-members: __getitem__, __iter__, __len__, __next__
.. include:: python/${PYDIR}/pyopencolorio_baker.rst
.. group-tab:: C++
+2 -22
View File
@@ -9,17 +9,7 @@ ColorSpace
.. group-tab:: Python
.. autoclass:: PyOpenColorIO.ColorSpace
:members:
:undoc-members:
:special-members: __init__, __str__
:exclude-members: ColorSpaceCategoryIterator, ColorSpaceAliasIterator
.. autoclass:: PyOpenColorIO.ColorSpace.ColorSpaceCategoryIterator
:special-members: __getitem__, __iter__, __len__, __next__
.. autoclass:: PyOpenColorIO.ColorSpace.ColorSpaceAliasIterator
:special-members: __getitem__, __iter__, __len__, __next__
.. include:: python/${PYDIR}/pyopencolorio_colorspace.rst
.. group-tab:: C++
@@ -39,17 +29,7 @@ ColorSpaceSet
.. group-tab:: Python
.. autoclass:: PyOpenColorIO.ColorSpaceSet
:members:
:undoc-members:
:special-members: __init__, __eq__, __ne__, __sub__, __or__, __and__
:exclude-members: ColorSpaceNameIterator, ColorSpaceIterator
.. autoclass:: PyOpenColorIO.ColorSpaceSet.ColorSpaceNameIterator
:special-members: __getitem__, __iter__, __len__, __next__
.. autoclass:: PyOpenColorIO.ColorSpaceSet.ColorSpaceIterator
:special-members: __getitem__, __iter__, __len__, __next__
.. include:: python/${PYDIR}/pyopencolorio_colorspaceset.rst
.. group-tab:: C++
+1 -84
View File
@@ -9,90 +9,7 @@ Config
.. group-tab:: Python
.. autoclass:: PyOpenColorIO.Config
:members:
:undoc-members:
:special-members: __init__, __str__
:exclude-members: EnvironmentVarNameIterator,
SearchPathIterator,
ColorSpaceNameIterator,
ColorSpaceIterator,
ActiveColorSpaceNameIterator,
ActiveColorSpaceIterator,
RoleNameIterator,
RoleColorSpaceIterator,
DisplayIterator,
SharedViewIterator,
ViewIterator,
ViewForColorSpaceIterator,
LookNameIterator,
LookIterator,
ViewTransformNameIterator,
ViewTransformIterator,
NamedTransformNameIterator,
NamedTransformIterator,
ActiveNamedTransformNameIterator,
ActiveNamedTransformIterator
.. autoclass:: PyOpenColorIO.Config.EnvironmentVarNameIterator
:special-members: __getitem__, __iter__, __len__, __next__
.. autoclass:: PyOpenColorIO.Config.SearchPathIterator
:special-members: __getitem__, __iter__, __len__, __next__
.. autoclass:: PyOpenColorIO.Config.ColorSpaceNameIterator
:special-members: __getitem__, __iter__, __len__, __next__
.. autoclass:: PyOpenColorIO.Config.ColorSpaceIterator
:special-members: __getitem__, __iter__, __len__, __next__
.. autoclass:: PyOpenColorIO.Config.ActiveColorSpaceNameIterator
:special-members: __getitem__, __iter__, __len__, __next__
.. autoclass:: PyOpenColorIO.Config.ActiveColorSpaceIterator
:special-members: __getitem__, __iter__, __len__, __next__
.. autoclass:: PyOpenColorIO.Config.RoleNameIterator
:special-members: __getitem__, __iter__, __len__, __next__
.. autoclass:: PyOpenColorIO.Config.RoleColorSpaceIterator
:special-members: __getitem__, __iter__, __len__, __next__
.. autoclass:: PyOpenColorIO.Config.DisplayIterator
:special-members: __getitem__, __iter__, __len__, __next__
.. autoclass:: PyOpenColorIO.Config.SharedViewIterator
:special-members: __getitem__, __iter__, __len__, __next__
.. autoclass:: PyOpenColorIO.Config.ViewIterator
:special-members: __getitem__, __iter__, __len__, __next__
.. autoclass:: PyOpenColorIO.Config.ViewForColorSpaceIterator
:special-members: __getitem__, __iter__, __len__, __next__
.. autoclass:: PyOpenColorIO.Config.LookNameIterator
:special-members: __getitem__, __iter__, __len__, __next__
.. autoclass:: PyOpenColorIO.Config.LookIterator
:special-members: __getitem__, __iter__, __len__, __next__
.. autoclass:: PyOpenColorIO.Config.ViewTransformNameIterator
:special-members: __getitem__, __iter__, __len__, __next__
.. autoclass:: PyOpenColorIO.Config.ViewTransformIterator
:special-members: __getitem__, __iter__, __len__, __next__
.. autoclass:: PyOpenColorIO.Config.NamedTransformNameIterator
:special-members: __getitem__, __iter__, __len__, __next__
.. autoclass:: PyOpenColorIO.Config.NamedTransformIterator
:special-members: __getitem__, __iter__, __len__, __next__
.. autoclass:: PyOpenColorIO.Config.ActiveNamedTransformNameIterator
:special-members: __getitem__, __iter__, __len__, __next__
.. autoclass:: PyOpenColorIO.Config.ActiveNamedTransformIterator
:special-members: __getitem__, __iter__, __len__, __next__
.. include:: python/${PYDIR}/pyopencolorio_config.rst
.. group-tab:: C++
+1 -16
View File
@@ -9,22 +9,7 @@ Context
.. group-tab:: Python
.. autoclass:: PyOpenColorIO.Context
:members:
:undoc-members:
:special-members: __init__, __str__
:exclude-members: StringVarNameIterator,
StringVarIterator,
SearchPathIterator
.. autoclass:: PyOpenColorIO.Context.StringVarNameIterator
:special-members: __getitem__, __iter__, __len__, __next__
.. autoclass:: PyOpenColorIO.Context.StringVarIterator
:special-members: __getitem__, __iter__, __len__, __next__
.. autoclass:: PyOpenColorIO.Context.SearchPathIterator
:special-members: __getitem__, __iter__, __len__, __next__
.. include:: python/${PYDIR}/pyopencolorio_context.rst
.. group-tab:: C++
+1 -4
View File
@@ -9,10 +9,7 @@ DynamicProperty
.. group-tab:: Python
.. autoclass:: PyOpenColorIO.DynamicProperty
:members:
:undoc-members:
:special-members: __init__
.. include:: python/${PYDIR}/pyopencolorio_dynamicproperty.rst
.. group-tab:: C++
+28 -112
View File
@@ -12,10 +12,7 @@ LoggingLevel
.. group-tab:: Python
.. autoclass:: PyOpenColorIO.LoggingLevel
:members:
:undoc-members:
:exclude-members: name
.. include:: python/${PYDIR}/pyopencolorio_logginglevel.rst
.. group-tab:: C++
@@ -30,10 +27,7 @@ ReferenceSpaceType
.. group-tab:: Python
.. autoclass:: PyOpenColorIO.ReferenceSpaceType
:members:
:undoc-members:
:exclude-members: name
.. include:: python/${PYDIR}/pyopencolorio_referencespacetype.rst
.. group-tab:: C++
@@ -46,10 +40,7 @@ SearchReferenceSpaceType
.. group-tab:: Python
.. autoclass:: PyOpenColorIO.SearchReferenceSpaceType
:members:
:undoc-members:
:exclude-members: name
.. include:: python/${PYDIR}/pyopencolorio_searchreferencespacetype.rst
.. group-tab:: C++
@@ -62,10 +53,7 @@ NamedTransformVisibility
.. group-tab:: Python
.. autoclass:: PyOpenColorIO.NamedTransformVisibility
:members:
:undoc-members:
:exclude-members: name
.. include:: python/${PYDIR}/pyopencolorio_namedtransformvisibility.rst
.. group-tab:: C++
@@ -78,10 +66,7 @@ ColorSpaceVisibility
.. group-tab:: Python
.. autoclass:: PyOpenColorIO.ColorSpaceVisibility
:members:
:undoc-members:
:exclude-members: name
.. include:: python/${PYDIR}/pyopencolorio_colorspacevisibility.rst
.. group-tab:: C++
@@ -94,10 +79,7 @@ ViewType
.. group-tab:: Python
.. autoclass:: PyOpenColorIO.ViewType
:members:
:undoc-members:
:exclude-members: name
.. include:: python/${PYDIR}/pyopencolorio_viewtype.rst
.. group-tab:: C++
@@ -110,10 +92,7 @@ ColorSpaceDirection
.. group-tab:: Python
.. autoclass:: PyOpenColorIO.ColorSpaceDirection
:members:
:undoc-members:
:exclude-members: name
.. include:: python/${PYDIR}/pyopencolorio_colorspacedirection.rst
.. group-tab:: C++
@@ -128,10 +107,7 @@ ViewTransformDirection
.. group-tab:: Python
.. autoclass:: PyOpenColorIO.ViewTransformDirection
:members:
:undoc-members:
:exclude-members: name
.. include:: python/${PYDIR}/pyopencolorio_viewtransformdirection.rst
.. group-tab:: C++
@@ -146,10 +122,7 @@ TransformDirection
.. group-tab:: Python
.. autoclass:: PyOpenColorIO.TransformDirection
:members:
:undoc-members:
:exclude-members: name
.. include:: python/${PYDIR}/pyopencolorio_transformdirection.rst
.. group-tab:: C++
@@ -164,10 +137,7 @@ TransformType
.. group-tab:: Python
.. autoclass:: PyOpenColorIO.TransformType
:members:
:undoc-members:
:exclude-members: name
.. include:: python/${PYDIR}/pyopencolorio_transformtype.rst
.. group-tab:: C++
@@ -180,10 +150,7 @@ Interpolation
.. group-tab:: Python
.. autoclass:: PyOpenColorIO.Interpolation
:members:
:undoc-members:
:exclude-members: name
.. include:: python/${PYDIR}/pyopencolorio_interpolation.rst
.. group-tab:: C++
@@ -198,10 +165,7 @@ BitDepth
.. group-tab:: Python
.. autoclass:: PyOpenColorIO.BitDepth
:members:
:undoc-members:
:exclude-members: name
.. include:: python/${PYDIR}/pyopencolorio_bitdepth.rst
.. group-tab:: C++
@@ -216,10 +180,7 @@ Lut1DHueAdjust
.. group-tab:: Python
.. autoclass:: PyOpenColorIO.Lut1DHueAdjust
:members:
:undoc-members:
:exclude-members: name
.. include:: python/${PYDIR}/pyopencolorio_lut1dhueadjust.rst
.. group-tab:: C++
@@ -232,10 +193,7 @@ ChannelOrdering
.. group-tab:: Python
.. autoclass:: PyOpenColorIO.ChannelOrdering
:members:
:undoc-members:
:exclude-members: name
.. include:: python/${PYDIR}/pyopencolorio_channelordering.rst
.. group-tab:: C++
@@ -248,10 +206,7 @@ Allocation
.. group-tab:: Python
.. autoclass:: PyOpenColorIO.Allocation
:members:
:undoc-members:
:exclude-members: name
.. include:: python/${PYDIR}/pyopencolorio_allocation.rst
.. group-tab:: C++
@@ -266,10 +221,7 @@ GpuLanguage
.. group-tab:: Python
.. autoclass:: PyOpenColorIO.GpuLanguage
:members:
:undoc-members:
:exclude-members: name
.. include:: python/${PYDIR}/pyopencolorio_gpulanguage.rst
.. group-tab:: C++
@@ -284,10 +236,7 @@ EnvironmentMode
.. group-tab:: Python
.. autoclass:: PyOpenColorIO.EnvironmentMode
:members:
:undoc-members:
:exclude-members: name
.. include:: python/${PYDIR}/pyopencolorio_environmentmode.rst
.. group-tab:: C++
@@ -302,10 +251,7 @@ RangeStyle
.. group-tab:: Python
.. autoclass:: PyOpenColorIO.RangeStyle
:members:
:undoc-members:
:exclude-members: name
.. include:: python/${PYDIR}/pyopencolorio_rangestyle.rst
.. group-tab:: C++
@@ -320,10 +266,7 @@ FixedFunctionStyle
.. group-tab:: Python
.. autoclass:: PyOpenColorIO.FixedFunctionStyle
:members:
:undoc-members:
:exclude-members: name
.. include:: python/${PYDIR}/pyopencolorio_fixedfunctionstyle.rst
.. group-tab:: C++
@@ -338,10 +281,7 @@ ExposureContrastStyle
.. group-tab:: Python
.. autoclass:: PyOpenColorIO.ExposureContrastStyle
:members:
:undoc-members:
:exclude-members: name
.. include:: python/${PYDIR}/pyopencolorio_exposurecontraststyle.rst
.. group-tab:: C++
@@ -356,10 +296,7 @@ CDLStyle
.. group-tab:: Python
.. autoclass:: PyOpenColorIO.CDLStyle
:members:
:undoc-members:
:exclude-members: name
.. include:: python/${PYDIR}/pyopencolorio_cdlstyle.rst
.. group-tab:: C++
@@ -374,10 +311,7 @@ NegativeStyle
.. group-tab:: Python
.. autoclass:: PyOpenColorIO.NegativeStyle
:members:
:undoc-members:
:exclude-members: name
.. include:: python/${PYDIR}/pyopencolorio_negativestyle.rst
.. group-tab:: C++
@@ -392,10 +326,7 @@ GradingStyle
.. group-tab:: Python
.. autoclass:: PyOpenColorIO.GradingStyle
:members:
:undoc-members:
:exclude-members: name
.. include:: python/${PYDIR}/pyopencolorio_gradingstyle.rst
.. group-tab:: C++
@@ -410,10 +341,7 @@ DynamicPropertyType
.. group-tab:: Python
.. autoclass:: PyOpenColorIO.DynamicPropertyType
:members:
:undoc-members:
:exclude-members: name
.. include:: python/${PYDIR}/pyopencolorio_dynamicpropertytype.rst
.. group-tab:: C++
@@ -426,10 +354,7 @@ RGBCurveType
.. group-tab:: Python
.. autoclass:: PyOpenColorIO.RGBCurveType
:members:
:undoc-members:
:exclude-members: name
.. include:: python/${PYDIR}/pyopencolorio_rgbcurvetype.rst
.. group-tab:: C++
@@ -442,10 +367,7 @@ UniformDataType
.. group-tab:: Python
.. autoclass:: PyOpenColorIO.UniformDataType
:members:
:undoc-members:
:exclude-members: name
.. include:: python/${PYDIR}/pyopencolorio_uniformdatatype.rst
.. group-tab:: C++
@@ -458,10 +380,7 @@ OptimizationFlags
.. group-tab:: Python
.. autoclass:: PyOpenColorIO.OptimizationFlags
:members:
:undoc-members:
:exclude-members: name
.. include:: python/${PYDIR}/pyopencolorio_optimizationflags.rst
.. group-tab:: C++
@@ -474,10 +393,7 @@ ProcessorCacheFlags
.. group-tab:: Python
.. autoclass:: PyOpenColorIO.ProcessorCacheFlags
:members:
:undoc-members:
:exclude-members: name
.. include:: python/${PYDIR}/pyopencolorio_processorcacheflags.rst
.. group-tab:: C++
+2 -2
View File
@@ -9,9 +9,9 @@ Exceptions
.. group-tab:: Python
.. autoexception:: PyOpenColorIO.Exception
.. include:: python/${PYDIR}/pyopencolorio_exception.rst
.. autoexception:: PyOpenColorIO.ExceptionMissingFile
.. include:: python/${PYDIR}/pyopencolorio_exceptionmissingfile.rst
.. group-tab:: C++
+1 -25
View File
@@ -9,31 +9,7 @@ FormatMetadata
.. group-tab:: Python
.. autoclass:: PyOpenColorIO.FormatMetadata
:members:
:undoc-members:
:special-members: __init__,
__iter__,
__len__,
__getitem__,
__setitem__,
__contains__
:exclude-members: AttributeNameIterator,
AttributeIterator,
ConstChildElementIterator,
ChildElementIterator
.. autoclass:: PyOpenColorIO.FormatMetadata.AttributeNameIterator
:special-members: __getitem__, __iter__, __len__, __next__
.. autoclass:: PyOpenColorIO.FormatMetadata.AttributeIterator
:special-members: __getitem__, __iter__, __len__, __next__
.. autoclass:: PyOpenColorIO.FormatMetadata.ConstChildElementIterator
:special-members: __getitem__, __iter__, __len__, __next__
.. autoclass:: PyOpenColorIO.FormatMetadata.ChildElementIterator
:special-members: __getitem__, __iter__, __len__, __next__
.. include:: python/${PYDIR}/pyopencolorio_formatmetadata.rst
.. group-tab:: C++
+46 -46
View File
@@ -12,7 +12,7 @@ Caching
.. group-tab:: Python
.. autofunction:: PyOpenColorIO.ClearAllCaches
.. include:: python/${PYDIR}/pyopencolorio_clearallcaches.rst
.. group-tab:: C++
@@ -27,9 +27,9 @@ Version
.. group-tab:: Python
.. autofunction:: PyOpenColorIO.GetVersion
.. include:: python/${PYDIR}/pyopencolorio_getversion.rst
.. autofunction:: PyOpenColorIO.GetVersionHex
.. include:: python/${PYDIR}/pyopencolorio_getversionhex.rst
.. group-tab:: C++
@@ -44,9 +44,9 @@ Logging
.. group-tab:: Python
.. autofunction:: PyOpenColorIO.GetLoggingLevel
.. include:: python/${PYDIR}/pyopencolorio_getlogginglevel.rst
.. autofunction:: PyOpenColorIO.SetLoggingLevel
.. include:: python/${PYDIR}/pyopencolorio_setlogginglevel.rst
.. group-tab:: C++
@@ -61,11 +61,11 @@ Logging Function
.. group-tab:: Python
.. autofunction:: PyOpenColorIO.SetLoggingFunction
.. include:: python/${PYDIR}/pyopencolorio_setloggingfunction.rst
.. autofunction:: PyOpenColorIO.ResetToDefaultLoggingFunction
.. include:: python/${PYDIR}/pyopencolorio_resettodefaultloggingfunction.rst
.. autofunction:: PyOpenColorIO.LogMessage
.. include:: python/${PYDIR}/pyopencolorio_logmessage.rst
.. group-tab:: C++
@@ -84,9 +84,9 @@ Compute Hash Function
.. group-tab:: Python
.. autofunction:: PyOpenColorIO.SetComputeHashFunction
.. include:: python/${PYDIR}/pyopencolorio_setcomputehashfunction.rst
.. autofunction:: PyOpenColorIO.ResetComputeHashFunction
.. include:: python/${PYDIR}/pyopencolorio_resetcomputehashfunction.rst
.. group-tab:: C++
@@ -103,13 +103,13 @@ Environment Variables
.. group-tab:: Python
.. autofunction:: PyOpenColorIO.GetEnvVariable
.. include:: python/${PYDIR}/pyopencolorio_getenvvariable.rst
.. autofunction:: PyOpenColorIO.SetEnvVariable
.. include:: python/${PYDIR}/pyopencolorio_setenvvariable.rst
.. autofunction:: PyOpenColorIO.UnsetEnvVariable
.. include:: python/${PYDIR}/pyopencolorio_unsetenvvariable.rst
.. autofunction:: PyOpenColorIO.IsEnvVariablePresent
.. include:: python/${PYDIR}/pyopencolorio_isenvvariablepresent.rst
.. group-tab:: C++
@@ -142,9 +142,9 @@ Bool
.. group-tab:: Python
.. autofunction:: PyOpenColorIO.BoolToString
.. include:: python/${PYDIR}/pyopencolorio_booltostring.rst
.. autofunction:: PyOpenColorIO.BoolFromString
.. include:: python/${PYDIR}/pyopencolorio_boolfromstring.rst
.. group-tab:: C++
@@ -161,9 +161,9 @@ LoggingLevel
.. group-tab:: Python
.. autofunction:: PyOpenColorIO.LoggingLevelToString
.. include:: python/${PYDIR}/pyopencolorio_loggingleveltostring.rst
.. autofunction:: PyOpenColorIO.LoggingLevelFromString
.. include:: python/${PYDIR}/pyopencolorio_logginglevelfromstring.rst
.. group-tab:: C++
@@ -180,13 +180,13 @@ TransformDirection
.. group-tab:: Python
.. autofunction:: PyOpenColorIO.TransformDirectionToString
.. include:: python/${PYDIR}/pyopencolorio_transformdirectiontostring.rst
.. autofunction:: PyOpenColorIO.TransformDirectionFromString
.. include:: python/${PYDIR}/pyopencolorio_transformdirectionfromstring.rst
.. autofunction:: PyOpenColorIO.GetInverseTransformDirection
.. include:: python/${PYDIR}/pyopencolorio_getinversetransformdirection.rst
.. autofunction:: PyOpenColorIO.CombineTransformDirections
.. include:: python/${PYDIR}/pyopencolorio_combinetransformdirections.rst
.. group-tab:: C++
@@ -207,13 +207,13 @@ BitDepth
.. group-tab:: Python
.. autofunction:: PyOpenColorIO.BitDepthToString
.. include:: python/${PYDIR}/pyopencolorio_bitdepthtostring.rst
.. autofunction:: PyOpenColorIO.BitDepthFromString
.. include:: python/${PYDIR}/pyopencolorio_bitdepthfromstring.rst
.. autofunction:: PyOpenColorIO.BitDepthIsFloat
.. include:: python/${PYDIR}/pyopencolorio_bitdepthisfloat.rst
.. autofunction:: PyOpenColorIO.BitDepthToInt
.. include:: python/${PYDIR}/pyopencolorio_bitdepthtoint.rst
.. group-tab:: C++
@@ -234,9 +234,9 @@ Allocation
.. group-tab:: Python
.. autofunction:: PyOpenColorIO.AllocationToString
.. include:: python/${PYDIR}/pyopencolorio_allocationtostring.rst
.. autofunction:: PyOpenColorIO.AllocationFromString
.. include:: python/${PYDIR}/pyopencolorio_allocationfromstring.rst
.. group-tab:: C++
@@ -253,9 +253,9 @@ Interpolation
.. group-tab:: Python
.. autofunction:: PyOpenColorIO.InterpolationToString
.. include:: python/${PYDIR}/pyopencolorio_interpolationtostring.rst
.. autofunction:: PyOpenColorIO.InterpolationFromString
.. include:: python/${PYDIR}/pyopencolorio_interpolationfromstring.rst
.. group-tab:: C++
@@ -272,9 +272,9 @@ GpuLanguage
.. group-tab:: Python
.. autofunction:: PyOpenColorIO.GpuLanguageToString
.. include:: python/${PYDIR}/pyopencolorio_gpulanguagetostring.rst
.. autofunction:: PyOpenColorIO.GpuLanguageFromString
.. include:: python/${PYDIR}/pyopencolorio_gpulanguagefromstring.rst
.. group-tab:: C++
@@ -291,9 +291,9 @@ EnvironmentMode
.. group-tab:: Python
.. autofunction:: PyOpenColorIO.EnvironmentModeToString
.. include:: python/${PYDIR}/pyopencolorio_environmentmodetostring.rst
.. autofunction:: PyOpenColorIO.EnvironmentModeFromString
.. include:: python/${PYDIR}/pyopencolorio_environmentmodefromstring.rst
.. group-tab:: C++
@@ -310,9 +310,9 @@ CDLStyle
.. group-tab:: Python
.. autofunction:: PyOpenColorIO.CDLStyleToString
.. include:: python/${PYDIR}/pyopencolorio_cdlstyletostring.rst
.. autofunction:: PyOpenColorIO.CDLStyleFromString
.. include:: python/${PYDIR}/pyopencolorio_cdlstylefromstring.rst
.. group-tab:: C++
@@ -329,9 +329,9 @@ RangeStyle
.. group-tab:: Python
.. autofunction:: PyOpenColorIO.RangeStyleToString
.. include:: python/${PYDIR}/pyopencolorio_rangestyletostring.rst
.. autofunction:: PyOpenColorIO.RangeStyleFromString
.. include:: python/${PYDIR}/pyopencolorio_rangestylefromstring.rst
.. group-tab:: C++
@@ -348,9 +348,9 @@ FixedFunctionStyle
.. group-tab:: Python
.. autofunction:: PyOpenColorIO.FixedFunctionStyleToString
.. include:: python/${PYDIR}/pyopencolorio_fixedfunctionstyletostring.rst
.. autofunction:: PyOpenColorIO.FixedFunctionStyleFromString
.. include:: python/${PYDIR}/pyopencolorio_fixedfunctionstylefromstring.rst
.. group-tab:: C++
@@ -367,9 +367,9 @@ GradingStyle
.. group-tab:: Python
.. autofunction:: PyOpenColorIO.GradingStyleToString
.. include:: python/${PYDIR}/pyopencolorio_gradingstyletostring.rst
.. autofunction:: PyOpenColorIO.GradingStyleFromString
.. include:: python/${PYDIR}/pyopencolorio_gradingstylefromstring.rst
.. group-tab:: C++
@@ -386,9 +386,9 @@ ExposureContrastStyle
.. group-tab:: Python
.. autofunction:: PyOpenColorIO.ExposureContrastStyleToString
.. include:: python/${PYDIR}/pyopencolorio_exposurecontraststyletostring.rst
.. autofunction:: PyOpenColorIO.ExposureContrastStyleFromString
.. include:: python/${PYDIR}/pyopencolorio_exposurecontraststylefromstring.rst
.. group-tab:: C++
@@ -405,9 +405,9 @@ NegativeStyle
.. group-tab:: Python
.. autofunction:: PyOpenColorIO.NegativeStyleToString
.. include:: python/${PYDIR}/pyopencolorio_negativestyletostring.rst
.. autofunction:: PyOpenColorIO.NegativeStyleFromString
.. include:: python/${PYDIR}/pyopencolorio_negativestylefromstring.rst
.. group-tab:: C++
+10 -94
View File
@@ -14,11 +14,7 @@ GradingPrimaryTransform
.. group-tab:: Python
.. autoclass:: PyOpenColorIO.GradingPrimaryTransform
:members:
:undoc-members:
:special-members: __init__, __str__
:inherited-members:
.. include:: python/${PYDIR}/pyopencolorio_gradingprimarytransform.rst
.. group-tab:: C++
@@ -38,10 +34,7 @@ GradingPrimary
.. group-tab:: Python
.. autoclass:: PyOpenColorIO.GradingPrimary
:members:
:undoc-members:
:special-members: __init__, __str__
.. include:: python/${PYDIR}/pyopencolorio_gradingprimary.rst
.. group-tab:: C++
@@ -58,10 +51,7 @@ GradingRGBM
.. group-tab:: Python
.. autoclass:: PyOpenColorIO.GradingRGBM
:members:
:undoc-members:
:special-members: __init__, __str__
.. include:: python/${PYDIR}/pyopencolorio_gradingrgbm.rst
.. group-tab:: C++
@@ -78,11 +68,7 @@ GradingRGBCurveTransform
.. group-tab:: Python
.. autoclass:: PyOpenColorIO.GradingRGBCurveTransform
:members:
:undoc-members:
:special-members: __init__, __str__
:inherited-members:
.. include:: python/${PYDIR}/pyopencolorio_gradingrgbcurvetransform.rst
.. group-tab:: C++
@@ -102,10 +88,7 @@ GradingRGBCurve
.. group-tab:: Python
.. autoclass:: PyOpenColorIO.GradingRGBCurve
:members:
:undoc-members:
:special-members: __init__, __str__
.. include:: python/${PYDIR}/pyopencolorio_gradingrgbcurve.rst
.. group-tab:: C++
@@ -118,53 +101,6 @@ GradingRGBCurve
.. doxygentypedef:: ${OCIO_NAMESPACE}::ConstGradingRGBCurveRcPtr
.. doxygentypedef:: ${OCIO_NAMESPACE}::GradingRGBCurveRcPtr
GradingHueCurveTransform
************************
.. tabs::
.. group-tab:: Python
.. autoclass:: PyOpenColorIO.GradingHueCurveTransform
:members:
:undoc-members:
:special-members: __init__, __str__
:inherited-members:
.. group-tab:: C++
.. doxygenclass:: ${OCIO_NAMESPACE}::GradingHueCurveTransform
:members:
:undoc-members:
.. doxygenfunction:: ${OCIO_NAMESPACE}::operator<<(std::ostream&, const GradingHueCurveTransform&) noexcept
.. doxygentypedef:: ${OCIO_NAMESPACE}::ConstGradingHueCurveTransformRcPtr
.. doxygentypedef:: ${OCIO_NAMESPACE}::GradingHueCurveTransformRcPtr
GradingHueCurve
^^^^^^^^^^^^^^^
.. tabs::
.. group-tab:: Python
.. autoclass:: PyOpenColorIO.GradingHueCurve
:members:
:undoc-members:
:special-members: __init__, __str__
.. group-tab:: C++
.. doxygenclass:: ${OCIO_NAMESPACE}::GradingHueCurve
:members:
:undoc-members:
.. doxygenfunction:: ${OCIO_NAMESPACE}::operator<<(std::ostream&, const GradingHueCurve&)
.. doxygentypedef:: ${OCIO_NAMESPACE}::ConstGradingHueCurveRcPtr
.. doxygentypedef:: ${OCIO_NAMESPACE}::GradingHueCurveRcPtr
GradingControlPoint
^^^^^^^^^^^^^^^^^^^
@@ -172,10 +108,7 @@ GradingControlPoint
.. group-tab:: Python
.. autoclass:: PyOpenColorIO.GradingControlPoint
:members:
:undoc-members:
:special-members: __init__, __str__
.. include:: python/${PYDIR}/pyopencolorio_gradingcontrolpoint.rst
.. group-tab:: C++
@@ -192,14 +125,7 @@ GradingBSplineCurve
.. group-tab:: Python
.. autoclass:: PyOpenColorIO.GradingBSplineCurve
:members:
:undoc-members:
:special-members: __init__, __str__
:exclude-members: GradingControlPointIterator
.. autoclass:: PyOpenColorIO.GradingBSplineCurve.GradingControlPointIterator
:special-members: __getitem__, __setitem__, __iter__, __len__, __next__
.. include:: python/${PYDIR}/pyopencolorio_gradingbsplinecurve.rst
.. group-tab:: C++
@@ -219,11 +145,7 @@ GradingToneTransform
.. group-tab:: Python
.. autoclass:: PyOpenColorIO.GradingToneTransform
:members:
:undoc-members:
:special-members: __init__, __str__
:inherited-members:
.. include:: python/${PYDIR}/pyopencolorio_gradingtonetransform.rst
.. group-tab:: C++
@@ -243,10 +165,7 @@ GradingTone
.. group-tab:: Python
.. autoclass:: PyOpenColorIO.GradingTone
:members:
:undoc-members:
:special-members: __init__, __str__
.. include:: python/${PYDIR}/pyopencolorio_gradingtone.rst
.. group-tab:: C++
@@ -263,10 +182,7 @@ GradingRGBMSW
.. group-tab:: Python
.. autoclass:: PyOpenColorIO.GradingRGBMSW
:members:
:undoc-members:
:special-members: __init__, __str__
.. include:: python/${PYDIR}/pyopencolorio_gradingrgbmsw.rst
.. group-tab:: C++
+3 -14
View File
@@ -9,10 +9,7 @@ ImageDesc
.. group-tab:: Python
.. autoclass:: PyOpenColorIO.ImageDesc
:members:
:undoc-members:
:special-members: __init__
.. include:: python/${PYDIR}/pyopencolorio_imagedesc.rst
.. py:data:: AutoStride
:module: PyOpenColorIO
@@ -38,11 +35,7 @@ PackedImageDesc
.. group-tab:: Python
.. autoclass:: PyOpenColorIO.PackedImageDesc
:members:
:undoc-members:
:special-members: __init__
:inherited-members:
.. include:: python/${PYDIR}/pyopencolorio_packedimagedesc.rst
.. group-tab:: C++
@@ -57,11 +50,7 @@ PlanarImageDesc
.. group-tab:: Python
.. autoclass:: PyOpenColorIO.PlanarImageDesc
:members:
:undoc-members:
:special-members: __init__
:inherited-members:
.. include:: python/${PYDIR}/pyopencolorio_planarimagedesc.rst
.. group-tab:: C++
+1 -4
View File
@@ -9,10 +9,7 @@ Look
.. group-tab:: Python
.. autoclass:: PyOpenColorIO.Look
:members:
:undoc-members:
:special-members: __init__, __str__
.. include:: python/${PYDIR}/pyopencolorio_look.rst
.. group-tab:: C++
+1 -8
View File
@@ -9,14 +9,7 @@ Named Transform
.. group-tab:: Python
.. autoclass:: PyOpenColorIO.NamedTransform
:members:
:undoc-members:
:special-members: __init__, __str__
:exclude-members: NamedTransformCategoryIterator
.. autoclass:: PyOpenColorIO.NamedTransform.NamedTransformCategoryIterator
:special-members: __getitem__, __iter__, __len__, __next__
.. include:: python/${PYDIR}/pyopencolorio_namedtransform.rst
.. group-tab:: C++
+4 -27
View File
@@ -12,14 +12,7 @@ Processor
.. group-tab:: Python
.. autoclass:: PyOpenColorIO.Processor
:members:
:undoc-members:
:special-members: __init__
:exclude-members: TransformFormatMetadataIterator, WriteFormatIterator
.. autoclass:: PyOpenColorIO.Processor.TransformFormatMetadataIterator
:special-members: __getitem__, __iter__, __len__, __next__
.. include:: python/${PYDIR}/pyopencolorio_processor.rst
.. group-tab:: C++
@@ -37,10 +30,7 @@ CPUProcessor
.. group-tab:: Python
.. autoclass:: PyOpenColorIO.CPUProcessor
:members:
:undoc-members:
:special-members: __init__
.. include:: python/${PYDIR}/pyopencolorio_cpuprocessor.rst
.. group-tab:: C++
@@ -58,10 +48,7 @@ GPUProcessor
.. group-tab:: Python
.. autoclass:: PyOpenColorIO.GPUProcessor
:members:
:undoc-members:
:special-members: __init__
.. include:: python/${PYDIR}/pyopencolorio_gpuprocessor.rst
.. group-tab:: C++
@@ -79,17 +66,7 @@ ProcessorMetadata
.. group-tab:: Python
.. autoclass:: PyOpenColorIO.ProcessorMetadata
:members:
:undoc-members:
:special-members: __init__
:exclude-members: FileIterator, LookIterator
.. autoclass:: PyOpenColorIO.ProcessorMetadata.FileIterator
:special-members: __getitem__, __iter__, __len__, __next__
.. autoclass:: PyOpenColorIO.ProcessorMetadata.LookIterator
:special-members: __getitem__, __iter__, __len__, __next__
.. include:: python/${PYDIR}/pyopencolorio_processormetadata.rst
.. group-tab:: C++
@@ -0,0 +1,37 @@
..
SPDX-License-Identifier: CC-BY-4.0
Copyright Contributors to the OpenColorIO Project.
Do not edit! This file was automatically generated by share/docs/frozendoc.py.
.. py:class:: Allocation
:module: PyOpenColorIO
Members:
ALLOCATION_UNKNOWN :
ALLOCATION_UNIFORM :
ALLOCATION_LG2 :
.. py:method:: name() -> str
:property:
.. py:attribute:: Allocation.ALLOCATION_LG2
:module: PyOpenColorIO
:value: <Allocation.ALLOCATION_LG2: 2>
.. py:attribute:: Allocation.ALLOCATION_UNIFORM
:module: PyOpenColorIO
:value: <Allocation.ALLOCATION_UNIFORM: 1>
.. py:attribute:: Allocation.ALLOCATION_UNKNOWN
:module: PyOpenColorIO
:value: <Allocation.ALLOCATION_UNKNOWN: 0>
.. py:property:: Allocation.value
:module: PyOpenColorIO
@@ -0,0 +1,8 @@
..
SPDX-License-Identifier: CC-BY-4.0
Copyright Contributors to the OpenColorIO Project.
Do not edit! This file was automatically generated by share/docs/frozendoc.py.
.. py:function:: AllocationFromString(str: str) -> PyOpenColorIO.Allocation
:module: PyOpenColorIO
@@ -0,0 +1,8 @@
..
SPDX-License-Identifier: CC-BY-4.0
Copyright Contributors to the OpenColorIO Project.
Do not edit! This file was automatically generated by share/docs/frozendoc.py.
.. py:function:: AllocationToString(allocation: PyOpenColorIO.Allocation) -> str
:module: PyOpenColorIO
@@ -0,0 +1,56 @@
..
SPDX-License-Identifier: CC-BY-4.0
Copyright Contributors to the OpenColorIO Project.
Do not edit! This file was automatically generated by share/docs/frozendoc.py.
.. py:class:: AllocationTransform
:module: PyOpenColorIO
Forward direction wraps the 'expanded' range into the specified, often compressed, range.
.. py:method:: AllocationTransform.__init__(*args, **kwargs)
:module: PyOpenColorIO
Overloaded function.
1. __init__(self: PyOpenColorIO.AllocationTransform) -> None
2. __init__(self: PyOpenColorIO.AllocationTransform, allocation: PyOpenColorIO.Allocation = <Allocation.ALLOCATION_UNIFORM: 1>, vars: List[float] = [], direction: PyOpenColorIO.TransformDirection = <TransformDirection.TRANSFORM_DIR_FORWARD: 0>) -> None
.. py:method:: AllocationTransform.getAllocation(self: PyOpenColorIO.AllocationTransform) -> PyOpenColorIO.Allocation
:module: PyOpenColorIO
.. py:method:: AllocationTransform.getDirection(self: PyOpenColorIO.Transform) -> PyOpenColorIO.TransformDirection
:module: PyOpenColorIO
.. py:method:: AllocationTransform.getTransformType(self: PyOpenColorIO.Transform) -> PyOpenColorIO.TransformType
:module: PyOpenColorIO
.. py:method:: AllocationTransform.getVars(self: PyOpenColorIO.AllocationTransform) -> List[float]
:module: PyOpenColorIO
.. py:method:: AllocationTransform.setAllocation(self: PyOpenColorIO.AllocationTransform, allocation: PyOpenColorIO.Allocation) -> None
:module: PyOpenColorIO
.. py:method:: AllocationTransform.setDirection(self: PyOpenColorIO.Transform, direction: PyOpenColorIO.TransformDirection) -> None
:module: PyOpenColorIO
Note that this only affects the evaluation and not the values stored in the object.
.. py:method:: AllocationTransform.setVars(self: PyOpenColorIO.AllocationTransform, vars: List[float]) -> None
:module: PyOpenColorIO
.. py:method:: AllocationTransform.validate(self: PyOpenColorIO.Transform) -> None
:module: PyOpenColorIO
Will throw if data is not valid.
@@ -0,0 +1,181 @@
..
SPDX-License-Identifier: CC-BY-4.0
Copyright Contributors to the OpenColorIO Project.
Do not edit! This file was automatically generated by share/docs/frozendoc.py.
.. py:class:: Baker
:module: PyOpenColorIO
In certain situations it is necessary to serialize transforms into a variety of application specific LUT formats. Note that not all file formats that may be read also support baking.
**Usage Example:** *Bake a CSP sRGB viewer LUT*
.. code-block:: cpp
OCIO::ConstConfigRcPtr config = OCIO::Config::CreateFromEnv();
OCIO::BakerRcPtr baker = OCIO::Baker::Create();
baker->setConfig(config);
baker->setFormat("csp");
baker->setInputSpace("lnf");
baker->setShaperSpace("log");
baker->setTargetSpace("sRGB");
auto & metadata = baker->getFormatMetadata();
metadata.addChildElement(:ref:`OCIO::METADATA_DESCRIPTION`, "A first comment");
metadata.addChildElement(:ref:`OCIO::METADATA_DESCRIPTION`, "A second comment");
std::ostringstream out;
baker->bake(out); // fresh bread anyone!
std::cout << out.str();
.. py:method:: Baker.__init__(*args, **kwargs)
:module: PyOpenColorIO
Overloaded function.
1. __init__(self: PyOpenColorIO.Baker) -> None
Create a new :ref:`Baker`.
2. __init__(self: PyOpenColorIO.Baker, config: PyOpenColorIO.Config, format: str, inputSpace: str, targetSpace: str, looks: str = '', cubeSize: int = -1, shaperSpace: str = '', shaperSize: int = -1) -> None
Create a new :ref:`Baker`.
.. py:method:: Baker.bake(*args, **kwargs)
:module: PyOpenColorIO
Overloaded function.
1. bake(self: PyOpenColorIO.Baker, fileName: str) -> None
2. bake(self: PyOpenColorIO.Baker) -> str
Bake the LUT into the output stream.
.. py:method:: Baker.getConfig(self: PyOpenColorIO.Baker) -> PyOpenColorIO.Config
:module: PyOpenColorIO
.. py:method:: Baker.getCubeSize(self: PyOpenColorIO.Baker) -> int
:module: PyOpenColorIO
.. py:method:: Baker.getDisplay(self: PyOpenColorIO.Baker) -> str
:module: PyOpenColorIO
.. py:method:: Baker.getFormat(self: PyOpenColorIO.Baker) -> str
:module: PyOpenColorIO
.. py:method:: Baker.getFormatMetadata(self: PyOpenColorIO.Baker) -> PyOpenColorIO.FormatMetadata
:module: PyOpenColorIO
.. py:method:: Baker.getFormats() -> PyOpenColorIO.Baker.FormatIterator
:module: PyOpenColorIO
:staticmethod:
.. py:method:: Baker.getInputSpace(self: PyOpenColorIO.Baker) -> str
:module: PyOpenColorIO
.. py:method:: Baker.getLooks(self: PyOpenColorIO.Baker) -> str
:module: PyOpenColorIO
.. py:method:: Baker.getShaperSize(self: PyOpenColorIO.Baker) -> int
:module: PyOpenColorIO
.. py:method:: Baker.getShaperSpace(self: PyOpenColorIO.Baker) -> str
:module: PyOpenColorIO
.. py:method:: Baker.getTargetSpace(self: PyOpenColorIO.Baker) -> str
:module: PyOpenColorIO
.. py:method:: Baker.getView(self: PyOpenColorIO.Baker) -> str
:module: PyOpenColorIO
.. py:method:: Baker.setConfig(self: PyOpenColorIO.Baker, config: PyOpenColorIO.Config) -> None
:module: PyOpenColorIO
Set the config to use.
.. py:method:: Baker.setCubeSize(self: PyOpenColorIO.Baker, cubeSize: int) -> None
:module: PyOpenColorIO
Override the main LUT (3d or 1d) sample size. Default value is -1, which allows each format to use its own most appropriate size.
.. py:method:: Baker.setDisplayView(self: PyOpenColorIO.Baker, display: str, view: str) -> None
:module: PyOpenColorIO
Set the display and view to apply during the baking. Must not be used if setTargetSpace is used.
.. py:method:: Baker.setFormat(self: PyOpenColorIO.Baker, formatName: str) -> None
:module: PyOpenColorIO
Set the LUT output format.
.. py:method:: Baker.setInputSpace(self: PyOpenColorIO.Baker, inputSpace: str) -> None
:module: PyOpenColorIO
Set the input :ref:`ColorSpace` that the LUT will be applied to.
.. py:method:: Baker.setLooks(self: PyOpenColorIO.Baker, looks: str) -> None
:module: PyOpenColorIO
Set the looks to be applied during baking. Looks is a potentially comma (or colon) delimited list of lookNames, where +/- prefixes are optionally allowed to denote forward/inverse look specification. (And forward is assumed in the absence of either).
.. py:method:: Baker.setShaperSize(self: PyOpenColorIO.Baker, shaperSize: int) -> None
:module: PyOpenColorIO
Override the default shaper LUT size. Default value is -1, which allows each format to use its own most appropriate size. For the CLF format, the default uses a half-domain LUT1D (which is ideal for scene-linear inputs).
.. py:method:: Baker.setShaperSpace(self: PyOpenColorIO.Baker, shaperSpace: str) -> None
:module: PyOpenColorIO
Set an *optional* :ref:`ColorSpace` to shape the incoming values of the LUT. When baking 3DLUT, this will correspond to the 1D shaper used to normalise incoming values to the unit range. When baking 1D LUT, this will be used to determine the input range of the LUT.
.. py:method:: Baker.setTargetSpace(self: PyOpenColorIO.Baker, targetSpace: str) -> None
:module: PyOpenColorIO
Set the target (i.e., output) color space for the LUT. Must not be used if setDisplayView is used.
.. py:class:: FormatIterator
:module: PyOpenColorIO.Baker
Iterator on LUT baker Formats.
Each item is a tuple containing format name and format extension.
.. py:method:: FormatIterator.__getitem__(self: PyOpenColorIO.Baker.FormatIterator, arg0: int) -> tuple
:module: PyOpenColorIO.Baker
.. py:method:: FormatIterator.__iter__(self: PyOpenColorIO.Baker.FormatIterator) -> PyOpenColorIO.Baker.FormatIterator
:module: PyOpenColorIO.Baker
.. py:method:: FormatIterator.__len__(self: PyOpenColorIO.Baker.FormatIterator) -> int
:module: PyOpenColorIO.Baker
.. py:method:: FormatIterator.__next__(self: PyOpenColorIO.Baker.FormatIterator) -> tuple
:module: PyOpenColorIO.Baker
@@ -0,0 +1,81 @@
..
SPDX-License-Identifier: CC-BY-4.0
Copyright Contributors to the OpenColorIO Project.
Do not edit! This file was automatically generated by share/docs/frozendoc.py.
.. py:class:: BitDepth
:module: PyOpenColorIO
Used in a configuration file to indicate the bit-depth of a color space, and by the :ref:`Processor` to specify the input and output bit-depths of images to process. Note that :ref:`Processor` only supports: UINT8, UINT10, UINT12, UINT16, F16 and F32.
Members:
BIT_DEPTH_UNKNOWN :
BIT_DEPTH_UINT8 :
BIT_DEPTH_UINT10 :
BIT_DEPTH_UINT12 :
BIT_DEPTH_UINT14 :
BIT_DEPTH_UINT16 :
BIT_DEPTH_UINT32 : Here for historical reason but that's not supported.
BIT_DEPTH_F16 :
BIT_DEPTH_F32 :
.. py:method:: name() -> str
:property:
.. py:attribute:: BitDepth.BIT_DEPTH_F16
:module: PyOpenColorIO
:value: <BitDepth.BIT_DEPTH_F16: 7>
.. py:attribute:: BitDepth.BIT_DEPTH_F32
:module: PyOpenColorIO
:value: <BitDepth.BIT_DEPTH_F32: 8>
.. py:attribute:: BitDepth.BIT_DEPTH_UINT10
:module: PyOpenColorIO
:value: <BitDepth.BIT_DEPTH_UINT10: 2>
.. py:attribute:: BitDepth.BIT_DEPTH_UINT12
:module: PyOpenColorIO
:value: <BitDepth.BIT_DEPTH_UINT12: 3>
.. py:attribute:: BitDepth.BIT_DEPTH_UINT14
:module: PyOpenColorIO
:value: <BitDepth.BIT_DEPTH_UINT14: 4>
.. py:attribute:: BitDepth.BIT_DEPTH_UINT16
:module: PyOpenColorIO
:value: <BitDepth.BIT_DEPTH_UINT16: 5>
.. py:attribute:: BitDepth.BIT_DEPTH_UINT32
:module: PyOpenColorIO
:value: <BitDepth.BIT_DEPTH_UINT32: 6>
.. py:attribute:: BitDepth.BIT_DEPTH_UINT8
:module: PyOpenColorIO
:value: <BitDepth.BIT_DEPTH_UINT8: 1>
.. py:attribute:: BitDepth.BIT_DEPTH_UNKNOWN
:module: PyOpenColorIO
:value: <BitDepth.BIT_DEPTH_UNKNOWN: 0>
.. py:property:: BitDepth.value
:module: PyOpenColorIO
@@ -0,0 +1,8 @@
..
SPDX-License-Identifier: CC-BY-4.0
Copyright Contributors to the OpenColorIO Project.
Do not edit! This file was automatically generated by share/docs/frozendoc.py.
.. py:function:: BitDepthFromString(str: str) -> PyOpenColorIO.BitDepth
:module: PyOpenColorIO
@@ -0,0 +1,8 @@
..
SPDX-License-Identifier: CC-BY-4.0
Copyright Contributors to the OpenColorIO Project.
Do not edit! This file was automatically generated by share/docs/frozendoc.py.
.. py:function:: BitDepthIsFloat(bitDepth: PyOpenColorIO.BitDepth) -> bool
:module: PyOpenColorIO
@@ -0,0 +1,8 @@
..
SPDX-License-Identifier: CC-BY-4.0
Copyright Contributors to the OpenColorIO Project.
Do not edit! This file was automatically generated by share/docs/frozendoc.py.
.. py:function:: BitDepthToInt(bitDepth: PyOpenColorIO.BitDepth) -> int
:module: PyOpenColorIO
@@ -0,0 +1,8 @@
..
SPDX-License-Identifier: CC-BY-4.0
Copyright Contributors to the OpenColorIO Project.
Do not edit! This file was automatically generated by share/docs/frozendoc.py.
.. py:function:: BitDepthToString(bitDepth: PyOpenColorIO.BitDepth) -> str
:module: PyOpenColorIO
@@ -0,0 +1,8 @@
..
SPDX-License-Identifier: CC-BY-4.0
Copyright Contributors to the OpenColorIO Project.
Do not edit! This file was automatically generated by share/docs/frozendoc.py.
.. py:function:: BoolFromString(str: str) -> bool
:module: PyOpenColorIO
@@ -0,0 +1,8 @@
..
SPDX-License-Identifier: CC-BY-4.0
Copyright Contributors to the OpenColorIO Project.
Do not edit! This file was automatically generated by share/docs/frozendoc.py.
.. py:function:: BoolToString(value: bool) -> str
:module: PyOpenColorIO
@@ -0,0 +1,54 @@
..
SPDX-License-Identifier: CC-BY-4.0
Copyright Contributors to the OpenColorIO Project.
Do not edit! This file was automatically generated by share/docs/frozendoc.py.
.. py:class:: BuiltinTransform
:module: PyOpenColorIO
A built-in transform is similar to a :ref:`FileTransform`, but without the file. OCIO knows how to build a set of commonly used transforms on-demand, thus avoiding the need for external files and simplifying config authoring.
.. py:method:: BuiltinTransform.__init__(*args, **kwargs)
:module: PyOpenColorIO
Overloaded function.
1. __init__(self: PyOpenColorIO.BuiltinTransform) -> None
2. __init__(self: PyOpenColorIO.BuiltinTransform, style: str = 'IDENTITY', direction: PyOpenColorIO.TransformDirection = <TransformDirection.TRANSFORM_DIR_FORWARD: 0>) -> None
.. py:method:: BuiltinTransform.getDescription(self: PyOpenColorIO.BuiltinTransform) -> str
:module: PyOpenColorIO
.. py:method:: BuiltinTransform.getDirection(self: PyOpenColorIO.Transform) -> PyOpenColorIO.TransformDirection
:module: PyOpenColorIO
.. py:method:: BuiltinTransform.getStyle(self: PyOpenColorIO.BuiltinTransform) -> str
:module: PyOpenColorIO
.. py:method:: BuiltinTransform.getTransformType(self: PyOpenColorIO.Transform) -> PyOpenColorIO.TransformType
:module: PyOpenColorIO
.. py:method:: BuiltinTransform.setDirection(self: PyOpenColorIO.Transform, direction: PyOpenColorIO.TransformDirection) -> None
:module: PyOpenColorIO
Note that this only affects the evaluation and not the values stored in the object.
.. py:method:: BuiltinTransform.setStyle(self: PyOpenColorIO.BuiltinTransform, style: str) -> None
:module: PyOpenColorIO
Select an existing built-in transform style from the list accessible through :cpp:class:`:ref:`BuiltinTransformRegistry``. The style is the ID string that identifies which transform to apply.
.. py:method:: BuiltinTransform.validate(self: PyOpenColorIO.Transform) -> None
:module: PyOpenColorIO
Will throw if data is not valid.
@@ -0,0 +1,60 @@
..
SPDX-License-Identifier: CC-BY-4.0
Copyright Contributors to the OpenColorIO Project.
Do not edit! This file was automatically generated by share/docs/frozendoc.py.
.. py:class:: BuiltinTransformRegistry
:module: PyOpenColorIO
The built-in transform registry contains all the existing built-in transforms which can be used by a configuration (version 2 or higher only).
.. py:method:: BuiltinTransformRegistry.__init__(self: PyOpenColorIO.BuiltinTransformRegistry) -> None
:module: PyOpenColorIO
Get the current built-in transform registry.
.. py:method:: BuiltinTransformRegistry.getBuiltins(self: PyOpenColorIO.BuiltinTransformRegistry) -> PyOpenColorIO.BuiltinTransformRegistry.BuiltinIterator
:module: PyOpenColorIO
.. py:class:: BuiltinStyleIterator
:module: PyOpenColorIO.BuiltinTransformRegistry
.. py:method:: BuiltinStyleIterator.__getitem__(self: PyOpenColorIO.BuiltinTransformRegistry.BuiltinStyleIterator, arg0: int) -> str
:module: PyOpenColorIO.BuiltinTransformRegistry
.. py:method:: BuiltinStyleIterator.__iter__(self: PyOpenColorIO.BuiltinTransformRegistry.BuiltinStyleIterator) -> PyOpenColorIO.BuiltinTransformRegistry.BuiltinStyleIterator
:module: PyOpenColorIO.BuiltinTransformRegistry
.. py:method:: BuiltinStyleIterator.__len__(self: PyOpenColorIO.BuiltinTransformRegistry.BuiltinStyleIterator) -> int
:module: PyOpenColorIO.BuiltinTransformRegistry
.. py:method:: BuiltinStyleIterator.__next__(self: PyOpenColorIO.BuiltinTransformRegistry.BuiltinStyleIterator) -> str
:module: PyOpenColorIO.BuiltinTransformRegistry
.. py:class:: BuiltinIterator
:module: PyOpenColorIO.BuiltinTransformRegistry
.. py:method:: BuiltinIterator.__getitem__(self: PyOpenColorIO.BuiltinTransformRegistry.BuiltinIterator, arg0: int) -> tuple
:module: PyOpenColorIO.BuiltinTransformRegistry
.. py:method:: BuiltinIterator.__iter__(self: PyOpenColorIO.BuiltinTransformRegistry.BuiltinIterator) -> PyOpenColorIO.BuiltinTransformRegistry.BuiltinIterator
:module: PyOpenColorIO.BuiltinTransformRegistry
.. py:method:: BuiltinIterator.__len__(self: PyOpenColorIO.BuiltinTransformRegistry.BuiltinIterator) -> int
:module: PyOpenColorIO.BuiltinTransformRegistry
.. py:method:: BuiltinIterator.__next__(self: PyOpenColorIO.BuiltinTransformRegistry.BuiltinIterator) -> tuple
:module: PyOpenColorIO.BuiltinTransformRegistry
@@ -0,0 +1,37 @@
..
SPDX-License-Identifier: CC-BY-4.0
Copyright Contributors to the OpenColorIO Project.
Do not edit! This file was automatically generated by share/docs/frozendoc.py.
.. py:class:: CDLStyle
:module: PyOpenColorIO
Members:
CDL_ASC : ASC CDL specification v1.2.
CDL_NO_CLAMP : CDL that does not clamp.
CDL_TRANSFORM_DEFAULT :
.. py:method:: name() -> str
:property:
.. py:attribute:: CDLStyle.CDL_ASC
:module: PyOpenColorIO
:value: <CDLStyle.CDL_ASC: 0>
.. py:attribute:: CDLStyle.CDL_NO_CLAMP
:module: PyOpenColorIO
:value: <CDLStyle.CDL_NO_CLAMP: 1>
.. py:attribute:: CDLStyle.CDL_TRANSFORM_DEFAULT
:module: PyOpenColorIO
:value: <CDLStyle.CDL_NO_CLAMP: 1>
.. py:property:: CDLStyle.value
:module: PyOpenColorIO
@@ -0,0 +1,8 @@
..
SPDX-License-Identifier: CC-BY-4.0
Copyright Contributors to the OpenColorIO Project.
Do not edit! This file was automatically generated by share/docs/frozendoc.py.
.. py:function:: CDLStyleFromString(str: str) -> PyOpenColorIO.CDLStyle
:module: PyOpenColorIO
@@ -0,0 +1,8 @@
..
SPDX-License-Identifier: CC-BY-4.0
Copyright Contributors to the OpenColorIO Project.
Do not edit! This file was automatically generated by share/docs/frozendoc.py.
.. py:function:: CDLStyleToString(style: PyOpenColorIO.CDLStyle) -> str
:module: PyOpenColorIO
@@ -0,0 +1,151 @@
..
SPDX-License-Identifier: CC-BY-4.0
Copyright Contributors to the OpenColorIO Project.
Do not edit! This file was automatically generated by share/docs/frozendoc.py.
.. py:class:: CDLTransform
:module: PyOpenColorIO
An implementation of the ASC Color Decision List (CDL), based on the ASC v1.2 specification.
**ASC_SOP**
Slope, offset, power:: out = clamp( (in * slope) + offset ) ^ power
.. note::
​ If the config version is 1, negative values are clamped if the power is not 1.0. For config version 2 and higher, the negative handling is controlled by the CDL style.
.. py:method:: CDLTransform.CreateFromFile(src: str, id: str) -> PyOpenColorIO.CDLTransform
:module: PyOpenColorIO
:staticmethod:
Load the CDL from the src .cdl, .cc, or .ccc file.
.. note::
The cccid can be the ID of a CDL or the index of the CDL (as string). If cccid is NULL or empty the first CDL is returned. The cccid is case-sensitive. The src must be an absolute path reference, no relative directory or envvar resolution is performed. Throws if file does not contain any CDL or if the specified cccid is not found.
.. py:method:: CDLTransform.CreateGroupFromFile(src: str) -> PyOpenColorIO.GroupTransform
:module: PyOpenColorIO
:staticmethod:
Load all of the CDLs in a .cdl or .ccc file into a single :ref:`GroupTransform`.
.. note::
This may be useful as a quicker way for applications to check the contents of each of the CDLs. The src must be an absolute path reference, no relative directory or envvar resolution is performed.
.. py:method:: CDLTransform.__init__(*args, **kwargs)
:module: PyOpenColorIO
Overloaded function.
1. __init__(self: PyOpenColorIO.CDLTransform) -> None
2. __init__(self: PyOpenColorIO.CDLTransform, direction: PyOpenColorIO.TransformDirection = <TransformDirection.TRANSFORM_DIR_FORWARD: 0>) -> None
3. __init__(self: PyOpenColorIO.CDLTransform, slope: List[float[3]] = [1.0, 1.0, 1.0], offset: List[float[3]] = [0.0, 0.0, 0.0], power: List[float[3]] = [1.0, 1.0, 1.0], sat: float = 1.0, id: str = '', description: str = '', direction: PyOpenColorIO.TransformDirection = <TransformDirection.TRANSFORM_DIR_FORWARD: 0>) -> None
.. py:method:: CDLTransform.equals(self: PyOpenColorIO.CDLTransform, other: PyOpenColorIO.CDLTransform) -> bool
:module: PyOpenColorIO
.. py:method:: CDLTransform.getDirection(self: PyOpenColorIO.Transform) -> PyOpenColorIO.TransformDirection
:module: PyOpenColorIO
.. py:method:: CDLTransform.getFirstSOPDescription(self: PyOpenColorIO.CDLTransform) -> str
:module: PyOpenColorIO
.. py:method:: CDLTransform.getFormatMetadata(self: PyOpenColorIO.CDLTransform) -> PyOpenColorIO.FormatMetadata
:module: PyOpenColorIO
.. py:method:: CDLTransform.getID(self: PyOpenColorIO.CDLTransform) -> str
:module: PyOpenColorIO
The get/setID methods are now deprecated. The preferred way of interacting with the ID is now via the transform's formatMetadata.
.. py:method:: CDLTransform.getOffset(self: PyOpenColorIO.CDLTransform) -> List[float[3]]
:module: PyOpenColorIO
.. py:method:: CDLTransform.getPower(self: PyOpenColorIO.CDLTransform) -> List[float[3]]
:module: PyOpenColorIO
.. py:method:: CDLTransform.getSOP(self: PyOpenColorIO.CDLTransform) -> List[float[9]]
:module: PyOpenColorIO
.. py:method:: CDLTransform.getSat(self: PyOpenColorIO.CDLTransform) -> float
:module: PyOpenColorIO
.. py:method:: CDLTransform.getSatLumaCoefs(self: PyOpenColorIO.CDLTransform) -> List[float[3]]
:module: PyOpenColorIO
These are hard-coded, by spec, to r709.
.. py:method:: CDLTransform.getSlope(self: PyOpenColorIO.CDLTransform) -> List[float[3]]
:module: PyOpenColorIO
.. py:method:: CDLTransform.getStyle(self: PyOpenColorIO.CDLTransform) -> PyOpenColorIO.CDLStyle
:module: PyOpenColorIO
.. py:method:: CDLTransform.getTransformType(self: PyOpenColorIO.Transform) -> PyOpenColorIO.TransformType
:module: PyOpenColorIO
.. py:method:: CDLTransform.setDirection(self: PyOpenColorIO.Transform, direction: PyOpenColorIO.TransformDirection) -> None
:module: PyOpenColorIO
Note that this only affects the evaluation and not the values stored in the object.
.. py:method:: CDLTransform.setFirstSOPDescription(self: PyOpenColorIO.CDLTransform, description: str) -> None
:module: PyOpenColorIO
.. py:method:: CDLTransform.setID(self: PyOpenColorIO.CDLTransform, id: str) -> None
:module: PyOpenColorIO
.. py:method:: CDLTransform.setOffset(self: PyOpenColorIO.CDLTransform, rgb: List[float[3]]) -> None
:module: PyOpenColorIO
.. py:method:: CDLTransform.setPower(self: PyOpenColorIO.CDLTransform, rgb: List[float[3]]) -> None
:module: PyOpenColorIO
.. py:method:: CDLTransform.setSOP(self: PyOpenColorIO.CDLTransform, vec9: List[float[9]]) -> None
:module: PyOpenColorIO
.. py:method:: CDLTransform.setSat(self: PyOpenColorIO.CDLTransform, sat: float) -> None
:module: PyOpenColorIO
.. py:method:: CDLTransform.setSlope(self: PyOpenColorIO.CDLTransform, rgb: List[float[3]]) -> None
:module: PyOpenColorIO
.. py:method:: CDLTransform.setStyle(self: PyOpenColorIO.CDLTransform, style: PyOpenColorIO.CDLStyle) -> None
:module: PyOpenColorIO
Use CDL_ASC to clamp values to [0,1] per the ASC spec. Use NO_CLAMP to never clamp values (regardless of whether power is 1.0). The NO_CLAMP option passes negatives through unchanged (like the NEGATIVE_PASS_THRU style of :ref:`ExponentTransform`). The default style is CDL_NO_CLAMP.
.. py:method:: CDLTransform.validate(self: PyOpenColorIO.Transform) -> None
:module: PyOpenColorIO
Will throw if data is not valid.
@@ -0,0 +1,53 @@
..
SPDX-License-Identifier: CC-BY-4.0
Copyright Contributors to the OpenColorIO Project.
Do not edit! This file was automatically generated by share/docs/frozendoc.py.
.. py:class:: ChannelOrdering
:module: PyOpenColorIO
Used by :ref:`PackedImageDesc` to indicate the channel ordering of the image to process.
Members:
CHANNEL_ORDERING_RGBA :
CHANNEL_ORDERING_BGRA :
CHANNEL_ORDERING_ABGR :
CHANNEL_ORDERING_RGB :
CHANNEL_ORDERING_BGR :
.. py:method:: name() -> str
:property:
.. py:attribute:: ChannelOrdering.CHANNEL_ORDERING_ABGR
:module: PyOpenColorIO
:value: <ChannelOrdering.CHANNEL_ORDERING_ABGR: 2>
.. py:attribute:: ChannelOrdering.CHANNEL_ORDERING_BGR
:module: PyOpenColorIO
:value: <ChannelOrdering.CHANNEL_ORDERING_BGR: 4>
.. py:attribute:: ChannelOrdering.CHANNEL_ORDERING_BGRA
:module: PyOpenColorIO
:value: <ChannelOrdering.CHANNEL_ORDERING_BGRA: 1>
.. py:attribute:: ChannelOrdering.CHANNEL_ORDERING_RGB
:module: PyOpenColorIO
:value: <ChannelOrdering.CHANNEL_ORDERING_RGB: 3>
.. py:attribute:: ChannelOrdering.CHANNEL_ORDERING_RGBA
:module: PyOpenColorIO
:value: <ChannelOrdering.CHANNEL_ORDERING_RGBA: 0>
.. py:property:: ChannelOrdering.value
:module: PyOpenColorIO
@@ -0,0 +1,15 @@
..
SPDX-License-Identifier: CC-BY-4.0
Copyright Contributors to the OpenColorIO Project.
Do not edit! This file was automatically generated by share/docs/frozendoc.py.
.. py:function:: ClearAllCaches() -> None
:module: PyOpenColorIO
During normal usage, OpenColorIO tends to cache certain global information (such as the contents of LUTs on disk, intermediate results, etc.). Calling this function will flush all such information. The global information are related to LUT file identifications, loaded LUT file content and CDL transforms from loaded CDL files.
Under normal usage, this is not necessary, but it can be helpful in particular instances, such as designing OCIO profiles, and wanting to re-read luts without restarting.
.. note::
The method does not apply to instance specific caches such as the processor cache in a config instance or the GPU and CPU processor caches in a processor instance. Here deleting the instance flushes the cache.
@@ -0,0 +1,255 @@
..
SPDX-License-Identifier: CC-BY-4.0
Copyright Contributors to the OpenColorIO Project.
Do not edit! This file was automatically generated by share/docs/frozendoc.py.
.. py:class:: ColorSpace
:module: PyOpenColorIO
The *:ref:`ColorSpace`* is the state of an image with respect to colorimetry and color encoding. Transforming images between different *ColorSpaces* is the primary motivation for this library.
While a complete discussion of color spaces is beyond the scope of header documentation, traditional uses would be to have *ColorSpaces* corresponding to: physical capture devices (known cameras, scanners), and internal 'convenience' spaces (such as scene linear, logarithmic).
.. py:method:: ColorSpace.__init__(*args, **kwargs)
:module: PyOpenColorIO
Overloaded function.
1. __init__(self: PyOpenColorIO.ColorSpace) -> None
2. __init__(self: PyOpenColorIO.ColorSpace, referenceSpace: PyOpenColorIO.ReferenceSpaceType) -> None
3. __init__(self: PyOpenColorIO.ColorSpace, referenceSpace: PyOpenColorIO.ReferenceSpaceType = <ReferenceSpaceType.REFERENCE_SPACE_SCENE: 0>, name: str = '', aliases: List[str] = [], family: str = '', encoding: str = '', equalityGroup: str = '', description: str = '', bitDepth: PyOpenColorIO.BitDepth = <BitDepth.BIT_DEPTH_UNKNOWN: 0>, isData: bool = False, allocation: PyOpenColorIO.Allocation = <Allocation.ALLOCATION_UNIFORM: 1>, allocationVars: List[float] = [], toReference: PyOpenColorIO.Transform = None, fromReference: PyOpenColorIO.Transform = None, categories: List[str] = []) -> None
.. py:method:: ColorSpace.addAlias(self: PyOpenColorIO.ColorSpace, alias: str) -> None
:module: PyOpenColorIO
Add an alias for the color space name (the aliases may be used as a synonym for the name). Nothing will be added if the alias is already the color space name, one of its aliases, or the argument is null. The aliases must not conflict with existing roles, color space names, named transform names, or other aliases. This is verified when adding the color space to the config.
.. py:method:: ColorSpace.addCategory(self: PyOpenColorIO.ColorSpace, category: str) -> None
:module: PyOpenColorIO
Add a single category.
.. note::
Will do nothing if the category already exists.
.. py:method:: ColorSpace.clearAliases(self: PyOpenColorIO.ColorSpace) -> None
:module: PyOpenColorIO
.. py:method:: ColorSpace.clearCategories(self: PyOpenColorIO.ColorSpace) -> None
:module: PyOpenColorIO
Clear all the categories.
.. py:method:: ColorSpace.getAliases(self: PyOpenColorIO.ColorSpace) -> PyOpenColorIO.ColorSpace.ColorSpaceAliasIterator
:module: PyOpenColorIO
.. py:method:: ColorSpace.getAllocation(self: PyOpenColorIO.ColorSpace) -> PyOpenColorIO.Allocation
:module: PyOpenColorIO
*Allocation*
If this colorspace needs to be transferred to a limited dynamic range coding space (such as during display with a GPU path), use this allocation to maximize bit efficiency.
.. py:method:: ColorSpace.getAllocationVars(self: PyOpenColorIO.ColorSpace) -> List[float]
:module: PyOpenColorIO
.. py:method:: ColorSpace.getBitDepth(self: PyOpenColorIO.ColorSpace) -> PyOpenColorIO.BitDepth
:module: PyOpenColorIO
.. py:method:: ColorSpace.getCategories(self: PyOpenColorIO.ColorSpace) -> PyOpenColorIO.ColorSpace.ColorSpaceCategoryIterator
:module: PyOpenColorIO
.. py:method:: ColorSpace.getDescription(self: PyOpenColorIO.ColorSpace) -> str
:module: PyOpenColorIO
.. py:method:: ColorSpace.getEncoding(self: PyOpenColorIO.ColorSpace) -> str
:module: PyOpenColorIO
*Encodings*
It is sometimes useful for applications to group color spaces based on how the color values are digitally encoded. For example, images in scene-linear, logarithmic, video, and data color spaces could have different default views. Unlike the Family and EqualityGroup attributes of a color space, the list of Encodings is predefined in the OCIO documentation (rather than being config-specific) to make it easier for applications to utilize.
Here is an example config entry that could appear under a :ref:`ColorSpace`:
.. code-block:: cpp
encoding: scene-linear
Encoding strings are not case-sensitive. Although users may add their own encodings, the strings will typically come from a fixed set listed in the documentation (similar to roles).
.. py:method:: ColorSpace.getEqualityGroup(self: PyOpenColorIO.ColorSpace) -> str
:module: PyOpenColorIO
Get the :ref:`ColorSpace` group name (used for equality comparisons) This allows no-op transforms between different colorspaces. If an equalityGroup is not defined (an empty string), it will be considered unique (i.e., it will not compare as equal to other ColorSpaces with an empty equality group).
.. py:method:: ColorSpace.getFamily(self: PyOpenColorIO.ColorSpace) -> str
:module: PyOpenColorIO
Get the family, for use in user interfaces (optional) The family string could use a '/' separator to indicate levels to be used by hierarchical menus.
.. py:method:: ColorSpace.getName(self: PyOpenColorIO.ColorSpace) -> str
:module: PyOpenColorIO
.. py:method:: ColorSpace.getReferenceSpaceType(self: PyOpenColorIO.ColorSpace) -> PyOpenColorIO.ReferenceSpaceType
:module: PyOpenColorIO
A display color space will use the display-referred reference space.
.. py:method:: ColorSpace.getTransform(self: PyOpenColorIO.ColorSpace, direction: PyOpenColorIO.ColorSpaceDirection) -> PyOpenColorIO.Transform
:module: PyOpenColorIO
*:ref:`Transform`*
If a transform in the specified direction has been specified, return it. Otherwise return a null ConstTransformRcPtr
.. py:method:: ColorSpace.hasCategory(self: PyOpenColorIO.ColorSpace, category: str) -> bool
:module: PyOpenColorIO
Return true if the category is present.
A category is used to allow applications to filter the list of color spaces they display in menus based on what that color space is used for.
Here is an example config entry that could appear under a :ref:`ColorSpace`:
.. code-block:: cpp
categories: [ file-io, working-space, basic-3d ]
The example contains three categories: 'file-io', 'working-space' and 'basic-3d'.
.. note::
Category strings are not case-sensitive and the order is not significant.
There is no limit imposed on length or number. Although users may add their own categories, the strings will typically come from a fixed set listed in the documentation (similar to roles).
.. py:method:: ColorSpace.isData(self: PyOpenColorIO.ColorSpace) -> bool
:module: PyOpenColorIO
*Data*
ColorSpaces that are data are treated a bit special. Basically, any colorspace transforms you try to apply to them are ignored. (Think of applying a gamut mapping transform to an ID pass). However, the setDataBypass method on :ref:`ColorSpaceTransform` and :ref:`DisplayViewTransform` allow applications to process data when necessary. (Think of sending mattes to an HDR monitor.)
This is traditionally used for pixel data that represents non-color pixel data, such as normals, point positions, ID information, etc.
.. py:method:: ColorSpace.removeAlias(self: PyOpenColorIO.ColorSpace, alias: str) -> None
:module: PyOpenColorIO
Does nothing if alias is not present.
.. py:method:: ColorSpace.removeCategory(self: PyOpenColorIO.ColorSpace, category: str) -> None
:module: PyOpenColorIO
Remove a category.
.. note::
Will do nothing if the category is missing.
.. py:method:: ColorSpace.setAllocation(self: PyOpenColorIO.ColorSpace, allocation: PyOpenColorIO.Allocation) -> None
:module: PyOpenColorIO
.. py:method:: ColorSpace.setAllocationVars(self: PyOpenColorIO.ColorSpace, vars: List[float]) -> None
:module: PyOpenColorIO
.. py:method:: ColorSpace.setBitDepth(self: PyOpenColorIO.ColorSpace, bitDepth: PyOpenColorIO.BitDepth) -> None
:module: PyOpenColorIO
.. py:method:: ColorSpace.setDescription(self: PyOpenColorIO.ColorSpace, description: str) -> None
:module: PyOpenColorIO
.. py:method:: ColorSpace.setEncoding(self: PyOpenColorIO.ColorSpace, encoding: str) -> None
:module: PyOpenColorIO
.. py:method:: ColorSpace.setEqualityGroup(self: PyOpenColorIO.ColorSpace, equalityGroup: str) -> None
:module: PyOpenColorIO
.. py:method:: ColorSpace.setFamily(self: PyOpenColorIO.ColorSpace, family: str) -> None
:module: PyOpenColorIO
Set the family, for use in user interfaces (optional)
.. py:method:: ColorSpace.setIsData(self: PyOpenColorIO.ColorSpace, isData: bool) -> None
:module: PyOpenColorIO
.. py:method:: ColorSpace.setName(self: PyOpenColorIO.ColorSpace, name: str) -> None
:module: PyOpenColorIO
If the name is already an alias, that alias is removed.
.. py:method:: ColorSpace.setTransform(self: PyOpenColorIO.ColorSpace, transform: PyOpenColorIO.Transform, direction: PyOpenColorIO.ColorSpaceDirection) -> None
:module: PyOpenColorIO
Specify the transform for the appropriate direction. Setting the transform to null will clear it.
.. py:class:: ColorSpaceCategoryIterator
:module: PyOpenColorIO.ColorSpace
.. py:method:: ColorSpaceCategoryIterator.__getitem__(self: PyOpenColorIO.ColorSpace.ColorSpaceCategoryIterator, arg0: int) -> str
:module: PyOpenColorIO.ColorSpace
.. py:method:: ColorSpaceCategoryIterator.__iter__(self: PyOpenColorIO.ColorSpace.ColorSpaceCategoryIterator) -> PyOpenColorIO.ColorSpace.ColorSpaceCategoryIterator
:module: PyOpenColorIO.ColorSpace
.. py:method:: ColorSpaceCategoryIterator.__len__(self: PyOpenColorIO.ColorSpace.ColorSpaceCategoryIterator) -> int
:module: PyOpenColorIO.ColorSpace
.. py:method:: ColorSpaceCategoryIterator.__next__(self: PyOpenColorIO.ColorSpace.ColorSpaceCategoryIterator) -> str
:module: PyOpenColorIO.ColorSpace
.. py:class:: ColorSpaceAliasIterator
:module: PyOpenColorIO.ColorSpace
.. py:method:: ColorSpaceAliasIterator.__getitem__(self: PyOpenColorIO.ColorSpace.ColorSpaceAliasIterator, arg0: int) -> str
:module: PyOpenColorIO.ColorSpace
.. py:method:: ColorSpaceAliasIterator.__iter__(self: PyOpenColorIO.ColorSpace.ColorSpaceAliasIterator) -> PyOpenColorIO.ColorSpace.ColorSpaceAliasIterator
:module: PyOpenColorIO.ColorSpace
.. py:method:: ColorSpaceAliasIterator.__len__(self: PyOpenColorIO.ColorSpace.ColorSpaceAliasIterator) -> int
:module: PyOpenColorIO.ColorSpace
.. py:method:: ColorSpaceAliasIterator.__next__(self: PyOpenColorIO.ColorSpace.ColorSpaceAliasIterator) -> str
:module: PyOpenColorIO.ColorSpace
@@ -0,0 +1,30 @@
..
SPDX-License-Identifier: CC-BY-4.0
Copyright Contributors to the OpenColorIO Project.
Do not edit! This file was automatically generated by share/docs/frozendoc.py.
.. py:class:: ColorSpaceDirection
:module: PyOpenColorIO
Members:
COLORSPACE_DIR_TO_REFERENCE :
COLORSPACE_DIR_FROM_REFERENCE :
.. py:method:: name() -> str
:property:
.. py:attribute:: ColorSpaceDirection.COLORSPACE_DIR_FROM_REFERENCE
:module: PyOpenColorIO
:value: <ColorSpaceDirection.COLORSPACE_DIR_FROM_REFERENCE: 1>
.. py:attribute:: ColorSpaceDirection.COLORSPACE_DIR_TO_REFERENCE
:module: PyOpenColorIO
:value: <ColorSpaceDirection.COLORSPACE_DIR_TO_REFERENCE: 0>
.. py:property:: ColorSpaceDirection.value
:module: PyOpenColorIO
@@ -0,0 +1,12 @@
..
SPDX-License-Identifier: CC-BY-4.0
Copyright Contributors to the OpenColorIO Project.
Do not edit! This file was automatically generated by share/docs/frozendoc.py.
.. py:function:: AddColorSpace(config: PyOpenColorIO.Config, name: str, transformFilePath: str, categories: str = '', connectionColorSpaceName: str) -> None
:module: PyOpenColorIO.ColorSpaceHelpers
Add a new color space to the config instance. The output of the userTransform must be in the specified connectionColorSpace.
Note: If the config does not already use categories, we do not add them since that would make a big change to how existing color spaces show up in menus.
@@ -0,0 +1,92 @@
..
SPDX-License-Identifier: CC-BY-4.0
Copyright Contributors to the OpenColorIO Project.
Do not edit! This file was automatically generated by share/docs/frozendoc.py.
.. py:class:: ColorSpaceMenuHelper
:module: PyOpenColorIO
Helper class to create menus for the content of a config.
Menu can list color spaces, roles, named transforms. Each entry has a name, a UI name, a description, and a family. Family can also be accessed as hierarchy levels; levels are created by splitting the family using the 'family separator'. Hierarchy levels are meant to be used as sub-menus.
The UI name is what is intended to be put in application menus seen by the end-user. However, please note that the UI name is not guaranteed to remain stable between releases and so if applications need to save something it should be the 'name' rather than the 'UI name'. Currently, the only difference between the 'name' and 'UI name' is for roles.
The overall ordering of items is: color spaces, named transforms, roles, and additional color spaces. The display color spaces will either come before or after the other color spaces based on where that block of spaces appears in the config. The order of items returned by the menu helper preserves the order of items in the config itself for each type of elements, thus preserving the intent of the config author. For example, if you call getName at idx and idx+1, the name returned at idx+1 will be from farther down in the config than the one at idx as long as both are of the same type. (An application may ask for only the items in one of those blocks if it wants to handle them separately.) If the application makes use of hierarchical menus, that will obviously impose a different order on what the user sees in the menu. Though even with hierarchical menus, applications should try to preserve config ordering (which is equivalent to index ordering) for items within the same sub-menu.
.. py:method:: ColorSpaceMenuHelper.__init__(self: PyOpenColorIO.ColorSpaceMenuHelper, parameters: PyOpenColorIO.ColorSpaceMenuParameters) -> None
:module: PyOpenColorIO
.. py:method:: ColorSpaceMenuHelper.getDescription(self: PyOpenColorIO.ColorSpaceMenuHelper, index: int) -> str
:module: PyOpenColorIO
.. py:method:: ColorSpaceMenuHelper.getFamily(self: PyOpenColorIO.ColorSpaceMenuHelper, index: int) -> str
:module: PyOpenColorIO
.. py:method:: ColorSpaceMenuHelper.getHierarchyLevels(self: PyOpenColorIO.ColorSpaceMenuHelper, index: int) -> PyOpenColorIO.ColorSpaceMenuHelper.ColorSpaceLevelIterator
:module: PyOpenColorIO
.. py:method:: ColorSpaceMenuHelper.getIndexFromName(self: PyOpenColorIO.ColorSpaceMenuHelper, name: str) -> int
:module: PyOpenColorIO
Get the index of the element of a given name. Return (size_t)-1 name if NULL or empty, or if no element with that name is found.
.. py:method:: ColorSpaceMenuHelper.getIndexFromUIName(self: PyOpenColorIO.ColorSpaceMenuHelper, name: str) -> int
:module: PyOpenColorIO
.. py:method:: ColorSpaceMenuHelper.getName(self: PyOpenColorIO.ColorSpaceMenuHelper, index: int) -> str
:module: PyOpenColorIO
Get the color space (or role) name used in the config for this menu item. Will be empty if the index is out of range.
.. py:method:: ColorSpaceMenuHelper.getNameFromUIName(self: PyOpenColorIO.ColorSpaceMenuHelper, name: str) -> str
:module: PyOpenColorIO
Get the color space name from the UI name.
.. py:method:: ColorSpaceMenuHelper.getNumColorSpaces(self: PyOpenColorIO.ColorSpaceMenuHelper) -> int
:module: PyOpenColorIO
Access to the color spaces (or roles).
.. py:method:: ColorSpaceMenuHelper.getUIName(self: PyOpenColorIO.ColorSpaceMenuHelper, index: int) -> str
:module: PyOpenColorIO
Get the name to use in the menu UI. This might be different from the config name, for example in the case of roles. Will be empty if the index is out of range.
.. py:method:: ColorSpaceMenuHelper.getUINameFromName(self: PyOpenColorIO.ColorSpaceMenuHelper, name: str) -> str
:module: PyOpenColorIO
Get the color space UI name from the name.
.. py:class:: ColorSpaceLevelIterator
:module: PyOpenColorIO.ColorSpaceMenuHelper
.. py:method:: ColorSpaceLevelIterator.__getitem__(self: PyOpenColorIO.ColorSpaceMenuHelper.ColorSpaceLevelIterator, arg0: int) -> str
:module: PyOpenColorIO.ColorSpaceMenuHelper
.. py:method:: ColorSpaceLevelIterator.__iter__(self: PyOpenColorIO.ColorSpaceMenuHelper.ColorSpaceLevelIterator) -> PyOpenColorIO.ColorSpaceMenuHelper.ColorSpaceLevelIterator
:module: PyOpenColorIO.ColorSpaceMenuHelper
.. py:method:: ColorSpaceLevelIterator.__len__(self: PyOpenColorIO.ColorSpaceMenuHelper.ColorSpaceLevelIterator) -> int
:module: PyOpenColorIO.ColorSpaceMenuHelper
.. py:method:: ColorSpaceLevelIterator.__next__(self: PyOpenColorIO.ColorSpaceMenuHelper.ColorSpaceLevelIterator) -> str
:module: PyOpenColorIO.ColorSpaceMenuHelper
@@ -0,0 +1,166 @@
..
SPDX-License-Identifier: CC-BY-4.0
Copyright Contributors to the OpenColorIO Project.
Do not edit! This file was automatically generated by share/docs/frozendoc.py.
.. py:class:: ColorSpaceMenuParameters
:module: PyOpenColorIO
Parameters controlling which color spaces appear in menus.
The :ref:`ColorSpaceMenuHelper` class is intended to be used by applications to get the list of items to show in color space menus.
The :ref:`ColorSpaceMenuParameters` class is used to configure the behavior as needed for any given menu. Here is the algorithm used to produce a list of "items" (or strings) that will appear in a menu:
1) Use setRole to identify a role that controls a given menu. If the config has this role, then only that color space is returned. The name is set to the color space name, the UIName is presented as "<role name> (<color space name>)". It may be useful for the application to then grey-out the menu or otherwise indicate to the user that the value for this menu is not user selectable since it was pre-determined by the config. If the config does not have that role, the algorithm continues to the remaining steps.
2) The IncludeColorSpaces, SearchReferenceSpaceType, and IncludeNamedTransforms parameters are used to identify a set of items from the config that are potential candidates for use in the menu, as follows:
- IncludeColorSpaces: Set to true to include color spaces in the menu.
- SearchReferenceSpaceType: Use this to control whether the menu should include all color spaces, only display color spaces, or only non-display color spaces.
- IncludeNamedTransforms: Set to true to include named transforms in the menu.
3) The set of items from step 2 is then filtered in step 3 using the following parameters:
- AppCategories: A list of strings specified by the application based on the purpose of the menu. For example, if the menu is used to select a color space for importing an image, the application might specify the 'file-io' category, whereas if it is to select a working color space, it might specify the 'working-space' category. Application developers should document what strings they are using for each menu so that config authors know what categories to use in their configs. Alternatively, an application could let advanced users customize the string to use for a given menu in the application.
- Encodings: A list of strings used to further refine the items selected from the AppCategories. For example, an application might specify 'working-space' as the category and then specify 'scene-linear' as the encoding to only use items that have both of those properties (e.g., only select scene-linear working color spaces).
- UserCategories: A list of strings specified by the end-user of the application. OCIO will check for these strings in an environment variable, or they may be passed in from the application.
Basically the intent is for the filtering to return the intersection of the app categories, encoding, and user categories. However, some fall-backs are in place to ensure that the filtering does not remove all menu items. Here is the detailed description:
3a) The items from step 2 are filtered to generate a list of appItems containing only the ones that contain at least one of the AppCategories strings in their "categories" property and one of the encodings in their "encoding" property. If this list is empty, an attempt is made to generate a non-empty appItems list by only filtering by AppCategories. If that is empty, an attempt is made to only filter by Encodings.
3b) The items from step 2 are filtered to generate a list of userItems containing only the ones that have at least one of the UserCategories strings in their "categories" property.
3c) If both appItems and userItems are non-empty, a list of resultItems will be generated as the intersection of those two lists.
3d) If the resultItems list is empty, the appList will be expanded by only filtering by AppCategories and not encodings. The resultItems will be formed again as the intersection of the appItems and userItems.
3e) If the resultItems is still empty, it will be set to just the appItems from step 3a.
3f) If the resultItems is still empty, it will be set to just the userItems.
3g) If the resultItems is still empty, the items are not filtered and all items from step 2 are returned. The rationale is that if step 2 has produced any items, it is not acceptable for step 3 to remove all of them. An application usually expects to have a non-zero number of items to display in the menu. However, if step 2 produces no items (e.g. the application requests only named transforms and the config has no named transform), then no items will be returned.
4) If IncludeRoles is true, the items from step 3 are extended by including an item for each role. The name is set to the role name, the UIName is presented as "<role name> (<color
space name>)", and the family is set to "Roles".
5) If AddColorSpace has been used to add any additional items, these are appended to the final list.
.. py:method:: ColorSpaceMenuParameters.__init__(*args, **kwargs)
:module: PyOpenColorIO
Overloaded function.
1. __init__(self: PyOpenColorIO.ColorSpaceMenuParameters, config: PyOpenColorIO.Config) -> None
2. __init__(self: PyOpenColorIO.ColorSpaceMenuParameters, config: PyOpenColorIO.Config, role: str = '', includeColorSpaces: bool = True, searchReferenceSpaceType: PyOpenColorIO.SearchReferenceSpaceType = <SearchReferenceSpaceType.SEARCH_REFERENCE_SPACE_ALL: 2>, includeNamedTransforms: bool = False, appCategories: str = '', encodings: str = '', userCategories: str = '', includeRoles: bool = False) -> None
.. py:method:: ColorSpaceMenuParameters.addColorSpace(self: PyOpenColorIO.ColorSpaceMenuParameters, colorSpace: str) -> None
:module: PyOpenColorIO
Add an additional color space (or named transform) to the menu.
Note that an additional color space could be:
- an inactive color space,
- an active color space not having at least one of the selected categories,
- a newly created color space. Will throw when creating the menu if color space is not part of the config. Nothing is done if it is already part of the menu. It's ok to call this multiple times with the same color space, it will only be added to the menu once. If a role name is passed in, the name in the menu will be the color space name the role points to.
.. py:method:: ColorSpaceMenuParameters.clearAddedColorSpaces(self: PyOpenColorIO.ColorSpaceMenuParameters) -> None
:module: PyOpenColorIO
.. py:method:: ColorSpaceMenuParameters.getAddedColorSpaces(self: PyOpenColorIO.ColorSpaceMenuParameters) -> PyOpenColorIO.ColorSpaceMenuParameters.AddedColorSpaceIterator
:module: PyOpenColorIO
.. py:method:: ColorSpaceMenuParameters.getAppCategories(self: PyOpenColorIO.ColorSpaceMenuParameters) -> str
:module: PyOpenColorIO
.. py:method:: ColorSpaceMenuParameters.getConfig(self: PyOpenColorIO.ColorSpaceMenuParameters) -> PyOpenColorIO.Config
:module: PyOpenColorIO
.. py:method:: ColorSpaceMenuParameters.getEncodings(self: PyOpenColorIO.ColorSpaceMenuParameters) -> str
:module: PyOpenColorIO
.. py:method:: ColorSpaceMenuParameters.getIncludeColorSpaces(self: PyOpenColorIO.ColorSpaceMenuParameters) -> bool
:module: PyOpenColorIO
.. py:method:: ColorSpaceMenuParameters.getIncludeNamedTransforms(self: PyOpenColorIO.ColorSpaceMenuParameters) -> bool
:module: PyOpenColorIO
.. py:method:: ColorSpaceMenuParameters.getIncludeRoles(self: PyOpenColorIO.ColorSpaceMenuParameters) -> bool
:module: PyOpenColorIO
.. py:method:: ColorSpaceMenuParameters.getRole(self: PyOpenColorIO.ColorSpaceMenuParameters) -> str
:module: PyOpenColorIO
.. py:method:: ColorSpaceMenuParameters.getSearchReferenceSpaceType(self: PyOpenColorIO.ColorSpaceMenuParameters) -> PyOpenColorIO.SearchReferenceSpaceType
:module: PyOpenColorIO
Can be used to restrict the search using the ReferenceSpaceType of the color spaces. It has no effect on roles and named transforms.
.. py:method:: ColorSpaceMenuParameters.getUserCategories(self: PyOpenColorIO.ColorSpaceMenuParameters) -> str
:module: PyOpenColorIO
.. py:method:: ColorSpaceMenuParameters.setAppCategories(self: PyOpenColorIO.ColorSpaceMenuParameters, appCategories: str) -> None
:module: PyOpenColorIO
App categories is a comma separated list of categories. If appCategories is not NULL and not empty, all color spaces that have one of the categories will be part of the menu.
.. py:method:: ColorSpaceMenuParameters.setConfig(self: PyOpenColorIO.ColorSpaceMenuParameters, config: PyOpenColorIO.Config) -> None
:module: PyOpenColorIO
:ref:`Config` is required to be able to create a :ref:`ColorSpaceMenuHelper`.
.. py:method:: ColorSpaceMenuParameters.setEncodings(self: PyOpenColorIO.ColorSpaceMenuParameters, encodings: str) -> None
:module: PyOpenColorIO
Encodings is a comma separated list of encodings. When not empty, is retricting the search to color spaces that are using one of the encodings.
.. py:method:: ColorSpaceMenuParameters.setIncludeColorSpaces(self: PyOpenColorIO.ColorSpaceMenuParameters, includeColorSpaces: bool = True) -> None
:module: PyOpenColorIO
Include all color spaces (or not) to :ref:`ColorSpaceMenuHelper`. Default is to include color spaces.
.. py:method:: ColorSpaceMenuParameters.setIncludeNamedTransforms(self: PyOpenColorIO.ColorSpaceMenuParameters, includeNamedTransforms: bool = True) -> None
:module: PyOpenColorIO
Include all named transforms (or not) to :ref:`ColorSpaceMenuHelper`. Default is not to include named transforms.
.. py:method:: ColorSpaceMenuParameters.setIncludeRoles(self: PyOpenColorIO.ColorSpaceMenuParameters, includeRoles: bool = True) -> None
:module: PyOpenColorIO
Include all roles (or not) to :ref:`ColorSpaceMenuHelper`. Default is not to include roles. Roles are added after color spaces with an single hierarchy level named "Roles".
.. py:method:: ColorSpaceMenuParameters.setRole(self: PyOpenColorIO.ColorSpaceMenuParameters, role: str) -> None
:module: PyOpenColorIO
If role is a valid role, other parameters are ignored and menu will contain only that role.
.. py:method:: ColorSpaceMenuParameters.setSearchReferenceSpaceType(self: PyOpenColorIO.ColorSpaceMenuParameters, searchReferenceSpaceType: PyOpenColorIO.SearchReferenceSpaceType) -> None
:module: PyOpenColorIO
.. py:method:: ColorSpaceMenuParameters.setUserCategories(self: PyOpenColorIO.ColorSpaceMenuParameters, categories: str) -> None
:module: PyOpenColorIO
User categories is a comma separated list of categories. If OCIO_USER_CATEGORIES_ENVVAR env. variable is defined and not empty, this parameter is ignored and the value of the env. variable is used for user categories.
@@ -0,0 +1,159 @@
..
SPDX-License-Identifier: CC-BY-4.0
Copyright Contributors to the OpenColorIO Project.
Do not edit! This file was automatically generated by share/docs/frozendoc.py.
.. py:class:: ColorSpaceSet
:module: PyOpenColorIO
The *:ref:`ColorSpaceSet`* is a set of color spaces (i.e. no color space duplication) which could be the result of :ref:`Config::getColorSpaces` or built from scratch.
.. note::
The color spaces are decoupled from the config ones, i.e., any changes to the set itself or to its color spaces do not affect the original color spaces from the configuration. If needed, use :ref:`Config::addColorSpace` to update the configuration.
.. py:method:: ColorSpaceSet.__and__(self: PyOpenColorIO.ColorSpaceSet, arg0: PyOpenColorIO.ColorSpaceSet) -> PyOpenColorIO.ColorSpaceSet
:module: PyOpenColorIO
Perform the intersection of two sets.
.. note::
This function provides operations on two color space sets where the result contains copied color spaces and no duplicates.
:param lcss:
:param rcss:
.. py:method:: ColorSpaceSet.__eq__(self: PyOpenColorIO.ColorSpaceSet, arg0: PyOpenColorIO.ColorSpaceSet) -> bool
:module: PyOpenColorIO
Return true if the two sets are equal.
.. note::
The comparison is done on the color space names (not a deep comparison).
.. py:method:: ColorSpaceSet.__init__(self: PyOpenColorIO.ColorSpaceSet) -> None
:module: PyOpenColorIO
Create an empty set of color spaces.
.. py:method:: ColorSpaceSet.__ne__(self: PyOpenColorIO.ColorSpaceSet, arg0: PyOpenColorIO.ColorSpaceSet) -> bool
:module: PyOpenColorIO
Return true if the two sets are different.
.. py:method:: ColorSpaceSet.__or__(self: PyOpenColorIO.ColorSpaceSet, arg0: PyOpenColorIO.ColorSpaceSet) -> PyOpenColorIO.ColorSpaceSet
:module: PyOpenColorIO
Perform the union of two sets.
.. note::
This function provides operations on two color space sets where the result contains copied color spaces and no duplicates.
:param lcss:
:param rcss:
.. py:method:: ColorSpaceSet.__sub__(self: PyOpenColorIO.ColorSpaceSet, arg0: PyOpenColorIO.ColorSpaceSet) -> PyOpenColorIO.ColorSpaceSet
:module: PyOpenColorIO
Perform the difference of two sets.
.. note::
This function provides operations on two color space sets where the result contains copied color spaces and no duplicates.
:param lcss:
:param rcss:
.. py:method:: ColorSpaceSet.addColorSpace(self: PyOpenColorIO.ColorSpaceSet, colorSpace: PyOpenColorIO.ColorSpace) -> None
:module: PyOpenColorIO
Add color space(s).
.. note::
If another color space is already registered with the same name, this will overwrite it. This stores a copy of the specified color space(s). Throws if one of the aliases is already assigned as a name or alias to an existing color space.
.. py:method:: ColorSpaceSet.addColorSpaces(self: PyOpenColorIO.ColorSpaceSet, colorSpaces: PyOpenColorIO.ColorSpaceSet) -> None
:module: PyOpenColorIO
.. py:method:: ColorSpaceSet.clearColorSpaces(self: PyOpenColorIO.ColorSpaceSet) -> None
:module: PyOpenColorIO
Clear all color spaces.
.. py:method:: ColorSpaceSet.getColorSpace(self: PyOpenColorIO.ColorSpaceSet, name: str) -> PyOpenColorIO.ColorSpace
:module: PyOpenColorIO
.. note::
Only accepts color space names (i.e. no role name).
Will return null if the name is not found.
.. py:method:: ColorSpaceSet.getColorSpaceNames(self: PyOpenColorIO.ColorSpaceSet) -> PyOpenColorIO.ColorSpaceSet.ColorSpaceNameIterator
:module: PyOpenColorIO
.. py:method:: ColorSpaceSet.getColorSpaces(self: PyOpenColorIO.ColorSpaceSet) -> PyOpenColorIO.ColorSpaceSet.ColorSpaceIterator
:module: PyOpenColorIO
.. py:method:: ColorSpaceSet.removeColorSpace(self: PyOpenColorIO.ColorSpaceSet, colorSpace: str) -> None
:module: PyOpenColorIO
Remove color space(s) using color space names (i.e. no role name).
.. note::
The removal of a missing color space does nothing.
.. py:method:: ColorSpaceSet.removeColorSpaces(self: PyOpenColorIO.ColorSpaceSet, colorSpaces: PyOpenColorIO.ColorSpaceSet) -> None
:module: PyOpenColorIO
.. py:class:: ColorSpaceNameIterator
:module: PyOpenColorIO.ColorSpaceSet
.. py:method:: ColorSpaceNameIterator.__getitem__(self: PyOpenColorIO.ColorSpaceSet.ColorSpaceNameIterator, arg0: int) -> str
:module: PyOpenColorIO.ColorSpaceSet
.. py:method:: ColorSpaceNameIterator.__iter__(self: PyOpenColorIO.ColorSpaceSet.ColorSpaceNameIterator) -> PyOpenColorIO.ColorSpaceSet.ColorSpaceNameIterator
:module: PyOpenColorIO.ColorSpaceSet
.. py:method:: ColorSpaceNameIterator.__len__(self: PyOpenColorIO.ColorSpaceSet.ColorSpaceNameIterator) -> int
:module: PyOpenColorIO.ColorSpaceSet
.. py:method:: ColorSpaceNameIterator.__next__(self: PyOpenColorIO.ColorSpaceSet.ColorSpaceNameIterator) -> str
:module: PyOpenColorIO.ColorSpaceSet
.. py:class:: ColorSpaceIterator
:module: PyOpenColorIO.ColorSpaceSet
.. py:method:: ColorSpaceIterator.__getitem__(self: PyOpenColorIO.ColorSpaceSet.ColorSpaceIterator, arg0: int) -> PyOpenColorIO.ColorSpace
:module: PyOpenColorIO.ColorSpaceSet
.. py:method:: ColorSpaceIterator.__iter__(self: PyOpenColorIO.ColorSpaceSet.ColorSpaceIterator) -> PyOpenColorIO.ColorSpaceSet.ColorSpaceIterator
:module: PyOpenColorIO.ColorSpaceSet
.. py:method:: ColorSpaceIterator.__len__(self: PyOpenColorIO.ColorSpaceSet.ColorSpaceIterator) -> int
:module: PyOpenColorIO.ColorSpaceSet
.. py:method:: ColorSpaceIterator.__next__(self: PyOpenColorIO.ColorSpaceSet.ColorSpaceIterator) -> PyOpenColorIO.ColorSpace
:module: PyOpenColorIO.ColorSpaceSet
@@ -0,0 +1,64 @@
..
SPDX-License-Identifier: CC-BY-4.0
Copyright Contributors to the OpenColorIO Project.
Do not edit! This file was automatically generated by share/docs/frozendoc.py.
.. py:class:: ColorSpaceTransform
:module: PyOpenColorIO
.. py:method:: ColorSpaceTransform.__init__(*args, **kwargs)
:module: PyOpenColorIO
Overloaded function.
1. __init__(self: PyOpenColorIO.ColorSpaceTransform) -> None
2. __init__(self: PyOpenColorIO.ColorSpaceTransform, src: str = '', dst: str = '', direction: PyOpenColorIO.TransformDirection = <TransformDirection.TRANSFORM_DIR_FORWARD: 0>, dataBypass: bool = True) -> None
.. py:method:: ColorSpaceTransform.getDataBypass(self: PyOpenColorIO.ColorSpaceTransform) -> bool
:module: PyOpenColorIO
Data color spaces do not get processed when true (which is the default).
.. py:method:: ColorSpaceTransform.getDirection(self: PyOpenColorIO.Transform) -> PyOpenColorIO.TransformDirection
:module: PyOpenColorIO
.. py:method:: ColorSpaceTransform.getDst(self: PyOpenColorIO.ColorSpaceTransform) -> str
:module: PyOpenColorIO
.. py:method:: ColorSpaceTransform.getSrc(self: PyOpenColorIO.ColorSpaceTransform) -> str
:module: PyOpenColorIO
.. py:method:: ColorSpaceTransform.getTransformType(self: PyOpenColorIO.Transform) -> PyOpenColorIO.TransformType
:module: PyOpenColorIO
.. py:method:: ColorSpaceTransform.setDataBypass(self: PyOpenColorIO.ColorSpaceTransform, dataBypass: bool) -> None
:module: PyOpenColorIO
.. py:method:: ColorSpaceTransform.setDirection(self: PyOpenColorIO.Transform, direction: PyOpenColorIO.TransformDirection) -> None
:module: PyOpenColorIO
Note that this only affects the evaluation and not the values stored in the object.
.. py:method:: ColorSpaceTransform.setDst(self: PyOpenColorIO.ColorSpaceTransform, dst: str) -> None
:module: PyOpenColorIO
.. py:method:: ColorSpaceTransform.setSrc(self: PyOpenColorIO.ColorSpaceTransform, src: str) -> None
:module: PyOpenColorIO
.. py:method:: ColorSpaceTransform.validate(self: PyOpenColorIO.Transform) -> None
:module: PyOpenColorIO
Will throw if data is not valid.
@@ -0,0 +1,37 @@
..
SPDX-License-Identifier: CC-BY-4.0
Copyright Contributors to the OpenColorIO Project.
Do not edit! This file was automatically generated by share/docs/frozendoc.py.
.. py:class:: ColorSpaceVisibility
:module: PyOpenColorIO
Members:
COLORSPACE_ACTIVE :
COLORSPACE_INACTIVE :
COLORSPACE_ALL :
.. py:method:: name() -> str
:property:
.. py:attribute:: ColorSpaceVisibility.COLORSPACE_ACTIVE
:module: PyOpenColorIO
:value: <ColorSpaceVisibility.COLORSPACE_ACTIVE: 0>
.. py:attribute:: ColorSpaceVisibility.COLORSPACE_ALL
:module: PyOpenColorIO
:value: <ColorSpaceVisibility.COLORSPACE_ALL: 2>
.. py:attribute:: ColorSpaceVisibility.COLORSPACE_INACTIVE
:module: PyOpenColorIO
:value: <ColorSpaceVisibility.COLORSPACE_INACTIVE: 1>
.. py:property:: ColorSpaceVisibility.value
:module: PyOpenColorIO
@@ -0,0 +1,8 @@
..
SPDX-License-Identifier: CC-BY-4.0
Copyright Contributors to the OpenColorIO Project.
Do not edit! This file was automatically generated by share/docs/frozendoc.py.
.. py:function:: CombineTransformDirections(direction1: PyOpenColorIO.TransformDirection, direction2: PyOpenColorIO.TransformDirection) -> PyOpenColorIO.TransformDirection
:module: PyOpenColorIO
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,191 @@
..
SPDX-License-Identifier: CC-BY-4.0
Copyright Contributors to the OpenColorIO Project.
Do not edit! This file was automatically generated by share/docs/frozendoc.py.
.. py:class:: Context
:module: PyOpenColorIO
:ref:`Context`
A context defines some overrides to a :ref:`Config`. For example, it can override the search path or change the value of a context variable.
.. note::
Only some :ref:`Config::getProcessor` methods accept a custom context; otherwise, the default context instance is used (see Config::getCurrentContext).
:ref:`Context` Variables
The context variables allow changes at runtime using environment variables. For example, a color space name (such as src & dst for the :ref:`ColorSpaceTransform`) or a file name (such as LUT file name for the :ref:`FileTransform`) could be defined by context variables. The color transformation is then customized based on some environment variables.
In a config the context variables support three syntaxes (i.e. ${VAR}, $VAR and VAR%) and the parsing starts from longest to shortest. So, the resolve works like '$TEST_$TESTING_$TE' expands in this order '2 1 3'.
:ref:`Config` authors are recommended to include the "environment" section in their configs. This improves performance as well as making the config more readable. When present, this section must declare all context variables used in the config. It may also provide a default value, in case the variable is not present in the user's environment.
A context variable may only be used in the following places:
- the `:ref:`ColorSpaceTransform`` to define the source and the destination color space names,
- the `:ref:`FileTransform`` to define the source file name (e.g. a LUT file name),
- the search_path,
- the cccid of the `:ref:`FileTransform`` to only extract one specific transform from the CDL & CCC files.
Some specific restrictions are worth calling out:
- they cannot be used as either the name or value of a role,
- the context variable characters $ and % are prohibited in a color space name.
.. py:method:: Context.__init__(*args, **kwargs)
:module: PyOpenColorIO
Overloaded function.
1. __init__(self: PyOpenColorIO.Context) -> None
2. __init__(self: PyOpenColorIO.Context, workingDir: str = '', searchPaths: List[str] = [], stringVars: Dict[str, str] = {}, environmentMode: PyOpenColorIO.EnvironmentMode = <EnvironmentMode.ENV_ENVIRONMENT_LOAD_PREDEFINED: 1>) -> None
.. py:method:: Context.addSearchPath(self: PyOpenColorIO.Context, path: str) -> None
:module: PyOpenColorIO
.. py:method:: Context.clearSearchPaths(self: PyOpenColorIO.Context) -> None
:module: PyOpenColorIO
.. py:method:: Context.clearStringVars(self: PyOpenColorIO.Context) -> None
:module: PyOpenColorIO
.. py:method:: Context.getCacheID(self: PyOpenColorIO.Context) -> str
:module: PyOpenColorIO
.. py:method:: Context.getEnvironmentMode(self: PyOpenColorIO.Context) -> PyOpenColorIO.EnvironmentMode
:module: PyOpenColorIO
.. py:method:: Context.getSearchPath(self: PyOpenColorIO.Context) -> str
:module: PyOpenColorIO
.. py:method:: Context.getSearchPaths(self: PyOpenColorIO.Context) -> PyOpenColorIO.Context.SearchPathIterator
:module: PyOpenColorIO
.. py:method:: Context.getStringVars(self: PyOpenColorIO.Context) -> PyOpenColorIO.Context.StringVarIterator
:module: PyOpenColorIO
.. py:method:: Context.getWorkingDir(self: PyOpenColorIO.Context) -> str
:module: PyOpenColorIO
.. py:method:: Context.loadEnvironment(self: PyOpenColorIO.Context) -> None
:module: PyOpenColorIO
Seed all string vars with the current environment.
.. py:method:: Context.resolveFileLocation(*args, **kwargs)
:module: PyOpenColorIO
Overloaded function.
1. resolveFileLocation(self: PyOpenColorIO.Context, filename: str) -> str
Build the resolved and expanded filepath using the search_path when needed, and check if the filepath exists. If it cannot be resolved or found, an exception will be thrown. The method argument is directly from the config file so it can be an absolute or relative file path or a file name.
.. note::
The filepath existence check could add a performance hit.
.. note::
The context variable resolution is performed using :cpp:func:`resolveStringVar`.
2. resolveFileLocation(self: PyOpenColorIO.Context, filename: str, usedContextVars: PyOpenColorIO.Context) -> str
Build the resolved and expanded filepath and return all the context variables used to resolve the filename (empty if no context variables were used).
.. py:method:: Context.resolveStringVar(*args, **kwargs)
:module: PyOpenColorIO
Overloaded function.
1. resolveStringVar(self: PyOpenColorIO.Context, string: str) -> str
Resolve all the context variables from the string. It could be color space names or file names. Note that it recursively applies the context variable resolution. Returns the string unchanged if it does not contain any context variable.
2. resolveStringVar(self: PyOpenColorIO.Context, string: str, usedContextVars: PyOpenColorIO.Context) -> str
Resolve all the context variables from the string and return all the context variables used to resolve the string (empty if no context variables were used).
.. py:method:: Context.setEnvironmentMode(self: PyOpenColorIO.Context, mode: PyOpenColorIO.EnvironmentMode) -> None
:module: PyOpenColorIO
.. py:method:: Context.setSearchPath(self: PyOpenColorIO.Context, path: str) -> None
:module: PyOpenColorIO
.. py:method:: Context.setWorkingDir(self: PyOpenColorIO.Context, dirName: str) -> None
:module: PyOpenColorIO
.. py:class:: StringVarNameIterator
:module: PyOpenColorIO.Context
.. py:method:: StringVarNameIterator.__getitem__(self: PyOpenColorIO.Context.StringVarNameIterator, arg0: int) -> str
:module: PyOpenColorIO.Context
.. py:method:: StringVarNameIterator.__iter__(self: PyOpenColorIO.Context.StringVarNameIterator) -> PyOpenColorIO.Context.StringVarNameIterator
:module: PyOpenColorIO.Context
.. py:method:: StringVarNameIterator.__len__(self: PyOpenColorIO.Context.StringVarNameIterator) -> int
:module: PyOpenColorIO.Context
.. py:method:: StringVarNameIterator.__next__(self: PyOpenColorIO.Context.StringVarNameIterator) -> str
:module: PyOpenColorIO.Context
.. py:class:: StringVarIterator
:module: PyOpenColorIO.Context
.. py:method:: StringVarIterator.__getitem__(self: PyOpenColorIO.Context.StringVarIterator, arg0: int) -> tuple
:module: PyOpenColorIO.Context
.. py:method:: StringVarIterator.__iter__(self: PyOpenColorIO.Context.StringVarIterator) -> PyOpenColorIO.Context.StringVarIterator
:module: PyOpenColorIO.Context
.. py:method:: StringVarIterator.__len__(self: PyOpenColorIO.Context.StringVarIterator) -> int
:module: PyOpenColorIO.Context
.. py:method:: StringVarIterator.__next__(self: PyOpenColorIO.Context.StringVarIterator) -> tuple
:module: PyOpenColorIO.Context
.. py:class:: SearchPathIterator
:module: PyOpenColorIO.Context
.. py:method:: SearchPathIterator.__getitem__(self: PyOpenColorIO.Context.SearchPathIterator, arg0: int) -> str
:module: PyOpenColorIO.Context
.. py:method:: SearchPathIterator.__iter__(self: PyOpenColorIO.Context.SearchPathIterator) -> PyOpenColorIO.Context.SearchPathIterator
:module: PyOpenColorIO.Context
.. py:method:: SearchPathIterator.__len__(self: PyOpenColorIO.Context.SearchPathIterator) -> int
:module: PyOpenColorIO.Context
.. py:method:: SearchPathIterator.__next__(self: PyOpenColorIO.Context.SearchPathIterator) -> str
:module: PyOpenColorIO.Context
@@ -0,0 +1,182 @@
..
SPDX-License-Identifier: CC-BY-4.0
Copyright Contributors to the OpenColorIO Project.
Do not edit! This file was automatically generated by share/docs/frozendoc.py.
.. py:class:: CPUProcessor
:module: PyOpenColorIO
.. py:method:: CPUProcessor.__init__(*args, **kwargs)
:module: PyOpenColorIO
.. py:method:: CPUProcessor.apply(*args, **kwargs)
:module: PyOpenColorIO
Overloaded function.
1. apply(self: PyOpenColorIO.CPUProcessor, imgDesc: PyOpenColorIO.ImageDesc) -> None
Apply to an image with any kind of channel ordering while respecting
the input and output bit-depths. Image values are modified in place.
.. note::
The GIL is released during processing, freeing up Python to execute
other threads concurrently.
.. note::
For large images, ``applyRGB`` or ``applyRGBA`` are preferred for
processing a NumPy array. The Python ``ImageDesc`` implementation
requires copying all values (once) in order to own the underlying
pointer. The dedicated packed ``apply*`` methods utilize
``ImageDesc`` on the C++ side so avoid the copy.
2. apply(self: PyOpenColorIO.CPUProcessor, srcImgDesc: PyOpenColorIO.ImageDesc, dstImgDesc: PyOpenColorIO.ImageDesc) -> None
Apply to an image with any kind of channel ordering while respecting
the input and output bit-depths. Modified srcImgDesc image values are
written to the dstImgDesc image, leaving srcImgDesc unchanged.
.. note::
The GIL is released during processing, freeing up Python to execute
other threads concurrently.
.. note::
For large images, ``applyRGB`` or ``applyRGBA`` are preferred for
processing a NumPy array. The Python ``ImageDesc`` implementation
requires copying all values (once) in order to own the underlying
pointer. The dedicated packed ``apply*`` methods utilize
``ImageDesc`` on the C++ side so avoid the copy.
.. py:method:: CPUProcessor.applyRGB(*args, **kwargs)
:module: PyOpenColorIO
Overloaded function.
1. applyRGB(self: PyOpenColorIO.CPUProcessor, data: buffer) -> None
Apply to a packed RGB array adhering to the Python buffer protocol.
This will typically be a NumPy array. Input and output bit-depths are
respected but must match. Any array size or shape is supported as long
as the flattened array size is divisible by 3. Array values are
modified in place.
.. note::
This differs from the C++ implementation which only applies to a
single pixel. This method uses a ``PackedImageDesc`` under the
hood to apply to an entire image at once. The GIL is released
during processing, freeing up Python to execute other threads
concurrently.
2. applyRGB(self: PyOpenColorIO.CPUProcessor, data: List[float]) -> List[float]
Apply to a packed RGB list of float values. Any size is supported as
long as the list length is divisible by 3. A new list with processed
float values is returned, leaving the input list unchanged.
.. note::
This differs from the C++ implementation which only applies to a
single pixel. This method uses a ``PackedImageDesc`` under the
hood to apply to an entire image at once. The GIL is released
during processing, freeing up Python to execute other threads
concurrently.
.. note::
For large images, a NumPy array should be preferred over a list.
List values are copied on input and output, where an array is
modified in place.
.. py:method:: CPUProcessor.applyRGBA(*args, **kwargs)
:module: PyOpenColorIO
Overloaded function.
1. applyRGBA(self: PyOpenColorIO.CPUProcessor, data: buffer) -> None
Apply to a packed RGBA array adhering to the Python buffer protocol.
This will typically be a NumPy array. Input and output bit-depths are
respected but must match. Any array size or shape is supported as long
as the flattened array size is divisible by 4. Array values are
modified in place.
.. note::
This differs from the C++ implementation which only applies to a
single pixel. This method uses a ``PackedImageDesc`` under the
hood to apply to an entire image at once. The GIL is released
during processing, freeing up Python to execute other threads
concurrently.
2. applyRGBA(self: PyOpenColorIO.CPUProcessor, data: List[float]) -> List[float]
Apply to a packed RGBA list of float values. Any size is supported as
long as the list length is divisible by 4. A new list with processed
float values is returned, leaving the input list unchanged.
.. note::
This differs from the C++ implementation which only applies to a
single pixel. This method uses a ``PackedImageDesc`` under the
hood to apply to an entire image at once. The GIL is released
during processing, freeing up Python to execute other threads
concurrently.
.. note::
For large images, a NumPy array should be preferred over a list.
List values are copied on input and output, where an array is
modified in place.
.. py:method:: CPUProcessor.getCacheID(self: PyOpenColorIO.CPUProcessor) -> str
:module: PyOpenColorIO
.. py:method:: CPUProcessor.getDynamicProperty(self: PyOpenColorIO.CPUProcessor, type: PyOpenColorIO.DynamicPropertyType) -> PyOpenColorIO.DynamicProperty
:module: PyOpenColorIO
The returned pointer may be used to set the value of any dynamic properties of the requested type. Throws if the requested property is not found. Note that if the processor contains several ops that support the requested property, only one can be dynamic.
.. note::
The dynamic properties in this object are decoupled from the ones in the :ref:`Processor` it was generated from. For each dynamic property in the :ref:`Processor`, there is one in the CPU processor.
.. py:method:: CPUProcessor.getInputBitDepth(self: PyOpenColorIO.CPUProcessor) -> PyOpenColorIO.BitDepth
:module: PyOpenColorIO
Bit-depth of the input pixel buffer.
.. py:method:: CPUProcessor.getOutputBitDepth(self: PyOpenColorIO.CPUProcessor) -> PyOpenColorIO.BitDepth
:module: PyOpenColorIO
Bit-depth of the output pixel buffer.
.. py:method:: CPUProcessor.hasChannelCrosstalk(self: PyOpenColorIO.CPUProcessor) -> bool
:module: PyOpenColorIO
.. py:method:: CPUProcessor.isIdentity(self: PyOpenColorIO.CPUProcessor) -> bool
:module: PyOpenColorIO
Equivalent to isNoOp from the underlying :ref:`Processor`, i.e., it ignores in/out bit-depth differences.
.. py:method:: CPUProcessor.isNoOp(self: PyOpenColorIO.CPUProcessor) -> bool
:module: PyOpenColorIO
The in and out bit-depths must be equal for isNoOp to be true.
@@ -0,0 +1,28 @@
..
SPDX-License-Identifier: CC-BY-4.0
Copyright Contributors to the OpenColorIO Project.
Do not edit! This file was automatically generated by share/docs/frozendoc.py.
.. py:function:: GetProcessor(config: PyOpenColorIO.Config, context: PyOpenColorIO.Context = None, workingSpaceName: str, displayName: str, viewName: str, channelView: PyOpenColorIO.MatrixTransform = None, direction: PyOpenColorIO.TransformDirection = <TransformDirection.TRANSFORM_DIR_FORWARD: 0>) -> PyOpenColorIO.Processor
:module: PyOpenColorIO.DisplayViewHelpers
Get the processor from the working color space to (display, view) pair (forward) or (display, view) pair to working (inverse). The working color space name could be a role name or a color space name. ChannelView can be empty. If not already present, each of these functions adds ExposureContrastTransforms to enable changing exposure, contrast, and gamma after the processor has been created using dynamic properties.
.. py:function:: GetIdentityProcessor(config: PyOpenColorIO.Config) -> PyOpenColorIO.Processor
:module: PyOpenColorIO.DisplayViewHelpers
Get an identity processor containing only the ExposureContrastTransforms.
.. py:function:: AddDisplayView(config: PyOpenColorIO.Config, displayName: str, viewName: str, lookName: str = '', colorSpaceName: str = '', colorSpaceFamily: str = '', colorSpaceDescription: str = '', colorSpaceCategories: str = '', transformFilePath: str, connectionColorSpaceName: str) -> None
:module: PyOpenColorIO.DisplayViewHelpers
Add a new (display, view) pair and the new color space to a configuration instance. The input to the userTransform must be in the specified connectionColorSpace.
.. py:function:: RemoveDisplayView(config: PyOpenColorIO.Config, displayName: str, viewName: str) -> None
:module: PyOpenColorIO.DisplayViewHelpers
Remove a (display, view) pair including the associated color space (only if not used). Note that the view is always removed but the display is only removed if empty.
@@ -0,0 +1,88 @@
..
SPDX-License-Identifier: CC-BY-4.0
Copyright Contributors to the OpenColorIO Project.
Do not edit! This file was automatically generated by share/docs/frozendoc.py.
.. py:class:: DisplayViewTransform
:module: PyOpenColorIO
.. py:method:: DisplayViewTransform.__init__(*args, **kwargs)
:module: PyOpenColorIO
Overloaded function.
1. __init__(self: PyOpenColorIO.DisplayViewTransform) -> None
2. __init__(self: PyOpenColorIO.DisplayViewTransform, src: str = '', display: str = '', view: str = '', looksBypass: bool = False, dataBypass: bool = True, direction: PyOpenColorIO.TransformDirection = <TransformDirection.TRANSFORM_DIR_FORWARD: 0>) -> None
.. py:method:: DisplayViewTransform.getDataBypass(self: PyOpenColorIO.DisplayViewTransform) -> bool
:module: PyOpenColorIO
.. py:method:: DisplayViewTransform.getDirection(self: PyOpenColorIO.Transform) -> PyOpenColorIO.TransformDirection
:module: PyOpenColorIO
.. py:method:: DisplayViewTransform.getDisplay(self: PyOpenColorIO.DisplayViewTransform) -> str
:module: PyOpenColorIO
.. py:method:: DisplayViewTransform.getLooksBypass(self: PyOpenColorIO.DisplayViewTransform) -> bool
:module: PyOpenColorIO
.. py:method:: DisplayViewTransform.getSrc(self: PyOpenColorIO.DisplayViewTransform) -> str
:module: PyOpenColorIO
.. py:method:: DisplayViewTransform.getTransformType(self: PyOpenColorIO.Transform) -> PyOpenColorIO.TransformType
:module: PyOpenColorIO
.. py:method:: DisplayViewTransform.getView(self: PyOpenColorIO.DisplayViewTransform) -> str
:module: PyOpenColorIO
.. py:method:: DisplayViewTransform.setDataBypass(self: PyOpenColorIO.DisplayViewTransform, dataBypass: bool) -> None
:module: PyOpenColorIO
Data color spaces do not get processed when true (which is the default).
.. py:method:: DisplayViewTransform.setDirection(self: PyOpenColorIO.Transform, direction: PyOpenColorIO.TransformDirection) -> None
:module: PyOpenColorIO
Note that this only affects the evaluation and not the values stored in the object.
.. py:method:: DisplayViewTransform.setDisplay(self: PyOpenColorIO.DisplayViewTransform, display: str) -> None
:module: PyOpenColorIO
Specify which display to use.
.. py:method:: DisplayViewTransform.setLooksBypass(self: PyOpenColorIO.DisplayViewTransform, looksBypass: bool) -> None
:module: PyOpenColorIO
Looks will be bypassed when true (the default is false).
.. py:method:: DisplayViewTransform.setSrc(self: PyOpenColorIO.DisplayViewTransform, src: str) -> None
:module: PyOpenColorIO
Specify the incoming color space.
.. py:method:: DisplayViewTransform.setView(self: PyOpenColorIO.DisplayViewTransform, view: str) -> None
:module: PyOpenColorIO
Specify which view transform to use.
.. py:method:: DisplayViewTransform.validate(self: PyOpenColorIO.Transform) -> None
:module: PyOpenColorIO
Will throw if data is not valid.
@@ -0,0 +1,105 @@
..
SPDX-License-Identifier: CC-BY-4.0
Copyright Contributors to the OpenColorIO Project.
Do not edit! This file was automatically generated by share/docs/frozendoc.py.
.. py:class:: DynamicProperty
:module: PyOpenColorIO
Allows transform parameter values to be set on-the-fly (after finalization). For example, to modify the exposure in a viewport. Dynamic properties can be accessed from the `:ref:`CPUProcessor`` or `:ref:`GpuShaderCreator`` to change values between processing.
.. code-block:: cpp
OCIO::ConstConfigRcPtr config = OCIO::GetCurrentConfig();
OCIO::ConstProcessorRcPtr processor = config->getProcessor(colorSpace1, colorSpace2);
OCIO::ConstCPUProcessorRcPtr cpuProcessor = processor->getDefaultCPUProcessor();
if (cpuProcessor->hasDynamicProperty(OCIO::DYNAMIC_PROPERTY_EXPOSURE))
{
// Get the in-memory implementation of the dynamic property.
OCIO::DynamicPropertyRcPtr dynProp =
cpuProcessor->getDynamicProperty(OCIO::DYNAMIC_PROPERTY_EXPOSURE);
// Get the interface used to change the double value.
OCIO::DynamicPropertyDoubleRcPtr exposure =
OCIO::DynamicPropertyValue::AsDouble(dynProp);
// Update of the dynamic property instance with the new value.
exposure->setValue(1.1f);
}
if (cpuProcessor->hasDynamicProperty(OCIO::DYNAMIC_PROPERTY_GRADING_PRIMARY))
{
OCIO::DynamicPropertyRcPtr dynProp =
cpuProcessor->getDynamicProperty(OCIO::DYNAMIC_PROPERTY_GRADING_PRIMARY);
OCIO::DynamicPropertyGradingPrimaryRcPtr primaryProp =
OCIO::DynamicPropertyValue::AsGradingPrimary(dynProp);
OCIO::GradingPrimary primary = primaryProp->getValue();
primary.m_saturation += 0.1f;
rgbCurveProp->setValue(primary);
}
if (cpuProcessor->hasDynamicProperty(OCIO::DYNAMIC_PROPERTY_GRADING_RGBCURVE))
{
OCIO::DynamicPropertyRcPtr dynProp =
cpuProcessor->getDynamicProperty(OCIO::DYNAMIC_PROPERTY_GRADING_RGBCURVE);
OCIO::DynamicPropertyGradingRGBCurveRcPtr rgbCurveProp =
OCIO::DynamicPropertyValue::AsGradingRGBCurve(dynProp);
OCIO::ConstGradingRGBCurveRcPtr rgbCurve = rgbCurveProp->getValue()->createEditableCopy();
OCIO::GradingBSplineCurveRcPtr rCurve = rgbCurve->getCurve(OCIO::RGB_RED);
rCurve->getControlPoint(1).m_y += 0.1f;
rgbCurveProp->setValue(rgbCurve);
}
.. py:method:: DynamicProperty.__init__(*args, **kwargs)
:module: PyOpenColorIO
.. py:method:: DynamicProperty.getDouble(self: PyOpenColorIO.DynamicProperty) -> float
:module: PyOpenColorIO
Get the property as DynamicPropertyDoubleRcPtr to access the double value. Will throw if property type is not a type that holds a double such as DYNAMIC_PROPERTY_EXPOSURE.
.. py:method:: DynamicProperty.getGradingPrimary(self: PyOpenColorIO.DynamicProperty) -> PyOpenColorIO.GradingPrimary
:module: PyOpenColorIO
Get the property as DynamicPropertyGradingPrimaryRcPtr to access the :ref:`GradingPrimary` value. Will throw if property type is not DYNAMIC_PROPERTY_GRADING_PRIMARY.
.. py:method:: DynamicProperty.getGradingRGBCurve(self: PyOpenColorIO.DynamicProperty) -> PyOpenColorIO.GradingRGBCurve
:module: PyOpenColorIO
Get the property as DynamicPropertyGradingRGBCurveRcPtr to access the GradingRGBCurveRcPtr value. Will throw if property type is not DYNAMIC_PROPERTY_GRADING_RGBCURVE.
.. py:method:: DynamicProperty.getGradingTone(self: PyOpenColorIO.DynamicProperty) -> PyOpenColorIO.GradingTone
:module: PyOpenColorIO
Get the property as DynamicPropertyGradingToneRcPtr to access the :ref:`GradingTone` value. Will throw if property type is not DYNAMIC_PROPERTY_GRADING_TONE.
.. py:method:: DynamicProperty.getType(self: PyOpenColorIO.DynamicProperty) -> PyOpenColorIO.DynamicPropertyType
:module: PyOpenColorIO
.. py:method:: DynamicProperty.setDouble(self: PyOpenColorIO.DynamicProperty, val: float) -> None
:module: PyOpenColorIO
Get the property as DynamicPropertyDoubleRcPtr to access the double value. Will throw if property type is not a type that holds a double such as DYNAMIC_PROPERTY_EXPOSURE.
.. py:method:: DynamicProperty.setGradingPrimary(self: PyOpenColorIO.DynamicProperty, val: PyOpenColorIO.GradingPrimary) -> None
:module: PyOpenColorIO
Get the property as DynamicPropertyGradingPrimaryRcPtr to access the :ref:`GradingPrimary` value. Will throw if property type is not DYNAMIC_PROPERTY_GRADING_PRIMARY.
.. py:method:: DynamicProperty.setGradingRGBCurve(self: PyOpenColorIO.DynamicProperty, val: PyOpenColorIO.GradingRGBCurve) -> None
:module: PyOpenColorIO
Get the property as DynamicPropertyGradingRGBCurveRcPtr to access the GradingRGBCurveRcPtr value. Will throw if property type is not DYNAMIC_PROPERTY_GRADING_RGBCURVE.
.. py:method:: DynamicProperty.setGradingTone(self: PyOpenColorIO.DynamicProperty, val: PyOpenColorIO.GradingTone) -> None
:module: PyOpenColorIO
Get the property as DynamicPropertyGradingToneRcPtr to access the :ref:`GradingTone` value. Will throw if property type is not DYNAMIC_PROPERTY_GRADING_TONE.
@@ -0,0 +1,60 @@
..
SPDX-License-Identifier: CC-BY-4.0
Copyright Contributors to the OpenColorIO Project.
Do not edit! This file was automatically generated by share/docs/frozendoc.py.
.. py:class:: DynamicPropertyType
:module: PyOpenColorIO
Types for dynamic properties.
Members:
DYNAMIC_PROPERTY_EXPOSURE : Image exposure value (double floating point value)
DYNAMIC_PROPERTY_CONTRAST : Image contrast value (double floating point value)
DYNAMIC_PROPERTY_GAMMA : Image gamma value (double floating point value)
DYNAMIC_PROPERTY_GRADING_PRIMARY : Used by :ref:`GradingPrimaryTransform`.
DYNAMIC_PROPERTY_GRADING_RGBCURVE : Used by :ref:`GradingRGBCurveTransform`.
DYNAMIC_PROPERTY_GRADING_TONE : Used by :ref:`GradingToneTransform`.
.. py:method:: name() -> str
:property:
.. py:attribute:: DynamicPropertyType.DYNAMIC_PROPERTY_CONTRAST
:module: PyOpenColorIO
:value: <DynamicPropertyType.DYNAMIC_PROPERTY_CONTRAST: 1>
.. py:attribute:: DynamicPropertyType.DYNAMIC_PROPERTY_EXPOSURE
:module: PyOpenColorIO
:value: <DynamicPropertyType.DYNAMIC_PROPERTY_EXPOSURE: 0>
.. py:attribute:: DynamicPropertyType.DYNAMIC_PROPERTY_GAMMA
:module: PyOpenColorIO
:value: <DynamicPropertyType.DYNAMIC_PROPERTY_GAMMA: 2>
.. py:attribute:: DynamicPropertyType.DYNAMIC_PROPERTY_GRADING_PRIMARY
:module: PyOpenColorIO
:value: <DynamicPropertyType.DYNAMIC_PROPERTY_GRADING_PRIMARY: 3>
.. py:attribute:: DynamicPropertyType.DYNAMIC_PROPERTY_GRADING_RGBCURVE
:module: PyOpenColorIO
:value: <DynamicPropertyType.DYNAMIC_PROPERTY_GRADING_RGBCURVE: 4>
.. py:attribute:: DynamicPropertyType.DYNAMIC_PROPERTY_GRADING_TONE
:module: PyOpenColorIO
:value: <DynamicPropertyType.DYNAMIC_PROPERTY_GRADING_TONE: 5>
.. py:property:: DynamicPropertyType.value
:module: PyOpenColorIO
@@ -0,0 +1,37 @@
..
SPDX-License-Identifier: CC-BY-4.0
Copyright Contributors to the OpenColorIO Project.
Do not edit! This file was automatically generated by share/docs/frozendoc.py.
.. py:class:: EnvironmentMode
:module: PyOpenColorIO
Members:
ENV_ENVIRONMENT_UNKNOWN :
ENV_ENVIRONMENT_LOAD_PREDEFINED :
ENV_ENVIRONMENT_LOAD_ALL :
.. py:method:: name() -> str
:property:
.. py:attribute:: EnvironmentMode.ENV_ENVIRONMENT_LOAD_ALL
:module: PyOpenColorIO
:value: <EnvironmentMode.ENV_ENVIRONMENT_LOAD_ALL: 2>
.. py:attribute:: EnvironmentMode.ENV_ENVIRONMENT_LOAD_PREDEFINED
:module: PyOpenColorIO
:value: <EnvironmentMode.ENV_ENVIRONMENT_LOAD_PREDEFINED: 1>
.. py:attribute:: EnvironmentMode.ENV_ENVIRONMENT_UNKNOWN
:module: PyOpenColorIO
:value: <EnvironmentMode.ENV_ENVIRONMENT_UNKNOWN: 0>
.. py:property:: EnvironmentMode.value
:module: PyOpenColorIO
@@ -0,0 +1,8 @@
..
SPDX-License-Identifier: CC-BY-4.0
Copyright Contributors to the OpenColorIO Project.
Do not edit! This file was automatically generated by share/docs/frozendoc.py.
.. py:function:: EnvironmentModeFromString(str: str) -> PyOpenColorIO.EnvironmentMode
:module: PyOpenColorIO
@@ -0,0 +1,8 @@
..
SPDX-License-Identifier: CC-BY-4.0
Copyright Contributors to the OpenColorIO Project.
Do not edit! This file was automatically generated by share/docs/frozendoc.py.
.. py:function:: EnvironmentModeToString(mode: PyOpenColorIO.EnvironmentMode) -> str
:module: PyOpenColorIO
@@ -0,0 +1,13 @@
..
SPDX-License-Identifier: CC-BY-4.0
Copyright Contributors to the OpenColorIO Project.
Do not edit! This file was automatically generated by share/docs/frozendoc.py.
.. py:exception:: Exception
:module: PyOpenColorIO
An exception class to throw for errors detected at runtime.
.. warning::
All functions in the :ref:`Config` class can potentially throw this exception.
@@ -0,0 +1,12 @@
..
SPDX-License-Identifier: CC-BY-4.0
Copyright Contributors to the OpenColorIO Project.
Do not edit! This file was automatically generated by share/docs/frozendoc.py.
.. py:exception:: ExceptionMissingFile
:module: PyOpenColorIO
An exception class for errors detected at runtime.
Thrown when OCIO cannot find a file that is expected to exist. This is provided as a custom type to distinguish cases where one wants to continue looking for missing files, but wants to properly fail for other error conditions.
@@ -0,0 +1,75 @@
..
SPDX-License-Identifier: CC-BY-4.0
Copyright Contributors to the OpenColorIO Project.
Do not edit! This file was automatically generated by share/docs/frozendoc.py.
.. py:class:: ExponentTransform
:module: PyOpenColorIO
Represents exponent transform: pow( clamp(color), value ).
.. note::
For configs with version == 1: Negative style is ignored and if the exponent is 1.0, this will not clamp. Otherwise, the input color will be clamped between [0.0, inf]. For configs with version > 1: Negative value handling may be specified via setNegativeStyle.
.. py:method:: ExponentTransform.__init__(*args, **kwargs)
:module: PyOpenColorIO
Overloaded function.
1. __init__(self: PyOpenColorIO.ExponentTransform) -> None
2. __init__(self: PyOpenColorIO.ExponentTransform, value: List[float[4]] = [1.0, 1.0, 1.0, 1.0], negativeStyle: PyOpenColorIO.NegativeStyle = <NegativeStyle.NEGATIVE_CLAMP: 0>, direction: PyOpenColorIO.TransformDirection = <TransformDirection.TRANSFORM_DIR_FORWARD: 0>) -> None
.. py:method:: ExponentTransform.equals(self: PyOpenColorIO.ExponentTransform, other: PyOpenColorIO.ExponentTransform) -> bool
:module: PyOpenColorIO
Checks if this exactly equals other.
.. py:method:: ExponentTransform.getDirection(self: PyOpenColorIO.Transform) -> PyOpenColorIO.TransformDirection
:module: PyOpenColorIO
.. py:method:: ExponentTransform.getFormatMetadata(self: PyOpenColorIO.ExponentTransform) -> PyOpenColorIO.FormatMetadata
:module: PyOpenColorIO
.. py:method:: ExponentTransform.getNegativeStyle(self: PyOpenColorIO.ExponentTransform) -> PyOpenColorIO.NegativeStyle
:module: PyOpenColorIO
Specifies how negative values are handled. Legal values:
- NEGATIVE_CLAMP -- Clamp negative values (default).
- NEGATIVE_MIRROR -- Positive curve is rotated 180 degrees around the origin to handle negatives.
- NEGATIVE_PASS_THRU -- Negative values are passed through unchanged.
.. py:method:: ExponentTransform.getTransformType(self: PyOpenColorIO.Transform) -> PyOpenColorIO.TransformType
:module: PyOpenColorIO
.. py:method:: ExponentTransform.getValue(self: PyOpenColorIO.ExponentTransform) -> List[float[4]]
:module: PyOpenColorIO
.. py:method:: ExponentTransform.setDirection(self: PyOpenColorIO.Transform, direction: PyOpenColorIO.TransformDirection) -> None
:module: PyOpenColorIO
Note that this only affects the evaluation and not the values stored in the object.
.. py:method:: ExponentTransform.setNegativeStyle(self: PyOpenColorIO.ExponentTransform, style: PyOpenColorIO.NegativeStyle) -> None
:module: PyOpenColorIO
.. py:method:: ExponentTransform.setValue(self: PyOpenColorIO.ExponentTransform, value: List[float[4]]) -> None
:module: PyOpenColorIO
.. py:method:: ExponentTransform.validate(self: PyOpenColorIO.Transform) -> None
:module: PyOpenColorIO
Will throw if data is not valid.
@@ -0,0 +1,95 @@
..
SPDX-License-Identifier: CC-BY-4.0
Copyright Contributors to the OpenColorIO Project.
Do not edit! This file was automatically generated by share/docs/frozendoc.py.
.. py:class:: ExponentWithLinearTransform
:module: PyOpenColorIO
Represents power functions with a linear section in the shadows such as sRGB and L*.
The basic formula is::
pow( (x + offset)/(1 + offset), gamma ) with the breakpoint at offset/(gamma - 1).
Negative values are never clamped.
.. py:method:: ExponentWithLinearTransform.__init__(*args, **kwargs)
:module: PyOpenColorIO
Overloaded function.
1. __init__(self: PyOpenColorIO.ExponentWithLinearTransform) -> None
2. __init__(self: PyOpenColorIO.ExponentWithLinearTransform, gamma: List[float[4]] = [1.0, 1.0, 1.0, 1.0], offset: List[float[4]] = [0.0, 0.0, 0.0, 0.0], negativeStyle: PyOpenColorIO.NegativeStyle = <NegativeStyle.NEGATIVE_LINEAR: 3>, direction: PyOpenColorIO.TransformDirection = <TransformDirection.TRANSFORM_DIR_FORWARD: 0>) -> None
.. py:method:: ExponentWithLinearTransform.equals(self: PyOpenColorIO.ExponentWithLinearTransform, other: PyOpenColorIO.ExponentWithLinearTransform) -> bool
:module: PyOpenColorIO
Checks if this exactly equals other.
.. py:method:: ExponentWithLinearTransform.getDirection(self: PyOpenColorIO.Transform) -> PyOpenColorIO.TransformDirection
:module: PyOpenColorIO
.. py:method:: ExponentWithLinearTransform.getFormatMetadata(self: PyOpenColorIO.ExponentWithLinearTransform) -> PyOpenColorIO.FormatMetadata
:module: PyOpenColorIO
.. py:method:: ExponentWithLinearTransform.getGamma(self: PyOpenColorIO.ExponentWithLinearTransform) -> List[float[4]]
:module: PyOpenColorIO
.. py:method:: ExponentWithLinearTransform.getNegativeStyle(self: PyOpenColorIO.ExponentWithLinearTransform) -> PyOpenColorIO.NegativeStyle
:module: PyOpenColorIO
Specifies how negative values are handled. Legal values:
- NEGATIVE_LINEAR -- Linear segment continues into negatives (default).
- NEGATIVE_MIRROR -- Positive curve is rotated 180 degrees around the origin to handle negatives.
.. py:method:: ExponentWithLinearTransform.getOffset(self: PyOpenColorIO.ExponentWithLinearTransform) -> List[float[4]]
:module: PyOpenColorIO
.. py:method:: ExponentWithLinearTransform.getTransformType(self: PyOpenColorIO.Transform) -> PyOpenColorIO.TransformType
:module: PyOpenColorIO
.. py:method:: ExponentWithLinearTransform.setDirection(self: PyOpenColorIO.Transform, direction: PyOpenColorIO.TransformDirection) -> None
:module: PyOpenColorIO
Note that this only affects the evaluation and not the values stored in the object.
.. py:method:: ExponentWithLinearTransform.setGamma(self: PyOpenColorIO.ExponentWithLinearTransform, values: List[float[4]]) -> None
:module: PyOpenColorIO
Set the exponent value for the power function for R, G, B, A.
.. note::
The gamma values must be in the range of [1, 10]. Set the transform direction to inverse to obtain the effect of values less than 1.
.. py:method:: ExponentWithLinearTransform.setNegativeStyle(self: PyOpenColorIO.ExponentWithLinearTransform, style: PyOpenColorIO.NegativeStyle) -> None
:module: PyOpenColorIO
.. py:method:: ExponentWithLinearTransform.setOffset(self: PyOpenColorIO.ExponentWithLinearTransform, values: List[float[4]]) -> None
:module: PyOpenColorIO
Set the offset value for the power function for R, G, B, A.
.. note::
The offset values must be in the range [0, 0.9].
.. py:method:: ExponentWithLinearTransform.validate(self: PyOpenColorIO.Transform) -> None
:module: PyOpenColorIO
Will throw if data is not valid.
@@ -0,0 +1,39 @@
..
SPDX-License-Identifier: CC-BY-4.0
Copyright Contributors to the OpenColorIO Project.
Do not edit! This file was automatically generated by share/docs/frozendoc.py.
.. py:class:: ExposureContrastStyle
:module: PyOpenColorIO
Enumeration of the :cpp:class:`:ref:`ExposureContrastTransform`` transform algorithms.
Members:
EXPOSURE_CONTRAST_LINEAR : E/C to be applied to a linear space image.
EXPOSURE_CONTRAST_VIDEO : E/C to be applied to a video space image.
EXPOSURE_CONTRAST_LOGARITHMIC : E/C to be applied to a log space image.
.. py:method:: name() -> str
:property:
.. py:attribute:: ExposureContrastStyle.EXPOSURE_CONTRAST_LINEAR
:module: PyOpenColorIO
:value: <ExposureContrastStyle.EXPOSURE_CONTRAST_LINEAR: 0>
.. py:attribute:: ExposureContrastStyle.EXPOSURE_CONTRAST_LOGARITHMIC
:module: PyOpenColorIO
:value: <ExposureContrastStyle.EXPOSURE_CONTRAST_LOGARITHMIC: 2>
.. py:attribute:: ExposureContrastStyle.EXPOSURE_CONTRAST_VIDEO
:module: PyOpenColorIO
:value: <ExposureContrastStyle.EXPOSURE_CONTRAST_VIDEO: 1>
.. py:property:: ExposureContrastStyle.value
:module: PyOpenColorIO
@@ -0,0 +1,8 @@
..
SPDX-License-Identifier: CC-BY-4.0
Copyright Contributors to the OpenColorIO Project.
Do not edit! This file was automatically generated by share/docs/frozendoc.py.
.. py:function:: ExposureContrastStyleFromString(str: str) -> PyOpenColorIO.ExposureContrastStyle
:module: PyOpenColorIO
@@ -0,0 +1,8 @@
..
SPDX-License-Identifier: CC-BY-4.0
Copyright Contributors to the OpenColorIO Project.
Do not edit! This file was automatically generated by share/docs/frozendoc.py.
.. py:function:: ExposureContrastStyleToString(style: PyOpenColorIO.ExposureContrastStyle) -> str
:module: PyOpenColorIO
@@ -0,0 +1,160 @@
..
SPDX-License-Identifier: CC-BY-4.0
Copyright Contributors to the OpenColorIO Project.
Do not edit! This file was automatically generated by share/docs/frozendoc.py.
.. py:class:: ExposureContrastTransform
:module: PyOpenColorIO
Applies exposure, gamma, and pivoted contrast adjustments. Adjusts the math to be appropriate for linear, logarithmic, or video color spaces.
.. py:method:: ExposureContrastTransform.__init__(*args, **kwargs)
:module: PyOpenColorIO
Overloaded function.
1. __init__(self: PyOpenColorIO.ExposureContrastTransform) -> None
2. __init__(self: PyOpenColorIO.ExposureContrastTransform, style: PyOpenColorIO.ExposureContrastStyle = <ExposureContrastStyle.EXPOSURE_CONTRAST_LINEAR: 0>, exposure: float = 0.0, contrast: float = 1.0, gamma: float = 1.0, pivot: float = 0.18, logExposureStep: float = 0.088, logMidGray: float = 0.435, dynamicExposure: bool = False, dynamicContrast: bool = False, dynamicGamma: bool = False, direction: PyOpenColorIO.TransformDirection = <TransformDirection.TRANSFORM_DIR_FORWARD: 0>) -> None
.. py:method:: ExposureContrastTransform.equals(self: PyOpenColorIO.ExposureContrastTransform, other: PyOpenColorIO.ExposureContrastTransform) -> bool
:module: PyOpenColorIO
Checks if this exactly equals other.
.. py:method:: ExposureContrastTransform.getContrast(self: PyOpenColorIO.ExposureContrastTransform) -> float
:module: PyOpenColorIO
.. py:method:: ExposureContrastTransform.getDirection(self: PyOpenColorIO.Transform) -> PyOpenColorIO.TransformDirection
:module: PyOpenColorIO
.. py:method:: ExposureContrastTransform.getExposure(self: PyOpenColorIO.ExposureContrastTransform) -> float
:module: PyOpenColorIO
.. py:method:: ExposureContrastTransform.getFormatMetadata(self: PyOpenColorIO.ExposureContrastTransform) -> PyOpenColorIO.FormatMetadata
:module: PyOpenColorIO
.. py:method:: ExposureContrastTransform.getGamma(self: PyOpenColorIO.ExposureContrastTransform) -> float
:module: PyOpenColorIO
.. py:method:: ExposureContrastTransform.getLogExposureStep(self: PyOpenColorIO.ExposureContrastTransform) -> float
:module: PyOpenColorIO
.. py:method:: ExposureContrastTransform.getLogMidGray(self: PyOpenColorIO.ExposureContrastTransform) -> float
:module: PyOpenColorIO
.. py:method:: ExposureContrastTransform.getPivot(self: PyOpenColorIO.ExposureContrastTransform) -> float
:module: PyOpenColorIO
.. py:method:: ExposureContrastTransform.getStyle(self: PyOpenColorIO.ExposureContrastTransform) -> PyOpenColorIO.ExposureContrastStyle
:module: PyOpenColorIO
.. py:method:: ExposureContrastTransform.getTransformType(self: PyOpenColorIO.Transform) -> PyOpenColorIO.TransformType
:module: PyOpenColorIO
.. py:method:: ExposureContrastTransform.isContrastDynamic(self: PyOpenColorIO.ExposureContrastTransform) -> bool
:module: PyOpenColorIO
Contrast can be made dynamic so the value can be changed through the CPU or GPU processor, but if there are several :ref:`ExposureContrastTransform` only one can have a dynamic contrast.
.. py:method:: ExposureContrastTransform.isExposureDynamic(self: PyOpenColorIO.ExposureContrastTransform) -> bool
:module: PyOpenColorIO
Exposure can be made dynamic so the value can be changed through the CPU or GPU processor, but if there are several :ref:`ExposureContrastTransform` only one can have a dynamic exposure.
.. py:method:: ExposureContrastTransform.isGammaDynamic(self: PyOpenColorIO.ExposureContrastTransform) -> bool
:module: PyOpenColorIO
Gamma can be made dynamic so the value can be changed through the CPU or GPU processor, but if there are several :ref:`ExposureContrastTransform` only one can have a dynamic gamma.
.. py:method:: ExposureContrastTransform.makeContrastDynamic(self: PyOpenColorIO.ExposureContrastTransform) -> None
:module: PyOpenColorIO
.. py:method:: ExposureContrastTransform.makeContrastNonDynamic(self: PyOpenColorIO.ExposureContrastTransform) -> None
:module: PyOpenColorIO
.. py:method:: ExposureContrastTransform.makeExposureDynamic(self: PyOpenColorIO.ExposureContrastTransform) -> None
:module: PyOpenColorIO
.. py:method:: ExposureContrastTransform.makeExposureNonDynamic(self: PyOpenColorIO.ExposureContrastTransform) -> None
:module: PyOpenColorIO
.. py:method:: ExposureContrastTransform.makeGammaDynamic(self: PyOpenColorIO.ExposureContrastTransform) -> None
:module: PyOpenColorIO
.. py:method:: ExposureContrastTransform.makeGammaNonDynamic(self: PyOpenColorIO.ExposureContrastTransform) -> None
:module: PyOpenColorIO
.. py:method:: ExposureContrastTransform.setContrast(self: PyOpenColorIO.ExposureContrastTransform, contrast: float) -> None
:module: PyOpenColorIO
Applies a contrast/gamma adjustment around a pivot point. The contrast and gamma are mathematically the same, but two controls are provided to enable the use of separate dynamic parameters. Contrast is usually a scene-referred adjustment that pivots around gray whereas gamma is usually a display-referred adjustment that pivots around white.
.. py:method:: ExposureContrastTransform.setDirection(self: PyOpenColorIO.Transform, direction: PyOpenColorIO.TransformDirection) -> None
:module: PyOpenColorIO
Note that this only affects the evaluation and not the values stored in the object.
.. py:method:: ExposureContrastTransform.setExposure(self: PyOpenColorIO.ExposureContrastTransform, exposure: float) -> None
:module: PyOpenColorIO
Applies an exposure adjustment. The value is in units of stops (regardless of style), for example, a value of -1 would be equivalent to reducing the lighting by one half.
.. py:method:: ExposureContrastTransform.setGamma(self: PyOpenColorIO.ExposureContrastTransform, gamma: float) -> None
:module: PyOpenColorIO
.. py:method:: ExposureContrastTransform.setLogExposureStep(self: PyOpenColorIO.ExposureContrastTransform, logExposureStep: float) -> None
:module: PyOpenColorIO
Set the increment needed to move one stop for the log-style algorithm. For example, ACEScct is 0.057, LogC is roughly 0.074, and Cineon is roughly 90/1023 = 0.088. The default value is 0.088.
.. py:method:: ExposureContrastTransform.setLogMidGray(self: PyOpenColorIO.ExposureContrastTransform, logMidGray: float) -> None
:module: PyOpenColorIO
Set the position of 18% gray for use by the log-style algorithm. For example, ACEScct is about 0.41, LogC is about 0.39, and ADX10 is 445/1023 = 0.435. The default value is 0.435.
.. py:method:: ExposureContrastTransform.setPivot(self: PyOpenColorIO.ExposureContrastTransform, pivot: float) -> None
:module: PyOpenColorIO
Set the pivot point around which the contrast and gamma controls will work. Regardless of whether linear/video/log-style is being used, the pivot is always expressed in linear. In other words, a pivot of 0.18 is always mid-gray.
.. py:method:: ExposureContrastTransform.setStyle(self: PyOpenColorIO.ExposureContrastTransform, style: PyOpenColorIO.ExposureContrastStyle) -> None
:module: PyOpenColorIO
Select the algorithm for linear, video or log color spaces.
.. py:method:: ExposureContrastTransform.validate(self: PyOpenColorIO.Transform) -> None
:module: PyOpenColorIO
Will throw if data is not valid.
@@ -0,0 +1,181 @@
..
SPDX-License-Identifier: CC-BY-4.0
Copyright Contributors to the OpenColorIO Project.
Do not edit! This file was automatically generated by share/docs/frozendoc.py.
.. py:class:: FileRules
:module: PyOpenColorIO
The File Rules are a set of filepath to color space mappings that are evaluated from first to last. The first rule to match is what determines which color space is returned. There are four types of rules available. Each rule type has a name key that may be used by applications to refer to that rule. Name values must be unique i.e. using a case insensitive comparison. The other keys depend on the rule type:
- *Basic Rule*: This is the basic rule type that uses Unix glob style pattern matching and is thus very easy to use. It contains the keys:
- name: Name of the rule
- colorspace: Color space name to be returned.
- pattern: Glob pattern to be used for the main part of the name/path.
- extension: Glob pattern to be used for the file extension. Note that if glob tokens are not used, the extension will be used in a non-case-sensitive way by default.
- *Regex Rule*: This is similar to the basic rule but allows additional capabilities for power-users. It contains the keys:
- name: Name of the rule
- colorspace: Color space name to be returned.
- regex: Regular expression to be evaluated.
- *OCIO v1 style Rule*: This rule allows the use of the OCIO v1 style, where the string is searched for color space names from the config. This rule may occur 0 or 1 times in the list. The position in the list prioritizes it with respect to the other rules. StrictParsing is not used. If no color space is found in the path, the rule will not match and the next rule will be considered. see :ref:`insertPathSearchRule`. It has the key:
- name: Must be "ColorSpaceNamePathSearch".
- *Default Rule*: The file_rules must always end with this rule. If no prior rules match, this rule specifies the color space applications will use. see :ref:`setDefaultRuleColorSpace`. It has the keys:
- name: must be "Default".
- colorspace : Color space name to be returned.
Custom string keys and associated string values may be used to convey app or workflow-specific information, e.g. whether the color space should be left as is or converted into a working space.
Getters and setters are using the rule position, they will throw if the position is not valid. If the rule at the specified position does not implement the requested property getter will return NULL and setter will throw.
When loading a v1 config, a set of :ref:`FileRules` are created with ColorSpaceNamePathSearch followed by the Default rule pointing to the default role. This allows getColorSpaceFromFilepath to emulate OCIO v1 code that used parseColorSpaceFromString with strictparsing set to false.
.. py:method:: FileRules.__init__(self: PyOpenColorIO.FileRules) -> None
:module: PyOpenColorIO
Creates :ref:`FileRules` for a :ref:`Config`. File rules will contain the default rule using the default role. The default rule cannot be removed.
.. py:method:: FileRules.decreaseRulePriority(self: PyOpenColorIO.FileRules, ruleIndex: int) -> None
:module: PyOpenColorIO
Move a rule closer to the end of the list by one position.
.. py:method:: FileRules.getColorSpace(self: PyOpenColorIO.FileRules, ruleIndex: int) -> str
:module: PyOpenColorIO
Set the rule's color space (may also be a role).
.. py:method:: FileRules.getCustomKeyName(self: PyOpenColorIO.FileRules, ruleIndex: int, key: int) -> str
:module: PyOpenColorIO
Get name of key.
.. py:method:: FileRules.getCustomKeyValue(self: PyOpenColorIO.FileRules, ruleIndex: int, key: int) -> str
:module: PyOpenColorIO
Get value for the key.
.. py:method:: FileRules.getExtension(self: PyOpenColorIO.FileRules, ruleIndex: int) -> str
:module: PyOpenColorIO
Setting extension will erase regex.
.. py:method:: FileRules.getIndexForRule(self: PyOpenColorIO.FileRules, ruleName: str) -> int
:module: PyOpenColorIO
Get the index from the rule name.
.. py:method:: FileRules.getName(self: PyOpenColorIO.FileRules, ruleIndex: int) -> str
:module: PyOpenColorIO
Get name of the rule.
.. py:method:: FileRules.getNumCustomKeys(self: PyOpenColorIO.FileRules, ruleIndex: int) -> int
:module: PyOpenColorIO
Get number of key/value pairs.
.. py:method:: FileRules.getNumEntries(self: PyOpenColorIO.FileRules) -> int
:module: PyOpenColorIO
Does include default rule. Result will be at least 1.
.. py:method:: FileRules.getPattern(self: PyOpenColorIO.FileRules, ruleIndex: int) -> str
:module: PyOpenColorIO
Setting pattern will erase regex.
.. py:method:: FileRules.getRegex(self: PyOpenColorIO.FileRules, ruleIndex: int) -> str
:module: PyOpenColorIO
Setting a regex will erase pattern & extension.
.. py:method:: FileRules.increaseRulePriority(self: PyOpenColorIO.FileRules, ruleIndex: int) -> None
:module: PyOpenColorIO
Move a rule closer to the start of the list by one position.
.. py:method:: FileRules.insertPathSearchRule(self: PyOpenColorIO.FileRules, ruleIndex: int) -> None
:module: PyOpenColorIO
Helper function to insert a rule.
Uses Config:parseColorSpaceFromString to search the path for any of the color spaces named in the config (as per OCIO v1).
.. py:method:: FileRules.insertRule(*args, **kwargs)
:module: PyOpenColorIO
Overloaded function.
1. insertRule(self: PyOpenColorIO.FileRules, ruleIndex: int, name: str, colorSpace: str, pattern: str, extension: str) -> None
Insert a rule at a given ruleIndex.
Rule currently at ruleIndex will be pushed to index: ruleIndex + 1. Name must be unique.
- "Default" is a reserved name for the default rule. The default rule is automatically added and can't be removed. (see :ref:`FileRules::setDefaultRuleColorSpace` ).
- "ColorSpaceNamePathSearch" is also a reserved name (see :ref:`FileRules::insertPathSearchRule` ).
Will throw if pattern, extension or regex is a null or empty string.
Will throw if ruleIndex is not less than :ref:`FileRules::getNumEntries` .
2. insertRule(self: PyOpenColorIO.FileRules, ruleIndex: int, name: str, colorSpace: str, regex: str) -> None
.. py:method:: FileRules.isDefault(self: PyOpenColorIO.FileRules) -> bool
:module: PyOpenColorIO
Check if there is only the default rule using default role and no custom key. This is the default :ref:`FileRules` state when creating a new config.
.. py:method:: FileRules.removeRule(self: PyOpenColorIO.FileRules, ruleIndex: int) -> None
:module: PyOpenColorIO
.. note::
Default rule can't be removed. Will throw if ruleIndex + 1 is not less than :ref:`FileRules::getNumEntries` .
.. py:method:: FileRules.setColorSpace(self: PyOpenColorIO.FileRules, ruleIndex: int, colorSpace: str) -> None
:module: PyOpenColorIO
.. py:method:: FileRules.setCustomKey(self: PyOpenColorIO.FileRules, ruleIndex: int, key: str, value: str) -> None
:module: PyOpenColorIO
Adds a key/value or replace value if key exists. Setting a NULL or an empty value will erase the key.
.. py:method:: FileRules.setDefaultRuleColorSpace(self: PyOpenColorIO.FileRules, colorSpace: str) -> None
:module: PyOpenColorIO
Helper function to set the color space for the default rule.
.. py:method:: FileRules.setExtension(self: PyOpenColorIO.FileRules, ruleIndex: int, extension: str) -> None
:module: PyOpenColorIO
.. py:method:: FileRules.setPattern(self: PyOpenColorIO.FileRules, ruleIndex: int, pattern: str) -> None
:module: PyOpenColorIO
.. py:method:: FileRules.setRegex(self: PyOpenColorIO.FileRules, ruleIndex: int, regex: str) -> None
:module: PyOpenColorIO
@@ -0,0 +1,101 @@
..
SPDX-License-Identifier: CC-BY-4.0
Copyright Contributors to the OpenColorIO Project.
Do not edit! This file was automatically generated by share/docs/frozendoc.py.
.. py:class:: FileTransform
:module: PyOpenColorIO
.. py:method:: FileTransform.__init__(*args, **kwargs)
:module: PyOpenColorIO
Overloaded function.
1. __init__(self: PyOpenColorIO.FileTransform) -> None
2. __init__(self: PyOpenColorIO.FileTransform, src: str = '', cccId: str = '', interpolation: PyOpenColorIO.Interpolation = <Interpolation.INTERP_DEFAULT: 254>, direction: PyOpenColorIO.TransformDirection = <TransformDirection.TRANSFORM_DIR_FORWARD: 0>) -> None
.. py:method:: FileTransform.getCCCId(self: PyOpenColorIO.FileTransform) -> str
:module: PyOpenColorIO
The cccid can be the ID of a CDL or the index of the CDL (as string). If cccid is NULL or empty the first CDL is returned. The cccid is case-sensitive.
.. py:method:: FileTransform.getCDLStyle(self: PyOpenColorIO.FileTransform) -> PyOpenColorIO.CDLStyle
:module: PyOpenColorIO
.. py:method:: FileTransform.getDirection(self: PyOpenColorIO.Transform) -> PyOpenColorIO.TransformDirection
:module: PyOpenColorIO
.. py:method:: FileTransform.getFormats() -> PyOpenColorIO.FileTransform.FormatIterator
:module: PyOpenColorIO
:staticmethod:
.. py:method:: FileTransform.getInterpolation(self: PyOpenColorIO.FileTransform) -> PyOpenColorIO.Interpolation
:module: PyOpenColorIO
The file parsers that care about interpolation (LUTs) will try to make use of the requested interpolation method when loading the file. In these cases, if the requested method could not be used, a warning is logged. If no method is provided, or a method cannot be used, INTERP_DEFAULT is used.
.. py:method:: FileTransform.getSrc(self: PyOpenColorIO.FileTransform) -> str
:module: PyOpenColorIO
.. py:method:: FileTransform.getTransformType(self: PyOpenColorIO.Transform) -> PyOpenColorIO.TransformType
:module: PyOpenColorIO
.. py:method:: FileTransform.setCCCId(self: PyOpenColorIO.FileTransform, cccId: str) -> None
:module: PyOpenColorIO
.. py:method:: FileTransform.setCDLStyle(self: PyOpenColorIO.FileTransform, style: PyOpenColorIO.CDLStyle) -> None
:module: PyOpenColorIO
Can be used with CDL, CC & CCC formats to specify the clamping behavior of the :ref:`CDLTransform`. Default is CDL_NO_CLAMP.
.. py:method:: FileTransform.setDirection(self: PyOpenColorIO.Transform, direction: PyOpenColorIO.TransformDirection) -> None
:module: PyOpenColorIO
Note that this only affects the evaluation and not the values stored in the object.
.. py:method:: FileTransform.setInterpolation(self: PyOpenColorIO.FileTransform, interpolation: PyOpenColorIO.Interpolation) -> None
:module: PyOpenColorIO
.. py:method:: FileTransform.setSrc(self: PyOpenColorIO.FileTransform, src: str) -> None
:module: PyOpenColorIO
.. py:method:: FileTransform.validate(self: PyOpenColorIO.Transform) -> None
:module: PyOpenColorIO
Will throw if data is not valid.
.. py:class:: FormatIterator
:module: PyOpenColorIO.FileTransform
.. py:method:: FormatIterator.__getitem__(self: PyOpenColorIO.FileTransform.FormatIterator, arg0: int) -> tuple
:module: PyOpenColorIO.FileTransform
.. py:method:: FormatIterator.__iter__(self: PyOpenColorIO.FileTransform.FormatIterator) -> PyOpenColorIO.FileTransform.FormatIterator
:module: PyOpenColorIO.FileTransform
.. py:method:: FormatIterator.__len__(self: PyOpenColorIO.FileTransform.FormatIterator) -> int
:module: PyOpenColorIO.FileTransform
.. py:method:: FormatIterator.__next__(self: PyOpenColorIO.FileTransform.FormatIterator) -> tuple
:module: PyOpenColorIO.FileTransform
@@ -0,0 +1,109 @@
..
SPDX-License-Identifier: CC-BY-4.0
Copyright Contributors to the OpenColorIO Project.
Do not edit! This file was automatically generated by share/docs/frozendoc.py.
.. py:class:: FixedFunctionStyle
:module: PyOpenColorIO
Enumeration of the :cpp:class:`:ref:`FixedFunctionTransform`` transform algorithms.
Members:
FIXED_FUNCTION_ACES_RED_MOD_03 : Red modifier (ACES 0.3/0.7)
FIXED_FUNCTION_ACES_RED_MOD_10 : Red modifier (ACES 1.0)
FIXED_FUNCTION_ACES_GLOW_03 : Glow function (ACES 0.3/0.7)
FIXED_FUNCTION_ACES_GLOW_10 : Glow function (ACES 1.0)
FIXED_FUNCTION_ACES_DARK_TO_DIM_10 : Dark to dim surround correction (ACES 1.0)
FIXED_FUNCTION_REC2100_SURROUND : Rec.2100 surround correction (takes one double for the gamma param)
FIXED_FUNCTION_RGB_TO_HSV : Classic RGB to HSV function.
FIXED_FUNCTION_XYZ_TO_xyY : CIE XYZ to 1931 xy chromaticity coordinates.
FIXED_FUNCTION_XYZ_TO_uvY : CIE XYZ to 1976 u'v' chromaticity coordinates.
FIXED_FUNCTION_XYZ_TO_LUV : CIE XYZ to 1976 CIELUV colour space (D65 white)
FIXED_FUNCTION_ACES_GAMUTMAP_02 : ACES 0.2 Gamut clamping algorithm -- NOT IMPLEMENTED YET.
FIXED_FUNCTION_ACES_GAMUTMAP_07 : ACES 0.7 Gamut clamping algorithm -- NOT IMPLEMENTED YET.
FIXED_FUNCTION_ACES_GAMUT_COMP_13 : ACES 1.3 Parametric Gamut Compression (expects ACEScg values)
.. py:method:: name() -> str
:property:
.. py:attribute:: FixedFunctionStyle.FIXED_FUNCTION_ACES_DARK_TO_DIM_10
:module: PyOpenColorIO
:value: <FixedFunctionStyle.FIXED_FUNCTION_ACES_DARK_TO_DIM_10: 4>
.. py:attribute:: FixedFunctionStyle.FIXED_FUNCTION_ACES_GAMUTMAP_02
:module: PyOpenColorIO
:value: <FixedFunctionStyle.FIXED_FUNCTION_ACES_GAMUTMAP_02: 10>
.. py:attribute:: FixedFunctionStyle.FIXED_FUNCTION_ACES_GAMUTMAP_07
:module: PyOpenColorIO
:value: <FixedFunctionStyle.FIXED_FUNCTION_ACES_GAMUTMAP_07: 11>
.. py:attribute:: FixedFunctionStyle.FIXED_FUNCTION_ACES_GAMUT_COMP_13
:module: PyOpenColorIO
:value: <FixedFunctionStyle.FIXED_FUNCTION_ACES_GAMUT_COMP_13: 12>
.. py:attribute:: FixedFunctionStyle.FIXED_FUNCTION_ACES_GLOW_03
:module: PyOpenColorIO
:value: <FixedFunctionStyle.FIXED_FUNCTION_ACES_GLOW_03: 2>
.. py:attribute:: FixedFunctionStyle.FIXED_FUNCTION_ACES_GLOW_10
:module: PyOpenColorIO
:value: <FixedFunctionStyle.FIXED_FUNCTION_ACES_GLOW_10: 3>
.. py:attribute:: FixedFunctionStyle.FIXED_FUNCTION_ACES_RED_MOD_03
:module: PyOpenColorIO
:value: <FixedFunctionStyle.FIXED_FUNCTION_ACES_RED_MOD_03: 0>
.. py:attribute:: FixedFunctionStyle.FIXED_FUNCTION_ACES_RED_MOD_10
:module: PyOpenColorIO
:value: <FixedFunctionStyle.FIXED_FUNCTION_ACES_RED_MOD_10: 1>
.. py:attribute:: FixedFunctionStyle.FIXED_FUNCTION_REC2100_SURROUND
:module: PyOpenColorIO
:value: <FixedFunctionStyle.FIXED_FUNCTION_REC2100_SURROUND: 5>
.. py:attribute:: FixedFunctionStyle.FIXED_FUNCTION_RGB_TO_HSV
:module: PyOpenColorIO
:value: <FixedFunctionStyle.FIXED_FUNCTION_RGB_TO_HSV: 6>
.. py:attribute:: FixedFunctionStyle.FIXED_FUNCTION_XYZ_TO_LUV
:module: PyOpenColorIO
:value: <FixedFunctionStyle.FIXED_FUNCTION_XYZ_TO_LUV: 9>
.. py:attribute:: FixedFunctionStyle.FIXED_FUNCTION_XYZ_TO_uvY
:module: PyOpenColorIO
:value: <FixedFunctionStyle.FIXED_FUNCTION_XYZ_TO_uvY: 8>
.. py:attribute:: FixedFunctionStyle.FIXED_FUNCTION_XYZ_TO_xyY
:module: PyOpenColorIO
:value: <FixedFunctionStyle.FIXED_FUNCTION_XYZ_TO_xyY: 7>
.. py:property:: FixedFunctionStyle.value
:module: PyOpenColorIO
@@ -0,0 +1,8 @@
..
SPDX-License-Identifier: CC-BY-4.0
Copyright Contributors to the OpenColorIO Project.
Do not edit! This file was automatically generated by share/docs/frozendoc.py.
.. py:function:: FixedFunctionStyleFromString(str: str) -> PyOpenColorIO.FixedFunctionStyle
:module: PyOpenColorIO
@@ -0,0 +1,8 @@
..
SPDX-License-Identifier: CC-BY-4.0
Copyright Contributors to the OpenColorIO Project.
Do not edit! This file was automatically generated by share/docs/frozendoc.py.
.. py:function:: FixedFunctionStyleToString(style: PyOpenColorIO.FixedFunctionStyle) -> str
:module: PyOpenColorIO
@@ -0,0 +1,64 @@
..
SPDX-License-Identifier: CC-BY-4.0
Copyright Contributors to the OpenColorIO Project.
Do not edit! This file was automatically generated by share/docs/frozendoc.py.
.. py:class:: FixedFunctionTransform
:module: PyOpenColorIO
Provides a set of hard-coded algorithmic building blocks that are needed to accurately implement various common color transformations.
.. py:method:: FixedFunctionTransform.__init__(self: PyOpenColorIO.FixedFunctionTransform, style: PyOpenColorIO.FixedFunctionStyle, params: List[float] = [], direction: PyOpenColorIO.TransformDirection = <TransformDirection.TRANSFORM_DIR_FORWARD: 0>) -> None
:module: PyOpenColorIO
.. py:method:: FixedFunctionTransform.equals(self: PyOpenColorIO.FixedFunctionTransform, other: PyOpenColorIO.FixedFunctionTransform) -> bool
:module: PyOpenColorIO
Checks if this exactly equals other.
.. py:method:: FixedFunctionTransform.getDirection(self: PyOpenColorIO.Transform) -> PyOpenColorIO.TransformDirection
:module: PyOpenColorIO
.. py:method:: FixedFunctionTransform.getFormatMetadata(self: PyOpenColorIO.FixedFunctionTransform) -> PyOpenColorIO.FormatMetadata
:module: PyOpenColorIO
.. py:method:: FixedFunctionTransform.getParams(self: PyOpenColorIO.FixedFunctionTransform) -> List[float]
:module: PyOpenColorIO
.. py:method:: FixedFunctionTransform.getStyle(self: PyOpenColorIO.FixedFunctionTransform) -> PyOpenColorIO.FixedFunctionStyle
:module: PyOpenColorIO
.. py:method:: FixedFunctionTransform.getTransformType(self: PyOpenColorIO.Transform) -> PyOpenColorIO.TransformType
:module: PyOpenColorIO
.. py:method:: FixedFunctionTransform.setDirection(self: PyOpenColorIO.Transform, direction: PyOpenColorIO.TransformDirection) -> None
:module: PyOpenColorIO
Note that this only affects the evaluation and not the values stored in the object.
.. py:method:: FixedFunctionTransform.setParams(self: PyOpenColorIO.FixedFunctionTransform, params: List[float]) -> None
:module: PyOpenColorIO
Set the parameters (for functions that require them).
.. py:method:: FixedFunctionTransform.setStyle(self: PyOpenColorIO.FixedFunctionTransform, style: PyOpenColorIO.FixedFunctionStyle) -> None
:module: PyOpenColorIO
Select which algorithm to use.
.. py:method:: FixedFunctionTransform.validate(self: PyOpenColorIO.Transform) -> None
:module: PyOpenColorIO
Will throw if data is not valid.
@@ -0,0 +1,184 @@
..
SPDX-License-Identifier: CC-BY-4.0
Copyright Contributors to the OpenColorIO Project.
Do not edit! This file was automatically generated by share/docs/frozendoc.py.
.. py:class:: FormatMetadata
:module: PyOpenColorIO
The :ref:`FormatMetadata` class is intended to be a generic container to hold metadata from various file formats.
This class provides a hierarchical metadata container. A metadata object is similar to an element in XML. The top level element is named "ROOT" and can't be renamed. Several transforms have a :ref:`FormatMetadata`. The root element and all of the sub-elements may contain:
- A name string (e.g. "ROOT", "Description"...). Name can't be empty.
- A value string (e.g. "updated viewing LUT"). Value can be empty.
- A list of attributes (name, value) string pairs (e.g. "version", "1.5"). There are helper functions to get and set "id" and "name" attributes. Attribute names are unique.
- And a list of child sub-elements, which are also objects implementing :ref:`FormatMetadata`. There can be several sub-elements with the same name.
.. py:method:: FormatMetadata.__contains__(self: PyOpenColorIO.FormatMetadata, name: str) -> bool
:module: PyOpenColorIO
.. py:method:: FormatMetadata.__getitem__(self: PyOpenColorIO.FormatMetadata, name: str) -> str
:module: PyOpenColorIO
Get the value of a attribute ("" if attribute does not exist).
.. py:method:: FormatMetadata.__init__(*args, **kwargs)
:module: PyOpenColorIO
.. py:method:: FormatMetadata.__iter__(self: PyOpenColorIO.FormatMetadata) -> PyOpenColorIO.FormatMetadata.AttributeNameIterator
:module: PyOpenColorIO
.. py:method:: FormatMetadata.__len__(self: PyOpenColorIO.FormatMetadata) -> int
:module: PyOpenColorIO
.. py:method:: FormatMetadata.__setitem__(self: PyOpenColorIO.FormatMetadata, name: str, value: str) -> None
:module: PyOpenColorIO
Add an attribute with a given name and value. If an attribute with the same name already exists, its value is replaced. Throw if name is NULL or empty.
.. py:method:: FormatMetadata.addChildElement(self: PyOpenColorIO.FormatMetadata, name: str, value: str) -> None
:module: PyOpenColorIO
Add a child element with a given name and value.
Name has to be non-empty. Value may be empty, particularly if this element will have children. Element is added after all existing children. Use getChildElement(getNumChildrenElements()-1) to access the added element.
.. py:method:: FormatMetadata.clear(self: PyOpenColorIO.FormatMetadata) -> None
:module: PyOpenColorIO
Remove all children, all attributes and the value.
.. py:method:: FormatMetadata.getAttributes(self: PyOpenColorIO.FormatMetadata) -> PyOpenColorIO.FormatMetadata.AttributeIterator
:module: PyOpenColorIO
.. py:method:: FormatMetadata.getChildElements(self: PyOpenColorIO.FormatMetadata) -> PyOpenColorIO.FormatMetadata.ChildElementIterator
:module: PyOpenColorIO
.. py:method:: FormatMetadata.getElementName(self: PyOpenColorIO.FormatMetadata) -> str
:module: PyOpenColorIO
.. py:method:: FormatMetadata.getElementValue(self: PyOpenColorIO.FormatMetadata) -> str
:module: PyOpenColorIO
.. py:method:: FormatMetadata.getID(self: PyOpenColorIO.FormatMetadata) -> str
:module: PyOpenColorIO
Convenience method to easily get/set the 'id' attribute. This corresponds to the ProcessNode id attribute from a CLF/CTF file or the ColorCorrection id attribute from a CC/CCC/CDL file.
.. py:method:: FormatMetadata.getName(self: PyOpenColorIO.FormatMetadata) -> str
:module: PyOpenColorIO
Convenience method to easily get/set the 'name' attribute. This corresponds to the ProcessNode name attribute from a CLF / CTF file or the name key of a transform in the config YAML.
.. py:method:: FormatMetadata.setElementName(self: PyOpenColorIO.FormatMetadata, name: str) -> None
:module: PyOpenColorIO
Name has to be a non-empty string. Top-level element can't be renamed. 'ROOT' is reserved.
.. py:method:: FormatMetadata.setElementValue(self: PyOpenColorIO.FormatMetadata, value: str) -> None
:module: PyOpenColorIO
.. py:method:: FormatMetadata.setID(self: PyOpenColorIO.FormatMetadata, id: str) -> None
:module: PyOpenColorIO
.. py:method:: FormatMetadata.setName(self: PyOpenColorIO.FormatMetadata, name: str) -> None
:module: PyOpenColorIO
.. py:class:: AttributeNameIterator
:module: PyOpenColorIO.FormatMetadata
.. py:method:: AttributeNameIterator.__getitem__(self: PyOpenColorIO.FormatMetadata.AttributeNameIterator, arg0: int) -> str
:module: PyOpenColorIO.FormatMetadata
.. py:method:: AttributeNameIterator.__iter__(self: PyOpenColorIO.FormatMetadata.AttributeNameIterator) -> PyOpenColorIO.FormatMetadata.AttributeNameIterator
:module: PyOpenColorIO.FormatMetadata
.. py:method:: AttributeNameIterator.__len__(self: PyOpenColorIO.FormatMetadata.AttributeNameIterator) -> int
:module: PyOpenColorIO.FormatMetadata
.. py:method:: AttributeNameIterator.__next__(self: PyOpenColorIO.FormatMetadata.AttributeNameIterator) -> str
:module: PyOpenColorIO.FormatMetadata
.. py:class:: AttributeIterator
:module: PyOpenColorIO.FormatMetadata
.. py:method:: AttributeIterator.__getitem__(self: PyOpenColorIO.FormatMetadata.AttributeIterator, arg0: int) -> tuple
:module: PyOpenColorIO.FormatMetadata
.. py:method:: AttributeIterator.__iter__(self: PyOpenColorIO.FormatMetadata.AttributeIterator) -> PyOpenColorIO.FormatMetadata.AttributeIterator
:module: PyOpenColorIO.FormatMetadata
.. py:method:: AttributeIterator.__len__(self: PyOpenColorIO.FormatMetadata.AttributeIterator) -> int
:module: PyOpenColorIO.FormatMetadata
.. py:method:: AttributeIterator.__next__(self: PyOpenColorIO.FormatMetadata.AttributeIterator) -> tuple
:module: PyOpenColorIO.FormatMetadata
.. py:class:: ConstChildElementIterator
:module: PyOpenColorIO.FormatMetadata
.. py:method:: ConstChildElementIterator.__getitem__(self: PyOpenColorIO.FormatMetadata.ConstChildElementIterator, arg0: int) -> PyOpenColorIO.FormatMetadata
:module: PyOpenColorIO.FormatMetadata
.. py:method:: ConstChildElementIterator.__iter__(self: PyOpenColorIO.FormatMetadata.ConstChildElementIterator) -> PyOpenColorIO.FormatMetadata.ConstChildElementIterator
:module: PyOpenColorIO.FormatMetadata
.. py:method:: ConstChildElementIterator.__len__(self: PyOpenColorIO.FormatMetadata.ConstChildElementIterator) -> int
:module: PyOpenColorIO.FormatMetadata
.. py:method:: ConstChildElementIterator.__next__(self: PyOpenColorIO.FormatMetadata.ConstChildElementIterator) -> PyOpenColorIO.FormatMetadata
:module: PyOpenColorIO.FormatMetadata
.. py:class:: ChildElementIterator
:module: PyOpenColorIO.FormatMetadata
.. py:method:: ChildElementIterator.__getitem__(self: PyOpenColorIO.FormatMetadata.ChildElementIterator, arg0: int) -> PyOpenColorIO.FormatMetadata
:module: PyOpenColorIO.FormatMetadata
.. py:method:: ChildElementIterator.__iter__(self: PyOpenColorIO.FormatMetadata.ChildElementIterator) -> PyOpenColorIO.FormatMetadata.ChildElementIterator
:module: PyOpenColorIO.FormatMetadata
.. py:method:: ChildElementIterator.__len__(self: PyOpenColorIO.FormatMetadata.ChildElementIterator) -> int
:module: PyOpenColorIO.FormatMetadata
.. py:method:: ChildElementIterator.__next__(self: PyOpenColorIO.FormatMetadata.ChildElementIterator) -> PyOpenColorIO.FormatMetadata
:module: PyOpenColorIO.FormatMetadata
@@ -0,0 +1,10 @@
..
SPDX-License-Identifier: CC-BY-4.0
Copyright Contributors to the OpenColorIO Project.
Do not edit! This file was automatically generated by share/docs/frozendoc.py.
.. py:function:: GetEnvVariable(name: str) -> str
:module: PyOpenColorIO
Another call modifies the string obtained from a previous call as the method always uses the same memory buffer.
@@ -0,0 +1,8 @@
..
SPDX-License-Identifier: CC-BY-4.0
Copyright Contributors to the OpenColorIO Project.
Do not edit! This file was automatically generated by share/docs/frozendoc.py.
.. py:function:: GetInverseTransformDirection(direction: PyOpenColorIO.TransformDirection) -> PyOpenColorIO.TransformDirection
:module: PyOpenColorIO
@@ -0,0 +1,12 @@
..
SPDX-License-Identifier: CC-BY-4.0
Copyright Contributors to the OpenColorIO Project.
Do not edit! This file was automatically generated by share/docs/frozendoc.py.
.. py:function:: GetLoggingLevel() -> PyOpenColorIO.LoggingLevel
:module: PyOpenColorIO
Get the global logging level.
You can override this at runtime using the OCIO_LOGGING_LEVEL environment variable. The client application that sets this should use :ref:`SetLoggingLevel`, and not the environment variable. The default value is INFO.
@@ -0,0 +1,12 @@
..
SPDX-License-Identifier: CC-BY-4.0
Copyright Contributors to the OpenColorIO Project.
Do not edit! This file was automatically generated by share/docs/frozendoc.py.
.. py:function:: GetVersion() -> str
:module: PyOpenColorIO
Get the version number for the library, as a dot-delimited string (e.g., "1.0.0").
This is also available at compile time as OCIO_VERSION_FULL_STR.
@@ -0,0 +1,12 @@
..
SPDX-License-Identifier: CC-BY-4.0
Copyright Contributors to the OpenColorIO Project.
Do not edit! This file was automatically generated by share/docs/frozendoc.py.
.. py:function:: GetVersionHex() -> int
:module: PyOpenColorIO
Get the version number for the library, as a single 4-byte hex number (e.g., 0x01050200 for "1.5.2"), to be used for numeric comparisons.
This is also at compile time as OCIO_VERSION_HEX.
@@ -0,0 +1,74 @@
..
SPDX-License-Identifier: CC-BY-4.0
Copyright Contributors to the OpenColorIO Project.
Do not edit! This file was automatically generated by share/docs/frozendoc.py.
.. py:class:: GpuLanguage
:module: PyOpenColorIO
Used when there is a choice of hardware shader language.
Members:
GPU_LANGUAGE_CG : Nvidia Cg shader.
GPU_LANGUAGE_GLSL_1_2 : OpenGL Shading Language.
GPU_LANGUAGE_GLSL_1_3 : OpenGL Shading Language.
GPU_LANGUAGE_GLSL_4_0 : OpenGL Shading Language.
GPU_LANGUAGE_GLSL_ES_1_0 : OpenGL ES Shading Language.
GPU_LANGUAGE_GLSL_ES_3_0 : OpenGL ES Shading Language.
GPU_LANGUAGE_HLSL_DX11 : DirectX Shading Language.
GPU_LANGUAGE_MSL_2_0 : Metal Shading Language.
.. py:method:: name() -> str
:property:
.. py:attribute:: GpuLanguage.GPU_LANGUAGE_CG
:module: PyOpenColorIO
:value: <GpuLanguage.GPU_LANGUAGE_CG: 0>
.. py:attribute:: GpuLanguage.GPU_LANGUAGE_GLSL_1_2
:module: PyOpenColorIO
:value: <GpuLanguage.GPU_LANGUAGE_GLSL_1_2: 1>
.. py:attribute:: GpuLanguage.GPU_LANGUAGE_GLSL_1_3
:module: PyOpenColorIO
:value: <GpuLanguage.GPU_LANGUAGE_GLSL_1_3: 2>
.. py:attribute:: GpuLanguage.GPU_LANGUAGE_GLSL_4_0
:module: PyOpenColorIO
:value: <GpuLanguage.GPU_LANGUAGE_GLSL_4_0: 3>
.. py:attribute:: GpuLanguage.GPU_LANGUAGE_GLSL_ES_1_0
:module: PyOpenColorIO
:value: <GpuLanguage.GPU_LANGUAGE_GLSL_ES_1_0: 6>
.. py:attribute:: GpuLanguage.GPU_LANGUAGE_GLSL_ES_3_0
:module: PyOpenColorIO
:value: <GpuLanguage.GPU_LANGUAGE_GLSL_ES_3_0: 7>
.. py:attribute:: GpuLanguage.GPU_LANGUAGE_HLSL_DX11
:module: PyOpenColorIO
:value: <GpuLanguage.GPU_LANGUAGE_HLSL_DX11: 4>
.. py:attribute:: GpuLanguage.GPU_LANGUAGE_MSL_2_0
:module: PyOpenColorIO
:value: <GpuLanguage.GPU_LANGUAGE_MSL_2_0: 8>
.. py:property:: GpuLanguage.value
:module: PyOpenColorIO
@@ -0,0 +1,8 @@
..
SPDX-License-Identifier: CC-BY-4.0
Copyright Contributors to the OpenColorIO Project.
Do not edit! This file was automatically generated by share/docs/frozendoc.py.
.. py:function:: GpuLanguageFromString(str: str) -> PyOpenColorIO.GpuLanguage
:module: PyOpenColorIO
@@ -0,0 +1,8 @@
..
SPDX-License-Identifier: CC-BY-4.0
Copyright Contributors to the OpenColorIO Project.
Do not edit! This file was automatically generated by share/docs/frozendoc.py.
.. py:function:: GpuLanguageToString(language: PyOpenColorIO.GpuLanguage) -> str
:module: PyOpenColorIO
@@ -0,0 +1,30 @@
..
SPDX-License-Identifier: CC-BY-4.0
Copyright Contributors to the OpenColorIO Project.
Do not edit! This file was automatically generated by share/docs/frozendoc.py.
.. py:class:: GPUProcessor
:module: PyOpenColorIO
.. py:method:: GPUProcessor.__init__(*args, **kwargs)
:module: PyOpenColorIO
.. py:method:: GPUProcessor.extractGpuShaderInfo(self: PyOpenColorIO.GPUProcessor, shaderDesc: PyOpenColorIO.GpuShaderDesc) -> None
:module: PyOpenColorIO
Extract & Store the shader information to implement the color processing.
.. py:method:: GPUProcessor.getCacheID(self: PyOpenColorIO.GPUProcessor) -> str
:module: PyOpenColorIO
.. py:method:: GPUProcessor.hasChannelCrosstalk(self: PyOpenColorIO.GPUProcessor) -> bool
:module: PyOpenColorIO
.. py:method:: GPUProcessor.isNoOp(self: PyOpenColorIO.GPUProcessor) -> bool
:module: PyOpenColorIO
@@ -0,0 +1,278 @@
..
SPDX-License-Identifier: CC-BY-4.0
Copyright Contributors to the OpenColorIO Project.
Do not edit! This file was automatically generated by share/docs/frozendoc.py.
.. py:class:: GpuShaderCreator
:module: PyOpenColorIO
Inherit from the class to fully customize the implementation of a GPU shader program from a color transformation.
When no customizations are needed and the intermediate in-memory step is acceptable then the :ref:`GpuShaderDesc` is a better choice.
.. note::
To better decouple the DynamicProperties from their GPU implementation, the code provides several addUniform() methods i.e. one per access function types. For example, an :ref:`ExposureContrastTransform` instance owns three DynamicProperties and they are all implemented by a double. When creating the GPU fragment shader program, the addUniform() with :ref:`GpuShaderCreator::DoubleGetter` is called when property is dynamic, up to three times.
**An OCIO shader program could contain:**
- A declaration part e.g., uniform sampled3D tex3;
- Some helper methods
- The OCIO shader function may be broken down as:
- The function header e.g., void OCIODisplay(in vec4 inColor) {
- The function body e.g., vec4 outColor.rgb = texture3D(tex3, inColor.rgb).rgb;
- The function footer e.g., return outColor; }
**Usage Example:**
Below is a code snippet to highlight the different parts of the OCIO shader program.
.. code-block:: cpp
// All global declarations
uniform sampled3D tex3;
// All helper methods
vec3 computePosition(vec3 color)
{
vec3 coords = color;
// Some processing...
return coords;
}
// The shader function
vec4 OCIODisplay(in vec4 inColor) //
{ // Function Header
vec4 outColor = inColor; //
outColor.rgb = texture3D(tex3, computePosition(inColor.rgb)).rgb;
return outColor; // Function Footer
} //
.. py:attribute:: GpuShaderCreator.TEXTURE_1D
:module: PyOpenColorIO
:value: <TextureDimensions.TEXTURE_1D: 1>
.. py:attribute:: GpuShaderCreator.TEXTURE_2D
:module: PyOpenColorIO
:value: <TextureDimensions.TEXTURE_2D: 2>
.. py:class:: GpuShaderCreator.TextureDimensions
:module: PyOpenColorIO
:canonical: PyOpenColorIO.GpuShaderCreator.TextureDimensions
Dimension enum used to differentiate between 1D and 2D object/resource types.
Members:
TEXTURE_1D
TEXTURE_2D
.. py:attribute:: GpuShaderCreator.TextureDimensions.TEXTURE_1D
:module: PyOpenColorIO
:value: <TextureDimensions.TEXTURE_1D: 1>
.. py:attribute:: GpuShaderCreator.TextureDimensions.TEXTURE_2D
:module: PyOpenColorIO
:value: <TextureDimensions.TEXTURE_2D: 2>
.. py:property:: GpuShaderCreator.TextureDimensions.name
:module: PyOpenColorIO
.. py:property:: GpuShaderCreator.TextureDimensions.value
:module: PyOpenColorIO
.. py:method:: GpuShaderCreator.addToDeclareShaderCode(self: PyOpenColorIO.GpuShaderCreator, shaderCode: str) -> None
:module: PyOpenColorIO
.. py:method:: GpuShaderCreator.addToFunctionFooterShaderCode(self: PyOpenColorIO.GpuShaderCreator, shaderCode: str) -> None
:module: PyOpenColorIO
.. py:method:: GpuShaderCreator.addToFunctionHeaderShaderCode(self: PyOpenColorIO.GpuShaderCreator, shaderCode: str) -> None
:module: PyOpenColorIO
.. py:method:: GpuShaderCreator.addToFunctionShaderCode(self: PyOpenColorIO.GpuShaderCreator, shaderCode: str) -> None
:module: PyOpenColorIO
.. py:method:: GpuShaderCreator.addToHelperShaderCode(self: PyOpenColorIO.GpuShaderCreator, shaderCode: str) -> None
:module: PyOpenColorIO
.. py:method:: GpuShaderCreator.begin(self: PyOpenColorIO.GpuShaderCreator, uid: str) -> None
:module: PyOpenColorIO
Start to collect the shader data.
.. py:method:: GpuShaderCreator.clone(self: PyOpenColorIO.GpuShaderCreator) -> PyOpenColorIO.GpuShaderCreator
:module: PyOpenColorIO
.. py:method:: GpuShaderCreator.createShaderText(self: PyOpenColorIO.GpuShaderCreator, shaderDeclarations: str, shaderHelperMethods: str, shaderFunctionHeader: str, shaderFunctionBody: str, shaderFunctionFooter: str) -> None
:module: PyOpenColorIO
Create the OCIO shader program.
.. note::
The OCIO shader program is decomposed to allow a specific implementation to change some parts. Some product integrations add the color processing within a client shader program, imposing constraints requiring this flexibility.
.. py:method:: GpuShaderCreator.end(self: PyOpenColorIO.GpuShaderCreator) -> None
:module: PyOpenColorIO
End to collect the shader data.
.. py:method:: GpuShaderCreator.finalize(self: PyOpenColorIO.GpuShaderCreator) -> None
:module: PyOpenColorIO
.. py:method:: GpuShaderCreator.getAllowTexture1D(self: PyOpenColorIO.GpuShaderCreator) -> bool
:module: PyOpenColorIO
.. py:method:: GpuShaderCreator.getCacheID(self: PyOpenColorIO.GpuShaderCreator) -> str
:module: PyOpenColorIO
.. py:method:: GpuShaderCreator.getDynamicProperties(self: PyOpenColorIO.GpuShaderCreator) -> PyOpenColorIO.GpuShaderCreator.DynamicPropertyIterator
:module: PyOpenColorIO
.. py:method:: GpuShaderCreator.getDynamicProperty(self: PyOpenColorIO.GpuShaderCreator, type: PyOpenColorIO.DynamicPropertyType) -> PyOpenColorIO.DynamicProperty
:module: PyOpenColorIO
.. py:method:: GpuShaderCreator.getFunctionName(self: PyOpenColorIO.GpuShaderCreator) -> str
:module: PyOpenColorIO
.. py:method:: GpuShaderCreator.getLanguage(self: PyOpenColorIO.GpuShaderCreator) -> PyOpenColorIO.GpuLanguage
:module: PyOpenColorIO
.. py:method:: GpuShaderCreator.getNextResourceIndex(self: PyOpenColorIO.GpuShaderCreator) -> int
:module: PyOpenColorIO
To avoid global texture sampler and uniform name clashes always append an increasing index to the resource name.
.. py:method:: GpuShaderCreator.getPixelName(self: PyOpenColorIO.GpuShaderCreator) -> str
:module: PyOpenColorIO
.. py:method:: GpuShaderCreator.getResourcePrefix(self: PyOpenColorIO.GpuShaderCreator) -> str
:module: PyOpenColorIO
.. note::
Some applications require that textures, uniforms, and helper methods be uniquely named because several processor instances could coexist.
.. py:method:: GpuShaderCreator.getTextureMaxWidth(self: PyOpenColorIO.GpuShaderCreator) -> int
:module: PyOpenColorIO
.. py:method:: GpuShaderCreator.getUniqueID(self: PyOpenColorIO.GpuShaderCreator) -> str
:module: PyOpenColorIO
.. py:method:: GpuShaderCreator.hasDynamicProperty(self: PyOpenColorIO.GpuShaderCreator, type: PyOpenColorIO.DynamicPropertyType) -> bool
:module: PyOpenColorIO
.. py:method:: GpuShaderCreator.setAllowTexture1D(self: PyOpenColorIO.GpuShaderCreator, allowed: bool) -> None
:module: PyOpenColorIO
Allow 1D GPU resource type, otherwise always using 2D resources for 1D LUTs.
.. py:method:: GpuShaderCreator.setFunctionName(self: PyOpenColorIO.GpuShaderCreator, name: str) -> None
:module: PyOpenColorIO
.. py:method:: GpuShaderCreator.setLanguage(self: PyOpenColorIO.GpuShaderCreator, language: PyOpenColorIO.GpuLanguage) -> None
:module: PyOpenColorIO
Set the shader program language.
.. py:method:: GpuShaderCreator.setPixelName(self: PyOpenColorIO.GpuShaderCreator, name: str) -> None
:module: PyOpenColorIO
Set the pixel name variable holding the color values.
.. py:method:: GpuShaderCreator.setResourcePrefix(self: PyOpenColorIO.GpuShaderCreator, prefix: str) -> None
:module: PyOpenColorIO
Set a prefix to the resource name.
.. py:method:: GpuShaderCreator.setTextureMaxWidth(self: PyOpenColorIO.GpuShaderCreator, maxWidth: int) -> None
:module: PyOpenColorIO
Some graphic cards could have 1D & 2D textures with size limitations.
.. py:method:: GpuShaderCreator.setUniqueID(self: PyOpenColorIO.GpuShaderCreator, uid: str) -> None
:module: PyOpenColorIO
.. py:class:: TextureType
:module: PyOpenColorIO.GpuShaderCreator
Members:
TEXTURE_RED_CHANNEL
TEXTURE_RGB_CHANNEL
.. py:method:: name() -> str
:property:
.. py:attribute:: TextureType.TEXTURE_RED_CHANNEL
:module: PyOpenColorIO.GpuShaderCreator
:value: <TextureType.TEXTURE_RED_CHANNEL: 0>
.. py:attribute:: TextureType.TEXTURE_RGB_CHANNEL
:module: PyOpenColorIO.GpuShaderCreator
:value: <TextureType.TEXTURE_RGB_CHANNEL: 1>
.. py:property:: TextureType.value
:module: PyOpenColorIO.GpuShaderCreator
.. py:class:: DynamicPropertyIterator
:module: PyOpenColorIO.GpuShaderCreator
.. py:method:: DynamicPropertyIterator.__getitem__(self: PyOpenColorIO.GpuShaderCreator.DynamicPropertyIterator, arg0: int) -> PyOpenColorIO.DynamicProperty
:module: PyOpenColorIO.GpuShaderCreator
.. py:method:: DynamicPropertyIterator.__iter__(self: PyOpenColorIO.GpuShaderCreator.DynamicPropertyIterator) -> PyOpenColorIO.GpuShaderCreator.DynamicPropertyIterator
:module: PyOpenColorIO.GpuShaderCreator
.. py:method:: DynamicPropertyIterator.__len__(self: PyOpenColorIO.GpuShaderCreator.DynamicPropertyIterator) -> int
:module: PyOpenColorIO.GpuShaderCreator
.. py:method:: DynamicPropertyIterator.__next__(self: PyOpenColorIO.GpuShaderCreator.DynamicPropertyIterator) -> PyOpenColorIO.DynamicProperty
:module: PyOpenColorIO.GpuShaderCreator
@@ -0,0 +1,568 @@
..
SPDX-License-Identifier: CC-BY-4.0
Copyright Contributors to the OpenColorIO Project.
Do not edit! This file was automatically generated by share/docs/frozendoc.py.
.. py:class:: GpuShaderDesc
:module: PyOpenColorIO
This class holds the GPU-related information needed to build a shader program from a specific processor.
This class defines the interface and there are two implementations provided. The "legacy" mode implements the OCIO v1 approach of baking certain ops in order to have at most one 3D-LUT. The "generic" mode is the v2 default and allows all the ops to be processed as-is, without baking, like the CPU renderer. Custom implementations could be written to accommodate the GPU needs of a specific client app.
The complete fragment shader program is decomposed in two main parts: the OCIO shader program for the color processing and the client shader program which consumes the pixel color processing.
The OCIO shader program is fully described by the :ref:`GpuShaderDesc` independently from the client shader program. The only critical point is the agreement on the OCIO function shader name.
To summarize, the complete shader program is:
.. code-block:: cpp
// //
// The complete fragment shader program //
// //
// //
// ////////////////////////////////////////////////////////////// //
// // // //
// // The OCIO shader program // //
// // // //
// ////////////////////////////////////////////////////////////// //
// // // //
// // // All global declarations // //
// // uniform sampled3D tex3; // //
// // // //
// // // All helper methods // //
// // vec3 computePos(vec3 color) // //
// // { // //
// // vec3 coords = color; // //
// // ... // //
// // return coords; // //
// // } // //
// // // //
// // // The OCIO shader function // //
// // vec4 OCIODisplay(in vec4 inColor) // //
// // { // //
// // vec4 outColor = inColor; // //
// // ... // //
// // outColor.rbg // //
// // = texture3D(tex3, computePos(inColor.rgb)).rgb; // //
// // ... // //
// // return outColor; // //
// // } // //
// // // //
// ////////////////////////////////////////////////////////////// //
// //
// ////////////////////////////////////////////////////////////// //
// // // //
// // The client shader program // //
// // // //
// ////////////////////////////////////////////////////////////// //
// // // //
// // uniform sampler2D image; // //
// // // //
// // void main() // //
// // { // //
// // vec4 inColor = texture2D(image, gl_TexCoord[0].st); // //
// // ... // //
// // vec4 outColor = OCIODisplay(inColor); // //
// // ... // //
// // gl_FragColor = outColor; // //
// // } // //
// // // //
// ////////////////////////////////////////////////////////////// //
// //
////////////////////////////////////////////////////////////////////////
**Usage Example:** *Building a GPU shader*
This example is based on the code in: src/apps/ociodisplay/main.cpp
.. code-block:: cpp
// Get the processor
//
OCIO::ConstConfigRcPtr config = OCIO::Config::CreateFromEnv();
OCIO::ConstProcessorRcPtr processor
= config->getProcessor("ACES - ACEScg", "Output - sRGB");
// Step 1: Create a GPU shader description
//
// The two potential scenarios are:
//
// 1. Instantiate the generic shader description. The color processor
// is used as-is (i.e. without any baking step) and could contain
// any number of 1D & 3D luts.
//
// This is the default OCIO v2 behavior and allows a much better
// match between the CPU and GPU renderers.
//
OCIO::GpuShaderDescRcPtr shaderDesc = OCIO::GpuShaderDesc::Create();
//
// 2. Instantiate a custom shader description.
//
// Writing a custom shader description is a way to tailor the shaders
// to the needs of a given client program. This involves writing a
// new class inheriting from the pure virtual class GpuShaderDesc.
//
// Please refer to the GenericGpuShaderDesc class for an example.
//
OCIO::GpuShaderDescRcPtr shaderDesc = MyCustomGpuShader::Create();
shaderDesc->setLanguage(OCIO::GPU_LANGUAGE_GLSL_1_2);
shaderDesc->setFunctionName("OCIODisplay");
// Step 2: Collect the shader program information for a specific processor
//
processor->extractGpuShaderInfo(shaderDesc);
// Step 3: Create a helper to build the shader. Here we use a helper for
// OpenGL but there will also be helpers for other languages.
//
OpenGLBuilderRcPtr oglBuilder = OpenGLBuilder::Create(shaderDesc);
// Step 4: Allocate & upload all the LUTs
//
oglBuilder->allocateAllTextures();
// Step 5: Build the complete fragment shader program using
// g_fragShaderText which is the client shader program.
//
g_programId = oglBuilder->buildProgram(g_fragShaderText);
// Step 6: Enable the fragment shader program, and all needed textures
//
glUseProgram(g_programId);
glUniform1i(glGetUniformLocation(g_programId, "tex1"), 1); // image texture
oglBuilder->useAllTextures(g_programId); // LUT textures
// Step 7: Update uniforms from dynamic property instances.
m_oglBuilder->useAllUniforms();
.. py:method:: GpuShaderDesc.CreateShaderDesc(language: PyOpenColorIO.GpuLanguage = <GpuLanguage.GPU_LANGUAGE_GLSL_1_2: 1>, functionName: str = 'OCIOMain', pixelName: str = 'outColor', resourcePrefix: str = 'ocio', uid: str = '') -> PyOpenColorIO.GpuShaderDesc
:module: PyOpenColorIO
:staticmethod:
Create the default shader description.
.. py:attribute:: GpuShaderDesc.TEXTURE_1D
:module: PyOpenColorIO
:value: <TextureDimensions.TEXTURE_1D: 1>
.. py:attribute:: GpuShaderDesc.TEXTURE_2D
:module: PyOpenColorIO
:value: <TextureDimensions.TEXTURE_2D: 2>
.. py:class:: GpuShaderDesc.TextureDimensions
:module: PyOpenColorIO
:canonical: PyOpenColorIO.GpuShaderCreator.TextureDimensions
Dimension enum used to differentiate between 1D and 2D object/resource types.
Members:
TEXTURE_1D
TEXTURE_2D
.. py:attribute:: GpuShaderDesc.TextureDimensions.TEXTURE_1D
:module: PyOpenColorIO
:value: <TextureDimensions.TEXTURE_1D: 1>
.. py:attribute:: GpuShaderDesc.TextureDimensions.TEXTURE_2D
:module: PyOpenColorIO
:value: <TextureDimensions.TEXTURE_2D: 2>
.. py:method:: GpuShaderDesc.TextureDimensions.__init__(self: PyOpenColorIO.GpuShaderCreator.TextureDimensions, value: int) -> None
:module: PyOpenColorIO
.. py:property:: GpuShaderDesc.TextureDimensions.name
:module: PyOpenColorIO
.. py:property:: GpuShaderDesc.TextureDimensions.value
:module: PyOpenColorIO
.. py:method:: GpuShaderDesc.__init__(*args, **kwargs)
:module: PyOpenColorIO
.. py:method:: GpuShaderDesc.add3DTexture(self: PyOpenColorIO.GpuShaderDesc, textureName: str, samplerName: str, edgeLen: int, interpolation: PyOpenColorIO.Interpolation, values: buffer) -> None
:module: PyOpenColorIO
Add a 3D texture with RGB channel type.
.. note::
The 'values' parameter contains the 3D LUT data which must be used as-is as the dimension and origin are hard-coded in the fragment shader program. So, it means one GPU 3D texture per entry.
.. py:method:: GpuShaderDesc.addTexture(self: PyOpenColorIO.GpuShaderDesc, textureName: str, samplerName: str, width: int, height: int, channel: PyOpenColorIO.GpuShaderCreator.TextureType, dimensions: PyOpenColorIO.GpuShaderCreator.TextureDimensions, interpolation: PyOpenColorIO.Interpolation, values: buffer) -> None
:module: PyOpenColorIO
Add a 1D or 2D texture
.. note::
The 'values' parameter contains the LUT data which must be used as-is as the dimensions and origin are hard-coded in the fragment shader program. So, it means one GPU texture per entry.
.. py:method:: GpuShaderDesc.addToDeclareShaderCode(self: PyOpenColorIO.GpuShaderCreator, shaderCode: str) -> None
:module: PyOpenColorIO
.. py:method:: GpuShaderDesc.addToFunctionFooterShaderCode(self: PyOpenColorIO.GpuShaderCreator, shaderCode: str) -> None
:module: PyOpenColorIO
.. py:method:: GpuShaderDesc.addToFunctionHeaderShaderCode(self: PyOpenColorIO.GpuShaderCreator, shaderCode: str) -> None
:module: PyOpenColorIO
.. py:method:: GpuShaderDesc.addToFunctionShaderCode(self: PyOpenColorIO.GpuShaderCreator, shaderCode: str) -> None
:module: PyOpenColorIO
.. py:method:: GpuShaderDesc.addToHelperShaderCode(self: PyOpenColorIO.GpuShaderCreator, shaderCode: str) -> None
:module: PyOpenColorIO
.. py:method:: GpuShaderDesc.begin(self: PyOpenColorIO.GpuShaderCreator, uid: str) -> None
:module: PyOpenColorIO
Start to collect the shader data.
.. py:method:: GpuShaderDesc.clone(self: PyOpenColorIO.GpuShaderDesc) -> PyOpenColorIO.GpuShaderCreator
:module: PyOpenColorIO
.. py:method:: GpuShaderDesc.createShaderText(self: PyOpenColorIO.GpuShaderCreator, shaderDeclarations: str, shaderHelperMethods: str, shaderFunctionHeader: str, shaderFunctionBody: str, shaderFunctionFooter: str) -> None
:module: PyOpenColorIO
Create the OCIO shader program.
.. note::
The OCIO shader program is decomposed to allow a specific implementation to change some parts. Some product integrations add the color processing within a client shader program, imposing constraints requiring this flexibility.
.. py:method:: GpuShaderDesc.end(self: PyOpenColorIO.GpuShaderCreator) -> None
:module: PyOpenColorIO
End to collect the shader data.
.. py:method:: GpuShaderDesc.finalize(self: PyOpenColorIO.GpuShaderCreator) -> None
:module: PyOpenColorIO
.. py:method:: GpuShaderDesc.get3DTextures(self: PyOpenColorIO.GpuShaderDesc) -> PyOpenColorIO.GpuShaderDesc.Texture3DIterator
:module: PyOpenColorIO
.. py:method:: GpuShaderDesc.getAllowTexture1D(self: PyOpenColorIO.GpuShaderCreator) -> bool
:module: PyOpenColorIO
.. py:method:: GpuShaderDesc.getCacheID(self: PyOpenColorIO.GpuShaderCreator) -> str
:module: PyOpenColorIO
.. py:method:: GpuShaderDesc.getDynamicProperties(self: PyOpenColorIO.GpuShaderCreator) -> PyOpenColorIO.GpuShaderCreator.DynamicPropertyIterator
:module: PyOpenColorIO
.. py:method:: GpuShaderDesc.getDynamicProperty(self: PyOpenColorIO.GpuShaderCreator, type: PyOpenColorIO.DynamicPropertyType) -> PyOpenColorIO.DynamicProperty
:module: PyOpenColorIO
.. py:method:: GpuShaderDesc.getFunctionName(self: PyOpenColorIO.GpuShaderCreator) -> str
:module: PyOpenColorIO
.. py:method:: GpuShaderDesc.getLanguage(self: PyOpenColorIO.GpuShaderCreator) -> PyOpenColorIO.GpuLanguage
:module: PyOpenColorIO
.. py:method:: GpuShaderDesc.getNextResourceIndex(self: PyOpenColorIO.GpuShaderCreator) -> int
:module: PyOpenColorIO
To avoid global texture sampler and uniform name clashes always append an increasing index to the resource name.
.. py:method:: GpuShaderDesc.getPixelName(self: PyOpenColorIO.GpuShaderCreator) -> str
:module: PyOpenColorIO
.. py:method:: GpuShaderDesc.getResourcePrefix(self: PyOpenColorIO.GpuShaderCreator) -> str
:module: PyOpenColorIO
.. note::
Some applications require that textures, uniforms, and helper methods be uniquely named because several processor instances could coexist.
.. py:method:: GpuShaderDesc.getShaderText(self: PyOpenColorIO.GpuShaderDesc) -> str
:module: PyOpenColorIO
Get the complete OCIO shader program.
.. py:method:: GpuShaderDesc.getTextureMaxWidth(self: PyOpenColorIO.GpuShaderCreator) -> int
:module: PyOpenColorIO
.. py:method:: GpuShaderDesc.getTextures(self: PyOpenColorIO.GpuShaderDesc) -> PyOpenColorIO.GpuShaderDesc.TextureIterator
:module: PyOpenColorIO
.. py:method:: GpuShaderDesc.getUniforms(self: PyOpenColorIO.GpuShaderDesc) -> PyOpenColorIO.GpuShaderDesc.UniformIterator
:module: PyOpenColorIO
.. py:method:: GpuShaderDesc.getUniqueID(self: PyOpenColorIO.GpuShaderCreator) -> str
:module: PyOpenColorIO
.. py:method:: GpuShaderDesc.hasDynamicProperty(self: PyOpenColorIO.GpuShaderCreator, type: PyOpenColorIO.DynamicPropertyType) -> bool
:module: PyOpenColorIO
.. py:method:: GpuShaderDesc.setAllowTexture1D(self: PyOpenColorIO.GpuShaderCreator, allowed: bool) -> None
:module: PyOpenColorIO
Allow 1D GPU resource type, otherwise always using 2D resources for 1D LUTs.
.. py:method:: GpuShaderDesc.setFunctionName(self: PyOpenColorIO.GpuShaderCreator, name: str) -> None
:module: PyOpenColorIO
.. py:method:: GpuShaderDesc.setLanguage(self: PyOpenColorIO.GpuShaderCreator, language: PyOpenColorIO.GpuLanguage) -> None
:module: PyOpenColorIO
Set the shader program language.
.. py:method:: GpuShaderDesc.setPixelName(self: PyOpenColorIO.GpuShaderCreator, name: str) -> None
:module: PyOpenColorIO
Set the pixel name variable holding the color values.
.. py:method:: GpuShaderDesc.setResourcePrefix(self: PyOpenColorIO.GpuShaderCreator, prefix: str) -> None
:module: PyOpenColorIO
Set a prefix to the resource name.
.. py:method:: GpuShaderDesc.setTextureMaxWidth(self: PyOpenColorIO.GpuShaderCreator, maxWidth: int) -> None
:module: PyOpenColorIO
Some graphic cards could have 1D & 2D textures with size limitations.
.. py:method:: GpuShaderDesc.setUniqueID(self: PyOpenColorIO.GpuShaderCreator, uid: str) -> None
:module: PyOpenColorIO
.. py:class:: TextureType
:module: PyOpenColorIO.GpuShaderDesc
:canonical: PyOpenColorIO.GpuShaderCreator.TextureType
Members:
TEXTURE_RED_CHANNEL
TEXTURE_RGB_CHANNEL
.. py:method:: name() -> str
:property:
.. py:attribute:: TextureType.TEXTURE_RED_CHANNEL
:module: PyOpenColorIO.GpuShaderDesc
:value: <TextureType.TEXTURE_RED_CHANNEL: 0>
.. py:attribute:: TextureType.TEXTURE_RGB_CHANNEL
:module: PyOpenColorIO.GpuShaderDesc
:value: <TextureType.TEXTURE_RGB_CHANNEL: 1>
.. py:property:: TextureType.value
:module: PyOpenColorIO.GpuShaderDesc
.. py:class:: UniformData
:module: PyOpenColorIO.GpuShaderDesc
.. py:method:: UniformData.getBool(self: PyOpenColorIO.GpuShaderDesc.UniformData) -> bool
:module: PyOpenColorIO.GpuShaderDesc
.. py:method:: UniformData.getDouble(self: PyOpenColorIO.GpuShaderDesc.UniformData) -> float
:module: PyOpenColorIO.GpuShaderDesc
.. py:method:: UniformData.getFloat3(self: PyOpenColorIO.GpuShaderDesc.UniformData) -> List[float[3]]
:module: PyOpenColorIO.GpuShaderDesc
.. py:method:: UniformData.getVectorFloat(self: PyOpenColorIO.GpuShaderDesc.UniformData) -> numpy.ndarray
:module: PyOpenColorIO.GpuShaderDesc
.. py:method:: UniformData.getVectorInt(self: PyOpenColorIO.GpuShaderDesc.UniformData) -> numpy.ndarray
:module: PyOpenColorIO.GpuShaderDesc
.. py:property:: UniformData.type
:module: PyOpenColorIO.GpuShaderDesc
.. py:class:: Texture
:module: PyOpenColorIO.GpuShaderDesc
.. py:property:: Texture.channel
:module: PyOpenColorIO.GpuShaderDesc
.. py:property:: Texture.dimensions
:module: PyOpenColorIO.GpuShaderDesc
.. py:method:: Texture.getValues(self: PyOpenColorIO.GpuShaderDesc.Texture) -> numpy.ndarray
:module: PyOpenColorIO.GpuShaderDesc
.. py:property:: Texture.height
:module: PyOpenColorIO.GpuShaderDesc
.. py:property:: Texture.interpolation
:module: PyOpenColorIO.GpuShaderDesc
.. py:property:: Texture.samplerName
:module: PyOpenColorIO.GpuShaderDesc
.. py:property:: Texture.textureName
:module: PyOpenColorIO.GpuShaderDesc
.. py:property:: Texture.width
:module: PyOpenColorIO.GpuShaderDesc
.. py:class:: Texture3D
:module: PyOpenColorIO.GpuShaderDesc
.. py:property:: Texture3D.edgeLen
:module: PyOpenColorIO.GpuShaderDesc
.. py:method:: Texture3D.getValues(self: PyOpenColorIO.GpuShaderDesc.Texture3D) -> numpy.ndarray
:module: PyOpenColorIO.GpuShaderDesc
.. py:property:: Texture3D.interpolation
:module: PyOpenColorIO.GpuShaderDesc
.. py:property:: Texture3D.samplerName
:module: PyOpenColorIO.GpuShaderDesc
.. py:property:: Texture3D.textureName
:module: PyOpenColorIO.GpuShaderDesc
.. py:class:: UniformIterator
:module: PyOpenColorIO.GpuShaderDesc
.. py:method:: UniformIterator.__getitem__(self: PyOpenColorIO.GpuShaderDesc.UniformIterator, arg0: int) -> tuple
:module: PyOpenColorIO.GpuShaderDesc
.. py:method:: UniformIterator.__iter__(self: PyOpenColorIO.GpuShaderDesc.UniformIterator) -> PyOpenColorIO.GpuShaderDesc.UniformIterator
:module: PyOpenColorIO.GpuShaderDesc
.. py:method:: UniformIterator.__len__(self: PyOpenColorIO.GpuShaderDesc.UniformIterator) -> int
:module: PyOpenColorIO.GpuShaderDesc
.. py:method:: UniformIterator.__next__(self: PyOpenColorIO.GpuShaderDesc.UniformIterator) -> tuple
:module: PyOpenColorIO.GpuShaderDesc
.. py:class:: TextureIterator
:module: PyOpenColorIO.GpuShaderDesc
.. py:method:: TextureIterator.__getitem__(self: PyOpenColorIO.GpuShaderDesc.TextureIterator, arg0: int) -> PyOpenColorIO.GpuShaderDesc.Texture
:module: PyOpenColorIO.GpuShaderDesc
.. py:method:: TextureIterator.__iter__(self: PyOpenColorIO.GpuShaderDesc.TextureIterator) -> PyOpenColorIO.GpuShaderDesc.TextureIterator
:module: PyOpenColorIO.GpuShaderDesc
.. py:method:: TextureIterator.__len__(self: PyOpenColorIO.GpuShaderDesc.TextureIterator) -> int
:module: PyOpenColorIO.GpuShaderDesc
.. py:method:: TextureIterator.__next__(self: PyOpenColorIO.GpuShaderDesc.TextureIterator) -> PyOpenColorIO.GpuShaderDesc.Texture
:module: PyOpenColorIO.GpuShaderDesc
.. py:class:: Texture3DIterator
:module: PyOpenColorIO.GpuShaderDesc
.. py:method:: Texture3DIterator.__getitem__(self: PyOpenColorIO.GpuShaderDesc.Texture3DIterator, arg0: int) -> PyOpenColorIO.GpuShaderDesc.Texture3D
:module: PyOpenColorIO.GpuShaderDesc
.. py:method:: Texture3DIterator.__iter__(self: PyOpenColorIO.GpuShaderDesc.Texture3DIterator) -> PyOpenColorIO.GpuShaderDesc.Texture3DIterator
:module: PyOpenColorIO.GpuShaderDesc
.. py:method:: Texture3DIterator.__len__(self: PyOpenColorIO.GpuShaderDesc.Texture3DIterator) -> int
:module: PyOpenColorIO.GpuShaderDesc
.. py:method:: Texture3DIterator.__next__(self: PyOpenColorIO.GpuShaderDesc.Texture3DIterator) -> PyOpenColorIO.GpuShaderDesc.Texture3D
:module: PyOpenColorIO.GpuShaderDesc
.. py:class:: DynamicPropertyIterator
:module: PyOpenColorIO.GpuShaderDesc
:canonical: PyOpenColorIO.GpuShaderCreator.DynamicPropertyIterator
.. py:method:: DynamicPropertyIterator.__getitem__(self: PyOpenColorIO.GpuShaderCreator.DynamicPropertyIterator, arg0: int) -> PyOpenColorIO.DynamicProperty
:module: PyOpenColorIO.GpuShaderDesc
.. py:method:: DynamicPropertyIterator.__iter__(self: PyOpenColorIO.GpuShaderCreator.DynamicPropertyIterator) -> PyOpenColorIO.GpuShaderCreator.DynamicPropertyIterator
:module: PyOpenColorIO.GpuShaderDesc
.. py:method:: DynamicPropertyIterator.__len__(self: PyOpenColorIO.GpuShaderCreator.DynamicPropertyIterator) -> int
:module: PyOpenColorIO.GpuShaderDesc
.. py:method:: DynamicPropertyIterator.__next__(self: PyOpenColorIO.GpuShaderCreator.DynamicPropertyIterator) -> PyOpenColorIO.DynamicProperty
:module: PyOpenColorIO.GpuShaderDesc
@@ -0,0 +1,60 @@
..
SPDX-License-Identifier: CC-BY-4.0
Copyright Contributors to the OpenColorIO Project.
Do not edit! This file was automatically generated by share/docs/frozendoc.py.
.. py:class:: GradingBSplineCurve
:module: PyOpenColorIO
A BSpline curve defined with :ref:`GradingControlPoint`.
.. py:method:: GradingBSplineCurve.__init__(*args, **kwargs)
:module: PyOpenColorIO
Overloaded function.
1. __init__(self: PyOpenColorIO.GradingBSplineCurve, size: int) -> None
Create a BSpline curve with a specified number of control points.
2. __init__(self: PyOpenColorIO.GradingBSplineCurve, arg0: List[float]) -> None
Create a BSpline curve with a list of control points.
.. py:method:: GradingBSplineCurve.getControlPoints(self: PyOpenColorIO.GradingBSplineCurve) -> PyOpenColorIO.GradingBSplineCurve.GradingControlPointIterator
:module: PyOpenColorIO
.. py:method:: GradingBSplineCurve.setNumControlPoints(self: PyOpenColorIO.GradingBSplineCurve, size: int) -> None
:module: PyOpenColorIO
.. py:method:: GradingBSplineCurve.validate(self: PyOpenColorIO.GradingBSplineCurve) -> None
:module: PyOpenColorIO
.. py:class:: GradingControlPointIterator
:module: PyOpenColorIO.GradingBSplineCurve
.. py:method:: GradingControlPointIterator.__getitem__(self: PyOpenColorIO.GradingBSplineCurve.GradingControlPointIterator, arg0: int) -> PyOpenColorIO.GradingControlPoint
:module: PyOpenColorIO.GradingBSplineCurve
.. py:method:: GradingControlPointIterator.__iter__(self: PyOpenColorIO.GradingBSplineCurve.GradingControlPointIterator) -> PyOpenColorIO.GradingBSplineCurve.GradingControlPointIterator
:module: PyOpenColorIO.GradingBSplineCurve
.. py:method:: GradingControlPointIterator.__len__(self: PyOpenColorIO.GradingBSplineCurve.GradingControlPointIterator) -> int
:module: PyOpenColorIO.GradingBSplineCurve
.. py:method:: GradingControlPointIterator.__next__(self: PyOpenColorIO.GradingBSplineCurve.GradingControlPointIterator) -> PyOpenColorIO.GradingControlPoint
:module: PyOpenColorIO.GradingBSplineCurve
.. py:method:: GradingControlPointIterator.__setitem__(self: PyOpenColorIO.GradingBSplineCurve.GradingControlPointIterator, arg0: int, arg1: PyOpenColorIO.GradingControlPoint) -> None
:module: PyOpenColorIO.GradingBSplineCurve

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