retrofit
authorKevin Lamonte <kevin.lamonte@gmail.com>
Tue, 19 Nov 2019 18:22:45 +0000 (12:22 -0600)
committerKevin Lamonte <kevin.lamonte@gmail.com>
Tue, 19 Nov 2019 18:22:45 +0000 (12:22 -0600)
src/jexer/TTerminalWindow.java
src/jexer/backend/SwingTerminal.java
src/jexer/tterminal/ECMA48.java

index aa555b0d92832da6639d586b12780933a8de8fcc..a22625e8e95f5287c8ba3d727ded3e3633336bb8 100644 (file)
@@ -443,4 +443,16 @@ public class TTerminalWindow extends TScrollableWindow {
         return terminal.waitForOutput(millis);
     }
 
+    /**
+     * Get the exit value for the emulator.
+     *
+     * @return exit value
+     */
+    public int getExitValue() {
+        if (terminal == null) {
+            return -1;
+        }
+        return terminal.getExitValue();
+    }
+
 }
index 37f99d56c2371f489afebea9bb98e68d70237739..aa49467372f143a785166e46cc15a7899f81a9c6 100644 (file)
@@ -579,7 +579,19 @@ public class SwingTerminal extends LogicalScreen
         ) {
             do {
                 do {
-                    clearPhysical();
+                    /*
+                     * TODO:
+                     *
+                     * Under Windows and Mac (I think?), there was a problem
+                     * with the screen not updating on the initial load.
+                     * Adding clearPhysical() below "fixed" it, but at a
+                     * horrible performance penalty on Linux which I am no
+                     * longer willing to accept.
+                     *
+                     * Fix this in the "right" way for Windows/OSX such that
+                     * the entire screen does not require a full redraw.
+                     */
+                    // clearPhysical();
                     drawToSwing();
                 } while (swing.getBufferStrategy().contentsRestored());
 
index 33a35ca96f61c8e70631a5d4c6a72407aae5e955..537b2e0a4a3ba25238ee5d935f393aa07fcba24c 100644 (file)
@@ -1335,7 +1335,7 @@ public class ECMA48 implements Runnable {
             colors88.add(0);
         }
 
-        // Set default system colors.
+        // Set default system colors.  These match DOS colors.
         colors88.set(0, 0x00000000);
         colors88.set(1, 0x00a80000);
         colors88.set(2, 0x0000a800);
@@ -1353,6 +1353,249 @@ public class ECMA48 implements Runnable {
         colors88.set(13, 0x00fc54fc);
         colors88.set(14, 0x0054fcfc);
         colors88.set(15, 0x00fcfcfc);
+
+        // These match xterm's default colors from 256colres.h.
+        colors88.set(16, 0x000000);
+        colors88.set(17, 0x00005f);
+        colors88.set(18, 0x000087);
+        colors88.set(19, 0x0000af);
+        colors88.set(20, 0x0000d7);
+        colors88.set(21, 0x0000ff);
+        colors88.set(22, 0x005f00);
+        colors88.set(23, 0x005f5f);
+        colors88.set(24, 0x005f87);
+        colors88.set(25, 0x005faf);
+        colors88.set(26, 0x005fd7);
+        colors88.set(27, 0x005fff);
+        colors88.set(28, 0x008700);
+        colors88.set(29, 0x00875f);
+        colors88.set(30, 0x008787);
+        colors88.set(31, 0x0087af);
+        colors88.set(32, 0x0087d7);
+        colors88.set(33, 0x0087ff);
+        colors88.set(34, 0x00af00);
+        colors88.set(35, 0x00af5f);
+        colors88.set(36, 0x00af87);
+        colors88.set(37, 0x00afaf);
+        colors88.set(38, 0x00afd7);
+        colors88.set(39, 0x00afff);
+        colors88.set(40, 0x00d700);
+        colors88.set(41, 0x00d75f);
+        colors88.set(42, 0x00d787);
+        colors88.set(43, 0x00d7af);
+        colors88.set(44, 0x00d7d7);
+        colors88.set(45, 0x00d7ff);
+        colors88.set(46, 0x00ff00);
+        colors88.set(47, 0x00ff5f);
+        colors88.set(48, 0x00ff87);
+        colors88.set(49, 0x00ffaf);
+        colors88.set(50, 0x00ffd7);
+        colors88.set(51, 0x00ffff);
+        colors88.set(52, 0x5f0000);
+        colors88.set(53, 0x5f005f);
+        colors88.set(54, 0x5f0087);
+        colors88.set(55, 0x5f00af);
+        colors88.set(56, 0x5f00d7);
+        colors88.set(57, 0x5f00ff);
+        colors88.set(58, 0x5f5f00);
+        colors88.set(59, 0x5f5f5f);
+        colors88.set(60, 0x5f5f87);
+        colors88.set(61, 0x5f5faf);
+        colors88.set(62, 0x5f5fd7);
+        colors88.set(63, 0x5f5fff);
+        colors88.set(64, 0x5f8700);
+        colors88.set(65, 0x5f875f);
+        colors88.set(66, 0x5f8787);
+        colors88.set(67, 0x5f87af);
+        colors88.set(68, 0x5f87d7);
+        colors88.set(69, 0x5f87ff);
+        colors88.set(70, 0x5faf00);
+        colors88.set(71, 0x5faf5f);
+        colors88.set(72, 0x5faf87);
+        colors88.set(73, 0x5fafaf);
+        colors88.set(74, 0x5fafd7);
+        colors88.set(75, 0x5fafff);
+        colors88.set(76, 0x5fd700);
+        colors88.set(77, 0x5fd75f);
+        colors88.set(78, 0x5fd787);
+        colors88.set(79, 0x5fd7af);
+        colors88.set(80, 0x5fd7d7);
+        colors88.set(81, 0x5fd7ff);
+        colors88.set(82, 0x5fff00);
+        colors88.set(83, 0x5fff5f);
+        colors88.set(84, 0x5fff87);
+        colors88.set(85, 0x5fffaf);
+        colors88.set(86, 0x5fffd7);
+        colors88.set(87, 0x5fffff);
+        colors88.set(88, 0x870000);
+        colors88.set(89, 0x87005f);
+        colors88.set(90, 0x870087);
+        colors88.set(91, 0x8700af);
+        colors88.set(92, 0x8700d7);
+        colors88.set(93, 0x8700ff);
+        colors88.set(94, 0x875f00);
+        colors88.set(95, 0x875f5f);
+        colors88.set(96, 0x875f87);
+        colors88.set(97, 0x875faf);
+        colors88.set(98, 0x875fd7);
+        colors88.set(99, 0x875fff);
+        colors88.set(100, 0x878700);
+        colors88.set(101, 0x87875f);
+        colors88.set(102, 0x878787);
+        colors88.set(103, 0x8787af);
+        colors88.set(104, 0x8787d7);
+        colors88.set(105, 0x8787ff);
+        colors88.set(106, 0x87af00);
+        colors88.set(107, 0x87af5f);
+        colors88.set(108, 0x87af87);
+        colors88.set(109, 0x87afaf);
+        colors88.set(110, 0x87afd7);
+        colors88.set(111, 0x87afff);
+        colors88.set(112, 0x87d700);
+        colors88.set(113, 0x87d75f);
+        colors88.set(114, 0x87d787);
+        colors88.set(115, 0x87d7af);
+        colors88.set(116, 0x87d7d7);
+        colors88.set(117, 0x87d7ff);
+        colors88.set(118, 0x87ff00);
+        colors88.set(119, 0x87ff5f);
+        colors88.set(120, 0x87ff87);
+        colors88.set(121, 0x87ffaf);
+        colors88.set(122, 0x87ffd7);
+        colors88.set(123, 0x87ffff);
+        colors88.set(124, 0xaf0000);
+        colors88.set(125, 0xaf005f);
+        colors88.set(126, 0xaf0087);
+        colors88.set(127, 0xaf00af);
+        colors88.set(128, 0xaf00d7);
+        colors88.set(129, 0xaf00ff);
+        colors88.set(130, 0xaf5f00);
+        colors88.set(131, 0xaf5f5f);
+        colors88.set(132, 0xaf5f87);
+        colors88.set(133, 0xaf5faf);
+        colors88.set(134, 0xaf5fd7);
+        colors88.set(135, 0xaf5fff);
+        colors88.set(136, 0xaf8700);
+        colors88.set(137, 0xaf875f);
+        colors88.set(138, 0xaf8787);
+        colors88.set(139, 0xaf87af);
+        colors88.set(140, 0xaf87d7);
+        colors88.set(141, 0xaf87ff);
+        colors88.set(142, 0xafaf00);
+        colors88.set(143, 0xafaf5f);
+        colors88.set(144, 0xafaf87);
+        colors88.set(145, 0xafafaf);
+        colors88.set(146, 0xafafd7);
+        colors88.set(147, 0xafafff);
+        colors88.set(148, 0xafd700);
+        colors88.set(149, 0xafd75f);
+        colors88.set(150, 0xafd787);
+        colors88.set(151, 0xafd7af);
+        colors88.set(152, 0xafd7d7);
+        colors88.set(153, 0xafd7ff);
+        colors88.set(154, 0xafff00);
+        colors88.set(155, 0xafff5f);
+        colors88.set(156, 0xafff87);
+        colors88.set(157, 0xafffaf);
+        colors88.set(158, 0xafffd7);
+        colors88.set(159, 0xafffff);
+        colors88.set(160, 0xd70000);
+        colors88.set(161, 0xd7005f);
+        colors88.set(162, 0xd70087);
+        colors88.set(163, 0xd700af);
+        colors88.set(164, 0xd700d7);
+        colors88.set(165, 0xd700ff);
+        colors88.set(166, 0xd75f00);
+        colors88.set(167, 0xd75f5f);
+        colors88.set(168, 0xd75f87);
+        colors88.set(169, 0xd75faf);
+        colors88.set(170, 0xd75fd7);
+        colors88.set(171, 0xd75fff);
+        colors88.set(172, 0xd78700);
+        colors88.set(173, 0xd7875f);
+        colors88.set(174, 0xd78787);
+        colors88.set(175, 0xd787af);
+        colors88.set(176, 0xd787d7);
+        colors88.set(177, 0xd787ff);
+        colors88.set(178, 0xd7af00);
+        colors88.set(179, 0xd7af5f);
+        colors88.set(180, 0xd7af87);
+        colors88.set(181, 0xd7afaf);
+        colors88.set(182, 0xd7afd7);
+        colors88.set(183, 0xd7afff);
+        colors88.set(184, 0xd7d700);
+        colors88.set(185, 0xd7d75f);
+        colors88.set(186, 0xd7d787);
+        colors88.set(187, 0xd7d7af);
+        colors88.set(188, 0xd7d7d7);
+        colors88.set(189, 0xd7d7ff);
+        colors88.set(190, 0xd7ff00);
+        colors88.set(191, 0xd7ff5f);
+        colors88.set(192, 0xd7ff87);
+        colors88.set(193, 0xd7ffaf);
+        colors88.set(194, 0xd7ffd7);
+        colors88.set(195, 0xd7ffff);
+        colors88.set(196, 0xff0000);
+        colors88.set(197, 0xff005f);
+        colors88.set(198, 0xff0087);
+        colors88.set(199, 0xff00af);
+        colors88.set(200, 0xff00d7);
+        colors88.set(201, 0xff00ff);
+        colors88.set(202, 0xff5f00);
+        colors88.set(203, 0xff5f5f);
+        colors88.set(204, 0xff5f87);
+        colors88.set(205, 0xff5faf);
+        colors88.set(206, 0xff5fd7);
+        colors88.set(207, 0xff5fff);
+        colors88.set(208, 0xff8700);
+        colors88.set(209, 0xff875f);
+        colors88.set(210, 0xff8787);
+        colors88.set(211, 0xff87af);
+        colors88.set(212, 0xff87d7);
+        colors88.set(213, 0xff87ff);
+        colors88.set(214, 0xffaf00);
+        colors88.set(215, 0xffaf5f);
+        colors88.set(216, 0xffaf87);
+        colors88.set(217, 0xffafaf);
+        colors88.set(218, 0xffafd7);
+        colors88.set(219, 0xffafff);
+        colors88.set(220, 0xffd700);
+        colors88.set(221, 0xffd75f);
+        colors88.set(222, 0xffd787);
+        colors88.set(223, 0xffd7af);
+        colors88.set(224, 0xffd7d7);
+        colors88.set(225, 0xffd7ff);
+        colors88.set(226, 0xffff00);
+        colors88.set(227, 0xffff5f);
+        colors88.set(228, 0xffff87);
+        colors88.set(229, 0xffffaf);
+        colors88.set(230, 0xffffd7);
+        colors88.set(231, 0xffffff);
+        colors88.set(232, 0x080808);
+        colors88.set(233, 0x121212);
+        colors88.set(234, 0x1c1c1c);
+        colors88.set(235, 0x262626);
+        colors88.set(236, 0x303030);
+        colors88.set(237, 0x3a3a3a);
+        colors88.set(238, 0x444444);
+        colors88.set(239, 0x4e4e4e);
+        colors88.set(240, 0x585858);
+        colors88.set(241, 0x626262);
+        colors88.set(242, 0x6c6c6c);
+        colors88.set(243, 0x767676);
+        colors88.set(244, 0x808080);
+        colors88.set(245, 0x8a8a8a);
+        colors88.set(246, 0x949494);
+        colors88.set(247, 0x9e9e9e);
+        colors88.set(248, 0xa8a8a8);
+        colors88.set(249, 0xb2b2b2);
+        colors88.set(250, 0xbcbcbc);
+        colors88.set(251, 0xc6c6c6);
+        colors88.set(252, 0xd0d0d0);
+        colors88.set(253, 0xdadada);
+        colors88.set(254, 0xe4e4e4);
+        colors88.set(255, 0xeeeeee);
+
     }
 
     /**
@@ -4040,14 +4283,14 @@ public class ECMA48 implements Runnable {
                      * RGB color mode.
                      */
                     rgbColor = true;
-                    break;
+                    continue;
 
                 case 5:
                     /*
                      * Indexed color mode.
                      */
                     idx88Color = true;
-                    break;
+                    continue;
 
                 default:
                     /*