]> git.donarmstrong.com Git - xournal.git/blob - src/xo-print.h
Print via gtk-print instead of libgnomeprint
[xournal.git] / src / xo-print.h
1 typedef struct XrefTable {
2   int *data;
3   int last;
4   int n_alloc;
5 } XrefTable;
6
7 typedef struct PdfPageDesc {
8   struct PdfObj *resources, *mediabox, *contents;
9   int rotate;
10 } PdfPageDesc;
11
12 typedef struct PdfInfo {
13   int startxref;
14   struct PdfObj *trailerdict;
15   int npages;
16   struct PdfPageDesc *pages;
17 } PdfInfo;
18
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;
28
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;
47
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
57
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);
63
64 gboolean pdf_parse_info(GString *pdfbuf, struct PdfInfo *pdfinfo, struct XrefTable *xref);
65
66 // main printing functions
67
68 gboolean print_to_pdf(char *filename);
69
70 #if GTK_CHECK_VERSION(2, 10, 0)
71 void print_job_render_page(GtkPrintOperation *print, GtkPrintContext *context, gint pageno, gpointer user_data);
72 #endif