Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
notcurses_direct(3)					   notcurses_direct(3)

NAME
       notcurses_direct	- the Direct Mode API

SYNOPSIS
	      #include <notcurses/direct.h>

	      #define NCDIRECT_OPTION_INHIBIT_SETLOCALE	  0x0001ull
	      #define NCDIRECT_OPTION_INHIBIT_CBREAK	  0x0002ull
	      #define NCDIRECT_OPTION_NO_QUIT_SIGHANDLERS 0x0008ull
	      #define NCDIRECT_OPTION_VERBOSE		  0x0010ull
	      #define NCDIRECT_OPTION_VERY_VERBOSE	  0x0020ull

       struct ncdirect*	ncdirect_init(const char* termtype, FILE* fp, uint64_t
       flags);

       unsigned	ncdirect_palette_size(const struct ncdirect* nc);

       int  ncdirect_set_bg_rgb8(struct	 ncdirect* nc, unsigned	r, unsigned g,
       unsigned	b);

       int ncdirect_set_fg_rgb8(struct ncdirect* nc, unsigned r,  unsigned  g,
       unsigned	b);

       int ncdirect_set_fg_rgb(struct ncdirect*	nc, unsigned rgb);

       int ncdirect_set_bg_rgb(struct ncdirect*	nc, unsigned rgb);

       int ncdirect_set_fg_default(struct ncdirect* nc);

       int ncdirect_set_bg_default(struct ncdirect* nc);

       int ncdirect_set_fg_palindex(struct ncdirect* nc, int pidx);

       int ncdirect_set_bg_palindex(struct ncdirect* nc, int pidx);

       unsigned	ncdirect_dim_x(const struct ncdirect* nc);

       unsigned	ncdirect_dim_y(const struct ncdirect* nc);

       unsigned	ncdirect_supported_styles(const	struct ncdirect* nc);

       int ncdirect_styles_set(struct ncdirect*	n, unsigned stylebits);

       int ncdirect_styles_on(struct ncdirect* n, unsigned stylebits);

       int ncdirect_styles_off(struct ncdirect*	n, unsigned stylebits);

       unsigned	ncdirect_styles(struct ncdirect* n);

       int ncdirect_clear(struct ncdirect* nc)

       int ncdirect_stop(struct	ncdirect* nc);

       int ncdirect_cursor_move_yx(struct ncdirect* n, int y, int x);

       int ncdirect_cursor_yx(struct ncdirect* n, unsigned* y, unsigned* x);

       int ncdirect_cursor_enable(struct ncdirect* nc);

       int ncdirect_cursor_disable(struct ncdirect* nc);

       int ncdirect_cursor_up(struct ncdirect* nc, int num);

       int ncdirect_cursor_left(struct ncdirect* nc, int num);

       int ncdirect_cursor_right(struct	ncdirect* nc, int num);

       int ncdirect_cursor_down(struct ncdirect* nc, int num);

       int ncdirect_putstr(struct ncdirect* nc,	uint64_t channels, const char*
       utf8);

       int ncdirect_putegc(struct ncdirect* nc,	uint64_t channels, const char*
       utf8, int* sbytes);

       int ncdirect_printf_aligned(struct ncdirect* n, int y, ncalign_e	align,
       const char* fmt,	...);

       const char* ncdirect_detected_terminal(const struct ncdirect* n);

       int ncdirect_hline_interp(struct	ncdirect* n, const char* egc, unsigned
       len, uint64_t h1, uint64_t h2);

       int ncdirect_vline_interp(struct	ncdirect* n, const char* egc, unsigned
       len, uint64_t h1, uint64_t h2);

       int ncdirect_box(struct ncdirect* n, uint64_t ul, uint64_t ur, uint64_t
       ll,  uint64_t  lr,  const wchar_t* wchars, int ylen, int	xlen, unsigned
       ctlword);

       int ncdirect_rounded_box(struct ncdirect* n, uint64_t ul, uint64_t  ur,
       uint64_t	ll, uint64_t lr, int ylen, int xlen, unsigned ctlword);

       int  ncdirect_double_box(struct	ncdirect* n, uint64_t ul, uint64_t ur,
       uint64_t	ll, uint64_t lr, int ylen, int xlen, unsigned ctlword);

       ncdirectv* ncdirect_render_frame(struct ncdirect* n, const char*	 file-
       name, ncblitter_e blitter, ncscale_e scale, int maxy, int maxx);

       char* ncdirect_readline(struct ncdirect*	n, const char* prompt);

       bool ncdirect_cantruecolor(const	struct ncdirect* nc);

       bool ncdirect_canchangecolor(const struct ncdirect* nc);

       bool ncdirect_canfade(const struct ncdirect* nc);

       bool ncdirect_canopen_images(const struct ncdirect* nc);

       bool ncdirect_canopen_videos(const struct ncdirect* nc);

       bool ncdirect_canutf8(const struct ncdirect* nc);

       int ncdirect_check_pixel_support(const struct ncdirect* nc);

       bool ncdirect_canhalfblock(const	struct ncdirect* nc);

       bool ncdirect_canquadrant(const struct ncdirect*	nc);

       bool ncdirect_cansextant(const struct ncdirect* nc);

       bool ncdirect_canbraille(const struct ncdirect* nc);

       bool ncdirect_canget_cursor(const struct	ncdirect* nc);

       uint32_t	ncdirect_get(struct ncdirect* n, const struct timespec*	absdl,
       ncinput*	ni);

	      typedef struct ncvgeom {
		int pixy, pixx;	    // true pixel geometry of ncvisual data
		int cdimy, cdimx;   // terminal	cell geometry when this	was calculated
		int rpixy, rpixx;   // rendered	pixel geometry
		int rcelly, rcellx; // rendered	cell geometry
		int scaley, scalex; // pixels per filled cell
		// only	defined	for NCBLIT_PIXEL
		int maxpixely, maxpixelx;
	      }	ncvgeom;

       int  ncdirect_render_image(struct  ncdirect*  n,	 const char* filename,
       ncblitter_e blitter, ncscale_e scale);

       int  ncdirect_raster_frame(struct   ncdirect*   n,   ncdirectv*	 ncdv,
       ncalign_e align);

       int ncdirect_stream(struct ncdirect* n, const char* filename, ncstream-
       cb streamer, struct ncvisual_options* vopts, void* curry);

       int   ncdirect_raster_frame(struct   ncdirect*	n,   ncdirectv*	 ncdv,
       ncalign_e align);

       struct ncdirectf* ncdirectf_from_file(struct ncdirect* n,  const	 char*
       filename);*

       void ncdirectf_free(struct ncdirectf* frame);

       ncdirectv*   ncdirectf_render(struct  ncdirect*	n,  struct  ncdirectf*
       frame, const struct ncvisual_options vopts);

       int ncdirectf_geom(struct ncdirect* n, struct ncdirectf*	 frame,	 const
       struct ncvisual_options vopts, ncvgeom* geom);

