diff options
author | Nico Weber <thakis@chromium.org> | 2022-12-26 08:21:54 -0500 |
---|---|---|
committer | Andrew Kaster <andrewdkaster@gmail.com> | 2022-12-27 07:44:37 -0700 |
commit | 7f52f45e9d7704b684714201af138974adfcfcfe (patch) | |
tree | d962a80f9c38b7ee43705fc4b98c5ac81df67420 | |
parent | d8867f8077c9a71c51ca0493f83b2d88145169d3 (diff) | |
download | serenity-7f52f45e9d7704b684714201af138974adfcfcfe.zip |
LibGfx: Start adding a utility for handling ICC color profiles
For now, this dumps file version and device class.
https://github.com/saucecontrol/compact-icc-profiles has good
test inputs.
-rw-r--r-- | Meta/Lagom/CMakeLists.txt | 3 | ||||
-rw-r--r-- | Userland/Utilities/CMakeLists.txt | 1 | ||||
-rw-r--r-- | Userland/Utilities/icc.cpp | 27 |
3 files changed, 31 insertions, 0 deletions
diff --git a/Meta/Lagom/CMakeLists.txt b/Meta/Lagom/CMakeLists.txt index dbf2aefed2..3082f38d83 100644 --- a/Meta/Lagom/CMakeLists.txt +++ b/Meta/Lagom/CMakeLists.txt @@ -482,6 +482,9 @@ if (BUILD_LAGOM) target_link_libraries(headless-browser LibWeb LibWebSocket LibCrypto LibGemini LibHTTP LibJS LibGfx LibMain LibTLS LibIPC LibJS) endif() + add_executable(icc ../../Userland/Utilities/icc.cpp) + target_link_libraries(icc LibCore LibGfx LibMain) + add_executable(js ../../Userland/Utilities/js.cpp) target_link_libraries(js LibCrypto LibJS LibLine LibLocale LibMain LibTextCodec Threads::Threads) if (EMSCRIPTEN) diff --git a/Userland/Utilities/CMakeLists.txt b/Userland/Utilities/CMakeLists.txt index ee44b5ed78..52e67a629d 100644 --- a/Userland/Utilities/CMakeLists.txt +++ b/Userland/Utilities/CMakeLists.txt @@ -90,6 +90,7 @@ target_link_libraries(grep PRIVATE LibRegex) target_link_libraries(gunzip PRIVATE LibCompress) target_link_libraries(gzip PRIVATE LibCompress) target_link_libraries(headless-browser PRIVATE LibCrypto LibGemini LibGfx LibHTTP LibTLS LibWeb LibWebSocket LibIPC LibJS) +target_link_libraries(icc PRIVATE LibGfx) target_link_libraries(jail-attach PRIVATE LibCore LibMain) target_link_libraries(jail-create PRIVATE LibCore LibMain) target_link_libraries(js PRIVATE LibCrypto LibJS LibLine LibLocale LibTextCodec) diff --git a/Userland/Utilities/icc.cpp b/Userland/Utilities/icc.cpp new file mode 100644 index 0000000000..87239f834c --- /dev/null +++ b/Userland/Utilities/icc.cpp @@ -0,0 +1,27 @@ +/* + * Copyright (c) 2022, Nico Weber <thakis@chromium.org> + * + * SPDX-License-Identifier: BSD-2-Clause + */ + +#include <AK/StringView.h> +#include <LibCore/ArgsParser.h> +#include <LibCore/MappedFile.h> +#include <LibGfx/ICCProfile.h> + +ErrorOr<int> serenity_main(Main::Arguments arguments) +{ + Core::ArgsParser args_parser; + + static StringView icc_path; + args_parser.add_positional_argument(icc_path, "Path to ICC profile", "FILE"); + args_parser.parse(arguments); + + auto icc_file = TRY(Core::MappedFile::map(icc_path)); + auto profile = TRY(Gfx::ICC::Profile::try_load_from_externally_owned_memory(icc_file->bytes())); + + outln("version: {}", profile->version()); + outln("device class: {}", Gfx::ICC::device_class_name(profile->device_class())); + + return 0; +} |