Improve documentation (#730)

- Rework navigation among the multiple Doxygen projects for much easier use.
- Rename new ktx tool man pages from `ktxtools_*` to `ktx_*`
- Add `ktx` tool mainpage based on RELEASE_NOTES info.
- Make minor formatting fix in `ktx` man page.
- Update acknowledgements.
- Remove outdated TODO.md.
- Add script to do `$Date$` keyword smudging. Use it in CI and reference it from
  README.md to avoid repetition of list of files needing smudging.
- Add `$Date$` keywords to some docs.
- Remove `$Date$` and #ident keywords that are no longer needed or used.
- Document the parts of `khr_df.h` relevant to the libktx API.
This commit is contained in:
Mark Callow
2023-07-05 20:41:13 +09:00
committed by GitHub
parent 2189c54e3e
commit 69b1685a7a
38 changed files with 1379 additions and 7500 deletions

View File

@@ -1,23 +0,0 @@
# Copyright 2015-2020 The Khronos Group Inc.
# SPDX-License-Identifier: Apache-2.0
# CodeDocs configuration file
# Use the project's doxygen config file.
DOXYFILE = libktx.doxy
# The following are necessary because CodeDocs does not follow the
# INPUT specified in ktxDoxy.
# One or more directories and files to exclude from documentation
# generation. Use relative paths with respect to the repository root
# directory.
EXCLUDE = build BUILDING.md CONTRIBUTING.md GNUmakefile gyp_include \
icons lib/checkheader.c lib/etcdec.cxx lib/ktxint.h \
other_include other_lib pkgdoc README.md tests tools utils
# One or more wildcard patterns to exclude files and directories
# from document generation.
EXCLUDE_PATTERNS = *.bat *.doxy *.gyp *.gypi *.sh*.yml *_format.h *stream.* *funcptrs.*
#vim:ai:ts=4:sts=4:sw=2:expandtab:textwidth=70

11
.gitattributes vendored
View File

@@ -41,19 +41,14 @@ mkversion eol=lf
GNUmakefile eol=lf
# Keyword expansion
GNUmakefile ident
TODO.md filter=keyworder
lib/*.[ch] ident
lib/*.cxx ident
lib/mainpage.md filter=keyworder
interface/js_binding/ktx_wrapper.cpp filter=keyworder
lib/libktx_mainpage.md filter=keyworder
pkgdoc/pages.md filter=keyworder
tools/ktxtools_mainpage.md filter=keyworder
tests/loadtests/common/at.[ch] ident
tests/loadtests/common/egltowgl.c ident
tests/loadtests/gles1/*.c ident
tests/loadtests/shader-based/*.c ident
tools/ktx2ktx2/ktx2ktx2.cpp ident
tools/ktxinfo/ktxinfo.cpp ident
tools/toktx/toktx.cpp filter=keyworder ident
# LFS attributes
*.a filter=lfs -text

View File

@@ -167,6 +167,12 @@ jobs:
distribution: 'temurin'
java-version: '17'
- name: Smudge embedded dates
if: matrix.options.doc == 'ON'
run: |
./install-gitconfig.ps1
ci_scripts/smudge_date.ps1
- name: Build Windows
# The installers run as part of "Install Dependencies" add
# environment variables to the registry and augment $Path there.

View File

@@ -151,7 +151,7 @@ Copyright: 2020 Andreas Atteneder
License: Apache-2.0
Files: pkgdoc/*
Copyright: 2018-2020 The Khronos Group Inc.
Copyright: 2018-2023 The Khronos Group Inc.
License: Apache-2.0
Files: tests/webgl/libktx-gltf/*

View File

@@ -232,9 +232,7 @@ before_script:
esac
# Make sure embedded dates are correct.
- ./install-gitconfig.sh
- rm TODO.md lib/mainpage.md pkgdoc/pages.md tools/toktx/toktx.cc
- git checkout TODO.md lib/mainpage.md pkgdoc/pages.md tools/toktx/toktx.cc
- git status
- ci_scripts/smudge_date.sh
script:
- |

View File

@@ -303,7 +303,7 @@ The CMake generators for Visual Studio 2017 and earlier generate projects whose
```bash
# -G shown for completeness. Not needed if you are happy
# with the CMake's default selection.
cmake -G "Visual Studio 15 2017" -B build -A x64 .
cmake -G "Visual Studio 17 2022" -B build -A x64 .
```
When using a more recent Visual Studio you simply need
@@ -431,14 +431,18 @@ Conformance Test Suite
The submodule of [CTS Repository](https://github.com/KhronosGroup/KTX-Software-CTS/) is optional and
only required for running the CTS tests during KTX development. If the CTS test suit is desired it
can be fetched during cloning with the additional `--recurse-submodules` git clone flag:
```bash
git clone --recurse-submodules git@github.com:KhronosGroup/KTX-Software.git
```
If the repository was already cloned or whenever the submodule ref changes the submodule has to be
updated with:
```bash
git submodule update --init --recursive tests/cts
```
(For more information on submodules see the [git documentation](https://git-scm.com/book/en/v2/Git-Tools-Submodules).)
Once the submodule is fetched the CTS tests can be enabled with the `KTX_FEATURE_TOOLS_CTS`
@@ -448,6 +452,7 @@ The CTS integrates into `ctest` so running `ctest` will also execute the CTS tes
The test cases can be limited to the CTS tests with `ctest -R ktxToolTests`.
Example for development workflow with CTS testing:
```bash
# Git clone and submodule fetch
git clone git@github.com:KhronosGroup/KTX-Software.git

View File

@@ -6,9 +6,9 @@
The Official Khronos KTX Software Repository
---
| GNU/Linux, iOS, macOS & wasm | Windows | Android | Mingw | Documentation |
| :--------------------------: | :-----: | :-----: | :---: | :-----------: |
| ![Build Status](https://travis-ci.com/KhronosGroup/KTX-Software.svg?branch=main) | ![Build status](https://github.com/KhronosGroup/KTX-Software/actions/workflows/windows.yml/badge.svg) | ![KTX-Software CI](https://github.com/KhronosGroup/KTX-Software/actions/workflows/android.yml/badge.svg) | ![KTX-Software CI](https://github.com/KhronosGroup/KTX-Software/actions/workflows/mingw.yml/badge.svg) | ![Build status](https://codedocs.xyz/KhronosGroup/KTX-Software.svg)|
| GNU/Linux, iOS, macOS & wasm | Windows | Android | Mingw |
| :--------------------------: | :-----: | :-----: | :---: |
| ![Build Status](https://travis-ci.com/KhronosGroup/KTX-Software.svg?branch=main) | ![Build status](https://github.com/KhronosGroup/KTX-Software/actions/workflows/windows.yml/badge.svg) | ![KTX-Software CI](https://github.com/KhronosGroup/KTX-Software/actions/workflows/android.yml/badge.svg) | ![KTX-Software CI](https://github.com/KhronosGroup/KTX-Software/actions/workflows/mingw.yml/badge.svg) |
This is the official home of the source code for the Khronos KTX library and tools.
@@ -100,22 +100,21 @@ Windows' Git Bash or Cygwin's bash terminal:
```bash
./install-gitconfig.sh
rm TODO.md lib/mainpage.md pkgdoc/pages.md tools/toktx/toktx.cc
git checkout TODO.md lib/mainpage.md pkgdoc/pages.md tools/toktx/toktx.cc
./ci_scripts/smudge_date.sh
```
On Windows with the Command Prompt (requires `git.exe` in a directory
On Windows PowerShell (requires `git.exe` in a directory
on your %PATH%):
```cmd
install-gitconfig.bat
del TODO.md TODO.md lib\mainpage.md pkgdoc\pages.md tools\toktx\toktx.cc
git checkout TODO.md lib\mainpage.md pkgdoc\pages.md tools\toktx\toktx.cc
```ps1
install-gitconfig.ps1
./ci_scripts/smudge_date.ps1
```
The first command adds an [include] of the repo's `.gitconfig` to the
local git config file `.git/config`, i.e. the one in your clone of the repo.
`.gitconfig` contains the config of the "keyworder" filter. The remaining
commands force a new checkout of the affected files to smudge them with the
date. These two are unnecessary if you plan to edit these files.
`.gitconfig` contains the config of the "keyworder" filter. The script in
the second command forces a new checkout of the affected files to smudge them
with their last modified date. This is unnecessary if you plan to edit
these files.

44
TODO.md
View File

@@ -1,44 +0,0 @@
To Do List {#todo}
=======
<!--
Can't put at start. Doxygen requires page title on first line.
Copyright 2013-2020 Mark Callow
SPDX-License-Identifier: Apache-2.0
-->
$Date$
=== **Volunteers welcome!** ===
library
-------
- [x] Find a way so that applications do not have to define KTX_OPENGL{,_ES*} when
using the library.
- [x] make reader that is usable without OpenGL context
- [ ] use TexStorage in GL texture loader when available
- [x] add Vulkan texture loader
library testing
---------------
- [x] test for GL-context-free reader
- [x] test for Vulkan loader
- [x] proper mipmap test (multiple planes each showing a different miplevel)
- [ ] GLES2 load tests
- [x] cubemap & array texture loading tests for Vulkan
- [ ] 3D texture loading test for Vulkan
- [x] cubemap & array texture loading tests for OpenGL
- [ ] 3D texture loading tests for OpenGL
- [ ] port test framework to Android.
toktx
-----
- [x] support reading formats other than PPM
- [ ] create ddx2ktx tool.
- [x] support 3D and array textures
- [ ] Source & reference ktx files for 1D textures
- [x] Source & reference ktx files for cubemap & array texture creation tests
- [ ] Source & reference ktx files for 3D texture creation tests

View File

@@ -0,0 +1,24 @@
# Copyright 2023 The Khronos Group Inc.
# SPDX-License-Identifier: Apache-2.0
# Smudge all files with proper $Date$ values.
# Make sure we're in the repo root
$path=(split-path $MyInvocation.MyCommand.Path -Parent)
echo $path
cd $path/..
$target_files = @(
'pkgdoc/pages.md'
'lib/libktx_mainpage.md'
'tools/ktxtools_mainpage.md'
'interface/js_binding/ktx_wrapper.cpp'
)
#foreach ($file in $target_files) {
# rm $file
# git checkout $file
#}
rm $target_files
git checkout $target_files

26
ci_scripts/smudge_date.sh Executable file
View File

@@ -0,0 +1,26 @@
#! /usr/bin/env bash
# Copyright 2023 The Khronos Group Inc.
# SPDX-License-Identifier: Apache-2.0
# Smudge all files with proper $Date$ values.
# Exit if any command fails.
set -e
# Make sure we're in the repo root
cd $(dirname $0)/..
target_files=(pkgdoc/pages.md
lib/libktx_mainpage.md
tools/ktxtools_mainpage.md
interface/js_binding/ktx_wrapper.cpp
)
#for file in "${target_files[@]}"; do
# rm $file
# git checkout $file
#done
rm "${target_files[@]}"
git checkout "${target_files[@]}"

View File

@@ -25,26 +25,47 @@ set( DOXYGEN_CLANG_ASSISTED_PARSING NO )
set( DOXYGEN_ALPHABETICAL_INDEX NO )
set( DOXYGEN_HTML_TIMESTAMP YES )
set( DOXYGEN_DISABLE_INDEX YES )
set( DOXYGEN_DISABLE_INDEX NO )
set( DOXYGEN_GENERATE_TREEVIEW YES )
set( DOXYGEN_GENERATE_LATEX NO )
set( DOXYGEN_GENERATE_HTML YES )
set( DOXYGEN_GENERATE_MAN YES )
set( DOXYGEN_MAN_OUTPUT ../man )
function( add_docs_cmake target )
# Make `docs.cmake` show up in IDE/project
function( add_sources target sources )
# Make ${sources} show up in IDE/project
get_target_property( doc_sources ${target} SOURCES )
if( NOT doc_sources )
set( doc_sources "" ) # Clear doc_sources-NOTFOUND value.
endif()
set_target_properties(
${target}
PROPERTIES
SOURCES "${doc_sources};cmake/docs.cmake"
SOURCES "${doc_sources};${sources}"
)
endfunction()
function( add_docs_cmake target )
# Make `docs.cmake` show up in IDE/project
add_sources( ${target} "cmake/docs.cmake" )
endfunction()
function( add_docs_cmake_plus target sources )
# Make `docs.cmake` plus ${sources} show up in IDE/project
add_sources( ${target} "cmake/docs.cmake;${sources}" )
endfunction()
# Note very well
#
# These projects and accompanying DOXYGEN_LAYOUT_FILES are carefully crafted
# to provide the illusion of a consistent GUI across all the projects.
# Likely this will be fragile in the face of Doxygen changes.
# ktx.doc
function( CreateDocLibKTX )
set( DOXYGEN_PROJECT_NAME "libktx - The KTX Library" )
set( DOXYGEN_PROJECT_NAME "libktx Reference" )
set( DOXYGEN_ALIASES error=\"\\par Errors\\n\" )
set( DOXYGEN_LAYOUT_FILE pkgdoc/libktxDoxyLayout.xml )
set( DOXYGEN_TYPEDEF_HIDES_STRUCT YES )
set( DOXYGEN_EXCLUDE lib/uthash.h )
set( DOXYGEN_EXCLUDE_PATTERNS ktxint.h )
@@ -76,7 +97,7 @@ function( CreateDocLibKTX )
ktx_uint32_t numLevels\; \\
ktx_uint32_t numLayers\; \\
ktx_uint32_t numFaces\; \\
struct { \\
struct { \\
ktxOrientationX x\; \\
ktxOrientationY y\; \\
ktxOrientationZ z\; \\
@@ -87,12 +108,11 @@ function( CreateDocLibKTX )
ktx_size_t dataSize\; \\
ktx_uint8_t* pData\;"
)
set( DOXYGEN_GENERATE_TAGFILE ${docdest}/libktx.tag )
#set( DOXYGEN_GENERATE_TAGFILE ${docdest}/libktx.tag )
doxygen_add_docs(
libktx.doc
lib/mainpage.md
LICENSE.md
lib/libktx_mainpage.md
include
lib/astc_encode.cpp
lib/basis_encode.cpp
@@ -110,29 +130,26 @@ function( CreateDocLibKTX )
lib/writer1.c
lib/writer2.c
)
add_docs_cmake(libktx.doc)
add_docs_cmake_plus( libktx.doc pkgdoc/libktxDoxyLayout.xml )
endfunction()
# ktxtools.doc
function( CreateDocKTXTools )
set( DOXYGEN_PROJECT_NAME "Khronos Texture Tools" )
function( CreateDocTools )
set( DOXYGEN_PROJECT_NAME "KTX Tools Reference" )
set( DOXYGEN_FULL_PATH_NAMES NO )
set( DOXYGEN_ALIASES author=\"\\section AUTHOR\\n\" )
set( DOXYGEN_LAYOUT_FILE pkgdoc/toolsDoxyLayout.xml )
set( DOXYGEN_SHOW_FILES NO )
set( DOXYGEN_FILE_PATTERNS *.cpp )
set( DOXYGEN_RECURSIVE YES )
set( DOXYGEN_EXAMPLE_PATH utils tools )
set( DOXYGEN_HTML_OUTPUT ktxtools )
set( DOXYGEN_MAN_EXTENSION .1 )
set( DOXYGEN_GENERATE_TAGFILE ${docdest}/ktxtools.tag )
#set( DOXYGEN_GENERATE_TAGFILE ${docdest}/ktxtools.tag )
set( DOXYGEN_TAGFILES ${docdest}/ktxpkg.tag=.. )
doxygen_add_docs(
ktxtools.doc
tools/ktxinfo/ktxinfo.cpp
tools/ktx2check/ktx2check.cpp
tools/ktx2ktx2/ktx2ktx2.cpp
tools/ktxsc/ktxsc.cpp
tools/toktx/toktx.cc
tools.doc
tools/ktx/ktx_main.cpp
tools/ktx/command_create.cpp
tools/ktx/command_encode.cpp
@@ -141,10 +158,33 @@ function( CreateDocKTXTools )
tools/ktx/command_info.cpp
tools/ktx/command_transcode.cpp
tools/ktx/command_validate.cpp
tools/ktx2check/ktx2check.cpp
tools/ktx2ktx2/ktx2ktx2.cpp
tools/ktxinfo/ktxinfo.cpp
tools/ktxsc/ktxsc.cpp
tools/ktxtools_mainpage.md
tools/toktx/toktx.cc
)
add_docs_cmake(ktxtools.doc)
add_docs_cmake_plus( tools.doc pkgdoc/toolsDoxyLayout.xml )
endfunction()
# ktxjswrappers.doc
function( CreateDocJSWrappers )
set( DOXYGEN_PROJECT_NAME "KTX Javascript Wrappers Reference" )
set( DOXYGEN_FULL_PATH_NAMES NO )
set( DOXYGEN_ALIASES author=\"\\section AUTHOR\\n\" )
set( DOXYGEN_LAYOUT_FILE pkgdoc/jswrappersDoxyLayout.xml )
set( DOXYGEN_SHOW_FILES NO )
set( DOXYGEN_HTML_OUTPUT ktxjswrappers )
#set( DOXYGEN_GENERATE_TAGFILE ${docdest}/ktxjswrappers.tag )
set( DOXYGEN_TAGFILES ${docdest}/ktxpkg.tag=.. )
doxygen_add_docs(
jswrappers.doc
interface/js_binding
)
add_docs_cmake_plus( jswrappers.doc pkgdoc/jswrappersDoxyLayout.xml )
endfunction()
# ktxpkg.doc
function( CreateDocKTX )
@@ -154,29 +194,40 @@ function( CreateDocKTX )
set( DOXYGEN_EXCLUDE lib/uthash.h )
set( DOXYGEN_EXCLUDE_PATTERNS ktxint.h )
set( DOXYGEN_EXAMPLE_PATH lib )
set( DOXYGEN_GENERATE_TAGFILE ${docdest}/ktxpkg.tag )
set( DOXYGEN_HTML_HEADER pkgdoc/header.html )
set( DOXYGEN_HTML_OUTPUT . )
set( DOXYGEN_MAN_LINKS YES )
set( DOXYGEN_TAGFILES ${docdest}/libktx.tag=libktx ${docdest}/ktxtools.tag=ktxtools )
#set( DOXYGEN_TAGFILES ${docdest}/libktx.tag=libktx ${docdest}/ktxtools.tag=ktxtools )
doxygen_add_docs(
ktxpkg.doc
pkgdoc/pages.md
TODO.md
interface/js_binding
ALL
LICENSE.md
#RELEASE_NOTES.md
)
add_docs_cmake(ktxpkg.doc)
add_docs_cmake_plus( ktxpkg.doc pkgdoc/packageDoxyLayout.xml )
endfunction()
CreateDocLibKTX()
CreateDocKTXTools()
CreateDocTools()
CreateDocJSWrappers()
CreateDocKTX()
add_dependencies( libktx.doc ktx_version )
add_dependencies( ktxtools.doc libktx.doc )
add_dependencies( ktxpkg.doc ktxtools.doc )
add_dependencies( libktx.doc ktxpkg.doc ktx_version )
add_dependencies( jswrappers.doc ktxpkg.doc )
add_dependencies( tools.doc ktxpkg.doc )
# I want to add a dependency on the "package" built-in target.
# Unfortunately CMake does not support adding dependencies to
# built-in targets. See https://gitlab.kitware.com/cmake/cmake/-/issues/8438.
#
# There also seems to be no way to add a dependency for the install commands
# below. Presumably "install(TARGETS ...)" adds a dependency on each target
# but the rest of that command is simply not appropriate for this case.
add_custom_target( all.doc ALL
DEPENDS tools.doc libktx.doc jswrappers.doc
)
install(
DIRECTORY ${docdest}/html

View File

@@ -17,6 +17,11 @@
#ifndef _KHR_DATA_FORMAT_H_
#define _KHR_DATA_FORMAT_H_
/** @file khr_df.h
@brief Data Format enums and macros.
*/
/* Accessors */
typedef enum _khr_word_e {
KHR_DF_WORD_VENDORID = 0U,
@@ -217,41 +222,42 @@ typedef enum _khr_df_versionnumber_e {
KHR_DF_VERSIONNUMBER_MAX = 0xFFFFU
} khr_df_versionnumber_e;
/* Model in which the color coordinate space is defined.
/** @~English
@brief Model in which the color coordinate space is defined.
There is no requirement that a color format use all the
channel types that are defined in the color model. */
typedef enum _khr_df_model_e {
/* No interpretation of color channels defined */
/** No interpretation of color channels defined */
KHR_DF_MODEL_UNSPECIFIED = 0U,
/* Color primaries (red, green, blue) + alpha, depth and stencil */
/** Color primaries (red, green, blue) + alpha, depth and stencil */
KHR_DF_MODEL_RGBSDA = 1U,
/* Color differences (Y', Cb, Cr) + alpha, depth and stencil */
/** Color differences (Y', Cb, Cr) + alpha, depth and stencil */
KHR_DF_MODEL_YUVSDA = 2U,
/* Color differences (Y', I, Q) + alpha, depth and stencil */
/** Color differences (Y', I, Q) + alpha, depth and stencil */
KHR_DF_MODEL_YIQSDA = 3U,
/* Perceptual color (CIE L*a*b*) + alpha, depth and stencil */
/** Perceptual color (CIE L*a*b*) + alpha, depth and stencil */
KHR_DF_MODEL_LABSDA = 4U,
/* Subtractive colors (cyan, magenta, yellow, black) + alpha */
/** Subtractive colors (cyan, magenta, yellow, black) + alpha */
KHR_DF_MODEL_CMYKA = 5U,
/* Non-color coordinate data (X, Y, Z, W) */
/** Non-color coordinate data (X, Y, Z, W) */
KHR_DF_MODEL_XYZW = 6U,
/* Hue, saturation, value, hue angle on color circle, plus alpha */
/** Hue, saturation, value, hue angle on color circle, plus alpha */
KHR_DF_MODEL_HSVA_ANG = 7U,
/* Hue, saturation, lightness, hue angle on color circle, plus alpha */
/** Hue, saturation, lightness, hue angle on color circle, plus alpha */
KHR_DF_MODEL_HSLA_ANG = 8U,
/* Hue, saturation, value, hue on color hexagon, plus alpha */
/** Hue, saturation, value, hue on color hexagon, plus alpha */
KHR_DF_MODEL_HSVA_HEX = 9U,
/* Hue, saturation, lightness, hue on color hexagon, plus alpha */
/** Hue, saturation, lightness, hue on color hexagon, plus alpha */
KHR_DF_MODEL_HSLA_HEX = 10U,
/* Lightweight approximate color difference (luma, orange, green) */
/** Lightweight approximate color difference (luma, orange, green) */
KHR_DF_MODEL_YCGCOA = 11U,
/* ITU BT.2020 constant luminance YcCbcCrc */
/** ITU BT.2020 constant luminance YcCbcCrc */
KHR_DF_MODEL_YCCBCCRC = 12U,
/* ITU BT.2100 constant intensity ICtCp */
/** ITU BT.2100 constant intensity ICtCp */
KHR_DF_MODEL_ICTCP = 13U,
/* CIE 1931 XYZ color coordinates (X, Y, Z) */
/** CIE 1931 XYZ color coordinates (X, Y, Z) */
KHR_DF_MODEL_CIEXYZ = 14U,
/* CIE 1931 xyY color coordinates (X, Y, Y) */
/** CIE 1931 xyY color coordinates (X, Y, Y) */
KHR_DF_MODEL_CIEXYY = 15U,
/* Compressed formats start at 128. */
@@ -260,51 +266,54 @@ typedef enum _khr_df_model_e {
channels are used to distinguish formats, these should be cosited. */
/* Direct3D (and S3) compressed formats */
/* Note that premultiplied status is recorded separately */
/* DXT1 "channels" are RGB (0), Alpha (1) */
/* DXT1/BC1 with one channel is opaque */
/* DXT1/BC1 with a cosited alpha sample is transparent */
/** DXT1 "channels" are RGB (0), Alpha (1)
DXT1/BC1 with one channel is opaque
DXT1/BC1 with a cosited alpha sample is transparent */
KHR_DF_MODEL_DXT1A = 128U,
KHR_DF_MODEL_BC1A = 128U,
/* DXT2/DXT3/BC2, with explicit 4-bit alpha */
/** DXT2/DXT3/BC2, with explicit 4-bit alpha */
KHR_DF_MODEL_DXT2 = 129U,
KHR_DF_MODEL_DXT3 = 129U,
KHR_DF_MODEL_BC2 = 129U,
/* DXT4/DXT5/BC3, with interpolated alpha */
/** DXT4/DXT5/BC3, with interpolated alpha */
KHR_DF_MODEL_DXT4 = 130U,
KHR_DF_MODEL_DXT5 = 130U,
KHR_DF_MODEL_BC3 = 130U,
/* BC4 - single channel interpolated 8-bit data */
/* (The UNORM/SNORM variation is recorded in the channel data) */
/** BC4 - single channel interpolated 8-bit data
(The UNORM/SNORM variation is recorded in the channel data) */
KHR_DF_MODEL_BC4 = 131U,
/* BC5 - two channel interpolated 8-bit data */
/* (The UNORM/SNORM variation is recorded in the channel data) */
/** BC5 - two channel interpolated 8-bit data
(The UNORM/SNORM variation is recorded in the channel data) */
KHR_DF_MODEL_BC5 = 132U,
/* BC6H - DX11 format for 16-bit float channels */
/** BC6H - DX11 format for 16-bit float channels */
KHR_DF_MODEL_BC6H = 133U,
/* BC7 - DX11 format */
/** BC7 - DX11 format */
KHR_DF_MODEL_BC7 = 134U,
/* Gap left for future desktop expansion */
/* Mobile compressed formats follow */
/* A format of ETC1 indicates that the format shall be decodable
by an ETC1-compliant decoder and not rely on ETC2 features */
/** A format of ETC1 indicates that the format shall be decodable
by an ETC1-compliant decoder and not rely on ETC2 features */
KHR_DF_MODEL_ETC1 = 160U,
/* A format of ETC2 is permitted to use ETC2 encodings on top of
the baseline ETC1 specification */
/* The ETC2 format has channels "red", "green", "RGB" and "alpha",
which should be cosited samples */
/* Punch-through alpha can be distinguished from full alpha by
the plane size in bytes required for the texel block */
/** A format of ETC2 is permitted to use ETC2 encodings on top of
the baseline ETC1 specification.
The ETC2 format has channels "red", "green", "RGB" and "alpha",
which should be cosited samples.
Punch-through alpha can be distinguished from full alpha by
the plane size in bytes required for the texel block */
KHR_DF_MODEL_ETC2 = 161U,
/* Adaptive Scalable Texture Compression */
/* ASTC HDR vs LDR is determined by the float flag in the channel */
/* ASTC block size can be distinguished by texel block size */
/** Adaptive Scalable Texture Compression */
/** ASTC HDR vs LDR is determined by the float flag in the channel */
/** ASTC block size can be distinguished by texel block size */
KHR_DF_MODEL_ASTC = 162U,
/* ETC1S is a simplified subset of ETC1 */
/** ETC1S is a simplified subset of ETC1 */
KHR_DF_MODEL_ETC1S = 163U,
/* PowerVR Texture Compression */
/** PowerVR Texture Compression v1 */
KHR_DF_MODEL_PVRTC = 164U,
/** PowerVR Texture Compression v2 */
KHR_DF_MODEL_PVRTC2 = 165U,
/** UASTC is a transcodable subset of ASTC
with additions to support the transcoding. */
KHR_DF_MODEL_UASTC = 166U,
/* Proprietary formats (ATITC, etc.) should follow */
KHR_DF_MODEL_MAX = 0xFFU
@@ -520,86 +529,88 @@ typedef enum _khr_df_model_channels_e {
KHR_DF_CHANNEL_COMMON_A = 15U
} khr_df_model_channels_e;
/* Definition of the primary colors in color coordinates.
/** @~English
@brief Definition of the primary colors in color coordinates.
This is implicitly responsible for defining the conversion
between RGB an YUV color spaces.
LAB and related absolute color models should use
KHR_DF_PRIMARIES_CIEXYZ. */
typedef enum _khr_df_primaries_e {
/* No color primaries defined */
/** No color primaries defined */
KHR_DF_PRIMARIES_UNSPECIFIED = 0U,
/* Color primaries of ITU-R BT.709 and sRGB */
/** Color primaries of ITU-R BT.709 and sRGB */
KHR_DF_PRIMARIES_BT709 = 1U,
/* Synonym for KHR_DF_PRIMARIES_BT709 */
/** Synonym for KHR_DF_PRIMARIES_BT709 */
KHR_DF_PRIMARIES_SRGB = 1U,
/* Color primaries of ITU-R BT.601 (625-line EBU variant) */
/** Color primaries of ITU-R BT.601 (625-line EBU variant) */
KHR_DF_PRIMARIES_BT601_EBU = 2U,
/* Color primaries of ITU-R BT.601 (525-line SMPTE C variant) */
/** Color primaries of ITU-R BT.601 (525-line SMPTE C variant) */
KHR_DF_PRIMARIES_BT601_SMPTE = 3U,
/* Color primaries of ITU-R BT.2020 */
/** Color primaries of ITU-R BT.2020 */
KHR_DF_PRIMARIES_BT2020 = 4U,
/* CIE theoretical color coordinate space */
/** CIE theoretical color coordinate space */
KHR_DF_PRIMARIES_CIEXYZ = 5U,
/* Academy Color Encoding System primaries */
/** Academy Color Encoding System primaries */
KHR_DF_PRIMARIES_ACES = 6U,
/* Color primaries of ACEScc */
/** Color primaries of ACEScc */
KHR_DF_PRIMARIES_ACESCC = 7U,
/* Legacy NTSC 1953 primaries */
/** Legacy NTSC 1953 primaries */
KHR_DF_PRIMARIES_NTSC1953 = 8U,
/* Legacy PAL 525-line primaries */
/** Legacy PAL 525-line primaries */
KHR_DF_PRIMARIES_PAL525 = 9U,
/* Color primaries of Display P3 */
/** Color primaries of Display P3 */
KHR_DF_PRIMARIES_DISPLAYP3 = 10U,
/* Color primaries of Adobe RGB (1998) */
/** Color primaries of Adobe RGB (1998) */
KHR_DF_PRIMARIES_ADOBERGB = 11U,
KHR_DF_PRIMARIES_MAX = 0xFFU
} khr_df_primaries_e;
/* Definition of the optical to digital transfer function
/** @~English
@brief Definition of the optical to digital transfer function
("gamma correction"). Most transfer functions are not a pure
power function and also include a linear element.
LAB and related absolute color representations should use
KHR_DF_TRANSFER_UNSPECIFIED. */
typedef enum _khr_df_transfer_e {
/* No transfer function defined */
/** No transfer function defined */
KHR_DF_TRANSFER_UNSPECIFIED = 0U,
/* Linear transfer function (value proportional to intensity) */
/** Linear transfer function (value proportional to intensity) */
KHR_DF_TRANSFER_LINEAR = 1U,
/* Perceptually-linear transfer function of sRGH (~2.4) */
/** Perceptually-linear transfer function of sRGH (~2.4) */
KHR_DF_TRANSFER_SRGB = 2U,
/* Perceptually-linear transfer function of ITU BT.601, BT.709 and BT.2020 (~1/.45) */
/** Perceptually-linear transfer function of ITU BT.601, BT.709 and BT.2020 (~1/.45) */
KHR_DF_TRANSFER_ITU = 3U,
/* SMTPE170M (digital NTSC) defines an alias for the ITU transfer function (~1/.45) */
/** SMTPE170M (digital NTSC) defines an alias for the ITU transfer function (~1/.45) */
KHR_DF_TRANSFER_SMTPE170M = 3U,
/* Perceptually-linear gamma function of original NTSC (simple 2.2 gamma) */
/** Perceptually-linear gamma function of original NTSC (simple 2.2 gamma) */
KHR_DF_TRANSFER_NTSC = 4U,
/* Sony S-log used by Sony video cameras */
/** Sony S-log used by Sony video cameras */
KHR_DF_TRANSFER_SLOG = 5U,
/* Sony S-log 2 used by Sony video cameras */
/** Sony S-log 2 used by Sony video cameras */
KHR_DF_TRANSFER_SLOG2 = 6U,
/* ITU BT.1886 EOTF */
/** ITU BT.1886 EOTF */
KHR_DF_TRANSFER_BT1886 = 7U,
/* ITU BT.2100 HLG OETF */
/** ITU BT.2100 HLG OETF */
KHR_DF_TRANSFER_HLG_OETF = 8U,
/* ITU BT.2100 HLG EOTF */
/** ITU BT.2100 HLG EOTF */
KHR_DF_TRANSFER_HLG_EOTF = 9U,
/* ITU BT.2100 PQ EOTF */
/** ITU BT.2100 PQ EOTF */
KHR_DF_TRANSFER_PQ_EOTF = 10U,
/* ITU BT.2100 PQ OETF */
/** ITU BT.2100 PQ OETF */
KHR_DF_TRANSFER_PQ_OETF = 11U,
/* DCI P3 transfer function */
/** DCI P3 transfer function */
KHR_DF_TRANSFER_DCIP3 = 12U,
/* Legacy PAL OETF */
/** Legacy PAL OETF */
KHR_DF_TRANSFER_PAL_OETF = 13U,
/* Legacy PAL 625-line EOTF */
/** Legacy PAL 625-line EOTF */
KHR_DF_TRANSFER_PAL625_EOTF = 14U,
/* Legacy ST240 transfer function */
/** Legacy ST240 transfer function */
KHR_DF_TRANSFER_ST240 = 15U,
/* ACEScc transfer function */
/** ACEScc transfer function */
KHR_DF_TRANSFER_ACESCC = 16U,
/* ACEScct transfer function */
/** ACEScct transfer function */
KHR_DF_TRANSFER_ACESCCT = 17U,
/* Adobe RGB (1998) transfer function */
/** Adobe RGB (1998) transfer function */
KHR_DF_TRANSFER_ADOBERGB = 18U,
KHR_DF_TRANSFER_MAX = 0xFFU
} khr_df_transfer_e;

View File

@@ -1731,6 +1731,9 @@ KTX_API KTX_error_code KTX_APIENTRY ktxPrintKTX2InfoJSONForStream(ktxStream* str
@~English
@page libktx_history Revision History
No longer updated. Kept to preserve ancient history. For more recent history see the repo log at
https://github.com/KhronosGroup/KTX-Software. See also the Release Notes in the repo.
@section v8 Version 4.0
Added:
@li Support for KTX Version 2.

View File

@@ -23,8 +23,6 @@
* alternative is duplicating unattractively large parts of it.
*
* @author Mark Callow, Edgewise Consulting
*
* $Date$
*/
#include <ktx.h>

View File

@@ -1,11 +0,0 @@
echo OFF
REM Add [include] of repo's .gitconfig in clone's .git/config.
REM This only needs to be run once.
REM Copyright 2016 The Khronos Group Inc.
REM SPDX-License-Identifier: Apache-2.0
REM Set colors
git config --local include.path ..\.gitconfig
echo Git config was successfully set.

8
install-gitconfig.ps1 Normal file
View File

@@ -0,0 +1,8 @@
# Copyright 2023 The Khronos Group Inc.
# SPDX-License-Identifier: Apache-2.0
# Add [include] of repo's .gitconfig in clone's .git/config.
# This only needs to be run once.
git config --local include.path ..\.gitconfig
echo 'Git config was successfully set.'

View File

@@ -173,14 +173,17 @@ namespace ktx
};
}
/** @page js_bindings Javascript Bindings
/** @mainpage
Javascript bindings are provided to:
@li @subpage libktx_js libktx.js
@li @subpage msc_basis_transcoder msc_basis_transcoder.js
@li @subpage libktx_js "libktx (in libktx.js)"
@li @subpage msc_basis_transcoder "Basis Universal Transcoder (in msc_basis_transcoder.js)
*/
---
@par This page last modified $Date$
*/
/** @page libktx_js libktx Binding

View File

@@ -366,7 +366,7 @@ namespace msc {
};
}
/** @page msc_basis_transcoder Basis Image Transcoder binding
/** @page msc_basis_transcoder Basis Universal Image Transcoder binding
@warning Deprecated. Use the container independent transcoder from
the Binomial LLC repo instead:

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -1,5 +1,4 @@
Introduction {#mainpage}
============
@mainpage
<!--
Can't put at start. Doxygen requires page title on first line.
@@ -10,27 +9,21 @@ Introduction {#mainpage}
libktx is a small library of functions for creating and reading KTX (Khronos
TeXture) files, version 1 and 2 and instantiating OpenGL&reg; and OpenGL&reg; ES
textures and Vulkan images from them. KTX version 2 files can contain images
supercompressed with ZStd or ZLIB. They can also contain images in the Basis
Universal formats. libktx can deflate and inflate ZStd and ZLIB compressed
images and can encode and transcode the Basis Universal formats.
supercompressed with _zstd_ or _zlib_. They can also contain images in the Basis
Universal formats. libktx can deflate and inflate zstd and zlib compressed
images, can encode and transcode the Basis Universal formats and can
encode ASTC formats.
For information about the KTX format see the
<a href="http://github.khronos.org/KTX-Specification/">
<a href="https://registry.khronos.org/KTX/specs/2.0/ktxspec.v2.html">
formal specification.</a>
The library is open source software. Source code is available at
<a href="https://github.com/KhronosGroup/KTX">GitHub</a>. Most of the source
code and the documentation is licensed under the Apache 2.0 license. See @ref license
for details. When distributing the library, whether in source or binary form, this
documentation must be included in the distribution or otherwise made available to
recipients.
See @ref libktx_history for the list of changes.
@authors
Mark Callow, <a href="http://www.edgewise-consulting.com">Edgewise Consulting</a>,
formerly at <a href="http://www.hicorp.co.jp">HI Corporation</a>\n
Andreas Atteneder, Independent.\n
Mátyás Császár and Daniel Rákos, <a href="https://www.rastergrid.com/">RasterGrid</a>\n
Wasim Abbas, <a href="https://www.arm.com/">Arm</a>\n
Andreas Atteneder, Independent\n
Georg Kolling, <a href="http://www.imgtec.com">Imagination Technology</a>\n
Jacob Str&ouml;m, <a href="http://www.ericsson.com">Ericsson AB</a>

File diff suppressed because it is too large Load Diff

240
pkgdoc/DoxygenLayout.xml Normal file
View File

@@ -0,0 +1,240 @@
<doxygenlayout version="1.0">
<!-- Generated by doxygen 1.9.6 -->
<!-- Navigation index tabs for HTML output -->
<navindex>
<tab type="mainpage" visible="yes" title=""/>
<tab type="pages" visible="yes" title="" intro=""/>
<tab type="modules" visible="yes" title="" intro=""/>
<tab type="namespaces" visible="yes" title="">
<tab type="namespacelist" visible="yes" title="" intro=""/>
<tab type="namespacemembers" visible="yes" title="" intro=""/>
</tab>
<tab type="concepts" visible="yes" title="">
</tab>
<tab type="interfaces" visible="yes" title="">
<tab type="interfacelist" visible="yes" title="" intro=""/>
<tab type="interfaceindex" visible="$ALPHABETICAL_INDEX" title=""/>
<tab type="interfacehierarchy" visible="yes" title="" intro=""/>
</tab>
<tab type="classes" visible="yes" title="">
<tab type="classlist" visible="yes" title="" intro=""/>
<tab type="classindex" visible="$ALPHABETICAL_INDEX" title=""/>
<tab type="hierarchy" visible="yes" title="" intro=""/>
<tab type="classmembers" visible="yes" title="" intro=""/>
</tab>
<tab type="structs" visible="yes" title="">
<tab type="structlist" visible="yes" title="" intro=""/>
<tab type="structindex" visible="$ALPHABETICAL_INDEX" title=""/>
</tab>
<tab type="exceptions" visible="yes" title="">
<tab type="exceptionlist" visible="yes" title="" intro=""/>
<tab type="exceptionindex" visible="$ALPHABETICAL_INDEX" title=""/>
<tab type="exceptionhierarchy" visible="yes" title="" intro=""/>
</tab>
<tab type="files" visible="yes" title="">
<tab type="filelist" visible="yes" title="" intro=""/>
<tab type="globals" visible="yes" title="" intro=""/>
</tab>
<tab type="examples" visible="yes" title="" intro=""/>
</navindex>
<!-- Layout definition for a class page -->
<class>
<briefdescription visible="yes"/>
<includes visible="$SHOW_HEADERFILE"/>
<inheritancegraph visible="$CLASS_GRAPH"/>
<collaborationgraph visible="$COLLABORATION_GRAPH"/>
<memberdecl>
<nestedclasses visible="yes" title=""/>
<publictypes title=""/>
<services title=""/>
<interfaces title=""/>
<publicslots title=""/>
<signals title=""/>
<publicmethods title=""/>
<publicstaticmethods title=""/>
<publicattributes title=""/>
<publicstaticattributes title=""/>
<protectedtypes title=""/>
<protectedslots title=""/>
<protectedmethods title=""/>
<protectedstaticmethods title=""/>
<protectedattributes title=""/>
<protectedstaticattributes title=""/>
<packagetypes title=""/>
<packagemethods title=""/>
<packagestaticmethods title=""/>
<packageattributes title=""/>
<packagestaticattributes title=""/>
<properties title=""/>
<events title=""/>
<privatetypes title=""/>
<privateslots title=""/>
<privatemethods title=""/>
<privatestaticmethods title=""/>
<privateattributes title=""/>
<privatestaticattributes title=""/>
<friends title=""/>
<related title="" subtitle=""/>
<membergroups visible="yes"/>
</memberdecl>
<detaileddescription title=""/>
<memberdef>
<inlineclasses title=""/>
<typedefs title=""/>
<enums title=""/>
<services title=""/>
<interfaces title=""/>
<constructors title=""/>
<functions title=""/>
<related title=""/>
<variables title=""/>
<properties title=""/>
<events title=""/>
</memberdef>
<allmemberslink visible="yes"/>
<usedfiles visible="$SHOW_USED_FILES"/>
<authorsection visible="yes"/>
</class>
<!-- Layout definition for a namespace page -->
<namespace>
<briefdescription visible="yes"/>
<memberdecl>
<nestednamespaces visible="yes" title=""/>
<constantgroups visible="yes" title=""/>
<interfaces visible="yes" title=""/>
<classes visible="yes" title=""/>
<concepts visible="yes" title=""/>
<structs visible="yes" title=""/>
<exceptions visible="yes" title=""/>
<typedefs title=""/>
<sequences title=""/>
<dictionaries title=""/>
<enums title=""/>
<functions title=""/>
<variables title=""/>
<membergroups visible="yes"/>
</memberdecl>
<detaileddescription title=""/>
<memberdef>
<inlineclasses title=""/>
<typedefs title=""/>
<sequences title=""/>
<dictionaries title=""/>
<enums title=""/>
<functions title=""/>
<variables title=""/>
</memberdef>
<authorsection visible="yes"/>
</namespace>
<!-- Layout definition for a concept page -->
<concept>
<briefdescription visible="yes"/>
<includes visible="$SHOW_HEADERFILE"/>
<definition visible="yes" title=""/>
<detaileddescription title=""/>
<authorsection visible="yes"/>
</concept>
<!-- Layout definition for a file page -->
<file>
<briefdescription visible="yes"/>
<includes visible="$SHOW_INCLUDE_FILES"/>
<includegraph visible="$INCLUDE_GRAPH"/>
<includedbygraph visible="$INCLUDED_BY_GRAPH"/>
<sourcelink visible="yes"/>
<memberdecl>
<interfaces visible="yes" title=""/>
<classes visible="yes" title=""/>
<structs visible="yes" title=""/>
<exceptions visible="yes" title=""/>
<namespaces visible="yes" title=""/>
<concepts visible="yes" title=""/>
<constantgroups visible="yes" title=""/>
<defines title=""/>
<typedefs title=""/>
<sequences title=""/>
<dictionaries title=""/>
<enums title=""/>
<functions title=""/>
<variables title=""/>
<membergroups visible="yes"/>
</memberdecl>
<detaileddescription title=""/>
<memberdef>
<inlineclasses title=""/>
<defines title=""/>
<typedefs title=""/>
<sequences title=""/>
<dictionaries title=""/>
<enums title=""/>
<functions title=""/>
<variables title=""/>
</memberdef>
<authorsection/>
</file>
<!-- Layout definition for a group page -->
<group>
<briefdescription visible="yes"/>
<groupgraph visible="$GROUP_GRAPHS"/>
<memberdecl>
<nestedgroups visible="yes" title=""/>
<dirs visible="yes" title=""/>
<files visible="yes" title=""/>
<namespaces visible="yes" title=""/>
<concepts visible="yes" title=""/>
<classes visible="yes" title=""/>
<defines title=""/>
<typedefs title=""/>
<sequences title=""/>
<dictionaries title=""/>
<enums title=""/>
<enumvalues title=""/>
<functions title=""/>
<variables title=""/>
<signals title=""/>
<publicslots title=""/>
<protectedslots title=""/>
<privateslots title=""/>
<events title=""/>
<properties title=""/>
<friends title=""/>
<membergroups visible="yes"/>
</memberdecl>
<detaileddescription title=""/>
<memberdef>
<pagedocs/>
<inlineclasses title=""/>
<defines title=""/>
<typedefs title=""/>
<sequences title=""/>
<dictionaries title=""/>
<enums title=""/>
<enumvalues title=""/>
<functions title=""/>
<variables title=""/>
<signals title=""/>
<publicslots title=""/>
<protectedslots title=""/>
<privateslots title=""/>
<events title=""/>
<properties title=""/>
<friends title=""/>
</memberdef>
<authorsection visible="yes"/>
</group>
<!-- Layout definition for a directory page -->
<directory>
<briefdescription visible="yes"/>
<directorygraph visible="yes"/>
<memberdecl>
<dirs visible="yes"/>
<files visible="yes"/>
</memberdecl>
<detaileddescription title=""/>
</directory>
</doxygenlayout>

View File

@@ -0,0 +1,235 @@
<doxygenlayout version="1.0">
<!-- Generated by doxygen 1.9.1 -->
<!-- Navigation index tabs for HTML output -->
<navindex>
<tab type="mainpage" visible="yes" title="KTX Javascript Wrappers Reference"/>
<tab type="pages" visible="yes" title="" intro=""/>
<tab type="modules" visible="no" title="" intro=""/>
<tab type="namespaces" visible="no" title="">
<tab type="namespacelist" visible="yes" title="" intro=""/>
<tab type="namespacemembers" visible="yes" title="" intro=""/>
</tab>
<tab type="concepts" visible="no" title="">
</tab>
<tab type="interfaces" visible="no" title="">
<tab type="interfacelist" visible="yes" title="" intro=""/>
<tab type="interfaceindex" visible="$ALPHABETICAL_INDEX" title=""/>
<tab type="interfacehierarchy" visible="yes" title="" intro=""/>
</tab>
<tab type="classes" visible="no" title="">
<tab type="classlist" visible="yes" title="" intro=""/>
<tab type="classindex" visible="$ALPHABETICAL_INDEX" title=""/>
<tab type="hierarchy" visible="yes" title="" intro=""/>
<tab type="classmembers" visible="yes" title="" intro=""/>
</tab>
<tab type="structs" visible="no" title="">
<tab type="structlist" visible="yes" title="" intro=""/>
<tab type="structindex" visible="$ALPHABETICAL_INDEX" title=""/>
</tab>
<tab type="exceptions" visible="no" title="">
<tab type="exceptionlist" visible="yes" title="" intro=""/>
<tab type="exceptionindex" visible="$ALPHABETICAL_INDEX" title=""/>
<tab type="exceptionhierarchy" visible="yes" title="" intro=""/>
</tab>
<tab type="files" visible="no" title="">
<tab type="filelist" visible="yes" title="" intro=""/>
<tab type="globals" visible="yes" title="" intro=""/>
</tab>
<tab type="examples" visible="no" title="" intro=""/>
<tab type="user" url="../index.html" title="Package"/>
<tab type="user" url="../ktxtools/index.html" title="KTX Tools Reference"/>
<tab type="user" url="../libktx/index.html" title="libktx Reference"/>
<!-- navindex processing does not look in the .tag file so @ref is NG.
URL to file is fragile.
<tab type="user" url="@ref license" title="License"/> -->
<tab type="user" url="../license.html" title="License"/>
</navindex>
<!-- Layout definition for a class page -->
<class>
<briefdescription visible="yes"/>
<includes visible="$SHOW_INCLUDE_FILES"/>
<inheritancegraph visible="$CLASS_GRAPH"/>
<collaborationgraph visible="$COLLABORATION_GRAPH"/>
<memberdecl>
<nestedclasses visible="yes" title=""/>
<publictypes title=""/>
<services title=""/>
<interfaces title=""/>
<publicslots title=""/>
<signals title=""/>
<publicmethods title=""/>
<publicstaticmethods title=""/>
<publicattributes title=""/>
<publicstaticattributes title=""/>
<protectedtypes title=""/>
<protectedslots title=""/>
<protectedmethods title=""/>
<protectedstaticmethods title=""/>
<protectedattributes title=""/>
<protectedstaticattributes title=""/>
<packagetypes title=""/>
<packagemethods title=""/>
<packagestaticmethods title=""/>
<packageattributes title=""/>
<packagestaticattributes title=""/>
<properties title=""/>
<events title=""/>
<privatetypes title=""/>
<privateslots title=""/>
<privatemethods title=""/>
<privatestaticmethods title=""/>
<privateattributes title=""/>
<privatestaticattributes title=""/>
<friends title=""/>
<related title="" subtitle=""/>
<membergroups visible="yes"/>
</memberdecl>
<detaileddescription title=""/>
<memberdef>
<inlineclasses title=""/>
<typedefs title=""/>
<enums title=""/>
<services title=""/>
<interfaces title=""/>
<constructors title=""/>
<functions title=""/>
<related title=""/>
<variables title=""/>
<properties title=""/>
<events title=""/>
</memberdef>
<allmemberslink visible="yes"/>
<usedfiles visible="$SHOW_USED_FILES"/>
<authorsection visible="yes"/>
</class>
<!-- Layout definition for a namespace page -->
<namespace>
<briefdescription visible="yes"/>
<memberdecl>
<nestednamespaces visible="yes" title=""/>
<constantgroups visible="yes" title=""/>
<interfaces visible="yes" title=""/>
<classes visible="yes" title=""/>
<structs visible="yes" title=""/>
<exceptions visible="yes" title=""/>
<typedefs title=""/>
<sequences title=""/>
<dictionaries title=""/>
<enums title=""/>
<functions title=""/>
<variables title=""/>
<membergroups visible="yes"/>
</memberdecl>
<detaileddescription title=""/>
<memberdef>
<inlineclasses title=""/>
<typedefs title=""/>
<sequences title=""/>
<dictionaries title=""/>
<enums title=""/>
<functions title=""/>
<variables title=""/>
</memberdef>
<authorsection visible="yes"/>
</namespace>
<!-- Layout definition for a file page -->
<file>
<briefdescription visible="yes"/>
<includes visible="$SHOW_INCLUDE_FILES"/>
<includegraph visible="$INCLUDE_GRAPH"/>
<includedbygraph visible="$INCLUDED_BY_GRAPH"/>
<sourcelink visible="yes"/>
<memberdecl>
<interfaces visible="yes" title=""/>
<classes visible="yes" title=""/>
<structs visible="yes" title=""/>
<exceptions visible="yes" title=""/>
<namespaces visible="yes" title=""/>
<constantgroups visible="yes" title=""/>
<defines title=""/>
<typedefs title=""/>
<sequences title=""/>
<dictionaries title=""/>
<enums title=""/>
<functions title=""/>
<variables title=""/>
<membergroups visible="yes"/>
</memberdecl>
<detaileddescription title=""/>
<memberdef>
<inlineclasses title=""/>
<defines title=""/>
<typedefs title=""/>
<sequences title=""/>
<dictionaries title=""/>
<enums title=""/>
<functions title=""/>
<variables title=""/>
</memberdef>
<authorsection/>
</file>
<!-- Layout definition for a group page -->
<group>
<briefdescription visible="yes"/>
<groupgraph visible="$GROUP_GRAPHS"/>
<memberdecl>
<nestedgroups visible="yes" title=""/>
<dirs visible="yes" title=""/>
<files visible="yes" title=""/>
<namespaces visible="yes" title=""/>
<classes visible="yes" title=""/>
<defines title=""/>
<typedefs title=""/>
<sequences title=""/>
<dictionaries title=""/>
<enums title=""/>
<enumvalues title=""/>
<functions title=""/>
<variables title=""/>
<signals title=""/>
<publicslots title=""/>
<protectedslots title=""/>
<privateslots title=""/>
<events title=""/>
<properties title=""/>
<friends title=""/>
<membergroups visible="yes"/>
</memberdecl>
<detaileddescription title=""/>
<memberdef>
<pagedocs/>
<inlineclasses title=""/>
<defines title=""/>
<typedefs title=""/>
<sequences title=""/>
<dictionaries title=""/>
<enums title=""/>
<enumvalues title=""/>
<functions title=""/>
<variables title=""/>
<signals title=""/>
<publicslots title=""/>
<protectedslots title=""/>
<privateslots title=""/>
<events title=""/>
<properties title=""/>
<friends title=""/>
</memberdef>
<authorsection visible="yes"/>
</group>
<!-- Layout definition for a directory page -->
<directory>
<briefdescription visible="yes"/>
<directorygraph visible="yes"/>
<memberdecl>
<dirs visible="yes"/>
<files visible="yes"/>
</memberdecl>
<detaileddescription title=""/>
</directory>
</doxygenlayout>

236
pkgdoc/libktxDoxyLayout.xml Normal file
View File

@@ -0,0 +1,236 @@
<doxygenlayout version="1.0">
<!-- Generated by doxygen 1.9.1 -->
<!-- Navigation index tabs for HTML output -->
<navindex>
<tab type="mainpage" visible="yes" title="libktx Reference"/>
<tab type="pages" visible="yes" title="" intro=""/>
<tab type="namespaces" visible="no" title="">
<tab type="namespacelist" visible="no" title="" intro=""/>
<tab type="namespacemembers" visible="no" title="" intro=""/>
</tab>
<tab type="concepts" visible="no" title="">
</tab>
<tab type="interfaces" visible="no" title="">
<tab type="interfacelist" visible="yes" title="" intro=""/>
<tab type="interfaceindex" visible="$ALPHABETICAL_INDEX" title=""/>
<tab type="interfacehierarchy" visible="yes" title="" intro=""/>
</tab>
<tab type="classes" visible="yes" title="">
<tab type="classlist" visible="yes" title="" intro=""/>
<tab type="classindex" visible="$ALPHABETICAL_INDEX" title=""/>
<tab type="hierarchy" visible="yes" title="" intro=""/>
<tab type="classmembers" visible="yes" title="" intro=""/>
</tab>
<tab type="structs" visible="no" title="">
<tab type="structlist" visible="yes" title="" intro=""/>
<tab type="structindex" visible="$ALPHABETICAL_INDEX" title=""/>
</tab>
<tab type="exceptions" visible="no" title="">
<tab type="exceptionlist" visible="yes" title="" intro=""/>
<tab type="exceptionindex" visible="$ALPHABETICAL_INDEX" title=""/>
<tab type="exceptionhierarchy" visible="yes" title="" intro=""/>
</tab>
<tab type="files" visible="yes" title="">
<tab type="filelist" visible="yes" title="" intro=""/>
<tab type="globals" visible="yes" title="" intro=""/>
</tab>
<tab type="examples" visible="yes" title="" intro=""/>
<tab type="user" url="../index.html" title="Package"/>
<tab type="user" url="../ktxtools/index.html" title="KTX Tools Reference"/>
<tab type="user" url="../ktxjswrappers/index.html"
title="KTX Javascript Wrappers Reference"/>
<!-- navindex processing does not look in the .tag file so @ref is NG.
URL to file is fragile.
<tab type="user" url="@ref license" title="License"/> -->
<tab type="user" url="../license.html" title="License"/>
</navindex>
<!-- Layout definition for a class page -->
<class>
<briefdescription visible="yes"/>
<includes visible="$SHOW_INCLUDE_FILES"/>
<inheritancegraph visible="$CLASS_GRAPH"/>
<collaborationgraph visible="$COLLABORATION_GRAPH"/>
<memberdecl>
<nestedclasses visible="yes" title=""/>
<publictypes title=""/>
<services title=""/>
<interfaces title=""/>
<publicslots title=""/>
<signals title=""/>
<publicmethods title=""/>
<publicstaticmethods title=""/>
<publicattributes title=""/>
<publicstaticattributes title=""/>
<protectedtypes title=""/>
<protectedslots title=""/>
<protectedmethods title=""/>
<protectedstaticmethods title=""/>
<protectedattributes title=""/>
<protectedstaticattributes title=""/>
<packagetypes title=""/>
<packagemethods title=""/>
<packagestaticmethods title=""/>
<packageattributes title=""/>
<packagestaticattributes title=""/>
<properties title=""/>
<events title=""/>
<privatetypes title=""/>
<privateslots title=""/>
<privatemethods title=""/>
<privatestaticmethods title=""/>
<privateattributes title=""/>
<privatestaticattributes title=""/>
<friends title=""/>
<related title="" subtitle=""/>
<membergroups visible="yes"/>
</memberdecl>
<detaileddescription title=""/>
<memberdef>
<inlineclasses title=""/>
<typedefs title=""/>
<enums title=""/>
<services title=""/>
<interfaces title=""/>
<constructors title=""/>
<functions title=""/>
<related title=""/>
<variables title=""/>
<properties title=""/>
<events title=""/>
</memberdef>
<allmemberslink visible="yes"/>
<usedfiles visible="$SHOW_USED_FILES"/>
<authorsection visible="yes"/>
</class>
<!-- Layout definition for a namespace page -->
<namespace>
<briefdescription visible="yes"/>
<memberdecl>
<nestednamespaces visible="yes" title=""/>
<constantgroups visible="yes" title=""/>
<interfaces visible="yes" title=""/>
<classes visible="yes" title=""/>
<structs visible="yes" title=""/>
<exceptions visible="yes" title=""/>
<typedefs title=""/>
<sequences title=""/>
<dictionaries title=""/>
<enums title=""/>
<functions title=""/>
<variables title=""/>
<membergroups visible="yes"/>
</memberdecl>
<detaileddescription title=""/>
<memberdef>
<inlineclasses title=""/>
<typedefs title=""/>
<sequences title=""/>
<dictionaries title=""/>
<enums title=""/>
<functions title=""/>
<variables title=""/>
</memberdef>
<authorsection visible="yes"/>
</namespace>
<!-- Layout definition for a file page -->
<file>
<briefdescription visible="yes"/>
<includes visible="$SHOW_INCLUDE_FILES"/>
<includegraph visible="$INCLUDE_GRAPH"/>
<includedbygraph visible="$INCLUDED_BY_GRAPH"/>
<sourcelink visible="yes"/>
<memberdecl>
<interfaces visible="yes" title=""/>
<classes visible="yes" title=""/>
<structs visible="yes" title=""/>
<exceptions visible="yes" title=""/>
<namespaces visible="yes" title=""/>
<constantgroups visible="yes" title=""/>
<defines title=""/>
<typedefs title=""/>
<sequences title=""/>
<dictionaries title=""/>
<enums title=""/>
<functions title=""/>
<variables title=""/>
<membergroups visible="yes"/>
</memberdecl>
<detaileddescription title=""/>
<memberdef>
<inlineclasses title=""/>
<defines title=""/>
<typedefs title=""/>
<sequences title=""/>
<dictionaries title=""/>
<enums title=""/>
<functions title=""/>
<variables title=""/>
</memberdef>
<authorsection/>
</file>
<!-- Layout definition for a group page -->
<group>
<briefdescription visible="yes"/>
<groupgraph visible="$GROUP_GRAPHS"/>
<memberdecl>
<nestedgroups visible="yes" title=""/>
<dirs visible="yes" title=""/>
<files visible="yes" title=""/>
<namespaces visible="yes" title=""/>
<classes visible="yes" title=""/>
<defines title=""/>
<typedefs title=""/>
<sequences title=""/>
<dictionaries title=""/>
<enums title=""/>
<enumvalues title=""/>
<functions title=""/>
<variables title=""/>
<signals title=""/>
<publicslots title=""/>
<protectedslots title=""/>
<privateslots title=""/>
<events title=""/>
<properties title=""/>
<friends title=""/>
<membergroups visible="yes"/>
</memberdecl>
<detaileddescription title=""/>
<memberdef>
<pagedocs/>
<inlineclasses title=""/>
<defines title=""/>
<typedefs title=""/>
<sequences title=""/>
<dictionaries title=""/>
<enums title=""/>
<enumvalues title=""/>
<functions title=""/>
<variables title=""/>
<signals title=""/>
<publicslots title=""/>
<protectedslots title=""/>
<privateslots title=""/>
<events title=""/>
<properties title=""/>
<friends title=""/>
</memberdef>
<authorsection visible="yes"/>
</group>
<!-- Layout definition for a directory page -->
<directory>
<briefdescription visible="yes"/>
<directorygraph visible="yes"/>
<memberdecl>
<dirs visible="yes"/>
<files visible="yes"/>
</memberdecl>
<detaileddescription title=""/>
</directory>
</doxygenlayout>

View File

@@ -2,17 +2,13 @@
<!-- Generated by doxygen 1.8.14 -->
<!-- Navigation index tabs for HTML output -->
<navindex>
<tab type="mainpage" visible="yes" title=""/>
<tab type="mainpage" visible="yes" title="Package"/>
<tab type="pages" visible="yes" title="" intro=""/>
<!--
<tab type="user" title="KTX Tools">
<tab type="user" url="@ref toktx" title="KTX Tools"/>
</tab>
<tab type="user" title="KTX Library">
<tab type="user" url="@ref index" title="Index"/>
<tab type="modules" visible="no" title="" intro=""/>
</tab>
-->
<tab type="user" url="ktxtools/index.html" title="KTX Tools Reference"/>
<tab type="user" url="libktx/index.html" title="libktx Reference"/>
<tab type="user" url="ktxjswrappers/index.html"
title="KTX Javascript Wrappers Reference"/>
<tab type="user" url="@ref license" title=""/>
<tab type="namespaces" visible="no" title="">
<tab type="namespacelist" visible="no" title="" intro=""/>
<tab type="namespacemembers" visible="no" title="" intro=""/>

View File

@@ -1,5 +1,4 @@
Abstract {#abstract}
========
@mainpage
<!--
Can't put at start. Doxygen requires page title on first line.
@@ -12,7 +11,11 @@ The KTX software consists of
files, transcoding those encoded in Basis Universal format and instantiating
OpenGL<sup>&reg;</sup>, OpenGL ES™ and
Vulkan<sup>&reg;</sup> textures from them.
- The KTX tools including `toktx` for creating KTX files from PNG or Netpbm format images.
- The unified KTX tools fronted by `ktx` for creating KTX files from PNG or
EXR files, validating, encoding and transcoding KTX files, extracting
images from them and more.
- Legacy tools including `toktx` for creating KTX files from PNG or Netpbm
format images.
For information about the KTX format see the
<a href="https://www.khronos.org/registry/KTX/">
@@ -21,52 +24,18 @@ and helpful tools for implementers.
The software is open source software. See @ref license for details.
---
@par This page last modified $Date$
#### Note on Navigating the Documentation
@page libktx_main libktx
This GUI provides a unified way to access the four separate KTX document
projects. Due to lack of support in Doxygen for navigating such a collection,
there are some rough edges including, but not limited, to:
Read the [libktx Reference](libktx/index.html).
Current version is @snippet{doc} version.h Code version
<br>
View the @ref libktx_history
---
@par This page last modified $Date$
@page ktxtools KTX Tools
ktx2check
---------
- @ref ktx2check reference page.
- @ref ktx2check_history.
ktx2ktx2
--------
- @ref ktx2ktx2 reference page.
- @ref ktx2ktx2_history.
ktxinfo
-------
- @ref ktxinfo reference page.
- @ref ktxinfo_history.
ktxsc
-----
- @ref ktxsc reference page.
- @ref ktxsc_history.
toktx
-----
- @ref toktx reference page.
- @ref toktx_history.
* The tab ordering changes. A varying number of tabs related to the currently
open project are displayed on the left. Tabs for accessing other projects
follow to the right.
* In the left pane _treeview_ the entries for accessing other projects have
the same indentation under the project's title as all the current project's
pages.
---
@par This page last modified $Date$
@@ -75,16 +44,24 @@ toktx
libKTX is the work of Mark Callow based on work by Georg Kolling and Jacob
Ström with contributions borrowed from Troy Hanson, Johannes van Waveren,
Lode Vandevenne and Rich Geldreich.
Lode Vandevenne and Rich Geldreich. ASTC encoding was added by Wasim Abbas
of ARM. zlib supercompression, HDR, 422 and depth/stencil format support
were added by Mátyás Császár and Daniel Rákos of RasterGrid who also greatly
improved the robustness of the library.
The libKTX tests are also the work of Mark Callow with some contributions
borrowed from Sascha Willems' Vulkan examples and use Sam Lantinga's libSDL
for portability.
`ktx` and all its commands and the CTS for it were developed by Mátyás Császár
and Daniel Rákos of RasterGrid under contract from The Khronos Group, Inc.
The CLI for `ktx` and its commands was designed by Alexey Knyazev.
`ktx2check`, `ktx2ktx2`, `ktxinfo`, `ktxsc` and `toktx` are the work of
Mark Callow.
The KTX application and file icons were designed by Manmohan Bishnoi.
The KTX application and file icons were designed by Dominic Agoro-Ombaka.
---
@par This page last modified $Date$

237
pkgdoc/toolsDoxyLayout.xml Normal file
View File

@@ -0,0 +1,237 @@
<doxygenlayout version="1.0">
<!-- Generated by doxygen 1.9.1 -->
<!-- Navigation index tabs for HTML output -->
<navindex>
<tab type="mainpage" visible="yes" title="KTX Tools Reference"/>
<tab type="pages" visible="yes" title="" intro=""/>
<tab type="modules" visible="no" title="" intro=""/>
<tab type="namespaces" visible="no" title="">
<tab type="namespacelist" visible="yes" title="" intro=""/>
<tab type="namespacemembers" visible="yes" title="" intro=""/>
</tab>
<tab type="concepts" visible="no" title="">
</tab>
<tab type="interfaces" visible="no" title="">
<tab type="interfacelist" visible="yes" title="" intro=""/>
<tab type="interfaceindex" visible="$ALPHABETICAL_INDEX" title=""/>
<tab type="interfacehierarchy" visible="yes" title="" intro=""/>
</tab>
<tab type="classes" visible="no" title="">
<tab type="classlist" visible="yes" title="" intro=""/>
<tab type="classindex" visible="$ALPHABETICAL_INDEX" title=""/>
<tab type="hierarchy" visible="yes" title="" intro=""/>
<tab type="classmembers" visible="yes" title="" intro=""/>
</tab>
<tab type="structs" visible="no" title="">
<tab type="structlist" visible="yes" title="" intro=""/>
<tab type="structindex" visible="$ALPHABETICAL_INDEX" title=""/>
</tab>
<tab type="exceptions" visible="no" title="">
<tab type="exceptionlist" visible="yes" title="" intro=""/>
<tab type="exceptionindex" visible="$ALPHABETICAL_INDEX" title=""/>
<tab type="exceptionhierarchy" visible="yes" title="" intro=""/>
</tab>
<tab type="files" visible="no" title="">
<tab type="filelist" visible="yes" title="" intro=""/>
<tab type="globals" visible="yes" title="" intro=""/>
</tab>
<tab type="examples" visible="no" title="" intro=""/>
<tab type="user" url="../index.html" title="Package"/>
<tab type="user" url="../libktx/index.html" title="libktx Reference"/>
<tab type="user" url="../ktxjswrappers/index.html"
title="KTX Javascript Wrappers Reference"/>
<!-- navindex processing does not look in the .tag file so @ref is NG.
URL to file is fragile.
<tab type="user" url="@ref license" title="License"/> -->
<tab type="user" url="../license.html" title="License"/>
</navindex>
<!-- Layout definition for a class page -->
<class>
<briefdescription visible="yes"/>
<includes visible="$SHOW_INCLUDE_FILES"/>
<inheritancegraph visible="$CLASS_GRAPH"/>
<collaborationgraph visible="$COLLABORATION_GRAPH"/>
<memberdecl>
<nestedclasses visible="yes" title=""/>
<publictypes title=""/>
<services title=""/>
<interfaces title=""/>
<publicslots title=""/>
<signals title=""/>
<publicmethods title=""/>
<publicstaticmethods title=""/>
<publicattributes title=""/>
<publicstaticattributes title=""/>
<protectedtypes title=""/>
<protectedslots title=""/>
<protectedmethods title=""/>
<protectedstaticmethods title=""/>
<protectedattributes title=""/>
<protectedstaticattributes title=""/>
<packagetypes title=""/>
<packagemethods title=""/>
<packagestaticmethods title=""/>
<packageattributes title=""/>
<packagestaticattributes title=""/>
<properties title=""/>
<events title=""/>
<privatetypes title=""/>
<privateslots title=""/>
<privatemethods title=""/>
<privatestaticmethods title=""/>
<privateattributes title=""/>
<privatestaticattributes title=""/>
<friends title=""/>
<related title="" subtitle=""/>
<membergroups visible="yes"/>
</memberdecl>
<detaileddescription title=""/>
<memberdef>
<inlineclasses title=""/>
<typedefs title=""/>
<enums title=""/>
<services title=""/>
<interfaces title=""/>
<constructors title=""/>
<functions title=""/>
<related title=""/>
<variables title=""/>
<properties title=""/>
<events title=""/>
</memberdef>
<allmemberslink visible="yes"/>
<usedfiles visible="$SHOW_USED_FILES"/>
<authorsection visible="yes"/>
</class>
<!-- Layout definition for a namespace page -->
<namespace>
<briefdescription visible="yes"/>
<memberdecl>
<nestednamespaces visible="yes" title=""/>
<constantgroups visible="yes" title=""/>
<interfaces visible="yes" title=""/>
<classes visible="yes" title=""/>
<concepts visible="yes" title=""/>
<structs visible="yes" title=""/>
<exceptions visible="yes" title=""/>
<typedefs title=""/>
<sequences title=""/>
<dictionaries title=""/>
<enums title=""/>
<functions title=""/>
<variables title=""/>
<membergroups visible="yes"/>
</memberdecl>
<detaileddescription title=""/>
<memberdef>
<inlineclasses title=""/>
<typedefs title=""/>
<sequences title=""/>
<dictionaries title=""/>
<enums title=""/>
<functions title=""/>
<variables title=""/>
</memberdef>
<authorsection visible="yes"/>
</namespace>
<!-- Layout definition for a file page -->
<file>
<briefdescription visible="yes"/>
<includes visible="$SHOW_INCLUDE_FILES"/>
<includegraph visible="$INCLUDE_GRAPH"/>
<includedbygraph visible="$INCLUDED_BY_GRAPH"/>
<sourcelink visible="yes"/>
<memberdecl>
<interfaces visible="yes" title=""/>
<classes visible="yes" title=""/>
<structs visible="yes" title=""/>
<exceptions visible="yes" title=""/>
<namespaces visible="yes" title=""/>
<constantgroups visible="yes" title=""/>
<defines title=""/>
<typedefs title=""/>
<sequences title=""/>
<dictionaries title=""/>
<enums title=""/>
<functions title=""/>
<variables title=""/>
<membergroups visible="yes"/>
</memberdecl>
<detaileddescription title=""/>
<memberdef>
<inlineclasses title=""/>
<defines title=""/>
<typedefs title=""/>
<sequences title=""/>
<dictionaries title=""/>
<enums title=""/>
<functions title=""/>
<variables title=""/>
</memberdef>
<authorsection/>
</file>
<!-- Layout definition for a group page -->
<group>
<briefdescription visible="yes"/>
<groupgraph visible="$GROUP_GRAPHS"/>
<memberdecl>
<nestedgroups visible="yes" title=""/>
<dirs visible="yes" title=""/>
<files visible="yes" title=""/>
<namespaces visible="yes" title=""/>
<classes visible="yes" title=""/>
<defines title=""/>
<typedefs title=""/>
<sequences title=""/>
<dictionaries title=""/>
<enums title=""/>
<enumvalues title=""/>
<functions title=""/>
<variables title=""/>
<signals title=""/>
<publicslots title=""/>
<protectedslots title=""/>
<privateslots title=""/>
<events title=""/>
<properties title=""/>
<friends title=""/>
<membergroups visible="yes"/>
</memberdecl>
<detaileddescription title=""/>
<memberdef>
<pagedocs/>
<inlineclasses title=""/>
<defines title=""/>
<typedefs title=""/>
<sequences title=""/>
<dictionaries title=""/>
<enums title=""/>
<enumvalues title=""/>
<functions title=""/>
<variables title=""/>
<signals title=""/>
<publicslots title=""/>
<protectedslots title=""/>
<privateslots title=""/>
<events title=""/>
<properties title=""/>
<friends title=""/>
</memberdef>
<authorsection visible="yes"/>
</group>
<!-- Layout definition for a directory page -->
<directory>
<briefdescription visible="yes"/>
<directorygraph visible="yes"/>
<memberdecl>
<dirs visible="yes"/>
<files visible="yes"/>
</memberdecl>
<detaileddescription title=""/>
</directory>
</doxygenlayout>

View File

@@ -583,15 +583,15 @@ struct OptionsASTC : public ktxAstcParams {
// -------------------------------------------------------------------------------------------------
/** @page ktxtools_create ktx create
/** @page ktx_create ktx create
@~English
Create a KTX2 file from various input files.
@section ktxtools_create_synopsis SYNOPSIS
@section ktx_create_synopsis SYNOPSIS
ktx create [option...] @e input-file... @e output-file
@section ktxtools_create_description DESCRIPTION
@section ktx_create_description DESCRIPTION
@b ktx @b create can create, encode and supercompress a KTX2 file from the
input images specified as the @e input-file... arguments and save it as the
@e output-file. The last positional argument is treated as the @e output-file.
@@ -690,7 +690,7 @@ Create a KTX2 file from various input files.
<dl>
<dt>--encode basis-lz | uastc<</dt>
<dd>Encode the texture with the specified codec before saving it.
This option matches the functionality of the @ref ktxtools_encode "ktx encode" command.
This option matches the functionality of the @ref ktx_encode "ktx encode" command.
With each encoding option the following encoder specific options become valid,
otherwise they are ignored. Case-insensitive.</dd>
@@ -741,15 +741,15 @@ Create a KTX2 file from various input files.
@snippet{doc} ktx/compress_utils.h command options_compress
@snippet{doc} ktx/command.h command options_generic
@section ktxtools_create_exitstatus EXIT STATUS
@section ktx_create_exitstatus EXIT STATUS
@snippet{doc} ktx/command.h command exitstatus
@section ktxtools_create_history HISTORY
@section ktx_create_history HISTORY
@par Version 4.0
- Initial version
@section ktxtools_create_author AUTHOR
@section ktx_create_author AUTHOR
- Mátyás Császár [Vader], RasterGrid www.rastergrid.com
- Daniel Rákos, RasterGrid www.rastergrid.com
*/

View File

@@ -28,15 +28,15 @@ namespace ktx {
// -------------------------------------------------------------------------------------------------
/** @page ktxtools_encode ktx encode
/** @page ktx_encode ktx encode
@~English
Encode a KTX2 file.
@section ktxtools_encode_synopsis SYNOPSIS
@section ktx_encode_synopsis SYNOPSIS
ktx encode [option...] @e input-file @e output-file
@section ktxtools_encode_description DESCRIPTION
@section ktx_encode_description DESCRIPTION
@b ktx @b encode can encode the KTX file specified as the @e input-file argument,
optionally supercompress the result, and save it as the @e output-file.
If the @e input-file is '-' the file will be read from the stdin.
@@ -58,15 +58,15 @@ Encode a KTX2 file.
@snippet{doc} ktx/compress_utils.h command options_compress
@snippet{doc} ktx/command.h command options_generic
@section ktxtools_encode_exitstatus EXIT STATUS
@section ktx_encode_exitstatus EXIT STATUS
@snippet{doc} ktx/command.h command exitstatus
@section ktxtools_encode_history HISTORY
@section ktx_encode_history HISTORY
@par Version 4.0
- Initial version
@section ktxtools_encode_author AUTHOR
@section ktx_encode_author AUTHOR
- Mátyás Császár [Vader], RasterGrid www.rastergrid.com
- Daniel Rákos, RasterGrid www.rastergrid.com
*/

View File

@@ -32,15 +32,15 @@ namespace ktx {
// -------------------------------------------------------------------------------------------------
/** @page ktxtools_extract ktx extract
/** @page ktx_extract ktx extract
@~English
Extract selected images from a KTX2 file.
@section ktxtools_extract_synopsis SYNOPSIS
@section ktx_extract_synopsis SYNOPSIS
ktx extract [option...] @e input-file @e output-path
@section ktxtools_extract_description DESCRIPTION
@section ktx_extract_description DESCRIPTION
@b ktx @b extract can extract one or multiple images from the KTX2 file specified as the
@e input-file argument and, based on the format, save them as Raw, EXR or PNG image files
to the @e output-path.
@@ -77,7 +77,7 @@ Extract selected images from a KTX2 file.
<dd>Transcode the texture to the target format before executing the extract.
Requires the input file to be transcodable (it must be either BasisLZ
supercompressed or has UASTC color model in the DFD). This option matches the
functionality of the @ref ktxtools_transcode "ktx transcode" command.
functionality of the @ref ktx_transcode "ktx transcode" command.
If the target option is not set the r8, rg8, rgb8 or rgba8 target will be selected
based on the number of channels in the input texture.
Block compressed transcode targets can only be saved in raw format.
@@ -112,15 +112,15 @@ Extract selected images from a KTX2 file.
</dl>
@snippet{doc} ktx/command.h command options_generic
@section ktxtools_extract_exitstatus EXIT STATUS
@section ktx_extract_exitstatus EXIT STATUS
@snippet{doc} ktx/command.h command exitstatus
@section ktxtools_extract_history HISTORY
@section ktx_extract_history HISTORY
@par Version 4.0
- Initial version
@section ktxtools_extract_author AUTHOR
@section ktx_extract_author AUTHOR
- Mátyás Császár [Vader], RasterGrid www.rastergrid.com
- Daniel Rákos, RasterGrid www.rastergrid.com
*/

View File

@@ -51,15 +51,15 @@ struct OptionsHelp {
}
};
/** @page ktxtools_help ktx help
/** @page ktx_help ktx help
@~English
Display help information about the ktx tool.
@section ktxtools_help_synopsis SYNOPSIS
@section ktx_help_synopsis SYNOPSIS
ktx help [option...] @e [command]
@section ktxtools_help_description DESCRIPTION
@section ktx_help_description DESCRIPTION
@b ktx @b help displays the man page of a specific ktx command specified as the @e command
argument.
On windows systems the man pages are opened with the system default browser in html format.
@@ -73,26 +73,26 @@ Display help information about the ktx tool.
<dt>command</dt>
<dd>Specifies which command's man page will be displayed. If the command option is missing
the main ktx tool man page will be displayed. Possible options are: <br />
@ref ktxtools_create "create" <br />
@ref ktxtools_extract "extract" <br />
@ref ktxtools_encode "encode" <br />
@ref ktxtools_transcode "transcode" <br />
@ref ktxtools_info "info" <br />
@ref ktxtools_validate "validate" <br />
@ref ktxtools_help "help"
@ref ktx_create "create" <br />
@ref ktx_extract "extract" <br />
@ref ktx_encode "encode" <br />
@ref ktx_transcode "transcode" <br />
@ref ktx_info "info" <br />
@ref ktx_validate "validate" <br />
@ref ktx_help "help"
</dd>
</dl>
@snippet{doc} ktx/command.h command options_generic
@section ktxtools_help_exitstatus EXIT STATUS
@section ktx_help_exitstatus EXIT STATUS
@snippet{doc} ktx/command.h command exitstatus
@section ktxtools_help_history HISTORY
@section ktx_help_history HISTORY
@par Version 4.0
- Initial version
@section ktxtools_help_author AUTHOR
@section ktx_help_author AUTHOR
- Mátyás Császár [Vader], RasterGrid www.rastergrid.com
- Daniel Rákos, RasterGrid www.rastergrid.com
*/
@@ -150,7 +150,7 @@ void CommandHelp::executeHelp() {
executablePath.resize(wcslen(executablePath.c_str()));
const auto commandStr = options.command.value_or("");
const auto systemCommand = fmt::format(L"{}\\..\\share\\doc\\KTX-Software\\html\\ktxtools\\ktxtools{}{}.html",
const auto systemCommand = fmt::format(L"{}\\..\\share\\doc\\KTX-Software\\html\\ktxtools\\ktx{}{}.html",
executablePath,
options.command ? L"_" : L"",
std::wstring(commandStr.begin(), commandStr.end()));
@@ -172,17 +172,18 @@ void CommandHelp::executeHelp() {
# endif
const auto executableDir = std::filesystem::path(executablePath).remove_filename();
const auto manFile = fmt::format("{}/../share/man/man1/ktxtools{}{}.1",
const auto manFile = fmt::format("{}/../share/man/man1/ktx{}{}.1",
executableDir.string(),
options.command ? "_" : "",
options.command.value_or(""));
if (std::filesystem::exists(manFile)) {
// We have relative access to the man file, prioritze opening it that way to support custom install locations
// We have relative access to the man file, prioritze opening it
// that way to support custom install locations
const auto systemCommand = fmt::format("man \"{}\"", manFile);
const auto result = std::system(systemCommand.c_str());
(void) result;
} else {
const auto systemCommand = fmt::format("man ktxtools{}{}",
const auto systemCommand = fmt::format("man ktx{}{}",
options.command ? "_" : "",
options.command.value_or(""));
const auto result = std::system(systemCommand.c_str());

View File

@@ -22,18 +22,18 @@
namespace ktx {
/** @page ktxtools_info ktx info
/** @page ktx_info ktx info
@~English
Print information about a KTX2 file.
@section ktxtools_info_synopsis SYNOPSIS
@section ktx_info_synopsis SYNOPSIS
ktx info [option...] @e input-file
@section ktxtools_info_description DESCRIPTION
@section ktx_info_description DESCRIPTION
@b ktx @b info prints information about the KTX2 file specified as the @e input-file argument.
If the @e input-file is '-' the file will be read from the stdin.
The command implicitly calls @ref ktxtools_validate "validate" and prints any found errors
The command implicitly calls @ref ktx_validate "validate" and prints any found errors
and warnings to stdout.
If the specified input file is invalid the information is displayed based on best effort and
may be incomplete.
@@ -53,15 +53,15 @@ Print information about a KTX2 file.
@snippet{doc} ktx/command.h command options_format
@snippet{doc} ktx/command.h command options_generic
@section ktxtools_info_exitstatus EXIT STATUS
@section ktx_info_exitstatus EXIT STATUS
@snippet{doc} ktx/command.h command exitstatus
@section ktxtools_info_history HISTORY
@section ktx_info_history HISTORY
@par Version 4.0
- Initial version
@section ktxtools_info_author AUTHOR
@section ktx_info_author AUTHOR
- Mátyás Császár [Vader], RasterGrid www.rastergrid.com
- Daniel Rákos, RasterGrid www.rastergrid.com
*/

View File

@@ -28,15 +28,15 @@ namespace ktx {
// -------------------------------------------------------------------------------------------------
/** @page ktxtools_transcode ktx transcode
/** @page ktx_transcode ktx transcode
@~English
Transcode a KTX2 file.
@section ktxtools_transcode_synopsis SYNOPSIS
@section ktx_transcode_synopsis SYNOPSIS
ktx transcode [option...] @e input-file @e output-file
@section ktxtools_transcode_description DESCRIPTION
@section ktx_transcode_description DESCRIPTION
@b ktx @b transcode can transcode the KTX file specified as the @e input-file argument,
optionally supercompress the result, and save it as the @e output-file.
If the @e input-file is '-' the file will be read from the stdin.
@@ -62,15 +62,15 @@ Transcode a KTX2 file.
@snippet{doc} ktx/compress_utils.h command options_compress
@snippet{doc} ktx/command.h command options_generic
@section ktxtools_transcode_exitstatus EXIT STATUS
@section ktx_transcode_exitstatus EXIT STATUS
@snippet{doc} ktx/command.h command exitstatus
@section ktxtools_transcode_history HISTORY
@section ktx_transcode_history HISTORY
@par Version 4.0
- Initial version
@section ktxtools_transcode_author AUTHOR
@section ktx_transcode_author AUTHOR
- Mátyás Császár [Vader], RasterGrid www.rastergrid.com
- Daniel Rákos, RasterGrid www.rastergrid.com
*/

View File

@@ -17,15 +17,15 @@
namespace ktx {
/** @page ktxtools_validate ktx validate
/** @page ktx_validate ktx validate
@~English
Validate a KTX2 file.
@section ktxtools_validate_synopsis SYNOPSIS
@section ktx_validate_synopsis SYNOPSIS
ktx validate [option...] @e input-file
@section ktxtools_validate_description DESCRIPTION
@section ktx_validate_description DESCRIPTION
@b ktx @b validate validates the Khronos texture format version 2 (KTX2) file specified
as the @e input-file argument. It prints any found errors and warnings to stdout.
If the @e input-file is '-' the file will be read from the stdin.
@@ -50,15 +50,15 @@ Validate a KTX2 file.
</dl>
@snippet{doc} ktx/command.h command options_generic
@section ktxtools_validate_exitstatus EXIT STATUS
@section ktx_validate_exitstatus EXIT STATUS
@snippet{doc} ktx/command.h command exitstatus
@section ktxtools_validate_history HISTORY
@section ktx_validate_history HISTORY
@par Version 4.0
- Initial version
@section ktxtools_validate_author AUTHOR
@section ktx_validate_author AUTHOR
- Mátyás Császár [Vader], RasterGrid www.rastergrid.com
- Daniel Rákos, RasterGrid www.rastergrid.com
*/

View File

@@ -17,46 +17,47 @@
namespace ktx {
/** @page ktxtools ktx
/** @page ktx ktx
@~English
Unified CLI frontend for the KTX-Software library.
@section ktxtools_synopsis SYNOPSIS
@section ktx_synopsis SYNOPSIS
ktx &lt;command&gt; [command-option...]<br>
ktx [option...]
@section ktxtools_description DESCRIPTION
Unified CLI frontend for the KTX-Software library with sub-commands for specific operations<br/>
for the KTX File Format Specification https://registry.khronos.org/KTX/specs/2.0/ktxspec.v2.html.
@section ktx_description DESCRIPTION
Unified CLI frontend for the KTX-Software library with sub-commands for specific operations
for the KTX File Format Specification
https://registry.khronos.org/KTX/specs/2.0/ktxspec.v2.html.
The following commands are available:
<dl>
<dt>@ref ktxtools_create "create"</dt>
<dt>@ref ktx_create "create"</dt>
<dd>
Create a KTX2 file from various input files.
</dd>
<dt>@ref ktxtools_extract "extract"</dt>
<dt>@ref ktx_extract "extract"</dt>
<dd>
Extract selected images from a KTX2 file.
</dd>
<dt>@ref ktxtools_encode "encode"</dt>
<dt>@ref ktx_encode "encode"</dt>
<dd>
Encode a KTX2 file.
</dd>
<dt>@ref ktxtools_transcode "transcode"</dt>
<dt>@ref ktx_transcode "transcode"</dt>
<dd>
Transcode a KTX2 file.
</dd>
<dt>@ref ktxtools_info "info"</dt>
<dt>@ref ktx_info "info"</dt>
<dd>
Print information about a KTX2 file.
</dd>
<dt>@ref ktxtools_validate "validate"</dt>
<dt>@ref ktx_validate "validate"</dt>
<dd>
Validate a KTX2 file.
</dd>
<dt>@ref ktxtools_help "help"</dt>
<dt>@ref ktx_help "help"</dt>
<dd>
Display help information about the ktx tool.
</dd>
@@ -65,15 +66,15 @@ Unified CLI frontend for the KTX-Software library.
The following options are also available without a command:
@snippet{doc} ktx/command.h command options_generic
@section ktxtools_exitstatus EXIT STATUS
@section ktx_exitstatus EXIT STATUS
@snippet{doc} ktx/command.h command exitstatus
@section ktxtools_history HISTORY
@section ktx_history HISTORY
@par Version 4.0
- Initial version
@section ktxtools_author AUTHOR
@section ktx_author AUTHOR
- Mátyás Császár [Vader], RasterGrid www.rastergrid.com
- Daniel Rákos, RasterGrid www.rastergrid.com
*/

View File

@@ -0,0 +1,53 @@
@mainpage
<!--
Can't put at start. Doxygen requires page title on first line.
Copyright 2023 The Khronos Group Inc.
SPDX-License-Identifier: Apache-2.0
-->
There are two sets of tools: a new set with a unified front end, @ref ktx, and an older set of individual tools. Both are documented here.
ktx Overview
------------
@ref ktx includes the following tools:
| Tool | Description | Equivalent old tool |
| :--- | ----------- | ------------------- |
| @ref ktx_create | Create a KTX2 file from various input files | `toktx` |
| @ref ktx_extract | Export selected images from a KTX2 file | - |
| @ref ktx_encode | Encode a KTX2 file | `ktxsc` |
| @ref ktx_transcode | Transcode a KTX2 file | - |
| @ref ktx_info | Prints information about a KTX2 file | `ktxinfo` |
| @ref ktx_validate | Validate a KTX2 file | `ktx2check` |
| @ref ktx_help | Display help information about the ktx tools | - |
Equivalent old tools are deprecated and will be removed in the near future.
Some features of old tools are not currently available in their new equivalent.
| Old Tool | New Tool | Missing Features |
| :------: | :------: | ---------------- |
| @ref toktx | @ref ktx_create "create" | JPEG and NBPM input and scaling/resizing. |
| @ref ktxsc | @ref ktx_encode "encode" | ASTC encoding. This can be done in `create`. |
The command-line syntax and semantics differ from the old tools including, but not limited to:
* KTX 1.0 files are not supported by the new tools.
* Words in multi-word option names are connected with `-` instead of `_`.
* Individual option names may differ between the old and new tools.
* The `ktx validate` tool may be stricter than `ktx2check` or otherwise differ in behavior, as the new tool enforces all rules of the KTX 2.0 specification. In addition, all new tools that accept KTX 2.0 files as input will be validated in a similar fashion as they would be with the `ktx validate` tool and will fail on the first specification rule violation, if there is one. It also has the option to output the validation results in human readable text format or in JSON format (both formatted and minified options are available), as controlled by the `--format` command-line option.
* The `ktx validate` tool also supports validating KTX 2.0 files against the additional restrictions defined by the _KHR\_texture\_basisu_ extension. Use the `--gltf-basisu` command-line option to verify glTF and WebGL compatibility.
* The new `ktx info` tool produces a unified and complete output of all metadata in KTX 2.0 files and can provide output in human readable text format or in JSON format (both formatted and minified options are available), as controlled by the `--format` command-line option.
* The source repository also includes the JSON schemas that the JSON outputs of the `ktx info` and `ktx validate` tools comply to.
* The `ktx create` tool takes an explicit Vulkan format argument (`--format`) instead of inferring the format based on the provided input files as `toktx`, and thus doesn't perform any implicit color-space conversions except gamma 2.2 to sRGB. Use the `--assign-oetf`, `--convert-oetf`, `--assign-primaries`, and the new `--convert-primaries` for fine grained control over color-space interpretation and conversion.
* The `ktx create` tool does not support resizing or scaling like `toktx`, and, in general, does not perform any image transformations except the optional color-space conversion and mipmap generation options. Users should resize input images to the appropriate resolution before converting them to KTX 2.0 files.
* The `ktx create` and `ktx extract` tools consume and produce, respectively, image file formats that best suit the used Vulkan format. In general, barring special cases, 8-bit and 16-bit normalized integer formats are imported from and exported to PNG files, while integer and floating point formats are imported from and exported to EXR files based on predefined rules. This may be extended in the future using additional command line options and in response to support for other image file formats.
* The new tools and updated `libktx` support ZLIB supercompression besides the BasisLZ and Zstd supercompression schemes supported previously.
Please refer to the manual pages or use the `--help` command-line option for further details on the options available and associated semantics for each individual command.
---
@par This page last modified $Date$

View File

@@ -1,8 +1,6 @@
// -*- tab-width: 4; -*-
// vi: set sw=2 ts=4 sts=4 expandtab:
// $Id: aaf1dc131758d6a2a60a7ad1e797c02451aecd32 $
// Copyright 2010-2020 The Khronos Group Inc.
// SPDX-License-Identifier: Apache-2.0