31 lines
1.5 KiB
C
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
|