From 22b4da210c99452ea9f42edfbadaa69b3f90ccc4 Mon Sep 17 00:00:00 2001 From: Marcin Kulik Date: Sat, 3 Mar 2012 15:15:38 +0100 Subject: [PATCH] Charsets support --- .../player/screen_buffer.js.coffee | 3 +- .../player/special_charset.js.coffee | 95 +++++++++++++++++++ app/assets/javascripts/player/vt.js.coffee | 11 +++ 3 files changed, 108 insertions(+), 1 deletion(-) create mode 100644 app/assets/javascripts/player/special_charset.js.coffee diff --git a/app/assets/javascripts/player/screen_buffer.js.coffee b/app/assets/javascripts/player/screen_buffer.js.coffee index 163648d..ec95a74 100644 --- a/app/assets/javascripts/player/screen_buffer.js.coffee +++ b/app/assets/javascripts/player/screen_buffer.js.coffee @@ -8,6 +8,7 @@ class AsciiIo.ScreenBuffer @cursorY = 0 @brush = AsciiIo.Brush.create({}) + @charsetModifier = @usCharsetModifier topMargin: -> @scrollRegion.getTop() @@ -84,7 +85,7 @@ class AsciiIo.ScreenBuffer @cursorX = 0 # TODO: updateLine? - @fill @cursorY, @cursorX, 1, text[i] + @fill @cursorY, @cursorX, 1, @charsetModifier(text[i]) @cursorX += 1 i++ diff --git a/app/assets/javascripts/player/special_charset.js.coffee b/app/assets/javascripts/player/special_charset.js.coffee new file mode 100644 index 0000000..44acd5f --- /dev/null +++ b/app/assets/javascripts/player/special_charset.js.coffee @@ -0,0 +1,95 @@ +AsciiIo.SpecialCharset = + 33: "!" + 34: '"' + 35: "#" + 36: "$" + 37: "%" + 38: "&" + 39: "'" + 40: "(" + 41: ")" + 42: "*" + 43: "+" + 44: "," + 45: "-" + 46: "." + 47: "/" + 48: "0" + 49: "1" + 50: "2" + 51: "3" + 52: "4" + 53: "5" + 54: "6" + 55: "7" + 56: "8" + 57: "9" + 58: ":" + 59: ";" + 60: "<" + 61: "=" + 62: ">" + 63: "?" + 64: "@" + 65: "↑" + 66: "↓" + 67: "→" + 68: "←" + 69: "█" + 70: "▚" + 71: "☃" + 72: "H" + 73: "I" + 74: "J" + 75: "K" + 76: "L" + 77: "M" + 78: "N" + 79: "O" + 80: "P" + 81: "Q" + 82: "R" + 83: "S" + 84: "T" + 85: "U" + 86: "V" + 87: "W" + 88: "X" + 89: "Y" + 90: "Z" + 91: "[" + 92: "\\" + 93: "]" + 94: "^" + 95: "_" + 96: "◆" + 97: "▒" + 98: "␉" + 99: "␌" + 100: "␍" + 101: "␊" + 102: "°" + 103: "±" + 104: "␤" + 105: "␋" + 106: "┘" + 107: "┐" + 108: "┌" + 109: "└" + 110: "┼" + 111: "⎺" + 112: "⎻" + 113: "─" + 114: "⎼" + 115: "⎽" + 116: "├" + 117: "┤" + 118: "┴" + 119: "┬" + 120: "│" + 121: "≤" + 122: "≥" + 123: "π" + 124: "≠" + 125: "£" + 126: "·" diff --git a/app/assets/javascripts/player/vt.js.coffee b/app/assets/javascripts/player/vt.js.coffee index f10ca86..f9527a2 100644 --- a/app/assets/javascripts/player/vt.js.coffee +++ b/app/assets/javascripts/player/vt.js.coffee @@ -272,6 +272,7 @@ class AsciiIo.VT switchToAlternateBuffer: -> @alternateBuffer.setBrush(@normalBuffer.getBrush()) + @alternateBuffer.setCharset(@normalBuffer.getCharset()) @buffer = @alternateBuffer @updateScreen() @@ -355,5 +356,15 @@ class AsciiIo.VT reportRowAndColumn: -> + setUkCharset: -> + @buffer.setCharset('uk') + + setUsCharset: -> + @buffer.setCharset('us') + + setSpecialCharset: -> + @buffer.setCharset('special') + + # http://www.shaels.net/index.php/propterm/documents # http://manpages.ubuntu.com/manpages/lucid/man7/urxvt.7.html