1 //
2 // Copyright 2007-2009 Johannes Hofmann <Johannes.Hofmann@gmx.de>
3 //
4 // This software may be used and distributed according to the terms
5 // of the GNU General Public License, incorporated herein by reference.
6 
7 #ifndef POSTSCRIPT_H
8 #define POSTSCRIPT_H
9 
10 #include <stdio.h>
11 #include "PSEditModel.H"
12 
13 class PSParser {
14 	protected:
15 		PSEditModel *pse;
16 
17 		int cur_size;
18 
19 		PSEditColor cur_text_color;
20 
21 		int page;
22 
23 	public:
24 		PSParser(PSEditModel *p);
~PSParser()25 		virtual ~PSParser() {};
26 
27 		virtual int parse(char *line);
28 };
29 
30 class PSParser_2 : public PSParser {
31 	private:
32 		int inside;
33 
34 	public:
35 		PSParser_2(PSEditModel *p);
36 
37 		int parse(char *line);
38 };
39 
40 class PSWriter {
41 	protected:
42 		PSEditModel *pse;
43 
44 		const char * pos_format;
45 		const char * size_format;
46 		const char * text_format;
47 		const char * color_format;
48 		const char * glyph_format;
49 		const char * tag_format;
50 
51 		void write_string(FILE *out, char *s);
52 
53 		void write_main_block(FILE *out);
54 
55 		void write_internal_format(FILE *out);
56 
57 		int write_text(FILE *out, PSEditText *t);
58 
59 		virtual const char *ps_header();
60 
61 		virtual const char *ps_trailer();
62 
63 	public:
64 		PSWriter(PSEditModel *p);
~PSWriter()65 		virtual ~PSWriter() {};
66 
67 		int write(FILE *in, FILE *out);
68 };
69 
70 class PSLevel1Writer : public PSWriter {
71 	protected:
72 		const char *ps_header();
73 
74 		const char *ps_trailer();
75 
76 	public:
77 		PSLevel1Writer(PSEditModel *p);
78 };
79 
80 #endif
81