summaryrefslogtreecommitdiffstats
path: root/src/extension/internal/ps.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/extension/internal/ps.h')
-rw-r--r--src/extension/internal/ps.h108
1 files changed, 108 insertions, 0 deletions
diff --git a/src/extension/internal/ps.h b/src/extension/internal/ps.h
new file mode 100644
index 000000000..eb07dc9bd
--- /dev/null
+++ b/src/extension/internal/ps.h
@@ -0,0 +1,108 @@
+#ifndef EXTENSION_INTERNAL_PS_H_SEEN
+#define EXTENSION_INTERNAL_PS_H_SEEN
+
+/** \file
+ * Declaration of PrintPS, the internal module used to do Postscript Printing.
+ */
+/*
+ * Authors:
+ * Lauris Kaplinski <lauris@kaplinski.com>
+ * Ted Gould <ted@gould.cx>
+ *
+ * Lauris' original code is in the public domain.
+ * Ted's changes are licensed under the GNU GPL.
+ */
+
+#include <config.h>
+#include "extension/extension.h"
+#include "extension/implementation/implementation.h"
+#include <set>
+#include <string>
+
+#include "libnr/nr-path.h"
+
+#include "svg/stringstream.h"
+
+namespace Inkscape {
+namespace Extension {
+namespace Internal {
+
+class PrintPS : public Inkscape::Extension::Implementation::Implementation {
+ float _width;
+ float _height;
+ FILE *_stream;
+ unsigned short _dpi;
+ bool _bitmap;
+ std::set<std::string> _latin1_encoded_fonts;
+ bool _newlatin1font_proc_defined;
+
+ void print_bpath(SVGOStringStream &os, NArtBpath const *bp);
+
+ void print_fill_style(SVGOStringStream &os, SPStyle const *style, NRRect const *pbox);
+ void print_stroke_style(SVGOStringStream &os, SPStyle const *style);
+
+ char const *PSFontName(SPStyle const *style);
+
+ unsigned int print_image(FILE *ofp, guchar *px, unsigned int width, unsigned int height, unsigned int rs,
+ NRMatrix const *transform);
+ void compress_packbits(int nin, guchar *src, int *nout, guchar *dst);
+
+ /* ASCII 85 variables */
+ guint32 ascii85_buf;
+ int ascii85_len;
+ int ascii85_linewidth;
+ /* ASCII 85 Functions */
+ void ascii85_init(void);
+ void ascii85_flush(SVGOStringStream &os);
+ inline void ascii85_out(guchar byte, SVGOStringStream &os);
+ void ascii85_nout(int n, guchar *uptr, SVGOStringStream &os);
+ void ascii85_done(SVGOStringStream &os);
+
+
+public:
+ PrintPS(void);
+ virtual ~PrintPS(void);
+
+ /* Print functions */
+ virtual unsigned int setup(Inkscape::Extension::Print *module);
+ /*
+ virtual unsigned int set_preview(Inkscape::Extension::Print *module);
+ */
+
+ virtual unsigned int begin(Inkscape::Extension::Print *module, SPDocument *doc);
+ virtual unsigned int finish(Inkscape::Extension::Print *module);
+
+ /* Rendering methods */
+ virtual unsigned int bind(Inkscape::Extension::Print *module, NRMatrix const *transform, float opacity);
+ virtual unsigned int release(Inkscape::Extension::Print *module);
+ virtual unsigned int comment(Inkscape::Extension::Print *module, char const *comment);
+ virtual unsigned int fill(Inkscape::Extension::Print *module, NRBPath const *bpath, NRMatrix const *ctm, SPStyle const *style,
+ NRRect const *pbox, NRRect const *dbox, NRRect const *bbox);
+ virtual unsigned int stroke(Inkscape::Extension::Print *module, NRBPath const *bpath, NRMatrix const *transform, SPStyle const *style,
+ NRRect const *pbox, NRRect const *dbox, NRRect const *bbox);
+ virtual unsigned int image(Inkscape::Extension::Print *module, unsigned char *px, unsigned int w, unsigned int h, unsigned int rs,
+ NRMatrix const *transform, SPStyle const *style);
+ virtual unsigned int text(Inkscape::Extension::Print *module, char const *text,
+ NR::Point p, SPStyle const *style);
+
+ bool textToPath(Inkscape::Extension::Print *ext);
+ static void init(void);
+};
+
+} /* namespace Internal */
+} /* namespace Extension */
+} /* namespace Inkscape */
+
+
+#endif /* !EXTENSION_INTERNAL_PS_H_SEEN */
+
+/*
+ Local Variables:
+ mode:c++
+ c-file-style:"stroustrup"
+ c-file-offsets:((innamespace . 0)(inline-open . 0)(case-label . +))
+ indent-tabs-mode:nil
+ fill-column:99
+ End:
+*/
+// vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:encoding=utf-8:textwidth=99 :