mirror of
https://github.com/Vita3K/Vita3K.git
synced 2024-05-31 19:17:49 -04:00
external: Update submodules (#2926)
* external: Update CLI11 to version v2.3.2 * external: Update MoltenVK to 1.2.5 * external: Update SPIRV-Cross to sdk-1.3.261.1 * external: Update Vulkan-Headers to v1.3.261 * external: Update capstone to 5.0.1 * external: Update cubeb * external: Update dirent to 1.24 * external: Update fmt to 10.1.1 * external: Update glad to 2.0.4 * external: Update glslang to sdk-1.3.261.1 * external: Update googletest to v1.14.0 * external: Update imgui to version v1.89.9 * external: Update imgui_club * external: Update miniz to version 3.0.2 * external: Update nativefiledialog-extended to version v1.1.0 * external: Update openssl to 3.1.2 * external: Update pugixml to version v1.13 * external: Update spdlog to v1.12.0 * external: Update stb * external: Update tracy to v0.9.1 * external: Update vita-toolchain * external: Update xxHash to v0.8.2 * external: Update yaml-cpp to version 0.8.0
This commit is contained in:
parent
5c7fc3222b
commit
df2ffeb48e
|
@ -1,4 +1,4 @@
|
|||
cmake_minimum_required(VERSION 3.14.0)
|
||||
cmake_minimum_required(VERSION 3.17.2)
|
||||
project(Vita3K)
|
||||
|
||||
# Detects the amount of processors of the host machine and forwards the result to CPU_COUNT
|
||||
|
|
32
external/CMakeLists.txt
vendored
32
external/CMakeLists.txt
vendored
|
@ -28,22 +28,10 @@ endfunction()
|
|||
|
||||
check_submodules_present()
|
||||
|
||||
# Fix a glslang hack
|
||||
# See https://github.com/KhronosGroup/glslang/issues/1015 and https://github.com/Vita3K/Vita3K/pull/369 for details
|
||||
if(NOT CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT)
|
||||
if(WIN32)
|
||||
set(CMAKE_INSTALL_PREFIX "C:/Program Files/${PROJECT_NAME}" CACHE STRING "Default install prefix is: C:/Program Files" FORCE)
|
||||
elseif(UNIX)
|
||||
set(CMAKE_INSTALL_PREFIX /usr/local CACHE STRING "Default install prefix is: /usr/local" FORCE)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
# Define the Architecture variable, right now it should only contain "x86_64" or "arm64"
|
||||
include("dynarmic/CMakeModules/DetectArchitecture.cmake")
|
||||
|
||||
option(CAPSTONE_BUILD_SHARED "Build shared library" OFF)
|
||||
option(CAPSTONE_BUILD_TESTS "Build tests" OFF)
|
||||
option(CAPSTONE_BUILD_CSTOOL "Build cstool" OFF)
|
||||
option(BUILD_SHARED_LIBS "Build shared library" OFF)
|
||||
option(CAPSTONE_ARCHITECTURE_DEFAULT "Whether architectures are enabled by default" OFF)
|
||||
option(CAPSTONE_ARM_SUPPORT "ARM support" ON)
|
||||
add_subdirectory(capstone EXCLUDE_FROM_ALL)
|
||||
|
@ -75,9 +63,8 @@ set_property(TARGET spdlog PROPERTY FOLDER externals)
|
|||
add_library(stb INTERFACE)
|
||||
target_include_directories(stb INTERFACE "${CMAKE_CURRENT_SOURCE_DIR}/stb")
|
||||
|
||||
add_library(glad STATIC "${CMAKE_CURRENT_SOURCE_DIR}/glad/src/glad.c")
|
||||
add_library(glad STATIC "${CMAKE_CURRENT_SOURCE_DIR}/glad/src/gl.c")
|
||||
target_include_directories(glad PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}/glad/include")
|
||||
target_link_libraries(glad PRIVATE ${CMAKE_DL_LIBS})
|
||||
set_property(TARGET glad PROPERTY FOLDER externals)
|
||||
|
||||
add_library(better-enums INTERFACE)
|
||||
|
@ -176,10 +163,8 @@ set_property(TARGET unicorn PROPERTY FOLDER externals)
|
|||
add_library(vita-toolchain INTERFACE)
|
||||
target_include_directories(vita-toolchain INTERFACE "${CMAKE_CURRENT_SOURCE_DIR}/vita-toolchain/src")
|
||||
|
||||
option(BUILD_TESTING "Build the testing tree." OFF)
|
||||
option(YAML_CPP_BUILD_TOOLS "Enable parse tools" OFF)
|
||||
option(YAML_CPP_BUILD_CONTRIB "Enable contrib stuff in library" OFF)
|
||||
option(YAML_CPP_INSTALL "Enable generation of install target" OFF)
|
||||
add_subdirectory(yaml-cpp EXCLUDE_FROM_ALL)
|
||||
set_property(TARGET yaml-cpp PROPERTY FOLDER externals)
|
||||
|
||||
|
@ -235,7 +220,7 @@ endif()
|
|||
option(BUILD_EXTERNAL "Build external dependencies in /External" OFF)
|
||||
option(SKIP_GLSLANG_INSTALL "Skip installation" ON)
|
||||
option(ENABLE_SPVREMAPPER "Enables building of SPVRemapper" OFF)
|
||||
option(ENABLE_GLSLANG_BINARIES "Builds glslangValidator and spirv-remap" OFF)
|
||||
option(ENABLE_GLSLANG_BINARIES "Builds glslang and spirv-remap" OFF)
|
||||
option(ENABLE_HLSL "Enables HLSL input support" OFF)
|
||||
option(ENABLE_CTEST "Enables testing" OFF)
|
||||
add_subdirectory(glslang)
|
||||
|
@ -305,7 +290,7 @@ if(NOT OPENSSL_FOUND)
|
|||
|
||||
if(NOT EXISTS "${CMAKE_BINARY_DIR}/external/openssl.zip")
|
||||
message(STATUS "Downloading openssl...")
|
||||
file(DOWNLOAD https://firedaemon.com/download-firedaemon-openssl-3-zip
|
||||
file(DOWNLOAD https://firedaemon.com/download-firedaemon-openssl-3.1-zip
|
||||
"${CMAKE_BINARY_DIR}/external/openssl.zip" SHOW_PROGRESS)
|
||||
endif()
|
||||
|
||||
|
@ -315,7 +300,7 @@ if(NOT OPENSSL_FOUND)
|
|||
WORKING_DIRECTORY "${CMAKE_BINARY_DIR}/external/openssl")
|
||||
endif()
|
||||
|
||||
set(OPENSSL_ROOT_DIR "${CMAKE_BINARY_DIR}/external/openssl/openssl-3.0/x64")
|
||||
set(OPENSSL_ROOT_DIR "${CMAKE_BINARY_DIR}/external/openssl/openssl-3/x64")
|
||||
endif()
|
||||
|
||||
find_package(OpenSSL REQUIRED)
|
||||
|
@ -347,14 +332,15 @@ option(TRACY_ENABLE_ON_CORE_COMPONENTS
|
|||
HLE modules"
|
||||
ON)
|
||||
add_library(tracy STATIC tracy/public/TracyClient.cpp)
|
||||
target_include_directories(tracy SYSTEM PUBLIC $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/tracy/public>)
|
||||
target_link_libraries(tracy PUBLIC ${CMAKE_DL_LIBS})
|
||||
set_property(TARGET tracy PROPERTY FOLDER externals)
|
||||
target_include_directories(tracy PUBLIC tracy)
|
||||
|
||||
if(UNIX)
|
||||
target_link_libraries(tracy PUBLIC pthread dl)
|
||||
target_link_libraries(tracy PUBLIC pthread)
|
||||
endif()
|
||||
|
||||
# Enable Tracy on-demand profiling mode to avoid unnecesary memory usage when the developer
|
||||
# Enable Tracy on-demand profiling mode to avoid unnecessary memory usage when the developer
|
||||
# isn't profiling by only enabling profiling after a connection has been established with
|
||||
# a Tracy server
|
||||
target_compile_definitions(tracy PUBLIC $<$<CONFIG:Debug,RelWithDebInfo>:TRACY_ON_DEMAND>)
|
||||
|
|
1621
external/MoltenVK/mvk_config.h
vendored
1621
external/MoltenVK/mvk_config.h
vendored
File diff suppressed because it is too large
Load diff
2
external/SPIRV-Cross
vendored
2
external/SPIRV-Cross
vendored
|
@ -1 +1 @@
|
|||
Subproject commit 4e2fdb25671c742a9fbe93a6034eb1542244c7e1
|
||||
Subproject commit bccaa94db814af33d8ef05c153e7c34d8bd4d685
|
2
external/Vulkan-Headers
vendored
2
external/Vulkan-Headers
vendored
|
@ -1 +1 @@
|
|||
Subproject commit ed857118e243fdc0f3a100f00ac9919e874cfe63
|
||||
Subproject commit 450ead13e1064584da027d91192bd7bfb724640f
|
2
external/capstone
vendored
2
external/capstone
vendored
|
@ -1 +1 @@
|
|||
Subproject commit 6eb1db9c04113ac0a05f2dfd228704c84775530f
|
||||
Subproject commit 097c04d9413c59a58b00d4d1c8d5dc0ac158ffaa
|
6916
external/cli11/CLI11.hpp
vendored
6916
external/cli11/CLI11.hpp
vendored
File diff suppressed because it is too large
Load diff
2
external/cubeb
vendored
2
external/cubeb
vendored
|
@ -1 +1 @@
|
|||
Subproject commit b8765e132de947a391a7e9b3787c4cc682ed82f1
|
||||
Subproject commit f9c118ddc050d15ffb3ac2babff06a833d0ac740
|
2
external/dirent
vendored
2
external/dirent
vendored
|
@ -1 +1 @@
|
|||
Subproject commit a318cee5adaed3dec654773fd0a02723d844461c
|
||||
Subproject commit 39c1f1bc98ef3326237d03006f35d7dd44620e43
|
2
external/fmt
vendored
2
external/fmt
vendored
|
@ -1 +1 @@
|
|||
Subproject commit a33701196adfad74917046096bf5a2aa0ab0bb50
|
||||
Subproject commit f5e54359df4c26b6230fc61d38aa294581393084
|
4327
external/glad/include/glad/gl.h
vendored
Normal file
4327
external/glad/include/glad/gl.h
vendored
Normal file
File diff suppressed because it is too large
Load diff
4449
external/glad/include/glad/glad.h
vendored
4449
external/glad/include/glad/glad.h
vendored
File diff suppressed because it is too large
Load diff
7662
external/glad/src/gl.c
vendored
Normal file
7662
external/glad/src/gl.c
vendored
Normal file
File diff suppressed because it is too large
Load diff
6840
external/glad/src/glad.c
vendored
6840
external/glad/src/glad.c
vendored
File diff suppressed because it is too large
Load diff
2
external/glslang
vendored
2
external/glslang
vendored
|
@ -1 +1 @@
|
|||
Subproject commit ca8d07d0bc1c6390b83915700439fa7719de6a2a
|
||||
Subproject commit 76b52ebf77833908dc4c0dd6c70a9c357ac720bd
|
2
external/googletest
vendored
2
external/googletest
vendored
|
@ -1 +1 @@
|
|||
Subproject commit 9ca071b6e55568dff6960bebe1a5cfaa180fb3ce
|
||||
Subproject commit f8d7d77c06936315286eb55f8de22cd23c188571
|
2
external/imgui
vendored
2
external/imgui
vendored
|
@ -1 +1 @@
|
|||
Subproject commit 9aae45eb4a05a5a1f96be1ef37eb503a12ceb889
|
||||
Subproject commit c6e0284ac58b3f205c95365478888f7b53b077e2
|
2
external/imgui_club
vendored
2
external/imgui_club
vendored
|
@ -1 +1 @@
|
|||
Subproject commit d4cd9896e15a03e92702a578586c3f91bbde01e8
|
||||
Subproject commit ea49dd3c6803088d50b496e3fe981501543b7cbc
|
334
external/miniz/miniz.c
vendored
334
external/miniz/miniz.c
vendored
|
@ -187,6 +187,8 @@ const char *mz_version(void)
|
|||
|
||||
#ifndef MINIZ_NO_ZLIB_APIS
|
||||
|
||||
#ifndef MINIZ_NO_DEFLATE_APIS
|
||||
|
||||
int mz_deflateInit(mz_streamp pStream, int level)
|
||||
{
|
||||
return mz_deflateInit2(pStream, level, MZ_DEFLATED, MZ_DEFAULT_WINDOW_BITS, 9, MZ_DEFAULT_STRATEGY);
|
||||
|
@ -321,7 +323,7 @@ int mz_compress2(unsigned char *pDest, mz_ulong *pDest_len, const unsigned char
|
|||
memset(&stream, 0, sizeof(stream));
|
||||
|
||||
/* In case mz_ulong is 64-bits (argh I hate longs). */
|
||||
if ((source_len | *pDest_len) > 0xFFFFFFFFU)
|
||||
if ((mz_uint64)(source_len | *pDest_len) > 0xFFFFFFFFU)
|
||||
return MZ_PARAM_ERROR;
|
||||
|
||||
stream.next_in = pSource;
|
||||
|
@ -354,6 +356,10 @@ mz_ulong mz_compressBound(mz_ulong source_len)
|
|||
return mz_deflateBound(NULL, source_len);
|
||||
}
|
||||
|
||||
#endif /*#ifndef MINIZ_NO_DEFLATE_APIS*/
|
||||
|
||||
#ifndef MINIZ_NO_INFLATE_APIS
|
||||
|
||||
typedef struct
|
||||
{
|
||||
tinfl_decompressor m_decomp;
|
||||
|
@ -560,7 +566,7 @@ int mz_uncompress2(unsigned char *pDest, mz_ulong *pDest_len, const unsigned cha
|
|||
memset(&stream, 0, sizeof(stream));
|
||||
|
||||
/* In case mz_ulong is 64-bits (argh I hate longs). */
|
||||
if ((*pSource_len | *pDest_len) > 0xFFFFFFFFU)
|
||||
if ((mz_uint64)(*pSource_len | *pDest_len) > 0xFFFFFFFFU)
|
||||
return MZ_PARAM_ERROR;
|
||||
|
||||
stream.next_in = pSource;
|
||||
|
@ -589,6 +595,8 @@ int mz_uncompress(unsigned char *pDest, mz_ulong *pDest_len, const unsigned char
|
|||
return mz_uncompress2(pDest, pDest_len, pSource, &source_len);
|
||||
}
|
||||
|
||||
#endif /*#ifndef MINIZ_NO_INFLATE_APIS*/
|
||||
|
||||
const char *mz_error(int err)
|
||||
{
|
||||
static struct
|
||||
|
@ -666,6 +674,8 @@ const char *mz_error(int err)
|
|||
|
||||
|
||||
|
||||
#ifndef MINIZ_NO_DEFLATE_APIS
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
@ -744,7 +754,7 @@ static tdefl_sym_freq *tdefl_radix_sort_syms(mz_uint num_syms, tdefl_sym_freq *p
|
|||
{
|
||||
mz_uint32 total_passes = 2, pass_shift, pass, i, hist[256 * 2];
|
||||
tdefl_sym_freq *pCur_syms = pSyms0, *pNew_syms = pSyms1;
|
||||
MZ_CLEAR_OBJ(hist);
|
||||
MZ_CLEAR_ARR(hist);
|
||||
for (i = 0; i < num_syms; i++)
|
||||
{
|
||||
mz_uint freq = pSyms0[i].m_key;
|
||||
|
@ -862,7 +872,7 @@ static void tdefl_optimize_huffman_table(tdefl_compressor *d, int table_num, int
|
|||
{
|
||||
int i, j, l, num_codes[1 + TDEFL_MAX_SUPPORTED_HUFF_CODESIZE];
|
||||
mz_uint next_code[TDEFL_MAX_SUPPORTED_HUFF_CODESIZE + 1];
|
||||
MZ_CLEAR_OBJ(num_codes);
|
||||
MZ_CLEAR_ARR(num_codes);
|
||||
if (static_table)
|
||||
{
|
||||
for (i = 0; i < table_len; i++)
|
||||
|
@ -888,8 +898,8 @@ static void tdefl_optimize_huffman_table(tdefl_compressor *d, int table_num, int
|
|||
|
||||
tdefl_huffman_enforce_max_code_size(num_codes, num_used_syms, code_size_limit);
|
||||
|
||||
MZ_CLEAR_OBJ(d->m_huff_code_sizes[table_num]);
|
||||
MZ_CLEAR_OBJ(d->m_huff_codes[table_num]);
|
||||
MZ_CLEAR_ARR(d->m_huff_code_sizes[table_num]);
|
||||
MZ_CLEAR_ARR(d->m_huff_codes[table_num]);
|
||||
for (i = 1, j = num_used_syms; i <= code_size_limit; i++)
|
||||
for (l = num_codes[i]; l > 0; l--)
|
||||
d->m_huff_code_sizes[table_num][pSyms[--j].m_sym_index] = (mz_uint8)(i);
|
||||
|
@ -975,7 +985,7 @@ static void tdefl_optimize_huffman_table(tdefl_compressor *d, int table_num, int
|
|||
} \
|
||||
}
|
||||
|
||||
static mz_uint8 s_tdefl_packed_code_size_syms_swizzle[] = { 16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15 };
|
||||
static const mz_uint8 s_tdefl_packed_code_size_syms_swizzle[] = { 16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15 };
|
||||
|
||||
static void tdefl_start_dynamic_block(tdefl_compressor *d)
|
||||
{
|
||||
|
@ -1113,7 +1123,8 @@ static mz_bool tdefl_compress_lz_codes(tdefl_compressor *d)
|
|||
if (flags & 1)
|
||||
{
|
||||
mz_uint s0, s1, n0, n1, sym, num_extra_bits;
|
||||
mz_uint match_len = pLZ_codes[0], match_dist = *(const mz_uint16 *)(pLZ_codes + 1);
|
||||
mz_uint match_len = pLZ_codes[0];
|
||||
mz_uint match_dist = (pLZ_codes[1] | (pLZ_codes[2] << 8));
|
||||
pLZ_codes += 3;
|
||||
|
||||
MZ_ASSERT(d->m_huff_code_sizes[0][s_tdefl_len_sym[match_len]]);
|
||||
|
@ -1158,7 +1169,7 @@ static mz_bool tdefl_compress_lz_codes(tdefl_compressor *d)
|
|||
if (pOutput_buf >= d->m_pOutput_buf_end)
|
||||
return MZ_FALSE;
|
||||
|
||||
*(mz_uint64 *)pOutput_buf = bit_buffer;
|
||||
memcpy(pOutput_buf, &bit_buffer, sizeof(mz_uint64));
|
||||
pOutput_buf += (bits_in >> 3);
|
||||
bit_buffer >>= (bits_in & ~7);
|
||||
bits_in &= 7;
|
||||
|
@ -1240,6 +1251,8 @@ static mz_bool tdefl_compress_block(tdefl_compressor *d, mz_bool static_block)
|
|||
return tdefl_compress_lz_codes(d);
|
||||
}
|
||||
|
||||
static const mz_uint s_tdefl_num_probes[11];
|
||||
|
||||
static int tdefl_flush_block(tdefl_compressor *d, int flush)
|
||||
{
|
||||
mz_uint saved_bit_buf, saved_bits_in;
|
||||
|
@ -1260,8 +1273,27 @@ static int tdefl_flush_block(tdefl_compressor *d, int flush)
|
|||
|
||||
if ((d->m_flags & TDEFL_WRITE_ZLIB_HEADER) && (!d->m_block_index))
|
||||
{
|
||||
TDEFL_PUT_BITS(0x78, 8);
|
||||
TDEFL_PUT_BITS(0x01, 8);
|
||||
const mz_uint8 cmf = 0x78;
|
||||
mz_uint8 flg, flevel = 3;
|
||||
mz_uint header, i, mz_un = sizeof(s_tdefl_num_probes) / sizeof(mz_uint);
|
||||
|
||||
/* Determine compression level by reversing the process in tdefl_create_comp_flags_from_zip_params() */
|
||||
for (i = 0; i < mz_un; i++)
|
||||
if (s_tdefl_num_probes[i] == (d->m_flags & 0xFFF)) break;
|
||||
|
||||
if (i < 2)
|
||||
flevel = 0;
|
||||
else if (i < 6)
|
||||
flevel = 1;
|
||||
else if (i == 6)
|
||||
flevel = 2;
|
||||
|
||||
header = cmf << 8 | (flevel << 6);
|
||||
header += 31 - (header % 31);
|
||||
flg = header & 0xFF;
|
||||
|
||||
TDEFL_PUT_BITS(cmf, 8);
|
||||
TDEFL_PUT_BITS(flg, 8);
|
||||
}
|
||||
|
||||
TDEFL_PUT_BITS(flush == TDEFL_FINISH, 1);
|
||||
|
@ -1732,7 +1764,7 @@ static mz_bool tdefl_compress_normal(tdefl_compressor *d)
|
|||
mz_uint dst_pos = (d->m_lookahead_pos + d->m_lookahead_size) & TDEFL_LZ_DICT_SIZE_MASK, ins_pos = d->m_lookahead_pos + d->m_lookahead_size - 2;
|
||||
mz_uint hash = (d->m_dict[ins_pos & TDEFL_LZ_DICT_SIZE_MASK] << TDEFL_LZ_HASH_SHIFT) ^ d->m_dict[(ins_pos + 1) & TDEFL_LZ_DICT_SIZE_MASK];
|
||||
mz_uint num_bytes_to_process = (mz_uint)MZ_MIN(src_buf_left, TDEFL_MAX_MATCH_LEN - d->m_lookahead_size);
|
||||
const mz_uint8 *pSrc_end = pSrc + num_bytes_to_process;
|
||||
const mz_uint8 *pSrc_end = pSrc ? pSrc + num_bytes_to_process : NULL;
|
||||
src_buf_left -= num_bytes_to_process;
|
||||
d->m_lookahead_size += num_bytes_to_process;
|
||||
while (pSrc != pSrc_end)
|
||||
|
@ -1942,8 +1974,8 @@ tdefl_status tdefl_compress(tdefl_compressor *d, const void *pIn_buf, size_t *pI
|
|||
d->m_finished = (flush == TDEFL_FINISH);
|
||||
if (flush == TDEFL_FULL_FLUSH)
|
||||
{
|
||||
MZ_CLEAR_OBJ(d->m_hash);
|
||||
MZ_CLEAR_OBJ(d->m_next);
|
||||
MZ_CLEAR_ARR(d->m_hash);
|
||||
MZ_CLEAR_ARR(d->m_next);
|
||||
d->m_dict_size = 0;
|
||||
}
|
||||
}
|
||||
|
@ -1966,7 +1998,7 @@ tdefl_status tdefl_init(tdefl_compressor *d, tdefl_put_buf_func_ptr pPut_buf_fun
|
|||
d->m_greedy_parsing = (flags & TDEFL_GREEDY_PARSING_FLAG) != 0;
|
||||
d->m_max_probes[1] = 1 + (((flags & 0xFFF) >> 2) + 2) / 3;
|
||||
if (!(flags & TDEFL_NONDETERMINISTIC_PARSING_FLAG))
|
||||
MZ_CLEAR_OBJ(d->m_hash);
|
||||
MZ_CLEAR_ARR(d->m_hash);
|
||||
d->m_lookahead_pos = d->m_lookahead_size = d->m_dict_size = d->m_total_lz_bytes = d->m_lz_code_buf_dict_pos = d->m_bits_in = 0;
|
||||
d->m_output_flush_ofs = d->m_output_flush_remaining = d->m_finished = d->m_block_index = d->m_bit_buffer = d->m_wants_to_finish = 0;
|
||||
d->m_pLZ_code_buf = d->m_lz_code_buf + 1;
|
||||
|
@ -1987,7 +2019,7 @@ tdefl_status tdefl_init(tdefl_compressor *d, tdefl_put_buf_func_ptr pPut_buf_fun
|
|||
d->m_src_buf_left = 0;
|
||||
d->m_out_buf_ofs = 0;
|
||||
if (!(flags & TDEFL_NONDETERMINISTIC_PARSING_FLAG))
|
||||
MZ_CLEAR_OBJ(d->m_dict);
|
||||
MZ_CLEAR_ARR(d->m_dict);
|
||||
memset(&d->m_huff_count[0][0], 0, sizeof(d->m_huff_count[0][0]) * TDEFL_MAX_HUFF_SYMBOLS_0);
|
||||
memset(&d->m_huff_count[1][0], 0, sizeof(d->m_huff_count[1][0]) * TDEFL_MAX_HUFF_SYMBOLS_1);
|
||||
return TDEFL_STATUS_OKAY;
|
||||
|
@ -2197,7 +2229,7 @@ void *tdefl_write_image_to_png_file_in_memory(const void *pImage, int w, int h,
|
|||
/* Allocate the tdefl_compressor and tinfl_decompressor structures in C so that */
|
||||
/* non-C language bindings to tdefL_ and tinfl_ API don't need to worry about */
|
||||
/* structure size and allocation mechanism. */
|
||||
tdefl_compressor *tdefl_compressor_alloc()
|
||||
tdefl_compressor *tdefl_compressor_alloc(void)
|
||||
{
|
||||
return (tdefl_compressor *)MZ_MALLOC(sizeof(tdefl_compressor));
|
||||
}
|
||||
|
@ -2215,6 +2247,8 @@ void tdefl_compressor_free(tdefl_compressor *pComp)
|
|||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /*#ifndef MINIZ_NO_DEFLATE_APIS*/
|
||||
/**************************************************************************
|
||||
*
|
||||
* Copyright 2013-2014 RAD Game Tools and Valve Software
|
||||
|
@ -2243,6 +2277,8 @@ void tdefl_compressor_free(tdefl_compressor *pComp)
|
|||
|
||||
|
||||
|
||||
#ifndef MINIZ_NO_INFLATE_APIS
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
@ -2323,10 +2359,10 @@ extern "C" {
|
|||
/* It reads just enough bytes from the input stream that are needed to decode the next Huffman code (and absolutely no more). It works by trying to fully decode a */
|
||||
/* Huffman code by using whatever bits are currently present in the bit buffer. If this fails, it reads another byte, and tries again until it succeeds or until the */
|
||||
/* bit buffer contains >=15 bits (deflate's max. Huffman code size). */
|
||||
#define TINFL_HUFF_BITBUF_FILL(state_index, pHuff) \
|
||||
#define TINFL_HUFF_BITBUF_FILL(state_index, pLookUp, pTree) \
|
||||
do \
|
||||
{ \
|
||||
temp = (pHuff)->m_look_up[bit_buf & (TINFL_FAST_LOOKUP_SIZE - 1)]; \
|
||||
temp = pLookUp[bit_buf & (TINFL_FAST_LOOKUP_SIZE - 1)]; \
|
||||
if (temp >= 0) \
|
||||
{ \
|
||||
code_len = temp >> 9; \
|
||||
|
@ -2338,7 +2374,7 @@ extern "C" {
|
|||
code_len = TINFL_FAST_LOOKUP_BITS; \
|
||||
do \
|
||||
{ \
|
||||
temp = (pHuff)->m_tree[~temp + ((bit_buf >> code_len++) & 1)]; \
|
||||
temp = pTree[~temp + ((bit_buf >> code_len++) & 1)]; \
|
||||
} while ((temp < 0) && (num_bits >= (code_len + 1))); \
|
||||
if (temp >= 0) \
|
||||
break; \
|
||||
|
@ -2354,7 +2390,7 @@ extern "C" {
|
|||
/* The slow path is only executed at the very end of the input buffer. */
|
||||
/* v1.16: The original macro handled the case at the very end of the passed-in input buffer, but we also need to handle the case where the user passes in 1+zillion bytes */
|
||||
/* following the deflate data and our non-conservative read-ahead path won't kick in here on this code. This is much trickier. */
|
||||
#define TINFL_HUFF_DECODE(state_index, sym, pHuff) \
|
||||
#define TINFL_HUFF_DECODE(state_index, sym, pLookUp, pTree) \
|
||||
do \
|
||||
{ \
|
||||
int temp; \
|
||||
|
@ -2363,7 +2399,7 @@ extern "C" {
|
|||
{ \
|
||||
if ((pIn_buf_end - pIn_buf_cur) < 2) \
|
||||
{ \
|
||||
TINFL_HUFF_BITBUF_FILL(state_index, pHuff); \
|
||||
TINFL_HUFF_BITBUF_FILL(state_index, pLookUp, pTree); \
|
||||
} \
|
||||
else \
|
||||
{ \
|
||||
|
@ -2372,14 +2408,14 @@ extern "C" {
|
|||
num_bits += 16; \
|
||||
} \
|
||||
} \
|
||||
if ((temp = (pHuff)->m_look_up[bit_buf & (TINFL_FAST_LOOKUP_SIZE - 1)]) >= 0) \
|
||||
if ((temp = pLookUp[bit_buf & (TINFL_FAST_LOOKUP_SIZE - 1)]) >= 0) \
|
||||
code_len = temp >> 9, temp &= 511; \
|
||||
else \
|
||||
{ \
|
||||
code_len = TINFL_FAST_LOOKUP_BITS; \
|
||||
do \
|
||||
{ \
|
||||
temp = (pHuff)->m_tree[~temp + ((bit_buf >> code_len++) & 1)]; \
|
||||
temp = pTree[~temp + ((bit_buf >> code_len++) & 1)]; \
|
||||
} while (temp < 0); \
|
||||
} \
|
||||
sym = temp; \
|
||||
|
@ -2388,20 +2424,33 @@ extern "C" {
|
|||
} \
|
||||
MZ_MACRO_END
|
||||
|
||||
static void tinfl_clear_tree(tinfl_decompressor *r)
|
||||
{
|
||||
if (r->m_type == 0)
|
||||
MZ_CLEAR_ARR(r->m_tree_0);
|
||||
else if (r->m_type == 1)
|
||||
MZ_CLEAR_ARR(r->m_tree_1);
|
||||
else
|
||||
MZ_CLEAR_ARR(r->m_tree_2);
|
||||
}
|
||||
|
||||
tinfl_status tinfl_decompress(tinfl_decompressor *r, const mz_uint8 *pIn_buf_next, size_t *pIn_buf_size, mz_uint8 *pOut_buf_start, mz_uint8 *pOut_buf_next, size_t *pOut_buf_size, const mz_uint32 decomp_flags)
|
||||
{
|
||||
static const int s_length_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 s_length_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 s_dist_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 s_dist_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 const mz_uint16 s_length_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 mz_uint8 s_length_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 mz_uint16 s_dist_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 mz_uint8 s_dist_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 const mz_uint8 s_length_dezigzag[19] = { 16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15 };
|
||||
static const int s_min_table_sizes[3] = { 257, 1, 4 };
|
||||
static const mz_uint16 s_min_table_sizes[3] = { 257, 1, 4 };
|
||||
|
||||
mz_int16 *pTrees[3];
|
||||
mz_uint8 *pCode_sizes[3];
|
||||
|
||||
tinfl_status status = TINFL_STATUS_FAILED;
|
||||
mz_uint32 num_bits, dist, counter, num_extra;
|
||||
tinfl_bit_buf_t bit_buf;
|
||||
const mz_uint8 *pIn_buf_cur = pIn_buf_next, *const pIn_buf_end = pIn_buf_next + *pIn_buf_size;
|
||||
mz_uint8 *pOut_buf_cur = pOut_buf_next, *const pOut_buf_end = pOut_buf_next + *pOut_buf_size;
|
||||
mz_uint8 *pOut_buf_cur = pOut_buf_next, *const pOut_buf_end = pOut_buf_next ? pOut_buf_next + *pOut_buf_size : NULL;
|
||||
size_t out_buf_size_mask = (decomp_flags & TINFL_FLAG_USING_NON_WRAPPING_OUTPUT_BUF) ? (size_t)-1 : ((pOut_buf_next - pOut_buf_start) + *pOut_buf_size) - 1, dist_from_out_buf_start;
|
||||
|
||||
/* Ensure the output buffer's size is a power of 2, unless the output buffer is large enough to hold the entire output file (in which case it doesn't matter). */
|
||||
|
@ -2411,6 +2460,13 @@ tinfl_status tinfl_decompress(tinfl_decompressor *r, const mz_uint8 *pIn_buf_nex
|
|||
return TINFL_STATUS_BAD_PARAM;
|
||||
}
|
||||
|
||||
pTrees[0] = r->m_tree_0;
|
||||
pTrees[1] = r->m_tree_1;
|
||||
pTrees[2] = r->m_tree_2;
|
||||
pCode_sizes[0] = r->m_code_size_0;
|
||||
pCode_sizes[1] = r->m_code_size_1;
|
||||
pCode_sizes[2] = r->m_code_size_2;
|
||||
|
||||
num_bits = r->m_num_bits;
|
||||
bit_buf = r->m_bit_buf;
|
||||
dist = r->m_dist;
|
||||
|
@ -2427,7 +2483,7 @@ tinfl_status tinfl_decompress(tinfl_decompressor *r, const mz_uint8 *pIn_buf_nex
|
|||
TINFL_GET_BYTE(2, r->m_zhdr1);
|
||||
counter = (((r->m_zhdr0 * 256 + r->m_zhdr1) % 31 != 0) || (r->m_zhdr1 & 32) || ((r->m_zhdr0 & 15) != 8));
|
||||
if (!(decomp_flags & TINFL_FLAG_USING_NON_WRAPPING_OUTPUT_BUF))
|
||||
counter |= (((1U << (8U + (r->m_zhdr0 >> 4))) > 32768U) || ((out_buf_size_mask + 1) < (size_t)(1U << (8U + (r->m_zhdr0 >> 4)))));
|
||||
counter |= (((1U << (8U + (r->m_zhdr0 >> 4))) > 32768U) || ((out_buf_size_mask + 1) < (size_t)((size_t)1 << (8U + (r->m_zhdr0 >> 4)))));
|
||||
if (counter)
|
||||
{
|
||||
TINFL_CR_RETURN_FOREVER(36, TINFL_STATUS_FAILED);
|
||||
|
@ -2488,11 +2544,11 @@ tinfl_status tinfl_decompress(tinfl_decompressor *r, const mz_uint8 *pIn_buf_nex
|
|||
{
|
||||
if (r->m_type == 1)
|
||||
{
|
||||
mz_uint8 *p = r->m_tables[0].m_code_size;
|
||||
mz_uint8 *p = r->m_code_size_0;
|
||||
mz_uint i;
|
||||
r->m_table_sizes[0] = 288;
|
||||
r->m_table_sizes[1] = 32;
|
||||
TINFL_MEMSET(r->m_tables[1].m_code_size, 5, 32);
|
||||
TINFL_MEMSET(r->m_code_size_1, 5, 32);
|
||||
for (i = 0; i <= 143; ++i)
|
||||
*p++ = 8;
|
||||
for (; i <= 255; ++i)
|
||||
|
@ -2509,26 +2565,30 @@ tinfl_status tinfl_decompress(tinfl_decompressor *r, const mz_uint8 *pIn_buf_nex
|
|||
TINFL_GET_BITS(11, r->m_table_sizes[counter], "\05\05\04"[counter]);
|
||||
r->m_table_sizes[counter] += s_min_table_sizes[counter];
|
||||
}
|
||||
MZ_CLEAR_OBJ(r->m_tables[2].m_code_size);
|
||||
MZ_CLEAR_ARR(r->m_code_size_2);
|
||||
for (counter = 0; counter < r->m_table_sizes[2]; counter++)
|
||||
{
|
||||
mz_uint s;
|
||||
TINFL_GET_BITS(14, s, 3);
|
||||
r->m_tables[2].m_code_size[s_length_dezigzag[counter]] = (mz_uint8)s;
|
||||
r->m_code_size_2[s_length_dezigzag[counter]] = (mz_uint8)s;
|
||||
}
|
||||
r->m_table_sizes[2] = 19;
|
||||
}
|
||||
for (; (int)r->m_type >= 0; r->m_type--)
|
||||
{
|
||||
int tree_next, tree_cur;
|
||||
tinfl_huff_table *pTable;
|
||||
mz_int16 *pLookUp;
|
||||
mz_int16 *pTree;
|
||||
mz_uint8 *pCode_size;
|
||||
mz_uint i, j, used_syms, total, sym_index, next_code[17], total_syms[16];
|
||||
pTable = &r->m_tables[r->m_type];
|
||||
MZ_CLEAR_OBJ(total_syms);
|
||||
MZ_CLEAR_OBJ(pTable->m_look_up);
|
||||
MZ_CLEAR_OBJ(pTable->m_tree);
|
||||
pLookUp = r->m_look_up[r->m_type];
|
||||
pTree = pTrees[r->m_type];
|
||||
pCode_size = pCode_sizes[r->m_type];
|
||||
MZ_CLEAR_ARR(total_syms);
|
||||
TINFL_MEMSET(pLookUp, 0, sizeof(r->m_look_up[0]));
|
||||
tinfl_clear_tree(r);
|
||||
for (i = 0; i < r->m_table_sizes[r->m_type]; ++i)
|
||||
total_syms[pTable->m_code_size[i]]++;
|
||||
total_syms[pCode_size[i]]++;
|
||||
used_syms = 0, total = 0;
|
||||
next_code[0] = next_code[1] = 0;
|
||||
for (i = 1; i <= 15; ++i)
|
||||
|
@ -2542,7 +2602,7 @@ tinfl_status tinfl_decompress(tinfl_decompressor *r, const mz_uint8 *pIn_buf_nex
|
|||
}
|
||||
for (tree_next = -1, sym_index = 0; sym_index < r->m_table_sizes[r->m_type]; ++sym_index)
|
||||
{
|
||||
mz_uint rev_code = 0, l, cur_code, code_size = pTable->m_code_size[sym_index];
|
||||
mz_uint rev_code = 0, l, cur_code, code_size = pCode_size[sym_index];
|
||||
if (!code_size)
|
||||
continue;
|
||||
cur_code = next_code[code_size]++;
|
||||
|
@ -2553,14 +2613,14 @@ tinfl_status tinfl_decompress(tinfl_decompressor *r, const mz_uint8 *pIn_buf_nex
|
|||
mz_int16 k = (mz_int16)((code_size << 9) | sym_index);
|
||||
while (rev_code < TINFL_FAST_LOOKUP_SIZE)
|
||||
{
|
||||
pTable->m_look_up[rev_code] = k;
|
||||
pLookUp[rev_code] = k;
|
||||
rev_code += (1 << code_size);
|
||||
}
|
||||
continue;
|
||||
}
|
||||
if (0 == (tree_cur = pTable->m_look_up[rev_code & (TINFL_FAST_LOOKUP_SIZE - 1)]))
|
||||
if (0 == (tree_cur = pLookUp[rev_code & (TINFL_FAST_LOOKUP_SIZE - 1)]))
|
||||
{
|
||||
pTable->m_look_up[rev_code & (TINFL_FAST_LOOKUP_SIZE - 1)] = (mz_int16)tree_next;
|
||||
pLookUp[rev_code & (TINFL_FAST_LOOKUP_SIZE - 1)] = (mz_int16)tree_next;
|
||||
tree_cur = tree_next;
|
||||
tree_next -= 2;
|
||||
}
|
||||
|
@ -2568,24 +2628,24 @@ tinfl_status tinfl_decompress(tinfl_decompressor *r, const mz_uint8 *pIn_buf_nex
|
|||
for (j = code_size; j > (TINFL_FAST_LOOKUP_BITS + 1); j--)
|
||||
{
|
||||
tree_cur -= ((rev_code >>= 1) & 1);
|
||||
if (!pTable->m_tree[-tree_cur - 1])
|
||||
if (!pTree[-tree_cur - 1])
|
||||
{
|
||||
pTable->m_tree[-tree_cur - 1] = (mz_int16)tree_next;
|
||||
pTree[-tree_cur - 1] = (mz_int16)tree_next;
|
||||
tree_cur = tree_next;
|
||||
tree_next -= 2;
|
||||
}
|
||||
else
|
||||
tree_cur = pTable->m_tree[-tree_cur - 1];
|
||||
tree_cur = pTree[-tree_cur - 1];
|
||||
}
|
||||
tree_cur -= ((rev_code >>= 1) & 1);
|
||||
pTable->m_tree[-tree_cur - 1] = (mz_int16)sym_index;
|
||||
pTree[-tree_cur - 1] = (mz_int16)sym_index;
|
||||
}
|
||||
if (r->m_type == 2)
|
||||
{
|
||||
for (counter = 0; counter < (r->m_table_sizes[0] + r->m_table_sizes[1]);)
|
||||
{
|
||||
mz_uint s;
|
||||
TINFL_HUFF_DECODE(16, dist, &r->m_tables[2]);
|
||||
TINFL_HUFF_DECODE(16, dist, r->m_look_up[2], r->m_tree_2);
|
||||
if (dist < 16)
|
||||
{
|
||||
r->m_len_codes[counter++] = (mz_uint8)dist;
|
||||
|
@ -2605,8 +2665,8 @@ tinfl_status tinfl_decompress(tinfl_decompressor *r, const mz_uint8 *pIn_buf_nex
|
|||
{
|
||||
TINFL_CR_RETURN_FOREVER(21, TINFL_STATUS_FAILED);
|
||||
}
|
||||
TINFL_MEMCPY(r->m_tables[0].m_code_size, r->m_len_codes, r->m_table_sizes[0]);
|
||||
TINFL_MEMCPY(r->m_tables[1].m_code_size, r->m_len_codes + r->m_table_sizes[0], r->m_table_sizes[1]);
|
||||
TINFL_MEMCPY(r->m_code_size_0, r->m_len_codes, r->m_table_sizes[0]);
|
||||
TINFL_MEMCPY(r->m_code_size_1, r->m_len_codes + r->m_table_sizes[0], r->m_table_sizes[1]);
|
||||
}
|
||||
}
|
||||
for (;;)
|
||||
|
@ -2616,7 +2676,7 @@ tinfl_status tinfl_decompress(tinfl_decompressor *r, const mz_uint8 *pIn_buf_nex
|
|||
{
|
||||
if (((pIn_buf_end - pIn_buf_cur) < 4) || ((pOut_buf_end - pOut_buf_cur) < 2))
|
||||
{
|
||||
TINFL_HUFF_DECODE(23, counter, &r->m_tables[0]);
|
||||
TINFL_HUFF_DECODE(23, counter, r->m_look_up[0], r->m_tree_0);
|
||||
if (counter >= 256)
|
||||
break;
|
||||
while (pOut_buf_cur >= pOut_buf_end)
|
||||
|
@ -2644,14 +2704,14 @@ tinfl_status tinfl_decompress(tinfl_decompressor *r, const mz_uint8 *pIn_buf_nex
|
|||
num_bits += 16;
|
||||
}
|
||||
#endif
|
||||
if ((sym2 = r->m_tables[0].m_look_up[bit_buf & (TINFL_FAST_LOOKUP_SIZE - 1)]) >= 0)
|
||||
if ((sym2 = r->m_look_up[0][bit_buf & (TINFL_FAST_LOOKUP_SIZE - 1)]) >= 0)
|
||||
code_len = sym2 >> 9;
|
||||
else
|
||||
{
|
||||
code_len = TINFL_FAST_LOOKUP_BITS;
|
||||
do
|
||||
{
|
||||
sym2 = r->m_tables[0].m_tree[~sym2 + ((bit_buf >> code_len++) & 1)];
|
||||
sym2 = r->m_tree_0[~sym2 + ((bit_buf >> code_len++) & 1)];
|
||||
} while (sym2 < 0);
|
||||
}
|
||||
counter = sym2;
|
||||
|
@ -2668,14 +2728,14 @@ tinfl_status tinfl_decompress(tinfl_decompressor *r, const mz_uint8 *pIn_buf_nex
|
|||
num_bits += 16;
|
||||
}
|
||||
#endif
|
||||
if ((sym2 = r->m_tables[0].m_look_up[bit_buf & (TINFL_FAST_LOOKUP_SIZE - 1)]) >= 0)
|
||||
if ((sym2 = r->m_look_up[0][bit_buf & (TINFL_FAST_LOOKUP_SIZE - 1)]) >= 0)
|
||||
code_len = sym2 >> 9;
|
||||
else
|
||||
{
|
||||
code_len = TINFL_FAST_LOOKUP_BITS;
|
||||
do
|
||||
{
|
||||
sym2 = r->m_tables[0].m_tree[~sym2 + ((bit_buf >> code_len++) & 1)];
|
||||
sym2 = r->m_tree_0[~sym2 + ((bit_buf >> code_len++) & 1)];
|
||||
} while (sym2 < 0);
|
||||
}
|
||||
bit_buf >>= code_len;
|
||||
|
@ -2704,7 +2764,7 @@ tinfl_status tinfl_decompress(tinfl_decompressor *r, const mz_uint8 *pIn_buf_nex
|
|||
counter += extra_bits;
|
||||
}
|
||||
|
||||
TINFL_HUFF_DECODE(26, dist, &r->m_tables[1]);
|
||||
TINFL_HUFF_DECODE(26, dist, r->m_look_up[1], r->m_tree_1);
|
||||
num_extra = s_dist_extra[dist];
|
||||
dist = s_dist_base[dist];
|
||||
if (num_extra)
|
||||
|
@ -2789,7 +2849,7 @@ tinfl_status tinfl_decompress(tinfl_decompressor *r, const mz_uint8 *pIn_buf_nex
|
|||
--pIn_buf_cur;
|
||||
num_bits -= 8;
|
||||
}
|
||||
bit_buf &= (tinfl_bit_buf_t)((((mz_uint64)1) << num_bits) - (mz_uint64)1);
|
||||
bit_buf &= ~(~(tinfl_bit_buf_t)0 << num_bits);
|
||||
MZ_ASSERT(!num_bits); /* if this assert fires then we've read beyond the end of non-deflate/zlib streams with following data (such as gzip streams). */
|
||||
|
||||
if (decomp_flags & TINFL_FLAG_PARSE_ZLIB_HEADER)
|
||||
|
@ -2821,7 +2881,7 @@ common_exit:
|
|||
}
|
||||
}
|
||||
r->m_num_bits = num_bits;
|
||||
r->m_bit_buf = bit_buf & (tinfl_bit_buf_t)((((mz_uint64)1) << num_bits) - (mz_uint64)1);
|
||||
r->m_bit_buf = bit_buf & ~(~(tinfl_bit_buf_t)0 << num_bits);
|
||||
r->m_dist = dist;
|
||||
r->m_counter = counter;
|
||||
r->m_num_extra = num_extra;
|
||||
|
@ -2916,6 +2976,7 @@ int tinfl_decompress_mem_to_callback(const void *pIn_buf, size_t *pIn_buf_size,
|
|||
size_t in_buf_ofs = 0, dict_ofs = 0;
|
||||
if (!pDict)
|
||||
return TINFL_STATUS_FAILED;
|
||||
memset(pDict,0,TINFL_LZ_DICT_SIZE);
|
||||
tinfl_init(&decomp);
|
||||
for (;;)
|
||||
{
|
||||
|
@ -2938,7 +2999,7 @@ int tinfl_decompress_mem_to_callback(const void *pIn_buf, size_t *pIn_buf_size,
|
|||
}
|
||||
|
||||
#ifndef MINIZ_NO_MALLOC
|
||||
tinfl_decompressor *tinfl_decompressor_alloc()
|
||||
tinfl_decompressor *tinfl_decompressor_alloc(void)
|
||||
{
|
||||
tinfl_decompressor *pDecomp = (tinfl_decompressor *)MZ_MALLOC(sizeof(tinfl_decompressor));
|
||||
if (pDecomp)
|
||||
|
@ -2955,6 +3016,8 @@ void tinfl_decompressor_free(tinfl_decompressor *pDecomp)
|
|||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /*#ifndef MINIZ_NO_INFLATE_APIS*/
|
||||
/**************************************************************************
|
||||
*
|
||||
* Copyright 2013-2014 RAD Game Tools and Valve Software
|
||||
|
@ -2997,19 +3060,48 @@ extern "C" {
|
|||
#include <sys/stat.h>
|
||||
|
||||
#if defined(_MSC_VER) || defined(__MINGW64__)
|
||||
|
||||
#define WIN32_LEAN_AND_MEAN
|
||||
#include <windows.h>
|
||||
|
||||
static WCHAR* mz_utf8z_to_widechar(const char* str)
|
||||
{
|
||||
int reqChars = MultiByteToWideChar(CP_UTF8, 0, str, -1, NULL, 0);
|
||||
WCHAR* wStr = (WCHAR*)malloc(reqChars * sizeof(WCHAR));
|
||||
MultiByteToWideChar(CP_UTF8, 0, str, -1, wStr, reqChars);
|
||||
return wStr;
|
||||
}
|
||||
|
||||
static FILE *mz_fopen(const char *pFilename, const char *pMode)
|
||||
{
|
||||
FILE *pFile = NULL;
|
||||
fopen_s(&pFile, pFilename, pMode);
|
||||
return pFile;
|
||||
WCHAR* wFilename = mz_utf8z_to_widechar(pFilename);
|
||||
WCHAR* wMode = mz_utf8z_to_widechar(pMode);
|
||||
FILE* pFile = NULL;
|
||||
errno_t err = _wfopen_s(&pFile, wFilename, wMode);
|
||||
free(wFilename);
|
||||
free(wMode);
|
||||
return err ? NULL : pFile;
|
||||
}
|
||||
|
||||
static FILE *mz_freopen(const char *pPath, const char *pMode, FILE *pStream)
|
||||
{
|
||||
FILE *pFile = NULL;
|
||||
if (freopen_s(&pFile, pPath, pMode, pStream))
|
||||
return NULL;
|
||||
return pFile;
|
||||
WCHAR* wPath = mz_utf8z_to_widechar(pPath);
|
||||
WCHAR* wMode = mz_utf8z_to_widechar(pMode);
|
||||
FILE* pFile = NULL;
|
||||
errno_t err = _wfreopen_s(&pFile, wPath, wMode, pStream);
|
||||
free(wPath);
|
||||
free(wMode);
|
||||
return err ? NULL : pFile;
|
||||
}
|
||||
|
||||
static int mz_stat64(const char *path, struct __stat64 *buffer)
|
||||
{
|
||||
WCHAR* wPath = mz_utf8z_to_widechar(path);
|
||||
int res = _wstat64(wPath, buffer);
|
||||
free(wPath);
|
||||
return res;
|
||||
}
|
||||
|
||||
#ifndef MINIZ_NO_TIME
|
||||
#include <sys/utime.h>
|
||||
#endif
|
||||
|
@ -3020,11 +3112,12 @@ static FILE *mz_freopen(const char *pPath, const char *pMode, FILE *pStream)
|
|||
#define MZ_FTELL64 _ftelli64
|
||||
#define MZ_FSEEK64 _fseeki64
|
||||
#define MZ_FILE_STAT_STRUCT _stat64
|
||||
#define MZ_FILE_STAT _stat64
|
||||
#define MZ_FILE_STAT mz_stat64
|
||||
#define MZ_FFLUSH fflush
|
||||
#define MZ_FREOPEN mz_freopen
|
||||
#define MZ_DELETE_FILE remove
|
||||
#elif defined(__MINGW32__)
|
||||
|
||||
#elif defined(__MINGW32__) || defined(__WATCOMC__)
|
||||
#ifndef MINIZ_NO_TIME
|
||||
#include <sys/utime.h>
|
||||
#endif
|
||||
|
@ -3032,13 +3125,14 @@ static FILE *mz_freopen(const char *pPath, const char *pMode, FILE *pStream)
|
|||
#define MZ_FCLOSE fclose
|
||||
#define MZ_FREAD fread
|
||||
#define MZ_FWRITE fwrite
|
||||
#define MZ_FTELL64 ftello64
|
||||
#define MZ_FSEEK64 fseeko64
|
||||
#define MZ_FILE_STAT_STRUCT _stat
|
||||
#define MZ_FILE_STAT _stat
|
||||
#define MZ_FTELL64 _ftelli64
|
||||
#define MZ_FSEEK64 _fseeki64
|
||||
#define MZ_FILE_STAT_STRUCT stat
|
||||
#define MZ_FILE_STAT stat
|
||||
#define MZ_FFLUSH fflush
|
||||
#define MZ_FREOPEN(f, m, s) freopen(f, m, s)
|
||||
#define MZ_DELETE_FILE remove
|
||||
|
||||
#elif defined(__TINYC__)
|
||||
#ifndef MINIZ_NO_TIME
|
||||
#include <sys/utime.h>
|
||||
|
@ -3054,6 +3148,7 @@ static FILE *mz_freopen(const char *pPath, const char *pMode, FILE *pStream)
|
|||
#define MZ_FFLUSH fflush
|
||||
#define MZ_FREOPEN(f, m, s) freopen(f, m, s)
|
||||
#define MZ_DELETE_FILE remove
|
||||
|
||||
#elif defined(__USE_LARGEFILE64) /* gcc, clang */
|
||||
#ifndef MINIZ_NO_TIME
|
||||
#include <utime.h>
|
||||
|
@ -3069,7 +3164,8 @@ static FILE *mz_freopen(const char *pPath, const char *pMode, FILE *pStream)
|
|||
#define MZ_FFLUSH fflush
|
||||
#define MZ_FREOPEN(p, m, s) freopen64(p, m, s)
|
||||
#define MZ_DELETE_FILE remove
|
||||
#elif defined(__APPLE__)
|
||||
|
||||
#elif defined(__APPLE__) || defined(__FreeBSD__)
|
||||
#ifndef MINIZ_NO_TIME
|
||||
#include <utime.h>
|
||||
#endif
|
||||
|
@ -3215,7 +3311,7 @@ struct mz_zip_internal_state_tag
|
|||
mz_zip_array m_sorted_central_dir_offsets;
|
||||
|
||||
/* The flags passed in when the archive is initially opened. */
|
||||
uint32_t m_init_flags;
|
||||
mz_uint32 m_init_flags;
|
||||
|
||||
/* MZ_TRUE if the archive has a zip64 end of central directory headers, etc. */
|
||||
mz_bool m_zip64;
|
||||
|
@ -3651,7 +3747,7 @@ static mz_bool mz_zip_reader_read_central_dir(mz_zip_archive *pZip, mz_uint flag
|
|||
if (((num_this_disk | cdir_disk_index) != 0) && ((num_this_disk != 1) || (cdir_disk_index != 1)))
|
||||
return mz_zip_set_error(pZip, MZ_ZIP_UNSUPPORTED_MULTIDISK);
|
||||
|
||||
if (cdir_size < pZip->m_total_files * MZ_ZIP_CENTRAL_DIR_HEADER_SIZE)
|
||||
if (cdir_size < (mz_uint64)pZip->m_total_files * MZ_ZIP_CENTRAL_DIR_HEADER_SIZE)
|
||||
return mz_zip_set_error(pZip, MZ_ZIP_INVALID_HEADER_OR_CORRUPTED);
|
||||
|
||||
if ((cdir_ofs + (mz_uint64)cdir_size) > pZip->m_archive_size)
|
||||
|
@ -3802,7 +3898,7 @@ static mz_bool mz_zip_reader_read_central_dir(mz_zip_archive *pZip, mz_uint flag
|
|||
void mz_zip_zero_struct(mz_zip_archive *pZip)
|
||||
{
|
||||
if (pZip)
|
||||
MZ_CLEAR_OBJ(*pZip);
|
||||
MZ_CLEAR_PTR(pZip);
|
||||
}
|
||||
|
||||
static mz_bool mz_zip_reader_end_internal(mz_zip_archive *pZip, mz_bool set_last_error)
|
||||
|
@ -4276,7 +4372,7 @@ static mz_bool mz_zip_locate_file_binary_search(mz_zip_archive *pZip, const char
|
|||
const mz_zip_array *pCentral_dir_offsets = &pState->m_central_dir_offsets;
|
||||
const mz_zip_array *pCentral_dir = &pState->m_central_dir;
|
||||
mz_uint32 *pIndices = &MZ_ZIP_ARRAY_ELEMENT(&pState->m_sorted_central_dir_offsets, mz_uint32, 0);
|
||||
const uint32_t size = pZip->m_total_files;
|
||||
const mz_uint32 size = pZip->m_total_files;
|
||||
const mz_uint filename_len = (mz_uint)strlen(pFilename);
|
||||
|
||||
if (pIndex)
|
||||
|
@ -4291,7 +4387,7 @@ static mz_bool mz_zip_locate_file_binary_search(mz_zip_archive *pZip, const char
|
|||
while (l <= h)
|
||||
{
|
||||
mz_int64 m = l + ((h - l) >> 1);
|
||||
uint32_t file_index = pIndices[(uint32_t)m];
|
||||
mz_uint32 file_index = pIndices[(mz_uint32)m];
|
||||
|
||||
int comp = mz_zip_filename_compare(pCentral_dir, pCentral_dir_offsets, file_index, pFilename, filename_len);
|
||||
if (!comp)
|
||||
|
@ -4384,7 +4480,8 @@ mz_bool mz_zip_reader_locate_file_v2(mz_zip_archive *pZip, const char *pName, co
|
|||
return mz_zip_set_error(pZip, MZ_ZIP_FILE_NOT_FOUND);
|
||||
}
|
||||
|
||||
mz_bool mz_zip_reader_extract_to_mem_no_alloc(mz_zip_archive *pZip, mz_uint file_index, void *pBuf, size_t buf_size, mz_uint flags, void *pUser_read_buf, size_t user_read_buf_size)
|
||||
static
|
||||
mz_bool mz_zip_reader_extract_to_mem_no_alloc1(mz_zip_archive *pZip, mz_uint file_index, void *pBuf, size_t buf_size, mz_uint flags, void *pUser_read_buf, size_t user_read_buf_size, const mz_zip_archive_file_stat *st)
|
||||
{
|
||||
int status = TINFL_STATUS_DONE;
|
||||
mz_uint64 needed_size, cur_file_ofs, comp_remaining, out_buf_ofs = 0, read_buf_size, read_buf_ofs = 0, read_buf_avail;
|
||||
|
@ -4397,6 +4494,9 @@ mz_bool mz_zip_reader_extract_to_mem_no_alloc(mz_zip_archive *pZip, mz_uint file
|
|||
if ((!pZip) || (!pZip->m_pState) || ((buf_size) && (!pBuf)) || ((user_read_buf_size) && (!pUser_read_buf)) || (!pZip->m_pRead))
|
||||
return mz_zip_set_error(pZip, MZ_ZIP_INVALID_PARAMETER);
|
||||
|
||||
if (st) {
|
||||
file_stat = *st;
|
||||
} else
|
||||
if (!mz_zip_reader_file_stat(pZip, file_index, &file_stat))
|
||||
return MZ_FALSE;
|
||||
|
||||
|
@ -4527,17 +4627,22 @@ mz_bool mz_zip_reader_extract_to_mem_no_alloc(mz_zip_archive *pZip, mz_uint file
|
|||
return status == TINFL_STATUS_DONE;
|
||||
}
|
||||
|
||||
mz_bool mz_zip_reader_extract_to_mem_no_alloc(mz_zip_archive *pZip, mz_uint file_index, void *pBuf, size_t buf_size, mz_uint flags, void *pUser_read_buf, size_t user_read_buf_size)
|
||||
{
|
||||
return mz_zip_reader_extract_to_mem_no_alloc1(pZip, file_index, pBuf, buf_size, flags, pUser_read_buf, user_read_buf_size, NULL);
|
||||
}
|
||||
|
||||
mz_bool mz_zip_reader_extract_file_to_mem_no_alloc(mz_zip_archive *pZip, const char *pFilename, void *pBuf, size_t buf_size, mz_uint flags, void *pUser_read_buf, size_t user_read_buf_size)
|
||||
{
|
||||
mz_uint32 file_index;
|
||||
if (!mz_zip_reader_locate_file_v2(pZip, pFilename, NULL, flags, &file_index))
|
||||
return MZ_FALSE;
|
||||
return mz_zip_reader_extract_to_mem_no_alloc(pZip, file_index, pBuf, buf_size, flags, pUser_read_buf, user_read_buf_size);
|
||||
return mz_zip_reader_extract_to_mem_no_alloc1(pZip, file_index, pBuf, buf_size, flags, pUser_read_buf, user_read_buf_size, NULL);
|
||||
}
|
||||
|
||||
mz_bool mz_zip_reader_extract_to_mem(mz_zip_archive *pZip, mz_uint file_index, void *pBuf, size_t buf_size, mz_uint flags)
|
||||
{
|
||||
return mz_zip_reader_extract_to_mem_no_alloc(pZip, file_index, pBuf, buf_size, flags, NULL, 0);
|
||||
return mz_zip_reader_extract_to_mem_no_alloc1(pZip, file_index, pBuf, buf_size, flags, NULL, 0, NULL);
|
||||
}
|
||||
|
||||
mz_bool mz_zip_reader_extract_file_to_mem(mz_zip_archive *pZip, const char *pFilename, void *pBuf, size_t buf_size, mz_uint flags)
|
||||
|
@ -4547,23 +4652,17 @@ mz_bool mz_zip_reader_extract_file_to_mem(mz_zip_archive *pZip, const char *pFil
|
|||
|
||||
void *mz_zip_reader_extract_to_heap(mz_zip_archive *pZip, mz_uint file_index, size_t *pSize, mz_uint flags)
|
||||
{
|
||||
mz_uint64 comp_size, uncomp_size, alloc_size;
|
||||
const mz_uint8 *p = mz_zip_get_cdh(pZip, file_index);
|
||||
mz_zip_archive_file_stat file_stat;
|
||||
mz_uint64 alloc_size;
|
||||
void *pBuf;
|
||||
|
||||
if (pSize)
|
||||
*pSize = 0;
|
||||
|
||||
if (!p)
|
||||
{
|
||||
mz_zip_set_error(pZip, MZ_ZIP_INVALID_PARAMETER);
|
||||
if (!mz_zip_reader_file_stat(pZip, file_index, &file_stat))
|
||||
return NULL;
|
||||
}
|
||||
|
||||
comp_size = MZ_READ_LE32(p + MZ_ZIP_CDH_COMPRESSED_SIZE_OFS);
|
||||
uncomp_size = MZ_READ_LE32(p + MZ_ZIP_CDH_DECOMPRESSED_SIZE_OFS);
|
||||
|
||||
alloc_size = (flags & MZ_ZIP_FLAG_COMPRESSED_DATA) ? comp_size : uncomp_size;
|
||||
alloc_size = (flags & MZ_ZIP_FLAG_COMPRESSED_DATA) ? file_stat.m_comp_size : file_stat.m_uncomp_size;
|
||||
if (((sizeof(size_t) == sizeof(mz_uint32))) && (alloc_size > 0x7FFFFFFF))
|
||||
{
|
||||
mz_zip_set_error(pZip, MZ_ZIP_INTERNAL_ERROR);
|
||||
|
@ -4576,7 +4675,7 @@ void *mz_zip_reader_extract_to_heap(mz_zip_archive *pZip, mz_uint file_index, si
|
|||
return NULL;
|
||||
}
|
||||
|
||||
if (!mz_zip_reader_extract_to_mem(pZip, file_index, pBuf, (size_t)alloc_size, flags))
|
||||
if (!mz_zip_reader_extract_to_mem_no_alloc1(pZip, file_index, pBuf, (size_t)alloc_size, flags, NULL, 0, &file_stat))
|
||||
{
|
||||
pZip->m_pFree(pZip->m_pAlloc_opaque, pBuf);
|
||||
return NULL;
|
||||
|
@ -5037,7 +5136,7 @@ size_t mz_zip_reader_extract_iter_read(mz_zip_reader_extract_iter_state* pState,
|
|||
size_t to_copy = MZ_MIN( (buf_size - copied_to_caller), pState->out_blk_remain );
|
||||
|
||||
/* Copy data to caller's buffer */
|
||||
memcpy( (uint8_t*)pvBuf + copied_to_caller, pWrite_buf_cur, to_copy );
|
||||
memcpy( (mz_uint8*)pvBuf + copied_to_caller, pWrite_buf_cur, to_copy );
|
||||
|
||||
#ifndef MINIZ_DISABLE_ZIP_READER_CRC32_CHECKS
|
||||
/* Perform CRC */
|
||||
|
@ -5406,7 +5505,7 @@ handle_failure:
|
|||
mz_bool mz_zip_validate_archive(mz_zip_archive *pZip, mz_uint flags)
|
||||
{
|
||||
mz_zip_internal_state *pState;
|
||||
uint32_t i;
|
||||
mz_uint32 i;
|
||||
|
||||
if ((!pZip) || (!pZip->m_pState) || (!pZip->m_pAlloc) || (!pZip->m_pFree) || (!pZip->m_pRead))
|
||||
return mz_zip_set_error(pZip, MZ_ZIP_INVALID_PARAMETER);
|
||||
|
@ -5424,9 +5523,6 @@ mz_bool mz_zip_validate_archive(mz_zip_archive *pZip, mz_uint flags)
|
|||
}
|
||||
else
|
||||
{
|
||||
if (pZip->m_total_files >= MZ_UINT32_MAX)
|
||||
return mz_zip_set_error(pZip, MZ_ZIP_ARCHIVE_TOO_LARGE);
|
||||
|
||||
if (pState->m_central_dir.m_size >= MZ_UINT32_MAX)
|
||||
return mz_zip_set_error(pZip, MZ_ZIP_ARCHIVE_TOO_LARGE);
|
||||
}
|
||||
|
@ -5788,7 +5884,7 @@ mz_bool mz_zip_writer_init_file_v2(mz_zip_archive *pZip, const char *pFilename,
|
|||
mz_uint64 cur_ofs = 0;
|
||||
char buf[4096];
|
||||
|
||||
MZ_CLEAR_OBJ(buf);
|
||||
MZ_CLEAR_ARR(buf);
|
||||
|
||||
do
|
||||
{
|
||||
|
@ -6151,7 +6247,7 @@ mz_bool mz_zip_writer_add_mem_ex_v2(mz_zip_archive *pZip, const char *pArchive_n
|
|||
pState->m_zip64 = MZ_TRUE;
|
||||
/*return mz_zip_set_error(pZip, MZ_ZIP_TOO_MANY_FILES); */
|
||||
}
|
||||
if ((buf_size > 0xFFFFFFFF) || (uncomp_size > 0xFFFFFFFF))
|
||||
if (((mz_uint64)buf_size > 0xFFFFFFFF) || (uncomp_size > 0xFFFFFFFF))
|
||||
{
|
||||
pState->m_zip64 = MZ_TRUE;
|
||||
/*return mz_zip_set_error(pZip, MZ_ZIP_ARCHIVE_TOO_LARGE); */
|
||||
|
@ -6244,7 +6340,7 @@ mz_bool mz_zip_writer_add_mem_ex_v2(mz_zip_archive *pZip, const char *pArchive_n
|
|||
}
|
||||
cur_archive_file_ofs += num_alignment_padding_bytes;
|
||||
|
||||
MZ_CLEAR_OBJ(local_dir_header);
|
||||
MZ_CLEAR_ARR(local_dir_header);
|
||||
|
||||
if (!store_data_uncompressed || (level_and_flags & MZ_ZIP_FLAG_COMPRESSED_DATA))
|
||||
{
|
||||
|
@ -6394,7 +6490,7 @@ mz_bool mz_zip_writer_add_mem_ex_v2(mz_zip_archive *pZip, const char *pArchive_n
|
|||
mz_bool mz_zip_writer_add_read_buf_callback(mz_zip_archive *pZip, const char *pArchive_name, mz_file_read_func read_callback, void* callback_opaque, mz_uint64 max_size, const MZ_TIME_T *pFile_time, const void *pComment, mz_uint16 comment_size, mz_uint level_and_flags,
|
||||
const char *user_extra_data, mz_uint user_extra_data_len, const char *user_extra_data_central, mz_uint user_extra_data_central_len)
|
||||
{
|
||||
mz_uint16 gen_flags = (level_and_flags & MZ_ZIP_FLAG_WRITE_HEADER_SET_SIZE) ? 0 : MZ_ZIP_LDH_BIT_FLAG_HAS_LOCATOR;
|
||||
mz_uint16 gen_flags;
|
||||
mz_uint uncomp_crc32 = MZ_CRC32_INIT, level, num_alignment_padding_bytes;
|
||||
mz_uint16 method = 0, dos_time = 0, dos_date = 0, ext_attributes = 0;
|
||||
mz_uint64 local_dir_header_ofs, cur_archive_file_ofs = pZip->m_archive_size, uncomp_size = 0, comp_size = 0;
|
||||
|
@ -6406,13 +6502,15 @@ mz_bool mz_zip_writer_add_read_buf_callback(mz_zip_archive *pZip, const char *pA
|
|||
mz_zip_internal_state *pState;
|
||||
mz_uint64 file_ofs = 0, cur_archive_header_file_ofs;
|
||||
|
||||
if (!(level_and_flags & MZ_ZIP_FLAG_ASCII_FILENAME))
|
||||
gen_flags |= MZ_ZIP_GENERAL_PURPOSE_BIT_FLAG_UTF8;
|
||||
|
||||
if ((int)level_and_flags < 0)
|
||||
level_and_flags = MZ_DEFAULT_LEVEL;
|
||||
level = level_and_flags & 0xF;
|
||||
|
||||
gen_flags = (level_and_flags & MZ_ZIP_FLAG_WRITE_HEADER_SET_SIZE) ? 0 : MZ_ZIP_LDH_BIT_FLAG_HAS_LOCATOR;
|
||||
|
||||
if (!(level_and_flags & MZ_ZIP_FLAG_ASCII_FILENAME))
|
||||
gen_flags |= MZ_ZIP_GENERAL_PURPOSE_BIT_FLAG_UTF8;
|
||||
|
||||
/* Sanity checks */
|
||||
if ((!pZip) || (!pZip->m_pState) || (pZip->m_zip_mode != MZ_ZIP_MODE_WRITING) || (!pArchive_name) || ((comment_size) && (!pComment)) || (level > MZ_UBER_COMPRESSION))
|
||||
return mz_zip_set_error(pZip, MZ_ZIP_INVALID_PARAMETER);
|
||||
|
@ -6497,7 +6595,7 @@ mz_bool mz_zip_writer_add_read_buf_callback(mz_zip_archive *pZip, const char *pA
|
|||
method = MZ_DEFLATED;
|
||||
}
|
||||
|
||||
MZ_CLEAR_OBJ(local_dir_header);
|
||||
MZ_CLEAR_ARR(local_dir_header);
|
||||
if (pState->m_zip64)
|
||||
{
|
||||
if (max_size >= MZ_UINT32_MAX || local_dir_header_ofs >= MZ_UINT32_MAX)
|
||||
|
@ -6801,7 +6899,7 @@ mz_bool mz_zip_writer_add_file(mz_zip_archive *pZip, const char *pArchive_name,
|
|||
}
|
||||
#endif /* #ifndef MINIZ_NO_STDIO */
|
||||
|
||||
static mz_bool mz_zip_writer_update_zip64_extension_block(mz_zip_array *pNew_ext, mz_zip_archive *pZip, const mz_uint8 *pExt, uint32_t ext_len, mz_uint64 *pComp_size, mz_uint64 *pUncomp_size, mz_uint64 *pLocal_header_ofs, mz_uint32 *pDisk_start)
|
||||
static mz_bool mz_zip_writer_update_zip64_extension_block(mz_zip_array *pNew_ext, mz_zip_archive *pZip, const mz_uint8 *pExt, mz_uint32 ext_len, mz_uint64 *pComp_size, mz_uint64 *pUncomp_size, mz_uint64 *pLocal_header_ofs, mz_uint32 *pDisk_start)
|
||||
{
|
||||
/* + 64 should be enough for any new zip64 data */
|
||||
if (!mz_zip_array_reserve(pZip, pNew_ext, ext_len + 64, MZ_FALSE))
|
||||
|
@ -7117,10 +7215,10 @@ mz_bool mz_zip_writer_add_from_zip_reader(mz_zip_archive *pZip, mz_zip_archive *
|
|||
if (pZip->m_pState->m_zip64)
|
||||
{
|
||||
/* dest is zip64, so upgrade the data descriptor */
|
||||
const mz_uint32 *pSrc_descriptor = (const mz_uint32 *)((const mz_uint8 *)pBuf + (has_id ? sizeof(mz_uint32) : 0));
|
||||
const mz_uint32 src_crc32 = pSrc_descriptor[0];
|
||||
const mz_uint64 src_comp_size = pSrc_descriptor[1];
|
||||
const mz_uint64 src_uncomp_size = pSrc_descriptor[2];
|
||||
const mz_uint8 *pSrc_descriptor = (const mz_uint8 *)pBuf + (has_id ? sizeof(mz_uint32) : 0);
|
||||
const mz_uint32 src_crc32 = MZ_READ_LE32(pSrc_descriptor);
|
||||
const mz_uint64 src_comp_size = MZ_READ_LE32(pSrc_descriptor + sizeof(mz_uint32));
|
||||
const mz_uint64 src_uncomp_size = MZ_READ_LE32(pSrc_descriptor + 2*sizeof(mz_uint32));
|
||||
|
||||
mz_write_le32((mz_uint8 *)pBuf, MZ_ZIP_DATA_DESCRIPTOR_ID);
|
||||
mz_write_le32((mz_uint8 *)pBuf + sizeof(mz_uint32) * 1, src_crc32);
|
||||
|
@ -7256,7 +7354,7 @@ mz_bool mz_zip_writer_finalize_archive(mz_zip_archive *pZip)
|
|||
|
||||
if (pState->m_zip64)
|
||||
{
|
||||
if ((pZip->m_total_files > MZ_UINT32_MAX) || (pState->m_central_dir.m_size >= MZ_UINT32_MAX))
|
||||
if ((mz_uint64)pState->m_central_dir.m_size >= MZ_UINT32_MAX)
|
||||
return mz_zip_set_error(pZip, MZ_ZIP_TOO_MANY_FILES);
|
||||
}
|
||||
else
|
||||
|
@ -7284,7 +7382,7 @@ mz_bool mz_zip_writer_finalize_archive(mz_zip_archive *pZip)
|
|||
/* Write zip64 end of central directory header */
|
||||
mz_uint64 rel_ofs_to_zip64_ecdr = pZip->m_archive_size;
|
||||
|
||||
MZ_CLEAR_OBJ(hdr);
|
||||
MZ_CLEAR_ARR(hdr);
|
||||
MZ_WRITE_LE32(hdr + MZ_ZIP64_ECDH_SIG_OFS, MZ_ZIP64_END_OF_CENTRAL_DIR_HEADER_SIG);
|
||||
MZ_WRITE_LE64(hdr + MZ_ZIP64_ECDH_SIZE_OF_RECORD_OFS, MZ_ZIP64_END_OF_CENTRAL_DIR_HEADER_SIZE - sizeof(mz_uint32) - sizeof(mz_uint64));
|
||||
MZ_WRITE_LE16(hdr + MZ_ZIP64_ECDH_VERSION_MADE_BY_OFS, 0x031E); /* TODO: always Unix */
|
||||
|
@ -7299,7 +7397,7 @@ mz_bool mz_zip_writer_finalize_archive(mz_zip_archive *pZip)
|
|||
pZip->m_archive_size += MZ_ZIP64_END_OF_CENTRAL_DIR_HEADER_SIZE;
|
||||
|
||||
/* Write zip64 end of central directory locator */
|
||||
MZ_CLEAR_OBJ(hdr);
|
||||
MZ_CLEAR_ARR(hdr);
|
||||
MZ_WRITE_LE32(hdr + MZ_ZIP64_ECDL_SIG_OFS, MZ_ZIP64_END_OF_CENTRAL_DIR_LOCATOR_SIG);
|
||||
MZ_WRITE_LE64(hdr + MZ_ZIP64_ECDL_REL_OFS_TO_ZIP64_ECDR_OFS, rel_ofs_to_zip64_ecdr);
|
||||
MZ_WRITE_LE32(hdr + MZ_ZIP64_ECDL_TOTAL_NUMBER_OF_DISKS_OFS, 1);
|
||||
|
@ -7310,7 +7408,7 @@ mz_bool mz_zip_writer_finalize_archive(mz_zip_archive *pZip)
|
|||
}
|
||||
|
||||
/* Write end of central directory record */
|
||||
MZ_CLEAR_OBJ(hdr);
|
||||
MZ_CLEAR_ARR(hdr);
|
||||
MZ_WRITE_LE32(hdr + MZ_ZIP_ECDH_SIG_OFS, MZ_ZIP_END_OF_CENTRAL_DIR_HEADER_SIG);
|
||||
MZ_WRITE_LE16(hdr + MZ_ZIP_ECDH_CDIR_NUM_ENTRIES_ON_DISK_OFS, MZ_MIN(MZ_UINT16_MAX, pZip->m_total_files));
|
||||
MZ_WRITE_LE16(hdr + MZ_ZIP_ECDH_CDIR_TOTAL_ENTRIES_OFS, MZ_MIN(MZ_UINT16_MAX, pZip->m_total_files));
|
||||
|
@ -7626,7 +7724,9 @@ const char *mz_zip_get_error_string(mz_zip_error mz_err)
|
|||
case MZ_ZIP_VALIDATION_FAILED:
|
||||
return "validation failed";
|
||||
case MZ_ZIP_WRITE_CALLBACK_FAILED:
|
||||
return "write calledback failed";
|
||||
return "write callback failed";
|
||||
case MZ_ZIP_TOTAL_ERRORS:
|
||||
return "total errors";
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
|
124
external/miniz/miniz.h
vendored
124
external/miniz/miniz.h
vendored
|
@ -1,5 +1,7 @@
|
|||
#ifndef MINIZ_EXPORT
|
||||
#define MINIZ_EXPORT
|
||||
/* miniz.c 2.2.0 - public domain deflate/inflate, zlib-subset, ZIP reading/writing/appending, PNG writing
|
||||
#endif
|
||||
/* miniz.c 3.0.0 - public domain deflate/inflate, zlib-subset, ZIP reading/writing/appending, PNG writing
|
||||
See "unlicense" statement at the end of this file.
|
||||
Rich Geldreich <richgel99@gmail.com>, last updated Oct. 13, 2013
|
||||
Implements RFC 1950: http://www.ietf.org/rfc/rfc1950.txt and RFC 1951: http://www.ietf.org/rfc/rfc1951.txt
|
||||
|
@ -116,7 +118,7 @@
|
|||
|
||||
|
||||
/* Defines to completely disable specific portions of miniz.c:
|
||||
If all macros here are defined the only functionality remaining will be CRC-32, adler-32, tinfl, and tdefl. */
|
||||
If all macros here are defined the only functionality remaining will be CRC-32 and adler-32. */
|
||||
|
||||
/* Define MINIZ_NO_STDIO to disable all usage and any functions which rely on stdio for file I/O. */
|
||||
/*#define MINIZ_NO_STDIO */
|
||||
|
@ -126,6 +128,12 @@
|
|||
/* The current downside is the times written to your archives will be from 1979. */
|
||||
/*#define MINIZ_NO_TIME */
|
||||
|
||||
/* Define MINIZ_NO_DEFLATE_APIS to disable all compression API's. */
|
||||
/*#define MINIZ_NO_DEFLATE_APIS */
|
||||
|
||||
/* Define MINIZ_NO_INFLATE_APIS to disable all decompression API's. */
|
||||
/*#define MINIZ_NO_INFLATE_APIS */
|
||||
|
||||
/* Define MINIZ_NO_ARCHIVE_APIS to disable all ZIP archive API's. */
|
||||
/*#define MINIZ_NO_ARCHIVE_APIS */
|
||||
|
||||
|
@ -144,6 +152,14 @@
|
|||
functions (such as tdefl_compress_mem_to_heap() and tinfl_decompress_mem_to_heap()) won't work. */
|
||||
/*#define MINIZ_NO_MALLOC */
|
||||
|
||||
#ifdef MINIZ_NO_INFLATE_APIS
|
||||
#define MINIZ_NO_ARCHIVE_APIS
|
||||
#endif
|
||||
|
||||
#ifdef MINIZ_NO_DEFLATE_APIS
|
||||
#define MINIZ_NO_ARCHIVE_WRITING_APIS
|
||||
#endif
|
||||
|
||||
#if defined(__TINYC__) && (defined(__linux) || defined(__linux__))
|
||||
/* TODO: Work around "error: include file 'sys\utime.h' when compiling with tcc on Linux */
|
||||
#define MINIZ_NO_TIME
|
||||
|
@ -162,18 +178,40 @@
|
|||
#define MINIZ_X86_OR_X64_CPU 0
|
||||
#endif
|
||||
|
||||
#if (__BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__) || MINIZ_X86_OR_X64_CPU
|
||||
/* Set MINIZ_LITTLE_ENDIAN only if not set */
|
||||
#if !defined(MINIZ_LITTLE_ENDIAN)
|
||||
#if defined(__BYTE_ORDER__) && defined(__ORDER_LITTLE_ENDIAN__)
|
||||
|
||||
#if (__BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__)
|
||||
/* Set MINIZ_LITTLE_ENDIAN to 1 if the processor is little endian. */
|
||||
#define MINIZ_LITTLE_ENDIAN 1
|
||||
#else
|
||||
#define MINIZ_LITTLE_ENDIAN 0
|
||||
#endif
|
||||
|
||||
#else
|
||||
|
||||
#if MINIZ_X86_OR_X64_CPU
|
||||
#define MINIZ_LITTLE_ENDIAN 1
|
||||
#else
|
||||
#define MINIZ_LITTLE_ENDIAN 0
|
||||
#endif
|
||||
|
||||
#endif
|
||||
#endif
|
||||
|
||||
/* Using unaligned loads and stores causes errors when using UBSan */
|
||||
#if defined(__has_feature)
|
||||
#if __has_feature(undefined_behavior_sanitizer)
|
||||
#define MINIZ_USE_UNALIGNED_LOADS_AND_STORES 0
|
||||
#endif
|
||||
#endif
|
||||
|
||||
/* Set MINIZ_USE_UNALIGNED_LOADS_AND_STORES only if not set */
|
||||
#if !defined(MINIZ_USE_UNALIGNED_LOADS_AND_STORES)
|
||||
#if MINIZ_X86_OR_X64_CPU
|
||||
/* Set MINIZ_USE_UNALIGNED_LOADS_AND_STORES to 1 on CPU's that permit efficient integer loads and stores from unaligned addresses. */
|
||||
#define MINIZ_USE_UNALIGNED_LOADS_AND_STORES 1
|
||||
#define MINIZ_USE_UNALIGNED_LOADS_AND_STORES 0
|
||||
#define MINIZ_UNALIGNED_USE_MEMCPY
|
||||
#else
|
||||
#define MINIZ_USE_UNALIGNED_LOADS_AND_STORES 0
|
||||
|
@ -237,9 +275,9 @@ enum
|
|||
MZ_DEFAULT_COMPRESSION = -1
|
||||
};
|
||||
|
||||
#define MZ_VERSION "10.2.0"
|
||||
#define MZ_VERNUM 0xA100
|
||||
#define MZ_VER_MAJOR 10
|
||||
#define MZ_VERSION "11.0.2"
|
||||
#define MZ_VERNUM 0xB002
|
||||
#define MZ_VER_MAJOR 11
|
||||
#define MZ_VER_MINOR 2
|
||||
#define MZ_VER_REVISION 0
|
||||
#define MZ_VER_SUBREVISION 0
|
||||
|
@ -305,6 +343,8 @@ typedef mz_stream *mz_streamp;
|
|||
/* Returns the version string of miniz.c. */
|
||||
MINIZ_EXPORT const char *mz_version(void);
|
||||
|
||||
#ifndef MINIZ_NO_DEFLATE_APIS
|
||||
|
||||
/* mz_deflateInit() initializes a compressor with default options: */
|
||||
/* Parameters: */
|
||||
/* pStream must point to an initialized mz_stream struct. */
|
||||
|
@ -357,6 +397,10 @@ MINIZ_EXPORT int mz_compress2(unsigned char *pDest, mz_ulong *pDest_len, const u
|
|||
/* mz_compressBound() returns a (very) conservative upper bound on the amount of data that could be generated by calling mz_compress(). */
|
||||
MINIZ_EXPORT mz_ulong mz_compressBound(mz_ulong source_len);
|
||||
|
||||
#endif /*#ifndef MINIZ_NO_DEFLATE_APIS*/
|
||||
|
||||
#ifndef MINIZ_NO_INFLATE_APIS
|
||||
|
||||
/* Initializes a decompressor. */
|
||||
MINIZ_EXPORT int mz_inflateInit(mz_streamp pStream);
|
||||
|
||||
|
@ -390,6 +434,7 @@ MINIZ_EXPORT int mz_inflateEnd(mz_streamp pStream);
|
|||
/* Returns MZ_OK on success, or one of the error codes from mz_inflate() on failure. */
|
||||
MINIZ_EXPORT int mz_uncompress(unsigned char *pDest, mz_ulong *pDest_len, const unsigned char *pSource, mz_ulong source_len);
|
||||
MINIZ_EXPORT int mz_uncompress2(unsigned char *pDest, mz_ulong *pDest_len, const unsigned char *pSource, mz_ulong *pSource_len);
|
||||
#endif /*#ifndef MINIZ_NO_INFLATE_APIS*/
|
||||
|
||||
/* Returns a string description of the specified error code, or NULL if the error code is invalid. */
|
||||
MINIZ_EXPORT const char *mz_error(int err);
|
||||
|
@ -440,6 +485,8 @@ typedef void *const voidpc;
|
|||
#define free_func mz_free_func
|
||||
#define internal_state mz_internal_state
|
||||
#define z_stream mz_stream
|
||||
|
||||
#ifndef MINIZ_NO_DEFLATE_APIS
|
||||
#define deflateInit mz_deflateInit
|
||||
#define deflateInit2 mz_deflateInit2
|
||||
#define deflateReset mz_deflateReset
|
||||
|
@ -449,6 +496,9 @@ typedef void *const voidpc;
|
|||
#define compress mz_compress
|
||||
#define compress2 mz_compress2
|
||||
#define compressBound mz_compressBound
|
||||
#endif /*#ifndef MINIZ_NO_DEFLATE_APIS*/
|
||||
|
||||
#ifndef MINIZ_NO_INFLATE_APIS
|
||||
#define inflateInit mz_inflateInit
|
||||
#define inflateInit2 mz_inflateInit2
|
||||
#define inflateReset mz_inflateReset
|
||||
|
@ -456,6 +506,8 @@ typedef void *const voidpc;
|
|||
#define inflateEnd mz_inflateEnd
|
||||
#define uncompress mz_uncompress
|
||||
#define uncompress2 mz_uncompress2
|
||||
#endif /*#ifndef MINIZ_NO_INFLATE_APIS*/
|
||||
|
||||
#define crc32 mz_crc32
|
||||
#define adler32 mz_adler32
|
||||
#define MAX_WBITS 15
|
||||
|
@ -519,7 +571,8 @@ typedef int mz_bool;
|
|||
#ifdef MINIZ_NO_TIME
|
||||
typedef struct mz_dummy_time_t_tag
|
||||
{
|
||||
int m_dummy;
|
||||
mz_uint32 m_dummy1;
|
||||
mz_uint32 m_dummy2;
|
||||
} mz_dummy_time_t;
|
||||
#define MZ_TIME_T mz_dummy_time_t
|
||||
#else
|
||||
|
@ -541,6 +594,8 @@ typedef struct mz_dummy_time_t_tag
|
|||
#define MZ_MAX(a, b) (((a) > (b)) ? (a) : (b))
|
||||
#define MZ_MIN(a, b) (((a) < (b)) ? (a) : (b))
|
||||
#define MZ_CLEAR_OBJ(obj) memset(&(obj), 0, sizeof(obj))
|
||||
#define MZ_CLEAR_ARR(obj) memset((obj), 0, sizeof(obj))
|
||||
#define MZ_CLEAR_PTR(obj) memset((obj), 0, sizeof(*obj))
|
||||
|
||||
#if MINIZ_USE_UNALIGNED_LOADS_AND_STORES && MINIZ_LITTLE_ENDIAN
|
||||
#define MZ_READ_LE16(p) *((const mz_uint16 *)(p))
|
||||
|
@ -577,6 +632,8 @@ extern MINIZ_EXPORT void *miniz_def_realloc_func(void *opaque, void *address, si
|
|||
#pragma once
|
||||
|
||||
|
||||
#ifndef MINIZ_NO_DEFLATE_APIS
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
@ -764,10 +821,14 @@ MINIZ_EXPORT void tdefl_compressor_free(tdefl_compressor *pComp);
|
|||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /*#ifndef MINIZ_NO_DEFLATE_APIS*/
|
||||
#pragma once
|
||||
|
||||
/* ------------------- Low-level Decompression API Definitions */
|
||||
|
||||
#ifndef MINIZ_NO_INFLATE_APIS
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
@ -876,12 +937,6 @@ enum
|
|||
TINFL_FAST_LOOKUP_SIZE = 1 << TINFL_FAST_LOOKUP_BITS
|
||||
};
|
||||
|
||||
typedef struct
|
||||
{
|
||||
mz_uint8 m_code_size[TINFL_MAX_HUFF_SYMBOLS_0];
|
||||
mz_int16 m_look_up[TINFL_FAST_LOOKUP_SIZE], m_tree[TINFL_MAX_HUFF_SYMBOLS_0 * 2];
|
||||
} tinfl_huff_table;
|
||||
|
||||
#if MINIZ_HAS_64BIT_REGISTERS
|
||||
#define TINFL_USE_64BIT_BITBUF 1
|
||||
#else
|
||||
|
@ -901,13 +956,21 @@ struct tinfl_decompressor_tag
|
|||
mz_uint32 m_state, m_num_bits, m_zhdr0, m_zhdr1, m_z_adler32, m_final, m_type, m_check_adler32, m_dist, m_counter, m_num_extra, m_table_sizes[TINFL_MAX_HUFF_TABLES];
|
||||
tinfl_bit_buf_t m_bit_buf;
|
||||
size_t m_dist_from_out_buf_start;
|
||||
tinfl_huff_table m_tables[TINFL_MAX_HUFF_TABLES];
|
||||
mz_int16 m_look_up[TINFL_MAX_HUFF_TABLES][TINFL_FAST_LOOKUP_SIZE];
|
||||
mz_int16 m_tree_0[TINFL_MAX_HUFF_SYMBOLS_0 * 2];
|
||||
mz_int16 m_tree_1[TINFL_MAX_HUFF_SYMBOLS_1 * 2];
|
||||
mz_int16 m_tree_2[TINFL_MAX_HUFF_SYMBOLS_2 * 2];
|
||||
mz_uint8 m_code_size_0[TINFL_MAX_HUFF_SYMBOLS_0];
|
||||
mz_uint8 m_code_size_1[TINFL_MAX_HUFF_SYMBOLS_1];
|
||||
mz_uint8 m_code_size_2[TINFL_MAX_HUFF_SYMBOLS_2];
|
||||
mz_uint8 m_raw_header[4], m_len_codes[TINFL_MAX_HUFF_SYMBOLS_0 + TINFL_MAX_HUFF_SYMBOLS_1 + 137];
|
||||
};
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /*#ifndef MINIZ_NO_INFLATE_APIS*/
|
||||
|
||||
#pragma once
|
||||
|
||||
|
@ -942,10 +1005,6 @@ typedef struct
|
|||
mz_uint16 m_bit_flag;
|
||||
mz_uint16 m_method;
|
||||
|
||||
#ifndef MINIZ_NO_TIME
|
||||
MZ_TIME_T m_time;
|
||||
#endif
|
||||
|
||||
/* CRC-32 of uncompressed data. */
|
||||
mz_uint32 m_crc32;
|
||||
|
||||
|
@ -982,6 +1041,11 @@ typedef struct
|
|||
/* Guaranteed to be zero terminated, may be truncated to fit. */
|
||||
char m_comment[MZ_ZIP_MAX_ARCHIVE_FILE_COMMENT_SIZE];
|
||||
|
||||
#ifdef MINIZ_NO_TIME
|
||||
MZ_TIME_T m_padding;
|
||||
#else
|
||||
MZ_TIME_T m_time;
|
||||
#endif
|
||||
} mz_zip_archive_file_stat;
|
||||
|
||||
typedef size_t (*mz_file_read_func)(void *pOpaque, mz_uint64 file_ofs, void *pBuf, size_t n);
|
||||
|
@ -1093,9 +1157,7 @@ typedef struct
|
|||
mz_uint flags;
|
||||
|
||||
int status;
|
||||
#ifndef MINIZ_DISABLE_ZIP_READER_CRC32_CHECKS
|
||||
mz_uint file_crc32;
|
||||
#endif
|
||||
|
||||
mz_uint64 read_buf_size, read_buf_ofs, read_buf_avail, comp_remaining, out_buf_ofs, cur_file_ofs;
|
||||
mz_zip_archive_file_stat file_stat;
|
||||
void *pRead_buf;
|
||||
|
@ -1105,6 +1167,12 @@ typedef struct
|
|||
|
||||
tinfl_decompressor inflator;
|
||||
|
||||
#ifdef MINIZ_DISABLE_ZIP_READER_CRC32_CHECKS
|
||||
mz_uint padding;
|
||||
#else
|
||||
mz_uint file_crc32;
|
||||
#endif
|
||||
|
||||
} mz_zip_reader_extract_iter_state;
|
||||
|
||||
/* -------- ZIP reading */
|
||||
|
@ -1228,9 +1296,9 @@ MINIZ_EXPORT mz_bool mz_zip_reader_extract_file_to_cfile(mz_zip_archive *pZip, c
|
|||
/* TODO */
|
||||
typedef void *mz_zip_streaming_extract_state_ptr;
|
||||
mz_zip_streaming_extract_state_ptr mz_zip_streaming_extract_begin(mz_zip_archive *pZip, mz_uint file_index, mz_uint flags);
|
||||
uint64_t mz_zip_streaming_extract_get_size(mz_zip_archive *pZip, mz_zip_streaming_extract_state_ptr pState);
|
||||
uint64_t mz_zip_streaming_extract_get_cur_ofs(mz_zip_archive *pZip, mz_zip_streaming_extract_state_ptr pState);
|
||||
mz_bool mz_zip_streaming_extract_seek(mz_zip_archive *pZip, mz_zip_streaming_extract_state_ptr pState, uint64_t new_ofs);
|
||||
mz_uint64 mz_zip_streaming_extract_get_size(mz_zip_archive *pZip, mz_zip_streaming_extract_state_ptr pState);
|
||||
mz_uint64 mz_zip_streaming_extract_get_cur_ofs(mz_zip_archive *pZip, mz_zip_streaming_extract_state_ptr pState);
|
||||
mz_bool mz_zip_streaming_extract_seek(mz_zip_archive *pZip, mz_zip_streaming_extract_state_ptr pState, mz_uint64 new_ofs);
|
||||
size_t mz_zip_streaming_extract_read(mz_zip_archive *pZip, mz_zip_streaming_extract_state_ptr pState, void *pBuf, size_t buf_size);
|
||||
mz_bool mz_zip_streaming_extract_end(mz_zip_archive *pZip, mz_zip_streaming_extract_state_ptr pState);
|
||||
#endif
|
||||
|
@ -1244,7 +1312,9 @@ MINIZ_EXPORT mz_bool mz_zip_validate_archive(mz_zip_archive *pZip, mz_uint flags
|
|||
|
||||
/* Misc utils/helpers, valid for ZIP reading or writing */
|
||||
MINIZ_EXPORT mz_bool mz_zip_validate_mem_archive(const void *pMem, size_t size, mz_uint flags, mz_zip_error *pErr);
|
||||
#ifndef MINIZ_NO_STDIO
|
||||
MINIZ_EXPORT mz_bool mz_zip_validate_file_archive(const char *pFilename, mz_uint flags, mz_zip_error *pErr);
|
||||
#endif
|
||||
|
||||
/* Universal end function - calls either mz_zip_reader_end() or mz_zip_writer_end(). */
|
||||
MINIZ_EXPORT mz_bool mz_zip_end(mz_zip_archive *pZip);
|
||||
|
@ -1318,7 +1388,7 @@ MINIZ_EXPORT mz_bool mz_zip_writer_add_from_zip_reader(mz_zip_archive *pZip, mz_
|
|||
/* An archive must be manually finalized by calling this function for it to be valid. */
|
||||
MINIZ_EXPORT mz_bool mz_zip_writer_finalize_archive(mz_zip_archive *pZip);
|
||||
|
||||
/* Finalizes a heap archive, returning a poiner to the heap block and its size. */
|
||||
/* Finalizes a heap archive, returning a pointer to the heap block and its size. */
|
||||
/* The heap block will be allocated using the mz_zip_archive's alloc/realloc callbacks. */
|
||||
MINIZ_EXPORT mz_bool mz_zip_writer_finalize_heap_archive(mz_zip_archive *pZip, void **ppBuf, size_t *pSize);
|
||||
|
||||
|
@ -1335,11 +1405,13 @@ MINIZ_EXPORT mz_bool mz_zip_writer_end(mz_zip_archive *pZip);
|
|||
MINIZ_EXPORT mz_bool mz_zip_add_mem_to_archive_file_in_place(const char *pZip_filename, const char *pArchive_name, const void *pBuf, size_t buf_size, const void *pComment, mz_uint16 comment_size, mz_uint level_and_flags);
|
||||
MINIZ_EXPORT mz_bool mz_zip_add_mem_to_archive_file_in_place_v2(const char *pZip_filename, const char *pArchive_name, const void *pBuf, size_t buf_size, const void *pComment, mz_uint16 comment_size, mz_uint level_and_flags, mz_zip_error *pErr);
|
||||
|
||||
#ifndef MINIZ_NO_STDIO
|
||||
/* Reads a single file from an archive into a heap block. */
|
||||
/* If pComment is not NULL, only the file with the specified comment will be extracted. */
|
||||
/* Returns NULL on failure. */
|
||||
MINIZ_EXPORT void *mz_zip_extract_archive_file_to_heap(const char *pZip_filename, const char *pArchive_name, size_t *pSize, mz_uint flags);
|
||||
MINIZ_EXPORT void *mz_zip_extract_archive_file_to_heap_v2(const char *pZip_filename, const char *pArchive_name, const char *pComment, size_t *pSize, mz_uint flags, mz_zip_error *pErr);
|
||||
#endif
|
||||
|
||||
#endif /* #ifndef MINIZ_NO_ARCHIVE_WRITING_APIS */
|
||||
|
||||
|
|
2
external/nativefiledialog-extended
vendored
2
external/nativefiledialog-extended
vendored
|
@ -1 +1 @@
|
|||
Subproject commit d4df2b6ad5420f5300c00f418bf28d86291fa675
|
||||
Subproject commit 800f58283fbc1f3950abd881357fb44c22f3f44e
|
2
external/pugixml
vendored
2
external/pugixml
vendored
|
@ -1 +1 @@
|
|||
Subproject commit 08b3433180727ea2f78fe02e860a08471db1e03c
|
||||
Subproject commit a0e064336317c9347a91224112af9933598714e9
|
2
external/spdlog
vendored
2
external/spdlog
vendored
|
@ -1 +1 @@
|
|||
Subproject commit da14258533cb951ce85087ceb45556e0b8253660
|
||||
Subproject commit 7e635fca68d014934b4af8a1cf874f63989352b7
|
2
external/stb
vendored
2
external/stb
vendored
|
@ -1 +1 @@
|
|||
Subproject commit af1a5bc352164740c1cc1354942b1c6b72eacb8a
|
||||
Subproject commit 5736b15f7ea0ffb08dd38af21067c314d6a3aae9
|
2
external/tracy
vendored
2
external/tracy
vendored
|
@ -1 +1 @@
|
|||
Subproject commit 5a1f5371b792c12aea324213e1dc738b2923ae21
|
||||
Subproject commit 897aec5b062664d2485f4f9a213715d2e527e0ca
|
2
external/vita-toolchain
vendored
2
external/vita-toolchain
vendored
|
@ -1 +1 @@
|
|||
Subproject commit 1ce9a316eedb0360d55b3d9a6483e5329c781583
|
||||
Subproject commit bbb2c95d41cd4037df86529217387979745426b6
|
2
external/xxHash
vendored
2
external/xxHash
vendored
|
@ -1 +1 @@
|
|||
Subproject commit 6dba9abfaae75a4b70a5c53d7e5eb3dd554973d1
|
||||
Subproject commit bbb27a5efb85b92a0486cf361a8635715a53f6ba
|
2
external/yaml-cpp
vendored
2
external/yaml-cpp
vendored
|
@ -1 +1 @@
|
|||
Subproject commit 0579ae3d976091d7d664aa9d2527e0d0cff25763
|
||||
Subproject commit f7320141120f720aecc4c32be25586e7da9eb978
|
|
@ -257,8 +257,8 @@ elseif(WIN32)
|
|||
add_custom_command(
|
||||
TARGET vita3k
|
||||
POST_BUILD
|
||||
COMMAND ${CMAKE_COMMAND} -E copy_if_different "${CMAKE_BINARY_DIR}/external/openssl/openssl-3.0/x64/bin/libssl-3-x64.dll" "$<TARGET_FILE_DIR:vita3k>"
|
||||
COMMAND ${CMAKE_COMMAND} -E copy_if_different "${CMAKE_BINARY_DIR}/external/openssl/openssl-3.0/x64/bin/libcrypto-3-x64.dll" "$<TARGET_FILE_DIR:vita3k>")
|
||||
COMMAND ${CMAKE_COMMAND} -E copy_if_different "${CMAKE_BINARY_DIR}/external/openssl/openssl-3/x64/bin/libssl-3-x64.dll" "$<TARGET_FILE_DIR:vita3k>"
|
||||
COMMAND ${CMAKE_COMMAND} -E copy_if_different "${CMAKE_BINARY_DIR}/external/openssl/openssl-3/x64/bin/libcrypto-3-x64.dll" "$<TARGET_FILE_DIR:vita3k>")
|
||||
endif()
|
||||
endif()
|
||||
|
||||
|
|
|
@ -17,7 +17,7 @@
|
|||
|
||||
#include <audio/state.h>
|
||||
|
||||
#include "public/tracy/Tracy.hpp"
|
||||
#include <tracy/Tracy.hpp>
|
||||
|
||||
#include <audio/impl/cubeb_audio.h>
|
||||
#include <audio/impl/sdl_audio.h>
|
||||
|
|
|
@ -17,7 +17,7 @@
|
|||
|
||||
#include "audio/impl/cubeb_audio.h"
|
||||
|
||||
#include "public/tracy/Tracy.hpp"
|
||||
#include <tracy/Tracy.hpp>
|
||||
|
||||
#include "kernel/thread/thread_state.h"
|
||||
|
||||
|
|
|
@ -27,7 +27,6 @@
|
|||
|
||||
#include <kernel/state.h>
|
||||
#include <mem/state.h>
|
||||
#include <spdlog/fmt/bundled/printf.h>
|
||||
#include <sstream>
|
||||
|
||||
// Sockets
|
||||
|
|
|
@ -17,5 +17,5 @@
|
|||
|
||||
#pragma once
|
||||
|
||||
#include <glad/glad.h>
|
||||
#include <glad/gl.h>
|
||||
#undef APIENTRY
|
|
@ -25,12 +25,7 @@
|
|||
#include <np/state.h>
|
||||
|
||||
#include <imgui.h>
|
||||
// Disable warninig here is needed to compile on windows because we
|
||||
// are turning some warnings into errors to allow makepkg default flags
|
||||
#pragma warning(push)
|
||||
#pragma warning(disable : 4774)
|
||||
#include <imgui_memory_editor.h>
|
||||
#pragma warning(pop)
|
||||
|
||||
#include <gui/imgui_impl_sdl_state.h>
|
||||
|
||||
|
|
|
@ -19,12 +19,7 @@
|
|||
|
||||
#include <cpu/functions.h>
|
||||
|
||||
// Disable warninig here is needed to compile on windows because we
|
||||
// are turning some warnings into errors to allow makepkg default flags
|
||||
#pragma warning(push)
|
||||
#pragma warning(disable : 4774)
|
||||
#include <imgui_memory_editor.h>
|
||||
#pragma warning(pop)
|
||||
|
||||
#include <spdlog/fmt/fmt.h>
|
||||
|
||||
|
|
|
@ -564,13 +564,13 @@ void draw_app_context_menu(GuiState &gui, EmuEnvState &emuenv, const std::string
|
|||
ImGui::SetTooltip("%s", lang["app_delete_note"].c_str());
|
||||
ImGui::SetWindowFontScale(1.4f * RES_SCALE.x);
|
||||
ImGui::SetCursorPos(ImVec2((WINDOW_SIZE.x / 2) - (BUTTON_SIZE.x + (20.f * SCALE.x)), WINDOW_SIZE.y - BUTTON_SIZE.y - (24.0f * SCALE.y)));
|
||||
if (ImGui::Button(common["cancel"].c_str(), BUTTON_SIZE) || ImGui::IsKeyPressed(emuenv.cfg.keyboard_button_circle)) {
|
||||
if (ImGui::Button(common["cancel"].c_str(), BUTTON_SIZE) || ImGui::IsKeyPressed(static_cast<ImGuiKey>(emuenv.cfg.keyboard_button_circle))) {
|
||||
context_dialog.clear();
|
||||
}
|
||||
ImGui::SameLine();
|
||||
ImGui::SetCursorPosX((WINDOW_SIZE.x / 2.f) + (20.f * SCALE.x));
|
||||
}
|
||||
if (ImGui::Button(common["ok"].c_str(), BUTTON_SIZE) || ImGui::IsKeyPressed(emuenv.cfg.keyboard_button_cross)) {
|
||||
if (ImGui::Button(common["ok"].c_str(), BUTTON_SIZE) || ImGui::IsKeyPressed(static_cast<ImGuiKey>(emuenv.cfg.keyboard_button_cross))) {
|
||||
if (context_dialog == lang["app_delete"])
|
||||
delete_app(gui, emuenv, app_path);
|
||||
if (context_dialog == lang["addcont_delete"])
|
||||
|
@ -594,7 +594,7 @@ void draw_app_context_menu(GuiState &gui, EmuEnvState &emuenv, const std::string
|
|||
ImGui::Begin("##information", &gui.vita_area.app_information, ImGuiWindowFlags_NoDecoration | ImGuiWindowFlags_NoSavedSettings);
|
||||
ImGui::SetWindowFontScale(1.5f * RES_SCALE.x);
|
||||
ImGui::SetCursorPos(ImVec2(10.0f * SCALE.x, 10.0f * SCALE.y));
|
||||
if (ImGui::Button("X", ImVec2(40.f * SCALE.x, 40.f * SCALE.y)) || ImGui::IsKeyPressed(emuenv.cfg.keyboard_button_circle)) {
|
||||
if (ImGui::Button("X", ImVec2(40.f * SCALE.x, 40.f * SCALE.y)) || ImGui::IsKeyPressed(static_cast<ImGuiKey>(emuenv.cfg.keyboard_button_circle))) {
|
||||
gui.vita_area.app_information = false;
|
||||
gui.vita_area.information_bar = true;
|
||||
}
|
||||
|
|
|
@ -24,6 +24,8 @@
|
|||
|
||||
#include <util/string_utils.h>
|
||||
|
||||
#include <fmt/std.h>
|
||||
|
||||
#include <thread>
|
||||
|
||||
namespace gui {
|
||||
|
|
|
@ -264,7 +264,7 @@ void draw_content_manager(GuiState &gui, EmuEnvState &emuenv) {
|
|||
if (has_background)
|
||||
draw_list->AddImage(gui.apps_background["NPXS10026"], VIEWPORT_POS, VIEWPORT_POS_MAX);
|
||||
else
|
||||
draw_list->AddRectFilled(VIEWPORT_POS, VIEWPORT_POS_MAX, IM_COL32(53.f, 54.f, 70.f, 255.f), 0.f, ImDrawCornerFlags_All);
|
||||
draw_list->AddRectFilled(VIEWPORT_POS, VIEWPORT_POS_MAX, IM_COL32(53.f, 54.f, 70.f, 255.f), 0.f, ImDrawFlags_RoundCornersAll);
|
||||
|
||||
ImGui::SetWindowFontScale(1.5f * RES_SCALE.x);
|
||||
|
||||
|
@ -390,11 +390,11 @@ void draw_content_manager(GuiState &gui, EmuEnvState &emuenv) {
|
|||
ImGui::SetCursorPos(ImVec2(106.f * SCALE.x, ImGui::GetCursorPosY() + (76.f * SCALE.y)));
|
||||
ImGui::TextColored(GUI_COLOR_TEXT, "%s %s", gui.lang.game_data["data_delete"].c_str(), size_selected_contents.c_str());
|
||||
ImGui::SetCursorPos(ImVec2((POPUP_SIZE.x / 2) - (BUTTON_SIZE.x + (10.f * SCALE.x)), POPUP_SIZE.y - BUTTON_SIZE.y - (22.0f * SCALE.y)));
|
||||
if (ImGui::Button(common["cancel"].c_str(), BUTTON_SIZE) || ImGui::IsKeyPressed(emuenv.cfg.keyboard_button_circle)) {
|
||||
if (ImGui::Button(common["cancel"].c_str(), BUTTON_SIZE) || ImGui::IsKeyPressed(static_cast<ImGuiKey>(emuenv.cfg.keyboard_button_circle))) {
|
||||
popup = false;
|
||||
}
|
||||
ImGui::SameLine(0, 20.f * SCALE.x);
|
||||
if (ImGui::Button(common["ok"].c_str(), BUTTON_SIZE) || ImGui::IsKeyPressed(emuenv.cfg.keyboard_button_cross)) {
|
||||
if (ImGui::Button(common["ok"].c_str(), BUTTON_SIZE) || ImGui::IsKeyPressed(static_cast<ImGuiKey>(emuenv.cfg.keyboard_button_cross))) {
|
||||
content_delete = true;
|
||||
popup = false;
|
||||
}
|
||||
|
@ -563,7 +563,7 @@ void draw_content_manager(GuiState &gui, EmuEnvState &emuenv) {
|
|||
const auto is_empty = ((menu == "app") && gui.app_selector.user_apps.empty()) || ((menu == "save") && save_data_list.empty());
|
||||
if (menu.empty() || (menu == "info") || is_empty) {
|
||||
// Back
|
||||
if (ImGui::Button("Back", ImVec2(64.f * SCALE.x, 40.f * SCALE.y)) || ImGui::IsKeyPressed(emuenv.cfg.keyboard_button_circle)) {
|
||||
if (ImGui::Button("Back", ImVec2(64.f * SCALE.x, 40.f * SCALE.y)) || ImGui::IsKeyPressed(static_cast<ImGuiKey>(emuenv.cfg.keyboard_button_circle))) {
|
||||
if (!menu.empty()) {
|
||||
if (menu == "info") {
|
||||
menu = "app";
|
||||
|
@ -580,7 +580,7 @@ void draw_content_manager(GuiState &gui, EmuEnvState &emuenv) {
|
|||
draw_list->AddRectFilled(ImVec2(VIEWPORT_POS.x, VIEWPORT_POS.y + (482.f * SCALE.y)), VIEWPORT_POS_MAX, IM_COL32(39.f, 42.f, 49.f, 255.f), 0.f, ImDrawFlags_RoundCornersAll);
|
||||
|
||||
// Cancel
|
||||
if (ImGui::Button(common["cancel"].c_str(), ImVec2(202.f * SCALE.x, 44.f * SCALE.y)) || ImGui::IsKeyPressed(emuenv.cfg.keyboard_button_circle)) {
|
||||
if (ImGui::Button(common["cancel"].c_str(), ImVec2(202.f * SCALE.x, 44.f * SCALE.y)) || ImGui::IsKeyPressed(static_cast<ImGuiKey>(emuenv.cfg.keyboard_button_circle))) {
|
||||
if (!menu.empty()) {
|
||||
menu.clear();
|
||||
contents_selected.clear();
|
||||
|
|
|
@ -77,7 +77,7 @@ void draw_info_message(GuiState &gui, EmuEnvState &emuenv) {
|
|||
ImGui::SetCursorPosY(WINDOW_SIZE.y - BUTTON_SIZE.y - (42.0f * SCALE.y));
|
||||
ImGui::Separator();
|
||||
ImGui::SetCursorPos(ImVec2((ImGui::GetWindowWidth() / 2.f) - (BUTTON_SIZE.x / 2.f), WINDOW_SIZE.y - BUTTON_SIZE.y - (24.0f * SCALE.y)));
|
||||
if (ImGui::Button(emuenv.common_dialog.lang.common["ok"].c_str(), BUTTON_SIZE) || ImGui::IsKeyPressed(emuenv.cfg.keyboard_button_cross))
|
||||
if (ImGui::Button(emuenv.common_dialog.lang.common["ok"].c_str(), BUTTON_SIZE) || ImGui::IsKeyPressed(static_cast<ImGuiKey>(emuenv.cfg.keyboard_button_cross)))
|
||||
gui.info_message = {};
|
||||
ImGui::EndChild();
|
||||
|
||||
|
|
|
@ -249,7 +249,7 @@ void draw_app_close(GuiState &gui, EmuEnvState &emuenv) {
|
|||
const auto ICON_POS_SCALE = ImVec2(50.f * SCALE.x, (WINDOW_SIZE.y / 2.f) - (ICON_SIZE.y / 2.f) - (10.f * SCALE.y));
|
||||
ImGui::SetCursorPos(ICON_POS_SCALE);
|
||||
const auto POS_MIN = ImGui::GetCursorScreenPos();
|
||||
ImGui::GetWindowDrawList()->AddImageRounded(get_app_icon(gui, emuenv.io.app_path)->second, POS_MIN, ImVec2(POS_MIN.x + ICON_SIZE.x, POS_MIN.y + ICON_SIZE.y), ImVec2(0, 0), ImVec2(1, 1), IM_COL32_WHITE, ICON_SIZE.x, ImDrawCornerFlags_All);
|
||||
ImGui::GetWindowDrawList()->AddImageRounded(get_app_icon(gui, emuenv.io.app_path)->second, POS_MIN, ImVec2(POS_MIN.x + ICON_SIZE.x, POS_MIN.y + ICON_SIZE.y), ImVec2(0, 0), ImVec2(1, 1), IM_COL32_WHITE, ICON_SIZE.x, ImDrawFlags_RoundCornersAll);
|
||||
}
|
||||
ImGui::SetCursorPos(ImVec2(ICON_SIZE.x + (72.f * SCALE.x), (WINDOW_SIZE.y / 2.f) - ImGui::CalcTextSize(emuenv.current_app_title.c_str()).y + (4.f * SCALE.y)));
|
||||
ImGui::TextColored(GUI_COLOR_TEXT, "%s", emuenv.current_app_title.c_str());
|
||||
|
@ -946,7 +946,7 @@ void draw_home_screen(GuiState &gui, EmuEnvState &emuenv) {
|
|||
ImVec2(ARROW_UP_CENTER.x + (20.f * VIEWPORT_SCALE.x), ARROW_UP_CENTER.y + (16.f * VIEWPORT_SCALE.y)), ARROW_COLOR);
|
||||
ImGui::SetCursorPos(ImVec2(ARROW_SELECT_WIDTH_POS, ARROW_UP_HEIGHT_POS - SELECTABLE_SIZE.y));
|
||||
if (ImGui::Selectable("##upp", false, ImGuiSelectableFlags_None, SELECTABLE_SIZE)
|
||||
|| (!ImGui::GetIO().WantTextInput && ImGui::IsKeyPressed(emuenv.cfg.keyboard_leftstick_up))) {
|
||||
|| (!ImGui::GetIO().WantTextInput && ImGui::IsKeyPressed(static_cast<ImGuiKey>(emuenv.cfg.keyboard_leftstick_up)))) {
|
||||
gui.is_nav_button = false;
|
||||
scroll_type = 1;
|
||||
}
|
||||
|
@ -961,7 +961,7 @@ void draw_home_screen(GuiState &gui, EmuEnvState &emuenv) {
|
|||
ImVec2(ARROW_CENTER.x + (16.f * VIEWPORT_SCALE.x), ARROW_CENTER.y),
|
||||
ImVec2(ARROW_CENTER.x - (16.f * VIEWPORT_SCALE.x), ARROW_CENTER.y + (20.f * VIEWPORT_SCALE.y)), ARROW_COLOR);
|
||||
ImGui::SetCursorPos(ImVec2(ARROW_SELECT_WIDTH_POS, ARROW_CENTER_HEIGHT_POS - SELECTABLE_SIZE.y));
|
||||
if (!gui.vita_area.app_close && (ImGui::Selectable("##right", false, ImGuiSelectableFlags_None, SELECTABLE_SIZE) || (!ImGui::GetIO().WantTextInput && ImGui::IsKeyReleased(emuenv.cfg.keyboard_button_r1)))) {
|
||||
if (!gui.vita_area.app_close && (ImGui::Selectable("##right", false, ImGuiSelectableFlags_None, SELECTABLE_SIZE) || (!ImGui::GetIO().WantTextInput && ImGui::IsKeyReleased(static_cast<ImGuiKey>(emuenv.cfg.keyboard_button_r1))))) {
|
||||
last_time["start"] = 0;
|
||||
++gui.live_area_app_current_open;
|
||||
gui.vita_area.home_screen = false;
|
||||
|
@ -979,7 +979,7 @@ void draw_home_screen(GuiState &gui, EmuEnvState &emuenv) {
|
|||
ImVec2(ARROW_DOWN_CENTER.x - (20.f * VIEWPORT_SCALE.x), ARROW_DOWN_CENTER.y - (16.f * VIEWPORT_SCALE.y)), ARROW_COLOR);
|
||||
ImGui::SetCursorPos(ImVec2(ARROW_SELECT_WIDTH_POS, ARROW_DOWN_HEIGHT_POS - SELECTABLE_SIZE.y));
|
||||
if (ImGui::Selectable("##down", false, ImGuiSelectableFlags_None, SELECTABLE_SIZE)
|
||||
|| (!ImGui::GetIO().WantTextInput && ImGui::IsKeyPressed(emuenv.cfg.keyboard_leftstick_down))) {
|
||||
|| (!ImGui::GetIO().WantTextInput && ImGui::IsKeyPressed(static_cast<ImGuiKey>(emuenv.cfg.keyboard_leftstick_down)))) {
|
||||
gui.is_nav_button = false;
|
||||
scroll_type = -1;
|
||||
}
|
||||
|
|
|
@ -350,7 +350,7 @@ void draw_ime(Ime &ime, EmuEnvState &emuenv) {
|
|||
ImGui::SetCursorPos(ImVec2(MARGE_BORDER, key_row_pos[3] * SCALE.y));
|
||||
ImGui::PushStyleColor(ImGuiCol_Button, IME_BUTTON_BG);
|
||||
ImGui::PushStyleColor(ImGuiCol_Text, GUI_COLOR_TEXT);
|
||||
if (ImGui::Button("Shift", BUTTON_SIZE) || ImGui::IsKeyPressed(emuenv.cfg.keyboard_button_l2)) {
|
||||
if (ImGui::Button("Shift", BUTTON_SIZE) || ImGui::IsKeyPressed(static_cast<ImGuiKey>(emuenv.cfg.keyboard_button_l2))) {
|
||||
if (ime.edit_text.caretIndex == 0)
|
||||
ime.caps_level = ime.caps_level == YES ? NO : ++ime.caps_level;
|
||||
else
|
||||
|
@ -367,7 +367,7 @@ void draw_ime(Ime &ime, EmuEnvState &emuenv) {
|
|||
ImGui::SameLine(0, SPACE);
|
||||
ImGui::PushStyleColor(ImGuiCol_Text, GUI_COLOR_TEXT);
|
||||
ImGui::PushStyleColor(ImGuiCol_Button, IME_BUTTON_BG);
|
||||
if (ImGui::Button("<", PUNCT_BUTTON_SIZE) || ImGui::IsKeyPressed(emuenv.cfg.keyboard_button_l1)) {
|
||||
if (ImGui::Button("<", PUNCT_BUTTON_SIZE) || ImGui::IsKeyPressed(static_cast<ImGuiKey>(emuenv.cfg.keyboard_button_l1))) {
|
||||
ime.edit_text.editIndex = ime.edit_text.caretIndex;
|
||||
if (ime.edit_text.caretIndex)
|
||||
--ime.edit_text.caretIndex;
|
||||
|
@ -381,7 +381,7 @@ void draw_ime(Ime &ime, EmuEnvState &emuenv) {
|
|||
ime.caps_level = YES;
|
||||
}
|
||||
ImGui::SameLine(0, SPACE_BUTTON_SIZE.x + (SPACE * 2.f));
|
||||
if (ImGui::Button(">", PUNCT_BUTTON_SIZE) || ImGui::IsKeyPressed(emuenv.cfg.keyboard_button_r1)) {
|
||||
if (ImGui::Button(">", PUNCT_BUTTON_SIZE) || ImGui::IsKeyPressed(static_cast<ImGuiKey>(emuenv.cfg.keyboard_button_r1))) {
|
||||
ime.edit_text.editIndex = ime.edit_text.caretIndex;
|
||||
if (ime.edit_text.caretIndex < ime.str.length())
|
||||
++ime.edit_text.caretIndex;
|
||||
|
@ -421,7 +421,7 @@ void draw_ime(Ime &ime, EmuEnvState &emuenv) {
|
|||
ImGui::SetCursorPos(ImVec2(BUTTON_POS_X, key_row_pos[3] * SCALE.y));
|
||||
ImGui::PushStyleColor(ImGuiCol_Button, IME_BUTTON_BG);
|
||||
ImGui::PushStyleColor(ImGuiCol_Text, GUI_COLOR_TEXT);
|
||||
if (ImGui::Button("Backspace", BUTTON_SIZE) || ImGui::IsKeyPressed(emuenv.cfg.keyboard_button_square) && ime.edit_text.caretIndex) {
|
||||
if (ImGui::Button("Backspace", BUTTON_SIZE) || ImGui::IsKeyPressed(static_cast<ImGuiKey>(emuenv.cfg.keyboard_button_square)) && ime.edit_text.caretIndex) {
|
||||
ime.str.erase(ime.edit_text.caretIndex - 1, 1);
|
||||
ime.edit_text.editIndex = ime.edit_text.caretIndex;
|
||||
--ime.edit_text.caretIndex;
|
||||
|
@ -438,7 +438,7 @@ void draw_ime(Ime &ime, EmuEnvState &emuenv) {
|
|||
ImGui::PopStyleColor(2);
|
||||
ImGui::PushStyleColor(ImGuiCol_Button, GUI_COLOR_TEXT_BLACK);
|
||||
ImGui::SetCursorPos(ImVec2(MARGE_BORDER, LAST_ROW_KEY_POS));
|
||||
if (ImGui::Button("V", ImVec2(44.f * SCALE.x, KEY_BUTTON_SIZE.y)) || ImGui::IsKeyPressed(emuenv.cfg.keyboard_button_circle))
|
||||
if (ImGui::Button("V", ImVec2(44.f * SCALE.x, KEY_BUTTON_SIZE.y)) || ImGui::IsKeyPressed(static_cast<ImGuiKey>(emuenv.cfg.keyboard_button_circle)))
|
||||
ime.event_id = SCE_IME_EVENT_PRESS_CLOSE;
|
||||
ImGui::PopStyleColor();
|
||||
ImGui::SameLine(0, 18.f);
|
||||
|
@ -461,12 +461,12 @@ void draw_ime(Ime &ime, EmuEnvState &emuenv) {
|
|||
}
|
||||
}
|
||||
ImGui::SetCursorPos(SPACE_BUTTON_POS);
|
||||
if (ImGui::Button(space_str.c_str(), SPACE_BUTTON_SIZE) || ImGui::IsKeyPressed(emuenv.cfg.keyboard_button_triangle))
|
||||
if (ImGui::Button(space_str.c_str(), SPACE_BUTTON_SIZE) || ImGui::IsKeyPressed(static_cast<ImGuiKey>(emuenv.cfg.keyboard_button_triangle)))
|
||||
update_ponct(ime, u" ");
|
||||
ImGui::PopStyleColor();
|
||||
ImGui::SetCursorPos(ImVec2(ENTER_BUTTON_POS_X, LAST_ROW_KEY_POS));
|
||||
ImGui::PushStyleColor(ImGuiCol_Button, GUI_PROGRESS_BAR);
|
||||
if (ImGui::Button(ime.enter_label.c_str(), ENTER_BUTTON_SIZE) || ImGui::IsKeyPressed(emuenv.cfg.keyboard_button_r2))
|
||||
if (ImGui::Button(ime.enter_label.c_str(), ENTER_BUTTON_SIZE) || ImGui::IsKeyPressed(static_cast<ImGuiKey>(emuenv.cfg.keyboard_button_r2)))
|
||||
ime.event_id = SCE_IME_EVENT_PRESS_ENTER;
|
||||
ImGui::PopStyleColor();
|
||||
|
||||
|
|
|
@ -465,7 +465,7 @@ static void draw_notice_info(GuiState &gui, EmuEnvState &emuenv) {
|
|||
ImGui::SetWindowFontScale(1.f * RES_SCALE.x);
|
||||
ImGui::PushStyleVar(ImGuiStyleVar_FrameRounding, 10.f * SCALE.x);
|
||||
ImGui::SetCursorPos(ImVec2(VIEWPORT_SIZE.x - (70.f * SCALE.x), VIEWPORT_SIZE.y - (52.f * SCALE.y)));
|
||||
if (ImGui::Button("...", ImVec2(64.f * SCALE.x, 40.f * SCALE.y)) || ImGui::IsKeyPressed(emuenv.cfg.keyboard_button_triangle))
|
||||
if (ImGui::Button("...", ImVec2(64.f * SCALE.x, 40.f * SCALE.y)) || ImGui::IsKeyPressed(static_cast<ImGuiKey>(emuenv.cfg.keyboard_button_triangle)))
|
||||
ImGui::OpenPopup("...");
|
||||
if (ImGui::BeginPopup("...", ImGuiWindowFlags_NoMove)) {
|
||||
if (ImGui::Button(lang["delete_all"].c_str()))
|
||||
|
@ -480,11 +480,11 @@ static void draw_notice_info(GuiState &gui, EmuEnvState &emuenv) {
|
|||
ImGui::SetCursorPos(ImVec2((DELETE_POPUP_SIZE.x / 2.f) - (ImGui::CalcTextSize(notif_deleted).x / 2.f), (DELETE_POPUP_SIZE.y / 2.f) - (46.f * SCALE.y)));
|
||||
ImGui::TextColored(GUI_COLOR_TEXT, "%s", notif_deleted);
|
||||
ImGui::SetCursorPos(ImVec2((DELETE_POPUP_SIZE.x / 2) - (BUTTON_SIZE.x + (20.f * SCALE.x)), DELETE_POPUP_SIZE.y - BUTTON_SIZE.y - (24.0f * SCALE.y)));
|
||||
if (ImGui::Button(common["cancel"].c_str(), BUTTON_SIZE) || ImGui::IsKeyPressed(emuenv.cfg.keyboard_button_circle)) {
|
||||
if (ImGui::Button(common["cancel"].c_str(), BUTTON_SIZE) || ImGui::IsKeyPressed(static_cast<ImGuiKey>(emuenv.cfg.keyboard_button_circle))) {
|
||||
ImGui::CloseCurrentPopup();
|
||||
}
|
||||
ImGui::SameLine(0.f, 20.f);
|
||||
if (ImGui::Button(common["ok"].c_str(), BUTTON_SIZE) || ImGui::IsKeyPressed(emuenv.cfg.keyboard_button_cross)) {
|
||||
if (ImGui::Button(common["ok"].c_str(), BUTTON_SIZE) || ImGui::IsKeyPressed(static_cast<ImGuiKey>(emuenv.cfg.keyboard_button_cross))) {
|
||||
notice_info.clear();
|
||||
for (auto ¬ice : gui.notice_info_icon)
|
||||
notice.second = {};
|
||||
|
|
|
@ -233,7 +233,7 @@ void draw_initial_setup(GuiState &gui, EmuEnvState &emuenv) {
|
|||
ImGui::SetCursorPos(ImVec2((WINDOW_SIZE.x / 2.f) - (ImGui::CalcTextSize(completed_setup).x / 2.f), (WINDOW_SIZE.y / 2.f) - ImGui::GetFontSize()));
|
||||
ImGui::Text("%s", completed_setup);
|
||||
ImGui::SetCursorPos(BIG_BUTTON_POS);
|
||||
if (ImGui::Button(common["ok"].c_str(), BIG_BUTTON_SIZE) || ImGui::IsKeyPressed(emuenv.cfg.keyboard_button_cross))
|
||||
if (ImGui::Button(common["ok"].c_str(), BIG_BUTTON_SIZE) || ImGui::IsKeyPressed(static_cast<ImGuiKey>(emuenv.cfg.keyboard_button_cross)))
|
||||
emuenv.cfg.initial_setup = true;
|
||||
break;
|
||||
default: break;
|
||||
|
@ -246,10 +246,10 @@ void draw_initial_setup(GuiState &gui, EmuEnvState &emuenv) {
|
|||
// Draw Button
|
||||
ImGui::SetWindowFontScale(1.2f * RES_SCALE.x);
|
||||
ImGui::SetCursorPos(ImVec2(10.f * SCALE.x, display_size.y - BUTTON_SIZE.y - (14.f * SCALE.y)));
|
||||
if ((setup > SELECT_LANGUAGE) && ImGui::Button(lang["back"].c_str(), BUTTON_SIZE) || (setup > SELECT_LANGUAGE) && ImGui::IsKeyPressed(emuenv.cfg.keyboard_button_circle))
|
||||
if ((setup > SELECT_LANGUAGE) && ImGui::Button(lang["back"].c_str(), BUTTON_SIZE) || (setup > SELECT_LANGUAGE) && ImGui::IsKeyPressed(static_cast<ImGuiKey>(emuenv.cfg.keyboard_button_circle)))
|
||||
setup = (InitialSetup)(setup - 1);
|
||||
ImGui::SetCursorPos(ImVec2(display_size.x - BUTTON_SIZE.x - (14.f * SCALE.x), display_size.y - BUTTON_SIZE.y - (14.f * SCALE.y)));
|
||||
if ((setup < FINISHED) && ImGui::Button(lang["next"].c_str(), BUTTON_SIZE) || ImGui::IsKeyPressed(emuenv.cfg.keyboard_button_cross))
|
||||
if ((setup < FINISHED) && ImGui::Button(lang["next"].c_str(), BUTTON_SIZE) || ImGui::IsKeyPressed(static_cast<ImGuiKey>(emuenv.cfg.keyboard_button_cross)))
|
||||
setup = (InitialSetup)(setup + 1);
|
||||
ImGui::SetWindowFontScale(1.f);
|
||||
|
||||
|
|
|
@ -1194,7 +1194,7 @@ void draw_live_area_screen(GuiState &gui, EmuEnvState &emuenv) {
|
|||
|
||||
ImGui::Spacing();
|
||||
ImGui::SetCursorPosX(ImGui::GetWindowWidth() / 2.f - (BUTTON_SIZE.x / 2.f));
|
||||
if (ImGui::Button(common["ok"].c_str(), BUTTON_SIZE) || ImGui::IsKeyPressed(emuenv.cfg.keyboard_button_cross))
|
||||
if (ImGui::Button(common["ok"].c_str(), BUTTON_SIZE) || ImGui::IsKeyPressed(static_cast<ImGuiKey>(emuenv.cfg.keyboard_button_cross)))
|
||||
ImGui::CloseCurrentPopup();
|
||||
|
||||
ImGui::EndPopup();
|
||||
|
|
|
@ -152,9 +152,9 @@ void draw_manual(GuiState &gui, EmuEnvState &emuenv) {
|
|||
|
||||
// Set scroll with mouse wheel or keyboard up/down keys
|
||||
const auto wheel_counter = ImGui::GetIO().MouseWheel;
|
||||
if ((wheel_counter == 1.f) || ImGui::IsKeyPressed(emuenv.cfg.keyboard_leftstick_up))
|
||||
if ((wheel_counter == 1.f) || ImGui::IsKeyPressed(static_cast<ImGuiKey>(emuenv.cfg.keyboard_leftstick_up)))
|
||||
scroll -= std::min(40.f * SCALE.y, scroll);
|
||||
else if ((wheel_counter == -1.f) || ImGui::IsKeyPressed(emuenv.cfg.keyboard_leftstick_down))
|
||||
else if ((wheel_counter == -1.f) || ImGui::IsKeyPressed(static_cast<ImGuiKey>(emuenv.cfg.keyboard_leftstick_down)))
|
||||
scroll += std::min(40.f * SCALE.y, max_scroll - scroll);
|
||||
|
||||
// Set scroll y position
|
||||
|
@ -176,7 +176,7 @@ void draw_manual(GuiState &gui, EmuEnvState &emuenv) {
|
|||
|
||||
// Draw esc button
|
||||
ImGui::SetCursorPos(ImVec2(5.0f * SCALE.x, 10.0f * SCALE.y));
|
||||
if ((!hidden_button && ImGui::Button("Esc", BUTTON_SIZE)) || ImGui::IsKeyPressed(emuenv.cfg.keyboard_button_psbutton))
|
||||
if ((!hidden_button && ImGui::Button("Esc", BUTTON_SIZE)) || ImGui::IsKeyPressed(static_cast<ImGuiKey>(emuenv.cfg.keyboard_button_psbutton)))
|
||||
gui::close_system_app(gui, emuenv);
|
||||
|
||||
// Draw manual scroll bar when is available
|
||||
|
@ -191,7 +191,7 @@ void draw_manual(GuiState &gui, EmuEnvState &emuenv) {
|
|||
// Draw left button
|
||||
if (current_page > 0) {
|
||||
ImGui::SetCursorPos(ImVec2(5.0f * SCALE.x, display_size.y - (40.0f * SCALE.y)));
|
||||
if ((!hidden_button && ImGui::Button("<", BUTTON_SIZE)) || ImGui::IsKeyPressed(emuenv.cfg.keyboard_leftstick_left)) {
|
||||
if ((!hidden_button && ImGui::Button("<", BUTTON_SIZE)) || ImGui::IsKeyPressed(static_cast<ImGuiKey>(emuenv.cfg.keyboard_leftstick_left))) {
|
||||
--current_page;
|
||||
scroll = 0.f;
|
||||
}
|
||||
|
@ -225,7 +225,7 @@ void draw_manual(GuiState &gui, EmuEnvState &emuenv) {
|
|||
// Draw right button
|
||||
if (current_page < (int)gui.manuals.size() - 1) {
|
||||
ImGui::SetCursorPos(ImVec2(display_size.x - (70.f * SCALE.x), display_size.y - (40.0f * SCALE.y)));
|
||||
if ((!hidden_button && ImGui::Button(">", BUTTON_SIZE)) || ImGui::IsKeyPressed(emuenv.cfg.keyboard_leftstick_right)) {
|
||||
if ((!hidden_button && ImGui::Button(">", BUTTON_SIZE)) || ImGui::IsKeyPressed(static_cast<ImGuiKey>(emuenv.cfg.keyboard_leftstick_right))) {
|
||||
scroll = 0.f;
|
||||
++current_page;
|
||||
}
|
||||
|
|
|
@ -225,7 +225,7 @@ void draw_settings(GuiState &gui, EmuEnvState &emuenv) {
|
|||
if (is_background)
|
||||
draw_list->AddImage(gui.apps_background["NPXS10015"], VIEWPORT_POS, BG_POS_MAX);
|
||||
else
|
||||
draw_list->AddRectFilled(VIEWPORT_POS, BG_POS_MAX, IM_COL32(36.f, 120.f, 12.f, 255.f), 0.f, ImDrawCornerFlags_All);
|
||||
draw_list->AddRectFilled(VIEWPORT_POS, BG_POS_MAX, IM_COL32(36.f, 120.f, 12.f, 255.f), 0.f, ImDrawFlags_RoundCornersAll);
|
||||
|
||||
ImGui::SetWindowFontScale(1.6f * RES_SCALE.x);
|
||||
const auto title_size_str = ImGui::CalcTextSize(title.c_str(), 0, false, SIZE_LIST.x);
|
||||
|
@ -269,7 +269,8 @@ void draw_settings(GuiState &gui, EmuEnvState &emuenv) {
|
|||
ImVec2(ARROW_UPP_CENTER.x + (20.f * SCALE.x), ARROW_UPP_CENTER.y + (16.f * SCALE.y)), ARROW_COLOR);
|
||||
ImGui::SetCursorPos(ImVec2(ARROW_SELECT_WIDTH_POS, ARROW_UP_HEIGHT_POS - ARROW_SIZE.y));
|
||||
if ((ImGui::Selectable("##upp", false, ImGuiSelectableFlags_None, ARROW_SIZE))
|
||||
|| (!ImGui::GetIO().WantTextInput && ImGui::IsKeyPressed(emuenv.cfg.keyboard_leftstick_up)) || ImGui::IsKeyPressed(emuenv.cfg.keyboard_button_up))
|
||||
|| (!ImGui::GetIO().WantTextInput && ImGui::IsKeyPressed(static_cast<ImGuiKey>(emuenv.cfg.keyboard_leftstick_up)))
|
||||
|| ImGui::IsKeyPressed(static_cast<ImGuiKey>(emuenv.cfg.keyboard_button_up)))
|
||||
set_scroll_pos = current_scroll_pos - (340 * SCALE.y);
|
||||
}
|
||||
if (current_scroll_pos < max_scroll_pos) {
|
||||
|
@ -281,7 +282,8 @@ void draw_settings(GuiState &gui, EmuEnvState &emuenv) {
|
|||
ImVec2(ARROW_DOWN_CENTER.x - (20.f * SCALE.x), ARROW_DOWN_CENTER.y - (16.f * SCALE.y)), ARROW_COLOR);
|
||||
ImGui::SetCursorPos(ImVec2(ARROW_SELECT_WIDTH_POS, ARROW_DOWN_HEIGHT_POS - ARROW_SIZE.y));
|
||||
if ((ImGui::Selectable("##down", false, ImGuiSelectableFlags_None, ARROW_SIZE))
|
||||
|| (!ImGui::GetIO().WantTextInput && ImGui::IsKeyPressed(emuenv.cfg.keyboard_leftstick_down)) || ImGui::IsKeyPressed(emuenv.cfg.keyboard_button_down))
|
||||
|| (!ImGui::GetIO().WantTextInput && ImGui::IsKeyPressed(static_cast<ImGuiKey>(emuenv.cfg.keyboard_leftstick_down)))
|
||||
|| ImGui::IsKeyPressed(static_cast<ImGuiKey>(emuenv.cfg.keyboard_button_down)))
|
||||
set_scroll_pos = current_scroll_pos + (340 * SCALE.y);
|
||||
}
|
||||
}
|
||||
|
@ -414,7 +416,7 @@ void draw_settings(GuiState &gui, EmuEnvState &emuenv) {
|
|||
}
|
||||
ImGui::SetWindowFontScale(1.2f);
|
||||
ImGui::SetCursorPos(ImVec2((SIZE_LIST.x / 2.f) - (BUTTON_SIZE.x / 2.f), (SIZE_LIST.y - 82.f) - BUTTON_SIZE.y));
|
||||
if ((selected != gui.users[emuenv.io.user_id].theme_id) && (ImGui::Button(select, BUTTON_SIZE) || ImGui::IsKeyPressed(emuenv.cfg.keyboard_button_cross))) {
|
||||
if ((selected != gui.users[emuenv.io.user_id].theme_id) && (ImGui::Button(select, BUTTON_SIZE) || ImGui::IsKeyPressed(static_cast<ImGuiKey>(emuenv.cfg.keyboard_button_cross)))) {
|
||||
gui.users[emuenv.io.user_id].start_path.clear();
|
||||
if (init_theme(gui, emuenv, selected)) {
|
||||
gui.users[emuenv.io.user_id].theme_id = selected;
|
||||
|
@ -446,10 +448,10 @@ void draw_settings(GuiState &gui, EmuEnvState &emuenv) {
|
|||
ImGui::SetCursorPos(ImVec2(POPUP_SIZE.x / 2 - (CALC_TEXT.x / 2.f), POPUP_SIZE.y / 2.f));
|
||||
ImGui::TextColored(GUI_COLOR_TEXT, "%s", delete_str);
|
||||
ImGui::SetCursorPos(ImVec2((POPUP_SIZE.x / 2.f) - BUTTON_SIZE.x - (20.f * SCALE.x), POPUP_SIZE.y - BUTTON_SIZE.y - (22.f * SCALE.y)));
|
||||
if (ImGui::Button(common["cancel"].c_str(), BUTTON_SIZE) || ImGui::IsKeyPressed(emuenv.cfg.keyboard_button_circle))
|
||||
if (ImGui::Button(common["cancel"].c_str(), BUTTON_SIZE) || ImGui::IsKeyPressed(static_cast<ImGuiKey>(emuenv.cfg.keyboard_button_circle)))
|
||||
popup.clear();
|
||||
ImGui::SameLine(0, 40.f * SCALE.x);
|
||||
if (ImGui::Button(common["ok"].c_str(), BUTTON_SIZE) || ImGui::IsKeyPressed(emuenv.cfg.keyboard_button_cross)) {
|
||||
if (ImGui::Button(common["ok"].c_str(), BUTTON_SIZE) || ImGui::IsKeyPressed(static_cast<ImGuiKey>(emuenv.cfg.keyboard_button_cross))) {
|
||||
if (selected == gui.users[emuenv.io.user_id].theme_id) {
|
||||
gui.users[emuenv.io.user_id].theme_id = "default";
|
||||
gui.users[emuenv.io.user_id].start_path.clear();
|
||||
|
@ -588,7 +590,7 @@ void draw_settings(GuiState &gui, EmuEnvState &emuenv) {
|
|||
ImGui::Image(gui.themes_preview[gui.users[emuenv.io.user_id].theme_id][LOCK], SIZE_PREVIEW);
|
||||
}
|
||||
ImGui::SetCursorPos(SELECT_BUTTON_POS);
|
||||
if ((gui.users[emuenv.io.user_id].start_type != "theme") && (ImGui::Button(select, BUTTON_SIZE) || ImGui::IsKeyPressed(emuenv.cfg.keyboard_button_cross))) {
|
||||
if ((gui.users[emuenv.io.user_id].start_type != "theme") && (ImGui::Button(select, BUTTON_SIZE) || ImGui::IsKeyPressed(static_cast<ImGuiKey>(emuenv.cfg.keyboard_button_cross)))) {
|
||||
gui.users[emuenv.io.user_id].start_path.clear();
|
||||
gui.users[emuenv.io.user_id].start_type = "theme";
|
||||
init_theme_start_background(gui, emuenv, gui.users[emuenv.io.user_id].theme_id);
|
||||
|
@ -612,7 +614,7 @@ void draw_settings(GuiState &gui, EmuEnvState &emuenv) {
|
|||
ImGui::Image(gui.themes_preview["default"][LOCK], SIZE_PREVIEW);
|
||||
}
|
||||
ImGui::SetCursorPos(SELECT_BUTTON_POS);
|
||||
if ((gui.users[emuenv.io.user_id].start_type != "default") && (ImGui::Button(select, BUTTON_SIZE) || ImGui::IsKeyPressed(emuenv.cfg.keyboard_button_cross))) {
|
||||
if ((gui.users[emuenv.io.user_id].start_type != "default") && (ImGui::Button(select, BUTTON_SIZE) || ImGui::IsKeyPressed(static_cast<ImGuiKey>(emuenv.cfg.keyboard_button_cross)))) {
|
||||
gui.users[emuenv.io.user_id].start_path.clear();
|
||||
init_theme_start_background(gui, emuenv, "default");
|
||||
gui.users[emuenv.io.user_id].start_type = "default";
|
||||
|
@ -955,7 +957,7 @@ void draw_settings(GuiState &gui, EmuEnvState &emuenv) {
|
|||
// Back
|
||||
ImGui::SetWindowFontScale(1.2f * RES_SCALE.x);
|
||||
ImGui::SetCursorPos(ImVec2(6.f * SCALE.x, WINDOW_SIZE.y - (52.f * SCALE.y)));
|
||||
if (ImGui::Button("Back", ImVec2(64.f * SCALE.x, 40.f * SCALE.y)) || ImGui::IsKeyPressed(emuenv.cfg.keyboard_button_circle)) {
|
||||
if (ImGui::Button("Back", ImVec2(64.f * SCALE.x, 40.f * SCALE.y)) || ImGui::IsKeyPressed(static_cast<ImGuiKey>(emuenv.cfg.keyboard_button_circle))) {
|
||||
if (settings_menu) {
|
||||
if (!menu.empty()) {
|
||||
if (!selected.empty()) {
|
||||
|
@ -980,7 +982,7 @@ void draw_settings(GuiState &gui, EmuEnvState &emuenv) {
|
|||
|
||||
if ((settings_menu == THEME_BACKGROUND) && !selected.empty() && (selected != "default")) {
|
||||
ImGui::SetCursorPos(ImVec2(WINDOW_SIZE.x - (70.f * SCALE.x), WINDOW_SIZE.y - (52.f * SCALE.y)));
|
||||
if (((popup != "information") && ImGui::Button("...", ImVec2(64.f * SCALE.x, 40.f * SCALE.y))) || ImGui::IsKeyPressed(emuenv.cfg.keyboard_button_triangle))
|
||||
if (((popup != "information") && ImGui::Button("...", ImVec2(64.f * SCALE.x, 40.f * SCALE.y))) || ImGui::IsKeyPressed(static_cast<ImGuiKey>(emuenv.cfg.keyboard_button_triangle)))
|
||||
ImGui::OpenPopup("...");
|
||||
if (ImGui::BeginPopup("...")) {
|
||||
if (ImGui::MenuItem(theme.information["title"].c_str()))
|
||||
|
|
|
@ -513,7 +513,7 @@ void draw_start_screen(GuiState &gui, EmuEnvState &emuenv) {
|
|||
}
|
||||
ImGui::PopFont();
|
||||
|
||||
if ((ImGui::IsWindowHovered(ImGuiFocusedFlags_RootWindow) && ImGui::IsMouseClicked(0)) || ImGui::IsKeyPressed(emuenv.cfg.keyboard_button_circle)) {
|
||||
if ((ImGui::IsWindowHovered(ImGuiFocusedFlags_RootWindow) && ImGui::IsMouseClicked(0)) || ImGui::IsKeyPressed(static_cast<ImGuiKey>(emuenv.cfg.keyboard_button_circle))) {
|
||||
gui.vita_area.start_screen = false;
|
||||
gui.vita_area.home_screen = true;
|
||||
if (emuenv.cfg.show_info_bar)
|
||||
|
|
|
@ -425,7 +425,7 @@ void draw_trophy_collection(GuiState &gui, EmuEnvState &emuenv) {
|
|||
if (is_background)
|
||||
draw_list->AddImage(gui.apps_background["NPXS10008"], VIEWPORT_POS, BG_POS_MAX);
|
||||
else
|
||||
draw_list->AddRectFilled(VIEWPORT_POS, BG_POS_MAX, IM_COL32(31.f, 12.f, 0.f, 255.f), 0.f, ImDrawCornerFlags_All);
|
||||
draw_list->AddRectFilled(VIEWPORT_POS, BG_POS_MAX, IM_COL32(31.f, 12.f, 0.f, 255.f), 0.f, ImDrawFlags_RoundCornersAll);
|
||||
|
||||
auto lang = gui.lang.trophy_collection;
|
||||
auto common = emuenv.common_dialog.lang.common;
|
||||
|
@ -491,10 +491,10 @@ void draw_trophy_collection(GuiState &gui, EmuEnvState &emuenv) {
|
|||
ImGui::TextColored(GUI_COLOR_TEXT, "%s", delete_str);
|
||||
ImGui::PopTextWrapPos();
|
||||
ImGui::SetCursorPos(ImVec2((POPUP_SIZE.x / 2) - (BUTTON_SIZE.x + (20.f * SCALE.x)), POPUP_SIZE.y - BUTTON_SIZE.y - (22.0f * SCALE.y)));
|
||||
if (ImGui::Button(common["cancel"].c_str(), BUTTON_SIZE) || ImGui::IsKeyPressed(emuenv.cfg.keyboard_button_circle))
|
||||
if (ImGui::Button(common["cancel"].c_str(), BUTTON_SIZE) || ImGui::IsKeyPressed(static_cast<ImGuiKey>(emuenv.cfg.keyboard_button_circle)))
|
||||
delete_np_com_id.clear();
|
||||
ImGui::SameLine(0, 20.f * SCALE.x);
|
||||
if (ImGui::Button(common["ok"].c_str(), BUTTON_SIZE) || ImGui::IsKeyPressed(emuenv.cfg.keyboard_button_cross)) {
|
||||
if (ImGui::Button(common["ok"].c_str(), BUTTON_SIZE) || ImGui::IsKeyPressed(static_cast<ImGuiKey>(emuenv.cfg.keyboard_button_cross))) {
|
||||
fs::remove_all(TROPHY_PATH / "conf" / delete_np_com_id);
|
||||
fs::remove_all(TROPHY_PATH / "data" / delete_np_com_id);
|
||||
const auto np_com_id_index = std::find_if(np_com_id_list.begin(), np_com_id_list.end(), [&](const NPComIdSort &np_com) {
|
||||
|
@ -745,7 +745,7 @@ void draw_trophy_collection(GuiState &gui, EmuEnvState &emuenv) {
|
|||
|
||||
// Back
|
||||
ImGui::SetCursorPos(ImVec2(8.f * SCALE.x, WINDOW_SIZE.y - (52.f * SCALE.y)));
|
||||
if (ImGui::Button("Back", ImVec2(64.f * SCALE.x, 40.f * SCALE.y)) || ImGui::IsKeyPressed(emuenv.cfg.keyboard_button_circle)) {
|
||||
if (ImGui::Button("Back", ImVec2(64.f * SCALE.x, 40.f * SCALE.y)) || ImGui::IsKeyPressed(static_cast<ImGuiKey>(emuenv.cfg.keyboard_button_circle))) {
|
||||
if (!np_com_id_selected.empty()) {
|
||||
if (detail_np_com_id) {
|
||||
detail_np_com_id = false;
|
||||
|
@ -775,7 +775,7 @@ void draw_trophy_collection(GuiState &gui, EmuEnvState &emuenv) {
|
|||
// Sort
|
||||
if (trophy_id_selected.empty() && !detail_np_com_id && (np_com_id_selected.empty() || !group_id_selected.empty())) {
|
||||
ImGui::SetCursorPos(ImVec2(WINDOW_SIZE.x - (70.f * SCALE.x), WINDOW_SIZE.y - (52.f * SCALE.y)));
|
||||
if (ImGui::Button("...", ImVec2(64.f * SCALE.x, 40.f * SCALE.y)) || ImGui::IsKeyPressed(emuenv.cfg.keyboard_button_triangle))
|
||||
if (ImGui::Button("...", ImVec2(64.f * SCALE.x, 40.f * SCALE.y)) || ImGui::IsKeyPressed(static_cast<ImGuiKey>(emuenv.cfg.keyboard_button_triangle)))
|
||||
ImGui::OpenPopup("...");
|
||||
if (ImGui::BeginPopup("...", ImGuiWindowFlags_NoMove)) {
|
||||
ImGui::TextColored(GUI_COLOR_TEXT_TITLE, "%s", lang["sort"].c_str());
|
||||
|
|
|
@ -265,7 +265,7 @@ void draw_vita3k_update(GuiState &gui, EmuEnvState &emuenv) {
|
|||
if (is_background)
|
||||
ImGui::GetBackgroundDrawList()->AddImage(gui.apps_background["NPXS10015"], WINDOW_POS, display_size);
|
||||
else
|
||||
ImGui::GetBackgroundDrawList()->AddRectFilled(WINDOW_POS, display_size, IM_COL32(36.f, 120.f, 12.f, 255.f), 0.f, ImDrawCornerFlags_All);
|
||||
ImGui::GetBackgroundDrawList()->AddRectFilled(WINDOW_POS, display_size, IM_COL32(36.f, 120.f, 12.f, 255.f), 0.f, ImDrawFlags_RoundCornersAll);
|
||||
|
||||
ImGui::SetWindowFontScale(1.6f * RES_SCALE.x);
|
||||
ImGui::SetCursorPos(ImVec2((display_size.x / 2.f) - (ImGui::CalcTextSize(lang["title"].c_str()).x / 2.f), 44.f * SCALE.y));
|
||||
|
@ -377,7 +377,7 @@ void draw_vita3k_update(GuiState &gui, EmuEnvState &emuenv) {
|
|||
ImGui::SetCursorPosY(display_size.y - BUTTON_SIZE.y - (20.f * SCALE.y));
|
||||
ImGui::Separator();
|
||||
ImGui::SetCursorPos(ImVec2(WINDOW_POS.x + (10.f * SCALE.x), (display_size.y - BUTTON_SIZE.y - (12.f * SCALE.y))));
|
||||
if (ImGui::Button((state < DESCRIPTION) || (state == DOWNLOAD) ? common["cancel"].c_str() : lang["back"].c_str(), BUTTON_SIZE) || ImGui::IsKeyPressed(emuenv.cfg.keyboard_button_cross)) {
|
||||
if (ImGui::Button((state < DESCRIPTION) || (state == DOWNLOAD) ? common["cancel"].c_str() : lang["back"].c_str(), BUTTON_SIZE) || ImGui::IsKeyPressed(static_cast<ImGuiKey>(emuenv.cfg.keyboard_button_cross))) {
|
||||
if (state < DESCRIPTION) {
|
||||
if (fs::exists("windows-latest.zip"))
|
||||
fs::remove("windows-latest.zip");
|
||||
|
@ -392,7 +392,7 @@ void draw_vita3k_update(GuiState &gui, EmuEnvState &emuenv) {
|
|||
|
||||
if (state > NO_UPDATE && state < DOWNLOAD) {
|
||||
ImGui::SetCursorPos(ImVec2(display_size.x - WINDOW_POS.x - BUTTON_SIZE.x - (10.f * SCALE.x), (display_size.y - BUTTON_SIZE.y - (12.f * SCALE.y))));
|
||||
if (ImGui::Button(state < UPDATE_VITA3K ? lang["next"].c_str() : lang["update"].c_str(), BUTTON_SIZE) || ImGui::IsKeyPressed(emuenv.cfg.keyboard_button_circle)) {
|
||||
if (ImGui::Button(state < UPDATE_VITA3K ? lang["next"].c_str() : lang["update"].c_str(), BUTTON_SIZE) || ImGui::IsKeyPressed(static_cast<ImGuiKey>(emuenv.cfg.keyboard_button_circle))) {
|
||||
state = (Vita3kUpdate)(state + 1);
|
||||
if (state == DOWNLOAD)
|
||||
download_update(emuenv.base_path);
|
||||
|
|
|
@ -37,7 +37,7 @@ size_t attribute_format_size(SceGxmAttributeFormat format) {
|
|||
case SCE_GXM_ATTRIBUTE_FORMAT_UNTYPED:
|
||||
return 4;
|
||||
default:
|
||||
LOG_ERROR("Unsupported attribute format 0x{:0X}", format);
|
||||
LOG_ERROR("Unsupported attribute format 0x{:0X}", fmt::underlying(format));
|
||||
return 4;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -16,7 +16,7 @@
|
|||
// 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
|
||||
#ifdef TRACY_ENABLE
|
||||
#include "public/tracy/Tracy.hpp"
|
||||
#include <tracy/Tracy.hpp>
|
||||
#endif
|
||||
|
||||
#include <kernel/state.h>
|
||||
|
|
|
@ -46,11 +46,11 @@
|
|||
#include <process.h>
|
||||
#endif
|
||||
|
||||
#include "public/tracy/Tracy.hpp"
|
||||
#include <SDL.h>
|
||||
#include <chrono>
|
||||
#include <cstdlib>
|
||||
#include <thread>
|
||||
#include <tracy/Tracy.hpp>
|
||||
|
||||
static void run_execv(char *argv[], EmuEnvState &emuenv) {
|
||||
char *args[10];
|
||||
|
|
|
@ -18,7 +18,7 @@
|
|||
#pragma once
|
||||
|
||||
#ifdef TRACY_ENABLE
|
||||
#include "public/tracy/Tracy.hpp"
|
||||
#include <tracy/Tracy.hpp>
|
||||
#endif
|
||||
|
||||
#include "lay_out_args.h"
|
||||
|
|
|
@ -47,7 +47,7 @@ std::string to_debug_str<SceFiosOverlayResolveMode>(const MemState &mem, SceFios
|
|||
EXPORT(int, sceFiosOverlayAddForProcess02, SceUID processId, SceFiosProcessOverlay *pOverlay, SceFiosOverlayID *pOutID) {
|
||||
TRACY_FUNC(sceFiosOverlayAddForProcess02, processId, pOverlay, pOutID);
|
||||
if (pOverlay->type != SCE_FIOS_OVERLAY_TYPE_OPAQUE)
|
||||
LOG_WARN("Using unimplemented overlay type {}.", pOverlay->type);
|
||||
LOG_WARN("Using unimplemented overlay type {}.", fmt::underlying(pOverlay->type));
|
||||
|
||||
*pOutID = create_overlay(emuenv.io, pOverlay);
|
||||
|
||||
|
|
|
@ -24,7 +24,7 @@
|
|||
#include <memory>
|
||||
#include <unordered_map>
|
||||
|
||||
#include <glad/glad.h>
|
||||
#include <glad/gl.h>
|
||||
|
||||
struct MemState;
|
||||
|
||||
|
|
|
@ -19,7 +19,7 @@
|
|||
|
||||
#ifdef TRACY_ENABLE
|
||||
|
||||
#include "public/tracy/Tracy.hpp"
|
||||
#include <tracy/Tracy.hpp>
|
||||
#define R_PROFILE(name) ZoneNamedNC(___tracy_scoped_zone, name, 0x0055FF, false);
|
||||
|
||||
#else
|
||||
|
|
|
@ -87,8 +87,8 @@ void draw(GLState &renderer, GLContext &context, const FeatureState &features, S
|
|||
const std::string hash_text_v = hex_string(context.record.vertex_program.get(mem)->renderer_data->hash);
|
||||
|
||||
LOG_DEBUG("\nVertex : {}\nFragment: {}", hash_text_v, hash_text_f);
|
||||
LOG_DEBUG("Vertex default uniform buffer: {}\n", spdlog::to_hex(context.ubo_data[0].begin(), context.ubo_data[0].end(), 16));
|
||||
LOG_DEBUG("Fragment default uniform buffer: {}\n", spdlog::to_hex(context.ubo_data[SCE_GXM_REAL_MAX_UNIFORM_BUFFER].begin(), context.ubo_data[SCE_GXM_REAL_MAX_UNIFORM_BUFFER].end(), 16));
|
||||
LOG_DEBUG(fmt::runtime("Vertex default uniform buffer: {}\n"), spdlog::to_hex(context.ubo_data[0], 16));
|
||||
LOG_DEBUG(fmt::runtime("Fragment default uniform buffer: {}\n"), spdlog::to_hex(context.ubo_data[SCE_GXM_REAL_MAX_UNIFORM_BUFFER], 16));
|
||||
}
|
||||
|
||||
if (!program_id) {
|
||||
|
|
|
@ -110,9 +110,17 @@ void bind_fundamental(GLContext &context) {
|
|||
glBindVertexArray(context.vertex_array[0]);
|
||||
}
|
||||
|
||||
static void after_callback(const char *name, void *funcptr, int len_args, ...) {
|
||||
for (GLenum error = glad_glGetError(); error != GL_NO_ERROR; error = glad_glGetError()) {
|
||||
LOG_ERROR("OpenGL: {} set error {}.", name, error);
|
||||
static void after_callback(void *ret, const char *name, GLADapiproc apiproc, int len_args, ...) {
|
||||
GLenum error_code;
|
||||
|
||||
GLAD_UNUSED(ret);
|
||||
GLAD_UNUSED(apiproc);
|
||||
GLAD_UNUSED(len_args);
|
||||
|
||||
error_code = glad_glGetError();
|
||||
|
||||
if (error_code != GL_NO_ERROR) {
|
||||
LOG_ERROR("OpenGL: {} set error {}.", name, error_code);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -194,8 +202,10 @@ bool create(SDL_Window *window, std::unique_ptr<State> &state, const char *base_
|
|||
if (!gl_state.context)
|
||||
return false;
|
||||
|
||||
gladLoadGLLoader((GLADloadproc)SDL_GL_GetProcAddress);
|
||||
glad_set_post_callback(after_callback);
|
||||
if (!gladLoadGL((GLADloadfunc)SDL_GL_GetProcAddress))
|
||||
return false;
|
||||
|
||||
gladSetGLPostCallback(after_callback);
|
||||
|
||||
// Detect GPU and features
|
||||
const std::string gpu_name = reinterpret_cast<const GLchar *>(glGetString(GL_RENDERER));
|
||||
|
@ -547,7 +557,7 @@ void lookup_and_get_surface_data(GLState &renderer, MemState &mem, SceGxmColorSu
|
|||
|
||||
auto format_gl = GXM_COLOR_FORMAT_TO_GL_FORMAT.find(format);
|
||||
if (format_gl == GXM_COLOR_FORMAT_TO_GL_FORMAT.end()) {
|
||||
LOG_ERROR("Color format not implemented: {}, report this to developer", format);
|
||||
LOG_ERROR("Color format not implemented: {}, report this to developer", fmt::underlying(format));
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -608,7 +618,7 @@ void get_surface_data(GLState &renderer, GLContext &context, uint32_t *pixels, S
|
|||
|
||||
auto format_gl = GXM_COLOR_FORMAT_TO_GL_FORMAT.find(format);
|
||||
if (format_gl == GXM_COLOR_FORMAT_TO_GL_FORMAT.end()) {
|
||||
LOG_ERROR("Color format not implemented: {}, report this to developer", format);
|
||||
LOG_ERROR("Color format not implemented: {}, report this to developer", fmt::underlying(format));
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
|
@ -259,13 +259,13 @@ GLuint GLSurfaceCache::retrieve_color_surface_texture_handle(const State &state,
|
|||
// Check if the GL implementation actually store raw like this (a safe check)
|
||||
if ((bytes_per_pixel_requested != color::bytes_per_pixel_in_gl_storage(base_format)) || (bytes_per_pixel_in_store != color::bytes_per_pixel_in_gl_storage(info.format))) {
|
||||
LOG_ERROR("One or both two surface formats requested=0x{:X} and inStore=0x{:X} does not support bit-casting. Please report to developers!",
|
||||
base_format, info.format);
|
||||
fmt::underlying(base_format), fmt::underlying(info.format));
|
||||
|
||||
return 0;
|
||||
}
|
||||
} else {
|
||||
static bool has_happened = false;
|
||||
LOG_ERROR_IF(!has_happened, "Two surface formats requested=0x{:X} and inStore=0x{:X} are not castable!", base_format, info.format);
|
||||
LOG_ERROR_IF(!has_happened, "Two surface formats requested=0x{:X} and inStore=0x{:X} are not castable!", fmt::underlying(base_format), fmt::underlying(info.format));
|
||||
has_happened = true;
|
||||
return 0;
|
||||
}
|
||||
|
|
|
@ -289,7 +289,7 @@ GLenum translate_internal_format(SceGxmTextureBaseFormat base_format) {
|
|||
case SCE_GXM_TEXTURE_BASE_FORMAT_SBC5:
|
||||
return GL_COMPRESSED_SIGNED_RG_RGTC2;
|
||||
default:
|
||||
LOG_ERROR("Missing case texture base format {}, fallback to GL_RGBA", base_format);
|
||||
LOG_ERROR("Missing case texture base format {}, fallback to GL_RGBA", fmt::underlying(base_format));
|
||||
return GL_RGBA;
|
||||
}
|
||||
}
|
||||
|
@ -377,7 +377,7 @@ GLenum translate_format(SceGxmTextureBaseFormat base_format) {
|
|||
case SCE_GXM_TEXTURE_BASE_FORMAT_SBC5:
|
||||
return GL_COMPRESSED_SIGNED_RG_RGTC2;
|
||||
default:
|
||||
LOG_ERROR("Missing case texture base format {}, fallback to GL_RGBA", base_format);
|
||||
LOG_ERROR("Missing case texture base format {}, fallback to GL_RGBA", fmt::underlying(base_format));
|
||||
return GL_RGBA;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -401,7 +401,7 @@ void TextureCache::upload_texture(const SceGxmTexture &gxm_texture, MemState &me
|
|||
case SCE_GXM_TEXTURE_FORMAT_YVYU422_CSC1:
|
||||
case SCE_GXM_TEXTURE_FORMAT_UYVY422_CSC1:
|
||||
case SCE_GXM_TEXTURE_FORMAT_VYUY422_CSC1:
|
||||
LOG_ERROR("Yuv Texture format not implemented: {}", fmt);
|
||||
LOG_ERROR("Yuv Texture format not implemented: {}", fmt::underlying(fmt));
|
||||
assert(false);
|
||||
default:
|
||||
assert(false);
|
||||
|
|
|
@ -549,7 +549,7 @@ size_t get_compressed_size(SceGxmTextureBaseFormat base_format, std::uint32_t wi
|
|||
case SCE_GXM_TEXTURE_BASE_FORMAT_SBC5:
|
||||
return ((width + 3) / 4) * ((height + 3) / 4) * 16;
|
||||
default:
|
||||
LOG_ERROR("Invalid block compressed texture format: {}", base_format);
|
||||
LOG_ERROR("Invalid block compressed texture format: {}", fmt::underlying(base_format));
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -94,7 +94,7 @@ vk::BlendFactor translate_blend_factor(const SceGxmBlendFactor blend_factor) {
|
|||
case SCE_GXM_BLEND_FACTOR_DST_ALPHA_SATURATE:
|
||||
return vk::BlendFactor::eDstAlpha; // TODO Not supported.
|
||||
default:
|
||||
LOG_ERROR("Unknown blend factor: {}", blend_factor);
|
||||
LOG_ERROR("Unknown blend factor: {}", fmt::underlying(blend_factor));
|
||||
return vk::BlendFactor::eOne;
|
||||
}
|
||||
}
|
||||
|
@ -113,7 +113,7 @@ vk::BlendOp translate_blend_func(const SceGxmBlendFunc blend_func) {
|
|||
case SCE_GXM_BLEND_FUNC_MAX:
|
||||
return vk::BlendOp::eMax;
|
||||
default:
|
||||
LOG_ERROR("Unknown blend func: {}", blend_func);
|
||||
LOG_ERROR("Unknown blend func: {}", fmt::underlying(blend_func));
|
||||
return vk::BlendOp::eAdd;
|
||||
}
|
||||
}
|
||||
|
@ -134,7 +134,7 @@ vk::PrimitiveTopology translate_primitive(SceGxmPrimitiveType primitive) {
|
|||
LOG_WARN("Unsupported primitive: SCE_GXM_PRIMITIVE_TRIANGLE_EDGES, using SCE_GXM_PRIMITIVE_TRIANGLES instead");
|
||||
return vk::PrimitiveTopology::eTriangleList;
|
||||
default:
|
||||
LOG_ERROR("Unknown primitive: {}", primitive);
|
||||
LOG_ERROR("Unknown primitive: {}", fmt::underlying(primitive));
|
||||
return vk::PrimitiveTopology::eTriangleList;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -333,7 +333,7 @@ bool VKState::create(SDL_Window *window, std::unique_ptr<renderer::State> &state
|
|||
return false;
|
||||
}
|
||||
|
||||
LOG_INFO("Vulkan device: {}", physical_device_properties.deviceName);
|
||||
LOG_INFO("Vulkan device: {}", physical_device_properties.deviceName.data());
|
||||
LOG_INFO("Driver version: {}", get_driver_version(physical_device_properties.vendorID, physical_device_properties.driverVersion));
|
||||
}
|
||||
|
||||
|
|
|
@ -459,8 +459,8 @@ void draw(VKContext &context, SceGxmPrimitiveType type, SceGxmIndexFormat format
|
|||
const std::string hash_text_v = hex_string(context.record.vertex_program.get(mem)->renderer_data->hash);
|
||||
|
||||
LOG_DEBUG("\nVertex : {}\nFragment: {}", hash_text_v, hash_text_f);
|
||||
LOG_DEBUG("Vertex default uniform buffer: {}\n", spdlog::to_hex(context.ubo_data[0].begin(), context.ubo_data[0].end(), 16));
|
||||
LOG_DEBUG("Fragment default uniform buffer: {}\n", spdlog::to_hex(context.ubo_data[SCE_GXM_REAL_MAX_UNIFORM_BUFFER].begin(), context.ubo_data[SCE_GXM_REAL_MAX_UNIFORM_BUFFER].end(), 16));
|
||||
LOG_DEBUG(fmt::runtime("Vertex default uniform buffer: {}\n"), spdlog::to_hex(context.ubo_data[0], 16));
|
||||
LOG_DEBUG(fmt::runtime("Fragment default uniform buffer: {}\n"), spdlog::to_hex(context.ubo_data[SCE_GXM_REAL_MAX_UNIFORM_BUFFER], 16));
|
||||
}
|
||||
|
||||
const bool use_memory_mapping = context.state.features.support_memory_mapping;
|
||||
|
|
|
@ -19,7 +19,7 @@
|
|||
|
||||
#ifdef TRACY_ENABLE
|
||||
|
||||
#include "public/tracy/Tracy.hpp"
|
||||
#include <tracy/Tracy.hpp>
|
||||
#define SHADER_PROFILE(name) ZoneNamedNC(___tracy_scoped_zone, name, 0x000035, false);
|
||||
|
||||
#else
|
||||
|
|
|
@ -76,9 +76,7 @@ inline std::string to_debug_str(const MemState &mem) {
|
|||
}
|
||||
|
||||
#ifdef TRACY_ENABLE
|
||||
|
||||
#include "public/client/TracyScoped.hpp"
|
||||
#include "public/tracy/Tracy.hpp"
|
||||
#include <tracy/Tracy.hpp>
|
||||
|
||||
#if (defined(_MSC_VER) && !defined(__clang__) && (!defined(_MSVC_TRADITIONAL) || _MSVC_TRADITIONAL))
|
||||
#define __ARGS_WITH_COMMA(...) , ##__VA_ARGS__
|
||||
|
|
Loading…
Reference in a new issue