[Fencommits] libvob: Add ANSI buffer - a class which is able to flush colored text to terminal.

Matti J. Katila majukati at cc.jyu.fi
Tue Jan 17 21:05:06 EET 2006


Tue Jan 17 20:31:56 EET 2006  Matti J. Katila <majukati at cc.jyu.fi>
  * Add ANSI buffer - a class which is able to flush colored text to terminal.

diff -rN -u libvob-old/org/nongnu/libvob/impl/terminal/ANSIBuffer.java libvob-new/org/nongnu/libvob/impl/terminal/ANSIBuffer.java
--- libvob-old/org/nongnu/libvob/impl/terminal/ANSIBuffer.java	1970-01-01 02:00:00.000000000 +0200
+++ libvob-new/org/nongnu/libvob/impl/terminal/ANSIBuffer.java	2006-01-17 20:32:47.000000000 +0200
@@ -0,0 +1,123 @@
+// (c): Matti J. Katila, and others worked on AWTScreen
+
+
+package org.nongnu.libvob.impl.terminal;
+import org.nongnu.libvob.impl.awt.*;
+import org.nongnu.libvob.impl.*;
+import org.nongnu.libvob.util.*;
+import org.nongnu.libvob.*;
+import java.io.*;
+import java.util.*;
+import java.awt.*;
+
+
+/** A class that encapsulates ANSI character buffer.
+ */
+public class ANSIBuffer {
+
+    static public boolean dbg = false;
+    static private void p(String s) { System.out.println("ANSIBuffer:: "+s); }
+    
+    private Dimension size;
+    private Color[] back, front;
+    private char[] buff;
+
+    static private HashMap 
+        backMap = new HashMap(), 
+	frontMap = new HashMap();
+
+    {
+	if (true || ! frontMap.isEmpty()) {
+	    frontMap.put(Color.BLACK, FG_BLACK);
+	    frontMap.put(Color.RED, FG_RED);
+	    frontMap.put(Color.GREEN, FG_GREEN);
+	    frontMap.put(Color.YELLOW, FG_YELLOW);
+	    frontMap.put(Color.BLUE, FG_BLUE);
+	    frontMap.put(Color.MAGENTA, FG_MAGENTA);
+	    frontMap.put(Color.CYAN, FG_CYAN);
+	    frontMap.put(Color.WHITE, FG_WHITE);
+
+	    backMap.put(Color.BLACK, BG_BLACK);
+	    backMap.put(Color.RED, BG_RED);
+	    backMap.put(Color.GREEN, BG_GREEN);
+	    backMap.put(Color.YELLOW, BG_YELLOW);
+	    backMap.put(Color.BLUE, BG_BLUE);
+	    backMap.put(Color.MAGENTA, BG_MAGENTA);
+	    backMap.put(Color.CYAN, BG_CYAN);
+	    backMap.put(Color.WHITE, BG_WHITE);
+	}
+    }
+    
+    static final String 
+        ESC = "\u001b",
+	CLEAR = ESC+"[0m",
+
+	FG_BLACK = ESC+"[30m",
+	FG_RED = ESC+"[31m",
+	FG_GREEN = ESC+"[32m",
+	FG_YELLOW = ESC+"[33m",
+	FG_BLUE = ESC+"[34m",
+	FG_MAGENTA = ESC+"[35m",
+	FG_CYAN = ESC+"[36m",
+	FG_WHITE = ESC+"[37m",
+
+	BG_BLACK = ESC+"[40m",
+	BG_RED = ESC+"[41m",
+	BG_GREEN = ESC+"[42m",
+	BG_YELLOW = ESC+"[43m",
+	BG_BLUE = ESC+"[44m",
+	BG_MAGENTA = ESC+"[45m",
+	BG_CYAN = ESC+"[46m",
+	BG_WHITE = ESC+"[47m";
+    
+    /* Some ANSI color codes:
+     *
+     * [30m  set foreground color to black
+     * [31m  set foreground color to red
+     * [32m  set foreground color to green
+     * [33m  set foreground color to yellow
+     * [34m  set foreground color to blue
+     * [35m  set foreground color to magenta (purple)
+     * [36m  set foreground color to cyan
+     * [37m  set foreground color to white
+     * [39m  set foreground color to default (white)
+     *
+     * [40m  set background color to black
+     * [41m  set background color to red
+     * [42m  set background color to green
+     * [43m  set background color to yellow
+     * [44m  set background color to blue
+     * [45m  set background color to magenta (purple)
+     * [46m  set background color to cyan
+     * [47m  set background color to white
+     * [49m  set background color to default (black)
+     */
+
+
+
+    public ANSIBuffer(Dimension size) {
+	this.size = size;
+	back = new Color[size.height*size.width];
+	front = new Color[size.height*size.width];
+	buff = new char[size.width*size.height];
+    }
+
+    public void set(int col, int row, Color fron, Color back, char ch) {
+	System.out.println(col+":"+row+" "+ch);
+	int ind = row*size.width + col;
+	this.back[ind] = back;
+	this.front[ind] = fron;
+	buff[ind] = ch;
+    }
+    
+
+    public void flush() {
+	System.out.print(CLEAR);
+	for (int i=0; i<buff.length; i++)
+	{
+	    System.out.print((String) backMap.get(back[i]));
+	    System.out.print((String) frontMap.get(front[i]));
+	    System.out.print(buff[i]);
+	}
+    }
+}




More information about the Fencommits mailing list