- // Tiene el cuarto bit en 1.
- if (color & (1 << 3)) {
- // Si tiene alguno de los bits menos significativos (tiene pigmento).
- if (color & 7) {
- c->pixel =
- // Desplazo los bits del color de 24 bits 1 lugar a la
- // izquierda (si era, por ejemplo 0111 1111, quedaría
- // 1111 1110).
- (c->pixel << 1)
- // Al resultado le aplico una máscara para que quede 'prendido'
- // el bit más significativo de los colores activados
- // anteriormente (y de esta manera darles el doble de "luz").
- // Por ejemplo: 1111 1110 & 1000 0000 = 1000 0000.
- & 0x808080
- // Finalmente, prendo los bits resultantes en el color de 24 bits.
- // Por ejemplo: 1000 0000 | 0111 1111 = 1111 1111.
- | c->pixel;
- // Si no tiene pigmento no lo dejo negro porque negro ya es cuando están
- // todos los bits apagados.
- } else {
- // Asigno un gris claro, combinación que no se da de otra manera.
- c->pixel = 0xF0F0F0;
- }
+ // Tiene el cuarto bit en 1 y todo el resto en 0, le asigno un gris claro
+ // porque negro ya es cuando son todos 0.
+ if (color == (1 << 3)) {
+ c->red = c->green = c->blue = 0xD000;