void TermView::_Init() { SetFont(be_fixed_font); font_height height; GetFontHeight(&height); fFontHeight = (int)(ceilf(height.ascent) + ceilf(height.descent) + ceilf(height.leading)); fFontWidth = (int)be_fixed_font->StringWidth("X"); fTerm = vterm_new(kDefaultHeight, kDefaultWidth); fTermScreen = vterm_obtain_screen(fTerm); vterm_screen_set_callbacks(fTermScreen, &sScreenCallbacks, this); vterm_screen_reset(fTermScreen, 1); vterm_parser_set_utf8(fTerm, 1); VTermScreenCell cell; VTermPos firstPos; firstPos.row = 0; firstPos.col = 0; _GetCell(firstPos, cell); rgb_color background; background.red = cell.bg.red; background.green = cell.bg.green; background.blue = cell.bg.blue; background.alpha = 255; SetViewColor(background); SetLineTerminator("\n"); }
int vterm_init(vterm_state_t *s, int width, int height, volatile uint16_t *buffer) { memset(s, 0, sizeof(vterm_state_t)); s->magic = VTERM_MAGIC; s->width = width; s->height = height; s->buffer = buffer; s->fgColour = VTERM_LIGHT_GRAY; s->bgColour = VTERM_BLACK; s->autoRenderUpdate = true; /* Initialise virtual terminal. */ dprintf("Initialising %d x %d Virtual Terminal object...\n", width, height); s->vt = vterm_new(s->height, s->width); if (!s->vt) { ROS_ERROR("Failed to create terminal.\n"); return EINVALID; } /* Grab the virtual screen & state object. */ s->vts = vterm_obtain_screen(s->vt); s->vtstate = vterm_obtain_state(s->vt); assert(s->vts && s->vtstate); /* Set parameters. */ vterm_parser_set_utf8(s->vt, true); vterm_state_set_bold_highbright(s->vtstate, true); vterm_screen_reset(s->vts, 1); return ESUCCESS; }
TermView::TermView() : BView("TermView", B_WILL_DRAW | B_FRAME_EVENTS) { SetFont(be_fixed_font); font_height height; GetFontHeight(&height); fFontHeight = height.ascent + height.descent + height.leading; fFontWidth = be_fixed_font->StringWidth("X"); fTerm = vterm_new(kDefaultHeight, kDefaultWidth); fTermScreen = vterm_obtain_screen(fTerm); vterm_screen_set_callbacks(fTermScreen, &sScreenCallbacks, this); vterm_screen_reset(fTermScreen, 1); vterm_parser_set_utf8(fTerm, 1); }
void term_init(struct aug_term *term, int rows, int cols) { VTermScreen *vts; VTermState *state; term->master = 0; term->vt = vterm_new(rows, cols); state = vterm_obtain_state(term->vt); /* have to cast default_color because the api isnt const correct */ vterm_state_set_default_colors(state, &VTERM_DEFAULT_COLOR, &VTERM_DEFAULT_COLOR); vterm_parser_set_utf8(term->vt, 1); vts = vterm_obtain_screen(term->vt); vterm_screen_enable_altscreen(vts, 1); vterm_screen_set_damage_merge(vts, VTERM_DAMAGE_SCROLL); vterm_screen_reset(vts, 1); term_inject_clear(term); term->user = NULL; term->io_callbacks.refresh = NULL; AUG_LOCK_INIT(term); }
VTermMM::VTermMM(int rows, int columns) : fd(0), foreground(VTERMMM_WHITE), background(VTERMMM_BLACK), cells(rows, vrow(columns)), reverse(false), invalid_region() { for(int row = 0; row < rows; ++row) { for(int col = 0; col < columns; ++col) { cells[row][col].SetX(col); cells[row][col].SetY(row); } } cursor.row = 0; cursor.col = 0; invalidate(0, rows, 0, columns); _term = vterm_new(rows, columns); vterm_parser_set_utf8(_term, 1); VTermState *vts = vterm_obtain_state(_term); vterm_state_set_callbacks(vts, &vterm_callbacks, this); }