1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
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 :
|