summaryrefslogtreecommitdiff
path: root/gs/src/gdevpstr.h
diff options
context:
space:
mode:
Diffstat (limited to 'gs/src/gdevpstr.h')
-rw-r--r--gs/src/gdevpstr.h73
1 files changed, 73 insertions, 0 deletions
diff --git a/gs/src/gdevpstr.h b/gs/src/gdevpstr.h
new file mode 100644
index 000000000..74cb18e12
--- /dev/null
+++ b/gs/src/gdevpstr.h
@@ -0,0 +1,73 @@
+/* Copyright (C) 1997 Aladdin Enterprises. All rights reserved.
+
+ This file is part of Aladdin Ghostscript.
+
+ Aladdin Ghostscript is distributed with NO WARRANTY OF ANY KIND. No author
+ or distributor accepts any responsibility for the consequences of using it,
+ or for whether it serves any particular purpose or works at all, unless he
+ or she says so in writing. Refer to the Aladdin Ghostscript Free Public
+ License (the "License") for full details.
+
+ Every copy of Aladdin Ghostscript must include a copy of the License,
+ normally in a plain ASCII text file named PUBLIC. The License grants you
+ the right to copy, modify and redistribute Aladdin Ghostscript, but only
+ under certain conditions described in the License. Among other things, the
+ License requires that the copyright notice and this notice be preserved on
+ all copies.
+*/
+
+/* gdevpstr.h */
+/* Stream output for PostScript- and PDF-writing drivers. */
+
+/* Define an opaque type for streams. */
+#ifndef stream_DEFINED
+# define stream_DEFINED
+typedef struct stream_s stream;
+#endif
+
+/* Put a character on a stream. */
+#define pputc(s, c) spputc(s, c)
+
+/* Put a byte array on a stream. */
+int pwrite(P3(stream *s, const void *ptr, uint count));
+
+/* Put a string on a stream. */
+int pputs(P2(stream *s, const char *str));
+
+/*
+ * Print (a) floating point number(s) using a format. This is needed
+ * because %f format always prints a fixed number of digits after the
+ * decimal point, and %g format may use %e format, which PDF disallows.
+ * These functions return a pointer to the next %-element of the format, or
+ * to the terminating 0.
+ */
+const char *pprintg1(P3(stream *s, const char *format, floatp v));
+const char *pprintg2(P4(stream *s, const char *format, floatp v1, floatp v2));
+#define pprintg3(s, format, v1, v2, v3)\
+ pprintg2(s, pprintg1(s, format, v1), v2, v3)
+const char *pprintg4(P6(stream *s, const char *format, floatp v1, floatp v2,
+ floatp v3, floatp v4));
+#define pprintg6(s, format, v1, v2, v3, v4, v5, v6)\
+ pprintg2(s, pprintg4(s, format, v1, v2, v3, v4), v5, v6)
+
+/* Print (an) int value(s) using a format. */
+const char *pprintd1(P3(stream *s, const char *format, int v));
+const char *pprintd2(P4(stream *s, const char *format, int v1, int v2));
+#define pprintd3(s, format, v1, v2, v3)\
+ pprintd1(s, pprintd2(s, format, v1, v2), v3)
+#define pprintd4(s, format, v1, v2, v3, v4)\
+ pprintd2(s, pprintd2(s, format, v1, v2), v3, v4)
+
+/* Print a long value using a format. */
+const char *pprintld1(P3(stream *s, const char *format, long v));
+#define pprintld2(s, format, v1, v2)\
+ pprintld1(s, pprintld1(s, format, v1), v2)
+#define pprintld3(s, format, v1, v2, v3)\
+ pprintld2(s, pprintld1(s, format, v1), v2, v3)
+
+/* Print (a) string(s) using a format. */
+const char *pprints1(P3(stream *s, const char *format, const char *str));
+const char *pprints2(P4(stream *s, const char *format, const char *str1,
+ const char *str2));
+#define pprints3(s, format, str1, str2, str3)\
+ pprints2(s, pprints1(s, format, str1), str2, str3)