X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=src%2Fxo-print.h;h=34e2d6c66ea11904b52e6b4e06f3f1a2b56a4e79;hb=dcbb0ab8521a5e166f257d86884407eb98ef63f0;hp=96ab4be61fafdb9c2b60d1077e444eb0ccf19b3e;hpb=6882d6c15461712e95f3046c078e66737f23941c;p=xournal.git diff --git a/src/xo-print.h b/src/xo-print.h index 96ab4be..34e2d6c 100644 --- a/src/xo-print.h +++ b/src/xo-print.h @@ -1 +1,70 @@ +typedef struct XrefTable { + int *data; + int last; + int n_alloc; +} XrefTable; + +typedef struct PdfPageDesc { + struct PdfObj *resources, *mediabox, *contents; + int rotate; +} PdfPageDesc; + +typedef struct PdfInfo { + int startxref; + struct PdfObj *trailerdict; + int npages; + struct PdfPageDesc *pages; +} PdfInfo; + +typedef struct PdfObj { + int type; + int intval; + double realval; + char *str; + int len, num; + struct PdfObj **elts; + char **names; +} PdfObj; + +typedef struct PdfFont { + int n_obj; + gboolean used_in_this_page; + char *filename; + int font_id; + gboolean is_truetype; + int glyph_page; + int glyphmap[256]; + int advance[256]; + char *glyphpsnames[256]; + int num_glyphs_used; + // fields from the FT_Face + gdouble ft2ps; + int nglyphs; + int ascender, descender, xmin, xmax, ymin, ymax; // in PDF font units + gchar *fontname; + int flags; +} PdfFont; + +#define PDFTYPE_CST 0 // intval: true=1, false=0, null=-1 +#define PDFTYPE_INT 1 // intval +#define PDFTYPE_REAL 2 // realval +#define PDFTYPE_STRING 3 // str, len +#define PDFTYPE_NAME 4 // str +#define PDFTYPE_ARRAY 5 // num, elts +#define PDFTYPE_DICT 6 // num, elts, names +#define PDFTYPE_STREAM 7 // dict: num, elts, names; data: str, len +#define PDFTYPE_REF 8 // intval, num + +struct PdfObj *parse_pdf_object(char **ptr, char *eof); +void free_pdfobj(struct PdfObj *obj); +struct PdfObj *dup_pdfobj(struct PdfObj *obj); +struct PdfObj *get_pdfobj(GString *pdfbuf, struct XrefTable *xref, struct PdfObj *obj); +void make_xref(struct XrefTable *xref, int nobj, int offset); + +gboolean pdf_parse_info(GString *pdfbuf, struct PdfInfo *pdfinfo, struct XrefTable *xref); + +// main printing functions + +gboolean print_to_pdf(char *filename); + void print_job_render(GnomePrintJob *gpj, int fromPage, int toPage);