DVX_GUI/widgets/ansiTerm/ansiTerm.h

31 lines
1.5 KiB
C

// ansiTerm.h -- ANSI terminal widget API
#ifndef ANSITERM_H
#define ANSITERM_H
#include "../../core/dvxWgt.h"
typedef struct {
WidgetT *(*create)(WidgetT *parent, int32_t cols, int32_t rows);
void (*write)(WidgetT *w, const uint8_t *data, int32_t len);
void (*clear)(WidgetT *w);
void (*setComm)(WidgetT *w, void *ctx, int32_t (*readFn)(void *, uint8_t *, int32_t), int32_t (*writeFn)(void *, const uint8_t *, int32_t));
void (*setScrollback)(WidgetT *w, int32_t maxLines);
void (*poll)(WidgetT *w);
int32_t (*repaint)(WidgetT *w, int32_t *outY, int32_t *outH);
} AnsiTermApiT;
static inline const AnsiTermApiT *dvxAnsiTermApi(void) {
static const AnsiTermApiT *sApi;
if (!sApi) { sApi = (const AnsiTermApiT *)wgtGetApi("ansiterm"); }
return sApi;
}
#define wgtAnsiTerm(parent, cols, rows) dvxAnsiTermApi()->create(parent, cols, rows)
#define wgtAnsiTermWrite(w, data, len) dvxAnsiTermApi()->write(w, data, len)
#define wgtAnsiTermClear(w) dvxAnsiTermApi()->clear(w)
#define wgtAnsiTermSetComm(w, ctx, readFn, writeFn) dvxAnsiTermApi()->setComm(w, ctx, readFn, writeFn)
#define wgtAnsiTermSetScrollback(w, maxLines) dvxAnsiTermApi()->setScrollback(w, maxLines)
#define wgtAnsiTermPoll(w) dvxAnsiTermApi()->poll(w)
#define wgtAnsiTermRepaint(w, outY, outH) dvxAnsiTermApi()->repaint(w, outY, outH)
#endif // ANSITERM_H