rb_termbox 0.1.0 → 0.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.gitignore +2 -0
- data/Gemfile +1 -1
- data/Gemfile.lock +11 -13
- data/README.md +14 -0
- data/ext/termbox/bytebuffer.inl +78 -0
- data/ext/termbox/extconf.rb +3 -0
- data/ext/termbox/input.inl +96 -0
- data/ext/termbox/term.inl +291 -0
- data/ext/termbox/termbox.c +536 -0
- data/ext/termbox/termbox.h +226 -0
- data/ext/termbox/utf8.c +79 -0
- data/lib/termbox.rb +1 -1
- data/lib/termbox/colors.rb +9 -8
- data/lib/termbox/keys.rb +2 -1
- data/lib/termbox/version.rb +1 -1
- data/rb_termbox.gemspec +6 -7
- data/sample/all_colors.rb +37 -0
- data/sample/keyboard.rb +15 -15
- metadata +65 -73
- data/README +0 -10
@@ -0,0 +1,226 @@
|
|
1
|
+
#pragma once
|
2
|
+
|
3
|
+
#include <stdbool.h>
|
4
|
+
#include <stdint.h>
|
5
|
+
|
6
|
+
// for shared objects
|
7
|
+
#if __GNUC__ >= 4
|
8
|
+
#define SO_IMPORT __attribute__((visibility("default")))
|
9
|
+
#else
|
10
|
+
#define SO_IMPORT
|
11
|
+
#endif
|
12
|
+
|
13
|
+
#ifdef __cplusplus
|
14
|
+
extern "C" {
|
15
|
+
#endif
|
16
|
+
|
17
|
+
// Key constants. See also struct tb_event's key field.
|
18
|
+
|
19
|
+
// These are a safe subset of terminfo keys, which exist on all popular
|
20
|
+
// terminals. Termbox uses only them to stay truly portable.
|
21
|
+
#define TB_KEY_F1 (0xFFFF-0)
|
22
|
+
#define TB_KEY_F2 (0xFFFF-1)
|
23
|
+
#define TB_KEY_F3 (0xFFFF-2)
|
24
|
+
#define TB_KEY_F4 (0xFFFF-3)
|
25
|
+
#define TB_KEY_F5 (0xFFFF-4)
|
26
|
+
#define TB_KEY_F6 (0xFFFF-5)
|
27
|
+
#define TB_KEY_F7 (0xFFFF-6)
|
28
|
+
#define TB_KEY_F8 (0xFFFF-7)
|
29
|
+
#define TB_KEY_F9 (0xFFFF-8)
|
30
|
+
#define TB_KEY_F10 (0xFFFF-9)
|
31
|
+
#define TB_KEY_F11 (0xFFFF-10)
|
32
|
+
#define TB_KEY_F12 (0xFFFF-11)
|
33
|
+
#define TB_KEY_INSERT (0xFFFF-12)
|
34
|
+
#define TB_KEY_DELETE (0xFFFF-13)
|
35
|
+
#define TB_KEY_HOME (0xFFFF-14)
|
36
|
+
#define TB_KEY_END (0xFFFF-15)
|
37
|
+
#define TB_KEY_PGUP (0xFFFF-16)
|
38
|
+
#define TB_KEY_PGDN (0xFFFF-17)
|
39
|
+
#define TB_KEY_ARROW_UP (0xFFFF-18)
|
40
|
+
#define TB_KEY_ARROW_DOWN (0xFFFF-19)
|
41
|
+
#define TB_KEY_ARROW_LEFT (0xFFFF-20)
|
42
|
+
#define TB_KEY_ARROW_RIGHT (0xFFFF-21)
|
43
|
+
|
44
|
+
// These are all ASCII code points below SPACE character and a BACKSPACE key.
|
45
|
+
#define TB_KEY_CTRL_TILDE 0x00
|
46
|
+
#define TB_KEY_CTRL_2 0x00 // clash with 'CTRL_TILDE'
|
47
|
+
#define TB_KEY_CTRL_A 0x01
|
48
|
+
#define TB_KEY_CTRL_B 0x02
|
49
|
+
#define TB_KEY_CTRL_C 0x03
|
50
|
+
#define TB_KEY_CTRL_D 0x04
|
51
|
+
#define TB_KEY_CTRL_E 0x05
|
52
|
+
#define TB_KEY_CTRL_F 0x06
|
53
|
+
#define TB_KEY_CTRL_G 0x07
|
54
|
+
#define TB_KEY_BACKSPACE 0x08
|
55
|
+
#define TB_KEY_CTRL_H 0x08 // clash with 'CTRL_BACKSPACE'
|
56
|
+
#define TB_KEY_TAB 0x09
|
57
|
+
#define TB_KEY_CTRL_I 0x09 // clash with 'TAB'
|
58
|
+
#define TB_KEY_CTRL_J 0x0A
|
59
|
+
#define TB_KEY_CTRL_K 0x0B
|
60
|
+
#define TB_KEY_CTRL_L 0x0C
|
61
|
+
#define TB_KEY_ENTER 0x0D
|
62
|
+
#define TB_KEY_CTRL_M 0x0D // clash with 'ENTER'
|
63
|
+
#define TB_KEY_CTRL_N 0x0E
|
64
|
+
#define TB_KEY_CTRL_O 0x0F
|
65
|
+
#define TB_KEY_CTRL_P 0x10
|
66
|
+
#define TB_KEY_CTRL_Q 0x11
|
67
|
+
#define TB_KEY_CTRL_R 0x12
|
68
|
+
#define TB_KEY_CTRL_S 0x13
|
69
|
+
#define TB_KEY_CTRL_T 0x14
|
70
|
+
#define TB_KEY_CTRL_U 0x15
|
71
|
+
#define TB_KEY_CTRL_V 0x16
|
72
|
+
#define TB_KEY_CTRL_W 0x17
|
73
|
+
#define TB_KEY_CTRL_X 0x18
|
74
|
+
#define TB_KEY_CTRL_Y 0x19
|
75
|
+
#define TB_KEY_CTRL_Z 0x1A
|
76
|
+
#define TB_KEY_ESC 0x1B
|
77
|
+
#define TB_KEY_CTRL_LSQ_BRACKET 0x1B // clash with 'ESC'
|
78
|
+
#define TB_KEY_CTRL_3 0x1B // clash with 'ESC'
|
79
|
+
#define TB_KEY_CTRL_4 0x1C
|
80
|
+
#define TB_KEY_CTRL_BACKSLASH 0x1C // clash with 'CTRL_4'
|
81
|
+
#define TB_KEY_CTRL_5 0x1D
|
82
|
+
#define TB_KEY_CTRL_RSQ_BRACKET 0x1D // clash with 'CTRL_5'
|
83
|
+
#define TB_KEY_CTRL_6 0x1E
|
84
|
+
#define TB_KEY_CTRL_7 0x1F
|
85
|
+
#define TB_KEY_CTRL_SLASH 0x1F // clash with 'CTRL_7'
|
86
|
+
#define TB_KEY_CTRL_UNDERSCORE 0x1F // clash with 'CTRL_7'
|
87
|
+
#define TB_KEY_SPACE 0x20
|
88
|
+
#define TB_KEY_BACKSPACE2 0x7F
|
89
|
+
#define TB_KEY_CTRL_8 0x7F // clash with 'DELETE'
|
90
|
+
|
91
|
+
// These are non-existing ones.
|
92
|
+
//
|
93
|
+
// #define TB_KEY_CTRL_1 clash with '1'
|
94
|
+
// #define TB_KEY_CTRL_9 clash with '9'
|
95
|
+
// #define TB_KEY_CTRL_0 clash with '0'
|
96
|
+
|
97
|
+
// Currently there is only one modificator. See also struct tb_event's mod
|
98
|
+
// field.
|
99
|
+
#define TB_MOD_ALT 0x01
|
100
|
+
|
101
|
+
// Colors (see struct tb_cell's fg and bg fields).
|
102
|
+
#define TB_DEFAULT 0x00
|
103
|
+
#define TB_BLACK 0x01
|
104
|
+
#define TB_RED 0x02
|
105
|
+
#define TB_GREEN 0x03
|
106
|
+
#define TB_YELLOW 0x04
|
107
|
+
#define TB_BLUE 0x05
|
108
|
+
#define TB_MAGENTA 0x06
|
109
|
+
#define TB_CYAN 0x07
|
110
|
+
#define TB_WHITE 0x08
|
111
|
+
|
112
|
+
// Attributes, it is possible to use multiple attributes by combining them
|
113
|
+
// using bitwise OR ('|'). Although, colors cannot be combined. But you can
|
114
|
+
// combine attributes and a single color. See also struct tb_cell's fg and bg
|
115
|
+
// fields.
|
116
|
+
#define TB_BOLD 0x10
|
117
|
+
#define TB_UNDERLINE 0x20
|
118
|
+
#define TB_REVERSE 0x40
|
119
|
+
|
120
|
+
// A cell, single conceptual entity on the terminal screen. The terminal screen
|
121
|
+
// is basically a 2d array of cells. It has the following fields:
|
122
|
+
// - 'ch' is a unicode character
|
123
|
+
// - 'fg' foreground color and attributes
|
124
|
+
// - 'bg' background color and attributes
|
125
|
+
struct tb_cell {
|
126
|
+
uint32_t ch;
|
127
|
+
uint16_t fg;
|
128
|
+
uint16_t bg;
|
129
|
+
};
|
130
|
+
|
131
|
+
#define TB_EVENT_KEY 1
|
132
|
+
#define TB_EVENT_RESIZE 2
|
133
|
+
|
134
|
+
// This struct represents a termbox event. The 'mod', 'key' and 'ch' fields are
|
135
|
+
// valid if 'type' is TB_EVENT_KEY. The 'w' and 'h' fields are valid if 'type'
|
136
|
+
// is TB_EVENT_RESIZE. See also
|
137
|
+
struct tb_event {
|
138
|
+
uint8_t type;
|
139
|
+
uint8_t mod;
|
140
|
+
uint16_t key;
|
141
|
+
uint32_t ch;
|
142
|
+
int32_t w;
|
143
|
+
int32_t h;
|
144
|
+
};
|
145
|
+
|
146
|
+
// Error codes returned by tb_init(). All of them are self-explanatory, except
|
147
|
+
// the pipe trap error. Termbox uses unix pipes in order to deliever a message
|
148
|
+
// from a signal handler (SIGWINCH) to the main event reading loop. Honestly in
|
149
|
+
// most cases you should just check the returned code as < 0.
|
150
|
+
#define TB_EUNSUPPORTED_TERMINAL -1
|
151
|
+
#define TB_EFAILED_TO_OPEN_TTY -2
|
152
|
+
#define TB_EPIPE_TRAP_ERROR -3
|
153
|
+
|
154
|
+
// Initializes the termbox library. This function should be called before any
|
155
|
+
// other functions. After successful initialization, the library must be
|
156
|
+
// finalized using the tb_shutdown() function.
|
157
|
+
SO_IMPORT int tb_init(void);
|
158
|
+
SO_IMPORT void tb_shutdown(void);
|
159
|
+
|
160
|
+
// Returns the size of the internal back buffer (which is the same as
|
161
|
+
// terminal's window size in characters). The internal buffer can be resized
|
162
|
+
// after tb_clear() or tb_present() function calls.
|
163
|
+
SO_IMPORT int tb_width(void);
|
164
|
+
SO_IMPORT int tb_height(void);
|
165
|
+
|
166
|
+
// Clears the internal back buffer using TB_DEFAULT color or the
|
167
|
+
// color/attributes set by tb_set_clear_attributes() function.
|
168
|
+
SO_IMPORT void tb_clear(void);
|
169
|
+
SO_IMPORT void tb_set_clear_attributes(uint16_t fg, uint16_t bg);
|
170
|
+
|
171
|
+
// Syncronizes the internal back buffer with the terminal.
|
172
|
+
SO_IMPORT void tb_present(void);
|
173
|
+
|
174
|
+
#define TB_HIDE_CURSOR -1
|
175
|
+
|
176
|
+
// Sets the position of the cursor. Upper-left character is (0, 0). If you pass
|
177
|
+
// TB_HIDE_CURSOR as both coordinates, then the cursor will be hidden. Cursor
|
178
|
+
// is hidden by default.
|
179
|
+
SO_IMPORT void tb_set_cursor(int cx, int cy);
|
180
|
+
|
181
|
+
// Changes cell's parameters in the internal back buffer at the specified
|
182
|
+
// position.
|
183
|
+
SO_IMPORT void tb_put_cell(int x, int y, const struct tb_cell *cell);
|
184
|
+
SO_IMPORT void tb_change_cell(int x, int y, uint32_t ch, uint16_t fg, uint16_t bg);
|
185
|
+
|
186
|
+
// Copies the buffer from 'cells' at the specified position, assuming the
|
187
|
+
// buffer is a two-dimensional array of size ('w' x 'h'), represented as a
|
188
|
+
// one-dimensional buffer containing lines of cells starting from the top.
|
189
|
+
SO_IMPORT void tb_blit(int x, int y, int w, int h, const struct tb_cell *cells);
|
190
|
+
|
191
|
+
#define TB_INPUT_CURRENT 0
|
192
|
+
#define TB_INPUT_ESC 1
|
193
|
+
#define TB_INPUT_ALT 2
|
194
|
+
|
195
|
+
// Sets the termbox input mode. Termbox has two input modes:
|
196
|
+
// 1. Esc input mode.
|
197
|
+
// When ESC sequence is in the buffer and it doesn't match any known
|
198
|
+
// ESC sequence => ESC means TB_KEY_ESC.
|
199
|
+
// 2. Alt input mode.
|
200
|
+
// When ESC sequence is in the buffer and it doesn't match any known
|
201
|
+
// sequence => ESC enables TB_MOD_ALT modifier for the next keyboard event.
|
202
|
+
//
|
203
|
+
// If 'mode' is TB_INPUT_CURRENT, it returns the current input mode.
|
204
|
+
SO_IMPORT int tb_select_input_mode(int mode);
|
205
|
+
|
206
|
+
|
207
|
+
// Wait for an event up to 'timeout' milliseconds and fill the 'event'
|
208
|
+
// structure with it, when the event is available. Returns the type of the
|
209
|
+
// event (one of TB_EVENT_* constants) or -1 if there was an error or 0 in case
|
210
|
+
// there were no event during 'timeout' period.
|
211
|
+
SO_IMPORT int tb_peek_event(struct tb_event *event, int timeout);
|
212
|
+
|
213
|
+
// Wait for an event forever and fill the 'event' structure with it, when the
|
214
|
+
// event is available. Returns the type of the event (one of TB_EVENT_*
|
215
|
+
// constants) or -1 if there was an error.
|
216
|
+
SO_IMPORT int tb_poll_event(struct tb_event *event);
|
217
|
+
|
218
|
+
// Utility utf8 functions.
|
219
|
+
#define TB_EOF -1
|
220
|
+
SO_IMPORT int tb_utf8_char_length(char c);
|
221
|
+
SO_IMPORT int tb_utf8_char_to_unicode(uint32_t *out, const char *c);
|
222
|
+
SO_IMPORT int tb_utf8_unicode_to_char(char *out, uint32_t c);
|
223
|
+
|
224
|
+
#ifdef __cplusplus
|
225
|
+
}
|
226
|
+
#endif
|
data/ext/termbox/utf8.c
ADDED
@@ -0,0 +1,79 @@
|
|
1
|
+
#include "termbox.h"
|
2
|
+
|
3
|
+
static const unsigned char utf8_length[256] = {
|
4
|
+
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
|
5
|
+
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
|
6
|
+
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
|
7
|
+
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
|
8
|
+
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
|
9
|
+
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
|
10
|
+
2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
|
11
|
+
3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,4,4,4,4,4,4,4,4,5,5,5,5,6,6,1,1
|
12
|
+
};
|
13
|
+
|
14
|
+
static const unsigned char utf8_mask[6] = {
|
15
|
+
0x7F,
|
16
|
+
0x1F,
|
17
|
+
0x0F,
|
18
|
+
0x07,
|
19
|
+
0x03,
|
20
|
+
0x01
|
21
|
+
};
|
22
|
+
|
23
|
+
int tb_utf8_char_length(char c)
|
24
|
+
{
|
25
|
+
return utf8_length[(unsigned char)c];
|
26
|
+
}
|
27
|
+
|
28
|
+
int tb_utf8_char_to_unicode(uint32_t *out, const char *c)
|
29
|
+
{
|
30
|
+
if (*c == 0)
|
31
|
+
return TB_EOF;
|
32
|
+
|
33
|
+
int i;
|
34
|
+
unsigned char len = tb_utf8_char_length(*c);
|
35
|
+
unsigned char mask = utf8_mask[len-1];
|
36
|
+
uint32_t result = c[0] & mask;
|
37
|
+
for (i = 1; i < len; ++i) {
|
38
|
+
result <<= 6;
|
39
|
+
result |= c[i] & 0x3f;
|
40
|
+
}
|
41
|
+
|
42
|
+
*out = result;
|
43
|
+
return (int)len;
|
44
|
+
}
|
45
|
+
|
46
|
+
int tb_utf8_unicode_to_char(char *out, uint32_t c)
|
47
|
+
{
|
48
|
+
int len = 0;
|
49
|
+
int first;
|
50
|
+
int i;
|
51
|
+
|
52
|
+
if (c < 0x80) {
|
53
|
+
first = 0;
|
54
|
+
len = 1;
|
55
|
+
} else if (c < 0x800) {
|
56
|
+
first = 0xc0;
|
57
|
+
len = 2;
|
58
|
+
} else if (c < 0x10000) {
|
59
|
+
first = 0xe0;
|
60
|
+
len = 3;
|
61
|
+
} else if (c < 0x200000) {
|
62
|
+
first = 0xf0;
|
63
|
+
len = 4;
|
64
|
+
} else if (c < 0x4000000) {
|
65
|
+
first = 0xf8;
|
66
|
+
len = 5;
|
67
|
+
} else {
|
68
|
+
first = 0xfc;
|
69
|
+
len = 6;
|
70
|
+
}
|
71
|
+
|
72
|
+
for (i = len - 1; i > 0; --i) {
|
73
|
+
out[i] = (c & 0x3f) | 0x80;
|
74
|
+
c >>= 6;
|
75
|
+
}
|
76
|
+
out[0] = c | first;
|
77
|
+
|
78
|
+
return len;
|
79
|
+
}
|
data/lib/termbox.rb
CHANGED
data/lib/termbox/colors.rb
CHANGED
@@ -1,12 +1,13 @@
|
|
1
1
|
module Termbox
|
2
2
|
Colors = {
|
3
|
-
:
|
4
|
-
:
|
5
|
-
:
|
6
|
-
:
|
7
|
-
:
|
8
|
-
:
|
9
|
-
:
|
10
|
-
:
|
3
|
+
:default => 0x00,
|
4
|
+
:black => 0x01,
|
5
|
+
:red => 0x02,
|
6
|
+
:green => 0x03,
|
7
|
+
:yellow => 0x04,
|
8
|
+
:blue => 0x05,
|
9
|
+
:magenta => 0x06,
|
10
|
+
:cyan => 0x07,
|
11
|
+
:white => 0x08
|
11
12
|
}
|
12
13
|
end
|
data/lib/termbox/keys.rb
CHANGED
@@ -70,7 +70,7 @@ module Termbox
|
|
70
70
|
"[" => 0x1B,
|
71
71
|
"]" => 0x1D,
|
72
72
|
"_" => 0x1F, # same as few others
|
73
|
-
" " => 0x20
|
73
|
+
" " => 0x20 # same as few others
|
74
74
|
},
|
75
75
|
|
76
76
|
"BACKSPACE" => 0x08,
|
@@ -80,6 +80,7 @@ module Termbox
|
|
80
80
|
"RETURN" => 0x0D,
|
81
81
|
"ESC" => 0x1B,
|
82
82
|
"ESCAPE" => 0x1B,
|
83
|
+
"SPACE" => 0x20,
|
83
84
|
}
|
84
85
|
|
85
86
|
def lookup_key string
|
data/lib/termbox/version.rb
CHANGED
data/rb_termbox.gemspec
CHANGED
@@ -9,17 +9,16 @@ Gem::Specification.new do |s|
|
|
9
9
|
s.version = Termbox::VERSION
|
10
10
|
s.platform = Gem::Platform::RUBY
|
11
11
|
s.authors = ["James Cook"]
|
12
|
-
s.email = ["
|
13
|
-
s.summary = %q{Ruby binding to Termbox, a ncurses alternative.}
|
14
|
-
|
15
|
-
|
16
|
-
s.required_rubygems_version = ">= 1.3.6"
|
17
|
-
s.rubyforge_project = "rb_termbox"
|
12
|
+
s.email = ["jcook.rubyist@gmail.com"]
|
13
|
+
s.summary = s.description = %q{Ruby binding to Termbox, a ncurses alternative.}
|
14
|
+
s.homepage = "http://github.com/jamescook/rb_termbox"
|
15
|
+
s.license = "MIT"
|
18
16
|
|
19
17
|
s.add_dependency "ffi"
|
20
18
|
s.add_development_dependency "rspec"
|
21
19
|
|
22
20
|
s.files = `git ls-files`.split("\n")
|
23
21
|
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
24
|
-
s.require_paths = ["lib"]
|
22
|
+
s.require_paths = ["lib", "."]
|
23
|
+
s.extensions = %w[ext/termbox/extconf.rb]
|
25
24
|
end
|
@@ -0,0 +1,37 @@
|
|
1
|
+
load File.join(File.expand_path("."), "/lib/termbox.rb")
|
2
|
+
|
3
|
+
class AllColors
|
4
|
+
def self.run
|
5
|
+
Termbox.termbox_library_path File.expand_path("./libtermbox.so")
|
6
|
+
Termbox.initialize_library
|
7
|
+
start = Termbox.tb_init
|
8
|
+
if start
|
9
|
+
Termbox.tb_select_input_mode 1 # TB_INPUT_ESC
|
10
|
+
ev = Termbox::Event.new
|
11
|
+
Termbox.tb_clear
|
12
|
+
draw_colors
|
13
|
+
Termbox.tb_present
|
14
|
+
|
15
|
+
while Termbox.tb_poll_event(ev) >= 0 do
|
16
|
+
case ev[:type]
|
17
|
+
when 1 #TB_EVENT_KEY
|
18
|
+
if ev[:key] == 0x1B # ESC
|
19
|
+
Termbox.tb_shutdown
|
20
|
+
exit
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
def self.draw_colors
|
28
|
+
(0..255).to_a.each do |i|
|
29
|
+
Termbox.tb_change_cell(i,0, 0x20, 0x00, i);
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
if __FILE__ == $0
|
35
|
+
AllColors.run
|
36
|
+
end
|
37
|
+
|
data/sample/keyboard.rb
CHANGED
@@ -6,7 +6,7 @@ class Keyboard
|
|
6
6
|
def self.run
|
7
7
|
|
8
8
|
# Tell termbox where your shared lib is
|
9
|
-
Termbox.termbox_library_path
|
9
|
+
Termbox.termbox_library_path "termbox"
|
10
10
|
|
11
11
|
# Call initialize_library once the above is set, this links us to the library C functions
|
12
12
|
Termbox.initialize_library
|
@@ -49,28 +49,28 @@ class Keyboard
|
|
49
49
|
end
|
50
50
|
|
51
51
|
def self.draw
|
52
|
-
Termbox.tb_change_cell(0, 0, 0x250C, Termbox::Colors[:white], Termbox::Colors[:
|
53
|
-
Termbox.tb_change_cell(79, 0, 0x2510, Termbox::Colors[:white], Termbox::Colors[:
|
54
|
-
Termbox.tb_change_cell(0, 23, 0x2514, Termbox::Colors[:white], Termbox::Colors[:
|
55
|
-
Termbox.tb_change_cell(79, 23, 0x2518, Termbox::Colors[:white], Termbox::Colors[:
|
52
|
+
Termbox.tb_change_cell(0, 0, 0x250C, Termbox::Colors[:white], Termbox::Colors[:default])
|
53
|
+
Termbox.tb_change_cell(79, 0, 0x2510, Termbox::Colors[:white], Termbox::Colors[:default])
|
54
|
+
Termbox.tb_change_cell(0, 23, 0x2514, Termbox::Colors[:white], Termbox::Colors[:default])
|
55
|
+
Termbox.tb_change_cell(79, 23, 0x2518, Termbox::Colors[:white], Termbox::Colors[:default])
|
56
56
|
|
57
57
|
|
58
58
|
1.upto(79) do |i|
|
59
|
-
Termbox.tb_change_cell(i, 0, 0x2500, Termbox::Colors[:white], Termbox::Colors[:
|
60
|
-
Termbox.tb_change_cell(i, 23, 0x2500, Termbox::Colors[:white], Termbox::Colors[:
|
61
|
-
Termbox.tb_change_cell(i, 17, 0x2500, Termbox::Colors[:white], Termbox::Colors[:
|
62
|
-
Termbox.tb_change_cell(i, 4, 0x2500, Termbox::Colors[:white], Termbox::Colors[:
|
59
|
+
Termbox.tb_change_cell(i, 0, 0x2500, Termbox::Colors[:white], Termbox::Colors[:default])
|
60
|
+
Termbox.tb_change_cell(i, 23, 0x2500, Termbox::Colors[:white], Termbox::Colors[:default])
|
61
|
+
Termbox.tb_change_cell(i, 17, 0x2500, Termbox::Colors[:white], Termbox::Colors[:default])
|
62
|
+
Termbox.tb_change_cell(i, 4, 0x2500, Termbox::Colors[:white], Termbox::Colors[:default])
|
63
63
|
end
|
64
64
|
|
65
65
|
1.upto(23) do |i|
|
66
|
-
Termbox.tb_change_cell(0, i, 0x2502, Termbox::Colors[:white], Termbox::Colors[:
|
67
|
-
Termbox.tb_change_cell(79, i, 0x2502, Termbox::Colors[:white], Termbox::Colors[:
|
66
|
+
Termbox.tb_change_cell(0, i, 0x2502, Termbox::Colors[:white], Termbox::Colors[:default])
|
67
|
+
Termbox.tb_change_cell(79, i, 0x2502, Termbox::Colors[:white], Termbox::Colors[:default])
|
68
68
|
end
|
69
69
|
|
70
|
-
Termbox.tb_change_cell(0, 17, 0x251C, Termbox::Colors[:white], Termbox::Colors[:
|
71
|
-
Termbox.tb_change_cell(79, 17, 0x2524, Termbox::Colors[:white], Termbox::Colors[:
|
72
|
-
Termbox.tb_change_cell(0, 4, 0x251C, Termbox::Colors[:white], Termbox::Colors[:
|
73
|
-
Termbox.tb_change_cell(79, 4, 0x2524, Termbox::Colors[:white], Termbox::Colors[:
|
70
|
+
Termbox.tb_change_cell(0, 17, 0x251C, Termbox::Colors[:white], Termbox::Colors[:default])
|
71
|
+
Termbox.tb_change_cell(79, 17, 0x2524, Termbox::Colors[:white], Termbox::Colors[:default])
|
72
|
+
Termbox.tb_change_cell(0, 4, 0x251C, Termbox::Colors[:white], Termbox::Colors[:default])
|
73
|
+
Termbox.tb_change_cell(79, 4, 0x2524, Termbox::Colors[:white], Termbox::Colors[:default])
|
74
74
|
|
75
75
|
5.upto(17) do |i|
|
76
76
|
Termbox.tb_change_cell(1, i, 0x2588, Termbox::Colors[:yellow], Termbox::Colors[:yellow])
|