]> git.cameronkatri.com Git - mandoc.git/blobdiff - term.h
Implement font-switching for PostScript. -Tps now supports
[mandoc.git] / term.h
diff --git a/term.h b/term.h
index f049da66225d7710b945e3b3db1c7afa48b0925c..825ad281b1315324921e34911401aaca5e9b32ac 100644 (file)
--- a/term.h
+++ b/term.h
@@ -1,4 +1,4 @@
-/*     $Id: term.h,v 1.59 2010/06/08 13:22:37 kristaps Exp $ */
+/*     $Id: term.h,v 1.63 2010/06/11 16:58:20 kristaps Exp $ */
 /*
  * Copyright (c) 2008, 2009 Kristaps Dzonsons <kristaps@kth.se>
  *
@@ -40,6 +40,20 @@ enum termfont {
 
 typedef void   (*term_margin)(struct termp *, const void *);
 
+struct termp_ps {
+       int               psstate;      /* state of ps output */
+#define        PS_INLINE        (1 << 0)       /* we're in a word */
+#define        PS_MARGINS       (1 << 1)       /* we're in the margins */
+       size_t            pscol;        /* visible column */
+       size_t            psrow;        /* visible row */
+       char             *psmarg;       /* margin buf */
+       size_t            psmargsz;     /* margin buf size */
+       size_t            psmargcur;    /* current pos in margin buf */
+       size_t            pspage;       /* current page */
+       char              last;         /* character buffer */
+       enum termfont     lastf;        /* last set font */
+};
+
 struct termp {
        enum termtype     type;
        size_t            defrmargin;   /* Right margin of the device.. */
@@ -72,13 +86,15 @@ struct      termp {
        int               fonti;        /* Index of font stack. */
        term_margin       headf;        /* invoked to print head */
        term_margin       footf;        /* invoked to print foot */
+       void            (*letter)(struct termp *, char);
+       void            (*begin)(struct termp *);
+       void            (*end)(struct termp *);
+       void            (*endline)(struct termp *);
+       void            (*advance)(struct termp *, size_t);
        const void       *argf;         /* arg for headf/footf */
-       int               psstate;      /* -Tps: state of ps output */
-#define        PS_INLINE        (1 << 0)       
-#define        PS_MARGINS       (1 << 1)       
-       size_t            pscol;        /* -Tps: visible column */
-       size_t            psrow;        /* -Tps: visible row */
-       size_t            pspage;       /* -Tps: current page */
+       union {
+               struct termp_ps ps;
+       } engine;
 };
 
 struct termp    *term_alloc(enum termenc);