xref: /openbsd-src/usr.bin/mandoc/term.h (revision 2b0358df1d88d06ef4139321dd05bd5e05d91eaf)
1 /* $Id: term.h,v 1.1 2009/04/06 20:30:40 kristaps Exp $ */
2 /*
3  * Copyright (c) 2008, 2009 Kristaps Dzonsons <kristaps@openbsd.org>
4  *
5  * Permission to use, copy, modify, and distribute this software for any
6  * purpose with or without fee is hereby granted, provided that the
7  * above copyright notice and this permission notice appear in all
8  * copies.
9  *
10  * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
11  * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
12  * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE
13  * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
14  * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
15  * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
16  * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
17  * PERFORMANCE OF THIS SOFTWARE.
18  */
19 #ifndef TERM_H
20 #define TERM_H
21 
22 /* FIXME - clean up tabs. */
23 
24 #define	INDENT		  6
25 
26 __BEGIN_DECLS
27 
28 enum	termenc {
29 	TERMENC_ASCII,
30 	TERMENC_LATIN1,		/* Not implemented. */
31 	TERMENC_UTF8		/* Not implemented. */
32 };
33 
34 struct	termp {
35 	size_t		  rmargin;	/* Current right margin. */
36 	size_t		  maxrmargin;	/* Max right margin. */
37 	size_t		  maxcols;	/* Max size of buf. */
38 	size_t		  offset;	/* Margin offest. */
39 	size_t		  col;		/* Bytes in buf. */
40 	int		  flags;
41 #define	TERMP_NOSPACE	 (1 << 0)	/* No space before words. */
42 #define	TERMP_NOLPAD	 (1 << 1)	/* No leftpad before flush. */
43 #define	TERMP_NOBREAK	 (1 << 2)	/* No break after flush. */
44 #define	TERMP_LITERAL	 (1 << 3)	/* Literal words. */
45 #define	TERMP_IGNDELIM	 (1 << 4)	/* Delims like regulars. */
46 #define	TERMP_NONOSPACE	 (1 << 5)	/* No space (no autounset). */
47 #define	TERMP_NONOBREAK	 (1 << 7)	/* Don't newln NOBREAK. */
48 #define	TERMP_STYLE	  0x0300	/* Style mask. */
49 #define	TERMP_BOLD	 (1 << 8)	/* Styles... */
50 #define	TERMP_UNDER	 (1 << 9)
51 	char		 *buf;		/* Output buffer. */
52 	enum termenc	  enc;		/* Type of encoding. */
53 	void		 *symtab;	/* Encoded-symbol table. */
54 };
55 
56 void		 *term_ascii2htab(void);
57 const char	 *term_a2ascii(void *, const char *, size_t, size_t *);
58 void		  term_asciifree(void *);
59 
60 void		  term_newln(struct termp *);
61 void		  term_vspace(struct termp *);
62 void		  term_word(struct termp *, const char *);
63 void		  term_flushln(struct termp *);
64 
65 __END_DECLS
66 
67 #endif /*!TERM_H*/
68