ascii-chat
Binary v0.15.83-53-gb711d8720
Library lib/v0.3.2-701-gb711d8720
Video chat in your terminal
Loading...
Searching...
No Matches
TerminalRendererBinding Class Reference

Public Member Functions

 TerminalRendererBinding (int cols, int rows, double font_size, bool matrix, int selection)
 ~TerminalRendererBinding ()
 TerminalRendererBinding (const TerminalRendererBinding &)=delete
TerminalRendererBinding & operator= (const TerminalRendererBinding &)=delete
bool valid () const
int error () const
int cols ()
int rows ()
int width ()
int height ()
int setZalgo (int level)
int feed (const std::string &text)
bool copyPixels (RasterPixels output)

Detailed Description

Definition at line 13 of file terminal_renderer.cpp.

Constructor & Destructor Documentation

◆ TerminalRendererBinding() [1/2]

TerminalRendererBinding::TerminalRendererBinding ( int cols,
int rows,
double font_size,
bool matrix,
int selection )
inline

Definition at line 15 of file terminal_renderer.cpp.

15 {
16 term_renderer_config_t config{};
17 config.cols = cols;
18 config.rows = rows;
19 config.font_size_pt = font_size;
20 config.theme = static_cast<term_renderer_theme_t>(0);
21 config.font_data = get_font_default_ptr(selection);
22 config.font_data_size = get_font_default_size(selection);
23 if (matrix)
24 SAFE_STRNCPY(config.font_spec, "Matrix", sizeof(config.font_spec));
25 result_ = term_renderer_create(&config, &renderer_);
26 }
#define SAFE_STRNCPY(dst, src, size)
Definition common.h:423
asciichat_error_t term_renderer_create(const term_renderer_config_t *cfg, terminal_renderer_t **out)
term_renderer_theme_t
Terminal rendering theme.
Definition renderer.h:27
unsigned int get_font_default_size(int selection)
const unsigned char * get_font_default_ptr(int selection)
const uint8_t * font_data
Definition renderer.h:40
term_renderer_theme_t theme
Definition renderer.h:37
char font_spec[PLATFORM_MAX_PATH_LENGTH]
Definition renderer.h:38

References term_renderer_config_t::cols, cols(), term_renderer_config_t::font_data, term_renderer_config_t::font_data_size, term_renderer_config_t::font_size_pt, term_renderer_config_t::font_spec, get_font_default_ptr(), get_font_default_size(), term_renderer_config_t::rows, rows(), SAFE_STRNCPY, term_renderer_create(), and term_renderer_config_t::theme.

Referenced by operator=(), and TerminalRendererBinding().

◆ ~TerminalRendererBinding()

TerminalRendererBinding::~TerminalRendererBinding ( )
inline

Definition at line 27 of file terminal_renderer.cpp.

27 {
28 if (renderer_)
29 term_renderer_destroy(renderer_);
30 }
void term_renderer_destroy(terminal_renderer_t *r)

References term_renderer_destroy().

◆ TerminalRendererBinding() [2/2]

TerminalRendererBinding::TerminalRendererBinding ( const TerminalRendererBinding & )
delete

Member Function Documentation

◆ cols()

int TerminalRendererBinding::cols ( )
inline

Definition at line 40 of file terminal_renderer.cpp.

40 {
41 return term_renderer_get_cols(renderer_);
42 }
int term_renderer_get_cols(terminal_renderer_t *r)

References term_renderer_get_cols().

Referenced by EMSCRIPTEN_BINDINGS(), and TerminalRendererBinding().

◆ copyPixels()

bool TerminalRendererBinding::copyPixels ( RasterPixels output)
inline

Definition at line 58 of file terminal_renderer.cpp.

