postscript 0.1.0 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -31,11 +31,13 @@ module Postscript
31
31
  class Def < Operator
32
32
  register_as "def", consumes: 2, produces: 0
33
33
  attr_reader :key, :value
34
+
34
35
  def initialize(key:, value:)
35
36
  @key = key
36
37
  @value = value
37
38
  freeze
38
39
  end
40
+
39
41
  def self.from_operands(stack)
40
42
  value = stack.pop
41
43
  key = stack.pop
@@ -46,10 +48,12 @@ module Postscript
46
48
  class Load < Operator
47
49
  register_as "load", consumes: 1, produces: 1
48
50
  attr_reader :key
51
+
49
52
  def initialize(key:)
50
53
  @key = key
51
54
  freeze
52
55
  end
56
+
53
57
  def self.from_operands(stack)
54
58
  new(key: stack.pop)
55
59
  end
@@ -58,11 +62,13 @@ module Postscript
58
62
  class Store < Operator
59
63
  register_as "store", consumes: 2, produces: 0
60
64
  attr_reader :key, :value
65
+
61
66
  def initialize(key:, value:)
62
67
  @key = key
63
68
  @value = value
64
69
  freeze
65
70
  end
71
+
66
72
  def self.from_operands(stack)
67
73
  value = stack.pop
68
74
  key = stack.pop
@@ -78,6 +84,7 @@ module Postscript
78
84
  new(key: key, dict: dict)
79
85
  end
80
86
  attr_reader :key, :dict
87
+
81
88
  def initialize(key:, dict:)
82
89
  @key = key
83
90
  @dict = dict
@@ -107,6 +114,7 @@ module Postscript
107
114
  new(operand: stack.pop)
108
115
  end
109
116
  attr_reader :operand
117
+
110
118
  def initialize(operand:)
111
119
  @operand = operand
112
120
  freeze
@@ -14,10 +14,12 @@ module Postscript
14
14
  class Findfont < Operator
15
15
  register_as "findfont", consumes: 1, produces: 1
16
16
  attr_reader :name
17
+
17
18
  def initialize(name:)
18
19
  @name = name
19
20
  freeze
20
21
  end
22
+
21
23
  def self.from_operands(stack)
22
24
  new(name: stack.pop)
23
25
  end
@@ -27,11 +29,13 @@ module Postscript
27
29
  class Scalefont < Operator
28
30
  register_as "scalefont", consumes: 2, produces: 1
29
31
  attr_reader :font, :size
32
+
30
33
  def initialize(font:, size:)
31
34
  @font = font
32
35
  @size = size
33
36
  freeze
34
37
  end
38
+
35
39
  def self.from_operands(stack)
36
40
  size = stack.pop_number
37
41
  font = stack.pop
@@ -43,10 +47,12 @@ module Postscript
43
47
  class Setfont < Operator
44
48
  register_as "setfont", consumes: 1, produces: 0
45
49
  attr_reader :font
50
+
46
51
  def initialize(font:)
47
52
  @font = font
48
53
  freeze
49
54
  end
55
+
50
56
  def self.from_operands(stack)
51
57
  new(font: stack.pop)
52
58
  end
@@ -56,10 +62,12 @@ module Postscript
56
62
  class Show < Operator
57
63
  register_as "show", consumes: 1, produces: 0
58
64
  attr_reader :text
65
+
59
66
  def initialize(text:)
60
67
  @text = text
61
68
  freeze
62
69
  end
70
+
63
71
  def self.from_operands(stack)
64
72
  new(text: stack.pop)
65
73
  end
@@ -70,12 +78,14 @@ module Postscript
70
78
  class Xyshow < Operator
71
79
  register_as "xyshow"
72
80
  attr_reader :text, :dx, :dy
81
+
73
82
  def initialize(text:, dx:, dy:)
74
83
  @text = text
75
84
  @dx = dx
76
85
  @dy = dy
