Procházet zdrojové kódy

core: add from_rgb()

Daniele Bartolini před 1 rokem
rodič
revize
afabea1f75
2 změnil soubory, kde provedl 18 přidání a 0 odebrání
  1. 11 0
      src/core/math/color4.inl
  2. 7 0
      src/core/unit_tests.cpp

+ 11 - 0
src/core/math/color4.inl

@@ -34,6 +34,17 @@ inline Color4 from_rgb(u8 r, u8 g, u8 b)
 	return c;
 }
 
+/// Returns a new color from packed RGB integer.
+inline Color4 from_rgb(u32 rgb)
+{
+	Color4 c;
+	c.x = 1.0f/255.0f * ((rgb & 0xff0000) >> 16);
+	c.y = 1.0f/255.0f * ((rgb & 0x00ff00) >> 8);
+	c.z = 1.0f/255.0f * ((rgb & 0x0000ff) >> 0);
+	c.w = 1.0f;
+	return c;
+}
+
 /// Returns a new color from individual elements.
 inline Color4 from_rgba(u8 r, u8 g, u8 b, u8 a)
 {

+ 7 - 0
src/core/unit_tests.cpp

@@ -511,6 +511,13 @@ static void test_color4()
 		ENSURE(fequal(a.z, 0.04705f, 0.00001f));
 		ENSURE(fequal(a.w, 0.38431f, 0.00001f));
 	}
+	{
+		const Color4 a = from_rgb(0x3fe70c);
+		ENSURE(fequal(a.x, 0.24705f, 0.00001f));
+		ENSURE(fequal(a.y, 0.90588f, 0.00001f));
+		ENSURE(fequal(a.z, 0.04705f, 0.00001f));
+		ENSURE(fequal(a.w, 1.0f, 0.00001f));
+	}
 	{
 		const Color4 a = from_rgba(63, 231, 12, 98);