tty: vt: make rgb_from_256() slighly more comprehensible
authorJiri Slaby (SUSE) <jirislaby@kernel.org>
Fri, 2 Feb 2024 06:55:47 +0000 (07:55 +0100)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Tue, 6 Feb 2024 14:37:37 +0000 (14:37 +0000)
* make the parameter unsigned, as it is expected to be unsigned,
* make the computation easier to follow -- step-by-step, and
* don't use 85 / 2 which is only a reduced form of 255 / 6 (by a factor
  3). Unlike the former, the latter can be understood.

Signed-off-by: "Jiri Slaby (SUSE)" <jirislaby@kernel.org>
Link: https://lore.kernel.org/r/20240202065608.14019-2-jirislaby@kernel.org
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/tty/vt/vt.c

index 65cd40cac96bbc6f23e8fd0c7b0199e65668803d..7d42f148559ae40d99f226fb5267f60a1e8b1844 100644 (file)
@@ -1588,7 +1588,7 @@ static void default_attr(struct vc_data *vc)
 
 struct rgb { u8 r; u8 g; u8 b; };
 
-static void rgb_from_256(int i, struct rgb *c)
+static void rgb_from_256(unsigned int i, struct rgb *c)
 {
        if (i < 8) {            /* Standard colours. */
                c->r = i&1 ? 0xaa : 0x00;
@@ -1599,9 +1599,12 @@ static void rgb_from_256(int i, struct rgb *c)
                c->g = i&2 ? 0xff : 0x55;
                c->b = i&4 ? 0xff : 0x55;
        } else if (i < 232) {   /* 6x6x6 colour cube. */
-               c->r = (i - 16) / 36 * 85 / 2;
-               c->g = (i - 16) / 6 % 6 * 85 / 2;
-               c->b = (i - 16) % 6 * 85 / 2;
+               i -= 16;
+               c->b = i % 6 * 255 / 6;
+               i /= 6;
+               c->g = i % 6 * 255 / 6;
+               i /= 6;
+               c->r = i     * 255 / 6;
        } else                  /* Grayscale ramp. */
                c->r = c->g = c->b = i * 10 - 2312;
 }