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