summaryrefslogtreecommitdiff
path: root/src/cairo-pdf-surface-private.h
diff options
context:
space:
mode:
authorAdrian Johnson <ajohnson@redneon.com>2021-07-18 07:16:22 +0930
committerAdrian Johnson <ajohnson@redneon.com>2021-07-26 18:31:47 +0930
commitbd514f6b08c1b31a75948fd99c147319e5aa649f (patch)
tree035e388d017c90124a0ad93e85372b197e78f71e /src/cairo-pdf-surface-private.h
parent0f382eb0875f2102ba26e30c6ea1dfbaf1abff96 (diff)
downloadcairo-bd514f6b08c1b31a75948fd99c147319e5aa649f.tar.gz
pdf: add support for object streams for PDF >= 1.5
This allows all objects that were previously emitted uncompressed to be compressed into a an object stream. Currently only /Page, /Pages, and /Catalog have been converted to use object streams.
Diffstat (limited to 'src/cairo-pdf-surface-private.h')
-rw-r--r--src/cairo-pdf-surface-private.h15
1 files changed, 15 insertions, 0 deletions
diff --git a/src/cairo-pdf-surface-private.h b/src/cairo-pdf-surface-private.h
index 65fd8c741..673e20a6d 100644
--- a/src/cairo-pdf-surface-private.h
+++ b/src/cairo-pdf-surface-private.h
@@ -55,6 +55,7 @@ typedef struct _cairo_pdf_resource {
unsigned int id;
} cairo_pdf_resource_t;
+
#define CAIRO_NUM_OPERATORS (CAIRO_OPERATOR_HSL_LUMINOSITY + 1)
typedef struct _cairo_pdf_group_resources {
@@ -315,6 +316,13 @@ struct _cairo_pdf_surface {
cairo_bool_t is_knockout;
} group_stream;
+ struct {
+ cairo_bool_t active;
+ cairo_output_stream_t *stream;
+ cairo_pdf_resource_t resource;
+ cairo_array_t objects;
+ } object_stream;
+
cairo_surface_clipper_t clipper;
cairo_pdf_operators_t pdf_operators;
@@ -378,6 +386,13 @@ _cairo_pdf_interchange_tag_begin (cairo_pdf_surface_t *surface,
const char *attributes);
cairo_private cairo_int_status_t
+_cairo_pdf_surface_object_begin (cairo_pdf_surface_t *surface,
+ cairo_pdf_resource_t resource);
+
+cairo_private void
+_cairo_pdf_surface_object_end (cairo_pdf_surface_t *surface);
+
+cairo_private cairo_int_status_t
_cairo_pdf_interchange_tag_end (cairo_pdf_surface_t *surface,
const char *name);