version 1.50, 2011/05/15 00:58:48 |
version 1.55, 2014/01/05 19:10:56 |
|
|
/* $Id$ */ |
/* $Id$ */ |
/* |
/* |
* Copyright (c) 2010 Kristaps Dzonsons <kristaps@bsd.lv> |
* Copyright (c) 2010, 2011 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 |
Line 97 static void ps_growbuf(struct termp *, size_t); |
|
Line 97 static void ps_growbuf(struct termp *, size_t); |
|
static void ps_letter(struct termp *, int); |
static void ps_letter(struct termp *, int); |
static void ps_pclose(struct termp *); |
static void ps_pclose(struct termp *); |
static void ps_pletter(struct termp *, int); |
static void ps_pletter(struct termp *, int); |
|
#if __GNUC__ - 0 >= 4 |
|
__attribute__((__format__ (__printf__, 2, 3))) |
|
#endif |
static void ps_printf(struct termp *, const char *, ...); |
static void ps_printf(struct termp *, const char *, ...); |
static void ps_putchar(struct termp *, char); |
static void ps_putchar(struct termp *, char); |
static void ps_setfont(struct termp *, enum termfont); |
static void ps_setfont(struct termp *, enum termfont); |
Line 429 static struct termp * |
|
Line 432 static struct termp * |
|
pspdf_alloc(char *outopts) |
pspdf_alloc(char *outopts) |
{ |
{ |
struct termp *p; |
struct termp *p; |
size_t pagex, pagey, marginx, marginy, lineheight; |
unsigned int pagex, pagey; |
|
size_t marginx, marginy, lineheight; |
const char *toks[2]; |
const char *toks[2]; |
const char *pp; |
const char *pp; |
char *v; |
char *v; |
|
|
p = term_alloc(TERMENC_ASCII); |
p = mandoc_calloc(1, sizeof(struct termp)); |
|
p->enc = TERMENC_ASCII; |
p->ps = mandoc_calloc(1, sizeof(struct termp_ps)); |
p->ps = mandoc_calloc(1, sizeof(struct termp_ps)); |
|
|
p->advance = ps_advance; |
p->advance = ps_advance; |
Line 484 pspdf_alloc(char *outopts) |
|
Line 489 pspdf_alloc(char *outopts) |
|
} else if (0 == strcasecmp(pp, "legal")) { |
} else if (0 == strcasecmp(pp, "legal")) { |
pagex = 216; |
pagex = 216; |
pagey = 356; |
pagey = 356; |
} else if (2 != sscanf(pp, "%zux%zu", &pagex, &pagey)) |
} else if (2 != sscanf(pp, "%ux%u", &pagex, &pagey)) |
fprintf(stderr, "%s: Unknown paper\n", pp); |
fprintf(stderr, "%s: Unknown paper\n", pp); |
} else if (NULL == pp) |
} |
pp = "letter"; |
|
|
|
/* |
/* |
* This MUST be defined before any PNT2AFM or AFM2PNT |
* This MUST be defined before any PNT2AFM or AFM2PNT |
Line 512 pspdf_alloc(char *outopts) |
|
Line 516 pspdf_alloc(char *outopts) |
|
|
|
lineheight = PNT2AFM(p, ((double)p->ps->scale * 1.4)); |
lineheight = PNT2AFM(p, ((double)p->ps->scale * 1.4)); |
|
|
p->ps->width = pagex; |
p->ps->width = (size_t)pagex; |
p->ps->height = pagey; |
p->ps->height = (size_t)pagey; |
p->ps->header = pagey - (marginy / 2) - (lineheight / 2); |
p->ps->header = pagey - (marginy / 2) - (lineheight / 2); |
p->ps->top = pagey - marginy; |
p->ps->top = pagey - marginy; |
p->ps->footer = (marginy / 2) - (lineheight / 2); |
p->ps->footer = (marginy / 2) - (lineheight / 2); |
Line 574 ps_printf(struct termp *p, const char *fmt, ...) |
|
Line 578 ps_printf(struct termp *p, const char *fmt, ...) |
|
ps_growbuf(p, PS_BUFSLOP); |
ps_growbuf(p, PS_BUFSLOP); |
|
|
pos = (int)p->ps->psmargcur; |
pos = (int)p->ps->psmargcur; |
len = vsnprintf(&p->ps->psmarg[pos], PS_BUFSLOP, fmt, ap); |
vsnprintf(&p->ps->psmarg[pos], PS_BUFSLOP, fmt, ap); |
|
|
va_end(ap); |
va_end(ap); |
|
|
Line 823 ps_begin(struct termp *p) |
|
Line 827 ps_begin(struct termp *p) |
|
ps_printf(p, "<<\n"); |
ps_printf(p, "<<\n"); |
ps_printf(p, "/Type /Font\n"); |
ps_printf(p, "/Type /Font\n"); |
ps_printf(p, "/Subtype /Type1\n"); |
ps_printf(p, "/Subtype /Type1\n"); |
ps_printf(p, "/Name /F%zu\n", i); |
ps_printf(p, "/Name /F%d\n", i); |
ps_printf(p, "/BaseFont /%s\n", fonts[i].name); |
ps_printf(p, "/BaseFont /%s\n", fonts[i].name); |
ps_printf(p, ">>\n"); |
ps_printf(p, ">>\n"); |
} |
} |