58 {
59 if (!renderer_) {
60 SET_ERRNO(ERROR_INVALID_STATE, "Terminal renderer is not initialized");
61 return false;
62 }
63 const int w = width(), h = height(), pitch = term_renderer_pitch(renderer_);
64 const uint8_t *pixels = term_renderer_pixels(renderer_);
65 if (!pixels || w <= 0 || h <= 0 || pitch <= 0 || static_cast<uint64_t>(pitch) < static_cast<uint64_t>(w) * 4) {
66 SET_ERRNO(ERROR_INVALID_STATE, "Terminal renderer has invalid pixel storage");
67 return false;
68 }
69 if (static_cast<uint64_t>(w) * h * 4 != output["length"].as<size_t>()) {
70 SET_ERRNO(ERROR_INVALID_PARAM, "Terminal pixel output size does not match %dx%d", w, h);
71 return false;
72 }
73 const size_t row_bytes = static_cast<size_t>(w) * 4;
74 if (static_cast<size_t>(pitch) == row_bytes) {
75 output.call<void>("set", emscripten::val(emscripten::typed_memory_view(row_bytes * h, pixels)));
76 } else {
77 for (int row = 0; row < h; ++row) {
78 output.call<void>(
79 "set", emscripten::val(emscripten::typed_memory_view(row_bytes, pixels + static_cast<size_t>(row) * pitch)),
80 row * row_bytes);
81 }
82 }
83 return true;
84 }
#define SET_ERRNO(code,...)
unsigned long long uint64_t
Definition common.h:63
unsigned char uint8_t
Definition common.h:60
@ ERROR_INVALID_STATE
@ ERROR_INVALID_PARAM
const uint8_t * term_renderer_pixels(terminal_renderer_t *r)
int term_renderer_pitch(terminal_renderer_t *r)

References ERROR_INVALID_PARAM, ERROR_INVALID_STATE, height(), SET_ERRNO, term_renderer_pitch(), term_renderer_pixels(), and width().

Referenced by EMSCRIPTEN_BINDINGS().

◆ error()

int TerminalRendererBinding::error ( ) const
inline

Definition at line 37 of file terminal_renderer.cpp.

37 {
38 return result_;
39 }

Referenced by EMSCRIPTEN_BINDINGS().

◆ feed()

int TerminalRendererBinding::feed ( const std::string & text)
inline

Definition at line 55 of file terminal_renderer.cpp.

55 {
56 return term_renderer_feed(renderer_, text.data(), text.size());
57 }
asciichat_error_t term_renderer_feed(terminal_renderer_t *r, const char *ansi_frame, size_t len)

References term_renderer_feed().

Referenced by EMSCRIPTEN_BINDINGS().

◆ height()

int TerminalRendererBinding::height ( )
inline

Definition at line 49 of file terminal_renderer.cpp.

49 {
50 return term_renderer_height_px(renderer_);
51 }
int term_renderer_height_px(terminal_renderer_t *r)

References term_renderer_height_px().

Referenced by copyPixels(), and EMSCRIPTEN_BINDINGS().

◆ operator=()

TerminalRendererBinding & TerminalRendererBinding::operator= ( const TerminalRendererBinding & )
delete

◆ rows()

int TerminalRendererBinding::rows ( )
inline

Definition at line 43 of file terminal_renderer.cpp.

43 {
44 return term_renderer_get_rows(renderer_);
45 }
int term_renderer_get_rows(terminal_renderer_t *r)

References term_renderer_get_rows().

Referenced by EMSCRIPTEN_BINDINGS(), and TerminalRendererBinding().

◆ setZalgo()

int TerminalRendererBinding::setZalgo ( int level)
inline

Definition at line 52 of file terminal_renderer.cpp.

52 {
53 return term_renderer_set_zalgo(renderer_, level);
54 }
asciichat_error_t term_renderer_set_zalgo(terminal_renderer_t *r, int level)

References term_renderer_set_zalgo().

Referenced by EMSCRIPTEN_BINDINGS().

◆ valid()

bool TerminalRendererBinding::valid ( ) const
inline

Definition at line 34 of file terminal_renderer.cpp.

34 {
35 return renderer_ && !result_;
36 }

Referenced by EMSCRIPTEN_BINDINGS().

◆ width()

int TerminalRendererBinding::width ( )
inline

Definition at line 46 of file terminal_renderer.cpp.

46 {
47 return term_renderer_width_px(renderer_);
48 }
int term_renderer_width_px(terminal_renderer_t *r)

References term_renderer_width_px().

Referenced by copyPixels(), and EMSCRIPTEN_BINDINGS().


The documentation for this class was generated from the following file: