LibGfx: Move CIELAB to its own file

This commit is contained in:
Nico Weber 2023-04-29 18:22:51 -04:00 committed by Andreas Kling
parent 22202715fc
commit adec1abf81
4 changed files with 22 additions and 7 deletions

View file

@ -175,7 +175,7 @@ TEST_CASE(to_lab)
//
// new Color("srgb", [1, 1, 1]).lab.toString();
Gfx::ICC::Profile::CIELAB expected[] = {
Gfx::CIELAB expected[] = {
{ 0, 0, 0 },
{ 54.29054294696968, 80.80492033462421, 69.89098825896275 },
{ 87.81853633115202, -79.27108223854806, 80.99459785152247 },

View file

@ -0,0 +1,18 @@
/*
* Copyright (c) 2023, Nico Weber <thakis@chromium.org>
*
* SPDX-License-Identifier: BSD-2-Clause
*/
#pragma once
namespace Gfx {
// https://en.wikipedia.org/wiki/CIELAB_color_space
struct CIELAB {
float L; // L*
float a; // a*
float b; // b*
};
}

View file

@ -5,6 +5,7 @@
*/
#include <AK/Endian.h>
#include <LibGfx/CIELAB.h>
#include <LibGfx/ICC/BinaryFormat.h>
#include <LibGfx/ICC/Profile.h>
#include <LibGfx/ICC/Tags.h>
@ -1470,7 +1471,7 @@ ErrorOr<FloatVector3> Profile::to_pcs(ReadonlyBytes color)
VERIFY_NOT_REACHED();
}
ErrorOr<Profile::CIELAB> Profile::to_lab(ReadonlyBytes color)
ErrorOr<CIELAB> Profile::to_lab(ReadonlyBytes color)
{
auto pcs = TRY(to_pcs(color));
if (connection_space() == ColorSpace::PCSLAB)

View file

@ -14,6 +14,7 @@
#include <AK/Span.h>
#include <AK/URL.h>
#include <LibCrypto/Hash/MD5.h>
#include <LibGfx/CIELAB.h>
#include <LibGfx/ICC/DistinctFourCC.h>
#include <LibGfx/ICC/TagTypes.h>
#include <LibGfx/Vector3.h>
@ -266,11 +267,6 @@ public:
// Call connection_space() to find out the space the result is in.
ErrorOr<FloatVector3> to_pcs(ReadonlyBytes);
struct CIELAB {
float L; // L*
float a; // a*
float b; // b*
};
ErrorOr<CIELAB> to_lab(ReadonlyBytes);
// Only call these if you know that this is an RGB matrix-based profile.