summaryrefslogtreecommitdiff
path: root/base/spsdf.h
diff options
context:
space:
mode:
Diffstat (limited to 'base/spsdf.h')
-rw-r--r--base/spsdf.h82
1 files changed, 82 insertions, 0 deletions
diff --git a/base/spsdf.h b/base/spsdf.h
new file mode 100644
index 000000000..0d30cde2c
--- /dev/null
+++ b/base/spsdf.h
@@ -0,0 +1,82 @@
+/* Copyright (C) 2001-2012 Artifex Software, Inc.
+ All Rights Reserved.
+
+ This software is provided AS-IS with no warranty, either express or
+ implied.
+
+ This software is distributed under license and may not be copied,
+ modified or distributed except as expressly authorized under the terms
+ of the license contained in the file LICENSE in this distribution.
+
+ Refer to licensing information at http://www.artifex.com or contact
+ Artifex Software, Inc., 7 Mt. Lassen Drive - Suite A-134, San Rafael,
+ CA 94903, U.S.A., +1(415)492-9861, for further information.
+*/
+
+
+/* Common output syntax and parameters for PostScript and PDF writers */
+
+#ifndef spsdf_INCLUDED
+# define spsdf_INCLUDED
+
+#include "gsparam.h"
+
+/* Define an opaque type for streams. */
+#ifndef stream_DEFINED
+# define stream_DEFINED
+typedef struct stream_s stream;
+#endif
+
+/* ---------------- Symbolic data printing ---------------- */
+
+/* Print a PostScript string in the most efficient form. */
+#define PRINT_BINARY_OK 1
+#define PRINT_ASCII85_OK 2
+#define PRINT_HEX_NOT_OK 4
+void s_write_ps_string(stream * s, const byte * str, uint size, int print_ok);
+
+/*
+ * Create a stream that just keeps track of how much has been written
+ * to it. We use this for measuring data that will be stored rather
+ * than written to an actual stream.
+ */
+int s_alloc_position_stream(stream ** ps, gs_memory_t * mem);
+
+/*
+ * Create/release a parameter list for printing (non-default) filter
+ * parameters. This should probably migrate to a lower level....
+ */
+typedef struct param_printer_params_s {
+ const char *prefix; /* before entire object, if any params */
+ const char *suffix; /* after entire object, if any params */
+ const char *item_prefix; /* before each param */
+ const char *item_suffix; /* after each param */
+ int print_ok;
+} param_printer_params_t;
+/*
+ * The implementation structure should be opaque, but there are a few
+ * clients that need to be able to stack-allocate it.
+ */
+typedef struct printer_param_list_s {
+ gs_param_list_common;
+ stream *strm;
+ param_printer_params_t params;
+ bool any;
+} printer_param_list_t;
+#define private_st_printer_param_list() /* in spsdf.c */\
+ gs_private_st_ptrs1(st_printer_param_list, printer_param_list_t,\
+ "printer_param_list_t", printer_plist_enum_ptrs, printer_plist_reloc_ptrs,\
+ strm)
+
+#define param_printer_params_default_values 0, 0, 0, "\n", 0
+extern const param_printer_params_t param_printer_params_default;
+int s_alloc_param_printer(gs_param_list ** pplist,
+ const param_printer_params_t * ppp, stream * s,
+ gs_memory_t * mem);
+void s_free_param_printer(gs_param_list * plist);
+/* Initialize or release a list without allocating or freeing it. */
+int s_init_param_printer(printer_param_list_t *prlist,
+ const param_printer_params_t * ppp, stream * s);
+void s_release_param_printer(printer_param_list_t *prlist);
+
+#endif /* spsdf_INCLUDED */