pygpibtoolkit/plotter/hpgl_parser.py

Thu, 24 May 2018 23:22:37 +0200

author
David Douard <david.douard@logilab.fr>
date
Thu, 24 May 2018 23:22:37 +0200
changeset 104
916c255b3079
parent 91
f2a8f688dbc0
permissions
-rw-r--r--

[plotter] flake8

18
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
1 # -*- coding: utf-8 -*-
66
2a97995628a3 added copyright header to every python file
David Douard <david.douard@logilab.fr>
parents: 40
diff changeset
2 # This program is free software; you can redistribute it and/or modify it under
2a97995628a3 added copyright header to every python file
David Douard <david.douard@logilab.fr>
parents: 40
diff changeset
3 # the terms of the GNU General Public License as published by the Free Software
2a97995628a3 added copyright header to every python file
David Douard <david.douard@logilab.fr>
parents: 40
diff changeset
4 # Foundation; either version 2 of the License, or (at your option) any later
2a97995628a3 added copyright header to every python file
David Douard <david.douard@logilab.fr>
parents: 40
diff changeset
5 # version.
2a97995628a3 added copyright header to every python file
David Douard <david.douard@logilab.fr>
parents: 40
diff changeset
6 #
2a97995628a3 added copyright header to every python file
David Douard <david.douard@logilab.fr>
parents: 40
diff changeset
7 # This program is distributed in the hope that it will be useful, but WITHOUT
2a97995628a3 added copyright header to every python file
David Douard <david.douard@logilab.fr>
parents: 40
diff changeset
8 # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
2a97995628a3 added copyright header to every python file
David Douard <david.douard@logilab.fr>
parents: 40
diff changeset
9 # FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details
2a97995628a3 added copyright header to every python file
David Douard <david.douard@logilab.fr>
parents: 40
diff changeset
10 #
2a97995628a3 added copyright header to every python file
David Douard <david.douard@logilab.fr>
parents: 40
diff changeset
11 # You should have received a copy of the GNU General Public License along with
2a97995628a3 added copyright header to every python file
David Douard <david.douard@logilab.fr>
parents: 40
diff changeset
12 # this program; if not, write to the Free Software Foundation, Inc.,
2a97995628a3 added copyright header to every python file
David Douard <david.douard@logilab.fr>
parents: 40
diff changeset
13 # 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
87
59a0946aa3d1 port HPGL plotter emulator to PyQt5
David Douard <david.douard@logilab.fr>
parents: 68
diff changeset
14 """ Copyright (c) 2007-2018 David Douard (Paris, FRANCE).
91
f2a8f688dbc0 project moved to bitbucket
David Douard <david.douard@logilab.fr>
parents: 87
diff changeset
15 https://bitbucket.org/dddouard/pygpibtoolkit -- mailto:david.douard@sdfa3.orgx
66
2a97995628a3 added copyright header to every python file
David Douard <david.douard@logilab.fr>
parents: 40
diff changeset
16 """
18
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
17
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
18 import re
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
19 import numpy
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
20
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
21 vsplitter = re.compile('[ ,]')
87
59a0946aa3d1 port HPGL plotter emulator to PyQt5
David Douard <david.douard@logilab.fr>
parents: 68
diff changeset
22 vextractor = re.compile(
59a0946aa3d1 port HPGL plotter emulator to PyQt5
David Douard <david.douard@logilab.fr>
parents: 68
diff changeset
23 r'(?P<value>[^;\n\r\aA-DF-Za-df-z]*?)(?P<terminator>[;\n\r\a]+)',
59a0946aa3d1 port HPGL plotter emulator to PyQt5
David Douard <david.douard@logilab.fr>
parents: 68
diff changeset
24 re.S + re.M)
18
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
25
87
59a0946aa3d1 port HPGL plotter emulator to PyQt5
David Douard <david.douard@logilab.fr>
parents: 68
diff changeset
26
59a0946aa3d1 port HPGL plotter emulator to PyQt5
David Douard <david.douard@logilab.fr>
parents: 68
diff changeset
27 class HPGLParser:
19
David Douard <david.douard@logilab.fr>
parents: 18
diff changeset
28 def __init__(self, data=None):
David Douard <david.douard@logilab.fr>
parents: 18
diff changeset
29 self.str_terminator = chr(0x03)
David Douard <david.douard@logilab.fr>
parents: 18
diff changeset
30 self.IN()
David Douard <david.douard@logilab.fr>
parents: 18
diff changeset
31 if data:
David Douard <david.douard@logilab.fr>
parents: 18
diff changeset
32 self.parse(data)
David Douard <david.douard@logilab.fr>
parents: 18
diff changeset
33
David Douard <david.douard@logilab.fr>
parents: 18
diff changeset
34 def parse(self, data):
18
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
35 self.data = data
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
36 self.idx = 0
87
59a0946aa3d1 port HPGL plotter emulator to PyQt5
David Douard <david.douard@logilab.fr>
parents: 68
diff changeset
37 self.IN()
59a0946aa3d1 port HPGL plotter emulator to PyQt5
David Douard <david.douard@logilab.fr>
parents: 68
diff changeset
38 while self.idx < len(data):
104
916c255b3079 [plotter] flake8
David Douard <david.douard@logilab.fr>
parents: 91
diff changeset
39 while data[self.idx] in ';\n\r\a ':
18
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
40 self.idx += 1
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
41 if data[self.idx] == chr(0x03):
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
42 self.ESC()
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
43 else:
34
022e881b758e moved some files & one bugfix
David Douard <david.douard@logilab.fr>
parents: 32
diff changeset
44 cmd = data[self.idx: self.idx+2].upper()
18
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
45 self.idx += 2
68
8ec1c26a4a99 Small fixes to HPGL plotter (be a little bit more robust)
David Douard <david.douard@logilab.fr>
parents: 66
diff changeset
46 try:
8ec1c26a4a99 Small fixes to HPGL plotter (be a little bit more robust)
David Douard <david.douard@logilab.fr>
parents: 66
diff changeset
47 getattr(self, cmd)()
8ec1c26a4a99 Small fixes to HPGL plotter (be a little bit more robust)
David Douard <david.douard@logilab.fr>
parents: 66
diff changeset
48 except AttributeError:
87
59a0946aa3d1 port HPGL plotter emulator to PyQt5
David Douard <david.douard@logilab.fr>
parents: 68
diff changeset
49 print("WARNING: received unknown command %s" % repr(cmd))
59a0946aa3d1 port HPGL plotter emulator to PyQt5
David Douard <david.douard@logilab.fr>
parents: 68
diff changeset
50
104
916c255b3079 [plotter] flake8
David Douard <david.douard@logilab.fr>
parents: 91
diff changeset
51 while self.idx < len(data) and data[self.idx] in ';\n\r\a ':
18
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
52 self.idx += 1
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
53
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
54 def user_to_abs(self, pos):
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
55 """
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
56 converts a position (x, y) given in user units to absolute
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
57 units
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
58 """
87
59a0946aa3d1 port HPGL plotter emulator to PyQt5
David Douard <david.douard@logilab.fr>
parents: 68
diff changeset
59 return pos # TODO
59a0946aa3d1 port HPGL plotter emulator to PyQt5
David Douard <david.douard@logilab.fr>
parents: 68
diff changeset
60
18
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
61 def extract_value(self, raw=False):
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
62 m = vextractor.match(self.data[self.idx:])
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
63 if m:
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
64 val = m.group("value")
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
65 self.idx = self.idx + len(val) + len(m.group("terminator"))
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
66 val = vsplitter.split(val)
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
67 if not raw:
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
68 val = [eval(x) for x in val if x.strip()]
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
69 return val
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
70 return []
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
71
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
72 def extract_string(self):
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
73 idx2 = self.data.find(self.str_terminator, self.idx)
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
74 val = self.data[self.idx: idx2]
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
75 self.idx = idx2+1
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
76 return val
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
77
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
78 def polyline(self, values):
104
916c255b3079 [plotter] flake8
David Douard <david.douard@logilab.fr>
parents: 91
diff changeset
79 if (len(values) % 2) == 1:
18
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
80 # this is a syntax error in the HPGL data
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
81 values = values[:-1]
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
82 values = numpy.array(values).reshape(-1, 2)
87
59a0946aa3d1 port HPGL plotter emulator to PyQt5
David Douard <david.douard@logilab.fr>
parents: 68
diff changeset
83 # TODO use scaling
59a0946aa3d1 port HPGL plotter emulator to PyQt5
David Douard <david.douard@logilab.fr>
parents: 68
diff changeset
84 # do plots
104
916c255b3079 [plotter] flake8
David Douard <david.douard@logilab.fr>
parents: 91
diff changeset
85 values = numpy.r_[[self.pos], values] # add self.pos as 1st value
18
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
86 if self.plot_mode == 'relative':
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
87 values = values.cumsum(axis=0)
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
88 if self.symbol_mode:
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
89 self.plot_symbols(values[1:])
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
90 if self.pen_state == "down":
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
91 self.plot_lines(values)
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
92 self.pos = values[-1]
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
93
20
de60b63b2275 improved hpgl parser : plot strings
David Douard <david.douard@logilab.fr>
parents: 19
diff changeset
94 def plot_string(self, s):
de60b63b2275 improved hpgl parser : plot strings
David Douard <david.douard@logilab.fr>
parents: 19
diff changeset
95 pass
87
59a0946aa3d1 port HPGL plotter emulator to PyQt5
David Douard <david.douard@logilab.fr>
parents: 68
diff changeset
96
18
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
97 def get_window_for_paper(self):
104
916c255b3079 [plotter] flake8
David Douard <david.douard@logilab.fr>
parents: 91
diff changeset
98 return (0, 100, 0, 100)
916c255b3079 [plotter] flake8
David Douard <david.douard@logilab.fr>
parents: 91
diff changeset
99
18
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
100 def get_scaling_points_for_paper(self):
104
916c255b3079 [plotter] flake8
David Douard <david.douard@logilab.fr>
parents: 91
diff changeset
101 return (0, 100, 0, 100)
87
59a0946aa3d1 port HPGL plotter emulator to PyQt5
David Douard <david.douard@logilab.fr>
parents: 68
diff changeset
102
18
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
103 # effective plot methods; to be defined in subclasses (backends)
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
104 def plot_symbols(self, points):
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
105 pass
104
916c255b3079 [plotter] flake8
David Douard <david.douard@logilab.fr>
parents: 91
diff changeset
106
18
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
107 def plot_lines(self, points):
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
108 pass
87
59a0946aa3d1 port HPGL plotter emulator to PyQt5
David Douard <david.douard@logilab.fr>
parents: 68
diff changeset
109
18
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
110 # HPGL-related methods
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
111 def ESC(self):
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
112 self.idx += 1
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
113
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
114 def OE(self):
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
115 """ Output Error """
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
116 pass
87
59a0946aa3d1 port HPGL plotter emulator to PyQt5
David Douard <david.douard@logilab.fr>
parents: 68
diff changeset
117
18
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
118 def EC(self):
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
119 """? what's this """
104
916c255b3079 [plotter] flake8
David Douard <david.douard@logilab.fr>
parents: 91
diff changeset
120 # values = self.extract_value()
916c255b3079 [plotter] flake8
David Douard <david.douard@logilab.fr>
parents: 91
diff changeset
121 pass
18
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
122
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
123 def OO(self):
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
124 """idem"""
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
125 pass
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
126
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
127 def OP(self):
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
128 """idem"""
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
129 pass
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
130
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
131 def VS(self):
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
132 """idem"""
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
133 pass
87
59a0946aa3d1 port HPGL plotter emulator to PyQt5
David Douard <david.douard@logilab.fr>
parents: 68
diff changeset
134
18
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
135 def DF(self):
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
136 """ Default """
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
137 self.pen = 0
104
916c255b3079 [plotter] flake8
David Douard <david.douard@logilab.fr>
parents: 91
diff changeset
138 self.pen_width = 1 # 1/300 inch
916c255b3079 [plotter] flake8
David Douard <david.douard@logilab.fr>
parents: 91
diff changeset
139 self.pos = (0, 0)
18
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
140 self.char_set = "std"
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
141 self.plot_mode = 'absolute'
104
916c255b3079 [plotter] flake8
David Douard <david.douard@logilab.fr>
parents: 91
diff changeset
142 self.char_direction = (1, 0)
916c255b3079 [plotter] flake8
David Douard <david.douard@logilab.fr>
parents: 91
diff changeset
143 self.line_type = 0 # 'solid'
916c255b3079 [plotter] flake8
David Douard <david.douard@logilab.fr>
parents: 91
diff changeset
144 self.pattern_len = 4 # percentage
18
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
145 self.window = self.get_window_for_paper()
104
916c255b3079 [plotter] flake8
David Douard <david.douard@logilab.fr>
parents: 91
diff changeset
146 self.char_size = (0.75, 1.5) # percentages
18
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
147 self.symbol_mode = False
104
916c255b3079 [plotter] flake8
David Douard <david.douard@logilab.fr>
parents: 91
diff changeset
148 self.tick_len = (0.5, 0.5) # %
18
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
149 self.std_char_set = 0
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
150 self.alt_char_set = 0
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
151 self.selected_char_set = 0
104
916c255b3079 [plotter] flake8
David Douard <david.douard@logilab.fr>
parents: 91
diff changeset
152 self.char_slant = 0 # degrees
18
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
153 self.scale = None
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
154 self.str_terminator = chr(0x03)
104
916c255b3079 [plotter] flake8
David Douard <david.douard@logilab.fr>
parents: 91
diff changeset
155 self.chord_ang = 5 # degrees
916c255b3079 [plotter] flake8
David Douard <david.douard@logilab.fr>
parents: 91
diff changeset
156 self.fill_type = ('bidirectionnal', 1)
916c255b3079 [plotter] flake8
David Douard <david.douard@logilab.fr>
parents: 91
diff changeset
157 self.fill_distance = 1 # %
916c255b3079 [plotter] flake8
David Douard <david.douard@logilab.fr>
parents: 91
diff changeset
158 self.fill_slant = 0 # degrees
916c255b3079 [plotter] flake8
David Douard <david.douard@logilab.fr>
parents: 91
diff changeset
159 self.pen_thickness = 0.3 # mm
18
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
160
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
161 def IN(self):
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
162 """ Initialize """
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
163 self.DF()
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
164 self.pen_state = "up"
104
916c255b3079 [plotter] flake8
David Douard <david.douard@logilab.fr>
parents: 91
diff changeset
165 self.rotation = 0 # degrees
18
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
166 self.scaling_points = self.get_scaling_points_for_paper()
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
167
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
168 def IP(self):
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
169 """ Input Scale Point"""
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
170 values = self.extract_value()
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
171 if len(values) == 0:
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
172 self.scaling_points = self.get_scaling_points_for_paper()
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
173 elif len(values) == 2:
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
174 p1x, p1y, p2x, p2y = self.scaling_points
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
175 dx, dy = p2x-p1x, p2y-p1y
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
176 x, y = values
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
177 self.scaling = (x, y, x+dx, y+dy)
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
178 elif len(values) == 4:
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
179 self.values = tuple(values)
87
59a0946aa3d1 port HPGL plotter emulator to PyQt5
David Douard <david.douard@logilab.fr>
parents: 68
diff changeset
180
18
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
181 def SC(self):
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
182 """ Scale """
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
183 values = self.extract_value()
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
184 if len(values) == 4:
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
185 self.scale = tuple(values)
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
186 else:
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
187 self.scale = None
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
188
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
189 def IW(self):
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
190 values = self.extract_value()
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
191 if len(values) == 0:
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
192 self.window = self.get_window_for_paper()
104
916c255b3079 [plotter] flake8
David Douard <david.douard@logilab.fr>
parents: 91
diff changeset
193 elif len(values) == 4:
18
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
194 self.window = tuple(values)
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
195
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
196 def RO(self):
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
197 values = self.extract_value()
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
198 if len(values) == 0:
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
199 self.rotation = 0
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
200 elif len(values) == 1:
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
201 self.rotation = values[0]
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
202
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
203 def PG(self):
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
204 pass
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
205
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
206 def PU(self):
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
207 """ Pen Up"""
87
59a0946aa3d1 port HPGL plotter emulator to PyQt5
David Douard <david.douard@logilab.fr>
parents: 68
diff changeset
208 self.pen_state = "up"
18
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
209 values = self.extract_value()
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
210 self.polyline(values)
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
211
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
212 def PD(self):
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
213 """ Pen Down """
87
59a0946aa3d1 port HPGL plotter emulator to PyQt5
David Douard <david.douard@logilab.fr>
parents: 68
diff changeset
214 self.pen_state = "down"
18
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
215 values = self.extract_value()
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
216 self.polyline(values)
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
217
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
218 def PA(self):
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
219 """ Plot Absolute """
87
59a0946aa3d1 port HPGL plotter emulator to PyQt5
David Douard <david.douard@logilab.fr>
parents: 68
diff changeset
220 self.plot_mode = "absolute"
18
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
221 values = self.extract_value()
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
222 self.polyline(values)
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
223
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
224 def PR(self):
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
225 """ Plot Relative """
87
59a0946aa3d1 port HPGL plotter emulator to PyQt5
David Douard <david.douard@logilab.fr>
parents: 68
diff changeset
226 self.plot_mode = "relative"
18
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
227 values = self.extract_value()
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
228 self.polyline(values)
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
229
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
230 def AA(self):
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
231 """ Arc Absolute """
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
232 values = self.extract_value()
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
233 if len(values) in [3, 4]:
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
234 x, y, qc = values[:3]
104
916c255b3079 [plotter] flake8
David Douard <david.douard@logilab.fr>
parents: 91
diff changeset
235 if len(values) == 4:
916c255b3079 [plotter] flake8
David Douard <david.douard@logilab.fr>
parents: 91
diff changeset
236 qd = values[-1] # noqa
18
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
237 else:
104
916c255b3079 [plotter] flake8
David Douard <david.douard@logilab.fr>
parents: 91
diff changeset
238 qd = self.chord_ang # noqa
18
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
239 # TODO : plot arc
104
916c255b3079 [plotter] flake8
David Douard <david.douard@logilab.fr>
parents: 91
diff changeset
240 # print("plotting an arc")
916c255b3079 [plotter] flake8
David Douard <david.douard@logilab.fr>
parents: 91
diff changeset
241
18
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
242 def AR(self):
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
243 """ Arc Relative """
104
916c255b3079 [plotter] flake8
David Douard <david.douard@logilab.fr>
parents: 91
diff changeset
244 # values = self.extract_value()
18
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
245 # TODO
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
246
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
247 def CI(self):
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
248 """ Circle Plot"""
104
916c255b3079 [plotter] flake8
David Douard <david.douard@logilab.fr>
parents: 91
diff changeset
249 # values = self.extract_value()
18
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
250 # TODO
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
251
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
252 def EA(self):
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
253 """Edge Rectangle Absolute"""
104
916c255b3079 [plotter] flake8
David Douard <david.douard@logilab.fr>
parents: 91
diff changeset
254 # values = self.extract_value()
18
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
255 # TODO
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
256
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
257 def ER(self):
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
258 """Edge Rectangle Relative"""
104
916c255b3079 [plotter] flake8
David Douard <david.douard@logilab.fr>
parents: 91
diff changeset
259 # values = self.extract_value()
18
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
260 # TODO
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
261
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
262 def EW(self):
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
263 """ Edge Wedge """
104
916c255b3079 [plotter] flake8
David Douard <david.douard@logilab.fr>
parents: 91
diff changeset
264 # values = self.extract_value()
18
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
265 # TODO
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
266
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
267 def RA(self):
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
268 """ Fill Rectangle Absolute """
104
916c255b3079 [plotter] flake8
David Douard <david.douard@logilab.fr>
parents: 91
diff changeset
269 # values = self.extract_value()
18
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
270 # TODO
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
271
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
272 def RR(self):
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
273 """ Fill Rectangle Relative """
104
916c255b3079 [plotter] flake8
David Douard <david.douard@logilab.fr>
parents: 91
diff changeset
274 # values = self.extract_value()
18
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
275 # TODO
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
276
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
277 def WG(self):
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
278 """ Fill Wedge """
104
916c255b3079 [plotter] flake8
David Douard <david.douard@logilab.fr>
parents: 91
diff changeset
279 # values = self.extract_value()
18
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
280 # TODO
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
281
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
282 def FT(self):
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
283 """ Fill Type """
104
916c255b3079 [plotter] flake8
David Douard <david.douard@logilab.fr>
parents: 91
diff changeset
284 # values = self.extract_value()
18
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
285 # TODO
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
286
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
287 def LT(self):
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
288 """ Line Type """
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
289 values = self.extract_value()
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
290
104
916c255b3079 [plotter] flake8
David Douard <david.douard@logilab.fr>
parents: 91
diff changeset
291 if len(values) == 0:
916c255b3079 [plotter] flake8
David Douard <david.douard@logilab.fr>
parents: 91
diff changeset
292 self.line_type = 0 # 'solid'
18
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
293 else:
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
294 self.line_type = values[0]
104
916c255b3079 [plotter] flake8
David Douard <david.douard@logilab.fr>
parents: 91
diff changeset
295 if len(values) > 1:
18
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
296 self.pattern_len = values[1]
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
297
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
298 def PW(self):
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
299 """ Pen Width """
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
300 values = self.extract_value()
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
301 if len(values) == 1:
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
302 self.pen_thickness = values[0]
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
303
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
304 def SM(self):
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
305 """ Symbol Mode """
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
306 values = self.extract_value()
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
307 if len(values) == 0:
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
308 self.symbol_mode = False
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
309 elif len(values) == 1:
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
310 self.symbol_mode = values[0]
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
311
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
312 def SP(self):
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
313 """ Select Pen """
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
314 values = self.extract_value()
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
315 if len(values) == 1:
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
316 self.pen = values[0]
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
317
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
318 def TL(self):
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
319 """ Tick Len """
104
916c255b3079 [plotter] flake8
David Douard <david.douard@logilab.fr>
parents: 91
diff changeset
320 # values = self.extract_value()
18
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
321 # TODO
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
322
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
323 def XT(self):
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
324 """ X-axis Tick """
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
325 # TODO
104
916c255b3079 [plotter] flake8
David Douard <david.douard@logilab.fr>
parents: 91
diff changeset
326 # print("X ticks")
916c255b3079 [plotter] flake8
David Douard <david.douard@logilab.fr>
parents: 91
diff changeset
327 pass
18
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
328
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
329 def YT(self):
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
330 """ X-axis Tick """
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
331 # TODO
104
916c255b3079 [plotter] flake8
David Douard <david.douard@logilab.fr>
parents: 91
diff changeset
332 # print("Y ticks")
916c255b3079 [plotter] flake8
David Douard <david.douard@logilab.fr>
parents: 91
diff changeset
333 pass
18
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
334
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
335 def PT(self):
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
336 """ Pen Thickness Select """
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
337 values = self.extract_value()
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
338 if len(values) == 0:
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
339 self.pen_thickness = 0.3
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
340 elif len(values) == 1:
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
341 self.pen_thickness = values[0]
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
342
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
343 def CS(self):
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
344 """ Standard Character Set """
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
345 values = self.extract_value()
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
346 if len(values) == 0:
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
347 self.std_char_set = 0
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
348 elif len(values) == 1:
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
349 self.std_char_set = values[0]
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
350
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
351 def CA(self):
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
352 """ Alternate Character Set """
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
353 values = self.extract_value()
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
354 if len(values) == 0:
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
355 self.alt_char_set = 0
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
356 elif len(values) == 1:
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
357 self.alt_char_set = values[0]
87
59a0946aa3d1 port HPGL plotter emulator to PyQt5
David Douard <david.douard@logilab.fr>
parents: 68
diff changeset
358
18
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
359 def SS(self):
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
360 """ Select Standard Character Set """
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
361 self.char_set = "std"
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
362
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
363 def SA(self):
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
364 """ Select Alternate Character Set """
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
365 self.char_set = "alt"
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
366
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
367 def DT(self):
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
368 """ Define Label Terminator """
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
369 values = self.extract_value(raw=True)
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
370 if len(values) == 0:
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
371 self.str_terminator = chr(0x03)
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
372 elif len(values) == 1:
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
373 self.str_terminator = values[0]
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
374
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
375 def LB(self):
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
376 """ Character Plot """
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
377 values = self.extract_string()
20
de60b63b2275 improved hpgl parser : plot strings
David Douard <david.douard@logilab.fr>
parents: 19
diff changeset
378 self.plot_string(values)
de60b63b2275 improved hpgl parser : plot strings
David Douard <david.douard@logilab.fr>
parents: 19
diff changeset
379 x, y = self.pos
de60b63b2275 improved hpgl parser : plot strings
David Douard <david.douard@logilab.fr>
parents: 19
diff changeset
380 values = values.split('\n')
de60b63b2275 improved hpgl parser : plot strings
David Douard <david.douard@logilab.fr>
parents: 19
diff changeset
381 if self.char_size == "absolute":
104
916c255b3079 [plotter] flake8
David Douard <david.douard@logilab.fr>
parents: 91
diff changeset
382 x += len(values[-1]) * self.char_width * 1016 / 2.54
916c255b3079 [plotter] flake8
David Douard <david.douard@logilab.fr>
parents: 91
diff changeset
383 y += (len(values)-1) * self.char_height * 1016 / 2.54
20
de60b63b2275 improved hpgl parser : plot strings
David Douard <david.douard@logilab.fr>
parents: 19
diff changeset
384 else:
de60b63b2275 improved hpgl parser : plot strings
David Douard <david.douard@logilab.fr>
parents: 19
diff changeset
385 x0, x1, y0, y1 = self.scale
de60b63b2275 improved hpgl parser : plot strings
David Douard <david.douard@logilab.fr>
parents: 19
diff changeset
386 dx = x1-x0
de60b63b2275 improved hpgl parser : plot strings
David Douard <david.douard@logilab.fr>
parents: 19
diff changeset
387 dy = y1-y0
de60b63b2275 improved hpgl parser : plot strings
David Douard <david.douard@logilab.fr>
parents: 19
diff changeset
388 x += len(values[-1]) * self.char_width / 100.0 * dx
de60b63b2275 improved hpgl parser : plot strings
David Douard <david.douard@logilab.fr>
parents: 19
diff changeset
389 y += (len(values)-1) * self.char_height / 100.0 * dy
87
59a0946aa3d1 port HPGL plotter emulator to PyQt5
David Douard <david.douard@logilab.fr>
parents: 68
diff changeset
390
20
de60b63b2275 improved hpgl parser : plot strings
David Douard <david.douard@logilab.fr>
parents: 19
diff changeset
391 self.pos = [x, y]
18
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
392
20
de60b63b2275 improved hpgl parser : plot strings
David Douard <david.douard@logilab.fr>
parents: 19
diff changeset
393 def get_char_size(self):
de60b63b2275 improved hpgl parser : plot strings
David Douard <david.douard@logilab.fr>
parents: 19
diff changeset
394 if self.char_size == "absolute":
104
916c255b3079 [plotter] flake8
David Douard <david.douard@logilab.fr>
parents: 91
diff changeset
395 x = self.char_width * 1016 / 2.54
916c255b3079 [plotter] flake8
David Douard <david.douard@logilab.fr>
parents: 91
diff changeset
396 y = self.char_height * 1016 / 2.54
20
de60b63b2275 improved hpgl parser : plot strings
David Douard <david.douard@logilab.fr>
parents: 19
diff changeset
397 else:
de60b63b2275 improved hpgl parser : plot strings
David Douard <david.douard@logilab.fr>
parents: 19
diff changeset
398 x0, x1, y0, y1 = self.scale
de60b63b2275 improved hpgl parser : plot strings
David Douard <david.douard@logilab.fr>
parents: 19
diff changeset
399 dx = x1-x0
de60b63b2275 improved hpgl parser : plot strings
David Douard <david.douard@logilab.fr>
parents: 19
diff changeset
400 dy = y1-y0
de60b63b2275 improved hpgl parser : plot strings
David Douard <david.douard@logilab.fr>
parents: 19
diff changeset
401 x = self.char_width / 100.0 * dx
de60b63b2275 improved hpgl parser : plot strings
David Douard <david.douard@logilab.fr>
parents: 19
diff changeset
402 y = self.char_height / 100.0 * dy
de60b63b2275 improved hpgl parser : plot strings
David Douard <david.douard@logilab.fr>
parents: 19
diff changeset
403 return x, y
87
59a0946aa3d1 port HPGL plotter emulator to PyQt5
David Douard <david.douard@logilab.fr>
parents: 68
diff changeset
404
18
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
405 def DI(self):
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
406 """ Absolute Direction """
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
407 values = self.extract_value()
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
408 if len(values) == 0:
104
916c255b3079 [plotter] flake8
David Douard <david.douard@logilab.fr>
parents: 91
diff changeset
409 self.char_direction = (1.0, 0.0)
18
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
410 elif len(values) == 2:
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
411 self.char_direction = values
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
412
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
413 def DR(self):
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
414 """ Relative Direction """
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
415 values = self.extract_value()
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
416 if len(values) == 0:
104
916c255b3079 [plotter] flake8
David Douard <david.douard@logilab.fr>
parents: 91
diff changeset
417 self.char_direction = (1.0, 0.0)
18
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
418 elif len(values) == 2:
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
419 # TODO : compute as percentages
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
420 self.char_direction = values
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
421
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
422 def CP(self):
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
423 """ Character Plot """
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
424 values = self.extract_value()
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
425 # TODO
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
426 if len(values) == 0:
20
de60b63b2275 improved hpgl parser : plot strings
David Douard <david.douard@logilab.fr>
parents: 19
diff changeset
427 values = 0, 1
de60b63b2275 improved hpgl parser : plot strings
David Douard <david.douard@logilab.fr>
parents: 19
diff changeset
428 x, y = self.pos
de60b63b2275 improved hpgl parser : plot strings
David Douard <david.douard@logilab.fr>
parents: 19
diff changeset
429 if self.char_size == "absolute":
104
916c255b3079 [plotter] flake8
David Douard <david.douard@logilab.fr>
parents: 91
diff changeset
430 x += values[0] * self.char_width * 1016 / 2.54
916c255b3079 [plotter] flake8
David Douard <david.douard@logilab.fr>
parents: 91
diff changeset
431 y += values[1] * self.char_height * 1016 / 2.54
20
de60b63b2275 improved hpgl parser : plot strings
David Douard <david.douard@logilab.fr>
parents: 19
diff changeset
432 else:
de60b63b2275 improved hpgl parser : plot strings
David Douard <david.douard@logilab.fr>
parents: 19
diff changeset
433 x0, x1, y0, y1 = self.scale
de60b63b2275 improved hpgl parser : plot strings
David Douard <david.douard@logilab.fr>
parents: 19
diff changeset
434 dx = x1-x0
de60b63b2275 improved hpgl parser : plot strings
David Douard <david.douard@logilab.fr>
parents: 19
diff changeset
435 dy = y1-y0
de60b63b2275 improved hpgl parser : plot strings
David Douard <david.douard@logilab.fr>
parents: 19
diff changeset
436 x += values[0] * self.char_width / 100.0 * dx
de60b63b2275 improved hpgl parser : plot strings
David Douard <david.douard@logilab.fr>
parents: 19
diff changeset
437 y += values[1] * self.char_height / 100.0 * dy
de60b63b2275 improved hpgl parser : plot strings
David Douard <david.douard@logilab.fr>
parents: 19
diff changeset
438 self.pos = [x, y]
18
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
439
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
440 def SI(self):
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
441 """ Set Absolute Character Size """
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
442 values = self.extract_value()
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
443 self.char_size = "absolute"
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
444 if len(values) == 0:
104
916c255b3079 [plotter] flake8
David Douard <david.douard@logilab.fr>
parents: 91
diff changeset
445 self.char_width = 0.1879 # cm
916c255b3079 [plotter] flake8
David Douard <david.douard@logilab.fr>
parents: 91
diff changeset
446 self.char_height = 0.2690 # cm
18
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
447 elif len(values) == 2:
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
448 self.char_width, self.char_height = values
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
449
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
450 def SR(self):
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
451 """ Set Relative Character Size """
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
452 values = self.extract_value()
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
453 self.char_size = "relative"
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
454 if len(values) == 0:
104
916c255b3079 [plotter] flake8
David Douard <david.douard@logilab.fr>
parents: 91
diff changeset
455 self.char_width = 0.75 # percentage
916c255b3079 [plotter] flake8
David Douard <david.douard@logilab.fr>
parents: 91
diff changeset
456 self.char_height = 1.5 # id
18
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
457 elif len(values) == 2:
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
458 self.char_width, self.char_height = values
87
59a0946aa3d1 port HPGL plotter emulator to PyQt5
David Douard <david.douard@logilab.fr>
parents: 68
diff changeset
459
18
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
460 def SL(self):
87
59a0946aa3d1 port HPGL plotter emulator to PyQt5
David Douard <david.douard@logilab.fr>
parents: 68
diff changeset
461 """ Character Slant """
104
916c255b3079 [plotter] flake8
David Douard <david.douard@logilab.fr>
parents: 91
diff changeset
462 # values = self.extract_value()
18
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
463 # TODO
104
916c255b3079 [plotter] flake8
David Douard <david.douard@logilab.fr>
parents: 91
diff changeset
464 pass
18
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
465
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
466 def UC(self):
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
467 """ User Defined Character """
104
916c255b3079 [plotter] flake8
David Douard <david.douard@logilab.fr>
parents: 91
diff changeset
468 # values = self.extract_value()
18
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
469 # TODO
104
916c255b3079 [plotter] flake8
David Douard <david.douard@logilab.fr>
parents: 91
diff changeset
470 pass
916c255b3079 [plotter] flake8
David Douard <david.douard@logilab.fr>
parents: 91
diff changeset
471
87
59a0946aa3d1 port HPGL plotter emulator to PyQt5
David Douard <david.douard@logilab.fr>
parents: 68
diff changeset
472
18
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
473 if __name__ == '__main__':
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
474 import sys
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
475 data = open(sys.argv[1]).read()
87
59a0946aa3d1 port HPGL plotter emulator to PyQt5
David Douard <david.douard@logilab.fr>
parents: 68
diff changeset
476
18
c691b040e8c9 added a (very) beginning HPGL parser (with a simplist matplotlib backend)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
477 p = HPGLParser(data)

mercurial