+GdkColor* Figura::traducir_color(GdkColor* c) const {
+ // Elimino el color anterior.
+ c->pixel = 0;
+ c->red = 0;
+ c->green = 0;
+ c->blue = 0;
+ // Tiene el primer bit en 1 tiene pigmento azul.
+ if (color & 1) {
+ // Si tiene el cuarto bit, es bien saturado.
+ c->blue = (color & (1 << 3)) ? 0xFFFF : 0x7FFF;
+ }
+ // Tiene el segundo bit en 1 tiene pigmento verde.
+ if (color & (1 << 1)) {
+ // Si tiene el cuarto bit, es bien saturado.
+ c->green = (color & (1 << 3)) ? 0xFFFF : 0x7FFF;
+ }
+ // Tiene el tercer bit en 1 tiene pigmento rojo.
+ if (color & (1 << 2)) {
+ // Si tiene el cuarto bit, es bien saturado.
+ c->red = (color & (1 << 3)) ? 0xFFFF : 0x7FFF;
+ }
+ // 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;
+ }
+#ifdef DEBUG
+ std::cerr << "En Figura::traducir_color: 0x" << std::hex << c->red
+ << ", 0x" << std::hex << c->green << ", 0x" << std::hex << c->blue
+ << "." << std::endl;
+#endif
+ return c;
+}
+