X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=src%2Fxo-print.h;h=1ad42d4b3ccd2b7e62aa1ace010c667eb8e5a371;hb=59df9eb838b273295a6b86ce9f522dc4ad71dc4d;hp=96ab4be61fafdb9c2b60d1077e444eb0ccf19b3e;hpb=ddd27893ae44eb5eb62c80e5751a6943a4782fe2;p=xournal.git diff --git a/src/xo-print.h b/src/xo-print.h index 96ab4be..1ad42d4 100644 --- a/src/xo-print.h +++ b/src/xo-print.h @@ -1 +1,51 @@ +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; + +#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);