diff --git a/Userland/Libraries/LibGfx/ICCProfile.cpp b/Userland/Libraries/LibGfx/ICCProfile.cpp index cab11172ea..a8c6b40fb7 100644 --- a/Userland/Libraries/LibGfx/ICCProfile.cpp +++ b/Userland/Libraries/LibGfx/ICCProfile.cpp @@ -243,9 +243,13 @@ ErrorOr parse_file_signature(ICCHeader const& header) return {}; } -ErrorOr parse_primary_platform(ICCHeader const& header) +ErrorOr> parse_primary_platform(ICCHeader const& header) { // ICC v4, 7.2.10 Primary platform field + // "If there is no primary platform identified, this field shall be set to zero (00000000h)." + if (header.primary_platform == PrimaryPlatform { 0 }) + return OptionalNone {}; + switch (header.primary_platform) { case PrimaryPlatform::Apple: case PrimaryPlatform::Microsoft: diff --git a/Userland/Libraries/LibGfx/ICCProfile.h b/Userland/Libraries/LibGfx/ICCProfile.h index 10587016a5..0198cc4444 100644 --- a/Userland/Libraries/LibGfx/ICCProfile.h +++ b/Userland/Libraries/LibGfx/ICCProfile.h @@ -572,7 +572,7 @@ public: u32 on_disk_size() const { return m_on_disk_size; } time_t creation_timestamp() const { return m_creation_timestamp; } - PrimaryPlatform primary_platform() const { return m_primary_platform; } + Optional primary_platform() const { return m_primary_platform; } Flags flags() const { return m_flags; } Optional device_manufacturer() const { return m_device_manufacturer; } Optional device_model() const { return m_device_model; } @@ -609,7 +609,7 @@ private: ColorSpace m_data_color_space {}; ColorSpace m_connection_space {}; time_t m_creation_timestamp { 0 }; - PrimaryPlatform m_primary_platform {}; + Optional m_primary_platform {}; Flags m_flags; Optional m_device_manufacturer; Optional m_device_model; diff --git a/Userland/Utilities/icc.cpp b/Userland/Utilities/icc.cpp index e20ab1bf52..b617d8b07b 100644 --- a/Userland/Utilities/icc.cpp +++ b/Userland/Utilities/icc.cpp @@ -44,7 +44,7 @@ ErrorOr serenity_main(Main::Arguments arguments) outln(" data color space: {}", Gfx::ICC::data_color_space_name(profile->data_color_space())); outln(" connection space: {}", Gfx::ICC::profile_connection_space_name(profile->connection_space())); outln("creation date and time: {}", Core::DateTime::from_timestamp(profile->creation_timestamp())); - outln(" primary platform: {}", Gfx::ICC::primary_platform_name(profile->primary_platform())); + out_optional(" primary platform", profile->primary_platform().map([](auto platform) { return primary_platform_name(platform); })); auto flags = profile->flags(); outln(" flags: 0x{:08x}", flags.bits());