![]() ![]() | ![]() |
version 1.71, 2010/06/30 12:30:36 | version 1.77, 2011/01/02 12:21:07 | ||
---|---|---|---|
|
|
||
/* $Id$ */ | /* $Id$ */ | ||
/* | /* | ||
* Copyright (c) 2008, 2009 Kristaps Dzonsons <kristaps@bsd.lv> | * Copyright (c) 2008, 2009, 2010 Kristaps Dzonsons <kristaps@bsd.lv> | ||
* | * | ||
* Permission to use, copy, modify, and distribute this software for any | * Permission to use, copy, modify, and distribute this software for any | ||
* purpose with or without fee is hereby granted, provided that the above | * purpose with or without fee is hereby granted, provided that the above | ||
|
|
||
enum termtype { | enum termtype { | ||
TERMTYPE_CHAR, | TERMTYPE_CHAR, | ||
TERMTYPE_PS | TERMTYPE_PS, | ||
TERMTYPE_PDF | |||
}; | }; | ||
enum termfont { | enum termfont { | ||
|
|
||
typedef void (*term_margin)(struct termp *, const void *); | typedef void (*term_margin)(struct termp *, const void *); | ||
struct termp_ps { | struct termp_ps { | ||
int psstate; /* state of ps output */ | int flags; | ||
#define PS_INLINE (1 << 0) /* we're in a word */ | #define PS_INLINE (1 << 0) /* we're in a word */ | ||
#define PS_MARGINS (1 << 1) /* we're in the margins */ | #define PS_MARGINS (1 << 1) /* we're in the margins */ | ||
#define PS_NEWPAGE (1 << 2) /* new page, no words yet */ | |||
size_t pscol; /* visible column (AFM units) */ | size_t pscol; /* visible column (AFM units) */ | ||
size_t psrow; /* visible row (AFM units) */ | size_t psrow; /* visible row (AFM units) */ | ||
char *psmarg; /* margin buf */ | char *psmarg; /* margin buf */ | ||
|
|
||
size_t psmargcur; /* cur index in margin buf */ | size_t psmargcur; /* cur index in margin buf */ | ||
char last; /* character buffer */ | char last; /* character buffer */ | ||
enum termfont lastf; /* last set font */ | enum termfont lastf; /* last set font */ | ||
size_t scale; /* font scaling factor */ | |||
size_t pages; /* number of pages shown */ | size_t pages; /* number of pages shown */ | ||
size_t lineheight; /* line height (AFM units) */ | size_t lineheight; /* line height (AFM units) */ | ||
size_t top; /* body top (AFM units) */ | size_t top; /* body top (AFM units) */ | ||
|
|
||
size_t left; /* body left (AFM units) */ | size_t left; /* body left (AFM units) */ | ||
size_t header; /* header pos (AFM units) */ | size_t header; /* header pos (AFM units) */ | ||
size_t footer; /* footer pos (AFM units) */ | size_t footer; /* footer pos (AFM units) */ | ||
size_t pdfbytes; /* current output byte */ | |||
size_t pdflastpg; /* byte of last page mark */ | |||
size_t pdfbody; /* start of body object */ | |||
size_t *pdfobjs; /* table of object offsets */ | |||
size_t pdfobjsz; /* size of pdfobjs */ | |||
}; | }; | ||
struct termp { | struct termp { | ||
|
|
||
}; | }; | ||
struct termp *term_alloc(enum termenc); | struct termp *term_alloc(enum termenc); | ||
void term_tbl(struct termp *, const struct tbl_span *); | |||
void term_free(struct termp *); | void term_free(struct termp *); | ||
void term_newln(struct termp *); | void term_newln(struct termp *); | ||
void term_vspace(struct termp *); | void term_vspace(struct termp *); |