Class: VTerm::Screen
- Inherits:
-
Object
- Object
- VTerm::Screen
- Defined in:
- ext/vterm/vterm.c
Instance Method Summary collapse
Constructor Details
#initialize ⇒ Object
116 117 118 119 120 121 122 123 124 125 |
# File 'ext/vterm/vterm.c', line 116
static VALUE
rb_vterm_screen_initialize(VALUE self)
{
vterm_screen_data_t *vt_screen_data;
vt_screen_data = malloc(sizeof(vterm_screen_data_t));
DATA_PTR(self) = vt_screen_data;
return Qnil;
}
|
Instance Method Details
#cell_at(row, col) ⇒ Object
279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 |
# File 'ext/vterm/vterm.c', line 279
static VALUE
rb_vterm_screen_cell_at(VALUE self, VALUE row, VALUE col)
{
vterm_screen_data_t *vt_screen_data;
VTermPos pos;
VTermScreenCell cell;
int result;
VALUE rb_cell;
VALUE rb_attrs;
VALUE chars;
VALUE fg;
VALUE bg;
vt_screen_data = (vterm_screen_data_t*)DATA_PTR(self);
pos.row = NUM2INT(row);
pos.col = NUM2INT(col);
result = vterm_screen_get_cell(vt_screen_data->vtscreen, pos, &cell);
if (result == 0) {
rb_raise(rb_eRuntimeError, "#cell_at error");
return Qnil;
}
rb_attrs = rb_struct_new(
sVTermScreenCellAttrs,
INT2NUM(cell.attrs.bold),
INT2NUM(cell.attrs.underline),
INT2NUM(cell.attrs.italic),
INT2NUM(cell.attrs.blink),
INT2NUM(cell.attrs.reverse),
INT2NUM(cell.attrs.strike),
INT2NUM(cell.attrs.font),
INT2NUM(cell.attrs.dwl),
INT2NUM(cell.attrs.dhl),
0
);
fg = generate_color_object(cell.fg);
bg = generate_color_object(cell.bg);
chars = rb_external_str_new_cstr("");
for (int i = 0; i < cell.width; i++) {
if (cell.chars[i] == 0xFFFFFFFF) {
// The previous sell has full-width character
chars = Qnil;
break;
} else if (cell.chars[i] == 0x00000000) {
// NULL termination
break;
} else {
rb_str_concat(chars, INT2NUM(cell.chars[i]));
}
}
rb_cell = rb_struct_new(
sVTermScreenCell,
chars,
rb_attrs,
fg,
bg,
0
);
return rb_cell;
}
|
#flush ⇒ Object
235 236 237 238 239 240 241 242 243 244 |
# File 'ext/vterm/vterm.c', line 235
static VALUE
rb_vterm_screen_flush(VALUE self)
{
vterm_screen_data_t *vt_screen_data;
vt_screen_data = (vterm_screen_data_t*)DATA_PTR(self);
vterm_screen_flush_damage(vt_screen_data->vtscreen);
return Qnil;
}
|
#reset(hard) ⇒ Object
220 221 222 223 224 225 226 227 228 229 230 231 232 233 |
# File 'ext/vterm/vterm.c', line 220
static VALUE
rb_vterm_screen_reset(VALUE self, VALUE hard)
{
vterm_screen_data_t *vt_screen_data;
vt_screen_data = (vterm_screen_data_t*)DATA_PTR(self);
if (rb_equal(hard, Qfalse) || rb_equal(hard, Qnil)) {
vterm_screen_reset(vt_screen_data->vtscreen, 0);
} else {
vterm_screen_reset(vt_screen_data->vtscreen, 1);
}
return Qnil;
}
|