Notcurses 3.0.13
a blingful library for TUIs and character graphics
Loading...
Searching...
No Matches
Direct.hh
Go to the documentation of this file.
1#ifndef __NCPP_DIRECT_HH
2#define __NCPP_DIRECT_HH
3
4#include <cstdio>
5#include <notcurses/direct.h>
7
8#include "Root.hh"
9#include "Cell.hh"
10#include "NCAlign.hh"
11
12namespace ncpp
13{
14 class NotCurses;
15
17 {
18 public:
19 explicit Direct (const char *termtype = nullptr, FILE *fp = nullptr,
20 uint64_t flags = 0, NotCurses *ncinst = nullptr)
21 : Root (ncinst)
22 {
23 direct = ncdirect_init (termtype, fp == nullptr ? stdout : fp, flags);
24 if (direct == nullptr)
25 throw init_error ("Notcurses failed to initialize direct mode");
26 }
27
29 {
30 ncdirect_stop (direct);
31 }
32
33 bool clear () const NOEXCEPT_MAYBE
34 {
35 return error_guard (ncdirect_clear (direct), -1);
36 }
37
39 {
40 return error_guard (ncdirect_set_fg_default (direct), -1);
41 }
42
43 bool set_fg_rgb (unsigned rgb) const NOEXCEPT_MAYBE
44 {
45 return error_guard (ncdirect_set_fg_rgb (direct, rgb), -1);
46 }
47
48 bool set_fg_rgb (unsigned r, unsigned g, unsigned b) const NOEXCEPT_MAYBE
49 {
50 return error_guard (ncdirect_set_fg_rgb8 (direct, r, g, b), -1);
51 }
52
53 bool fg_palindex (int pidx) const NOEXCEPT_MAYBE
54 {
55 return error_guard (ncdirect_set_fg_palindex (direct, pidx), -1);
56 }
57
59 {
60 return error_guard (ncdirect_set_bg_default (direct), -1);
61 }
62
63 bool set_bg_rgb (unsigned rgb) const NOEXCEPT_MAYBE
64 {
65 return error_guard (ncdirect_set_bg_rgb (direct, rgb), -1);
66 }
67
68 bool set_bg_rgb (unsigned r, unsigned g, unsigned b) const NOEXCEPT_MAYBE
69 {
70 return error_guard (ncdirect_set_bg_rgb8 (direct, r, g, b), -1);
71 }
72
73 bool bg_palindex (int pidx) const NOEXCEPT_MAYBE
74 {
75 return error_guard (ncdirect_set_bg_palindex (direct, pidx), -1);
76 }
77
78 unsigned get_dim_x () const NOEXCEPT_MAYBE
79 {
80 return ncdirect_dim_x (direct);
81 }
82
83 unsigned get_dim_y () const NOEXCEPT_MAYBE
84 {
85 return ncdirect_dim_y (direct);
86 }
87
88 unsigned get_palette_size () const noexcept
89 {
90 return ncdirect_palette_size (direct);
91 }
92
93 void styles_set (CellStyle stylebits) const noexcept
94 {
95 ncdirect_set_styles (direct, static_cast<unsigned>(stylebits));
96 }
97
98 void styles_on (CellStyle stylebits) const noexcept
99 {
100 ncdirect_on_styles (direct, static_cast<unsigned>(stylebits));
101 }
102
103 void styles_off (CellStyle stylebits) const noexcept
104 {
105 ncdirect_off_styles (direct, static_cast<unsigned>(stylebits));
106 }
107
108 bool cursor_move_yx (int y, int x) const NOEXCEPT_MAYBE
109 {
110 return error_guard (ncdirect_cursor_move_yx (direct, y, x), -1);
111 }
112
113 bool cursor_up (int num) const NOEXCEPT_MAYBE
114 {
115 return error_guard (ncdirect_cursor_up (direct, num), -1);
116 }
117
118 bool cursor_left (int num) const NOEXCEPT_MAYBE
119 {
120 return error_guard (ncdirect_cursor_left (direct, num), -1);
121 }
122
123 bool cursor_right (int num) const NOEXCEPT_MAYBE
124 {
125 return error_guard (ncdirect_cursor_right (direct, num), -1);
126 }
127
128 bool cursor_down (int num) const NOEXCEPT_MAYBE
129 {
130 return error_guard (ncdirect_cursor_down (direct, num), -1);
131 }
132
134 {
135 return error_guard (ncdirect_cursor_enable (direct), -1);
136 }
137
139 {
140 return error_guard (ncdirect_cursor_disable (direct), -1);
141 }
142
143 void get_cursor_yx (unsigned *y, unsigned *x) const noexcept
144 {
145 ncdirect_cursor_yx (direct, y, x);
146 }
147
148 void get_cursor_yx (unsigned &y, unsigned &x) const noexcept
149 {
150 get_cursor_yx (&y, &x);
151 }
152
153 int render_image (const char* file, NCAlign align, ncblitter_e blitter, ncscale_e scale) const noexcept
154 {
155 return ncdirect_render_image (direct, file, static_cast<ncalign_e>(align), blitter, scale);
156 }
157
158 ncdirectv* prep_image (const char* file, ncblitter_e blitter, ncscale_e scale, int maxy, int maxx) const noexcept
159 {
160 return ncdirect_render_frame (direct, file, blitter, scale, maxy, maxx);
161 }
162
163 int raster_image (ncdirectv* faken, NCAlign align) const noexcept
164 {
165 return ncdirect_raster_frame (direct, faken, static_cast<ncalign_e>(align));
166 }
167
168 int streamfile (const char* filename, ncstreamcb streamer, struct ncvisual_options* vopts, void* curry) const NOEXCEPT_MAYBE
169 {
170 return error_guard<int> (ncdirect_stream(direct, filename, streamer, vopts, curry), -1);
171 }
172
173 bool putstr (uint64_t channels, const char* utf8) const NOEXCEPT_MAYBE
174 {
175 return error_guard (ncdirect_putstr (direct, channels, utf8), -1);
176 }
177
178 // TODO: ncdirect_printf_aligned (will need a version which takes vargs)
179
180 int hline_interp (const char* egc, unsigned len, uint64_t h1, uint64_t h2) const noexcept
181 {
182 return ncdirect_hline_interp (direct, egc, len, h1, h2);
183 }
184
185 int vline_interp (const char* egc, unsigned len, uint64_t h1, uint64_t h2) const noexcept
186 {
187 return ncdirect_vline_interp (direct, egc, len, h1, h2);
188 }
189
190 bool box (uint64_t ul, uint64_t ur, uint64_t ll, uint64_t lr, const wchar_t* wchars, int ylen, int xlen, unsigned ctlword) const NOEXCEPT_MAYBE
191 {
192 return error_guard (ncdirect_box (direct, ul, ur, ll, lr, wchars, ylen, xlen, ctlword), -1);
193 }
194
195 bool rounded_box (uint64_t ul, uint64_t ur, uint64_t ll, uint64_t lr, int ylen, int xlen, unsigned ctlword) const NOEXCEPT_MAYBE
196 {
197 return error_guard (ncdirect_rounded_box (direct, ul, ur, ll, lr, ylen, xlen, ctlword), -1);
198 }
199
200 bool double_box (uint64_t ul, uint64_t ur, uint64_t ll, uint64_t lr, int ylen, int xlen, unsigned ctlword) const NOEXCEPT_MAYBE
201 {
202 return error_guard (ncdirect_double_box (direct, ul, ur, ll, lr, ylen, xlen, ctlword), -1);
203 }
204
205 bool flush () const NOEXCEPT_MAYBE
206 {
207 return error_guard (ncdirect_flush (direct), -1);
208 }
209
210 char32_t get (ncinput *ni, bool blocking) const noexcept
211 {
212 if (blocking)
213 return ncdirect_get_blocking (direct, ni);
214 return ncdirect_get_nblock (direct, ni);
215 }
216
217 char32_t get (const struct timespec *ts, ncinput *ni) const noexcept
218 {
219 return ncdirect_get (direct, ts, ni);
220 }
221
222 int get_inputready_fd () const noexcept
223 {
224 return ncdirect_inputready_fd (direct);
225 }
226
227 bool canopen_images () const noexcept
228 {
229 return ncdirect_canopen_images (direct);
230 }
231
232 bool canutf8 () const noexcept
233 {
234 return ncdirect_canutf8 (direct);
235 }
236
237 int check_pixel_support() noexcept
238 {
239 return ncdirect_check_pixel_support (direct);
240 }
241
242 private:
243 ncdirect *direct;
244 };
245}
246#endif
#define NCPP_API_EXPORT
Definition _helpers.hh:9
#define NOEXCEPT_MAYBE
Definition Root.hh:15
void styles_off(CellStyle stylebits) const noexcept
Definition Direct.hh:103
bool set_bg_rgb(unsigned r, unsigned g, unsigned b) const NOEXCEPT_MAYBE
Definition Direct.hh:68
int hline_interp(const char *egc, unsigned len, uint64_t h1, uint64_t h2) const noexcept
Definition Direct.hh:180
bool cursor_down(int num) const NOEXCEPT_MAYBE
Definition Direct.hh:128
bool set_fg_default() const NOEXCEPT_MAYBE
Definition Direct.hh:38
bool set_fg_rgb(unsigned rgb) const NOEXCEPT_MAYBE
Definition Direct.hh:43
unsigned get_palette_size() const noexcept
Definition Direct.hh:88
ncdirectv * prep_image(const char *file, ncblitter_e blitter, ncscale_e scale, int maxy, int maxx) const noexcept
Definition Direct.hh:158
bool flush() const NOEXCEPT_MAYBE
Definition Direct.hh:205
bool canopen_images() const noexcept
Definition Direct.hh:227
int get_inputready_fd() const noexcept
Definition Direct.hh:222
int check_pixel_support() noexcept
Definition Direct.hh:237
bool cursor_enable() const NOEXCEPT_MAYBE
Definition Direct.hh:133
char32_t get(ncinput *ni, bool blocking) const noexcept
Definition Direct.hh:210
bool clear() const NOEXCEPT_MAYBE
Definition Direct.hh:33
bool cursor_left(int num) const NOEXCEPT_MAYBE
Definition Direct.hh:118
bool putstr(uint64_t channels, const char *utf8) const NOEXCEPT_MAYBE
Definition Direct.hh:173
bool box(uint64_t ul, uint64_t ur, uint64_t ll, uint64_t lr, const wchar_t *wchars, int ylen, int xlen, unsigned ctlword) const NOEXCEPT_MAYBE
Definition Direct.hh:190
bool cursor_right(int num) const NOEXCEPT_MAYBE
Definition Direct.hh:123
bool set_bg_rgb(unsigned rgb) const NOEXCEPT_MAYBE
Definition Direct.hh:63
bool canutf8() const noexcept
Definition Direct.hh:232
int render_image(const char *file, NCAlign align, ncblitter_e blitter, ncscale_e scale) const noexcept
Definition Direct.hh:153
Direct(const char *termtype=nullptr, FILE *fp=nullptr, uint64_t flags=0, NotCurses *ncinst=nullptr)
Definition Direct.hh:19
int vline_interp(const char *egc, unsigned len, uint64_t h1, uint64_t h2) const noexcept
Definition Direct.hh:185
bool rounded_box(uint64_t ul, uint64_t ur, uint64_t ll, uint64_t lr, int ylen, int xlen, unsigned ctlword) const NOEXCEPT_MAYBE
Definition Direct.hh:195
bool cursor_up(int num) const NOEXCEPT_MAYBE
Definition Direct.hh:113
bool set_fg_rgb(unsigned r, unsigned g, unsigned b) const NOEXCEPT_MAYBE
Definition Direct.hh:48
void styles_on(CellStyle stylebits) const noexcept
Definition Direct.hh:98
unsigned get_dim_y() const NOEXCEPT_MAYBE
Definition Direct.hh:83
unsigned get_dim_x() const NOEXCEPT_MAYBE
Definition Direct.hh:78
int raster_image(ncdirectv *faken, NCAlign align) const noexcept
Definition Direct.hh:163
bool cursor_move_yx(int y, int x) const NOEXCEPT_MAYBE
Definition Direct.hh:108
bool fg_palindex(int pidx) const NOEXCEPT_MAYBE
Definition Direct.hh:53
void get_cursor_yx(unsigned &y, unsigned &x) const noexcept
Definition Direct.hh:148
void styles_set(CellStyle stylebits) const noexcept
Definition Direct.hh:93
int streamfile(const char *filename, ncstreamcb streamer, struct ncvisual_options *vopts, void *curry) const NOEXCEPT_MAYBE
Definition Direct.hh:168
char32_t get(const struct timespec *ts, ncinput *ni) const noexcept
Definition Direct.hh:217
bool bg_palindex(int pidx) const NOEXCEPT_MAYBE
Definition Direct.hh:73
void get_cursor_yx(unsigned *y, unsigned *x) const noexcept
Definition Direct.hh:143
bool set_bg_default() const NOEXCEPT_MAYBE
Definition Direct.hh:58
bool cursor_disable() const NOEXCEPT_MAYBE
Definition Direct.hh:138
bool double_box(uint64_t ul, uint64_t ur, uint64_t ll, uint64_t lr, int ylen, int xlen, unsigned ctlword) const NOEXCEPT_MAYBE
Definition Direct.hh:200
int ncdirect_render_image(ncdirect *n, const char *file, ncalign_e align, ncblitter_e blitfxn, ncscale_e scale)
Definition direct.c:772
unsigned ncdirect_palette_size(const ncdirect *nc)
Definition direct.c:1222
int ncdirect_rounded_box(ncdirect *n, uint64_t ul, uint64_t ur, uint64_t ll, uint64_t lr, unsigned ylen, unsigned xlen, unsigned ctlword)
Definition direct.c:1506
int ncdirect_off_styles(ncdirect *n, unsigned stylebits)
Definition direct.c:1186
int ncdirect_set_fg_palindex(ncdirect *nc, int pidx)
Definition direct.c:781
int ncdirect_set_bg_palindex(ncdirect *nc, int pidx)
Definition direct.c:792
ncdirectv * ncdirect_render_frame(ncdirect *n, const char *file, ncblitter_e blitfxn, ncscale_e scale, int ymax, int xmax)
Definition direct.c:739
unsigned ncdirect_dim_x(ncdirect *nc)
Definition direct.c:148
int ncdirect_check_pixel_support(const ncdirect *n)
Definition direct.c:1527
int ncdirect_cursor_right(ncdirect *nc, int num)
Definition direct.c:98
int ncdirect_cursor_down(ncdirect *nc, int num)
Definition direct.c:117
int ncdirect_set_fg_default(ncdirect *nc)
Definition direct.c:1226
int ncdirect_set_styles(ncdirect *n, unsigned stylebits)
Definition direct.c:1203
int ncdirect_hline_interp(ncdirect *n, const char *egc, unsigned len, uint64_t c1, uint64_t c2)
Definition direct.c:1272
int ncdirect_putstr(ncdirect *nc, uint64_t channels, const char *utf8)
Definition direct.c:42
unsigned ncdirect_dim_y(ncdirect *nc)
Definition direct.c:161
int ncdirect_cursor_up(ncdirect *nc, int num)
Definition direct.c:68
int ncdirect_cursor_yx(ncdirect *n, unsigned *y, unsigned *x)
Definition direct.c:375
int ncdirect_cursor_disable(ncdirect *nc)
Definition direct.c:182
int ncdirect_set_bg_default(ncdirect *nc)
Definition direct.c:1249
int ncdirect_stop(ncdirect *nc)
Definition direct.c:954
int ncdirect_cursor_move_yx(ncdirect *n, int y, int x)
Definition direct.c:216
int ncdirect_clear(ncdirect *nc)
Definition direct.c:140
int ncdirect_cursor_enable(ncdirect *nc)
Definition direct.c:174
int ncdirect_cursor_left(ncdirect *nc, int num)
Definition direct.c:83
int ncdirect_flush(const ncdirect *nc)
Definition direct.c:1523
int ncdirect_raster_frame(ncdirect *n, ncdirectv *ncdv, ncalign_e align)
Definition direct.c:627
int ncdirect_vline_interp(ncdirect *n, const char *egc, unsigned len, uint64_t c1, uint64_t c2)
Definition direct.c:1330
int ncdirect_on_styles(ncdirect *n, unsigned stylebits)
Definition direct.c:1162
int ncdirect_box(ncdirect *n, uint64_t ul, uint64_t ur, uint64_t ll, uint64_t lr, const wchar_t *wchars, unsigned ylen, unsigned xlen, unsigned ctlword)
Definition direct.c:1395
int ncdirect_stream(ncdirect *n, const char *filename, ncstreamcb streamer, struct ncvisual_options *vopts, void *curry)
Definition direct.c:1534
int ncdirect_double_box(ncdirect *n, uint64_t ul, uint64_t ur, uint64_t ll, uint64_t lr, unsigned ylen, unsigned xlen, unsigned ctlword)
Definition direct.c:1512
bool ncdirect_canutf8(const ncdirect *n)
Definition direct.c:1519
API int API int API int uint64_t uint64_t uint64_t uint64_t lr
Definition direct.h:216
API int API int API int uint64_t uint64_t uint64_t uint64_t unsigned unsigned unsigned ctlword
Definition direct.h:217
API int API int API int uint64_t uint64_t uint64_t ll
Definition direct.h:216
API ALLOC struct ncdirect * ncdirect_init(const char *termtype, FILE *fp, uint64_t flags)
API int API int API int uint64_t uint64_t uint64_t uint64_t unsigned unsigned xlen
Definition direct.h:217
API int API int API int uint64_t uint64_t uint64_t uint64_t unsigned ylen
Definition direct.h:217
API int API int API int uint64_t ul
Definition direct.h:215
API int API int API int uint64_t uint64_t ur
Definition direct.h:215
const char * egc
Definition egcpool.h:173
int r
Definition fbuf.h:226
uint32_t ncdirect_get(ncdirect *n, const struct timespec *absdl, ncinput *ni)
Definition in.c:2773
CellStyle
Definition CellStyle.hh:13
NCAlign
Definition NCAlign.hh:9
int ncdirect_inputready_fd(ncdirect *n)
Definition notcurses.c:3095
ncscale_e
Definition notcurses.h:96
int y
Definition notcurses.h:1905
const struct ncplane_options struct ncvisual struct ncvisual_options * vopts
Definition notcurses.h:3484
ncalign_e
Definition notcurses.h:80
ncblitter_e
Definition notcurses.h:65
int int x
Definition notcurses.h:1905
int(* ncstreamcb)(struct ncvisual *, struct ncvisual_options *, const struct timespec *, void *)
Definition notcurses.h:3533
API int API int const nccell unsigned len
Definition notcurses.h:2588
int ncdirect_set_bg_rgb(ncdirect *nc, unsigned rgb)
Definition render.c:1667
int ncdirect_set_fg_rgb(ncdirect *nc, unsigned rgb)
Definition render.c:1697