Skip to content

Commit ae253de

Browse files
committed
fix: remove unused JPEG XL code
While JPEG XL is neat and all, it might get mis-detected by external security solutions. As we ended up not needing the image format, we should remove it to minimise our surface.
1 parent 68fd9d2 commit ae253de

File tree

4 files changed

+3
-166
lines changed

4 files changed

+3
-166
lines changed

CMakeLists.txt

Lines changed: 0 additions & 60 deletions
Original file line numberDiff line numberDiff line change
@@ -121,8 +121,6 @@ find_package(Threads REQUIRED)
121121
find_package(zstd REQUIRED)
122122
find_package(ZLIB REQUIRED)
123123

124-
pkg_check_modules(libjxl REQUIRED IMPORTED_TARGET libjxl)
125-
pkg_check_modules(libjxl_threads REQUIRED IMPORTED_TARGET libjxl_threads)
126124

127125
add_library(imgui STATIC
128126
dep/imgui/imconfig.h
@@ -212,8 +210,6 @@ target_link_libraries(SimpleGraphic
212210
imgui
213211
LuaJIT::LuaJIT
214212
Microsoft.GSL::GSL
215-
PkgConfig::libjxl
216-
PkgConfig::libjxl_threads
217213
re2::re2
218214
sol2
219215
Threads::Threads
@@ -233,37 +229,9 @@ if (WIN32)
233229
find_file(ZLIB_DLL_DEBUG NAMES "zlibd1.dll"
234230
PATHS "${DEPS_DIR}" PATH_SUFFIXES "debug/bin" REQUIRED NO_DEFAULT_PATH)
235231

236-
# JPEG XL
237-
find_file(JPEG_XL_DLL_DEBUG NAMES "jxl.dll"
238-
PATHS "${DEPS_DIR}" PATH_SUFFIXES "debug/bin" REQUIRED NO_DEFAULT_PATH)
239-
find_file(JPEG_XL_CMS_DLL_DEBUG NAMES "jxl_cms.dll"
240-
PATHS "${DEPS_DIR}" PATH_SUFFIXES "debug/bin" REQUIRED NO_DEFAULT_PATH)
241-
find_file(JPEG_XL_THREADS_DLL_DEBUG NAMES "jxl_threads.dll"
242-
PATHS "${DEPS_DIR}" PATH_SUFFIXES "debug/bin" REQUIRED NO_DEFAULT_PATH)
243-
find_file(Little_CMS_DLL_DEBUG NAMES "lcms2.dll"
244-
PATHS "${DEPS_DIR}" PATH_SUFFIXES "debug/bin" REQUIRED NO_DEFAULT_PATH)
245-
find_file(Highway_DLL_DEBUG NAMES "hwy.dll"
246-
PATHS "${DEPS_DIR}" PATH_SUFFIXES "debug/bin" REQUIRED NO_DEFAULT_PATH)
247-
248-
# Brotli
249-
find_file(brotlicommon_DLL_DEBUG NAMES "brotlicommon.dll"
250-
PATHS "${DEPS_DIR}" PATH_SUFFIXES "debug/bin" REQUIRED NO_DEFAULT_PATH)
251-
find_file(brotlidec_DLL_DEBUG NAMES "brotlidec.dll"
252-
PATHS "${DEPS_DIR}" PATH_SUFFIXES "debug/bin" REQUIRED NO_DEFAULT_PATH)
253-
find_file(brotlienc_DLL_DEBUG NAMES "brotlienc.dll"
254-
PATHS "${DEPS_DIR}" PATH_SUFFIXES "debug/bin" REQUIRED NO_DEFAULT_PATH)
255-
256232
install(FILES
257233
${LuaJIT_DLL_DEBUG}
258234
${ZLIB_DLL_DEBUG}
259-
${JPEG_XL_DLL_DEBUG}
260-
${JPEG_XL_CMS_DLL_DEBUG}
261-
${JPEG_XL_THREADS_DLL_DEBUG}
262-
${Little_CMS_DLL_DEBUG}
263-
${Highway_DLL_DEBUG}
264-
${brotlicommon_DLL_DEBUG}
265-
${brotlidec_DLL_DEBUG}
266-
${brotlienc_DLL_DEBUG}
267235
DESTINATION "."
268236
CONFIGURATIONS Debug
269237
)
@@ -274,37 +242,9 @@ if (WIN32)
274242
find_file(ZLIB_DLL_RELEASE NAMES "zlib1.dll"
275243
PATHS "${DEPS_DIR}" PATH_SUFFIXES "bin" REQUIRED NO_DEFAULT_PATH)
276244

277-
# JPEG XL
278-
find_file(JPEG_XL_DLL_RELEASE NAMES "jxl.dll"
279-
PATHS "${DEPS_DIR}" PATH_SUFFIXES "bin" REQUIRED NO_DEFAULT_PATH)
280-
find_file(JPEG_XL_CMS_DLL_RELEASE NAMES "jxl_cms.dll"
281-
PATHS "${DEPS_DIR}" PATH_SUFFIXES "bin" REQUIRED NO_DEFAULT_PATH)
282-
find_file(JPEG_XL_THREADS_DLL_RELEASE NAMES "jxl_threads.dll"
283-
PATHS "${DEPS_DIR}" PATH_SUFFIXES "bin" REQUIRED NO_DEFAULT_PATH)
284-
find_file(Little_CMS_DLL_RELEASE NAMES "lcms2.dll"
285-
PATHS "${DEPS_DIR}" PATH_SUFFIXES "bin" REQUIRED NO_DEFAULT_PATH)
286-
find_file(Highway_DLL_RELEASE NAMES "hwy.dll"
287-
PATHS "${DEPS_DIR}" PATH_SUFFIXES "bin" REQUIRED NO_DEFAULT_PATH)
288-
289-
# Brotli
290-
find_file(brotlicommon_DLL_RELEASE NAMES "brotlicommon.dll"
291-
PATHS "${DEPS_DIR}" PATH_SUFFIXES "bin" REQUIRED NO_DEFAULT_PATH)
292-
find_file(brotlidec_DLL_RELEASE NAMES "brotlidec.dll"
293-
PATHS "${DEPS_DIR}" PATH_SUFFIXES "bin" REQUIRED NO_DEFAULT_PATH)
294-
find_file(brotlienc_DLL_RELEASE NAMES "brotlienc.dll"
295-
PATHS "${DEPS_DIR}" PATH_SUFFIXES "bin" REQUIRED NO_DEFAULT_PATH)
296-
297245
install(FILES
298246
${LuaJIT_DLL_RELEASE}
299247
${ZLIB_DLL_RELEASE}
300-
${JPEG_XL_DLL_RELEASE}
301-
${JPEG_XL_CMS_DLL_RELEASE}
302-
${JPEG_XL_THREADS_DLL_RELEASE}
303-
${Little_CMS_DLL_RELEASE}
304-
${Highway_DLL_RELEASE}
305-
${brotlicommon_DLL_RELEASE}
306-
${brotlidec_DLL_RELEASE}
307-
${brotlienc_DLL_RELEASE}
308248
DESTINATION "."
309249
CONFIGURATIONS Release MinSizeRel RelWithDebInfo
310250
)

engine/core/core_image.cpp

Lines changed: 3 additions & 97 deletions
Original file line numberDiff line numberDiff line change
@@ -23,10 +23,6 @@
2323
#include <thread>
2424
#include <vector>
2525

26-
#include <jxl/decode.h>
27-
#include <jxl/decode_cxx.h>
28-
#include <jxl/resizable_parallel_runner_cxx.h>
29-
3026
#include <gli/gli.hpp>
3127
#include <gsl/span>
3228

@@ -113,8 +109,8 @@ image_c* image_c::LoaderForFile(IConsole* conHnd, const char* fileName)
113109
return new dds_c(conHnd);
114110

115111
// Attempt to detect image file type from first 12 bytes of file
116-
byte dat[12];
117-
if (in.Read(dat, 12)) {
112+
byte dat[4];
113+
if (in.Read(dat, 4)) {
118114
conHnd->Warning("'%s': cannot read image file (file is corrupt?)", fileName);
119115
return NULL;
120116
}
@@ -127,9 +123,6 @@ image_c* image_c::LoaderForFile(IConsole* conHnd, const char* fileName)
127123
} else if (*(dword*)dat == 0x38464947) {
128124
// G I F 8
129125
return new gif_c(conHnd);
130-
} else if (auto sig = JxlSignatureCheck(dat, 12); sig == JXL_SIG_CODESTREAM || sig == JXL_SIG_CONTAINER) {
131-
// JPEG XL
132-
return new jpeg_xl_c(conHnd);
133126
} else if (*(dword*)dat == 0x20534444) {
134127
// D D S 0x20
135128
return new dds_c(conHnd);
@@ -454,96 +447,9 @@ bool gif_c::Save(const char* fileName)
454447
}
455448

456449
// =========
457-
// JPEG XL Image
450+
// DDS Image
458451
// =========
459452

460-
const std::thread::id g_mainThreadId = std::this_thread::get_id();
461-
462-
bool jpeg_xl_c::Load(const char* fileName, std::optional<size_callback_t> sizeCallback)
463-
{
464-
// Open file
465-
fileInputStream_c in;
466-
if (in.FileOpen(fileName, true))
467-
return true;
468-
469-
std::vector<byte> fileData(in.GetLen());
470-
if (in.Read(fileData.data(), fileData.size()))
471-
return true;
472-
473-
JxlResizableParallelRunnerPtr runner{};
474-
if (g_mainThreadId == std::this_thread::get_id())
475-
runner = JxlResizableParallelRunnerMake(nullptr);
476-
477-
auto dec = JxlDecoderMake(nullptr);
478-
if (JXL_DEC_SUCCESS != JxlDecoderSubscribeEvents(dec.get(), JXL_DEC_BASIC_INFO | JXL_DEC_FULL_IMAGE))
479-
return true;
480-
481-
if (JXL_DEC_SUCCESS != JxlDecoderSetParallelRunner(dec.get(), runner ? JxlResizableParallelRunner : nullptr, runner.get()))
482-
return true;
483-
484-
JxlBasicInfo info{};
485-
JxlPixelFormat format = { 4, JXL_TYPE_UINT8, JXL_NATIVE_ENDIAN, 0 };
486-
487-
JxlDecoderSetInput(dec.get(), fileData.data(), fileData.size());
488-
JxlDecoderCloseInput(dec.get());
489-
490-
std::vector<byte> datBuf;
491-
int width{};
492-
int height{};
493-
int comp{};
494-
495-
while (true) {
496-
JxlDecoderStatus status = JxlDecoderProcessInput(dec.get());
497-
498-
switch (status) {
499-
case JXL_DEC_ERROR:
500-
case JXL_DEC_NEED_MORE_INPUT:
501-
return true;
502-
503-
case JXL_DEC_BASIC_INFO: {
504-
if (JXL_DEC_SUCCESS != JxlDecoderGetBasicInfo(dec.get(), &info))
505-
return true;
506-
width = info.xsize;
507-
height = info.ysize;
508-
if (sizeCallback)
509-
(*sizeCallback)(width, height);
510-
comp = info.num_color_channels + !!info.alpha_bits;
511-
if (comp != 1 && comp != 3 && comp != 4)
512-
return true;
513-
514-
if (runner)
515-
JxlResizableParallelRunnerSetThreads(runner.get(), JxlResizableParallelRunnerSuggestThreads(width, height));
516-
517-
format.num_channels = comp;
518-
} break;
519-
520-
case JXL_DEC_NEED_IMAGE_OUT_BUFFER: {
521-
size_t bufferSize{};
522-
if (JXL_DEC_SUCCESS != JxlDecoderImageOutBufferSize(dec.get(), &format, &bufferSize))
523-
return true;
524-
assert(bufferSize == width * height * comp);
525-
datBuf.resize(bufferSize);
526-
if (JXL_DEC_SUCCESS != JxlDecoderSetImageOutBuffer(dec.get(), &format, datBuf.data(), bufferSize))
527-
return true;
528-
} break;
529-
530-
case JXL_DEC_SUCCESS:
531-
case JXL_DEC_FULL_IMAGE: {
532-
// We don't care about animations, consider loading completed when a full image has obtained.
533-
return !CopyRaw(g_imageTypeFromComp[comp], width, height, datBuf.data());
534-
} break;
535-
536-
default:
537-
continue;
538-
}
539-
}
540-
}
541-
bool jpeg_xl_c::Save(const char* fileName)
542-
{
543-
// Yeah, nah.
544-
return false;
545-
}
546-
547453
bool dds_c::Load(const char* fileName, std::optional<size_callback_t> sizeCallback)
548454
{
549455
auto p = std::filesystem::u8path(fileName);

engine/core/core_image.h

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -89,14 +89,6 @@ class png_c : public image_c {
8989
bool Save(const char* fileName) override;
9090
};
9191

92-
// JPEG XL Image
93-
class jpeg_xl_c : public image_c {
94-
public:
95-
jpeg_xl_c(IConsole* conHnd) : image_c(conHnd) {}
96-
bool Load(const char* fileName, std::optional<size_callback_t> sizeCallback = {}) override;
97-
bool Save(const char* fileName) override;
98-
};
99-
10092
// GIF Image
10193
class gif_c : public image_c {
10294
public:

vcpkg.json

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@
77
"fmt",
88
"glfw3",
99
"gli",
10-
"libjxl",
1110
"luajit",
1211
"ms-gsl",
1312
"pkgconf",

0 commit comments

Comments
 (0)