processing 0.5.33 → 1.0.1
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.
- checksums.yaml +4 -4
- data/ChangeLog.md +25 -1
- data/Gemfile +1 -0
- data/Gemfile.lock +2 -0
- data/Rakefile +5 -5
- data/VERSION +1 -1
- data/lib/processing/all.rb +4 -1
- data/lib/processing/context.rb +128 -0
- data/lib/processing/font.rb +5 -0
- data/lib/processing/graphics.rb +9 -0
- data/lib/processing/graphics_context.rb +640 -42
- data/lib/processing/image.rb +86 -0
- data/lib/processing/shader.rb +29 -16
- data/lib/processing/shape.rb +369 -28
- data/lib/processing/svg.rb +248 -0
- data/lib/processing/vector.rb +126 -0
- data/lib/processing/window.rb +2 -0
- data/processing.gemspec +4 -4
- data/test/{p5.rb → browser.rb} +37 -3
- data/test/helper.rb +40 -7
- data/test/test_color.rb +94 -0
- data/test/test_graphics_context.rb +26 -59
- data/test/test_shape.rb +129 -6
- data/test/test_svg.rb +257 -0
- metadata +17 -12
data/test/test_svg.rb
ADDED
@@ -0,0 +1,257 @@
|
|
1
|
+
require_relative 'helper'
|
2
|
+
|
3
|
+
|
4
|
+
class TestSVG < Test::Unit::TestCase
|
5
|
+
|
6
|
+
def test_color_code()
|
7
|
+
assert_svg_draw '<rect width="500" height="600" fill="#ffaa55"/>'
|
8
|
+
assert_svg_draw '<rect width="500" height="600" fill="#ffaa5599"/>'
|
9
|
+
assert_svg_draw '<rect width="500" height="600" fill="#fa5"/>'
|
10
|
+
assert_svg_draw '<rect width="500" height="600" fill="#fa59"/>'
|
11
|
+
assert_svg_draw '<rect width="500" height="600" fill="red"/>'
|
12
|
+
end
|
13
|
+
|
14
|
+
def test_fill()
|
15
|
+
assert_svg_draw '<rect width="500" height="600" fill="green"/>'
|
16
|
+
end
|
17
|
+
|
18
|
+
def test_stroke_and_width()
|
19
|
+
assert_svg_draw <<~END
|
20
|
+
<line x1="200" y1="300" x2="500" y2="600"
|
21
|
+
stroke="green" stroke-width="200"/>
|
22
|
+
END
|
23
|
+
end
|
24
|
+
|
25
|
+
def test_strokeCap()
|
26
|
+
assert_svg_draw <<~END
|
27
|
+
<line x1="200" y1="300" x2="500" y2="600"
|
28
|
+
stroke="green" stroke-width="200" stroke-linecap="butt"/>
|
29
|
+
END
|
30
|
+
assert_svg_draw <<~END
|
31
|
+
<line x1="200" y1="300" x2="500" y2="600"
|
32
|
+
stroke="green" stroke-width="200" stroke-linecap="round"/>
|
33
|
+
END
|
34
|
+
assert_svg_draw <<~END
|
35
|
+
<line x1="200" y1="300" x2="500" y2="600"
|
36
|
+
stroke="green" stroke-width="200" stroke-linecap="square"/>
|
37
|
+
END
|
38
|
+
end
|
39
|
+
|
40
|
+
def test_strokeJoin()
|
41
|
+
assert_svg_draw <<~END
|
42
|
+
<path d="M 200,300 L 500,600 L 300,800"
|
43
|
+
stroke="green" stroke-width="200" stroke-linejoin="miter"/>
|
44
|
+
END
|
45
|
+
assert_svg_draw <<~END
|
46
|
+
<path d="M 200,300 L 500,600 L 300,800"
|
47
|
+
stroke="green" stroke-width="200" stroke-linejoin="miter-clip"/>
|
48
|
+
END
|
49
|
+
assert_svg_draw <<~END
|
50
|
+
<path d="M 200,300 L 500,600 L 300,800"
|
51
|
+
stroke="green" stroke-width="200" stroke-linejoin="round"/>
|
52
|
+
END
|
53
|
+
assert_svg_draw <<~END
|
54
|
+
<path d="M 200,300 L 500,600 L 300,800"
|
55
|
+
stroke="green" stroke-width="200" stroke-linejoin="bevel"/>
|
56
|
+
END
|
57
|
+
assert_svg_draw <<~END
|
58
|
+
<path d="M 200,300 L 500,600 L 300,800"
|
59
|
+
stroke="green" stroke-width="200" stroke-linejoin="arcs"/>
|
60
|
+
END
|
61
|
+
end
|
62
|
+
|
63
|
+
def test_line()
|
64
|
+
assert_svg_draw <<~END
|
65
|
+
<line x1="200" y1="300" x2="500" y2="600" stroke="black" stroke-width="300"/>
|
66
|
+
END
|
67
|
+
end
|
68
|
+
|
69
|
+
def test_rect()
|
70
|
+
assert_svg_draw '<rect width="500" height="600"/>'
|
71
|
+
assert_svg_draw '<rect width="500" height="600" x="100" y="200"/>'
|
72
|
+
assert_svg_draw '<rect width="500" height="600" x="100" y="200" rx="100" ry="100"/>'
|
73
|
+
|
74
|
+
assert_svg_draw <<~END, threshold: THRESHOLD_TO_BE_FIXED
|
75
|
+
<rect width="500" height="600" x="100" y="200" rx="100" ry="200"/>
|
76
|
+
END
|
77
|
+
assert_svg_draw <<~END, threshold: THRESHOLD_TO_BE_FIXED
|
78
|
+
<rect width="500" height="600" x="100" y="200" rx="200" ry="100"/>
|
79
|
+
END
|
80
|
+
end
|
81
|
+
|
82
|
+
def test_circle()
|
83
|
+
assert_svg_draw '<circle cx="500" cy="600" r="200"/>'
|
84
|
+
end
|
85
|
+
|
86
|
+
def test_ellipse()
|
87
|
+
assert_svg_draw '<ellipse cx="500" cy="600" rx="200" ry="300"/>'
|
88
|
+
end
|
89
|
+
|
90
|
+
def test_polyline()
|
91
|
+
assert_svg_draw <<~END
|
92
|
+
<polyline points="200,300 500,400 600,700 300,800" stroke="black" stroke-width="300"/>
|
93
|
+
END
|
94
|
+
assert_svg_draw <<~END
|
95
|
+
<polyline points="200,300 500,400 600,700 300,800" stroke="black" stroke-width="300"
|
96
|
+
fill="none"/>
|
97
|
+
END
|
98
|
+
end
|
99
|
+
|
100
|
+
def test_polygon()
|
101
|
+
assert_svg_draw <<~END
|
102
|
+
<polygon points="200,300 500,400 600,700 300,800" stroke="black" stroke-width="200"/>
|
103
|
+
END
|
104
|
+
assert_svg_draw <<~END
|
105
|
+
<polygon points="200,300 500,400 600,700 300,800" stroke="black" stroke-width="200"
|
106
|
+
fill="none"/>
|
107
|
+
END
|
108
|
+
end
|
109
|
+
|
110
|
+
def test_path_Mm()
|
111
|
+
assert_svg_draw path_xml "M 200,300 L 500,400"
|
112
|
+
assert_svg_draw path_xml "m 200,300 L 500,400"
|
113
|
+
assert_svg_draw path_xml "M 200,300 L 500,400 M 600,700 L 300,800"
|
114
|
+
assert_svg_draw path_xml "M 200,300 L 500,400 m 100,300 L 300,800"
|
115
|
+
assert_svg_draw path_xml "M 200,300 500,400 600,700 300,800"
|
116
|
+
assert_svg_draw path_xml "m 200,300 300,100 100,300 -300,100"
|
117
|
+
end
|
118
|
+
|
119
|
+
def test_path_Ll()
|
120
|
+
assert_svg_draw path_xml "M 200,300 L 500,400 L 600,700 L 300,800"
|
121
|
+
assert_svg_draw path_xml "M 200,300 L 500,400 600,700 300,800"
|
122
|
+
assert_svg_draw path_xml "M 200,300 l 300,100 l 100,300 l -300,100"
|
123
|
+
assert_svg_draw path_xml "M 200,300 l 300,100 100,300 -300,100"
|
124
|
+
end
|
125
|
+
|
126
|
+
def test_path_Hh()
|
127
|
+
assert_svg_draw path_xml "M 200,300 H 500 H 800"
|
128
|
+
assert_svg_draw path_xml "M 200,300 H 500 800"
|
129
|
+
assert_svg_draw path_xml "M 200,300 h 300 h 300"
|
130
|
+
assert_svg_draw path_xml "M 200,300 h 300 300"
|
131
|
+
end
|
132
|
+
|
133
|
+
def test_path_Vv()
|
134
|
+
assert_svg_draw path_xml "M 200,300 V 500 V 800"
|
135
|
+
assert_svg_draw path_xml "M 200,300 V 500 800"
|
136
|
+
assert_svg_draw path_xml "M 200,300 v 200 h 300"
|
137
|
+
assert_svg_draw path_xml "M 200,300 h 200 300"
|
138
|
+
end
|
139
|
+
|
140
|
+
def test_path_Qq()
|
141
|
+
assert_svg_draw path_xml "M 200,100 Q 800,300 300,400 Q 400,800 800,800"
|
142
|
+
assert_svg_draw path_xml "M 200,100 Q 800,300 300,400 400,800 800,800"
|
143
|
+
assert_svg_draw path_xml "M 200,100 q 600,200 100,300 q 100,400 500,400"
|
144
|
+
assert_svg_draw path_xml "M 200,100 q 600,200 100,300 100,400 500,400"
|
145
|
+
end
|
146
|
+
|
147
|
+
def test_path_Tt()
|
148
|
+
assert_svg_draw path_xml "M 200,100 T 300,400 T 800,800"
|
149
|
+
assert_svg_draw path_xml "M 200,100 T 300,400 800,800"
|
150
|
+
assert_svg_draw path_xml "M 200,100 t 100,300 t 500,400"
|
151
|
+
assert_svg_draw path_xml "M 200,100 t 100,300 500,400"
|
152
|
+
end
|
153
|
+
|
154
|
+
def test_path_Cc()
|
155
|
+
assert_svg_draw path_xml "M 200,100 C 800,200 300,300 700,400 C 600,800 300,500 200,700"
|
156
|
+
assert_svg_draw path_xml "M 200,100 C 800,200 300,300 700,400 600,800 300,500 200,700"
|
157
|
+
assert_svg_draw path_xml "M 200,100 c 600,100 100,200 500,300 c -100,400 -400,100 -500,300"
|
158
|
+
assert_svg_draw path_xml "M 200,100 c 600,100 100,200 500,300 -100,400 -400,100 -500,300"
|
159
|
+
end
|
160
|
+
|
161
|
+
def test_path_Ss()
|
162
|
+
assert_svg_draw path_xml "M 200,100 S 800,300 500,500 S 800,700 200,900"
|
163
|
+
assert_svg_draw path_xml "M 200,100 S 800,300 500,500 800,700 200,900"
|
164
|
+
assert_svg_draw path_xml "M 200,100 s 600,200 300,400 s 300,200 -300,400"
|
165
|
+
assert_svg_draw path_xml "M 200,100 s 600,200 300,400 300,200 -300,400"
|
166
|
+
end
|
167
|
+
|
168
|
+
def test_path_Aa()
|
169
|
+
assert_svg_draw path_xml(<<~END), threshold: THRESHOLD_TO_BE_FIXED
|
170
|
+
M 200,100 A 300,200 0 0 0 500,400 A 600,500 0 0 0 900,800
|
171
|
+
END
|
172
|
+
assert_svg_draw path_xml(<<~END), threshold: THRESHOLD_TO_BE_FIXED
|
173
|
+
M 200,100 A 300,200 0 0 0 500,400 600,500 0 0 0 900,800
|
174
|
+
END
|
175
|
+
assert_svg_draw path_xml(<<~END), threshold: THRESHOLD_TO_BE_FIXED
|
176
|
+
M 200,100 a 100,100 0 0 0 300,300 a 100,100 0 0 0 400,400
|
177
|
+
END
|
178
|
+
assert_svg_draw path_xml(<<~END), threshold: THRESHOLD_TO_BE_FIXED
|
179
|
+
M 200,100 a 100,100 0 0 0 300,300 100,100 0 0 0 400,400
|
180
|
+
END
|
181
|
+
end
|
182
|
+
|
183
|
+
def test_path_Zz()
|
184
|
+
assert_svg_draw path_xml "M 200,300 L 500,400 L 600,700 L 300,800 Z"
|
185
|
+
assert_svg_draw path_xml "M 200,300 L 500,400 L 600,700 L 300,800 z"
|
186
|
+
end
|
187
|
+
|
188
|
+
def test_group_fill()
|
189
|
+
assert_svg_draw <<~END
|
190
|
+
<g>
|
191
|
+
<rect x="200" y="300" width="500" height="600" fill="green"/>
|
192
|
+
</g>
|
193
|
+
END
|
194
|
+
assert_svg_draw <<~END
|
195
|
+
<g fill="red">
|
196
|
+
<rect x="200" y="300" width="500" height="600"/>
|
197
|
+
</g>
|
198
|
+
END
|
199
|
+
assert_svg_draw <<~END
|
200
|
+
<g fill="red">
|
201
|
+
<rect x="200" y="300" width="500" height="600" fill="green"/>
|
202
|
+
</g>
|
203
|
+
END
|
204
|
+
end
|
205
|
+
|
206
|
+
def test_group_stroke()
|
207
|
+
assert_svg_draw <<~END
|
208
|
+
<g>
|
209
|
+
<line x1="200" y1="300" x2="500" y2="600"
|
210
|
+
stroke-width="200" stroke="green"/>
|
211
|
+
</g>
|
212
|
+
END
|
213
|
+
assert_svg_draw <<~END
|
214
|
+
<g stroke="red">
|
215
|
+
<line x1="200" y1="300" x2="500" y2="600"
|
216
|
+
stroke-width="200"/>
|
217
|
+
</g>
|
218
|
+
END
|
219
|
+
assert_svg_draw <<~END
|
220
|
+
<g stroke="red">
|
221
|
+
<line x1="200" y1="300" x2="500" y2="600"
|
222
|
+
stroke-width="200" stroke="green"/>
|
223
|
+
</g>
|
224
|
+
END
|
225
|
+
end
|
226
|
+
|
227
|
+
def test_group_stroke_width()
|
228
|
+
assert_svg_draw <<~END
|
229
|
+
<g>
|
230
|
+
<line x1="200" y1="300" x2="500" y2="600" stroke="green" stroke-width="200"/>
|
231
|
+
</g>
|
232
|
+
END
|
233
|
+
assert_svg_draw <<~END
|
234
|
+
<g stroke-width="300">
|
235
|
+
<line x1="200" y1="300" x2="500" y2="600" stroke="green" />
|
236
|
+
</g>
|
237
|
+
END
|
238
|
+
assert_svg_draw <<~END
|
239
|
+
<g stroke-width="300">
|
240
|
+
<line x1="200" y1="300" x2="500" y2="600" stroke="green" stroke-width="400"/>
|
241
|
+
</g>
|
242
|
+
END
|
243
|
+
end
|
244
|
+
|
245
|
+
def test_path_data_shorthand()
|
246
|
+
assert_svg_draw path_xml "M200,300L500,400L600,700L300,800"
|
247
|
+
assert_svg_draw path_xml "M 200,300 l 500.99.400 0,200 -200,0.99.300,200"
|
248
|
+
assert_svg_draw path_xml "M 200,800 l 500-200-200-200-300-300"
|
249
|
+
end
|
250
|
+
|
251
|
+
def path_xml(d)
|
252
|
+
<<~END
|
253
|
+
<path fill="none" stroke="black" stroke-width="100" d="#{d}"/>
|
254
|
+
END
|
255
|
+
end
|
256
|
+
|
257
|
+
end# TestSVG
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: processing
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 1.0.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- xordog
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2024-
|
11
|
+
date: 2024-03-13 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: xot
|
@@ -16,56 +16,56 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: 0.
|
19
|
+
version: '0.2'
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: 0.
|
26
|
+
version: '0.2'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: rucy
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
31
|
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: 0.
|
33
|
+
version: '0.2'
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
38
|
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version: 0.
|
40
|
+
version: '0.2'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: rays
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
45
|
- - "~>"
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version: 0.
|
47
|
+
version: '0.2'
|
48
48
|
type: :runtime
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
52
|
- - "~>"
|
53
53
|
- !ruby/object:Gem::Version
|
54
|
-
version: 0.
|
54
|
+
version: '0.2'
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
name: reflexion
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
58
58
|
requirements:
|
59
59
|
- - "~>"
|
60
60
|
- !ruby/object:Gem::Version
|
61
|
-
version: 0.
|
61
|
+
version: '0.2'
|
62
62
|
type: :runtime
|
63
63
|
prerelease: false
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
66
66
|
- - "~>"
|
67
67
|
- !ruby/object:Gem::Version
|
68
|
-
version: 0.
|
68
|
+
version: '0.2'
|
69
69
|
description: Creative Coding Framework has API compatible to Processing or p5.js.
|
70
70
|
email: xordog@gmail.com
|
71
71
|
executables: []
|
@@ -108,19 +108,22 @@ files:
|
|
108
108
|
- lib/processing/image.rb
|
109
109
|
- lib/processing/shader.rb
|
110
110
|
- lib/processing/shape.rb
|
111
|
+
- lib/processing/svg.rb
|
111
112
|
- lib/processing/touch.rb
|
112
113
|
- lib/processing/vector.rb
|
113
114
|
- lib/processing/window.rb
|
114
115
|
- processing.gemspec
|
116
|
+
- test/browser.rb
|
115
117
|
- test/helper.rb
|
116
|
-
- test/p5.rb
|
117
118
|
- test/test_capture.rb
|
119
|
+
- test/test_color.rb
|
118
120
|
- test/test_font.rb
|
119
121
|
- test/test_graphics.rb
|
120
122
|
- test/test_graphics_context.rb
|
121
123
|
- test/test_image.rb
|
122
124
|
- test/test_shader.rb
|
123
125
|
- test/test_shape.rb
|
126
|
+
- test/test_svg.rb
|
124
127
|
- test/test_text_bounds.rb
|
125
128
|
- test/test_touch.rb
|
126
129
|
- test/test_utility.rb
|
@@ -149,15 +152,17 @@ signing_key:
|
|
149
152
|
specification_version: 4
|
150
153
|
summary: Processing compatible Creative Coding Framework.
|
151
154
|
test_files:
|
155
|
+
- test/browser.rb
|
152
156
|
- test/helper.rb
|
153
|
-
- test/p5.rb
|
154
157
|
- test/test_capture.rb
|
158
|
+
- test/test_color.rb
|
155
159
|
- test/test_font.rb
|
156
160
|
- test/test_graphics.rb
|
157
161
|
- test/test_graphics_context.rb
|
158
162
|
- test/test_image.rb
|
159
163
|
- test/test_shader.rb
|
160
164
|
- test/test_shape.rb
|
165
|
+
- test/test_svg.rb
|
161
166
|
- test/test_text_bounds.rb
|
162
167
|
- test/test_touch.rb
|
163
168
|
- test/test_utility.rb
|