Procházet zdrojové kódy

LibGfx: Move CIELAB to its own file

Nico Weber před 2 roky
rodič
revize
adec1abf81

+ 1 - 1
Tests/LibGfx/TestICCProfile.cpp

@@ -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 },

+ 18 - 0
Userland/Libraries/LibGfx/CIELAB.h

@@ -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*
+};
+
+}

+ 2 - 1
Userland/Libraries/LibGfx/ICC/Profile.cpp

@@ -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)

+ 1 - 5
Userland/Libraries/LibGfx/ICC/Profile.h

@@ -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.