aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorjluehrs2 <jluehrs2@uiuc.edu>2008-03-17 22:45:15 -0500
committerjluehrs2 <jluehrs2@uiuc.edu>2008-03-17 22:45:15 -0500
commit253e6f0a89bb2b857627b46d20ad93c3b27ade22 (patch)
treeba76c56815297a3bd4e7b3504e743e240e90fc3c
parentb9899f854633dcec67c0f7ce0558ba79bf945e4a (diff)
downloadluancurses-253e6f0a89bb2b857627b46d20ad93c3b27ade22.tar.gz
luancurses-253e6f0a89bb2b857627b46d20ad93c3b27ade22.zip
add the addch defines for line drawing characters
-rw-r--r--src/curses.c10
-rw-r--r--src/strings.c54
2 files changed, 56 insertions, 8 deletions
diff --git a/src/curses.c b/src/curses.c
index 08331ea..495e4bb 100644
--- a/src/curses.c
+++ b/src/curses.c
@@ -89,12 +89,6 @@ static int get_pos(lua_State* L, pos* p)
return 1;
}
-static chtype get_char(const char* str)
-{
- /* add the ACS_ defines here */
- return str[0];
-}
-
static int get_char_attr(lua_State* L, int stack_pos)
{
int mode = A_NORMAL;
@@ -312,7 +306,7 @@ static int l_addch(lua_State* L)
chtype ch;
is_mv = get_pos(L, &p);
- ch = get_char(luaL_checklstring(L, 1, &l));
+ ch = get_char_enum(luaL_checklstring(L, 1, &l));
if (lua_istable(L, 2)) {
mode = get_char_attr(L, 2);
color = get_char_color(L, 2);
@@ -413,7 +407,7 @@ static int l_insch(lua_State* L)
chtype ch;
is_mv = get_pos(L, &p);
- ch = get_char(luaL_checklstring(L, 1, &l));
+ ch = get_char_enum(luaL_checklstring(L, 1, &l));
if (lua_istable(L, 2)) {
mode = get_char_attr(L, 2);
color = get_char_color(L, 2);
diff --git a/src/strings.c b/src/strings.c
index 56bf4c6..7c3bcdf 100644
--- a/src/strings.c
+++ b/src/strings.c
@@ -49,6 +49,41 @@ static trans keys[] = {
{"insert", KEY_IC},
};
+static trans chars[] = {
+ {"block", ACS_BLOCK},
+ {"board", ACS_BOARD},
+ {"btee", ACS_BTEE},
+ {"bullet", ACS_BULLET},
+ {"ckboard", ACS_CKBOARD},
+ {"darrow", ACS_DARROW},
+ {"degree", ACS_DEGREE},
+ {"diamond", ACS_DIAMOND},
+ {"gequal", ACS_GEQUAL},
+ {"hline", ACS_HLINE},
+ {"lantern", ACS_LANTERN},
+ {"larrow", ACS_LARROW},
+ {"lequal", ACS_LEQUAL},
+ {"llcorner", ACS_LLCORNER},
+ {"lrcorner", ACS_LRCORNER},
+ {"ltee", ACS_LTEE},
+ {"nequal", ACS_NEQUAL},
+ {"pi", ACS_PI},
+ {"plminus", ACS_PLMINUS},
+ {"plus", ACS_PLUS},
+ {"rarrow", ACS_RARROW},
+ {"rtee", ACS_RTEE},
+ {"s1", ACS_S1},
+ {"s3", ACS_S3},
+ {"s7", ACS_S7},
+ {"s9", ACS_S9},
+ {"sterling", ACS_STERLING},
+ {"ttee", ACS_TTEE},
+ {"uarrow", ACS_UARROW},
+ {"ulcorner", ACS_ULCORNER},
+ {"urcorner", ACS_URCORNER},
+ {"vline", ACS_VLINE},
+};
+
static const char* fn_keys[] = {
"F0", "F1", "F2", "F3", "F4", "F5", "F6", "F7",
"F8", "F9", "F10", "F11", "F12", "F13", "F14", "F15",
@@ -125,6 +160,15 @@ int get_key_enum(const char* str)
return ret == -1 ? (int)str[0] : ret;
}
+chtype get_char_enum(const char* str)
+{
+ int ret;
+
+ ret = str2enum(chars, lengthof(chars), str);
+
+ return ret == -1 ? (chtype)str[0] : ret;
+}
+
const char* get_color_str(int tag)
{
return enum2str(colors, lengthof(colors), tag);
@@ -144,6 +188,11 @@ const char* get_key_str(int tag)
return enum2str(keys, lengthof(keys), tag);
}
+const char* get_char_str(chtype tag)
+{
+ return enum2str(chars, lengthof(chars), tag);
+}
+
void each_color(table_cb cb, void* data)
{
each_item(colors, lengthof(colors), cb, data);
@@ -158,3 +207,8 @@ void each_key(table_cb cb, void* data)
{
each_item(keys, lengthof(keys), cb, data);
}
+
+void each_char(table_cb cb, void* data)
+{
+ each_item(chars, lengthof(chars), cb, data);
+}