77
86
  freeze
78
87
  end
88
+
79
89
  def self.from_operands(stack)
80
90
  dy = stack.pop
81
91
  dx = stack.pop
@@ -90,10 +100,12 @@ module Postscript
90
100
  class Stringwidth < Operator
91
101
  register_as "stringwidth"
92
102
  attr_reader :text
103
+
93
104
  def initialize(text:)
94
105
  @text = text
95
106
  freeze
96
107
  end
108
+
97
109
  def self.from_operands(stack)
98
110
  new(text: stack.pop)
99
111
  end
@@ -104,11 +116,13 @@ module Postscript
104
116
  class Charpath < Operator
105
117
  register_as "charpath"
106
118
  attr_reader :text, :stroke
119
+
107
120
  def initialize(text:, stroke:)
108
121
  @text = text
109
122
  @stroke = stroke
110
123
  freeze
111
124
  end
125
+
112
126
  def self.from_operands(stack)
113
127
  stroke = stack.pop
114
128
  text = stack.pop
@@ -19,10 +19,12 @@ module Postscript
19
19
  class Setlinewidth < Operator
20
20
  register_as "setlinewidth"
21
21
  attr_reader :width
22
+
22
23
  def initialize(width:)
23
24
  @width = width
24
25
  freeze
25
26
  end
27
+
26
28
  def self.from_operands(stack)
27
29
  new(width: stack.pop_number)
28
30
  end
@@ -31,10 +33,12 @@ module Postscript
31
33
  class Setlinecap < Operator
32
34
  register_as "setlinecap"
33
35
  attr_reader :cap_code
36
+
34
37
  def initialize(cap_code:)
35
38
  @cap_code = cap_code.to_i
36
39
  freeze
37
40
  end
41
+
38
42
  def self.from_operands(stack)
39
43
  new(cap_code: stack.pop_number.to_i)
40
44
  end
@@ -43,10 +47,12 @@ module Postscript
43
47
  class Setlinejoin < Operator
44
48
  register_as "setlinejoin"
45
49
  attr_reader :join_code
50
+
46
51
  def initialize(join_code:)
47
52
  @join_code = join_code.to_i
48
53
  freeze
49
54
  end
55
+
50
56
  def self.from_operands(stack)
51
57
  new(join_code: stack.pop_number.to_i)
52
58
  end
@@ -55,10 +61,12 @@ module Postscript
55
61
  class Setmiterlimit < Operator
56
62
  register_as "setmiterlimit"
57
63
  attr_reader :limit
64
+
58
65
  def initialize(limit:)
59
66
  @limit = limit
60
67
  freeze
61
68
  end
69
+
62
70
  def self.from_operands(stack)
63
71
  new(limit: stack.pop_number)
64
72
  end
@@ -67,11 +75,13 @@ module Postscript
67
75
  class Setdash < Operator
68
76
  register_as "setdash"
69
77
  attr_reader :pattern, :offset
78
+
70
79
  def initialize(pattern:, offset:)
71
80
  @pattern = pattern
72
81
  @offset = offset
73
82
  freeze
74
83
  end
84
+
75
85
  def self.from_operands(stack)
76
86
  offset = stack.pop_number
77
87
  pattern = stack.pop
@@ -11,11 +11,13 @@ module Postscript
11
11
  class Moveto < Operator
12
12
  register_as "moveto"
13
13
  attr_reader :x, :y
14
+
14
15
  def initialize(x:, y:)
15
16
  @x = x
16
17
  @y = y
17
18
  freeze
18
19
  end
20
+
19
21
  def self.from_operands(stack)
20
22
  y = stack.pop_number
21
23
  x = stack.pop_number
@@ -26,11 +28,13 @@ module Postscript
26
28
  class Rmoveto < Operator
27
29
  register_as "rmoveto"
28
30
  attr_reader :dx, :dy
31
+
29
32
  def initialize(dx:, dy:)
