1/* cairo - a vector graphics library with display and print output
2 *
3 * Copyright © 2002 University of Southern California
4 *
5 * This library is free software; you can redistribute it and/or
6 * modify it either under the terms of the GNU Lesser General Public
7 * License version 2.1 as published by the Free Software Foundation
8 * (the "LGPL") or, at your option, under the terms of the Mozilla
9 * Public License Version 1.1 (the "MPL"). If you do not alter this
10 * notice, a recipient may use your version of this file under either
11 * the MPL or the LGPL.
12 *
13 * You should have received a copy of the LGPL along with this library
14 * in the file COPYING-LGPL-2.1; if not, write to the Free Software
15 * Foundation, Inc., 51 Franklin Street, Suite 500, Boston, MA 02110-1335, USA
16 * You should have received a copy of the MPL along with this library
17 * in the file COPYING-MPL-1.1
18 *
19 * The contents of this file are subject to the Mozilla Public License
20 * Version 1.1 (the "License"); you may not use this file except in
21 * compliance with the License. You may obtain a copy of the License at
22 * http://www.mozilla.org/MPL/
23 *
24 * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY
25 * OF ANY KIND, either express or implied. See the LGPL or the MPL for
26 * the specific language governing rights and limitations.
27 *
28 * The Original Code is the cairo graphics library.
29 *
30 * The Initial Developer of the Original Code is University of Southern
31 * California.
32 *
33 * Contributor(s):
34 * Carl D. Worth <cworth@cworth.org>
35 */
36
37#ifndef CAIRO_PDF_H
38#define CAIRO_PDF_H
39
40#include "cairo.h"
41
42#if CAIRO_HAS_PDF_SURFACE
43
44CAIRO_BEGIN_DECLS
45
46/**
47 * cairo_pdf_version_t:
48 * @CAIRO_PDF_VERSION_1_4: The version 1.4 of the PDF specification. (Since 1.10)
49 * @CAIRO_PDF_VERSION_1_5: The version 1.5 of the PDF specification. (Since 1.10)
50 *
51 * #cairo_pdf_version_t is used to describe the version number of the PDF
52 * specification that a generated PDF file will conform to.
53 *
54 * Since: 1.10
55 **/
56typedef enum _cairo_pdf_version {
57 CAIRO_PDF_VERSION_1_4,
58 CAIRO_PDF_VERSION_1_5
59} cairo_pdf_version_t;
60
61cairo_public cairo_surface_t *
62cairo_pdf_surface_create (const char *filename,
63 double width_in_points,
64 double height_in_points);
65
66cairo_public cairo_surface_t *
67cairo_pdf_surface_create_for_stream (cairo_write_func_t write_func,
68 void *closure,
69 double width_in_points,
70 double height_in_points);
71
72cairo_public void
73cairo_pdf_surface_restrict_to_version (cairo_surface_t *surface,
74 cairo_pdf_version_t version);
75
76cairo_public void
77cairo_pdf_get_versions (cairo_pdf_version_t const **versions,
78 int *num_versions);
79
80cairo_public const char *
81cairo_pdf_version_to_string (cairo_pdf_version_t version);
82
83cairo_public void
84cairo_pdf_surface_set_size (cairo_surface_t *surface,
85 double width_in_points,
86 double height_in_points);
87
88/**
89 * cairo_pdf_outline_flags_t:
90 * @CAIRO_PDF_OUTLINE_FLAG_OPEN: The outline item defaults to open in the PDF viewer (Since 1.16)
91 * @CAIRO_PDF_OUTLINE_FLAG_BOLD: The outline item is displayed by the viewer in bold text (Since 1.16)
92 * @CAIRO_PDF_OUTLINE_FLAG_ITALIC: The outline item is displayed by the viewer in italic text (Since 1.16)
93 *
94 * #cairo_pdf_outline_flags_t is used by the
95 * cairo_pdf_surface_add_outline() function specify the attributes of
96 * an outline item. These flags may be bitwise-or'd to produce any
97 * combination of flags.
98 *
99 * Since: 1.16
100 **/
101typedef enum _cairo_pdf_outline_flags {
102 CAIRO_PDF_OUTLINE_FLAG_OPEN = 0x1,
103 CAIRO_PDF_OUTLINE_FLAG_BOLD = 0x2,
104 CAIRO_PDF_OUTLINE_FLAG_ITALIC = 0x4,
105} cairo_pdf_outline_flags_t;
106
107#define CAIRO_PDF_OUTLINE_ROOT 0
108
109cairo_public int
110cairo_pdf_surface_add_outline (cairo_surface_t *surface,
111 int parent_id,
112 const char *utf8,
113 const char *link_attribs,
114 cairo_pdf_outline_flags_t flags);
115
116/**
117 * cairo_pdf_metadata_t:
118 * @CAIRO_PDF_METADATA_TITLE: The document title (Since 1.16)
119 * @CAIRO_PDF_METADATA_AUTHOR: The document author (Since 1.16)
120 * @CAIRO_PDF_METADATA_SUBJECT: The document subject (Since 1.16)
121 * @CAIRO_PDF_METADATA_KEYWORDS: The document keywords (Since 1.16)
122 * @CAIRO_PDF_METADATA_CREATOR: The document creator (Since 1.16)
123 * @CAIRO_PDF_METADATA_CREATE_DATE: The document creation date (Since 1.16)
124 * @CAIRO_PDF_METADATA_MOD_DATE: The document modification date (Since 1.16)
125 *
126 * #cairo_pdf_metadata_t is used by the
127 * cairo_pdf_surface_set_metadata() function specify the metadata to set.
128 *
129 * Since: 1.16
130 **/
131typedef enum _cairo_pdf_metadata {
132 CAIRO_PDF_METADATA_TITLE,
133 CAIRO_PDF_METADATA_AUTHOR,
134 CAIRO_PDF_METADATA_SUBJECT,
135 CAIRO_PDF_METADATA_KEYWORDS,
136 CAIRO_PDF_METADATA_CREATOR,
137 CAIRO_PDF_METADATA_CREATE_DATE,
138 CAIRO_PDF_METADATA_MOD_DATE,
139} cairo_pdf_metadata_t;
140
141cairo_public void
142cairo_pdf_surface_set_metadata (cairo_surface_t *surface,
143 cairo_pdf_metadata_t metadata,
144 const char *utf8);
145
146cairo_public void
147cairo_pdf_surface_set_page_label (cairo_surface_t *surface,
148 const char *utf8);
149
150cairo_public void
151cairo_pdf_surface_set_thumbnail_size (cairo_surface_t *surface,
152 int width,
153 int height);
154
155CAIRO_END_DECLS
156
157#else /* CAIRO_HAS_PDF_SURFACE */
158# error Cairo was not compiled with support for the pdf backend
159#endif /* CAIRO_HAS_PDF_SURFACE */
160
161#endif /* CAIRO_PDF_H */
162