Update to version 0.4.2.
[xournal.git] / src / xo-print.h
blob34e2d6c66ea11904b52e6b4e06f3f1a2b56a4e79
1 typedef struct XrefTable {
2 int *data;
3 int last;
4 int n_alloc;
5 } XrefTable;
7 typedef struct PdfPageDesc {
8 struct PdfObj *resources, *mediabox, *contents;
9 int rotate;
10 } PdfPageDesc;
12 typedef struct PdfInfo {
13 int startxref;
14 struct PdfObj *trailerdict;
15 int npages;
16 struct PdfPageDesc *pages;
17 } PdfInfo;
19 typedef struct PdfObj {
20 int type;
21 int intval;
22 double realval;
23 char *str;
24 int len, num;
25 struct PdfObj **elts;
26 char **names;
27 } PdfObj;
29 typedef struct PdfFont {
30 int n_obj;
31 gboolean used_in_this_page;
32 char *filename;
33 int font_id;
34 gboolean is_truetype;
35 int glyph_page;
36 int glyphmap[256];
37 int advance[256];
38 char *glyphpsnames[256];
39 int num_glyphs_used;
40 // fields from the FT_Face
41 gdouble ft2ps;
42 int nglyphs;
43 int ascender, descender, xmin, xmax, ymin, ymax; // in PDF font units
44 gchar *fontname;
45 int flags;
46 } PdfFont;
48 #define PDFTYPE_CST 0 // intval: true=1, false=0, null=-1
49 #define PDFTYPE_INT 1 // intval
50 #define PDFTYPE_REAL 2 // realval
51 #define PDFTYPE_STRING 3 // str, len
52 #define PDFTYPE_NAME 4 // str
53 #define PDFTYPE_ARRAY 5 // num, elts
54 #define PDFTYPE_DICT 6 // num, elts, names
55 #define PDFTYPE_STREAM 7 // dict: num, elts, names; data: str, len
56 #define PDFTYPE_REF 8 // intval, num
58 struct PdfObj *parse_pdf_object(char **ptr, char *eof);
59 void free_pdfobj(struct PdfObj *obj);
60 struct PdfObj *dup_pdfobj(struct PdfObj *obj);
61 struct PdfObj *get_pdfobj(GString *pdfbuf, struct XrefTable *xref, struct PdfObj *obj);
62 void make_xref(struct XrefTable *xref, int nobj, int offset);
64 gboolean pdf_parse_info(GString *pdfbuf, struct PdfInfo *pdfinfo, struct XrefTable *xref);
66 // main printing functions
68 gboolean print_to_pdf(char *filename);
70 void print_job_render(GnomePrintJob *gpj, int fromPage, int toPage);