30
33
  @dx = dx
31
34
  @dy = dy
32
35
  freeze
33
36
  end
37
+
34
38
  def self.from_operands(stack)
35
39
  dy = stack.pop_number
36
40
  dx = stack.pop_number
@@ -41,11 +45,13 @@ module Postscript
41
45
  class Lineto < Operator
42
46
  register_as "lineto"
43
47
  attr_reader :x, :y
48
+
44
49
  def initialize(x:, y:)
45
50
  @x = x
46
51
  @y = y
47
52
  freeze
48
53
  end
54
+
49
55
  def self.from_operands(stack)
50
56
  y = stack.pop_number
51
57
  x = stack.pop_number
@@ -56,11 +62,13 @@ module Postscript
56
62
  class Rlineto < Operator
57
63
  register_as "rlineto"
58
64
  attr_reader :dx, :dy
65
+
59
66
  def initialize(dx:, dy:)
60
67
  @dx = dx
61
68
  @dy = dy
62
69
  freeze
63
70
  end
71
+
64
72
  def self.from_operands(stack)
65
73
  dy = stack.pop_number
66
74
  dx = stack.pop_number
@@ -71,6 +79,7 @@ module Postscript
71
79
  class Curveto < Operator
72
80
  register_as "curveto"
73
81
  attr_reader :x1, :y1, :x2, :y2, :x3, :y3
82
+
74
83
  def initialize(x1:, y1:, x2:, y2:, x3:, y3:)
75
84
  @x1 = x1
76
85
  @y1 = y1
@@ -80,6 +89,7 @@ module Postscript
80
89
  @y3 = y3
81
90
  freeze
82
91
  end
92
+
83
93
  def self.from_operands(stack)
84
94
  y3 = stack.pop_number
85
95
  x3 = stack.pop_number
@@ -94,6 +104,7 @@ module Postscript
94
104
  class Rcurveto < Operator
95
105
  register_as "rcurveto"
96
106
  attr_reader :dx1, :dy1, :dx2, :dy2, :dx3, :dy3
107
+
97
108
  def initialize(dx1:, dy1:, dx2:, dy2:, dx3:, dy3:)
98
109
  @dx1 = dx1
99
110
  @dy1 = dy1
@@ -103,6 +114,7 @@ module Postscript
103
114
  @dy3 = dy3
104
115
  freeze
105
116
  end
117
+
106
118
  def self.from_operands(stack)
107
119
  dy3 = stack.pop_number
108
120
  dx3 = stack.pop_number
@@ -117,6 +129,7 @@ module Postscript
117
129
  class Arc < Operator
118
130
  register_as "arc"
119
131
  attr_reader :x, :y, :radius, :angle1, :angle2
132
+
120
133
  def initialize(x:, y:, radius:, angle1:, angle2:)
121
134
  @x = x
122
135
  @y = y
@@ -125,6 +138,7 @@ module Postscript
125
138
  @angle2 = angle2
126
139
  freeze
127
140
  end
141
+
128
142
  def self.from_operands(stack)
129
143
  angle2 = stack.pop_number
130
144
  angle1 = stack.pop_number
@@ -138,6 +152,7 @@ module Postscript
138
152
  class Arcn < Operator
139
153
  register_as "arcn"
140
154
  attr_reader :x, :y, :radius, :angle1, :angle2
155
+
141
156
  def initialize(x:, y:, radius:, angle1:, angle2:)
142
157
  @x = x
143
158
  @y = y
@@ -146,6 +161,7 @@ module Postscript
146
161
  @angle2 = angle2
147
162
  freeze
148
163
  end
164
+
149
165
  def self.from_operands(stack)
150
166
  angle2 = stack.pop_number
151
167
  angle1 = stack.pop_number
@@ -35,10 +35,12 @@ module Postscript
35
35
  class Index < Operator
36
36
  register_as "index", consumes: 1, produces: 1
