From 785c4871513a19b72d4406f37d87497d9b72415d Mon Sep 17 00:00:00 2001 From: Brett Date: Fri, 17 Feb 2023 23:32:23 -0500 Subject: [PATCH] texture class Texture holds information about a texture (data mostly) palette will hold an array of textures. TODO: gl_texture + palette management --- ClionCPPGoodStyleConfig_v6.xml | 73 + cmake-build-debug/.ninja_log | 3 +- cmake-build-debug/CMakeCache.txt | 12 +- cmake-build-debug/CMakeFiles/CMakeOutput.log | 124 +- .../FinalProject.dir/src/main.cpp.o | Bin 771656 -> 0 bytes .../FinalProject.dir/src/render/gl.cpp.o | Bin 1103760 -> 0 bytes .../FinalProject.dir/src/render/window.cpp.o | Bin 572744 -> 0 bytes .../CMakeFiles/clion-Debug-log.txt | 2 +- .../CMakeFiles/clion-environment.txt | 2 +- cmake-build-debug/CMakeFiles/rules.ninja | 12 +- cmake-build-debug/build.ninja | 94 +- .../glfw-3.3.8/cmake_uninstall.cmake | 4 +- cmake-build-release/CMakeCache.txt | 12 +- .../CMakeFiles/CMakeOutput.log | 124 +- .../CMakeFiles/clion-Release-log.txt | 2 +- .../CMakeFiles/clion-environment.txt | 2 +- cmake-build-release/CMakeFiles/rules.ninja | 12 +- cmake-build-release/build.ninja | 94 +- .../glfw-3.3.8/cmake_uninstall.cmake | 4 +- cmake-build-relwithdebinfo/.ninja_deps | Bin 140776 -> 124180 bytes cmake-build-relwithdebinfo/.ninja_log | 44 +- cmake-build-relwithdebinfo/CMakeCache.txt | 12 +- .../CMakeFiles/CMakeOutput.log | 124 +- .../FinalProject.dir/src/main.cpp.o | Bin 736656 -> 0 bytes .../FinalProject.dir/src/render/gl.cpp.o | Bin 1118016 -> 0 bytes .../FinalProject.dir/src/render/window.cpp.o | Bin 469712 -> 0 bytes .../CMakeFiles/clion-RelWithDebInfo-log.txt | 2 +- .../CMakeFiles/clion-environment.txt | 2 +- .../CMakeFiles/rules.ninja | 12 +- cmake-build-relwithdebinfo/build.ninja | 94 +- .../glfw-3.3.8/cmake_uninstall.cmake | 4 +- include/render/textures.h | 73 + include/stb/stb_image.h | 7987 +++++++++++++++++ include/stb/stb_image_resize.h | 2634 ++++++ include/stb/stb_image_write.h | 1724 ++++ include/stb/stb_perlin.h | 428 + include/util/settings.h | 22 + libraries/BLT | 2 +- sources.txt | 3 + src/main.cpp | 3 + src/render/textures.cpp | 8 + src/util/settings.cpp | 56 + 42 files changed, 13420 insertions(+), 390 deletions(-) create mode 100644 ClionCPPGoodStyleConfig_v6.xml delete mode 100644 cmake-build-debug/CMakeFiles/FinalProject.dir/src/main.cpp.o delete mode 100644 cmake-build-debug/CMakeFiles/FinalProject.dir/src/render/gl.cpp.o delete mode 100644 cmake-build-debug/CMakeFiles/FinalProject.dir/src/render/window.cpp.o delete mode 100644 cmake-build-relwithdebinfo/CMakeFiles/FinalProject.dir/src/main.cpp.o delete mode 100644 cmake-build-relwithdebinfo/CMakeFiles/FinalProject.dir/src/render/gl.cpp.o delete mode 100644 cmake-build-relwithdebinfo/CMakeFiles/FinalProject.dir/src/render/window.cpp.o create mode 100644 include/render/textures.h create mode 100644 include/stb/stb_image.h create mode 100644 include/stb/stb_image_resize.h create mode 100644 include/stb/stb_image_write.h create mode 100644 include/stb/stb_perlin.h create mode 100644 include/util/settings.h create mode 100644 src/render/textures.cpp create mode 100644 src/util/settings.cpp diff --git a/ClionCPPGoodStyleConfig_v6.xml b/ClionCPPGoodStyleConfig_v6.xml new file mode 100644 index 0000000..0940dc8 --- /dev/null +++ b/ClionCPPGoodStyleConfig_v6.xml @@ -0,0 +1,73 @@ + + \ No newline at end of file diff --git a/cmake-build-debug/.ninja_log b/cmake-build-debug/.ninja_log index 7c7187d..73ca60e 100644 --- a/cmake-build-debug/.ninja_log +++ b/cmake-build-debug/.ninja_log @@ -9,7 +9,7 @@ 19 685 1675834610617266094 libraries/glfw-3.3.8/src/CMakeFiles/glfw.dir/vulkan.c.o 7ac098ea2e755b71 2 377 1675835240591243670 libraries/glfw-3.3.8/src/CMakeFiles/glfw.dir/window.c.o a716fdf6afcb3ac2 19 807 1675834610745269744 libraries/glfw-3.3.8/src/CMakeFiles/glfw.dir/x11_init.c.o 7a310a4749a2e05 -0 98 1676522405299431511 build.ninja 190f84590f6ee728 +0 98 1676692075130989618 build.ninja 190f84590f6ee728 2 434 1675915441258513581 libraries/BLT/CMakeFiles/BLT.dir/src/blt/std/format.cpp.o 342a5daa6ca9681d 18 706 1675834610629266436 libraries/glfw-3.3.8/src/CMakeFiles/glfw.dir/init.c.o 6051295f860fb367 909 1200 1676342906918621193 libraries/BLT/libBLT.a 163b10f2e7f6635 @@ -35,7 +35,6 @@ 2 438 1675894969704002907 libraries/BLT/CMakeFiles/BLT.dir/src/blt/nbt/nbt.cpp.o a93fa48842fb10a4 1 433 1676342795367607759 CMakeFiles/FinalProject.dir/src/world/chunk/storage.cpp.o c62e5c67ebfa06d 686 825 1675834610761270198 libraries/glfw-3.3.8/src/CMakeFiles/glfw.dir/osmesa_context.c.o c49ca4e889b3908b -2 849 1676232078735813031 CMakeFiles/FinalProject.dir/src/world/chunk/chunk.cpp.o c2a1c71b30b93ca7 2 316 1675881681815231506 libraries/BLT/CMakeFiles/BLT.dir/src/blt/std/filesystem.cpp.o ac1bd7bf33d73c31 1 1096 1676342796027625557 CMakeFiles/FinalProject.dir/src/render/gl.cpp.o d59ba6eec5836ace 706 883 1675834610809271567 libraries/glfw-3.3.8/src/CMakeFiles/glfw.dir/linux_joystick.c.o afc8940b6e7eeae1 diff --git a/cmake-build-debug/CMakeCache.txt b/cmake-build-debug/CMakeCache.txt index e55a28f..4c35ed9 100644 --- a/cmake-build-debug/CMakeCache.txt +++ b/cmake-build-debug/CMakeCache.txt @@ -1,6 +1,6 @@ # This is the CMakeCache file. # For build in directory: /home/brett/Documents/Brock/CS 3P98/Final Project/cmake-build-debug -# It was generated by CMake: /opt/netbrains/clion/clion-2022.1.3/bin/cmake/linux/bin/cmake +# It was generated by CMake: /opt/netbrains/clion/clion-2022.1.3/bin/cmake/linux/x64/bin/cmake # You can edit this file to change values found and used by cmake. # If you do not want to change any of the values, simply exit the editor. # If you do want to change a value, simply edit, save, and exit the editor. @@ -197,7 +197,7 @@ CMAKE_INSTALL_SYSCONFDIR:PATH=etc CMAKE_LINKER:FILEPATH=/usr/bin/ld //No help, variable specified on the command line. -CMAKE_MAKE_PROGRAM:UNINITIALIZED=/opt/netbrains/clion/clion-2022.1.3/bin/ninja/linux/ninja +CMAKE_MAKE_PROGRAM:UNINITIALIZED=/opt/netbrains/clion/clion-2022.1.3/bin/ninja/linux/x64/ninja //Flags used by the linker during the creation of modules during // all build types. @@ -763,11 +763,11 @@ CMAKE_CACHE_MINOR_VERSION:INTERNAL=24 //Patch version of cmake used to create the current loaded cache CMAKE_CACHE_PATCH_VERSION:INTERNAL=2 //Path to CMake executable. -CMAKE_COMMAND:INTERNAL=/opt/netbrains/clion/clion-2022.1.3/bin/cmake/linux/bin/cmake +CMAKE_COMMAND:INTERNAL=/opt/netbrains/clion/clion-2022.1.3/bin/cmake/linux/x64/bin/cmake //Path to cpack program executable. -CMAKE_CPACK_COMMAND:INTERNAL=/opt/netbrains/clion/clion-2022.1.3/bin/cmake/linux/bin/cpack +CMAKE_CPACK_COMMAND:INTERNAL=/opt/netbrains/clion/clion-2022.1.3/bin/cmake/linux/x64/bin/cpack //Path to ctest program executable. -CMAKE_CTEST_COMMAND:INTERNAL=/opt/netbrains/clion/clion-2022.1.3/bin/cmake/linux/bin/ctest +CMAKE_CTEST_COMMAND:INTERNAL=/opt/netbrains/clion/clion-2022.1.3/bin/cmake/linux/x64/bin/ctest //ADVANCED property for variable: CMAKE_CXX_COMPILER CMAKE_CXX_COMPILER-ADVANCED:INTERNAL=1 //ADVANCED property for variable: CMAKE_CXX_COMPILER_AR @@ -902,7 +902,7 @@ CMAKE_RANLIB-ADVANCED:INTERNAL=1 //ADVANCED property for variable: CMAKE_READELF CMAKE_READELF-ADVANCED:INTERNAL=1 //Path to CMake installation. -CMAKE_ROOT:INTERNAL=/opt/netbrains/clion/clion-2022.1.3/bin/cmake/linux/share/cmake-3.24 +CMAKE_ROOT:INTERNAL=/opt/netbrains/clion/clion-2022.1.3/bin/cmake/linux/x64/share/cmake-3.24 //ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS CMAKE_SHARED_LINKER_FLAGS-ADVANCED:INTERNAL=1 //ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_DEBUG diff --git a/cmake-build-debug/CMakeFiles/CMakeOutput.log b/cmake-build-debug/CMakeFiles/CMakeOutput.log index f03eadf..d1db645 100644 --- a/cmake-build-debug/CMakeFiles/CMakeOutput.log +++ b/cmake-build-debug/CMakeFiles/CMakeOutput.log @@ -28,7 +28,7 @@ The CXX compiler identification is GNU, found in "/home/brett/Documents/Brock/CS Detecting C compiler ABI info compiled with the following output: Change Dir: /home/brett/Documents/Brock/CS 3P98/Final Project/cmake-build-debug/CMakeFiles/CMakeTmp -Run Build Command(s):/opt/netbrains/clion/clion-2022.1.3/bin/ninja/linux/ninja cmTC_f9343 && [1/2] Building C object CMakeFiles/cmTC_f9343.dir/CMakeCCompilerABI.c.o +Run Build Command(s):/opt/netbrains/clion/clion-2022.1.3/bin/ninja/linux/x64/ninja cmTC_4f283 && [1/2] Building C object CMakeFiles/cmTC_4f283.dir/CMakeCCompilerABI.c.o Using built-in specs. COLLECT_GCC=/usr/bin/cc OFFLOAD_TARGET_NAMES=nvptx-none:amdgcn-amdhsa @@ -38,8 +38,8 @@ Configured with: ../src/configure -v --with-pkgversion='Debian 12.2.0-14' --with Thread model: posix Supported LTO compression algorithms: zlib zstd gcc version 12.2.0 (Debian 12.2.0-14) -COLLECT_GCC_OPTIONS='-fdiagnostics-color=always' '-v' '-o' 'CMakeFiles/cmTC_f9343.dir/CMakeCCompilerABI.c.o' '-c' '-mtune=generic' '-march=x86-64' '-dumpdir' 'CMakeFiles/cmTC_f9343.dir/' - /usr/lib/gcc/x86_64-linux-gnu/12/cc1 -quiet -v -imultiarch x86_64-linux-gnu /opt/netbrains/clion/clion-2022.1.3/bin/cmake/linux/share/cmake-3.24/Modules/CMakeCCompilerABI.c -quiet -dumpdir CMakeFiles/cmTC_f9343.dir/ -dumpbase CMakeCCompilerABI.c.c -dumpbase-ext .c -mtune=generic -march=x86-64 -version -fdiagnostics-color=always -fasynchronous-unwind-tables -o /tmp/ccaIS7QG.s +COLLECT_GCC_OPTIONS='-fdiagnostics-color=always' '-v' '-o' 'CMakeFiles/cmTC_4f283.dir/CMakeCCompilerABI.c.o' '-c' '-mtune=generic' '-march=x86-64' '-dumpdir' 'CMakeFiles/cmTC_4f283.dir/' + /usr/lib/gcc/x86_64-linux-gnu/12/cc1 -quiet -v -imultiarch x86_64-linux-gnu /opt/netbrains/clion/clion-2022.1.3/bin/cmake/linux/x64/share/cmake-3.24/Modules/CMakeCCompilerABI.c -quiet -dumpdir CMakeFiles/cmTC_4f283.dir/ -dumpbase CMakeCCompilerABI.c.c -dumpbase-ext .c -mtune=generic -march=x86-64 -version -fdiagnostics-color=always -fasynchronous-unwind-tables -o /tmp/ccp6qBoi.s GNU C17 (Debian 12.2.0-14) version 12.2.0 (x86_64-linux-gnu) compiled by GNU C version 12.2.0, GMP version 6.2.1, MPFR version 4.1.1-p1, MPC version 1.3.1, isl version isl-0.25-GMP @@ -61,13 +61,13 @@ GNU C17 (Debian 12.2.0-14) version 12.2.0 (x86_64-linux-gnu) warning: MPFR header version 4.1.1-p1 differs from library version 4.2.0. GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072 Compiler executable checksum: cc72d2b9b5048fedc2be9051c917b40b -COLLECT_GCC_OPTIONS='-fdiagnostics-color=always' '-v' '-o' 'CMakeFiles/cmTC_f9343.dir/CMakeCCompilerABI.c.o' '-c' '-mtune=generic' '-march=x86-64' '-dumpdir' 'CMakeFiles/cmTC_f9343.dir/' - as -v --64 -o CMakeFiles/cmTC_f9343.dir/CMakeCCompilerABI.c.o /tmp/ccaIS7QG.s +COLLECT_GCC_OPTIONS='-fdiagnostics-color=always' '-v' '-o' 'CMakeFiles/cmTC_4f283.dir/CMakeCCompilerABI.c.o' '-c' '-mtune=generic' '-march=x86-64' '-dumpdir' 'CMakeFiles/cmTC_4f283.dir/' + as -v --64 -o CMakeFiles/cmTC_4f283.dir/CMakeCCompilerABI.c.o /tmp/ccp6qBoi.s GNU assembler version 2.40 (x86_64-linux-gnu) using BFD version (GNU Binutils for Debian) 2.40 COMPILER_PATH=/usr/lib/gcc/x86_64-linux-gnu/12/:/usr/lib/gcc/x86_64-linux-gnu/12/:/usr/lib/gcc/x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/12/:/usr/lib/gcc/x86_64-linux-gnu/ LIBRARY_PATH=/usr/lib/gcc/x86_64-linux-gnu/12/:/usr/lib/gcc/x86_64-linux-gnu/12/../../../x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/12/../../../../lib/:/lib/x86_64-linux-gnu/:/lib/../lib/:/usr/lib/x86_64-linux-gnu/:/usr/lib/../lib/:/usr/lib/gcc/x86_64-linux-gnu/12/../../../:/lib/:/usr/lib/ -COLLECT_GCC_OPTIONS='-fdiagnostics-color=always' '-v' '-o' 'CMakeFiles/cmTC_f9343.dir/CMakeCCompilerABI.c.o' '-c' '-mtune=generic' '-march=x86-64' '-dumpdir' 'CMakeFiles/cmTC_f9343.dir/CMakeCCompilerABI.c.' -[2/2] Linking C executable cmTC_f9343 +COLLECT_GCC_OPTIONS='-fdiagnostics-color=always' '-v' '-o' 'CMakeFiles/cmTC_4f283.dir/CMakeCCompilerABI.c.o' '-c' '-mtune=generic' '-march=x86-64' '-dumpdir' 'CMakeFiles/cmTC_4f283.dir/CMakeCCompilerABI.c.' +[2/2] Linking C executable cmTC_4f283 Using built-in specs. COLLECT_GCC=/usr/bin/cc COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/12/lto-wrapper @@ -80,9 +80,9 @@ Supported LTO compression algorithms: zlib zstd gcc version 12.2.0 (Debian 12.2.0-14) COMPILER_PATH=/usr/lib/gcc/x86_64-linux-gnu/12/:/usr/lib/gcc/x86_64-linux-gnu/12/:/usr/lib/gcc/x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/12/:/usr/lib/gcc/x86_64-linux-gnu/ LIBRARY_PATH=/usr/lib/gcc/x86_64-linux-gnu/12/:/usr/lib/gcc/x86_64-linux-gnu/12/../../../x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/12/../../../../lib/:/lib/x86_64-linux-gnu/:/lib/../lib/:/usr/lib/x86_64-linux-gnu/:/usr/lib/../lib/:/usr/lib/gcc/x86_64-linux-gnu/12/../../../:/lib/:/usr/lib/ -COLLECT_GCC_OPTIONS='-v' '-rdynamic' '-o' 'cmTC_f9343' '-mtune=generic' '-march=x86-64' '-dumpdir' 'cmTC_f9343.' - /usr/lib/gcc/x86_64-linux-gnu/12/collect2 -plugin /usr/lib/gcc/x86_64-linux-gnu/12/liblto_plugin.so -plugin-opt=/usr/lib/gcc/x86_64-linux-gnu/12/lto-wrapper -plugin-opt=-fresolution=/tmp/ccxWMwKK.res -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lc -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lgcc_s --build-id --eh-frame-hdr -m elf_x86_64 --hash-style=gnu --as-needed -export-dynamic -dynamic-linker /lib64/ld-linux-x86-64.so.2 -pie -o cmTC_f9343 /usr/lib/gcc/x86_64-linux-gnu/12/../../../x86_64-linux-gnu/Scrt1.o /usr/lib/gcc/x86_64-linux-gnu/12/../../../x86_64-linux-gnu/crti.o /usr/lib/gcc/x86_64-linux-gnu/12/crtbeginS.o -L/usr/lib/gcc/x86_64-linux-gnu/12 -L/usr/lib/gcc/x86_64-linux-gnu/12/../../../x86_64-linux-gnu -L/usr/lib/gcc/x86_64-linux-gnu/12/../../../../lib -L/lib/x86_64-linux-gnu -L/lib/../lib -L/usr/lib/x86_64-linux-gnu -L/usr/lib/../lib -L/usr/lib/gcc/x86_64-linux-gnu/12/../../.. CMakeFiles/cmTC_f9343.dir/CMakeCCompilerABI.c.o -lgcc --push-state --as-needed -lgcc_s --pop-state -lc -lgcc --push-state --as-needed -lgcc_s --pop-state /usr/lib/gcc/x86_64-linux-gnu/12/crtendS.o /usr/lib/gcc/x86_64-linux-gnu/12/../../../x86_64-linux-gnu/crtn.o -COLLECT_GCC_OPTIONS='-v' '-rdynamic' '-o' 'cmTC_f9343' '-mtune=generic' '-march=x86-64' '-dumpdir' 'cmTC_f9343.' +COLLECT_GCC_OPTIONS='-v' '-rdynamic' '-o' 'cmTC_4f283' '-mtune=generic' '-march=x86-64' '-dumpdir' 'cmTC_4f283.' + /usr/lib/gcc/x86_64-linux-gnu/12/collect2 -plugin /usr/lib/gcc/x86_64-linux-gnu/12/liblto_plugin.so -plugin-opt=/usr/lib/gcc/x86_64-linux-gnu/12/lto-wrapper -plugin-opt=-fresolution=/tmp/cchuXa0r.res -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lc -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lgcc_s --build-id --eh-frame-hdr -m elf_x86_64 --hash-style=gnu --as-needed -export-dynamic -dynamic-linker /lib64/ld-linux-x86-64.so.2 -pie -o cmTC_4f283 /usr/lib/gcc/x86_64-linux-gnu/12/../../../x86_64-linux-gnu/Scrt1.o /usr/lib/gcc/x86_64-linux-gnu/12/../../../x86_64-linux-gnu/crti.o /usr/lib/gcc/x86_64-linux-gnu/12/crtbeginS.o -L/usr/lib/gcc/x86_64-linux-gnu/12 -L/usr/lib/gcc/x86_64-linux-gnu/12/../../../x86_64-linux-gnu -L/usr/lib/gcc/x86_64-linux-gnu/12/../../../../lib -L/lib/x86_64-linux-gnu -L/lib/../lib -L/usr/lib/x86_64-linux-gnu -L/usr/lib/../lib -L/usr/lib/gcc/x86_64-linux-gnu/12/../../.. CMakeFiles/cmTC_4f283.dir/CMakeCCompilerABI.c.o -lgcc --push-state --as-needed -lgcc_s --pop-state -lc -lgcc --push-state --as-needed -lgcc_s --pop-state /usr/lib/gcc/x86_64-linux-gnu/12/crtendS.o /usr/lib/gcc/x86_64-linux-gnu/12/../../../x86_64-linux-gnu/crtn.o +COLLECT_GCC_OPTIONS='-v' '-rdynamic' '-o' 'cmTC_4f283' '-mtune=generic' '-march=x86-64' '-dumpdir' 'cmTC_4f283.' @@ -105,7 +105,7 @@ Parsed C implicit link information from above output: link line regex: [^( *|.*[/\])(ld|CMAKE_LINK_STARTFILE-NOTFOUND|([^/\]+-)?ld|collect2)[^/\]*( |$)] ignore line: [Change Dir: /home/brett/Documents/Brock/CS 3P98/Final Project/cmake-build-debug/CMakeFiles/CMakeTmp] ignore line: [] - ignore line: [Run Build Command(s):/opt/netbrains/clion/clion-2022.1.3/bin/ninja/linux/ninja cmTC_f9343 && [1/2] Building C object CMakeFiles/cmTC_f9343.dir/CMakeCCompilerABI.c.o] + ignore line: [Run Build Command(s):/opt/netbrains/clion/clion-2022.1.3/bin/ninja/linux/x64/ninja cmTC_4f283 && [1/2] Building C object CMakeFiles/cmTC_4f283.dir/CMakeCCompilerABI.c.o] ignore line: [Using built-in specs.] ignore line: [COLLECT_GCC=/usr/bin/cc] ignore line: [OFFLOAD_TARGET_NAMES=nvptx-none:amdgcn-amdhsa] @@ -115,8 +115,8 @@ Parsed C implicit link information from above output: ignore line: [Thread model: posix] ignore line: [Supported LTO compression algorithms: zlib zstd] ignore line: [gcc version 12.2.0 (Debian 12.2.0-14) ] - ignore line: [COLLECT_GCC_OPTIONS='-fdiagnostics-color=always' '-v' '-o' 'CMakeFiles/cmTC_f9343.dir/CMakeCCompilerABI.c.o' '-c' '-mtune=generic' '-march=x86-64' '-dumpdir' 'CMakeFiles/cmTC_f9343.dir/'] - ignore line: [ /usr/lib/gcc/x86_64-linux-gnu/12/cc1 -quiet -v -imultiarch x86_64-linux-gnu /opt/netbrains/clion/clion-2022.1.3/bin/cmake/linux/share/cmake-3.24/Modules/CMakeCCompilerABI.c -quiet -dumpdir CMakeFiles/cmTC_f9343.dir/ -dumpbase CMakeCCompilerABI.c.c -dumpbase-ext .c -mtune=generic -march=x86-64 -version -fdiagnostics-color=always -fasynchronous-unwind-tables -o /tmp/ccaIS7QG.s] + ignore line: [COLLECT_GCC_OPTIONS='-fdiagnostics-color=always' '-v' '-o' 'CMakeFiles/cmTC_4f283.dir/CMakeCCompilerABI.c.o' '-c' '-mtune=generic' '-march=x86-64' '-dumpdir' 'CMakeFiles/cmTC_4f283.dir/'] + ignore line: [ /usr/lib/gcc/x86_64-linux-gnu/12/cc1 -quiet -v -imultiarch x86_64-linux-gnu /opt/netbrains/clion/clion-2022.1.3/bin/cmake/linux/x64/share/cmake-3.24/Modules/CMakeCCompilerABI.c -quiet -dumpdir CMakeFiles/cmTC_4f283.dir/ -dumpbase CMakeCCompilerABI.c.c -dumpbase-ext .c -mtune=generic -march=x86-64 -version -fdiagnostics-color=always -fasynchronous-unwind-tables -o /tmp/ccp6qBoi.s] ignore line: [GNU C17 (Debian 12.2.0-14) version 12.2.0 (x86_64-linux-gnu)] ignore line: [ compiled by GNU C version 12.2.0 GMP version 6.2.1 MPFR version 4.1.1-p1 MPC version 1.3.1 isl version isl-0.25-GMP] ignore line: [] @@ -138,13 +138,13 @@ Parsed C implicit link information from above output: ignore line: [warning: MPFR header version 4.1.1-p1 differs from library version 4.2.0.] ignore line: [GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072] ignore line: [Compiler executable checksum: cc72d2b9b5048fedc2be9051c917b40b] - ignore line: [COLLECT_GCC_OPTIONS='-fdiagnostics-color=always' '-v' '-o' 'CMakeFiles/cmTC_f9343.dir/CMakeCCompilerABI.c.o' '-c' '-mtune=generic' '-march=x86-64' '-dumpdir' 'CMakeFiles/cmTC_f9343.dir/'] - ignore line: [ as -v --64 -o CMakeFiles/cmTC_f9343.dir/CMakeCCompilerABI.c.o /tmp/ccaIS7QG.s] + ignore line: [COLLECT_GCC_OPTIONS='-fdiagnostics-color=always' '-v' '-o' 'CMakeFiles/cmTC_4f283.dir/CMakeCCompilerABI.c.o' '-c' '-mtune=generic' '-march=x86-64' '-dumpdir' 'CMakeFiles/cmTC_4f283.dir/'] + ignore line: [ as -v --64 -o CMakeFiles/cmTC_4f283.dir/CMakeCCompilerABI.c.o /tmp/ccp6qBoi.s] ignore line: [GNU assembler version 2.40 (x86_64-linux-gnu) using BFD version (GNU Binutils for Debian) 2.40] ignore line: [COMPILER_PATH=/usr/lib/gcc/x86_64-linux-gnu/12/:/usr/lib/gcc/x86_64-linux-gnu/12/:/usr/lib/gcc/x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/12/:/usr/lib/gcc/x86_64-linux-gnu/] ignore line: [LIBRARY_PATH=/usr/lib/gcc/x86_64-linux-gnu/12/:/usr/lib/gcc/x86_64-linux-gnu/12/../../../x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/12/../../../../lib/:/lib/x86_64-linux-gnu/:/lib/../lib/:/usr/lib/x86_64-linux-gnu/:/usr/lib/../lib/:/usr/lib/gcc/x86_64-linux-gnu/12/../../../:/lib/:/usr/lib/] - ignore line: [COLLECT_GCC_OPTIONS='-fdiagnostics-color=always' '-v' '-o' 'CMakeFiles/cmTC_f9343.dir/CMakeCCompilerABI.c.o' '-c' '-mtune=generic' '-march=x86-64' '-dumpdir' 'CMakeFiles/cmTC_f9343.dir/CMakeCCompilerABI.c.'] - ignore line: [[2/2] Linking C executable cmTC_f9343] + ignore line: [COLLECT_GCC_OPTIONS='-fdiagnostics-color=always' '-v' '-o' 'CMakeFiles/cmTC_4f283.dir/CMakeCCompilerABI.c.o' '-c' '-mtune=generic' '-march=x86-64' '-dumpdir' 'CMakeFiles/cmTC_4f283.dir/CMakeCCompilerABI.c.'] + ignore line: [[2/2] Linking C executable cmTC_4f283] ignore line: [Using built-in specs.] ignore line: [COLLECT_GCC=/usr/bin/cc] ignore line: [COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/12/lto-wrapper] @@ -157,13 +157,13 @@ Parsed C implicit link information from above output: ignore line: [gcc version 12.2.0 (Debian 12.2.0-14) ] ignore line: [COMPILER_PATH=/usr/lib/gcc/x86_64-linux-gnu/12/:/usr/lib/gcc/x86_64-linux-gnu/12/:/usr/lib/gcc/x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/12/:/usr/lib/gcc/x86_64-linux-gnu/] ignore line: [LIBRARY_PATH=/usr/lib/gcc/x86_64-linux-gnu/12/:/usr/lib/gcc/x86_64-linux-gnu/12/../../../x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/12/../../../../lib/:/lib/x86_64-linux-gnu/:/lib/../lib/:/usr/lib/x86_64-linux-gnu/:/usr/lib/../lib/:/usr/lib/gcc/x86_64-linux-gnu/12/../../../:/lib/:/usr/lib/] - ignore line: [COLLECT_GCC_OPTIONS='-v' '-rdynamic' '-o' 'cmTC_f9343' '-mtune=generic' '-march=x86-64' '-dumpdir' 'cmTC_f9343.'] - link line: [ /usr/lib/gcc/x86_64-linux-gnu/12/collect2 -plugin /usr/lib/gcc/x86_64-linux-gnu/12/liblto_plugin.so -plugin-opt=/usr/lib/gcc/x86_64-linux-gnu/12/lto-wrapper -plugin-opt=-fresolution=/tmp/ccxWMwKK.res -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lc -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lgcc_s --build-id --eh-frame-hdr -m elf_x86_64 --hash-style=gnu --as-needed -export-dynamic -dynamic-linker /lib64/ld-linux-x86-64.so.2 -pie -o cmTC_f9343 /usr/lib/gcc/x86_64-linux-gnu/12/../../../x86_64-linux-gnu/Scrt1.o /usr/lib/gcc/x86_64-linux-gnu/12/../../../x86_64-linux-gnu/crti.o /usr/lib/gcc/x86_64-linux-gnu/12/crtbeginS.o -L/usr/lib/gcc/x86_64-linux-gnu/12 -L/usr/lib/gcc/x86_64-linux-gnu/12/../../../x86_64-linux-gnu -L/usr/lib/gcc/x86_64-linux-gnu/12/../../../../lib -L/lib/x86_64-linux-gnu -L/lib/../lib -L/usr/lib/x86_64-linux-gnu -L/usr/lib/../lib -L/usr/lib/gcc/x86_64-linux-gnu/12/../../.. CMakeFiles/cmTC_f9343.dir/CMakeCCompilerABI.c.o -lgcc --push-state --as-needed -lgcc_s --pop-state -lc -lgcc --push-state --as-needed -lgcc_s --pop-state /usr/lib/gcc/x86_64-linux-gnu/12/crtendS.o /usr/lib/gcc/x86_64-linux-gnu/12/../../../x86_64-linux-gnu/crtn.o] + ignore line: [COLLECT_GCC_OPTIONS='-v' '-rdynamic' '-o' 'cmTC_4f283' '-mtune=generic' '-march=x86-64' '-dumpdir' 'cmTC_4f283.'] + link line: [ /usr/lib/gcc/x86_64-linux-gnu/12/collect2 -plugin /usr/lib/gcc/x86_64-linux-gnu/12/liblto_plugin.so -plugin-opt=/usr/lib/gcc/x86_64-linux-gnu/12/lto-wrapper -plugin-opt=-fresolution=/tmp/cchuXa0r.res -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lc -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lgcc_s --build-id --eh-frame-hdr -m elf_x86_64 --hash-style=gnu --as-needed -export-dynamic -dynamic-linker /lib64/ld-linux-x86-64.so.2 -pie -o cmTC_4f283 /usr/lib/gcc/x86_64-linux-gnu/12/../../../x86_64-linux-gnu/Scrt1.o /usr/lib/gcc/x86_64-linux-gnu/12/../../../x86_64-linux-gnu/crti.o /usr/lib/gcc/x86_64-linux-gnu/12/crtbeginS.o -L/usr/lib/gcc/x86_64-linux-gnu/12 -L/usr/lib/gcc/x86_64-linux-gnu/12/../../../x86_64-linux-gnu -L/usr/lib/gcc/x86_64-linux-gnu/12/../../../../lib -L/lib/x86_64-linux-gnu -L/lib/../lib -L/usr/lib/x86_64-linux-gnu -L/usr/lib/../lib -L/usr/lib/gcc/x86_64-linux-gnu/12/../../.. CMakeFiles/cmTC_4f283.dir/CMakeCCompilerABI.c.o -lgcc --push-state --as-needed -lgcc_s --pop-state -lc -lgcc --push-state --as-needed -lgcc_s --pop-state /usr/lib/gcc/x86_64-linux-gnu/12/crtendS.o /usr/lib/gcc/x86_64-linux-gnu/12/../../../x86_64-linux-gnu/crtn.o] arg [/usr/lib/gcc/x86_64-linux-gnu/12/collect2] ==> ignore arg [-plugin] ==> ignore arg [/usr/lib/gcc/x86_64-linux-gnu/12/liblto_plugin.so] ==> ignore arg [-plugin-opt=/usr/lib/gcc/x86_64-linux-gnu/12/lto-wrapper] ==> ignore - arg [-plugin-opt=-fresolution=/tmp/ccxWMwKK.res] ==> ignore + arg [-plugin-opt=-fresolution=/tmp/cchuXa0r.res] ==> ignore arg [-plugin-opt=-pass-through=-lgcc] ==> ignore arg [-plugin-opt=-pass-through=-lgcc_s] ==> ignore arg [-plugin-opt=-pass-through=-lc] ==> ignore @@ -180,7 +180,7 @@ Parsed C implicit link information from above output: arg [/lib64/ld-linux-x86-64.so.2] ==> ignore arg [-pie] ==> ignore arg [-o] ==> ignore - arg [cmTC_f9343] ==> ignore + arg [cmTC_4f283] ==> ignore arg [/usr/lib/gcc/x86_64-linux-gnu/12/../../../x86_64-linux-gnu/Scrt1.o] ==> obj [/usr/lib/gcc/x86_64-linux-gnu/12/../../../x86_64-linux-gnu/Scrt1.o] arg [/usr/lib/gcc/x86_64-linux-gnu/12/../../../x86_64-linux-gnu/crti.o] ==> obj [/usr/lib/gcc/x86_64-linux-gnu/12/../../../x86_64-linux-gnu/crti.o] arg [/usr/lib/gcc/x86_64-linux-gnu/12/crtbeginS.o] ==> obj [/usr/lib/gcc/x86_64-linux-gnu/12/crtbeginS.o] @@ -192,7 +192,7 @@ Parsed C implicit link information from above output: arg [-L/usr/lib/x86_64-linux-gnu] ==> dir [/usr/lib/x86_64-linux-gnu] arg [-L/usr/lib/../lib] ==> dir [/usr/lib/../lib] arg [-L/usr/lib/gcc/x86_64-linux-gnu/12/../../..] ==> dir [/usr/lib/gcc/x86_64-linux-gnu/12/../../..] - arg [CMakeFiles/cmTC_f9343.dir/CMakeCCompilerABI.c.o] ==> ignore + arg [CMakeFiles/cmTC_4f283.dir/CMakeCCompilerABI.c.o] ==> ignore arg [-lgcc] ==> lib [gcc] arg [--push-state] ==> ignore arg [--as-needed] ==> ignore @@ -226,7 +226,7 @@ Parsed C implicit link information from above output: Detecting CXX compiler ABI info compiled with the following output: Change Dir: /home/brett/Documents/Brock/CS 3P98/Final Project/cmake-build-debug/CMakeFiles/CMakeTmp -Run Build Command(s):/opt/netbrains/clion/clion-2022.1.3/bin/ninja/linux/ninja cmTC_6b35c && [1/2] Building CXX object CMakeFiles/cmTC_6b35c.dir/CMakeCXXCompilerABI.cpp.o +Run Build Command(s):/opt/netbrains/clion/clion-2022.1.3/bin/ninja/linux/x64/ninja cmTC_e4eb8 && [1/2] Building CXX object CMakeFiles/cmTC_e4eb8.dir/CMakeCXXCompilerABI.cpp.o Using built-in specs. COLLECT_GCC=/usr/bin/c++ OFFLOAD_TARGET_NAMES=nvptx-none:amdgcn-amdhsa @@ -236,8 +236,8 @@ Configured with: ../src/configure -v --with-pkgversion='Debian 12.2.0-14' --with Thread model: posix Supported LTO compression algorithms: zlib zstd gcc version 12.2.0 (Debian 12.2.0-14) -COLLECT_GCC_OPTIONS='-fdiagnostics-color=always' '-v' '-o' 'CMakeFiles/cmTC_6b35c.dir/CMakeCXXCompilerABI.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64' '-dumpdir' 'CMakeFiles/cmTC_6b35c.dir/' - /usr/lib/gcc/x86_64-linux-gnu/12/cc1plus -quiet -v -imultiarch x86_64-linux-gnu -D_GNU_SOURCE /opt/netbrains/clion/clion-2022.1.3/bin/cmake/linux/share/cmake-3.24/Modules/CMakeCXXCompilerABI.cpp -quiet -dumpdir CMakeFiles/cmTC_6b35c.dir/ -dumpbase CMakeCXXCompilerABI.cpp.cpp -dumpbase-ext .cpp -mtune=generic -march=x86-64 -version -fdiagnostics-color=always -fasynchronous-unwind-tables -o /tmp/cc8DQmhI.s +COLLECT_GCC_OPTIONS='-fdiagnostics-color=always' '-v' '-o' 'CMakeFiles/cmTC_e4eb8.dir/CMakeCXXCompilerABI.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64' '-dumpdir' 'CMakeFiles/cmTC_e4eb8.dir/' + /usr/lib/gcc/x86_64-linux-gnu/12/cc1plus -quiet -v -imultiarch x86_64-linux-gnu -D_GNU_SOURCE /opt/netbrains/clion/clion-2022.1.3/bin/cmake/linux/x64/share/cmake-3.24/Modules/CMakeCXXCompilerABI.cpp -quiet -dumpdir CMakeFiles/cmTC_e4eb8.dir/ -dumpbase CMakeCXXCompilerABI.cpp.cpp -dumpbase-ext .cpp -mtune=generic -march=x86-64 -version -fdiagnostics-color=always -fasynchronous-unwind-tables -o /tmp/ccKMOg5o.s GNU C++17 (Debian 12.2.0-14) version 12.2.0 (x86_64-linux-gnu) compiled by GNU C version 12.2.0, GMP version 6.2.1, MPFR version 4.1.1-p1, MPC version 1.3.1, isl version isl-0.25-GMP @@ -263,13 +263,13 @@ GNU C++17 (Debian 12.2.0-14) version 12.2.0 (x86_64-linux-gnu) warning: MPFR header version 4.1.1-p1 differs from library version 4.2.0. GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072 Compiler executable checksum: 62b090dbbefa50644117a3c13d47369a -COLLECT_GCC_OPTIONS='-fdiagnostics-color=always' '-v' '-o' 'CMakeFiles/cmTC_6b35c.dir/CMakeCXXCompilerABI.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64' '-dumpdir' 'CMakeFiles/cmTC_6b35c.dir/' - as -v --64 -o CMakeFiles/cmTC_6b35c.dir/CMakeCXXCompilerABI.cpp.o /tmp/cc8DQmhI.s +COLLECT_GCC_OPTIONS='-fdiagnostics-color=always' '-v' '-o' 'CMakeFiles/cmTC_e4eb8.dir/CMakeCXXCompilerABI.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64' '-dumpdir' 'CMakeFiles/cmTC_e4eb8.dir/' + as -v --64 -o CMakeFiles/cmTC_e4eb8.dir/CMakeCXXCompilerABI.cpp.o /tmp/ccKMOg5o.s GNU assembler version 2.40 (x86_64-linux-gnu) using BFD version (GNU Binutils for Debian) 2.40 COMPILER_PATH=/usr/lib/gcc/x86_64-linux-gnu/12/:/usr/lib/gcc/x86_64-linux-gnu/12/:/usr/lib/gcc/x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/12/:/usr/lib/gcc/x86_64-linux-gnu/ LIBRARY_PATH=/usr/lib/gcc/x86_64-linux-gnu/12/:/usr/lib/gcc/x86_64-linux-gnu/12/../../../x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/12/../../../../lib/:/lib/x86_64-linux-gnu/:/lib/../lib/:/usr/lib/x86_64-linux-gnu/:/usr/lib/../lib/:/usr/lib/gcc/x86_64-linux-gnu/12/../../../:/lib/:/usr/lib/ -COLLECT_GCC_OPTIONS='-fdiagnostics-color=always' '-v' '-o' 'CMakeFiles/cmTC_6b35c.dir/CMakeCXXCompilerABI.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64' '-dumpdir' 'CMakeFiles/cmTC_6b35c.dir/CMakeCXXCompilerABI.cpp.' -[2/2] Linking CXX executable cmTC_6b35c +COLLECT_GCC_OPTIONS='-fdiagnostics-color=always' '-v' '-o' 'CMakeFiles/cmTC_e4eb8.dir/CMakeCXXCompilerABI.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64' '-dumpdir' 'CMakeFiles/cmTC_e4eb8.dir/CMakeCXXCompilerABI.cpp.' +[2/2] Linking CXX executable cmTC_e4eb8 Using built-in specs. COLLECT_GCC=/usr/bin/c++ COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/12/lto-wrapper @@ -282,9 +282,9 @@ Supported LTO compression algorithms: zlib zstd gcc version 12.2.0 (Debian 12.2.0-14) COMPILER_PATH=/usr/lib/gcc/x86_64-linux-gnu/12/:/usr/lib/gcc/x86_64-linux-gnu/12/:/usr/lib/gcc/x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/12/:/usr/lib/gcc/x86_64-linux-gnu/ LIBRARY_PATH=/usr/lib/gcc/x86_64-linux-gnu/12/:/usr/lib/gcc/x86_64-linux-gnu/12/../../../x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/12/../../../../lib/:/lib/x86_64-linux-gnu/:/lib/../lib/:/usr/lib/x86_64-linux-gnu/:/usr/lib/../lib/:/usr/lib/gcc/x86_64-linux-gnu/12/../../../:/lib/:/usr/lib/ -COLLECT_GCC_OPTIONS='-v' '-rdynamic' '-o' 'cmTC_6b35c' '-shared-libgcc' '-mtune=generic' '-march=x86-64' '-dumpdir' 'cmTC_6b35c.' - /usr/lib/gcc/x86_64-linux-gnu/12/collect2 -plugin /usr/lib/gcc/x86_64-linux-gnu/12/liblto_plugin.so -plugin-opt=/usr/lib/gcc/x86_64-linux-gnu/12/lto-wrapper -plugin-opt=-fresolution=/tmp/cc5K2rMo.res -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lc -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lgcc --build-id --eh-frame-hdr -m elf_x86_64 --hash-style=gnu --as-needed -export-dynamic -dynamic-linker /lib64/ld-linux-x86-64.so.2 -pie -o cmTC_6b35c /usr/lib/gcc/x86_64-linux-gnu/12/../../../x86_64-linux-gnu/Scrt1.o /usr/lib/gcc/x86_64-linux-gnu/12/../../../x86_64-linux-gnu/crti.o /usr/lib/gcc/x86_64-linux-gnu/12/crtbeginS.o -L/usr/lib/gcc/x86_64-linux-gnu/12 -L/usr/lib/gcc/x86_64-linux-gnu/12/../../../x86_64-linux-gnu -L/usr/lib/gcc/x86_64-linux-gnu/12/../../../../lib -L/lib/x86_64-linux-gnu -L/lib/../lib -L/usr/lib/x86_64-linux-gnu -L/usr/lib/../lib -L/usr/lib/gcc/x86_64-linux-gnu/12/../../.. CMakeFiles/cmTC_6b35c.dir/CMakeCXXCompilerABI.cpp.o -lstdc++ -lm -lgcc_s -lgcc -lc -lgcc_s -lgcc /usr/lib/gcc/x86_64-linux-gnu/12/crtendS.o /usr/lib/gcc/x86_64-linux-gnu/12/../../../x86_64-linux-gnu/crtn.o -COLLECT_GCC_OPTIONS='-v' '-rdynamic' '-o' 'cmTC_6b35c' '-shared-libgcc' '-mtune=generic' '-march=x86-64' '-dumpdir' 'cmTC_6b35c.' +COLLECT_GCC_OPTIONS='-v' '-rdynamic' '-o' 'cmTC_e4eb8' '-shared-libgcc' '-mtune=generic' '-march=x86-64' '-dumpdir' 'cmTC_e4eb8.' + /usr/lib/gcc/x86_64-linux-gnu/12/collect2 -plugin /usr/lib/gcc/x86_64-linux-gnu/12/liblto_plugin.so -plugin-opt=/usr/lib/gcc/x86_64-linux-gnu/12/lto-wrapper -plugin-opt=-fresolution=/tmp/ccg6ne2X.res -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lc -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lgcc --build-id --eh-frame-hdr -m elf_x86_64 --hash-style=gnu --as-needed -export-dynamic -dynamic-linker /lib64/ld-linux-x86-64.so.2 -pie -o cmTC_e4eb8 /usr/lib/gcc/x86_64-linux-gnu/12/../../../x86_64-linux-gnu/Scrt1.o /usr/lib/gcc/x86_64-linux-gnu/12/../../../x86_64-linux-gnu/crti.o /usr/lib/gcc/x86_64-linux-gnu/12/crtbeginS.o -L/usr/lib/gcc/x86_64-linux-gnu/12 -L/usr/lib/gcc/x86_64-linux-gnu/12/../../../x86_64-linux-gnu -L/usr/lib/gcc/x86_64-linux-gnu/12/../../../../lib -L/lib/x86_64-linux-gnu -L/lib/../lib -L/usr/lib/x86_64-linux-gnu -L/usr/lib/../lib -L/usr/lib/gcc/x86_64-linux-gnu/12/../../.. CMakeFiles/cmTC_e4eb8.dir/CMakeCXXCompilerABI.cpp.o -lstdc++ -lm -lgcc_s -lgcc -lc -lgcc_s -lgcc /usr/lib/gcc/x86_64-linux-gnu/12/crtendS.o /usr/lib/gcc/x86_64-linux-gnu/12/../../../x86_64-linux-gnu/crtn.o +COLLECT_GCC_OPTIONS='-v' '-rdynamic' '-o' 'cmTC_e4eb8' '-shared-libgcc' '-mtune=generic' '-march=x86-64' '-dumpdir' 'cmTC_e4eb8.' @@ -313,7 +313,7 @@ Parsed CXX implicit link information from above output: link line regex: [^( *|.*[/\])(ld|CMAKE_LINK_STARTFILE-NOTFOUND|([^/\]+-)?ld|collect2)[^/\]*( |$)] ignore line: [Change Dir: /home/brett/Documents/Brock/CS 3P98/Final Project/cmake-build-debug/CMakeFiles/CMakeTmp] ignore line: [] - ignore line: [Run Build Command(s):/opt/netbrains/clion/clion-2022.1.3/bin/ninja/linux/ninja cmTC_6b35c && [1/2] Building CXX object CMakeFiles/cmTC_6b35c.dir/CMakeCXXCompilerABI.cpp.o] + ignore line: [Run Build Command(s):/opt/netbrains/clion/clion-2022.1.3/bin/ninja/linux/x64/ninja cmTC_e4eb8 && [1/2] Building CXX object CMakeFiles/cmTC_e4eb8.dir/CMakeCXXCompilerABI.cpp.o] ignore line: [Using built-in specs.] ignore line: [COLLECT_GCC=/usr/bin/c++] ignore line: [OFFLOAD_TARGET_NAMES=nvptx-none:amdgcn-amdhsa] @@ -323,8 +323,8 @@ Parsed CXX implicit link information from above output: ignore line: [Thread model: posix] ignore line: [Supported LTO compression algorithms: zlib zstd] ignore line: [gcc version 12.2.0 (Debian 12.2.0-14) ] - ignore line: [COLLECT_GCC_OPTIONS='-fdiagnostics-color=always' '-v' '-o' 'CMakeFiles/cmTC_6b35c.dir/CMakeCXXCompilerABI.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64' '-dumpdir' 'CMakeFiles/cmTC_6b35c.dir/'] - ignore line: [ /usr/lib/gcc/x86_64-linux-gnu/12/cc1plus -quiet -v -imultiarch x86_64-linux-gnu -D_GNU_SOURCE /opt/netbrains/clion/clion-2022.1.3/bin/cmake/linux/share/cmake-3.24/Modules/CMakeCXXCompilerABI.cpp -quiet -dumpdir CMakeFiles/cmTC_6b35c.dir/ -dumpbase CMakeCXXCompilerABI.cpp.cpp -dumpbase-ext .cpp -mtune=generic -march=x86-64 -version -fdiagnostics-color=always -fasynchronous-unwind-tables -o /tmp/cc8DQmhI.s] + ignore line: [COLLECT_GCC_OPTIONS='-fdiagnostics-color=always' '-v' '-o' 'CMakeFiles/cmTC_e4eb8.dir/CMakeCXXCompilerABI.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64' '-dumpdir' 'CMakeFiles/cmTC_e4eb8.dir/'] + ignore line: [ /usr/lib/gcc/x86_64-linux-gnu/12/cc1plus -quiet -v -imultiarch x86_64-linux-gnu -D_GNU_SOURCE /opt/netbrains/clion/clion-2022.1.3/bin/cmake/linux/x64/share/cmake-3.24/Modules/CMakeCXXCompilerABI.cpp -quiet -dumpdir CMakeFiles/cmTC_e4eb8.dir/ -dumpbase CMakeCXXCompilerABI.cpp.cpp -dumpbase-ext .cpp -mtune=generic -march=x86-64 -version -fdiagnostics-color=always -fasynchronous-unwind-tables -o /tmp/ccKMOg5o.s] ignore line: [GNU C++17 (Debian 12.2.0-14) version 12.2.0 (x86_64-linux-gnu)] ignore line: [ compiled by GNU C version 12.2.0 GMP version 6.2.1 MPFR version 4.1.1-p1 MPC version 1.3.1 isl version isl-0.25-GMP] ignore line: [] @@ -350,13 +350,13 @@ Parsed CXX implicit link information from above output: ignore line: [warning: MPFR header version 4.1.1-p1 differs from library version 4.2.0.] ignore line: [GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072] ignore line: [Compiler executable checksum: 62b090dbbefa50644117a3c13d47369a] - ignore line: [COLLECT_GCC_OPTIONS='-fdiagnostics-color=always' '-v' '-o' 'CMakeFiles/cmTC_6b35c.dir/CMakeCXXCompilerABI.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64' '-dumpdir' 'CMakeFiles/cmTC_6b35c.dir/'] - ignore line: [ as -v --64 -o CMakeFiles/cmTC_6b35c.dir/CMakeCXXCompilerABI.cpp.o /tmp/cc8DQmhI.s] + ignore line: [COLLECT_GCC_OPTIONS='-fdiagnostics-color=always' '-v' '-o' 'CMakeFiles/cmTC_e4eb8.dir/CMakeCXXCompilerABI.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64' '-dumpdir' 'CMakeFiles/cmTC_e4eb8.dir/'] + ignore line: [ as -v --64 -o CMakeFiles/cmTC_e4eb8.dir/CMakeCXXCompilerABI.cpp.o /tmp/ccKMOg5o.s] ignore line: [GNU assembler version 2.40 (x86_64-linux-gnu) using BFD version (GNU Binutils for Debian) 2.40] ignore line: [COMPILER_PATH=/usr/lib/gcc/x86_64-linux-gnu/12/:/usr/lib/gcc/x86_64-linux-gnu/12/:/usr/lib/gcc/x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/12/:/usr/lib/gcc/x86_64-linux-gnu/] ignore line: [LIBRARY_PATH=/usr/lib/gcc/x86_64-linux-gnu/12/:/usr/lib/gcc/x86_64-linux-gnu/12/../../../x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/12/../../../../lib/:/lib/x86_64-linux-gnu/:/lib/../lib/:/usr/lib/x86_64-linux-gnu/:/usr/lib/../lib/:/usr/lib/gcc/x86_64-linux-gnu/12/../../../:/lib/:/usr/lib/] - ignore line: [COLLECT_GCC_OPTIONS='-fdiagnostics-color=always' '-v' '-o' 'CMakeFiles/cmTC_6b35c.dir/CMakeCXXCompilerABI.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64' '-dumpdir' 'CMakeFiles/cmTC_6b35c.dir/CMakeCXXCompilerABI.cpp.'] - ignore line: [[2/2] Linking CXX executable cmTC_6b35c] + ignore line: [COLLECT_GCC_OPTIONS='-fdiagnostics-color=always' '-v' '-o' 'CMakeFiles/cmTC_e4eb8.dir/CMakeCXXCompilerABI.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64' '-dumpdir' 'CMakeFiles/cmTC_e4eb8.dir/CMakeCXXCompilerABI.cpp.'] + ignore line: [[2/2] Linking CXX executable cmTC_e4eb8] ignore line: [Using built-in specs.] ignore line: [COLLECT_GCC=/usr/bin/c++] ignore line: [COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/12/lto-wrapper] @@ -369,13 +369,13 @@ Parsed CXX implicit link information from above output: ignore line: [gcc version 12.2.0 (Debian 12.2.0-14) ] ignore line: [COMPILER_PATH=/usr/lib/gcc/x86_64-linux-gnu/12/:/usr/lib/gcc/x86_64-linux-gnu/12/:/usr/lib/gcc/x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/12/:/usr/lib/gcc/x86_64-linux-gnu/] ignore line: [LIBRARY_PATH=/usr/lib/gcc/x86_64-linux-gnu/12/:/usr/lib/gcc/x86_64-linux-gnu/12/../../../x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/12/../../../../lib/:/lib/x86_64-linux-gnu/:/lib/../lib/:/usr/lib/x86_64-linux-gnu/:/usr/lib/../lib/:/usr/lib/gcc/x86_64-linux-gnu/12/../../../:/lib/:/usr/lib/] - ignore line: [COLLECT_GCC_OPTIONS='-v' '-rdynamic' '-o' 'cmTC_6b35c' '-shared-libgcc' '-mtune=generic' '-march=x86-64' '-dumpdir' 'cmTC_6b35c.'] - link line: [ /usr/lib/gcc/x86_64-linux-gnu/12/collect2 -plugin /usr/lib/gcc/x86_64-linux-gnu/12/liblto_plugin.so -plugin-opt=/usr/lib/gcc/x86_64-linux-gnu/12/lto-wrapper -plugin-opt=-fresolution=/tmp/cc5K2rMo.res -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lc -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lgcc --build-id --eh-frame-hdr -m elf_x86_64 --hash-style=gnu --as-needed -export-dynamic -dynamic-linker /lib64/ld-linux-x86-64.so.2 -pie -o cmTC_6b35c /usr/lib/gcc/x86_64-linux-gnu/12/../../../x86_64-linux-gnu/Scrt1.o /usr/lib/gcc/x86_64-linux-gnu/12/../../../x86_64-linux-gnu/crti.o /usr/lib/gcc/x86_64-linux-gnu/12/crtbeginS.o -L/usr/lib/gcc/x86_64-linux-gnu/12 -L/usr/lib/gcc/x86_64-linux-gnu/12/../../../x86_64-linux-gnu -L/usr/lib/gcc/x86_64-linux-gnu/12/../../../../lib -L/lib/x86_64-linux-gnu -L/lib/../lib -L/usr/lib/x86_64-linux-gnu -L/usr/lib/../lib -L/usr/lib/gcc/x86_64-linux-gnu/12/../../.. CMakeFiles/cmTC_6b35c.dir/CMakeCXXCompilerABI.cpp.o -lstdc++ -lm -lgcc_s -lgcc -lc -lgcc_s -lgcc /usr/lib/gcc/x86_64-linux-gnu/12/crtendS.o /usr/lib/gcc/x86_64-linux-gnu/12/../../../x86_64-linux-gnu/crtn.o] + ignore line: [COLLECT_GCC_OPTIONS='-v' '-rdynamic' '-o' 'cmTC_e4eb8' '-shared-libgcc' '-mtune=generic' '-march=x86-64' '-dumpdir' 'cmTC_e4eb8.'] + link line: [ /usr/lib/gcc/x86_64-linux-gnu/12/collect2 -plugin /usr/lib/gcc/x86_64-linux-gnu/12/liblto_plugin.so -plugin-opt=/usr/lib/gcc/x86_64-linux-gnu/12/lto-wrapper -plugin-opt=-fresolution=/tmp/ccg6ne2X.res -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lc -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lgcc --build-id --eh-frame-hdr -m elf_x86_64 --hash-style=gnu --as-needed -export-dynamic -dynamic-linker /lib64/ld-linux-x86-64.so.2 -pie -o cmTC_e4eb8 /usr/lib/gcc/x86_64-linux-gnu/12/../../../x86_64-linux-gnu/Scrt1.o /usr/lib/gcc/x86_64-linux-gnu/12/../../../x86_64-linux-gnu/crti.o /usr/lib/gcc/x86_64-linux-gnu/12/crtbeginS.o -L/usr/lib/gcc/x86_64-linux-gnu/12 -L/usr/lib/gcc/x86_64-linux-gnu/12/../../../x86_64-linux-gnu -L/usr/lib/gcc/x86_64-linux-gnu/12/../../../../lib -L/lib/x86_64-linux-gnu -L/lib/../lib -L/usr/lib/x86_64-linux-gnu -L/usr/lib/../lib -L/usr/lib/gcc/x86_64-linux-gnu/12/../../.. CMakeFiles/cmTC_e4eb8.dir/CMakeCXXCompilerABI.cpp.o -lstdc++ -lm -lgcc_s -lgcc -lc -lgcc_s -lgcc /usr/lib/gcc/x86_64-linux-gnu/12/crtendS.o /usr/lib/gcc/x86_64-linux-gnu/12/../../../x86_64-linux-gnu/crtn.o] arg [/usr/lib/gcc/x86_64-linux-gnu/12/collect2] ==> ignore arg [-plugin] ==> ignore arg [/usr/lib/gcc/x86_64-linux-gnu/12/liblto_plugin.so] ==> ignore arg [-plugin-opt=/usr/lib/gcc/x86_64-linux-gnu/12/lto-wrapper] ==> ignore - arg [-plugin-opt=-fresolution=/tmp/cc5K2rMo.res] ==> ignore + arg [-plugin-opt=-fresolution=/tmp/ccg6ne2X.res] ==> ignore arg [-plugin-opt=-pass-through=-lgcc_s] ==> ignore arg [-plugin-opt=-pass-through=-lgcc] ==> ignore arg [-plugin-opt=-pass-through=-lc] ==> ignore @@ -392,7 +392,7 @@ Parsed CXX implicit link information from above output: arg [/lib64/ld-linux-x86-64.so.2] ==> ignore arg [-pie] ==> ignore arg [-o] ==> ignore - arg [cmTC_6b35c] ==> ignore + arg [cmTC_e4eb8] ==> ignore arg [/usr/lib/gcc/x86_64-linux-gnu/12/../../../x86_64-linux-gnu/Scrt1.o] ==> obj [/usr/lib/gcc/x86_64-linux-gnu/12/../../../x86_64-linux-gnu/Scrt1.o] arg [/usr/lib/gcc/x86_64-linux-gnu/12/../../../x86_64-linux-gnu/crti.o] ==> obj [/usr/lib/gcc/x86_64-linux-gnu/12/../../../x86_64-linux-gnu/crti.o] arg [/usr/lib/gcc/x86_64-linux-gnu/12/crtbeginS.o] ==> obj [/usr/lib/gcc/x86_64-linux-gnu/12/crtbeginS.o] @@ -404,7 +404,7 @@ Parsed CXX implicit link information from above output: arg [-L/usr/lib/x86_64-linux-gnu] ==> dir [/usr/lib/x86_64-linux-gnu] arg [-L/usr/lib/../lib] ==> dir [/usr/lib/../lib] arg [-L/usr/lib/gcc/x86_64-linux-gnu/12/../../..] ==> dir [/usr/lib/gcc/x86_64-linux-gnu/12/../../..] - arg [CMakeFiles/cmTC_6b35c.dir/CMakeCXXCompilerABI.cpp.o] ==> ignore + arg [CMakeFiles/cmTC_e4eb8.dir/CMakeCXXCompilerABI.cpp.o] ==> ignore arg [-lstdc++] ==> lib [stdc++] arg [-lm] ==> lib [m] arg [-lgcc_s] ==> lib [gcc_s] @@ -434,8 +434,8 @@ Parsed CXX implicit link information from above output: Performing C SOURCE FILE Test CMAKE_HAVE_LIBC_PTHREAD succeeded with the following output: Change Dir: /home/brett/Documents/Brock/CS 3P98/Final Project/cmake-build-debug/CMakeFiles/CMakeTmp -Run Build Command(s):/opt/netbrains/clion/clion-2022.1.3/bin/ninja/linux/ninja cmTC_b484e && [1/2] Building C object CMakeFiles/cmTC_b484e.dir/src.c.o -[2/2] Linking C executable cmTC_b484e +Run Build Command(s):/opt/netbrains/clion/clion-2022.1.3/bin/ninja/linux/x64/ninja cmTC_7085b && [1/2] Building C object CMakeFiles/cmTC_7085b.dir/src.c.o +[2/2] Linking C executable cmTC_7085b Source file was: @@ -462,64 +462,64 @@ int main(void) Determining if the function XOpenDisplay exists in the /usr/lib/x86_64-linux-gnu/libX11.so;/usr/lib/x86_64-linux-gnu/libXext.so passed with the following output: Change Dir: /home/brett/Documents/Brock/CS 3P98/Final Project/cmake-build-debug/CMakeFiles/CMakeTmp -Run Build Command(s):/opt/netbrains/clion/clion-2022.1.3/bin/ninja/linux/ninja cmTC_e3e14 && [1/2] Building C object CMakeFiles/cmTC_e3e14.dir/CheckFunctionExists.c.o -[2/2] Linking C executable cmTC_e3e14 +Run Build Command(s):/opt/netbrains/clion/clion-2022.1.3/bin/ninja/linux/x64/ninja cmTC_9fba9 && [1/2] Building C object CMakeFiles/cmTC_9fba9.dir/CheckFunctionExists.c.o +[2/2] Linking C executable cmTC_9fba9 Determining if the function gethostbyname exists passed with the following output: Change Dir: /home/brett/Documents/Brock/CS 3P98/Final Project/cmake-build-debug/CMakeFiles/CMakeTmp -Run Build Command(s):/opt/netbrains/clion/clion-2022.1.3/bin/ninja/linux/ninja cmTC_4f684 && [1/2] Building C object CMakeFiles/cmTC_4f684.dir/CheckFunctionExists.c.o -[2/2] Linking C executable cmTC_4f684 +Run Build Command(s):/opt/netbrains/clion/clion-2022.1.3/bin/ninja/linux/x64/ninja cmTC_b6268 && [1/2] Building C object CMakeFiles/cmTC_b6268.dir/CheckFunctionExists.c.o +[2/2] Linking C executable cmTC_b6268 Determining if the function connect exists passed with the following output: Change Dir: /home/brett/Documents/Brock/CS 3P98/Final Project/cmake-build-debug/CMakeFiles/CMakeTmp -Run Build Command(s):/opt/netbrains/clion/clion-2022.1.3/bin/ninja/linux/ninja cmTC_0690d && [1/2] Building C object CMakeFiles/cmTC_0690d.dir/CheckFunctionExists.c.o -[2/2] Linking C executable cmTC_0690d +Run Build Command(s):/opt/netbrains/clion/clion-2022.1.3/bin/ninja/linux/x64/ninja cmTC_1cf5b && [1/2] Building C object CMakeFiles/cmTC_1cf5b.dir/CheckFunctionExists.c.o +[2/2] Linking C executable cmTC_1cf5b Determining if the function remove exists passed with the following output: Change Dir: /home/brett/Documents/Brock/CS 3P98/Final Project/cmake-build-debug/CMakeFiles/CMakeTmp -Run Build Command(s):/opt/netbrains/clion/clion-2022.1.3/bin/ninja/linux/ninja cmTC_05fbd && [1/2] Building C object CMakeFiles/cmTC_05fbd.dir/CheckFunctionExists.c.o -[2/2] Linking C executable cmTC_05fbd +Run Build Command(s):/opt/netbrains/clion/clion-2022.1.3/bin/ninja/linux/x64/ninja cmTC_e8a96 && [1/2] Building C object CMakeFiles/cmTC_e8a96.dir/CheckFunctionExists.c.o +[2/2] Linking C executable cmTC_e8a96 Determining if the function shmat exists passed with the following output: Change Dir: /home/brett/Documents/Brock/CS 3P98/Final Project/cmake-build-debug/CMakeFiles/CMakeTmp -Run Build Command(s):/opt/netbrains/clion/clion-2022.1.3/bin/ninja/linux/ninja cmTC_aa0a9 && [1/2] Building C object CMakeFiles/cmTC_aa0a9.dir/CheckFunctionExists.c.o -[2/2] Linking C executable cmTC_aa0a9 +Run Build Command(s):/opt/netbrains/clion/clion-2022.1.3/bin/ninja/linux/x64/ninja cmTC_c3e92 && [1/2] Building C object CMakeFiles/cmTC_c3e92.dir/CheckFunctionExists.c.o +[2/2] Linking C executable cmTC_c3e92 Determining if the function IceConnectionNumber exists in the ICE passed with the following output: Change Dir: /home/brett/Documents/Brock/CS 3P98/Final Project/cmake-build-debug/CMakeFiles/CMakeTmp -Run Build Command(s):/opt/netbrains/clion/clion-2022.1.3/bin/ninja/linux/ninja cmTC_d4a67 && [1/2] Building C object CMakeFiles/cmTC_d4a67.dir/CheckFunctionExists.c.o -[2/2] Linking C executable cmTC_d4a67 +Run Build Command(s):/opt/netbrains/clion/clion-2022.1.3/bin/ninja/linux/x64/ninja cmTC_f1ec2 && [1/2] Building C object CMakeFiles/cmTC_f1ec2.dir/CheckFunctionExists.c.o +[2/2] Linking C executable cmTC_f1ec2 Determining if the include file unistd.h exists passed with the following output: Change Dir: /home/brett/Documents/Brock/CS 3P98/Final Project/cmake-build-debug/CMakeFiles/CMakeTmp -Run Build Command(s):/opt/netbrains/clion/clion-2022.1.3/bin/ninja/linux/ninja cmTC_fbdba && [1/2] Building C object CMakeFiles/cmTC_fbdba.dir/CheckIncludeFile.c.o -[2/2] Linking C executable cmTC_fbdba +Run Build Command(s):/opt/netbrains/clion/clion-2022.1.3/bin/ninja/linux/x64/ninja cmTC_1f0ef && [1/2] Building C object CMakeFiles/cmTC_1f0ef.dir/CheckIncludeFile.c.o +[2/2] Linking C executable cmTC_1f0ef Determining if the include file fcntl.h exists passed with the following output: Change Dir: /home/brett/Documents/Brock/CS 3P98/Final Project/cmake-build-debug/CMakeFiles/CMakeTmp -Run Build Command(s):/opt/netbrains/clion/clion-2022.1.3/bin/ninja/linux/ninja cmTC_41fc4 && [1/2] Building C object CMakeFiles/cmTC_41fc4.dir/CheckIncludeFile.c.o -[2/2] Linking C executable cmTC_41fc4 +Run Build Command(s):/opt/netbrains/clion/clion-2022.1.3/bin/ninja/linux/x64/ninja cmTC_2c7f5 && [1/2] Building C object CMakeFiles/cmTC_2c7f5.dir/CheckIncludeFile.c.o +[2/2] Linking C executable cmTC_2c7f5 diff --git a/cmake-build-debug/CMakeFiles/FinalProject.dir/src/main.cpp.o b/cmake-build-debug/CMakeFiles/FinalProject.dir/src/main.cpp.o deleted file mode 100644 index ec5ba0b3fbe3abf4b6ffd27582255f82e2b98638..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 771656 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

}@WC|Y* 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

Dze;f}|Gwf{9>?JL*nEP0 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

+Y!{zLZ^C^Z<%AdRpzHbjaGw{I;1v?- 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 Lo&wJ1qxS!QGyETG diff --git a/cmake-build-debug/CMakeFiles/FinalProject.dir/src/render/gl.cpp.o b/cmake-build-debug/CMakeFiles/FinalProject.dir/src/render/gl.cpp.o deleted file mode 100644 index 0b8442246ba49ca1e9cc6566e17abd2484fa3d6e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1103760 zcmeEv3w+&0mH$nfK+7xPr3FDRSl*B3CVeD@)r2;9qp4)AMgFVUrfu3r)1)Rh2&-uD zCTo9QuXZifx+_{;-%oa35Ltn=)TX$K1re)@7~id_S{`b2(f+^Z%$eVBevf-|e|JFG z-P;djp6AS&GiT16IWzOSZ*S|kaz<5ELjS8uyd>eJbZ#QiSy$&KS~%8{ICJJ1GpX+L z@Q1=V_;Z@XPe=FyiJu|inFwDf@fRUXO8hK@XG{FW2w*p{++~Mi|}<4zZT)^CB72jDv5U?TrKf62-ixy8{s;MuSd8+;yno8 zAn`XM?3MUNgnbh4N4QDiZ$daA@j-+ci4P&XPU3Gyc)i4LK=}6(e+$C5O8iEIZ3gM?E z{uzXymH6ineqQ2VK=?(8e+l8O68~3(|0eM-OZe{+-iGjYiGKy*9TNX4!aF7Y9}<2| z!n+XOE%AF0j!Aqc!d()-7vXM+e_g^o2*)M97vX&p{|3VUl=wFheoNx_BmB0+_euBw z!UrY(9SI*o_+5!VjPQFB-;eP7690jO|Ap`oiT@DcqZ0p-gcAsVEb*U6_)~;GlladO z{zBrvM0h~r2NC{C;*$suN&MFceKem24v zOMEWEb0mH)!t*44KEewmexZaHNq8~BOC)}&g!2&AOFV_JLE?=F=SzHngbO8Hgs@5C z%?KAu{4#`>OZ;yTzC_|LMc5+oR)kkbdO)5 zO8hE>of7|Bgs+nLa)hsz_zHwqOZ+tmuaWrwlko2lzEbdR z*C1Rg@ot3cB)%Tu28s6|e1pW_h_F}U8xi(NydU8viN6WqfW!w8W+Xm@@H&aVS;FfP z-XQV6NB9} z4B@{>{No5eA@NTl{FKB$jqo!P|184KN&NE?egWYZCH^G|Z-Lgm*~%s}kNR;eR0fn#Auyc(=swk#G#*PKoc5@Lq(wCH{2@_aGdX_+EtfN&FiU z{wKn3O8i?0@0a+uCEO?B0|+0K_;(OKB=PSed|2Y&L%3h!-$(cZiT{^`k4X4KgpW%6 zM+he*{$mM$g7Bvj|Cxk8NB9eg{}SN=i64~kR|qF1ehA^OCH@z=utUD1YXM;@YG_5Zpf*=aic23&di z-`DBqW{-*vMJ8FC=;FXHDGpq`v^eT#YeHt8!9G26sB1?q#O;mZ{H~P#b$nM9K3Di$ zIW2iEpOzF|d1^;){~v0R746n@cA>X2K%O<=|E*H;%$X?9+7>JG_s`af>`h2@12;W7 zHgtO0jb~2Kajh)X4ctmC&6f%%DxAOtb-9>cnH?2Q==o6LM1>P%rjL$QR#B}NE1als zf@Va;#?*39;Y5WK6-(j&o~5wmTE0Bm`kL0OTUWHcdU^V$L)&33ICs77$dMyy=eAA` zwxv19w@{G3c1yeSqwL?H8XmNtbWaO{0~99{V`kd9H=SS7((dd|kI($_yKZYu=he(| zmdrx*y^Lr{UAyzc_MN|;**ZR&7(Vj$$M6r)YDBA_c;bnhxb=BMiNxDqtA_;2`qt0oF@59VRNB zy^Cq{lkhg2Cwm<~_&Jc0&M`$fW{0y!@f6pDMz5#A%Beu(&W=^3owi}z9vJr8YulX8 z-ncoDfy-tEit-8&xqQunS*Eb3^QU~BdJn8bTe^ye&Uqke%oMAE5oqeNOk7o2Y-(oM z+IO6S7F%;280p-o66js&oxg&t>{7#h(#V4?wcEzi&YtWqj?V6x+0yiI?Jc{``qRjR zJ`o~NXBKeqY=F=NaQG^7o!mC=tW!syrAcI`s)mkgr7zDUmO78OH~%Pe7N*Jx3n$vr zcl=KNwL3g7(zzu~d+>t(*mgBfh;&DxjB7n)(T-#F~3AU-+K&SV`v+L>`Z{XiA3gT1h*!Jj!`q?wOqd9 zReLd@k^jUh5WLL!g{Sa`QL6MQDg1V4cYA(hE@eXZw~trP zHMD-avve-0{ab*8;&scMpGWKc#~!PG9816~Xzj$~k5lwGiefduassgl4TUky#+Qtt z^#m$HE=pG7<4bN8C`ep!^b@M$D<;zU<+rBugJZc-S|6S91NTfFIfBnc+&qTmK}7kB z$1*9?Ak7i70`!uEs#WK(x$5MoZQ{kA^v>TvZS7HNYhlaC?+s?;G<6+n;RTVedkVDH zl-Ak5CSAM#`?*Qi#m`Z?ZvNAAlV4B$@wrLY+UF=;--Ob5F3!jK&r!NQ^oQprzp9_3 zboKuJxyi4Ge)rs@>+ygKwn{+LGj?(q{#|(bOG3k|s z49mNy6KKhV+BEGseB=o4&YWG#ntzcwoAxfW4PRH=&&G0V?TNe#Z-*}j;j~ebeYiN%TsPVnim-bk2Y_$)v;+B}-4kV|3+|r&CC=`t`td|U@1F2MRz&Nt zk-|QTHd4&Y!u|@^RYx0*ThrOGS;cooZv8u?eqD+6$E5z866^1k`pM$;$CvB_BWWYJ zg({Zl%^P1r!$?p&VnOX-D0NBco*CkZ9IeM-!SzOg>$RXyB#w_>Oj-DM@IClL9m;K^ ztn``((>s4MQ}+G^2Peny>Fw#<(t9zCuB)#JD7>-`l;yTj9voCmisyoZgP;z%Tv)}0 zldsG&)+$SCumc{wh}z7*Vh6U!TXfs`1f?<~ZpoJH)Qq8pF$X8NWXI^( z4T}I3M-WtFZxb&{4HI2^`;gmnGc2B6H9hf?NzGu(n6|q zU2E;zSRb|LM&?dII7qFYYN}PY2J6=`RPpIo?d61@5pLWS@Pol$Sm5)V%Hsj47sm{J zBwIZ5db$Q&H}q-n0}E)E4UcJV1zI3~Cwtf){2WawU)Dc-4KuIpDNMz?4~4uyZ&D6T z6UArthEUYr7s`4poYnK6p;}wRS^pKzYW-#i&IQB&9!UG9r-V;La@yFjp6r2Ez@%OdV79!m?7czZAgCj{uJxA(wqy>@o+~^d(aZO9?JXvBDFxJ?I6?8kMj7%k- zZZv(+J1moG9B$f8s=-}>{hCuN%@WOQsyk4vK#m82( z#lmbN5boS4ot(AfYQb3XT}zHD>h+0^$;Jq3A}-X#WS_L=&hQOHOm38eX?Js~UPo@z ztYxFW&z#!f{DJv&cM=@a310*4`B%@KkQ`&W*NzUk9XBVp>XexyHxD$|aQ8rsz0NRX zWD6aXUtH**Tuu(@^gNwg!khKy8E58FjD93=cuoQmI6ODy=hIXRiy^TNiy;DM+vW5( zPdlfj&ggs&^1Qps-_nVc?>@{h-~$4drM&h6GWJ#=C@NzGjz)1d3O*5iEHb%KBC-|I zgB_sUZ%}eT{tJkpN_6PCHdLoJh|bI2$}h&VZD`sb=PpAXK&!rU&z7nZPw?Cg#4x|)tR*O0P9X3mz(aQp-iEBnHQ>f zJ>o;Nu?r$*Ou~Lvk)tJ&c1Ax92y~^6yCO?=ek&*Q*)hsB9UE#%Q3b8+w*G1#v02&W zcUM!~?`Tsvw8{8om{qan|NfRR2d9UUm%Q3BJGDI1`Hlm1@%yCYr1by|H3*d4IWh%R!T z+uBx6(haSM(ONPl!}$qnagN)F+PIJTn4$DUyYtY&E*G~sM>Xzb2sh^ha5JQv=i#n# zahsy7ao2}%bB>Eg(H$kyME7SfD9jU2dNg8|8DWxQ2pn6!;52CPISq<<96V@t+LJM87>n#`G~O4SPlkna*M7L! zvA^2K!M42|MWynNY8otSEWo0ow>CtEow2qHEjj9K;~>LL<*lp-An zOoWR$>u*RUUD*)>J3uxMh;nNk+2^=y!g!SGb4Q{>#P>UxrFmD`O35l z$wkk1-{M&yxlVc)$bt~Rhl&vR_*_wVA4DNUmW5H1>%_}cYw`l)fI$s0Dda%YZ#lVf zbX55!#{$BPAyGa6xHf5c6485Lz63E>^CiDJXri zD-z&hokmW_)woTm=W)tC>&|DNV-{=}4(KEv26)DOJX5Na^BipoY~`dNh*G75SybuA zndOC5DHGvhR*eUe0aY3#Td7i+z7aDcTAGC`OLI-@;ZHbroP^IQVAa#9dPae^?n zIe!#pd}11AFdZ)PtiLUl3@{@|xv|hoo1dJfOZhiuO7@6U{q!_d_Yv!yl1F1{ z?mrj;hF7#(csODxIM3zQR!$0nsG%Ut-cXQdtJoO<)8Qh|`rA^;z)%D!m!W8h?$DNq z4so8>=7jJtuzxf4NsjB}w=yJb8*0mR4s(tS*=MKeu>#g}JR2Y;NN-F>_>PF~a-Q4W zt(+w9cEsShPVUbY?}X>3#H{w?S4sbvh24_?n_#xPeApMDoI1``TvS+AuxGGezj#^J zOT2F1@5n~)X#u-6KocD>ah}IbP8RUFzhX?ZAD`3t1cshb>!t%JL#=`ne(DUP_8y`X z$Fh2_;^HKAV>FR4lIj-O3OKwDE+p5b_(eSNAD=-jzNo;5%_E?NKe+kki{ALxX#7*;iO9(gTxOj@5f#}nU;ovCl2w~+MKi05@F-|Kcd>AGsN#yrY zo+t9^?j%?AGS`uyqq~|kch2e#-|9n5hgF;tAg$Oz3N7`)4x3X~w`9)W4o7u?^E_(R ztVGusJ|cgZ+KR{@3$uc5J}OHuJLY(&7A;%O|g(uW=-XkG%b> zAA+#(7n9OXJuWj>?Mi2NVN*MBIGx8nHT#pP^acB>;F+It_JU)yVf|j(Is8QWbGU3p zhctmR9J(=ozW&0Dvtqxxt|nO5InRco!xytv-Dc^0zu!<*H2Q20C>F+QFKFt~=}`;l)bSyYD?# zg^Rg#*<3W9bTO;dD+vE*9P_uVg6-JuJnG%d9Y$qkUCGiGsq)TGwNByKeF*z z;PGg-8;mIc1-sO}c1FS&iY z_LiMzJ!XFGvG(>EwYTphO!D5p2JbI@h}+erX>Q6rYR7Y>o9M>;1e$GceiXk3qdv}8 z+BJ39Ie0Sz)`{^H{3-wy>BlLRVPU3!bI)^TSd2FxPt%9*w((S3TJ*zrbZb5G!*}`_ z2fPpJp$DFcOyIp|-DZ58A-{YKehEmaE4k^NQ!{X_m>wVO1wVOPMoflfuntjKTW99(4e3SI|O1Uq$w#r12!34sanLX9dns<`da zac~>C({iJV`<|<>FfA=!laNztl5>2t>{C8KF7Uhq)6z0Kl9pA4Y2hLtUpU7{%Th&) z!csb4_)n+L2lnn^8M5iqSiGBPHo8F_D5tUym{SwZq@9gDkkq0bDv? z&xz=l&lm0E>zKd&F@O6#s(m=aN^k!YB(nj&(wY<9{|SHl6aMxOGV_)LIMDtJyg>=f zx5@K^jptb9AvaJH@3J#Z(?6D07nMo#(A#Jb1pZAXqpvx8b#-$$?ItB0Y1m~Cb;2{Y z9bTy|_&)j$pK;v+CVI*kDi|Wv;+oaG8A?0L@x6poKg-%;IX;g5NTKf~@CR{oE4HMa z&WVoP#_j3sfuy_EI_!%m%TC63EXafS;k$6hiOt@##q2e|Nv-^f>74o~^>OrgoE(kl zAAOZNySvlJ8*g9C-)gz`05+}=5mB3Vw9+>>o(Ec$dyw{z!m6>BcGg_|i~kAm2^ya$|eMA?K2+zjCD&zHDPvQte~ahez(FCin^SfgTK{viOvMl+Zg1=&D-MVsGPb3ull>=QHyH}TkM8UtRyAQoD2Z4ewm-|eAFB)Ic z-`igX_g(n5Hx0#RJ&zISr}j1c^6pJt16`TYO;4}CtdtbsN%WU>4Zg9I>Y+LWzj0GfZ+DprOu-Ly4-R&(#Vl^$ z*tNd9VQHwDf*ApLh*3Ng1i$Hqa#~g-x$v=DcHsxQG2uH0`qx8=7VKxC0<_QYWwIah zcgaw1@0DF^N>@2PQr7n_?e6W)bSo`T^0aetXn11+$3mjv%jch>-&}#>5TM&HpZ}_T zS;68o%{-*`p*k$|Kf_zhe};cmSKs>X^7PlzZae#DY0qHS>fSQN7xFLgS9cF&y02G; zRO`S%*A1?S7L5RYpzF;H5PR$hv4U^w?cUhkmnj3o`rfuai|(U+1z%?O0e@vrU(eu% zqD(4M2>9Ni^1-Qn&-OGYagjF7A|Jd=!g%Y?l>_~KnX(n=`remy_m!(W(Gi9>SP)l) z7~bStOau&HuJY3KcazDxtY_24F8ZiRtbf#gMs2~=+>HgT_$Tly`g+#&55!!8Rr|b! z>t3rCfmj^W@MUh_c>FV0^!LMv?Yk~!->EvcujH>2JCBW6$_IL4AY%Bofr0XNPtyLC zz5QL87>yeJqBi6%P`^N zjEly}@aFuE$rgrJa$OGjO1>0)=Ro(Go2mAF~r7_?Vqo-wDV=m3od3OArLFEWEX4As~1|y~f5t@a68!H2tRf zic0{sU+&&aw=d>R+@`ty`reM7zV6rbtj&~XA~XCO%je+w-p-!uyL*>s`Ukpu%IE>$ z`+IL#-`{uDx^;uy@dbH(@2k4I)-nyT>>^Dn!Nay06#tSqn@acB5xnPHCN{vqq>+~p zuJ2vmwQ*B#_mckWV5Pn(7UNL@B<#@Mz@Udz4w;!K(0eHLi8!Y?Z5YzA?;_=Vre}iTJ z8)6!6s(G*dM$7&;TK2!uvj2^i{hx2y|M`~vpKsa!`Ih}()`d;r^|7Vcm0txPTM7d3 zvAGEN!LkpRc>Z18)!VbS>=UZ>z2@dCz7h?>$5mo}`1ndJ2yfSZd?n&ANNmv4StV`@}!=Uu3ZK zV>Oom!1wlK%J)Fve4Flfr~z0Pe+}`&$CZAPAEW&;mLMPeP<#Xg-ve*>Yr1+e%WsH( zNeJ+`-{HTX(P)1^qhu7+{-zt$@Rf5%NWo(drS||Ox2!~v&e!RF11XT6?)WYY4KFh= zHUbyEjIpC0X!y_!E|C%qZ_MBlAzl8t=i}{tgPE?rHQjMMk!T^xWLTn&;nnnYy+}O^=a;;Yn(*;XeiUaI9_GV(x?Nhv0T{!} z`R~H{Ju6ElTn5Gu9~WBqC+){?-GCqH>*^%~7T1*HP{H)e@k2R2XohF~ch%}Qbg#+8 zHDNsXSY!+LrT;SjT>*^Yis1Hx@G(eH@O*w8-}uz?hqQN$Hr>u^_>lg(8fOWmooF-t zrsinJY0C9x3&rCmJV1Na#I&JI__(q|lrg-y1#XYW$S{07DscYTcb#}p%Gt%3@GxOx zqoDIo3-bf~!}%$nfR(d*B>n@wOxsnBU;AK4e2a^muaw$1mS104DT(#HFn!ee70d3? zxN&~kH8j{=b{7DzZibhmd_jZ@?<&7|YDk^mDhB92#R((NUzZK_W^ikl&Q;^!imFTa z2ZuJ6&0w4lD(QCl6VJ~b0Uu|1#rOowm-id{^8nr z*$bTid}L|Qbv^O!`uO47W1n({;A0AL5I*iK3d6@EAOIixfM|Vhxt?t`1C@VIz29-Y zgRQT8Sx1|mp~b@j{>73p`1>#NQ!+H!cYgnVYiDPvq;tnWKl``IMvn_i2n_#XIpBcD z{bJX@a$Rg346pXbv0)YcYJXA|F!x`}UwIgCzU7`zwq5gTA}Q8CJ$`aN5gUc)pNltca}e?q+rA7k*D{{i?O%l6|iKdSwqcm#y{k8O0E9t7bVEcuTMnsJ&BjbB5&?nl5| zwr|OQa^u8dK#>29mi&kNB2M!m{xw?iAJ?4i+PCCCxv}C95aj=SOa8c221$H za^dOAiE@S%w+~Fe0Ux&yLHM|Rh`68n%By`GE}n?ozsA5&VE?FwpY;RJoV*mm^{kVE9*J!Ra26{J7^!WnfVL3F8J!OdQ(3U|<-GgM$4F zA!-fBbSwf0)cly<8hDq zNBzeX5%O2!I!27oEJ*tsy&FYqR}SzOA691iS7yrmDzn#f!9OV9$@{6H>rzwD_6()6on&VBsu3y`Sv`F!3!1S$Iln%c zYE0s-*E)PLhIHnFrbObZP2GJj>qxdOzhud>WWiPn7Z~szR`BHjgDh!(`I0i>&slrv zIdR@Ap~=d>zaj_NK7fhPoXqsUvAb_^s=l6EZz8)Ph3w0R`rg>r|K`4zkfGquU<(13 z#mbd<7_o9Sox?9qEm$OmLZjqkG2z@)LsPP0J}}Y=(IB!GBvZ`|)Qs6k!-9putj31= zK$gLuV~lt?(X-0|GGL$yn#e4g@8bfx3Wb2|27?L6Od$h2Xc8X4%1SLlf58T@agbj* zEYIM3)EgH!%un#pfX54yo37iqc>V%zl^GUlZ(+SM*L>|Qq>>0Sv- zaCP^}nGFzRFco}ZUWwJQrhjes;-*C`cjzf> z*&g*tNz`7LY{19_rLl?Uf!X`U1tFQ84_pDj`RJNIi$^c~hn`l^*EW;t05)71oaX;&dQiN0-iH2--SbutbZ0X2miDi~O?79=IIw1(vS8<}@4a-*rt-c!rKwuMUx$WrOs-Mi=}#(I zO7^cyW^UNjojhmo7&UasLH@qxVhveZ*q+?bbzOI|tB+)tke;(PsU)~Gc&LzPZk`2Z z9%fk}2lESgsidBZsRc+vqv5ZAGGbLAWgnPy3sZX1r4}W{L=!Hi8XA)gYWAg?ldzw8 zmaKG3F;&$>MCtl&$Vg`32CsBMvZOhgT!1e5r)hFweQ3%rTojt}iyA{yzNtPq<&#ZN zl>zk4P+!5U@G6+94=;mQJ3=2=y^@@&E2cl_a@i& zcMtZRm%(suqA!LddopJQ(8W#~?f3M(5!NwZFd;#2U%EJX&b0V&CeXLGYhW$A4@=*6 zxOjOH^+~NNYNS!n3v|!GU}kaSqNbFrqA9G}yc;zy<1-g3i zcAECV*iCs=ipGR~=m_wS`J7_kQz3eY&#)q!nuT(4`k6sz@L>6@gk`KWsRvtI)`Y@Y}~ZCVPS*H!q}2A z&LWIP8%4fEKG=R=+p})n#;)rZr<&0UbD1|c3?lj1(W`%Os*=2z6a&JS5!r4^nemDE zc1>^3>VYo$hRVDvI$k}mr*BQ~&{|kVy|8#PYv;jw!1inXrTQzm^M(co+)8UMx@cai zVcw>}Oz*tz>$}$s(PUq_wtL+m>POY=>4zG_HYD-1(+T&{1|l+k|8><5ucqDS@Sh>_7BOGSC!zs#aWaRl1>+nH?-b6QldjHK`1APhF3nbR! zXV}&!G6VF3KI_2LL^u6;GyUnIKWphvhW>!-EBl8si6N-NHzhW84Xkuy3Ce*)!Xph| zU-!mMnHz*AB7UX!=0e?h4`kxZg)6xq?$T-F7gqE;kBFl7VrBeFD+-97e?{iwRabO= zRJOdozyVnVj1;Of_QK`r@kZhDDAYLAi_VV9#R*(=c2q8XurPuad}PQJ9^4V~}YR=o>z5&59NqJmHc`~3Jk zPWkfr;!6Q+Toy^WJ{69lPrb;CEGa-k16{r;Km(UW(x6Yqqgvv!Xs8ekzITv*Wai`* zt{Kx-=Xev=%?UJZ%obh66=%ud*QEZ|>49n>C)5-^vKpuo>K{Jg=&!;LXG2-RN};Ck zJ=*|Ks3~ufO0V$7*qzN@Rsc^bTqoF+G0!y`{pww4D*Px~S5PNwa%)H3nu#n@7jhzt z)LkF1$oNECI1`V{jZAfn7Hrm~CR{a0hE$Eh8YIj8GJwZeyqWiMjmF$eZ!FEKuIM0> zzv+z!>t3hySH2}jzPoOGH#}INVWlR0A>IAPxW6ucJl&r~-*Ycen?LogYx8-hd_CTm zr!Hi;G{{%(b(O$J6+G63K3Cvk2!MDj41&09R0Y0I^Go{$KMLWNhkg{mc$DHP&ypXn zl!RAzH3F+w6!mKdE_U~)6pS2oyG0`?@El9(!^ucLGbyv)SU2^}!J_qy%k{+-+z<(e!h&StYZ|{mqqCwviX^3Y4XKnGe{#uSm%l($ z=;qSxGC_e~-En_4$IFr*;*pHd&9ta|jWFsnRBnB&=ltvMZie@q-k0SeljAb4RIPqq z1#^w?a#_0@4ACF=a`A|QH*b*#%RFr6*Tmdf`q!e|3|U{4-$>`WA2kbnlq^&p(FXq_ zmQ=*;P`O>m$Ge`L5Ga5(!2hDb^wmz?wE%FtVK)bhd@ahl=&vrBQ58KK1!$$7`;keH zR4LKlzY7)co=JUJ&nqirf*XA_ZA%|{W`U1J^GgX{Q!3X$j6-}leDA{?1IeOKoQCR!*d~>c?{h$c7_TG>jqw3huMtB*MgMrHud4q$ zvPO~m2~#ga{U)lHR$5dmDr2Pr)&4Sraw#x=m^FmZEdw`9Nd1$r9)S9N+z9ogy6ydZ ztpNgm^mW~$zWBqx1HC ztAl2tTF1>S*?gK=rbaRIX*T10!>1Yaw^58n0uwP%-w;O=w~_=mC-kG!!Vv>nY!dm{ zcER${#~zB*gia5an%wZp=|{a`m-#;$Zg3|0s~0YM{!MV*mimElozkB(_f388Bj-{r z@~i1y87p3c98~8lO+cX^MRzgqZ>~#Z@-k>Y8+;_qd zStAO)nJ3Z|Xec0KggNkGEYC3#QApU#Mgp)QssrU=P%9U1O#sh?wnjn z2bkXY7y8JGaL6pyjjFr=CG=w=;Ck5894PSo!cq`$&Qh+T8mQ>g^4`n{6)_7nq2`aN z7*x1KN0pnzMEn*@6zUMU8#ndz1_WkFe{cVQDg9AjlGDijKO*Di;-_`Q`|S3Ber|{7 zkvq-!7jU>WUnRvqW3T1^r5v*jRn^=-D|Wu2(;zC7 z2Gh;)|MZYI#=+kt5(=)s&BwJ-j&--d!;G43c#%Tq{XsW8*VctT2pB=IHc+B#R#v>s!e|^N` zBVAtLag$LT{dUTzu+DhgWj@X-P=()r8D(qzZ_A95HO8wooej?DS9!k2aAtY2$985t zgV?A?f4-{0_l0I*h(l&!f$mX1xM;Qi(WMVG>QSezz~-y>YShi9Pmg*}_4Io;U5uw_ zSGT=tdHYqbT-ms?9jwKBX7joEG-=xyb^Et#VT$NtXsKSNK95zbO zq{3!ZDs@u|S5t$kTEB?H`FLwXO{Es9bVHLgiHBp9KVRX%eMzphNC>GO{!LdA}1wHH`Gg7s9hw<1ww&zF11j#wNO!jcND5gJVN0ngia|{y=o8~ z^Xr9CnsLIBh9+qvrEo9Ojt-H(qWkxDG|>`JyqQ?QS56FNo;IXaEoL}6nhp*A4KjX*|1PCx3OMm zleQWcseEZFCDl>_CUa5diLj+n*eK(Zl8M_Wunoe61&XYc3`I(q(WDxbKnAl}aj;>& za7YcN%vNFFe3dB#r)2CJMcFinI5+AECG{FKYEc|1Q7erp;hKn1N;fThOUZ=AHwBbT z=;^N{DW&-*0+-SZ)KV!!x=4kMq6%f!rxvJ@Oi7;_bZ4Y3;cR1r43s5h6X6WON&}!VzH;mC-2jni5?hJiz5_H8*5_ z<6$DF^}H4FZj_}jCAzI4CG$<#FUqV@w1pr|=}@#nqs$T!09?pst>vzTiYE;s+bL1y zDQQbDCeoplES(Laz#8?+rDZ^tRK0rW19(`sb`_cDPDysXss7SnTeb>%J8OSjTZS71Ef(#4=-gHNu%&Jr7bxX@^qfqBlvYMk+^BV{EaiHoSJMxl zCJ^R`z7taQ)KI03TIFc1DEc0cD;PQ@izVJ=sI+LXMwv;CGN6q@n`WM%(*~uiCV2Fx zXcDZAGQPqFnLsHm1hPU3{o3%=;{rKN{4Ve>kr;mIinR0dboNkv+PQImI@h*8?d(eL z{MF3#O}i4qN8Vn0`$;1Y)^6LGcJ^d{adb=5!?m~Ua_&Ft;X7Nf!Axg=Rh7;kSC@9a z5d>+e-8P>6@zG5Wp#E8Zn*I35gPG&+W*BGu0PRhwsdcr#9jiStQF~%b9sW<^|9VA1 z+W~|J(oWk1huN_f#1Bt)A~k{76vC+pI??E!w6hcKW_Qk1O;f|O(q5ZW)aDatG@Wgm zsAhbZwH+S%Bx3t>rxIc7YWsE>0G7F1?z=Z398QA6=+ltu)3jVZ>jCHfr-RD}BDg%> z_7rvX;AinC*Y;F;dpdv0DCICi^2g0cJA0$~JFWyFyJx17g|q%-GWdzwx~d?)1L>-L z(YU4?s{^?ePo>v9h|#Lvl5KmcDtqHowYBf*ICA937O<7M>fFe(aIH#Z4?z@foN|Vq zbXFYBwH;1x&#ib87}7g`GJ~k_IyqG~QB%1Uhk-J;42bVb@BA?ke*@jF))Wa1AiC{I z3o!-CwkKImA?ipZJUQY%dib+rrm)pAOaR?fF=<$T@B`9)f}+_sg= zbt{*9t?%yyWc|#4Y|jwC^K{B+uoUNo5CEOnpyjvO_-zEwkMH#5~-_c#u7coq;-Z4Bj>P8 zT$;wn+2SQJhjW-f+x;^eAW?eXui?|<#FK=pc?EgeSwXAH;XA1?{f8l_;(dPX-kgGR zcJ`%r9+;V~QHx+=WDJYog`p)hNMg$@AC00l zN=J}undQkhYXo9o40vcUr*l?7YY7e%74HBVn#FBRQxD2Hk#62OcoZrho}}e=N@PGf z%sd1?Pf*yDX)t-bnGzD0!$xVs?AQw$$51||MLX@>izKqeu4vw0`@S)tJmwDK@WDH) zcvbVtl~G}Uw;dR7+s}1-P?s#AHT!^Z0+vnTbr5UUc=neth`vV#j?c=dy?r*o4@B@# z*(ZhI2&nebhwP_z4appo_dwW$&)1J&xATlvIHw(HLDXA=vv(5MNNYswDLIDil_`O8t=sUpS z#N-9pw*3GAqY1zp8W-Tre>rl5hcBJG780W^C?)5t1Jq!e`(jw(tD)%+~QyQYVk$AEL7meFFc|*Ame`Vy|@9ZyW*Upkj(bP8AqaM!l9 z!~9EU?;=8v)NaG-&DDwhGa8P}OiazJ`BHV_zG{e?>@9d^bmWxm$s!qJ z1ru#v(3C80^`<{|He-v~HPmsD0-lOzn}m-rOFUTaC$G^?23elur{q@%ZB$ zKhB8PQ9P00{8JD|6^@@_#OE6EixFpqkJWy}Q(v0NF9&fsMT0kUHC4JJipb#Xr;d5({9RX^a3S_2 zrl609O?9ah$f%M5w;|Q{(H6yO3IhomeMlV5gRg*`nNMiUd zraf~U(G5}5|f2&O0}BH>aF_4)@bSgPih_`e!vsS7d*$BQLOyN(v zvm2Gvv{98hoQX*c$yUw_E>&FJn=O+w75ok&N?6+A{M5g4IlCiS-{JhEDEHf)hoS}m zU^E8Lj~s)^sx8=8G5O3;kNiC|FmDxGeVIhR9w^OyAJ0PFfwHDWcwKEjFNUqPCo09v z5z@FENg~po8=V4+X*qro`N)b?)im6+n^qKAms?lz$~-qeqvjuvNqllf&4Jm8&(5rQ zV0PjiN7sD$n8Y2kUihhF6JI>$A%HyXD;*ZmBUNYostTR_)r^|aqZ1#kK6}?uiT52< z^Vm^|j~$I{l+W&&u`#ik>d<0~|CirCW7mvC;yp*r{L@K^CyuIls5bH8qie=$6FXX^YJwgA?JjeJ5EY`=Y*P1 zos{^%$qMzIRrefK^KdG$|EQXKQi;cos`*?hk)2hu|hl@!x06 zd}?0eJ7?DHyEyTeGi$zfapH$Bs`>mSiCnT~`z47Z$=9Ovz}YpMFHOAv#Whb}lKA1= znx9>o*nCdSzDpCIIJf4`d5LeGTl1NDiLK|K2%JxxU-RAi#CtBN*n#w8fRBmaC()fr!_B9R%cuKDxPRbM;`;6I)C4^-Fu^9hL~M}MsPwi6QHJ^?wveQMS5FRr<;YM|!LiFZ=t z3K?+J{SzhkRMk9MmH3^I6_rQr9eaCKjWZ*$gIXa|sP=Y34&TMlThd}1y2_2U_z`S$ z**a6D&YpWtd>5#BP-=hmXPXlVHn;B{10Gcf5XQ>OkDJAIhhW)d6g_}Bue>a@fuE&R zPk}biBx2nSluUPL=bbIcHc);if`Bb*qZqXRKt2%O(#f{kj|^)M`HB>G6PF!E9_+rz zecZ>{Qlfp_BT>d48Fg%!MRu$`-?k&d8Q?RsTF`i0GmBwFt8*JNwxQ*?BewwP3v!n5 z@Hn;}d046{k^>_!Y}AVyg7)SgWzLd4P)PlzW#cnP8_Gb2ozKWzHi!{V-?W=X%h0U> zok`mQMNxQ%;g!)|q?CHaaFknSw$1T;x?bfKwIYdN3mNDNLB2DoCM|rrW2R3NsOn2W#a}#>ofjrJ??X*Kl*`LvaL+XUQrl)a zDr4+<+M~zcbWylYYG=AB!7hoz(~02WLJnr_1IQj)1*h?5xbb%Q+;}aR0f7}@Nefw< zQEt4?x#~Z{jaLojU&U^`w(T^pCTnoCyuGR&Zo3KJZc62#<001uEd^ttqlMNzz<_DG zVlxD7d%9|uAb{&xojqVDMII}(;vUz-j;3A6-xI+EwNMJUy0h)YKF2>n^rv1b*hnRD<;wx;P%2dnCnwDBv8}|eSYEjBK%z|)N34n zGki&^I+rf}l*D;FZF+5JQ7Ew5#XIK_5=vugOC3&YGFK}O2_&6a1}H17^DS_bbtcs) zb?ifU_BhwGC^84unqW#b@`*7H|7bYPcFCcBSNv92%foM`W zZqwNt_a%l-QK~@u?%fp?cyxTlKE5(QH&f^waoIkF+NFK+j5Hraxy>n*x*6{r!_!Qi z&`h{_QJQ9oHcUOu6ls`}Zc31D%B|QAn{LAJ|EXjV=C<=)8`d9ZM|if?u39UQX>=<$bII~@*Kz* z#;nxpIBLBYrym8+%!&*)Peh#6x)YYQYvjq>^jN%Oer)}e6^}D`Hy&*zSX=wt1>sdO z3(kK4Z9)Y~w4Q~&@D^CU4;L_~W0@)#pg=pu!b8+Vl}<|mHji}eKuL;=AqlaYVv|em zKIj^(1EJh@2Bi;&Eaq9y{k6C3JnN52C>8G9F^XdmR!ort8s6XFM7&fPsFxJ->=#{W9ng@uPE7g*q3S~60a49(^+n_%>tmuk=YhIzk& zFxB2Z3jr7&;?%VFNDixeBsW9V_&HygoWQhVtFO-Gw(d?zBVK&uv?WmF(nUwUdw7}i z3(sG-3RZ=;Tf;VuwnD35aJ7$D&-I{Ji1H()r9Z6?g;XyDM=DY%nE-GcGYOm`_=PAYaIKnp-=mLbg;o+VdO^-gu$7lht z$rrk))b)p)3iLd|F&9JRmrR)5(amd3j7jY8Ike=r#Tq8akn9=V9$zwnae>h=9e*M_ z05ITJbS!KBMdnf(OFFsicsB1k(=gEi)x!K%mQ&2Du8iRmh7?HF&F#Zp2YDQOov-cm;ZE_HtGp7hx?*&7ch zGS6pX)V2)j(%q7o7^sSS+tZK3-G{nU5`YD)1D~|ymK|2Z6Kb*5yn{kh1b0x_hjd## z2iwl4Ab$(plWlj5gNaqB>?yi*@!MtZV_XGpmqjYMQEI;3A_B9gFkjs-C zX&S>U%PCRL<(1&N0?0~4X%gpNGa*|b`>Tq$3xN)Y&g=X}v0imbv^%4WUBlquWs$sw zCt*o+wY$HKX;A6Sb5MT5KY*S`VFX-9GU>8t174?TzfR6Ph9#cdPluu_Bd3UPPNfH;oW6$3OYl$ z2x)V`^C?>Woq{)yyaS%L?YNCTp=O^FD?Y%ze2Ml51X=C?w>V zJ41)nlRG{x!>UW#-PGE?EioGiw6s$#cWs1p`*|GDbJWs)~JQ=AGrD6-(b(7%}`maI&j>4!7i4N=3VN&oScE; zzBY@Ts3!kIo-m^J{ED%ndK6NLUD^tgOjLA7mMntehhK?~DhLqoY#7$OIUVRtx|ypD z%n9aS#`%LM2J$D5Mh4r}G#`GHxwPQnJ}zklHb3k z&*_4D)6NfwlAXBh;GH_V>laNl_L`i^bB+DH?x;-GkWG)b<}x>vzM1SSo4~<0{-+rY zG(1<8oVXBmE<{1Mil-wtVeVYd(smnpLP~vW7d>M>T7sqw%owFDiy93+r>baJ$Z>HP z?u^VdCI6(EX`;AycYuO!<~)s(m)*U|r>A@)ZVVNBE(#qhn1_G#sSp3>9WdgD@z%<9 z5f?gLD1GG(dC*)zs)rycONm~>J9OWI{-;;*5!Mr)ohLFEDv2yQHe_kxik4r@mCzE8 zN~0Y6FdR)?R%&yg8m+zxyC8R>$-<_m!cB+9FzqlKlNOp&#oKg8( zXru4D$~Fv8wPXb^Ge_TM%eoV#z->15R!yCasACd!Ntf=CsMR4m2F)N=25zA3D5}cI zQMZG9UZ|#)CBc%vKItKxGu@gCS^d9CDHvZ1OR;Od` z1d(>2wf1&6MDeEZCGEM6xlnETKtv6OYqFq#JvMrUbO#gN;sMLCdo`V>i&OrpCJq`+ z5F`+xHgxAofdX@gJ=>@S<^1#nPSQo@1|6-8iCRjAuW^sk4HbQh`#5b2^%=4qAU%LS_>SMM26zNNLuzS2Bx_%!Z@ zlOEw0U$?a&z>C*S6gXd~M_`<(qNb-dUJ>netRdS1Nh*RQNQWZ~r(uM(#huliN& z93xJzU-2lGU&7KeEghe0#LwqA>m%x-)UIiX^4?lyi}*nGHlE4@x1smCiUAWx7kFbrEaueihn+F>*Y7tz@1 z2ZcrEc{-<>#l<)!8vli?ZsY)Zu4 z<~KU+~^r3lXBF%q2TCxE_&W;&#UBf%i~ttya*ik?D}0`E4NT-R;`L+LvuE?s6vvVW?o z9X)v_3Uk|hqvhenvPwgOg^PpWi(AO-DziWqZbz+#9S}1$XpgZ1nmM{*zb{CJoTFQ>9bvh32- zceC|b9aBTBSD<3ZJ}bVf2)`ANUQx4##s&I~c0-8L1p&HDtvts3nWyZbYcSp9WblWc zCENnN=vl&PzI4;#J_J)=uW^>o!l(FdC4J&7FZ2%B^~UErq34QT?O(Bd`U-T+4Mf=k zNj)ZB2=CDkGiCYluVD@3-h~S7Hx%2%0T?P3xfFhGV1Cjehl5vYe9$p1U$Og+dSmwq zW^K`f4t`~)p2KZPXAgoat|tnsO4$tAAPmvkqF(Pd(W(8)^F$M>xa`4g0NZH=*4CfQ zly8d`7k~tIvC0!WbPRi=4*r0a=jaQ+rpXB?x^6|%j{n)&fVWAxq5Vj^^B&#|`Uu_O zgQE&5=0kD%dG5e}bPi+H+JpB9gw@r?>E^Zx{TVmqMZ>1~Oa(-g(ah7Tr)}yWos4V| zXPf44NT#%=4yqc6{@5%JT|lut>Xs1Ox$iEOTMW-PVLjhBq~ZFLt371su6hN7u`lXg zf)1vEa9z5rLX;kHqORO{uMYHzh*ueU?T^y*+^6EhR)*M(!qWe-l8Q2*Ax6dJx(-88 z0_RvgKNIcKl&w41Le@9&uLLs+RCLCqni>%phybR|5Cl#p;4}l)kxMEL$t;POVml{h zc2rH!j4jG)XO5EkX&MYDCOW*y4`2>XhrJ#;HquTo=D1o7o|$=zDLci7$kZNvji9;h zaP7@wwYQIf;dn)*Rxs^B&mP(YfXx6H#t|$ZDp{So?t zX`3-p76RIq){o-oF$1B(NhMrMnjDi$a}df^zuAJ^W_QghJ|#%FohxRE`uEu|0qZtk zi7OeKGaaGeL(3cm%Htt2=-vp(9@-F=!Y#hjnii;DHJ0va4SjfEJkluoaLH1*S@R5z zT$~25n7Lep9KOsahZv6>2`;We{FaGPr;#!3N%;D*yOs6S`g-~rmX@ugJ9n|dp{2u` zIE*u7t(aj9%8Hh=n?HezSwM@i)^Y-b^4ZU5K$i`7HlYArsoF<tM}}QbPt`D)XHCf3?_QL1mVwXo zC5*NMlZz2UiB_b6O%|TEsNr+4-I8~K_;_~`pSU@o?AXiN_6>avwV>zeQ{7>KELlVN zY>MfjuuH>{2kke>c-NjDf7iu%hB~;eL~9XWVG3;*!S1u!1PQ zm&5mNO54^kGjhCZrMW*5#N$l*SweGzyX zOE-;tdhYm$+D`ai*_p62byV~=@1QJ{`jMmI5(ns?}}+O@cS;r@$z!N{cd1sed^ zp2sC!FhJXiPya3FL&Kq4hG2KWxBbR>M5K-VS@rLjVm3D2@59&M#^_uJzF9q4^st8S z6=Lvx^+_Or!{wLOW+D*!pj?|^K2`45dnDhuyv!y13e}6Ed^$p0UZn3>q5jplnyx@Q-knnRX$GEYz@=$? zw4%jb`Ft+TXr=U#>6MZwqL2@h)?IfF!Iw^&Dx{v^)@0YF9vk@Mb4sUq>|!Ei5YwDp}me69X@M<-vIgitY4YEZq)p^ zASvmh75GJVBJDumEsyl5`_xoeh6~c1EJ(BK?cZWJ6QU;&D~TAJVHb-x7d-72o>N$; zMSvn#4G13ndr`4f0~+7ISa>aKd!rU6TuJ{DEBHC6In;ApMd+`tm^fvOs!qAl)2DHwDu8sbU{}^!<91-ZvrrLj14)Z9?Qc zoj}-+|6gFF`w&0FNWUEM(~R_eI4E9x4((@anU!;K% z{u*hs{X9dUVFOhz+k^TkJCOtn#+Qj!Wq|N^SG*JGN zK>3dY7>2nPF9tqU{FQiR+e}J?(9^XgWq<25k&ol6S4{4L%4VGwmz9Rttl|cFJf%4msHu3*^pgw-B$H%XK3&8(tp#0WA`InHMYw+`nNSovHg+TiA zf%NB)HucSC1L@BoZO-3MBmI1%y-x+oKN%?hM4qk-}rNSpHY zkwE&xNSpfZ7Nkvi`w-G5fBqS1bA0|OQ2xO{`F5nu{(m5lem~OYdbkZ~Qy<)nv`OFA zK>7Ou<@kLkAHTLBeYU~>_ac3fk$w--7aQq3(ia%%cOz}~KZkVED1R5yCV!nkdNb0d zJiHTWbN%~=KzbBuQ~!n=v?<@OMB41nGNeuVI|AjeK-#3|I zuMDKykT&(zQlw4(EkWAUk5?dV(%Xu(IesmH^h*QqFG1R*=WmcU`Exna=Nj~17O1~C zkZwlW9FHcXP5v%I+8m#Sf${}NoANLpX;XhTB5m@!0clhIQb?QpuMec>A#Li{OOZDD zcL~xaeHSBb^5Y_;O@3X7v^l>nK-wIy^N}{`IS*-be9lGM9Pe|GHrI!_NSp1w7-9)B^7iXM{X&XeB5lrZ z{L-keKfgrUr1uvA_@5(f^6O_vo9+J;X;XfGg0wmQKMvHNK-ygYeuT71-=j#I^!yNM zli!a7(*K3D+20=^ZOZ%ikv8ewkF+_S-$UAz$A^(N>HjX$CVdYD;J<^k+5ZQTHs=R^ z)73XW_91P`?zpoAllnfZvO>DPQA(^d6*5{(K#2 zvwyn-_3uU6Y=2iEy%TA3evAdu_aJTRkGqjJ$NMg%&Gx^Bv`OE8AZ_;dPNYrw`6|-p zc-|3!{|eG(`?m+uw*}Jwj_93#8u_NIQY_=0N(Lf%HEF(xZX&NFbdJq~8%p-xNp> z2htuVRjfraR!JBPs)8ATbc>`{1@d)rI{0d-*rEYqh8lml@V4z&;MIUt_#abnrTYJL z`LUgU|J&hp{|ZTmo;RxsRhTA!mXx{161UvB0t1|7R83xe=G8%SXSX*Y|&wWiu_dMhd9up*bw_~MSc{^D*THr zIt);epNjkt2U-*xV*jnkk78Mcf3Zb}0V?uSkssnfi(*6UzZLmWEUWM@w&*ZGMSd#s zLmX&PY>550B0q{{75>E*9R{e#Pep!+11*XTvHw=&N3pEJzu2O~02TSE$PaO#MX@3F z--`SwmR0x{TXYzpB0m-RAr7=CHpKp0ksrmf3jbn@4g*x=ry@VZffmJv*ncbXqgYnq zUu@A~fQtN7Wm8)E;h$d6)Kg@3U{hXE?` zQ;{FyK#O8S?7tQHQ7o(QFSh6~Kt+Bk@QK)L+WztvGLy#6hZa^Y?1*T2nFZu|PTPRfPXzqL{> z{0Ry5uUvTB@zcMRQ*QhEw{OaYKTdVO?D=mie+|<9DhcBTw*9xIU;lPfOI*UGzWyzs za^Y?1w{72c{@LoEr0}s^{^{RVDi_|Cf5$${^y}ZUD!2c(`pZ`T%&_F2t^Uxz6mXzU};Zw%0FP`fcHD^{?&vW$Qn-ZQquEw))Ff{%rei3vWAq zw*Cv-_1|{?Vkk;$v<29v(-Pg`!C!1XWPCl|7`V_Exc|2ZS{xk{I%u3 zZTq(Tx1B$>{kPTMw(z$0r|tZ=9lvKA{)M9dTO^Dd*vgNs{;;(lZTWweFl<#^#z}o! z`Lp%^+O}^ye{I{h9Y0(7v-LmOj-Rdk+s{-)zq>Z0C<{|84DW+wniwa{aWOKeqk1<-e`{dX6RkY{$=5er?Y$p6&6so&UD* zw(@7Ye%bn;juH87kuYvxyZ+hAukHG2Yk%6xzpehY)nB&f7q69Y0(9$JTzZy?<)kzODUfyMEZ} z58L(McK+J(-&X!?=dZ2)v0eXc=fCaxXFLA3_P6c&WjlVh?c1JT*z(U-|Jcf(t^T%M zKW*(tTXZh^ zb`k!(9{*R-pG0*({>-N6#71S4=Ka6-*I#Z?iYMIX|do=~c!5rHWPJ(dyIEh|T_Y zx9*Rtk7x1SF@m|b()rEcQbn$s_H6UWz_z6J=YH{eezHCTNnVzW0=-dpkK+e#;#UUM>$ z%`^54BmP1oo;2cT8}YeD{9Ge`z7fCBh+k~PFE!%zM!dm@&o|-=jd+t0Uu?uLH{vfb z;w?t}3KdtZY^yo*olq#%@5Y}KK7>D2G*23Wx+p zV3)Ydl5-RU45(lL6%<58FcMWvC=$$o5yXfQ#efkbDvCK_0wV?tm~(hc-*fJ*s;L>) z=l%Kp@%(sE-M8wTd+XM%&^^_?Ghrno6WJBizKz=VQ=0*@ruPb&dxx>uCq(uQGo#d? zHhXlK*)Nf;kLyWMBOJ=Q;9xj03J$jB{lnlLkjU;%#l5IFfr=7{pr6JlLn|Gd$ev94 z>7*~qqi>~nU?O`Hxwn$LnOx59|Chr}@VGOh{x;AmJ1o%FZN6KP`AjB6~5x z%Lv|0kS4UT(iLpGIK1S|3a^KG9G8-%6>Pmhrepn*=6}jJ&o6O|dWj0py8i>lB zn8-FlQBf9$vM%{tW@AO4c<$jkU{rBZBD)tAM^kYE73s3IIysR&mf#G6vk3-GIU>>Q zT!M>nkf7a6!f1AbbmFd%teqp3sx=;!$UZ^6XK*O{h&syv6dbJL(cwTpCXxM_+7S`CYiEKY;6%C^P%>SzY??$F1vU6x;0gXJ6ZzMOybDrcJ z3p|;c$Ua3Q&(la6n=(O5az=8E_&>}|OJui&k)kFzl=b%Jq-q)Oe$d-UOjiZ%j~R*V zKGfcy+6%n4)Ses21OYmQFIoi$-x#ZZ9F{riZ=`;N9g2SsM$S^9 zk>eB18bP%vi^CPN)@tKUNHpuj^6oecdB@pOt8~7YU;sVTvQ@NMbftG~G|i z6T=nsq(pWhl`q1f>^drnUozpe{*#rVnNz~id}@fy4l}2PnbX6}oG^1nXl*X$KW;UP zvN)8r#X%;bZR0!z)rt9`jRj%m%rJ9Sm^nLa^f`&_Tvl}!tGb9)asJw>&P`;mA$SA9 zdkOlBk!740UhmEi4KEBEv?!6?LPOusP#rwC2u1~iY^^O$WXk~-ZHq%$$E|77A(nfA zay1MWhM9}P%*Bc9p)@&}CTG#4bSkA-(IwDU1D7aGGnXc^OQ>@Nb?&21Zr+O&O#UTU z|HyrY+|T}n8~VLe6||}+nqA0hm*6mztN%)0b#RTmR#~cYU8sM3n7JX5-9%%XaVY!U8!BAC zZd96Dy9t*w?28sP!lA4S4%%*Ms2qYjuN8^xKyrtWd+5J#!;9R_iR@G=97l!A{+mMB zW49!-H&SaQwVun@lK$`unGNE~Fub=WvYV;Bh1$PUTLvH{tdeN7w)-}vY3BAYb4Qq2 z6=v=XGk1lVyTi;qVdma2b6=QQ9eRC#BD)ORJ4ILHQ1%QCxjSn0U&>x2@G1`*aEKML zWkrle5xc4=_sQ)6HK(n6Fp>QQ^rAm-C~JaE^jd9;MOAnxk!=H7QF|Q9hUF{Bn4ljv zjt}GdNACXQp5VC>^W2?Opzuf{JC6!yQ{lRN1!<)8lsd8|vBN5I@5Ny#+xe{L2cJ(K zO=RCB>m3}*z9d7Oq!cUS>Z-;bOJx5dEsn=fW!vEpjC5wPzvZt}k0-M2P*l``+@12d zL0i@)vLi_wMcR@1G-h#E>jU+Ka@Ch76V1-1;zAs*5I?khT_U@juLrxV#XsPi^;e)2jJgTmf=CXqGRMK4O?P}UR&wJ)64^(nvz9s=@^zSv74b8J+TV!l zKe^wKTL;fQG!)`fFu&eXn(Dl*V_q}wgqe54%zKIK5Ev}l6^F8M`KD!@s)6@I*Efan z`XG^=PXp)B!1Xkc>r(cn3A*&dQ1PSC~<(G+8&3pzGTSfFmWq4dIGmTRRyi%Gq^?VG1Q(y?Oc0;fP5YX zaSQsNIt!_@nmRH+{c2e~JI&#MP(;+Ki+7i4{lLs7;CqsDVsUw)8YpoNRU$>pq`#UxtP*XWf3<*hoalX19}dw_~mMEPqQI z?j)5cU#loh26x$I$?R{m^cN0grFacV>*Aocb=6JECok14PiEVIRMZ}avSFml#1#Kz zqb%s~ZIao2$lagZ>9uf!O6n!Er;$64+{^O00j<8$)RzXy?A_G4pE@sk9hr~8UemV8 z?AxSmBJKBlnv7A|9#fMIliB3<;6^xZkf!!M(vH%{xx6QI~^`StwPURC$rn^0PTi2l=Z zkRjbIu99mV+%cJ5P1?hxtLgm^nGP1Nos!vl0E@Q6p{z4$ zwZz-HF(jECK<-ZD9zw1JCif|~@Y*mmnVmv~nN(Ov1!8B(rm9WC4w=`L9MKN@BfMOM51>&(qQ?wDgI$ zB-~)=j7VmGAnjMuN-FbO8VsG0$!ueQMLXb7)-|6-A8bJON@jN?Z76AD@@YX|?w!m| zBJF6>7I>PpNF1bOP3{v;pMAs3sATpwTDgl>-uxFUIs^lIqg9I)#NzuUv)|Fg&ot4t zrE7hz&qNZxa?Ta@+5X9Fcc>Qi!J+Jge=|~G>EF#Akj&1bxwC0*1zNJz2e0og^eB(r^~xFZ$Ect!7}jAGkU$A+#>LG@HTk%~*b zV!o@Pzf(hhrzNv@QF}GD-}Ktv)tvjb?&+b^GcfYNj1&P`^orh)5e;2v)vSWM1KW*;ZxDKg&lj9?u(KbifQjL*sV%QO6Nvz@k34QZ1W zC9~UAL1%j$%6j0Sj(eSObS@4RFGyxbQgIX&Xa0*~sC{9meNj?ggHj(Z4l|d8nM=dW z68*5GI!lw;ms$PmtbVhvK3EJdOJ=_(;}vMpct5_xs9F*%Qvs2e0{QtZ&r!?TC(zcC%=(w%~zwOd_%G$Uwsn!t>g}Ttx4o}lCAj` zlgRHSTl1wQkvAnPQ?`LAS~VNU)hS;aS4q}-&c_%@2jbyBVQW{Jp&RI5rSr&68xLWq=SQY~gWIZCyj z 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 Ljg&rIZ2kWOZ6rc@ diff --git a/cmake-build-debug/CMakeFiles/FinalProject.dir/src/render/window.cpp.o b/cmake-build-debug/CMakeFiles/FinalProject.dir/src/render/window.cpp.o deleted file mode 100644 index dfd2b4b0c5be3359a74c068cfea46a9545a6f108..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 572744 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

+T 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 ignore arg [-plugin] ==> ignore arg [/usr/lib/gcc/x86_64-linux-gnu/12/liblto_plugin.so] ==> ignore arg [-plugin-opt=/usr/lib/gcc/x86_64-linux-gnu/12/lto-wrapper] ==> ignore - arg [-plugin-opt=-fresolution=/tmp/cck5GWOB.res] ==> ignore + arg [-plugin-opt=-fresolution=/tmp/ccooMVho.res] ==> ignore arg [-plugin-opt=-pass-through=-lgcc] ==> ignore arg [-plugin-opt=-pass-through=-lgcc_s] ==> ignore arg [-plugin-opt=-pass-through=-lc] ==> ignore @@ -180,7 +180,7 @@ Parsed C implicit link information from above output: arg [/lib64/ld-linux-x86-64.so.2] ==> ignore arg [-pie] ==> ignore arg [-o] ==> ignore - arg [cmTC_9aed7] ==> ignore + arg [cmTC_ca215] ==> ignore arg [/usr/lib/gcc/x86_64-linux-gnu/12/../../../x86_64-linux-gnu/Scrt1.o] ==> obj [/usr/lib/gcc/x86_64-linux-gnu/12/../../../x86_64-linux-gnu/Scrt1.o] arg [/usr/lib/gcc/x86_64-linux-gnu/12/../../../x86_64-linux-gnu/crti.o] ==> obj [/usr/lib/gcc/x86_64-linux-gnu/12/../../../x86_64-linux-gnu/crti.o] arg [/usr/lib/gcc/x86_64-linux-gnu/12/crtbeginS.o] ==> obj [/usr/lib/gcc/x86_64-linux-gnu/12/crtbeginS.o] @@ -192,7 +192,7 @@ Parsed C implicit link information from above output: arg [-L/usr/lib/x86_64-linux-gnu] ==> dir [/usr/lib/x86_64-linux-gnu] arg [-L/usr/lib/../lib] ==> dir [/usr/lib/../lib] arg [-L/usr/lib/gcc/x86_64-linux-gnu/12/../../..] ==> dir [/usr/lib/gcc/x86_64-linux-gnu/12/../../..] - arg [CMakeFiles/cmTC_9aed7.dir/CMakeCCompilerABI.c.o] ==> ignore + arg [CMakeFiles/cmTC_ca215.dir/CMakeCCompilerABI.c.o] ==> ignore arg [-lgcc] ==> lib [gcc] arg [--push-state] ==> ignore arg [--as-needed] ==> ignore @@ -226,7 +226,7 @@ Parsed C implicit link information from above output: Detecting CXX compiler ABI info compiled with the following output: Change Dir: /home/brett/Documents/Brock/CS 3P98/Final Project/cmake-build-release/CMakeFiles/CMakeTmp -Run Build Command(s):/opt/netbrains/clion/clion-2022.1.3/bin/ninja/linux/ninja cmTC_56718 && [1/2] Building CXX object CMakeFiles/cmTC_56718.dir/CMakeCXXCompilerABI.cpp.o +Run Build Command(s):/opt/netbrains/clion/clion-2022.1.3/bin/ninja/linux/x64/ninja cmTC_2a383 && [1/2] Building CXX object CMakeFiles/cmTC_2a383.dir/CMakeCXXCompilerABI.cpp.o Using built-in specs. COLLECT_GCC=/usr/bin/c++ OFFLOAD_TARGET_NAMES=nvptx-none:amdgcn-amdhsa @@ -236,8 +236,8 @@ Configured with: ../src/configure -v --with-pkgversion='Debian 12.2.0-14' --with Thread model: posix Supported LTO compression algorithms: zlib zstd gcc version 12.2.0 (Debian 12.2.0-14) -COLLECT_GCC_OPTIONS='-fdiagnostics-color=always' '-v' '-o' 'CMakeFiles/cmTC_56718.dir/CMakeCXXCompilerABI.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64' '-dumpdir' 'CMakeFiles/cmTC_56718.dir/' - /usr/lib/gcc/x86_64-linux-gnu/12/cc1plus -quiet -v -imultiarch x86_64-linux-gnu -D_GNU_SOURCE /opt/netbrains/clion/clion-2022.1.3/bin/cmake/linux/share/cmake-3.24/Modules/CMakeCXXCompilerABI.cpp -quiet -dumpdir CMakeFiles/cmTC_56718.dir/ -dumpbase CMakeCXXCompilerABI.cpp.cpp -dumpbase-ext .cpp -mtune=generic -march=x86-64 -version -fdiagnostics-color=always -fasynchronous-unwind-tables -o /tmp/ccrobRjl.s +COLLECT_GCC_OPTIONS='-fdiagnostics-color=always' '-v' '-o' 'CMakeFiles/cmTC_2a383.dir/CMakeCXXCompilerABI.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64' '-dumpdir' 'CMakeFiles/cmTC_2a383.dir/' + /usr/lib/gcc/x86_64-linux-gnu/12/cc1plus -quiet -v -imultiarch x86_64-linux-gnu -D_GNU_SOURCE /opt/netbrains/clion/clion-2022.1.3/bin/cmake/linux/x64/share/cmake-3.24/Modules/CMakeCXXCompilerABI.cpp -quiet -dumpdir CMakeFiles/cmTC_2a383.dir/ -dumpbase CMakeCXXCompilerABI.cpp.cpp -dumpbase-ext .cpp -mtune=generic -march=x86-64 -version -fdiagnostics-color=always -fasynchronous-unwind-tables -o /tmp/cc8Td63v.s GNU C++17 (Debian 12.2.0-14) version 12.2.0 (x86_64-linux-gnu) compiled by GNU C version 12.2.0, GMP version 6.2.1, MPFR version 4.1.1-p1, MPC version 1.3.1, isl version isl-0.25-GMP @@ -263,13 +263,13 @@ GNU C++17 (Debian 12.2.0-14) version 12.2.0 (x86_64-linux-gnu) warning: MPFR header version 4.1.1-p1 differs from library version 4.2.0. GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072 Compiler executable checksum: 62b090dbbefa50644117a3c13d47369a -COLLECT_GCC_OPTIONS='-fdiagnostics-color=always' '-v' '-o' 'CMakeFiles/cmTC_56718.dir/CMakeCXXCompilerABI.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64' '-dumpdir' 'CMakeFiles/cmTC_56718.dir/' - as -v --64 -o CMakeFiles/cmTC_56718.dir/CMakeCXXCompilerABI.cpp.o /tmp/ccrobRjl.s +COLLECT_GCC_OPTIONS='-fdiagnostics-color=always' '-v' '-o' 'CMakeFiles/cmTC_2a383.dir/CMakeCXXCompilerABI.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64' '-dumpdir' 'CMakeFiles/cmTC_2a383.dir/' + as -v --64 -o CMakeFiles/cmTC_2a383.dir/CMakeCXXCompilerABI.cpp.o /tmp/cc8Td63v.s GNU assembler version 2.40 (x86_64-linux-gnu) using BFD version (GNU Binutils for Debian) 2.40 COMPILER_PATH=/usr/lib/gcc/x86_64-linux-gnu/12/:/usr/lib/gcc/x86_64-linux-gnu/12/:/usr/lib/gcc/x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/12/:/usr/lib/gcc/x86_64-linux-gnu/ LIBRARY_PATH=/usr/lib/gcc/x86_64-linux-gnu/12/:/usr/lib/gcc/x86_64-linux-gnu/12/../../../x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/12/../../../../lib/:/lib/x86_64-linux-gnu/:/lib/../lib/:/usr/lib/x86_64-linux-gnu/:/usr/lib/../lib/:/usr/lib/gcc/x86_64-linux-gnu/12/../../../:/lib/:/usr/lib/ -COLLECT_GCC_OPTIONS='-fdiagnostics-color=always' '-v' '-o' 'CMakeFiles/cmTC_56718.dir/CMakeCXXCompilerABI.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64' '-dumpdir' 'CMakeFiles/cmTC_56718.dir/CMakeCXXCompilerABI.cpp.' -[2/2] Linking CXX executable cmTC_56718 +COLLECT_GCC_OPTIONS='-fdiagnostics-color=always' '-v' '-o' 'CMakeFiles/cmTC_2a383.dir/CMakeCXXCompilerABI.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64' '-dumpdir' 'CMakeFiles/cmTC_2a383.dir/CMakeCXXCompilerABI.cpp.' +[2/2] Linking CXX executable cmTC_2a383 Using built-in specs. COLLECT_GCC=/usr/bin/c++ COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/12/lto-wrapper @@ -282,9 +282,9 @@ Supported LTO compression algorithms: zlib zstd gcc version 12.2.0 (Debian 12.2.0-14) COMPILER_PATH=/usr/lib/gcc/x86_64-linux-gnu/12/:/usr/lib/gcc/x86_64-linux-gnu/12/:/usr/lib/gcc/x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/12/:/usr/lib/gcc/x86_64-linux-gnu/ LIBRARY_PATH=/usr/lib/gcc/x86_64-linux-gnu/12/:/usr/lib/gcc/x86_64-linux-gnu/12/../../../x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/12/../../../../lib/:/lib/x86_64-linux-gnu/:/lib/../lib/:/usr/lib/x86_64-linux-gnu/:/usr/lib/../lib/:/usr/lib/gcc/x86_64-linux-gnu/12/../../../:/lib/:/usr/lib/ -COLLECT_GCC_OPTIONS='-v' '-rdynamic' '-o' 'cmTC_56718' '-shared-libgcc' '-mtune=generic' '-march=x86-64' '-dumpdir' 'cmTC_56718.' - /usr/lib/gcc/x86_64-linux-gnu/12/collect2 -plugin /usr/lib/gcc/x86_64-linux-gnu/12/liblto_plugin.so -plugin-opt=/usr/lib/gcc/x86_64-linux-gnu/12/lto-wrapper -plugin-opt=-fresolution=/tmp/ccsC2lMt.res -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lc -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lgcc --build-id --eh-frame-hdr -m elf_x86_64 --hash-style=gnu --as-needed -export-dynamic -dynamic-linker /lib64/ld-linux-x86-64.so.2 -pie -o cmTC_56718 /usr/lib/gcc/x86_64-linux-gnu/12/../../../x86_64-linux-gnu/Scrt1.o /usr/lib/gcc/x86_64-linux-gnu/12/../../../x86_64-linux-gnu/crti.o /usr/lib/gcc/x86_64-linux-gnu/12/crtbeginS.o -L/usr/lib/gcc/x86_64-linux-gnu/12 -L/usr/lib/gcc/x86_64-linux-gnu/12/../../../x86_64-linux-gnu -L/usr/lib/gcc/x86_64-linux-gnu/12/../../../../lib -L/lib/x86_64-linux-gnu -L/lib/../lib -L/usr/lib/x86_64-linux-gnu -L/usr/lib/../lib -L/usr/lib/gcc/x86_64-linux-gnu/12/../../.. CMakeFiles/cmTC_56718.dir/CMakeCXXCompilerABI.cpp.o -lstdc++ -lm -lgcc_s -lgcc -lc -lgcc_s -lgcc /usr/lib/gcc/x86_64-linux-gnu/12/crtendS.o /usr/lib/gcc/x86_64-linux-gnu/12/../../../x86_64-linux-gnu/crtn.o -COLLECT_GCC_OPTIONS='-v' '-rdynamic' '-o' 'cmTC_56718' '-shared-libgcc' '-mtune=generic' '-march=x86-64' '-dumpdir' 'cmTC_56718.' +COLLECT_GCC_OPTIONS='-v' '-rdynamic' '-o' 'cmTC_2a383' '-shared-libgcc' '-mtune=generic' '-march=x86-64' '-dumpdir' 'cmTC_2a383.' + /usr/lib/gcc/x86_64-linux-gnu/12/collect2 -plugin /usr/lib/gcc/x86_64-linux-gnu/12/liblto_plugin.so -plugin-opt=/usr/lib/gcc/x86_64-linux-gnu/12/lto-wrapper -plugin-opt=-fresolution=/tmp/ccU9wNpi.res -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lc -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lgcc --build-id --eh-frame-hdr -m elf_x86_64 --hash-style=gnu --as-needed -export-dynamic -dynamic-linker /lib64/ld-linux-x86-64.so.2 -pie -o cmTC_2a383 /usr/lib/gcc/x86_64-linux-gnu/12/../../../x86_64-linux-gnu/Scrt1.o /usr/lib/gcc/x86_64-linux-gnu/12/../../../x86_64-linux-gnu/crti.o /usr/lib/gcc/x86_64-linux-gnu/12/crtbeginS.o -L/usr/lib/gcc/x86_64-linux-gnu/12 -L/usr/lib/gcc/x86_64-linux-gnu/12/../../../x86_64-linux-gnu -L/usr/lib/gcc/x86_64-linux-gnu/12/../../../../lib -L/lib/x86_64-linux-gnu -L/lib/../lib -L/usr/lib/x86_64-linux-gnu -L/usr/lib/../lib -L/usr/lib/gcc/x86_64-linux-gnu/12/../../.. CMakeFiles/cmTC_2a383.dir/CMakeCXXCompilerABI.cpp.o -lstdc++ -lm -lgcc_s -lgcc -lc -lgcc_s -lgcc /usr/lib/gcc/x86_64-linux-gnu/12/crtendS.o /usr/lib/gcc/x86_64-linux-gnu/12/../../../x86_64-linux-gnu/crtn.o +COLLECT_GCC_OPTIONS='-v' '-rdynamic' '-o' 'cmTC_2a383' '-shared-libgcc' '-mtune=generic' '-march=x86-64' '-dumpdir' 'cmTC_2a383.' @@ -313,7 +313,7 @@ Parsed CXX implicit link information from above output: link line regex: [^( *|.*[/\])(ld|CMAKE_LINK_STARTFILE-NOTFOUND|([^/\]+-)?ld|collect2)[^/\]*( |$)] ignore line: [Change Dir: /home/brett/Documents/Brock/CS 3P98/Final Project/cmake-build-release/CMakeFiles/CMakeTmp] ignore line: [] - ignore line: [Run Build Command(s):/opt/netbrains/clion/clion-2022.1.3/bin/ninja/linux/ninja cmTC_56718 && [1/2] Building CXX object CMakeFiles/cmTC_56718.dir/CMakeCXXCompilerABI.cpp.o] + ignore line: [Run Build Command(s):/opt/netbrains/clion/clion-2022.1.3/bin/ninja/linux/x64/ninja cmTC_2a383 && [1/2] Building CXX object CMakeFiles/cmTC_2a383.dir/CMakeCXXCompilerABI.cpp.o] ignore line: [Using built-in specs.] ignore line: [COLLECT_GCC=/usr/bin/c++] ignore line: [OFFLOAD_TARGET_NAMES=nvptx-none:amdgcn-amdhsa] @@ -323,8 +323,8 @@ Parsed CXX implicit link information from above output: ignore line: [Thread model: posix] ignore line: [Supported LTO compression algorithms: zlib zstd] ignore line: [gcc version 12.2.0 (Debian 12.2.0-14) ] - ignore line: [COLLECT_GCC_OPTIONS='-fdiagnostics-color=always' '-v' '-o' 'CMakeFiles/cmTC_56718.dir/CMakeCXXCompilerABI.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64' '-dumpdir' 'CMakeFiles/cmTC_56718.dir/'] - ignore line: [ /usr/lib/gcc/x86_64-linux-gnu/12/cc1plus -quiet -v -imultiarch x86_64-linux-gnu -D_GNU_SOURCE /opt/netbrains/clion/clion-2022.1.3/bin/cmake/linux/share/cmake-3.24/Modules/CMakeCXXCompilerABI.cpp -quiet -dumpdir CMakeFiles/cmTC_56718.dir/ -dumpbase CMakeCXXCompilerABI.cpp.cpp -dumpbase-ext .cpp -mtune=generic -march=x86-64 -version -fdiagnostics-color=always -fasynchronous-unwind-tables -o /tmp/ccrobRjl.s] + ignore line: [COLLECT_GCC_OPTIONS='-fdiagnostics-color=always' '-v' '-o' 'CMakeFiles/cmTC_2a383.dir/CMakeCXXCompilerABI.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64' '-dumpdir' 'CMakeFiles/cmTC_2a383.dir/'] + ignore line: [ /usr/lib/gcc/x86_64-linux-gnu/12/cc1plus -quiet -v -imultiarch x86_64-linux-gnu -D_GNU_SOURCE /opt/netbrains/clion/clion-2022.1.3/bin/cmake/linux/x64/share/cmake-3.24/Modules/CMakeCXXCompilerABI.cpp -quiet -dumpdir CMakeFiles/cmTC_2a383.dir/ -dumpbase CMakeCXXCompilerABI.cpp.cpp -dumpbase-ext .cpp -mtune=generic -march=x86-64 -version -fdiagnostics-color=always -fasynchronous-unwind-tables -o /tmp/cc8Td63v.s] ignore line: [GNU C++17 (Debian 12.2.0-14) version 12.2.0 (x86_64-linux-gnu)] ignore line: [ compiled by GNU C version 12.2.0 GMP version 6.2.1 MPFR version 4.1.1-p1 MPC version 1.3.1 isl version isl-0.25-GMP] ignore line: [] @@ -350,13 +350,13 @@ Parsed CXX implicit link information from above output: ignore line: [warning: MPFR header version 4.1.1-p1 differs from library version 4.2.0.] ignore line: [GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072] ignore line: [Compiler executable checksum: 62b090dbbefa50644117a3c13d47369a] - ignore line: [COLLECT_GCC_OPTIONS='-fdiagnostics-color=always' '-v' '-o' 'CMakeFiles/cmTC_56718.dir/CMakeCXXCompilerABI.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64' '-dumpdir' 'CMakeFiles/cmTC_56718.dir/'] - ignore line: [ as -v --64 -o CMakeFiles/cmTC_56718.dir/CMakeCXXCompilerABI.cpp.o /tmp/ccrobRjl.s] + ignore line: [COLLECT_GCC_OPTIONS='-fdiagnostics-color=always' '-v' '-o' 'CMakeFiles/cmTC_2a383.dir/CMakeCXXCompilerABI.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64' '-dumpdir' 'CMakeFiles/cmTC_2a383.dir/'] + ignore line: [ as -v --64 -o CMakeFiles/cmTC_2a383.dir/CMakeCXXCompilerABI.cpp.o /tmp/cc8Td63v.s] ignore line: [GNU assembler version 2.40 (x86_64-linux-gnu) using BFD version (GNU Binutils for Debian) 2.40] ignore line: [COMPILER_PATH=/usr/lib/gcc/x86_64-linux-gnu/12/:/usr/lib/gcc/x86_64-linux-gnu/12/:/usr/lib/gcc/x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/12/:/usr/lib/gcc/x86_64-linux-gnu/] ignore line: [LIBRARY_PATH=/usr/lib/gcc/x86_64-linux-gnu/12/:/usr/lib/gcc/x86_64-linux-gnu/12/../../../x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/12/../../../../lib/:/lib/x86_64-linux-gnu/:/lib/../lib/:/usr/lib/x86_64-linux-gnu/:/usr/lib/../lib/:/usr/lib/gcc/x86_64-linux-gnu/12/../../../:/lib/:/usr/lib/] - ignore line: [COLLECT_GCC_OPTIONS='-fdiagnostics-color=always' '-v' '-o' 'CMakeFiles/cmTC_56718.dir/CMakeCXXCompilerABI.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64' '-dumpdir' 'CMakeFiles/cmTC_56718.dir/CMakeCXXCompilerABI.cpp.'] - ignore line: [[2/2] Linking CXX executable cmTC_56718] + ignore line: [COLLECT_GCC_OPTIONS='-fdiagnostics-color=always' '-v' '-o' 'CMakeFiles/cmTC_2a383.dir/CMakeCXXCompilerABI.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64' '-dumpdir' 'CMakeFiles/cmTC_2a383.dir/CMakeCXXCompilerABI.cpp.'] + ignore line: [[2/2] Linking CXX executable cmTC_2a383] ignore line: [Using built-in specs.] ignore line: [COLLECT_GCC=/usr/bin/c++] ignore line: [COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/12/lto-wrapper] @@ -369,13 +369,13 @@ Parsed CXX implicit link information from above output: ignore line: [gcc version 12.2.0 (Debian 12.2.0-14) ] ignore line: [COMPILER_PATH=/usr/lib/gcc/x86_64-linux-gnu/12/:/usr/lib/gcc/x86_64-linux-gnu/12/:/usr/lib/gcc/x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/12/:/usr/lib/gcc/x86_64-linux-gnu/] ignore line: [LIBRARY_PATH=/usr/lib/gcc/x86_64-linux-gnu/12/:/usr/lib/gcc/x86_64-linux-gnu/12/../../../x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/12/../../../../lib/:/lib/x86_64-linux-gnu/:/lib/../lib/:/usr/lib/x86_64-linux-gnu/:/usr/lib/../lib/:/usr/lib/gcc/x86_64-linux-gnu/12/../../../:/lib/:/usr/lib/] - ignore line: [COLLECT_GCC_OPTIONS='-v' '-rdynamic' '-o' 'cmTC_56718' '-shared-libgcc' '-mtune=generic' '-march=x86-64' '-dumpdir' 'cmTC_56718.'] - link line: [ /usr/lib/gcc/x86_64-linux-gnu/12/collect2 -plugin /usr/lib/gcc/x86_64-linux-gnu/12/liblto_plugin.so -plugin-opt=/usr/lib/gcc/x86_64-linux-gnu/12/lto-wrapper -plugin-opt=-fresolution=/tmp/ccsC2lMt.res -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lc -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lgcc --build-id --eh-frame-hdr -m elf_x86_64 --hash-style=gnu --as-needed -export-dynamic -dynamic-linker /lib64/ld-linux-x86-64.so.2 -pie -o cmTC_56718 /usr/lib/gcc/x86_64-linux-gnu/12/../../../x86_64-linux-gnu/Scrt1.o /usr/lib/gcc/x86_64-linux-gnu/12/../../../x86_64-linux-gnu/crti.o /usr/lib/gcc/x86_64-linux-gnu/12/crtbeginS.o -L/usr/lib/gcc/x86_64-linux-gnu/12 -L/usr/lib/gcc/x86_64-linux-gnu/12/../../../x86_64-linux-gnu -L/usr/lib/gcc/x86_64-linux-gnu/12/../../../../lib -L/lib/x86_64-linux-gnu -L/lib/../lib -L/usr/lib/x86_64-linux-gnu -L/usr/lib/../lib -L/usr/lib/gcc/x86_64-linux-gnu/12/../../.. CMakeFiles/cmTC_56718.dir/CMakeCXXCompilerABI.cpp.o -lstdc++ -lm -lgcc_s -lgcc -lc -lgcc_s -lgcc /usr/lib/gcc/x86_64-linux-gnu/12/crtendS.o /usr/lib/gcc/x86_64-linux-gnu/12/../../../x86_64-linux-gnu/crtn.o] + ignore line: [COLLECT_GCC_OPTIONS='-v' '-rdynamic' '-o' 'cmTC_2a383' '-shared-libgcc' '-mtune=generic' '-march=x86-64' '-dumpdir' 'cmTC_2a383.'] + link line: [ /usr/lib/gcc/x86_64-linux-gnu/12/collect2 -plugin /usr/lib/gcc/x86_64-linux-gnu/12/liblto_plugin.so -plugin-opt=/usr/lib/gcc/x86_64-linux-gnu/12/lto-wrapper -plugin-opt=-fresolution=/tmp/ccU9wNpi.res -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lc -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lgcc --build-id --eh-frame-hdr -m elf_x86_64 --hash-style=gnu --as-needed -export-dynamic -dynamic-linker /lib64/ld-linux-x86-64.so.2 -pie -o cmTC_2a383 /usr/lib/gcc/x86_64-linux-gnu/12/../../../x86_64-linux-gnu/Scrt1.o /usr/lib/gcc/x86_64-linux-gnu/12/../../../x86_64-linux-gnu/crti.o /usr/lib/gcc/x86_64-linux-gnu/12/crtbeginS.o -L/usr/lib/gcc/x86_64-linux-gnu/12 -L/usr/lib/gcc/x86_64-linux-gnu/12/../../../x86_64-linux-gnu -L/usr/lib/gcc/x86_64-linux-gnu/12/../../../../lib -L/lib/x86_64-linux-gnu -L/lib/../lib -L/usr/lib/x86_64-linux-gnu -L/usr/lib/../lib -L/usr/lib/gcc/x86_64-linux-gnu/12/../../.. CMakeFiles/cmTC_2a383.dir/CMakeCXXCompilerABI.cpp.o -lstdc++ -lm -lgcc_s -lgcc -lc -lgcc_s -lgcc /usr/lib/gcc/x86_64-linux-gnu/12/crtendS.o /usr/lib/gcc/x86_64-linux-gnu/12/../../../x86_64-linux-gnu/crtn.o] arg [/usr/lib/gcc/x86_64-linux-gnu/12/collect2] ==> ignore arg [-plugin] ==> ignore arg [/usr/lib/gcc/x86_64-linux-gnu/12/liblto_plugin.so] ==> ignore arg [-plugin-opt=/usr/lib/gcc/x86_64-linux-gnu/12/lto-wrapper] ==> ignore - arg [-plugin-opt=-fresolution=/tmp/ccsC2lMt.res] ==> ignore + arg [-plugin-opt=-fresolution=/tmp/ccU9wNpi.res] ==> ignore arg [-plugin-opt=-pass-through=-lgcc_s] ==> ignore arg [-plugin-opt=-pass-through=-lgcc] ==> ignore arg [-plugin-opt=-pass-through=-lc] ==> ignore @@ -392,7 +392,7 @@ Parsed CXX implicit link information from above output: arg [/lib64/ld-linux-x86-64.so.2] ==> ignore arg [-pie] ==> ignore arg [-o] ==> ignore - arg [cmTC_56718] ==> ignore + arg [cmTC_2a383] ==> ignore arg [/usr/lib/gcc/x86_64-linux-gnu/12/../../../x86_64-linux-gnu/Scrt1.o] ==> obj [/usr/lib/gcc/x86_64-linux-gnu/12/../../../x86_64-linux-gnu/Scrt1.o] arg [/usr/lib/gcc/x86_64-linux-gnu/12/../../../x86_64-linux-gnu/crti.o] ==> obj [/usr/lib/gcc/x86_64-linux-gnu/12/../../../x86_64-linux-gnu/crti.o] arg [/usr/lib/gcc/x86_64-linux-gnu/12/crtbeginS.o] ==> obj [/usr/lib/gcc/x86_64-linux-gnu/12/crtbeginS.o] @@ -404,7 +404,7 @@ Parsed CXX implicit link information from above output: arg [-L/usr/lib/x86_64-linux-gnu] ==> dir [/usr/lib/x86_64-linux-gnu] arg [-L/usr/lib/../lib] ==> dir [/usr/lib/../lib] arg [-L/usr/lib/gcc/x86_64-linux-gnu/12/../../..] ==> dir [/usr/lib/gcc/x86_64-linux-gnu/12/../../..] - arg [CMakeFiles/cmTC_56718.dir/CMakeCXXCompilerABI.cpp.o] ==> ignore + arg [CMakeFiles/cmTC_2a383.dir/CMakeCXXCompilerABI.cpp.o] ==> ignore arg [-lstdc++] ==> lib [stdc++] arg [-lm] ==> lib [m] arg [-lgcc_s] ==> lib [gcc_s] @@ -434,8 +434,8 @@ Parsed CXX implicit link information from above output: Performing C SOURCE FILE Test CMAKE_HAVE_LIBC_PTHREAD succeeded with the following output: Change Dir: /home/brett/Documents/Brock/CS 3P98/Final Project/cmake-build-release/CMakeFiles/CMakeTmp -Run Build Command(s):/opt/netbrains/clion/clion-2022.1.3/bin/ninja/linux/ninja cmTC_1db9a && [1/2] Building C object CMakeFiles/cmTC_1db9a.dir/src.c.o -[2/2] Linking C executable cmTC_1db9a +Run Build Command(s):/opt/netbrains/clion/clion-2022.1.3/bin/ninja/linux/x64/ninja cmTC_0822b && [1/2] Building C object CMakeFiles/cmTC_0822b.dir/src.c.o +[2/2] Linking C executable cmTC_0822b Source file was: @@ -462,64 +462,64 @@ int main(void) Determining if the function XOpenDisplay exists in the /usr/lib/x86_64-linux-gnu/libX11.so;/usr/lib/x86_64-linux-gnu/libXext.so passed with the following output: Change Dir: /home/brett/Documents/Brock/CS 3P98/Final Project/cmake-build-release/CMakeFiles/CMakeTmp -Run Build Command(s):/opt/netbrains/clion/clion-2022.1.3/bin/ninja/linux/ninja cmTC_7ee3d && [1/2] Building C object CMakeFiles/cmTC_7ee3d.dir/CheckFunctionExists.c.o -[2/2] Linking C executable cmTC_7ee3d +Run Build Command(s):/opt/netbrains/clion/clion-2022.1.3/bin/ninja/linux/x64/ninja cmTC_9ec52 && [1/2] Building C object CMakeFiles/cmTC_9ec52.dir/CheckFunctionExists.c.o +[2/2] Linking C executable cmTC_9ec52 Determining if the function gethostbyname exists passed with the following output: Change Dir: /home/brett/Documents/Brock/CS 3P98/Final Project/cmake-build-release/CMakeFiles/CMakeTmp -Run Build Command(s):/opt/netbrains/clion/clion-2022.1.3/bin/ninja/linux/ninja cmTC_fa9d3 && [1/2] Building C object CMakeFiles/cmTC_fa9d3.dir/CheckFunctionExists.c.o -[2/2] Linking C executable cmTC_fa9d3 +Run Build Command(s):/opt/netbrains/clion/clion-2022.1.3/bin/ninja/linux/x64/ninja cmTC_9b711 && [1/2] Building C object CMakeFiles/cmTC_9b711.dir/CheckFunctionExists.c.o +[2/2] Linking C executable cmTC_9b711 Determining if the function connect exists passed with the following output: Change Dir: /home/brett/Documents/Brock/CS 3P98/Final Project/cmake-build-release/CMakeFiles/CMakeTmp -Run Build Command(s):/opt/netbrains/clion/clion-2022.1.3/bin/ninja/linux/ninja cmTC_0f61c && [1/2] Building C object CMakeFiles/cmTC_0f61c.dir/CheckFunctionExists.c.o -[2/2] Linking C executable cmTC_0f61c +Run Build Command(s):/opt/netbrains/clion/clion-2022.1.3/bin/ninja/linux/x64/ninja cmTC_b2866 && [1/2] Building C object CMakeFiles/cmTC_b2866.dir/CheckFunctionExists.c.o +[2/2] Linking C executable cmTC_b2866 Determining if the function remove exists passed with the following output: Change Dir: /home/brett/Documents/Brock/CS 3P98/Final Project/cmake-build-release/CMakeFiles/CMakeTmp -Run Build Command(s):/opt/netbrains/clion/clion-2022.1.3/bin/ninja/linux/ninja cmTC_a9dc8 && [1/2] Building C object CMakeFiles/cmTC_a9dc8.dir/CheckFunctionExists.c.o -[2/2] Linking C executable cmTC_a9dc8 +Run Build Command(s):/opt/netbrains/clion/clion-2022.1.3/bin/ninja/linux/x64/ninja cmTC_5aa50 && [1/2] Building C object CMakeFiles/cmTC_5aa50.dir/CheckFunctionExists.c.o +[2/2] Linking C executable cmTC_5aa50 Determining if the function shmat exists passed with the following output: Change Dir: /home/brett/Documents/Brock/CS 3P98/Final Project/cmake-build-release/CMakeFiles/CMakeTmp -Run Build Command(s):/opt/netbrains/clion/clion-2022.1.3/bin/ninja/linux/ninja cmTC_77394 && [1/2] Building C object CMakeFiles/cmTC_77394.dir/CheckFunctionExists.c.o -[2/2] Linking C executable cmTC_77394 +Run Build Command(s):/opt/netbrains/clion/clion-2022.1.3/bin/ninja/linux/x64/ninja cmTC_bdff8 && [1/2] Building C object CMakeFiles/cmTC_bdff8.dir/CheckFunctionExists.c.o +[2/2] Linking C executable cmTC_bdff8 Determining if the function IceConnectionNumber exists in the ICE passed with the following output: Change Dir: /home/brett/Documents/Brock/CS 3P98/Final Project/cmake-build-release/CMakeFiles/CMakeTmp -Run Build Command(s):/opt/netbrains/clion/clion-2022.1.3/bin/ninja/linux/ninja cmTC_e254d && [1/2] Building C object CMakeFiles/cmTC_e254d.dir/CheckFunctionExists.c.o -[2/2] Linking C executable cmTC_e254d +Run Build Command(s):/opt/netbrains/clion/clion-2022.1.3/bin/ninja/linux/x64/ninja cmTC_0c5e9 && [1/2] Building C object CMakeFiles/cmTC_0c5e9.dir/CheckFunctionExists.c.o +[2/2] Linking C executable cmTC_0c5e9 Determining if the include file unistd.h exists passed with the following output: Change Dir: /home/brett/Documents/Brock/CS 3P98/Final Project/cmake-build-release/CMakeFiles/CMakeTmp -Run Build Command(s):/opt/netbrains/clion/clion-2022.1.3/bin/ninja/linux/ninja cmTC_3bf2f && [1/2] Building C object CMakeFiles/cmTC_3bf2f.dir/CheckIncludeFile.c.o -[2/2] Linking C executable cmTC_3bf2f +Run Build Command(s):/opt/netbrains/clion/clion-2022.1.3/bin/ninja/linux/x64/ninja cmTC_c47b7 && [1/2] Building C object CMakeFiles/cmTC_c47b7.dir/CheckIncludeFile.c.o +[2/2] Linking C executable cmTC_c47b7 Determining if the include file fcntl.h exists passed with the following output: Change Dir: /home/brett/Documents/Brock/CS 3P98/Final Project/cmake-build-release/CMakeFiles/CMakeTmp -Run Build Command(s):/opt/netbrains/clion/clion-2022.1.3/bin/ninja/linux/ninja cmTC_a7423 && [1/2] Building C object CMakeFiles/cmTC_a7423.dir/CheckIncludeFile.c.o -[2/2] Linking C executable cmTC_a7423 +Run Build Command(s):/opt/netbrains/clion/clion-2022.1.3/bin/ninja/linux/x64/ninja cmTC_2b5b3 && [1/2] Building C object CMakeFiles/cmTC_2b5b3.dir/CheckIncludeFile.c.o +[2/2] Linking C executable cmTC_2b5b3 diff --git a/cmake-build-release/CMakeFiles/clion-Release-log.txt b/cmake-build-release/CMakeFiles/clion-Release-log.txt index 94e5a74..204fa38 100644 --- a/cmake-build-release/CMakeFiles/clion-Release-log.txt +++ b/cmake-build-release/CMakeFiles/clion-Release-log.txt @@ -1,4 +1,4 @@ -/opt/netbrains/clion/clion-2022.1.3/bin/cmake/linux/bin/cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_MAKE_PROGRAM=/opt/netbrains/clion/clion-2022.1.3/bin/ninja/linux/ninja -G Ninja -S "/home/brett/Documents/Brock/CS 3P98/Final Project" -B "/home/brett/Documents/Brock/CS 3P98/Final Project/cmake-build-release" +/opt/netbrains/clion/clion-2022.1.3/bin/cmake/linux/x64/bin/cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_MAKE_PROGRAM=/opt/netbrains/clion/clion-2022.1.3/bin/ninja/linux/x64/ninja -G Ninja -S "/home/brett/Documents/Brock/CS 3P98/Final Project" -B "/home/brett/Documents/Brock/CS 3P98/Final Project/cmake-build-release" Building for Release -- Using X11 for window creation Standard Files /home/brett/Documents/Brock/CS 3P98/Final Project/libraries/BLT/src/blt/std/filesystem.cpp;/home/brett/Documents/Brock/CS 3P98/Final Project/libraries/BLT/src/blt/std/format.cpp;/home/brett/Documents/Brock/CS 3P98/Final Project/libraries/BLT/src/blt/std/loader.cpp;/home/brett/Documents/Brock/CS 3P98/Final Project/libraries/BLT/src/blt/std/logging.cpp;/home/brett/Documents/Brock/CS 3P98/Final Project/libraries/BLT/src/blt/std/system.cpp diff --git a/cmake-build-release/CMakeFiles/clion-environment.txt b/cmake-build-release/CMakeFiles/clion-environment.txt index a2ec416..c51f0b7 100644 --- a/cmake-build-release/CMakeFiles/clion-environment.txt +++ b/cmake-build-release/CMakeFiles/clion-environment.txt @@ -1,3 +1,3 @@ ToolSet: 1.0 (local)Options: -Options:-DCMAKE_MAKE_PROGRAM=/opt/netbrains/clion/clion-2022.1.3/bin/ninja/linux/ninja \ No newline at end of file +Options:-DCMAKE_MAKE_PROGRAM=/opt/netbrains/clion/clion-2022.1.3/bin/ninja/linux/x64/ninja \ No newline at end of file diff --git a/cmake-build-release/CMakeFiles/rules.ninja b/cmake-build-release/CMakeFiles/rules.ninja index 4fed72a..be04c73 100644 --- a/cmake-build-release/CMakeFiles/rules.ninja +++ b/cmake-build-release/CMakeFiles/rules.ninja @@ -52,7 +52,7 @@ rule C_COMPILER__glfw_Release # Rule for linking C static library. rule C_STATIC_LIBRARY_LINKER__glfw_Release - command = $PRE_LINK && /opt/netbrains/clion/clion-2022.1.3/bin/cmake/linux/bin/cmake -E rm -f $TARGET_FILE && /usr/bin/ar qc $TARGET_FILE $LINK_FLAGS $in && /usr/bin/ranlib $TARGET_FILE && $POST_BUILD + command = $PRE_LINK && /opt/netbrains/clion/clion-2022.1.3/bin/cmake/linux/x64/bin/cmake -E rm -f $TARGET_FILE && /usr/bin/ar qc $TARGET_FILE $LINK_FLAGS $in && /usr/bin/ranlib $TARGET_FILE && $POST_BUILD description = Linking C static library $TARGET_FILE restat = $RESTAT @@ -71,7 +71,7 @@ rule CXX_COMPILER__BLT_Release # Rule for linking CXX static library. rule CXX_STATIC_LIBRARY_LINKER__BLT_Release - command = $PRE_LINK && /opt/netbrains/clion/clion-2022.1.3/bin/cmake/linux/bin/cmake -E rm -f $TARGET_FILE && /usr/bin/ar qc $TARGET_FILE $LINK_FLAGS $in && /usr/bin/ranlib $TARGET_FILE && $POST_BUILD + command = $PRE_LINK && /opt/netbrains/clion/clion-2022.1.3/bin/cmake/linux/x64/bin/cmake -E rm -f $TARGET_FILE && /usr/bin/ar qc $TARGET_FILE $LINK_FLAGS $in && /usr/bin/ranlib $TARGET_FILE && $POST_BUILD description = Linking CXX static library $TARGET_FILE restat = $RESTAT @@ -90,7 +90,7 @@ rule C_COMPILER__freetype_Release # Rule for linking C static library. rule C_STATIC_LIBRARY_LINKER__freetype_Release - command = $PRE_LINK && /opt/netbrains/clion/clion-2022.1.3/bin/cmake/linux/bin/cmake -E rm -f $TARGET_FILE && /usr/bin/ar qc $TARGET_FILE $LINK_FLAGS $in && /usr/bin/ranlib $TARGET_FILE && $POST_BUILD + command = $PRE_LINK && /opt/netbrains/clion/clion-2022.1.3/bin/cmake/linux/x64/bin/cmake -E rm -f $TARGET_FILE && /usr/bin/ar qc $TARGET_FILE $LINK_FLAGS $in && /usr/bin/ranlib $TARGET_FILE && $POST_BUILD description = Linking C static library $TARGET_FILE restat = $RESTAT @@ -99,7 +99,7 @@ rule C_STATIC_LIBRARY_LINKER__freetype_Release # Rule for re-running cmake. rule RERUN_CMAKE - command = /opt/netbrains/clion/clion-2022.1.3/bin/cmake/linux/bin/cmake --regenerate-during-build -S"/home/brett/Documents/Brock/CS 3P98/Final Project" -B"/home/brett/Documents/Brock/CS 3P98/Final Project/cmake-build-release" + command = /opt/netbrains/clion/clion-2022.1.3/bin/cmake/linux/x64/bin/cmake --regenerate-during-build -S"/home/brett/Documents/Brock/CS 3P98/Final Project" -B"/home/brett/Documents/Brock/CS 3P98/Final Project/cmake-build-release" description = Re-running CMake... generator = 1 @@ -108,7 +108,7 @@ rule RERUN_CMAKE # Rule for cleaning all built files. rule CLEAN - command = /opt/netbrains/clion/clion-2022.1.3/bin/ninja/linux/ninja $FILE_ARG -t clean $TARGETS + command = /opt/netbrains/clion/clion-2022.1.3/bin/ninja/linux/x64/ninja $FILE_ARG -t clean $TARGETS description = Cleaning all built files... @@ -116,6 +116,6 @@ rule CLEAN # Rule for printing all primary targets available. rule HELP - command = /opt/netbrains/clion/clion-2022.1.3/bin/ninja/linux/ninja -t targets + command = /opt/netbrains/clion/clion-2022.1.3/bin/ninja/linux/x64/ninja -t targets description = All primary targets available: diff --git a/cmake-build-release/build.ninja b/cmake-build-release/build.ninja index 712d524..c860eb8 100644 --- a/cmake-build-release/build.ninja +++ b/cmake-build-release/build.ninja @@ -70,6 +70,13 @@ build CMakeFiles/FinalProject.dir/src/render/gl.cpp.o: CXX_COMPILER__FinalProjec OBJECT_DIR = CMakeFiles/FinalProject.dir OBJECT_FILE_DIR = CMakeFiles/FinalProject.dir/src/render +build CMakeFiles/FinalProject.dir/src/render/textures.cpp.o: CXX_COMPILER__FinalProject_Release /home/brett/Documents/Brock/CS$ 3P98/Final$ Project/src/render/textures.cpp || cmake_object_order_depends_target_FinalProject + DEP_FILE = CMakeFiles/FinalProject.dir/src/render/textures.cpp.o.d + FLAGS = -O3 -DNDEBUG -fdiagnostics-color=always -std=gnu++17 + INCLUDES = -I"/home/brett/Documents/Brock/CS 3P98/Final Project/include" -I"/home/brett/Documents/Brock/CS 3P98/Final Project/libraries/BLT/include" -I"/home/brett/Documents/Brock/CS 3P98/Final Project/cmake-build-release/libraries/BLT/config" -I"/home/brett/Documents/Brock/CS 3P98/Final Project/cmake-build-release/libraries/freetype-2.13.0/include" -I"/home/brett/Documents/Brock/CS 3P98/Final Project/libraries/freetype-2.13.0/include" -I"/home/brett/Documents/Brock/CS 3P98/Final Project/libraries/glfw-3.3.8/include" + OBJECT_DIR = CMakeFiles/FinalProject.dir + OBJECT_FILE_DIR = CMakeFiles/FinalProject.dir/src/render + build CMakeFiles/FinalProject.dir/src/render/ui/debug.cpp.o: CXX_COMPILER__FinalProject_Release /home/brett/Documents/Brock/CS$ 3P98/Final$ Project/src/render/ui/debug.cpp || cmake_object_order_depends_target_FinalProject DEP_FILE = CMakeFiles/FinalProject.dir/src/render/ui/debug.cpp.o.d FLAGS = -O3 -DNDEBUG -fdiagnostics-color=always -std=gnu++17 @@ -91,6 +98,13 @@ build CMakeFiles/FinalProject.dir/src/render/window.cpp.o: CXX_COMPILER__FinalPr OBJECT_DIR = CMakeFiles/FinalProject.dir OBJECT_FILE_DIR = CMakeFiles/FinalProject.dir/src/render +build CMakeFiles/FinalProject.dir/src/util/settings.cpp.o: CXX_COMPILER__FinalProject_Release /home/brett/Documents/Brock/CS$ 3P98/Final$ Project/src/util/settings.cpp || cmake_object_order_depends_target_FinalProject + DEP_FILE = CMakeFiles/FinalProject.dir/src/util/settings.cpp.o.d + FLAGS = -O3 -DNDEBUG -fdiagnostics-color=always -std=gnu++17 + INCLUDES = -I"/home/brett/Documents/Brock/CS 3P98/Final Project/include" -I"/home/brett/Documents/Brock/CS 3P98/Final Project/libraries/BLT/include" -I"/home/brett/Documents/Brock/CS 3P98/Final Project/cmake-build-release/libraries/BLT/config" -I"/home/brett/Documents/Brock/CS 3P98/Final Project/cmake-build-release/libraries/freetype-2.13.0/include" -I"/home/brett/Documents/Brock/CS 3P98/Final Project/libraries/freetype-2.13.0/include" -I"/home/brett/Documents/Brock/CS 3P98/Final Project/libraries/glfw-3.3.8/include" + OBJECT_DIR = CMakeFiles/FinalProject.dir + OBJECT_FILE_DIR = CMakeFiles/FinalProject.dir/src/util + build CMakeFiles/FinalProject.dir/src/world/chunk/storage.cpp.o: CXX_COMPILER__FinalProject_Release /home/brett/Documents/Brock/CS$ 3P98/Final$ Project/src/world/chunk/storage.cpp || cmake_object_order_depends_target_FinalProject DEP_FILE = CMakeFiles/FinalProject.dir/src/world/chunk/storage.cpp.o.d FLAGS = -O3 -DNDEBUG -fdiagnostics-color=always -std=gnu++17 @@ -120,7 +134,7 @@ build CMakeFiles/FinalProject.dir/src/world/registry.cpp.o: CXX_COMPILER__FinalP ############################################# # Link the executable FinalProject -build FinalProject: CXX_EXECUTABLE_LINKER__FinalProject_Release CMakeFiles/FinalProject.dir/src/main.cpp.o CMakeFiles/FinalProject.dir/src/render/camera.cpp.o CMakeFiles/FinalProject.dir/src/render/gl.cpp.o CMakeFiles/FinalProject.dir/src/render/ui/debug.cpp.o CMakeFiles/FinalProject.dir/src/render/ui/text.cpp.o CMakeFiles/FinalProject.dir/src/render/window.cpp.o CMakeFiles/FinalProject.dir/src/world/chunk/storage.cpp.o CMakeFiles/FinalProject.dir/src/world/chunk/world.cpp.o CMakeFiles/FinalProject.dir/src/world/registry.cpp.o | libraries/BLT/libBLT.a libraries/freetype-2.13.0/libfreetype.a libraries/glfw-3.3.8/src/libglfw3.a /usr/lib/x86_64-linux-gnu/libz.so /usr/lib/x86_64-linux-gnu/libz.so /usr/lib/x86_64-linux-gnu/libpng.so /usr/lib/x86_64-linux-gnu/libz.so /usr/lib/x86_64-linux-gnu/libpng.so /usr/lib/x86_64-linux-gnu/libharfbuzz.so /usr/lib/x86_64-linux-gnu/libbrotlidec.so /usr/lib/x86_64-linux-gnu/librt.a /usr/lib/x86_64-linux-gnu/libm.so /usr/lib/x86_64-linux-gnu/libX11.so || libraries/BLT/libBLT.a libraries/freetype-2.13.0/libfreetype.a libraries/glfw-3.3.8/src/libglfw3.a +build FinalProject: CXX_EXECUTABLE_LINKER__FinalProject_Release CMakeFiles/FinalProject.dir/src/main.cpp.o CMakeFiles/FinalProject.dir/src/render/camera.cpp.o CMakeFiles/FinalProject.dir/src/render/gl.cpp.o CMakeFiles/FinalProject.dir/src/render/textures.cpp.o CMakeFiles/FinalProject.dir/src/render/ui/debug.cpp.o CMakeFiles/FinalProject.dir/src/render/ui/text.cpp.o CMakeFiles/FinalProject.dir/src/render/window.cpp.o CMakeFiles/FinalProject.dir/src/util/settings.cpp.o CMakeFiles/FinalProject.dir/src/world/chunk/storage.cpp.o CMakeFiles/FinalProject.dir/src/world/chunk/world.cpp.o CMakeFiles/FinalProject.dir/src/world/registry.cpp.o | libraries/BLT/libBLT.a libraries/freetype-2.13.0/libfreetype.a libraries/glfw-3.3.8/src/libglfw3.a /usr/lib/x86_64-linux-gnu/libz.so /usr/lib/x86_64-linux-gnu/libz.so /usr/lib/x86_64-linux-gnu/libpng.so /usr/lib/x86_64-linux-gnu/libz.so /usr/lib/x86_64-linux-gnu/libpng.so /usr/lib/x86_64-linux-gnu/libharfbuzz.so /usr/lib/x86_64-linux-gnu/libbrotlidec.so /usr/lib/x86_64-linux-gnu/librt.a /usr/lib/x86_64-linux-gnu/libm.so /usr/lib/x86_64-linux-gnu/libX11.so || libraries/BLT/libBLT.a libraries/freetype-2.13.0/libfreetype.a libraries/glfw-3.3.8/src/libglfw3.a FLAGS = -O3 -DNDEBUG LINK_FLAGS = -rdynamic LINK_LIBRARIES = libraries/BLT/libBLT.a libraries/freetype-2.13.0/libfreetype.a libraries/glfw-3.3.8/src/libglfw3.a /usr/lib/x86_64-linux-gnu/libz.so -lz -lpng -lz -lpng -lharfbuzz -lbrotlidec -Wl,-Bstatic -lrt -Wl,-Bdynamic -lm -ldl -lX11 @@ -135,7 +149,7 @@ build FinalProject: CXX_EXECUTABLE_LINKER__FinalProject_Release CMakeFiles/Final # Utility command for package build CMakeFiles/package.util: CUSTOM_COMMAND all - COMMAND = cd "/home/brett/Documents/Brock/CS 3P98/Final Project/cmake-build-release" && /opt/netbrains/clion/clion-2022.1.3/bin/cmake/linux/bin/cpack --config ./CPackConfig.cmake + COMMAND = cd "/home/brett/Documents/Brock/CS 3P98/Final Project/cmake-build-release" && /opt/netbrains/clion/clion-2022.1.3/bin/cmake/linux/x64/bin/cpack --config ./CPackConfig.cmake DESC = Run CPack packaging tool... pool = console restat = 1 @@ -147,7 +161,7 @@ build package: phony CMakeFiles/package.util # Utility command for package_source build CMakeFiles/package_source.util: CUSTOM_COMMAND - COMMAND = cd "/home/brett/Documents/Brock/CS 3P98/Final Project/cmake-build-release" && /opt/netbrains/clion/clion-2022.1.3/bin/cmake/linux/bin/cpack --config ./CPackSourceConfig.cmake /home/brett/Documents/Brock/CS\ 3P98/Final\ Project/cmake-build-release/CPackSourceConfig.cmake + COMMAND = cd "/home/brett/Documents/Brock/CS 3P98/Final Project/cmake-build-release" && /opt/netbrains/clion/clion-2022.1.3/bin/cmake/linux/x64/bin/cpack --config ./CPackSourceConfig.cmake /home/brett/Documents/Brock/CS\ 3P98/Final\ Project/cmake-build-release/CPackSourceConfig.cmake DESC = Run CPack packaging tool for source... pool = console restat = 1 @@ -159,7 +173,7 @@ build package_source: phony CMakeFiles/package_source.util # Utility command for edit_cache build CMakeFiles/edit_cache.util: CUSTOM_COMMAND - COMMAND = cd "/home/brett/Documents/Brock/CS 3P98/Final Project/cmake-build-release" && /opt/netbrains/clion/clion-2022.1.3/bin/cmake/linux/bin/cmake -E echo No\ interactive\ CMake\ dialog\ available. + COMMAND = cd "/home/brett/Documents/Brock/CS 3P98/Final Project/cmake-build-release" && /opt/netbrains/clion/clion-2022.1.3/bin/cmake/linux/x64/bin/cmake -E echo No\ interactive\ CMake\ dialog\ available. DESC = No interactive CMake dialog available... restat = 1 @@ -170,7 +184,7 @@ build edit_cache: phony CMakeFiles/edit_cache.util # Utility command for rebuild_cache build CMakeFiles/rebuild_cache.util: CUSTOM_COMMAND - COMMAND = cd "/home/brett/Documents/Brock/CS 3P98/Final Project/cmake-build-release" && /opt/netbrains/clion/clion-2022.1.3/bin/cmake/linux/bin/cmake --regenerate-during-build -S"/home/brett/Documents/Brock/CS 3P98/Final Project" -B"/home/brett/Documents/Brock/CS 3P98/Final Project/cmake-build-release" + COMMAND = cd "/home/brett/Documents/Brock/CS 3P98/Final Project/cmake-build-release" && /opt/netbrains/clion/clion-2022.1.3/bin/cmake/linux/x64/bin/cmake --regenerate-during-build -S"/home/brett/Documents/Brock/CS 3P98/Final Project" -B"/home/brett/Documents/Brock/CS 3P98/Final Project/cmake-build-release" DESC = Running CMake to regenerate build system... pool = console restat = 1 @@ -188,7 +202,7 @@ build list_install_components: phony # Utility command for install build CMakeFiles/install.util: CUSTOM_COMMAND all - COMMAND = cd "/home/brett/Documents/Brock/CS 3P98/Final Project/cmake-build-release" && /opt/netbrains/clion/clion-2022.1.3/bin/cmake/linux/bin/cmake -P cmake_install.cmake + COMMAND = cd "/home/brett/Documents/Brock/CS 3P98/Final Project/cmake-build-release" && /opt/netbrains/clion/clion-2022.1.3/bin/cmake/linux/x64/bin/cmake -P cmake_install.cmake DESC = Install the project... pool = console restat = 1 @@ -200,7 +214,7 @@ build install: phony CMakeFiles/install.util # Utility command for install/local build CMakeFiles/install/local.util: CUSTOM_COMMAND all - COMMAND = cd "/home/brett/Documents/Brock/CS 3P98/Final Project/cmake-build-release" && /opt/netbrains/clion/clion-2022.1.3/bin/cmake/linux/bin/cmake -DCMAKE_INSTALL_LOCAL_ONLY=1 -P cmake_install.cmake + COMMAND = cd "/home/brett/Documents/Brock/CS 3P98/Final Project/cmake-build-release" && /opt/netbrains/clion/clion-2022.1.3/bin/cmake/linux/x64/bin/cmake -DCMAKE_INSTALL_LOCAL_ONLY=1 -P cmake_install.cmake DESC = Installing only the local directory... pool = console restat = 1 @@ -212,7 +226,7 @@ build install/local: phony CMakeFiles/install/local.util # Utility command for install/strip build CMakeFiles/install/strip.util: CUSTOM_COMMAND all - COMMAND = cd "/home/brett/Documents/Brock/CS 3P98/Final Project/cmake-build-release" && /opt/netbrains/clion/clion-2022.1.3/bin/cmake/linux/bin/cmake -DCMAKE_INSTALL_DO_STRIP=1 -P cmake_install.cmake + COMMAND = cd "/home/brett/Documents/Brock/CS 3P98/Final Project/cmake-build-release" && /opt/netbrains/clion/clion-2022.1.3/bin/cmake/linux/x64/bin/cmake -DCMAKE_INSTALL_DO_STRIP=1 -P cmake_install.cmake DESC = Installing the project stripped... pool = console restat = 1 @@ -235,7 +249,7 @@ build libraries/glfw-3.3.8/uninstall: phony libraries/glfw-3.3.8/CMakeFiles/unin # Utility command for package build libraries/glfw-3.3.8/CMakeFiles/package.util: CUSTOM_COMMAND libraries/glfw-3.3.8/all - COMMAND = cd "/home/brett/Documents/Brock/CS 3P98/Final Project/cmake-build-release" && /opt/netbrains/clion/clion-2022.1.3/bin/cmake/linux/bin/cpack --config ./CPackConfig.cmake + COMMAND = cd "/home/brett/Documents/Brock/CS 3P98/Final Project/cmake-build-release" && /opt/netbrains/clion/clion-2022.1.3/bin/cmake/linux/x64/bin/cpack --config ./CPackConfig.cmake DESC = Run CPack packaging tool... pool = console restat = 1 @@ -247,7 +261,7 @@ build libraries/glfw-3.3.8/package: phony libraries/glfw-3.3.8/CMakeFiles/packag # Utility command for package_source build libraries/glfw-3.3.8/CMakeFiles/package_source.util: CUSTOM_COMMAND - COMMAND = cd "/home/brett/Documents/Brock/CS 3P98/Final Project/cmake-build-release" && /opt/netbrains/clion/clion-2022.1.3/bin/cmake/linux/bin/cpack --config ./CPackSourceConfig.cmake /home/brett/Documents/Brock/CS\ 3P98/Final\ Project/cmake-build-release/CPackSourceConfig.cmake + COMMAND = cd "/home/brett/Documents/Brock/CS 3P98/Final Project/cmake-build-release" && /opt/netbrains/clion/clion-2022.1.3/bin/cmake/linux/x64/bin/cpack --config ./CPackSourceConfig.cmake /home/brett/Documents/Brock/CS\ 3P98/Final\ Project/cmake-build-release/CPackSourceConfig.cmake DESC = Run CPack packaging tool for source... pool = console restat = 1 @@ -259,7 +273,7 @@ build libraries/glfw-3.3.8/package_source: phony libraries/glfw-3.3.8/CMakeFiles # Utility command for edit_cache build libraries/glfw-3.3.8/CMakeFiles/edit_cache.util: CUSTOM_COMMAND - COMMAND = cd "/home/brett/Documents/Brock/CS 3P98/Final Project/cmake-build-release/libraries/glfw-3.3.8" && /opt/netbrains/clion/clion-2022.1.3/bin/cmake/linux/bin/cmake -E echo No\ interactive\ CMake\ dialog\ available. + COMMAND = cd "/home/brett/Documents/Brock/CS 3P98/Final Project/cmake-build-release/libraries/glfw-3.3.8" && /opt/netbrains/clion/clion-2022.1.3/bin/cmake/linux/x64/bin/cmake -E echo No\ interactive\ CMake\ dialog\ available. DESC = No interactive CMake dialog available... restat = 1 @@ -270,7 +284,7 @@ build libraries/glfw-3.3.8/edit_cache: phony libraries/glfw-3.3.8/CMakeFiles/edi # Utility command for rebuild_cache build libraries/glfw-3.3.8/CMakeFiles/rebuild_cache.util: CUSTOM_COMMAND - COMMAND = cd "/home/brett/Documents/Brock/CS 3P98/Final Project/cmake-build-release/libraries/glfw-3.3.8" && /opt/netbrains/clion/clion-2022.1.3/bin/cmake/linux/bin/cmake --regenerate-during-build -S"/home/brett/Documents/Brock/CS 3P98/Final Project" -B"/home/brett/Documents/Brock/CS 3P98/Final Project/cmake-build-release" + COMMAND = cd "/home/brett/Documents/Brock/CS 3P98/Final Project/cmake-build-release/libraries/glfw-3.3.8" && /opt/netbrains/clion/clion-2022.1.3/bin/cmake/linux/x64/bin/cmake --regenerate-during-build -S"/home/brett/Documents/Brock/CS 3P98/Final Project" -B"/home/brett/Documents/Brock/CS 3P98/Final Project/cmake-build-release" DESC = Running CMake to regenerate build system... pool = console restat = 1 @@ -288,7 +302,7 @@ build libraries/glfw-3.3.8/list_install_components: phony # Utility command for install build libraries/glfw-3.3.8/CMakeFiles/install.util: CUSTOM_COMMAND libraries/glfw-3.3.8/all - COMMAND = cd "/home/brett/Documents/Brock/CS 3P98/Final Project/cmake-build-release/libraries/glfw-3.3.8" && /opt/netbrains/clion/clion-2022.1.3/bin/cmake/linux/bin/cmake -P cmake_install.cmake + COMMAND = cd "/home/brett/Documents/Brock/CS 3P98/Final Project/cmake-build-release/libraries/glfw-3.3.8" && /opt/netbrains/clion/clion-2022.1.3/bin/cmake/linux/x64/bin/cmake -P cmake_install.cmake DESC = Install the project... pool = console restat = 1 @@ -300,7 +314,7 @@ build libraries/glfw-3.3.8/install: phony libraries/glfw-3.3.8/CMakeFiles/instal # Utility command for install/local build libraries/glfw-3.3.8/CMakeFiles/install/local.util: CUSTOM_COMMAND libraries/glfw-3.3.8/all - COMMAND = cd "/home/brett/Documents/Brock/CS 3P98/Final Project/cmake-build-release/libraries/glfw-3.3.8" && /opt/netbrains/clion/clion-2022.1.3/bin/cmake/linux/bin/cmake -DCMAKE_INSTALL_LOCAL_ONLY=1 -P cmake_install.cmake + COMMAND = cd "/home/brett/Documents/Brock/CS 3P98/Final Project/cmake-build-release/libraries/glfw-3.3.8" && /opt/netbrains/clion/clion-2022.1.3/bin/cmake/linux/x64/bin/cmake -DCMAKE_INSTALL_LOCAL_ONLY=1 -P cmake_install.cmake DESC = Installing only the local directory... pool = console restat = 1 @@ -312,7 +326,7 @@ build libraries/glfw-3.3.8/install/local: phony libraries/glfw-3.3.8/CMakeFiles/ # Utility command for install/strip build libraries/glfw-3.3.8/CMakeFiles/install/strip.util: CUSTOM_COMMAND libraries/glfw-3.3.8/all - COMMAND = cd "/home/brett/Documents/Brock/CS 3P98/Final Project/cmake-build-release/libraries/glfw-3.3.8" && /opt/netbrains/clion/clion-2022.1.3/bin/cmake/linux/bin/cmake -DCMAKE_INSTALL_DO_STRIP=1 -P cmake_install.cmake + COMMAND = cd "/home/brett/Documents/Brock/CS 3P98/Final Project/cmake-build-release/libraries/glfw-3.3.8" && /opt/netbrains/clion/clion-2022.1.3/bin/cmake/linux/x64/bin/cmake -DCMAKE_INSTALL_DO_STRIP=1 -P cmake_install.cmake DESC = Installing the project stripped... pool = console restat = 1 @@ -324,7 +338,7 @@ build libraries/glfw-3.3.8/install/strip: phony libraries/glfw-3.3.8/CMakeFiles/ # Custom command for libraries/glfw-3.3.8/CMakeFiles/uninstall build libraries/glfw-3.3.8/CMakeFiles/uninstall | ${cmake_ninja_workdir}libraries/glfw-3.3.8/CMakeFiles/uninstall: CUSTOM_COMMAND - COMMAND = cd "/home/brett/Documents/Brock/CS 3P98/Final Project/cmake-build-release/libraries/glfw-3.3.8" && /opt/netbrains/clion/clion-2022.1.3/bin/cmake/linux/bin/cmake -P /home/brett/Documents/Brock/CS\ 3P98/Final\ Project/cmake-build-release/libraries/glfw-3.3.8/cmake_uninstall.cmake + COMMAND = cd "/home/brett/Documents/Brock/CS 3P98/Final Project/cmake-build-release/libraries/glfw-3.3.8" && /opt/netbrains/clion/clion-2022.1.3/bin/cmake/linux/x64/bin/cmake -P /home/brett/Documents/Brock/CS\ 3P98/Final\ Project/cmake-build-release/libraries/glfw-3.3.8/cmake_uninstall.cmake # ============================================================================= # Write statements declared in CMakeLists.txt: @@ -495,7 +509,7 @@ build libraries/glfw-3.3.8/src/libglfw3.a: C_STATIC_LIBRARY_LINKER__glfw_Release # Utility command for package build libraries/glfw-3.3.8/src/CMakeFiles/package.util: CUSTOM_COMMAND libraries/glfw-3.3.8/src/all - COMMAND = cd "/home/brett/Documents/Brock/CS 3P98/Final Project/cmake-build-release" && /opt/netbrains/clion/clion-2022.1.3/bin/cmake/linux/bin/cpack --config ./CPackConfig.cmake + COMMAND = cd "/home/brett/Documents/Brock/CS 3P98/Final Project/cmake-build-release" && /opt/netbrains/clion/clion-2022.1.3/bin/cmake/linux/x64/bin/cpack --config ./CPackConfig.cmake DESC = Run CPack packaging tool... pool = console restat = 1 @@ -507,7 +521,7 @@ build libraries/glfw-3.3.8/src/package: phony libraries/glfw-3.3.8/src/CMakeFile # Utility command for package_source build libraries/glfw-3.3.8/src/CMakeFiles/package_source.util: CUSTOM_COMMAND - COMMAND = cd "/home/brett/Documents/Brock/CS 3P98/Final Project/cmake-build-release" && /opt/netbrains/clion/clion-2022.1.3/bin/cmake/linux/bin/cpack --config ./CPackSourceConfig.cmake /home/brett/Documents/Brock/CS\ 3P98/Final\ Project/cmake-build-release/CPackSourceConfig.cmake + COMMAND = cd "/home/brett/Documents/Brock/CS 3P98/Final Project/cmake-build-release" && /opt/netbrains/clion/clion-2022.1.3/bin/cmake/linux/x64/bin/cpack --config ./CPackSourceConfig.cmake /home/brett/Documents/Brock/CS\ 3P98/Final\ Project/cmake-build-release/CPackSourceConfig.cmake DESC = Run CPack packaging tool for source... pool = console restat = 1 @@ -519,7 +533,7 @@ build libraries/glfw-3.3.8/src/package_source: phony libraries/glfw-3.3.8/src/CM # Utility command for edit_cache build libraries/glfw-3.3.8/src/CMakeFiles/edit_cache.util: CUSTOM_COMMAND - COMMAND = cd "/home/brett/Documents/Brock/CS 3P98/Final Project/cmake-build-release/libraries/glfw-3.3.8/src" && /opt/netbrains/clion/clion-2022.1.3/bin/cmake/linux/bin/cmake -E echo No\ interactive\ CMake\ dialog\ available. + COMMAND = cd "/home/brett/Documents/Brock/CS 3P98/Final Project/cmake-build-release/libraries/glfw-3.3.8/src" && /opt/netbrains/clion/clion-2022.1.3/bin/cmake/linux/x64/bin/cmake -E echo No\ interactive\ CMake\ dialog\ available. DESC = No interactive CMake dialog available... restat = 1 @@ -530,7 +544,7 @@ build libraries/glfw-3.3.8/src/edit_cache: phony libraries/glfw-3.3.8/src/CMakeF # Utility command for rebuild_cache build libraries/glfw-3.3.8/src/CMakeFiles/rebuild_cache.util: CUSTOM_COMMAND - COMMAND = cd "/home/brett/Documents/Brock/CS 3P98/Final Project/cmake-build-release/libraries/glfw-3.3.8/src" && /opt/netbrains/clion/clion-2022.1.3/bin/cmake/linux/bin/cmake --regenerate-during-build -S"/home/brett/Documents/Brock/CS 3P98/Final Project" -B"/home/brett/Documents/Brock/CS 3P98/Final Project/cmake-build-release" + COMMAND = cd "/home/brett/Documents/Brock/CS 3P98/Final Project/cmake-build-release/libraries/glfw-3.3.8/src" && /opt/netbrains/clion/clion-2022.1.3/bin/cmake/linux/x64/bin/cmake --regenerate-during-build -S"/home/brett/Documents/Brock/CS 3P98/Final Project" -B"/home/brett/Documents/Brock/CS 3P98/Final Project/cmake-build-release" DESC = Running CMake to regenerate build system... pool = console restat = 1 @@ -548,7 +562,7 @@ build libraries/glfw-3.3.8/src/list_install_components: phony # Utility command for install build libraries/glfw-3.3.8/src/CMakeFiles/install.util: CUSTOM_COMMAND libraries/glfw-3.3.8/src/all - COMMAND = cd "/home/brett/Documents/Brock/CS 3P98/Final Project/cmake-build-release/libraries/glfw-3.3.8/src" && /opt/netbrains/clion/clion-2022.1.3/bin/cmake/linux/bin/cmake -P cmake_install.cmake + COMMAND = cd "/home/brett/Documents/Brock/CS 3P98/Final Project/cmake-build-release/libraries/glfw-3.3.8/src" && /opt/netbrains/clion/clion-2022.1.3/bin/cmake/linux/x64/bin/cmake -P cmake_install.cmake DESC = Install the project... pool = console restat = 1 @@ -560,7 +574,7 @@ build libraries/glfw-3.3.8/src/install: phony libraries/glfw-3.3.8/src/CMakeFile # Utility command for install/local build libraries/glfw-3.3.8/src/CMakeFiles/install/local.util: CUSTOM_COMMAND libraries/glfw-3.3.8/src/all - COMMAND = cd "/home/brett/Documents/Brock/CS 3P98/Final Project/cmake-build-release/libraries/glfw-3.3.8/src" && /opt/netbrains/clion/clion-2022.1.3/bin/cmake/linux/bin/cmake -DCMAKE_INSTALL_LOCAL_ONLY=1 -P cmake_install.cmake + COMMAND = cd "/home/brett/Documents/Brock/CS 3P98/Final Project/cmake-build-release/libraries/glfw-3.3.8/src" && /opt/netbrains/clion/clion-2022.1.3/bin/cmake/linux/x64/bin/cmake -DCMAKE_INSTALL_LOCAL_ONLY=1 -P cmake_install.cmake DESC = Installing only the local directory... pool = console restat = 1 @@ -572,7 +586,7 @@ build libraries/glfw-3.3.8/src/install/local: phony libraries/glfw-3.3.8/src/CMa # Utility command for install/strip build libraries/glfw-3.3.8/src/CMakeFiles/install/strip.util: CUSTOM_COMMAND libraries/glfw-3.3.8/src/all - COMMAND = cd "/home/brett/Documents/Brock/CS 3P98/Final Project/cmake-build-release/libraries/glfw-3.3.8/src" && /opt/netbrains/clion/clion-2022.1.3/bin/cmake/linux/bin/cmake -DCMAKE_INSTALL_DO_STRIP=1 -P cmake_install.cmake + COMMAND = cd "/home/brett/Documents/Brock/CS 3P98/Final Project/cmake-build-release/libraries/glfw-3.3.8/src" && /opt/netbrains/clion/clion-2022.1.3/bin/cmake/linux/x64/bin/cmake -DCMAKE_INSTALL_DO_STRIP=1 -P cmake_install.cmake DESC = Installing the project stripped... pool = console restat = 1 @@ -584,7 +598,7 @@ build libraries/glfw-3.3.8/src/install/strip: phony libraries/glfw-3.3.8/src/CMa # Custom command for libraries/glfw-3.3.8/src/CMakeFiles/update_mappings build libraries/glfw-3.3.8/src/CMakeFiles/update_mappings | ${cmake_ninja_workdir}libraries/glfw-3.3.8/src/CMakeFiles/update_mappings: CUSTOM_COMMAND - COMMAND = cd "/home/brett/Documents/Brock/CS 3P98/Final Project/libraries/glfw-3.3.8/src" && /opt/netbrains/clion/clion-2022.1.3/bin/cmake/linux/bin/cmake -P "/home/brett/Documents/Brock/CS 3P98/Final Project/libraries/glfw-3.3.8/CMake/GenerateMappings.cmake" mappings.h.in mappings.h + COMMAND = cd "/home/brett/Documents/Brock/CS 3P98/Final Project/libraries/glfw-3.3.8/src" && /opt/netbrains/clion/clion-2022.1.3/bin/cmake/linux/x64/bin/cmake -P "/home/brett/Documents/Brock/CS 3P98/Final Project/libraries/glfw-3.3.8/CMake/GenerateMappings.cmake" mappings.h.in mappings.h DESC = Updating gamepad mappings from upstream repository # ============================================================================= @@ -678,7 +692,7 @@ build libraries/BLT/libBLT.a: CXX_STATIC_LIBRARY_LINKER__BLT_Release libraries/B # Utility command for package build libraries/BLT/CMakeFiles/package.util: CUSTOM_COMMAND libraries/BLT/all - COMMAND = cd "/home/brett/Documents/Brock/CS 3P98/Final Project/cmake-build-release" && /opt/netbrains/clion/clion-2022.1.3/bin/cmake/linux/bin/cpack --config ./CPackConfig.cmake + COMMAND = cd "/home/brett/Documents/Brock/CS 3P98/Final Project/cmake-build-release" && /opt/netbrains/clion/clion-2022.1.3/bin/cmake/linux/x64/bin/cpack --config ./CPackConfig.cmake DESC = Run CPack packaging tool... pool = console restat = 1 @@ -690,7 +704,7 @@ build libraries/BLT/package: phony libraries/BLT/CMakeFiles/package.util # Utility command for package_source build libraries/BLT/CMakeFiles/package_source.util: CUSTOM_COMMAND - COMMAND = cd "/home/brett/Documents/Brock/CS 3P98/Final Project/cmake-build-release" && /opt/netbrains/clion/clion-2022.1.3/bin/cmake/linux/bin/cpack --config ./CPackSourceConfig.cmake /home/brett/Documents/Brock/CS\ 3P98/Final\ Project/cmake-build-release/CPackSourceConfig.cmake + COMMAND = cd "/home/brett/Documents/Brock/CS 3P98/Final Project/cmake-build-release" && /opt/netbrains/clion/clion-2022.1.3/bin/cmake/linux/x64/bin/cpack --config ./CPackSourceConfig.cmake /home/brett/Documents/Brock/CS\ 3P98/Final\ Project/cmake-build-release/CPackSourceConfig.cmake DESC = Run CPack packaging tool for source... pool = console restat = 1 @@ -702,7 +716,7 @@ build libraries/BLT/package_source: phony libraries/BLT/CMakeFiles/package_sourc # Utility command for edit_cache build libraries/BLT/CMakeFiles/edit_cache.util: CUSTOM_COMMAND - COMMAND = cd "/home/brett/Documents/Brock/CS 3P98/Final Project/cmake-build-release/libraries/BLT" && /opt/netbrains/clion/clion-2022.1.3/bin/cmake/linux/bin/cmake -E echo No\ interactive\ CMake\ dialog\ available. + COMMAND = cd "/home/brett/Documents/Brock/CS 3P98/Final Project/cmake-build-release/libraries/BLT" && /opt/netbrains/clion/clion-2022.1.3/bin/cmake/linux/x64/bin/cmake -E echo No\ interactive\ CMake\ dialog\ available. DESC = No interactive CMake dialog available... restat = 1 @@ -713,7 +727,7 @@ build libraries/BLT/edit_cache: phony libraries/BLT/CMakeFiles/edit_cache.util # Utility command for rebuild_cache build libraries/BLT/CMakeFiles/rebuild_cache.util: CUSTOM_COMMAND - COMMAND = cd "/home/brett/Documents/Brock/CS 3P98/Final Project/cmake-build-release/libraries/BLT" && /opt/netbrains/clion/clion-2022.1.3/bin/cmake/linux/bin/cmake --regenerate-during-build -S"/home/brett/Documents/Brock/CS 3P98/Final Project" -B"/home/brett/Documents/Brock/CS 3P98/Final Project/cmake-build-release" + COMMAND = cd "/home/brett/Documents/Brock/CS 3P98/Final Project/cmake-build-release/libraries/BLT" && /opt/netbrains/clion/clion-2022.1.3/bin/cmake/linux/x64/bin/cmake --regenerate-during-build -S"/home/brett/Documents/Brock/CS 3P98/Final Project" -B"/home/brett/Documents/Brock/CS 3P98/Final Project/cmake-build-release" DESC = Running CMake to regenerate build system... pool = console restat = 1 @@ -731,7 +745,7 @@ build libraries/BLT/list_install_components: phony # Utility command for install build libraries/BLT/CMakeFiles/install.util: CUSTOM_COMMAND libraries/BLT/all - COMMAND = cd "/home/brett/Documents/Brock/CS 3P98/Final Project/cmake-build-release/libraries/BLT" && /opt/netbrains/clion/clion-2022.1.3/bin/cmake/linux/bin/cmake -P cmake_install.cmake + COMMAND = cd "/home/brett/Documents/Brock/CS 3P98/Final Project/cmake-build-release/libraries/BLT" && /opt/netbrains/clion/clion-2022.1.3/bin/cmake/linux/x64/bin/cmake -P cmake_install.cmake DESC = Install the project... pool = console restat = 1 @@ -743,7 +757,7 @@ build libraries/BLT/install: phony libraries/BLT/CMakeFiles/install.util # Utility command for install/local build libraries/BLT/CMakeFiles/install/local.util: CUSTOM_COMMAND libraries/BLT/all - COMMAND = cd "/home/brett/Documents/Brock/CS 3P98/Final Project/cmake-build-release/libraries/BLT" && /opt/netbrains/clion/clion-2022.1.3/bin/cmake/linux/bin/cmake -DCMAKE_INSTALL_LOCAL_ONLY=1 -P cmake_install.cmake + COMMAND = cd "/home/brett/Documents/Brock/CS 3P98/Final Project/cmake-build-release/libraries/BLT" && /opt/netbrains/clion/clion-2022.1.3/bin/cmake/linux/x64/bin/cmake -DCMAKE_INSTALL_LOCAL_ONLY=1 -P cmake_install.cmake DESC = Installing only the local directory... pool = console restat = 1 @@ -755,7 +769,7 @@ build libraries/BLT/install/local: phony libraries/BLT/CMakeFiles/install/local. # Utility command for install/strip build libraries/BLT/CMakeFiles/install/strip.util: CUSTOM_COMMAND libraries/BLT/all - COMMAND = cd "/home/brett/Documents/Brock/CS 3P98/Final Project/cmake-build-release/libraries/BLT" && /opt/netbrains/clion/clion-2022.1.3/bin/cmake/linux/bin/cmake -DCMAKE_INSTALL_DO_STRIP=1 -P cmake_install.cmake + COMMAND = cd "/home/brett/Documents/Brock/CS 3P98/Final Project/cmake-build-release/libraries/BLT" && /opt/netbrains/clion/clion-2022.1.3/bin/cmake/linux/x64/bin/cmake -DCMAKE_INSTALL_DO_STRIP=1 -P cmake_install.cmake DESC = Installing the project stripped... pool = console restat = 1 @@ -1133,7 +1147,7 @@ build libraries/freetype-2.13.0/libfreetype.a: C_STATIC_LIBRARY_LINKER__freetype # Utility command for package build libraries/freetype-2.13.0/CMakeFiles/package.util: CUSTOM_COMMAND libraries/freetype-2.13.0/all - COMMAND = cd "/home/brett/Documents/Brock/CS 3P98/Final Project/cmake-build-release" && /opt/netbrains/clion/clion-2022.1.3/bin/cmake/linux/bin/cpack --config ./CPackConfig.cmake + COMMAND = cd "/home/brett/Documents/Brock/CS 3P98/Final Project/cmake-build-release" && /opt/netbrains/clion/clion-2022.1.3/bin/cmake/linux/x64/bin/cpack --config ./CPackConfig.cmake DESC = Run CPack packaging tool... pool = console restat = 1 @@ -1145,7 +1159,7 @@ build libraries/freetype-2.13.0/package: phony libraries/freetype-2.13.0/CMakeFi # Utility command for package_source build libraries/freetype-2.13.0/CMakeFiles/package_source.util: CUSTOM_COMMAND - COMMAND = cd "/home/brett/Documents/Brock/CS 3P98/Final Project/cmake-build-release" && /opt/netbrains/clion/clion-2022.1.3/bin/cmake/linux/bin/cpack --config ./CPackSourceConfig.cmake /home/brett/Documents/Brock/CS\ 3P98/Final\ Project/cmake-build-release/CPackSourceConfig.cmake + COMMAND = cd "/home/brett/Documents/Brock/CS 3P98/Final Project/cmake-build-release" && /opt/netbrains/clion/clion-2022.1.3/bin/cmake/linux/x64/bin/cpack --config ./CPackSourceConfig.cmake /home/brett/Documents/Brock/CS\ 3P98/Final\ Project/cmake-build-release/CPackSourceConfig.cmake DESC = Run CPack packaging tool for source... pool = console restat = 1 @@ -1157,7 +1171,7 @@ build libraries/freetype-2.13.0/package_source: phony libraries/freetype-2.13.0/ # Utility command for edit_cache build libraries/freetype-2.13.0/CMakeFiles/edit_cache.util: CUSTOM_COMMAND - COMMAND = cd "/home/brett/Documents/Brock/CS 3P98/Final Project/cmake-build-release/libraries/freetype-2.13.0" && /opt/netbrains/clion/clion-2022.1.3/bin/cmake/linux/bin/cmake -E echo No\ interactive\ CMake\ dialog\ available. + COMMAND = cd "/home/brett/Documents/Brock/CS 3P98/Final Project/cmake-build-release/libraries/freetype-2.13.0" && /opt/netbrains/clion/clion-2022.1.3/bin/cmake/linux/x64/bin/cmake -E echo No\ interactive\ CMake\ dialog\ available. DESC = No interactive CMake dialog available... restat = 1 @@ -1168,7 +1182,7 @@ build libraries/freetype-2.13.0/edit_cache: phony libraries/freetype-2.13.0/CMak # Utility command for rebuild_cache build libraries/freetype-2.13.0/CMakeFiles/rebuild_cache.util: CUSTOM_COMMAND - COMMAND = cd "/home/brett/Documents/Brock/CS 3P98/Final Project/cmake-build-release/libraries/freetype-2.13.0" && /opt/netbrains/clion/clion-2022.1.3/bin/cmake/linux/bin/cmake --regenerate-during-build -S"/home/brett/Documents/Brock/CS 3P98/Final Project" -B"/home/brett/Documents/Brock/CS 3P98/Final Project/cmake-build-release" + COMMAND = cd "/home/brett/Documents/Brock/CS 3P98/Final Project/cmake-build-release/libraries/freetype-2.13.0" && /opt/netbrains/clion/clion-2022.1.3/bin/cmake/linux/x64/bin/cmake --regenerate-during-build -S"/home/brett/Documents/Brock/CS 3P98/Final Project" -B"/home/brett/Documents/Brock/CS 3P98/Final Project/cmake-build-release" DESC = Running CMake to regenerate build system... pool = console restat = 1 @@ -1186,7 +1200,7 @@ build libraries/freetype-2.13.0/list_install_components: phony # Utility command for install build libraries/freetype-2.13.0/CMakeFiles/install.util: CUSTOM_COMMAND libraries/freetype-2.13.0/all - COMMAND = cd "/home/brett/Documents/Brock/CS 3P98/Final Project/cmake-build-release/libraries/freetype-2.13.0" && /opt/netbrains/clion/clion-2022.1.3/bin/cmake/linux/bin/cmake -P cmake_install.cmake + COMMAND = cd "/home/brett/Documents/Brock/CS 3P98/Final Project/cmake-build-release/libraries/freetype-2.13.0" && /opt/netbrains/clion/clion-2022.1.3/bin/cmake/linux/x64/bin/cmake -P cmake_install.cmake DESC = Install the project... pool = console restat = 1 @@ -1198,7 +1212,7 @@ build libraries/freetype-2.13.0/install: phony libraries/freetype-2.13.0/CMakeFi # Utility command for install/local build libraries/freetype-2.13.0/CMakeFiles/install/local.util: CUSTOM_COMMAND libraries/freetype-2.13.0/all - COMMAND = cd "/home/brett/Documents/Brock/CS 3P98/Final Project/cmake-build-release/libraries/freetype-2.13.0" && /opt/netbrains/clion/clion-2022.1.3/bin/cmake/linux/bin/cmake -DCMAKE_INSTALL_LOCAL_ONLY=1 -P cmake_install.cmake + COMMAND = cd "/home/brett/Documents/Brock/CS 3P98/Final Project/cmake-build-release/libraries/freetype-2.13.0" && /opt/netbrains/clion/clion-2022.1.3/bin/cmake/linux/x64/bin/cmake -DCMAKE_INSTALL_LOCAL_ONLY=1 -P cmake_install.cmake DESC = Installing only the local directory... pool = console restat = 1 @@ -1210,7 +1224,7 @@ build libraries/freetype-2.13.0/install/local: phony libraries/freetype-2.13.0/C # Utility command for install/strip build libraries/freetype-2.13.0/CMakeFiles/install/strip.util: CUSTOM_COMMAND libraries/freetype-2.13.0/all - COMMAND = cd "/home/brett/Documents/Brock/CS 3P98/Final Project/cmake-build-release/libraries/freetype-2.13.0" && /opt/netbrains/clion/clion-2022.1.3/bin/cmake/linux/bin/cmake -DCMAKE_INSTALL_DO_STRIP=1 -P cmake_install.cmake + COMMAND = cd "/home/brett/Documents/Brock/CS 3P98/Final Project/cmake-build-release/libraries/freetype-2.13.0" && /opt/netbrains/clion/clion-2022.1.3/bin/cmake/linux/x64/bin/cmake -DCMAKE_INSTALL_DO_STRIP=1 -P cmake_install.cmake DESC = Installing the project stripped... pool = console restat = 1 @@ -1286,14 +1300,14 @@ build libraries/glfw-3.3.8/src/all: phony libraries/glfw-3.3.8/src/libglfw3.a ############################################# # Re-run CMake if any of its inputs changed. -build build.ninja: RERUN_CMAKE | /home/brett/Documents/Brock/CS$ 3P98/Final$ Project/CMakeLists.txt /home/brett/Documents/Brock/CS$ 3P98/Final$ Project/libraries/BLT/CMakeLists.txt /home/brett/Documents/Brock/CS$ 3P98/Final$ Project/libraries/BLT/include/blt/config.h.in /home/brett/Documents/Brock/CS$ 3P98/Final$ Project/libraries/freetype-2.13.0/CMakeLists.txt /home/brett/Documents/Brock/CS$ 3P98/Final$ Project/libraries/freetype-2.13.0/builds/cmake/FindBrotliDec.cmake /home/brett/Documents/Brock/CS$ 3P98/Final$ Project/libraries/freetype-2.13.0/builds/cmake/FindHarfBuzz.cmake /home/brett/Documents/Brock/CS$ 3P98/Final$ Project/libraries/glfw-3.3.8/CMakeLists.txt /home/brett/Documents/Brock/CS$ 3P98/Final$ Project/libraries/glfw-3.3.8/cmake_uninstall.cmake.in /home/brett/Documents/Brock/CS$ 3P98/Final$ Project/libraries/glfw-3.3.8/src/CMakeLists.txt /home/brett/Documents/Brock/CS$ 3P98/Final$ Project/libraries/glfw-3.3.8/src/glfw3.pc.in /home/brett/Documents/Brock/CS$ 3P98/Final$ Project/libraries/glfw-3.3.8/src/glfw3Config.cmake.in /home/brett/Documents/Brock/CS$ 3P98/Final$ Project/libraries/glfw-3.3.8/src/glfw_config.h.in /opt/netbrains/clion/clion-2022.1.3/bin/cmake/linux/share/cmake-3.24/Modules/BasicConfigVersion-SameMajorVersion.cmake.in /opt/netbrains/clion/clion-2022.1.3/bin/cmake/linux/share/cmake-3.24/Modules/CMakeCInformation.cmake /opt/netbrains/clion/clion-2022.1.3/bin/cmake/linux/share/cmake-3.24/Modules/CMakeCXXInformation.cmake /opt/netbrains/clion/clion-2022.1.3/bin/cmake/linux/share/cmake-3.24/Modules/CMakeCommonLanguageInclude.cmake /opt/netbrains/clion/clion-2022.1.3/bin/cmake/linux/share/cmake-3.24/Modules/CMakeDependentOption.cmake /opt/netbrains/clion/clion-2022.1.3/bin/cmake/linux/share/cmake-3.24/Modules/CMakeGenericSystem.cmake /opt/netbrains/clion/clion-2022.1.3/bin/cmake/linux/share/cmake-3.24/Modules/CMakeInitializeConfigs.cmake /opt/netbrains/clion/clion-2022.1.3/bin/cmake/linux/share/cmake-3.24/Modules/CMakeLanguageInformation.cmake /opt/netbrains/clion/clion-2022.1.3/bin/cmake/linux/share/cmake-3.24/Modules/CMakePackageConfigHelpers.cmake /opt/netbrains/clion/clion-2022.1.3/bin/cmake/linux/share/cmake-3.24/Modules/CMakeSystemSpecificInformation.cmake /opt/netbrains/clion/clion-2022.1.3/bin/cmake/linux/share/cmake-3.24/Modules/CMakeSystemSpecificInitialize.cmake /opt/netbrains/clion/clion-2022.1.3/bin/cmake/linux/share/cmake-3.24/Modules/CPack.cmake /opt/netbrains/clion/clion-2022.1.3/bin/cmake/linux/share/cmake-3.24/Modules/CPackComponent.cmake /opt/netbrains/clion/clion-2022.1.3/bin/cmake/linux/share/cmake-3.24/Modules/CheckCSourceCompiles.cmake /opt/netbrains/clion/clion-2022.1.3/bin/cmake/linux/share/cmake-3.24/Modules/CheckFunctionExists.cmake /opt/netbrains/clion/clion-2022.1.3/bin/cmake/linux/share/cmake-3.24/Modules/CheckIncludeFile.cmake /opt/netbrains/clion/clion-2022.1.3/bin/cmake/linux/share/cmake-3.24/Modules/CheckLibraryExists.cmake /opt/netbrains/clion/clion-2022.1.3/bin/cmake/linux/share/cmake-3.24/Modules/Compiler/CMakeCommonCompilerMacros.cmake /opt/netbrains/clion/clion-2022.1.3/bin/cmake/linux/share/cmake-3.24/Modules/Compiler/GNU-C.cmake /opt/netbrains/clion/clion-2022.1.3/bin/cmake/linux/share/cmake-3.24/Modules/Compiler/GNU-CXX.cmake /opt/netbrains/clion/clion-2022.1.3/bin/cmake/linux/share/cmake-3.24/Modules/Compiler/GNU.cmake /opt/netbrains/clion/clion-2022.1.3/bin/cmake/linux/share/cmake-3.24/Modules/FindBZip2.cmake /opt/netbrains/clion/clion-2022.1.3/bin/cmake/linux/share/cmake-3.24/Modules/FindFontconfig.cmake /opt/netbrains/clion/clion-2022.1.3/bin/cmake/linux/share/cmake-3.24/Modules/FindFreetype.cmake /opt/netbrains/clion/clion-2022.1.3/bin/cmake/linux/share/cmake-3.24/Modules/FindPNG.cmake /opt/netbrains/clion/clion-2022.1.3/bin/cmake/linux/share/cmake-3.24/Modules/FindPackageHandleStandardArgs.cmake /opt/netbrains/clion/clion-2022.1.3/bin/cmake/linux/share/cmake-3.24/Modules/FindPackageMessage.cmake /opt/netbrains/clion/clion-2022.1.3/bin/cmake/linux/share/cmake-3.24/Modules/FindPkgConfig.cmake /opt/netbrains/clion/clion-2022.1.3/bin/cmake/linux/share/cmake-3.24/Modules/FindThreads.cmake /opt/netbrains/clion/clion-2022.1.3/bin/cmake/linux/share/cmake-3.24/Modules/FindX11.cmake /opt/netbrains/clion/clion-2022.1.3/bin/cmake/linux/share/cmake-3.24/Modules/FindZLIB.cmake /opt/netbrains/clion/clion-2022.1.3/bin/cmake/linux/share/cmake-3.24/Modules/GNUInstallDirs.cmake /opt/netbrains/clion/clion-2022.1.3/bin/cmake/linux/share/cmake-3.24/Modules/Internal/CheckSourceCompiles.cmake /opt/netbrains/clion/clion-2022.1.3/bin/cmake/linux/share/cmake-3.24/Modules/Platform/Linux-GNU-C.cmake /opt/netbrains/clion/clion-2022.1.3/bin/cmake/linux/share/cmake-3.24/Modules/Platform/Linux-GNU-CXX.cmake /opt/netbrains/clion/clion-2022.1.3/bin/cmake/linux/share/cmake-3.24/Modules/Platform/Linux-GNU.cmake /opt/netbrains/clion/clion-2022.1.3/bin/cmake/linux/share/cmake-3.24/Modules/Platform/Linux.cmake /opt/netbrains/clion/clion-2022.1.3/bin/cmake/linux/share/cmake-3.24/Modules/Platform/UnixPaths.cmake /opt/netbrains/clion/clion-2022.1.3/bin/cmake/linux/share/cmake-3.24/Modules/SelectLibraryConfigurations.cmake /opt/netbrains/clion/clion-2022.1.3/bin/cmake/linux/share/cmake-3.24/Modules/WriteBasicConfigVersionFile.cmake /opt/netbrains/clion/clion-2022.1.3/bin/cmake/linux/share/cmake-3.24/Templates/CPackConfig.cmake.in CMakeCache.txt CMakeFiles/3.24.2/CMakeCCompiler.cmake CMakeFiles/3.24.2/CMakeCXXCompiler.cmake CMakeFiles/3.24.2/CMakeSystem.cmake +build build.ninja: RERUN_CMAKE | /home/brett/Documents/Brock/CS$ 3P98/Final$ Project/CMakeLists.txt /home/brett/Documents/Brock/CS$ 3P98/Final$ Project/libraries/BLT/CMakeLists.txt /home/brett/Documents/Brock/CS$ 3P98/Final$ Project/libraries/BLT/include/blt/config.h.in /home/brett/Documents/Brock/CS$ 3P98/Final$ Project/libraries/freetype-2.13.0/CMakeLists.txt /home/brett/Documents/Brock/CS$ 3P98/Final$ Project/libraries/freetype-2.13.0/builds/cmake/FindBrotliDec.cmake /home/brett/Documents/Brock/CS$ 3P98/Final$ Project/libraries/freetype-2.13.0/builds/cmake/FindHarfBuzz.cmake /home/brett/Documents/Brock/CS$ 3P98/Final$ Project/libraries/glfw-3.3.8/CMakeLists.txt /home/brett/Documents/Brock/CS$ 3P98/Final$ Project/libraries/glfw-3.3.8/cmake_uninstall.cmake.in /home/brett/Documents/Brock/CS$ 3P98/Final$ Project/libraries/glfw-3.3.8/src/CMakeLists.txt /home/brett/Documents/Brock/CS$ 3P98/Final$ Project/libraries/glfw-3.3.8/src/glfw3.pc.in /home/brett/Documents/Brock/CS$ 3P98/Final$ Project/libraries/glfw-3.3.8/src/glfw3Config.cmake.in /home/brett/Documents/Brock/CS$ 3P98/Final$ Project/libraries/glfw-3.3.8/src/glfw_config.h.in /opt/netbrains/clion/clion-2022.1.3/bin/cmake/linux/x64/share/cmake-3.24/Modules/BasicConfigVersion-SameMajorVersion.cmake.in /opt/netbrains/clion/clion-2022.1.3/bin/cmake/linux/x64/share/cmake-3.24/Modules/CMakeCInformation.cmake /opt/netbrains/clion/clion-2022.1.3/bin/cmake/linux/x64/share/cmake-3.24/Modules/CMakeCXXInformation.cmake /opt/netbrains/clion/clion-2022.1.3/bin/cmake/linux/x64/share/cmake-3.24/Modules/CMakeCommonLanguageInclude.cmake /opt/netbrains/clion/clion-2022.1.3/bin/cmake/linux/x64/share/cmake-3.24/Modules/CMakeDependentOption.cmake /opt/netbrains/clion/clion-2022.1.3/bin/cmake/linux/x64/share/cmake-3.24/Modules/CMakeGenericSystem.cmake /opt/netbrains/clion/clion-2022.1.3/bin/cmake/linux/x64/share/cmake-3.24/Modules/CMakeInitializeConfigs.cmake /opt/netbrains/clion/clion-2022.1.3/bin/cmake/linux/x64/share/cmake-3.24/Modules/CMakeLanguageInformation.cmake /opt/netbrains/clion/clion-2022.1.3/bin/cmake/linux/x64/share/cmake-3.24/Modules/CMakePackageConfigHelpers.cmake /opt/netbrains/clion/clion-2022.1.3/bin/cmake/linux/x64/share/cmake-3.24/Modules/CMakeSystemSpecificInformation.cmake /opt/netbrains/clion/clion-2022.1.3/bin/cmake/linux/x64/share/cmake-3.24/Modules/CMakeSystemSpecificInitialize.cmake /opt/netbrains/clion/clion-2022.1.3/bin/cmake/linux/x64/share/cmake-3.24/Modules/CPack.cmake /opt/netbrains/clion/clion-2022.1.3/bin/cmake/linux/x64/share/cmake-3.24/Modules/CPackComponent.cmake /opt/netbrains/clion/clion-2022.1.3/bin/cmake/linux/x64/share/cmake-3.24/Modules/CheckCSourceCompiles.cmake /opt/netbrains/clion/clion-2022.1.3/bin/cmake/linux/x64/share/cmake-3.24/Modules/CheckFunctionExists.cmake /opt/netbrains/clion/clion-2022.1.3/bin/cmake/linux/x64/share/cmake-3.24/Modules/CheckIncludeFile.cmake /opt/netbrains/clion/clion-2022.1.3/bin/cmake/linux/x64/share/cmake-3.24/Modules/CheckLibraryExists.cmake /opt/netbrains/clion/clion-2022.1.3/bin/cmake/linux/x64/share/cmake-3.24/Modules/Compiler/CMakeCommonCompilerMacros.cmake /opt/netbrains/clion/clion-2022.1.3/bin/cmake/linux/x64/share/cmake-3.24/Modules/Compiler/GNU-C.cmake /opt/netbrains/clion/clion-2022.1.3/bin/cmake/linux/x64/share/cmake-3.24/Modules/Compiler/GNU-CXX.cmake /opt/netbrains/clion/clion-2022.1.3/bin/cmake/linux/x64/share/cmake-3.24/Modules/Compiler/GNU.cmake /opt/netbrains/clion/clion-2022.1.3/bin/cmake/linux/x64/share/cmake-3.24/Modules/FindBZip2.cmake /opt/netbrains/clion/clion-2022.1.3/bin/cmake/linux/x64/share/cmake-3.24/Modules/FindFontconfig.cmake /opt/netbrains/clion/clion-2022.1.3/bin/cmake/linux/x64/share/cmake-3.24/Modules/FindFreetype.cmake /opt/netbrains/clion/clion-2022.1.3/bin/cmake/linux/x64/share/cmake-3.24/Modules/FindPNG.cmake /opt/netbrains/clion/clion-2022.1.3/bin/cmake/linux/x64/share/cmake-3.24/Modules/FindPackageHandleStandardArgs.cmake /opt/netbrains/clion/clion-2022.1.3/bin/cmake/linux/x64/share/cmake-3.24/Modules/FindPackageMessage.cmake /opt/netbrains/clion/clion-2022.1.3/bin/cmake/linux/x64/share/cmake-3.24/Modules/FindPkgConfig.cmake /opt/netbrains/clion/clion-2022.1.3/bin/cmake/linux/x64/share/cmake-3.24/Modules/FindThreads.cmake /opt/netbrains/clion/clion-2022.1.3/bin/cmake/linux/x64/share/cmake-3.24/Modules/FindX11.cmake /opt/netbrains/clion/clion-2022.1.3/bin/cmake/linux/x64/share/cmake-3.24/Modules/FindZLIB.cmake /opt/netbrains/clion/clion-2022.1.3/bin/cmake/linux/x64/share/cmake-3.24/Modules/GNUInstallDirs.cmake /opt/netbrains/clion/clion-2022.1.3/bin/cmake/linux/x64/share/cmake-3.24/Modules/Internal/CheckSourceCompiles.cmake /opt/netbrains/clion/clion-2022.1.3/bin/cmake/linux/x64/share/cmake-3.24/Modules/Platform/Linux-GNU-C.cmake /opt/netbrains/clion/clion-2022.1.3/bin/cmake/linux/x64/share/cmake-3.24/Modules/Platform/Linux-GNU-CXX.cmake /opt/netbrains/clion/clion-2022.1.3/bin/cmake/linux/x64/share/cmake-3.24/Modules/Platform/Linux-GNU.cmake /opt/netbrains/clion/clion-2022.1.3/bin/cmake/linux/x64/share/cmake-3.24/Modules/Platform/Linux.cmake /opt/netbrains/clion/clion-2022.1.3/bin/cmake/linux/x64/share/cmake-3.24/Modules/Platform/UnixPaths.cmake /opt/netbrains/clion/clion-2022.1.3/bin/cmake/linux/x64/share/cmake-3.24/Modules/SelectLibraryConfigurations.cmake /opt/netbrains/clion/clion-2022.1.3/bin/cmake/linux/x64/share/cmake-3.24/Modules/WriteBasicConfigVersionFile.cmake /opt/netbrains/clion/clion-2022.1.3/bin/cmake/linux/x64/share/cmake-3.24/Templates/CPackConfig.cmake.in CMakeCache.txt CMakeFiles/3.24.2/CMakeCCompiler.cmake CMakeFiles/3.24.2/CMakeCXXCompiler.cmake CMakeFiles/3.24.2/CMakeSystem.cmake pool = console ############################################# # A missing CMake input file is not an error. -build /home/brett/Documents/Brock/CS$ 3P98/Final$ Project/CMakeLists.txt /home/brett/Documents/Brock/CS$ 3P98/Final$ Project/libraries/BLT/CMakeLists.txt /home/brett/Documents/Brock/CS$ 3P98/Final$ Project/libraries/BLT/include/blt/config.h.in /home/brett/Documents/Brock/CS$ 3P98/Final$ Project/libraries/freetype-2.13.0/CMakeLists.txt /home/brett/Documents/Brock/CS$ 3P98/Final$ Project/libraries/freetype-2.13.0/builds/cmake/FindBrotliDec.cmake /home/brett/Documents/Brock/CS$ 3P98/Final$ Project/libraries/freetype-2.13.0/builds/cmake/FindHarfBuzz.cmake /home/brett/Documents/Brock/CS$ 3P98/Final$ Project/libraries/glfw-3.3.8/CMakeLists.txt /home/brett/Documents/Brock/CS$ 3P98/Final$ Project/libraries/glfw-3.3.8/cmake_uninstall.cmake.in /home/brett/Documents/Brock/CS$ 3P98/Final$ Project/libraries/glfw-3.3.8/src/CMakeLists.txt /home/brett/Documents/Brock/CS$ 3P98/Final$ Project/libraries/glfw-3.3.8/src/glfw3.pc.in /home/brett/Documents/Brock/CS$ 3P98/Final$ Project/libraries/glfw-3.3.8/src/glfw3Config.cmake.in /home/brett/Documents/Brock/CS$ 3P98/Final$ Project/libraries/glfw-3.3.8/src/glfw_config.h.in /opt/netbrains/clion/clion-2022.1.3/bin/cmake/linux/share/cmake-3.24/Modules/BasicConfigVersion-SameMajorVersion.cmake.in /opt/netbrains/clion/clion-2022.1.3/bin/cmake/linux/share/cmake-3.24/Modules/CMakeCInformation.cmake /opt/netbrains/clion/clion-2022.1.3/bin/cmake/linux/share/cmake-3.24/Modules/CMakeCXXInformation.cmake /opt/netbrains/clion/clion-2022.1.3/bin/cmake/linux/share/cmake-3.24/Modules/CMakeCommonLanguageInclude.cmake /opt/netbrains/clion/clion-2022.1.3/bin/cmake/linux/share/cmake-3.24/Modules/CMakeDependentOption.cmake /opt/netbrains/clion/clion-2022.1.3/bin/cmake/linux/share/cmake-3.24/Modules/CMakeGenericSystem.cmake /opt/netbrains/clion/clion-2022.1.3/bin/cmake/linux/share/cmake-3.24/Modules/CMakeInitializeConfigs.cmake /opt/netbrains/clion/clion-2022.1.3/bin/cmake/linux/share/cmake-3.24/Modules/CMakeLanguageInformation.cmake /opt/netbrains/clion/clion-2022.1.3/bin/cmake/linux/share/cmake-3.24/Modules/CMakePackageConfigHelpers.cmake /opt/netbrains/clion/clion-2022.1.3/bin/cmake/linux/share/cmake-3.24/Modules/CMakeSystemSpecificInformation.cmake /opt/netbrains/clion/clion-2022.1.3/bin/cmake/linux/share/cmake-3.24/Modules/CMakeSystemSpecificInitialize.cmake /opt/netbrains/clion/clion-2022.1.3/bin/cmake/linux/share/cmake-3.24/Modules/CPack.cmake /opt/netbrains/clion/clion-2022.1.3/bin/cmake/linux/share/cmake-3.24/Modules/CPackComponent.cmake /opt/netbrains/clion/clion-2022.1.3/bin/cmake/linux/share/cmake-3.24/Modules/CheckCSourceCompiles.cmake /opt/netbrains/clion/clion-2022.1.3/bin/cmake/linux/share/cmake-3.24/Modules/CheckFunctionExists.cmake /opt/netbrains/clion/clion-2022.1.3/bin/cmake/linux/share/cmake-3.24/Modules/CheckIncludeFile.cmake /opt/netbrains/clion/clion-2022.1.3/bin/cmake/linux/share/cmake-3.24/Modules/CheckLibraryExists.cmake /opt/netbrains/clion/clion-2022.1.3/bin/cmake/linux/share/cmake-3.24/Modules/Compiler/CMakeCommonCompilerMacros.cmake /opt/netbrains/clion/clion-2022.1.3/bin/cmake/linux/share/cmake-3.24/Modules/Compiler/GNU-C.cmake /opt/netbrains/clion/clion-2022.1.3/bin/cmake/linux/share/cmake-3.24/Modules/Compiler/GNU-CXX.cmake /opt/netbrains/clion/clion-2022.1.3/bin/cmake/linux/share/cmake-3.24/Modules/Compiler/GNU.cmake /opt/netbrains/clion/clion-2022.1.3/bin/cmake/linux/share/cmake-3.24/Modules/FindBZip2.cmake /opt/netbrains/clion/clion-2022.1.3/bin/cmake/linux/share/cmake-3.24/Modules/FindFontconfig.cmake /opt/netbrains/clion/clion-2022.1.3/bin/cmake/linux/share/cmake-3.24/Modules/FindFreetype.cmake /opt/netbrains/clion/clion-2022.1.3/bin/cmake/linux/share/cmake-3.24/Modules/FindPNG.cmake /opt/netbrains/clion/clion-2022.1.3/bin/cmake/linux/share/cmake-3.24/Modules/FindPackageHandleStandardArgs.cmake /opt/netbrains/clion/clion-2022.1.3/bin/cmake/linux/share/cmake-3.24/Modules/FindPackageMessage.cmake /opt/netbrains/clion/clion-2022.1.3/bin/cmake/linux/share/cmake-3.24/Modules/FindPkgConfig.cmake /opt/netbrains/clion/clion-2022.1.3/bin/cmake/linux/share/cmake-3.24/Modules/FindThreads.cmake /opt/netbrains/clion/clion-2022.1.3/bin/cmake/linux/share/cmake-3.24/Modules/FindX11.cmake /opt/netbrains/clion/clion-2022.1.3/bin/cmake/linux/share/cmake-3.24/Modules/FindZLIB.cmake /opt/netbrains/clion/clion-2022.1.3/bin/cmake/linux/share/cmake-3.24/Modules/GNUInstallDirs.cmake /opt/netbrains/clion/clion-2022.1.3/bin/cmake/linux/share/cmake-3.24/Modules/Internal/CheckSourceCompiles.cmake /opt/netbrains/clion/clion-2022.1.3/bin/cmake/linux/share/cmake-3.24/Modules/Platform/Linux-GNU-C.cmake /opt/netbrains/clion/clion-2022.1.3/bin/cmake/linux/share/cmake-3.24/Modules/Platform/Linux-GNU-CXX.cmake /opt/netbrains/clion/clion-2022.1.3/bin/cmake/linux/share/cmake-3.24/Modules/Platform/Linux-GNU.cmake /opt/netbrains/clion/clion-2022.1.3/bin/cmake/linux/share/cmake-3.24/Modules/Platform/Linux.cmake /opt/netbrains/clion/clion-2022.1.3/bin/cmake/linux/share/cmake-3.24/Modules/Platform/UnixPaths.cmake /opt/netbrains/clion/clion-2022.1.3/bin/cmake/linux/share/cmake-3.24/Modules/SelectLibraryConfigurations.cmake /opt/netbrains/clion/clion-2022.1.3/bin/cmake/linux/share/cmake-3.24/Modules/WriteBasicConfigVersionFile.cmake /opt/netbrains/clion/clion-2022.1.3/bin/cmake/linux/share/cmake-3.24/Templates/CPackConfig.cmake.in CMakeCache.txt CMakeFiles/3.24.2/CMakeCCompiler.cmake CMakeFiles/3.24.2/CMakeCXXCompiler.cmake CMakeFiles/3.24.2/CMakeSystem.cmake: phony +build /home/brett/Documents/Brock/CS$ 3P98/Final$ Project/CMakeLists.txt /home/brett/Documents/Brock/CS$ 3P98/Final$ Project/libraries/BLT/CMakeLists.txt /home/brett/Documents/Brock/CS$ 3P98/Final$ Project/libraries/BLT/include/blt/config.h.in /home/brett/Documents/Brock/CS$ 3P98/Final$ Project/libraries/freetype-2.13.0/CMakeLists.txt /home/brett/Documents/Brock/CS$ 3P98/Final$ Project/libraries/freetype-2.13.0/builds/cmake/FindBrotliDec.cmake /home/brett/Documents/Brock/CS$ 3P98/Final$ Project/libraries/freetype-2.13.0/builds/cmake/FindHarfBuzz.cmake /home/brett/Documents/Brock/CS$ 3P98/Final$ Project/libraries/glfw-3.3.8/CMakeLists.txt /home/brett/Documents/Brock/CS$ 3P98/Final$ Project/libraries/glfw-3.3.8/cmake_uninstall.cmake.in /home/brett/Documents/Brock/CS$ 3P98/Final$ Project/libraries/glfw-3.3.8/src/CMakeLists.txt /home/brett/Documents/Brock/CS$ 3P98/Final$ Project/libraries/glfw-3.3.8/src/glfw3.pc.in /home/brett/Documents/Brock/CS$ 3P98/Final$ Project/libraries/glfw-3.3.8/src/glfw3Config.cmake.in /home/brett/Documents/Brock/CS$ 3P98/Final$ Project/libraries/glfw-3.3.8/src/glfw_config.h.in /opt/netbrains/clion/clion-2022.1.3/bin/cmake/linux/x64/share/cmake-3.24/Modules/BasicConfigVersion-SameMajorVersion.cmake.in /opt/netbrains/clion/clion-2022.1.3/bin/cmake/linux/x64/share/cmake-3.24/Modules/CMakeCInformation.cmake /opt/netbrains/clion/clion-2022.1.3/bin/cmake/linux/x64/share/cmake-3.24/Modules/CMakeCXXInformation.cmake /opt/netbrains/clion/clion-2022.1.3/bin/cmake/linux/x64/share/cmake-3.24/Modules/CMakeCommonLanguageInclude.cmake /opt/netbrains/clion/clion-2022.1.3/bin/cmake/linux/x64/share/cmake-3.24/Modules/CMakeDependentOption.cmake /opt/netbrains/clion/clion-2022.1.3/bin/cmake/linux/x64/share/cmake-3.24/Modules/CMakeGenericSystem.cmake /opt/netbrains/clion/clion-2022.1.3/bin/cmake/linux/x64/share/cmake-3.24/Modules/CMakeInitializeConfigs.cmake /opt/netbrains/clion/clion-2022.1.3/bin/cmake/linux/x64/share/cmake-3.24/Modules/CMakeLanguageInformation.cmake /opt/netbrains/clion/clion-2022.1.3/bin/cmake/linux/x64/share/cmake-3.24/Modules/CMakePackageConfigHelpers.cmake /opt/netbrains/clion/clion-2022.1.3/bin/cmake/linux/x64/share/cmake-3.24/Modules/CMakeSystemSpecificInformation.cmake /opt/netbrains/clion/clion-2022.1.3/bin/cmake/linux/x64/share/cmake-3.24/Modules/CMakeSystemSpecificInitialize.cmake /opt/netbrains/clion/clion-2022.1.3/bin/cmake/linux/x64/share/cmake-3.24/Modules/CPack.cmake /opt/netbrains/clion/clion-2022.1.3/bin/cmake/linux/x64/share/cmake-3.24/Modules/CPackComponent.cmake /opt/netbrains/clion/clion-2022.1.3/bin/cmake/linux/x64/share/cmake-3.24/Modules/CheckCSourceCompiles.cmake /opt/netbrains/clion/clion-2022.1.3/bin/cmake/linux/x64/share/cmake-3.24/Modules/CheckFunctionExists.cmake /opt/netbrains/clion/clion-2022.1.3/bin/cmake/linux/x64/share/cmake-3.24/Modules/CheckIncludeFile.cmake /opt/netbrains/clion/clion-2022.1.3/bin/cmake/linux/x64/share/cmake-3.24/Modules/CheckLibraryExists.cmake /opt/netbrains/clion/clion-2022.1.3/bin/cmake/linux/x64/share/cmake-3.24/Modules/Compiler/CMakeCommonCompilerMacros.cmake /opt/netbrains/clion/clion-2022.1.3/bin/cmake/linux/x64/share/cmake-3.24/Modules/Compiler/GNU-C.cmake /opt/netbrains/clion/clion-2022.1.3/bin/cmake/linux/x64/share/cmake-3.24/Modules/Compiler/GNU-CXX.cmake /opt/netbrains/clion/clion-2022.1.3/bin/cmake/linux/x64/share/cmake-3.24/Modules/Compiler/GNU.cmake /opt/netbrains/clion/clion-2022.1.3/bin/cmake/linux/x64/share/cmake-3.24/Modules/FindBZip2.cmake /opt/netbrains/clion/clion-2022.1.3/bin/cmake/linux/x64/share/cmake-3.24/Modules/FindFontconfig.cmake /opt/netbrains/clion/clion-2022.1.3/bin/cmake/linux/x64/share/cmake-3.24/Modules/FindFreetype.cmake /opt/netbrains/clion/clion-2022.1.3/bin/cmake/linux/x64/share/cmake-3.24/Modules/FindPNG.cmake /opt/netbrains/clion/clion-2022.1.3/bin/cmake/linux/x64/share/cmake-3.24/Modules/FindPackageHandleStandardArgs.cmake /opt/netbrains/clion/clion-2022.1.3/bin/cmake/linux/x64/share/cmake-3.24/Modules/FindPackageMessage.cmake /opt/netbrains/clion/clion-2022.1.3/bin/cmake/linux/x64/share/cmake-3.24/Modules/FindPkgConfig.cmake /opt/netbrains/clion/clion-2022.1.3/bin/cmake/linux/x64/share/cmake-3.24/Modules/FindThreads.cmake /opt/netbrains/clion/clion-2022.1.3/bin/cmake/linux/x64/share/cmake-3.24/Modules/FindX11.cmake /opt/netbrains/clion/clion-2022.1.3/bin/cmake/linux/x64/share/cmake-3.24/Modules/FindZLIB.cmake /opt/netbrains/clion/clion-2022.1.3/bin/cmake/linux/x64/share/cmake-3.24/Modules/GNUInstallDirs.cmake /opt/netbrains/clion/clion-2022.1.3/bin/cmake/linux/x64/share/cmake-3.24/Modules/Internal/CheckSourceCompiles.cmake /opt/netbrains/clion/clion-2022.1.3/bin/cmake/linux/x64/share/cmake-3.24/Modules/Platform/Linux-GNU-C.cmake /opt/netbrains/clion/clion-2022.1.3/bin/cmake/linux/x64/share/cmake-3.24/Modules/Platform/Linux-GNU-CXX.cmake /opt/netbrains/clion/clion-2022.1.3/bin/cmake/linux/x64/share/cmake-3.24/Modules/Platform/Linux-GNU.cmake /opt/netbrains/clion/clion-2022.1.3/bin/cmake/linux/x64/share/cmake-3.24/Modules/Platform/Linux.cmake /opt/netbrains/clion/clion-2022.1.3/bin/cmake/linux/x64/share/cmake-3.24/Modules/Platform/UnixPaths.cmake /opt/netbrains/clion/clion-2022.1.3/bin/cmake/linux/x64/share/cmake-3.24/Modules/SelectLibraryConfigurations.cmake /opt/netbrains/clion/clion-2022.1.3/bin/cmake/linux/x64/share/cmake-3.24/Modules/WriteBasicConfigVersionFile.cmake /opt/netbrains/clion/clion-2022.1.3/bin/cmake/linux/x64/share/cmake-3.24/Templates/CPackConfig.cmake.in CMakeCache.txt CMakeFiles/3.24.2/CMakeCCompiler.cmake CMakeFiles/3.24.2/CMakeCXXCompiler.cmake CMakeFiles/3.24.2/CMakeSystem.cmake: phony ############################################# diff --git a/cmake-build-release/libraries/glfw-3.3.8/cmake_uninstall.cmake b/cmake-build-release/libraries/glfw-3.3.8/cmake_uninstall.cmake index 22da31e..d66c03f 100644 --- a/cmake-build-release/libraries/glfw-3.3.8/cmake_uninstall.cmake +++ b/cmake-build-release/libraries/glfw-3.3.8/cmake_uninstall.cmake @@ -9,14 +9,14 @@ string(REGEX REPLACE "\n" ";" files "${files}") foreach (file ${files}) message(STATUS "Uninstalling \"$ENV{DESTDIR}${file}\"") if (EXISTS "$ENV{DESTDIR}${file}") - exec_program("/opt/netbrains/clion/clion-2022.1.3/bin/cmake/linux/bin/cmake" ARGS "-E remove \"$ENV{DESTDIR}${file}\"" + exec_program("/opt/netbrains/clion/clion-2022.1.3/bin/cmake/linux/x64/bin/cmake" ARGS "-E remove \"$ENV{DESTDIR}${file}\"" OUTPUT_VARIABLE rm_out RETURN_VALUE rm_retval) if (NOT "${rm_retval}" STREQUAL 0) MESSAGE(FATAL_ERROR "Problem when removing \"$ENV{DESTDIR}${file}\"") endif() elseif (IS_SYMLINK "$ENV{DESTDIR}${file}") - EXEC_PROGRAM("/opt/netbrains/clion/clion-2022.1.3/bin/cmake/linux/bin/cmake" ARGS "-E remove \"$ENV{DESTDIR}${file}\"" + EXEC_PROGRAM("/opt/netbrains/clion/clion-2022.1.3/bin/cmake/linux/x64/bin/cmake" ARGS "-E remove \"$ENV{DESTDIR}${file}\"" OUTPUT_VARIABLE rm_out RETURN_VALUE rm_retval) if (NOT "${rm_retval}" STREQUAL 0) diff --git a/cmake-build-relwithdebinfo/.ninja_deps b/cmake-build-relwithdebinfo/.ninja_deps index ee606339b5b5a741a3d92e7520415a2d8758509b..ba6de21015cf21b0faf842218c54d94b65c3b8f3 100644 GIT binary patch delta 14282 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 L9Tws*=JdY-J2~>& diff --git a/cmake-build-relwithdebinfo/.ninja_log b/cmake-build-relwithdebinfo/.ninja_log index 692fc91..3101839 100644 --- a/cmake-build-relwithdebinfo/.ninja_log +++ b/cmake-build-relwithdebinfo/.ninja_log @@ -4,15 +4,16 @@ 1834 1911 1676433233204236237 libraries/freetype-2.13.0/CMakeFiles/freetype.dir/builds/unix/ftsystem.c.o 827aa9e59ce2e7a7 2 359 1676433231652193119 CMakeFiles/FinalProject.dir/src/world/registry.cpp.o d042df377c55f1ff 1492 1561 1676433232856226570 libraries/freetype-2.13.0/CMakeFiles/freetype.dir/src/svg/svg.c.o dc9fa4644e4bfeff -43 1314 1676471929044065252 CMakeFiles/FinalProject.dir/src/world/chunk/world.cpp.o 7a550f9a4e0bfc9c +3 1107 1676524425163572190 CMakeFiles/FinalProject.dir/src/world/chunk/world.cpp.o 7a550f9a4e0bfc9c 415 481 1676433231772196453 libraries/freetype-2.13.0/CMakeFiles/freetype.dir/src/base/ftsynth.c.o c94e1df207dca05f 1 268 1675879686057895775 libraries/glfw-3.3.8/src/CMakeFiles/glfw.dir/monitor.c.o 3306a3caed247cee -43 863 1676471928592052838 libraries/BLT/CMakeFiles/BLT.dir/src/blt/std/system.cpp.o 9999b1f01228dc1e +3 594 1676524424651557917 libraries/BLT/CMakeFiles/BLT.dir/src/blt/std/system.cpp.o 9999b1f01228dc1e 284 371 1676433231664193453 libraries/freetype-2.13.0/CMakeFiles/freetype.dir/src/base/ftinit.c.o c79de44174f27a42 +2 374 1676524424431551785 CMakeFiles/FinalProject.dir/src/render/ui/debug.cpp.o 67c82fe66fca827 146 200 1676433231492188675 libraries/freetype-2.13.0/CMakeFiles/freetype.dir/src/base/ftfstype.c.o c1571efbcaa8f933 3 2002 1676473110932638542 libraries/BLT/CMakeFiles/BLT.dir/src/blt/profiling/profiler.cpp.o 3879c77c4691aa0a 3 90 1676433231384185673 libraries/freetype-2.13.0/CMakeFiles/freetype.dir/src/base/ftbdf.c.o d55aaa7d5cd3d5c -2 714 1676473109648603093 CMakeFiles/FinalProject.dir/src/render/window.cpp.o d3ff816bc92bb4a6 +2 785 1676524424839563159 CMakeFiles/FinalProject.dir/src/render/window.cpp.o d3ff816bc92bb4a6 1713 2505 1676433233796252686 libraries/freetype-2.13.0/CMakeFiles/freetype.dir/src/type1/type1.c.o e9ac3fb73828fd6d 1 184 1675879685973893394 libraries/glfw-3.3.8/src/CMakeFiles/glfw.dir/vulkan.c.o 726a0ce9066c22d2 200 408 1676433231700194452 libraries/freetype-2.13.0/CMakeFiles/freetype.dir/src/base/ftglyph.c.o 287c587d2b62e728 @@ -27,8 +28,8 @@ 2 2203 1676433233496244349 libraries/freetype-2.13.0/CMakeFiles/freetype.dir/src/base/ftbase.c.o 4be5f2832180d492 1254 1793 1676433233084232903 libraries/freetype-2.13.0/CMakeFiles/freetype.dir/src/raster/raster.c.o f81177488ebd3ad 1 213 1675879686001894187 libraries/glfw-3.3.8/src/CMakeFiles/glfw.dir/init.c.o 7363bcb2dba2054a -2002 2085 1676473111008640638 libraries/BLT/libBLT.a 163b10f2e7f6635 -656 779 1676473248976449540 FinalProject 279a08a1cf71c6a8 +594 658 1676524424711559591 libraries/BLT/libBLT.a 163b10f2e7f6635 +1482 1608 1676524425663586129 FinalProject 1a926718972bddbe 408 468 1676433231760196120 libraries/freetype-2.13.0/CMakeFiles/freetype.dir/src/base/ftpfr.c.o 565b64bbd1fc7af5 518 559 1676433231852198676 libraries/freetype-2.13.0/CMakeFiles/freetype.dir/src/bzip2/ftbzip2.c.o 7d125f3d19646cd0 240 342 1675879686133897930 libraries/glfw-3.3.8/src/CMakeFiles/glfw.dir/posix_thread.c.o ed8a69d447bea26a @@ -37,13 +38,13 @@ 1182 2070 1676433233364240685 libraries/freetype-2.13.0/CMakeFiles/freetype.dir/src/pshinter/pshinter.c.o d1c695600d3a7dfd 185 272 1675879686061895889 libraries/glfw-3.3.8/src/CMakeFiles/glfw.dir/xkb_unicode.c.o b26e96d6509cc15d 1009 1182 1676433232476216011 libraries/freetype-2.13.0/CMakeFiles/freetype.dir/src/lzw/ftlzw.c.o d04e126e5d735f8b -2 591 1676472003274104855 CMakeFiles/FinalProject.dir/src/render/camera.cpp.o 5776e342ea508518 +2 840 1676524424895564721 CMakeFiles/FinalProject.dir/src/render/camera.cpp.o 5776e342ea508518 3 816 1675879686605911309 libraries/glfw-3.3.8/src/CMakeFiles/glfw.dir/x11_window.c.o 3c77d54154e66152 2 1148 1676094325714020716 libraries/BLT/CMakeFiles/BLT.dir/src/blt/std/loader.cpp.o dba8b361d1594e59 1150 2917 1676433234208264129 libraries/freetype-2.13.0/CMakeFiles/freetype.dir/src/psaux/psaux.c.o 2a71d88eed8a5228 816 896 1675879686681913464 libraries/glfw-3.3.8/src/libglfw3.a 4545fd6d0d1d5667 223 284 1676433231576191007 libraries/freetype-2.13.0/CMakeFiles/freetype.dir/src/base/ftgxval.c.o d760f2ca9797735d -2 870 1676473109804607402 CMakeFiles/FinalProject.dir/src/main.cpp.o 1ae001c7e5feebcb +2 976 1676524425031568511 CMakeFiles/FinalProject.dir/src/main.cpp.o 1ae001c7e5feebcb 1 489 1675879686277902012 libraries/glfw-3.3.8/src/CMakeFiles/glfw.dir/input.c.o b9b0555d1bde647a 490 862 1675879686649912557 libraries/BLT/CMakeFiles/BLT.dir/src/blt/nbt/nbt_block.cpp.o 2100792179af25a6 43 530 1676471928244043279 libraries/freetype-2.13.0/libfreetype.a f550ecbb3936aaae @@ -60,17 +61,16 @@ 831 1286 1676433232580218901 libraries/freetype-2.13.0/CMakeFiles/freetype.dir/src/cid/type1cid.c.o 23bf561e9b90dd0 1286 2036 1676433233328239682 libraries/freetype-2.13.0/CMakeFiles/freetype.dir/src/sdf/sdf.c.o 807c8e056b31c5d0 299 456 1676433231748195786 libraries/freetype-2.13.0/CMakeFiles/freetype.dir/src/base/ftmm.c.o 7b1dd129e6fb4981 -43 1040 1676471928768057669 CMakeFiles/FinalProject.dir/src/world/chunk/storage.cpp.o aba7285d6d94217e +3 613 1676524424671558477 CMakeFiles/FinalProject.dir/src/world/chunk/storage.cpp.o aba7285d6d94217e 299 466 1675879686253901332 libraries/glfw-3.3.8/src/CMakeFiles/glfw.dir/osmesa_context.c.o a913dd02c9ac6f97 -2 609 1676232422337127593 CMakeFiles/FinalProject.dir/src/world/chunk/chunk.cpp.o 901d26561b8e342a 468 518 1676433231812197567 libraries/freetype-2.13.0/CMakeFiles/freetype.dir/src/base/ftwinfnt.c.o 9fabacfc2ff8811a 1024 1391 1676433232684221791 libraries/freetype-2.13.0/CMakeFiles/freetype.dir/src/pcf/pcf.c.o 14518ecf856d21d0 1249 1492 1676433232784224571 libraries/freetype-2.13.0/CMakeFiles/freetype.dir/src/psnames/psnames.c.o 9d8ecfaa201fc592 2 409 1676094324978000454 libraries/BLT/CMakeFiles/BLT.dir/src/blt/std/filesystem.cpp.o 49e1226ae352c85c 359 407 1676433231700194452 libraries/freetype-2.13.0/CMakeFiles/freetype.dir/src/base/ftotval.c.o 1775fdea3e52c802 -43 1542 1676471929272071515 CMakeFiles/FinalProject.dir/src/render/gl.cpp.o 2660a3bd1778e5e3 +2 1482 1676524425539582673 CMakeFiles/FinalProject.dir/src/render/gl.cpp.o 2660a3bd1778e5e3 1793 1990 1676433233284238460 libraries/freetype-2.13.0/CMakeFiles/freetype.dir/src/winfonts/winfnt.c.o e43948e4a6dbf2e9 -2 656 1676473248856446226 CMakeFiles/FinalProject.dir/src/render/ui/text.cpp.o 4bc61f357ca60822 +2 1352 1676524425407578992 CMakeFiles/FinalProject.dir/src/render/ui/text.cpp.o 4bc61f357ca60822 408 882 1676433232176207678 libraries/freetype-2.13.0/CMakeFiles/freetype.dir/src/base/ftstroke.c.o d23f15afb5e42f5b 3 146 1676433231440187230 libraries/freetype-2.13.0/CMakeFiles/freetype.dir/src/base/ftbbox.c.o 33ee4db3f35b92d3 2 1986 1676433233276238237 libraries/freetype-2.13.0/CMakeFiles/freetype.dir/src/autofit/autofit.c.o be86846738c7b3be @@ -78,25 +78,3 @@ 524 1150 1676433232440215012 libraries/freetype-2.13.0/CMakeFiles/freetype.dir/src/cache/ftcache.c.o 6a50d2c3764a714 559 1833 1676433233124234017 libraries/freetype-2.13.0/CMakeFiles/freetype.dir/src/cff/cff.c.o 47495ad83245b5e7 311 524 1675879686313903031 libraries/glfw-3.3.8/src/CMakeFiles/glfw.dir/linux_joystick.c.o 3df40cb71360060f -3 528 1676524281243560604 CMakeFiles/FinalProject.dir/src/render/ui/debug.cpp.o 67c82fe66fca827 -4 550 1676524281267561272 libraries/BLT/CMakeFiles/BLT.dir/src/blt/std/system.cpp.o 9999b1f01228dc1e -550 665 1676524281363563949 libraries/BLT/libBLT.a 163b10f2e7f6635 -4 812 1676524281527568519 CMakeFiles/FinalProject.dir/src/world/chunk/storage.cpp.o aba7285d6d94217e -3 940 1676524281655572087 CMakeFiles/FinalProject.dir/src/render/camera.cpp.o 5776e342ea508518 -3 1014 1676524281727574095 CMakeFiles/FinalProject.dir/src/render/window.cpp.o d3ff816bc92bb4a6 -2 1162 1676524281875578220 CMakeFiles/FinalProject.dir/src/main.cpp.o 1ae001c7e5feebcb -4 1312 1676524282027582456 CMakeFiles/FinalProject.dir/src/world/chunk/world.cpp.o 7a550f9a4e0bfc9c -3 1473 1676524282187586917 CMakeFiles/FinalProject.dir/src/render/ui/text.cpp.o 4bc61f357ca60822 -3 1518 1676524282231588143 CMakeFiles/FinalProject.dir/src/render/gl.cpp.o 2660a3bd1778e5e3 -1518 1712 1676524282423593494 FinalProject 1a926718972bddbe -2 374 1676524424431551785 CMakeFiles/FinalProject.dir/src/render/ui/debug.cpp.o 67c82fe66fca827 -3 594 1676524424651557917 libraries/BLT/CMakeFiles/BLT.dir/src/blt/std/system.cpp.o 9999b1f01228dc1e -3 613 1676524424671558477 CMakeFiles/FinalProject.dir/src/world/chunk/storage.cpp.o aba7285d6d94217e -594 658 1676524424711559591 libraries/BLT/libBLT.a 163b10f2e7f6635 -2 785 1676524424839563159 CMakeFiles/FinalProject.dir/src/render/window.cpp.o d3ff816bc92bb4a6 -2 840 1676524424895564721 CMakeFiles/FinalProject.dir/src/render/camera.cpp.o 5776e342ea508518 -2 976 1676524425031568511 CMakeFiles/FinalProject.dir/src/main.cpp.o 1ae001c7e5feebcb -3 1107 1676524425163572190 CMakeFiles/FinalProject.dir/src/world/chunk/world.cpp.o 7a550f9a4e0bfc9c -2 1352 1676524425407578992 CMakeFiles/FinalProject.dir/src/render/ui/text.cpp.o 4bc61f357ca60822 -2 1482 1676524425539582673 CMakeFiles/FinalProject.dir/src/render/gl.cpp.o 2660a3bd1778e5e3 -1482 1608 1676524425663586129 FinalProject 1a926718972bddbe diff --git a/cmake-build-relwithdebinfo/CMakeCache.txt b/cmake-build-relwithdebinfo/CMakeCache.txt index 2fc423c..3d4c690 100644 --- a/cmake-build-relwithdebinfo/CMakeCache.txt +++ b/cmake-build-relwithdebinfo/CMakeCache.txt @@ -1,6 +1,6 @@ # This is the CMakeCache file. # For build in directory: /home/brett/Documents/Brock/CS 3P98/Final Project/cmake-build-relwithdebinfo -# It was generated by CMake: /opt/netbrains/clion/clion-2022.1.3/bin/cmake/linux/bin/cmake +# It was generated by CMake: /opt/netbrains/clion/clion-2022.1.3/bin/cmake/linux/x64/bin/cmake # You can edit this file to change values found and used by cmake. # If you do not want to change any of the values, simply exit the editor. # If you do want to change a value, simply edit, save, and exit the editor. @@ -197,7 +197,7 @@ CMAKE_INSTALL_SYSCONFDIR:PATH=etc CMAKE_LINKER:FILEPATH=/usr/bin/ld //No help, variable specified on the command line. -CMAKE_MAKE_PROGRAM:UNINITIALIZED=/opt/netbrains/clion/clion-2022.1.3/bin/ninja/linux/ninja +CMAKE_MAKE_PROGRAM:UNINITIALIZED=/opt/netbrains/clion/clion-2022.1.3/bin/ninja/linux/x64/ninja //Flags used by the linker during the creation of modules during // all build types. @@ -763,11 +763,11 @@ CMAKE_CACHE_MINOR_VERSION:INTERNAL=24 //Patch version of cmake used to create the current loaded cache CMAKE_CACHE_PATCH_VERSION:INTERNAL=2 //Path to CMake executable. -CMAKE_COMMAND:INTERNAL=/opt/netbrains/clion/clion-2022.1.3/bin/cmake/linux/bin/cmake +CMAKE_COMMAND:INTERNAL=/opt/netbrains/clion/clion-2022.1.3/bin/cmake/linux/x64/bin/cmake //Path to cpack program executable. -CMAKE_CPACK_COMMAND:INTERNAL=/opt/netbrains/clion/clion-2022.1.3/bin/cmake/linux/bin/cpack +CMAKE_CPACK_COMMAND:INTERNAL=/opt/netbrains/clion/clion-2022.1.3/bin/cmake/linux/x64/bin/cpack //Path to ctest program executable. -CMAKE_CTEST_COMMAND:INTERNAL=/opt/netbrains/clion/clion-2022.1.3/bin/cmake/linux/bin/ctest +CMAKE_CTEST_COMMAND:INTERNAL=/opt/netbrains/clion/clion-2022.1.3/bin/cmake/linux/x64/bin/ctest //ADVANCED property for variable: CMAKE_CXX_COMPILER CMAKE_CXX_COMPILER-ADVANCED:INTERNAL=1 //ADVANCED property for variable: CMAKE_CXX_COMPILER_AR @@ -902,7 +902,7 @@ CMAKE_RANLIB-ADVANCED:INTERNAL=1 //ADVANCED property for variable: CMAKE_READELF CMAKE_READELF-ADVANCED:INTERNAL=1 //Path to CMake installation. -CMAKE_ROOT:INTERNAL=/opt/netbrains/clion/clion-2022.1.3/bin/cmake/linux/share/cmake-3.24 +CMAKE_ROOT:INTERNAL=/opt/netbrains/clion/clion-2022.1.3/bin/cmake/linux/x64/share/cmake-3.24 //ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS CMAKE_SHARED_LINKER_FLAGS-ADVANCED:INTERNAL=1 //ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_DEBUG diff --git a/cmake-build-relwithdebinfo/CMakeFiles/CMakeOutput.log b/cmake-build-relwithdebinfo/CMakeFiles/CMakeOutput.log index 1c20e19..7edb5e3 100644 --- a/cmake-build-relwithdebinfo/CMakeFiles/CMakeOutput.log +++ b/cmake-build-relwithdebinfo/CMakeFiles/CMakeOutput.log @@ -28,7 +28,7 @@ The CXX compiler identification is GNU, found in "/home/brett/Documents/Brock/CS Detecting C compiler ABI info compiled with the following output: Change Dir: /home/brett/Documents/Brock/CS 3P98/Final Project/cmake-build-relwithdebinfo/CMakeFiles/CMakeTmp -Run Build Command(s):/opt/netbrains/clion/clion-2022.1.3/bin/ninja/linux/ninja cmTC_95273 && [1/2] Building C object CMakeFiles/cmTC_95273.dir/CMakeCCompilerABI.c.o +Run Build Command(s):/opt/netbrains/clion/clion-2022.1.3/bin/ninja/linux/x64/ninja cmTC_1c0b0 && [1/2] Building C object CMakeFiles/cmTC_1c0b0.dir/CMakeCCompilerABI.c.o Using built-in specs. COLLECT_GCC=/usr/bin/cc OFFLOAD_TARGET_NAMES=nvptx-none:amdgcn-amdhsa @@ -38,8 +38,8 @@ Configured with: ../src/configure -v --with-pkgversion='Debian 12.2.0-14' --with Thread model: posix Supported LTO compression algorithms: zlib zstd gcc version 12.2.0 (Debian 12.2.0-14) -COLLECT_GCC_OPTIONS='-fdiagnostics-color=always' '-v' '-o' 'CMakeFiles/cmTC_95273.dir/CMakeCCompilerABI.c.o' '-c' '-mtune=generic' '-march=x86-64' '-dumpdir' 'CMakeFiles/cmTC_95273.dir/' - /usr/lib/gcc/x86_64-linux-gnu/12/cc1 -quiet -v -imultiarch x86_64-linux-gnu /opt/netbrains/clion/clion-2022.1.3/bin/cmake/linux/share/cmake-3.24/Modules/CMakeCCompilerABI.c -quiet -dumpdir CMakeFiles/cmTC_95273.dir/ -dumpbase CMakeCCompilerABI.c.c -dumpbase-ext .c -mtune=generic -march=x86-64 -version -fdiagnostics-color=always -fasynchronous-unwind-tables -o /tmp/cc6W7PIc.s +COLLECT_GCC_OPTIONS='-fdiagnostics-color=always' '-v' '-o' 'CMakeFiles/cmTC_1c0b0.dir/CMakeCCompilerABI.c.o' '-c' '-mtune=generic' '-march=x86-64' '-dumpdir' 'CMakeFiles/cmTC_1c0b0.dir/' + /usr/lib/gcc/x86_64-linux-gnu/12/cc1 -quiet -v -imultiarch x86_64-linux-gnu /opt/netbrains/clion/clion-2022.1.3/bin/cmake/linux/x64/share/cmake-3.24/Modules/CMakeCCompilerABI.c -quiet -dumpdir CMakeFiles/cmTC_1c0b0.dir/ -dumpbase CMakeCCompilerABI.c.c -dumpbase-ext .c -mtune=generic -march=x86-64 -version -fdiagnostics-color=always -fasynchronous-unwind-tables -o /tmp/ccsYqI0U.s GNU C17 (Debian 12.2.0-14) version 12.2.0 (x86_64-linux-gnu) compiled by GNU C version 12.2.0, GMP version 6.2.1, MPFR version 4.1.1-p1, MPC version 1.3.1, isl version isl-0.25-GMP @@ -61,13 +61,13 @@ GNU C17 (Debian 12.2.0-14) version 12.2.0 (x86_64-linux-gnu) warning: MPFR header version 4.1.1-p1 differs from library version 4.2.0. GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072 Compiler executable checksum: cc72d2b9b5048fedc2be9051c917b40b -COLLECT_GCC_OPTIONS='-fdiagnostics-color=always' '-v' '-o' 'CMakeFiles/cmTC_95273.dir/CMakeCCompilerABI.c.o' '-c' '-mtune=generic' '-march=x86-64' '-dumpdir' 'CMakeFiles/cmTC_95273.dir/' - as -v --64 -o CMakeFiles/cmTC_95273.dir/CMakeCCompilerABI.c.o /tmp/cc6W7PIc.s +COLLECT_GCC_OPTIONS='-fdiagnostics-color=always' '-v' '-o' 'CMakeFiles/cmTC_1c0b0.dir/CMakeCCompilerABI.c.o' '-c' '-mtune=generic' '-march=x86-64' '-dumpdir' 'CMakeFiles/cmTC_1c0b0.dir/' + as -v --64 -o CMakeFiles/cmTC_1c0b0.dir/CMakeCCompilerABI.c.o /tmp/ccsYqI0U.s GNU assembler version 2.40 (x86_64-linux-gnu) using BFD version (GNU Binutils for Debian) 2.40 COMPILER_PATH=/usr/lib/gcc/x86_64-linux-gnu/12/:/usr/lib/gcc/x86_64-linux-gnu/12/:/usr/lib/gcc/x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/12/:/usr/lib/gcc/x86_64-linux-gnu/ LIBRARY_PATH=/usr/lib/gcc/x86_64-linux-gnu/12/:/usr/lib/gcc/x86_64-linux-gnu/12/../../../x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/12/../../../../lib/:/lib/x86_64-linux-gnu/:/lib/../lib/:/usr/lib/x86_64-linux-gnu/:/usr/lib/../lib/:/usr/lib/gcc/x86_64-linux-gnu/12/../../../:/lib/:/usr/lib/ -COLLECT_GCC_OPTIONS='-fdiagnostics-color=always' '-v' '-o' 'CMakeFiles/cmTC_95273.dir/CMakeCCompilerABI.c.o' '-c' '-mtune=generic' '-march=x86-64' '-dumpdir' 'CMakeFiles/cmTC_95273.dir/CMakeCCompilerABI.c.' -[2/2] Linking C executable cmTC_95273 +COLLECT_GCC_OPTIONS='-fdiagnostics-color=always' '-v' '-o' 'CMakeFiles/cmTC_1c0b0.dir/CMakeCCompilerABI.c.o' '-c' '-mtune=generic' '-march=x86-64' '-dumpdir' 'CMakeFiles/cmTC_1c0b0.dir/CMakeCCompilerABI.c.' +[2/2] Linking C executable cmTC_1c0b0 Using built-in specs. COLLECT_GCC=/usr/bin/cc COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/12/lto-wrapper @@ -80,9 +80,9 @@ Supported LTO compression algorithms: zlib zstd gcc version 12.2.0 (Debian 12.2.0-14) COMPILER_PATH=/usr/lib/gcc/x86_64-linux-gnu/12/:/usr/lib/gcc/x86_64-linux-gnu/12/:/usr/lib/gcc/x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/12/:/usr/lib/gcc/x86_64-linux-gnu/ LIBRARY_PATH=/usr/lib/gcc/x86_64-linux-gnu/12/:/usr/lib/gcc/x86_64-linux-gnu/12/../../../x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/12/../../../../lib/:/lib/x86_64-linux-gnu/:/lib/../lib/:/usr/lib/x86_64-linux-gnu/:/usr/lib/../lib/:/usr/lib/gcc/x86_64-linux-gnu/12/../../../:/lib/:/usr/lib/ -COLLECT_GCC_OPTIONS='-v' '-rdynamic' '-o' 'cmTC_95273' '-mtune=generic' '-march=x86-64' '-dumpdir' 'cmTC_95273.' - /usr/lib/gcc/x86_64-linux-gnu/12/collect2 -plugin /usr/lib/gcc/x86_64-linux-gnu/12/liblto_plugin.so -plugin-opt=/usr/lib/gcc/x86_64-linux-gnu/12/lto-wrapper -plugin-opt=-fresolution=/tmp/ccaAnX1F.res -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lc -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lgcc_s --build-id --eh-frame-hdr -m elf_x86_64 --hash-style=gnu --as-needed -export-dynamic -dynamic-linker /lib64/ld-linux-x86-64.so.2 -pie -o cmTC_95273 /usr/lib/gcc/x86_64-linux-gnu/12/../../../x86_64-linux-gnu/Scrt1.o /usr/lib/gcc/x86_64-linux-gnu/12/../../../x86_64-linux-gnu/crti.o /usr/lib/gcc/x86_64-linux-gnu/12/crtbeginS.o -L/usr/lib/gcc/x86_64-linux-gnu/12 -L/usr/lib/gcc/x86_64-linux-gnu/12/../../../x86_64-linux-gnu -L/usr/lib/gcc/x86_64-linux-gnu/12/../../../../lib -L/lib/x86_64-linux-gnu -L/lib/../lib -L/usr/lib/x86_64-linux-gnu -L/usr/lib/../lib -L/usr/lib/gcc/x86_64-linux-gnu/12/../../.. CMakeFiles/cmTC_95273.dir/CMakeCCompilerABI.c.o -lgcc --push-state --as-needed -lgcc_s --pop-state -lc -lgcc --push-state --as-needed -lgcc_s --pop-state /usr/lib/gcc/x86_64-linux-gnu/12/crtendS.o /usr/lib/gcc/x86_64-linux-gnu/12/../../../x86_64-linux-gnu/crtn.o -COLLECT_GCC_OPTIONS='-v' '-rdynamic' '-o' 'cmTC_95273' '-mtune=generic' '-march=x86-64' '-dumpdir' 'cmTC_95273.' +COLLECT_GCC_OPTIONS='-v' '-rdynamic' '-o' 'cmTC_1c0b0' '-mtune=generic' '-march=x86-64' '-dumpdir' 'cmTC_1c0b0.' + /usr/lib/gcc/x86_64-linux-gnu/12/collect2 -plugin /usr/lib/gcc/x86_64-linux-gnu/12/liblto_plugin.so -plugin-opt=/usr/lib/gcc/x86_64-linux-gnu/12/lto-wrapper -plugin-opt=-fresolution=/tmp/ccmhkGTj.res -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lc -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lgcc_s --build-id --eh-frame-hdr -m elf_x86_64 --hash-style=gnu --as-needed -export-dynamic -dynamic-linker /lib64/ld-linux-x86-64.so.2 -pie -o cmTC_1c0b0 /usr/lib/gcc/x86_64-linux-gnu/12/../../../x86_64-linux-gnu/Scrt1.o /usr/lib/gcc/x86_64-linux-gnu/12/../../../x86_64-linux-gnu/crti.o /usr/lib/gcc/x86_64-linux-gnu/12/crtbeginS.o -L/usr/lib/gcc/x86_64-linux-gnu/12 -L/usr/lib/gcc/x86_64-linux-gnu/12/../../../x86_64-linux-gnu -L/usr/lib/gcc/x86_64-linux-gnu/12/../../../../lib -L/lib/x86_64-linux-gnu -L/lib/../lib -L/usr/lib/x86_64-linux-gnu -L/usr/lib/../lib -L/usr/lib/gcc/x86_64-linux-gnu/12/../../.. CMakeFiles/cmTC_1c0b0.dir/CMakeCCompilerABI.c.o -lgcc --push-state --as-needed -lgcc_s --pop-state -lc -lgcc --push-state --as-needed -lgcc_s --pop-state /usr/lib/gcc/x86_64-linux-gnu/12/crtendS.o /usr/lib/gcc/x86_64-linux-gnu/12/../../../x86_64-linux-gnu/crtn.o +COLLECT_GCC_OPTIONS='-v' '-rdynamic' '-o' 'cmTC_1c0b0' '-mtune=generic' '-march=x86-64' '-dumpdir' 'cmTC_1c0b0.' @@ -105,7 +105,7 @@ Parsed C implicit link information from above output: link line regex: [^( *|.*[/\])(ld|CMAKE_LINK_STARTFILE-NOTFOUND|([^/\]+-)?ld|collect2)[^/\]*( |$)] ignore line: [Change Dir: /home/brett/Documents/Brock/CS 3P98/Final Project/cmake-build-relwithdebinfo/CMakeFiles/CMakeTmp] ignore line: [] - ignore line: [Run Build Command(s):/opt/netbrains/clion/clion-2022.1.3/bin/ninja/linux/ninja cmTC_95273 && [1/2] Building C object CMakeFiles/cmTC_95273.dir/CMakeCCompilerABI.c.o] + ignore line: [Run Build Command(s):/opt/netbrains/clion/clion-2022.1.3/bin/ninja/linux/x64/ninja cmTC_1c0b0 && [1/2] Building C object CMakeFiles/cmTC_1c0b0.dir/CMakeCCompilerABI.c.o] ignore line: [Using built-in specs.] ignore line: [COLLECT_GCC=/usr/bin/cc] ignore line: [OFFLOAD_TARGET_NAMES=nvptx-none:amdgcn-amdhsa] @@ -115,8 +115,8 @@ Parsed C implicit link information from above output: ignore line: [Thread model: posix] ignore line: [Supported LTO compression algorithms: zlib zstd] ignore line: [gcc version 12.2.0 (Debian 12.2.0-14) ] - ignore line: [COLLECT_GCC_OPTIONS='-fdiagnostics-color=always' '-v' '-o' 'CMakeFiles/cmTC_95273.dir/CMakeCCompilerABI.c.o' '-c' '-mtune=generic' '-march=x86-64' '-dumpdir' 'CMakeFiles/cmTC_95273.dir/'] - ignore line: [ /usr/lib/gcc/x86_64-linux-gnu/12/cc1 -quiet -v -imultiarch x86_64-linux-gnu /opt/netbrains/clion/clion-2022.1.3/bin/cmake/linux/share/cmake-3.24/Modules/CMakeCCompilerABI.c -quiet -dumpdir CMakeFiles/cmTC_95273.dir/ -dumpbase CMakeCCompilerABI.c.c -dumpbase-ext .c -mtune=generic -march=x86-64 -version -fdiagnostics-color=always -fasynchronous-unwind-tables -o /tmp/cc6W7PIc.s] + ignore line: [COLLECT_GCC_OPTIONS='-fdiagnostics-color=always' '-v' '-o' 'CMakeFiles/cmTC_1c0b0.dir/CMakeCCompilerABI.c.o' '-c' '-mtune=generic' '-march=x86-64' '-dumpdir' 'CMakeFiles/cmTC_1c0b0.dir/'] + ignore line: [ /usr/lib/gcc/x86_64-linux-gnu/12/cc1 -quiet -v -imultiarch x86_64-linux-gnu /opt/netbrains/clion/clion-2022.1.3/bin/cmake/linux/x64/share/cmake-3.24/Modules/CMakeCCompilerABI.c -quiet -dumpdir CMakeFiles/cmTC_1c0b0.dir/ -dumpbase CMakeCCompilerABI.c.c -dumpbase-ext .c -mtune=generic -march=x86-64 -version -fdiagnostics-color=always -fasynchronous-unwind-tables -o /tmp/ccsYqI0U.s] ignore line: [GNU C17 (Debian 12.2.0-14) version 12.2.0 (x86_64-linux-gnu)] ignore line: [ compiled by GNU C version 12.2.0 GMP version 6.2.1 MPFR version 4.1.1-p1 MPC version 1.3.1 isl version isl-0.25-GMP] ignore line: [] @@ -138,13 +138,13 @@ Parsed C implicit link information from above output: ignore line: [warning: MPFR header version 4.1.1-p1 differs from library version 4.2.0.] ignore line: [GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072] ignore line: [Compiler executable checksum: cc72d2b9b5048fedc2be9051c917b40b] - ignore line: [COLLECT_GCC_OPTIONS='-fdiagnostics-color=always' '-v' '-o' 'CMakeFiles/cmTC_95273.dir/CMakeCCompilerABI.c.o' '-c' '-mtune=generic' '-march=x86-64' '-dumpdir' 'CMakeFiles/cmTC_95273.dir/'] - ignore line: [ as -v --64 -o CMakeFiles/cmTC_95273.dir/CMakeCCompilerABI.c.o /tmp/cc6W7PIc.s] + ignore line: [COLLECT_GCC_OPTIONS='-fdiagnostics-color=always' '-v' '-o' 'CMakeFiles/cmTC_1c0b0.dir/CMakeCCompilerABI.c.o' '-c' '-mtune=generic' '-march=x86-64' '-dumpdir' 'CMakeFiles/cmTC_1c0b0.dir/'] + ignore line: [ as -v --64 -o CMakeFiles/cmTC_1c0b0.dir/CMakeCCompilerABI.c.o /tmp/ccsYqI0U.s] ignore line: [GNU assembler version 2.40 (x86_64-linux-gnu) using BFD version (GNU Binutils for Debian) 2.40] ignore line: [COMPILER_PATH=/usr/lib/gcc/x86_64-linux-gnu/12/:/usr/lib/gcc/x86_64-linux-gnu/12/:/usr/lib/gcc/x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/12/:/usr/lib/gcc/x86_64-linux-gnu/] ignore line: [LIBRARY_PATH=/usr/lib/gcc/x86_64-linux-gnu/12/:/usr/lib/gcc/x86_64-linux-gnu/12/../../../x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/12/../../../../lib/:/lib/x86_64-linux-gnu/:/lib/../lib/:/usr/lib/x86_64-linux-gnu/:/usr/lib/../lib/:/usr/lib/gcc/x86_64-linux-gnu/12/../../../:/lib/:/usr/lib/] - ignore line: [COLLECT_GCC_OPTIONS='-fdiagnostics-color=always' '-v' '-o' 'CMakeFiles/cmTC_95273.dir/CMakeCCompilerABI.c.o' '-c' '-mtune=generic' '-march=x86-64' '-dumpdir' 'CMakeFiles/cmTC_95273.dir/CMakeCCompilerABI.c.'] - ignore line: [[2/2] Linking C executable cmTC_95273] + ignore line: [COLLECT_GCC_OPTIONS='-fdiagnostics-color=always' '-v' '-o' 'CMakeFiles/cmTC_1c0b0.dir/CMakeCCompilerABI.c.o' '-c' '-mtune=generic' '-march=x86-64' '-dumpdir' 'CMakeFiles/cmTC_1c0b0.dir/CMakeCCompilerABI.c.'] + ignore line: [[2/2] Linking C executable cmTC_1c0b0] ignore line: [Using built-in specs.] ignore line: [COLLECT_GCC=/usr/bin/cc] ignore line: [COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/12/lto-wrapper] @@ -157,13 +157,13 @@ Parsed C implicit link information from above output: ignore line: [gcc version 12.2.0 (Debian 12.2.0-14) ] ignore line: [COMPILER_PATH=/usr/lib/gcc/x86_64-linux-gnu/12/:/usr/lib/gcc/x86_64-linux-gnu/12/:/usr/lib/gcc/x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/12/:/usr/lib/gcc/x86_64-linux-gnu/] ignore line: [LIBRARY_PATH=/usr/lib/gcc/x86_64-linux-gnu/12/:/usr/lib/gcc/x86_64-linux-gnu/12/../../../x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/12/../../../../lib/:/lib/x86_64-linux-gnu/:/lib/../lib/:/usr/lib/x86_64-linux-gnu/:/usr/lib/../lib/:/usr/lib/gcc/x86_64-linux-gnu/12/../../../:/lib/:/usr/lib/] - ignore line: [COLLECT_GCC_OPTIONS='-v' '-rdynamic' '-o' 'cmTC_95273' '-mtune=generic' '-march=x86-64' '-dumpdir' 'cmTC_95273.'] - link line: [ /usr/lib/gcc/x86_64-linux-gnu/12/collect2 -plugin /usr/lib/gcc/x86_64-linux-gnu/12/liblto_plugin.so -plugin-opt=/usr/lib/gcc/x86_64-linux-gnu/12/lto-wrapper -plugin-opt=-fresolution=/tmp/ccaAnX1F.res -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lc -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lgcc_s --build-id --eh-frame-hdr -m elf_x86_64 --hash-style=gnu --as-needed -export-dynamic -dynamic-linker /lib64/ld-linux-x86-64.so.2 -pie -o cmTC_95273 /usr/lib/gcc/x86_64-linux-gnu/12/../../../x86_64-linux-gnu/Scrt1.o /usr/lib/gcc/x86_64-linux-gnu/12/../../../x86_64-linux-gnu/crti.o /usr/lib/gcc/x86_64-linux-gnu/12/crtbeginS.o -L/usr/lib/gcc/x86_64-linux-gnu/12 -L/usr/lib/gcc/x86_64-linux-gnu/12/../../../x86_64-linux-gnu -L/usr/lib/gcc/x86_64-linux-gnu/12/../../../../lib -L/lib/x86_64-linux-gnu -L/lib/../lib -L/usr/lib/x86_64-linux-gnu -L/usr/lib/../lib -L/usr/lib/gcc/x86_64-linux-gnu/12/../../.. CMakeFiles/cmTC_95273.dir/CMakeCCompilerABI.c.o -lgcc --push-state --as-needed -lgcc_s --pop-state -lc -lgcc --push-state --as-needed -lgcc_s --pop-state /usr/lib/gcc/x86_64-linux-gnu/12/crtendS.o /usr/lib/gcc/x86_64-linux-gnu/12/../../../x86_64-linux-gnu/crtn.o] + ignore line: [COLLECT_GCC_OPTIONS='-v' '-rdynamic' '-o' 'cmTC_1c0b0' '-mtune=generic' '-march=x86-64' '-dumpdir' 'cmTC_1c0b0.'] + link line: [ /usr/lib/gcc/x86_64-linux-gnu/12/collect2 -plugin /usr/lib/gcc/x86_64-linux-gnu/12/liblto_plugin.so -plugin-opt=/usr/lib/gcc/x86_64-linux-gnu/12/lto-wrapper -plugin-opt=-fresolution=/tmp/ccmhkGTj.res -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lc -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lgcc_s --build-id --eh-frame-hdr -m elf_x86_64 --hash-style=gnu --as-needed -export-dynamic -dynamic-linker /lib64/ld-linux-x86-64.so.2 -pie -o cmTC_1c0b0 /usr/lib/gcc/x86_64-linux-gnu/12/../../../x86_64-linux-gnu/Scrt1.o /usr/lib/gcc/x86_64-linux-gnu/12/../../../x86_64-linux-gnu/crti.o /usr/lib/gcc/x86_64-linux-gnu/12/crtbeginS.o -L/usr/lib/gcc/x86_64-linux-gnu/12 -L/usr/lib/gcc/x86_64-linux-gnu/12/../../../x86_64-linux-gnu -L/usr/lib/gcc/x86_64-linux-gnu/12/../../../../lib -L/lib/x86_64-linux-gnu -L/lib/../lib -L/usr/lib/x86_64-linux-gnu -L/usr/lib/../lib -L/usr/lib/gcc/x86_64-linux-gnu/12/../../.. CMakeFiles/cmTC_1c0b0.dir/CMakeCCompilerABI.c.o -lgcc --push-state --as-needed -lgcc_s --pop-state -lc -lgcc --push-state --as-needed -lgcc_s --pop-state /usr/lib/gcc/x86_64-linux-gnu/12/crtendS.o /usr/lib/gcc/x86_64-linux-gnu/12/../../../x86_64-linux-gnu/crtn.o] arg [/usr/lib/gcc/x86_64-linux-gnu/12/collect2] ==> ignore arg [-plugin] ==> ignore arg [/usr/lib/gcc/x86_64-linux-gnu/12/liblto_plugin.so] ==> ignore arg [-plugin-opt=/usr/lib/gcc/x86_64-linux-gnu/12/lto-wrapper] ==> ignore - arg [-plugin-opt=-fresolution=/tmp/ccaAnX1F.res] ==> ignore + arg [-plugin-opt=-fresolution=/tmp/ccmhkGTj.res] ==> ignore arg [-plugin-opt=-pass-through=-lgcc] ==> ignore arg [-plugin-opt=-pass-through=-lgcc_s] ==> ignore arg [-plugin-opt=-pass-through=-lc] ==> ignore @@ -180,7 +180,7 @@ Parsed C implicit link information from above output: arg [/lib64/ld-linux-x86-64.so.2] ==> ignore arg [-pie] ==> ignore arg [-o] ==> ignore - arg [cmTC_95273] ==> ignore + arg [cmTC_1c0b0] ==> ignore arg [/usr/lib/gcc/x86_64-linux-gnu/12/../../../x86_64-linux-gnu/Scrt1.o] ==> obj [/usr/lib/gcc/x86_64-linux-gnu/12/../../../x86_64-linux-gnu/Scrt1.o] arg [/usr/lib/gcc/x86_64-linux-gnu/12/../../../x86_64-linux-gnu/crti.o] ==> obj [/usr/lib/gcc/x86_64-linux-gnu/12/../../../x86_64-linux-gnu/crti.o] arg [/usr/lib/gcc/x86_64-linux-gnu/12/crtbeginS.o] ==> obj [/usr/lib/gcc/x86_64-linux-gnu/12/crtbeginS.o] @@ -192,7 +192,7 @@ Parsed C implicit link information from above output: arg [-L/usr/lib/x86_64-linux-gnu] ==> dir [/usr/lib/x86_64-linux-gnu] arg [-L/usr/lib/../lib] ==> dir [/usr/lib/../lib] arg [-L/usr/lib/gcc/x86_64-linux-gnu/12/../../..] ==> dir [/usr/lib/gcc/x86_64-linux-gnu/12/../../..] - arg [CMakeFiles/cmTC_95273.dir/CMakeCCompilerABI.c.o] ==> ignore + arg [CMakeFiles/cmTC_1c0b0.dir/CMakeCCompilerABI.c.o] ==> ignore arg [-lgcc] ==> lib [gcc] arg [--push-state] ==> ignore arg [--as-needed] ==> ignore @@ -226,7 +226,7 @@ Parsed C implicit link information from above output: Detecting CXX compiler ABI info compiled with the following output: Change Dir: /home/brett/Documents/Brock/CS 3P98/Final Project/cmake-build-relwithdebinfo/CMakeFiles/CMakeTmp -Run Build Command(s):/opt/netbrains/clion/clion-2022.1.3/bin/ninja/linux/ninja cmTC_d7bf5 && [1/2] Building CXX object CMakeFiles/cmTC_d7bf5.dir/CMakeCXXCompilerABI.cpp.o +Run Build Command(s):/opt/netbrains/clion/clion-2022.1.3/bin/ninja/linux/x64/ninja cmTC_06284 && [1/2] Building CXX object CMakeFiles/cmTC_06284.dir/CMakeCXXCompilerABI.cpp.o Using built-in specs. COLLECT_GCC=/usr/bin/c++ OFFLOAD_TARGET_NAMES=nvptx-none:amdgcn-amdhsa @@ -236,8 +236,8 @@ Configured with: ../src/configure -v --with-pkgversion='Debian 12.2.0-14' --with Thread model: posix Supported LTO compression algorithms: zlib zstd gcc version 12.2.0 (Debian 12.2.0-14) -COLLECT_GCC_OPTIONS='-fdiagnostics-color=always' '-v' '-o' 'CMakeFiles/cmTC_d7bf5.dir/CMakeCXXCompilerABI.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64' '-dumpdir' 'CMakeFiles/cmTC_d7bf5.dir/' - /usr/lib/gcc/x86_64-linux-gnu/12/cc1plus -quiet -v -imultiarch x86_64-linux-gnu -D_GNU_SOURCE /opt/netbrains/clion/clion-2022.1.3/bin/cmake/linux/share/cmake-3.24/Modules/CMakeCXXCompilerABI.cpp -quiet -dumpdir CMakeFiles/cmTC_d7bf5.dir/ -dumpbase CMakeCXXCompilerABI.cpp.cpp -dumpbase-ext .cpp -mtune=generic -march=x86-64 -version -fdiagnostics-color=always -fasynchronous-unwind-tables -o /tmp/ccrEZX1N.s +COLLECT_GCC_OPTIONS='-fdiagnostics-color=always' '-v' '-o' 'CMakeFiles/cmTC_06284.dir/CMakeCXXCompilerABI.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64' '-dumpdir' 'CMakeFiles/cmTC_06284.dir/' + /usr/lib/gcc/x86_64-linux-gnu/12/cc1plus -quiet -v -imultiarch x86_64-linux-gnu -D_GNU_SOURCE /opt/netbrains/clion/clion-2022.1.3/bin/cmake/linux/x64/share/cmake-3.24/Modules/CMakeCXXCompilerABI.cpp -quiet -dumpdir CMakeFiles/cmTC_06284.dir/ -dumpbase CMakeCXXCompilerABI.cpp.cpp -dumpbase-ext .cpp -mtune=generic -march=x86-64 -version -fdiagnostics-color=always -fasynchronous-unwind-tables -o /tmp/ccSJgAci.s GNU C++17 (Debian 12.2.0-14) version 12.2.0 (x86_64-linux-gnu) compiled by GNU C version 12.2.0, GMP version 6.2.1, MPFR version 4.1.1-p1, MPC version 1.3.1, isl version isl-0.25-GMP @@ -263,13 +263,13 @@ GNU C++17 (Debian 12.2.0-14) version 12.2.0 (x86_64-linux-gnu) warning: MPFR header version 4.1.1-p1 differs from library version 4.2.0. GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072 Compiler executable checksum: 62b090dbbefa50644117a3c13d47369a -COLLECT_GCC_OPTIONS='-fdiagnostics-color=always' '-v' '-o' 'CMakeFiles/cmTC_d7bf5.dir/CMakeCXXCompilerABI.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64' '-dumpdir' 'CMakeFiles/cmTC_d7bf5.dir/' - as -v --64 -o CMakeFiles/cmTC_d7bf5.dir/CMakeCXXCompilerABI.cpp.o /tmp/ccrEZX1N.s +COLLECT_GCC_OPTIONS='-fdiagnostics-color=always' '-v' '-o' 'CMakeFiles/cmTC_06284.dir/CMakeCXXCompilerABI.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64' '-dumpdir' 'CMakeFiles/cmTC_06284.dir/' + as -v --64 -o CMakeFiles/cmTC_06284.dir/CMakeCXXCompilerABI.cpp.o /tmp/ccSJgAci.s GNU assembler version 2.40 (x86_64-linux-gnu) using BFD version (GNU Binutils for Debian) 2.40 COMPILER_PATH=/usr/lib/gcc/x86_64-linux-gnu/12/:/usr/lib/gcc/x86_64-linux-gnu/12/:/usr/lib/gcc/x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/12/:/usr/lib/gcc/x86_64-linux-gnu/ LIBRARY_PATH=/usr/lib/gcc/x86_64-linux-gnu/12/:/usr/lib/gcc/x86_64-linux-gnu/12/../../../x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/12/../../../../lib/:/lib/x86_64-linux-gnu/:/lib/../lib/:/usr/lib/x86_64-linux-gnu/:/usr/lib/../lib/:/usr/lib/gcc/x86_64-linux-gnu/12/../../../:/lib/:/usr/lib/ -COLLECT_GCC_OPTIONS='-fdiagnostics-color=always' '-v' '-o' 'CMakeFiles/cmTC_d7bf5.dir/CMakeCXXCompilerABI.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64' '-dumpdir' 'CMakeFiles/cmTC_d7bf5.dir/CMakeCXXCompilerABI.cpp.' -[2/2] Linking CXX executable cmTC_d7bf5 +COLLECT_GCC_OPTIONS='-fdiagnostics-color=always' '-v' '-o' 'CMakeFiles/cmTC_06284.dir/CMakeCXXCompilerABI.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64' '-dumpdir' 'CMakeFiles/cmTC_06284.dir/CMakeCXXCompilerABI.cpp.' +[2/2] Linking CXX executable cmTC_06284 Using built-in specs. COLLECT_GCC=/usr/bin/c++ COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/12/lto-wrapper @@ -282,9 +282,9 @@ Supported LTO compression algorithms: zlib zstd gcc version 12.2.0 (Debian 12.2.0-14) COMPILER_PATH=/usr/lib/gcc/x86_64-linux-gnu/12/:/usr/lib/gcc/x86_64-linux-gnu/12/:/usr/lib/gcc/x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/12/:/usr/lib/gcc/x86_64-linux-gnu/ LIBRARY_PATH=/usr/lib/gcc/x86_64-linux-gnu/12/:/usr/lib/gcc/x86_64-linux-gnu/12/../../../x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/12/../../../../lib/:/lib/x86_64-linux-gnu/:/lib/../lib/:/usr/lib/x86_64-linux-gnu/:/usr/lib/../lib/:/usr/lib/gcc/x86_64-linux-gnu/12/../../../:/lib/:/usr/lib/ -COLLECT_GCC_OPTIONS='-v' '-rdynamic' '-o' 'cmTC_d7bf5' '-shared-libgcc' '-mtune=generic' '-march=x86-64' '-dumpdir' 'cmTC_d7bf5.' - /usr/lib/gcc/x86_64-linux-gnu/12/collect2 -plugin /usr/lib/gcc/x86_64-linux-gnu/12/liblto_plugin.so -plugin-opt=/usr/lib/gcc/x86_64-linux-gnu/12/lto-wrapper -plugin-opt=-fresolution=/tmp/cckhJwcy.res -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lc -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lgcc --build-id --eh-frame-hdr -m elf_x86_64 --hash-style=gnu --as-needed -export-dynamic -dynamic-linker /lib64/ld-linux-x86-64.so.2 -pie -o cmTC_d7bf5 /usr/lib/gcc/x86_64-linux-gnu/12/../../../x86_64-linux-gnu/Scrt1.o /usr/lib/gcc/x86_64-linux-gnu/12/../../../x86_64-linux-gnu/crti.o /usr/lib/gcc/x86_64-linux-gnu/12/crtbeginS.o -L/usr/lib/gcc/x86_64-linux-gnu/12 -L/usr/lib/gcc/x86_64-linux-gnu/12/../../../x86_64-linux-gnu -L/usr/lib/gcc/x86_64-linux-gnu/12/../../../../lib -L/lib/x86_64-linux-gnu -L/lib/../lib -L/usr/lib/x86_64-linux-gnu -L/usr/lib/../lib -L/usr/lib/gcc/x86_64-linux-gnu/12/../../.. CMakeFiles/cmTC_d7bf5.dir/CMakeCXXCompilerABI.cpp.o -lstdc++ -lm -lgcc_s -lgcc -lc -lgcc_s -lgcc /usr/lib/gcc/x86_64-linux-gnu/12/crtendS.o /usr/lib/gcc/x86_64-linux-gnu/12/../../../x86_64-linux-gnu/crtn.o -COLLECT_GCC_OPTIONS='-v' '-rdynamic' '-o' 'cmTC_d7bf5' '-shared-libgcc' '-mtune=generic' '-march=x86-64' '-dumpdir' 'cmTC_d7bf5.' +COLLECT_GCC_OPTIONS='-v' '-rdynamic' '-o' 'cmTC_06284' '-shared-libgcc' '-mtune=generic' '-march=x86-64' '-dumpdir' 'cmTC_06284.' + /usr/lib/gcc/x86_64-linux-gnu/12/collect2 -plugin /usr/lib/gcc/x86_64-linux-gnu/12/liblto_plugin.so -plugin-opt=/usr/lib/gcc/x86_64-linux-gnu/12/lto-wrapper -plugin-opt=-fresolution=/tmp/ccGSIyr8.res -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lc -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lgcc --build-id --eh-frame-hdr -m elf_x86_64 --hash-style=gnu --as-needed -export-dynamic -dynamic-linker /lib64/ld-linux-x86-64.so.2 -pie -o cmTC_06284 /usr/lib/gcc/x86_64-linux-gnu/12/../../../x86_64-linux-gnu/Scrt1.o /usr/lib/gcc/x86_64-linux-gnu/12/../../../x86_64-linux-gnu/crti.o /usr/lib/gcc/x86_64-linux-gnu/12/crtbeginS.o -L/usr/lib/gcc/x86_64-linux-gnu/12 -L/usr/lib/gcc/x86_64-linux-gnu/12/../../../x86_64-linux-gnu -L/usr/lib/gcc/x86_64-linux-gnu/12/../../../../lib -L/lib/x86_64-linux-gnu -L/lib/../lib -L/usr/lib/x86_64-linux-gnu -L/usr/lib/../lib -L/usr/lib/gcc/x86_64-linux-gnu/12/../../.. CMakeFiles/cmTC_06284.dir/CMakeCXXCompilerABI.cpp.o -lstdc++ -lm -lgcc_s -lgcc -lc -lgcc_s -lgcc /usr/lib/gcc/x86_64-linux-gnu/12/crtendS.o /usr/lib/gcc/x86_64-linux-gnu/12/../../../x86_64-linux-gnu/crtn.o +COLLECT_GCC_OPTIONS='-v' '-rdynamic' '-o' 'cmTC_06284' '-shared-libgcc' '-mtune=generic' '-march=x86-64' '-dumpdir' 'cmTC_06284.' @@ -313,7 +313,7 @@ Parsed CXX implicit link information from above output: link line regex: [^( *|.*[/\])(ld|CMAKE_LINK_STARTFILE-NOTFOUND|([^/\]+-)?ld|collect2)[^/\]*( |$)] ignore line: [Change Dir: /home/brett/Documents/Brock/CS 3P98/Final Project/cmake-build-relwithdebinfo/CMakeFiles/CMakeTmp] ignore line: [] - ignore line: [Run Build Command(s):/opt/netbrains/clion/clion-2022.1.3/bin/ninja/linux/ninja cmTC_d7bf5 && [1/2] Building CXX object CMakeFiles/cmTC_d7bf5.dir/CMakeCXXCompilerABI.cpp.o] + ignore line: [Run Build Command(s):/opt/netbrains/clion/clion-2022.1.3/bin/ninja/linux/x64/ninja cmTC_06284 && [1/2] Building CXX object CMakeFiles/cmTC_06284.dir/CMakeCXXCompilerABI.cpp.o] ignore line: [Using built-in specs.] ignore line: [COLLECT_GCC=/usr/bin/c++] ignore line: [OFFLOAD_TARGET_NAMES=nvptx-none:amdgcn-amdhsa] @@ -323,8 +323,8 @@ Parsed CXX implicit link information from above output: ignore line: [Thread model: posix] ignore line: [Supported LTO compression algorithms: zlib zstd] ignore line: [gcc version 12.2.0 (Debian 12.2.0-14) ] - ignore line: [COLLECT_GCC_OPTIONS='-fdiagnostics-color=always' '-v' '-o' 'CMakeFiles/cmTC_d7bf5.dir/CMakeCXXCompilerABI.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64' '-dumpdir' 'CMakeFiles/cmTC_d7bf5.dir/'] - ignore line: [ /usr/lib/gcc/x86_64-linux-gnu/12/cc1plus -quiet -v -imultiarch x86_64-linux-gnu -D_GNU_SOURCE /opt/netbrains/clion/clion-2022.1.3/bin/cmake/linux/share/cmake-3.24/Modules/CMakeCXXCompilerABI.cpp -quiet -dumpdir CMakeFiles/cmTC_d7bf5.dir/ -dumpbase CMakeCXXCompilerABI.cpp.cpp -dumpbase-ext .cpp -mtune=generic -march=x86-64 -version -fdiagnostics-color=always -fasynchronous-unwind-tables -o /tmp/ccrEZX1N.s] + ignore line: [COLLECT_GCC_OPTIONS='-fdiagnostics-color=always' '-v' '-o' 'CMakeFiles/cmTC_06284.dir/CMakeCXXCompilerABI.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64' '-dumpdir' 'CMakeFiles/cmTC_06284.dir/'] + ignore line: [ /usr/lib/gcc/x86_64-linux-gnu/12/cc1plus -quiet -v -imultiarch x86_64-linux-gnu -D_GNU_SOURCE /opt/netbrains/clion/clion-2022.1.3/bin/cmake/linux/x64/share/cmake-3.24/Modules/CMakeCXXCompilerABI.cpp -quiet -dumpdir CMakeFiles/cmTC_06284.dir/ -dumpbase CMakeCXXCompilerABI.cpp.cpp -dumpbase-ext .cpp -mtune=generic -march=x86-64 -version -fdiagnostics-color=always -fasynchronous-unwind-tables -o /tmp/ccSJgAci.s] ignore line: [GNU C++17 (Debian 12.2.0-14) version 12.2.0 (x86_64-linux-gnu)] ignore line: [ compiled by GNU C version 12.2.0 GMP version 6.2.1 MPFR version 4.1.1-p1 MPC version 1.3.1 isl version isl-0.25-GMP] ignore line: [] @@ -350,13 +350,13 @@ Parsed CXX implicit link information from above output: ignore line: [warning: MPFR header version 4.1.1-p1 differs from library version 4.2.0.] ignore line: [GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072] ignore line: [Compiler executable checksum: 62b090dbbefa50644117a3c13d47369a] - ignore line: [COLLECT_GCC_OPTIONS='-fdiagnostics-color=always' '-v' '-o' 'CMakeFiles/cmTC_d7bf5.dir/CMakeCXXCompilerABI.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64' '-dumpdir' 'CMakeFiles/cmTC_d7bf5.dir/'] - ignore line: [ as -v --64 -o CMakeFiles/cmTC_d7bf5.dir/CMakeCXXCompilerABI.cpp.o /tmp/ccrEZX1N.s] + ignore line: [COLLECT_GCC_OPTIONS='-fdiagnostics-color=always' '-v' '-o' 'CMakeFiles/cmTC_06284.dir/CMakeCXXCompilerABI.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64' '-dumpdir' 'CMakeFiles/cmTC_06284.dir/'] + ignore line: [ as -v --64 -o CMakeFiles/cmTC_06284.dir/CMakeCXXCompilerABI.cpp.o /tmp/ccSJgAci.s] ignore line: [GNU assembler version 2.40 (x86_64-linux-gnu) using BFD version (GNU Binutils for Debian) 2.40] ignore line: [COMPILER_PATH=/usr/lib/gcc/x86_64-linux-gnu/12/:/usr/lib/gcc/x86_64-linux-gnu/12/:/usr/lib/gcc/x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/12/:/usr/lib/gcc/x86_64-linux-gnu/] ignore line: [LIBRARY_PATH=/usr/lib/gcc/x86_64-linux-gnu/12/:/usr/lib/gcc/x86_64-linux-gnu/12/../../../x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/12/../../../../lib/:/lib/x86_64-linux-gnu/:/lib/../lib/:/usr/lib/x86_64-linux-gnu/:/usr/lib/../lib/:/usr/lib/gcc/x86_64-linux-gnu/12/../../../:/lib/:/usr/lib/] - ignore line: [COLLECT_GCC_OPTIONS='-fdiagnostics-color=always' '-v' '-o' 'CMakeFiles/cmTC_d7bf5.dir/CMakeCXXCompilerABI.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64' '-dumpdir' 'CMakeFiles/cmTC_d7bf5.dir/CMakeCXXCompilerABI.cpp.'] - ignore line: [[2/2] Linking CXX executable cmTC_d7bf5] + ignore line: [COLLECT_GCC_OPTIONS='-fdiagnostics-color=always' '-v' '-o' 'CMakeFiles/cmTC_06284.dir/CMakeCXXCompilerABI.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64' '-dumpdir' 'CMakeFiles/cmTC_06284.dir/CMakeCXXCompilerABI.cpp.'] + ignore line: [[2/2] Linking CXX executable cmTC_06284] ignore line: [Using built-in specs.] ignore line: [COLLECT_GCC=/usr/bin/c++] ignore line: [COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/12/lto-wrapper] @@ -369,13 +369,13 @@ Parsed CXX implicit link information from above output: ignore line: [gcc version 12.2.0 (Debian 12.2.0-14) ] ignore line: [COMPILER_PATH=/usr/lib/gcc/x86_64-linux-gnu/12/:/usr/lib/gcc/x86_64-linux-gnu/12/:/usr/lib/gcc/x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/12/:/usr/lib/gcc/x86_64-linux-gnu/] ignore line: [LIBRARY_PATH=/usr/lib/gcc/x86_64-linux-gnu/12/:/usr/lib/gcc/x86_64-linux-gnu/12/../../../x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/12/../../../../lib/:/lib/x86_64-linux-gnu/:/lib/../lib/:/usr/lib/x86_64-linux-gnu/:/usr/lib/../lib/:/usr/lib/gcc/x86_64-linux-gnu/12/../../../:/lib/:/usr/lib/] - ignore line: [COLLECT_GCC_OPTIONS='-v' '-rdynamic' '-o' 'cmTC_d7bf5' '-shared-libgcc' '-mtune=generic' '-march=x86-64' '-dumpdir' 'cmTC_d7bf5.'] - link line: [ /usr/lib/gcc/x86_64-linux-gnu/12/collect2 -plugin /usr/lib/gcc/x86_64-linux-gnu/12/liblto_plugin.so -plugin-opt=/usr/lib/gcc/x86_64-linux-gnu/12/lto-wrapper -plugin-opt=-fresolution=/tmp/cckhJwcy.res -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lc -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lgcc --build-id --eh-frame-hdr -m elf_x86_64 --hash-style=gnu --as-needed -export-dynamic -dynamic-linker /lib64/ld-linux-x86-64.so.2 -pie -o cmTC_d7bf5 /usr/lib/gcc/x86_64-linux-gnu/12/../../../x86_64-linux-gnu/Scrt1.o /usr/lib/gcc/x86_64-linux-gnu/12/../../../x86_64-linux-gnu/crti.o /usr/lib/gcc/x86_64-linux-gnu/12/crtbeginS.o -L/usr/lib/gcc/x86_64-linux-gnu/12 -L/usr/lib/gcc/x86_64-linux-gnu/12/../../../x86_64-linux-gnu -L/usr/lib/gcc/x86_64-linux-gnu/12/../../../../lib -L/lib/x86_64-linux-gnu -L/lib/../lib -L/usr/lib/x86_64-linux-gnu -L/usr/lib/../lib -L/usr/lib/gcc/x86_64-linux-gnu/12/../../.. CMakeFiles/cmTC_d7bf5.dir/CMakeCXXCompilerABI.cpp.o -lstdc++ -lm -lgcc_s -lgcc -lc -lgcc_s -lgcc /usr/lib/gcc/x86_64-linux-gnu/12/crtendS.o /usr/lib/gcc/x86_64-linux-gnu/12/../../../x86_64-linux-gnu/crtn.o] + ignore line: [COLLECT_GCC_OPTIONS='-v' '-rdynamic' '-o' 'cmTC_06284' '-shared-libgcc' '-mtune=generic' '-march=x86-64' '-dumpdir' 'cmTC_06284.'] + link line: [ /usr/lib/gcc/x86_64-linux-gnu/12/collect2 -plugin /usr/lib/gcc/x86_64-linux-gnu/12/liblto_plugin.so -plugin-opt=/usr/lib/gcc/x86_64-linux-gnu/12/lto-wrapper -plugin-opt=-fresolution=/tmp/ccGSIyr8.res -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lc -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lgcc --build-id --eh-frame-hdr -m elf_x86_64 --hash-style=gnu --as-needed -export-dynamic -dynamic-linker /lib64/ld-linux-x86-64.so.2 -pie -o cmTC_06284 /usr/lib/gcc/x86_64-linux-gnu/12/../../../x86_64-linux-gnu/Scrt1.o /usr/lib/gcc/x86_64-linux-gnu/12/../../../x86_64-linux-gnu/crti.o /usr/lib/gcc/x86_64-linux-gnu/12/crtbeginS.o -L/usr/lib/gcc/x86_64-linux-gnu/12 -L/usr/lib/gcc/x86_64-linux-gnu/12/../../../x86_64-linux-gnu -L/usr/lib/gcc/x86_64-linux-gnu/12/../../../../lib -L/lib/x86_64-linux-gnu -L/lib/../lib -L/usr/lib/x86_64-linux-gnu -L/usr/lib/../lib -L/usr/lib/gcc/x86_64-linux-gnu/12/../../.. CMakeFiles/cmTC_06284.dir/CMakeCXXCompilerABI.cpp.o -lstdc++ -lm -lgcc_s -lgcc -lc -lgcc_s -lgcc /usr/lib/gcc/x86_64-linux-gnu/12/crtendS.o /usr/lib/gcc/x86_64-linux-gnu/12/../../../x86_64-linux-gnu/crtn.o] arg [/usr/lib/gcc/x86_64-linux-gnu/12/collect2] ==> ignore arg [-plugin] ==> ignore arg [/usr/lib/gcc/x86_64-linux-gnu/12/liblto_plugin.so] ==> ignore arg [-plugin-opt=/usr/lib/gcc/x86_64-linux-gnu/12/lto-wrapper] ==> ignore - arg [-plugin-opt=-fresolution=/tmp/cckhJwcy.res] ==> ignore + arg [-plugin-opt=-fresolution=/tmp/ccGSIyr8.res] ==> ignore arg [-plugin-opt=-pass-through=-lgcc_s] ==> ignore arg [-plugin-opt=-pass-through=-lgcc] ==> ignore arg [-plugin-opt=-pass-through=-lc] ==> ignore @@ -392,7 +392,7 @@ Parsed CXX implicit link information from above output: arg [/lib64/ld-linux-x86-64.so.2] ==> ignore arg [-pie] ==> ignore arg [-o] ==> ignore - arg [cmTC_d7bf5] ==> ignore + arg [cmTC_06284] ==> ignore arg [/usr/lib/gcc/x86_64-linux-gnu/12/../../../x86_64-linux-gnu/Scrt1.o] ==> obj [/usr/lib/gcc/x86_64-linux-gnu/12/../../../x86_64-linux-gnu/Scrt1.o] arg [/usr/lib/gcc/x86_64-linux-gnu/12/../../../x86_64-linux-gnu/crti.o] ==> obj [/usr/lib/gcc/x86_64-linux-gnu/12/../../../x86_64-linux-gnu/crti.o] arg [/usr/lib/gcc/x86_64-linux-gnu/12/crtbeginS.o] ==> obj [/usr/lib/gcc/x86_64-linux-gnu/12/crtbeginS.o] @@ -404,7 +404,7 @@ Parsed CXX implicit link information from above output: arg [-L/usr/lib/x86_64-linux-gnu] ==> dir [/usr/lib/x86_64-linux-gnu] arg [-L/usr/lib/../lib] ==> dir [/usr/lib/../lib] arg [-L/usr/lib/gcc/x86_64-linux-gnu/12/../../..] ==> dir [/usr/lib/gcc/x86_64-linux-gnu/12/../../..] - arg [CMakeFiles/cmTC_d7bf5.dir/CMakeCXXCompilerABI.cpp.o] ==> ignore + arg [CMakeFiles/cmTC_06284.dir/CMakeCXXCompilerABI.cpp.o] ==> ignore arg [-lstdc++] ==> lib [stdc++] arg [-lm] ==> lib [m] arg [-lgcc_s] ==> lib [gcc_s] @@ -434,8 +434,8 @@ Parsed CXX implicit link information from above output: Performing C SOURCE FILE Test CMAKE_HAVE_LIBC_PTHREAD succeeded with the following output: Change Dir: /home/brett/Documents/Brock/CS 3P98/Final Project/cmake-build-relwithdebinfo/CMakeFiles/CMakeTmp -Run Build Command(s):/opt/netbrains/clion/clion-2022.1.3/bin/ninja/linux/ninja cmTC_abef9 && [1/2] Building C object CMakeFiles/cmTC_abef9.dir/src.c.o -[2/2] Linking C executable cmTC_abef9 +Run Build Command(s):/opt/netbrains/clion/clion-2022.1.3/bin/ninja/linux/x64/ninja cmTC_fffe5 && [1/2] Building C object CMakeFiles/cmTC_fffe5.dir/src.c.o +[2/2] Linking C executable cmTC_fffe5 Source file was: @@ -462,64 +462,64 @@ int main(void) Determining if the function XOpenDisplay exists in the /usr/lib/x86_64-linux-gnu/libX11.so;/usr/lib/x86_64-linux-gnu/libXext.so passed with the following output: Change Dir: /home/brett/Documents/Brock/CS 3P98/Final Project/cmake-build-relwithdebinfo/CMakeFiles/CMakeTmp -Run Build Command(s):/opt/netbrains/clion/clion-2022.1.3/bin/ninja/linux/ninja cmTC_1cf64 && [1/2] Building C object CMakeFiles/cmTC_1cf64.dir/CheckFunctionExists.c.o -[2/2] Linking C executable cmTC_1cf64 +Run Build Command(s):/opt/netbrains/clion/clion-2022.1.3/bin/ninja/linux/x64/ninja cmTC_a705b && [1/2] Building C object CMakeFiles/cmTC_a705b.dir/CheckFunctionExists.c.o +[2/2] Linking C executable cmTC_a705b Determining if the function gethostbyname exists passed with the following output: Change Dir: /home/brett/Documents/Brock/CS 3P98/Final Project/cmake-build-relwithdebinfo/CMakeFiles/CMakeTmp -Run Build Command(s):/opt/netbrains/clion/clion-2022.1.3/bin/ninja/linux/ninja cmTC_976f4 && [1/2] Building C object CMakeFiles/cmTC_976f4.dir/CheckFunctionExists.c.o -[2/2] Linking C executable cmTC_976f4 +Run Build Command(s):/opt/netbrains/clion/clion-2022.1.3/bin/ninja/linux/x64/ninja cmTC_106d3 && [1/2] Building C object CMakeFiles/cmTC_106d3.dir/CheckFunctionExists.c.o +[2/2] Linking C executable cmTC_106d3 Determining if the function connect exists passed with the following output: Change Dir: /home/brett/Documents/Brock/CS 3P98/Final Project/cmake-build-relwithdebinfo/CMakeFiles/CMakeTmp -Run Build Command(s):/opt/netbrains/clion/clion-2022.1.3/bin/ninja/linux/ninja cmTC_44c1a && [1/2] Building C object CMakeFiles/cmTC_44c1a.dir/CheckFunctionExists.c.o -[2/2] Linking C executable cmTC_44c1a +Run Build Command(s):/opt/netbrains/clion/clion-2022.1.3/bin/ninja/linux/x64/ninja cmTC_73e22 && [1/2] Building C object CMakeFiles/cmTC_73e22.dir/CheckFunctionExists.c.o +[2/2] Linking C executable cmTC_73e22 Determining if the function remove exists passed with the following output: Change Dir: /home/brett/Documents/Brock/CS 3P98/Final Project/cmake-build-relwithdebinfo/CMakeFiles/CMakeTmp -Run Build Command(s):/opt/netbrains/clion/clion-2022.1.3/bin/ninja/linux/ninja cmTC_29569 && [1/2] Building C object CMakeFiles/cmTC_29569.dir/CheckFunctionExists.c.o -[2/2] Linking C executable cmTC_29569 +Run Build Command(s):/opt/netbrains/clion/clion-2022.1.3/bin/ninja/linux/x64/ninja cmTC_f2dd5 && [1/2] Building C object CMakeFiles/cmTC_f2dd5.dir/CheckFunctionExists.c.o +[2/2] Linking C executable cmTC_f2dd5 Determining if the function shmat exists passed with the following output: Change Dir: /home/brett/Documents/Brock/CS 3P98/Final Project/cmake-build-relwithdebinfo/CMakeFiles/CMakeTmp -Run Build Command(s):/opt/netbrains/clion/clion-2022.1.3/bin/ninja/linux/ninja cmTC_147ea && [1/2] Building C object CMakeFiles/cmTC_147ea.dir/CheckFunctionExists.c.o -[2/2] Linking C executable cmTC_147ea +Run Build Command(s):/opt/netbrains/clion/clion-2022.1.3/bin/ninja/linux/x64/ninja cmTC_c7afd && [1/2] Building C object CMakeFiles/cmTC_c7afd.dir/CheckFunctionExists.c.o +[2/2] Linking C executable cmTC_c7afd Determining if the function IceConnectionNumber exists in the ICE passed with the following output: Change Dir: /home/brett/Documents/Brock/CS 3P98/Final Project/cmake-build-relwithdebinfo/CMakeFiles/CMakeTmp -Run Build Command(s):/opt/netbrains/clion/clion-2022.1.3/bin/ninja/linux/ninja cmTC_1c654 && [1/2] Building C object CMakeFiles/cmTC_1c654.dir/CheckFunctionExists.c.o -[2/2] Linking C executable cmTC_1c654 +Run Build Command(s):/opt/netbrains/clion/clion-2022.1.3/bin/ninja/linux/x64/ninja cmTC_593a0 && [1/2] Building C object CMakeFiles/cmTC_593a0.dir/CheckFunctionExists.c.o +[2/2] Linking C executable cmTC_593a0 Determining if the include file unistd.h exists passed with the following output: Change Dir: /home/brett/Documents/Brock/CS 3P98/Final Project/cmake-build-relwithdebinfo/CMakeFiles/CMakeTmp -Run Build Command(s):/opt/netbrains/clion/clion-2022.1.3/bin/ninja/linux/ninja cmTC_9b359 && [1/2] Building C object CMakeFiles/cmTC_9b359.dir/CheckIncludeFile.c.o -[2/2] Linking C executable cmTC_9b359 +Run Build Command(s):/opt/netbrains/clion/clion-2022.1.3/bin/ninja/linux/x64/ninja cmTC_47097 && [1/2] Building C object CMakeFiles/cmTC_47097.dir/CheckIncludeFile.c.o +[2/2] Linking C executable cmTC_47097 Determining if the include file fcntl.h exists passed with the following output: Change Dir: /home/brett/Documents/Brock/CS 3P98/Final Project/cmake-build-relwithdebinfo/CMakeFiles/CMakeTmp -Run Build Command(s):/opt/netbrains/clion/clion-2022.1.3/bin/ninja/linux/ninja cmTC_4d55d && [1/2] Building C object CMakeFiles/cmTC_4d55d.dir/CheckIncludeFile.c.o -[2/2] Linking C executable cmTC_4d55d +Run Build Command(s):/opt/netbrains/clion/clion-2022.1.3/bin/ninja/linux/x64/ninja cmTC_3ae01 && [1/2] Building C object CMakeFiles/cmTC_3ae01.dir/CheckIncludeFile.c.o +[2/2] Linking C executable cmTC_3ae01 diff --git a/cmake-build-relwithdebinfo/CMakeFiles/FinalProject.dir/src/main.cpp.o b/cmake-build-relwithdebinfo/CMakeFiles/FinalProject.dir/src/main.cpp.o deleted file mode 100644 index 4ba4fedb4e1e22e5d97f6f13ebfc9bf5f8291445..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 736656 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�dJ8+r$xRXsjxc2QeyaC6>osgj1;BjSdz)`$A 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

KhQ7t}J`M~XfeZ)SMy^H!e*a9u|= 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%0D1pQy?o>7u#oRIJhF-*MA-MMz&Bve|;I@c@SCF8S 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%0A1s^T5-21ci);X@1` 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%0DAdbD5X{5#A!YFy@I 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ð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 diff --git a/cmake-build-relwithdebinfo/CMakeFiles/FinalProject.dir/src/render/window.cpp.o b/cmake-build-relwithdebinfo/CMakeFiles/FinalProject.dir/src/render/window.cpp.o deleted file mode 100644 index 64f790fbfa6076acb68d18efcf4600029fc498d2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 469712 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

DPJ~x4KHw8j-m1DP1 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%0AZ6m?&Q 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⪙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 +#include +#include +#include "stb/stb_image_resize.h" + +namespace fp::texture { + + class texture { + private: + std::string m_Name; + std::string m_Path; + int width = 0, height = 0, channels = 0; + unsigned char* m_Data = nullptr; + public: + texture(std::string name, std::string path): m_Name(std::move(name)), m_Path(std::move(path)) {} + + static texture* load(texture* texture) { + stbi_load(texture->m_Path.c_str(), &texture->width, &texture->height, &texture->channels, 4); + return texture; + } + + static texture* resize(texture* texture, int target_width, int target_height) { + // since stb is a c lib we must use malloc, otherwise we'd have to deal with using the right free on destruction + auto* output_Data = (unsigned char*) malloc(target_width * target_height * texture->channels); + + stbir_resize_uint8( + texture->m_Data, texture->width, texture->height, texture->width * texture->channels, output_Data, target_width, + target_height, target_width * texture->channels, texture->channels + ); + + stbi_image_free(texture->m_Data); + texture->m_Data = output_Data; + texture->width = target_width; + texture->height = target_height; + } + + unsigned char* data() { + return m_Data; + } + + ~texture() { + stbi_image_free(m_Data); + } + }; + + class palette { + private: + // as of GL3.0 this limit is 256. (4.5 extends it to 2048.) + static constexpr int MAX_ARRAY_LAYERS = 256; + + int m_CurrentTextureCount = 0; + unsigned int textureID = 0; + + public: + palette() { + + } + }; + + +} + + +#endif //FINALPROJECT_TEXTURES_H diff --git a/include/stb/stb_image.h b/include/stb/stb_image.h new file mode 100644 index 0000000..5e807a0 --- /dev/null +++ b/include/stb/stb_image.h @@ -0,0 +1,7987 @@ +/* stb_image - v2.28 - public domain image loader - http://nothings.org/stb + no warranty implied; use at your own risk + + Do this: + #define STB_IMAGE_IMPLEMENTATION + before you include this file in *one* C or C++ file to create the implementation. + + // i.e. it should look like this: + #include ... + #include ... + #include ... + #define STB_IMAGE_IMPLEMENTATION + #include "stb_image.h" + + You can #define STBI_ASSERT(x) before the #include to avoid using assert.h. + And #define STBI_MALLOC, STBI_REALLOC, and STBI_FREE to avoid using malloc,realloc,free + + + QUICK NOTES: + Primarily of interest to game developers and other people who can + avoid problematic images and only need the trivial interface + + JPEG baseline & progressive (12 bpc/arithmetic not supported, same as stock IJG lib) + PNG 1/2/4/8/16-bit-per-channel + + TGA (not sure what subset, if a subset) + BMP non-1bpp, non-RLE + PSD (composited view only, no extra channels, 8/16 bit-per-channel) + + GIF (*comp always reports as 4-channel) + HDR (radiance rgbE format) + PIC (Softimage PIC) + PNM (PPM and PGM binary only) + + Animated GIF still needs a proper API, but here's one way to do it: + http://gist.github.com/urraka/685d9a6340b26b830d49 + + - decode from memory or through FILE (define STBI_NO_STDIO to remove code) + - decode from arbitrary I/O callbacks + - SIMD acceleration on x86/x64 (SSE2) and ARM (NEON) + + Full documentation under "DOCUMENTATION" below. + + +LICENSE + + See end of file for license information. + +RECENT REVISION HISTORY: + + 2.28 (2023-01-29) many error fixes, security errors, just tons of stuff + 2.27 (2021-07-11) document stbi_info better, 16-bit PNM support, bug fixes + 2.26 (2020-07-13) many minor fixes + 2.25 (2020-02-02) fix warnings + 2.24 (2020-02-02) fix warnings; thread-local failure_reason and flip_vertically + 2.23 (2019-08-11) fix clang static analysis warning + 2.22 (2019-03-04) gif fixes, fix warnings + 2.21 (2019-02-25) fix typo in comment + 2.20 (2019-02-07) support utf8 filenames in Windows; fix warnings and platform ifdefs + 2.19 (2018-02-11) fix warning + 2.18 (2018-01-30) fix warnings + 2.17 (2018-01-29) bugfix, 1-bit BMP, 16-bitness query, fix warnings + 2.16 (2017-07-23) all functions have 16-bit variants; optimizations; bugfixes + 2.15 (2017-03-18) fix png-1,2,4; all Imagenet JPGs; no runtime SSE detection on GCC + 2.14 (2017-03-03) remove deprecated STBI_JPEG_OLD; fixes for Imagenet JPGs + 2.13 (2016-12-04) experimental 16-bit API, only for PNG so far; fixes + 2.12 (2016-04-02) fix typo in 2.11 PSD fix that caused crashes + 2.11 (2016-04-02) 16-bit PNGS; enable SSE2 in non-gcc x64 + RGB-format JPEG; remove white matting in PSD; + allocate large structures on the stack; + correct channel count for PNG & BMP + 2.10 (2016-01-22) avoid warning introduced in 2.09 + 2.09 (2016-01-16) 16-bit TGA; comments in PNM files; STBI_REALLOC_SIZED + + See end of file for full revision history. + + + ============================ Contributors ========================= + + Image formats Extensions, features + Sean Barrett (jpeg, png, bmp) Jetro Lauha (stbi_info) + Nicolas Schulz (hdr, psd) Martin "SpartanJ" Golini (stbi_info) + Jonathan Dummer (tga) James "moose2000" Brown (iPhone PNG) + Jean-Marc Lienher (gif) Ben "Disch" Wenger (io callbacks) + Tom Seddon (pic) Omar Cornut (1/2/4-bit PNG) + Thatcher Ulrich (psd) Nicolas Guillemot (vertical flip) + Ken Miller (pgm, ppm) Richard Mitton (16-bit PSD) + github:urraka (animated gif) Junggon Kim (PNM comments) + Christopher Forseth (animated gif) Daniel Gibson (16-bit TGA) + socks-the-fox (16-bit PNG) + Jeremy Sawicki (handle all ImageNet JPGs) + Optimizations & bugfixes Mikhail Morozov (1-bit BMP) + Fabian "ryg" Giesen Anael Seghezzi (is-16-bit query) + Arseny Kapoulkine Simon Breuss (16-bit PNM) + John-Mark Allen + Carmelo J Fdez-Aguera + + Bug & warning fixes + Marc LeBlanc David Woo Guillaume George Martins Mozeiko + Christpher Lloyd Jerry Jansson Joseph Thomson Blazej Dariusz Roszkowski + Phil Jordan Dave Moore Roy Eltham + Hayaki Saito Nathan Reed Won Chun + Luke Graham Johan Duparc Nick Verigakis the Horde3D community + Thomas Ruf Ronny Chevalier github:rlyeh + Janez Zemva John Bartholomew Michal Cichon github:romigrou + Jonathan Blow Ken Hamada Tero Hanninen github:svdijk + Eugene Golushkov Laurent Gomila Cort Stratton github:snagar + Aruelien Pocheville Sergio Gonzalez Thibault Reuille github:Zelex + Cass Everitt Ryamond Barbiero github:grim210 + Paul Du Bois Engin Manap Aldo Culquicondor github:sammyhw + Philipp Wiesemann Dale Weiler Oriol Ferrer Mesia github:phprus + Josh Tobin Neil Bickford Matthew Gregan github:poppolopoppo + Julian Raschke Gregory Mullen Christian Floisand github:darealshinji + Baldur Karlsson Kevin Schmidt JR Smith github:Michaelangel007 + Brad Weinberger Matvey Cherevko github:mosra + Luca Sas Alexander Veselov Zack Middleton [reserved] + Ryan C. Gordon [reserved] [reserved] + DO NOT ADD YOUR NAME HERE + + Jacko Dirks + + To add your name to the credits, pick a random blank space in the middle and fill it. + 80% of merge conflicts on stb PRs are due to people adding their name at the end + of the credits. +*/ + +#ifndef STBI_INCLUDE_STB_IMAGE_H +#define STBI_INCLUDE_STB_IMAGE_H + +// DOCUMENTATION +// +// Limitations: +// - no 12-bit-per-channel JPEG +// - no JPEGs with arithmetic coding +// - GIF always returns *comp=4 +// +// Basic usage (see HDR discussion below for HDR usage): +// int x,y,n; +// unsigned char *data = stbi_load(filename, &x, &y, &n, 0); +// // ... process data if not NULL ... +// // ... x = width, y = height, n = # 8-bit components per pixel ... +// // ... replace '0' with '1'..'4' to force that many components per pixel +// // ... but 'n' will always be the number that it would have been if you said 0 +// stbi_image_free(data); +// +// Standard parameters: +// int *x -- outputs image width in pixels +// int *y -- outputs image height in pixels +// int *channels_in_file -- outputs # of image components in image file +// int desired_channels -- if non-zero, # of image components requested in result +// +// The return value from an image loader is an 'unsigned char *' which points +// to the pixel data, or NULL on an allocation failure or if the image is +// corrupt or invalid. The pixel data consists of *y scanlines of *x pixels, +// with each pixel consisting of N interleaved 8-bit components; the first +// pixel pointed to is top-left-most in the image. There is no padding between +// image scanlines or between pixels, regardless of format. The number of +// components N is 'desired_channels' if desired_channels is non-zero, or +// *channels_in_file otherwise. If desired_channels is non-zero, +// *channels_in_file has the number of components that _would_ have been +// output otherwise. E.g. if you set desired_channels to 4, you will always +// get RGBA output, but you can check *channels_in_file to see if it's trivially +// opaque because e.g. there were only 3 channels in the source image. +// +// An output image with N components has the following components interleaved +// in this order in each pixel: +// +// N=#comp components +// 1 grey +// 2 grey, alpha +// 3 red, green, blue +// 4 red, green, blue, alpha +// +// If image loading fails for any reason, the return value will be NULL, +// and *x, *y, *channels_in_file will be unchanged. The function +// stbi_failure_reason() can be queried for an extremely brief, end-user +// unfriendly explanation of why the load failed. Define STBI_NO_FAILURE_STRINGS +// to avoid compiling these strings at all, and STBI_FAILURE_USERMSG to get slightly +// more user-friendly ones. +// +// Paletted PNG, BMP, GIF, and PIC images are automatically depalettized. +// +// To query the width, height and component count of an image without having to +// decode the full file, you can use the stbi_info family of functions: +// +// int x,y,n,ok; +// ok = stbi_info(filename, &x, &y, &n); +// // returns ok=1 and sets x, y, n if image is a supported format, +// // 0 otherwise. +// +// Note that stb_image pervasively uses ints in its public API for sizes, +// including sizes of memory buffers. This is now part of the API and thus +// hard to change without causing breakage. As a result, the various image +// loaders all have certain limits on image size; these differ somewhat +// by format but generally boil down to either just under 2GB or just under +// 1GB. When the decoded image would be larger than this, stb_image decoding +// will fail. +// +// Additionally, stb_image will reject image files that have any of their +// dimensions set to a larger value than the configurable STBI_MAX_DIMENSIONS, +// which defaults to 2**24 = 16777216 pixels. Due to the above memory limit, +// the only way to have an image with such dimensions load correctly +// is for it to have a rather extreme aspect ratio. Either way, the +// assumption here is that such larger images are likely to be malformed +// or malicious. If you do need to load an image with individual dimensions +// larger than that, and it still fits in the overall size limit, you can +// #define STBI_MAX_DIMENSIONS on your own to be something larger. +// +// =========================================================================== +// +// UNICODE: +// +// If compiling for Windows and you wish to use Unicode filenames, compile +// with +// #define STBI_WINDOWS_UTF8 +// and pass utf8-encoded filenames. Call stbi_convert_wchar_to_utf8 to convert +// Windows wchar_t filenames to utf8. +// +// =========================================================================== +// +// Philosophy +// +// stb libraries are designed with the following priorities: +// +// 1. easy to use +// 2. easy to maintain +// 3. good performance +// +// Sometimes I let "good performance" creep up in priority over "easy to maintain", +// and for best performance I may provide less-easy-to-use APIs that give higher +// performance, in addition to the easy-to-use ones. Nevertheless, it's important +// to keep in mind that from the standpoint of you, a client of this library, +// all you care about is #1 and #3, and stb libraries DO NOT emphasize #3 above all. +// +// Some secondary priorities arise directly from the first two, some of which +// provide more explicit reasons why performance can't be emphasized. +// +// - Portable ("ease of use") +// - Small source code footprint ("easy to maintain") +// - No dependencies ("ease of use") +// +// =========================================================================== +// +// I/O callbacks +// +// I/O callbacks allow you to read from arbitrary sources, like packaged +// files or some other source. Data read from callbacks are processed +// through a small internal buffer (currently 128 bytes) to try to reduce +// overhead. +// +// The three functions you must define are "read" (reads some bytes of data), +// "skip" (skips some bytes of data), "eof" (reports if the stream is at the end). +// +// =========================================================================== +// +// SIMD support +// +// The JPEG decoder will try to automatically use SIMD kernels on x86 when +// supported by the compiler. For ARM Neon support, you must explicitly +// request it. +// +// (The old do-it-yourself SIMD API is no longer supported in the current +// code.) +// +// On x86, SSE2 will automatically be used when available based on a run-time +// test; if not, the generic C versions are used as a fall-back. On ARM targets, +// the typical path is to have separate builds for NEON and non-NEON devices +// (at least this is true for iOS and Android). Therefore, the NEON support is +// toggled by a build flag: define STBI_NEON to get NEON loops. +// +// If for some reason you do not want to use any of SIMD code, or if +// you have issues compiling it, you can disable it entirely by +// defining STBI_NO_SIMD. +// +// =========================================================================== +// +// HDR image support (disable by defining STBI_NO_HDR) +// +// stb_image supports loading HDR images in general, and currently the Radiance +// .HDR file format specifically. You can still load any file through the existing +// interface; if you attempt to load an HDR file, it will be automatically remapped +// to LDR, assuming gamma 2.2 and an arbitrary scale factor defaulting to 1; +// both of these constants can be reconfigured through this interface: +// +// stbi_hdr_to_ldr_gamma(2.2f); +// stbi_hdr_to_ldr_scale(1.0f); +// +// (note, do not use _inverse_ constants; stbi_image will invert them +// appropriately). +// +// Additionally, there is a new, parallel interface for loading files as +// (linear) floats to preserve the full dynamic range: +// +// float *data = stbi_loadf(filename, &x, &y, &n, 0); +// +// If you load LDR images through this interface, those images will +// be promoted to floating point values, run through the inverse of +// constants corresponding to the above: +// +// stbi_ldr_to_hdr_scale(1.0f); +// stbi_ldr_to_hdr_gamma(2.2f); +// +// Finally, given a filename (or an open file or memory block--see header +// file for details) containing image data, you can query for the "most +// appropriate" interface to use (that is, whether the image is HDR or +// not), using: +// +// stbi_is_hdr(char *filename); +// +// =========================================================================== +// +// iPhone PNG support: +// +// We optionally support converting iPhone-formatted PNGs (which store +// premultiplied BGRA) back to RGB, even though they're internally encoded +// differently. To enable this conversion, call +// stbi_convert_iphone_png_to_rgb(1). +// +// Call stbi_set_unpremultiply_on_load(1) as well to force a divide per +// pixel to remove any premultiplied alpha *only* if the image file explicitly +// says there's premultiplied data (currently only happens in iPhone images, +// and only if iPhone convert-to-rgb processing is on). +// +// =========================================================================== +// +// ADDITIONAL CONFIGURATION +// +// - You can suppress implementation of any of the decoders to reduce +// your code footprint by #defining one or more of the following +// symbols before creating the implementation. +// +// STBI_NO_JPEG +// STBI_NO_PNG +// STBI_NO_BMP +// STBI_NO_PSD +// STBI_NO_TGA +// STBI_NO_GIF +// STBI_NO_HDR +// STBI_NO_PIC +// STBI_NO_PNM (.ppm and .pgm) +// +// - You can request *only* certain decoders and suppress all other ones +// (this will be more forward-compatible, as addition of new decoders +// doesn't require you to disable them explicitly): +// +// STBI_ONLY_JPEG +// STBI_ONLY_PNG +// STBI_ONLY_BMP +// STBI_ONLY_PSD +// STBI_ONLY_TGA +// STBI_ONLY_GIF +// STBI_ONLY_HDR +// STBI_ONLY_PIC +// STBI_ONLY_PNM (.ppm and .pgm) +// +// - If you use STBI_NO_PNG (or _ONLY_ without PNG), and you still +// want the zlib decoder to be available, #define STBI_SUPPORT_ZLIB +// +// - If you define STBI_MAX_DIMENSIONS, stb_image will reject images greater +// than that size (in either width or height) without further processing. +// This is to let programs in the wild set an upper bound to prevent +// denial-of-service attacks on untrusted data, as one could generate a +// valid image of gigantic dimensions and force stb_image to allocate a +// huge block of memory and spend disproportionate time decoding it. By +// default this is set to (1 << 24), which is 16777216, but that's still +// very big. + +#ifndef STBI_NO_STDIO +#include +#endif // STBI_NO_STDIO + +#define STBI_VERSION 1 + +enum +{ + STBI_default = 0, // only used for desired_channels + + STBI_grey = 1, + STBI_grey_alpha = 2, + STBI_rgb = 3, + STBI_rgb_alpha = 4 +}; + +#include +typedef unsigned char stbi_uc; +typedef unsigned short stbi_us; + +#ifdef __cplusplus +extern "C" { +#endif + +#ifndef STBIDEF +#ifdef STB_IMAGE_STATIC +#define STBIDEF static +#else +#define STBIDEF extern +#endif +#endif + +////////////////////////////////////////////////////////////////////////////// +// +// PRIMARY API - works on images of any type +// + +// +// load image by filename, open file, or memory buffer +// + +typedef struct +{ + int (*read) (void *user,char *data,int size); // fill 'data' with 'size' bytes. return number of bytes actually read + void (*skip) (void *user,int n); // skip the next 'n' bytes, or 'unget' the last -n bytes if negative + int (*eof) (void *user); // returns nonzero if we are at end of file/data +} stbi_io_callbacks; + +//////////////////////////////////// +// +// 8-bits-per-channel interface +// + +STBIDEF stbi_uc *stbi_load_from_memory (stbi_uc const *buffer, int len , int *x, int *y, int *channels_in_file, int desired_channels); +STBIDEF stbi_uc *stbi_load_from_callbacks(stbi_io_callbacks const *clbk , void *user, int *x, int *y, int *channels_in_file, int desired_channels); + +#ifndef STBI_NO_STDIO +STBIDEF stbi_uc *stbi_load (char const *filename, int *x, int *y, int *channels_in_file, int desired_channels); +STBIDEF stbi_uc *stbi_load_from_file (FILE *f, int *x, int *y, int *channels_in_file, int desired_channels); +// for stbi_load_from_file, file pointer is left pointing immediately after image +#endif + +#ifndef STBI_NO_GIF +STBIDEF stbi_uc *stbi_load_gif_from_memory(stbi_uc const *buffer, int len, int **delays, int *x, int *y, int *z, int *comp, int req_comp); +#endif + +#ifdef STBI_WINDOWS_UTF8 +STBIDEF int stbi_convert_wchar_to_utf8(char *buffer, size_t bufferlen, const wchar_t* input); +#endif + +//////////////////////////////////// +// +// 16-bits-per-channel interface +// + +STBIDEF stbi_us *stbi_load_16_from_memory (stbi_uc const *buffer, int len, int *x, int *y, int *channels_in_file, int desired_channels); +STBIDEF stbi_us *stbi_load_16_from_callbacks(stbi_io_callbacks const *clbk, void *user, int *x, int *y, int *channels_in_file, int desired_channels); + +#ifndef STBI_NO_STDIO +STBIDEF stbi_us *stbi_load_16 (char const *filename, int *x, int *y, int *channels_in_file, int desired_channels); +STBIDEF stbi_us *stbi_load_from_file_16(FILE *f, int *x, int *y, int *channels_in_file, int desired_channels); +#endif + +//////////////////////////////////// +// +// float-per-channel interface +// +#ifndef STBI_NO_LINEAR + STBIDEF float *stbi_loadf_from_memory (stbi_uc const *buffer, int len, int *x, int *y, int *channels_in_file, int desired_channels); + STBIDEF float *stbi_loadf_from_callbacks (stbi_io_callbacks const *clbk, void *user, int *x, int *y, int *channels_in_file, int desired_channels); + + #ifndef STBI_NO_STDIO + STBIDEF float *stbi_loadf (char const *filename, int *x, int *y, int *channels_in_file, int desired_channels); + STBIDEF float *stbi_loadf_from_file (FILE *f, int *x, int *y, int *channels_in_file, int desired_channels); + #endif +#endif + +#ifndef STBI_NO_HDR + STBIDEF void stbi_hdr_to_ldr_gamma(float gamma); + STBIDEF void stbi_hdr_to_ldr_scale(float scale); +#endif // STBI_NO_HDR + +#ifndef STBI_NO_LINEAR + STBIDEF void stbi_ldr_to_hdr_gamma(float gamma); + STBIDEF void stbi_ldr_to_hdr_scale(float scale); +#endif // STBI_NO_LINEAR + +// stbi_is_hdr is always defined, but always returns false if STBI_NO_HDR +STBIDEF int stbi_is_hdr_from_callbacks(stbi_io_callbacks const *clbk, void *user); +STBIDEF int stbi_is_hdr_from_memory(stbi_uc const *buffer, int len); +#ifndef STBI_NO_STDIO +STBIDEF int stbi_is_hdr (char const *filename); +STBIDEF int stbi_is_hdr_from_file(FILE *f); +#endif // STBI_NO_STDIO + + +// get a VERY brief reason for failure +// on most compilers (and ALL modern mainstream compilers) this is threadsafe +STBIDEF const char *stbi_failure_reason (void); + +// free the loaded image -- this is just free() +STBIDEF void stbi_image_free (void *retval_from_stbi_load); + +// get image dimensions & components without fully decoding +STBIDEF int stbi_info_from_memory(stbi_uc const *buffer, int len, int *x, int *y, int *comp); +STBIDEF int stbi_info_from_callbacks(stbi_io_callbacks const *clbk, void *user, int *x, int *y, int *comp); +STBIDEF int stbi_is_16_bit_from_memory(stbi_uc const *buffer, int len); +STBIDEF int stbi_is_16_bit_from_callbacks(stbi_io_callbacks const *clbk, void *user); + +#ifndef STBI_NO_STDIO +STBIDEF int stbi_info (char const *filename, int *x, int *y, int *comp); +STBIDEF int stbi_info_from_file (FILE *f, int *x, int *y, int *comp); +STBIDEF int stbi_is_16_bit (char const *filename); +STBIDEF int stbi_is_16_bit_from_file(FILE *f); +#endif + + + +// for image formats that explicitly notate that they have premultiplied alpha, +// we just return the colors as stored in the file. set this flag to force +// unpremultiplication. results are undefined if the unpremultiply overflow. +STBIDEF void stbi_set_unpremultiply_on_load(int flag_true_if_should_unpremultiply); + +// indicate whether we should process iphone images back to canonical format, +// or just pass them through "as-is" +STBIDEF void stbi_convert_iphone_png_to_rgb(int flag_true_if_should_convert); + +// flip the image vertically, so the first pixel in the output array is the bottom left +STBIDEF void stbi_set_flip_vertically_on_load(int flag_true_if_should_flip); + +// as above, but only applies to images loaded on the thread that calls the function +// this function is only available if your compiler supports thread-local variables; +// calling it will fail to link if your compiler doesn't +STBIDEF void stbi_set_unpremultiply_on_load_thread(int flag_true_if_should_unpremultiply); +STBIDEF void stbi_convert_iphone_png_to_rgb_thread(int flag_true_if_should_convert); +STBIDEF void stbi_set_flip_vertically_on_load_thread(int flag_true_if_should_flip); + +// ZLIB client - used by PNG, available for other purposes + +STBIDEF char *stbi_zlib_decode_malloc_guesssize(const char *buffer, int len, int initial_size, int *outlen); +STBIDEF char *stbi_zlib_decode_malloc_guesssize_headerflag(const char *buffer, int len, int initial_size, int *outlen, int parse_header); +STBIDEF char *stbi_zlib_decode_malloc(const char *buffer, int len, int *outlen); +STBIDEF int stbi_zlib_decode_buffer(char *obuffer, int olen, const char *ibuffer, int ilen); + +STBIDEF char *stbi_zlib_decode_noheader_malloc(const char *buffer, int len, int *outlen); +STBIDEF int stbi_zlib_decode_noheader_buffer(char *obuffer, int olen, const char *ibuffer, int ilen); + + +#ifdef __cplusplus +} +#endif + +// +// +//// end header file ///////////////////////////////////////////////////// +#endif // STBI_INCLUDE_STB_IMAGE_H + +#ifdef STB_IMAGE_IMPLEMENTATION + +#if defined(STBI_ONLY_JPEG) || defined(STBI_ONLY_PNG) || defined(STBI_ONLY_BMP) \ + || defined(STBI_ONLY_TGA) || defined(STBI_ONLY_GIF) || defined(STBI_ONLY_PSD) \ + || defined(STBI_ONLY_HDR) || defined(STBI_ONLY_PIC) || defined(STBI_ONLY_PNM) \ + || defined(STBI_ONLY_ZLIB) + #ifndef STBI_ONLY_JPEG + #define STBI_NO_JPEG + #endif + #ifndef STBI_ONLY_PNG + #define STBI_NO_PNG + #endif + #ifndef STBI_ONLY_BMP + #define STBI_NO_BMP + #endif + #ifndef STBI_ONLY_PSD + #define STBI_NO_PSD + #endif + #ifndef STBI_ONLY_TGA + #define STBI_NO_TGA + #endif + #ifndef STBI_ONLY_GIF + #define STBI_NO_GIF + #endif + #ifndef STBI_ONLY_HDR + #define STBI_NO_HDR + #endif + #ifndef STBI_ONLY_PIC + #define STBI_NO_PIC + #endif + #ifndef STBI_ONLY_PNM + #define STBI_NO_PNM + #endif +#endif + +#if defined(STBI_NO_PNG) && !defined(STBI_SUPPORT_ZLIB) && !defined(STBI_NO_ZLIB) +#define STBI_NO_ZLIB +#endif + + +#include +#include // ptrdiff_t on osx +#include +#include +#include + +#if !defined(STBI_NO_LINEAR) || !defined(STBI_NO_HDR) +#include // ldexp, pow +#endif + +#ifndef STBI_NO_STDIO +#include +#endif + +#ifndef STBI_ASSERT +#include +#define STBI_ASSERT(x) assert(x) +#endif + +#ifdef __cplusplus +#define STBI_EXTERN extern "C" +#else +#define STBI_EXTERN extern +#endif + + +#ifndef _MSC_VER + #ifdef __cplusplus + #define stbi_inline inline + #else + #define stbi_inline + #endif +#else + #define stbi_inline __forceinline +#endif + +#ifndef STBI_NO_THREAD_LOCALS + #if defined(__cplusplus) && __cplusplus >= 201103L + #define STBI_THREAD_LOCAL thread_local + #elif defined(__GNUC__) && __GNUC__ < 5 + #define STBI_THREAD_LOCAL __thread + #elif defined(_MSC_VER) + #define STBI_THREAD_LOCAL __declspec(thread) + #elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 201112L && !defined(__STDC_NO_THREADS__) + #define STBI_THREAD_LOCAL _Thread_local + #endif + + #ifndef STBI_THREAD_LOCAL + #if defined(__GNUC__) + #define STBI_THREAD_LOCAL __thread + #endif + #endif +#endif + +#if defined(_MSC_VER) || defined(__SYMBIAN32__) +typedef unsigned short stbi__uint16; +typedef signed short stbi__int16; +typedef unsigned int stbi__uint32; +typedef signed int stbi__int32; +#else +#include +typedef uint16_t stbi__uint16; +typedef int16_t stbi__int16; +typedef uint32_t stbi__uint32; +typedef int32_t stbi__int32; +#endif + +// should produce compiler error if size is wrong +typedef unsigned char validate_uint32[sizeof(stbi__uint32)==4 ? 1 : -1]; + +#ifdef _MSC_VER +#define STBI_NOTUSED(v) (void)(v) +#else +#define STBI_NOTUSED(v) (void)sizeof(v) +#endif + +#ifdef _MSC_VER +#define STBI_HAS_LROTL +#endif + +#ifdef STBI_HAS_LROTL + #define stbi_lrot(x,y) _lrotl(x,y) +#else + #define stbi_lrot(x,y) (((x) << (y)) | ((x) >> (-(y) & 31))) +#endif + +#if defined(STBI_MALLOC) && defined(STBI_FREE) && (defined(STBI_REALLOC) || defined(STBI_REALLOC_SIZED)) +// ok +#elif !defined(STBI_MALLOC) && !defined(STBI_FREE) && !defined(STBI_REALLOC) && !defined(STBI_REALLOC_SIZED) +// ok +#else +#error "Must define all or none of STBI_MALLOC, STBI_FREE, and STBI_REALLOC (or STBI_REALLOC_SIZED)." +#endif + +#ifndef STBI_MALLOC +#define STBI_MALLOC(sz) malloc(sz) +#define STBI_REALLOC(p,newsz) realloc(p,newsz) +#define STBI_FREE(p) free(p) +#endif + +#ifndef STBI_REALLOC_SIZED +#define STBI_REALLOC_SIZED(p,oldsz,newsz) STBI_REALLOC(p,newsz) +#endif + +// x86/x64 detection +#if defined(__x86_64__) || defined(_M_X64) +#define STBI__X64_TARGET +#elif defined(__i386) || defined(_M_IX86) +#define STBI__X86_TARGET +#endif + +#if defined(__GNUC__) && defined(STBI__X86_TARGET) && !defined(__SSE2__) && !defined(STBI_NO_SIMD) +// gcc doesn't support sse2 intrinsics unless you compile with -msse2, +// which in turn means it gets to use SSE2 everywhere. This is unfortunate, +// but previous attempts to provide the SSE2 functions with runtime +// detection caused numerous issues. The way architecture extensions are +// exposed in GCC/Clang is, sadly, not really suited for one-file libs. +// New behavior: if compiled with -msse2, we use SSE2 without any +// detection; if not, we don't use it at all. +#define STBI_NO_SIMD +#endif + +#if defined(__MINGW32__) && defined(STBI__X86_TARGET) && !defined(STBI_MINGW_ENABLE_SSE2) && !defined(STBI_NO_SIMD) +// Note that __MINGW32__ doesn't actually mean 32-bit, so we have to avoid STBI__X64_TARGET +// +// 32-bit MinGW wants ESP to be 16-byte aligned, but this is not in the +// Windows ABI and VC++ as well as Windows DLLs don't maintain that invariant. +// As a result, enabling SSE2 on 32-bit MinGW is dangerous when not +// simultaneously enabling "-mstackrealign". +// +// See https://github.com/nothings/stb/issues/81 for more information. +// +// So default to no SSE2 on 32-bit MinGW. If you've read this far and added +// -mstackrealign to your build settings, feel free to #define STBI_MINGW_ENABLE_SSE2. +#define STBI_NO_SIMD +#endif + +#if !defined(STBI_NO_SIMD) && (defined(STBI__X86_TARGET) || defined(STBI__X64_TARGET)) +#define STBI_SSE2 +#include + +#ifdef _MSC_VER + +#if _MSC_VER >= 1400 // not VC6 +#include // __cpuid +static int stbi__cpuid3(void) +{ + int info[4]; + __cpuid(info,1); + return info[3]; +} +#else +static int stbi__cpuid3(void) +{ + int res; + __asm { + mov eax,1 + cpuid + mov res,edx + } + return res; +} +#endif + +#define STBI_SIMD_ALIGN(type, name) __declspec(align(16)) type name + +#if !defined(STBI_NO_JPEG) && defined(STBI_SSE2) +static int stbi__sse2_available(void) +{ + int info3 = stbi__cpuid3(); + return ((info3 >> 26) & 1) != 0; +} +#endif + +#else // assume GCC-style if not VC++ +#define STBI_SIMD_ALIGN(type, name) type name __attribute__((aligned(16))) + +#if !defined(STBI_NO_JPEG) && defined(STBI_SSE2) +static int stbi__sse2_available(void) +{ + // If we're even attempting to compile this on GCC/Clang, that means + // -msse2 is on, which means the compiler is allowed to use SSE2 + // instructions at will, and so are we. + return 1; +} +#endif + +#endif +#endif + +// ARM NEON +#if defined(STBI_NO_SIMD) && defined(STBI_NEON) +#undef STBI_NEON +#endif + +#ifdef STBI_NEON +#include +#ifdef _MSC_VER +#define STBI_SIMD_ALIGN(type, name) __declspec(align(16)) type name +#else +#define STBI_SIMD_ALIGN(type, name) type name __attribute__((aligned(16))) +#endif +#endif + +#ifndef STBI_SIMD_ALIGN +#define STBI_SIMD_ALIGN(type, name) type name +#endif + +#ifndef STBI_MAX_DIMENSIONS +#define STBI_MAX_DIMENSIONS (1 << 24) +#endif + +/////////////////////////////////////////////// +// +// stbi__context struct and start_xxx functions + +// stbi__context structure is our basic context used by all images, so it +// contains all the IO context, plus some basic image information +typedef struct +{ + stbi__uint32 img_x, img_y; + int img_n, img_out_n; + + stbi_io_callbacks io; + void *io_user_data; + + int read_from_callbacks; + int buflen; + stbi_uc buffer_start[128]; + int callback_already_read; + + stbi_uc *img_buffer, *img_buffer_end; + stbi_uc *img_buffer_original, *img_buffer_original_end; +} stbi__context; + + +static void stbi__refill_buffer(stbi__context *s); + +// initialize a memory-decode context +static void stbi__start_mem(stbi__context *s, stbi_uc const *buffer, int len) +{ + s->io.read = NULL; + s->read_from_callbacks = 0; + s->callback_already_read = 0; + s->img_buffer = s->img_buffer_original = (stbi_uc *) buffer; + s->img_buffer_end = s->img_buffer_original_end = (stbi_uc *) buffer+len; +} + +// initialize a callback-based context +static void stbi__start_callbacks(stbi__context *s, stbi_io_callbacks *c, void *user) +{ + s->io = *c; + s->io_user_data = user; + s->buflen = sizeof(s->buffer_start); + s->read_from_callbacks = 1; + s->callback_already_read = 0; + s->img_buffer = s->img_buffer_original = s->buffer_start; + stbi__refill_buffer(s); + s->img_buffer_original_end = s->img_buffer_end; +} + +#ifndef STBI_NO_STDIO + +static int stbi__stdio_read(void *user, char *data, int size) +{ + return (int) fread(data,1,size,(FILE*) user); +} + +static void stbi__stdio_skip(void *user, int n) +{ + int ch; + fseek((FILE*) user, n, SEEK_CUR); + ch = fgetc((FILE*) user); /* have to read a byte to reset feof()'s flag */ + if (ch != EOF) { + ungetc(ch, (FILE *) user); /* push byte back onto stream if valid. */ + } +} + +static int stbi__stdio_eof(void *user) +{ + return feof((FILE*) user) || ferror((FILE *) user); +} + +static stbi_io_callbacks stbi__stdio_callbacks = +{ + stbi__stdio_read, + stbi__stdio_skip, + stbi__stdio_eof, +}; + +static void stbi__start_file(stbi__context *s, FILE *f) +{ + stbi__start_callbacks(s, &stbi__stdio_callbacks, (void *) f); +} + +//static void stop_file(stbi__context *s) { } + +#endif // !STBI_NO_STDIO + +static void stbi__rewind(stbi__context *s) +{ + // conceptually rewind SHOULD rewind to the beginning of the stream, + // but we just rewind to the beginning of the initial buffer, because + // we only use it after doing 'test', which only ever looks at at most 92 bytes + s->img_buffer = s->img_buffer_original; + s->img_buffer_end = s->img_buffer_original_end; +} + +enum +{ + STBI_ORDER_RGB, + STBI_ORDER_BGR +}; + +typedef struct +{ + int bits_per_channel; + int num_channels; + int channel_order; +} stbi__result_info; + +#ifndef STBI_NO_JPEG +static int stbi__jpeg_test(stbi__context *s); +static void *stbi__jpeg_load(stbi__context *s, int *x, int *y, int *comp, int req_comp, stbi__result_info *ri); +static int stbi__jpeg_info(stbi__context *s, int *x, int *y, int *comp); +#endif + +#ifndef STBI_NO_PNG +static int stbi__png_test(stbi__context *s); +static void *stbi__png_load(stbi__context *s, int *x, int *y, int *comp, int req_comp, stbi__result_info *ri); +static int stbi__png_info(stbi__context *s, int *x, int *y, int *comp); +static int stbi__png_is16(stbi__context *s); +#endif + +#ifndef STBI_NO_BMP +static int stbi__bmp_test(stbi__context *s); +static void *stbi__bmp_load(stbi__context *s, int *x, int *y, int *comp, int req_comp, stbi__result_info *ri); +static int stbi__bmp_info(stbi__context *s, int *x, int *y, int *comp); +#endif + +#ifndef STBI_NO_TGA +static int stbi__tga_test(stbi__context *s); +static void *stbi__tga_load(stbi__context *s, int *x, int *y, int *comp, int req_comp, stbi__result_info *ri); +static int stbi__tga_info(stbi__context *s, int *x, int *y, int *comp); +#endif + +#ifndef STBI_NO_PSD +static int stbi__psd_test(stbi__context *s); +static void *stbi__psd_load(stbi__context *s, int *x, int *y, int *comp, int req_comp, stbi__result_info *ri, int bpc); +static int stbi__psd_info(stbi__context *s, int *x, int *y, int *comp); +static int stbi__psd_is16(stbi__context *s); +#endif + +#ifndef STBI_NO_HDR +static int stbi__hdr_test(stbi__context *s); +static float *stbi__hdr_load(stbi__context *s, int *x, int *y, int *comp, int req_comp, stbi__result_info *ri); +static int stbi__hdr_info(stbi__context *s, int *x, int *y, int *comp); +#endif + +#ifndef STBI_NO_PIC +static int stbi__pic_test(stbi__context *s); +static void *stbi__pic_load(stbi__context *s, int *x, int *y, int *comp, int req_comp, stbi__result_info *ri); +static int stbi__pic_info(stbi__context *s, int *x, int *y, int *comp); +#endif + +#ifndef STBI_NO_GIF +static int stbi__gif_test(stbi__context *s); +static void *stbi__gif_load(stbi__context *s, int *x, int *y, int *comp, int req_comp, stbi__result_info *ri); +static void *stbi__load_gif_main(stbi__context *s, int **delays, int *x, int *y, int *z, int *comp, int req_comp); +static int stbi__gif_info(stbi__context *s, int *x, int *y, int *comp); +#endif + +#ifndef STBI_NO_PNM +static int stbi__pnm_test(stbi__context *s); +static void *stbi__pnm_load(stbi__context *s, int *x, int *y, int *comp, int req_comp, stbi__result_info *ri); +static int stbi__pnm_info(stbi__context *s, int *x, int *y, int *comp); +static int stbi__pnm_is16(stbi__context *s); +#endif + +static +#ifdef STBI_THREAD_LOCAL +STBI_THREAD_LOCAL +#endif +const char *stbi__g_failure_reason; + +STBIDEF const char *stbi_failure_reason(void) +{ + return stbi__g_failure_reason; +} + +#ifndef STBI_NO_FAILURE_STRINGS +static int stbi__err(const char *str) +{ + stbi__g_failure_reason = str; + return 0; +} +#endif + +static void *stbi__malloc(size_t size) +{ + return STBI_MALLOC(size); +} + +// stb_image uses ints pervasively, including for offset calculations. +// therefore the largest decoded image size we can support with the +// current code, even on 64-bit targets, is INT_MAX. this is not a +// significant limitation for the intended use case. +// +// we do, however, need to make sure our size calculations don't +// overflow. hence a few helper functions for size calculations that +// multiply integers together, making sure that they're non-negative +// and no overflow occurs. + +// return 1 if the sum is valid, 0 on overflow. +// negative terms are considered invalid. +static int stbi__addsizes_valid(int a, int b) +{ + if (b < 0) return 0; + // now 0 <= b <= INT_MAX, hence also + // 0 <= INT_MAX - b <= INTMAX. + // And "a + b <= INT_MAX" (which might overflow) is the + // same as a <= INT_MAX - b (no overflow) + return a <= INT_MAX - b; +} + +// returns 1 if the product is valid, 0 on overflow. +// negative factors are considered invalid. +static int stbi__mul2sizes_valid(int a, int b) +{ + if (a < 0 || b < 0) return 0; + if (b == 0) return 1; // mul-by-0 is always safe + // portable way to check for no overflows in a*b + return a <= INT_MAX/b; +} + +#if !defined(STBI_NO_JPEG) || !defined(STBI_NO_PNG) || !defined(STBI_NO_TGA) || !defined(STBI_NO_HDR) +// returns 1 if "a*b + add" has no negative terms/factors and doesn't overflow +static int stbi__mad2sizes_valid(int a, int b, int add) +{ + return stbi__mul2sizes_valid(a, b) && stbi__addsizes_valid(a*b, add); +} +#endif + +// returns 1 if "a*b*c + add" has no negative terms/factors and doesn't overflow +static int stbi__mad3sizes_valid(int a, int b, int c, int add) +{ + return stbi__mul2sizes_valid(a, b) && stbi__mul2sizes_valid(a*b, c) && + stbi__addsizes_valid(a*b*c, add); +} + +// returns 1 if "a*b*c*d + add" has no negative terms/factors and doesn't overflow +#if !defined(STBI_NO_LINEAR) || !defined(STBI_NO_HDR) || !defined(STBI_NO_PNM) +static int stbi__mad4sizes_valid(int a, int b, int c, int d, int add) +{ + return stbi__mul2sizes_valid(a, b) && stbi__mul2sizes_valid(a*b, c) && + stbi__mul2sizes_valid(a*b*c, d) && stbi__addsizes_valid(a*b*c*d, add); +} +#endif + +#if !defined(STBI_NO_JPEG) || !defined(STBI_NO_PNG) || !defined(STBI_NO_TGA) || !defined(STBI_NO_HDR) +// mallocs with size overflow checking +static void *stbi__malloc_mad2(int a, int b, int add) +{ + if (!stbi__mad2sizes_valid(a, b, add)) return NULL; + return stbi__malloc(a*b + add); +} +#endif + +static void *stbi__malloc_mad3(int a, int b, int c, int add) +{ + if (!stbi__mad3sizes_valid(a, b, c, add)) return NULL; + return stbi__malloc(a*b*c + add); +} + +#if !defined(STBI_NO_LINEAR) || !defined(STBI_NO_HDR) || !defined(STBI_NO_PNM) +static void *stbi__malloc_mad4(int a, int b, int c, int d, int add) +{ + if (!stbi__mad4sizes_valid(a, b, c, d, add)) return NULL; + return stbi__malloc(a*b*c*d + add); +} +#endif + +// returns 1 if the sum of two signed ints is valid (between -2^31 and 2^31-1 inclusive), 0 on overflow. +static int stbi__addints_valid(int a, int b) +{ + if ((a >= 0) != (b >= 0)) return 1; // a and b have different signs, so no overflow + if (a < 0 && b < 0) return a >= INT_MIN - b; // same as a + b >= INT_MIN; INT_MIN - b cannot overflow since b < 0. + return a <= INT_MAX - b; +} + +// returns 1 if the product of two signed shorts is valid, 0 on overflow. +static int stbi__mul2shorts_valid(short a, short b) +{ + if (b == 0 || b == -1) return 1; // multiplication by 0 is always 0; check for -1 so SHRT_MIN/b doesn't overflow + if ((a >= 0) == (b >= 0)) return a <= SHRT_MAX/b; // product is positive, so similar to mul2sizes_valid + if (b < 0) return a <= SHRT_MIN / b; // same as a * b >= SHRT_MIN + return a >= SHRT_MIN / b; +} + +// stbi__err - error +// stbi__errpf - error returning pointer to float +// stbi__errpuc - error returning pointer to unsigned char + +#ifdef STBI_NO_FAILURE_STRINGS + #define stbi__err(x,y) 0 +#elif defined(STBI_FAILURE_USERMSG) + #define stbi__err(x,y) stbi__err(y) +#else + #define stbi__err(x,y) stbi__err(x) +#endif + +#define stbi__errpf(x,y) ((float *)(size_t) (stbi__err(x,y)?NULL:NULL)) +#define stbi__errpuc(x,y) ((unsigned char *)(size_t) (stbi__err(x,y)?NULL:NULL)) + +STBIDEF void stbi_image_free(void *retval_from_stbi_load) +{ + STBI_FREE(retval_from_stbi_load); +} + +#ifndef STBI_NO_LINEAR +static float *stbi__ldr_to_hdr(stbi_uc *data, int x, int y, int comp); +#endif + +#ifndef STBI_NO_HDR +static stbi_uc *stbi__hdr_to_ldr(float *data, int x, int y, int comp); +#endif + +static int stbi__vertically_flip_on_load_global = 0; + +STBIDEF void stbi_set_flip_vertically_on_load(int flag_true_if_should_flip) +{ + stbi__vertically_flip_on_load_global = flag_true_if_should_flip; +} + +#ifndef STBI_THREAD_LOCAL +#define stbi__vertically_flip_on_load stbi__vertically_flip_on_load_global +#else +static STBI_THREAD_LOCAL int stbi__vertically_flip_on_load_local, stbi__vertically_flip_on_load_set; + +STBIDEF void stbi_set_flip_vertically_on_load_thread(int flag_true_if_should_flip) +{ + stbi__vertically_flip_on_load_local = flag_true_if_should_flip; + stbi__vertically_flip_on_load_set = 1; +} + +#define stbi__vertically_flip_on_load (stbi__vertically_flip_on_load_set \ + ? stbi__vertically_flip_on_load_local \ + : stbi__vertically_flip_on_load_global) +#endif // STBI_THREAD_LOCAL + +static void *stbi__load_main(stbi__context *s, int *x, int *y, int *comp, int req_comp, stbi__result_info *ri, int bpc) +{ + memset(ri, 0, sizeof(*ri)); // make sure it's initialized if we add new fields + ri->bits_per_channel = 8; // default is 8 so most paths don't have to be changed + ri->channel_order = STBI_ORDER_RGB; // all current input & output are this, but this is here so we can add BGR order + ri->num_channels = 0; + + // test the formats with a very explicit header first (at least a FOURCC + // or distinctive magic number first) + #ifndef STBI_NO_PNG + if (stbi__png_test(s)) return stbi__png_load(s,x,y,comp,req_comp, ri); + #endif + #ifndef STBI_NO_BMP + if (stbi__bmp_test(s)) return stbi__bmp_load(s,x,y,comp,req_comp, ri); + #endif + #ifndef STBI_NO_GIF + if (stbi__gif_test(s)) return stbi__gif_load(s,x,y,comp,req_comp, ri); + #endif + #ifndef STBI_NO_PSD + if (stbi__psd_test(s)) return stbi__psd_load(s,x,y,comp,req_comp, ri, bpc); + #else + STBI_NOTUSED(bpc); + #endif + #ifndef STBI_NO_PIC + if (stbi__pic_test(s)) return stbi__pic_load(s,x,y,comp,req_comp, ri); + #endif + + // then the formats that can end up attempting to load with just 1 or 2 + // bytes matching expectations; these are prone to false positives, so + // try them later + #ifndef STBI_NO_JPEG + if (stbi__jpeg_test(s)) return stbi__jpeg_load(s,x,y,comp,req_comp, ri); + #endif + #ifndef STBI_NO_PNM + if (stbi__pnm_test(s)) return stbi__pnm_load(s,x,y,comp,req_comp, ri); + #endif + + #ifndef STBI_NO_HDR + if (stbi__hdr_test(s)) { + float *hdr = stbi__hdr_load(s, x,y,comp,req_comp, ri); + return stbi__hdr_to_ldr(hdr, *x, *y, req_comp ? req_comp : *comp); + } + #endif + + #ifndef STBI_NO_TGA + // test tga last because it's a crappy test! + if (stbi__tga_test(s)) + return stbi__tga_load(s,x,y,comp,req_comp, ri); + #endif + + return stbi__errpuc("unknown image type", "Image not of any known type, or corrupt"); +} + +static stbi_uc *stbi__convert_16_to_8(stbi__uint16 *orig, int w, int h, int channels) +{ + int i; + int img_len = w * h * channels; + stbi_uc *reduced; + + reduced = (stbi_uc *) stbi__malloc(img_len); + if (reduced == NULL) return stbi__errpuc("outofmem", "Out of memory"); + + for (i = 0; i < img_len; ++i) + reduced[i] = (stbi_uc)((orig[i] >> 8) & 0xFF); // top half of each byte is sufficient approx of 16->8 bit scaling + + STBI_FREE(orig); + return reduced; +} + +static stbi__uint16 *stbi__convert_8_to_16(stbi_uc *orig, int w, int h, int channels) +{ + int i; + int img_len = w * h * channels; + stbi__uint16 *enlarged; + + enlarged = (stbi__uint16 *) stbi__malloc(img_len*2); + if (enlarged == NULL) return (stbi__uint16 *) stbi__errpuc("outofmem", "Out of memory"); + + for (i = 0; i < img_len; ++i) + enlarged[i] = (stbi__uint16)((orig[i] << 8) + orig[i]); // replicate to high and low byte, maps 0->0, 255->0xffff + + STBI_FREE(orig); + return enlarged; +} + +static void stbi__vertical_flip(void *image, int w, int h, int bytes_per_pixel) +{ + int row; + size_t bytes_per_row = (size_t)w * bytes_per_pixel; + stbi_uc temp[2048]; + stbi_uc *bytes = (stbi_uc *)image; + + for (row = 0; row < (h>>1); row++) { + stbi_uc *row0 = bytes + row*bytes_per_row; + stbi_uc *row1 = bytes + (h - row - 1)*bytes_per_row; + // swap row0 with row1 + size_t bytes_left = bytes_per_row; + while (bytes_left) { + size_t bytes_copy = (bytes_left < sizeof(temp)) ? bytes_left : sizeof(temp); + memcpy(temp, row0, bytes_copy); + memcpy(row0, row1, bytes_copy); + memcpy(row1, temp, bytes_copy); + row0 += bytes_copy; + row1 += bytes_copy; + bytes_left -= bytes_copy; + } + } +} + +#ifndef STBI_NO_GIF +static void stbi__vertical_flip_slices(void *image, int w, int h, int z, int bytes_per_pixel) +{ + int slice; + int slice_size = w * h * bytes_per_pixel; + + stbi_uc *bytes = (stbi_uc *)image; + for (slice = 0; slice < z; ++slice) { + stbi__vertical_flip(bytes, w, h, bytes_per_pixel); + bytes += slice_size; + } +} +#endif + +static unsigned char *stbi__load_and_postprocess_8bit(stbi__context *s, int *x, int *y, int *comp, int req_comp) +{ + stbi__result_info ri; + void *result = stbi__load_main(s, x, y, comp, req_comp, &ri, 8); + + if (result == NULL) + return NULL; + + // it is the responsibility of the loaders to make sure we get either 8 or 16 bit. + STBI_ASSERT(ri.bits_per_channel == 8 || ri.bits_per_channel == 16); + + if (ri.bits_per_channel != 8) { + result = stbi__convert_16_to_8((stbi__uint16 *) result, *x, *y, req_comp == 0 ? *comp : req_comp); + ri.bits_per_channel = 8; + } + + // @TODO: move stbi__convert_format to here + + if (stbi__vertically_flip_on_load) { + int channels = req_comp ? req_comp : *comp; + stbi__vertical_flip(result, *x, *y, channels * sizeof(stbi_uc)); + } + + return (unsigned char *) result; +} + +static stbi__uint16 *stbi__load_and_postprocess_16bit(stbi__context *s, int *x, int *y, int *comp, int req_comp) +{ + stbi__result_info ri; + void *result = stbi__load_main(s, x, y, comp, req_comp, &ri, 16); + + if (result == NULL) + return NULL; + + // it is the responsibility of the loaders to make sure we get either 8 or 16 bit. + STBI_ASSERT(ri.bits_per_channel == 8 || ri.bits_per_channel == 16); + + if (ri.bits_per_channel != 16) { + result = stbi__convert_8_to_16((stbi_uc *) result, *x, *y, req_comp == 0 ? *comp : req_comp); + ri.bits_per_channel = 16; + } + + // @TODO: move stbi__convert_format16 to here + // @TODO: special case RGB-to-Y (and RGBA-to-YA) for 8-bit-to-16-bit case to keep more precision + + if (stbi__vertically_flip_on_load) { + int channels = req_comp ? req_comp : *comp; + stbi__vertical_flip(result, *x, *y, channels * sizeof(stbi__uint16)); + } + + return (stbi__uint16 *) result; +} + +#if !defined(STBI_NO_HDR) && !defined(STBI_NO_LINEAR) +static void stbi__float_postprocess(float *result, int *x, int *y, int *comp, int req_comp) +{ + if (stbi__vertically_flip_on_load && result != NULL) { + int channels = req_comp ? req_comp : *comp; + stbi__vertical_flip(result, *x, *y, channels * sizeof(float)); + } +} +#endif + +#ifndef STBI_NO_STDIO + +#if defined(_WIN32) && defined(STBI_WINDOWS_UTF8) +STBI_EXTERN __declspec(dllimport) int __stdcall MultiByteToWideChar(unsigned int cp, unsigned long flags, const char *str, int cbmb, wchar_t *widestr, int cchwide); +STBI_EXTERN __declspec(dllimport) int __stdcall WideCharToMultiByte(unsigned int cp, unsigned long flags, const wchar_t *widestr, int cchwide, char *str, int cbmb, const char *defchar, int *used_default); +#endif + +#if defined(_WIN32) && defined(STBI_WINDOWS_UTF8) +STBIDEF int stbi_convert_wchar_to_utf8(char *buffer, size_t bufferlen, const wchar_t* input) +{ + return WideCharToMultiByte(65001 /* UTF8 */, 0, input, -1, buffer, (int) bufferlen, NULL, NULL); +} +#endif + +static FILE *stbi__fopen(char const *filename, char const *mode) +{ + FILE *f; +#if defined(_WIN32) && defined(STBI_WINDOWS_UTF8) + wchar_t wMode[64]; + wchar_t wFilename[1024]; + if (0 == MultiByteToWideChar(65001 /* UTF8 */, 0, filename, -1, wFilename, sizeof(wFilename)/sizeof(*wFilename))) + return 0; + + if (0 == MultiByteToWideChar(65001 /* UTF8 */, 0, mode, -1, wMode, sizeof(wMode)/sizeof(*wMode))) + return 0; + +#if defined(_MSC_VER) && _MSC_VER >= 1400 + if (0 != _wfopen_s(&f, wFilename, wMode)) + f = 0; +#else + f = _wfopen(wFilename, wMode); +#endif + +#elif defined(_MSC_VER) && _MSC_VER >= 1400 + if (0 != fopen_s(&f, filename, mode)) + f=0; +#else + f = fopen(filename, mode); +#endif + return f; +} + + +STBIDEF stbi_uc *stbi_load(char const *filename, int *x, int *y, int *comp, int req_comp) +{ + FILE *f = stbi__fopen(filename, "rb"); + unsigned char *result; + if (!f) return stbi__errpuc("can't fopen", "Unable to open file"); + result = stbi_load_from_file(f,x,y,comp,req_comp); + fclose(f); + return result; +} + +STBIDEF stbi_uc *stbi_load_from_file(FILE *f, int *x, int *y, int *comp, int req_comp) +{ + unsigned char *result; + stbi__context s; + stbi__start_file(&s,f); + result = stbi__load_and_postprocess_8bit(&s,x,y,comp,req_comp); + if (result) { + // need to 'unget' all the characters in the IO buffer + fseek(f, - (int) (s.img_buffer_end - s.img_buffer), SEEK_CUR); + } + return result; +} + +STBIDEF stbi__uint16 *stbi_load_from_file_16(FILE *f, int *x, int *y, int *comp, int req_comp) +{ + stbi__uint16 *result; + stbi__context s; + stbi__start_file(&s,f); + result = stbi__load_and_postprocess_16bit(&s,x,y,comp,req_comp); + if (result) { + // need to 'unget' all the characters in the IO buffer + fseek(f, - (int) (s.img_buffer_end - s.img_buffer), SEEK_CUR); + } + return result; +} + +STBIDEF stbi_us *stbi_load_16(char const *filename, int *x, int *y, int *comp, int req_comp) +{ + FILE *f = stbi__fopen(filename, "rb"); + stbi__uint16 *result; + if (!f) return (stbi_us *) stbi__errpuc("can't fopen", "Unable to open file"); + result = stbi_load_from_file_16(f,x,y,comp,req_comp); + fclose(f); + return result; +} + + +#endif //!STBI_NO_STDIO + +STBIDEF stbi_us *stbi_load_16_from_memory(stbi_uc const *buffer, int len, int *x, int *y, int *channels_in_file, int desired_channels) +{ + stbi__context s; + stbi__start_mem(&s,buffer,len); + return stbi__load_and_postprocess_16bit(&s,x,y,channels_in_file,desired_channels); +} + +STBIDEF stbi_us *stbi_load_16_from_callbacks(stbi_io_callbacks const *clbk, void *user, int *x, int *y, int *channels_in_file, int desired_channels) +{ + stbi__context s; + stbi__start_callbacks(&s, (stbi_io_callbacks *)clbk, user); + return stbi__load_and_postprocess_16bit(&s,x,y,channels_in_file,desired_channels); +} + +STBIDEF stbi_uc *stbi_load_from_memory(stbi_uc const *buffer, int len, int *x, int *y, int *comp, int req_comp) +{ + stbi__context s; + stbi__start_mem(&s,buffer,len); + return stbi__load_and_postprocess_8bit(&s,x,y,comp,req_comp); +} + +STBIDEF stbi_uc *stbi_load_from_callbacks(stbi_io_callbacks const *clbk, void *user, int *x, int *y, int *comp, int req_comp) +{ + stbi__context s; + stbi__start_callbacks(&s, (stbi_io_callbacks *) clbk, user); + return stbi__load_and_postprocess_8bit(&s,x,y,comp,req_comp); +} + +#ifndef STBI_NO_GIF +STBIDEF stbi_uc *stbi_load_gif_from_memory(stbi_uc const *buffer, int len, int **delays, int *x, int *y, int *z, int *comp, int req_comp) +{ + unsigned char *result; + stbi__context s; + stbi__start_mem(&s,buffer,len); + + result = (unsigned char*) stbi__load_gif_main(&s, delays, x, y, z, comp, req_comp); + if (stbi__vertically_flip_on_load) { + stbi__vertical_flip_slices( result, *x, *y, *z, *comp ); + } + + return result; +} +#endif + +#ifndef STBI_NO_LINEAR +static float *stbi__loadf_main(stbi__context *s, int *x, int *y, int *comp, int req_comp) +{ + unsigned char *data; + #ifndef STBI_NO_HDR + if (stbi__hdr_test(s)) { + stbi__result_info ri; + float *hdr_data = stbi__hdr_load(s,x,y,comp,req_comp, &ri); + if (hdr_data) + stbi__float_postprocess(hdr_data,x,y,comp,req_comp); + return hdr_data; + } + #endif + data = stbi__load_and_postprocess_8bit(s, x, y, comp, req_comp); + if (data) + return stbi__ldr_to_hdr(data, *x, *y, req_comp ? req_comp : *comp); + return stbi__errpf("unknown image type", "Image not of any known type, or corrupt"); +} + +STBIDEF float *stbi_loadf_from_memory(stbi_uc const *buffer, int len, int *x, int *y, int *comp, int req_comp) +{ + stbi__context s; + stbi__start_mem(&s,buffer,len); + return stbi__loadf_main(&s,x,y,comp,req_comp); +} + +STBIDEF float *stbi_loadf_from_callbacks(stbi_io_callbacks const *clbk, void *user, int *x, int *y, int *comp, int req_comp) +{ + stbi__context s; + stbi__start_callbacks(&s, (stbi_io_callbacks *) clbk, user); + return stbi__loadf_main(&s,x,y,comp,req_comp); +} + +#ifndef STBI_NO_STDIO +STBIDEF float *stbi_loadf(char const *filename, int *x, int *y, int *comp, int req_comp) +{ + float *result; + FILE *f = stbi__fopen(filename, "rb"); + if (!f) return stbi__errpf("can't fopen", "Unable to open file"); + result = stbi_loadf_from_file(f,x,y,comp,req_comp); + fclose(f); + return result; +} + +STBIDEF float *stbi_loadf_from_file(FILE *f, int *x, int *y, int *comp, int req_comp) +{ + stbi__context s; + stbi__start_file(&s,f); + return stbi__loadf_main(&s,x,y,comp,req_comp); +} +#endif // !STBI_NO_STDIO + +#endif // !STBI_NO_LINEAR + +// these is-hdr-or-not is defined independent of whether STBI_NO_LINEAR is +// defined, for API simplicity; if STBI_NO_LINEAR is defined, it always +// reports false! + +STBIDEF int stbi_is_hdr_from_memory(stbi_uc const *buffer, int len) +{ + #ifndef STBI_NO_HDR + stbi__context s; + stbi__start_mem(&s,buffer,len); + return stbi__hdr_test(&s); + #else + STBI_NOTUSED(buffer); + STBI_NOTUSED(len); + return 0; + #endif +} + +#ifndef STBI_NO_STDIO +STBIDEF int stbi_is_hdr (char const *filename) +{ + FILE *f = stbi__fopen(filename, "rb"); + int result=0; + if (f) { + result = stbi_is_hdr_from_file(f); + fclose(f); + } + return result; +} + +STBIDEF int stbi_is_hdr_from_file(FILE *f) +{ + #ifndef STBI_NO_HDR + long pos = ftell(f); + int res; + stbi__context s; + stbi__start_file(&s,f); + res = stbi__hdr_test(&s); + fseek(f, pos, SEEK_SET); + return res; + #else + STBI_NOTUSED(f); + return 0; + #endif +} +#endif // !STBI_NO_STDIO + +STBIDEF int stbi_is_hdr_from_callbacks(stbi_io_callbacks const *clbk, void *user) +{ + #ifndef STBI_NO_HDR + stbi__context s; + stbi__start_callbacks(&s, (stbi_io_callbacks *) clbk, user); + return stbi__hdr_test(&s); + #else + STBI_NOTUSED(clbk); + STBI_NOTUSED(user); + return 0; + #endif +} + +#ifndef STBI_NO_LINEAR +static float stbi__l2h_gamma=2.2f, stbi__l2h_scale=1.0f; + +STBIDEF void stbi_ldr_to_hdr_gamma(float gamma) { stbi__l2h_gamma = gamma; } +STBIDEF void stbi_ldr_to_hdr_scale(float scale) { stbi__l2h_scale = scale; } +#endif + +static float stbi__h2l_gamma_i=1.0f/2.2f, stbi__h2l_scale_i=1.0f; + +STBIDEF void stbi_hdr_to_ldr_gamma(float gamma) { stbi__h2l_gamma_i = 1/gamma; } +STBIDEF void stbi_hdr_to_ldr_scale(float scale) { stbi__h2l_scale_i = 1/scale; } + + +////////////////////////////////////////////////////////////////////////////// +// +// Common code used by all image loaders +// + +enum +{ + STBI__SCAN_load=0, + STBI__SCAN_type, + STBI__SCAN_header +}; + +static void stbi__refill_buffer(stbi__context *s) +{ + int n = (s->io.read)(s->io_user_data,(char*)s->buffer_start,s->buflen); + s->callback_already_read += (int) (s->img_buffer - s->img_buffer_original); + if (n == 0) { + // at end of file, treat same as if from memory, but need to handle case + // where s->img_buffer isn't pointing to safe memory, e.g. 0-byte file + s->read_from_callbacks = 0; + s->img_buffer = s->buffer_start; + s->img_buffer_end = s->buffer_start+1; + *s->img_buffer = 0; + } else { + s->img_buffer = s->buffer_start; + s->img_buffer_end = s->buffer_start + n; + } +} + +stbi_inline static stbi_uc stbi__get8(stbi__context *s) +{ + if (s->img_buffer < s->img_buffer_end) + return *s->img_buffer++; + if (s->read_from_callbacks) { + stbi__refill_buffer(s); + return *s->img_buffer++; + } + return 0; +} + +#if defined(STBI_NO_JPEG) && defined(STBI_NO_HDR) && defined(STBI_NO_PIC) && defined(STBI_NO_PNM) +// nothing +#else +stbi_inline static int stbi__at_eof(stbi__context *s) +{ + if (s->io.read) { + if (!(s->io.eof)(s->io_user_data)) return 0; + // if feof() is true, check if buffer = end + // special case: we've only got the special 0 character at the end + if (s->read_from_callbacks == 0) return 1; + } + + return s->img_buffer >= s->img_buffer_end; +} +#endif + +#if defined(STBI_NO_JPEG) && defined(STBI_NO_PNG) && defined(STBI_NO_BMP) && defined(STBI_NO_PSD) && defined(STBI_NO_TGA) && defined(STBI_NO_GIF) && defined(STBI_NO_PIC) +// nothing +#else +static void stbi__skip(stbi__context *s, int n) +{ + if (n == 0) return; // already there! + if (n < 0) { + s->img_buffer = s->img_buffer_end; + return; + } + if (s->io.read) { + int blen = (int) (s->img_buffer_end - s->img_buffer); + if (blen < n) { + s->img_buffer = s->img_buffer_end; + (s->io.skip)(s->io_user_data, n - blen); + return; + } + } + s->img_buffer += n; +} +#endif + +#if defined(STBI_NO_PNG) && defined(STBI_NO_TGA) && defined(STBI_NO_HDR) && defined(STBI_NO_PNM) +// nothing +#else +static int stbi__getn(stbi__context *s, stbi_uc *buffer, int n) +{ + if (s->io.read) { + int blen = (int) (s->img_buffer_end - s->img_buffer); + if (blen < n) { + int res, count; + + memcpy(buffer, s->img_buffer, blen); + + count = (s->io.read)(s->io_user_data, (char*) buffer + blen, n - blen); + res = (count == (n-blen)); + s->img_buffer = s->img_buffer_end; + return res; + } + } + + if (s->img_buffer+n <= s->img_buffer_end) { + memcpy(buffer, s->img_buffer, n); + s->img_buffer += n; + return 1; + } else + return 0; +} +#endif + +#if defined(STBI_NO_JPEG) && defined(STBI_NO_PNG) && defined(STBI_NO_PSD) && defined(STBI_NO_PIC) +// nothing +#else +static int stbi__get16be(stbi__context *s) +{ + int z = stbi__get8(s); + return (z << 8) + stbi__get8(s); +} +#endif + +#if defined(STBI_NO_PNG) && defined(STBI_NO_PSD) && defined(STBI_NO_PIC) +// nothing +#else +static stbi__uint32 stbi__get32be(stbi__context *s) +{ + stbi__uint32 z = stbi__get16be(s); + return (z << 16) + stbi__get16be(s); +} +#endif + +#if defined(STBI_NO_BMP) && defined(STBI_NO_TGA) && defined(STBI_NO_GIF) +// nothing +#else +static int stbi__get16le(stbi__context *s) +{ + int z = stbi__get8(s); + return z + (stbi__get8(s) << 8); +} +#endif + +#ifndef STBI_NO_BMP +static stbi__uint32 stbi__get32le(stbi__context *s) +{ + stbi__uint32 z = stbi__get16le(s); + z += (stbi__uint32)stbi__get16le(s) << 16; + return z; +} +#endif + +#define STBI__BYTECAST(x) ((stbi_uc) ((x) & 255)) // truncate int to byte without warnings + +#if defined(STBI_NO_JPEG) && defined(STBI_NO_PNG) && defined(STBI_NO_BMP) && defined(STBI_NO_PSD) && defined(STBI_NO_TGA) && defined(STBI_NO_GIF) && defined(STBI_NO_PIC) && defined(STBI_NO_PNM) +// nothing +#else +////////////////////////////////////////////////////////////////////////////// +// +// generic converter from built-in img_n to req_comp +// individual types do this automatically as much as possible (e.g. jpeg +// does all cases internally since it needs to colorspace convert anyway, +// and it never has alpha, so very few cases ). png can automatically +// interleave an alpha=255 channel, but falls back to this for other cases +// +// assume data buffer is malloced, so malloc a new one and free that one +// only failure mode is malloc failing + +static stbi_uc stbi__compute_y(int r, int g, int b) +{ + return (stbi_uc) (((r*77) + (g*150) + (29*b)) >> 8); +} +#endif + +#if defined(STBI_NO_PNG) && defined(STBI_NO_BMP) && defined(STBI_NO_PSD) && defined(STBI_NO_TGA) && defined(STBI_NO_GIF) && defined(STBI_NO_PIC) && defined(STBI_NO_PNM) +// nothing +#else +static unsigned char *stbi__convert_format(unsigned char *data, int img_n, int req_comp, unsigned int x, unsigned int y) +{ + int i,j; + unsigned char *good; + + if (req_comp == img_n) return data; + STBI_ASSERT(req_comp >= 1 && req_comp <= 4); + + good = (unsigned char *) stbi__malloc_mad3(req_comp, x, y, 0); + if (good == NULL) { + STBI_FREE(data); + return stbi__errpuc("outofmem", "Out of memory"); + } + + for (j=0; j < (int) y; ++j) { + unsigned char *src = data + j * x * img_n ; + unsigned char *dest = good + j * x * req_comp; + + #define STBI__COMBO(a,b) ((a)*8+(b)) + #define STBI__CASE(a,b) case STBI__COMBO(a,b): for(i=x-1; i >= 0; --i, src += a, dest += b) + // convert source image with img_n components to one with req_comp components; + // avoid switch per pixel, so use switch per scanline and massive macros + switch (STBI__COMBO(img_n, req_comp)) { + STBI__CASE(1,2) { dest[0]=src[0]; dest[1]=255; } break; + STBI__CASE(1,3) { dest[0]=dest[1]=dest[2]=src[0]; } break; + STBI__CASE(1,4) { dest[0]=dest[1]=dest[2]=src[0]; dest[3]=255; } break; + STBI__CASE(2,1) { dest[0]=src[0]; } break; + STBI__CASE(2,3) { dest[0]=dest[1]=dest[2]=src[0]; } break; + STBI__CASE(2,4) { dest[0]=dest[1]=dest[2]=src[0]; dest[3]=src[1]; } break; + STBI__CASE(3,4) { dest[0]=src[0];dest[1]=src[1];dest[2]=src[2];dest[3]=255; } break; + STBI__CASE(3,1) { dest[0]=stbi__compute_y(src[0],src[1],src[2]); } break; + STBI__CASE(3,2) { dest[0]=stbi__compute_y(src[0],src[1],src[2]); dest[1] = 255; } break; + STBI__CASE(4,1) { dest[0]=stbi__compute_y(src[0],src[1],src[2]); } break; + STBI__CASE(4,2) { dest[0]=stbi__compute_y(src[0],src[1],src[2]); dest[1] = src[3]; } break; + STBI__CASE(4,3) { dest[0]=src[0];dest[1]=src[1];dest[2]=src[2]; } break; + default: STBI_ASSERT(0); STBI_FREE(data); STBI_FREE(good); return stbi__errpuc("unsupported", "Unsupported format conversion"); + } + #undef STBI__CASE + } + + STBI_FREE(data); + return good; +} +#endif + +#if defined(STBI_NO_PNG) && defined(STBI_NO_PSD) +// nothing +#else +static stbi__uint16 stbi__compute_y_16(int r, int g, int b) +{ + return (stbi__uint16) (((r*77) + (g*150) + (29*b)) >> 8); +} +#endif + +#if defined(STBI_NO_PNG) && defined(STBI_NO_PSD) +// nothing +#else +static stbi__uint16 *stbi__convert_format16(stbi__uint16 *data, int img_n, int req_comp, unsigned int x, unsigned int y) +{ + int i,j; + stbi__uint16 *good; + + if (req_comp == img_n) return data; + STBI_ASSERT(req_comp >= 1 && req_comp <= 4); + + good = (stbi__uint16 *) stbi__malloc(req_comp * x * y * 2); + if (good == NULL) { + STBI_FREE(data); + return (stbi__uint16 *) stbi__errpuc("outofmem", "Out of memory"); + } + + for (j=0; j < (int) y; ++j) { + stbi__uint16 *src = data + j * x * img_n ; + stbi__uint16 *dest = good + j * x * req_comp; + + #define STBI__COMBO(a,b) ((a)*8+(b)) + #define STBI__CASE(a,b) case STBI__COMBO(a,b): for(i=x-1; i >= 0; --i, src += a, dest += b) + // convert source image with img_n components to one with req_comp components; + // avoid switch per pixel, so use switch per scanline and massive macros + switch (STBI__COMBO(img_n, req_comp)) { + STBI__CASE(1,2) { dest[0]=src[0]; dest[1]=0xffff; } break; + STBI__CASE(1,3) { dest[0]=dest[1]=dest[2]=src[0]; } break; + STBI__CASE(1,4) { dest[0]=dest[1]=dest[2]=src[0]; dest[3]=0xffff; } break; + STBI__CASE(2,1) { dest[0]=src[0]; } break; + STBI__CASE(2,3) { dest[0]=dest[1]=dest[2]=src[0]; } break; + STBI__CASE(2,4) { dest[0]=dest[1]=dest[2]=src[0]; dest[3]=src[1]; } break; + STBI__CASE(3,4) { dest[0]=src[0];dest[1]=src[1];dest[2]=src[2];dest[3]=0xffff; } break; + STBI__CASE(3,1) { dest[0]=stbi__compute_y_16(src[0],src[1],src[2]); } break; + STBI__CASE(3,2) { dest[0]=stbi__compute_y_16(src[0],src[1],src[2]); dest[1] = 0xffff; } break; + STBI__CASE(4,1) { dest[0]=stbi__compute_y_16(src[0],src[1],src[2]); } break; + STBI__CASE(4,2) { dest[0]=stbi__compute_y_16(src[0],src[1],src[2]); dest[1] = src[3]; } break; + STBI__CASE(4,3) { dest[0]=src[0];dest[1]=src[1];dest[2]=src[2]; } break; + default: STBI_ASSERT(0); STBI_FREE(data); STBI_FREE(good); return (stbi__uint16*) stbi__errpuc("unsupported", "Unsupported format conversion"); + } + #undef STBI__CASE + } + + STBI_FREE(data); + return good; +} +#endif + +#ifndef STBI_NO_LINEAR +static float *stbi__ldr_to_hdr(stbi_uc *data, int x, int y, int comp) +{ + int i,k,n; + float *output; + if (!data) return NULL; + output = (float *) stbi__malloc_mad4(x, y, comp, sizeof(float), 0); + if (output == NULL) { STBI_FREE(data); return stbi__errpf("outofmem", "Out of memory"); } + // compute number of non-alpha components + if (comp & 1) n = comp; else n = comp-1; + for (i=0; i < x*y; ++i) { + for (k=0; k < n; ++k) { + output[i*comp + k] = (float) (pow(data[i*comp+k]/255.0f, stbi__l2h_gamma) * stbi__l2h_scale); + } + } + if (n < comp) { + for (i=0; i < x*y; ++i) { + output[i*comp + n] = data[i*comp + n]/255.0f; + } + } + STBI_FREE(data); + return output; +} +#endif + +#ifndef STBI_NO_HDR +#define stbi__float2int(x) ((int) (x)) +static stbi_uc *stbi__hdr_to_ldr(float *data, int x, int y, int comp) +{ + int i,k,n; + stbi_uc *output; + if (!data) return NULL; + output = (stbi_uc *) stbi__malloc_mad3(x, y, comp, 0); + if (output == NULL) { STBI_FREE(data); return stbi__errpuc("outofmem", "Out of memory"); } + // compute number of non-alpha components + if (comp & 1) n = comp; else n = comp-1; + for (i=0; i < x*y; ++i) { + for (k=0; k < n; ++k) { + float z = (float) pow(data[i*comp+k]*stbi__h2l_scale_i, stbi__h2l_gamma_i) * 255 + 0.5f; + if (z < 0) z = 0; + if (z > 255) z = 255; + output[i*comp + k] = (stbi_uc) stbi__float2int(z); + } + if (k < comp) { + float z = data[i*comp+k] * 255 + 0.5f; + if (z < 0) z = 0; + if (z > 255) z = 255; + output[i*comp + k] = (stbi_uc) stbi__float2int(z); + } + } + STBI_FREE(data); + return output; +} +#endif + +////////////////////////////////////////////////////////////////////////////// +// +// "baseline" JPEG/JFIF decoder +// +// simple implementation +// - doesn't support delayed output of y-dimension +// - simple interface (only one output format: 8-bit interleaved RGB) +// - doesn't try to recover corrupt jpegs +// - doesn't allow partial loading, loading multiple at once +// - still fast on x86 (copying globals into locals doesn't help x86) +// - allocates lots of intermediate memory (full size of all components) +// - non-interleaved case requires this anyway +// - allows good upsampling (see next) +// high-quality +// - upsampled channels are bilinearly interpolated, even across blocks +// - quality integer IDCT derived from IJG's 'slow' +// performance +// - fast huffman; reasonable integer IDCT +// - some SIMD kernels for common paths on targets with SSE2/NEON +// - uses a lot of intermediate memory, could cache poorly + +#ifndef STBI_NO_JPEG + +// huffman decoding acceleration +#define FAST_BITS 9 // larger handles more cases; smaller stomps less cache + +typedef struct +{ + stbi_uc fast[1 << FAST_BITS]; + // weirdly, repacking this into AoS is a 10% speed loss, instead of a win + stbi__uint16 code[256]; + stbi_uc values[256]; + stbi_uc size[257]; + unsigned int maxcode[18]; + int delta[17]; // old 'firstsymbol' - old 'firstcode' +} stbi__huffman; + +typedef struct +{ + stbi__context *s; + stbi__huffman huff_dc[4]; + stbi__huffman huff_ac[4]; + stbi__uint16 dequant[4][64]; + stbi__int16 fast_ac[4][1 << FAST_BITS]; + +// sizes for components, interleaved MCUs + int img_h_max, img_v_max; + int img_mcu_x, img_mcu_y; + int img_mcu_w, img_mcu_h; + +// definition of jpeg image component + struct + { + int id; + int h,v; + int tq; + int hd,ha; + int dc_pred; + + int x,y,w2,h2; + stbi_uc *data; + void *raw_data, *raw_coeff; + stbi_uc *linebuf; + short *coeff; // progressive only + int coeff_w, coeff_h; // number of 8x8 coefficient blocks + } img_comp[4]; + + stbi__uint32 code_buffer; // jpeg entropy-coded buffer + int code_bits; // number of valid bits + unsigned char marker; // marker seen while filling entropy buffer + int nomore; // flag if we saw a marker so must stop + + int progressive; + int spec_start; + int spec_end; + int succ_high; + int succ_low; + int eob_run; + int jfif; + int app14_color_transform; // Adobe APP14 tag + int rgb; + + int scan_n, order[4]; + int restart_interval, todo; + +// kernels + void (*idct_block_kernel)(stbi_uc *out, int out_stride, short data[64]); + void (*YCbCr_to_RGB_kernel)(stbi_uc *out, const stbi_uc *y, const stbi_uc *pcb, const stbi_uc *pcr, int count, int step); + stbi_uc *(*resample_row_hv_2_kernel)(stbi_uc *out, stbi_uc *in_near, stbi_uc *in_far, int w, int hs); +} stbi__jpeg; + +static int stbi__build_huffman(stbi__huffman *h, int *count) +{ + int i,j,k=0; + unsigned int code; + // build size list for each symbol (from JPEG spec) + for (i=0; i < 16; ++i) { + for (j=0; j < count[i]; ++j) { + h->size[k++] = (stbi_uc) (i+1); + if(k >= 257) return stbi__err("bad size list","Corrupt JPEG"); + } + } + h->size[k] = 0; + + // compute actual symbols (from jpeg spec) + code = 0; + k = 0; + for(j=1; j <= 16; ++j) { + // compute delta to add to code to compute symbol id + h->delta[j] = k - code; + if (h->size[k] == j) { + while (h->size[k] == j) + h->code[k++] = (stbi__uint16) (code++); + if (code-1 >= (1u << j)) return stbi__err("bad code lengths","Corrupt JPEG"); + } + // compute largest code + 1 for this size, preshifted as needed later + h->maxcode[j] = code << (16-j); + code <<= 1; + } + h->maxcode[j] = 0xffffffff; + + // build non-spec acceleration table; 255 is flag for not-accelerated + memset(h->fast, 255, 1 << FAST_BITS); + for (i=0; i < k; ++i) { + int s = h->size[i]; + if (s <= FAST_BITS) { + int c = h->code[i] << (FAST_BITS-s); + int m = 1 << (FAST_BITS-s); + for (j=0; j < m; ++j) { + h->fast[c+j] = (stbi_uc) i; + } + } + } + return 1; +} + +// build a table that decodes both magnitude and value of small ACs in +// one go. +static void stbi__build_fast_ac(stbi__int16 *fast_ac, stbi__huffman *h) +{ + int i; + for (i=0; i < (1 << FAST_BITS); ++i) { + stbi_uc fast = h->fast[i]; + fast_ac[i] = 0; + if (fast < 255) { + int rs = h->values[fast]; + int run = (rs >> 4) & 15; + int magbits = rs & 15; + int len = h->size[fast]; + + if (magbits && len + magbits <= FAST_BITS) { + // magnitude code followed by receive_extend code + int k = ((i << len) & ((1 << FAST_BITS) - 1)) >> (FAST_BITS - magbits); + int m = 1 << (magbits - 1); + if (k < m) k += (~0U << magbits) + 1; + // if the result is small enough, we can fit it in fast_ac table + if (k >= -128 && k <= 127) + fast_ac[i] = (stbi__int16) ((k * 256) + (run * 16) + (len + magbits)); + } + } + } +} + +static void stbi__grow_buffer_unsafe(stbi__jpeg *j) +{ + do { + unsigned int b = j->nomore ? 0 : stbi__get8(j->s); + if (b == 0xff) { + int c = stbi__get8(j->s); + while (c == 0xff) c = stbi__get8(j->s); // consume fill bytes + if (c != 0) { + j->marker = (unsigned char) c; + j->nomore = 1; + return; + } + } + j->code_buffer |= b << (24 - j->code_bits); + j->code_bits += 8; + } while (j->code_bits <= 24); +} + +// (1 << n) - 1 +static const stbi__uint32 stbi__bmask[17]={0,1,3,7,15,31,63,127,255,511,1023,2047,4095,8191,16383,32767,65535}; + +// decode a jpeg huffman value from the bitstream +stbi_inline static int stbi__jpeg_huff_decode(stbi__jpeg *j, stbi__huffman *h) +{ + unsigned int temp; + int c,k; + + if (j->code_bits < 16) stbi__grow_buffer_unsafe(j); + + // look at the top FAST_BITS and determine what symbol ID it is, + // if the code is <= FAST_BITS + c = (j->code_buffer >> (32 - FAST_BITS)) & ((1 << FAST_BITS)-1); + k = h->fast[c]; + if (k < 255) { + int s = h->size[k]; + if (s > j->code_bits) + return -1; + j->code_buffer <<= s; + j->code_bits -= s; + return h->values[k]; + } + + // naive test is to shift the code_buffer down so k bits are + // valid, then test against maxcode. To speed this up, we've + // preshifted maxcode left so that it has (16-k) 0s at the + // end; in other words, regardless of the number of bits, it + // wants to be compared against something shifted to have 16; + // that way we don't need to shift inside the loop. + temp = j->code_buffer >> 16; + for (k=FAST_BITS+1 ; ; ++k) + if (temp < h->maxcode[k]) + break; + if (k == 17) { + // error! code not found + j->code_bits -= 16; + return -1; + } + + if (k > j->code_bits) + return -1; + + // convert the huffman code to the symbol id + c = ((j->code_buffer >> (32 - k)) & stbi__bmask[k]) + h->delta[k]; + if(c < 0 || c >= 256) // symbol id out of bounds! + return -1; + STBI_ASSERT((((j->code_buffer) >> (32 - h->size[c])) & stbi__bmask[h->size[c]]) == h->code[c]); + + // convert the id to a symbol + j->code_bits -= k; + j->code_buffer <<= k; + return h->values[c]; +} + +// bias[n] = (-1<code_bits < n) stbi__grow_buffer_unsafe(j); + if (j->code_bits < n) return 0; // ran out of bits from stream, return 0s intead of continuing + + sgn = j->code_buffer >> 31; // sign bit always in MSB; 0 if MSB clear (positive), 1 if MSB set (negative) + k = stbi_lrot(j->code_buffer, n); + j->code_buffer = k & ~stbi__bmask[n]; + k &= stbi__bmask[n]; + j->code_bits -= n; + return k + (stbi__jbias[n] & (sgn - 1)); +} + +// get some unsigned bits +stbi_inline static int stbi__jpeg_get_bits(stbi__jpeg *j, int n) +{ + unsigned int k; + if (j->code_bits < n) stbi__grow_buffer_unsafe(j); + if (j->code_bits < n) return 0; // ran out of bits from stream, return 0s intead of continuing + k = stbi_lrot(j->code_buffer, n); + j->code_buffer = k & ~stbi__bmask[n]; + k &= stbi__bmask[n]; + j->code_bits -= n; + return k; +} + +stbi_inline static int stbi__jpeg_get_bit(stbi__jpeg *j) +{ + unsigned int k; + if (j->code_bits < 1) stbi__grow_buffer_unsafe(j); + if (j->code_bits < 1) return 0; // ran out of bits from stream, return 0s intead of continuing + k = j->code_buffer; + j->code_buffer <<= 1; + --j->code_bits; + return k & 0x80000000; +} + +// given a value that's at position X in the zigzag stream, +// where does it appear in the 8x8 matrix coded as row-major? +static const stbi_uc stbi__jpeg_dezigzag[64+15] = +{ + 0, 1, 8, 16, 9, 2, 3, 10, + 17, 24, 32, 25, 18, 11, 4, 5, + 12, 19, 26, 33, 40, 48, 41, 34, + 27, 20, 13, 6, 7, 14, 21, 28, + 35, 42, 49, 56, 57, 50, 43, 36, + 29, 22, 15, 23, 30, 37, 44, 51, + 58, 59, 52, 45, 38, 31, 39, 46, + 53, 60, 61, 54, 47, 55, 62, 63, + // let corrupt input sample past end + 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63 +}; + +// decode one 64-entry block-- +static int stbi__jpeg_decode_block(stbi__jpeg *j, short data[64], stbi__huffman *hdc, stbi__huffman *hac, stbi__int16 *fac, int b, stbi__uint16 *dequant) +{ + int diff,dc,k; + int t; + + if (j->code_bits < 16) stbi__grow_buffer_unsafe(j); + t = stbi__jpeg_huff_decode(j, hdc); + if (t < 0 || t > 15) return stbi__err("bad huffman code","Corrupt JPEG"); + + // 0 all the ac values now so we can do it 32-bits at a time + memset(data,0,64*sizeof(data[0])); + + diff = t ? stbi__extend_receive(j, t) : 0; + if (!stbi__addints_valid(j->img_comp[b].dc_pred, diff)) return stbi__err("bad delta","Corrupt JPEG"); + dc = j->img_comp[b].dc_pred + diff; + j->img_comp[b].dc_pred = dc; + if (!stbi__mul2shorts_valid(dc, dequant[0])) return stbi__err("can't merge dc and ac", "Corrupt JPEG"); + data[0] = (short) (dc * dequant[0]); + + // decode AC components, see JPEG spec + k = 1; + do { + unsigned int zig; + int c,r,s; + if (j->code_bits < 16) stbi__grow_buffer_unsafe(j); + c = (j->code_buffer >> (32 - FAST_BITS)) & ((1 << FAST_BITS)-1); + r = fac[c]; + if (r) { // fast-AC path + k += (r >> 4) & 15; // run + s = r & 15; // combined length + if (s > j->code_bits) return stbi__err("bad huffman code", "Combined length longer than code bits available"); + j->code_buffer <<= s; + j->code_bits -= s; + // decode into unzigzag'd location + zig = stbi__jpeg_dezigzag[k++]; + data[zig] = (short) ((r >> 8) * dequant[zig]); + } else { + int rs = stbi__jpeg_huff_decode(j, hac); + if (rs < 0) return stbi__err("bad huffman code","Corrupt JPEG"); + s = rs & 15; + r = rs >> 4; + if (s == 0) { + if (rs != 0xf0) break; // end block + k += 16; + } else { + k += r; + // decode into unzigzag'd location + zig = stbi__jpeg_dezigzag[k++]; + data[zig] = (short) (stbi__extend_receive(j,s) * dequant[zig]); + } + } + } while (k < 64); + return 1; +} + +static int stbi__jpeg_decode_block_prog_dc(stbi__jpeg *j, short data[64], stbi__huffman *hdc, int b) +{ + int diff,dc; + int t; + if (j->spec_end != 0) return stbi__err("can't merge dc and ac", "Corrupt JPEG"); + + if (j->code_bits < 16) stbi__grow_buffer_unsafe(j); + + if (j->succ_high == 0) { + // first scan for DC coefficient, must be first + memset(data,0,64*sizeof(data[0])); // 0 all the ac values now + t = stbi__jpeg_huff_decode(j, hdc); + if (t < 0 || t > 15) return stbi__err("can't merge dc and ac", "Corrupt JPEG"); + diff = t ? stbi__extend_receive(j, t) : 0; + + if (!stbi__addints_valid(j->img_comp[b].dc_pred, diff)) return stbi__err("bad delta", "Corrupt JPEG"); + dc = j->img_comp[b].dc_pred + diff; + j->img_comp[b].dc_pred = dc; + if (!stbi__mul2shorts_valid(dc, 1 << j->succ_low)) return stbi__err("can't merge dc and ac", "Corrupt JPEG"); + data[0] = (short) (dc * (1 << j->succ_low)); + } else { + // refinement scan for DC coefficient + if (stbi__jpeg_get_bit(j)) + data[0] += (short) (1 << j->succ_low); + } + return 1; +} + +// @OPTIMIZE: store non-zigzagged during the decode passes, +// and only de-zigzag when dequantizing +static int stbi__jpeg_decode_block_prog_ac(stbi__jpeg *j, short data[64], stbi__huffman *hac, stbi__int16 *fac) +{ + int k; + if (j->spec_start == 0) return stbi__err("can't merge dc and ac", "Corrupt JPEG"); + + if (j->succ_high == 0) { + int shift = j->succ_low; + + if (j->eob_run) { + --j->eob_run; + return 1; + } + + k = j->spec_start; + do { + unsigned int zig; + int c,r,s; + if (j->code_bits < 16) stbi__grow_buffer_unsafe(j); + c = (j->code_buffer >> (32 - FAST_BITS)) & ((1 << FAST_BITS)-1); + r = fac[c]; + if (r) { // fast-AC path + k += (r >> 4) & 15; // run + s = r & 15; // combined length + if (s > j->code_bits) return stbi__err("bad huffman code", "Combined length longer than code bits available"); + j->code_buffer <<= s; + j->code_bits -= s; + zig = stbi__jpeg_dezigzag[k++]; + data[zig] = (short) ((r >> 8) * (1 << shift)); + } else { + int rs = stbi__jpeg_huff_decode(j, hac); + if (rs < 0) return stbi__err("bad huffman code","Corrupt JPEG"); + s = rs & 15; + r = rs >> 4; + if (s == 0) { + if (r < 15) { + j->eob_run = (1 << r); + if (r) + j->eob_run += stbi__jpeg_get_bits(j, r); + --j->eob_run; + break; + } + k += 16; + } else { + k += r; + zig = stbi__jpeg_dezigzag[k++]; + data[zig] = (short) (stbi__extend_receive(j,s) * (1 << shift)); + } + } + } while (k <= j->spec_end); + } else { + // refinement scan for these AC coefficients + + short bit = (short) (1 << j->succ_low); + + if (j->eob_run) { + --j->eob_run; + for (k = j->spec_start; k <= j->spec_end; ++k) { + short *p = &data[stbi__jpeg_dezigzag[k]]; + if (*p != 0) + if (stbi__jpeg_get_bit(j)) + if ((*p & bit)==0) { + if (*p > 0) + *p += bit; + else + *p -= bit; + } + } + } else { + k = j->spec_start; + do { + int r,s; + int rs = stbi__jpeg_huff_decode(j, hac); // @OPTIMIZE see if we can use the fast path here, advance-by-r is so slow, eh + if (rs < 0) return stbi__err("bad huffman code","Corrupt JPEG"); + s = rs & 15; + r = rs >> 4; + if (s == 0) { + if (r < 15) { + j->eob_run = (1 << r) - 1; + if (r) + j->eob_run += stbi__jpeg_get_bits(j, r); + r = 64; // force end of block + } else { + // r=15 s=0 should write 16 0s, so we just do + // a run of 15 0s and then write s (which is 0), + // so we don't have to do anything special here + } + } else { + if (s != 1) return stbi__err("bad huffman code", "Corrupt JPEG"); + // sign bit + if (stbi__jpeg_get_bit(j)) + s = bit; + else + s = -bit; + } + + // advance by r + while (k <= j->spec_end) { + short *p = &data[stbi__jpeg_dezigzag[k++]]; + if (*p != 0) { + if (stbi__jpeg_get_bit(j)) + if ((*p & bit)==0) { + if (*p > 0) + *p += bit; + else + *p -= bit; + } + } else { + if (r == 0) { + *p = (short) s; + break; + } + --r; + } + } + } while (k <= j->spec_end); + } + } + return 1; +} + +// take a -128..127 value and stbi__clamp it and convert to 0..255 +stbi_inline static stbi_uc stbi__clamp(int x) +{ + // trick to use a single test to catch both cases + if ((unsigned int) x > 255) { + if (x < 0) return 0; + if (x > 255) return 255; + } + return (stbi_uc) x; +} + +#define stbi__f2f(x) ((int) (((x) * 4096 + 0.5))) +#define stbi__fsh(x) ((x) * 4096) + +// derived from jidctint -- DCT_ISLOW +#define STBI__IDCT_1D(s0,s1,s2,s3,s4,s5,s6,s7) \ + int t0,t1,t2,t3,p1,p2,p3,p4,p5,x0,x1,x2,x3; \ + p2 = s2; \ + p3 = s6; \ + p1 = (p2+p3) * stbi__f2f(0.5411961f); \ + t2 = p1 + p3*stbi__f2f(-1.847759065f); \ + t3 = p1 + p2*stbi__f2f( 0.765366865f); \ + p2 = s0; \ + p3 = s4; \ + t0 = stbi__fsh(p2+p3); \ + t1 = stbi__fsh(p2-p3); \ + x0 = t0+t3; \ + x3 = t0-t3; \ + x1 = t1+t2; \ + x2 = t1-t2; \ + t0 = s7; \ + t1 = s5; \ + t2 = s3; \ + t3 = s1; \ + p3 = t0+t2; \ + p4 = t1+t3; \ + p1 = t0+t3; \ + p2 = t1+t2; \ + p5 = (p3+p4)*stbi__f2f( 1.175875602f); \ + t0 = t0*stbi__f2f( 0.298631336f); \ + t1 = t1*stbi__f2f( 2.053119869f); \ + t2 = t2*stbi__f2f( 3.072711026f); \ + t3 = t3*stbi__f2f( 1.501321110f); \ + p1 = p5 + p1*stbi__f2f(-0.899976223f); \ + p2 = p5 + p2*stbi__f2f(-2.562915447f); \ + p3 = p3*stbi__f2f(-1.961570560f); \ + p4 = p4*stbi__f2f(-0.390180644f); \ + t3 += p1+p4; \ + t2 += p2+p3; \ + t1 += p2+p4; \ + t0 += p1+p3; + +static void stbi__idct_block(stbi_uc *out, int out_stride, short data[64]) +{ + int i,val[64],*v=val; + stbi_uc *o; + short *d = data; + + // columns + for (i=0; i < 8; ++i,++d, ++v) { + // if all zeroes, shortcut -- this avoids dequantizing 0s and IDCTing + if (d[ 8]==0 && d[16]==0 && d[24]==0 && d[32]==0 + && d[40]==0 && d[48]==0 && d[56]==0) { + // no shortcut 0 seconds + // (1|2|3|4|5|6|7)==0 0 seconds + // all separate -0.047 seconds + // 1 && 2|3 && 4|5 && 6|7: -0.047 seconds + int dcterm = d[0]*4; + v[0] = v[8] = v[16] = v[24] = v[32] = v[40] = v[48] = v[56] = dcterm; + } else { + STBI__IDCT_1D(d[ 0],d[ 8],d[16],d[24],d[32],d[40],d[48],d[56]) + // constants scaled things up by 1<<12; let's bring them back + // down, but keep 2 extra bits of precision + x0 += 512; x1 += 512; x2 += 512; x3 += 512; + v[ 0] = (x0+t3) >> 10; + v[56] = (x0-t3) >> 10; + v[ 8] = (x1+t2) >> 10; + v[48] = (x1-t2) >> 10; + v[16] = (x2+t1) >> 10; + v[40] = (x2-t1) >> 10; + v[24] = (x3+t0) >> 10; + v[32] = (x3-t0) >> 10; + } + } + + for (i=0, v=val, o=out; i < 8; ++i,v+=8,o+=out_stride) { + // no fast case since the first 1D IDCT spread components out + STBI__IDCT_1D(v[0],v[1],v[2],v[3],v[4],v[5],v[6],v[7]) + // constants scaled things up by 1<<12, plus we had 1<<2 from first + // loop, plus horizontal and vertical each scale by sqrt(8) so together + // we've got an extra 1<<3, so 1<<17 total we need to remove. + // so we want to round that, which means adding 0.5 * 1<<17, + // aka 65536. Also, we'll end up with -128 to 127 that we want + // to encode as 0..255 by adding 128, so we'll add that before the shift + x0 += 65536 + (128<<17); + x1 += 65536 + (128<<17); + x2 += 65536 + (128<<17); + x3 += 65536 + (128<<17); + // tried computing the shifts into temps, or'ing the temps to see + // if any were out of range, but that was slower + o[0] = stbi__clamp((x0+t3) >> 17); + o[7] = stbi__clamp((x0-t3) >> 17); + o[1] = stbi__clamp((x1+t2) >> 17); + o[6] = stbi__clamp((x1-t2) >> 17); + o[2] = stbi__clamp((x2+t1) >> 17); + o[5] = stbi__clamp((x2-t1) >> 17); + o[3] = stbi__clamp((x3+t0) >> 17); + o[4] = stbi__clamp((x3-t0) >> 17); + } +} + +#ifdef STBI_SSE2 +// sse2 integer IDCT. not the fastest possible implementation but it +// produces bit-identical results to the generic C version so it's +// fully "transparent". +static void stbi__idct_simd(stbi_uc *out, int out_stride, short data[64]) +{ + // This is constructed to match our regular (generic) integer IDCT exactly. + __m128i row0, row1, row2, row3, row4, row5, row6, row7; + __m128i tmp; + + // dot product constant: even elems=x, odd elems=y + #define dct_const(x,y) _mm_setr_epi16((x),(y),(x),(y),(x),(y),(x),(y)) + + // out(0) = c0[even]*x + c0[odd]*y (c0, x, y 16-bit, out 32-bit) + // out(1) = c1[even]*x + c1[odd]*y + #define dct_rot(out0,out1, x,y,c0,c1) \ + __m128i c0##lo = _mm_unpacklo_epi16((x),(y)); \ + __m128i c0##hi = _mm_unpackhi_epi16((x),(y)); \ + __m128i out0##_l = _mm_madd_epi16(c0##lo, c0); \ + __m128i out0##_h = _mm_madd_epi16(c0##hi, c0); \ + __m128i out1##_l = _mm_madd_epi16(c0##lo, c1); \ + __m128i out1##_h = _mm_madd_epi16(c0##hi, c1) + + // out = in << 12 (in 16-bit, out 32-bit) + #define dct_widen(out, in) \ + __m128i out##_l = _mm_srai_epi32(_mm_unpacklo_epi16(_mm_setzero_si128(), (in)), 4); \ + __m128i out##_h = _mm_srai_epi32(_mm_unpackhi_epi16(_mm_setzero_si128(), (in)), 4) + + // wide add + #define dct_wadd(out, a, b) \ + __m128i out##_l = _mm_add_epi32(a##_l, b##_l); \ + __m128i out##_h = _mm_add_epi32(a##_h, b##_h) + + // wide sub + #define dct_wsub(out, a, b) \ + __m128i out##_l = _mm_sub_epi32(a##_l, b##_l); \ + __m128i out##_h = _mm_sub_epi32(a##_h, b##_h) + + // butterfly a/b, add bias, then shift by "s" and pack + #define dct_bfly32o(out0, out1, a,b,bias,s) \ + { \ + __m128i abiased_l = _mm_add_epi32(a##_l, bias); \ + __m128i abiased_h = _mm_add_epi32(a##_h, bias); \ + dct_wadd(sum, abiased, b); \ + dct_wsub(dif, abiased, b); \ + out0 = _mm_packs_epi32(_mm_srai_epi32(sum_l, s), _mm_srai_epi32(sum_h, s)); \ + out1 = _mm_packs_epi32(_mm_srai_epi32(dif_l, s), _mm_srai_epi32(dif_h, s)); \ + } + + // 8-bit interleave step (for transposes) + #define dct_interleave8(a, b) \ + tmp = a; \ + a = _mm_unpacklo_epi8(a, b); \ + b = _mm_unpackhi_epi8(tmp, b) + + // 16-bit interleave step (for transposes) + #define dct_interleave16(a, b) \ + tmp = a; \ + a = _mm_unpacklo_epi16(a, b); \ + b = _mm_unpackhi_epi16(tmp, b) + + #define dct_pass(bias,shift) \ + { \ + /* even part */ \ + dct_rot(t2e,t3e, row2,row6, rot0_0,rot0_1); \ + __m128i sum04 = _mm_add_epi16(row0, row4); \ + __m128i dif04 = _mm_sub_epi16(row0, row4); \ + dct_widen(t0e, sum04); \ + dct_widen(t1e, dif04); \ + dct_wadd(x0, t0e, t3e); \ + dct_wsub(x3, t0e, t3e); \ + dct_wadd(x1, t1e, t2e); \ + dct_wsub(x2, t1e, t2e); \ + /* odd part */ \ + dct_rot(y0o,y2o, row7,row3, rot2_0,rot2_1); \ + dct_rot(y1o,y3o, row5,row1, rot3_0,rot3_1); \ + __m128i sum17 = _mm_add_epi16(row1, row7); \ + __m128i sum35 = _mm_add_epi16(row3, row5); \ + dct_rot(y4o,y5o, sum17,sum35, rot1_0,rot1_1); \ + dct_wadd(x4, y0o, y4o); \ + dct_wadd(x5, y1o, y5o); \ + dct_wadd(x6, y2o, y5o); \ + dct_wadd(x7, y3o, y4o); \ + dct_bfly32o(row0,row7, x0,x7,bias,shift); \ + dct_bfly32o(row1,row6, x1,x6,bias,shift); \ + dct_bfly32o(row2,row5, x2,x5,bias,shift); \ + dct_bfly32o(row3,row4, x3,x4,bias,shift); \ + } + + __m128i rot0_0 = dct_const(stbi__f2f(0.5411961f), stbi__f2f(0.5411961f) + stbi__f2f(-1.847759065f)); + __m128i rot0_1 = dct_const(stbi__f2f(0.5411961f) + stbi__f2f( 0.765366865f), stbi__f2f(0.5411961f)); + __m128i rot1_0 = dct_const(stbi__f2f(1.175875602f) + stbi__f2f(-0.899976223f), stbi__f2f(1.175875602f)); + __m128i rot1_1 = dct_const(stbi__f2f(1.175875602f), stbi__f2f(1.175875602f) + stbi__f2f(-2.562915447f)); + __m128i rot2_0 = dct_const(stbi__f2f(-1.961570560f) + stbi__f2f( 0.298631336f), stbi__f2f(-1.961570560f)); + __m128i rot2_1 = dct_const(stbi__f2f(-1.961570560f), stbi__f2f(-1.961570560f) + stbi__f2f( 3.072711026f)); + __m128i rot3_0 = dct_const(stbi__f2f(-0.390180644f) + stbi__f2f( 2.053119869f), stbi__f2f(-0.390180644f)); + __m128i rot3_1 = dct_const(stbi__f2f(-0.390180644f), stbi__f2f(-0.390180644f) + stbi__f2f( 1.501321110f)); + + // rounding biases in column/row passes, see stbi__idct_block for explanation. + __m128i bias_0 = _mm_set1_epi32(512); + __m128i bias_1 = _mm_set1_epi32(65536 + (128<<17)); + + // load + row0 = _mm_load_si128((const __m128i *) (data + 0*8)); + row1 = _mm_load_si128((const __m128i *) (data + 1*8)); + row2 = _mm_load_si128((const __m128i *) (data + 2*8)); + row3 = _mm_load_si128((const __m128i *) (data + 3*8)); + row4 = _mm_load_si128((const __m128i *) (data + 4*8)); + row5 = _mm_load_si128((const __m128i *) (data + 5*8)); + row6 = _mm_load_si128((const __m128i *) (data + 6*8)); + row7 = _mm_load_si128((const __m128i *) (data + 7*8)); + + // column pass + dct_pass(bias_0, 10); + + { + // 16bit 8x8 transpose pass 1 + dct_interleave16(row0, row4); + dct_interleave16(row1, row5); + dct_interleave16(row2, row6); + dct_interleave16(row3, row7); + + // transpose pass 2 + dct_interleave16(row0, row2); + dct_interleave16(row1, row3); + dct_interleave16(row4, row6); + dct_interleave16(row5, row7); + + // transpose pass 3 + dct_interleave16(row0, row1); + dct_interleave16(row2, row3); + dct_interleave16(row4, row5); + dct_interleave16(row6, row7); + } + + // row pass + dct_pass(bias_1, 17); + + { + // pack + __m128i p0 = _mm_packus_epi16(row0, row1); // a0a1a2a3...a7b0b1b2b3...b7 + __m128i p1 = _mm_packus_epi16(row2, row3); + __m128i p2 = _mm_packus_epi16(row4, row5); + __m128i p3 = _mm_packus_epi16(row6, row7); + + // 8bit 8x8 transpose pass 1 + dct_interleave8(p0, p2); // a0e0a1e1... + dct_interleave8(p1, p3); // c0g0c1g1... + + // transpose pass 2 + dct_interleave8(p0, p1); // a0c0e0g0... + dct_interleave8(p2, p3); // b0d0f0h0... + + // transpose pass 3 + dct_interleave8(p0, p2); // a0b0c0d0... + dct_interleave8(p1, p3); // a4b4c4d4... + + // store + _mm_storel_epi64((__m128i *) out, p0); out += out_stride; + _mm_storel_epi64((__m128i *) out, _mm_shuffle_epi32(p0, 0x4e)); out += out_stride; + _mm_storel_epi64((__m128i *) out, p2); out += out_stride; + _mm_storel_epi64((__m128i *) out, _mm_shuffle_epi32(p2, 0x4e)); out += out_stride; + _mm_storel_epi64((__m128i *) out, p1); out += out_stride; + _mm_storel_epi64((__m128i *) out, _mm_shuffle_epi32(p1, 0x4e)); out += out_stride; + _mm_storel_epi64((__m128i *) out, p3); out += out_stride; + _mm_storel_epi64((__m128i *) out, _mm_shuffle_epi32(p3, 0x4e)); + } + +#undef dct_const +#undef dct_rot +#undef dct_widen +#undef dct_wadd +#undef dct_wsub +#undef dct_bfly32o +#undef dct_interleave8 +#undef dct_interleave16 +#undef dct_pass +} + +#endif // STBI_SSE2 + +#ifdef STBI_NEON + +// NEON integer IDCT. should produce bit-identical +// results to the generic C version. +static void stbi__idct_simd(stbi_uc *out, int out_stride, short data[64]) +{ + int16x8_t row0, row1, row2, row3, row4, row5, row6, row7; + + int16x4_t rot0_0 = vdup_n_s16(stbi__f2f(0.5411961f)); + int16x4_t rot0_1 = vdup_n_s16(stbi__f2f(-1.847759065f)); + int16x4_t rot0_2 = vdup_n_s16(stbi__f2f( 0.765366865f)); + int16x4_t rot1_0 = vdup_n_s16(stbi__f2f( 1.175875602f)); + int16x4_t rot1_1 = vdup_n_s16(stbi__f2f(-0.899976223f)); + int16x4_t rot1_2 = vdup_n_s16(stbi__f2f(-2.562915447f)); + int16x4_t rot2_0 = vdup_n_s16(stbi__f2f(-1.961570560f)); + int16x4_t rot2_1 = vdup_n_s16(stbi__f2f(-0.390180644f)); + int16x4_t rot3_0 = vdup_n_s16(stbi__f2f( 0.298631336f)); + int16x4_t rot3_1 = vdup_n_s16(stbi__f2f( 2.053119869f)); + int16x4_t rot3_2 = vdup_n_s16(stbi__f2f( 3.072711026f)); + int16x4_t rot3_3 = vdup_n_s16(stbi__f2f( 1.501321110f)); + +#define dct_long_mul(out, inq, coeff) \ + int32x4_t out##_l = vmull_s16(vget_low_s16(inq), coeff); \ + int32x4_t out##_h = vmull_s16(vget_high_s16(inq), coeff) + +#define dct_long_mac(out, acc, inq, coeff) \ + int32x4_t out##_l = vmlal_s16(acc##_l, vget_low_s16(inq), coeff); \ + int32x4_t out##_h = vmlal_s16(acc##_h, vget_high_s16(inq), coeff) + +#define dct_widen(out, inq) \ + int32x4_t out##_l = vshll_n_s16(vget_low_s16(inq), 12); \ + int32x4_t out##_h = vshll_n_s16(vget_high_s16(inq), 12) + +// wide add +#define dct_wadd(out, a, b) \ + int32x4_t out##_l = vaddq_s32(a##_l, b##_l); \ + int32x4_t out##_h = vaddq_s32(a##_h, b##_h) + +// wide sub +#define dct_wsub(out, a, b) \ + int32x4_t out##_l = vsubq_s32(a##_l, b##_l); \ + int32x4_t out##_h = vsubq_s32(a##_h, b##_h) + +// butterfly a/b, then shift using "shiftop" by "s" and pack +#define dct_bfly32o(out0,out1, a,b,shiftop,s) \ + { \ + dct_wadd(sum, a, b); \ + dct_wsub(dif, a, b); \ + out0 = vcombine_s16(shiftop(sum_l, s), shiftop(sum_h, s)); \ + out1 = vcombine_s16(shiftop(dif_l, s), shiftop(dif_h, s)); \ + } + +#define dct_pass(shiftop, shift) \ + { \ + /* even part */ \ + int16x8_t sum26 = vaddq_s16(row2, row6); \ + dct_long_mul(p1e, sum26, rot0_0); \ + dct_long_mac(t2e, p1e, row6, rot0_1); \ + dct_long_mac(t3e, p1e, row2, rot0_2); \ + int16x8_t sum04 = vaddq_s16(row0, row4); \ + int16x8_t dif04 = vsubq_s16(row0, row4); \ + dct_widen(t0e, sum04); \ + dct_widen(t1e, dif04); \ + dct_wadd(x0, t0e, t3e); \ + dct_wsub(x3, t0e, t3e); \ + dct_wadd(x1, t1e, t2e); \ + dct_wsub(x2, t1e, t2e); \ + /* odd part */ \ + int16x8_t sum15 = vaddq_s16(row1, row5); \ + int16x8_t sum17 = vaddq_s16(row1, row7); \ + int16x8_t sum35 = vaddq_s16(row3, row5); \ + int16x8_t sum37 = vaddq_s16(row3, row7); \ + int16x8_t sumodd = vaddq_s16(sum17, sum35); \ + dct_long_mul(p5o, sumodd, rot1_0); \ + dct_long_mac(p1o, p5o, sum17, rot1_1); \ + dct_long_mac(p2o, p5o, sum35, rot1_2); \ + dct_long_mul(p3o, sum37, rot2_0); \ + dct_long_mul(p4o, sum15, rot2_1); \ + dct_wadd(sump13o, p1o, p3o); \ + dct_wadd(sump24o, p2o, p4o); \ + dct_wadd(sump23o, p2o, p3o); \ + dct_wadd(sump14o, p1o, p4o); \ + dct_long_mac(x4, sump13o, row7, rot3_0); \ + dct_long_mac(x5, sump24o, row5, rot3_1); \ + dct_long_mac(x6, sump23o, row3, rot3_2); \ + dct_long_mac(x7, sump14o, row1, rot3_3); \ + dct_bfly32o(row0,row7, x0,x7,shiftop,shift); \ + dct_bfly32o(row1,row6, x1,x6,shiftop,shift); \ + dct_bfly32o(row2,row5, x2,x5,shiftop,shift); \ + dct_bfly32o(row3,row4, x3,x4,shiftop,shift); \ + } + + // load + row0 = vld1q_s16(data + 0*8); + row1 = vld1q_s16(data + 1*8); + row2 = vld1q_s16(data + 2*8); + row3 = vld1q_s16(data + 3*8); + row4 = vld1q_s16(data + 4*8); + row5 = vld1q_s16(data + 5*8); + row6 = vld1q_s16(data + 6*8); + row7 = vld1q_s16(data + 7*8); + + // add DC bias + row0 = vaddq_s16(row0, vsetq_lane_s16(1024, vdupq_n_s16(0), 0)); + + // column pass + dct_pass(vrshrn_n_s32, 10); + + // 16bit 8x8 transpose + { +// these three map to a single VTRN.16, VTRN.32, and VSWP, respectively. +// whether compilers actually get this is another story, sadly. +#define dct_trn16(x, y) { int16x8x2_t t = vtrnq_s16(x, y); x = t.val[0]; y = t.val[1]; } +#define dct_trn32(x, y) { int32x4x2_t t = vtrnq_s32(vreinterpretq_s32_s16(x), vreinterpretq_s32_s16(y)); x = vreinterpretq_s16_s32(t.val[0]); y = vreinterpretq_s16_s32(t.val[1]); } +#define dct_trn64(x, y) { int16x8_t x0 = x; int16x8_t y0 = y; x = vcombine_s16(vget_low_s16(x0), vget_low_s16(y0)); y = vcombine_s16(vget_high_s16(x0), vget_high_s16(y0)); } + + // pass 1 + dct_trn16(row0, row1); // a0b0a2b2a4b4a6b6 + dct_trn16(row2, row3); + dct_trn16(row4, row5); + dct_trn16(row6, row7); + + // pass 2 + dct_trn32(row0, row2); // a0b0c0d0a4b4c4d4 + dct_trn32(row1, row3); + dct_trn32(row4, row6); + dct_trn32(row5, row7); + + // pass 3 + dct_trn64(row0, row4); // a0b0c0d0e0f0g0h0 + dct_trn64(row1, row5); + dct_trn64(row2, row6); + dct_trn64(row3, row7); + +#undef dct_trn16 +#undef dct_trn32 +#undef dct_trn64 + } + + // row pass + // vrshrn_n_s32 only supports shifts up to 16, we need + // 17. so do a non-rounding shift of 16 first then follow + // up with a rounding shift by 1. + dct_pass(vshrn_n_s32, 16); + + { + // pack and round + uint8x8_t p0 = vqrshrun_n_s16(row0, 1); + uint8x8_t p1 = vqrshrun_n_s16(row1, 1); + uint8x8_t p2 = vqrshrun_n_s16(row2, 1); + uint8x8_t p3 = vqrshrun_n_s16(row3, 1); + uint8x8_t p4 = vqrshrun_n_s16(row4, 1); + uint8x8_t p5 = vqrshrun_n_s16(row5, 1); + uint8x8_t p6 = vqrshrun_n_s16(row6, 1); + uint8x8_t p7 = vqrshrun_n_s16(row7, 1); + + // again, these can translate into one instruction, but often don't. +#define dct_trn8_8(x, y) { uint8x8x2_t t = vtrn_u8(x, y); x = t.val[0]; y = t.val[1]; } +#define dct_trn8_16(x, y) { uint16x4x2_t t = vtrn_u16(vreinterpret_u16_u8(x), vreinterpret_u16_u8(y)); x = vreinterpret_u8_u16(t.val[0]); y = vreinterpret_u8_u16(t.val[1]); } +#define dct_trn8_32(x, y) { uint32x2x2_t t = vtrn_u32(vreinterpret_u32_u8(x), vreinterpret_u32_u8(y)); x = vreinterpret_u8_u32(t.val[0]); y = vreinterpret_u8_u32(t.val[1]); } + + // sadly can't use interleaved stores here since we only write + // 8 bytes to each scan line! + + // 8x8 8-bit transpose pass 1 + dct_trn8_8(p0, p1); + dct_trn8_8(p2, p3); + dct_trn8_8(p4, p5); + dct_trn8_8(p6, p7); + + // pass 2 + dct_trn8_16(p0, p2); + dct_trn8_16(p1, p3); + dct_trn8_16(p4, p6); + dct_trn8_16(p5, p7); + + // pass 3 + dct_trn8_32(p0, p4); + dct_trn8_32(p1, p5); + dct_trn8_32(p2, p6); + dct_trn8_32(p3, p7); + + // store + vst1_u8(out, p0); out += out_stride; + vst1_u8(out, p1); out += out_stride; + vst1_u8(out, p2); out += out_stride; + vst1_u8(out, p3); out += out_stride; + vst1_u8(out, p4); out += out_stride; + vst1_u8(out, p5); out += out_stride; + vst1_u8(out, p6); out += out_stride; + vst1_u8(out, p7); + +#undef dct_trn8_8 +#undef dct_trn8_16 +#undef dct_trn8_32 + } + +#undef dct_long_mul +#undef dct_long_mac +#undef dct_widen +#undef dct_wadd +#undef dct_wsub +#undef dct_bfly32o +#undef dct_pass +} + +#endif // STBI_NEON + +#define STBI__MARKER_none 0xff +// if there's a pending marker from the entropy stream, return that +// otherwise, fetch from the stream and get a marker. if there's no +// marker, return 0xff, which is never a valid marker value +static stbi_uc stbi__get_marker(stbi__jpeg *j) +{ + stbi_uc x; + if (j->marker != STBI__MARKER_none) { x = j->marker; j->marker = STBI__MARKER_none; return x; } + x = stbi__get8(j->s); + if (x != 0xff) return STBI__MARKER_none; + while (x == 0xff) + x = stbi__get8(j->s); // consume repeated 0xff fill bytes + return x; +} + +// in each scan, we'll have scan_n components, and the order +// of the components is specified by order[] +#define STBI__RESTART(x) ((x) >= 0xd0 && (x) <= 0xd7) + +// after a restart interval, stbi__jpeg_reset the entropy decoder and +// the dc prediction +static void stbi__jpeg_reset(stbi__jpeg *j) +{ + j->code_bits = 0; + j->code_buffer = 0; + j->nomore = 0; + j->img_comp[0].dc_pred = j->img_comp[1].dc_pred = j->img_comp[2].dc_pred = j->img_comp[3].dc_pred = 0; + j->marker = STBI__MARKER_none; + j->todo = j->restart_interval ? j->restart_interval : 0x7fffffff; + j->eob_run = 0; + // no more than 1<<31 MCUs if no restart_interal? that's plenty safe, + // since we don't even allow 1<<30 pixels +} + +static int stbi__parse_entropy_coded_data(stbi__jpeg *z) +{ + stbi__jpeg_reset(z); + if (!z->progressive) { + if (z->scan_n == 1) { + int i,j; + STBI_SIMD_ALIGN(short, data[64]); + int n = z->order[0]; + // non-interleaved data, we just need to process one block at a time, + // in trivial scanline order + // number of blocks to do just depends on how many actual "pixels" this + // component has, independent of interleaved MCU blocking and such + int w = (z->img_comp[n].x+7) >> 3; + int h = (z->img_comp[n].y+7) >> 3; + for (j=0; j < h; ++j) { + for (i=0; i < w; ++i) { + int ha = z->img_comp[n].ha; + if (!stbi__jpeg_decode_block(z, data, z->huff_dc+z->img_comp[n].hd, z->huff_ac+ha, z->fast_ac[ha], n, z->dequant[z->img_comp[n].tq])) return 0; + z->idct_block_kernel(z->img_comp[n].data+z->img_comp[n].w2*j*8+i*8, z->img_comp[n].w2, data); + // every data block is an MCU, so countdown the restart interval + if (--z->todo <= 0) { + if (z->code_bits < 24) stbi__grow_buffer_unsafe(z); + // if it's NOT a restart, then just bail, so we get corrupt data + // rather than no data + if (!STBI__RESTART(z->marker)) return 1; + stbi__jpeg_reset(z); + } + } + } + return 1; + } else { // interleaved + int i,j,k,x,y; + STBI_SIMD_ALIGN(short, data[64]); + for (j=0; j < z->img_mcu_y; ++j) { + for (i=0; i < z->img_mcu_x; ++i) { + // scan an interleaved mcu... process scan_n components in order + for (k=0; k < z->scan_n; ++k) { + int n = z->order[k]; + // scan out an mcu's worth of this component; that's just determined + // by the basic H and V specified for the component + for (y=0; y < z->img_comp[n].v; ++y) { + for (x=0; x < z->img_comp[n].h; ++x) { + int x2 = (i*z->img_comp[n].h + x)*8; + int y2 = (j*z->img_comp[n].v + y)*8; + int ha = z->img_comp[n].ha; + if (!stbi__jpeg_decode_block(z, data, z->huff_dc+z->img_comp[n].hd, z->huff_ac+ha, z->fast_ac[ha], n, z->dequant[z->img_comp[n].tq])) return 0; + z->idct_block_kernel(z->img_comp[n].data+z->img_comp[n].w2*y2+x2, z->img_comp[n].w2, data); + } + } + } + // after all interleaved components, that's an interleaved MCU, + // so now count down the restart interval + if (--z->todo <= 0) { + if (z->code_bits < 24) stbi__grow_buffer_unsafe(z); + if (!STBI__RESTART(z->marker)) return 1; + stbi__jpeg_reset(z); + } + } + } + return 1; + } + } else { + if (z->scan_n == 1) { + int i,j; + int n = z->order[0]; + // non-interleaved data, we just need to process one block at a time, + // in trivial scanline order + // number of blocks to do just depends on how many actual "pixels" this + // component has, independent of interleaved MCU blocking and such + int w = (z->img_comp[n].x+7) >> 3; + int h = (z->img_comp[n].y+7) >> 3; + for (j=0; j < h; ++j) { + for (i=0; i < w; ++i) { + short *data = z->img_comp[n].coeff + 64 * (i + j * z->img_comp[n].coeff_w); + if (z->spec_start == 0) { + if (!stbi__jpeg_decode_block_prog_dc(z, data, &z->huff_dc[z->img_comp[n].hd], n)) + return 0; + } else { + int ha = z->img_comp[n].ha; + if (!stbi__jpeg_decode_block_prog_ac(z, data, &z->huff_ac[ha], z->fast_ac[ha])) + return 0; + } + // every data block is an MCU, so countdown the restart interval + if (--z->todo <= 0) { + if (z->code_bits < 24) stbi__grow_buffer_unsafe(z); + if (!STBI__RESTART(z->marker)) return 1; + stbi__jpeg_reset(z); + } + } + } + return 1; + } else { // interleaved + int i,j,k,x,y; + for (j=0; j < z->img_mcu_y; ++j) { + for (i=0; i < z->img_mcu_x; ++i) { + // scan an interleaved mcu... process scan_n components in order + for (k=0; k < z->scan_n; ++k) { + int n = z->order[k]; + // scan out an mcu's worth of this component; that's just determined + // by the basic H and V specified for the component + for (y=0; y < z->img_comp[n].v; ++y) { + for (x=0; x < z->img_comp[n].h; ++x) { + int x2 = (i*z->img_comp[n].h + x); + int y2 = (j*z->img_comp[n].v + y); + short *data = z->img_comp[n].coeff + 64 * (x2 + y2 * z->img_comp[n].coeff_w); + if (!stbi__jpeg_decode_block_prog_dc(z, data, &z->huff_dc[z->img_comp[n].hd], n)) + return 0; + } + } + } + // after all interleaved components, that's an interleaved MCU, + // so now count down the restart interval + if (--z->todo <= 0) { + if (z->code_bits < 24) stbi__grow_buffer_unsafe(z); + if (!STBI__RESTART(z->marker)) return 1; + stbi__jpeg_reset(z); + } + } + } + return 1; + } + } +} + +static void stbi__jpeg_dequantize(short *data, stbi__uint16 *dequant) +{ + int i; + for (i=0; i < 64; ++i) + data[i] *= dequant[i]; +} + +static void stbi__jpeg_finish(stbi__jpeg *z) +{ + if (z->progressive) { + // dequantize and idct the data + int i,j,n; + for (n=0; n < z->s->img_n; ++n) { + int w = (z->img_comp[n].x+7) >> 3; + int h = (z->img_comp[n].y+7) >> 3; + for (j=0; j < h; ++j) { + for (i=0; i < w; ++i) { + short *data = z->img_comp[n].coeff + 64 * (i + j * z->img_comp[n].coeff_w); + stbi__jpeg_dequantize(data, z->dequant[z->img_comp[n].tq]); + z->idct_block_kernel(z->img_comp[n].data+z->img_comp[n].w2*j*8+i*8, z->img_comp[n].w2, data); + } + } + } + } +} + +static int stbi__process_marker(stbi__jpeg *z, int m) +{ + int L; + switch (m) { + case STBI__MARKER_none: // no marker found + return stbi__err("expected marker","Corrupt JPEG"); + + case 0xDD: // DRI - specify restart interval + if (stbi__get16be(z->s) != 4) return stbi__err("bad DRI len","Corrupt JPEG"); + z->restart_interval = stbi__get16be(z->s); + return 1; + + case 0xDB: // DQT - define quantization table + L = stbi__get16be(z->s)-2; + while (L > 0) { + int q = stbi__get8(z->s); + int p = q >> 4, sixteen = (p != 0); + int t = q & 15,i; + if (p != 0 && p != 1) return stbi__err("bad DQT type","Corrupt JPEG"); + if (t > 3) return stbi__err("bad DQT table","Corrupt JPEG"); + + for (i=0; i < 64; ++i) + z->dequant[t][stbi__jpeg_dezigzag[i]] = (stbi__uint16)(sixteen ? stbi__get16be(z->s) : stbi__get8(z->s)); + L -= (sixteen ? 129 : 65); + } + return L==0; + + case 0xC4: // DHT - define huffman table + L = stbi__get16be(z->s)-2; + while (L > 0) { + stbi_uc *v; + int sizes[16],i,n=0; + int q = stbi__get8(z->s); + int tc = q >> 4; + int th = q & 15; + if (tc > 1 || th > 3) return stbi__err("bad DHT header","Corrupt JPEG"); + for (i=0; i < 16; ++i) { + sizes[i] = stbi__get8(z->s); + n += sizes[i]; + } + if(n > 256) return stbi__err("bad DHT header","Corrupt JPEG"); // Loop over i < n would write past end of values! + L -= 17; + if (tc == 0) { + if (!stbi__build_huffman(z->huff_dc+th, sizes)) return 0; + v = z->huff_dc[th].values; + } else { + if (!stbi__build_huffman(z->huff_ac+th, sizes)) return 0; + v = z->huff_ac[th].values; + } + for (i=0; i < n; ++i) + v[i] = stbi__get8(z->s); + if (tc != 0) + stbi__build_fast_ac(z->fast_ac[th], z->huff_ac + th); + L -= n; + } + return L==0; + } + + // check for comment block or APP blocks + if ((m >= 0xE0 && m <= 0xEF) || m == 0xFE) { + L = stbi__get16be(z->s); + if (L < 2) { + if (m == 0xFE) + return stbi__err("bad COM len","Corrupt JPEG"); + else + return stbi__err("bad APP len","Corrupt JPEG"); + } + L -= 2; + + if (m == 0xE0 && L >= 5) { // JFIF APP0 segment + static const unsigned char tag[5] = {'J','F','I','F','\0'}; + int ok = 1; + int i; + for (i=0; i < 5; ++i) + if (stbi__get8(z->s) != tag[i]) + ok = 0; + L -= 5; + if (ok) + z->jfif = 1; + } else if (m == 0xEE && L >= 12) { // Adobe APP14 segment + static const unsigned char tag[6] = {'A','d','o','b','e','\0'}; + int ok = 1; + int i; + for (i=0; i < 6; ++i) + if (stbi__get8(z->s) != tag[i]) + ok = 0; + L -= 6; + if (ok) { + stbi__get8(z->s); // version + stbi__get16be(z->s); // flags0 + stbi__get16be(z->s); // flags1 + z->app14_color_transform = stbi__get8(z->s); // color transform + L -= 6; + } + } + + stbi__skip(z->s, L); + return 1; + } + + return stbi__err("unknown marker","Corrupt JPEG"); +} + +// after we see SOS +static int stbi__process_scan_header(stbi__jpeg *z) +{ + int i; + int Ls = stbi__get16be(z->s); + z->scan_n = stbi__get8(z->s); + if (z->scan_n < 1 || z->scan_n > 4 || z->scan_n > (int) z->s->img_n) return stbi__err("bad SOS component count","Corrupt JPEG"); + if (Ls != 6+2*z->scan_n) return stbi__err("bad SOS len","Corrupt JPEG"); + for (i=0; i < z->scan_n; ++i) { + int id = stbi__get8(z->s), which; + int q = stbi__get8(z->s); + for (which = 0; which < z->s->img_n; ++which) + if (z->img_comp[which].id == id) + break; + if (which == z->s->img_n) return 0; // no match + z->img_comp[which].hd = q >> 4; if (z->img_comp[which].hd > 3) return stbi__err("bad DC huff","Corrupt JPEG"); + z->img_comp[which].ha = q & 15; if (z->img_comp[which].ha > 3) return stbi__err("bad AC huff","Corrupt JPEG"); + z->order[i] = which; + } + + { + int aa; + z->spec_start = stbi__get8(z->s); + z->spec_end = stbi__get8(z->s); // should be 63, but might be 0 + aa = stbi__get8(z->s); + z->succ_high = (aa >> 4); + z->succ_low = (aa & 15); + if (z->progressive) { + if (z->spec_start > 63 || z->spec_end > 63 || z->spec_start > z->spec_end || z->succ_high > 13 || z->succ_low > 13) + return stbi__err("bad SOS", "Corrupt JPEG"); + } else { + if (z->spec_start != 0) return stbi__err("bad SOS","Corrupt JPEG"); + if (z->succ_high != 0 || z->succ_low != 0) return stbi__err("bad SOS","Corrupt JPEG"); + z->spec_end = 63; + } + } + + return 1; +} + +static int stbi__free_jpeg_components(stbi__jpeg *z, int ncomp, int why) +{ + int i; + for (i=0; i < ncomp; ++i) { + if (z->img_comp[i].raw_data) { + STBI_FREE(z->img_comp[i].raw_data); + z->img_comp[i].raw_data = NULL; + z->img_comp[i].data = NULL; + } + if (z->img_comp[i].raw_coeff) { + STBI_FREE(z->img_comp[i].raw_coeff); + z->img_comp[i].raw_coeff = 0; + z->img_comp[i].coeff = 0; + } + if (z->img_comp[i].linebuf) { + STBI_FREE(z->img_comp[i].linebuf); + z->img_comp[i].linebuf = NULL; + } + } + return why; +} + +static int stbi__process_frame_header(stbi__jpeg *z, int scan) +{ + stbi__context *s = z->s; + int Lf,p,i,q, h_max=1,v_max=1,c; + Lf = stbi__get16be(s); if (Lf < 11) return stbi__err("bad SOF len","Corrupt JPEG"); // JPEG + p = stbi__get8(s); if (p != 8) return stbi__err("only 8-bit","JPEG format not supported: 8-bit only"); // JPEG baseline + s->img_y = stbi__get16be(s); if (s->img_y == 0) return stbi__err("no header height", "JPEG format not supported: delayed height"); // Legal, but we don't handle it--but neither does IJG + s->img_x = stbi__get16be(s); if (s->img_x == 0) return stbi__err("0 width","Corrupt JPEG"); // JPEG requires + if (s->img_y > STBI_MAX_DIMENSIONS) return stbi__err("too large","Very large image (corrupt?)"); + if (s->img_x > STBI_MAX_DIMENSIONS) return stbi__err("too large","Very large image (corrupt?)"); + c = stbi__get8(s); + if (c != 3 && c != 1 && c != 4) return stbi__err("bad component count","Corrupt JPEG"); + s->img_n = c; + for (i=0; i < c; ++i) { + z->img_comp[i].data = NULL; + z->img_comp[i].linebuf = NULL; + } + + if (Lf != 8+3*s->img_n) return stbi__err("bad SOF len","Corrupt JPEG"); + + z->rgb = 0; + for (i=0; i < s->img_n; ++i) { + static const unsigned char rgb[3] = { 'R', 'G', 'B' }; + z->img_comp[i].id = stbi__get8(s); + if (s->img_n == 3 && z->img_comp[i].id == rgb[i]) + ++z->rgb; + q = stbi__get8(s); + z->img_comp[i].h = (q >> 4); if (!z->img_comp[i].h || z->img_comp[i].h > 4) return stbi__err("bad H","Corrupt JPEG"); + z->img_comp[i].v = q & 15; if (!z->img_comp[i].v || z->img_comp[i].v > 4) return stbi__err("bad V","Corrupt JPEG"); + z->img_comp[i].tq = stbi__get8(s); if (z->img_comp[i].tq > 3) return stbi__err("bad TQ","Corrupt JPEG"); + } + + if (scan != STBI__SCAN_load) return 1; + + if (!stbi__mad3sizes_valid(s->img_x, s->img_y, s->img_n, 0)) return stbi__err("too large", "Image too large to decode"); + + for (i=0; i < s->img_n; ++i) { + if (z->img_comp[i].h > h_max) h_max = z->img_comp[i].h; + if (z->img_comp[i].v > v_max) v_max = z->img_comp[i].v; + } + + // check that plane subsampling factors are integer ratios; our resamplers can't deal with fractional ratios + // and I've never seen a non-corrupted JPEG file actually use them + for (i=0; i < s->img_n; ++i) { + if (h_max % z->img_comp[i].h != 0) return stbi__err("bad H","Corrupt JPEG"); + if (v_max % z->img_comp[i].v != 0) return stbi__err("bad V","Corrupt JPEG"); + } + + // compute interleaved mcu info + z->img_h_max = h_max; + z->img_v_max = v_max; + z->img_mcu_w = h_max * 8; + z->img_mcu_h = v_max * 8; + // these sizes can't be more than 17 bits + z->img_mcu_x = (s->img_x + z->img_mcu_w-1) / z->img_mcu_w; + z->img_mcu_y = (s->img_y + z->img_mcu_h-1) / z->img_mcu_h; + + for (i=0; i < s->img_n; ++i) { + // number of effective pixels (e.g. for non-interleaved MCU) + z->img_comp[i].x = (s->img_x * z->img_comp[i].h + h_max-1) / h_max; + z->img_comp[i].y = (s->img_y * z->img_comp[i].v + v_max-1) / v_max; + // to simplify generation, we'll allocate enough memory to decode + // the bogus oversized data from using interleaved MCUs and their + // big blocks (e.g. a 16x16 iMCU on an image of width 33); we won't + // discard the extra data until colorspace conversion + // + // img_mcu_x, img_mcu_y: <=17 bits; comp[i].h and .v are <=4 (checked earlier) + // so these muls can't overflow with 32-bit ints (which we require) + z->img_comp[i].w2 = z->img_mcu_x * z->img_comp[i].h * 8; + z->img_comp[i].h2 = z->img_mcu_y * z->img_comp[i].v * 8; + z->img_comp[i].coeff = 0; + z->img_comp[i].raw_coeff = 0; + z->img_comp[i].linebuf = NULL; + z->img_comp[i].raw_data = stbi__malloc_mad2(z->img_comp[i].w2, z->img_comp[i].h2, 15); + if (z->img_comp[i].raw_data == NULL) + return stbi__free_jpeg_components(z, i+1, stbi__err("outofmem", "Out of memory")); + // align blocks for idct using mmx/sse + z->img_comp[i].data = (stbi_uc*) (((size_t) z->img_comp[i].raw_data + 15) & ~15); + if (z->progressive) { + // w2, h2 are multiples of 8 (see above) + z->img_comp[i].coeff_w = z->img_comp[i].w2 / 8; + z->img_comp[i].coeff_h = z->img_comp[i].h2 / 8; + z->img_comp[i].raw_coeff = stbi__malloc_mad3(z->img_comp[i].w2, z->img_comp[i].h2, sizeof(short), 15); + if (z->img_comp[i].raw_coeff == NULL) + return stbi__free_jpeg_components(z, i+1, stbi__err("outofmem", "Out of memory")); + z->img_comp[i].coeff = (short*) (((size_t) z->img_comp[i].raw_coeff + 15) & ~15); + } + } + + return 1; +} + +// use comparisons since in some cases we handle more than one case (e.g. SOF) +#define stbi__DNL(x) ((x) == 0xdc) +#define stbi__SOI(x) ((x) == 0xd8) +#define stbi__EOI(x) ((x) == 0xd9) +#define stbi__SOF(x) ((x) == 0xc0 || (x) == 0xc1 || (x) == 0xc2) +#define stbi__SOS(x) ((x) == 0xda) + +#define stbi__SOF_progressive(x) ((x) == 0xc2) + +static int stbi__decode_jpeg_header(stbi__jpeg *z, int scan) +{ + int m; + z->jfif = 0; + z->app14_color_transform = -1; // valid values are 0,1,2 + z->marker = STBI__MARKER_none; // initialize cached marker to empty + m = stbi__get_marker(z); + if (!stbi__SOI(m)) return stbi__err("no SOI","Corrupt JPEG"); + if (scan == STBI__SCAN_type) return 1; + m = stbi__get_marker(z); + while (!stbi__SOF(m)) { + if (!stbi__process_marker(z,m)) return 0; + m = stbi__get_marker(z); + while (m == STBI__MARKER_none) { + // some files have extra padding after their blocks, so ok, we'll scan + if (stbi__at_eof(z->s)) return stbi__err("no SOF", "Corrupt JPEG"); + m = stbi__get_marker(z); + } + } + z->progressive = stbi__SOF_progressive(m); + if (!stbi__process_frame_header(z, scan)) return 0; + return 1; +} + +static int stbi__skip_jpeg_junk_at_end(stbi__jpeg *j) +{ + // some JPEGs have junk at end, skip over it but if we find what looks + // like a valid marker, resume there + while (!stbi__at_eof(j->s)) { + int x = stbi__get8(j->s); + while (x == 255) { // might be a marker + if (stbi__at_eof(j->s)) return STBI__MARKER_none; + x = stbi__get8(j->s); + if (x != 0x00 && x != 0xff) { + // not a stuffed zero or lead-in to another marker, looks + // like an actual marker, return it + return x; + } + // stuffed zero has x=0 now which ends the loop, meaning we go + // back to regular scan loop. + // repeated 0xff keeps trying to read the next byte of the marker. + } + } + return STBI__MARKER_none; +} + +// decode image to YCbCr format +static int stbi__decode_jpeg_image(stbi__jpeg *j) +{ + int m; + for (m = 0; m < 4; m++) { + j->img_comp[m].raw_data = NULL; + j->img_comp[m].raw_coeff = NULL; + } + j->restart_interval = 0; + if (!stbi__decode_jpeg_header(j, STBI__SCAN_load)) return 0; + m = stbi__get_marker(j); + while (!stbi__EOI(m)) { + if (stbi__SOS(m)) { + if (!stbi__process_scan_header(j)) return 0; + if (!stbi__parse_entropy_coded_data(j)) return 0; + if (j->marker == STBI__MARKER_none ) { + j->marker = stbi__skip_jpeg_junk_at_end(j); + // if we reach eof without hitting a marker, stbi__get_marker() below will fail and we'll eventually return 0 + } + m = stbi__get_marker(j); + if (STBI__RESTART(m)) + m = stbi__get_marker(j); + } else if (stbi__DNL(m)) { + int Ld = stbi__get16be(j->s); + stbi__uint32 NL = stbi__get16be(j->s); + if (Ld != 4) return stbi__err("bad DNL len", "Corrupt JPEG"); + if (NL != j->s->img_y) return stbi__err("bad DNL height", "Corrupt JPEG"); + m = stbi__get_marker(j); + } else { + if (!stbi__process_marker(j, m)) return 1; + m = stbi__get_marker(j); + } + } + if (j->progressive) + stbi__jpeg_finish(j); + return 1; +} + +// static jfif-centered resampling (across block boundaries) + +typedef stbi_uc *(*resample_row_func)(stbi_uc *out, stbi_uc *in0, stbi_uc *in1, + int w, int hs); + +#define stbi__div4(x) ((stbi_uc) ((x) >> 2)) + +static stbi_uc *resample_row_1(stbi_uc *out, stbi_uc *in_near, stbi_uc *in_far, int w, int hs) +{ + STBI_NOTUSED(out); + STBI_NOTUSED(in_far); + STBI_NOTUSED(w); + STBI_NOTUSED(hs); + return in_near; +} + +static stbi_uc* stbi__resample_row_v_2(stbi_uc *out, stbi_uc *in_near, stbi_uc *in_far, int w, int hs) +{ + // need to generate two samples vertically for every one in input + int i; + STBI_NOTUSED(hs); + for (i=0; i < w; ++i) + out[i] = stbi__div4(3*in_near[i] + in_far[i] + 2); + return out; +} + +static stbi_uc* stbi__resample_row_h_2(stbi_uc *out, stbi_uc *in_near, stbi_uc *in_far, int w, int hs) +{ + // need to generate two samples horizontally for every one in input + int i; + stbi_uc *input = in_near; + + if (w == 1) { + // if only one sample, can't do any interpolation + out[0] = out[1] = input[0]; + return out; + } + + out[0] = input[0]; + out[1] = stbi__div4(input[0]*3 + input[1] + 2); + for (i=1; i < w-1; ++i) { + int n = 3*input[i]+2; + out[i*2+0] = stbi__div4(n+input[i-1]); + out[i*2+1] = stbi__div4(n+input[i+1]); + } + out[i*2+0] = stbi__div4(input[w-2]*3 + input[w-1] + 2); + out[i*2+1] = input[w-1]; + + STBI_NOTUSED(in_far); + STBI_NOTUSED(hs); + + return out; +} + +#define stbi__div16(x) ((stbi_uc) ((x) >> 4)) + +static stbi_uc *stbi__resample_row_hv_2(stbi_uc *out, stbi_uc *in_near, stbi_uc *in_far, int w, int hs) +{ + // need to generate 2x2 samples for every one in input + int i,t0,t1; + if (w == 1) { + out[0] = out[1] = stbi__div4(3*in_near[0] + in_far[0] + 2); + return out; + } + + t1 = 3*in_near[0] + in_far[0]; + out[0] = stbi__div4(t1+2); + for (i=1; i < w; ++i) { + t0 = t1; + t1 = 3*in_near[i]+in_far[i]; + out[i*2-1] = stbi__div16(3*t0 + t1 + 8); + out[i*2 ] = stbi__div16(3*t1 + t0 + 8); + } + out[w*2-1] = stbi__div4(t1+2); + + STBI_NOTUSED(hs); + + return out; +} + +#if defined(STBI_SSE2) || defined(STBI_NEON) +static stbi_uc *stbi__resample_row_hv_2_simd(stbi_uc *out, stbi_uc *in_near, stbi_uc *in_far, int w, int hs) +{ + // need to generate 2x2 samples for every one in input + int i=0,t0,t1; + + if (w == 1) { + out[0] = out[1] = stbi__div4(3*in_near[0] + in_far[0] + 2); + return out; + } + + t1 = 3*in_near[0] + in_far[0]; + // process groups of 8 pixels for as long as we can. + // note we can't handle the last pixel in a row in this loop + // because we need to handle the filter boundary conditions. + for (; i < ((w-1) & ~7); i += 8) { +#if defined(STBI_SSE2) + // load and perform the vertical filtering pass + // this uses 3*x + y = 4*x + (y - x) + __m128i zero = _mm_setzero_si128(); + __m128i farb = _mm_loadl_epi64((__m128i *) (in_far + i)); + __m128i nearb = _mm_loadl_epi64((__m128i *) (in_near + i)); + __m128i farw = _mm_unpacklo_epi8(farb, zero); + __m128i nearw = _mm_unpacklo_epi8(nearb, zero); + __m128i diff = _mm_sub_epi16(farw, nearw); + __m128i nears = _mm_slli_epi16(nearw, 2); + __m128i curr = _mm_add_epi16(nears, diff); // current row + + // horizontal filter works the same based on shifted vers of current + // row. "prev" is current row shifted right by 1 pixel; we need to + // insert the previous pixel value (from t1). + // "next" is current row shifted left by 1 pixel, with first pixel + // of next block of 8 pixels added in. + __m128i prv0 = _mm_slli_si128(curr, 2); + __m128i nxt0 = _mm_srli_si128(curr, 2); + __m128i prev = _mm_insert_epi16(prv0, t1, 0); + __m128i next = _mm_insert_epi16(nxt0, 3*in_near[i+8] + in_far[i+8], 7); + + // horizontal filter, polyphase implementation since it's convenient: + // even pixels = 3*cur + prev = cur*4 + (prev - cur) + // odd pixels = 3*cur + next = cur*4 + (next - cur) + // note the shared term. + __m128i bias = _mm_set1_epi16(8); + __m128i curs = _mm_slli_epi16(curr, 2); + __m128i prvd = _mm_sub_epi16(prev, curr); + __m128i nxtd = _mm_sub_epi16(next, curr); + __m128i curb = _mm_add_epi16(curs, bias); + __m128i even = _mm_add_epi16(prvd, curb); + __m128i odd = _mm_add_epi16(nxtd, curb); + + // interleave even and odd pixels, then undo scaling. + __m128i int0 = _mm_unpacklo_epi16(even, odd); + __m128i int1 = _mm_unpackhi_epi16(even, odd); + __m128i de0 = _mm_srli_epi16(int0, 4); + __m128i de1 = _mm_srli_epi16(int1, 4); + + // pack and write output + __m128i outv = _mm_packus_epi16(de0, de1); + _mm_storeu_si128((__m128i *) (out + i*2), outv); +#elif defined(STBI_NEON) + // load and perform the vertical filtering pass + // this uses 3*x + y = 4*x + (y - x) + uint8x8_t farb = vld1_u8(in_far + i); + uint8x8_t nearb = vld1_u8(in_near + i); + int16x8_t diff = vreinterpretq_s16_u16(vsubl_u8(farb, nearb)); + int16x8_t nears = vreinterpretq_s16_u16(vshll_n_u8(nearb, 2)); + int16x8_t curr = vaddq_s16(nears, diff); // current row + + // horizontal filter works the same based on shifted vers of current + // row. "prev" is current row shifted right by 1 pixel; we need to + // insert the previous pixel value (from t1). + // "next" is current row shifted left by 1 pixel, with first pixel + // of next block of 8 pixels added in. + int16x8_t prv0 = vextq_s16(curr, curr, 7); + int16x8_t nxt0 = vextq_s16(curr, curr, 1); + int16x8_t prev = vsetq_lane_s16(t1, prv0, 0); + int16x8_t next = vsetq_lane_s16(3*in_near[i+8] + in_far[i+8], nxt0, 7); + + // horizontal filter, polyphase implementation since it's convenient: + // even pixels = 3*cur + prev = cur*4 + (prev - cur) + // odd pixels = 3*cur + next = cur*4 + (next - cur) + // note the shared term. + int16x8_t curs = vshlq_n_s16(curr, 2); + int16x8_t prvd = vsubq_s16(prev, curr); + int16x8_t nxtd = vsubq_s16(next, curr); + int16x8_t even = vaddq_s16(curs, prvd); + int16x8_t odd = vaddq_s16(curs, nxtd); + + // undo scaling and round, then store with even/odd phases interleaved + uint8x8x2_t o; + o.val[0] = vqrshrun_n_s16(even, 4); + o.val[1] = vqrshrun_n_s16(odd, 4); + vst2_u8(out + i*2, o); +#endif + + // "previous" value for next iter + t1 = 3*in_near[i+7] + in_far[i+7]; + } + + t0 = t1; + t1 = 3*in_near[i] + in_far[i]; + out[i*2] = stbi__div16(3*t1 + t0 + 8); + + for (++i; i < w; ++i) { + t0 = t1; + t1 = 3*in_near[i]+in_far[i]; + out[i*2-1] = stbi__div16(3*t0 + t1 + 8); + out[i*2 ] = stbi__div16(3*t1 + t0 + 8); + } + out[w*2-1] = stbi__div4(t1+2); + + STBI_NOTUSED(hs); + + return out; +} +#endif + +static stbi_uc *stbi__resample_row_generic(stbi_uc *out, stbi_uc *in_near, stbi_uc *in_far, int w, int hs) +{ + // resample with nearest-neighbor + int i,j; + STBI_NOTUSED(in_far); + for (i=0; i < w; ++i) + for (j=0; j < hs; ++j) + out[i*hs+j] = in_near[i]; + return out; +} + +// this is a reduced-precision calculation of YCbCr-to-RGB introduced +// to make sure the code produces the same results in both SIMD and scalar +#define stbi__float2fixed(x) (((int) ((x) * 4096.0f + 0.5f)) << 8) +static void stbi__YCbCr_to_RGB_row(stbi_uc *out, const stbi_uc *y, const stbi_uc *pcb, const stbi_uc *pcr, int count, int step) +{ + int i; + for (i=0; i < count; ++i) { + int y_fixed = (y[i] << 20) + (1<<19); // rounding + int r,g,b; + int cr = pcr[i] - 128; + int cb = pcb[i] - 128; + r = y_fixed + cr* stbi__float2fixed(1.40200f); + g = y_fixed + (cr*-stbi__float2fixed(0.71414f)) + ((cb*-stbi__float2fixed(0.34414f)) & 0xffff0000); + b = y_fixed + cb* stbi__float2fixed(1.77200f); + r >>= 20; + g >>= 20; + b >>= 20; + if ((unsigned) r > 255) { if (r < 0) r = 0; else r = 255; } + if ((unsigned) g > 255) { if (g < 0) g = 0; else g = 255; } + if ((unsigned) b > 255) { if (b < 0) b = 0; else b = 255; } + out[0] = (stbi_uc)r; + out[1] = (stbi_uc)g; + out[2] = (stbi_uc)b; + out[3] = 255; + out += step; + } +} + +#if defined(STBI_SSE2) || defined(STBI_NEON) +static void stbi__YCbCr_to_RGB_simd(stbi_uc *out, stbi_uc const *y, stbi_uc const *pcb, stbi_uc const *pcr, int count, int step) +{ + int i = 0; + +#ifdef STBI_SSE2 + // step == 3 is pretty ugly on the final interleave, and i'm not convinced + // it's useful in practice (you wouldn't use it for textures, for example). + // so just accelerate step == 4 case. + if (step == 4) { + // this is a fairly straightforward implementation and not super-optimized. + __m128i signflip = _mm_set1_epi8(-0x80); + __m128i cr_const0 = _mm_set1_epi16( (short) ( 1.40200f*4096.0f+0.5f)); + __m128i cr_const1 = _mm_set1_epi16( - (short) ( 0.71414f*4096.0f+0.5f)); + __m128i cb_const0 = _mm_set1_epi16( - (short) ( 0.34414f*4096.0f+0.5f)); + __m128i cb_const1 = _mm_set1_epi16( (short) ( 1.77200f*4096.0f+0.5f)); + __m128i y_bias = _mm_set1_epi8((char) (unsigned char) 128); + __m128i xw = _mm_set1_epi16(255); // alpha channel + + for (; i+7 < count; i += 8) { + // load + __m128i y_bytes = _mm_loadl_epi64((__m128i *) (y+i)); + __m128i cr_bytes = _mm_loadl_epi64((__m128i *) (pcr+i)); + __m128i cb_bytes = _mm_loadl_epi64((__m128i *) (pcb+i)); + __m128i cr_biased = _mm_xor_si128(cr_bytes, signflip); // -128 + __m128i cb_biased = _mm_xor_si128(cb_bytes, signflip); // -128 + + // unpack to short (and left-shift cr, cb by 8) + __m128i yw = _mm_unpacklo_epi8(y_bias, y_bytes); + __m128i crw = _mm_unpacklo_epi8(_mm_setzero_si128(), cr_biased); + __m128i cbw = _mm_unpacklo_epi8(_mm_setzero_si128(), cb_biased); + + // color transform + __m128i yws = _mm_srli_epi16(yw, 4); + __m128i cr0 = _mm_mulhi_epi16(cr_const0, crw); + __m128i cb0 = _mm_mulhi_epi16(cb_const0, cbw); + __m128i cb1 = _mm_mulhi_epi16(cbw, cb_const1); + __m128i cr1 = _mm_mulhi_epi16(crw, cr_const1); + __m128i rws = _mm_add_epi16(cr0, yws); + __m128i gwt = _mm_add_epi16(cb0, yws); + __m128i bws = _mm_add_epi16(yws, cb1); + __m128i gws = _mm_add_epi16(gwt, cr1); + + // descale + __m128i rw = _mm_srai_epi16(rws, 4); + __m128i bw = _mm_srai_epi16(bws, 4); + __m128i gw = _mm_srai_epi16(gws, 4); + + // back to byte, set up for transpose + __m128i brb = _mm_packus_epi16(rw, bw); + __m128i gxb = _mm_packus_epi16(gw, xw); + + // transpose to interleave channels + __m128i t0 = _mm_unpacklo_epi8(brb, gxb); + __m128i t1 = _mm_unpackhi_epi8(brb, gxb); + __m128i o0 = _mm_unpacklo_epi16(t0, t1); + __m128i o1 = _mm_unpackhi_epi16(t0, t1); + + // store + _mm_storeu_si128((__m128i *) (out + 0), o0); + _mm_storeu_si128((__m128i *) (out + 16), o1); + out += 32; + } + } +#endif + +#ifdef STBI_NEON + // in this version, step=3 support would be easy to add. but is there demand? + if (step == 4) { + // this is a fairly straightforward implementation and not super-optimized. + uint8x8_t signflip = vdup_n_u8(0x80); + int16x8_t cr_const0 = vdupq_n_s16( (short) ( 1.40200f*4096.0f+0.5f)); + int16x8_t cr_const1 = vdupq_n_s16( - (short) ( 0.71414f*4096.0f+0.5f)); + int16x8_t cb_const0 = vdupq_n_s16( - (short) ( 0.34414f*4096.0f+0.5f)); + int16x8_t cb_const1 = vdupq_n_s16( (short) ( 1.77200f*4096.0f+0.5f)); + + for (; i+7 < count; i += 8) { + // load + uint8x8_t y_bytes = vld1_u8(y + i); + uint8x8_t cr_bytes = vld1_u8(pcr + i); + uint8x8_t cb_bytes = vld1_u8(pcb + i); + int8x8_t cr_biased = vreinterpret_s8_u8(vsub_u8(cr_bytes, signflip)); + int8x8_t cb_biased = vreinterpret_s8_u8(vsub_u8(cb_bytes, signflip)); + + // expand to s16 + int16x8_t yws = vreinterpretq_s16_u16(vshll_n_u8(y_bytes, 4)); + int16x8_t crw = vshll_n_s8(cr_biased, 7); + int16x8_t cbw = vshll_n_s8(cb_biased, 7); + + // color transform + int16x8_t cr0 = vqdmulhq_s16(crw, cr_const0); + int16x8_t cb0 = vqdmulhq_s16(cbw, cb_const0); + int16x8_t cr1 = vqdmulhq_s16(crw, cr_const1); + int16x8_t cb1 = vqdmulhq_s16(cbw, cb_const1); + int16x8_t rws = vaddq_s16(yws, cr0); + int16x8_t gws = vaddq_s16(vaddq_s16(yws, cb0), cr1); + int16x8_t bws = vaddq_s16(yws, cb1); + + // undo scaling, round, convert to byte + uint8x8x4_t o; + o.val[0] = vqrshrun_n_s16(rws, 4); + o.val[1] = vqrshrun_n_s16(gws, 4); + o.val[2] = vqrshrun_n_s16(bws, 4); + o.val[3] = vdup_n_u8(255); + + // store, interleaving r/g/b/a + vst4_u8(out, o); + out += 8*4; + } + } +#endif + + for (; i < count; ++i) { + int y_fixed = (y[i] << 20) + (1<<19); // rounding + int r,g,b; + int cr = pcr[i] - 128; + int cb = pcb[i] - 128; + r = y_fixed + cr* stbi__float2fixed(1.40200f); + g = y_fixed + cr*-stbi__float2fixed(0.71414f) + ((cb*-stbi__float2fixed(0.34414f)) & 0xffff0000); + b = y_fixed + cb* stbi__float2fixed(1.77200f); + r >>= 20; + g >>= 20; + b >>= 20; + if ((unsigned) r > 255) { if (r < 0) r = 0; else r = 255; } + if ((unsigned) g > 255) { if (g < 0) g = 0; else g = 255; } + if ((unsigned) b > 255) { if (b < 0) b = 0; else b = 255; } + out[0] = (stbi_uc)r; + out[1] = (stbi_uc)g; + out[2] = (stbi_uc)b; + out[3] = 255; + out += step; + } +} +#endif + +// set up the kernels +static void stbi__setup_jpeg(stbi__jpeg *j) +{ + j->idct_block_kernel = stbi__idct_block; + j->YCbCr_to_RGB_kernel = stbi__YCbCr_to_RGB_row; + j->resample_row_hv_2_kernel = stbi__resample_row_hv_2; + +#ifdef STBI_SSE2 + if (stbi__sse2_available()) { + j->idct_block_kernel = stbi__idct_simd; + j->YCbCr_to_RGB_kernel = stbi__YCbCr_to_RGB_simd; + j->resample_row_hv_2_kernel = stbi__resample_row_hv_2_simd; + } +#endif + +#ifdef STBI_NEON + j->idct_block_kernel = stbi__idct_simd; + j->YCbCr_to_RGB_kernel = stbi__YCbCr_to_RGB_simd; + j->resample_row_hv_2_kernel = stbi__resample_row_hv_2_simd; +#endif +} + +// clean up the temporary component buffers +static void stbi__cleanup_jpeg(stbi__jpeg *j) +{ + stbi__free_jpeg_components(j, j->s->img_n, 0); +} + +typedef struct +{ + resample_row_func resample; + stbi_uc *line0,*line1; + int hs,vs; // expansion factor in each axis + int w_lores; // horizontal pixels pre-expansion + int ystep; // how far through vertical expansion we are + int ypos; // which pre-expansion row we're on +} stbi__resample; + +// fast 0..255 * 0..255 => 0..255 rounded multiplication +static stbi_uc stbi__blinn_8x8(stbi_uc x, stbi_uc y) +{ + unsigned int t = x*y + 128; + return (stbi_uc) ((t + (t >>8)) >> 8); +} + +static stbi_uc *load_jpeg_image(stbi__jpeg *z, int *out_x, int *out_y, int *comp, int req_comp) +{ + int n, decode_n, is_rgb; + z->s->img_n = 0; // make stbi__cleanup_jpeg safe + + // validate req_comp + if (req_comp < 0 || req_comp > 4) return stbi__errpuc("bad req_comp", "Internal error"); + + // load a jpeg image from whichever source, but leave in YCbCr format + if (!stbi__decode_jpeg_image(z)) { stbi__cleanup_jpeg(z); return NULL; } + + // determine actual number of components to generate + n = req_comp ? req_comp : z->s->img_n >= 3 ? 3 : 1; + + is_rgb = z->s->img_n == 3 && (z->rgb == 3 || (z->app14_color_transform == 0 && !z->jfif)); + + if (z->s->img_n == 3 && n < 3 && !is_rgb) + decode_n = 1; + else + decode_n = z->s->img_n; + + // nothing to do if no components requested; check this now to avoid + // accessing uninitialized coutput[0] later + if (decode_n <= 0) { stbi__cleanup_jpeg(z); return NULL; } + + // resample and color-convert + { + int k; + unsigned int i,j; + stbi_uc *output; + stbi_uc *coutput[4] = { NULL, NULL, NULL, NULL }; + + stbi__resample res_comp[4]; + + for (k=0; k < decode_n; ++k) { + stbi__resample *r = &res_comp[k]; + + // allocate line buffer big enough for upsampling off the edges + // with upsample factor of 4 + z->img_comp[k].linebuf = (stbi_uc *) stbi__malloc(z->s->img_x + 3); + if (!z->img_comp[k].linebuf) { stbi__cleanup_jpeg(z); return stbi__errpuc("outofmem", "Out of memory"); } + + r->hs = z->img_h_max / z->img_comp[k].h; + r->vs = z->img_v_max / z->img_comp[k].v; + r->ystep = r->vs >> 1; + r->w_lores = (z->s->img_x + r->hs-1) / r->hs; + r->ypos = 0; + r->line0 = r->line1 = z->img_comp[k].data; + + if (r->hs == 1 && r->vs == 1) r->resample = resample_row_1; + else if (r->hs == 1 && r->vs == 2) r->resample = stbi__resample_row_v_2; + else if (r->hs == 2 && r->vs == 1) r->resample = stbi__resample_row_h_2; + else if (r->hs == 2 && r->vs == 2) r->resample = z->resample_row_hv_2_kernel; + else r->resample = stbi__resample_row_generic; + } + + // can't error after this so, this is safe + output = (stbi_uc *) stbi__malloc_mad3(n, z->s->img_x, z->s->img_y, 1); + if (!output) { stbi__cleanup_jpeg(z); return stbi__errpuc("outofmem", "Out of memory"); } + + // now go ahead and resample + for (j=0; j < z->s->img_y; ++j) { + stbi_uc *out = output + n * z->s->img_x * j; + for (k=0; k < decode_n; ++k) { + stbi__resample *r = &res_comp[k]; + int y_bot = r->ystep >= (r->vs >> 1); + coutput[k] = r->resample(z->img_comp[k].linebuf, + y_bot ? r->line1 : r->line0, + y_bot ? r->line0 : r->line1, + r->w_lores, r->hs); + if (++r->ystep >= r->vs) { + r->ystep = 0; + r->line0 = r->line1; + if (++r->ypos < z->img_comp[k].y) + r->line1 += z->img_comp[k].w2; + } + } + if (n >= 3) { + stbi_uc *y = coutput[0]; + if (z->s->img_n == 3) { + if (is_rgb) { + for (i=0; i < z->s->img_x; ++i) { + out[0] = y[i]; + out[1] = coutput[1][i]; + out[2] = coutput[2][i]; + out[3] = 255; + out += n; + } + } else { + z->YCbCr_to_RGB_kernel(out, y, coutput[1], coutput[2], z->s->img_x, n); + } + } else if (z->s->img_n == 4) { + if (z->app14_color_transform == 0) { // CMYK + for (i=0; i < z->s->img_x; ++i) { + stbi_uc m = coutput[3][i]; + out[0] = stbi__blinn_8x8(coutput[0][i], m); + out[1] = stbi__blinn_8x8(coutput[1][i], m); + out[2] = stbi__blinn_8x8(coutput[2][i], m); + out[3] = 255; + out += n; + } + } else if (z->app14_color_transform == 2) { // YCCK + z->YCbCr_to_RGB_kernel(out, y, coutput[1], coutput[2], z->s->img_x, n); + for (i=0; i < z->s->img_x; ++i) { + stbi_uc m = coutput[3][i]; + out[0] = stbi__blinn_8x8(255 - out[0], m); + out[1] = stbi__blinn_8x8(255 - out[1], m); + out[2] = stbi__blinn_8x8(255 - out[2], m); + out += n; + } + } else { // YCbCr + alpha? Ignore the fourth channel for now + z->YCbCr_to_RGB_kernel(out, y, coutput[1], coutput[2], z->s->img_x, n); + } + } else + for (i=0; i < z->s->img_x; ++i) { + out[0] = out[1] = out[2] = y[i]; + out[3] = 255; // not used if n==3 + out += n; + } + } else { + if (is_rgb) { + if (n == 1) + for (i=0; i < z->s->img_x; ++i) + *out++ = stbi__compute_y(coutput[0][i], coutput[1][i], coutput[2][i]); + else { + for (i=0; i < z->s->img_x; ++i, out += 2) { + out[0] = stbi__compute_y(coutput[0][i], coutput[1][i], coutput[2][i]); + out[1] = 255; + } + } + } else if (z->s->img_n == 4 && z->app14_color_transform == 0) { + for (i=0; i < z->s->img_x; ++i) { + stbi_uc m = coutput[3][i]; + stbi_uc r = stbi__blinn_8x8(coutput[0][i], m); + stbi_uc g = stbi__blinn_8x8(coutput[1][i], m); + stbi_uc b = stbi__blinn_8x8(coutput[2][i], m); + out[0] = stbi__compute_y(r, g, b); + out[1] = 255; + out += n; + } + } else if (z->s->img_n == 4 && z->app14_color_transform == 2) { + for (i=0; i < z->s->img_x; ++i) { + out[0] = stbi__blinn_8x8(255 - coutput[0][i], coutput[3][i]); + out[1] = 255; + out += n; + } + } else { + stbi_uc *y = coutput[0]; + if (n == 1) + for (i=0; i < z->s->img_x; ++i) out[i] = y[i]; + else + for (i=0; i < z->s->img_x; ++i) { *out++ = y[i]; *out++ = 255; } + } + } + } + stbi__cleanup_jpeg(z); + *out_x = z->s->img_x; + *out_y = z->s->img_y; + if (comp) *comp = z->s->img_n >= 3 ? 3 : 1; // report original components, not output + return output; + } +} + +static void *stbi__jpeg_load(stbi__context *s, int *x, int *y, int *comp, int req_comp, stbi__result_info *ri) +{ + unsigned char* result; + stbi__jpeg* j = (stbi__jpeg*) stbi__malloc(sizeof(stbi__jpeg)); + if (!j) return stbi__errpuc("outofmem", "Out of memory"); + memset(j, 0, sizeof(stbi__jpeg)); + STBI_NOTUSED(ri); + j->s = s; + stbi__setup_jpeg(j); + result = load_jpeg_image(j, x,y,comp,req_comp); + STBI_FREE(j); + return result; +} + +static int stbi__jpeg_test(stbi__context *s) +{ + int r; + stbi__jpeg* j = (stbi__jpeg*)stbi__malloc(sizeof(stbi__jpeg)); + if (!j) return stbi__err("outofmem", "Out of memory"); + memset(j, 0, sizeof(stbi__jpeg)); + j->s = s; + stbi__setup_jpeg(j); + r = stbi__decode_jpeg_header(j, STBI__SCAN_type); + stbi__rewind(s); + STBI_FREE(j); + return r; +} + +static int stbi__jpeg_info_raw(stbi__jpeg *j, int *x, int *y, int *comp) +{ + if (!stbi__decode_jpeg_header(j, STBI__SCAN_header)) { + stbi__rewind( j->s ); + return 0; + } + if (x) *x = j->s->img_x; + if (y) *y = j->s->img_y; + if (comp) *comp = j->s->img_n >= 3 ? 3 : 1; + return 1; +} + +static int stbi__jpeg_info(stbi__context *s, int *x, int *y, int *comp) +{ + int result; + stbi__jpeg* j = (stbi__jpeg*) (stbi__malloc(sizeof(stbi__jpeg))); + if (!j) return stbi__err("outofmem", "Out of memory"); + memset(j, 0, sizeof(stbi__jpeg)); + j->s = s; + result = stbi__jpeg_info_raw(j, x, y, comp); + STBI_FREE(j); + return result; +} +#endif + +// public domain zlib decode v0.2 Sean Barrett 2006-11-18 +// simple implementation +// - all input must be provided in an upfront buffer +// - all output is written to a single output buffer (can malloc/realloc) +// performance +// - fast huffman + +#ifndef STBI_NO_ZLIB + +// fast-way is faster to check than jpeg huffman, but slow way is slower +#define STBI__ZFAST_BITS 9 // accelerate all cases in default tables +#define STBI__ZFAST_MASK ((1 << STBI__ZFAST_BITS) - 1) +#define STBI__ZNSYMS 288 // number of symbols in literal/length alphabet + +// zlib-style huffman encoding +// (jpegs packs from left, zlib from right, so can't share code) +typedef struct +{ + stbi__uint16 fast[1 << STBI__ZFAST_BITS]; + stbi__uint16 firstcode[16]; + int maxcode[17]; + stbi__uint16 firstsymbol[16]; + stbi_uc size[STBI__ZNSYMS]; + stbi__uint16 value[STBI__ZNSYMS]; +} stbi__zhuffman; + +stbi_inline static int stbi__bitreverse16(int n) +{ + n = ((n & 0xAAAA) >> 1) | ((n & 0x5555) << 1); + n = ((n & 0xCCCC) >> 2) | ((n & 0x3333) << 2); + n = ((n & 0xF0F0) >> 4) | ((n & 0x0F0F) << 4); + n = ((n & 0xFF00) >> 8) | ((n & 0x00FF) << 8); + return n; +} + +stbi_inline static int stbi__bit_reverse(int v, int bits) +{ + STBI_ASSERT(bits <= 16); + // to bit reverse n bits, reverse 16 and shift + // e.g. 11 bits, bit reverse and shift away 5 + return stbi__bitreverse16(v) >> (16-bits); +} + +static int stbi__zbuild_huffman(stbi__zhuffman *z, const stbi_uc *sizelist, int num) +{ + int i,k=0; + int code, next_code[16], sizes[17]; + + // DEFLATE spec for generating codes + memset(sizes, 0, sizeof(sizes)); + memset(z->fast, 0, sizeof(z->fast)); + for (i=0; i < num; ++i) + ++sizes[sizelist[i]]; + sizes[0] = 0; + for (i=1; i < 16; ++i) + if (sizes[i] > (1 << i)) + return stbi__err("bad sizes", "Corrupt PNG"); + code = 0; + for (i=1; i < 16; ++i) { + next_code[i] = code; + z->firstcode[i] = (stbi__uint16) code; + z->firstsymbol[i] = (stbi__uint16) k; + code = (code + sizes[i]); + if (sizes[i]) + if (code-1 >= (1 << i)) return stbi__err("bad codelengths","Corrupt PNG"); + z->maxcode[i] = code << (16-i); // preshift for inner loop + code <<= 1; + k += sizes[i]; + } + z->maxcode[16] = 0x10000; // sentinel + for (i=0; i < num; ++i) { + int s = sizelist[i]; + if (s) { + int c = next_code[s] - z->firstcode[s] + z->firstsymbol[s]; + stbi__uint16 fastv = (stbi__uint16) ((s << 9) | i); + z->size [c] = (stbi_uc ) s; + z->value[c] = (stbi__uint16) i; + if (s <= STBI__ZFAST_BITS) { + int j = stbi__bit_reverse(next_code[s],s); + while (j < (1 << STBI__ZFAST_BITS)) { + z->fast[j] = fastv; + j += (1 << s); + } + } + ++next_code[s]; + } + } + return 1; +} + +// zlib-from-memory implementation for PNG reading +// because PNG allows splitting the zlib stream arbitrarily, +// and it's annoying structurally to have PNG call ZLIB call PNG, +// we require PNG read all the IDATs and combine them into a single +// memory buffer + +typedef struct +{ + stbi_uc *zbuffer, *zbuffer_end; + int num_bits; + stbi__uint32 code_buffer; + + char *zout; + char *zout_start; + char *zout_end; + int z_expandable; + + stbi__zhuffman z_length, z_distance; +} stbi__zbuf; + +stbi_inline static int stbi__zeof(stbi__zbuf *z) +{ + return (z->zbuffer >= z->zbuffer_end); +} + +stbi_inline static stbi_uc stbi__zget8(stbi__zbuf *z) +{ + return stbi__zeof(z) ? 0 : *z->zbuffer++; +} + +static void stbi__fill_bits(stbi__zbuf *z) +{ + do { + if (z->code_buffer >= (1U << z->num_bits)) { + z->zbuffer = z->zbuffer_end; /* treat this as EOF so we fail. */ + return; + } + z->code_buffer |= (unsigned int) stbi__zget8(z) << z->num_bits; + z->num_bits += 8; + } while (z->num_bits <= 24); +} + +stbi_inline static unsigned int stbi__zreceive(stbi__zbuf *z, int n) +{ + unsigned int k; + if (z->num_bits < n) stbi__fill_bits(z); + k = z->code_buffer & ((1 << n) - 1); + z->code_buffer >>= n; + z->num_bits -= n; + return k; +} + +static int stbi__zhuffman_decode_slowpath(stbi__zbuf *a, stbi__zhuffman *z) +{ + int b,s,k; + // not resolved by fast table, so compute it the slow way + // use jpeg approach, which requires MSbits at top + k = stbi__bit_reverse(a->code_buffer, 16); + for (s=STBI__ZFAST_BITS+1; ; ++s) + if (k < z->maxcode[s]) + break; + if (s >= 16) return -1; // invalid code! + // code size is s, so: + b = (k >> (16-s)) - z->firstcode[s] + z->firstsymbol[s]; + if (b >= STBI__ZNSYMS) return -1; // some data was corrupt somewhere! + if (z->size[b] != s) return -1; // was originally an assert, but report failure instead. + a->code_buffer >>= s; + a->num_bits -= s; + return z->value[b]; +} + +stbi_inline static int stbi__zhuffman_decode(stbi__zbuf *a, stbi__zhuffman *z) +{ + int b,s; + if (a->num_bits < 16) { + if (stbi__zeof(a)) { + return -1; /* report error for unexpected end of data. */ + } + stbi__fill_bits(a); + } + b = z->fast[a->code_buffer & STBI__ZFAST_MASK]; + if (b) { + s = b >> 9; + a->code_buffer >>= s; + a->num_bits -= s; + return b & 511; + } + return stbi__zhuffman_decode_slowpath(a, z); +} + +static int stbi__zexpand(stbi__zbuf *z, char *zout, int n) // need to make room for n bytes +{ + char *q; + unsigned int cur, limit, old_limit; + z->zout = zout; + if (!z->z_expandable) return stbi__err("output buffer limit","Corrupt PNG"); + cur = (unsigned int) (z->zout - z->zout_start); + limit = old_limit = (unsigned) (z->zout_end - z->zout_start); + if (UINT_MAX - cur < (unsigned) n) return stbi__err("outofmem", "Out of memory"); + while (cur + n > limit) { + if(limit > UINT_MAX / 2) return stbi__err("outofmem", "Out of memory"); + limit *= 2; + } + q = (char *) STBI_REALLOC_SIZED(z->zout_start, old_limit, limit); + STBI_NOTUSED(old_limit); + if (q == NULL) return stbi__err("outofmem", "Out of memory"); + z->zout_start = q; + z->zout = q + cur; + z->zout_end = q + limit; + return 1; +} + +static const int stbi__zlength_base[31] = { + 3,4,5,6,7,8,9,10,11,13, + 15,17,19,23,27,31,35,43,51,59, + 67,83,99,115,131,163,195,227,258,0,0 }; + +static const int stbi__zlength_extra[31]= +{ 0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0,0,0 }; + +static const int stbi__zdist_base[32] = { 1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193, +257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577,0,0}; + +static const int stbi__zdist_extra[32] = +{ 0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13}; + +static int stbi__parse_huffman_block(stbi__zbuf *a) +{ + char *zout = a->zout; + for(;;) { + int z = stbi__zhuffman_decode(a, &a->z_length); + if (z < 256) { + if (z < 0) return stbi__err("bad huffman code","Corrupt PNG"); // error in huffman codes + if (zout >= a->zout_end) { + if (!stbi__zexpand(a, zout, 1)) return 0; + zout = a->zout; + } + *zout++ = (char) z; + } else { + stbi_uc *p; + int len,dist; + if (z == 256) { + a->zout = zout; + return 1; + } + if (z >= 286) return stbi__err("bad huffman code","Corrupt PNG"); // per DEFLATE, length codes 286 and 287 must not appear in compressed data + z -= 257; + len = stbi__zlength_base[z]; + if (stbi__zlength_extra[z]) len += stbi__zreceive(a, stbi__zlength_extra[z]); + z = stbi__zhuffman_decode(a, &a->z_distance); + if (z < 0 || z >= 30) return stbi__err("bad huffman code","Corrupt PNG"); // per DEFLATE, distance codes 30 and 31 must not appear in compressed data + dist = stbi__zdist_base[z]; + if (stbi__zdist_extra[z]) dist += stbi__zreceive(a, stbi__zdist_extra[z]); + if (zout - a->zout_start < dist) return stbi__err("bad dist","Corrupt PNG"); + if (zout + len > a->zout_end) { + if (!stbi__zexpand(a, zout, len)) return 0; + zout = a->zout; + } + p = (stbi_uc *) (zout - dist); + if (dist == 1) { // run of one byte; common in images. + stbi_uc v = *p; + if (len) { do *zout++ = v; while (--len); } + } else { + if (len) { do *zout++ = *p++; while (--len); } + } + } + } +} + +static int stbi__compute_huffman_codes(stbi__zbuf *a) +{ + static const stbi_uc length_dezigzag[19] = { 16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15 }; + stbi__zhuffman z_codelength; + stbi_uc lencodes[286+32+137];//padding for maximum single op + stbi_uc codelength_sizes[19]; + int i,n; + + int hlit = stbi__zreceive(a,5) + 257; + int hdist = stbi__zreceive(a,5) + 1; + int hclen = stbi__zreceive(a,4) + 4; + int ntot = hlit + hdist; + + memset(codelength_sizes, 0, sizeof(codelength_sizes)); + for (i=0; i < hclen; ++i) { + int s = stbi__zreceive(a,3); + codelength_sizes[length_dezigzag[i]] = (stbi_uc) s; + } + if (!stbi__zbuild_huffman(&z_codelength, codelength_sizes, 19)) return 0; + + n = 0; + while (n < ntot) { + int c = stbi__zhuffman_decode(a, &z_codelength); + if (c < 0 || c >= 19) return stbi__err("bad codelengths", "Corrupt PNG"); + if (c < 16) + lencodes[n++] = (stbi_uc) c; + else { + stbi_uc fill = 0; + if (c == 16) { + c = stbi__zreceive(a,2)+3; + if (n == 0) return stbi__err("bad codelengths", "Corrupt PNG"); + fill = lencodes[n-1]; + } else if (c == 17) { + c = stbi__zreceive(a,3)+3; + } else if (c == 18) { + c = stbi__zreceive(a,7)+11; + } else { + return stbi__err("bad codelengths", "Corrupt PNG"); + } + if (ntot - n < c) return stbi__err("bad codelengths", "Corrupt PNG"); + memset(lencodes+n, fill, c); + n += c; + } + } + if (n != ntot) return stbi__err("bad codelengths","Corrupt PNG"); + if (!stbi__zbuild_huffman(&a->z_length, lencodes, hlit)) return 0; + if (!stbi__zbuild_huffman(&a->z_distance, lencodes+hlit, hdist)) return 0; + return 1; +} + +static int stbi__parse_uncompressed_block(stbi__zbuf *a) +{ + stbi_uc header[4]; + int len,nlen,k; + if (a->num_bits & 7) + stbi__zreceive(a, a->num_bits & 7); // discard + // drain the bit-packed data into header + k = 0; + while (a->num_bits > 0) { + header[k++] = (stbi_uc) (a->code_buffer & 255); // suppress MSVC run-time check + a->code_buffer >>= 8; + a->num_bits -= 8; + } + if (a->num_bits < 0) return stbi__err("zlib corrupt","Corrupt PNG"); + // now fill header the normal way + while (k < 4) + header[k++] = stbi__zget8(a); + len = header[1] * 256 + header[0]; + nlen = header[3] * 256 + header[2]; + if (nlen != (len ^ 0xffff)) return stbi__err("zlib corrupt","Corrupt PNG"); + if (a->zbuffer + len > a->zbuffer_end) return stbi__err("read past buffer","Corrupt PNG"); + if (a->zout + len > a->zout_end) + if (!stbi__zexpand(a, a->zout, len)) return 0; + memcpy(a->zout, a->zbuffer, len); + a->zbuffer += len; + a->zout += len; + return 1; +} + +static int stbi__parse_zlib_header(stbi__zbuf *a) +{ + int cmf = stbi__zget8(a); + int cm = cmf & 15; + /* int cinfo = cmf >> 4; */ + int flg = stbi__zget8(a); + if (stbi__zeof(a)) return stbi__err("bad zlib header","Corrupt PNG"); // zlib spec + if ((cmf*256+flg) % 31 != 0) return stbi__err("bad zlib header","Corrupt PNG"); // zlib spec + if (flg & 32) return stbi__err("no preset dict","Corrupt PNG"); // preset dictionary not allowed in png + if (cm != 8) return stbi__err("bad compression","Corrupt PNG"); // DEFLATE required for png + // window = 1 << (8 + cinfo)... but who cares, we fully buffer output + return 1; +} + +static const stbi_uc stbi__zdefault_length[STBI__ZNSYMS] = +{ + 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8, 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8, + 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8, 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8, + 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8, 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8, + 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8, 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8, + 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8, 9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9, + 9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9, 9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9, + 9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9, 9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9, + 9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9, 9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9, + 7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7, 7,7,7,7,7,7,7,7,8,8,8,8,8,8,8,8 +}; +static const stbi_uc stbi__zdefault_distance[32] = +{ + 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5 +}; +/* +Init algorithm: +{ + int i; // use <= to match clearly with spec + for (i=0; i <= 143; ++i) stbi__zdefault_length[i] = 8; + for ( ; i <= 255; ++i) stbi__zdefault_length[i] = 9; + for ( ; i <= 279; ++i) stbi__zdefault_length[i] = 7; + for ( ; i <= 287; ++i) stbi__zdefault_length[i] = 8; + + for (i=0; i <= 31; ++i) stbi__zdefault_distance[i] = 5; +} +*/ + +static int stbi__parse_zlib(stbi__zbuf *a, int parse_header) +{ + int final, type; + if (parse_header) + if (!stbi__parse_zlib_header(a)) return 0; + a->num_bits = 0; + a->code_buffer = 0; + do { + final = stbi__zreceive(a,1); + type = stbi__zreceive(a,2); + if (type == 0) { + if (!stbi__parse_uncompressed_block(a)) return 0; + } else if (type == 3) { + return 0; + } else { + if (type == 1) { + // use fixed code lengths + if (!stbi__zbuild_huffman(&a->z_length , stbi__zdefault_length , STBI__ZNSYMS)) return 0; + if (!stbi__zbuild_huffman(&a->z_distance, stbi__zdefault_distance, 32)) return 0; + } else { + if (!stbi__compute_huffman_codes(a)) return 0; + } + if (!stbi__parse_huffman_block(a)) return 0; + } + } while (!final); + return 1; +} + +static int stbi__do_zlib(stbi__zbuf *a, char *obuf, int olen, int exp, int parse_header) +{ + a->zout_start = obuf; + a->zout = obuf; + a->zout_end = obuf + olen; + a->z_expandable = exp; + + return stbi__parse_zlib(a, parse_header); +} + +STBIDEF char *stbi_zlib_decode_malloc_guesssize(const char *buffer, int len, int initial_size, int *outlen) +{ + stbi__zbuf a; + char *p = (char *) stbi__malloc(initial_size); + if (p == NULL) return NULL; + a.zbuffer = (stbi_uc *) buffer; + a.zbuffer_end = (stbi_uc *) buffer + len; + if (stbi__do_zlib(&a, p, initial_size, 1, 1)) { + if (outlen) *outlen = (int) (a.zout - a.zout_start); + return a.zout_start; + } else { + STBI_FREE(a.zout_start); + return NULL; + } +} + +STBIDEF char *stbi_zlib_decode_malloc(char const *buffer, int len, int *outlen) +{ + return stbi_zlib_decode_malloc_guesssize(buffer, len, 16384, outlen); +} + +STBIDEF char *stbi_zlib_decode_malloc_guesssize_headerflag(const char *buffer, int len, int initial_size, int *outlen, int parse_header) +{ + stbi__zbuf a; + char *p = (char *) stbi__malloc(initial_size); + if (p == NULL) return NULL; + a.zbuffer = (stbi_uc *) buffer; + a.zbuffer_end = (stbi_uc *) buffer + len; + if (stbi__do_zlib(&a, p, initial_size, 1, parse_header)) { + if (outlen) *outlen = (int) (a.zout - a.zout_start); + return a.zout_start; + } else { + STBI_FREE(a.zout_start); + return NULL; + } +} + +STBIDEF int stbi_zlib_decode_buffer(char *obuffer, int olen, char const *ibuffer, int ilen) +{ + stbi__zbuf a; + a.zbuffer = (stbi_uc *) ibuffer; + a.zbuffer_end = (stbi_uc *) ibuffer + ilen; + if (stbi__do_zlib(&a, obuffer, olen, 0, 1)) + return (int) (a.zout - a.zout_start); + else + return -1; +} + +STBIDEF char *stbi_zlib_decode_noheader_malloc(char const *buffer, int len, int *outlen) +{ + stbi__zbuf a; + char *p = (char *) stbi__malloc(16384); + if (p == NULL) return NULL; + a.zbuffer = (stbi_uc *) buffer; + a.zbuffer_end = (stbi_uc *) buffer+len; + if (stbi__do_zlib(&a, p, 16384, 1, 0)) { + if (outlen) *outlen = (int) (a.zout - a.zout_start); + return a.zout_start; + } else { + STBI_FREE(a.zout_start); + return NULL; + } +} + +STBIDEF int stbi_zlib_decode_noheader_buffer(char *obuffer, int olen, const char *ibuffer, int ilen) +{ + stbi__zbuf a; + a.zbuffer = (stbi_uc *) ibuffer; + a.zbuffer_end = (stbi_uc *) ibuffer + ilen; + if (stbi__do_zlib(&a, obuffer, olen, 0, 0)) + return (int) (a.zout - a.zout_start); + else + return -1; +} +#endif + +// public domain "baseline" PNG decoder v0.10 Sean Barrett 2006-11-18 +// simple implementation +// - only 8-bit samples +// - no CRC checking +// - allocates lots of intermediate memory +// - avoids problem of streaming data between subsystems +// - avoids explicit window management +// performance +// - uses stb_zlib, a PD zlib implementation with fast huffman decoding + +#ifndef STBI_NO_PNG +typedef struct +{ + stbi__uint32 length; + stbi__uint32 type; +} stbi__pngchunk; + +static stbi__pngchunk stbi__get_chunk_header(stbi__context *s) +{ + stbi__pngchunk c; + c.length = stbi__get32be(s); + c.type = stbi__get32be(s); + return c; +} + +static int stbi__check_png_header(stbi__context *s) +{ + static const stbi_uc png_sig[8] = { 137,80,78,71,13,10,26,10 }; + int i; + for (i=0; i < 8; ++i) + if (stbi__get8(s) != png_sig[i]) return stbi__err("bad png sig","Not a PNG"); + return 1; +} + +typedef struct +{ + stbi__context *s; + stbi_uc *idata, *expanded, *out; + int depth; +} stbi__png; + + +enum { + STBI__F_none=0, + STBI__F_sub=1, + STBI__F_up=2, + STBI__F_avg=3, + STBI__F_paeth=4, + // synthetic filters used for first scanline to avoid needing a dummy row of 0s + STBI__F_avg_first, + STBI__F_paeth_first +}; + +static stbi_uc first_row_filter[5] = +{ + STBI__F_none, + STBI__F_sub, + STBI__F_none, + STBI__F_avg_first, + STBI__F_paeth_first +}; + +static int stbi__paeth(int a, int b, int c) +{ + int p = a + b - c; + int pa = abs(p-a); + int pb = abs(p-b); + int pc = abs(p-c); + if (pa <= pb && pa <= pc) return a; + if (pb <= pc) return b; + return c; +} + +static const stbi_uc stbi__depth_scale_table[9] = { 0, 0xff, 0x55, 0, 0x11, 0,0,0, 0x01 }; + +// create the png data from post-deflated data +static int stbi__create_png_image_raw(stbi__png *a, stbi_uc *raw, stbi__uint32 raw_len, int out_n, stbi__uint32 x, stbi__uint32 y, int depth, int color) +{ + int bytes = (depth == 16? 2 : 1); + stbi__context *s = a->s; + stbi__uint32 i,j,stride = x*out_n*bytes; + stbi__uint32 img_len, img_width_bytes; + int k; + int img_n = s->img_n; // copy it into a local for later + + int output_bytes = out_n*bytes; + int filter_bytes = img_n*bytes; + int width = x; + + STBI_ASSERT(out_n == s->img_n || out_n == s->img_n+1); + a->out = (stbi_uc *) stbi__malloc_mad3(x, y, output_bytes, 0); // extra bytes to write off the end into + if (!a->out) return stbi__err("outofmem", "Out of memory"); + + if (!stbi__mad3sizes_valid(img_n, x, depth, 7)) return stbi__err("too large", "Corrupt PNG"); + img_width_bytes = (((img_n * x * depth) + 7) >> 3); + img_len = (img_width_bytes + 1) * y; + + // we used to check for exact match between raw_len and img_len on non-interlaced PNGs, + // but issue #276 reported a PNG in the wild that had extra data at the end (all zeros), + // so just check for raw_len < img_len always. + if (raw_len < img_len) return stbi__err("not enough pixels","Corrupt PNG"); + + for (j=0; j < y; ++j) { + stbi_uc *cur = a->out + stride*j; + stbi_uc *prior; + int filter = *raw++; + + if (filter > 4) + return stbi__err("invalid filter","Corrupt PNG"); + + if (depth < 8) { + if (img_width_bytes > x) return stbi__err("invalid width","Corrupt PNG"); + cur += x*out_n - img_width_bytes; // store output to the rightmost img_len bytes, so we can decode in place + filter_bytes = 1; + width = img_width_bytes; + } + prior = cur - stride; // bugfix: need to compute this after 'cur +=' computation above + + // if first row, use special filter that doesn't sample previous row + if (j == 0) filter = first_row_filter[filter]; + + // handle first byte explicitly + for (k=0; k < filter_bytes; ++k) { + switch (filter) { + case STBI__F_none : cur[k] = raw[k]; break; + case STBI__F_sub : cur[k] = raw[k]; break; + case STBI__F_up : cur[k] = STBI__BYTECAST(raw[k] + prior[k]); break; + case STBI__F_avg : cur[k] = STBI__BYTECAST(raw[k] + (prior[k]>>1)); break; + case STBI__F_paeth : cur[k] = STBI__BYTECAST(raw[k] + stbi__paeth(0,prior[k],0)); break; + case STBI__F_avg_first : cur[k] = raw[k]; break; + case STBI__F_paeth_first: cur[k] = raw[k]; break; + } + } + + if (depth == 8) { + if (img_n != out_n) + cur[img_n] = 255; // first pixel + raw += img_n; + cur += out_n; + prior += out_n; + } else if (depth == 16) { + if (img_n != out_n) { + cur[filter_bytes] = 255; // first pixel top byte + cur[filter_bytes+1] = 255; // first pixel bottom byte + } + raw += filter_bytes; + cur += output_bytes; + prior += output_bytes; + } else { + raw += 1; + cur += 1; + prior += 1; + } + + // this is a little gross, so that we don't switch per-pixel or per-component + if (depth < 8 || img_n == out_n) { + int nk = (width - 1)*filter_bytes; + #define STBI__CASE(f) \ + case f: \ + for (k=0; k < nk; ++k) + switch (filter) { + // "none" filter turns into a memcpy here; make that explicit. + case STBI__F_none: memcpy(cur, raw, nk); break; + STBI__CASE(STBI__F_sub) { cur[k] = STBI__BYTECAST(raw[k] + cur[k-filter_bytes]); } break; + STBI__CASE(STBI__F_up) { cur[k] = STBI__BYTECAST(raw[k] + prior[k]); } break; + STBI__CASE(STBI__F_avg) { cur[k] = STBI__BYTECAST(raw[k] + ((prior[k] + cur[k-filter_bytes])>>1)); } break; + STBI__CASE(STBI__F_paeth) { cur[k] = STBI__BYTECAST(raw[k] + stbi__paeth(cur[k-filter_bytes],prior[k],prior[k-filter_bytes])); } break; + STBI__CASE(STBI__F_avg_first) { cur[k] = STBI__BYTECAST(raw[k] + (cur[k-filter_bytes] >> 1)); } break; + STBI__CASE(STBI__F_paeth_first) { cur[k] = STBI__BYTECAST(raw[k] + stbi__paeth(cur[k-filter_bytes],0,0)); } break; + } + #undef STBI__CASE + raw += nk; + } else { + STBI_ASSERT(img_n+1 == out_n); + #define STBI__CASE(f) \ + case f: \ + for (i=x-1; i >= 1; --i, cur[filter_bytes]=255,raw+=filter_bytes,cur+=output_bytes,prior+=output_bytes) \ + for (k=0; k < filter_bytes; ++k) + switch (filter) { + STBI__CASE(STBI__F_none) { cur[k] = raw[k]; } break; + STBI__CASE(STBI__F_sub) { cur[k] = STBI__BYTECAST(raw[k] + cur[k- output_bytes]); } break; + STBI__CASE(STBI__F_up) { cur[k] = STBI__BYTECAST(raw[k] + prior[k]); } break; + STBI__CASE(STBI__F_avg) { cur[k] = STBI__BYTECAST(raw[k] + ((prior[k] + cur[k- output_bytes])>>1)); } break; + STBI__CASE(STBI__F_paeth) { cur[k] = STBI__BYTECAST(raw[k] + stbi__paeth(cur[k- output_bytes],prior[k],prior[k- output_bytes])); } break; + STBI__CASE(STBI__F_avg_first) { cur[k] = STBI__BYTECAST(raw[k] + (cur[k- output_bytes] >> 1)); } break; + STBI__CASE(STBI__F_paeth_first) { cur[k] = STBI__BYTECAST(raw[k] + stbi__paeth(cur[k- output_bytes],0,0)); } break; + } + #undef STBI__CASE + + // the loop above sets the high byte of the pixels' alpha, but for + // 16 bit png files we also need the low byte set. we'll do that here. + if (depth == 16) { + cur = a->out + stride*j; // start at the beginning of the row again + for (i=0; i < x; ++i,cur+=output_bytes) { + cur[filter_bytes+1] = 255; + } + } + } + } + + // we make a separate pass to expand bits to pixels; for performance, + // this could run two scanlines behind the above code, so it won't + // intefere with filtering but will still be in the cache. + if (depth < 8) { + for (j=0; j < y; ++j) { + stbi_uc *cur = a->out + stride*j; + stbi_uc *in = a->out + stride*j + x*out_n - img_width_bytes; + // unpack 1/2/4-bit into a 8-bit buffer. allows us to keep the common 8-bit path optimal at minimal cost for 1/2/4-bit + // png guarante byte alignment, if width is not multiple of 8/4/2 we'll decode dummy trailing data that will be skipped in the later loop + stbi_uc scale = (color == 0) ? stbi__depth_scale_table[depth] : 1; // scale grayscale values to 0..255 range + + // note that the final byte might overshoot and write more data than desired. + // we can allocate enough data that this never writes out of memory, but it + // could also overwrite the next scanline. can it overwrite non-empty data + // on the next scanline? yes, consider 1-pixel-wide scanlines with 1-bit-per-pixel. + // so we need to explicitly clamp the final ones + + if (depth == 4) { + for (k=x*img_n; k >= 2; k-=2, ++in) { + *cur++ = scale * ((*in >> 4) ); + *cur++ = scale * ((*in ) & 0x0f); + } + if (k > 0) *cur++ = scale * ((*in >> 4) ); + } else if (depth == 2) { + for (k=x*img_n; k >= 4; k-=4, ++in) { + *cur++ = scale * ((*in >> 6) ); + *cur++ = scale * ((*in >> 4) & 0x03); + *cur++ = scale * ((*in >> 2) & 0x03); + *cur++ = scale * ((*in ) & 0x03); + } + if (k > 0) *cur++ = scale * ((*in >> 6) ); + if (k > 1) *cur++ = scale * ((*in >> 4) & 0x03); + if (k > 2) *cur++ = scale * ((*in >> 2) & 0x03); + } else if (depth == 1) { + for (k=x*img_n; k >= 8; k-=8, ++in) { + *cur++ = scale * ((*in >> 7) ); + *cur++ = scale * ((*in >> 6) & 0x01); + *cur++ = scale * ((*in >> 5) & 0x01); + *cur++ = scale * ((*in >> 4) & 0x01); + *cur++ = scale * ((*in >> 3) & 0x01); + *cur++ = scale * ((*in >> 2) & 0x01); + *cur++ = scale * ((*in >> 1) & 0x01); + *cur++ = scale * ((*in ) & 0x01); + } + if (k > 0) *cur++ = scale * ((*in >> 7) ); + if (k > 1) *cur++ = scale * ((*in >> 6) & 0x01); + if (k > 2) *cur++ = scale * ((*in >> 5) & 0x01); + if (k > 3) *cur++ = scale * ((*in >> 4) & 0x01); + if (k > 4) *cur++ = scale * ((*in >> 3) & 0x01); + if (k > 5) *cur++ = scale * ((*in >> 2) & 0x01); + if (k > 6) *cur++ = scale * ((*in >> 1) & 0x01); + } + if (img_n != out_n) { + int q; + // insert alpha = 255 + cur = a->out + stride*j; + if (img_n == 1) { + for (q=x-1; q >= 0; --q) { + cur[q*2+1] = 255; + cur[q*2+0] = cur[q]; + } + } else { + STBI_ASSERT(img_n == 3); + for (q=x-1; q >= 0; --q) { + cur[q*4+3] = 255; + cur[q*4+2] = cur[q*3+2]; + cur[q*4+1] = cur[q*3+1]; + cur[q*4+0] = cur[q*3+0]; + } + } + } + } + } else if (depth == 16) { + // force the image data from big-endian to platform-native. + // this is done in a separate pass due to the decoding relying + // on the data being untouched, but could probably be done + // per-line during decode if care is taken. + stbi_uc *cur = a->out; + stbi__uint16 *cur16 = (stbi__uint16*)cur; + + for(i=0; i < x*y*out_n; ++i,cur16++,cur+=2) { + *cur16 = (cur[0] << 8) | cur[1]; + } + } + + return 1; +} + +static int stbi__create_png_image(stbi__png *a, stbi_uc *image_data, stbi__uint32 image_data_len, int out_n, int depth, int color, int interlaced) +{ + int bytes = (depth == 16 ? 2 : 1); + int out_bytes = out_n * bytes; + stbi_uc *final; + int p; + if (!interlaced) + return stbi__create_png_image_raw(a, image_data, image_data_len, out_n, a->s->img_x, a->s->img_y, depth, color); + + // de-interlacing + final = (stbi_uc *) stbi__malloc_mad3(a->s->img_x, a->s->img_y, out_bytes, 0); + if (!final) return stbi__err("outofmem", "Out of memory"); + for (p=0; p < 7; ++p) { + int xorig[] = { 0,4,0,2,0,1,0 }; + int yorig[] = { 0,0,4,0,2,0,1 }; + int xspc[] = { 8,8,4,4,2,2,1 }; + int yspc[] = { 8,8,8,4,4,2,2 }; + int i,j,x,y; + // pass1_x[4] = 0, pass1_x[5] = 1, pass1_x[12] = 1 + x = (a->s->img_x - xorig[p] + xspc[p]-1) / xspc[p]; + y = (a->s->img_y - yorig[p] + yspc[p]-1) / yspc[p]; + if (x && y) { + stbi__uint32 img_len = ((((a->s->img_n * x * depth) + 7) >> 3) + 1) * y; + if (!stbi__create_png_image_raw(a, image_data, image_data_len, out_n, x, y, depth, color)) { + STBI_FREE(final); + return 0; + } + for (j=0; j < y; ++j) { + for (i=0; i < x; ++i) { + int out_y = j*yspc[p]+yorig[p]; + int out_x = i*xspc[p]+xorig[p]; + memcpy(final + out_y*a->s->img_x*out_bytes + out_x*out_bytes, + a->out + (j*x+i)*out_bytes, out_bytes); + } + } + STBI_FREE(a->out); + image_data += img_len; + image_data_len -= img_len; + } + } + a->out = final; + + return 1; +} + +static int stbi__compute_transparency(stbi__png *z, stbi_uc tc[3], int out_n) +{ + stbi__context *s = z->s; + stbi__uint32 i, pixel_count = s->img_x * s->img_y; + stbi_uc *p = z->out; + + // compute color-based transparency, assuming we've + // already got 255 as the alpha value in the output + STBI_ASSERT(out_n == 2 || out_n == 4); + + if (out_n == 2) { + for (i=0; i < pixel_count; ++i) { + p[1] = (p[0] == tc[0] ? 0 : 255); + p += 2; + } + } else { + for (i=0; i < pixel_count; ++i) { + if (p[0] == tc[0] && p[1] == tc[1] && p[2] == tc[2]) + p[3] = 0; + p += 4; + } + } + return 1; +} + +static int stbi__compute_transparency16(stbi__png *z, stbi__uint16 tc[3], int out_n) +{ + stbi__context *s = z->s; + stbi__uint32 i, pixel_count = s->img_x * s->img_y; + stbi__uint16 *p = (stbi__uint16*) z->out; + + // compute color-based transparency, assuming we've + // already got 65535 as the alpha value in the output + STBI_ASSERT(out_n == 2 || out_n == 4); + + if (out_n == 2) { + for (i = 0; i < pixel_count; ++i) { + p[1] = (p[0] == tc[0] ? 0 : 65535); + p += 2; + } + } else { + for (i = 0; i < pixel_count; ++i) { + if (p[0] == tc[0] && p[1] == tc[1] && p[2] == tc[2]) + p[3] = 0; + p += 4; + } + } + return 1; +} + +static int stbi__expand_png_palette(stbi__png *a, stbi_uc *palette, int len, int pal_img_n) +{ + stbi__uint32 i, pixel_count = a->s->img_x * a->s->img_y; + stbi_uc *p, *temp_out, *orig = a->out; + + p = (stbi_uc *) stbi__malloc_mad2(pixel_count, pal_img_n, 0); + if (p == NULL) return stbi__err("outofmem", "Out of memory"); + + // between here and free(out) below, exitting would leak + temp_out = p; + + if (pal_img_n == 3) { + for (i=0; i < pixel_count; ++i) { + int n = orig[i]*4; + p[0] = palette[n ]; + p[1] = palette[n+1]; + p[2] = palette[n+2]; + p += 3; + } + } else { + for (i=0; i < pixel_count; ++i) { + int n = orig[i]*4; + p[0] = palette[n ]; + p[1] = palette[n+1]; + p[2] = palette[n+2]; + p[3] = palette[n+3]; + p += 4; + } + } + STBI_FREE(a->out); + a->out = temp_out; + + STBI_NOTUSED(len); + + return 1; +} + +static int stbi__unpremultiply_on_load_global = 0; +static int stbi__de_iphone_flag_global = 0; + +STBIDEF void stbi_set_unpremultiply_on_load(int flag_true_if_should_unpremultiply) +{ + stbi__unpremultiply_on_load_global = flag_true_if_should_unpremultiply; +} + +STBIDEF void stbi_convert_iphone_png_to_rgb(int flag_true_if_should_convert) +{ + stbi__de_iphone_flag_global = flag_true_if_should_convert; +} + +#ifndef STBI_THREAD_LOCAL +#define stbi__unpremultiply_on_load stbi__unpremultiply_on_load_global +#define stbi__de_iphone_flag stbi__de_iphone_flag_global +#else +static STBI_THREAD_LOCAL int stbi__unpremultiply_on_load_local, stbi__unpremultiply_on_load_set; +static STBI_THREAD_LOCAL int stbi__de_iphone_flag_local, stbi__de_iphone_flag_set; + +STBIDEF void stbi_set_unpremultiply_on_load_thread(int flag_true_if_should_unpremultiply) +{ + stbi__unpremultiply_on_load_local = flag_true_if_should_unpremultiply; + stbi__unpremultiply_on_load_set = 1; +} + +STBIDEF void stbi_convert_iphone_png_to_rgb_thread(int flag_true_if_should_convert) +{ + stbi__de_iphone_flag_local = flag_true_if_should_convert; + stbi__de_iphone_flag_set = 1; +} + +#define stbi__unpremultiply_on_load (stbi__unpremultiply_on_load_set \ + ? stbi__unpremultiply_on_load_local \ + : stbi__unpremultiply_on_load_global) +#define stbi__de_iphone_flag (stbi__de_iphone_flag_set \ + ? stbi__de_iphone_flag_local \ + : stbi__de_iphone_flag_global) +#endif // STBI_THREAD_LOCAL + +static void stbi__de_iphone(stbi__png *z) +{ + stbi__context *s = z->s; + stbi__uint32 i, pixel_count = s->img_x * s->img_y; + stbi_uc *p = z->out; + + if (s->img_out_n == 3) { // convert bgr to rgb + for (i=0; i < pixel_count; ++i) { + stbi_uc t = p[0]; + p[0] = p[2]; + p[2] = t; + p += 3; + } + } else { + STBI_ASSERT(s->img_out_n == 4); + if (stbi__unpremultiply_on_load) { + // convert bgr to rgb and unpremultiply + for (i=0; i < pixel_count; ++i) { + stbi_uc a = p[3]; + stbi_uc t = p[0]; + if (a) { + stbi_uc half = a / 2; + p[0] = (p[2] * 255 + half) / a; + p[1] = (p[1] * 255 + half) / a; + p[2] = ( t * 255 + half) / a; + } else { + p[0] = p[2]; + p[2] = t; + } + p += 4; + } + } else { + // convert bgr to rgb + for (i=0; i < pixel_count; ++i) { + stbi_uc t = p[0]; + p[0] = p[2]; + p[2] = t; + p += 4; + } + } + } +} + +#define STBI__PNG_TYPE(a,b,c,d) (((unsigned) (a) << 24) + ((unsigned) (b) << 16) + ((unsigned) (c) << 8) + (unsigned) (d)) + +static int stbi__parse_png_file(stbi__png *z, int scan, int req_comp) +{ + stbi_uc palette[1024], pal_img_n=0; + stbi_uc has_trans=0, tc[3]={0}; + stbi__uint16 tc16[3]; + stbi__uint32 ioff=0, idata_limit=0, i, pal_len=0; + int first=1,k,interlace=0, color=0, is_iphone=0; + stbi__context *s = z->s; + + z->expanded = NULL; + z->idata = NULL; + z->out = NULL; + + if (!stbi__check_png_header(s)) return 0; + + if (scan == STBI__SCAN_type) return 1; + + for (;;) { + stbi__pngchunk c = stbi__get_chunk_header(s); + switch (c.type) { + case STBI__PNG_TYPE('C','g','B','I'): + is_iphone = 1; + stbi__skip(s, c.length); + break; + case STBI__PNG_TYPE('I','H','D','R'): { + int comp,filter; + if (!first) return stbi__err("multiple IHDR","Corrupt PNG"); + first = 0; + if (c.length != 13) return stbi__err("bad IHDR len","Corrupt PNG"); + s->img_x = stbi__get32be(s); + s->img_y = stbi__get32be(s); + if (s->img_y > STBI_MAX_DIMENSIONS) return stbi__err("too large","Very large image (corrupt?)"); + if (s->img_x > STBI_MAX_DIMENSIONS) return stbi__err("too large","Very large image (corrupt?)"); + z->depth = stbi__get8(s); if (z->depth != 1 && z->depth != 2 && z->depth != 4 && z->depth != 8 && z->depth != 16) return stbi__err("1/2/4/8/16-bit only","PNG not supported: 1/2/4/8/16-bit only"); + color = stbi__get8(s); if (color > 6) return stbi__err("bad ctype","Corrupt PNG"); + if (color == 3 && z->depth == 16) return stbi__err("bad ctype","Corrupt PNG"); + if (color == 3) pal_img_n = 3; else if (color & 1) return stbi__err("bad ctype","Corrupt PNG"); + comp = stbi__get8(s); if (comp) return stbi__err("bad comp method","Corrupt PNG"); + filter= stbi__get8(s); if (filter) return stbi__err("bad filter method","Corrupt PNG"); + interlace = stbi__get8(s); if (interlace>1) return stbi__err("bad interlace method","Corrupt PNG"); + if (!s->img_x || !s->img_y) return stbi__err("0-pixel image","Corrupt PNG"); + if (!pal_img_n) { + s->img_n = (color & 2 ? 3 : 1) + (color & 4 ? 1 : 0); + if ((1 << 30) / s->img_x / s->img_n < s->img_y) return stbi__err("too large", "Image too large to decode"); + } else { + // if paletted, then pal_n is our final components, and + // img_n is # components to decompress/filter. + s->img_n = 1; + if ((1 << 30) / s->img_x / 4 < s->img_y) return stbi__err("too large","Corrupt PNG"); + } + // even with SCAN_header, have to scan to see if we have a tRNS + break; + } + + case STBI__PNG_TYPE('P','L','T','E'): { + if (first) return stbi__err("first not IHDR", "Corrupt PNG"); + if (c.length > 256*3) return stbi__err("invalid PLTE","Corrupt PNG"); + pal_len = c.length / 3; + if (pal_len * 3 != c.length) return stbi__err("invalid PLTE","Corrupt PNG"); + for (i=0; i < pal_len; ++i) { + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + } + break; + } + + case STBI__PNG_TYPE('t','R','N','S'): { + if (first) return stbi__err("first not IHDR", "Corrupt PNG"); + if (z->idata) return stbi__err("tRNS after IDAT","Corrupt PNG"); + if (pal_img_n) { + if (scan == STBI__SCAN_header) { s->img_n = 4; return 1; } + if (pal_len == 0) return stbi__err("tRNS before PLTE","Corrupt PNG"); + if (c.length > pal_len) return stbi__err("bad tRNS len","Corrupt PNG"); + pal_img_n = 4; + for (i=0; i < c.length; ++i) + palette[i*4+3] = stbi__get8(s); + } else { + if (!(s->img_n & 1)) return stbi__err("tRNS with alpha","Corrupt PNG"); + if (c.length != (stbi__uint32) s->img_n*2) return stbi__err("bad tRNS len","Corrupt PNG"); + has_trans = 1; + // non-paletted with tRNS = constant alpha. if header-scanning, we can stop now. + if (scan == STBI__SCAN_header) { ++s->img_n; return 1; } + if (z->depth == 16) { + for (k = 0; k < s->img_n; ++k) tc16[k] = (stbi__uint16)stbi__get16be(s); // copy the values as-is + } else { + for (k = 0; k < s->img_n; ++k) tc[k] = (stbi_uc)(stbi__get16be(s) & 255) * stbi__depth_scale_table[z->depth]; // non 8-bit images will be larger + } + } + break; + } + + case STBI__PNG_TYPE('I','D','A','T'): { + if (first) return stbi__err("first not IHDR", "Corrupt PNG"); + if (pal_img_n && !pal_len) return stbi__err("no PLTE","Corrupt PNG"); + if (scan == STBI__SCAN_header) { + // header scan definitely stops at first IDAT + if (pal_img_n) + s->img_n = pal_img_n; + return 1; + } + if (c.length > (1u << 30)) return stbi__err("IDAT size limit", "IDAT section larger than 2^30 bytes"); + if ((int)(ioff + c.length) < (int)ioff) return 0; + if (ioff + c.length > idata_limit) { + stbi__uint32 idata_limit_old = idata_limit; + stbi_uc *p; + if (idata_limit == 0) idata_limit = c.length > 4096 ? c.length : 4096; + while (ioff + c.length > idata_limit) + idata_limit *= 2; + STBI_NOTUSED(idata_limit_old); + p = (stbi_uc *) STBI_REALLOC_SIZED(z->idata, idata_limit_old, idata_limit); if (p == NULL) return stbi__err("outofmem", "Out of memory"); + z->idata = p; + } + if (!stbi__getn(s, z->idata+ioff,c.length)) return stbi__err("outofdata","Corrupt PNG"); + ioff += c.length; + break; + } + + case STBI__PNG_TYPE('I','E','N','D'): { + stbi__uint32 raw_len, bpl; + if (first) return stbi__err("first not IHDR", "Corrupt PNG"); + if (scan != STBI__SCAN_load) return 1; + if (z->idata == NULL) return stbi__err("no IDAT","Corrupt PNG"); + // initial guess for decoded data size to avoid unnecessary reallocs + bpl = (s->img_x * z->depth + 7) / 8; // bytes per line, per component + raw_len = bpl * s->img_y * s->img_n /* pixels */ + s->img_y /* filter mode per row */; + z->expanded = (stbi_uc *) stbi_zlib_decode_malloc_guesssize_headerflag((char *) z->idata, ioff, raw_len, (int *) &raw_len, !is_iphone); + if (z->expanded == NULL) return 0; // zlib should set error + STBI_FREE(z->idata); z->idata = NULL; + if ((req_comp == s->img_n+1 && req_comp != 3 && !pal_img_n) || has_trans) + s->img_out_n = s->img_n+1; + else + s->img_out_n = s->img_n; + if (!stbi__create_png_image(z, z->expanded, raw_len, s->img_out_n, z->depth, color, interlace)) return 0; + if (has_trans) { + if (z->depth == 16) { + if (!stbi__compute_transparency16(z, tc16, s->img_out_n)) return 0; + } else { + if (!stbi__compute_transparency(z, tc, s->img_out_n)) return 0; + } + } + if (is_iphone && stbi__de_iphone_flag && s->img_out_n > 2) + stbi__de_iphone(z); + if (pal_img_n) { + // pal_img_n == 3 or 4 + s->img_n = pal_img_n; // record the actual colors we had + s->img_out_n = pal_img_n; + if (req_comp >= 3) s->img_out_n = req_comp; + if (!stbi__expand_png_palette(z, palette, pal_len, s->img_out_n)) + return 0; + } else if (has_trans) { + // non-paletted image with tRNS -> source image has (constant) alpha + ++s->img_n; + } + STBI_FREE(z->expanded); z->expanded = NULL; + // end of PNG chunk, read and skip CRC + stbi__get32be(s); + return 1; + } + + default: + // if critical, fail + if (first) return stbi__err("first not IHDR", "Corrupt PNG"); + if ((c.type & (1 << 29)) == 0) { + #ifndef STBI_NO_FAILURE_STRINGS + // not threadsafe + static char invalid_chunk[] = "XXXX PNG chunk not known"; + invalid_chunk[0] = STBI__BYTECAST(c.type >> 24); + invalid_chunk[1] = STBI__BYTECAST(c.type >> 16); + invalid_chunk[2] = STBI__BYTECAST(c.type >> 8); + invalid_chunk[3] = STBI__BYTECAST(c.type >> 0); + #endif + return stbi__err(invalid_chunk, "PNG not supported: unknown PNG chunk type"); + } + stbi__skip(s, c.length); + break; + } + // end of PNG chunk, read and skip CRC + stbi__get32be(s); + } +} + +static void *stbi__do_png(stbi__png *p, int *x, int *y, int *n, int req_comp, stbi__result_info *ri) +{ + void *result=NULL; + if (req_comp < 0 || req_comp > 4) return stbi__errpuc("bad req_comp", "Internal error"); + if (stbi__parse_png_file(p, STBI__SCAN_load, req_comp)) { + if (p->depth <= 8) + ri->bits_per_channel = 8; + else if (p->depth == 16) + ri->bits_per_channel = 16; + else + return stbi__errpuc("bad bits_per_channel", "PNG not supported: unsupported color depth"); + result = p->out; + p->out = NULL; + if (req_comp && req_comp != p->s->img_out_n) { + if (ri->bits_per_channel == 8) + result = stbi__convert_format((unsigned char *) result, p->s->img_out_n, req_comp, p->s->img_x, p->s->img_y); + else + result = stbi__convert_format16((stbi__uint16 *) result, p->s->img_out_n, req_comp, p->s->img_x, p->s->img_y); + p->s->img_out_n = req_comp; + if (result == NULL) return result; + } + *x = p->s->img_x; + *y = p->s->img_y; + if (n) *n = p->s->img_n; + } + STBI_FREE(p->out); p->out = NULL; + STBI_FREE(p->expanded); p->expanded = NULL; + STBI_FREE(p->idata); p->idata = NULL; + + return result; +} + +static void *stbi__png_load(stbi__context *s, int *x, int *y, int *comp, int req_comp, stbi__result_info *ri) +{ + stbi__png p; + p.s = s; + return stbi__do_png(&p, x,y,comp,req_comp, ri); +} + +static int stbi__png_test(stbi__context *s) +{ + int r; + r = stbi__check_png_header(s); + stbi__rewind(s); + return r; +} + +static int stbi__png_info_raw(stbi__png *p, int *x, int *y, int *comp) +{ + if (!stbi__parse_png_file(p, STBI__SCAN_header, 0)) { + stbi__rewind( p->s ); + return 0; + } + if (x) *x = p->s->img_x; + if (y) *y = p->s->img_y; + if (comp) *comp = p->s->img_n; + return 1; +} + +static int stbi__png_info(stbi__context *s, int *x, int *y, int *comp) +{ + stbi__png p; + p.s = s; + return stbi__png_info_raw(&p, x, y, comp); +} + +static int stbi__png_is16(stbi__context *s) +{ + stbi__png p; + p.s = s; + if (!stbi__png_info_raw(&p, NULL, NULL, NULL)) + return 0; + if (p.depth != 16) { + stbi__rewind(p.s); + return 0; + } + return 1; +} +#endif + +// Microsoft/Windows BMP image + +#ifndef STBI_NO_BMP +static int stbi__bmp_test_raw(stbi__context *s) +{ + int r; + int sz; + if (stbi__get8(s) != 'B') return 0; + if (stbi__get8(s) != 'M') return 0; + stbi__get32le(s); // discard filesize + stbi__get16le(s); // discard reserved + stbi__get16le(s); // discard reserved + stbi__get32le(s); // discard data offset + sz = stbi__get32le(s); + r = (sz == 12 || sz == 40 || sz == 56 || sz == 108 || sz == 124); + return r; +} + +static int stbi__bmp_test(stbi__context *s) +{ + int r = stbi__bmp_test_raw(s); + stbi__rewind(s); + return r; +} + + +// returns 0..31 for the highest set bit +static int stbi__high_bit(unsigned int z) +{ + int n=0; + if (z == 0) return -1; + if (z >= 0x10000) { n += 16; z >>= 16; } + if (z >= 0x00100) { n += 8; z >>= 8; } + if (z >= 0x00010) { n += 4; z >>= 4; } + if (z >= 0x00004) { n += 2; z >>= 2; } + if (z >= 0x00002) { n += 1;/* >>= 1;*/ } + return n; +} + +static int stbi__bitcount(unsigned int a) +{ + a = (a & 0x55555555) + ((a >> 1) & 0x55555555); // max 2 + a = (a & 0x33333333) + ((a >> 2) & 0x33333333); // max 4 + a = (a + (a >> 4)) & 0x0f0f0f0f; // max 8 per 4, now 8 bits + a = (a + (a >> 8)); // max 16 per 8 bits + a = (a + (a >> 16)); // max 32 per 8 bits + return a & 0xff; +} + +// extract an arbitrarily-aligned N-bit value (N=bits) +// from v, and then make it 8-bits long and fractionally +// extend it to full full range. +static int stbi__shiftsigned(unsigned int v, int shift, int bits) +{ + static unsigned int mul_table[9] = { + 0, + 0xff/*0b11111111*/, 0x55/*0b01010101*/, 0x49/*0b01001001*/, 0x11/*0b00010001*/, + 0x21/*0b00100001*/, 0x41/*0b01000001*/, 0x81/*0b10000001*/, 0x01/*0b00000001*/, + }; + static unsigned int shift_table[9] = { + 0, 0,0,1,0,2,4,6,0, + }; + if (shift < 0) + v <<= -shift; + else + v >>= shift; + STBI_ASSERT(v < 256); + v >>= (8-bits); + STBI_ASSERT(bits >= 0 && bits <= 8); + return (int) ((unsigned) v * mul_table[bits]) >> shift_table[bits]; +} + +typedef struct +{ + int bpp, offset, hsz; + unsigned int mr,mg,mb,ma, all_a; + int extra_read; +} stbi__bmp_data; + +static int stbi__bmp_set_mask_defaults(stbi__bmp_data *info, int compress) +{ + // BI_BITFIELDS specifies masks explicitly, don't override + if (compress == 3) + return 1; + + if (compress == 0) { + if (info->bpp == 16) { + info->mr = 31u << 10; + info->mg = 31u << 5; + info->mb = 31u << 0; + } else if (info->bpp == 32) { + info->mr = 0xffu << 16; + info->mg = 0xffu << 8; + info->mb = 0xffu << 0; + info->ma = 0xffu << 24; + info->all_a = 0; // if all_a is 0 at end, then we loaded alpha channel but it was all 0 + } else { + // otherwise, use defaults, which is all-0 + info->mr = info->mg = info->mb = info->ma = 0; + } + return 1; + } + return 0; // error +} + +static void *stbi__bmp_parse_header(stbi__context *s, stbi__bmp_data *info) +{ + int hsz; + if (stbi__get8(s) != 'B' || stbi__get8(s) != 'M') return stbi__errpuc("not BMP", "Corrupt BMP"); + stbi__get32le(s); // discard filesize + stbi__get16le(s); // discard reserved + stbi__get16le(s); // discard reserved + info->offset = stbi__get32le(s); + info->hsz = hsz = stbi__get32le(s); + info->mr = info->mg = info->mb = info->ma = 0; + info->extra_read = 14; + + if (info->offset < 0) return stbi__errpuc("bad BMP", "bad BMP"); + + if (hsz != 12 && hsz != 40 && hsz != 56 && hsz != 108 && hsz != 124) return stbi__errpuc("unknown BMP", "BMP type not supported: unknown"); + if (hsz == 12) { + s->img_x = stbi__get16le(s); + s->img_y = stbi__get16le(s); + } else { + s->img_x = stbi__get32le(s); + s->img_y = stbi__get32le(s); + } + if (stbi__get16le(s) != 1) return stbi__errpuc("bad BMP", "bad BMP"); + info->bpp = stbi__get16le(s); + if (hsz != 12) { + int compress = stbi__get32le(s); + if (compress == 1 || compress == 2) return stbi__errpuc("BMP RLE", "BMP type not supported: RLE"); + if (compress >= 4) return stbi__errpuc("BMP JPEG/PNG", "BMP type not supported: unsupported compression"); // this includes PNG/JPEG modes + if (compress == 3 && info->bpp != 16 && info->bpp != 32) return stbi__errpuc("bad BMP", "bad BMP"); // bitfields requires 16 or 32 bits/pixel + stbi__get32le(s); // discard sizeof + stbi__get32le(s); // discard hres + stbi__get32le(s); // discard vres + stbi__get32le(s); // discard colorsused + stbi__get32le(s); // discard max important + if (hsz == 40 || hsz == 56) { + if (hsz == 56) { + stbi__get32le(s); + stbi__get32le(s); + stbi__get32le(s); + stbi__get32le(s); + } + if (info->bpp == 16 || info->bpp == 32) { + if (compress == 0) { + stbi__bmp_set_mask_defaults(info, compress); + } else if (compress == 3) { + info->mr = stbi__get32le(s); + info->mg = stbi__get32le(s); + info->mb = stbi__get32le(s); + info->extra_read += 12; + // not documented, but generated by photoshop and handled by mspaint + if (info->mr == info->mg && info->mg == info->mb) { + // ?!?!? + return stbi__errpuc("bad BMP", "bad BMP"); + } + } else + return stbi__errpuc("bad BMP", "bad BMP"); + } + } else { + // V4/V5 header + int i; + if (hsz != 108 && hsz != 124) + return stbi__errpuc("bad BMP", "bad BMP"); + info->mr = stbi__get32le(s); + info->mg = stbi__get32le(s); + info->mb = stbi__get32le(s); + info->ma = stbi__get32le(s); + if (compress != 3) // override mr/mg/mb unless in BI_BITFIELDS mode, as per docs + stbi__bmp_set_mask_defaults(info, compress); + stbi__get32le(s); // discard color space + for (i=0; i < 12; ++i) + stbi__get32le(s); // discard color space parameters + if (hsz == 124) { + stbi__get32le(s); // discard rendering intent + stbi__get32le(s); // discard offset of profile data + stbi__get32le(s); // discard size of profile data + stbi__get32le(s); // discard reserved + } + } + } + return (void *) 1; +} + + +static void *stbi__bmp_load(stbi__context *s, int *x, int *y, int *comp, int req_comp, stbi__result_info *ri) +{ + stbi_uc *out; + unsigned int mr=0,mg=0,mb=0,ma=0, all_a; + stbi_uc pal[256][4]; + int psize=0,i,j,width; + int flip_vertically, pad, target; + stbi__bmp_data info; + STBI_NOTUSED(ri); + + info.all_a = 255; + if (stbi__bmp_parse_header(s, &info) == NULL) + return NULL; // error code already set + + flip_vertically = ((int) s->img_y) > 0; + s->img_y = abs((int) s->img_y); + + if (s->img_y > STBI_MAX_DIMENSIONS) return stbi__errpuc("too large","Very large image (corrupt?)"); + if (s->img_x > STBI_MAX_DIMENSIONS) return stbi__errpuc("too large","Very large image (corrupt?)"); + + mr = info.mr; + mg = info.mg; + mb = info.mb; + ma = info.ma; + all_a = info.all_a; + + if (info.hsz == 12) { + if (info.bpp < 24) + psize = (info.offset - info.extra_read - 24) / 3; + } else { + if (info.bpp < 16) + psize = (info.offset - info.extra_read - info.hsz) >> 2; + } + if (psize == 0) { + // accept some number of extra bytes after the header, but if the offset points either to before + // the header ends or implies a large amount of extra data, reject the file as malformed + int bytes_read_so_far = s->callback_already_read + (int)(s->img_buffer - s->img_buffer_original); + int header_limit = 1024; // max we actually read is below 256 bytes currently. + int extra_data_limit = 256*4; // what ordinarily goes here is a palette; 256 entries*4 bytes is its max size. + if (bytes_read_so_far <= 0 || bytes_read_so_far > header_limit) { + return stbi__errpuc("bad header", "Corrupt BMP"); + } + // we established that bytes_read_so_far is positive and sensible. + // the first half of this test rejects offsets that are either too small positives, or + // negative, and guarantees that info.offset >= bytes_read_so_far > 0. this in turn + // ensures the number computed in the second half of the test can't overflow. + if (info.offset < bytes_read_so_far || info.offset - bytes_read_so_far > extra_data_limit) { + return stbi__errpuc("bad offset", "Corrupt BMP"); + } else { + stbi__skip(s, info.offset - bytes_read_so_far); + } + } + + if (info.bpp == 24 && ma == 0xff000000) + s->img_n = 3; + else + s->img_n = ma ? 4 : 3; + if (req_comp && req_comp >= 3) // we can directly decode 3 or 4 + target = req_comp; + else + target = s->img_n; // if they want monochrome, we'll post-convert + + // sanity-check size + if (!stbi__mad3sizes_valid(target, s->img_x, s->img_y, 0)) + return stbi__errpuc("too large", "Corrupt BMP"); + + out = (stbi_uc *) stbi__malloc_mad3(target, s->img_x, s->img_y, 0); + if (!out) return stbi__errpuc("outofmem", "Out of memory"); + if (info.bpp < 16) { + int z=0; + if (psize == 0 || psize > 256) { STBI_FREE(out); return stbi__errpuc("invalid", "Corrupt BMP"); } + for (i=0; i < psize; ++i) { + pal[i][2] = stbi__get8(s); + pal[i][1] = stbi__get8(s); + pal[i][0] = stbi__get8(s); + if (info.hsz != 12) stbi__get8(s); + pal[i][3] = 255; + } + stbi__skip(s, info.offset - info.extra_read - info.hsz - psize * (info.hsz == 12 ? 3 : 4)); + if (info.bpp == 1) width = (s->img_x + 7) >> 3; + else if (info.bpp == 4) width = (s->img_x + 1) >> 1; + else if (info.bpp == 8) width = s->img_x; + else { STBI_FREE(out); return stbi__errpuc("bad bpp", "Corrupt BMP"); } + pad = (-width)&3; + if (info.bpp == 1) { + for (j=0; j < (int) s->img_y; ++j) { + int bit_offset = 7, v = stbi__get8(s); + for (i=0; i < (int) s->img_x; ++i) { + int color = (v>>bit_offset)&0x1; + out[z++] = pal[color][0]; + out[z++] = pal[color][1]; + out[z++] = pal[color][2]; + if (target == 4) out[z++] = 255; + if (i+1 == (int) s->img_x) break; + if((--bit_offset) < 0) { + bit_offset = 7; + v = stbi__get8(s); + } + } + stbi__skip(s, pad); + } + } else { + for (j=0; j < (int) s->img_y; ++j) { + for (i=0; i < (int) s->img_x; i += 2) { + int v=stbi__get8(s),v2=0; + if (info.bpp == 4) { + v2 = v & 15; + v >>= 4; + } + out[z++] = pal[v][0]; + out[z++] = pal[v][1]; + out[z++] = pal[v][2]; + if (target == 4) out[z++] = 255; + if (i+1 == (int) s->img_x) break; + v = (info.bpp == 8) ? stbi__get8(s) : v2; + out[z++] = pal[v][0]; + out[z++] = pal[v][1]; + out[z++] = pal[v][2]; + if (target == 4) out[z++] = 255; + } + stbi__skip(s, pad); + } + } + } else { + int rshift=0,gshift=0,bshift=0,ashift=0,rcount=0,gcount=0,bcount=0,acount=0; + int z = 0; + int easy=0; + stbi__skip(s, info.offset - info.extra_read - info.hsz); + if (info.bpp == 24) width = 3 * s->img_x; + else if (info.bpp == 16) width = 2*s->img_x; + else /* bpp = 32 and pad = 0 */ width=0; + pad = (-width) & 3; + if (info.bpp == 24) { + easy = 1; + } else if (info.bpp == 32) { + if (mb == 0xff && mg == 0xff00 && mr == 0x00ff0000 && ma == 0xff000000) + easy = 2; + } + if (!easy) { + if (!mr || !mg || !mb) { STBI_FREE(out); return stbi__errpuc("bad masks", "Corrupt BMP"); } + // right shift amt to put high bit in position #7 + rshift = stbi__high_bit(mr)-7; rcount = stbi__bitcount(mr); + gshift = stbi__high_bit(mg)-7; gcount = stbi__bitcount(mg); + bshift = stbi__high_bit(mb)-7; bcount = stbi__bitcount(mb); + ashift = stbi__high_bit(ma)-7; acount = stbi__bitcount(ma); + if (rcount > 8 || gcount > 8 || bcount > 8 || acount > 8) { STBI_FREE(out); return stbi__errpuc("bad masks", "Corrupt BMP"); } + } + for (j=0; j < (int) s->img_y; ++j) { + if (easy) { + for (i=0; i < (int) s->img_x; ++i) { + unsigned char a; + out[z+2] = stbi__get8(s); + out[z+1] = stbi__get8(s); + out[z+0] = stbi__get8(s); + z += 3; + a = (easy == 2 ? stbi__get8(s) : 255); + all_a |= a; + if (target == 4) out[z++] = a; + } + } else { + int bpp = info.bpp; + for (i=0; i < (int) s->img_x; ++i) { + stbi__uint32 v = (bpp == 16 ? (stbi__uint32) stbi__get16le(s) : stbi__get32le(s)); + unsigned int a; + out[z++] = STBI__BYTECAST(stbi__shiftsigned(v & mr, rshift, rcount)); + out[z++] = STBI__BYTECAST(stbi__shiftsigned(v & mg, gshift, gcount)); + out[z++] = STBI__BYTECAST(stbi__shiftsigned(v & mb, bshift, bcount)); + a = (ma ? stbi__shiftsigned(v & ma, ashift, acount) : 255); + all_a |= a; + if (target == 4) out[z++] = STBI__BYTECAST(a); + } + } + stbi__skip(s, pad); + } + } + + // if alpha channel is all 0s, replace with all 255s + if (target == 4 && all_a == 0) + for (i=4*s->img_x*s->img_y-1; i >= 0; i -= 4) + out[i] = 255; + + if (flip_vertically) { + stbi_uc t; + for (j=0; j < (int) s->img_y>>1; ++j) { + stbi_uc *p1 = out + j *s->img_x*target; + stbi_uc *p2 = out + (s->img_y-1-j)*s->img_x*target; + for (i=0; i < (int) s->img_x*target; ++i) { + t = p1[i]; p1[i] = p2[i]; p2[i] = t; + } + } + } + + if (req_comp && req_comp != target) { + out = stbi__convert_format(out, target, req_comp, s->img_x, s->img_y); + if (out == NULL) return out; // stbi__convert_format frees input on failure + } + + *x = s->img_x; + *y = s->img_y; + if (comp) *comp = s->img_n; + return out; +} +#endif + +// Targa Truevision - TGA +// by Jonathan Dummer +#ifndef STBI_NO_TGA +// returns STBI_rgb or whatever, 0 on error +static int stbi__tga_get_comp(int bits_per_pixel, int is_grey, int* is_rgb16) +{ + // only RGB or RGBA (incl. 16bit) or grey allowed + if (is_rgb16) *is_rgb16 = 0; + switch(bits_per_pixel) { + case 8: return STBI_grey; + case 16: if(is_grey) return STBI_grey_alpha; + // fallthrough + case 15: if(is_rgb16) *is_rgb16 = 1; + return STBI_rgb; + case 24: // fallthrough + case 32: return bits_per_pixel/8; + default: return 0; + } +} + +static int stbi__tga_info(stbi__context *s, int *x, int *y, int *comp) +{ + int tga_w, tga_h, tga_comp, tga_image_type, tga_bits_per_pixel, tga_colormap_bpp; + int sz, tga_colormap_type; + stbi__get8(s); // discard Offset + tga_colormap_type = stbi__get8(s); // colormap type + if( tga_colormap_type > 1 ) { + stbi__rewind(s); + return 0; // only RGB or indexed allowed + } + tga_image_type = stbi__get8(s); // image type + if ( tga_colormap_type == 1 ) { // colormapped (paletted) image + if (tga_image_type != 1 && tga_image_type != 9) { + stbi__rewind(s); + return 0; + } + stbi__skip(s,4); // skip index of first colormap entry and number of entries + sz = stbi__get8(s); // check bits per palette color entry + if ( (sz != 8) && (sz != 15) && (sz != 16) && (sz != 24) && (sz != 32) ) { + stbi__rewind(s); + return 0; + } + stbi__skip(s,4); // skip image x and y origin + tga_colormap_bpp = sz; + } else { // "normal" image w/o colormap - only RGB or grey allowed, +/- RLE + if ( (tga_image_type != 2) && (tga_image_type != 3) && (tga_image_type != 10) && (tga_image_type != 11) ) { + stbi__rewind(s); + return 0; // only RGB or grey allowed, +/- RLE + } + stbi__skip(s,9); // skip colormap specification and image x/y origin + tga_colormap_bpp = 0; + } + tga_w = stbi__get16le(s); + if( tga_w < 1 ) { + stbi__rewind(s); + return 0; // test width + } + tga_h = stbi__get16le(s); + if( tga_h < 1 ) { + stbi__rewind(s); + return 0; // test height + } + tga_bits_per_pixel = stbi__get8(s); // bits per pixel + stbi__get8(s); // ignore alpha bits + if (tga_colormap_bpp != 0) { + if((tga_bits_per_pixel != 8) && (tga_bits_per_pixel != 16)) { + // when using a colormap, tga_bits_per_pixel is the size of the indexes + // I don't think anything but 8 or 16bit indexes makes sense + stbi__rewind(s); + return 0; + } + tga_comp = stbi__tga_get_comp(tga_colormap_bpp, 0, NULL); + } else { + tga_comp = stbi__tga_get_comp(tga_bits_per_pixel, (tga_image_type == 3) || (tga_image_type == 11), NULL); + } + if(!tga_comp) { + stbi__rewind(s); + return 0; + } + if (x) *x = tga_w; + if (y) *y = tga_h; + if (comp) *comp = tga_comp; + return 1; // seems to have passed everything +} + +static int stbi__tga_test(stbi__context *s) +{ + int res = 0; + int sz, tga_color_type; + stbi__get8(s); // discard Offset + tga_color_type = stbi__get8(s); // color type + if ( tga_color_type > 1 ) goto errorEnd; // only RGB or indexed allowed + sz = stbi__get8(s); // image type + if ( tga_color_type == 1 ) { // colormapped (paletted) image + if (sz != 1 && sz != 9) goto errorEnd; // colortype 1 demands image type 1 or 9 + stbi__skip(s,4); // skip index of first colormap entry and number of entries + sz = stbi__get8(s); // check bits per palette color entry + if ( (sz != 8) && (sz != 15) && (sz != 16) && (sz != 24) && (sz != 32) ) goto errorEnd; + stbi__skip(s,4); // skip image x and y origin + } else { // "normal" image w/o colormap + if ( (sz != 2) && (sz != 3) && (sz != 10) && (sz != 11) ) goto errorEnd; // only RGB or grey allowed, +/- RLE + stbi__skip(s,9); // skip colormap specification and image x/y origin + } + if ( stbi__get16le(s) < 1 ) goto errorEnd; // test width + if ( stbi__get16le(s) < 1 ) goto errorEnd; // test height + sz = stbi__get8(s); // bits per pixel + if ( (tga_color_type == 1) && (sz != 8) && (sz != 16) ) goto errorEnd; // for colormapped images, bpp is size of an index + if ( (sz != 8) && (sz != 15) && (sz != 16) && (sz != 24) && (sz != 32) ) goto errorEnd; + + res = 1; // if we got this far, everything's good and we can return 1 instead of 0 + +errorEnd: + stbi__rewind(s); + return res; +} + +// read 16bit value and convert to 24bit RGB +static void stbi__tga_read_rgb16(stbi__context *s, stbi_uc* out) +{ + stbi__uint16 px = (stbi__uint16)stbi__get16le(s); + stbi__uint16 fiveBitMask = 31; + // we have 3 channels with 5bits each + int r = (px >> 10) & fiveBitMask; + int g = (px >> 5) & fiveBitMask; + int b = px & fiveBitMask; + // Note that this saves the data in RGB(A) order, so it doesn't need to be swapped later + out[0] = (stbi_uc)((r * 255)/31); + out[1] = (stbi_uc)((g * 255)/31); + out[2] = (stbi_uc)((b * 255)/31); + + // some people claim that the most significant bit might be used for alpha + // (possibly if an alpha-bit is set in the "image descriptor byte") + // but that only made 16bit test images completely translucent.. + // so let's treat all 15 and 16bit TGAs as RGB with no alpha. +} + +static void *stbi__tga_load(stbi__context *s, int *x, int *y, int *comp, int req_comp, stbi__result_info *ri) +{ + // read in the TGA header stuff + int tga_offset = stbi__get8(s); + int tga_indexed = stbi__get8(s); + int tga_image_type = stbi__get8(s); + int tga_is_RLE = 0; + int tga_palette_start = stbi__get16le(s); + int tga_palette_len = stbi__get16le(s); + int tga_palette_bits = stbi__get8(s); + int tga_x_origin = stbi__get16le(s); + int tga_y_origin = stbi__get16le(s); + int tga_width = stbi__get16le(s); + int tga_height = stbi__get16le(s); + int tga_bits_per_pixel = stbi__get8(s); + int tga_comp, tga_rgb16=0; + int tga_inverted = stbi__get8(s); + // int tga_alpha_bits = tga_inverted & 15; // the 4 lowest bits - unused (useless?) + // image data + unsigned char *tga_data; + unsigned char *tga_palette = NULL; + int i, j; + unsigned char raw_data[4] = {0}; + int RLE_count = 0; + int RLE_repeating = 0; + int read_next_pixel = 1; + STBI_NOTUSED(ri); + STBI_NOTUSED(tga_x_origin); // @TODO + STBI_NOTUSED(tga_y_origin); // @TODO + + if (tga_height > STBI_MAX_DIMENSIONS) return stbi__errpuc("too large","Very large image (corrupt?)"); + if (tga_width > STBI_MAX_DIMENSIONS) return stbi__errpuc("too large","Very large image (corrupt?)"); + + // do a tiny bit of precessing + if ( tga_image_type >= 8 ) + { + tga_image_type -= 8; + tga_is_RLE = 1; + } + tga_inverted = 1 - ((tga_inverted >> 5) & 1); + + // If I'm paletted, then I'll use the number of bits from the palette + if ( tga_indexed ) tga_comp = stbi__tga_get_comp(tga_palette_bits, 0, &tga_rgb16); + else tga_comp = stbi__tga_get_comp(tga_bits_per_pixel, (tga_image_type == 3), &tga_rgb16); + + if(!tga_comp) // shouldn't really happen, stbi__tga_test() should have ensured basic consistency + return stbi__errpuc("bad format", "Can't find out TGA pixelformat"); + + // tga info + *x = tga_width; + *y = tga_height; + if (comp) *comp = tga_comp; + + if (!stbi__mad3sizes_valid(tga_width, tga_height, tga_comp, 0)) + return stbi__errpuc("too large", "Corrupt TGA"); + + tga_data = (unsigned char*)stbi__malloc_mad3(tga_width, tga_height, tga_comp, 0); + if (!tga_data) return stbi__errpuc("outofmem", "Out of memory"); + + // skip to the data's starting position (offset usually = 0) + stbi__skip(s, tga_offset ); + + if ( !tga_indexed && !tga_is_RLE && !tga_rgb16 ) { + for (i=0; i < tga_height; ++i) { + int row = tga_inverted ? tga_height -i - 1 : i; + stbi_uc *tga_row = tga_data + row*tga_width*tga_comp; + stbi__getn(s, tga_row, tga_width * tga_comp); + } + } else { + // do I need to load a palette? + if ( tga_indexed) + { + if (tga_palette_len == 0) { /* you have to have at least one entry! */ + STBI_FREE(tga_data); + return stbi__errpuc("bad palette", "Corrupt TGA"); + } + + // any data to skip? (offset usually = 0) + stbi__skip(s, tga_palette_start ); + // load the palette + tga_palette = (unsigned char*)stbi__malloc_mad2(tga_palette_len, tga_comp, 0); + if (!tga_palette) { + STBI_FREE(tga_data); + return stbi__errpuc("outofmem", "Out of memory"); + } + if (tga_rgb16) { + stbi_uc *pal_entry = tga_palette; + STBI_ASSERT(tga_comp == STBI_rgb); + for (i=0; i < tga_palette_len; ++i) { + stbi__tga_read_rgb16(s, pal_entry); + pal_entry += tga_comp; + } + } else if (!stbi__getn(s, tga_palette, tga_palette_len * tga_comp)) { + STBI_FREE(tga_data); + STBI_FREE(tga_palette); + return stbi__errpuc("bad palette", "Corrupt TGA"); + } + } + // load the data + for (i=0; i < tga_width * tga_height; ++i) + { + // if I'm in RLE mode, do I need to get a RLE stbi__pngchunk? + if ( tga_is_RLE ) + { + if ( RLE_count == 0 ) + { + // yep, get the next byte as a RLE command + int RLE_cmd = stbi__get8(s); + RLE_count = 1 + (RLE_cmd & 127); + RLE_repeating = RLE_cmd >> 7; + read_next_pixel = 1; + } else if ( !RLE_repeating ) + { + read_next_pixel = 1; + } + } else + { + read_next_pixel = 1; + } + // OK, if I need to read a pixel, do it now + if ( read_next_pixel ) + { + // load however much data we did have + if ( tga_indexed ) + { + // read in index, then perform the lookup + int pal_idx = (tga_bits_per_pixel == 8) ? stbi__get8(s) : stbi__get16le(s); + if ( pal_idx >= tga_palette_len ) { + // invalid index + pal_idx = 0; + } + pal_idx *= tga_comp; + for (j = 0; j < tga_comp; ++j) { + raw_data[j] = tga_palette[pal_idx+j]; + } + } else if(tga_rgb16) { + STBI_ASSERT(tga_comp == STBI_rgb); + stbi__tga_read_rgb16(s, raw_data); + } else { + // read in the data raw + for (j = 0; j < tga_comp; ++j) { + raw_data[j] = stbi__get8(s); + } + } + // clear the reading flag for the next pixel + read_next_pixel = 0; + } // end of reading a pixel + + // copy data + for (j = 0; j < tga_comp; ++j) + tga_data[i*tga_comp+j] = raw_data[j]; + + // in case we're in RLE mode, keep counting down + --RLE_count; + } + // do I need to invert the image? + if ( tga_inverted ) + { + for (j = 0; j*2 < tga_height; ++j) + { + int index1 = j * tga_width * tga_comp; + int index2 = (tga_height - 1 - j) * tga_width * tga_comp; + for (i = tga_width * tga_comp; i > 0; --i) + { + unsigned char temp = tga_data[index1]; + tga_data[index1] = tga_data[index2]; + tga_data[index2] = temp; + ++index1; + ++index2; + } + } + } + // clear my palette, if I had one + if ( tga_palette != NULL ) + { + STBI_FREE( tga_palette ); + } + } + + // swap RGB - if the source data was RGB16, it already is in the right order + if (tga_comp >= 3 && !tga_rgb16) + { + unsigned char* tga_pixel = tga_data; + for (i=0; i < tga_width * tga_height; ++i) + { + unsigned char temp = tga_pixel[0]; + tga_pixel[0] = tga_pixel[2]; + tga_pixel[2] = temp; + tga_pixel += tga_comp; + } + } + + // convert to target component count + if (req_comp && req_comp != tga_comp) + tga_data = stbi__convert_format(tga_data, tga_comp, req_comp, tga_width, tga_height); + + // the things I do to get rid of an error message, and yet keep + // Microsoft's C compilers happy... [8^( + tga_palette_start = tga_palette_len = tga_palette_bits = + tga_x_origin = tga_y_origin = 0; + STBI_NOTUSED(tga_palette_start); + // OK, done + return tga_data; +} +#endif + +// ************************************************************************************************* +// Photoshop PSD loader -- PD by Thatcher Ulrich, integration by Nicolas Schulz, tweaked by STB + +#ifndef STBI_NO_PSD +static int stbi__psd_test(stbi__context *s) +{ + int r = (stbi__get32be(s) == 0x38425053); + stbi__rewind(s); + return r; +} + +static int stbi__psd_decode_rle(stbi__context *s, stbi_uc *p, int pixelCount) +{ + int count, nleft, len; + + count = 0; + while ((nleft = pixelCount - count) > 0) { + len = stbi__get8(s); + if (len == 128) { + // No-op. + } else if (len < 128) { + // Copy next len+1 bytes literally. + len++; + if (len > nleft) return 0; // corrupt data + count += len; + while (len) { + *p = stbi__get8(s); + p += 4; + len--; + } + } else if (len > 128) { + stbi_uc val; + // Next -len+1 bytes in the dest are replicated from next source byte. + // (Interpret len as a negative 8-bit int.) + len = 257 - len; + if (len > nleft) return 0; // corrupt data + val = stbi__get8(s); + count += len; + while (len) { + *p = val; + p += 4; + len--; + } + } + } + + return 1; +} + +static void *stbi__psd_load(stbi__context *s, int *x, int *y, int *comp, int req_comp, stbi__result_info *ri, int bpc) +{ + int pixelCount; + int channelCount, compression; + int channel, i; + int bitdepth; + int w,h; + stbi_uc *out; + STBI_NOTUSED(ri); + + // Check identifier + if (stbi__get32be(s) != 0x38425053) // "8BPS" + return stbi__errpuc("not PSD", "Corrupt PSD image"); + + // Check file type version. + if (stbi__get16be(s) != 1) + return stbi__errpuc("wrong version", "Unsupported version of PSD image"); + + // Skip 6 reserved bytes. + stbi__skip(s, 6 ); + + // Read the number of channels (R, G, B, A, etc). + channelCount = stbi__get16be(s); + if (channelCount < 0 || channelCount > 16) + return stbi__errpuc("wrong channel count", "Unsupported number of channels in PSD image"); + + // Read the rows and columns of the image. + h = stbi__get32be(s); + w = stbi__get32be(s); + + if (h > STBI_MAX_DIMENSIONS) return stbi__errpuc("too large","Very large image (corrupt?)"); + if (w > STBI_MAX_DIMENSIONS) return stbi__errpuc("too large","Very large image (corrupt?)"); + + // Make sure the depth is 8 bits. + bitdepth = stbi__get16be(s); + if (bitdepth != 8 && bitdepth != 16) + return stbi__errpuc("unsupported bit depth", "PSD bit depth is not 8 or 16 bit"); + + // Make sure the color mode is RGB. + // Valid options are: + // 0: Bitmap + // 1: Grayscale + // 2: Indexed color + // 3: RGB color + // 4: CMYK color + // 7: Multichannel + // 8: Duotone + // 9: Lab color + if (stbi__get16be(s) != 3) + return stbi__errpuc("wrong color format", "PSD is not in RGB color format"); + + // Skip the Mode Data. (It's the palette for indexed color; other info for other modes.) + stbi__skip(s,stbi__get32be(s) ); + + // Skip the image resources. (resolution, pen tool paths, etc) + stbi__skip(s, stbi__get32be(s) ); + + // Skip the reserved data. + stbi__skip(s, stbi__get32be(s) ); + + // Find out if the data is compressed. + // Known values: + // 0: no compression + // 1: RLE compressed + compression = stbi__get16be(s); + if (compression > 1) + return stbi__errpuc("bad compression", "PSD has an unknown compression format"); + + // Check size + if (!stbi__mad3sizes_valid(4, w, h, 0)) + return stbi__errpuc("too large", "Corrupt PSD"); + + // Create the destination image. + + if (!compression && bitdepth == 16 && bpc == 16) { + out = (stbi_uc *) stbi__malloc_mad3(8, w, h, 0); + ri->bits_per_channel = 16; + } else + out = (stbi_uc *) stbi__malloc(4 * w*h); + + if (!out) return stbi__errpuc("outofmem", "Out of memory"); + pixelCount = w*h; + + // Initialize the data to zero. + //memset( out, 0, pixelCount * 4 ); + + // Finally, the image data. + if (compression) { + // RLE as used by .PSD and .TIFF + // Loop until you get the number of unpacked bytes you are expecting: + // Read the next source byte into n. + // If n is between 0 and 127 inclusive, copy the next n+1 bytes literally. + // Else if n is between -127 and -1 inclusive, copy the next byte -n+1 times. + // Else if n is 128, noop. + // Endloop + + // The RLE-compressed data is preceded by a 2-byte data count for each row in the data, + // which we're going to just skip. + stbi__skip(s, h * channelCount * 2 ); + + // Read the RLE data by channel. + for (channel = 0; channel < 4; channel++) { + stbi_uc *p; + + p = out+channel; + if (channel >= channelCount) { + // Fill this channel with default data. + for (i = 0; i < pixelCount; i++, p += 4) + *p = (channel == 3 ? 255 : 0); + } else { + // Read the RLE data. + if (!stbi__psd_decode_rle(s, p, pixelCount)) { + STBI_FREE(out); + return stbi__errpuc("corrupt", "bad RLE data"); + } + } + } + + } else { + // We're at the raw image data. It's each channel in order (Red, Green, Blue, Alpha, ...) + // where each channel consists of an 8-bit (or 16-bit) value for each pixel in the image. + + // Read the data by channel. + for (channel = 0; channel < 4; channel++) { + if (channel >= channelCount) { + // Fill this channel with default data. + if (bitdepth == 16 && bpc == 16) { + stbi__uint16 *q = ((stbi__uint16 *) out) + channel; + stbi__uint16 val = channel == 3 ? 65535 : 0; + for (i = 0; i < pixelCount; i++, q += 4) + *q = val; + } else { + stbi_uc *p = out+channel; + stbi_uc val = channel == 3 ? 255 : 0; + for (i = 0; i < pixelCount; i++, p += 4) + *p = val; + } + } else { + if (ri->bits_per_channel == 16) { // output bpc + stbi__uint16 *q = ((stbi__uint16 *) out) + channel; + for (i = 0; i < pixelCount; i++, q += 4) + *q = (stbi__uint16) stbi__get16be(s); + } else { + stbi_uc *p = out+channel; + if (bitdepth == 16) { // input bpc + for (i = 0; i < pixelCount; i++, p += 4) + *p = (stbi_uc) (stbi__get16be(s) >> 8); + } else { + for (i = 0; i < pixelCount; i++, p += 4) + *p = stbi__get8(s); + } + } + } + } + } + + // remove weird white matte from PSD + if (channelCount >= 4) { + if (ri->bits_per_channel == 16) { + for (i=0; i < w*h; ++i) { + stbi__uint16 *pixel = (stbi__uint16 *) out + 4*i; + if (pixel[3] != 0 && pixel[3] != 65535) { + float a = pixel[3] / 65535.0f; + float ra = 1.0f / a; + float inv_a = 65535.0f * (1 - ra); + pixel[0] = (stbi__uint16) (pixel[0]*ra + inv_a); + pixel[1] = (stbi__uint16) (pixel[1]*ra + inv_a); + pixel[2] = (stbi__uint16) (pixel[2]*ra + inv_a); + } + } + } else { + for (i=0; i < w*h; ++i) { + unsigned char *pixel = out + 4*i; + if (pixel[3] != 0 && pixel[3] != 255) { + float a = pixel[3] / 255.0f; + float ra = 1.0f / a; + float inv_a = 255.0f * (1 - ra); + pixel[0] = (unsigned char) (pixel[0]*ra + inv_a); + pixel[1] = (unsigned char) (pixel[1]*ra + inv_a); + pixel[2] = (unsigned char) (pixel[2]*ra + inv_a); + } + } + } + } + + // convert to desired output format + if (req_comp && req_comp != 4) { + if (ri->bits_per_channel == 16) + out = (stbi_uc *) stbi__convert_format16((stbi__uint16 *) out, 4, req_comp, w, h); + else + out = stbi__convert_format(out, 4, req_comp, w, h); + if (out == NULL) return out; // stbi__convert_format frees input on failure + } + + if (comp) *comp = 4; + *y = h; + *x = w; + + return out; +} +#endif + +// ************************************************************************************************* +// Softimage PIC loader +// by Tom Seddon +// +// See http://softimage.wiki.softimage.com/index.php/INFO:_PIC_file_format +// See http://ozviz.wasp.uwa.edu.au/~pbourke/dataformats/softimagepic/ + +#ifndef STBI_NO_PIC +static int stbi__pic_is4(stbi__context *s,const char *str) +{ + int i; + for (i=0; i<4; ++i) + if (stbi__get8(s) != (stbi_uc)str[i]) + return 0; + + return 1; +} + +static int stbi__pic_test_core(stbi__context *s) +{ + int i; + + if (!stbi__pic_is4(s,"\x53\x80\xF6\x34")) + return 0; + + for(i=0;i<84;++i) + stbi__get8(s); + + if (!stbi__pic_is4(s,"PICT")) + return 0; + + return 1; +} + +typedef struct +{ + stbi_uc size,type,channel; +} stbi__pic_packet; + +static stbi_uc *stbi__readval(stbi__context *s, int channel, stbi_uc *dest) +{ + int mask=0x80, i; + + for (i=0; i<4; ++i, mask>>=1) { + if (channel & mask) { + if (stbi__at_eof(s)) return stbi__errpuc("bad file","PIC file too short"); + dest[i]=stbi__get8(s); + } + } + + return dest; +} + +static void stbi__copyval(int channel,stbi_uc *dest,const stbi_uc *src) +{ + int mask=0x80,i; + + for (i=0;i<4; ++i, mask>>=1) + if (channel&mask) + dest[i]=src[i]; +} + +static stbi_uc *stbi__pic_load_core(stbi__context *s,int width,int height,int *comp, stbi_uc *result) +{ + int act_comp=0,num_packets=0,y,chained; + stbi__pic_packet packets[10]; + + // this will (should...) cater for even some bizarre stuff like having data + // for the same channel in multiple packets. + do { + stbi__pic_packet *packet; + + if (num_packets==sizeof(packets)/sizeof(packets[0])) + return stbi__errpuc("bad format","too many packets"); + + packet = &packets[num_packets++]; + + chained = stbi__get8(s); + packet->size = stbi__get8(s); + packet->type = stbi__get8(s); + packet->channel = stbi__get8(s); + + act_comp |= packet->channel; + + if (stbi__at_eof(s)) return stbi__errpuc("bad file","file too short (reading packets)"); + if (packet->size != 8) return stbi__errpuc("bad format","packet isn't 8bpp"); + } while (chained); + + *comp = (act_comp & 0x10 ? 4 : 3); // has alpha channel? + + for(y=0; ytype) { + default: + return stbi__errpuc("bad format","packet has bad compression type"); + + case 0: {//uncompressed + int x; + + for(x=0;xchannel,dest)) + return 0; + break; + } + + case 1://Pure RLE + { + int left=width, i; + + while (left>0) { + stbi_uc count,value[4]; + + count=stbi__get8(s); + if (stbi__at_eof(s)) return stbi__errpuc("bad file","file too short (pure read count)"); + + if (count > left) + count = (stbi_uc) left; + + if (!stbi__readval(s,packet->channel,value)) return 0; + + for(i=0; ichannel,dest,value); + left -= count; + } + } + break; + + case 2: {//Mixed RLE + int left=width; + while (left>0) { + int count = stbi__get8(s), i; + if (stbi__at_eof(s)) return stbi__errpuc("bad file","file too short (mixed read count)"); + + if (count >= 128) { // Repeated + stbi_uc value[4]; + + if (count==128) + count = stbi__get16be(s); + else + count -= 127; + if (count > left) + return stbi__errpuc("bad file","scanline overrun"); + + if (!stbi__readval(s,packet->channel,value)) + return 0; + + for(i=0;ichannel,dest,value); + } else { // Raw + ++count; + if (count>left) return stbi__errpuc("bad file","scanline overrun"); + + for(i=0;ichannel,dest)) + return 0; + } + left-=count; + } + break; + } + } + } + } + + return result; +} + +static void *stbi__pic_load(stbi__context *s,int *px,int *py,int *comp,int req_comp, stbi__result_info *ri) +{ + stbi_uc *result; + int i, x,y, internal_comp; + STBI_NOTUSED(ri); + + if (!comp) comp = &internal_comp; + + for (i=0; i<92; ++i) + stbi__get8(s); + + x = stbi__get16be(s); + y = stbi__get16be(s); + + if (y > STBI_MAX_DIMENSIONS) return stbi__errpuc("too large","Very large image (corrupt?)"); + if (x > STBI_MAX_DIMENSIONS) return stbi__errpuc("too large","Very large image (corrupt?)"); + + if (stbi__at_eof(s)) return stbi__errpuc("bad file","file too short (pic header)"); + if (!stbi__mad3sizes_valid(x, y, 4, 0)) return stbi__errpuc("too large", "PIC image too large to decode"); + + stbi__get32be(s); //skip `ratio' + stbi__get16be(s); //skip `fields' + stbi__get16be(s); //skip `pad' + + // intermediate buffer is RGBA + result = (stbi_uc *) stbi__malloc_mad3(x, y, 4, 0); + if (!result) return stbi__errpuc("outofmem", "Out of memory"); + memset(result, 0xff, x*y*4); + + if (!stbi__pic_load_core(s,x,y,comp, result)) { + STBI_FREE(result); + result=0; + } + *px = x; + *py = y; + if (req_comp == 0) req_comp = *comp; + result=stbi__convert_format(result,4,req_comp,x,y); + + return result; +} + +static int stbi__pic_test(stbi__context *s) +{ + int r = stbi__pic_test_core(s); + stbi__rewind(s); + return r; +} +#endif + +// ************************************************************************************************* +// GIF loader -- public domain by Jean-Marc Lienher -- simplified/shrunk by stb + +#ifndef STBI_NO_GIF +typedef struct +{ + stbi__int16 prefix; + stbi_uc first; + stbi_uc suffix; +} stbi__gif_lzw; + +typedef struct +{ + int w,h; + stbi_uc *out; // output buffer (always 4 components) + stbi_uc *background; // The current "background" as far as a gif is concerned + stbi_uc *history; + int flags, bgindex, ratio, transparent, eflags; + stbi_uc pal[256][4]; + stbi_uc lpal[256][4]; + stbi__gif_lzw codes[8192]; + stbi_uc *color_table; + int parse, step; + int lflags; + int start_x, start_y; + int max_x, max_y; + int cur_x, cur_y; + int line_size; + int delay; +} stbi__gif; + +static int stbi__gif_test_raw(stbi__context *s) +{ + int sz; + if (stbi__get8(s) != 'G' || stbi__get8(s) != 'I' || stbi__get8(s) != 'F' || stbi__get8(s) != '8') return 0; + sz = stbi__get8(s); + if (sz != '9' && sz != '7') return 0; + if (stbi__get8(s) != 'a') return 0; + return 1; +} + +static int stbi__gif_test(stbi__context *s) +{ + int r = stbi__gif_test_raw(s); + stbi__rewind(s); + return r; +} + +static void stbi__gif_parse_colortable(stbi__context *s, stbi_uc pal[256][4], int num_entries, int transp) +{ + int i; + for (i=0; i < num_entries; ++i) { + pal[i][2] = stbi__get8(s); + pal[i][1] = stbi__get8(s); + pal[i][0] = stbi__get8(s); + pal[i][3] = transp == i ? 0 : 255; + } +} + +static int stbi__gif_header(stbi__context *s, stbi__gif *g, int *comp, int is_info) +{ + stbi_uc version; + if (stbi__get8(s) != 'G' || stbi__get8(s) != 'I' || stbi__get8(s) != 'F' || stbi__get8(s) != '8') + return stbi__err("not GIF", "Corrupt GIF"); + + version = stbi__get8(s); + if (version != '7' && version != '9') return stbi__err("not GIF", "Corrupt GIF"); + if (stbi__get8(s) != 'a') return stbi__err("not GIF", "Corrupt GIF"); + + stbi__g_failure_reason = ""; + g->w = stbi__get16le(s); + g->h = stbi__get16le(s); + g->flags = stbi__get8(s); + g->bgindex = stbi__get8(s); + g->ratio = stbi__get8(s); + g->transparent = -1; + + if (g->w > STBI_MAX_DIMENSIONS) return stbi__err("too large","Very large image (corrupt?)"); + if (g->h > STBI_MAX_DIMENSIONS) return stbi__err("too large","Very large image (corrupt?)"); + + if (comp != 0) *comp = 4; // can't actually tell whether it's 3 or 4 until we parse the comments + + if (is_info) return 1; + + if (g->flags & 0x80) + stbi__gif_parse_colortable(s,g->pal, 2 << (g->flags & 7), -1); + + return 1; +} + +static int stbi__gif_info_raw(stbi__context *s, int *x, int *y, int *comp) +{ + stbi__gif* g = (stbi__gif*) stbi__malloc(sizeof(stbi__gif)); + if (!g) return stbi__err("outofmem", "Out of memory"); + if (!stbi__gif_header(s, g, comp, 1)) { + STBI_FREE(g); + stbi__rewind( s ); + return 0; + } + if (x) *x = g->w; + if (y) *y = g->h; + STBI_FREE(g); + return 1; +} + +static void stbi__out_gif_code(stbi__gif *g, stbi__uint16 code) +{ + stbi_uc *p, *c; + int idx; + + // recurse to decode the prefixes, since the linked-list is backwards, + // and working backwards through an interleaved image would be nasty + if (g->codes[code].prefix >= 0) + stbi__out_gif_code(g, g->codes[code].prefix); + + if (g->cur_y >= g->max_y) return; + + idx = g->cur_x + g->cur_y; + p = &g->out[idx]; + g->history[idx / 4] = 1; + + c = &g->color_table[g->codes[code].suffix * 4]; + if (c[3] > 128) { // don't render transparent pixels; + p[0] = c[2]; + p[1] = c[1]; + p[2] = c[0]; + p[3] = c[3]; + } + g->cur_x += 4; + + if (g->cur_x >= g->max_x) { + g->cur_x = g->start_x; + g->cur_y += g->step; + + while (g->cur_y >= g->max_y && g->parse > 0) { + g->step = (1 << g->parse) * g->line_size; + g->cur_y = g->start_y + (g->step >> 1); + --g->parse; + } + } +} + +static stbi_uc *stbi__process_gif_raster(stbi__context *s, stbi__gif *g) +{ + stbi_uc lzw_cs; + stbi__int32 len, init_code; + stbi__uint32 first; + stbi__int32 codesize, codemask, avail, oldcode, bits, valid_bits, clear; + stbi__gif_lzw *p; + + lzw_cs = stbi__get8(s); + if (lzw_cs > 12) return NULL; + clear = 1 << lzw_cs; + first = 1; + codesize = lzw_cs + 1; + codemask = (1 << codesize) - 1; + bits = 0; + valid_bits = 0; + for (init_code = 0; init_code < clear; init_code++) { + g->codes[init_code].prefix = -1; + g->codes[init_code].first = (stbi_uc) init_code; + g->codes[init_code].suffix = (stbi_uc) init_code; + } + + // support no starting clear code + avail = clear+2; + oldcode = -1; + + len = 0; + for(;;) { + if (valid_bits < codesize) { + if (len == 0) { + len = stbi__get8(s); // start new block + if (len == 0) + return g->out; + } + --len; + bits |= (stbi__int32) stbi__get8(s) << valid_bits; + valid_bits += 8; + } else { + stbi__int32 code = bits & codemask; + bits >>= codesize; + valid_bits -= codesize; + // @OPTIMIZE: is there some way we can accelerate the non-clear path? + if (code == clear) { // clear code + codesize = lzw_cs + 1; + codemask = (1 << codesize) - 1; + avail = clear + 2; + oldcode = -1; + first = 0; + } else if (code == clear + 1) { // end of stream code + stbi__skip(s, len); + while ((len = stbi__get8(s)) > 0) + stbi__skip(s,len); + return g->out; + } else if (code <= avail) { + if (first) { + return stbi__errpuc("no clear code", "Corrupt GIF"); + } + + if (oldcode >= 0) { + p = &g->codes[avail++]; + if (avail > 8192) { + return stbi__errpuc("too many codes", "Corrupt GIF"); + } + + p->prefix = (stbi__int16) oldcode; + p->first = g->codes[oldcode].first; + p->suffix = (code == avail) ? p->first : g->codes[code].first; + } else if (code == avail) + return stbi__errpuc("illegal code in raster", "Corrupt GIF"); + + stbi__out_gif_code(g, (stbi__uint16) code); + + if ((avail & codemask) == 0 && avail <= 0x0FFF) { + codesize++; + codemask = (1 << codesize) - 1; + } + + oldcode = code; + } else { + return stbi__errpuc("illegal code in raster", "Corrupt GIF"); + } + } + } +} + +// this function is designed to support animated gifs, although stb_image doesn't support it +// two back is the image from two frames ago, used for a very specific disposal format +static stbi_uc *stbi__gif_load_next(stbi__context *s, stbi__gif *g, int *comp, int req_comp, stbi_uc *two_back) +{ + int dispose; + int first_frame; + int pi; + int pcount; + STBI_NOTUSED(req_comp); + + // on first frame, any non-written pixels get the background colour (non-transparent) + first_frame = 0; + if (g->out == 0) { + if (!stbi__gif_header(s, g, comp,0)) return 0; // stbi__g_failure_reason set by stbi__gif_header + if (!stbi__mad3sizes_valid(4, g->w, g->h, 0)) + return stbi__errpuc("too large", "GIF image is too large"); + pcount = g->w * g->h; + g->out = (stbi_uc *) stbi__malloc(4 * pcount); + g->background = (stbi_uc *) stbi__malloc(4 * pcount); + g->history = (stbi_uc *) stbi__malloc(pcount); + if (!g->out || !g->background || !g->history) + return stbi__errpuc("outofmem", "Out of memory"); + + // image is treated as "transparent" at the start - ie, nothing overwrites the current background; + // background colour is only used for pixels that are not rendered first frame, after that "background" + // color refers to the color that was there the previous frame. + memset(g->out, 0x00, 4 * pcount); + memset(g->background, 0x00, 4 * pcount); // state of the background (starts transparent) + memset(g->history, 0x00, pcount); // pixels that were affected previous frame + first_frame = 1; + } else { + // second frame - how do we dispose of the previous one? + dispose = (g->eflags & 0x1C) >> 2; + pcount = g->w * g->h; + + if ((dispose == 3) && (two_back == 0)) { + dispose = 2; // if I don't have an image to revert back to, default to the old background + } + + if (dispose == 3) { // use previous graphic + for (pi = 0; pi < pcount; ++pi) { + if (g->history[pi]) { + memcpy( &g->out[pi * 4], &two_back[pi * 4], 4 ); + } + } + } else if (dispose == 2) { + // restore what was changed last frame to background before that frame; + for (pi = 0; pi < pcount; ++pi) { + if (g->history[pi]) { + memcpy( &g->out[pi * 4], &g->background[pi * 4], 4 ); + } + } + } else { + // This is a non-disposal case eithe way, so just + // leave the pixels as is, and they will become the new background + // 1: do not dispose + // 0: not specified. + } + + // background is what out is after the undoing of the previou frame; + memcpy( g->background, g->out, 4 * g->w * g->h ); + } + + // clear my history; + memset( g->history, 0x00, g->w * g->h ); // pixels that were affected previous frame + + for (;;) { + int tag = stbi__get8(s); + switch (tag) { + case 0x2C: /* Image Descriptor */ + { + stbi__int32 x, y, w, h; + stbi_uc *o; + + x = stbi__get16le(s); + y = stbi__get16le(s); + w = stbi__get16le(s); + h = stbi__get16le(s); + if (((x + w) > (g->w)) || ((y + h) > (g->h))) + return stbi__errpuc("bad Image Descriptor", "Corrupt GIF"); + + g->line_size = g->w * 4; + g->start_x = x * 4; + g->start_y = y * g->line_size; + g->max_x = g->start_x + w * 4; + g->max_y = g->start_y + h * g->line_size; + g->cur_x = g->start_x; + g->cur_y = g->start_y; + + // if the width of the specified rectangle is 0, that means + // we may not see *any* pixels or the image is malformed; + // to make sure this is caught, move the current y down to + // max_y (which is what out_gif_code checks). + if (w == 0) + g->cur_y = g->max_y; + + g->lflags = stbi__get8(s); + + if (g->lflags & 0x40) { + g->step = 8 * g->line_size; // first interlaced spacing + g->parse = 3; + } else { + g->step = g->line_size; + g->parse = 0; + } + + if (g->lflags & 0x80) { + stbi__gif_parse_colortable(s,g->lpal, 2 << (g->lflags & 7), g->eflags & 0x01 ? g->transparent : -1); + g->color_table = (stbi_uc *) g->lpal; + } else if (g->flags & 0x80) { + g->color_table = (stbi_uc *) g->pal; + } else + return stbi__errpuc("missing color table", "Corrupt GIF"); + + o = stbi__process_gif_raster(s, g); + if (!o) return NULL; + + // if this was the first frame, + pcount = g->w * g->h; + if (first_frame && (g->bgindex > 0)) { + // if first frame, any pixel not drawn to gets the background color + for (pi = 0; pi < pcount; ++pi) { + if (g->history[pi] == 0) { + g->pal[g->bgindex][3] = 255; // just in case it was made transparent, undo that; It will be reset next frame if need be; + memcpy( &g->out[pi * 4], &g->pal[g->bgindex], 4 ); + } + } + } + + return o; + } + + case 0x21: // Comment Extension. + { + int len; + int ext = stbi__get8(s); + if (ext == 0xF9) { // Graphic Control Extension. + len = stbi__get8(s); + if (len == 4) { + g->eflags = stbi__get8(s); + g->delay = 10 * stbi__get16le(s); // delay - 1/100th of a second, saving as 1/1000ths. + + // unset old transparent + if (g->transparent >= 0) { + g->pal[g->transparent][3] = 255; + } + if (g->eflags & 0x01) { + g->transparent = stbi__get8(s); + if (g->transparent >= 0) { + g->pal[g->transparent][3] = 0; + } + } else { + // don't need transparent + stbi__skip(s, 1); + g->transparent = -1; + } + } else { + stbi__skip(s, len); + break; + } + } + while ((len = stbi__get8(s)) != 0) { + stbi__skip(s, len); + } + break; + } + + case 0x3B: // gif stream termination code + return (stbi_uc *) s; // using '1' causes warning on some compilers + + default: + return stbi__errpuc("unknown code", "Corrupt GIF"); + } + } +} + +static void *stbi__load_gif_main_outofmem(stbi__gif *g, stbi_uc *out, int **delays) +{ + STBI_FREE(g->out); + STBI_FREE(g->history); + STBI_FREE(g->background); + + if (out) STBI_FREE(out); + if (delays && *delays) STBI_FREE(*delays); + return stbi__errpuc("outofmem", "Out of memory"); +} + +static void *stbi__load_gif_main(stbi__context *s, int **delays, int *x, int *y, int *z, int *comp, int req_comp) +{ + if (stbi__gif_test(s)) { + int layers = 0; + stbi_uc *u = 0; + stbi_uc *out = 0; + stbi_uc *two_back = 0; + stbi__gif g; + int stride; + int out_size = 0; + int delays_size = 0; + + STBI_NOTUSED(out_size); + STBI_NOTUSED(delays_size); + + memset(&g, 0, sizeof(g)); + if (delays) { + *delays = 0; + } + + do { + u = stbi__gif_load_next(s, &g, comp, req_comp, two_back); + if (u == (stbi_uc *) s) u = 0; // end of animated gif marker + + if (u) { + *x = g.w; + *y = g.h; + ++layers; + stride = g.w * g.h * 4; + + if (out) { + void *tmp = (stbi_uc*) STBI_REALLOC_SIZED( out, out_size, layers * stride ); + if (!tmp) + return stbi__load_gif_main_outofmem(&g, out, delays); + else { + out = (stbi_uc*) tmp; + out_size = layers * stride; + } + + if (delays) { + int *new_delays = (int*) STBI_REALLOC_SIZED( *delays, delays_size, sizeof(int) * layers ); + if (!new_delays) + return stbi__load_gif_main_outofmem(&g, out, delays); + *delays = new_delays; + delays_size = layers * sizeof(int); + } + } else { + out = (stbi_uc*)stbi__malloc( layers * stride ); + if (!out) + return stbi__load_gif_main_outofmem(&g, out, delays); + out_size = layers * stride; + if (delays) { + *delays = (int*) stbi__malloc( layers * sizeof(int) ); + if (!*delays) + return stbi__load_gif_main_outofmem(&g, out, delays); + delays_size = layers * sizeof(int); + } + } + memcpy( out + ((layers - 1) * stride), u, stride ); + if (layers >= 2) { + two_back = out - 2 * stride; + } + + if (delays) { + (*delays)[layers - 1U] = g.delay; + } + } + } while (u != 0); + + // free temp buffer; + STBI_FREE(g.out); + STBI_FREE(g.history); + STBI_FREE(g.background); + + // do the final conversion after loading everything; + if (req_comp && req_comp != 4) + out = stbi__convert_format(out, 4, req_comp, layers * g.w, g.h); + + *z = layers; + return out; + } else { + return stbi__errpuc("not GIF", "Image was not as a gif type."); + } +} + +static void *stbi__gif_load(stbi__context *s, int *x, int *y, int *comp, int req_comp, stbi__result_info *ri) +{ + stbi_uc *u = 0; + stbi__gif g; + memset(&g, 0, sizeof(g)); + STBI_NOTUSED(ri); + + u = stbi__gif_load_next(s, &g, comp, req_comp, 0); + if (u == (stbi_uc *) s) u = 0; // end of animated gif marker + if (u) { + *x = g.w; + *y = g.h; + + // moved conversion to after successful load so that the same + // can be done for multiple frames. + if (req_comp && req_comp != 4) + u = stbi__convert_format(u, 4, req_comp, g.w, g.h); + } else if (g.out) { + // if there was an error and we allocated an image buffer, free it! + STBI_FREE(g.out); + } + + // free buffers needed for multiple frame loading; + STBI_FREE(g.history); + STBI_FREE(g.background); + + return u; +} + +static int stbi__gif_info(stbi__context *s, int *x, int *y, int *comp) +{ + return stbi__gif_info_raw(s,x,y,comp); +} +#endif + +// ************************************************************************************************* +// Radiance RGBE HDR loader +// originally by Nicolas Schulz +#ifndef STBI_NO_HDR +static int stbi__hdr_test_core(stbi__context *s, const char *signature) +{ + int i; + for (i=0; signature[i]; ++i) + if (stbi__get8(s) != signature[i]) + return 0; + stbi__rewind(s); + return 1; +} + +static int stbi__hdr_test(stbi__context* s) +{ + int r = stbi__hdr_test_core(s, "#?RADIANCE\n"); + stbi__rewind(s); + if(!r) { + r = stbi__hdr_test_core(s, "#?RGBE\n"); + stbi__rewind(s); + } + return r; +} + +#define STBI__HDR_BUFLEN 1024 +static char *stbi__hdr_gettoken(stbi__context *z, char *buffer) +{ + int len=0; + char c = '\0'; + + c = (char) stbi__get8(z); + + while (!stbi__at_eof(z) && c != '\n') { + buffer[len++] = c; + if (len == STBI__HDR_BUFLEN-1) { + // flush to end of line + while (!stbi__at_eof(z) && stbi__get8(z) != '\n') + ; + break; + } + c = (char) stbi__get8(z); + } + + buffer[len] = 0; + return buffer; +} + +static void stbi__hdr_convert(float *output, stbi_uc *input, int req_comp) +{ + if ( input[3] != 0 ) { + float f1; + // Exponent + f1 = (float) ldexp(1.0f, input[3] - (int)(128 + 8)); + if (req_comp <= 2) + output[0] = (input[0] + input[1] + input[2]) * f1 / 3; + else { + output[0] = input[0] * f1; + output[1] = input[1] * f1; + output[2] = input[2] * f1; + } + if (req_comp == 2) output[1] = 1; + if (req_comp == 4) output[3] = 1; + } else { + switch (req_comp) { + case 4: output[3] = 1; /* fallthrough */ + case 3: output[0] = output[1] = output[2] = 0; + break; + case 2: output[1] = 1; /* fallthrough */ + case 1: output[0] = 0; + break; + } + } +} + +static float *stbi__hdr_load(stbi__context *s, int *x, int *y, int *comp, int req_comp, stbi__result_info *ri) +{ + char buffer[STBI__HDR_BUFLEN]; + char *token; + int valid = 0; + int width, height; + stbi_uc *scanline; + float *hdr_data; + int len; + unsigned char count, value; + int i, j, k, c1,c2, z; + const char *headerToken; + STBI_NOTUSED(ri); + + // Check identifier + headerToken = stbi__hdr_gettoken(s,buffer); + if (strcmp(headerToken, "#?RADIANCE") != 0 && strcmp(headerToken, "#?RGBE") != 0) + return stbi__errpf("not HDR", "Corrupt HDR image"); + + // Parse header + for(;;) { + token = stbi__hdr_gettoken(s,buffer); + if (token[0] == 0) break; + if (strcmp(token, "FORMAT=32-bit_rle_rgbe") == 0) valid = 1; + } + + if (!valid) return stbi__errpf("unsupported format", "Unsupported HDR format"); + + // Parse width and height + // can't use sscanf() if we're not using stdio! + token = stbi__hdr_gettoken(s,buffer); + if (strncmp(token, "-Y ", 3)) return stbi__errpf("unsupported data layout", "Unsupported HDR format"); + token += 3; + height = (int) strtol(token, &token, 10); + while (*token == ' ') ++token; + if (strncmp(token, "+X ", 3)) return stbi__errpf("unsupported data layout", "Unsupported HDR format"); + token += 3; + width = (int) strtol(token, NULL, 10); + + if (height > STBI_MAX_DIMENSIONS) return stbi__errpf("too large","Very large image (corrupt?)"); + if (width > STBI_MAX_DIMENSIONS) return stbi__errpf("too large","Very large image (corrupt?)"); + + *x = width; + *y = height; + + if (comp) *comp = 3; + if (req_comp == 0) req_comp = 3; + + if (!stbi__mad4sizes_valid(width, height, req_comp, sizeof(float), 0)) + return stbi__errpf("too large", "HDR image is too large"); + + // Read data + hdr_data = (float *) stbi__malloc_mad4(width, height, req_comp, sizeof(float), 0); + if (!hdr_data) + return stbi__errpf("outofmem", "Out of memory"); + + // Load image data + // image data is stored as some number of sca + if ( width < 8 || width >= 32768) { + // Read flat data + for (j=0; j < height; ++j) { + for (i=0; i < width; ++i) { + stbi_uc rgbe[4]; + main_decode_loop: + stbi__getn(s, rgbe, 4); + stbi__hdr_convert(hdr_data + j * width * req_comp + i * req_comp, rgbe, req_comp); + } + } + } else { + // Read RLE-encoded data + scanline = NULL; + + for (j = 0; j < height; ++j) { + c1 = stbi__get8(s); + c2 = stbi__get8(s); + len = stbi__get8(s); + if (c1 != 2 || c2 != 2 || (len & 0x80)) { + // not run-length encoded, so we have to actually use THIS data as a decoded + // pixel (note this can't be a valid pixel--one of RGB must be >= 128) + stbi_uc rgbe[4]; + rgbe[0] = (stbi_uc) c1; + rgbe[1] = (stbi_uc) c2; + rgbe[2] = (stbi_uc) len; + rgbe[3] = (stbi_uc) stbi__get8(s); + stbi__hdr_convert(hdr_data, rgbe, req_comp); + i = 1; + j = 0; + STBI_FREE(scanline); + goto main_decode_loop; // yes, this makes no sense + } + len <<= 8; + len |= stbi__get8(s); + if (len != width) { STBI_FREE(hdr_data); STBI_FREE(scanline); return stbi__errpf("invalid decoded scanline length", "corrupt HDR"); } + if (scanline == NULL) { + scanline = (stbi_uc *) stbi__malloc_mad2(width, 4, 0); + if (!scanline) { + STBI_FREE(hdr_data); + return stbi__errpf("outofmem", "Out of memory"); + } + } + + for (k = 0; k < 4; ++k) { + int nleft; + i = 0; + while ((nleft = width - i) > 0) { + count = stbi__get8(s); + if (count > 128) { + // Run + value = stbi__get8(s); + count -= 128; + if ((count == 0) || (count > nleft)) { STBI_FREE(hdr_data); STBI_FREE(scanline); return stbi__errpf("corrupt", "bad RLE data in HDR"); } + for (z = 0; z < count; ++z) + scanline[i++ * 4 + k] = value; + } else { + // Dump + if ((count == 0) || (count > nleft)) { STBI_FREE(hdr_data); STBI_FREE(scanline); return stbi__errpf("corrupt", "bad RLE data in HDR"); } + for (z = 0; z < count; ++z) + scanline[i++ * 4 + k] = stbi__get8(s); + } + } + } + for (i=0; i < width; ++i) + stbi__hdr_convert(hdr_data+(j*width + i)*req_comp, scanline + i*4, req_comp); + } + if (scanline) + STBI_FREE(scanline); + } + + return hdr_data; +} + +static int stbi__hdr_info(stbi__context *s, int *x, int *y, int *comp) +{ + char buffer[STBI__HDR_BUFLEN]; + char *token; + int valid = 0; + int dummy; + + if (!x) x = &dummy; + if (!y) y = &dummy; + if (!comp) comp = &dummy; + + if (stbi__hdr_test(s) == 0) { + stbi__rewind( s ); + return 0; + } + + for(;;) { + token = stbi__hdr_gettoken(s,buffer); + if (token[0] == 0) break; + if (strcmp(token, "FORMAT=32-bit_rle_rgbe") == 0) valid = 1; + } + + if (!valid) { + stbi__rewind( s ); + return 0; + } + token = stbi__hdr_gettoken(s,buffer); + if (strncmp(token, "-Y ", 3)) { + stbi__rewind( s ); + return 0; + } + token += 3; + *y = (int) strtol(token, &token, 10); + while (*token == ' ') ++token; + if (strncmp(token, "+X ", 3)) { + stbi__rewind( s ); + return 0; + } + token += 3; + *x = (int) strtol(token, NULL, 10); + *comp = 3; + return 1; +} +#endif // STBI_NO_HDR + +#ifndef STBI_NO_BMP +static int stbi__bmp_info(stbi__context *s, int *x, int *y, int *comp) +{ + void *p; + stbi__bmp_data info; + + info.all_a = 255; + p = stbi__bmp_parse_header(s, &info); + if (p == NULL) { + stbi__rewind( s ); + return 0; + } + if (x) *x = s->img_x; + if (y) *y = s->img_y; + if (comp) { + if (info.bpp == 24 && info.ma == 0xff000000) + *comp = 3; + else + *comp = info.ma ? 4 : 3; + } + return 1; +} +#endif + +#ifndef STBI_NO_PSD +static int stbi__psd_info(stbi__context *s, int *x, int *y, int *comp) +{ + int channelCount, dummy, depth; + if (!x) x = &dummy; + if (!y) y = &dummy; + if (!comp) comp = &dummy; + if (stbi__get32be(s) != 0x38425053) { + stbi__rewind( s ); + return 0; + } + if (stbi__get16be(s) != 1) { + stbi__rewind( s ); + return 0; + } + stbi__skip(s, 6); + channelCount = stbi__get16be(s); + if (channelCount < 0 || channelCount > 16) { + stbi__rewind( s ); + return 0; + } + *y = stbi__get32be(s); + *x = stbi__get32be(s); + depth = stbi__get16be(s); + if (depth != 8 && depth != 16) { + stbi__rewind( s ); + return 0; + } + if (stbi__get16be(s) != 3) { + stbi__rewind( s ); + return 0; + } + *comp = 4; + return 1; +} + +static int stbi__psd_is16(stbi__context *s) +{ + int channelCount, depth; + if (stbi__get32be(s) != 0x38425053) { + stbi__rewind( s ); + return 0; + } + if (stbi__get16be(s) != 1) { + stbi__rewind( s ); + return 0; + } + stbi__skip(s, 6); + channelCount = stbi__get16be(s); + if (channelCount < 0 || channelCount > 16) { + stbi__rewind( s ); + return 0; + } + STBI_NOTUSED(stbi__get32be(s)); + STBI_NOTUSED(stbi__get32be(s)); + depth = stbi__get16be(s); + if (depth != 16) { + stbi__rewind( s ); + return 0; + } + return 1; +} +#endif + +#ifndef STBI_NO_PIC +static int stbi__pic_info(stbi__context *s, int *x, int *y, int *comp) +{ + int act_comp=0,num_packets=0,chained,dummy; + stbi__pic_packet packets[10]; + + if (!x) x = &dummy; + if (!y) y = &dummy; + if (!comp) comp = &dummy; + + if (!stbi__pic_is4(s,"\x53\x80\xF6\x34")) { + stbi__rewind(s); + return 0; + } + + stbi__skip(s, 88); + + *x = stbi__get16be(s); + *y = stbi__get16be(s); + if (stbi__at_eof(s)) { + stbi__rewind( s); + return 0; + } + if ( (*x) != 0 && (1 << 28) / (*x) < (*y)) { + stbi__rewind( s ); + return 0; + } + + stbi__skip(s, 8); + + do { + stbi__pic_packet *packet; + + if (num_packets==sizeof(packets)/sizeof(packets[0])) + return 0; + + packet = &packets[num_packets++]; + chained = stbi__get8(s); + packet->size = stbi__get8(s); + packet->type = stbi__get8(s); + packet->channel = stbi__get8(s); + act_comp |= packet->channel; + + if (stbi__at_eof(s)) { + stbi__rewind( s ); + return 0; + } + if (packet->size != 8) { + stbi__rewind( s ); + return 0; + } + } while (chained); + + *comp = (act_comp & 0x10 ? 4 : 3); + + return 1; +} +#endif + +// ************************************************************************************************* +// Portable Gray Map and Portable Pixel Map loader +// by Ken Miller +// +// PGM: http://netpbm.sourceforge.net/doc/pgm.html +// PPM: http://netpbm.sourceforge.net/doc/ppm.html +// +// Known limitations: +// Does not support comments in the header section +// Does not support ASCII image data (formats P2 and P3) + +#ifndef STBI_NO_PNM + +static int stbi__pnm_test(stbi__context *s) +{ + char p, t; + p = (char) stbi__get8(s); + t = (char) stbi__get8(s); + if (p != 'P' || (t != '5' && t != '6')) { + stbi__rewind( s ); + return 0; + } + return 1; +} + +static void *stbi__pnm_load(stbi__context *s, int *x, int *y, int *comp, int req_comp, stbi__result_info *ri) +{ + stbi_uc *out; + STBI_NOTUSED(ri); + + ri->bits_per_channel = stbi__pnm_info(s, (int *)&s->img_x, (int *)&s->img_y, (int *)&s->img_n); + if (ri->bits_per_channel == 0) + return 0; + + if (s->img_y > STBI_MAX_DIMENSIONS) return stbi__errpuc("too large","Very large image (corrupt?)"); + if (s->img_x > STBI_MAX_DIMENSIONS) return stbi__errpuc("too large","Very large image (corrupt?)"); + + *x = s->img_x; + *y = s->img_y; + if (comp) *comp = s->img_n; + + if (!stbi__mad4sizes_valid(s->img_n, s->img_x, s->img_y, ri->bits_per_channel / 8, 0)) + return stbi__errpuc("too large", "PNM too large"); + + out = (stbi_uc *) stbi__malloc_mad4(s->img_n, s->img_x, s->img_y, ri->bits_per_channel / 8, 0); + if (!out) return stbi__errpuc("outofmem", "Out of memory"); + if (!stbi__getn(s, out, s->img_n * s->img_x * s->img_y * (ri->bits_per_channel / 8))) { + STBI_FREE(out); + return stbi__errpuc("bad PNM", "PNM file truncated"); + } + + if (req_comp && req_comp != s->img_n) { + if (ri->bits_per_channel == 16) { + out = (stbi_uc *) stbi__convert_format16((stbi__uint16 *) out, s->img_n, req_comp, s->img_x, s->img_y); + } else { + out = stbi__convert_format(out, s->img_n, req_comp, s->img_x, s->img_y); + } + if (out == NULL) return out; // stbi__convert_format frees input on failure + } + return out; +} + +static int stbi__pnm_isspace(char c) +{ + return c == ' ' || c == '\t' || c == '\n' || c == '\v' || c == '\f' || c == '\r'; +} + +static void stbi__pnm_skip_whitespace(stbi__context *s, char *c) +{ + for (;;) { + while (!stbi__at_eof(s) && stbi__pnm_isspace(*c)) + *c = (char) stbi__get8(s); + + if (stbi__at_eof(s) || *c != '#') + break; + + while (!stbi__at_eof(s) && *c != '\n' && *c != '\r' ) + *c = (char) stbi__get8(s); + } +} + +static int stbi__pnm_isdigit(char c) +{ + return c >= '0' && c <= '9'; +} + +static int stbi__pnm_getinteger(stbi__context *s, char *c) +{ + int value = 0; + + while (!stbi__at_eof(s) && stbi__pnm_isdigit(*c)) { + value = value*10 + (*c - '0'); + *c = (char) stbi__get8(s); + if((value > 214748364) || (value == 214748364 && *c > '7')) + return stbi__err("integer parse overflow", "Parsing an integer in the PPM header overflowed a 32-bit int"); + } + + return value; +} + +static int stbi__pnm_info(stbi__context *s, int *x, int *y, int *comp) +{ + int maxv, dummy; + char c, p, t; + + if (!x) x = &dummy; + if (!y) y = &dummy; + if (!comp) comp = &dummy; + + stbi__rewind(s); + + // Get identifier + p = (char) stbi__get8(s); + t = (char) stbi__get8(s); + if (p != 'P' || (t != '5' && t != '6')) { + stbi__rewind(s); + return 0; + } + + *comp = (t == '6') ? 3 : 1; // '5' is 1-component .pgm; '6' is 3-component .ppm + + c = (char) stbi__get8(s); + stbi__pnm_skip_whitespace(s, &c); + + *x = stbi__pnm_getinteger(s, &c); // read width + if(*x == 0) + return stbi__err("invalid width", "PPM image header had zero or overflowing width"); + stbi__pnm_skip_whitespace(s, &c); + + *y = stbi__pnm_getinteger(s, &c); // read height + if (*y == 0) + return stbi__err("invalid width", "PPM image header had zero or overflowing width"); + stbi__pnm_skip_whitespace(s, &c); + + maxv = stbi__pnm_getinteger(s, &c); // read max value + if (maxv > 65535) + return stbi__err("max value > 65535", "PPM image supports only 8-bit and 16-bit images"); + else if (maxv > 255) + return 16; + else + return 8; +} + +static int stbi__pnm_is16(stbi__context *s) +{ + if (stbi__pnm_info(s, NULL, NULL, NULL) == 16) + return 1; + return 0; +} +#endif + +static int stbi__info_main(stbi__context *s, int *x, int *y, int *comp) +{ + #ifndef STBI_NO_JPEG + if (stbi__jpeg_info(s, x, y, comp)) return 1; + #endif + + #ifndef STBI_NO_PNG + if (stbi__png_info(s, x, y, comp)) return 1; + #endif + + #ifndef STBI_NO_GIF + if (stbi__gif_info(s, x, y, comp)) return 1; + #endif + + #ifndef STBI_NO_BMP + if (stbi__bmp_info(s, x, y, comp)) return 1; + #endif + + #ifndef STBI_NO_PSD + if (stbi__psd_info(s, x, y, comp)) return 1; + #endif + + #ifndef STBI_NO_PIC + if (stbi__pic_info(s, x, y, comp)) return 1; + #endif + + #ifndef STBI_NO_PNM + if (stbi__pnm_info(s, x, y, comp)) return 1; + #endif + + #ifndef STBI_NO_HDR + if (stbi__hdr_info(s, x, y, comp)) return 1; + #endif + + // test tga last because it's a crappy test! + #ifndef STBI_NO_TGA + if (stbi__tga_info(s, x, y, comp)) + return 1; + #endif + return stbi__err("unknown image type", "Image not of any known type, or corrupt"); +} + +static int stbi__is_16_main(stbi__context *s) +{ + #ifndef STBI_NO_PNG + if (stbi__png_is16(s)) return 1; + #endif + + #ifndef STBI_NO_PSD + if (stbi__psd_is16(s)) return 1; + #endif + + #ifndef STBI_NO_PNM + if (stbi__pnm_is16(s)) return 1; + #endif + return 0; +} + +#ifndef STBI_NO_STDIO +STBIDEF int stbi_info(char const *filename, int *x, int *y, int *comp) +{ + FILE *f = stbi__fopen(filename, "rb"); + int result; + if (!f) return stbi__err("can't fopen", "Unable to open file"); + result = stbi_info_from_file(f, x, y, comp); + fclose(f); + return result; +} + +STBIDEF int stbi_info_from_file(FILE *f, int *x, int *y, int *comp) +{ + int r; + stbi__context s; + long pos = ftell(f); + stbi__start_file(&s, f); + r = stbi__info_main(&s,x,y,comp); + fseek(f,pos,SEEK_SET); + return r; +} + +STBIDEF int stbi_is_16_bit(char const *filename) +{ + FILE *f = stbi__fopen(filename, "rb"); + int result; + if (!f) return stbi__err("can't fopen", "Unable to open file"); + result = stbi_is_16_bit_from_file(f); + fclose(f); + return result; +} + +STBIDEF int stbi_is_16_bit_from_file(FILE *f) +{ + int r; + stbi__context s; + long pos = ftell(f); + stbi__start_file(&s, f); + r = stbi__is_16_main(&s); + fseek(f,pos,SEEK_SET); + return r; +} +#endif // !STBI_NO_STDIO + +STBIDEF int stbi_info_from_memory(stbi_uc const *buffer, int len, int *x, int *y, int *comp) +{ + stbi__context s; + stbi__start_mem(&s,buffer,len); + return stbi__info_main(&s,x,y,comp); +} + +STBIDEF int stbi_info_from_callbacks(stbi_io_callbacks const *c, void *user, int *x, int *y, int *comp) +{ + stbi__context s; + stbi__start_callbacks(&s, (stbi_io_callbacks *) c, user); + return stbi__info_main(&s,x,y,comp); +} + +STBIDEF int stbi_is_16_bit_from_memory(stbi_uc const *buffer, int len) +{ + stbi__context s; + stbi__start_mem(&s,buffer,len); + return stbi__is_16_main(&s); +} + +STBIDEF int stbi_is_16_bit_from_callbacks(stbi_io_callbacks const *c, void *user) +{ + stbi__context s; + stbi__start_callbacks(&s, (stbi_io_callbacks *) c, user); + return stbi__is_16_main(&s); +} + +#endif // STB_IMAGE_IMPLEMENTATION + +/* + revision history: + 2.20 (2019-02-07) support utf8 filenames in Windows; fix warnings and platform ifdefs + 2.19 (2018-02-11) fix warning + 2.18 (2018-01-30) fix warnings + 2.17 (2018-01-29) change sbti__shiftsigned to avoid clang -O2 bug + 1-bit BMP + *_is_16_bit api + avoid warnings + 2.16 (2017-07-23) all functions have 16-bit variants; + STBI_NO_STDIO works again; + compilation fixes; + fix rounding in unpremultiply; + optimize vertical flip; + disable raw_len validation; + documentation fixes + 2.15 (2017-03-18) fix png-1,2,4 bug; now all Imagenet JPGs decode; + warning fixes; disable run-time SSE detection on gcc; + uniform handling of optional "return" values; + thread-safe initialization of zlib tables + 2.14 (2017-03-03) remove deprecated STBI_JPEG_OLD; fixes for Imagenet JPGs + 2.13 (2016-11-29) add 16-bit API, only supported for PNG right now + 2.12 (2016-04-02) fix typo in 2.11 PSD fix that caused crashes + 2.11 (2016-04-02) allocate large structures on the stack + remove white matting for transparent PSD + fix reported channel count for PNG & BMP + re-enable SSE2 in non-gcc 64-bit + support RGB-formatted JPEG + read 16-bit PNGs (only as 8-bit) + 2.10 (2016-01-22) avoid warning introduced in 2.09 by STBI_REALLOC_SIZED + 2.09 (2016-01-16) allow comments in PNM files + 16-bit-per-pixel TGA (not bit-per-component) + info() for TGA could break due to .hdr handling + info() for BMP to shares code instead of sloppy parse + can use STBI_REALLOC_SIZED if allocator doesn't support realloc + code cleanup + 2.08 (2015-09-13) fix to 2.07 cleanup, reading RGB PSD as RGBA + 2.07 (2015-09-13) fix compiler warnings + partial animated GIF support + limited 16-bpc PSD support + #ifdef unused functions + bug with < 92 byte PIC,PNM,HDR,TGA + 2.06 (2015-04-19) fix bug where PSD returns wrong '*comp' value + 2.05 (2015-04-19) fix bug in progressive JPEG handling, fix warning + 2.04 (2015-04-15) try to re-enable SIMD on MinGW 64-bit + 2.03 (2015-04-12) extra corruption checking (mmozeiko) + stbi_set_flip_vertically_on_load (nguillemot) + fix NEON support; fix mingw support + 2.02 (2015-01-19) fix incorrect assert, fix warning + 2.01 (2015-01-17) fix various warnings; suppress SIMD on gcc 32-bit without -msse2 + 2.00b (2014-12-25) fix STBI_MALLOC in progressive JPEG + 2.00 (2014-12-25) optimize JPG, including x86 SSE2 & NEON SIMD (ryg) + progressive JPEG (stb) + PGM/PPM support (Ken Miller) + STBI_MALLOC,STBI_REALLOC,STBI_FREE + GIF bugfix -- seemingly never worked + STBI_NO_*, STBI_ONLY_* + 1.48 (2014-12-14) fix incorrectly-named assert() + 1.47 (2014-12-14) 1/2/4-bit PNG support, both direct and paletted (Omar Cornut & stb) + optimize PNG (ryg) + fix bug in interlaced PNG with user-specified channel count (stb) + 1.46 (2014-08-26) + fix broken tRNS chunk (colorkey-style transparency) in non-paletted PNG + 1.45 (2014-08-16) + fix MSVC-ARM internal compiler error by wrapping malloc + 1.44 (2014-08-07) + various warning fixes from Ronny Chevalier + 1.43 (2014-07-15) + fix MSVC-only compiler problem in code changed in 1.42 + 1.42 (2014-07-09) + don't define _CRT_SECURE_NO_WARNINGS (affects user code) + fixes to stbi__cleanup_jpeg path + added STBI_ASSERT to avoid requiring assert.h + 1.41 (2014-06-25) + fix search&replace from 1.36 that messed up comments/error messages + 1.40 (2014-06-22) + fix gcc struct-initialization warning + 1.39 (2014-06-15) + fix to TGA optimization when req_comp != number of components in TGA; + fix to GIF loading because BMP wasn't rewinding (whoops, no GIFs in my test suite) + add support for BMP version 5 (more ignored fields) + 1.38 (2014-06-06) + suppress MSVC warnings on integer casts truncating values + fix accidental rename of 'skip' field of I/O + 1.37 (2014-06-04) + remove duplicate typedef + 1.36 (2014-06-03) + convert to header file single-file library + if de-iphone isn't set, load iphone images color-swapped instead of returning NULL + 1.35 (2014-05-27) + various warnings + fix broken STBI_SIMD path + fix bug where stbi_load_from_file no longer left file pointer in correct place + fix broken non-easy path for 32-bit BMP (possibly never used) + TGA optimization by Arseny Kapoulkine + 1.34 (unknown) + use STBI_NOTUSED in stbi__resample_row_generic(), fix one more leak in tga failure case + 1.33 (2011-07-14) + make stbi_is_hdr work in STBI_NO_HDR (as specified), minor compiler-friendly improvements + 1.32 (2011-07-13) + support for "info" function for all supported filetypes (SpartanJ) + 1.31 (2011-06-20) + a few more leak fixes, bug in PNG handling (SpartanJ) + 1.30 (2011-06-11) + added ability to load files via callbacks to accomidate custom input streams (Ben Wenger) + removed deprecated format-specific test/load functions + removed support for installable file formats (stbi_loader) -- would have been broken for IO callbacks anyway + error cases in bmp and tga give messages and don't leak (Raymond Barbiero, grisha) + fix inefficiency in decoding 32-bit BMP (David Woo) + 1.29 (2010-08-16) + various warning fixes from Aurelien Pocheville + 1.28 (2010-08-01) + fix bug in GIF palette transparency (SpartanJ) + 1.27 (2010-08-01) + cast-to-stbi_uc to fix warnings + 1.26 (2010-07-24) + fix bug in file buffering for PNG reported by SpartanJ + 1.25 (2010-07-17) + refix trans_data warning (Won Chun) + 1.24 (2010-07-12) + perf improvements reading from files on platforms with lock-heavy fgetc() + minor perf improvements for jpeg + deprecated type-specific functions so we'll get feedback if they're needed + attempt to fix trans_data warning (Won Chun) + 1.23 fixed bug in iPhone support + 1.22 (2010-07-10) + removed image *writing* support + stbi_info support from Jetro Lauha + GIF support from Jean-Marc Lienher + iPhone PNG-extensions from James Brown + warning-fixes from Nicolas Schulz and Janez Zemva (i.stbi__err. Janez (U+017D)emva) + 1.21 fix use of 'stbi_uc' in header (reported by jon blow) + 1.20 added support for Softimage PIC, by Tom Seddon + 1.19 bug in interlaced PNG corruption check (found by ryg) + 1.18 (2008-08-02) + fix a threading bug (local mutable static) + 1.17 support interlaced PNG + 1.16 major bugfix - stbi__convert_format converted one too many pixels + 1.15 initialize some fields for thread safety + 1.14 fix threadsafe conversion bug + header-file-only version (#define STBI_HEADER_FILE_ONLY before including) + 1.13 threadsafe + 1.12 const qualifiers in the API + 1.11 Support installable IDCT, colorspace conversion routines + 1.10 Fixes for 64-bit (don't use "unsigned long") + optimized upsampling by Fabian "ryg" Giesen + 1.09 Fix format-conversion for PSD code (bad global variables!) + 1.08 Thatcher Ulrich's PSD code integrated by Nicolas Schulz + 1.07 attempt to fix C++ warning/errors again + 1.06 attempt to fix C++ warning/errors again + 1.05 fix TGA loading to return correct *comp and use good luminance calc + 1.04 default float alpha is 1, not 255; use 'void *' for stbi_image_free + 1.03 bugfixes to STBI_NO_STDIO, STBI_NO_HDR + 1.02 support for (subset of) HDR files, float interface for preferred access to them + 1.01 fix bug: possible bug in handling right-side up bmps... not sure + fix bug: the stbi__bmp_load() and stbi__tga_load() functions didn't work at all + 1.00 interface to zlib that skips zlib header + 0.99 correct handling of alpha in palette + 0.98 TGA loader by lonesock; dynamically add loaders (untested) + 0.97 jpeg errors on too large a file; also catch another malloc failure + 0.96 fix detection of invalid v value - particleman@mollyrocket forum + 0.95 during header scan, seek to markers in case of padding + 0.94 STBI_NO_STDIO to disable stdio usage; rename all #defines the same + 0.93 handle jpegtran output; verbose errors + 0.92 read 4,8,16,24,32-bit BMP files of several formats + 0.91 output 24-bit Windows 3.0 BMP files + 0.90 fix a few more warnings; bump version number to approach 1.0 + 0.61 bugfixes due to Marc LeBlanc, Christopher Lloyd + 0.60 fix compiling as c++ + 0.59 fix warnings: merge Dave Moore's -Wall fixes + 0.58 fix bug: zlib uncompressed mode len/nlen was wrong endian + 0.57 fix bug: jpg last huffman symbol before marker was >9 bits but less than 16 available + 0.56 fix bug: zlib uncompressed mode len vs. nlen + 0.55 fix bug: restart_interval not initialized to 0 + 0.54 allow NULL for 'int *comp' + 0.53 fix bug in png 3->4; speedup png decoding + 0.52 png handles req_comp=3,4 directly; minor cleanup; jpeg comments + 0.51 obey req_comp requests, 1-component jpegs return as 1-component, + on 'test' only check type, not whether we support this variant + 0.50 (2006-11-19) + first released version +*/ + + +/* +------------------------------------------------------------------------------ +This software is available under 2 licenses -- choose whichever you prefer. +------------------------------------------------------------------------------ +ALTERNATIVE A - MIT License +Copyright (c) 2017 Sean Barrett +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies +of the Software, and to permit persons to whom the Software is furnished to do +so, subject to the following conditions: +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. +------------------------------------------------------------------------------ +ALTERNATIVE B - Public Domain (www.unlicense.org) +This is free and unencumbered software released into the public domain. +Anyone is free to copy, modify, publish, use, compile, sell, or distribute this +software, either in source code form or as a compiled binary, for any purpose, +commercial or non-commercial, and by any means. +In jurisdictions that recognize copyright laws, the author or authors of this +software dedicate any and all copyright interest in the software to the public +domain. We make this dedication for the benefit of the public at large and to +the detriment of our heirs and successors. We intend this dedication to be an +overt act of relinquishment in perpetuity of all present and future rights to +this software under copyright law. +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN +ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +------------------------------------------------------------------------------ +*/ diff --git a/include/stb/stb_image_resize.h b/include/stb/stb_image_resize.h new file mode 100644 index 0000000..ef9e6fe --- /dev/null +++ b/include/stb/stb_image_resize.h @@ -0,0 +1,2634 @@ +/* stb_image_resize - v0.97 - public domain image resizing + by Jorge L Rodriguez (@VinoBS) - 2014 + http://github.com/nothings/stb + + Written with emphasis on usability, portability, and efficiency. (No + SIMD or threads, so it be easily outperformed by libs that use those.) + Only scaling and translation is supported, no rotations or shears. + Easy API downsamples w/Mitchell filter, upsamples w/cubic interpolation. + + COMPILING & LINKING + In one C/C++ file that #includes this file, do this: + #define STB_IMAGE_RESIZE_IMPLEMENTATION + before the #include. That will create the implementation in that file. + + QUICKSTART + stbir_resize_uint8( input_pixels , in_w , in_h , 0, + output_pixels, out_w, out_h, 0, num_channels) + stbir_resize_float(...) + stbir_resize_uint8_srgb( input_pixels , in_w , in_h , 0, + output_pixels, out_w, out_h, 0, + num_channels , alpha_chan , 0) + stbir_resize_uint8_srgb_edgemode( + input_pixels , in_w , in_h , 0, + output_pixels, out_w, out_h, 0, + num_channels , alpha_chan , 0, STBIR_EDGE_CLAMP) + // WRAP/REFLECT/ZERO + + FULL API + See the "header file" section of the source for API documentation. + + ADDITIONAL DOCUMENTATION + + SRGB & FLOATING POINT REPRESENTATION + The sRGB functions presume IEEE floating point. If you do not have + IEEE floating point, define STBIR_NON_IEEE_FLOAT. This will use + a slower implementation. + + MEMORY ALLOCATION + The resize functions here perform a single memory allocation using + malloc. To control the memory allocation, before the #include that + triggers the implementation, do: + + #define STBIR_MALLOC(size,context) ... + #define STBIR_FREE(ptr,context) ... + + Each resize function makes exactly one call to malloc/free, so to use + temp memory, store the temp memory in the context and return that. + + ASSERT + Define STBIR_ASSERT(boolval) to override assert() and not use assert.h + + OPTIMIZATION + Define STBIR_SATURATE_INT to compute clamp values in-range using + integer operations instead of float operations. This may be faster + on some platforms. + + DEFAULT FILTERS + For functions which don't provide explicit control over what filters + to use, you can change the compile-time defaults with + + #define STBIR_DEFAULT_FILTER_UPSAMPLE STBIR_FILTER_something + #define STBIR_DEFAULT_FILTER_DOWNSAMPLE STBIR_FILTER_something + + See stbir_filter in the header-file section for the list of filters. + + NEW FILTERS + A number of 1D filter kernels are used. For a list of + supported filters see the stbir_filter enum. To add a new filter, + write a filter function and add it to stbir__filter_info_table. + + PROGRESS + For interactive use with slow resize operations, you can install + a progress-report callback: + + #define STBIR_PROGRESS_REPORT(val) some_func(val) + + The parameter val is a float which goes from 0 to 1 as progress is made. + + For example: + + static void my_progress_report(float progress); + #define STBIR_PROGRESS_REPORT(val) my_progress_report(val) + + #define STB_IMAGE_RESIZE_IMPLEMENTATION + #include "stb_image_resize.h" + + static void my_progress_report(float progress) + { + printf("Progress: %f%%\n", progress*100); + } + + MAX CHANNELS + If your image has more than 64 channels, define STBIR_MAX_CHANNELS + to the max you'll have. + + ALPHA CHANNEL + Most of the resizing functions provide the ability to control how + the alpha channel of an image is processed. The important things + to know about this: + + 1. The best mathematically-behaved version of alpha to use is + called "premultiplied alpha", in which the other color channels + have had the alpha value multiplied in. If you use premultiplied + alpha, linear filtering (such as image resampling done by this + library, or performed in texture units on GPUs) does the "right + thing". While premultiplied alpha is standard in the movie CGI + industry, it is still uncommon in the videogame/real-time world. + + If you linearly filter non-premultiplied alpha, strange effects + occur. (For example, the 50/50 average of 99% transparent bright green + and 1% transparent black produces 50% transparent dark green when + non-premultiplied, whereas premultiplied it produces 50% + transparent near-black. The former introduces green energy + that doesn't exist in the source image.) + + 2. Artists should not edit premultiplied-alpha images; artists + want non-premultiplied alpha images. Thus, art tools generally output + non-premultiplied alpha images. + + 3. You will get best results in most cases by converting images + to premultiplied alpha before processing them mathematically. + + 4. If you pass the flag STBIR_FLAG_ALPHA_PREMULTIPLIED, the + resizer does not do anything special for the alpha channel; + it is resampled identically to other channels. This produces + the correct results for premultiplied-alpha images, but produces + less-than-ideal results for non-premultiplied-alpha images. + + 5. If you do not pass the flag STBIR_FLAG_ALPHA_PREMULTIPLIED, + then the resizer weights the contribution of input pixels + based on their alpha values, or, equivalently, it multiplies + the alpha value into the color channels, resamples, then divides + by the resultant alpha value. Input pixels which have alpha=0 do + not contribute at all to output pixels unless _all_ of the input + pixels affecting that output pixel have alpha=0, in which case + the result for that pixel is the same as it would be without + STBIR_FLAG_ALPHA_PREMULTIPLIED. However, this is only true for + input images in integer formats. For input images in float format, + input pixels with alpha=0 have no effect, and output pixels + which have alpha=0 will be 0 in all channels. (For float images, + you can manually achieve the same result by adding a tiny epsilon + value to the alpha channel of every image, and then subtracting + or clamping it at the end.) + + 6. You can suppress the behavior described in #5 and make + all-0-alpha pixels have 0 in all channels by #defining + STBIR_NO_ALPHA_EPSILON. + + 7. You can separately control whether the alpha channel is + interpreted as linear or affected by the colorspace. By default + it is linear; you almost never want to apply the colorspace. + (For example, graphics hardware does not apply sRGB conversion + to the alpha channel.) + + CONTRIBUTORS + Jorge L Rodriguez: Implementation + Sean Barrett: API design, optimizations + Aras Pranckevicius: bugfix + Nathan Reed: warning fixes + + REVISIONS + 0.97 (2020-02-02) fixed warning + 0.96 (2019-03-04) fixed warnings + 0.95 (2017-07-23) fixed warnings + 0.94 (2017-03-18) fixed warnings + 0.93 (2017-03-03) fixed bug with certain combinations of heights + 0.92 (2017-01-02) fix integer overflow on large (>2GB) images + 0.91 (2016-04-02) fix warnings; fix handling of subpixel regions + 0.90 (2014-09-17) first released version + + LICENSE + See end of file for license information. + + TODO + Don't decode all of the image data when only processing a partial tile + Don't use full-width decode buffers when only processing a partial tile + When processing wide images, break processing into tiles so data fits in L1 cache + Installable filters? + Resize that respects alpha test coverage + (Reference code: FloatImage::alphaTestCoverage and FloatImage::scaleAlphaToCoverage: + https://code.google.com/p/nvidia-texture-tools/source/browse/trunk/src/nvimage/FloatImage.cpp ) +*/ + +#ifndef STBIR_INCLUDE_STB_IMAGE_RESIZE_H +#define STBIR_INCLUDE_STB_IMAGE_RESIZE_H + +#ifdef _MSC_VER +typedef unsigned char stbir_uint8; +typedef unsigned short stbir_uint16; +typedef unsigned int stbir_uint32; +#else +#include +typedef uint8_t stbir_uint8; +typedef uint16_t stbir_uint16; +typedef uint32_t stbir_uint32; +#endif + +#ifndef STBIRDEF +#ifdef STB_IMAGE_RESIZE_STATIC +#define STBIRDEF static +#else +#ifdef __cplusplus +#define STBIRDEF extern "C" +#else +#define STBIRDEF extern +#endif +#endif +#endif + +////////////////////////////////////////////////////////////////////////////// +// +// Easy-to-use API: +// +// * "input pixels" points to an array of image data with 'num_channels' channels (e.g. RGB=3, RGBA=4) +// * input_w is input image width (x-axis), input_h is input image height (y-axis) +// * stride is the offset between successive rows of image data in memory, in bytes. you can +// specify 0 to mean packed continuously in memory +// * alpha channel is treated identically to other channels. +// * colorspace is linear or sRGB as specified by function name +// * returned result is 1 for success or 0 in case of an error. +// #define STBIR_ASSERT() to trigger an assert on parameter validation errors. +// * Memory required grows approximately linearly with input and output size, but with +// discontinuities at input_w == output_w and input_h == output_h. +// * These functions use a "default" resampling filter defined at compile time. To change the filter, +// you can change the compile-time defaults by #defining STBIR_DEFAULT_FILTER_UPSAMPLE +// and STBIR_DEFAULT_FILTER_DOWNSAMPLE, or you can use the medium-complexity API. + +STBIRDEF int stbir_resize_uint8( const unsigned char *input_pixels , int input_w , int input_h , int input_stride_in_bytes, + unsigned char *output_pixels, int output_w, int output_h, int output_stride_in_bytes, + int num_channels); + +STBIRDEF int stbir_resize_float( const float *input_pixels , int input_w , int input_h , int input_stride_in_bytes, + float *output_pixels, int output_w, int output_h, int output_stride_in_bytes, + int num_channels); + + +// The following functions interpret image data as gamma-corrected sRGB. +// Specify STBIR_ALPHA_CHANNEL_NONE if you have no alpha channel, +// or otherwise provide the index of the alpha channel. Flags value +// of 0 will probably do the right thing if you're not sure what +// the flags mean. + +#define STBIR_ALPHA_CHANNEL_NONE -1 + +// Set this flag if your texture has premultiplied alpha. Otherwise, stbir will +// use alpha-weighted resampling (effectively premultiplying, resampling, +// then unpremultiplying). +#define STBIR_FLAG_ALPHA_PREMULTIPLIED (1 << 0) +// The specified alpha channel should be handled as gamma-corrected value even +// when doing sRGB operations. +#define STBIR_FLAG_ALPHA_USES_COLORSPACE (1 << 1) + +STBIRDEF int stbir_resize_uint8_srgb(const unsigned char *input_pixels , int input_w , int input_h , int input_stride_in_bytes, + unsigned char *output_pixels, int output_w, int output_h, int output_stride_in_bytes, + int num_channels, int alpha_channel, int flags); + + +typedef enum +{ + STBIR_EDGE_CLAMP = 1, + STBIR_EDGE_REFLECT = 2, + STBIR_EDGE_WRAP = 3, + STBIR_EDGE_ZERO = 4, +} stbir_edge; + +// This function adds the ability to specify how requests to sample off the edge of the image are handled. +STBIRDEF int stbir_resize_uint8_srgb_edgemode(const unsigned char *input_pixels , int input_w , int input_h , int input_stride_in_bytes, + unsigned char *output_pixels, int output_w, int output_h, int output_stride_in_bytes, + int num_channels, int alpha_channel, int flags, + stbir_edge edge_wrap_mode); + +////////////////////////////////////////////////////////////////////////////// +// +// Medium-complexity API +// +// This extends the easy-to-use API as follows: +// +// * Alpha-channel can be processed separately +// * If alpha_channel is not STBIR_ALPHA_CHANNEL_NONE +// * Alpha channel will not be gamma corrected (unless flags&STBIR_FLAG_GAMMA_CORRECT) +// * Filters will be weighted by alpha channel (unless flags&STBIR_FLAG_ALPHA_PREMULTIPLIED) +// * Filter can be selected explicitly +// * uint16 image type +// * sRGB colorspace available for all types +// * context parameter for passing to STBIR_MALLOC + +typedef enum +{ + STBIR_FILTER_DEFAULT = 0, // use same filter type that easy-to-use API chooses + STBIR_FILTER_BOX = 1, // A trapezoid w/1-pixel wide ramps, same result as box for integer scale ratios + STBIR_FILTER_TRIANGLE = 2, // On upsampling, produces same results as bilinear texture filtering + STBIR_FILTER_CUBICBSPLINE = 3, // The cubic b-spline (aka Mitchell-Netrevalli with B=1,C=0), gaussian-esque + STBIR_FILTER_CATMULLROM = 4, // An interpolating cubic spline + STBIR_FILTER_MITCHELL = 5, // Mitchell-Netrevalli filter with B=1/3, C=1/3 +} stbir_filter; + +typedef enum +{ + STBIR_COLORSPACE_LINEAR, + STBIR_COLORSPACE_SRGB, + + STBIR_MAX_COLORSPACES, +} stbir_colorspace; + +// The following functions are all identical except for the type of the image data + +STBIRDEF int stbir_resize_uint8_generic( const unsigned char *input_pixels , int input_w , int input_h , int input_stride_in_bytes, + unsigned char *output_pixels, int output_w, int output_h, int output_stride_in_bytes, + int num_channels, int alpha_channel, int flags, + stbir_edge edge_wrap_mode, stbir_filter filter, stbir_colorspace space, + void *alloc_context); + +STBIRDEF int stbir_resize_uint16_generic(const stbir_uint16 *input_pixels , int input_w , int input_h , int input_stride_in_bytes, + stbir_uint16 *output_pixels , int output_w, int output_h, int output_stride_in_bytes, + int num_channels, int alpha_channel, int flags, + stbir_edge edge_wrap_mode, stbir_filter filter, stbir_colorspace space, + void *alloc_context); + +STBIRDEF int stbir_resize_float_generic( const float *input_pixels , int input_w , int input_h , int input_stride_in_bytes, + float *output_pixels , int output_w, int output_h, int output_stride_in_bytes, + int num_channels, int alpha_channel, int flags, + stbir_edge edge_wrap_mode, stbir_filter filter, stbir_colorspace space, + void *alloc_context); + + + +////////////////////////////////////////////////////////////////////////////// +// +// Full-complexity API +// +// This extends the medium API as follows: +// +// * uint32 image type +// * not typesafe +// * separate filter types for each axis +// * separate edge modes for each axis +// * can specify scale explicitly for subpixel correctness +// * can specify image source tile using texture coordinates + +typedef enum +{ + STBIR_TYPE_UINT8 , + STBIR_TYPE_UINT16, + STBIR_TYPE_UINT32, + STBIR_TYPE_FLOAT , + + STBIR_MAX_TYPES +} stbir_datatype; + +STBIRDEF int stbir_resize( const void *input_pixels , int input_w , int input_h , int input_stride_in_bytes, + void *output_pixels, int output_w, int output_h, int output_stride_in_bytes, + stbir_datatype datatype, + int num_channels, int alpha_channel, int flags, + stbir_edge edge_mode_horizontal, stbir_edge edge_mode_vertical, + stbir_filter filter_horizontal, stbir_filter filter_vertical, + stbir_colorspace space, void *alloc_context); + +STBIRDEF int stbir_resize_subpixel(const void *input_pixels , int input_w , int input_h , int input_stride_in_bytes, + void *output_pixels, int output_w, int output_h, int output_stride_in_bytes, + stbir_datatype datatype, + int num_channels, int alpha_channel, int flags, + stbir_edge edge_mode_horizontal, stbir_edge edge_mode_vertical, + stbir_filter filter_horizontal, stbir_filter filter_vertical, + stbir_colorspace space, void *alloc_context, + float x_scale, float y_scale, + float x_offset, float y_offset); + +STBIRDEF int stbir_resize_region( const void *input_pixels , int input_w , int input_h , int input_stride_in_bytes, + void *output_pixels, int output_w, int output_h, int output_stride_in_bytes, + stbir_datatype datatype, + int num_channels, int alpha_channel, int flags, + stbir_edge edge_mode_horizontal, stbir_edge edge_mode_vertical, + stbir_filter filter_horizontal, stbir_filter filter_vertical, + stbir_colorspace space, void *alloc_context, + float s0, float t0, float s1, float t1); +// (s0, t0) & (s1, t1) are the top-left and bottom right corner (uv addressing style: [0, 1]x[0, 1]) of a region of the input image to use. + +// +// +//// end header file ///////////////////////////////////////////////////// +#endif // STBIR_INCLUDE_STB_IMAGE_RESIZE_H + + + + + +#ifdef STB_IMAGE_RESIZE_IMPLEMENTATION + +#ifndef STBIR_ASSERT +#include +#define STBIR_ASSERT(x) assert(x) +#endif + +// For memset +#include + +#include + +#ifndef STBIR_MALLOC +#include +// use comma operator to evaluate c, to avoid "unused parameter" warnings +#define STBIR_MALLOC(size,c) ((void)(c), malloc(size)) +#define STBIR_FREE(ptr,c) ((void)(c), free(ptr)) +#endif + +#ifndef _MSC_VER +#ifdef __cplusplus +#define stbir__inline inline +#else +#define stbir__inline +#endif +#else +#define stbir__inline __forceinline +#endif + + +// should produce compiler error if size is wrong +typedef unsigned char stbir__validate_uint32[sizeof(stbir_uint32) == 4 ? 1 : -1]; + +#ifdef _MSC_VER +#define STBIR__NOTUSED(v) (void)(v) +#else +#define STBIR__NOTUSED(v) (void)sizeof(v) +#endif + +#define STBIR__ARRAY_SIZE(a) (sizeof((a))/sizeof((a)[0])) + +#ifndef STBIR_DEFAULT_FILTER_UPSAMPLE +#define STBIR_DEFAULT_FILTER_UPSAMPLE STBIR_FILTER_CATMULLROM +#endif + +#ifndef STBIR_DEFAULT_FILTER_DOWNSAMPLE +#define STBIR_DEFAULT_FILTER_DOWNSAMPLE STBIR_FILTER_MITCHELL +#endif + +#ifndef STBIR_PROGRESS_REPORT +#define STBIR_PROGRESS_REPORT(float_0_to_1) +#endif + +#ifndef STBIR_MAX_CHANNELS +#define STBIR_MAX_CHANNELS 64 +#endif + +#if STBIR_MAX_CHANNELS > 65536 +#error "Too many channels; STBIR_MAX_CHANNELS must be no more than 65536." +// because we store the indices in 16-bit variables +#endif + +// This value is added to alpha just before premultiplication to avoid +// zeroing out color values. It is equivalent to 2^-80. If you don't want +// that behavior (it may interfere if you have floating point images with +// very small alpha values) then you can define STBIR_NO_ALPHA_EPSILON to +// disable it. +#ifndef STBIR_ALPHA_EPSILON +#define STBIR_ALPHA_EPSILON ((float)1 / (1 << 20) / (1 << 20) / (1 << 20) / (1 << 20)) +#endif + + + +#ifdef _MSC_VER +#define STBIR__UNUSED_PARAM(v) (void)(v) +#else +#define STBIR__UNUSED_PARAM(v) (void)sizeof(v) +#endif + +// must match stbir_datatype +static unsigned char stbir__type_size[] = { + 1, // STBIR_TYPE_UINT8 + 2, // STBIR_TYPE_UINT16 + 4, // STBIR_TYPE_UINT32 + 4, // STBIR_TYPE_FLOAT +}; + +// Kernel function centered at 0 +typedef float (stbir__kernel_fn)(float x, float scale); +typedef float (stbir__support_fn)(float scale); + +typedef struct +{ + stbir__kernel_fn* kernel; + stbir__support_fn* support; +} stbir__filter_info; + +// When upsampling, the contributors are which source pixels contribute. +// When downsampling, the contributors are which destination pixels are contributed to. +typedef struct +{ + int n0; // First contributing pixel + int n1; // Last contributing pixel +} stbir__contributors; + +typedef struct +{ + const void* input_data; + int input_w; + int input_h; + int input_stride_bytes; + + void* output_data; + int output_w; + int output_h; + int output_stride_bytes; + + float s0, t0, s1, t1; + + float horizontal_shift; // Units: output pixels + float vertical_shift; // Units: output pixels + float horizontal_scale; + float vertical_scale; + + int channels; + int alpha_channel; + stbir_uint32 flags; + stbir_datatype type; + stbir_filter horizontal_filter; + stbir_filter vertical_filter; + stbir_edge edge_horizontal; + stbir_edge edge_vertical; + stbir_colorspace colorspace; + + stbir__contributors* horizontal_contributors; + float* horizontal_coefficients; + + stbir__contributors* vertical_contributors; + float* vertical_coefficients; + + int decode_buffer_pixels; + float* decode_buffer; + + float* horizontal_buffer; + + // cache these because ceil/floor are inexplicably showing up in profile + int horizontal_coefficient_width; + int vertical_coefficient_width; + int horizontal_filter_pixel_width; + int vertical_filter_pixel_width; + int horizontal_filter_pixel_margin; + int vertical_filter_pixel_margin; + int horizontal_num_contributors; + int vertical_num_contributors; + + int ring_buffer_length_bytes; // The length of an individual entry in the ring buffer. The total number of ring buffers is stbir__get_filter_pixel_width(filter) + int ring_buffer_num_entries; // Total number of entries in the ring buffer. + int ring_buffer_first_scanline; + int ring_buffer_last_scanline; + int ring_buffer_begin_index; // first_scanline is at this index in the ring buffer + float* ring_buffer; + + float* encode_buffer; // A temporary buffer to store floats so we don't lose precision while we do multiply-adds. + + int horizontal_contributors_size; + int horizontal_coefficients_size; + int vertical_contributors_size; + int vertical_coefficients_size; + int decode_buffer_size; + int horizontal_buffer_size; + int ring_buffer_size; + int encode_buffer_size; +} stbir__info; + + +static const float stbir__max_uint8_as_float = 255.0f; +static const float stbir__max_uint16_as_float = 65535.0f; +static const double stbir__max_uint32_as_float = 4294967295.0; + + +static stbir__inline int stbir__min(int a, int b) +{ + return a < b ? a : b; +} + +static stbir__inline float stbir__saturate(float x) +{ + if (x < 0) + return 0; + + if (x > 1) + return 1; + + return x; +} + +#ifdef STBIR_SATURATE_INT +static stbir__inline stbir_uint8 stbir__saturate8(int x) +{ + if ((unsigned int) x <= 255) + return x; + + if (x < 0) + return 0; + + return 255; +} + +static stbir__inline stbir_uint16 stbir__saturate16(int x) +{ + if ((unsigned int) x <= 65535) + return x; + + if (x < 0) + return 0; + + return 65535; +} +#endif + +static float stbir__srgb_uchar_to_linear_float[256] = { + 0.000000f, 0.000304f, 0.000607f, 0.000911f, 0.001214f, 0.001518f, 0.001821f, 0.002125f, 0.002428f, 0.002732f, 0.003035f, + 0.003347f, 0.003677f, 0.004025f, 0.004391f, 0.004777f, 0.005182f, 0.005605f, 0.006049f, 0.006512f, 0.006995f, 0.007499f, + 0.008023f, 0.008568f, 0.009134f, 0.009721f, 0.010330f, 0.010960f, 0.011612f, 0.012286f, 0.012983f, 0.013702f, 0.014444f, + 0.015209f, 0.015996f, 0.016807f, 0.017642f, 0.018500f, 0.019382f, 0.020289f, 0.021219f, 0.022174f, 0.023153f, 0.024158f, + 0.025187f, 0.026241f, 0.027321f, 0.028426f, 0.029557f, 0.030713f, 0.031896f, 0.033105f, 0.034340f, 0.035601f, 0.036889f, + 0.038204f, 0.039546f, 0.040915f, 0.042311f, 0.043735f, 0.045186f, 0.046665f, 0.048172f, 0.049707f, 0.051269f, 0.052861f, + 0.054480f, 0.056128f, 0.057805f, 0.059511f, 0.061246f, 0.063010f, 0.064803f, 0.066626f, 0.068478f, 0.070360f, 0.072272f, + 0.074214f, 0.076185f, 0.078187f, 0.080220f, 0.082283f, 0.084376f, 0.086500f, 0.088656f, 0.090842f, 0.093059f, 0.095307f, + 0.097587f, 0.099899f, 0.102242f, 0.104616f, 0.107023f, 0.109462f, 0.111932f, 0.114435f, 0.116971f, 0.119538f, 0.122139f, + 0.124772f, 0.127438f, 0.130136f, 0.132868f, 0.135633f, 0.138432f, 0.141263f, 0.144128f, 0.147027f, 0.149960f, 0.152926f, + 0.155926f, 0.158961f, 0.162029f, 0.165132f, 0.168269f, 0.171441f, 0.174647f, 0.177888f, 0.181164f, 0.184475f, 0.187821f, + 0.191202f, 0.194618f, 0.198069f, 0.201556f, 0.205079f, 0.208637f, 0.212231f, 0.215861f, 0.219526f, 0.223228f, 0.226966f, + 0.230740f, 0.234551f, 0.238398f, 0.242281f, 0.246201f, 0.250158f, 0.254152f, 0.258183f, 0.262251f, 0.266356f, 0.270498f, + 0.274677f, 0.278894f, 0.283149f, 0.287441f, 0.291771f, 0.296138f, 0.300544f, 0.304987f, 0.309469f, 0.313989f, 0.318547f, + 0.323143f, 0.327778f, 0.332452f, 0.337164f, 0.341914f, 0.346704f, 0.351533f, 0.356400f, 0.361307f, 0.366253f, 0.371238f, + 0.376262f, 0.381326f, 0.386430f, 0.391573f, 0.396755f, 0.401978f, 0.407240f, 0.412543f, 0.417885f, 0.423268f, 0.428691f, + 0.434154f, 0.439657f, 0.445201f, 0.450786f, 0.456411f, 0.462077f, 0.467784f, 0.473532f, 0.479320f, 0.485150f, 0.491021f, + 0.496933f, 0.502887f, 0.508881f, 0.514918f, 0.520996f, 0.527115f, 0.533276f, 0.539480f, 0.545725f, 0.552011f, 0.558340f, + 0.564712f, 0.571125f, 0.577581f, 0.584078f, 0.590619f, 0.597202f, 0.603827f, 0.610496f, 0.617207f, 0.623960f, 0.630757f, + 0.637597f, 0.644480f, 0.651406f, 0.658375f, 0.665387f, 0.672443f, 0.679543f, 0.686685f, 0.693872f, 0.701102f, 0.708376f, + 0.715694f, 0.723055f, 0.730461f, 0.737911f, 0.745404f, 0.752942f, 0.760525f, 0.768151f, 0.775822f, 0.783538f, 0.791298f, + 0.799103f, 0.806952f, 0.814847f, 0.822786f, 0.830770f, 0.838799f, 0.846873f, 0.854993f, 0.863157f, 0.871367f, 0.879622f, + 0.887923f, 0.896269f, 0.904661f, 0.913099f, 0.921582f, 0.930111f, 0.938686f, 0.947307f, 0.955974f, 0.964686f, 0.973445f, + 0.982251f, 0.991102f, 1.0f +}; + +static float stbir__srgb_to_linear(float f) +{ + if (f <= 0.04045f) + return f / 12.92f; + else + return (float)pow((f + 0.055f) / 1.055f, 2.4f); +} + +static float stbir__linear_to_srgb(float f) +{ + if (f <= 0.0031308f) + return f * 12.92f; + else + return 1.055f * (float)pow(f, 1 / 2.4f) - 0.055f; +} + +#ifndef STBIR_NON_IEEE_FLOAT +// From https://gist.github.com/rygorous/2203834 + +typedef union +{ + stbir_uint32 u; + float f; +} stbir__FP32; + +static const stbir_uint32 fp32_to_srgb8_tab4[104] = { + 0x0073000d, 0x007a000d, 0x0080000d, 0x0087000d, 0x008d000d, 0x0094000d, 0x009a000d, 0x00a1000d, + 0x00a7001a, 0x00b4001a, 0x00c1001a, 0x00ce001a, 0x00da001a, 0x00e7001a, 0x00f4001a, 0x0101001a, + 0x010e0033, 0x01280033, 0x01410033, 0x015b0033, 0x01750033, 0x018f0033, 0x01a80033, 0x01c20033, + 0x01dc0067, 0x020f0067, 0x02430067, 0x02760067, 0x02aa0067, 0x02dd0067, 0x03110067, 0x03440067, + 0x037800ce, 0x03df00ce, 0x044600ce, 0x04ad00ce, 0x051400ce, 0x057b00c5, 0x05dd00bc, 0x063b00b5, + 0x06970158, 0x07420142, 0x07e30130, 0x087b0120, 0x090b0112, 0x09940106, 0x0a1700fc, 0x0a9500f2, + 0x0b0f01cb, 0x0bf401ae, 0x0ccb0195, 0x0d950180, 0x0e56016e, 0x0f0d015e, 0x0fbc0150, 0x10630143, + 0x11070264, 0x1238023e, 0x1357021d, 0x14660201, 0x156601e9, 0x165a01d3, 0x174401c0, 0x182401af, + 0x18fe0331, 0x1a9602fe, 0x1c1502d2, 0x1d7e02ad, 0x1ed4028d, 0x201a0270, 0x21520256, 0x227d0240, + 0x239f0443, 0x25c003fe, 0x27bf03c4, 0x29a10392, 0x2b6a0367, 0x2d1d0341, 0x2ebe031f, 0x304d0300, + 0x31d105b0, 0x34a80555, 0x37520507, 0x39d504c5, 0x3c37048b, 0x3e7c0458, 0x40a8042a, 0x42bd0401, + 0x44c20798, 0x488e071e, 0x4c1c06b6, 0x4f76065d, 0x52a50610, 0x55ac05cc, 0x5892058f, 0x5b590559, + 0x5e0c0a23, 0x631c0980, 0x67db08f6, 0x6c55087f, 0x70940818, 0x74a007bd, 0x787d076c, 0x7c330723, +}; + +static stbir_uint8 stbir__linear_to_srgb_uchar(float in) +{ + static const stbir__FP32 almostone = { 0x3f7fffff }; // 1-eps + static const stbir__FP32 minval = { (127-13) << 23 }; + stbir_uint32 tab,bias,scale,t; + stbir__FP32 f; + + // Clamp to [2^(-13), 1-eps]; these two values map to 0 and 1, respectively. + // The tests are carefully written so that NaNs map to 0, same as in the reference + // implementation. + if (!(in > minval.f)) // written this way to catch NaNs + in = minval.f; + if (in > almostone.f) + in = almostone.f; + + // Do the table lookup and unpack bias, scale + f.f = in; + tab = fp32_to_srgb8_tab4[(f.u - minval.u) >> 20]; + bias = (tab >> 16) << 9; + scale = tab & 0xffff; + + // Grab next-highest mantissa bits and perform linear interpolation + t = (f.u >> 12) & 0xff; + return (unsigned char) ((bias + scale*t) >> 16); +} + +#else +// sRGB transition values, scaled by 1<<28 +static int stbir__srgb_offset_to_linear_scaled[256] = +{ + 0, 40738, 122216, 203693, 285170, 366648, 448125, 529603, + 611080, 692557, 774035, 855852, 942009, 1033024, 1128971, 1229926, + 1335959, 1447142, 1563542, 1685229, 1812268, 1944725, 2082664, 2226148, + 2375238, 2529996, 2690481, 2856753, 3028870, 3206888, 3390865, 3580856, + 3776916, 3979100, 4187460, 4402049, 4622919, 4850123, 5083710, 5323731, + 5570236, 5823273, 6082892, 6349140, 6622065, 6901714, 7188133, 7481369, + 7781466, 8088471, 8402427, 8723380, 9051372, 9386448, 9728650, 10078021, + 10434603, 10798439, 11169569, 11548036, 11933879, 12327139, 12727857, 13136073, + 13551826, 13975156, 14406100, 14844697, 15290987, 15745007, 16206795, 16676389, + 17153826, 17639142, 18132374, 18633560, 19142734, 19659934, 20185196, 20718552, + 21260042, 21809696, 22367554, 22933648, 23508010, 24090680, 24681686, 25281066, + 25888850, 26505076, 27129772, 27762974, 28404716, 29055026, 29713942, 30381490, + 31057708, 31742624, 32436272, 33138682, 33849884, 34569912, 35298800, 36036568, + 36783260, 37538896, 38303512, 39077136, 39859796, 40651528, 41452360, 42262316, + 43081432, 43909732, 44747252, 45594016, 46450052, 47315392, 48190064, 49074096, + 49967516, 50870356, 51782636, 52704392, 53635648, 54576432, 55526772, 56486700, + 57456236, 58435408, 59424248, 60422780, 61431036, 62449032, 63476804, 64514376, + 65561776, 66619028, 67686160, 68763192, 69850160, 70947088, 72053992, 73170912, + 74297864, 75434880, 76581976, 77739184, 78906536, 80084040, 81271736, 82469648, + 83677792, 84896192, 86124888, 87363888, 88613232, 89872928, 91143016, 92423512, + 93714432, 95015816, 96327688, 97650056, 98982952, 100326408, 101680440, 103045072, + 104420320, 105806224, 107202800, 108610064, 110028048, 111456776, 112896264, 114346544, + 115807632, 117279552, 118762328, 120255976, 121760536, 123276016, 124802440, 126339832, + 127888216, 129447616, 131018048, 132599544, 134192112, 135795792, 137410592, 139036528, + 140673648, 142321952, 143981456, 145652208, 147334208, 149027488, 150732064, 152447968, + 154175200, 155913792, 157663776, 159425168, 161197984, 162982240, 164777968, 166585184, + 168403904, 170234160, 172075968, 173929344, 175794320, 177670896, 179559120, 181458992, + 183370528, 185293776, 187228736, 189175424, 191133888, 193104112, 195086128, 197079968, + 199085648, 201103184, 203132592, 205173888, 207227120, 209292272, 211369392, 213458480, + 215559568, 217672656, 219797792, 221934976, 224084240, 226245600, 228419056, 230604656, + 232802400, 235012320, 237234432, 239468736, 241715280, 243974080, 246245120, 248528464, + 250824112, 253132064, 255452368, 257785040, 260130080, 262487520, 264857376, 267239664, +}; + +static stbir_uint8 stbir__linear_to_srgb_uchar(float f) +{ + int x = (int) (f * (1 << 28)); // has headroom so you don't need to clamp + int v = 0; + int i; + + // Refine the guess with a short binary search. + i = v + 128; if (x >= stbir__srgb_offset_to_linear_scaled[i]) v = i; + i = v + 64; if (x >= stbir__srgb_offset_to_linear_scaled[i]) v = i; + i = v + 32; if (x >= stbir__srgb_offset_to_linear_scaled[i]) v = i; + i = v + 16; if (x >= stbir__srgb_offset_to_linear_scaled[i]) v = i; + i = v + 8; if (x >= stbir__srgb_offset_to_linear_scaled[i]) v = i; + i = v + 4; if (x >= stbir__srgb_offset_to_linear_scaled[i]) v = i; + i = v + 2; if (x >= stbir__srgb_offset_to_linear_scaled[i]) v = i; + i = v + 1; if (x >= stbir__srgb_offset_to_linear_scaled[i]) v = i; + + return (stbir_uint8) v; +} +#endif + +static float stbir__filter_trapezoid(float x, float scale) +{ + float halfscale = scale / 2; + float t = 0.5f + halfscale; + STBIR_ASSERT(scale <= 1); + + x = (float)fabs(x); + + if (x >= t) + return 0; + else + { + float r = 0.5f - halfscale; + if (x <= r) + return 1; + else + return (t - x) / scale; + } +} + +static float stbir__support_trapezoid(float scale) +{ + STBIR_ASSERT(scale <= 1); + return 0.5f + scale / 2; +} + +static float stbir__filter_triangle(float x, float s) +{ + STBIR__UNUSED_PARAM(s); + + x = (float)fabs(x); + + if (x <= 1.0f) + return 1 - x; + else + return 0; +} + +static float stbir__filter_cubic(float x, float s) +{ + STBIR__UNUSED_PARAM(s); + + x = (float)fabs(x); + + if (x < 1.0f) + return (4 + x*x*(3*x - 6))/6; + else if (x < 2.0f) + return (8 + x*(-12 + x*(6 - x)))/6; + + return (0.0f); +} + +static float stbir__filter_catmullrom(float x, float s) +{ + STBIR__UNUSED_PARAM(s); + + x = (float)fabs(x); + + if (x < 1.0f) + return 1 - x*x*(2.5f - 1.5f*x); + else if (x < 2.0f) + return 2 - x*(4 + x*(0.5f*x - 2.5f)); + + return (0.0f); +} + +static float stbir__filter_mitchell(float x, float s) +{ + STBIR__UNUSED_PARAM(s); + + x = (float)fabs(x); + + if (x < 1.0f) + return (16 + x*x*(21 * x - 36))/18; + else if (x < 2.0f) + return (32 + x*(-60 + x*(36 - 7*x)))/18; + + return (0.0f); +} + +static float stbir__support_zero(float s) +{ + STBIR__UNUSED_PARAM(s); + return 0; +} + +static float stbir__support_one(float s) +{ + STBIR__UNUSED_PARAM(s); + return 1; +} + +static float stbir__support_two(float s) +{ + STBIR__UNUSED_PARAM(s); + return 2; +} + +static stbir__filter_info stbir__filter_info_table[] = { + { NULL, stbir__support_zero }, + { stbir__filter_trapezoid, stbir__support_trapezoid }, + { stbir__filter_triangle, stbir__support_one }, + { stbir__filter_cubic, stbir__support_two }, + { stbir__filter_catmullrom, stbir__support_two }, + { stbir__filter_mitchell, stbir__support_two }, +}; + +stbir__inline static int stbir__use_upsampling(float ratio) +{ + return ratio > 1; +} + +stbir__inline static int stbir__use_width_upsampling(stbir__info* stbir_info) +{ + return stbir__use_upsampling(stbir_info->horizontal_scale); +} + +stbir__inline static int stbir__use_height_upsampling(stbir__info* stbir_info) +{ + return stbir__use_upsampling(stbir_info->vertical_scale); +} + +// This is the maximum number of input samples that can affect an output sample +// with the given filter +static int stbir__get_filter_pixel_width(stbir_filter filter, float scale) +{ + STBIR_ASSERT(filter != 0); + STBIR_ASSERT(filter < STBIR__ARRAY_SIZE(stbir__filter_info_table)); + + if (stbir__use_upsampling(scale)) + return (int)ceil(stbir__filter_info_table[filter].support(1/scale) * 2); + else + return (int)ceil(stbir__filter_info_table[filter].support(scale) * 2 / scale); +} + +// This is how much to expand buffers to account for filters seeking outside +// the image boundaries. +static int stbir__get_filter_pixel_margin(stbir_filter filter, float scale) +{ + return stbir__get_filter_pixel_width(filter, scale) / 2; +} + +static int stbir__get_coefficient_width(stbir_filter filter, float scale) +{ + if (stbir__use_upsampling(scale)) + return (int)ceil(stbir__filter_info_table[filter].support(1 / scale) * 2); + else + return (int)ceil(stbir__filter_info_table[filter].support(scale) * 2); +} + +static int stbir__get_contributors(float scale, stbir_filter filter, int input_size, int output_size) +{ + if (stbir__use_upsampling(scale)) + return output_size; + else + return (input_size + stbir__get_filter_pixel_margin(filter, scale) * 2); +} + +static int stbir__get_total_horizontal_coefficients(stbir__info* info) +{ + return info->horizontal_num_contributors + * stbir__get_coefficient_width (info->horizontal_filter, info->horizontal_scale); +} + +static int stbir__get_total_vertical_coefficients(stbir__info* info) +{ + return info->vertical_num_contributors + * stbir__get_coefficient_width (info->vertical_filter, info->vertical_scale); +} + +static stbir__contributors* stbir__get_contributor(stbir__contributors* contributors, int n) +{ + return &contributors[n]; +} + +// For perf reasons this code is duplicated in stbir__resample_horizontal_upsample/downsample, +// if you change it here change it there too. +static float* stbir__get_coefficient(float* coefficients, stbir_filter filter, float scale, int n, int c) +{ + int width = stbir__get_coefficient_width(filter, scale); + return &coefficients[width*n + c]; +} + +static int stbir__edge_wrap_slow(stbir_edge edge, int n, int max) +{ + switch (edge) + { + case STBIR_EDGE_ZERO: + return 0; // we'll decode the wrong pixel here, and then overwrite with 0s later + + case STBIR_EDGE_CLAMP: + if (n < 0) + return 0; + + if (n >= max) + return max - 1; + + return n; // NOTREACHED + + case STBIR_EDGE_REFLECT: + { + if (n < 0) + { + if (n < max) + return -n; + else + return max - 1; + } + + if (n >= max) + { + int max2 = max * 2; + if (n >= max2) + return 0; + else + return max2 - n - 1; + } + + return n; // NOTREACHED + } + + case STBIR_EDGE_WRAP: + if (n >= 0) + return (n % max); + else + { + int m = (-n) % max; + + if (m != 0) + m = max - m; + + return (m); + } + // NOTREACHED + + default: + STBIR_ASSERT(!"Unimplemented edge type"); + return 0; + } +} + +stbir__inline static int stbir__edge_wrap(stbir_edge edge, int n, int max) +{ + // avoid per-pixel switch + if (n >= 0 && n < max) + return n; + return stbir__edge_wrap_slow(edge, n, max); +} + +// What input pixels contribute to this output pixel? +static void stbir__calculate_sample_range_upsample(int n, float out_filter_radius, float scale_ratio, float out_shift, int* in_first_pixel, int* in_last_pixel, float* in_center_of_out) +{ + float out_pixel_center = (float)n + 0.5f; + float out_pixel_influence_lowerbound = out_pixel_center - out_filter_radius; + float out_pixel_influence_upperbound = out_pixel_center + out_filter_radius; + + float in_pixel_influence_lowerbound = (out_pixel_influence_lowerbound + out_shift) / scale_ratio; + float in_pixel_influence_upperbound = (out_pixel_influence_upperbound + out_shift) / scale_ratio; + + *in_center_of_out = (out_pixel_center + out_shift) / scale_ratio; + *in_first_pixel = (int)(floor(in_pixel_influence_lowerbound + 0.5)); + *in_last_pixel = (int)(floor(in_pixel_influence_upperbound - 0.5)); +} + +// What output pixels does this input pixel contribute to? +static void stbir__calculate_sample_range_downsample(int n, float in_pixels_radius, float scale_ratio, float out_shift, int* out_first_pixel, int* out_last_pixel, float* out_center_of_in) +{ + float in_pixel_center = (float)n + 0.5f; + float in_pixel_influence_lowerbound = in_pixel_center - in_pixels_radius; + float in_pixel_influence_upperbound = in_pixel_center + in_pixels_radius; + + float out_pixel_influence_lowerbound = in_pixel_influence_lowerbound * scale_ratio - out_shift; + float out_pixel_influence_upperbound = in_pixel_influence_upperbound * scale_ratio - out_shift; + + *out_center_of_in = in_pixel_center * scale_ratio - out_shift; + *out_first_pixel = (int)(floor(out_pixel_influence_lowerbound + 0.5)); + *out_last_pixel = (int)(floor(out_pixel_influence_upperbound - 0.5)); +} + +static void stbir__calculate_coefficients_upsample(stbir_filter filter, float scale, int in_first_pixel, int in_last_pixel, float in_center_of_out, stbir__contributors* contributor, float* coefficient_group) +{ + int i; + float total_filter = 0; + float filter_scale; + + STBIR_ASSERT(in_last_pixel - in_first_pixel <= (int)ceil(stbir__filter_info_table[filter].support(1/scale) * 2)); // Taken directly from stbir__get_coefficient_width() which we can't call because we don't know if we're horizontal or vertical. + + contributor->n0 = in_first_pixel; + contributor->n1 = in_last_pixel; + + STBIR_ASSERT(contributor->n1 >= contributor->n0); + + for (i = 0; i <= in_last_pixel - in_first_pixel; i++) + { + float in_pixel_center = (float)(i + in_first_pixel) + 0.5f; + coefficient_group[i] = stbir__filter_info_table[filter].kernel(in_center_of_out - in_pixel_center, 1 / scale); + + // If the coefficient is zero, skip it. (Don't do the <0 check here, we want the influence of those outside pixels.) + if (i == 0 && !coefficient_group[i]) + { + contributor->n0 = ++in_first_pixel; + i--; + continue; + } + + total_filter += coefficient_group[i]; + } + + // NOTE(fg): Not actually true in general, nor is there any reason to expect it should be. + // It would be true in exact math but is at best approximately true in floating-point math, + // and it would not make sense to try and put actual bounds on this here because it depends + // on the image aspect ratio which can get pretty extreme. + //STBIR_ASSERT(stbir__filter_info_table[filter].kernel((float)(in_last_pixel + 1) + 0.5f - in_center_of_out, 1/scale) == 0); + + STBIR_ASSERT(total_filter > 0.9); + STBIR_ASSERT(total_filter < 1.1f); // Make sure it's not way off. + + // Make sure the sum of all coefficients is 1. + filter_scale = 1 / total_filter; + + for (i = 0; i <= in_last_pixel - in_first_pixel; i++) + coefficient_group[i] *= filter_scale; + + for (i = in_last_pixel - in_first_pixel; i >= 0; i--) + { + if (coefficient_group[i]) + break; + + // This line has no weight. We can skip it. + contributor->n1 = contributor->n0 + i - 1; + } +} + +static void stbir__calculate_coefficients_downsample(stbir_filter filter, float scale_ratio, int out_first_pixel, int out_last_pixel, float out_center_of_in, stbir__contributors* contributor, float* coefficient_group) +{ + int i; + + STBIR_ASSERT(out_last_pixel - out_first_pixel <= (int)ceil(stbir__filter_info_table[filter].support(scale_ratio) * 2)); // Taken directly from stbir__get_coefficient_width() which we can't call because we don't know if we're horizontal or vertical. + + contributor->n0 = out_first_pixel; + contributor->n1 = out_last_pixel; + + STBIR_ASSERT(contributor->n1 >= contributor->n0); + + for (i = 0; i <= out_last_pixel - out_first_pixel; i++) + { + float out_pixel_center = (float)(i + out_first_pixel) + 0.5f; + float x = out_pixel_center - out_center_of_in; + coefficient_group[i] = stbir__filter_info_table[filter].kernel(x, scale_ratio) * scale_ratio; + } + + // NOTE(fg): Not actually true in general, nor is there any reason to expect it should be. + // It would be true in exact math but is at best approximately true in floating-point math, + // and it would not make sense to try and put actual bounds on this here because it depends + // on the image aspect ratio which can get pretty extreme. + //STBIR_ASSERT(stbir__filter_info_table[filter].kernel((float)(out_last_pixel + 1) + 0.5f - out_center_of_in, scale_ratio) == 0); + + for (i = out_last_pixel - out_first_pixel; i >= 0; i--) + { + if (coefficient_group[i]) + break; + + // This line has no weight. We can skip it. + contributor->n1 = contributor->n0 + i - 1; + } +} + +static void stbir__normalize_downsample_coefficients(stbir__contributors* contributors, float* coefficients, stbir_filter filter, float scale_ratio, int input_size, int output_size) +{ + int num_contributors = stbir__get_contributors(scale_ratio, filter, input_size, output_size); + int num_coefficients = stbir__get_coefficient_width(filter, scale_ratio); + int i, j; + int skip; + + for (i = 0; i < output_size; i++) + { + float scale; + float total = 0; + + for (j = 0; j < num_contributors; j++) + { + if (i >= contributors[j].n0 && i <= contributors[j].n1) + { + float coefficient = *stbir__get_coefficient(coefficients, filter, scale_ratio, j, i - contributors[j].n0); + total += coefficient; + } + else if (i < contributors[j].n0) + break; + } + + STBIR_ASSERT(total > 0.9f); + STBIR_ASSERT(total < 1.1f); + + scale = 1 / total; + + for (j = 0; j < num_contributors; j++) + { + if (i >= contributors[j].n0 && i <= contributors[j].n1) + *stbir__get_coefficient(coefficients, filter, scale_ratio, j, i - contributors[j].n0) *= scale; + else if (i < contributors[j].n0) + break; + } + } + + // Optimize: Skip zero coefficients and contributions outside of image bounds. + // Do this after normalizing because normalization depends on the n0/n1 values. + for (j = 0; j < num_contributors; j++) + { + int range, max, width; + + skip = 0; + while (*stbir__get_coefficient(coefficients, filter, scale_ratio, j, skip) == 0) + skip++; + + contributors[j].n0 += skip; + + while (contributors[j].n0 < 0) + { + contributors[j].n0++; + skip++; + } + + range = contributors[j].n1 - contributors[j].n0 + 1; + max = stbir__min(num_coefficients, range); + + width = stbir__get_coefficient_width(filter, scale_ratio); + for (i = 0; i < max; i++) + { + if (i + skip >= width) + break; + + *stbir__get_coefficient(coefficients, filter, scale_ratio, j, i) = *stbir__get_coefficient(coefficients, filter, scale_ratio, j, i + skip); + } + + continue; + } + + // Using min to avoid writing into invalid pixels. + for (i = 0; i < num_contributors; i++) + contributors[i].n1 = stbir__min(contributors[i].n1, output_size - 1); +} + +// Each scan line uses the same kernel values so we should calculate the kernel +// values once and then we can use them for every scan line. +static void stbir__calculate_filters(stbir__contributors* contributors, float* coefficients, stbir_filter filter, float scale_ratio, float shift, int input_size, int output_size) +{ + int n; + int total_contributors = stbir__get_contributors(scale_ratio, filter, input_size, output_size); + + if (stbir__use_upsampling(scale_ratio)) + { + float out_pixels_radius = stbir__filter_info_table[filter].support(1 / scale_ratio) * scale_ratio; + + // Looping through out pixels + for (n = 0; n < total_contributors; n++) + { + float in_center_of_out; // Center of the current out pixel in the in pixel space + int in_first_pixel, in_last_pixel; + + stbir__calculate_sample_range_upsample(n, out_pixels_radius, scale_ratio, shift, &in_first_pixel, &in_last_pixel, &in_center_of_out); + + stbir__calculate_coefficients_upsample(filter, scale_ratio, in_first_pixel, in_last_pixel, in_center_of_out, stbir__get_contributor(contributors, n), stbir__get_coefficient(coefficients, filter, scale_ratio, n, 0)); + } + } + else + { + float in_pixels_radius = stbir__filter_info_table[filter].support(scale_ratio) / scale_ratio; + + // Looping through in pixels + for (n = 0; n < total_contributors; n++) + { + float out_center_of_in; // Center of the current out pixel in the in pixel space + int out_first_pixel, out_last_pixel; + int n_adjusted = n - stbir__get_filter_pixel_margin(filter, scale_ratio); + + stbir__calculate_sample_range_downsample(n_adjusted, in_pixels_radius, scale_ratio, shift, &out_first_pixel, &out_last_pixel, &out_center_of_in); + + stbir__calculate_coefficients_downsample(filter, scale_ratio, out_first_pixel, out_last_pixel, out_center_of_in, stbir__get_contributor(contributors, n), stbir__get_coefficient(coefficients, filter, scale_ratio, n, 0)); + } + + stbir__normalize_downsample_coefficients(contributors, coefficients, filter, scale_ratio, input_size, output_size); + } +} + +static float* stbir__get_decode_buffer(stbir__info* stbir_info) +{ + // The 0 index of the decode buffer starts after the margin. This makes + // it okay to use negative indexes on the decode buffer. + return &stbir_info->decode_buffer[stbir_info->horizontal_filter_pixel_margin * stbir_info->channels]; +} + +#define STBIR__DECODE(type, colorspace) ((int)(type) * (STBIR_MAX_COLORSPACES) + (int)(colorspace)) + +static void stbir__decode_scanline(stbir__info* stbir_info, int n) +{ + int c; + int channels = stbir_info->channels; + int alpha_channel = stbir_info->alpha_channel; + int type = stbir_info->type; + int colorspace = stbir_info->colorspace; + int input_w = stbir_info->input_w; + size_t input_stride_bytes = stbir_info->input_stride_bytes; + float* decode_buffer = stbir__get_decode_buffer(stbir_info); + stbir_edge edge_horizontal = stbir_info->edge_horizontal; + stbir_edge edge_vertical = stbir_info->edge_vertical; + size_t in_buffer_row_offset = stbir__edge_wrap(edge_vertical, n, stbir_info->input_h) * input_stride_bytes; + const void* input_data = (char *) stbir_info->input_data + in_buffer_row_offset; + int max_x = input_w + stbir_info->horizontal_filter_pixel_margin; + int decode = STBIR__DECODE(type, colorspace); + + int x = -stbir_info->horizontal_filter_pixel_margin; + + // special handling for STBIR_EDGE_ZERO because it needs to return an item that doesn't appear in the input, + // and we want to avoid paying overhead on every pixel if not STBIR_EDGE_ZERO + if (edge_vertical == STBIR_EDGE_ZERO && (n < 0 || n >= stbir_info->input_h)) + { + for (; x < max_x; x++) + for (c = 0; c < channels; c++) + decode_buffer[x*channels + c] = 0; + return; + } + + switch (decode) + { + case STBIR__DECODE(STBIR_TYPE_UINT8, STBIR_COLORSPACE_LINEAR): + for (; x < max_x; x++) + { + int decode_pixel_index = x * channels; + int input_pixel_index = stbir__edge_wrap(edge_horizontal, x, input_w) * channels; + for (c = 0; c < channels; c++) + decode_buffer[decode_pixel_index + c] = ((float)((const unsigned char*)input_data)[input_pixel_index + c]) / stbir__max_uint8_as_float; + } + break; + + case STBIR__DECODE(STBIR_TYPE_UINT8, STBIR_COLORSPACE_SRGB): + for (; x < max_x; x++) + { + int decode_pixel_index = x * channels; + int input_pixel_index = stbir__edge_wrap(edge_horizontal, x, input_w) * channels; + for (c = 0; c < channels; c++) + decode_buffer[decode_pixel_index + c] = stbir__srgb_uchar_to_linear_float[((const unsigned char*)input_data)[input_pixel_index + c]]; + + if (!(stbir_info->flags&STBIR_FLAG_ALPHA_USES_COLORSPACE)) + decode_buffer[decode_pixel_index + alpha_channel] = ((float)((const unsigned char*)input_data)[input_pixel_index + alpha_channel]) / stbir__max_uint8_as_float; + } + break; + + case STBIR__DECODE(STBIR_TYPE_UINT16, STBIR_COLORSPACE_LINEAR): + for (; x < max_x; x++) + { + int decode_pixel_index = x * channels; + int input_pixel_index = stbir__edge_wrap(edge_horizontal, x, input_w) * channels; + for (c = 0; c < channels; c++) + decode_buffer[decode_pixel_index + c] = ((float)((const unsigned short*)input_data)[input_pixel_index + c]) / stbir__max_uint16_as_float; + } + break; + + case STBIR__DECODE(STBIR_TYPE_UINT16, STBIR_COLORSPACE_SRGB): + for (; x < max_x; x++) + { + int decode_pixel_index = x * channels; + int input_pixel_index = stbir__edge_wrap(edge_horizontal, x, input_w) * channels; + for (c = 0; c < channels; c++) + decode_buffer[decode_pixel_index + c] = stbir__srgb_to_linear(((float)((const unsigned short*)input_data)[input_pixel_index + c]) / stbir__max_uint16_as_float); + + if (!(stbir_info->flags&STBIR_FLAG_ALPHA_USES_COLORSPACE)) + decode_buffer[decode_pixel_index + alpha_channel] = ((float)((const unsigned short*)input_data)[input_pixel_index + alpha_channel]) / stbir__max_uint16_as_float; + } + break; + + case STBIR__DECODE(STBIR_TYPE_UINT32, STBIR_COLORSPACE_LINEAR): + for (; x < max_x; x++) + { + int decode_pixel_index = x * channels; + int input_pixel_index = stbir__edge_wrap(edge_horizontal, x, input_w) * channels; + for (c = 0; c < channels; c++) + decode_buffer[decode_pixel_index + c] = (float)(((double)((const unsigned int*)input_data)[input_pixel_index + c]) / stbir__max_uint32_as_float); + } + break; + + case STBIR__DECODE(STBIR_TYPE_UINT32, STBIR_COLORSPACE_SRGB): + for (; x < max_x; x++) + { + int decode_pixel_index = x * channels; + int input_pixel_index = stbir__edge_wrap(edge_horizontal, x, input_w) * channels; + for (c = 0; c < channels; c++) + decode_buffer[decode_pixel_index + c] = stbir__srgb_to_linear((float)(((double)((const unsigned int*)input_data)[input_pixel_index + c]) / stbir__max_uint32_as_float)); + + if (!(stbir_info->flags&STBIR_FLAG_ALPHA_USES_COLORSPACE)) + decode_buffer[decode_pixel_index + alpha_channel] = (float)(((double)((const unsigned int*)input_data)[input_pixel_index + alpha_channel]) / stbir__max_uint32_as_float); + } + break; + + case STBIR__DECODE(STBIR_TYPE_FLOAT, STBIR_COLORSPACE_LINEAR): + for (; x < max_x; x++) + { + int decode_pixel_index = x * channels; + int input_pixel_index = stbir__edge_wrap(edge_horizontal, x, input_w) * channels; + for (c = 0; c < channels; c++) + decode_buffer[decode_pixel_index + c] = ((const float*)input_data)[input_pixel_index + c]; + } + break; + + case STBIR__DECODE(STBIR_TYPE_FLOAT, STBIR_COLORSPACE_SRGB): + for (; x < max_x; x++) + { + int decode_pixel_index = x * channels; + int input_pixel_index = stbir__edge_wrap(edge_horizontal, x, input_w) * channels; + for (c = 0; c < channels; c++) + decode_buffer[decode_pixel_index + c] = stbir__srgb_to_linear(((const float*)input_data)[input_pixel_index + c]); + + if (!(stbir_info->flags&STBIR_FLAG_ALPHA_USES_COLORSPACE)) + decode_buffer[decode_pixel_index + alpha_channel] = ((const float*)input_data)[input_pixel_index + alpha_channel]; + } + + break; + + default: + STBIR_ASSERT(!"Unknown type/colorspace/channels combination."); + break; + } + + if (!(stbir_info->flags & STBIR_FLAG_ALPHA_PREMULTIPLIED)) + { + for (x = -stbir_info->horizontal_filter_pixel_margin; x < max_x; x++) + { + int decode_pixel_index = x * channels; + + // If the alpha value is 0 it will clobber the color values. Make sure it's not. + float alpha = decode_buffer[decode_pixel_index + alpha_channel]; +#ifndef STBIR_NO_ALPHA_EPSILON + if (stbir_info->type != STBIR_TYPE_FLOAT) { + alpha += STBIR_ALPHA_EPSILON; + decode_buffer[decode_pixel_index + alpha_channel] = alpha; + } +#endif + for (c = 0; c < channels; c++) + { + if (c == alpha_channel) + continue; + + decode_buffer[decode_pixel_index + c] *= alpha; + } + } + } + + if (edge_horizontal == STBIR_EDGE_ZERO) + { + for (x = -stbir_info->horizontal_filter_pixel_margin; x < 0; x++) + { + for (c = 0; c < channels; c++) + decode_buffer[x*channels + c] = 0; + } + for (x = input_w; x < max_x; x++) + { + for (c = 0; c < channels; c++) + decode_buffer[x*channels + c] = 0; + } + } +} + +static float* stbir__get_ring_buffer_entry(float* ring_buffer, int index, int ring_buffer_length) +{ + return &ring_buffer[index * ring_buffer_length]; +} + +static float* stbir__add_empty_ring_buffer_entry(stbir__info* stbir_info, int n) +{ + int ring_buffer_index; + float* ring_buffer; + + stbir_info->ring_buffer_last_scanline = n; + + if (stbir_info->ring_buffer_begin_index < 0) + { + ring_buffer_index = stbir_info->ring_buffer_begin_index = 0; + stbir_info->ring_buffer_first_scanline = n; + } + else + { + ring_buffer_index = (stbir_info->ring_buffer_begin_index + (stbir_info->ring_buffer_last_scanline - stbir_info->ring_buffer_first_scanline)) % stbir_info->ring_buffer_num_entries; + STBIR_ASSERT(ring_buffer_index != stbir_info->ring_buffer_begin_index); + } + + ring_buffer = stbir__get_ring_buffer_entry(stbir_info->ring_buffer, ring_buffer_index, stbir_info->ring_buffer_length_bytes / sizeof(float)); + memset(ring_buffer, 0, stbir_info->ring_buffer_length_bytes); + + return ring_buffer; +} + + +static void stbir__resample_horizontal_upsample(stbir__info* stbir_info, float* output_buffer) +{ + int x, k; + int output_w = stbir_info->output_w; + int channels = stbir_info->channels; + float* decode_buffer = stbir__get_decode_buffer(stbir_info); + stbir__contributors* horizontal_contributors = stbir_info->horizontal_contributors; + float* horizontal_coefficients = stbir_info->horizontal_coefficients; + int coefficient_width = stbir_info->horizontal_coefficient_width; + + for (x = 0; x < output_w; x++) + { + int n0 = horizontal_contributors[x].n0; + int n1 = horizontal_contributors[x].n1; + + int out_pixel_index = x * channels; + int coefficient_group = coefficient_width * x; + int coefficient_counter = 0; + + STBIR_ASSERT(n1 >= n0); + STBIR_ASSERT(n0 >= -stbir_info->horizontal_filter_pixel_margin); + STBIR_ASSERT(n1 >= -stbir_info->horizontal_filter_pixel_margin); + STBIR_ASSERT(n0 < stbir_info->input_w + stbir_info->horizontal_filter_pixel_margin); + STBIR_ASSERT(n1 < stbir_info->input_w + stbir_info->horizontal_filter_pixel_margin); + + switch (channels) { + case 1: + for (k = n0; k <= n1; k++) + { + int in_pixel_index = k * 1; + float coefficient = horizontal_coefficients[coefficient_group + coefficient_counter++]; + STBIR_ASSERT(coefficient != 0); + output_buffer[out_pixel_index + 0] += decode_buffer[in_pixel_index + 0] * coefficient; + } + break; + case 2: + for (k = n0; k <= n1; k++) + { + int in_pixel_index = k * 2; + float coefficient = horizontal_coefficients[coefficient_group + coefficient_counter++]; + STBIR_ASSERT(coefficient != 0); + output_buffer[out_pixel_index + 0] += decode_buffer[in_pixel_index + 0] * coefficient; + output_buffer[out_pixel_index + 1] += decode_buffer[in_pixel_index + 1] * coefficient; + } + break; + case 3: + for (k = n0; k <= n1; k++) + { + int in_pixel_index = k * 3; + float coefficient = horizontal_coefficients[coefficient_group + coefficient_counter++]; + STBIR_ASSERT(coefficient != 0); + output_buffer[out_pixel_index + 0] += decode_buffer[in_pixel_index + 0] * coefficient; + output_buffer[out_pixel_index + 1] += decode_buffer[in_pixel_index + 1] * coefficient; + output_buffer[out_pixel_index + 2] += decode_buffer[in_pixel_index + 2] * coefficient; + } + break; + case 4: + for (k = n0; k <= n1; k++) + { + int in_pixel_index = k * 4; + float coefficient = horizontal_coefficients[coefficient_group + coefficient_counter++]; + STBIR_ASSERT(coefficient != 0); + output_buffer[out_pixel_index + 0] += decode_buffer[in_pixel_index + 0] * coefficient; + output_buffer[out_pixel_index + 1] += decode_buffer[in_pixel_index + 1] * coefficient; + output_buffer[out_pixel_index + 2] += decode_buffer[in_pixel_index + 2] * coefficient; + output_buffer[out_pixel_index + 3] += decode_buffer[in_pixel_index + 3] * coefficient; + } + break; + default: + for (k = n0; k <= n1; k++) + { + int in_pixel_index = k * channels; + float coefficient = horizontal_coefficients[coefficient_group + coefficient_counter++]; + int c; + STBIR_ASSERT(coefficient != 0); + for (c = 0; c < channels; c++) + output_buffer[out_pixel_index + c] += decode_buffer[in_pixel_index + c] * coefficient; + } + break; + } + } +} + +static void stbir__resample_horizontal_downsample(stbir__info* stbir_info, float* output_buffer) +{ + int x, k; + int input_w = stbir_info->input_w; + int channels = stbir_info->channels; + float* decode_buffer = stbir__get_decode_buffer(stbir_info); + stbir__contributors* horizontal_contributors = stbir_info->horizontal_contributors; + float* horizontal_coefficients = stbir_info->horizontal_coefficients; + int coefficient_width = stbir_info->horizontal_coefficient_width; + int filter_pixel_margin = stbir_info->horizontal_filter_pixel_margin; + int max_x = input_w + filter_pixel_margin * 2; + + STBIR_ASSERT(!stbir__use_width_upsampling(stbir_info)); + + switch (channels) { + case 1: + for (x = 0; x < max_x; x++) + { + int n0 = horizontal_contributors[x].n0; + int n1 = horizontal_contributors[x].n1; + + int in_x = x - filter_pixel_margin; + int in_pixel_index = in_x * 1; + int max_n = n1; + int coefficient_group = coefficient_width * x; + + for (k = n0; k <= max_n; k++) + { + int out_pixel_index = k * 1; + float coefficient = horizontal_coefficients[coefficient_group + k - n0]; + output_buffer[out_pixel_index + 0] += decode_buffer[in_pixel_index + 0] * coefficient; + } + } + break; + + case 2: + for (x = 0; x < max_x; x++) + { + int n0 = horizontal_contributors[x].n0; + int n1 = horizontal_contributors[x].n1; + + int in_x = x - filter_pixel_margin; + int in_pixel_index = in_x * 2; + int max_n = n1; + int coefficient_group = coefficient_width * x; + + for (k = n0; k <= max_n; k++) + { + int out_pixel_index = k * 2; + float coefficient = horizontal_coefficients[coefficient_group + k - n0]; + output_buffer[out_pixel_index + 0] += decode_buffer[in_pixel_index + 0] * coefficient; + output_buffer[out_pixel_index + 1] += decode_buffer[in_pixel_index + 1] * coefficient; + } + } + break; + + case 3: + for (x = 0; x < max_x; x++) + { + int n0 = horizontal_contributors[x].n0; + int n1 = horizontal_contributors[x].n1; + + int in_x = x - filter_pixel_margin; + int in_pixel_index = in_x * 3; + int max_n = n1; + int coefficient_group = coefficient_width * x; + + for (k = n0; k <= max_n; k++) + { + int out_pixel_index = k * 3; + float coefficient = horizontal_coefficients[coefficient_group + k - n0]; + output_buffer[out_pixel_index + 0] += decode_buffer[in_pixel_index + 0] * coefficient; + output_buffer[out_pixel_index + 1] += decode_buffer[in_pixel_index + 1] * coefficient; + output_buffer[out_pixel_index + 2] += decode_buffer[in_pixel_index + 2] * coefficient; + } + } + break; + + case 4: + for (x = 0; x < max_x; x++) + { + int n0 = horizontal_contributors[x].n0; + int n1 = horizontal_contributors[x].n1; + + int in_x = x - filter_pixel_margin; + int in_pixel_index = in_x * 4; + int max_n = n1; + int coefficient_group = coefficient_width * x; + + for (k = n0; k <= max_n; k++) + { + int out_pixel_index = k * 4; + float coefficient = horizontal_coefficients[coefficient_group + k - n0]; + output_buffer[out_pixel_index + 0] += decode_buffer[in_pixel_index + 0] * coefficient; + output_buffer[out_pixel_index + 1] += decode_buffer[in_pixel_index + 1] * coefficient; + output_buffer[out_pixel_index + 2] += decode_buffer[in_pixel_index + 2] * coefficient; + output_buffer[out_pixel_index + 3] += decode_buffer[in_pixel_index + 3] * coefficient; + } + } + break; + + default: + for (x = 0; x < max_x; x++) + { + int n0 = horizontal_contributors[x].n0; + int n1 = horizontal_contributors[x].n1; + + int in_x = x - filter_pixel_margin; + int in_pixel_index = in_x * channels; + int max_n = n1; + int coefficient_group = coefficient_width * x; + + for (k = n0; k <= max_n; k++) + { + int c; + int out_pixel_index = k * channels; + float coefficient = horizontal_coefficients[coefficient_group + k - n0]; + for (c = 0; c < channels; c++) + output_buffer[out_pixel_index + c] += decode_buffer[in_pixel_index + c] * coefficient; + } + } + break; + } +} + +static void stbir__decode_and_resample_upsample(stbir__info* stbir_info, int n) +{ + // Decode the nth scanline from the source image into the decode buffer. + stbir__decode_scanline(stbir_info, n); + + // Now resample it into the ring buffer. + if (stbir__use_width_upsampling(stbir_info)) + stbir__resample_horizontal_upsample(stbir_info, stbir__add_empty_ring_buffer_entry(stbir_info, n)); + else + stbir__resample_horizontal_downsample(stbir_info, stbir__add_empty_ring_buffer_entry(stbir_info, n)); + + // Now it's sitting in the ring buffer ready to be used as source for the vertical sampling. +} + +static void stbir__decode_and_resample_downsample(stbir__info* stbir_info, int n) +{ + // Decode the nth scanline from the source image into the decode buffer. + stbir__decode_scanline(stbir_info, n); + + memset(stbir_info->horizontal_buffer, 0, stbir_info->output_w * stbir_info->channels * sizeof(float)); + + // Now resample it into the horizontal buffer. + if (stbir__use_width_upsampling(stbir_info)) + stbir__resample_horizontal_upsample(stbir_info, stbir_info->horizontal_buffer); + else + stbir__resample_horizontal_downsample(stbir_info, stbir_info->horizontal_buffer); + + // Now it's sitting in the horizontal buffer ready to be distributed into the ring buffers. +} + +// Get the specified scan line from the ring buffer. +static float* stbir__get_ring_buffer_scanline(int get_scanline, float* ring_buffer, int begin_index, int first_scanline, int ring_buffer_num_entries, int ring_buffer_length) +{ + int ring_buffer_index = (begin_index + (get_scanline - first_scanline)) % ring_buffer_num_entries; + return stbir__get_ring_buffer_entry(ring_buffer, ring_buffer_index, ring_buffer_length); +} + + +static void stbir__encode_scanline(stbir__info* stbir_info, int num_pixels, void *output_buffer, float *encode_buffer, int channels, int alpha_channel, int decode) +{ + int x; + int n; + int num_nonalpha; + stbir_uint16 nonalpha[STBIR_MAX_CHANNELS]; + + if (!(stbir_info->flags&STBIR_FLAG_ALPHA_PREMULTIPLIED)) + { + for (x=0; x < num_pixels; ++x) + { + int pixel_index = x*channels; + + float alpha = encode_buffer[pixel_index + alpha_channel]; + float reciprocal_alpha = alpha ? 1.0f / alpha : 0; + + // unrolling this produced a 1% slowdown upscaling a large RGBA linear-space image on my machine - stb + for (n = 0; n < channels; n++) + if (n != alpha_channel) + encode_buffer[pixel_index + n] *= reciprocal_alpha; + + // We added in a small epsilon to prevent the color channel from being deleted with zero alpha. + // Because we only add it for integer types, it will automatically be discarded on integer + // conversion, so we don't need to subtract it back out (which would be problematic for + // numeric precision reasons). + } + } + + // build a table of all channels that need colorspace correction, so + // we don't perform colorspace correction on channels that don't need it. + for (x = 0, num_nonalpha = 0; x < channels; ++x) + { + if (x != alpha_channel || (stbir_info->flags & STBIR_FLAG_ALPHA_USES_COLORSPACE)) + { + nonalpha[num_nonalpha++] = (stbir_uint16)x; + } + } + + #define STBIR__ROUND_INT(f) ((int) ((f)+0.5)) + #define STBIR__ROUND_UINT(f) ((stbir_uint32) ((f)+0.5)) + + #ifdef STBIR__SATURATE_INT + #define STBIR__ENCODE_LINEAR8(f) stbir__saturate8 (STBIR__ROUND_INT((f) * stbir__max_uint8_as_float )) + #define STBIR__ENCODE_LINEAR16(f) stbir__saturate16(STBIR__ROUND_INT((f) * stbir__max_uint16_as_float)) + #else + #define STBIR__ENCODE_LINEAR8(f) (unsigned char ) STBIR__ROUND_INT(stbir__saturate(f) * stbir__max_uint8_as_float ) + #define STBIR__ENCODE_LINEAR16(f) (unsigned short) STBIR__ROUND_INT(stbir__saturate(f) * stbir__max_uint16_as_float) + #endif + + switch (decode) + { + case STBIR__DECODE(STBIR_TYPE_UINT8, STBIR_COLORSPACE_LINEAR): + for (x=0; x < num_pixels; ++x) + { + int pixel_index = x*channels; + + for (n = 0; n < channels; n++) + { + int index = pixel_index + n; + ((unsigned char*)output_buffer)[index] = STBIR__ENCODE_LINEAR8(encode_buffer[index]); + } + } + break; + + case STBIR__DECODE(STBIR_TYPE_UINT8, STBIR_COLORSPACE_SRGB): + for (x=0; x < num_pixels; ++x) + { + int pixel_index = x*channels; + + for (n = 0; n < num_nonalpha; n++) + { + int index = pixel_index + nonalpha[n]; + ((unsigned char*)output_buffer)[index] = stbir__linear_to_srgb_uchar(encode_buffer[index]); + } + + if (!(stbir_info->flags & STBIR_FLAG_ALPHA_USES_COLORSPACE)) + ((unsigned char *)output_buffer)[pixel_index + alpha_channel] = STBIR__ENCODE_LINEAR8(encode_buffer[pixel_index+alpha_channel]); + } + break; + + case STBIR__DECODE(STBIR_TYPE_UINT16, STBIR_COLORSPACE_LINEAR): + for (x=0; x < num_pixels; ++x) + { + int pixel_index = x*channels; + + for (n = 0; n < channels; n++) + { + int index = pixel_index + n; + ((unsigned short*)output_buffer)[index] = STBIR__ENCODE_LINEAR16(encode_buffer[index]); + } + } + break; + + case STBIR__DECODE(STBIR_TYPE_UINT16, STBIR_COLORSPACE_SRGB): + for (x=0; x < num_pixels; ++x) + { + int pixel_index = x*channels; + + for (n = 0; n < num_nonalpha; n++) + { + int index = pixel_index + nonalpha[n]; + ((unsigned short*)output_buffer)[index] = (unsigned short)STBIR__ROUND_INT(stbir__linear_to_srgb(stbir__saturate(encode_buffer[index])) * stbir__max_uint16_as_float); + } + + if (!(stbir_info->flags&STBIR_FLAG_ALPHA_USES_COLORSPACE)) + ((unsigned short*)output_buffer)[pixel_index + alpha_channel] = STBIR__ENCODE_LINEAR16(encode_buffer[pixel_index + alpha_channel]); + } + + break; + + case STBIR__DECODE(STBIR_TYPE_UINT32, STBIR_COLORSPACE_LINEAR): + for (x=0; x < num_pixels; ++x) + { + int pixel_index = x*channels; + + for (n = 0; n < channels; n++) + { + int index = pixel_index + n; + ((unsigned int*)output_buffer)[index] = (unsigned int)STBIR__ROUND_UINT(((double)stbir__saturate(encode_buffer[index])) * stbir__max_uint32_as_float); + } + } + break; + + case STBIR__DECODE(STBIR_TYPE_UINT32, STBIR_COLORSPACE_SRGB): + for (x=0; x < num_pixels; ++x) + { + int pixel_index = x*channels; + + for (n = 0; n < num_nonalpha; n++) + { + int index = pixel_index + nonalpha[n]; + ((unsigned int*)output_buffer)[index] = (unsigned int)STBIR__ROUND_UINT(((double)stbir__linear_to_srgb(stbir__saturate(encode_buffer[index]))) * stbir__max_uint32_as_float); + } + + if (!(stbir_info->flags&STBIR_FLAG_ALPHA_USES_COLORSPACE)) + ((unsigned int*)output_buffer)[pixel_index + alpha_channel] = (unsigned int)STBIR__ROUND_INT(((double)stbir__saturate(encode_buffer[pixel_index + alpha_channel])) * stbir__max_uint32_as_float); + } + break; + + case STBIR__DECODE(STBIR_TYPE_FLOAT, STBIR_COLORSPACE_LINEAR): + for (x=0; x < num_pixels; ++x) + { + int pixel_index = x*channels; + + for (n = 0; n < channels; n++) + { + int index = pixel_index + n; + ((float*)output_buffer)[index] = encode_buffer[index]; + } + } + break; + + case STBIR__DECODE(STBIR_TYPE_FLOAT, STBIR_COLORSPACE_SRGB): + for (x=0; x < num_pixels; ++x) + { + int pixel_index = x*channels; + + for (n = 0; n < num_nonalpha; n++) + { + int index = pixel_index + nonalpha[n]; + ((float*)output_buffer)[index] = stbir__linear_to_srgb(encode_buffer[index]); + } + + if (!(stbir_info->flags&STBIR_FLAG_ALPHA_USES_COLORSPACE)) + ((float*)output_buffer)[pixel_index + alpha_channel] = encode_buffer[pixel_index + alpha_channel]; + } + break; + + default: + STBIR_ASSERT(!"Unknown type/colorspace/channels combination."); + break; + } +} + +static void stbir__resample_vertical_upsample(stbir__info* stbir_info, int n) +{ + int x, k; + int output_w = stbir_info->output_w; + stbir__contributors* vertical_contributors = stbir_info->vertical_contributors; + float* vertical_coefficients = stbir_info->vertical_coefficients; + int channels = stbir_info->channels; + int alpha_channel = stbir_info->alpha_channel; + int type = stbir_info->type; + int colorspace = stbir_info->colorspace; + int ring_buffer_entries = stbir_info->ring_buffer_num_entries; + void* output_data = stbir_info->output_data; + float* encode_buffer = stbir_info->encode_buffer; + int decode = STBIR__DECODE(type, colorspace); + int coefficient_width = stbir_info->vertical_coefficient_width; + int coefficient_counter; + int contributor = n; + + float* ring_buffer = stbir_info->ring_buffer; + int ring_buffer_begin_index = stbir_info->ring_buffer_begin_index; + int ring_buffer_first_scanline = stbir_info->ring_buffer_first_scanline; + int ring_buffer_length = stbir_info->ring_buffer_length_bytes/sizeof(float); + + int n0,n1, output_row_start; + int coefficient_group = coefficient_width * contributor; + + n0 = vertical_contributors[contributor].n0; + n1 = vertical_contributors[contributor].n1; + + output_row_start = n * stbir_info->output_stride_bytes; + + STBIR_ASSERT(stbir__use_height_upsampling(stbir_info)); + + memset(encode_buffer, 0, output_w * sizeof(float) * channels); + + // I tried reblocking this for better cache usage of encode_buffer + // (using x_outer, k, x_inner), but it lost speed. -- stb + + coefficient_counter = 0; + switch (channels) { + case 1: + for (k = n0; k <= n1; k++) + { + int coefficient_index = coefficient_counter++; + float* ring_buffer_entry = stbir__get_ring_buffer_scanline(k, ring_buffer, ring_buffer_begin_index, ring_buffer_first_scanline, ring_buffer_entries, ring_buffer_length); + float coefficient = vertical_coefficients[coefficient_group + coefficient_index]; + for (x = 0; x < output_w; ++x) + { + int in_pixel_index = x * 1; + encode_buffer[in_pixel_index + 0] += ring_buffer_entry[in_pixel_index + 0] * coefficient; + } + } + break; + case 2: + for (k = n0; k <= n1; k++) + { + int coefficient_index = coefficient_counter++; + float* ring_buffer_entry = stbir__get_ring_buffer_scanline(k, ring_buffer, ring_buffer_begin_index, ring_buffer_first_scanline, ring_buffer_entries, ring_buffer_length); + float coefficient = vertical_coefficients[coefficient_group + coefficient_index]; + for (x = 0; x < output_w; ++x) + { + int in_pixel_index = x * 2; + encode_buffer[in_pixel_index + 0] += ring_buffer_entry[in_pixel_index + 0] * coefficient; + encode_buffer[in_pixel_index + 1] += ring_buffer_entry[in_pixel_index + 1] * coefficient; + } + } + break; + case 3: + for (k = n0; k <= n1; k++) + { + int coefficient_index = coefficient_counter++; + float* ring_buffer_entry = stbir__get_ring_buffer_scanline(k, ring_buffer, ring_buffer_begin_index, ring_buffer_first_scanline, ring_buffer_entries, ring_buffer_length); + float coefficient = vertical_coefficients[coefficient_group + coefficient_index]; + for (x = 0; x < output_w; ++x) + { + int in_pixel_index = x * 3; + encode_buffer[in_pixel_index + 0] += ring_buffer_entry[in_pixel_index + 0] * coefficient; + encode_buffer[in_pixel_index + 1] += ring_buffer_entry[in_pixel_index + 1] * coefficient; + encode_buffer[in_pixel_index + 2] += ring_buffer_entry[in_pixel_index + 2] * coefficient; + } + } + break; + case 4: + for (k = n0; k <= n1; k++) + { + int coefficient_index = coefficient_counter++; + float* ring_buffer_entry = stbir__get_ring_buffer_scanline(k, ring_buffer, ring_buffer_begin_index, ring_buffer_first_scanline, ring_buffer_entries, ring_buffer_length); + float coefficient = vertical_coefficients[coefficient_group + coefficient_index]; + for (x = 0; x < output_w; ++x) + { + int in_pixel_index = x * 4; + encode_buffer[in_pixel_index + 0] += ring_buffer_entry[in_pixel_index + 0] * coefficient; + encode_buffer[in_pixel_index + 1] += ring_buffer_entry[in_pixel_index + 1] * coefficient; + encode_buffer[in_pixel_index + 2] += ring_buffer_entry[in_pixel_index + 2] * coefficient; + encode_buffer[in_pixel_index + 3] += ring_buffer_entry[in_pixel_index + 3] * coefficient; + } + } + break; + default: + for (k = n0; k <= n1; k++) + { + int coefficient_index = coefficient_counter++; + float* ring_buffer_entry = stbir__get_ring_buffer_scanline(k, ring_buffer, ring_buffer_begin_index, ring_buffer_first_scanline, ring_buffer_entries, ring_buffer_length); + float coefficient = vertical_coefficients[coefficient_group + coefficient_index]; + for (x = 0; x < output_w; ++x) + { + int in_pixel_index = x * channels; + int c; + for (c = 0; c < channels; c++) + encode_buffer[in_pixel_index + c] += ring_buffer_entry[in_pixel_index + c] * coefficient; + } + } + break; + } + stbir__encode_scanline(stbir_info, output_w, (char *) output_data + output_row_start, encode_buffer, channels, alpha_channel, decode); +} + +static void stbir__resample_vertical_downsample(stbir__info* stbir_info, int n) +{ + int x, k; + int output_w = stbir_info->output_w; + stbir__contributors* vertical_contributors = stbir_info->vertical_contributors; + float* vertical_coefficients = stbir_info->vertical_coefficients; + int channels = stbir_info->channels; + int ring_buffer_entries = stbir_info->ring_buffer_num_entries; + float* horizontal_buffer = stbir_info->horizontal_buffer; + int coefficient_width = stbir_info->vertical_coefficient_width; + int contributor = n + stbir_info->vertical_filter_pixel_margin; + + float* ring_buffer = stbir_info->ring_buffer; + int ring_buffer_begin_index = stbir_info->ring_buffer_begin_index; + int ring_buffer_first_scanline = stbir_info->ring_buffer_first_scanline; + int ring_buffer_length = stbir_info->ring_buffer_length_bytes/sizeof(float); + int n0,n1; + + n0 = vertical_contributors[contributor].n0; + n1 = vertical_contributors[contributor].n1; + + STBIR_ASSERT(!stbir__use_height_upsampling(stbir_info)); + + for (k = n0; k <= n1; k++) + { + int coefficient_index = k - n0; + int coefficient_group = coefficient_width * contributor; + float coefficient = vertical_coefficients[coefficient_group + coefficient_index]; + + float* ring_buffer_entry = stbir__get_ring_buffer_scanline(k, ring_buffer, ring_buffer_begin_index, ring_buffer_first_scanline, ring_buffer_entries, ring_buffer_length); + + switch (channels) { + case 1: + for (x = 0; x < output_w; x++) + { + int in_pixel_index = x * 1; + ring_buffer_entry[in_pixel_index + 0] += horizontal_buffer[in_pixel_index + 0] * coefficient; + } + break; + case 2: + for (x = 0; x < output_w; x++) + { + int in_pixel_index = x * 2; + ring_buffer_entry[in_pixel_index + 0] += horizontal_buffer[in_pixel_index + 0] * coefficient; + ring_buffer_entry[in_pixel_index + 1] += horizontal_buffer[in_pixel_index + 1] * coefficient; + } + break; + case 3: + for (x = 0; x < output_w; x++) + { + int in_pixel_index = x * 3; + ring_buffer_entry[in_pixel_index + 0] += horizontal_buffer[in_pixel_index + 0] * coefficient; + ring_buffer_entry[in_pixel_index + 1] += horizontal_buffer[in_pixel_index + 1] * coefficient; + ring_buffer_entry[in_pixel_index + 2] += horizontal_buffer[in_pixel_index + 2] * coefficient; + } + break; + case 4: + for (x = 0; x < output_w; x++) + { + int in_pixel_index = x * 4; + ring_buffer_entry[in_pixel_index + 0] += horizontal_buffer[in_pixel_index + 0] * coefficient; + ring_buffer_entry[in_pixel_index + 1] += horizontal_buffer[in_pixel_index + 1] * coefficient; + ring_buffer_entry[in_pixel_index + 2] += horizontal_buffer[in_pixel_index + 2] * coefficient; + ring_buffer_entry[in_pixel_index + 3] += horizontal_buffer[in_pixel_index + 3] * coefficient; + } + break; + default: + for (x = 0; x < output_w; x++) + { + int in_pixel_index = x * channels; + + int c; + for (c = 0; c < channels; c++) + ring_buffer_entry[in_pixel_index + c] += horizontal_buffer[in_pixel_index + c] * coefficient; + } + break; + } + } +} + +static void stbir__buffer_loop_upsample(stbir__info* stbir_info) +{ + int y; + float scale_ratio = stbir_info->vertical_scale; + float out_scanlines_radius = stbir__filter_info_table[stbir_info->vertical_filter].support(1/scale_ratio) * scale_ratio; + + STBIR_ASSERT(stbir__use_height_upsampling(stbir_info)); + + for (y = 0; y < stbir_info->output_h; y++) + { + float in_center_of_out = 0; // Center of the current out scanline in the in scanline space + int in_first_scanline = 0, in_last_scanline = 0; + + stbir__calculate_sample_range_upsample(y, out_scanlines_radius, scale_ratio, stbir_info->vertical_shift, &in_first_scanline, &in_last_scanline, &in_center_of_out); + + STBIR_ASSERT(in_last_scanline - in_first_scanline + 1 <= stbir_info->ring_buffer_num_entries); + + if (stbir_info->ring_buffer_begin_index >= 0) + { + // Get rid of whatever we don't need anymore. + while (in_first_scanline > stbir_info->ring_buffer_first_scanline) + { + if (stbir_info->ring_buffer_first_scanline == stbir_info->ring_buffer_last_scanline) + { + // We just popped the last scanline off the ring buffer. + // Reset it to the empty state. + stbir_info->ring_buffer_begin_index = -1; + stbir_info->ring_buffer_first_scanline = 0; + stbir_info->ring_buffer_last_scanline = 0; + break; + } + else + { + stbir_info->ring_buffer_first_scanline++; + stbir_info->ring_buffer_begin_index = (stbir_info->ring_buffer_begin_index + 1) % stbir_info->ring_buffer_num_entries; + } + } + } + + // Load in new ones. + if (stbir_info->ring_buffer_begin_index < 0) + stbir__decode_and_resample_upsample(stbir_info, in_first_scanline); + + while (in_last_scanline > stbir_info->ring_buffer_last_scanline) + stbir__decode_and_resample_upsample(stbir_info, stbir_info->ring_buffer_last_scanline + 1); + + // Now all buffers should be ready to write a row of vertical sampling. + stbir__resample_vertical_upsample(stbir_info, y); + + STBIR_PROGRESS_REPORT((float)y / stbir_info->output_h); + } +} + +static void stbir__empty_ring_buffer(stbir__info* stbir_info, int first_necessary_scanline) +{ + int output_stride_bytes = stbir_info->output_stride_bytes; + int channels = stbir_info->channels; + int alpha_channel = stbir_info->alpha_channel; + int type = stbir_info->type; + int colorspace = stbir_info->colorspace; + int output_w = stbir_info->output_w; + void* output_data = stbir_info->output_data; + int decode = STBIR__DECODE(type, colorspace); + + float* ring_buffer = stbir_info->ring_buffer; + int ring_buffer_length = stbir_info->ring_buffer_length_bytes/sizeof(float); + + if (stbir_info->ring_buffer_begin_index >= 0) + { + // Get rid of whatever we don't need anymore. + while (first_necessary_scanline > stbir_info->ring_buffer_first_scanline) + { + if (stbir_info->ring_buffer_first_scanline >= 0 && stbir_info->ring_buffer_first_scanline < stbir_info->output_h) + { + int output_row_start = stbir_info->ring_buffer_first_scanline * output_stride_bytes; + float* ring_buffer_entry = stbir__get_ring_buffer_entry(ring_buffer, stbir_info->ring_buffer_begin_index, ring_buffer_length); + stbir__encode_scanline(stbir_info, output_w, (char *) output_data + output_row_start, ring_buffer_entry, channels, alpha_channel, decode); + STBIR_PROGRESS_REPORT((float)stbir_info->ring_buffer_first_scanline / stbir_info->output_h); + } + + if (stbir_info->ring_buffer_first_scanline == stbir_info->ring_buffer_last_scanline) + { + // We just popped the last scanline off the ring buffer. + // Reset it to the empty state. + stbir_info->ring_buffer_begin_index = -1; + stbir_info->ring_buffer_first_scanline = 0; + stbir_info->ring_buffer_last_scanline = 0; + break; + } + else + { + stbir_info->ring_buffer_first_scanline++; + stbir_info->ring_buffer_begin_index = (stbir_info->ring_buffer_begin_index + 1) % stbir_info->ring_buffer_num_entries; + } + } + } +} + +static void stbir__buffer_loop_downsample(stbir__info* stbir_info) +{ + int y; + float scale_ratio = stbir_info->vertical_scale; + int output_h = stbir_info->output_h; + float in_pixels_radius = stbir__filter_info_table[stbir_info->vertical_filter].support(scale_ratio) / scale_ratio; + int pixel_margin = stbir_info->vertical_filter_pixel_margin; + int max_y = stbir_info->input_h + pixel_margin; + + STBIR_ASSERT(!stbir__use_height_upsampling(stbir_info)); + + for (y = -pixel_margin; y < max_y; y++) + { + float out_center_of_in; // Center of the current out scanline in the in scanline space + int out_first_scanline, out_last_scanline; + + stbir__calculate_sample_range_downsample(y, in_pixels_radius, scale_ratio, stbir_info->vertical_shift, &out_first_scanline, &out_last_scanline, &out_center_of_in); + + STBIR_ASSERT(out_last_scanline - out_first_scanline + 1 <= stbir_info->ring_buffer_num_entries); + + if (out_last_scanline < 0 || out_first_scanline >= output_h) + continue; + + stbir__empty_ring_buffer(stbir_info, out_first_scanline); + + stbir__decode_and_resample_downsample(stbir_info, y); + + // Load in new ones. + if (stbir_info->ring_buffer_begin_index < 0) + stbir__add_empty_ring_buffer_entry(stbir_info, out_first_scanline); + + while (out_last_scanline > stbir_info->ring_buffer_last_scanline) + stbir__add_empty_ring_buffer_entry(stbir_info, stbir_info->ring_buffer_last_scanline + 1); + + // Now the horizontal buffer is ready to write to all ring buffer rows. + stbir__resample_vertical_downsample(stbir_info, y); + } + + stbir__empty_ring_buffer(stbir_info, stbir_info->output_h); +} + +static void stbir__setup(stbir__info *info, int input_w, int input_h, int output_w, int output_h, int channels) +{ + info->input_w = input_w; + info->input_h = input_h; + info->output_w = output_w; + info->output_h = output_h; + info->channels = channels; +} + +static void stbir__calculate_transform(stbir__info *info, float s0, float t0, float s1, float t1, float *transform) +{ + info->s0 = s0; + info->t0 = t0; + info->s1 = s1; + info->t1 = t1; + + if (transform) + { + info->horizontal_scale = transform[0]; + info->vertical_scale = transform[1]; + info->horizontal_shift = transform[2]; + info->vertical_shift = transform[3]; + } + else + { + info->horizontal_scale = ((float)info->output_w / info->input_w) / (s1 - s0); + info->vertical_scale = ((float)info->output_h / info->input_h) / (t1 - t0); + + info->horizontal_shift = s0 * info->output_w / (s1 - s0); + info->vertical_shift = t0 * info->output_h / (t1 - t0); + } +} + +static void stbir__choose_filter(stbir__info *info, stbir_filter h_filter, stbir_filter v_filter) +{ + if (h_filter == 0) + h_filter = stbir__use_upsampling(info->horizontal_scale) ? STBIR_DEFAULT_FILTER_UPSAMPLE : STBIR_DEFAULT_FILTER_DOWNSAMPLE; + if (v_filter == 0) + v_filter = stbir__use_upsampling(info->vertical_scale) ? STBIR_DEFAULT_FILTER_UPSAMPLE : STBIR_DEFAULT_FILTER_DOWNSAMPLE; + info->horizontal_filter = h_filter; + info->vertical_filter = v_filter; +} + +static stbir_uint32 stbir__calculate_memory(stbir__info *info) +{ + int pixel_margin = stbir__get_filter_pixel_margin(info->horizontal_filter, info->horizontal_scale); + int filter_height = stbir__get_filter_pixel_width(info->vertical_filter, info->vertical_scale); + + info->horizontal_num_contributors = stbir__get_contributors(info->horizontal_scale, info->horizontal_filter, info->input_w, info->output_w); + info->vertical_num_contributors = stbir__get_contributors(info->vertical_scale , info->vertical_filter , info->input_h, info->output_h); + + // One extra entry because floating point precision problems sometimes cause an extra to be necessary. + info->ring_buffer_num_entries = filter_height + 1; + + info->horizontal_contributors_size = info->horizontal_num_contributors * sizeof(stbir__contributors); + info->horizontal_coefficients_size = stbir__get_total_horizontal_coefficients(info) * sizeof(float); + info->vertical_contributors_size = info->vertical_num_contributors * sizeof(stbir__contributors); + info->vertical_coefficients_size = stbir__get_total_vertical_coefficients(info) * sizeof(float); + info->decode_buffer_size = (info->input_w + pixel_margin * 2) * info->channels * sizeof(float); + info->horizontal_buffer_size = info->output_w * info->channels * sizeof(float); + info->ring_buffer_size = info->output_w * info->channels * info->ring_buffer_num_entries * sizeof(float); + info->encode_buffer_size = info->output_w * info->channels * sizeof(float); + + STBIR_ASSERT(info->horizontal_filter != 0); + STBIR_ASSERT(info->horizontal_filter < STBIR__ARRAY_SIZE(stbir__filter_info_table)); // this now happens too late + STBIR_ASSERT(info->vertical_filter != 0); + STBIR_ASSERT(info->vertical_filter < STBIR__ARRAY_SIZE(stbir__filter_info_table)); // this now happens too late + + if (stbir__use_height_upsampling(info)) + // The horizontal buffer is for when we're downsampling the height and we + // can't output the result of sampling the decode buffer directly into the + // ring buffers. + info->horizontal_buffer_size = 0; + else + // The encode buffer is to retain precision in the height upsampling method + // and isn't used when height downsampling. + info->encode_buffer_size = 0; + + return info->horizontal_contributors_size + info->horizontal_coefficients_size + + info->vertical_contributors_size + info->vertical_coefficients_size + + info->decode_buffer_size + info->horizontal_buffer_size + + info->ring_buffer_size + info->encode_buffer_size; +} + +static int stbir__resize_allocated(stbir__info *info, + const void* input_data, int input_stride_in_bytes, + void* output_data, int output_stride_in_bytes, + int alpha_channel, stbir_uint32 flags, stbir_datatype type, + stbir_edge edge_horizontal, stbir_edge edge_vertical, stbir_colorspace colorspace, + void* tempmem, size_t tempmem_size_in_bytes) +{ + size_t memory_required = stbir__calculate_memory(info); + + int width_stride_input = input_stride_in_bytes ? input_stride_in_bytes : info->channels * info->input_w * stbir__type_size[type]; + int width_stride_output = output_stride_in_bytes ? output_stride_in_bytes : info->channels * info->output_w * stbir__type_size[type]; + +#ifdef STBIR_DEBUG_OVERWRITE_TEST +#define OVERWRITE_ARRAY_SIZE 8 + unsigned char overwrite_output_before_pre[OVERWRITE_ARRAY_SIZE]; + unsigned char overwrite_tempmem_before_pre[OVERWRITE_ARRAY_SIZE]; + unsigned char overwrite_output_after_pre[OVERWRITE_ARRAY_SIZE]; + unsigned char overwrite_tempmem_after_pre[OVERWRITE_ARRAY_SIZE]; + + size_t begin_forbidden = width_stride_output * (info->output_h - 1) + info->output_w * info->channels * stbir__type_size[type]; + memcpy(overwrite_output_before_pre, &((unsigned char*)output_data)[-OVERWRITE_ARRAY_SIZE], OVERWRITE_ARRAY_SIZE); + memcpy(overwrite_output_after_pre, &((unsigned char*)output_data)[begin_forbidden], OVERWRITE_ARRAY_SIZE); + memcpy(overwrite_tempmem_before_pre, &((unsigned char*)tempmem)[-OVERWRITE_ARRAY_SIZE], OVERWRITE_ARRAY_SIZE); + memcpy(overwrite_tempmem_after_pre, &((unsigned char*)tempmem)[tempmem_size_in_bytes], OVERWRITE_ARRAY_SIZE); +#endif + + STBIR_ASSERT(info->channels >= 0); + STBIR_ASSERT(info->channels <= STBIR_MAX_CHANNELS); + + if (info->channels < 0 || info->channels > STBIR_MAX_CHANNELS) + return 0; + + STBIR_ASSERT(info->horizontal_filter < STBIR__ARRAY_SIZE(stbir__filter_info_table)); + STBIR_ASSERT(info->vertical_filter < STBIR__ARRAY_SIZE(stbir__filter_info_table)); + + if (info->horizontal_filter >= STBIR__ARRAY_SIZE(stbir__filter_info_table)) + return 0; + if (info->vertical_filter >= STBIR__ARRAY_SIZE(stbir__filter_info_table)) + return 0; + + if (alpha_channel < 0) + flags |= STBIR_FLAG_ALPHA_USES_COLORSPACE | STBIR_FLAG_ALPHA_PREMULTIPLIED; + + if (!(flags&STBIR_FLAG_ALPHA_USES_COLORSPACE) || !(flags&STBIR_FLAG_ALPHA_PREMULTIPLIED)) { + STBIR_ASSERT(alpha_channel >= 0 && alpha_channel < info->channels); + } + + if (alpha_channel >= info->channels) + return 0; + + STBIR_ASSERT(tempmem); + + if (!tempmem) + return 0; + + STBIR_ASSERT(tempmem_size_in_bytes >= memory_required); + + if (tempmem_size_in_bytes < memory_required) + return 0; + + memset(tempmem, 0, tempmem_size_in_bytes); + + info->input_data = input_data; + info->input_stride_bytes = width_stride_input; + + info->output_data = output_data; + info->output_stride_bytes = width_stride_output; + + info->alpha_channel = alpha_channel; + info->flags = flags; + info->type = type; + info->edge_horizontal = edge_horizontal; + info->edge_vertical = edge_vertical; + info->colorspace = colorspace; + + info->horizontal_coefficient_width = stbir__get_coefficient_width (info->horizontal_filter, info->horizontal_scale); + info->vertical_coefficient_width = stbir__get_coefficient_width (info->vertical_filter , info->vertical_scale ); + info->horizontal_filter_pixel_width = stbir__get_filter_pixel_width (info->horizontal_filter, info->horizontal_scale); + info->vertical_filter_pixel_width = stbir__get_filter_pixel_width (info->vertical_filter , info->vertical_scale ); + info->horizontal_filter_pixel_margin = stbir__get_filter_pixel_margin(info->horizontal_filter, info->horizontal_scale); + info->vertical_filter_pixel_margin = stbir__get_filter_pixel_margin(info->vertical_filter , info->vertical_scale ); + + info->ring_buffer_length_bytes = info->output_w * info->channels * sizeof(float); + info->decode_buffer_pixels = info->input_w + info->horizontal_filter_pixel_margin * 2; + +#define STBIR__NEXT_MEMPTR(current, newtype) (newtype*)(((unsigned char*)current) + current##_size) + + info->horizontal_contributors = (stbir__contributors *) tempmem; + info->horizontal_coefficients = STBIR__NEXT_MEMPTR(info->horizontal_contributors, float); + info->vertical_contributors = STBIR__NEXT_MEMPTR(info->horizontal_coefficients, stbir__contributors); + info->vertical_coefficients = STBIR__NEXT_MEMPTR(info->vertical_contributors, float); + info->decode_buffer = STBIR__NEXT_MEMPTR(info->vertical_coefficients, float); + + if (stbir__use_height_upsampling(info)) + { + info->horizontal_buffer = NULL; + info->ring_buffer = STBIR__NEXT_MEMPTR(info->decode_buffer, float); + info->encode_buffer = STBIR__NEXT_MEMPTR(info->ring_buffer, float); + + STBIR_ASSERT((size_t)STBIR__NEXT_MEMPTR(info->encode_buffer, unsigned char) == (size_t)tempmem + tempmem_size_in_bytes); + } + else + { + info->horizontal_buffer = STBIR__NEXT_MEMPTR(info->decode_buffer, float); + info->ring_buffer = STBIR__NEXT_MEMPTR(info->horizontal_buffer, float); + info->encode_buffer = NULL; + + STBIR_ASSERT((size_t)STBIR__NEXT_MEMPTR(info->ring_buffer, unsigned char) == (size_t)tempmem + tempmem_size_in_bytes); + } + +#undef STBIR__NEXT_MEMPTR + + // This signals that the ring buffer is empty + info->ring_buffer_begin_index = -1; + + stbir__calculate_filters(info->horizontal_contributors, info->horizontal_coefficients, info->horizontal_filter, info->horizontal_scale, info->horizontal_shift, info->input_w, info->output_w); + stbir__calculate_filters(info->vertical_contributors, info->vertical_coefficients, info->vertical_filter, info->vertical_scale, info->vertical_shift, info->input_h, info->output_h); + + STBIR_PROGRESS_REPORT(0); + + if (stbir__use_height_upsampling(info)) + stbir__buffer_loop_upsample(info); + else + stbir__buffer_loop_downsample(info); + + STBIR_PROGRESS_REPORT(1); + +#ifdef STBIR_DEBUG_OVERWRITE_TEST + STBIR_ASSERT(memcmp(overwrite_output_before_pre, &((unsigned char*)output_data)[-OVERWRITE_ARRAY_SIZE], OVERWRITE_ARRAY_SIZE) == 0); + STBIR_ASSERT(memcmp(overwrite_output_after_pre, &((unsigned char*)output_data)[begin_forbidden], OVERWRITE_ARRAY_SIZE) == 0); + STBIR_ASSERT(memcmp(overwrite_tempmem_before_pre, &((unsigned char*)tempmem)[-OVERWRITE_ARRAY_SIZE], OVERWRITE_ARRAY_SIZE) == 0); + STBIR_ASSERT(memcmp(overwrite_tempmem_after_pre, &((unsigned char*)tempmem)[tempmem_size_in_bytes], OVERWRITE_ARRAY_SIZE) == 0); +#endif + + return 1; +} + + +static int stbir__resize_arbitrary( + void *alloc_context, + const void* input_data, int input_w, int input_h, int input_stride_in_bytes, + void* output_data, int output_w, int output_h, int output_stride_in_bytes, + float s0, float t0, float s1, float t1, float *transform, + int channels, int alpha_channel, stbir_uint32 flags, stbir_datatype type, + stbir_filter h_filter, stbir_filter v_filter, + stbir_edge edge_horizontal, stbir_edge edge_vertical, stbir_colorspace colorspace) +{ + stbir__info info; + int result; + size_t memory_required; + void* extra_memory; + + stbir__setup(&info, input_w, input_h, output_w, output_h, channels); + stbir__calculate_transform(&info, s0,t0,s1,t1,transform); + stbir__choose_filter(&info, h_filter, v_filter); + memory_required = stbir__calculate_memory(&info); + extra_memory = STBIR_MALLOC(memory_required, alloc_context); + + if (!extra_memory) + return 0; + + result = stbir__resize_allocated(&info, input_data, input_stride_in_bytes, + output_data, output_stride_in_bytes, + alpha_channel, flags, type, + edge_horizontal, edge_vertical, + colorspace, extra_memory, memory_required); + + STBIR_FREE(extra_memory, alloc_context); + + return result; +} + +STBIRDEF int stbir_resize_uint8( const unsigned char *input_pixels , int input_w , int input_h , int input_stride_in_bytes, + unsigned char *output_pixels, int output_w, int output_h, int output_stride_in_bytes, + int num_channels) +{ + return stbir__resize_arbitrary(NULL, input_pixels, input_w, input_h, input_stride_in_bytes, + output_pixels, output_w, output_h, output_stride_in_bytes, + 0,0,1,1,NULL,num_channels,-1,0, STBIR_TYPE_UINT8, STBIR_FILTER_DEFAULT, STBIR_FILTER_DEFAULT, + STBIR_EDGE_CLAMP, STBIR_EDGE_CLAMP, STBIR_COLORSPACE_LINEAR); +} + +STBIRDEF int stbir_resize_float( const float *input_pixels , int input_w , int input_h , int input_stride_in_bytes, + float *output_pixels, int output_w, int output_h, int output_stride_in_bytes, + int num_channels) +{ + return stbir__resize_arbitrary(NULL, input_pixels, input_w, input_h, input_stride_in_bytes, + output_pixels, output_w, output_h, output_stride_in_bytes, + 0,0,1,1,NULL,num_channels,-1,0, STBIR_TYPE_FLOAT, STBIR_FILTER_DEFAULT, STBIR_FILTER_DEFAULT, + STBIR_EDGE_CLAMP, STBIR_EDGE_CLAMP, STBIR_COLORSPACE_LINEAR); +} + +STBIRDEF int stbir_resize_uint8_srgb(const unsigned char *input_pixels , int input_w , int input_h , int input_stride_in_bytes, + unsigned char *output_pixels, int output_w, int output_h, int output_stride_in_bytes, + int num_channels, int alpha_channel, int flags) +{ + return stbir__resize_arbitrary(NULL, input_pixels, input_w, input_h, input_stride_in_bytes, + output_pixels, output_w, output_h, output_stride_in_bytes, + 0,0,1,1,NULL,num_channels,alpha_channel,flags, STBIR_TYPE_UINT8, STBIR_FILTER_DEFAULT, STBIR_FILTER_DEFAULT, + STBIR_EDGE_CLAMP, STBIR_EDGE_CLAMP, STBIR_COLORSPACE_SRGB); +} + +STBIRDEF int stbir_resize_uint8_srgb_edgemode(const unsigned char *input_pixels , int input_w , int input_h , int input_stride_in_bytes, + unsigned char *output_pixels, int output_w, int output_h, int output_stride_in_bytes, + int num_channels, int alpha_channel, int flags, + stbir_edge edge_wrap_mode) +{ + return stbir__resize_arbitrary(NULL, input_pixels, input_w, input_h, input_stride_in_bytes, + output_pixels, output_w, output_h, output_stride_in_bytes, + 0,0,1,1,NULL,num_channels,alpha_channel,flags, STBIR_TYPE_UINT8, STBIR_FILTER_DEFAULT, STBIR_FILTER_DEFAULT, + edge_wrap_mode, edge_wrap_mode, STBIR_COLORSPACE_SRGB); +} + +STBIRDEF int stbir_resize_uint8_generic( const unsigned char *input_pixels , int input_w , int input_h , int input_stride_in_bytes, + unsigned char *output_pixels, int output_w, int output_h, int output_stride_in_bytes, + int num_channels, int alpha_channel, int flags, + stbir_edge edge_wrap_mode, stbir_filter filter, stbir_colorspace space, + void *alloc_context) +{ + return stbir__resize_arbitrary(alloc_context, input_pixels, input_w, input_h, input_stride_in_bytes, + output_pixels, output_w, output_h, output_stride_in_bytes, + 0,0,1,1,NULL,num_channels,alpha_channel,flags, STBIR_TYPE_UINT8, filter, filter, + edge_wrap_mode, edge_wrap_mode, space); +} + +STBIRDEF int stbir_resize_uint16_generic(const stbir_uint16 *input_pixels , int input_w , int input_h , int input_stride_in_bytes, + stbir_uint16 *output_pixels , int output_w, int output_h, int output_stride_in_bytes, + int num_channels, int alpha_channel, int flags, + stbir_edge edge_wrap_mode, stbir_filter filter, stbir_colorspace space, + void *alloc_context) +{ + return stbir__resize_arbitrary(alloc_context, input_pixels, input_w, input_h, input_stride_in_bytes, + output_pixels, output_w, output_h, output_stride_in_bytes, + 0,0,1,1,NULL,num_channels,alpha_channel,flags, STBIR_TYPE_UINT16, filter, filter, + edge_wrap_mode, edge_wrap_mode, space); +} + + +STBIRDEF int stbir_resize_float_generic( const float *input_pixels , int input_w , int input_h , int input_stride_in_bytes, + float *output_pixels , int output_w, int output_h, int output_stride_in_bytes, + int num_channels, int alpha_channel, int flags, + stbir_edge edge_wrap_mode, stbir_filter filter, stbir_colorspace space, + void *alloc_context) +{ + return stbir__resize_arbitrary(alloc_context, input_pixels, input_w, input_h, input_stride_in_bytes, + output_pixels, output_w, output_h, output_stride_in_bytes, + 0,0,1,1,NULL,num_channels,alpha_channel,flags, STBIR_TYPE_FLOAT, filter, filter, + edge_wrap_mode, edge_wrap_mode, space); +} + + +STBIRDEF int stbir_resize( const void *input_pixels , int input_w , int input_h , int input_stride_in_bytes, + void *output_pixels, int output_w, int output_h, int output_stride_in_bytes, + stbir_datatype datatype, + int num_channels, int alpha_channel, int flags, + stbir_edge edge_mode_horizontal, stbir_edge edge_mode_vertical, + stbir_filter filter_horizontal, stbir_filter filter_vertical, + stbir_colorspace space, void *alloc_context) +{ + return stbir__resize_arbitrary(alloc_context, input_pixels, input_w, input_h, input_stride_in_bytes, + output_pixels, output_w, output_h, output_stride_in_bytes, + 0,0,1,1,NULL,num_channels,alpha_channel,flags, datatype, filter_horizontal, filter_vertical, + edge_mode_horizontal, edge_mode_vertical, space); +} + + +STBIRDEF int stbir_resize_subpixel(const void *input_pixels , int input_w , int input_h , int input_stride_in_bytes, + void *output_pixels, int output_w, int output_h, int output_stride_in_bytes, + stbir_datatype datatype, + int num_channels, int alpha_channel, int flags, + stbir_edge edge_mode_horizontal, stbir_edge edge_mode_vertical, + stbir_filter filter_horizontal, stbir_filter filter_vertical, + stbir_colorspace space, void *alloc_context, + float x_scale, float y_scale, + float x_offset, float y_offset) +{ + float transform[4]; + transform[0] = x_scale; + transform[1] = y_scale; + transform[2] = x_offset; + transform[3] = y_offset; + return stbir__resize_arbitrary(alloc_context, input_pixels, input_w, input_h, input_stride_in_bytes, + output_pixels, output_w, output_h, output_stride_in_bytes, + 0,0,1,1,transform,num_channels,alpha_channel,flags, datatype, filter_horizontal, filter_vertical, + edge_mode_horizontal, edge_mode_vertical, space); +} + +STBIRDEF int stbir_resize_region( const void *input_pixels , int input_w , int input_h , int input_stride_in_bytes, + void *output_pixels, int output_w, int output_h, int output_stride_in_bytes, + stbir_datatype datatype, + int num_channels, int alpha_channel, int flags, + stbir_edge edge_mode_horizontal, stbir_edge edge_mode_vertical, + stbir_filter filter_horizontal, stbir_filter filter_vertical, + stbir_colorspace space, void *alloc_context, + float s0, float t0, float s1, float t1) +{ + return stbir__resize_arbitrary(alloc_context, input_pixels, input_w, input_h, input_stride_in_bytes, + output_pixels, output_w, output_h, output_stride_in_bytes, + s0,t0,s1,t1,NULL,num_channels,alpha_channel,flags, datatype, filter_horizontal, filter_vertical, + edge_mode_horizontal, edge_mode_vertical, space); +} + +#endif // STB_IMAGE_RESIZE_IMPLEMENTATION + +/* +------------------------------------------------------------------------------ +This software is available under 2 licenses -- choose whichever you prefer. +------------------------------------------------------------------------------ +ALTERNATIVE A - MIT License +Copyright (c) 2017 Sean Barrett +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies +of the Software, and to permit persons to whom the Software is furnished to do +so, subject to the following conditions: +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. +------------------------------------------------------------------------------ +ALTERNATIVE B - Public Domain (www.unlicense.org) +This is free and unencumbered software released into the public domain. +Anyone is free to copy, modify, publish, use, compile, sell, or distribute this +software, either in source code form or as a compiled binary, for any purpose, +commercial or non-commercial, and by any means. +In jurisdictions that recognize copyright laws, the author or authors of this +software dedicate any and all copyright interest in the software to the public +domain. We make this dedication for the benefit of the public at large and to +the detriment of our heirs and successors. We intend this dedication to be an +overt act of relinquishment in perpetuity of all present and future rights to +this software under copyright law. +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN +ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +------------------------------------------------------------------------------ +*/ diff --git a/include/stb/stb_image_write.h b/include/stb/stb_image_write.h new file mode 100644 index 0000000..e4b32ed --- /dev/null +++ b/include/stb/stb_image_write.h @@ -0,0 +1,1724 @@ +/* stb_image_write - v1.16 - public domain - http://nothings.org/stb + writes out PNG/BMP/TGA/JPEG/HDR images to C stdio - Sean Barrett 2010-2015 + no warranty implied; use at your own risk + + Before #including, + + #define STB_IMAGE_WRITE_IMPLEMENTATION + + in the file that you want to have the implementation. + + Will probably not work correctly with strict-aliasing optimizations. + +ABOUT: + + This header file is a library for writing images to C stdio or a callback. + + The PNG output is not optimal; it is 20-50% larger than the file + written by a decent optimizing implementation; though providing a custom + zlib compress function (see STBIW_ZLIB_COMPRESS) can mitigate that. + This library is designed for source code compactness and simplicity, + not optimal image file size or run-time performance. + +BUILDING: + + You can #define STBIW_ASSERT(x) before the #include to avoid using assert.h. + You can #define STBIW_MALLOC(), STBIW_REALLOC(), and STBIW_FREE() to replace + malloc,realloc,free. + You can #define STBIW_MEMMOVE() to replace memmove() + You can #define STBIW_ZLIB_COMPRESS to use a custom zlib-style compress function + for PNG compression (instead of the builtin one), it must have the following signature: + unsigned char * my_compress(unsigned char *data, int data_len, int *out_len, int quality); + The returned data will be freed with STBIW_FREE() (free() by default), + so it must be heap allocated with STBIW_MALLOC() (malloc() by default), + +UNICODE: + + If compiling for Windows and you wish to use Unicode filenames, compile + with + #define STBIW_WINDOWS_UTF8 + and pass utf8-encoded filenames. Call stbiw_convert_wchar_to_utf8 to convert + Windows wchar_t filenames to utf8. + +USAGE: + + There are five functions, one for each image file format: + + int stbi_write_png(char const *filename, int w, int h, int comp, const void *data, int stride_in_bytes); + int stbi_write_bmp(char const *filename, int w, int h, int comp, const void *data); + int stbi_write_tga(char const *filename, int w, int h, int comp, const void *data); + int stbi_write_jpg(char const *filename, int w, int h, int comp, const void *data, int quality); + int stbi_write_hdr(char const *filename, int w, int h, int comp, const float *data); + + void stbi_flip_vertically_on_write(int flag); // flag is non-zero to flip data vertically + + There are also five equivalent functions that use an arbitrary write function. You are + expected to open/close your file-equivalent before and after calling these: + + int stbi_write_png_to_func(stbi_write_func *func, void *context, int w, int h, int comp, const void *data, int stride_in_bytes); + int stbi_write_bmp_to_func(stbi_write_func *func, void *context, int w, int h, int comp, const void *data); + int stbi_write_tga_to_func(stbi_write_func *func, void *context, int w, int h, int comp, const void *data); + int stbi_write_hdr_to_func(stbi_write_func *func, void *context, int w, int h, int comp, const float *data); + int stbi_write_jpg_to_func(stbi_write_func *func, void *context, int x, int y, int comp, const void *data, int quality); + + where the callback is: + void stbi_write_func(void *context, void *data, int size); + + You can configure it with these global variables: + int stbi_write_tga_with_rle; // defaults to true; set to 0 to disable RLE + int stbi_write_png_compression_level; // defaults to 8; set to higher for more compression + int stbi_write_force_png_filter; // defaults to -1; set to 0..5 to force a filter mode + + + You can define STBI_WRITE_NO_STDIO to disable the file variant of these + functions, so the library will not use stdio.h at all. However, this will + also disable HDR writing, because it requires stdio for formatted output. + + Each function returns 0 on failure and non-0 on success. + + The functions create an image file defined by the parameters. The image + is a rectangle of pixels stored from left-to-right, top-to-bottom. + Each pixel contains 'comp' channels of data stored interleaved with 8-bits + per channel, in the following order: 1=Y, 2=YA, 3=RGB, 4=RGBA. (Y is + monochrome color.) The rectangle is 'w' pixels wide and 'h' pixels tall. + The *data pointer points to the first byte of the top-left-most pixel. + For PNG, "stride_in_bytes" is the distance in bytes from the first byte of + a row of pixels to the first byte of the next row of pixels. + + PNG creates output files with the same number of components as the input. + The BMP format expands Y to RGB in the file format and does not + output alpha. + + PNG supports writing rectangles of data even when the bytes storing rows of + data are not consecutive in memory (e.g. sub-rectangles of a larger image), + by supplying the stride between the beginning of adjacent rows. The other + formats do not. (Thus you cannot write a native-format BMP through the BMP + writer, both because it is in BGR order and because it may have padding + at the end of the line.) + + PNG allows you to set the deflate compression level by setting the global + variable 'stbi_write_png_compression_level' (it defaults to 8). + + HDR expects linear float data. Since the format is always 32-bit rgb(e) + data, alpha (if provided) is discarded, and for monochrome data it is + replicated across all three channels. + + TGA supports RLE or non-RLE compressed data. To use non-RLE-compressed + data, set the global variable 'stbi_write_tga_with_rle' to 0. + + JPEG does ignore alpha channels in input data; quality is between 1 and 100. + Higher quality looks better but results in a bigger image. + JPEG baseline (no JPEG progressive). + +CREDITS: + + + Sean Barrett - PNG/BMP/TGA + Baldur Karlsson - HDR + Jean-Sebastien Guay - TGA monochrome + Tim Kelsey - misc enhancements + Alan Hickman - TGA RLE + Emmanuel Julien - initial file IO callback implementation + Jon Olick - original jo_jpeg.cpp code + Daniel Gibson - integrate JPEG, allow external zlib + Aarni Koskela - allow choosing PNG filter + + bugfixes: + github:Chribba + Guillaume Chereau + github:jry2 + github:romigrou + Sergio Gonzalez + Jonas Karlsson + Filip Wasil + Thatcher Ulrich + github:poppolopoppo + Patrick Boettcher + github:xeekworx + Cap Petschulat + Simon Rodriguez + Ivan Tikhonov + github:ignotion + Adam Schackart + Andrew Kensler + +LICENSE + + See end of file for license information. + +*/ + +#ifndef INCLUDE_STB_IMAGE_WRITE_H +#define INCLUDE_STB_IMAGE_WRITE_H + +#include + +// if STB_IMAGE_WRITE_STATIC causes problems, try defining STBIWDEF to 'inline' or 'static inline' +#ifndef STBIWDEF +#ifdef STB_IMAGE_WRITE_STATIC +#define STBIWDEF static +#else +#ifdef __cplusplus +#define STBIWDEF extern "C" +#else +#define STBIWDEF extern +#endif +#endif +#endif + +#ifndef STB_IMAGE_WRITE_STATIC // C++ forbids static forward declarations +STBIWDEF int stbi_write_tga_with_rle; +STBIWDEF int stbi_write_png_compression_level; +STBIWDEF int stbi_write_force_png_filter; +#endif + +#ifndef STBI_WRITE_NO_STDIO +STBIWDEF int stbi_write_png(char const *filename, int w, int h, int comp, const void *data, int stride_in_bytes); +STBIWDEF int stbi_write_bmp(char const *filename, int w, int h, int comp, const void *data); +STBIWDEF int stbi_write_tga(char const *filename, int w, int h, int comp, const void *data); +STBIWDEF int stbi_write_hdr(char const *filename, int w, int h, int comp, const float *data); +STBIWDEF int stbi_write_jpg(char const *filename, int x, int y, int comp, const void *data, int quality); + +#ifdef STBIW_WINDOWS_UTF8 +STBIWDEF int stbiw_convert_wchar_to_utf8(char *buffer, size_t bufferlen, const wchar_t* input); +#endif +#endif + +typedef void stbi_write_func(void *context, void *data, int size); + +STBIWDEF int stbi_write_png_to_func(stbi_write_func *func, void *context, int w, int h, int comp, const void *data, int stride_in_bytes); +STBIWDEF int stbi_write_bmp_to_func(stbi_write_func *func, void *context, int w, int h, int comp, const void *data); +STBIWDEF int stbi_write_tga_to_func(stbi_write_func *func, void *context, int w, int h, int comp, const void *data); +STBIWDEF int stbi_write_hdr_to_func(stbi_write_func *func, void *context, int w, int h, int comp, const float *data); +STBIWDEF int stbi_write_jpg_to_func(stbi_write_func *func, void *context, int x, int y, int comp, const void *data, int quality); + +STBIWDEF void stbi_flip_vertically_on_write(int flip_boolean); + +#endif//INCLUDE_STB_IMAGE_WRITE_H + +#ifdef STB_IMAGE_WRITE_IMPLEMENTATION + +#ifdef _WIN32 + #ifndef _CRT_SECURE_NO_WARNINGS + #define _CRT_SECURE_NO_WARNINGS + #endif + #ifndef _CRT_NONSTDC_NO_DEPRECATE + #define _CRT_NONSTDC_NO_DEPRECATE + #endif +#endif + +#ifndef STBI_WRITE_NO_STDIO +#include +#endif // STBI_WRITE_NO_STDIO + +#include +#include +#include +#include + +#if defined(STBIW_MALLOC) && defined(STBIW_FREE) && (defined(STBIW_REALLOC) || defined(STBIW_REALLOC_SIZED)) +// ok +#elif !defined(STBIW_MALLOC) && !defined(STBIW_FREE) && !defined(STBIW_REALLOC) && !defined(STBIW_REALLOC_SIZED) +// ok +#else +#error "Must define all or none of STBIW_MALLOC, STBIW_FREE, and STBIW_REALLOC (or STBIW_REALLOC_SIZED)." +#endif + +#ifndef STBIW_MALLOC +#define STBIW_MALLOC(sz) malloc(sz) +#define STBIW_REALLOC(p,newsz) realloc(p,newsz) +#define STBIW_FREE(p) free(p) +#endif + +#ifndef STBIW_REALLOC_SIZED +#define STBIW_REALLOC_SIZED(p,oldsz,newsz) STBIW_REALLOC(p,newsz) +#endif + + +#ifndef STBIW_MEMMOVE +#define STBIW_MEMMOVE(a,b,sz) memmove(a,b,sz) +#endif + + +#ifndef STBIW_ASSERT +#include +#define STBIW_ASSERT(x) assert(x) +#endif + +#define STBIW_UCHAR(x) (unsigned char) ((x) & 0xff) + +#ifdef STB_IMAGE_WRITE_STATIC +static int stbi_write_png_compression_level = 8; +static int stbi_write_tga_with_rle = 1; +static int stbi_write_force_png_filter = -1; +#else +int stbi_write_png_compression_level = 8; +int stbi_write_tga_with_rle = 1; +int stbi_write_force_png_filter = -1; +#endif + +static int stbi__flip_vertically_on_write = 0; + +STBIWDEF void stbi_flip_vertically_on_write(int flag) +{ + stbi__flip_vertically_on_write = flag; +} + +typedef struct +{ + stbi_write_func *func; + void *context; + unsigned char buffer[64]; + int buf_used; +} stbi__write_context; + +// initialize a callback-based context +static void stbi__start_write_callbacks(stbi__write_context *s, stbi_write_func *c, void *context) +{ + s->func = c; + s->context = context; +} + +#ifndef STBI_WRITE_NO_STDIO + +static void stbi__stdio_write(void *context, void *data, int size) +{ + fwrite(data,1,size,(FILE*) context); +} + +#if defined(_WIN32) && defined(STBIW_WINDOWS_UTF8) +#ifdef __cplusplus +#define STBIW_EXTERN extern "C" +#else +#define STBIW_EXTERN extern +#endif +STBIW_EXTERN __declspec(dllimport) int __stdcall MultiByteToWideChar(unsigned int cp, unsigned long flags, const char *str, int cbmb, wchar_t *widestr, int cchwide); +STBIW_EXTERN __declspec(dllimport) int __stdcall WideCharToMultiByte(unsigned int cp, unsigned long flags, const wchar_t *widestr, int cchwide, char *str, int cbmb, const char *defchar, int *used_default); + +STBIWDEF int stbiw_convert_wchar_to_utf8(char *buffer, size_t bufferlen, const wchar_t* input) +{ + return WideCharToMultiByte(65001 /* UTF8 */, 0, input, -1, buffer, (int) bufferlen, NULL, NULL); +} +#endif + +static FILE *stbiw__fopen(char const *filename, char const *mode) +{ + FILE *f; +#if defined(_WIN32) && defined(STBIW_WINDOWS_UTF8) + wchar_t wMode[64]; + wchar_t wFilename[1024]; + if (0 == MultiByteToWideChar(65001 /* UTF8 */, 0, filename, -1, wFilename, sizeof(wFilename)/sizeof(*wFilename))) + return 0; + + if (0 == MultiByteToWideChar(65001 /* UTF8 */, 0, mode, -1, wMode, sizeof(wMode)/sizeof(*wMode))) + return 0; + +#if defined(_MSC_VER) && _MSC_VER >= 1400 + if (0 != _wfopen_s(&f, wFilename, wMode)) + f = 0; +#else + f = _wfopen(wFilename, wMode); +#endif + +#elif defined(_MSC_VER) && _MSC_VER >= 1400 + if (0 != fopen_s(&f, filename, mode)) + f=0; +#else + f = fopen(filename, mode); +#endif + return f; +} + +static int stbi__start_write_file(stbi__write_context *s, const char *filename) +{ + FILE *f = stbiw__fopen(filename, "wb"); + stbi__start_write_callbacks(s, stbi__stdio_write, (void *) f); + return f != NULL; +} + +static void stbi__end_write_file(stbi__write_context *s) +{ + fclose((FILE *)s->context); +} + +#endif // !STBI_WRITE_NO_STDIO + +typedef unsigned int stbiw_uint32; +typedef int stb_image_write_test[sizeof(stbiw_uint32)==4 ? 1 : -1]; + +static void stbiw__writefv(stbi__write_context *s, const char *fmt, va_list v) +{ + while (*fmt) { + switch (*fmt++) { + case ' ': break; + case '1': { unsigned char x = STBIW_UCHAR(va_arg(v, int)); + s->func(s->context,&x,1); + break; } + case '2': { int x = va_arg(v,int); + unsigned char b[2]; + b[0] = STBIW_UCHAR(x); + b[1] = STBIW_UCHAR(x>>8); + s->func(s->context,b,2); + break; } + case '4': { stbiw_uint32 x = va_arg(v,int); + unsigned char b[4]; + b[0]=STBIW_UCHAR(x); + b[1]=STBIW_UCHAR(x>>8); + b[2]=STBIW_UCHAR(x>>16); + b[3]=STBIW_UCHAR(x>>24); + s->func(s->context,b,4); + break; } + default: + STBIW_ASSERT(0); + return; + } + } +} + +static void stbiw__writef(stbi__write_context *s, const char *fmt, ...) +{ + va_list v; + va_start(v, fmt); + stbiw__writefv(s, fmt, v); + va_end(v); +} + +static void stbiw__write_flush(stbi__write_context *s) +{ + if (s->buf_used) { + s->func(s->context, &s->buffer, s->buf_used); + s->buf_used = 0; + } +} + +static void stbiw__putc(stbi__write_context *s, unsigned char c) +{ + s->func(s->context, &c, 1); +} + +static void stbiw__write1(stbi__write_context *s, unsigned char a) +{ + if ((size_t)s->buf_used + 1 > sizeof(s->buffer)) + stbiw__write_flush(s); + s->buffer[s->buf_used++] = a; +} + +static void stbiw__write3(stbi__write_context *s, unsigned char a, unsigned char b, unsigned char c) +{ + int n; + if ((size_t)s->buf_used + 3 > sizeof(s->buffer)) + stbiw__write_flush(s); + n = s->buf_used; + s->buf_used = n+3; + s->buffer[n+0] = a; + s->buffer[n+1] = b; + s->buffer[n+2] = c; +} + +static void stbiw__write_pixel(stbi__write_context *s, int rgb_dir, int comp, int write_alpha, int expand_mono, unsigned char *d) +{ + unsigned char bg[3] = { 255, 0, 255}, px[3]; + int k; + + if (write_alpha < 0) + stbiw__write1(s, d[comp - 1]); + + switch (comp) { + case 2: // 2 pixels = mono + alpha, alpha is written separately, so same as 1-channel case + case 1: + if (expand_mono) + stbiw__write3(s, d[0], d[0], d[0]); // monochrome bmp + else + stbiw__write1(s, d[0]); // monochrome TGA + break; + case 4: + if (!write_alpha) { + // composite against pink background + for (k = 0; k < 3; ++k) + px[k] = bg[k] + ((d[k] - bg[k]) * d[3]) / 255; + stbiw__write3(s, px[1 - rgb_dir], px[1], px[1 + rgb_dir]); + break; + } + /* FALLTHROUGH */ + case 3: + stbiw__write3(s, d[1 - rgb_dir], d[1], d[1 + rgb_dir]); + break; + } + if (write_alpha > 0) + stbiw__write1(s, d[comp - 1]); +} + +static void stbiw__write_pixels(stbi__write_context *s, int rgb_dir, int vdir, int x, int y, int comp, void *data, int write_alpha, int scanline_pad, int expand_mono) +{ + stbiw_uint32 zero = 0; + int i,j, j_end; + + if (y <= 0) + return; + + if (stbi__flip_vertically_on_write) + vdir *= -1; + + if (vdir < 0) { + j_end = -1; j = y-1; + } else { + j_end = y; j = 0; + } + + for (; j != j_end; j += vdir) { + for (i=0; i < x; ++i) { + unsigned char *d = (unsigned char *) data + (j*x+i)*comp; + stbiw__write_pixel(s, rgb_dir, comp, write_alpha, expand_mono, d); + } + stbiw__write_flush(s); + s->func(s->context, &zero, scanline_pad); + } +} + +static int stbiw__outfile(stbi__write_context *s, int rgb_dir, int vdir, int x, int y, int comp, int expand_mono, void *data, int alpha, int pad, const char *fmt, ...) +{ + if (y < 0 || x < 0) { + return 0; + } else { + va_list v; + va_start(v, fmt); + stbiw__writefv(s, fmt, v); + va_end(v); + stbiw__write_pixels(s,rgb_dir,vdir,x,y,comp,data,alpha,pad, expand_mono); + return 1; + } +} + +static int stbi_write_bmp_core(stbi__write_context *s, int x, int y, int comp, const void *data) +{ + if (comp != 4) { + // write RGB bitmap + int pad = (-x*3) & 3; + return stbiw__outfile(s,-1,-1,x,y,comp,1,(void *) data,0,pad, + "11 4 22 4" "4 44 22 444444", + 'B', 'M', 14+40+(x*3+pad)*y, 0,0, 14+40, // file header + 40, x,y, 1,24, 0,0,0,0,0,0); // bitmap header + } else { + // RGBA bitmaps need a v4 header + // use BI_BITFIELDS mode with 32bpp and alpha mask + // (straight BI_RGB with alpha mask doesn't work in most readers) + return stbiw__outfile(s,-1,-1,x,y,comp,1,(void *)data,1,0, + "11 4 22 4" "4 44 22 444444 4444 4 444 444 444 444", + 'B', 'M', 14+108+x*y*4, 0, 0, 14+108, // file header + 108, x,y, 1,32, 3,0,0,0,0,0, 0xff0000,0xff00,0xff,0xff000000u, 0, 0,0,0, 0,0,0, 0,0,0, 0,0,0); // bitmap V4 header + } +} + +STBIWDEF int stbi_write_bmp_to_func(stbi_write_func *func, void *context, int x, int y, int comp, const void *data) +{ + stbi__write_context s = { 0 }; + stbi__start_write_callbacks(&s, func, context); + return stbi_write_bmp_core(&s, x, y, comp, data); +} + +#ifndef STBI_WRITE_NO_STDIO +STBIWDEF int stbi_write_bmp(char const *filename, int x, int y, int comp, const void *data) +{ + stbi__write_context s = { 0 }; + if (stbi__start_write_file(&s,filename)) { + int r = stbi_write_bmp_core(&s, x, y, comp, data); + stbi__end_write_file(&s); + return r; + } else + return 0; +} +#endif //!STBI_WRITE_NO_STDIO + +static int stbi_write_tga_core(stbi__write_context *s, int x, int y, int comp, void *data) +{ + int has_alpha = (comp == 2 || comp == 4); + int colorbytes = has_alpha ? comp-1 : comp; + int format = colorbytes < 2 ? 3 : 2; // 3 color channels (RGB/RGBA) = 2, 1 color channel (Y/YA) = 3 + + if (y < 0 || x < 0) + return 0; + + if (!stbi_write_tga_with_rle) { + return stbiw__outfile(s, -1, -1, x, y, comp, 0, (void *) data, has_alpha, 0, + "111 221 2222 11", 0, 0, format, 0, 0, 0, 0, 0, x, y, (colorbytes + has_alpha) * 8, has_alpha * 8); + } else { + int i,j,k; + int jend, jdir; + + stbiw__writef(s, "111 221 2222 11", 0,0,format+8, 0,0,0, 0,0,x,y, (colorbytes + has_alpha) * 8, has_alpha * 8); + + if (stbi__flip_vertically_on_write) { + j = 0; + jend = y; + jdir = 1; + } else { + j = y-1; + jend = -1; + jdir = -1; + } + for (; j != jend; j += jdir) { + unsigned char *row = (unsigned char *) data + j * x * comp; + int len; + + for (i = 0; i < x; i += len) { + unsigned char *begin = row + i * comp; + int diff = 1; + len = 1; + + if (i < x - 1) { + ++len; + diff = memcmp(begin, row + (i + 1) * comp, comp); + if (diff) { + const unsigned char *prev = begin; + for (k = i + 2; k < x && len < 128; ++k) { + if (memcmp(prev, row + k * comp, comp)) { + prev += comp; + ++len; + } else { + --len; + break; + } + } + } else { + for (k = i + 2; k < x && len < 128; ++k) { + if (!memcmp(begin, row + k * comp, comp)) { + ++len; + } else { + break; + } + } + } + } + + if (diff) { + unsigned char header = STBIW_UCHAR(len - 1); + stbiw__write1(s, header); + for (k = 0; k < len; ++k) { + stbiw__write_pixel(s, -1, comp, has_alpha, 0, begin + k * comp); + } + } else { + unsigned char header = STBIW_UCHAR(len - 129); + stbiw__write1(s, header); + stbiw__write_pixel(s, -1, comp, has_alpha, 0, begin); + } + } + } + stbiw__write_flush(s); + } + return 1; +} + +STBIWDEF int stbi_write_tga_to_func(stbi_write_func *func, void *context, int x, int y, int comp, const void *data) +{ + stbi__write_context s = { 0 }; + stbi__start_write_callbacks(&s, func, context); + return stbi_write_tga_core(&s, x, y, comp, (void *) data); +} + +#ifndef STBI_WRITE_NO_STDIO +STBIWDEF int stbi_write_tga(char const *filename, int x, int y, int comp, const void *data) +{ + stbi__write_context s = { 0 }; + if (stbi__start_write_file(&s,filename)) { + int r = stbi_write_tga_core(&s, x, y, comp, (void *) data); + stbi__end_write_file(&s); + return r; + } else + return 0; +} +#endif + +// ************************************************************************************************* +// Radiance RGBE HDR writer +// by Baldur Karlsson + +#define stbiw__max(a, b) ((a) > (b) ? (a) : (b)) + +#ifndef STBI_WRITE_NO_STDIO + +static void stbiw__linear_to_rgbe(unsigned char *rgbe, float *linear) +{ + int exponent; + float maxcomp = stbiw__max(linear[0], stbiw__max(linear[1], linear[2])); + + if (maxcomp < 1e-32f) { + rgbe[0] = rgbe[1] = rgbe[2] = rgbe[3] = 0; + } else { + float normalize = (float) frexp(maxcomp, &exponent) * 256.0f/maxcomp; + + rgbe[0] = (unsigned char)(linear[0] * normalize); + rgbe[1] = (unsigned char)(linear[1] * normalize); + rgbe[2] = (unsigned char)(linear[2] * normalize); + rgbe[3] = (unsigned char)(exponent + 128); + } +} + +static void stbiw__write_run_data(stbi__write_context *s, int length, unsigned char databyte) +{ + unsigned char lengthbyte = STBIW_UCHAR(length+128); + STBIW_ASSERT(length+128 <= 255); + s->func(s->context, &lengthbyte, 1); + s->func(s->context, &databyte, 1); +} + +static void stbiw__write_dump_data(stbi__write_context *s, int length, unsigned char *data) +{ + unsigned char lengthbyte = STBIW_UCHAR(length); + STBIW_ASSERT(length <= 128); // inconsistent with spec but consistent with official code + s->func(s->context, &lengthbyte, 1); + s->func(s->context, data, length); +} + +static void stbiw__write_hdr_scanline(stbi__write_context *s, int width, int ncomp, unsigned char *scratch, float *scanline) +{ + unsigned char scanlineheader[4] = { 2, 2, 0, 0 }; + unsigned char rgbe[4]; + float linear[3]; + int x; + + scanlineheader[2] = (width&0xff00)>>8; + scanlineheader[3] = (width&0x00ff); + + /* skip RLE for images too small or large */ + if (width < 8 || width >= 32768) { + for (x=0; x < width; x++) { + switch (ncomp) { + case 4: /* fallthrough */ + case 3: linear[2] = scanline[x*ncomp + 2]; + linear[1] = scanline[x*ncomp + 1]; + linear[0] = scanline[x*ncomp + 0]; + break; + default: + linear[0] = linear[1] = linear[2] = scanline[x*ncomp + 0]; + break; + } + stbiw__linear_to_rgbe(rgbe, linear); + s->func(s->context, rgbe, 4); + } + } else { + int c,r; + /* encode into scratch buffer */ + for (x=0; x < width; x++) { + switch(ncomp) { + case 4: /* fallthrough */ + case 3: linear[2] = scanline[x*ncomp + 2]; + linear[1] = scanline[x*ncomp + 1]; + linear[0] = scanline[x*ncomp + 0]; + break; + default: + linear[0] = linear[1] = linear[2] = scanline[x*ncomp + 0]; + break; + } + stbiw__linear_to_rgbe(rgbe, linear); + scratch[x + width*0] = rgbe[0]; + scratch[x + width*1] = rgbe[1]; + scratch[x + width*2] = rgbe[2]; + scratch[x + width*3] = rgbe[3]; + } + + s->func(s->context, scanlineheader, 4); + + /* RLE each component separately */ + for (c=0; c < 4; c++) { + unsigned char *comp = &scratch[width*c]; + + x = 0; + while (x < width) { + // find first run + r = x; + while (r+2 < width) { + if (comp[r] == comp[r+1] && comp[r] == comp[r+2]) + break; + ++r; + } + if (r+2 >= width) + r = width; + // dump up to first run + while (x < r) { + int len = r-x; + if (len > 128) len = 128; + stbiw__write_dump_data(s, len, &comp[x]); + x += len; + } + // if there's a run, output it + if (r+2 < width) { // same test as what we break out of in search loop, so only true if we break'd + // find next byte after run + while (r < width && comp[r] == comp[x]) + ++r; + // output run up to r + while (x < r) { + int len = r-x; + if (len > 127) len = 127; + stbiw__write_run_data(s, len, comp[x]); + x += len; + } + } + } + } + } +} + +static int stbi_write_hdr_core(stbi__write_context *s, int x, int y, int comp, float *data) +{ + if (y <= 0 || x <= 0 || data == NULL) + return 0; + else { + // Each component is stored separately. Allocate scratch space for full output scanline. + unsigned char *scratch = (unsigned char *) STBIW_MALLOC(x*4); + int i, len; + char buffer[128]; + char header[] = "#?RADIANCE\n# Written by stb_image_write.h\nFORMAT=32-bit_rle_rgbe\n"; + s->func(s->context, header, sizeof(header)-1); + +#ifdef __STDC_LIB_EXT1__ + len = sprintf_s(buffer, sizeof(buffer), "EXPOSURE= 1.0000000000000\n\n-Y %d +X %d\n", y, x); +#else + len = sprintf(buffer, "EXPOSURE= 1.0000000000000\n\n-Y %d +X %d\n", y, x); +#endif + s->func(s->context, buffer, len); + + for(i=0; i < y; i++) + stbiw__write_hdr_scanline(s, x, comp, scratch, data + comp*x*(stbi__flip_vertically_on_write ? y-1-i : i)); + STBIW_FREE(scratch); + return 1; + } +} + +STBIWDEF int stbi_write_hdr_to_func(stbi_write_func *func, void *context, int x, int y, int comp, const float *data) +{ + stbi__write_context s = { 0 }; + stbi__start_write_callbacks(&s, func, context); + return stbi_write_hdr_core(&s, x, y, comp, (float *) data); +} + +STBIWDEF int stbi_write_hdr(char const *filename, int x, int y, int comp, const float *data) +{ + stbi__write_context s = { 0 }; + if (stbi__start_write_file(&s,filename)) { + int r = stbi_write_hdr_core(&s, x, y, comp, (float *) data); + stbi__end_write_file(&s); + return r; + } else + return 0; +} +#endif // STBI_WRITE_NO_STDIO + + +////////////////////////////////////////////////////////////////////////////// +// +// PNG writer +// + +#ifndef STBIW_ZLIB_COMPRESS +// stretchy buffer; stbiw__sbpush() == vector<>::push_back() -- stbiw__sbcount() == vector<>::size() +#define stbiw__sbraw(a) ((int *) (void *) (a) - 2) +#define stbiw__sbm(a) stbiw__sbraw(a)[0] +#define stbiw__sbn(a) stbiw__sbraw(a)[1] + +#define stbiw__sbneedgrow(a,n) ((a)==0 || stbiw__sbn(a)+n >= stbiw__sbm(a)) +#define stbiw__sbmaybegrow(a,n) (stbiw__sbneedgrow(a,(n)) ? stbiw__sbgrow(a,n) : 0) +#define stbiw__sbgrow(a,n) stbiw__sbgrowf((void **) &(a), (n), sizeof(*(a))) + +#define stbiw__sbpush(a, v) (stbiw__sbmaybegrow(a,1), (a)[stbiw__sbn(a)++] = (v)) +#define stbiw__sbcount(a) ((a) ? stbiw__sbn(a) : 0) +#define stbiw__sbfree(a) ((a) ? STBIW_FREE(stbiw__sbraw(a)),0 : 0) + +static void *stbiw__sbgrowf(void **arr, int increment, int itemsize) +{ + int m = *arr ? 2*stbiw__sbm(*arr)+increment : increment+1; + void *p = STBIW_REALLOC_SIZED(*arr ? stbiw__sbraw(*arr) : 0, *arr ? (stbiw__sbm(*arr)*itemsize + sizeof(int)*2) : 0, itemsize * m + sizeof(int)*2); + STBIW_ASSERT(p); + if (p) { + if (!*arr) ((int *) p)[1] = 0; + *arr = (void *) ((int *) p + 2); + stbiw__sbm(*arr) = m; + } + return *arr; +} + +static unsigned char *stbiw__zlib_flushf(unsigned char *data, unsigned int *bitbuffer, int *bitcount) +{ + while (*bitcount >= 8) { + stbiw__sbpush(data, STBIW_UCHAR(*bitbuffer)); + *bitbuffer >>= 8; + *bitcount -= 8; + } + return data; +} + +static int stbiw__zlib_bitrev(int code, int codebits) +{ + int res=0; + while (codebits--) { + res = (res << 1) | (code & 1); + code >>= 1; + } + return res; +} + +static unsigned int stbiw__zlib_countm(unsigned char *a, unsigned char *b, int limit) +{ + int i; + for (i=0; i < limit && i < 258; ++i) + if (a[i] != b[i]) break; + return i; +} + +static unsigned int stbiw__zhash(unsigned char *data) +{ + stbiw_uint32 hash = data[0] + (data[1] << 8) + (data[2] << 16); + hash ^= hash << 3; + hash += hash >> 5; + hash ^= hash << 4; + hash += hash >> 17; + hash ^= hash << 25; + hash += hash >> 6; + return hash; +} + +#define stbiw__zlib_flush() (out = stbiw__zlib_flushf(out, &bitbuf, &bitcount)) +#define stbiw__zlib_add(code,codebits) \ + (bitbuf |= (code) << bitcount, bitcount += (codebits), stbiw__zlib_flush()) +#define stbiw__zlib_huffa(b,c) stbiw__zlib_add(stbiw__zlib_bitrev(b,c),c) +// default huffman tables +#define stbiw__zlib_huff1(n) stbiw__zlib_huffa(0x30 + (n), 8) +#define stbiw__zlib_huff2(n) stbiw__zlib_huffa(0x190 + (n)-144, 9) +#define stbiw__zlib_huff3(n) stbiw__zlib_huffa(0 + (n)-256,7) +#define stbiw__zlib_huff4(n) stbiw__zlib_huffa(0xc0 + (n)-280,8) +#define stbiw__zlib_huff(n) ((n) <= 143 ? stbiw__zlib_huff1(n) : (n) <= 255 ? stbiw__zlib_huff2(n) : (n) <= 279 ? stbiw__zlib_huff3(n) : stbiw__zlib_huff4(n)) +#define stbiw__zlib_huffb(n) ((n) <= 143 ? stbiw__zlib_huff1(n) : stbiw__zlib_huff2(n)) + +#define stbiw__ZHASH 16384 + +#endif // STBIW_ZLIB_COMPRESS + +STBIWDEF unsigned char * stbi_zlib_compress(unsigned char *data, int data_len, int *out_len, int quality) +{ +#ifdef STBIW_ZLIB_COMPRESS + // user provided a zlib compress implementation, use that + return STBIW_ZLIB_COMPRESS(data, data_len, out_len, quality); +#else // use builtin + static unsigned short lengthc[] = { 3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258, 259 }; + static unsigned char lengtheb[]= { 0,0,0,0,0,0,0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 0 }; + static unsigned short distc[] = { 1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577, 32768 }; + static unsigned char disteb[] = { 0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13 }; + unsigned int bitbuf=0; + int i,j, bitcount=0; + unsigned char *out = NULL; + unsigned char ***hash_table = (unsigned char***) STBIW_MALLOC(stbiw__ZHASH * sizeof(unsigned char**)); + if (hash_table == NULL) + return NULL; + if (quality < 5) quality = 5; + + stbiw__sbpush(out, 0x78); // DEFLATE 32K window + stbiw__sbpush(out, 0x5e); // FLEVEL = 1 + stbiw__zlib_add(1,1); // BFINAL = 1 + stbiw__zlib_add(1,2); // BTYPE = 1 -- fixed huffman + + for (i=0; i < stbiw__ZHASH; ++i) + hash_table[i] = NULL; + + i=0; + while (i < data_len-3) { + // hash next 3 bytes of data to be compressed + int h = stbiw__zhash(data+i)&(stbiw__ZHASH-1), best=3; + unsigned char *bestloc = 0; + unsigned char **hlist = hash_table[h]; + int n = stbiw__sbcount(hlist); + for (j=0; j < n; ++j) { + if (hlist[j]-data > i-32768) { // if entry lies within window + int d = stbiw__zlib_countm(hlist[j], data+i, data_len-i); + if (d >= best) { best=d; bestloc=hlist[j]; } + } + } + // when hash table entry is too long, delete half the entries + if (hash_table[h] && stbiw__sbn(hash_table[h]) == 2*quality) { + STBIW_MEMMOVE(hash_table[h], hash_table[h]+quality, sizeof(hash_table[h][0])*quality); + stbiw__sbn(hash_table[h]) = quality; + } + stbiw__sbpush(hash_table[h],data+i); + + if (bestloc) { + // "lazy matching" - check match at *next* byte, and if it's better, do cur byte as literal + h = stbiw__zhash(data+i+1)&(stbiw__ZHASH-1); + hlist = hash_table[h]; + n = stbiw__sbcount(hlist); + for (j=0; j < n; ++j) { + if (hlist[j]-data > i-32767) { + int e = stbiw__zlib_countm(hlist[j], data+i+1, data_len-i-1); + if (e > best) { // if next match is better, bail on current match + bestloc = NULL; + break; + } + } + } + } + + if (bestloc) { + int d = (int) (data+i - bestloc); // distance back + STBIW_ASSERT(d <= 32767 && best <= 258); + for (j=0; best > lengthc[j+1]-1; ++j); + stbiw__zlib_huff(j+257); + if (lengtheb[j]) stbiw__zlib_add(best - lengthc[j], lengtheb[j]); + for (j=0; d > distc[j+1]-1; ++j); + stbiw__zlib_add(stbiw__zlib_bitrev(j,5),5); + if (disteb[j]) stbiw__zlib_add(d - distc[j], disteb[j]); + i += best; + } else { + stbiw__zlib_huffb(data[i]); + ++i; + } + } + // write out final bytes + for (;i < data_len; ++i) + stbiw__zlib_huffb(data[i]); + stbiw__zlib_huff(256); // end of block + // pad with 0 bits to byte boundary + while (bitcount) + stbiw__zlib_add(0,1); + + for (i=0; i < stbiw__ZHASH; ++i) + (void) stbiw__sbfree(hash_table[i]); + STBIW_FREE(hash_table); + + // store uncompressed instead if compression was worse + if (stbiw__sbn(out) > data_len + 2 + ((data_len+32766)/32767)*5) { + stbiw__sbn(out) = 2; // truncate to DEFLATE 32K window and FLEVEL = 1 + for (j = 0; j < data_len;) { + int blocklen = data_len - j; + if (blocklen > 32767) blocklen = 32767; + stbiw__sbpush(out, data_len - j == blocklen); // BFINAL = ?, BTYPE = 0 -- no compression + stbiw__sbpush(out, STBIW_UCHAR(blocklen)); // LEN + stbiw__sbpush(out, STBIW_UCHAR(blocklen >> 8)); + stbiw__sbpush(out, STBIW_UCHAR(~blocklen)); // NLEN + stbiw__sbpush(out, STBIW_UCHAR(~blocklen >> 8)); + memcpy(out+stbiw__sbn(out), data+j, blocklen); + stbiw__sbn(out) += blocklen; + j += blocklen; + } + } + + { + // compute adler32 on input + unsigned int s1=1, s2=0; + int blocklen = (int) (data_len % 5552); + j=0; + while (j < data_len) { + for (i=0; i < blocklen; ++i) { s1 += data[j+i]; s2 += s1; } + s1 %= 65521; s2 %= 65521; + j += blocklen; + blocklen = 5552; + } + stbiw__sbpush(out, STBIW_UCHAR(s2 >> 8)); + stbiw__sbpush(out, STBIW_UCHAR(s2)); + stbiw__sbpush(out, STBIW_UCHAR(s1 >> 8)); + stbiw__sbpush(out, STBIW_UCHAR(s1)); + } + *out_len = stbiw__sbn(out); + // make returned pointer freeable + STBIW_MEMMOVE(stbiw__sbraw(out), out, *out_len); + return (unsigned char *) stbiw__sbraw(out); +#endif // STBIW_ZLIB_COMPRESS +} + +static unsigned int stbiw__crc32(unsigned char *buffer, int len) +{ +#ifdef STBIW_CRC32 + return STBIW_CRC32(buffer, len); +#else + static unsigned int crc_table[256] = + { + 0x00000000, 0x77073096, 0xEE0E612C, 0x990951BA, 0x076DC419, 0x706AF48F, 0xE963A535, 0x9E6495A3, + 0x0eDB8832, 0x79DCB8A4, 0xE0D5E91E, 0x97D2D988, 0x09B64C2B, 0x7EB17CBD, 0xE7B82D07, 0x90BF1D91, + 0x1DB71064, 0x6AB020F2, 0xF3B97148, 0x84BE41DE, 0x1ADAD47D, 0x6DDDE4EB, 0xF4D4B551, 0x83D385C7, + 0x136C9856, 0x646BA8C0, 0xFD62F97A, 0x8A65C9EC, 0x14015C4F, 0x63066CD9, 0xFA0F3D63, 0x8D080DF5, + 0x3B6E20C8, 0x4C69105E, 0xD56041E4, 0xA2677172, 0x3C03E4D1, 0x4B04D447, 0xD20D85FD, 0xA50AB56B, + 0x35B5A8FA, 0x42B2986C, 0xDBBBC9D6, 0xACBCF940, 0x32D86CE3, 0x45DF5C75, 0xDCD60DCF, 0xABD13D59, + 0x26D930AC, 0x51DE003A, 0xC8D75180, 0xBFD06116, 0x21B4F4B5, 0x56B3C423, 0xCFBA9599, 0xB8BDA50F, + 0x2802B89E, 0x5F058808, 0xC60CD9B2, 0xB10BE924, 0x2F6F7C87, 0x58684C11, 0xC1611DAB, 0xB6662D3D, + 0x76DC4190, 0x01DB7106, 0x98D220BC, 0xEFD5102A, 0x71B18589, 0x06B6B51F, 0x9FBFE4A5, 0xE8B8D433, + 0x7807C9A2, 0x0F00F934, 0x9609A88E, 0xE10E9818, 0x7F6A0DBB, 0x086D3D2D, 0x91646C97, 0xE6635C01, + 0x6B6B51F4, 0x1C6C6162, 0x856530D8, 0xF262004E, 0x6C0695ED, 0x1B01A57B, 0x8208F4C1, 0xF50FC457, + 0x65B0D9C6, 0x12B7E950, 0x8BBEB8EA, 0xFCB9887C, 0x62DD1DDF, 0x15DA2D49, 0x8CD37CF3, 0xFBD44C65, + 0x4DB26158, 0x3AB551CE, 0xA3BC0074, 0xD4BB30E2, 0x4ADFA541, 0x3DD895D7, 0xA4D1C46D, 0xD3D6F4FB, + 0x4369E96A, 0x346ED9FC, 0xAD678846, 0xDA60B8D0, 0x44042D73, 0x33031DE5, 0xAA0A4C5F, 0xDD0D7CC9, + 0x5005713C, 0x270241AA, 0xBE0B1010, 0xC90C2086, 0x5768B525, 0x206F85B3, 0xB966D409, 0xCE61E49F, + 0x5EDEF90E, 0x29D9C998, 0xB0D09822, 0xC7D7A8B4, 0x59B33D17, 0x2EB40D81, 0xB7BD5C3B, 0xC0BA6CAD, + 0xEDB88320, 0x9ABFB3B6, 0x03B6E20C, 0x74B1D29A, 0xEAD54739, 0x9DD277AF, 0x04DB2615, 0x73DC1683, + 0xE3630B12, 0x94643B84, 0x0D6D6A3E, 0x7A6A5AA8, 0xE40ECF0B, 0x9309FF9D, 0x0A00AE27, 0x7D079EB1, + 0xF00F9344, 0x8708A3D2, 0x1E01F268, 0x6906C2FE, 0xF762575D, 0x806567CB, 0x196C3671, 0x6E6B06E7, + 0xFED41B76, 0x89D32BE0, 0x10DA7A5A, 0x67DD4ACC, 0xF9B9DF6F, 0x8EBEEFF9, 0x17B7BE43, 0x60B08ED5, + 0xD6D6A3E8, 0xA1D1937E, 0x38D8C2C4, 0x4FDFF252, 0xD1BB67F1, 0xA6BC5767, 0x3FB506DD, 0x48B2364B, + 0xD80D2BDA, 0xAF0A1B4C, 0x36034AF6, 0x41047A60, 0xDF60EFC3, 0xA867DF55, 0x316E8EEF, 0x4669BE79, + 0xCB61B38C, 0xBC66831A, 0x256FD2A0, 0x5268E236, 0xCC0C7795, 0xBB0B4703, 0x220216B9, 0x5505262F, + 0xC5BA3BBE, 0xB2BD0B28, 0x2BB45A92, 0x5CB36A04, 0xC2D7FFA7, 0xB5D0CF31, 0x2CD99E8B, 0x5BDEAE1D, + 0x9B64C2B0, 0xEC63F226, 0x756AA39C, 0x026D930A, 0x9C0906A9, 0xEB0E363F, 0x72076785, 0x05005713, + 0x95BF4A82, 0xE2B87A14, 0x7BB12BAE, 0x0CB61B38, 0x92D28E9B, 0xE5D5BE0D, 0x7CDCEFB7, 0x0BDBDF21, + 0x86D3D2D4, 0xF1D4E242, 0x68DDB3F8, 0x1FDA836E, 0x81BE16CD, 0xF6B9265B, 0x6FB077E1, 0x18B74777, + 0x88085AE6, 0xFF0F6A70, 0x66063BCA, 0x11010B5C, 0x8F659EFF, 0xF862AE69, 0x616BFFD3, 0x166CCF45, + 0xA00AE278, 0xD70DD2EE, 0x4E048354, 0x3903B3C2, 0xA7672661, 0xD06016F7, 0x4969474D, 0x3E6E77DB, + 0xAED16A4A, 0xD9D65ADC, 0x40DF0B66, 0x37D83BF0, 0xA9BCAE53, 0xDEBB9EC5, 0x47B2CF7F, 0x30B5FFE9, + 0xBDBDF21C, 0xCABAC28A, 0x53B39330, 0x24B4A3A6, 0xBAD03605, 0xCDD70693, 0x54DE5729, 0x23D967BF, + 0xB3667A2E, 0xC4614AB8, 0x5D681B02, 0x2A6F2B94, 0xB40BBE37, 0xC30C8EA1, 0x5A05DF1B, 0x2D02EF8D + }; + + unsigned int crc = ~0u; + int i; + for (i=0; i < len; ++i) + crc = (crc >> 8) ^ crc_table[buffer[i] ^ (crc & 0xff)]; + return ~crc; +#endif +} + +#define stbiw__wpng4(o,a,b,c,d) ((o)[0]=STBIW_UCHAR(a),(o)[1]=STBIW_UCHAR(b),(o)[2]=STBIW_UCHAR(c),(o)[3]=STBIW_UCHAR(d),(o)+=4) +#define stbiw__wp32(data,v) stbiw__wpng4(data, (v)>>24,(v)>>16,(v)>>8,(v)); +#define stbiw__wptag(data,s) stbiw__wpng4(data, s[0],s[1],s[2],s[3]) + +static void stbiw__wpcrc(unsigned char **data, int len) +{ + unsigned int crc = stbiw__crc32(*data - len - 4, len+4); + stbiw__wp32(*data, crc); +} + +static unsigned char stbiw__paeth(int a, int b, int c) +{ + int p = a + b - c, pa = abs(p-a), pb = abs(p-b), pc = abs(p-c); + if (pa <= pb && pa <= pc) return STBIW_UCHAR(a); + if (pb <= pc) return STBIW_UCHAR(b); + return STBIW_UCHAR(c); +} + +// @OPTIMIZE: provide an option that always forces left-predict or paeth predict +static void stbiw__encode_png_line(unsigned char *pixels, int stride_bytes, int width, int height, int y, int n, int filter_type, signed char *line_buffer) +{ + static int mapping[] = { 0,1,2,3,4 }; + static int firstmap[] = { 0,1,0,5,6 }; + int *mymap = (y != 0) ? mapping : firstmap; + int i; + int type = mymap[filter_type]; + unsigned char *z = pixels + stride_bytes * (stbi__flip_vertically_on_write ? height-1-y : y); + int signed_stride = stbi__flip_vertically_on_write ? -stride_bytes : stride_bytes; + + if (type==0) { + memcpy(line_buffer, z, width*n); + return; + } + + // first loop isn't optimized since it's just one pixel + for (i = 0; i < n; ++i) { + switch (type) { + case 1: line_buffer[i] = z[i]; break; + case 2: line_buffer[i] = z[i] - z[i-signed_stride]; break; + case 3: line_buffer[i] = z[i] - (z[i-signed_stride]>>1); break; + case 4: line_buffer[i] = (signed char) (z[i] - stbiw__paeth(0,z[i-signed_stride],0)); break; + case 5: line_buffer[i] = z[i]; break; + case 6: line_buffer[i] = z[i]; break; + } + } + switch (type) { + case 1: for (i=n; i < width*n; ++i) line_buffer[i] = z[i] - z[i-n]; break; + case 2: for (i=n; i < width*n; ++i) line_buffer[i] = z[i] - z[i-signed_stride]; break; + case 3: for (i=n; i < width*n; ++i) line_buffer[i] = z[i] - ((z[i-n] + z[i-signed_stride])>>1); break; + case 4: for (i=n; i < width*n; ++i) line_buffer[i] = z[i] - stbiw__paeth(z[i-n], z[i-signed_stride], z[i-signed_stride-n]); break; + case 5: for (i=n; i < width*n; ++i) line_buffer[i] = z[i] - (z[i-n]>>1); break; + case 6: for (i=n; i < width*n; ++i) line_buffer[i] = z[i] - stbiw__paeth(z[i-n], 0,0); break; + } +} + +STBIWDEF unsigned char *stbi_write_png_to_mem(const unsigned char *pixels, int stride_bytes, int x, int y, int n, int *out_len) +{ + int force_filter = stbi_write_force_png_filter; + int ctype[5] = { -1, 0, 4, 2, 6 }; + unsigned char sig[8] = { 137,80,78,71,13,10,26,10 }; + unsigned char *out,*o, *filt, *zlib; + signed char *line_buffer; + int j,zlen; + + if (stride_bytes == 0) + stride_bytes = x * n; + + if (force_filter >= 5) { + force_filter = -1; + } + + filt = (unsigned char *) STBIW_MALLOC((x*n+1) * y); if (!filt) return 0; + line_buffer = (signed char *) STBIW_MALLOC(x * n); if (!line_buffer) { STBIW_FREE(filt); return 0; } + for (j=0; j < y; ++j) { + int filter_type; + if (force_filter > -1) { + filter_type = force_filter; + stbiw__encode_png_line((unsigned char*)(pixels), stride_bytes, x, y, j, n, force_filter, line_buffer); + } else { // Estimate the best filter by running through all of them: + int best_filter = 0, best_filter_val = 0x7fffffff, est, i; + for (filter_type = 0; filter_type < 5; filter_type++) { + stbiw__encode_png_line((unsigned char*)(pixels), stride_bytes, x, y, j, n, filter_type, line_buffer); + + // Estimate the entropy of the line using this filter; the less, the better. + est = 0; + for (i = 0; i < x*n; ++i) { + est += abs((signed char) line_buffer[i]); + } + if (est < best_filter_val) { + best_filter_val = est; + best_filter = filter_type; + } + } + if (filter_type != best_filter) { // If the last iteration already got us the best filter, don't redo it + stbiw__encode_png_line((unsigned char*)(pixels), stride_bytes, x, y, j, n, best_filter, line_buffer); + filter_type = best_filter; + } + } + // when we get here, filter_type contains the filter type, and line_buffer contains the data + filt[j*(x*n+1)] = (unsigned char) filter_type; + STBIW_MEMMOVE(filt+j*(x*n+1)+1, line_buffer, x*n); + } + STBIW_FREE(line_buffer); + zlib = stbi_zlib_compress(filt, y*( x*n+1), &zlen, stbi_write_png_compression_level); + STBIW_FREE(filt); + if (!zlib) return 0; + + // each tag requires 12 bytes of overhead + out = (unsigned char *) STBIW_MALLOC(8 + 12+13 + 12+zlen + 12); + if (!out) return 0; + *out_len = 8 + 12+13 + 12+zlen + 12; + + o=out; + STBIW_MEMMOVE(o,sig,8); o+= 8; + stbiw__wp32(o, 13); // header length + stbiw__wptag(o, "IHDR"); + stbiw__wp32(o, x); + stbiw__wp32(o, y); + *o++ = 8; + *o++ = STBIW_UCHAR(ctype[n]); + *o++ = 0; + *o++ = 0; + *o++ = 0; + stbiw__wpcrc(&o,13); + + stbiw__wp32(o, zlen); + stbiw__wptag(o, "IDAT"); + STBIW_MEMMOVE(o, zlib, zlen); + o += zlen; + STBIW_FREE(zlib); + stbiw__wpcrc(&o, zlen); + + stbiw__wp32(o,0); + stbiw__wptag(o, "IEND"); + stbiw__wpcrc(&o,0); + + STBIW_ASSERT(o == out + *out_len); + + return out; +} + +#ifndef STBI_WRITE_NO_STDIO +STBIWDEF int stbi_write_png(char const *filename, int x, int y, int comp, const void *data, int stride_bytes) +{ + FILE *f; + int len; + unsigned char *png = stbi_write_png_to_mem((const unsigned char *) data, stride_bytes, x, y, comp, &len); + if (png == NULL) return 0; + + f = stbiw__fopen(filename, "wb"); + if (!f) { STBIW_FREE(png); return 0; } + fwrite(png, 1, len, f); + fclose(f); + STBIW_FREE(png); + return 1; +} +#endif + +STBIWDEF int stbi_write_png_to_func(stbi_write_func *func, void *context, int x, int y, int comp, const void *data, int stride_bytes) +{ + int len; + unsigned char *png = stbi_write_png_to_mem((const unsigned char *) data, stride_bytes, x, y, comp, &len); + if (png == NULL) return 0; + func(context, png, len); + STBIW_FREE(png); + return 1; +} + + +/* *************************************************************************** + * + * JPEG writer + * + * This is based on Jon Olick's jo_jpeg.cpp: + * public domain Simple, Minimalistic JPEG writer - http://www.jonolick.com/code.html + */ + +static const unsigned char stbiw__jpg_ZigZag[] = { 0,1,5,6,14,15,27,28,2,4,7,13,16,26,29,42,3,8,12,17,25,30,41,43,9,11,18, + 24,31,40,44,53,10,19,23,32,39,45,52,54,20,22,33,38,46,51,55,60,21,34,37,47,50,56,59,61,35,36,48,49,57,58,62,63 }; + +static void stbiw__jpg_writeBits(stbi__write_context *s, int *bitBufP, int *bitCntP, const unsigned short *bs) { + int bitBuf = *bitBufP, bitCnt = *bitCntP; + bitCnt += bs[1]; + bitBuf |= bs[0] << (24 - bitCnt); + while(bitCnt >= 8) { + unsigned char c = (bitBuf >> 16) & 255; + stbiw__putc(s, c); + if(c == 255) { + stbiw__putc(s, 0); + } + bitBuf <<= 8; + bitCnt -= 8; + } + *bitBufP = bitBuf; + *bitCntP = bitCnt; +} + +static void stbiw__jpg_DCT(float *d0p, float *d1p, float *d2p, float *d3p, float *d4p, float *d5p, float *d6p, float *d7p) { + float d0 = *d0p, d1 = *d1p, d2 = *d2p, d3 = *d3p, d4 = *d4p, d5 = *d5p, d6 = *d6p, d7 = *d7p; + float z1, z2, z3, z4, z5, z11, z13; + + float tmp0 = d0 + d7; + float tmp7 = d0 - d7; + float tmp1 = d1 + d6; + float tmp6 = d1 - d6; + float tmp2 = d2 + d5; + float tmp5 = d2 - d5; + float tmp3 = d3 + d4; + float tmp4 = d3 - d4; + + // Even part + float tmp10 = tmp0 + tmp3; // phase 2 + float tmp13 = tmp0 - tmp3; + float tmp11 = tmp1 + tmp2; + float tmp12 = tmp1 - tmp2; + + d0 = tmp10 + tmp11; // phase 3 + d4 = tmp10 - tmp11; + + z1 = (tmp12 + tmp13) * 0.707106781f; // c4 + d2 = tmp13 + z1; // phase 5 + d6 = tmp13 - z1; + + // Odd part + tmp10 = tmp4 + tmp5; // phase 2 + tmp11 = tmp5 + tmp6; + tmp12 = tmp6 + tmp7; + + // The rotator is modified from fig 4-8 to avoid extra negations. + z5 = (tmp10 - tmp12) * 0.382683433f; // c6 + z2 = tmp10 * 0.541196100f + z5; // c2-c6 + z4 = tmp12 * 1.306562965f + z5; // c2+c6 + z3 = tmp11 * 0.707106781f; // c4 + + z11 = tmp7 + z3; // phase 5 + z13 = tmp7 - z3; + + *d5p = z13 + z2; // phase 6 + *d3p = z13 - z2; + *d1p = z11 + z4; + *d7p = z11 - z4; + + *d0p = d0; *d2p = d2; *d4p = d4; *d6p = d6; +} + +static void stbiw__jpg_calcBits(int val, unsigned short bits[2]) { + int tmp1 = val < 0 ? -val : val; + val = val < 0 ? val-1 : val; + bits[1] = 1; + while(tmp1 >>= 1) { + ++bits[1]; + } + bits[0] = val & ((1<0)&&(DU[end0pos]==0); --end0pos) { + } + // end0pos = first element in reverse order !=0 + if(end0pos == 0) { + stbiw__jpg_writeBits(s, bitBuf, bitCnt, EOB); + return DU[0]; + } + for(i = 1; i <= end0pos; ++i) { + int startpos = i; + int nrzeroes; + unsigned short bits[2]; + for (; DU[i]==0 && i<=end0pos; ++i) { + } + nrzeroes = i-startpos; + if ( nrzeroes >= 16 ) { + int lng = nrzeroes>>4; + int nrmarker; + for (nrmarker=1; nrmarker <= lng; ++nrmarker) + stbiw__jpg_writeBits(s, bitBuf, bitCnt, M16zeroes); + nrzeroes &= 15; + } + stbiw__jpg_calcBits(DU[i], bits); + stbiw__jpg_writeBits(s, bitBuf, bitCnt, HTAC[(nrzeroes<<4)+bits[1]]); + stbiw__jpg_writeBits(s, bitBuf, bitCnt, bits); + } + if(end0pos != 63) { + stbiw__jpg_writeBits(s, bitBuf, bitCnt, EOB); + } + return DU[0]; +} + +static int stbi_write_jpg_core(stbi__write_context *s, int width, int height, int comp, const void* data, int quality) { + // Constants that don't pollute global namespace + static const unsigned char std_dc_luminance_nrcodes[] = {0,0,1,5,1,1,1,1,1,1,0,0,0,0,0,0,0}; + static const unsigned char std_dc_luminance_values[] = {0,1,2,3,4,5,6,7,8,9,10,11}; + static const unsigned char std_ac_luminance_nrcodes[] = {0,0,2,1,3,3,2,4,3,5,5,4,4,0,0,1,0x7d}; + static const unsigned char std_ac_luminance_values[] = { + 0x01,0x02,0x03,0x00,0x04,0x11,0x05,0x12,0x21,0x31,0x41,0x06,0x13,0x51,0x61,0x07,0x22,0x71,0x14,0x32,0x81,0x91,0xa1,0x08, + 0x23,0x42,0xb1,0xc1,0x15,0x52,0xd1,0xf0,0x24,0x33,0x62,0x72,0x82,0x09,0x0a,0x16,0x17,0x18,0x19,0x1a,0x25,0x26,0x27,0x28, + 0x29,0x2a,0x34,0x35,0x36,0x37,0x38,0x39,0x3a,0x43,0x44,0x45,0x46,0x47,0x48,0x49,0x4a,0x53,0x54,0x55,0x56,0x57,0x58,0x59, + 0x5a,0x63,0x64,0x65,0x66,0x67,0x68,0x69,0x6a,0x73,0x74,0x75,0x76,0x77,0x78,0x79,0x7a,0x83,0x84,0x85,0x86,0x87,0x88,0x89, + 0x8a,0x92,0x93,0x94,0x95,0x96,0x97,0x98,0x99,0x9a,0xa2,0xa3,0xa4,0xa5,0xa6,0xa7,0xa8,0xa9,0xaa,0xb2,0xb3,0xb4,0xb5,0xb6, + 0xb7,0xb8,0xb9,0xba,0xc2,0xc3,0xc4,0xc5,0xc6,0xc7,0xc8,0xc9,0xca,0xd2,0xd3,0xd4,0xd5,0xd6,0xd7,0xd8,0xd9,0xda,0xe1,0xe2, + 0xe3,0xe4,0xe5,0xe6,0xe7,0xe8,0xe9,0xea,0xf1,0xf2,0xf3,0xf4,0xf5,0xf6,0xf7,0xf8,0xf9,0xfa + }; + static const unsigned char std_dc_chrominance_nrcodes[] = {0,0,3,1,1,1,1,1,1,1,1,1,0,0,0,0,0}; + static const unsigned char std_dc_chrominance_values[] = {0,1,2,3,4,5,6,7,8,9,10,11}; + static const unsigned char std_ac_chrominance_nrcodes[] = {0,0,2,1,2,4,4,3,4,7,5,4,4,0,1,2,0x77}; + static const unsigned char std_ac_chrominance_values[] = { + 0x00,0x01,0x02,0x03,0x11,0x04,0x05,0x21,0x31,0x06,0x12,0x41,0x51,0x07,0x61,0x71,0x13,0x22,0x32,0x81,0x08,0x14,0x42,0x91, + 0xa1,0xb1,0xc1,0x09,0x23,0x33,0x52,0xf0,0x15,0x62,0x72,0xd1,0x0a,0x16,0x24,0x34,0xe1,0x25,0xf1,0x17,0x18,0x19,0x1a,0x26, + 0x27,0x28,0x29,0x2a,0x35,0x36,0x37,0x38,0x39,0x3a,0x43,0x44,0x45,0x46,0x47,0x48,0x49,0x4a,0x53,0x54,0x55,0x56,0x57,0x58, + 0x59,0x5a,0x63,0x64,0x65,0x66,0x67,0x68,0x69,0x6a,0x73,0x74,0x75,0x76,0x77,0x78,0x79,0x7a,0x82,0x83,0x84,0x85,0x86,0x87, + 0x88,0x89,0x8a,0x92,0x93,0x94,0x95,0x96,0x97,0x98,0x99,0x9a,0xa2,0xa3,0xa4,0xa5,0xa6,0xa7,0xa8,0xa9,0xaa,0xb2,0xb3,0xb4, + 0xb5,0xb6,0xb7,0xb8,0xb9,0xba,0xc2,0xc3,0xc4,0xc5,0xc6,0xc7,0xc8,0xc9,0xca,0xd2,0xd3,0xd4,0xd5,0xd6,0xd7,0xd8,0xd9,0xda, + 0xe2,0xe3,0xe4,0xe5,0xe6,0xe7,0xe8,0xe9,0xea,0xf2,0xf3,0xf4,0xf5,0xf6,0xf7,0xf8,0xf9,0xfa + }; + // Huffman tables + static const unsigned short YDC_HT[256][2] = { {0,2},{2,3},{3,3},{4,3},{5,3},{6,3},{14,4},{30,5},{62,6},{126,7},{254,8},{510,9}}; + static const unsigned short UVDC_HT[256][2] = { {0,2},{1,2},{2,2},{6,3},{14,4},{30,5},{62,6},{126,7},{254,8},{510,9},{1022,10},{2046,11}}; + static const unsigned short YAC_HT[256][2] = { + {10,4},{0,2},{1,2},{4,3},{11,4},{26,5},{120,7},{248,8},{1014,10},{65410,16},{65411,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, + {12,4},{27,5},{121,7},{502,9},{2038,11},{65412,16},{65413,16},{65414,16},{65415,16},{65416,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, + {28,5},{249,8},{1015,10},{4084,12},{65417,16},{65418,16},{65419,16},{65420,16},{65421,16},{65422,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, + {58,6},{503,9},{4085,12},{65423,16},{65424,16},{65425,16},{65426,16},{65427,16},{65428,16},{65429,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, + {59,6},{1016,10},{65430,16},{65431,16},{65432,16},{65433,16},{65434,16},{65435,16},{65436,16},{65437,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, + {122,7},{2039,11},{65438,16},{65439,16},{65440,16},{65441,16},{65442,16},{65443,16},{65444,16},{65445,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, + {123,7},{4086,12},{65446,16},{65447,16},{65448,16},{65449,16},{65450,16},{65451,16},{65452,16},{65453,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, + {250,8},{4087,12},{65454,16},{65455,16},{65456,16},{65457,16},{65458,16},{65459,16},{65460,16},{65461,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, + {504,9},{32704,15},{65462,16},{65463,16},{65464,16},{65465,16},{65466,16},{65467,16},{65468,16},{65469,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, + {505,9},{65470,16},{65471,16},{65472,16},{65473,16},{65474,16},{65475,16},{65476,16},{65477,16},{65478,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, + {506,9},{65479,16},{65480,16},{65481,16},{65482,16},{65483,16},{65484,16},{65485,16},{65486,16},{65487,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, + {1017,10},{65488,16},{65489,16},{65490,16},{65491,16},{65492,16},{65493,16},{65494,16},{65495,16},{65496,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, + {1018,10},{65497,16},{65498,16},{65499,16},{65500,16},{65501,16},{65502,16},{65503,16},{65504,16},{65505,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, + {2040,11},{65506,16},{65507,16},{65508,16},{65509,16},{65510,16},{65511,16},{65512,16},{65513,16},{65514,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, + {65515,16},{65516,16},{65517,16},{65518,16},{65519,16},{65520,16},{65521,16},{65522,16},{65523,16},{65524,16},{0,0},{0,0},{0,0},{0,0},{0,0}, + {2041,11},{65525,16},{65526,16},{65527,16},{65528,16},{65529,16},{65530,16},{65531,16},{65532,16},{65533,16},{65534,16},{0,0},{0,0},{0,0},{0,0},{0,0} + }; + static const unsigned short UVAC_HT[256][2] = { + {0,2},{1,2},{4,3},{10,4},{24,5},{25,5},{56,6},{120,7},{500,9},{1014,10},{4084,12},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, + {11,4},{57,6},{246,8},{501,9},{2038,11},{4085,12},{65416,16},{65417,16},{65418,16},{65419,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, + {26,5},{247,8},{1015,10},{4086,12},{32706,15},{65420,16},{65421,16},{65422,16},{65423,16},{65424,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, + {27,5},{248,8},{1016,10},{4087,12},{65425,16},{65426,16},{65427,16},{65428,16},{65429,16},{65430,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, + {58,6},{502,9},{65431,16},{65432,16},{65433,16},{65434,16},{65435,16},{65436,16},{65437,16},{65438,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, + {59,6},{1017,10},{65439,16},{65440,16},{65441,16},{65442,16},{65443,16},{65444,16},{65445,16},{65446,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, + {121,7},{2039,11},{65447,16},{65448,16},{65449,16},{65450,16},{65451,16},{65452,16},{65453,16},{65454,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, + {122,7},{2040,11},{65455,16},{65456,16},{65457,16},{65458,16},{65459,16},{65460,16},{65461,16},{65462,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, + {249,8},{65463,16},{65464,16},{65465,16},{65466,16},{65467,16},{65468,16},{65469,16},{65470,16},{65471,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, + {503,9},{65472,16},{65473,16},{65474,16},{65475,16},{65476,16},{65477,16},{65478,16},{65479,16},{65480,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, + {504,9},{65481,16},{65482,16},{65483,16},{65484,16},{65485,16},{65486,16},{65487,16},{65488,16},{65489,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, + {505,9},{65490,16},{65491,16},{65492,16},{65493,16},{65494,16},{65495,16},{65496,16},{65497,16},{65498,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, + {506,9},{65499,16},{65500,16},{65501,16},{65502,16},{65503,16},{65504,16},{65505,16},{65506,16},{65507,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, + {2041,11},{65508,16},{65509,16},{65510,16},{65511,16},{65512,16},{65513,16},{65514,16},{65515,16},{65516,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, + {16352,14},{65517,16},{65518,16},{65519,16},{65520,16},{65521,16},{65522,16},{65523,16},{65524,16},{65525,16},{0,0},{0,0},{0,0},{0,0},{0,0}, + {1018,10},{32707,15},{65526,16},{65527,16},{65528,16},{65529,16},{65530,16},{65531,16},{65532,16},{65533,16},{65534,16},{0,0},{0,0},{0,0},{0,0},{0,0} + }; + static const int YQT[] = {16,11,10,16,24,40,51,61,12,12,14,19,26,58,60,55,14,13,16,24,40,57,69,56,14,17,22,29,51,87,80,62,18,22, + 37,56,68,109,103,77,24,35,55,64,81,104,113,92,49,64,78,87,103,121,120,101,72,92,95,98,112,100,103,99}; + static const int UVQT[] = {17,18,24,47,99,99,99,99,18,21,26,66,99,99,99,99,24,26,56,99,99,99,99,99,47,66,99,99,99,99,99,99, + 99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99}; + static const float aasf[] = { 1.0f * 2.828427125f, 1.387039845f * 2.828427125f, 1.306562965f * 2.828427125f, 1.175875602f * 2.828427125f, + 1.0f * 2.828427125f, 0.785694958f * 2.828427125f, 0.541196100f * 2.828427125f, 0.275899379f * 2.828427125f }; + + int row, col, i, k, subsample; + float fdtbl_Y[64], fdtbl_UV[64]; + unsigned char YTable[64], UVTable[64]; + + if(!data || !width || !height || comp > 4 || comp < 1) { + return 0; + } + + quality = quality ? quality : 90; + subsample = quality <= 90 ? 1 : 0; + quality = quality < 1 ? 1 : quality > 100 ? 100 : quality; + quality = quality < 50 ? 5000 / quality : 200 - quality * 2; + + for(i = 0; i < 64; ++i) { + int uvti, yti = (YQT[i]*quality+50)/100; + YTable[stbiw__jpg_ZigZag[i]] = (unsigned char) (yti < 1 ? 1 : yti > 255 ? 255 : yti); + uvti = (UVQT[i]*quality+50)/100; + UVTable[stbiw__jpg_ZigZag[i]] = (unsigned char) (uvti < 1 ? 1 : uvti > 255 ? 255 : uvti); + } + + for(row = 0, k = 0; row < 8; ++row) { + for(col = 0; col < 8; ++col, ++k) { + fdtbl_Y[k] = 1 / (YTable [stbiw__jpg_ZigZag[k]] * aasf[row] * aasf[col]); + fdtbl_UV[k] = 1 / (UVTable[stbiw__jpg_ZigZag[k]] * aasf[row] * aasf[col]); + } + } + + // Write Headers + { + static const unsigned char head0[] = { 0xFF,0xD8,0xFF,0xE0,0,0x10,'J','F','I','F',0,1,1,0,0,1,0,1,0,0,0xFF,0xDB,0,0x84,0 }; + static const unsigned char head2[] = { 0xFF,0xDA,0,0xC,3,1,0,2,0x11,3,0x11,0,0x3F,0 }; + const unsigned char head1[] = { 0xFF,0xC0,0,0x11,8,(unsigned char)(height>>8),STBIW_UCHAR(height),(unsigned char)(width>>8),STBIW_UCHAR(width), + 3,1,(unsigned char)(subsample?0x22:0x11),0,2,0x11,1,3,0x11,1,0xFF,0xC4,0x01,0xA2,0 }; + s->func(s->context, (void*)head0, sizeof(head0)); + s->func(s->context, (void*)YTable, sizeof(YTable)); + stbiw__putc(s, 1); + s->func(s->context, UVTable, sizeof(UVTable)); + s->func(s->context, (void*)head1, sizeof(head1)); + s->func(s->context, (void*)(std_dc_luminance_nrcodes+1), sizeof(std_dc_luminance_nrcodes)-1); + s->func(s->context, (void*)std_dc_luminance_values, sizeof(std_dc_luminance_values)); + stbiw__putc(s, 0x10); // HTYACinfo + s->func(s->context, (void*)(std_ac_luminance_nrcodes+1), sizeof(std_ac_luminance_nrcodes)-1); + s->func(s->context, (void*)std_ac_luminance_values, sizeof(std_ac_luminance_values)); + stbiw__putc(s, 1); // HTUDCinfo + s->func(s->context, (void*)(std_dc_chrominance_nrcodes+1), sizeof(std_dc_chrominance_nrcodes)-1); + s->func(s->context, (void*)std_dc_chrominance_values, sizeof(std_dc_chrominance_values)); + stbiw__putc(s, 0x11); // HTUACinfo + s->func(s->context, (void*)(std_ac_chrominance_nrcodes+1), sizeof(std_ac_chrominance_nrcodes)-1); + s->func(s->context, (void*)std_ac_chrominance_values, sizeof(std_ac_chrominance_values)); + s->func(s->context, (void*)head2, sizeof(head2)); + } + + // Encode 8x8 macroblocks + { + static const unsigned short fillBits[] = {0x7F, 7}; + int DCY=0, DCU=0, DCV=0; + int bitBuf=0, bitCnt=0; + // comp == 2 is grey+alpha (alpha is ignored) + int ofsG = comp > 2 ? 1 : 0, ofsB = comp > 2 ? 2 : 0; + const unsigned char *dataR = (const unsigned char *)data; + const unsigned char *dataG = dataR + ofsG; + const unsigned char *dataB = dataR + ofsB; + int x, y, pos; + if(subsample) { + for(y = 0; y < height; y += 16) { + for(x = 0; x < width; x += 16) { + float Y[256], U[256], V[256]; + for(row = y, pos = 0; row < y+16; ++row) { + // row >= height => use last input row + int clamped_row = (row < height) ? row : height - 1; + int base_p = (stbi__flip_vertically_on_write ? (height-1-clamped_row) : clamped_row)*width*comp; + for(col = x; col < x+16; ++col, ++pos) { + // if col >= width => use pixel from last input column + int p = base_p + ((col < width) ? col : (width-1))*comp; + float r = dataR[p], g = dataG[p], b = dataB[p]; + Y[pos]= +0.29900f*r + 0.58700f*g + 0.11400f*b - 128; + U[pos]= -0.16874f*r - 0.33126f*g + 0.50000f*b; + V[pos]= +0.50000f*r - 0.41869f*g - 0.08131f*b; + } + } + DCY = stbiw__jpg_processDU(s, &bitBuf, &bitCnt, Y+0, 16, fdtbl_Y, DCY, YDC_HT, YAC_HT); + DCY = stbiw__jpg_processDU(s, &bitBuf, &bitCnt, Y+8, 16, fdtbl_Y, DCY, YDC_HT, YAC_HT); + DCY = stbiw__jpg_processDU(s, &bitBuf, &bitCnt, Y+128, 16, fdtbl_Y, DCY, YDC_HT, YAC_HT); + DCY = stbiw__jpg_processDU(s, &bitBuf, &bitCnt, Y+136, 16, fdtbl_Y, DCY, YDC_HT, YAC_HT); + + // subsample U,V + { + float subU[64], subV[64]; + int yy, xx; + for(yy = 0, pos = 0; yy < 8; ++yy) { + for(xx = 0; xx < 8; ++xx, ++pos) { + int j = yy*32+xx*2; + subU[pos] = (U[j+0] + U[j+1] + U[j+16] + U[j+17]) * 0.25f; + subV[pos] = (V[j+0] + V[j+1] + V[j+16] + V[j+17]) * 0.25f; + } + } + DCU = stbiw__jpg_processDU(s, &bitBuf, &bitCnt, subU, 8, fdtbl_UV, DCU, UVDC_HT, UVAC_HT); + DCV = stbiw__jpg_processDU(s, &bitBuf, &bitCnt, subV, 8, fdtbl_UV, DCV, UVDC_HT, UVAC_HT); + } + } + } + } else { + for(y = 0; y < height; y += 8) { + for(x = 0; x < width; x += 8) { + float Y[64], U[64], V[64]; + for(row = y, pos = 0; row < y+8; ++row) { + // row >= height => use last input row + int clamped_row = (row < height) ? row : height - 1; + int base_p = (stbi__flip_vertically_on_write ? (height-1-clamped_row) : clamped_row)*width*comp; + for(col = x; col < x+8; ++col, ++pos) { + // if col >= width => use pixel from last input column + int p = base_p + ((col < width) ? col : (width-1))*comp; + float r = dataR[p], g = dataG[p], b = dataB[p]; + Y[pos]= +0.29900f*r + 0.58700f*g + 0.11400f*b - 128; + U[pos]= -0.16874f*r - 0.33126f*g + 0.50000f*b; + V[pos]= +0.50000f*r - 0.41869f*g - 0.08131f*b; + } + } + + DCY = stbiw__jpg_processDU(s, &bitBuf, &bitCnt, Y, 8, fdtbl_Y, DCY, YDC_HT, YAC_HT); + DCU = stbiw__jpg_processDU(s, &bitBuf, &bitCnt, U, 8, fdtbl_UV, DCU, UVDC_HT, UVAC_HT); + DCV = stbiw__jpg_processDU(s, &bitBuf, &bitCnt, V, 8, fdtbl_UV, DCV, UVDC_HT, UVAC_HT); + } + } + } + + // Do the bit alignment of the EOI marker + stbiw__jpg_writeBits(s, &bitBuf, &bitCnt, fillBits); + } + + // EOI + stbiw__putc(s, 0xFF); + stbiw__putc(s, 0xD9); + + return 1; +} + +STBIWDEF int stbi_write_jpg_to_func(stbi_write_func *func, void *context, int x, int y, int comp, const void *data, int quality) +{ + stbi__write_context s = { 0 }; + stbi__start_write_callbacks(&s, func, context); + return stbi_write_jpg_core(&s, x, y, comp, (void *) data, quality); +} + + +#ifndef STBI_WRITE_NO_STDIO +STBIWDEF int stbi_write_jpg(char const *filename, int x, int y, int comp, const void *data, int quality) +{ + stbi__write_context s = { 0 }; + if (stbi__start_write_file(&s,filename)) { + int r = stbi_write_jpg_core(&s, x, y, comp, data, quality); + stbi__end_write_file(&s); + return r; + } else + return 0; +} +#endif + +#endif // STB_IMAGE_WRITE_IMPLEMENTATION + +/* Revision history + 1.16 (2021-07-11) + make Deflate code emit uncompressed blocks when it would otherwise expand + support writing BMPs with alpha channel + 1.15 (2020-07-13) unknown + 1.14 (2020-02-02) updated JPEG writer to downsample chroma channels + 1.13 + 1.12 + 1.11 (2019-08-11) + + 1.10 (2019-02-07) + support utf8 filenames in Windows; fix warnings and platform ifdefs + 1.09 (2018-02-11) + fix typo in zlib quality API, improve STB_I_W_STATIC in C++ + 1.08 (2018-01-29) + add stbi__flip_vertically_on_write, external zlib, zlib quality, choose PNG filter + 1.07 (2017-07-24) + doc fix + 1.06 (2017-07-23) + writing JPEG (using Jon Olick's code) + 1.05 ??? + 1.04 (2017-03-03) + monochrome BMP expansion + 1.03 ??? + 1.02 (2016-04-02) + avoid allocating large structures on the stack + 1.01 (2016-01-16) + STBIW_REALLOC_SIZED: support allocators with no realloc support + avoid race-condition in crc initialization + minor compile issues + 1.00 (2015-09-14) + installable file IO function + 0.99 (2015-09-13) + warning fixes; TGA rle support + 0.98 (2015-04-08) + added STBIW_MALLOC, STBIW_ASSERT etc + 0.97 (2015-01-18) + fixed HDR asserts, rewrote HDR rle logic + 0.96 (2015-01-17) + add HDR output + fix monochrome BMP + 0.95 (2014-08-17) + add monochrome TGA output + 0.94 (2014-05-31) + rename private functions to avoid conflicts with stb_image.h + 0.93 (2014-05-27) + warning fixes + 0.92 (2010-08-01) + casts to unsigned char to fix warnings + 0.91 (2010-07-17) + first public release + 0.90 first internal release +*/ + +/* +------------------------------------------------------------------------------ +This software is available under 2 licenses -- choose whichever you prefer. +------------------------------------------------------------------------------ +ALTERNATIVE A - MIT License +Copyright (c) 2017 Sean Barrett +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies +of the Software, and to permit persons to whom the Software is furnished to do +so, subject to the following conditions: +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. +------------------------------------------------------------------------------ +ALTERNATIVE B - Public Domain (www.unlicense.org) +This is free and unencumbered software released into the public domain. +Anyone is free to copy, modify, publish, use, compile, sell, or distribute this +software, either in source code form or as a compiled binary, for any purpose, +commercial or non-commercial, and by any means. +In jurisdictions that recognize copyright laws, the author or authors of this +software dedicate any and all copyright interest in the software to the public +domain. We make this dedication for the benefit of the public at large and to +the detriment of our heirs and successors. We intend this dedication to be an +overt act of relinquishment in perpetuity of all present and future rights to +this software under copyright law. +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN +ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +------------------------------------------------------------------------------ +*/ diff --git a/include/stb/stb_perlin.h b/include/stb/stb_perlin.h new file mode 100644 index 0000000..47cb9a4 --- /dev/null +++ b/include/stb/stb_perlin.h @@ -0,0 +1,428 @@ +// stb_perlin.h - v0.5 - perlin noise +// public domain single-file C implementation by Sean Barrett +// +// LICENSE +// +// See end of file. +// +// +// to create the implementation, +// #define STB_PERLIN_IMPLEMENTATION +// in *one* C/CPP file that includes this file. +// +// +// Documentation: +// +// float stb_perlin_noise3( float x, +// float y, +// float z, +// int x_wrap=0, +// int y_wrap=0, +// int z_wrap=0) +// +// This function computes a random value at the coordinate (x,y,z). +// Adjacent random values are continuous but the noise fluctuates +// its randomness with period 1, i.e. takes on wholly unrelated values +// at integer points. Specifically, this implements Ken Perlin's +// revised noise function from 2002. +// +// The "wrap" parameters can be used to create wraparound noise that +// wraps at powers of two. The numbers MUST be powers of two. Specify +// 0 to mean "don't care". (The noise always wraps every 256 due +// details of the implementation, even if you ask for larger or no +// wrapping.) +// +// float stb_perlin_noise3_seed( float x, +// float y, +// float z, +// int x_wrap=0, +// int y_wrap=0, +// int z_wrap=0, +// int seed) +// +// As above, but 'seed' selects from multiple different variations of the +// noise function. The current implementation only uses the bottom 8 bits +// of 'seed', but possibly in the future more bits will be used. +// +// +// Fractal Noise: +// +// Three common fractal noise functions are included, which produce +// a wide variety of nice effects depending on the parameters +// provided. Note that each function will call stb_perlin_noise3 +// 'octaves' times, so this parameter will affect runtime. +// +// float stb_perlin_ridge_noise3(float x, float y, float z, +// float lacunarity, float gain, float offset, int octaves) +// +// float stb_perlin_fbm_noise3(float x, float y, float z, +// float lacunarity, float gain, int octaves) +// +// float stb_perlin_turbulence_noise3(float x, float y, float z, +// float lacunarity, float gain, int octaves) +// +// Typical values to start playing with: +// octaves = 6 -- number of "octaves" of noise3() to sum +// lacunarity = ~ 2.0 -- spacing between successive octaves (use exactly 2.0 for wrapping output) +// gain = 0.5 -- relative weighting applied to each successive octave +// offset = 1.0? -- used to invert the ridges, may need to be larger, not sure +// +// +// Contributors: +// Jack Mott - additional noise functions +// Jordan Peck - seeded noise +// + + +#ifdef __cplusplus +extern "C" { +#endif +extern float stb_perlin_noise3(float x, float y, float z, int x_wrap, int y_wrap, int z_wrap); +extern float stb_perlin_noise3_seed(float x, float y, float z, int x_wrap, int y_wrap, int z_wrap, int seed); +extern float stb_perlin_ridge_noise3(float x, float y, float z, float lacunarity, float gain, float offset, int octaves); +extern float stb_perlin_fbm_noise3(float x, float y, float z, float lacunarity, float gain, int octaves); +extern float stb_perlin_turbulence_noise3(float x, float y, float z, float lacunarity, float gain, int octaves); +extern float stb_perlin_noise3_wrap_nonpow2(float x, float y, float z, int x_wrap, int y_wrap, int z_wrap, unsigned char seed); +#ifdef __cplusplus +} +#endif + +#ifdef STB_PERLIN_IMPLEMENTATION + +#include // fabs() + +// not same permutation table as Perlin's reference to avoid copyright issues; +// Perlin's table can be found at http://mrl.nyu.edu/~perlin/noise/ +static unsigned char stb__perlin_randtab[512] = +{ + 23, 125, 161, 52, 103, 117, 70, 37, 247, 101, 203, 169, 124, 126, 44, 123, + 152, 238, 145, 45, 171, 114, 253, 10, 192, 136, 4, 157, 249, 30, 35, 72, + 175, 63, 77, 90, 181, 16, 96, 111, 133, 104, 75, 162, 93, 56, 66, 240, + 8, 50, 84, 229, 49, 210, 173, 239, 141, 1, 87, 18, 2, 198, 143, 57, + 225, 160, 58, 217, 168, 206, 245, 204, 199, 6, 73, 60, 20, 230, 211, 233, + 94, 200, 88, 9, 74, 155, 33, 15, 219, 130, 226, 202, 83, 236, 42, 172, + 165, 218, 55, 222, 46, 107, 98, 154, 109, 67, 196, 178, 127, 158, 13, 243, + 65, 79, 166, 248, 25, 224, 115, 80, 68, 51, 184, 128, 232, 208, 151, 122, + 26, 212, 105, 43, 179, 213, 235, 148, 146, 89, 14, 195, 28, 78, 112, 76, + 250, 47, 24, 251, 140, 108, 186, 190, 228, 170, 183, 139, 39, 188, 244, 246, + 132, 48, 119, 144, 180, 138, 134, 193, 82, 182, 120, 121, 86, 220, 209, 3, + 91, 241, 149, 85, 205, 150, 113, 216, 31, 100, 41, 164, 177, 214, 153, 231, + 38, 71, 185, 174, 97, 201, 29, 95, 7, 92, 54, 254, 191, 118, 34, 221, + 131, 11, 163, 99, 234, 81, 227, 147, 156, 176, 17, 142, 69, 12, 110, 62, + 27, 255, 0, 194, 59, 116, 242, 252, 19, 21, 187, 53, 207, 129, 64, 135, + 61, 40, 167, 237, 102, 223, 106, 159, 197, 189, 215, 137, 36, 32, 22, 5, + + // and a second copy so we don't need an extra mask or static initializer + 23, 125, 161, 52, 103, 117, 70, 37, 247, 101, 203, 169, 124, 126, 44, 123, + 152, 238, 145, 45, 171, 114, 253, 10, 192, 136, 4, 157, 249, 30, 35, 72, + 175, 63, 77, 90, 181, 16, 96, 111, 133, 104, 75, 162, 93, 56, 66, 240, + 8, 50, 84, 229, 49, 210, 173, 239, 141, 1, 87, 18, 2, 198, 143, 57, + 225, 160, 58, 217, 168, 206, 245, 204, 199, 6, 73, 60, 20, 230, 211, 233, + 94, 200, 88, 9, 74, 155, 33, 15, 219, 130, 226, 202, 83, 236, 42, 172, + 165, 218, 55, 222, 46, 107, 98, 154, 109, 67, 196, 178, 127, 158, 13, 243, + 65, 79, 166, 248, 25, 224, 115, 80, 68, 51, 184, 128, 232, 208, 151, 122, + 26, 212, 105, 43, 179, 213, 235, 148, 146, 89, 14, 195, 28, 78, 112, 76, + 250, 47, 24, 251, 140, 108, 186, 190, 228, 170, 183, 139, 39, 188, 244, 246, + 132, 48, 119, 144, 180, 138, 134, 193, 82, 182, 120, 121, 86, 220, 209, 3, + 91, 241, 149, 85, 205, 150, 113, 216, 31, 100, 41, 164, 177, 214, 153, 231, + 38, 71, 185, 174, 97, 201, 29, 95, 7, 92, 54, 254, 191, 118, 34, 221, + 131, 11, 163, 99, 234, 81, 227, 147, 156, 176, 17, 142, 69, 12, 110, 62, + 27, 255, 0, 194, 59, 116, 242, 252, 19, 21, 187, 53, 207, 129, 64, 135, + 61, 40, 167, 237, 102, 223, 106, 159, 197, 189, 215, 137, 36, 32, 22, 5, +}; + + +// perlin's gradient has 12 cases so some get used 1/16th of the time +// and some 2/16ths. We reduce bias by changing those fractions +// to 5/64ths and 6/64ths + +// this array is designed to match the previous implementation +// of gradient hash: indices[stb__perlin_randtab[i]&63] +static unsigned char stb__perlin_randtab_grad_idx[512] = +{ + 7, 9, 5, 0, 11, 1, 6, 9, 3, 9, 11, 1, 8, 10, 4, 7, + 8, 6, 1, 5, 3, 10, 9, 10, 0, 8, 4, 1, 5, 2, 7, 8, + 7, 11, 9, 10, 1, 0, 4, 7, 5, 0, 11, 6, 1, 4, 2, 8, + 8, 10, 4, 9, 9, 2, 5, 7, 9, 1, 7, 2, 2, 6, 11, 5, + 5, 4, 6, 9, 0, 1, 1, 0, 7, 6, 9, 8, 4, 10, 3, 1, + 2, 8, 8, 9, 10, 11, 5, 11, 11, 2, 6, 10, 3, 4, 2, 4, + 9, 10, 3, 2, 6, 3, 6, 10, 5, 3, 4, 10, 11, 2, 9, 11, + 1, 11, 10, 4, 9, 4, 11, 0, 4, 11, 4, 0, 0, 0, 7, 6, + 10, 4, 1, 3, 11, 5, 3, 4, 2, 9, 1, 3, 0, 1, 8, 0, + 6, 7, 8, 7, 0, 4, 6, 10, 8, 2, 3, 11, 11, 8, 0, 2, + 4, 8, 3, 0, 0, 10, 6, 1, 2, 2, 4, 5, 6, 0, 1, 3, + 11, 9, 5, 5, 9, 6, 9, 8, 3, 8, 1, 8, 9, 6, 9, 11, + 10, 7, 5, 6, 5, 9, 1, 3, 7, 0, 2, 10, 11, 2, 6, 1, + 3, 11, 7, 7, 2, 1, 7, 3, 0, 8, 1, 1, 5, 0, 6, 10, + 11, 11, 0, 2, 7, 0, 10, 8, 3, 5, 7, 1, 11, 1, 0, 7, + 9, 0, 11, 5, 10, 3, 2, 3, 5, 9, 7, 9, 8, 4, 6, 5, + + // and a second copy so we don't need an extra mask or static initializer + 7, 9, 5, 0, 11, 1, 6, 9, 3, 9, 11, 1, 8, 10, 4, 7, + 8, 6, 1, 5, 3, 10, 9, 10, 0, 8, 4, 1, 5, 2, 7, 8, + 7, 11, 9, 10, 1, 0, 4, 7, 5, 0, 11, 6, 1, 4, 2, 8, + 8, 10, 4, 9, 9, 2, 5, 7, 9, 1, 7, 2, 2, 6, 11, 5, + 5, 4, 6, 9, 0, 1, 1, 0, 7, 6, 9, 8, 4, 10, 3, 1, + 2, 8, 8, 9, 10, 11, 5, 11, 11, 2, 6, 10, 3, 4, 2, 4, + 9, 10, 3, 2, 6, 3, 6, 10, 5, 3, 4, 10, 11, 2, 9, 11, + 1, 11, 10, 4, 9, 4, 11, 0, 4, 11, 4, 0, 0, 0, 7, 6, + 10, 4, 1, 3, 11, 5, 3, 4, 2, 9, 1, 3, 0, 1, 8, 0, + 6, 7, 8, 7, 0, 4, 6, 10, 8, 2, 3, 11, 11, 8, 0, 2, + 4, 8, 3, 0, 0, 10, 6, 1, 2, 2, 4, 5, 6, 0, 1, 3, + 11, 9, 5, 5, 9, 6, 9, 8, 3, 8, 1, 8, 9, 6, 9, 11, + 10, 7, 5, 6, 5, 9, 1, 3, 7, 0, 2, 10, 11, 2, 6, 1, + 3, 11, 7, 7, 2, 1, 7, 3, 0, 8, 1, 1, 5, 0, 6, 10, + 11, 11, 0, 2, 7, 0, 10, 8, 3, 5, 7, 1, 11, 1, 0, 7, + 9, 0, 11, 5, 10, 3, 2, 3, 5, 9, 7, 9, 8, 4, 6, 5, +}; + +static float stb__perlin_lerp(float a, float b, float t) +{ + return a + (b-a) * t; +} + +static int stb__perlin_fastfloor(float a) +{ + int ai = (int) a; + return (a < ai) ? ai-1 : ai; +} + +// different grad function from Perlin's, but easy to modify to match reference +static float stb__perlin_grad(int grad_idx, float x, float y, float z) +{ + static float basis[12][4] = + { + { 1, 1, 0 }, + { -1, 1, 0 }, + { 1,-1, 0 }, + { -1,-1, 0 }, + { 1, 0, 1 }, + { -1, 0, 1 }, + { 1, 0,-1 }, + { -1, 0,-1 }, + { 0, 1, 1 }, + { 0,-1, 1 }, + { 0, 1,-1 }, + { 0,-1,-1 }, + }; + + float *grad = basis[grad_idx]; + return grad[0]*x + grad[1]*y + grad[2]*z; +} + +float stb_perlin_noise3_internal(float x, float y, float z, int x_wrap, int y_wrap, int z_wrap, unsigned char seed) +{ + float u,v,w; + float n000,n001,n010,n011,n100,n101,n110,n111; + float n00,n01,n10,n11; + float n0,n1; + + unsigned int x_mask = (x_wrap-1) & 255; + unsigned int y_mask = (y_wrap-1) & 255; + unsigned int z_mask = (z_wrap-1) & 255; + int px = stb__perlin_fastfloor(x); + int py = stb__perlin_fastfloor(y); + int pz = stb__perlin_fastfloor(z); + int x0 = px & x_mask, x1 = (px+1) & x_mask; + int y0 = py & y_mask, y1 = (py+1) & y_mask; + int z0 = pz & z_mask, z1 = (pz+1) & z_mask; + int r0,r1, r00,r01,r10,r11; + + #define stb__perlin_ease(a) (((a*6-15)*a + 10) * a * a * a) + + x -= px; u = stb__perlin_ease(x); + y -= py; v = stb__perlin_ease(y); + z -= pz; w = stb__perlin_ease(z); + + r0 = stb__perlin_randtab[x0+seed]; + r1 = stb__perlin_randtab[x1+seed]; + + r00 = stb__perlin_randtab[r0+y0]; + r01 = stb__perlin_randtab[r0+y1]; + r10 = stb__perlin_randtab[r1+y0]; + r11 = stb__perlin_randtab[r1+y1]; + + n000 = stb__perlin_grad(stb__perlin_randtab_grad_idx[r00+z0], x , y , z ); + n001 = stb__perlin_grad(stb__perlin_randtab_grad_idx[r00+z1], x , y , z-1 ); + n010 = stb__perlin_grad(stb__perlin_randtab_grad_idx[r01+z0], x , y-1, z ); + n011 = stb__perlin_grad(stb__perlin_randtab_grad_idx[r01+z1], x , y-1, z-1 ); + n100 = stb__perlin_grad(stb__perlin_randtab_grad_idx[r10+z0], x-1, y , z ); + n101 = stb__perlin_grad(stb__perlin_randtab_grad_idx[r10+z1], x-1, y , z-1 ); + n110 = stb__perlin_grad(stb__perlin_randtab_grad_idx[r11+z0], x-1, y-1, z ); + n111 = stb__perlin_grad(stb__perlin_randtab_grad_idx[r11+z1], x-1, y-1, z-1 ); + + n00 = stb__perlin_lerp(n000,n001,w); + n01 = stb__perlin_lerp(n010,n011,w); + n10 = stb__perlin_lerp(n100,n101,w); + n11 = stb__perlin_lerp(n110,n111,w); + + n0 = stb__perlin_lerp(n00,n01,v); + n1 = stb__perlin_lerp(n10,n11,v); + + return stb__perlin_lerp(n0,n1,u); +} + +float stb_perlin_noise3(float x, float y, float z, int x_wrap, int y_wrap, int z_wrap) +{ + return stb_perlin_noise3_internal(x,y,z,x_wrap,y_wrap,z_wrap,0); +} + +float stb_perlin_noise3_seed(float x, float y, float z, int x_wrap, int y_wrap, int z_wrap, int seed) +{ + return stb_perlin_noise3_internal(x,y,z,x_wrap,y_wrap,z_wrap, (unsigned char) seed); +} + +float stb_perlin_ridge_noise3(float x, float y, float z, float lacunarity, float gain, float offset, int octaves) +{ + int i; + float frequency = 1.0f; + float prev = 1.0f; + float amplitude = 0.5f; + float sum = 0.0f; + + for (i = 0; i < octaves; i++) { + float r = stb_perlin_noise3_internal(x*frequency,y*frequency,z*frequency,0,0,0,(unsigned char)i); + r = offset - (float) fabs(r); + r = r*r; + sum += r*amplitude*prev; + prev = r; + frequency *= lacunarity; + amplitude *= gain; + } + return sum; +} + +float stb_perlin_fbm_noise3(float x, float y, float z, float lacunarity, float gain, int octaves) +{ + int i; + float frequency = 1.0f; + float amplitude = 1.0f; + float sum = 0.0f; + + for (i = 0; i < octaves; i++) { + sum += stb_perlin_noise3_internal(x*frequency,y*frequency,z*frequency,0,0,0,(unsigned char)i)*amplitude; + frequency *= lacunarity; + amplitude *= gain; + } + return sum; +} + +float stb_perlin_turbulence_noise3(float x, float y, float z, float lacunarity, float gain, int octaves) +{ + int i; + float frequency = 1.0f; + float amplitude = 1.0f; + float sum = 0.0f; + + for (i = 0; i < octaves; i++) { + float r = stb_perlin_noise3_internal(x*frequency,y*frequency,z*frequency,0,0,0,(unsigned char)i)*amplitude; + sum += (float) fabs(r); + frequency *= lacunarity; + amplitude *= gain; + } + return sum; +} + +float stb_perlin_noise3_wrap_nonpow2(float x, float y, float z, int x_wrap, int y_wrap, int z_wrap, unsigned char seed) +{ + float u,v,w; + float n000,n001,n010,n011,n100,n101,n110,n111; + float n00,n01,n10,n11; + float n0,n1; + + int px = stb__perlin_fastfloor(x); + int py = stb__perlin_fastfloor(y); + int pz = stb__perlin_fastfloor(z); + int x_wrap2 = (x_wrap ? x_wrap : 256); + int y_wrap2 = (y_wrap ? y_wrap : 256); + int z_wrap2 = (z_wrap ? z_wrap : 256); + int x0 = px % x_wrap2, x1; + int y0 = py % y_wrap2, y1; + int z0 = pz % z_wrap2, z1; + int r0,r1, r00,r01,r10,r11; + + if (x0 < 0) x0 += x_wrap2; + if (y0 < 0) y0 += y_wrap2; + if (z0 < 0) z0 += z_wrap2; + x1 = (x0+1) % x_wrap2; + y1 = (y0+1) % y_wrap2; + z1 = (z0+1) % z_wrap2; + + #define stb__perlin_ease(a) (((a*6-15)*a + 10) * a * a * a) + + x -= px; u = stb__perlin_ease(x); + y -= py; v = stb__perlin_ease(y); + z -= pz; w = stb__perlin_ease(z); + + r0 = stb__perlin_randtab[x0]; + r0 = stb__perlin_randtab[r0+seed]; + r1 = stb__perlin_randtab[x1]; + r1 = stb__perlin_randtab[r1+seed]; + + r00 = stb__perlin_randtab[r0+y0]; + r01 = stb__perlin_randtab[r0+y1]; + r10 = stb__perlin_randtab[r1+y0]; + r11 = stb__perlin_randtab[r1+y1]; + + n000 = stb__perlin_grad(stb__perlin_randtab_grad_idx[r00+z0], x , y , z ); + n001 = stb__perlin_grad(stb__perlin_randtab_grad_idx[r00+z1], x , y , z-1 ); + n010 = stb__perlin_grad(stb__perlin_randtab_grad_idx[r01+z0], x , y-1, z ); + n011 = stb__perlin_grad(stb__perlin_randtab_grad_idx[r01+z1], x , y-1, z-1 ); + n100 = stb__perlin_grad(stb__perlin_randtab_grad_idx[r10+z0], x-1, y , z ); + n101 = stb__perlin_grad(stb__perlin_randtab_grad_idx[r10+z1], x-1, y , z-1 ); + n110 = stb__perlin_grad(stb__perlin_randtab_grad_idx[r11+z0], x-1, y-1, z ); + n111 = stb__perlin_grad(stb__perlin_randtab_grad_idx[r11+z1], x-1, y-1, z-1 ); + + n00 = stb__perlin_lerp(n000,n001,w); + n01 = stb__perlin_lerp(n010,n011,w); + n10 = stb__perlin_lerp(n100,n101,w); + n11 = stb__perlin_lerp(n110,n111,w); + + n0 = stb__perlin_lerp(n00,n01,v); + n1 = stb__perlin_lerp(n10,n11,v); + + return stb__perlin_lerp(n0,n1,u); +} +#endif // STB_PERLIN_IMPLEMENTATION + +/* +------------------------------------------------------------------------------ +This software is available under 2 licenses -- choose whichever you prefer. +------------------------------------------------------------------------------ +ALTERNATIVE A - MIT License +Copyright (c) 2017 Sean Barrett +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies +of the Software, and to permit persons to whom the Software is furnished to do +so, subject to the following conditions: +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. +------------------------------------------------------------------------------ +ALTERNATIVE B - Public Domain (www.unlicense.org) +This is free and unencumbered software released into the public domain. +Anyone is free to copy, modify, publish, use, compile, sell, or distribute this +software, either in source code form or as a compiled binary, for any purpose, +commercial or non-commercial, and by any means. +In jurisdictions that recognize copyright laws, the author or authors of this +software dedicate any and all copyright interest in the software to the public +domain. We make this dedication for the benefit of the public at large and to +the detriment of our heirs and successors. We intend this dedication to be an +overt act of relinquishment in perpetuity of all present and future rights to +this software under copyright law. +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN +ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +------------------------------------------------------------------------------ +*/ diff --git a/include/util/settings.h b/include/util/settings.h new file mode 100644 index 0000000..39a6236 --- /dev/null +++ b/include/util/settings.h @@ -0,0 +1,22 @@ +/* + * Created by Brett on 17/02/23. + * Licensed under GNU General Public License V3.0 + * See LICENSE file for license detail + */ + +#ifndef FINALPROJECT_SETTINGS_H +#define FINALPROJECT_SETTINGS_H + +#include + +namespace fp::settings { + + void load(const std::string& file); + void save(const std::string& file); + + std::string get(const std::string& property); + void set(const std::string& property, const std::string& value); + +} + +#endif //FINALPROJECT_SETTINGS_H diff --git a/libraries/BLT b/libraries/BLT index c1f3f7f..b95359a 160000 --- a/libraries/BLT +++ b/libraries/BLT @@ -1 +1 @@ -Subproject commit c1f3f7f2b8f9252b4d6c2dc9c94300c86f591510 +Subproject commit b95359a3111eb332fd5f651ec4ae13fead1b6f59 diff --git a/sources.txt b/sources.txt index b61c6df..99c5e4f 100644 --- a/sources.txt +++ b/sources.txt @@ -3,6 +3,9 @@ https://github.com/Dav1dde/glad https://registry.khronos.org/webgl/specs/1.0/#6 https://emscripten.org/docs/compiling/Building-Projects.html +#clustered rendering +http://www.aortiz.me/2018/12/21/CG.html + https://www.lambdatest.com/web-technologies/webgl2 WebGL 2.0 on IE is fully supported on None of the versions, partially supported on None of the versions, and not supported on 5.5-11 IE versions. diff --git a/src/main.cpp b/src/main.cpp index 88f396a..4ff1e15 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -10,6 +10,7 @@ #include #include "render/camera.h" #include "world/chunk/world.h" +#include "util/settings.h" #ifdef __EMSCRIPTEN__ @@ -43,6 +44,7 @@ int main() { #endif blt::logging::init(logging_properties); + fp::settings::load("settings.txt"); fp::window::init(); fp::text::init(); @@ -84,6 +86,7 @@ int main() { fp::text::destroy(); fp::window::close(); + fp::settings::save("settings.txt"); return 0; } diff --git a/src/render/textures.cpp b/src/render/textures.cpp new file mode 100644 index 0000000..5026f2b --- /dev/null +++ b/src/render/textures.cpp @@ -0,0 +1,8 @@ +/* + * Created by Brett on 17/02/23. + * Licensed under GNU General Public License V3.0 + * See LICENSE file for license detail + */ +#define STB_IMAGE_IMPLEMENTATION +#define STB_IMAGE_RESIZE_IMPLEMENTATION +#include \ No newline at end of file diff --git a/src/util/settings.cpp b/src/util/settings.cpp new file mode 100644 index 0000000..f51a38d --- /dev/null +++ b/src/util/settings.cpp @@ -0,0 +1,56 @@ +/* + * Created by Brett on 17/02/23. + * Licensed under GNU General Public License V3.0 + * See LICENSE file for license detail + */ +#include +#include +#include +#include +#include + +std::unordered_map properties; + +// will be overwritten if the file has something different. +void write_default_values(){ + properties["TEXTURE_SIZE"] = std::to_string(32); +} + +void fp::settings::load(const std::string& file) { + write_default_values(); + + BLT_INFO("Loading settings file %s!", file.c_str()); + + try { + auto lines = blt::fs::getLinesFromFile(file); + for (const auto& line : lines) { + auto split_line = blt::string::split(line, "="); + + if (split_line.size() < 2) { + BLT_WARN("Unable to load line '%s' due to incomplete property (property = value)"); + continue; + } + + auto& property = blt::string::trim(split_line[0]); + auto& value = blt::string::trim(split_line[1]); + + properties[property] = value; + } + } catch (std::exception& e) {} +} + +void fp::settings::save(const std::string& file) { + std::ofstream output {file}; + output.exceptions(std::ios::failbit | std::ios::badbit); + for (const auto& property : properties){ + output << property.first << " = " << property.second; + } +} + +std::string fp::settings::get(const std::string& property) { + return properties.at(property); +} + +void fp::settings::set(const std::string& property, const std::string& value) { + properties[property] = value; +}