black-and-white palette support
authorKevin Lamonte <kevin.lamonte@gmail.com>
Tue, 26 Feb 2019 02:26:58 +0000 (20:26 -0600)
committerKevin Lamonte <kevin.lamonte@gmail.com>
Tue, 26 Feb 2019 02:26:58 +0000 (20:26 -0600)
src/jexer/backend/ECMA48Terminal.java

index 518024c5d0099c07d22f5489cb7a69c1ba7a7106..f0b3e3cc20d7d936368a528b75062a77db087114 100644 (file)
@@ -85,6 +85,8 @@ public class ECMA48Terminal extends LogicalScreen
      * 1024.
      */
     private static final int MAX_COLOR_REGISTERS = 1024;
+    // Black-and-white is possible too.
+    // private static final int MAX_COLOR_REGISTERS = 2;
 
     // ------------------------------------------------------------------------
     // Variables --------------------------------------------------------------
@@ -342,6 +344,16 @@ public class ECMA48Terminal extends LogicalScreen
             int green = (color >>>  8) & 0xFF;
             int blue  =  color         & 0xFF;
 
+            if (MAX_COLOR_REGISTERS == 2) {
+                if (((red * red) + (green * green) + (blue * blue)) < 35568) {
+                    // Black
+                    return 0;
+                }
+                // White
+                return 1;
+            }
+
+
             rgbToHsl(red, green, blue, hsl);
             int hue = hsl[0];
             int sat = hsl[1];
@@ -662,6 +674,14 @@ public class ECMA48Terminal extends LogicalScreen
             // map the BufferedImage colors to their nearest neighbor in RGB
             // space.
 
+            if (MAX_COLOR_REGISTERS == 2) {
+                rgbColors.add(0);
+                rgbColors.add(0xFFFFFF);
+                rgbSortedIndex[0] = 0;
+                rgbSortedIndex[1] = 1;
+                return;
+            }
+
             // We build a palette using the Hue-Saturation-Luminence model,
             // with 5+ bits for Hue, 2+ bits for Saturation, and 1+ bit for
             // Luminance.  We convert these colors to 24-bit RGB, sort them