aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJesse Luehrs <doy@tozt.net>2014-09-16 14:56:41 -0400
committerJesse Luehrs <doy@tozt.net>2014-09-16 14:56:41 -0400
commit85e3d7208e5d5dcd17c9c3e344fc4036befb884a (patch)
tree2c78f049bedad68342484134f21b04f893ff3726
parent98ea3805499ab6ba4137d74bc2894c8f8102fc1e (diff)
downloadpython-termcast-server-85e3d7208e5d5dcd17c9c3e344fc4036befb884a.tar.gz
python-termcast-server-85e3d7208e5d5dcd17c9c3e344fc4036befb884a.zip
add a few more methods to the vt100 class
-rw-r--r--vt100.py36
1 files changed, 36 insertions, 0 deletions
diff --git a/vt100.py b/vt100.py
index b066220..aef7b49 100644
--- a/vt100.py
+++ b/vt100.py
@@ -2,6 +2,12 @@ from ctypes import *
libvt100 = CDLL("libvt100.so")
+class vt100_loc(Structure):
+ _fields_ = [
+ ("row", c_int),
+ ("col", c_int),
+ ]
+
class vt100_rgb_color(Union):
_fields_ = [
("r", c_ubyte),
@@ -62,6 +68,12 @@ vt100_process_string = process_string_prototype(("vt100_screen_process_string",
cell_at_prototype = CFUNCTYPE(POINTER(vt100_cell), c_void_p, c_int, c_int)
vt100_cell_at = cell_at_prototype(("vt100_screen_cell_at", libvt100))
+get_string_formatted_prototype = CFUNCTYPE(None, c_void_p, POINTER(vt100_loc), POINTER(vt100_loc), POINTER(c_char_p), POINTER(c_size_t))
+vt100_get_string_formatted = get_string_formatted_prototype(("vt100_screen_get_string_formatted", libvt100))
+
+get_string_plaintext_prototype = CFUNCTYPE(None, c_void_p, POINTER(vt100_loc), POINTER(vt100_loc), POINTER(c_char_p), POINTER(c_size_t))
+vt100_get_string_plaintext = get_string_plaintext_prototype(("vt100_screen_get_string_plaintext", libvt100))
+
delete_prototype = CFUNCTYPE(None, c_void_p)
vt100_delete = delete_prototype(("vt100_screen_delete", libvt100))
@@ -79,5 +91,29 @@ class vt100(object):
def process(self, string):
return vt100_process_string(self.vt, string, len(string))
+ def get_string_formatted(self, row_start, col_start, row_end, col_end):
+ outstr = c_char_p()
+ outlen = c_size_t()
+ vt100_get_string_formatted(
+ self.vt,
+ byref(vt100_loc(row_start, col_start)),
+ byref(vt100_loc(row_end, col_end)),
+ byref(outstr),
+ byref(outlen),
+ )
+ return string_at(outstr)[:outlen.value]
+
+ def get_string_plaintext(self, row_start, col_start, row_end, col_end):
+ outstr = c_char_p()
+ outlen = c_size_t()
+ vt100_get_string_plaintext(
+ self.vt,
+ byref(vt100_loc(row_start, col_start)),
+ byref(vt100_loc(row_end, col_end)),
+ byref(outstr),
+ byref(outlen),
+ )
+ return string_at(outstr)[:outlen.value]
+
def cell(self, x, y):
return vt100_cell_at(self.vt, x, y).contents