37
37
  attr_reader :index
38
+
38
39
  def initialize(index:)
39
40
  @index = index
40
41
  freeze
41
42
  end
43
+
42
44
  def self.from_operands(stack)
43
45
  new(index: stack.pop_number.to_i)
44
46
  end
@@ -47,11 +49,13 @@ module Postscript
47
49
  class Roll < Operator
48
50
  register_as "roll", consumes: 2, produces: 0
49
51
  attr_reader :count, :positions
52
+
50
53
  def initialize(count:, positions:)
51
54
  @count = count
52
55
  @positions = positions
53
56
  freeze
54
57
  end
58
+
55
59
  def self.from_operands(stack)
56
60
  positions = stack.pop_number.to_i
57
61
  count = stack.pop_number.to_i
@@ -7,11 +7,13 @@ module Postscript
7
7
  class Translate < Operator
8
8
  register_as "translate"
9
9
  attr_reader :tx, :ty
10
+
10
11
  def initialize(tx:, ty:)
11
12
  @tx = tx
12
13
  @ty = ty
13
14
  freeze
14
15
  end
16
+
15
17
  def self.from_operands(stack)
16
18
  ty = stack.pop_number
17
19
  tx = stack.pop_number
@@ -22,11 +24,13 @@ module Postscript
22
24
  class Scale < Operator
23
25
  register_as "scale"
24
26
  attr_reader :sx, :sy
27
+
25
28
  def initialize(sx:, sy:)
26
29
  @sx = sx
27
30
  @sy = sy
28
31
  freeze
29
32
  end
33
+
30
34
  def self.from_operands(stack)
31
35
  sy = stack.pop_number
32
36
  sx = stack.pop_number
@@ -37,10 +41,12 @@ module Postscript
37
41
  class Rotate < Operator
38
42
  register_as "rotate"
39
43
  attr_reader :angle
44
+
40
45
  def initialize(angle:)
41
46
  @angle = angle
42
47
  freeze
43
48
  end
49
+
44
50
  def self.from_operands(stack)
45
51
  new(angle: stack.pop_number)
46
52
  end
@@ -49,17 +55,19 @@ module Postscript
49
55
  class Concat < Operator
50
56
  register_as "concat"
51
57
  attr_reader :matrix
58
+
52
59
  def initialize(matrix:)
53
60
  @matrix = matrix
54
61
  freeze
55
62
  end
63
+
56
64
  def self.from_operands(stack)
57
65
  new(matrix: stack.pop)
58
66
  end
59
67
  end
60
68
 
61
69
  class Matrix < Operator
62
- register_as "matrix"
70
+ register_as "matrix", consumes: 0, produces: 1
63
71
  end
64
72
 
65
73
  class Currentmatrix < Operator
@@ -69,10 +77,12 @@ module Postscript
69
77
  class Setmatrix < Operator
70
78
  register_as "setmatrix"
71
79
  attr_reader :matrix
80
+
72
81
  def initialize(matrix:)
73
82
  @matrix = matrix
74
83
  freeze
75
84
  end
85
+
76
86
  def self.from_operands(stack)
77
87
  new(matrix: stack.pop)
78
88
  end
@@ -51,7 +51,7 @@ module Postscript
51
51
  end
52
52
 
53
53
  def with(**overrides)
54
- Header.new(**to_h.merge(overrides))
54
+ Header.new(**to_h, **overrides)
55
55
  end
56
56
 
57
57
  def to_h
@@ -59,7 +59,7 @@ module Postscript
59
59
  bounding_box: bounding_box, hires_bounding_box: hires_bounding_box,
60
60
  title: title, creator: creator, creation_date: creation_date,
61
61
  pages: pages, page_count: page_count, epsf: epsf,
62
- language_level: language_level, custom: custom,
62
+ language_level: language_level, custom: custom
63
63
  }
64
64
  end
65
65
  end