DESCRIPTION
       ncdirect_init  prepares	the  FILE  provided  as	 fp for	colorizing and
       styling.	 On success, a pointer to a valid struct ncdirect is returned.
       NULL is returned	on failure.  Before the	process	 exits,	 ncdirect_stop
       should  be  called  to reset the	terminal and free up resources.	 ncdi-
       rect_init places	the terminal into  "cbreak"  (also  known  as  "rare")
       mode,  disabling	 line-buffering	 and echo of input.  ncdirect_stop re-
       stores the terminal state  as  it  was  when  the  corresponding	 ncdi-
       rect_init call was made.	 A process can have only one context active at
       once.

       The following flags are defined:

        NCDIRECT_OPTION_INHIBIT_SETLOCALE:  Unless  this  flag	 is set, ncdi-
	 rect_init will	call setlocale(LC_ALL, NULL).  If the result is	either
	 "C" or	"POSIX", it will print a diagnostic to stderr, and  then  call
	 setlocale(LC_ALL, "").	 This will attempt to set the locale based off
	 the LANG environment variable.	 Your program should call setlocale(3)
	 itself, usually as one	of the first lines.

        NCDIRECT_OPTION_INHIBIT_CBREAK:   Unless  this	 flag  is  set,	 ncdi-
	 rect_init will	place the terminal into	cbreak mode  (i.e.   disabling
	 echo and line buffering; see tcgetattr(3)).

        NCDIRECT_OPTION_DRAIN_INPUT:  Standard	input may be freely discarded.
	 If you	do not intend to process input,	pass  this  flag.   Otherwise,
	 input	can buffer up, eventually preventing Notcurses from processing
	 terminal messages.  It	will furthermore avoid wasting time processing
	 useless input.

        NCDIRECT_OPTION_NO_QUIT_SIGHANDLERS: A	signal handler will usually be
	 installed for	SIGABRT,  SIGBUS,  SIGFPE,  SIGILL,  SIGINT,  SIGQUIT,
	 SIGSEGV,  and	SIGTERM,  cleaning up the terminal on such exceptions.
	 With this flag, the handler will not be installed.

        NCDIRECT_OPTION_VERBOSE: Enable diagnostics to	stderr at the level of
	 NCLOGLEVEL_WARNING.

        NCDIRECT_OPTION_VERY_VERBOSE: Enable all diagnostics  (equivalent  to
	 NCLOGLEVEL_TRACE).  Implies NCDIRECT_OPTION_VERBOSE.

       The  loglevel  can  also	be set externally using	the NOTCURSES_LOGLEVEL
       environment variable.  See notcurses_init(3) for	more information.

       An appropriate terminfo(5) entry	must exist for the terminal.  This en-
       try is usually selected using the value of the TERM  environment	 vari-
       able  (see  getenv(3)), but a non-NULL value for	termtype will override
       this.  An invalid terminfo specification	can lead  to  reduced  perfor-
       mance,  reduced display capabilities, and/or display errors.  notcurses
       natively	targets	24bpp/8bpc RGB color, and it is	thus desirable to  use
       a terminal with the rgb capability (e.g.	 xterm's xterm-direct).

       ncdirect_dim_x  returns	the  current  number  of  columns,  and	 ncdi-
       rect_dim_y the current number of	rows.

       ncdirect_clear clears the screen	using a	control	code if	one exists  in
       terminfo.   Otherwise,  it  prints successive newlines to scroll	every-
       thing off.

       ncdirect_cursor_move_yx moves the cursor	to the	specified  coordinate.
       -1 can be specified for either y	or x to	leave that axis	unchanged.

       ncdirect_enable_cursor  and  ncdirect_disable_cursor  always  flush the
       output stream, taking effect immediately.

       ncdirect_cursor_up and friends all move relative	to the	current	 posi-
       tion.   Attempting to e.g.  move	up while on the	top row	will return 0,
       but have	no effect.

       ncdirect_readline reads a (heap-allocated) line	of  arbitrary  length,
       supporting  some	libreadline-style line-editing controls.  NCDIRECT_OP-
       TION_INHIBIT_CBREAK should not be used  if  you	intend	to  use	 ncdi-
       rect_readline; if used, line-editing keybindings	cannot be implemented.
       Input will be echoed whether this option	is used	or not.

       ncdirect_check_pixel_support  must  be called (and successfully return)
       before NCBLIT_PIXEL can be used to render images;  see  notcurses_visu-
       al(3) for more details.

       When  rendering	an  image,  maxy  and maxx specify a maximum number of
       (cell) rows and columns to use, respectively.  Passing 0	means "use  as
       much  space as is necessary".  It is an error to	pass a negative	number
       for either.

RETURN VALUES
       ncdirect_init returns NULL on failure.	Otherwise,  the	 return	 value
       points  to  a valid struct ncdirect, which can be used until it is pro-
       vided to	ncdirect_stop.

       ncdirect_printf_aligned returns the number of bytes written on success.
       On failure, it returns some negative number.

       ncdirect_putstr returns a nonnegative number on	success,  and  EOF  on
       failure.

       ncdirect_putegc	returns	 the number of columns consumed	on success, or
       -1 on failure.  If sbytes is not	NULL, the  number  of  bytes  consumed
       will be written to it.

       ncdirect_check_pixel_support returns -1 on error, 0 if there is no pix-
       el support, and 1 if pixel support is successfully detected.

       ncdirect_styles returns the current styling, a bitmask over the various
       NCSTYLE_	constants.

       All other functions return 0 on success,	and non-zero on	error.

NOTES
       You  are	recommended to accept -v and -vv as command-line options, map-
       ping them to NCDIRECT_OPTION_VERBOSE  and  NCDIRECT_OPTION_VERY_VERBOSE
       respectively.

SEE ALSO
       getenv(3),    notcurses(3),    notcurses_init(3),   notcurses_plane(3),
       notcurses_visual(3), terminfo(5), termios(3)

AUTHORS
       nick black <nickblack@linux.com>.

				    v3.0.8		   notcurses_direct(3)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=notcurses_direct&sektion=3&manpath=FreeBSD+Ports+14.3.quarterly>

home | help