processing 0.4.0 → 0.5.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (42) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/{release.yml → release-gem.yml} +21 -21
  3. data/.github/workflows/tag.yml +35 -0
  4. data/.github/workflows/test.yml +8 -9
  5. data/.github/workflows/utils.rb +55 -0
  6. data/ChangeLog.md +40 -28
  7. data/LICENSE +1 -1
  8. data/Rakefile +9 -34
  9. data/RubyProcessing.podspec +1 -1
  10. data/VERSION +1 -1
  11. data/examples/breakout.rb +2 -1
  12. data/examples/camera.rb +2 -1
  13. data/examples/clock.rb +3 -1
  14. data/examples/delay_camera.rb +2 -1
  15. data/examples/hello.rb +2 -1
  16. data/examples/image.rb +2 -1
  17. data/examples/shapes.rb +2 -1
  18. data/lib/processing/all.rb +20 -0
  19. data/lib/processing/capture.rb +119 -0
  20. data/lib/processing/context.rb +471 -0
  21. data/lib/processing/{module.rb → extension.rb} +3 -3
  22. data/lib/processing/font.rb +62 -0
  23. data/lib/processing/graphics.rb +40 -0
  24. data/lib/processing/graphics_context.rb +1676 -0
  25. data/lib/processing/image.rb +128 -0
  26. data/lib/processing/shader.rb +157 -0
  27. data/lib/processing/touch.rb +28 -0
  28. data/lib/processing/vector.rb +559 -0
  29. data/lib/processing.rb +30 -11
  30. data/lib/rubysketch-processing.rb +2 -1
  31. data/lib/rubysketch.rb +1 -1
  32. data/processing.gemspec +12 -6
  33. data/src/RubyProcessing.mm +1 -1
  34. data/test/helper.rb +8 -2
  35. data/test/{processing/test_graphics.rb → test_graphics.rb} +3 -3
  36. data/test/{processing/test_shader.rb → test_shader.rb} +3 -3
  37. data/test/{processing/test_utility.rb → test_utility.rb} +3 -3
  38. data/test/{processing/test_vector.rb → test_vector.rb} +8 -4
  39. metadata +112 -20
  40. data/lib/processing/include.rb +0 -25
  41. data/lib/processing/processing.rb +0 -3211
  42. data/test/processing/helper.rb +0 -11
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 1b0e4311319c994f90579dafbd3a62b50f623977f6c60c26ba9f0b77a150b564
4
- data.tar.gz: d7f5d796d918ed68ba50cb20fc148a7548b8a84dce0901a4ce1f7236740a994a
3
+ metadata.gz: 7c2e51ddc5b4af3e0703b5c7df0dffb20a61bf2069c0796cea4b9c781b6a5e2a
4
+ data.tar.gz: 6cec5d1765224bcd50b960370969eeae686965a057936a958581293447d0f0c7
5
5
  SHA512:
6
- metadata.gz: b176e101c82a244f61fa3210f5d6902c86f92f94eaac24858e4ab6671fc6983015f64d601d4f8e691ae7351002183cd350b31e27231407e7cc0b7aeb732cdbbd
7
- data.tar.gz: 6d450c5cfaeb5280ab0f600afd421581ceb2dfe25b672f93ea4bfd9ebefd1afacae8ba54c73408bafe828e4522fe003c676299e501831e77c74fd8ab69efdbb7
6
+ metadata.gz: 6d3f30687d9eaf5f009d8ee8acec6008bb400a90d5424054e0261ddba603e549a15521466c650b0ae8614dad34796a49145a88996d06975021a4345da295cdfe
7
+ data.tar.gz: a2f643357b3f4950bda9a58e6f40d35919c27cf2097ac1570e99ffe4498771d3a90fa51ace2ede6910b64c90b749d2b7b67112a9fb19eed57cceda8908690784
@@ -1,4 +1,4 @@
1
- name: Release
1
+ name: Release Gem
2
2
 
3
3
  on:
4
4
  push:
@@ -9,46 +9,46 @@ jobs:
9
9
  runs-on: macos-latest
10
10
 
11
11
  steps:
12
+ - name: ruby 3.2
13
+ uses: ruby/setup-ruby@v1
14
+ with:
15
+ ruby-version: 3.2
16
+
12
17
  - name: checkout
13
18
  uses: actions/checkout@v2
14
19
 
15
- - name: ruby 3.0
16
- uses: actions/setup-ruby@v1
17
- with:
18
- ruby-version: 3.0.x
20
+ - name: setup dependencies
21
+ run: "ruby -I.github/workflows -rutils -e 'setup_dependencies'"
19
22
 
20
23
  - name: install gems
21
- run: |
22
- gem install bundler
23
- bundle install --jobs 4 --retry 3
24
+ run: gem install yard
24
25
 
25
- - name: version
26
- id: version
27
- run: |
28
- echo ::set-output name=value::$(ruby -e 'print "${{ github.ref }}"[/\/v([\w\.\-]+)/, 1]')
26
+ - name: test
27
+ run: rake test
29
28
 
30
29
  - name: create gem
31
- run: rake clean gem
30
+ id: gem
31
+ run: |
32
+ rake gem
33
+ echo path=$(ruby -e 'print Dir.glob("*.gem").first') >> $GITHUB_OUTPUT
32
34
 
33
- - name: create release
34
- id: create_release
35
+ - name: create github release
36
+ id: release
35
37
  uses: actions/create-release@v1
36
38
  env:
37
39
  GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
38
40
  with:
39
41
  tag_name: ${{ github.ref }}
40
42
  release_name: ${{ github.ref }}
41
- draft: false
42
- prerelease: false
43
43
 
44
- - name: upload to releases
44
+ - name: upload to github release
45
45
  uses: actions/upload-release-asset@v1
46
46
  env:
47
47
  GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
48
48
  with:
49
- upload_url: ${{ steps.create_release.outputs.upload_url }}
50
- asset_path: ./processing-${{ steps.version.outputs.value }}.gem
51
- asset_name: processing-${{ steps.version.outputs.value }}.gem
49
+ upload_url: ${{ steps.release.outputs.upload_url }}
50
+ asset_path: ./${{ steps.gem.outputs.path }}
51
+ asset_name: ${{ steps.gem.outputs.path }}
52
52
  asset_content_type: application/zip
53
53
 
54
54
  - name: upload to rubygems
@@ -0,0 +1,35 @@
1
+ name: Tag
2
+
3
+ on:
4
+ push:
5
+ branches: [master]
6
+
7
+ jobs:
8
+ tag:
9
+ runs-on: ubuntu-latest
10
+
11
+ steps:
12
+ - name: ruby 3.2
13
+ uses: ruby/setup-ruby@v1
14
+ with:
15
+ ruby-version: 3.2
16
+
17
+ - name: checkout
18
+ uses: actions/checkout@v2
19
+ with:
20
+ fetch-depth: 0
21
+ token: ${{ secrets.PAT }}
22
+
23
+ - name: setup dependencies
24
+ run: "ruby -I.github/workflows -rutils -e 'setup_dependencies only: :xot'"
25
+
26
+ - name: setup user name and email
27
+ run: |
28
+ git config --global user.email "xordog@gmail.com"
29
+ git config --global user.name "xord"
30
+
31
+ - name: tag versions
32
+ run: "ruby -I.github/workflows -rutils -e 'tag_versions'"
33
+
34
+ - name: push tags
35
+ run: git push origin --tags
@@ -11,17 +11,16 @@ jobs:
11
11
  runs-on: macos-latest
12
12
 
13
13
  steps:
14
- - uses: actions/checkout@v2
15
-
16
- - name: ruby 3.0
17
- uses: actions/setup-ruby@v1
14
+ - name: ruby 3.2
15
+ uses: ruby/setup-ruby@v1
18
16
  with:
19
- ruby-version: 3.0.x
17
+ ruby-version: 3.2
18
+
19
+ - name: checkout
20
+ uses: actions/checkout@v2
20
21
 
21
- - name: install gems
22
- run: |
23
- gem install bundler
24
- bundle install --jobs 4 --retry 3
22
+ - name: setup dependencies
23
+ run: "ruby -I.github/workflows -rutils -e 'setup_dependencies'"
25
24
 
26
25
  - name: test
27
26
  run: rake test
@@ -0,0 +1,55 @@
1
+ RENAMES = {reflex: 'reflexion'}
2
+
3
+ def sh(cmd)
4
+ puts cmd
5
+ system cmd
6
+ end
7
+
8
+ def setup_dependencies(build: true, only: nil)
9
+ gemspec_path = `git ls-files`.lines(chomp: true).find {|l| l =~ /\.gemspec$/}
10
+ return unless gemspec_path
11
+
12
+ gemspec = File.read gemspec_path
13
+ name = File.basename gemspec_path, '.gemspec'
14
+
15
+ exts = File.readlines('Rakefile')
16
+ .map {|l| l[%r|^\s*require\W+(\w+)/extension\W+$|, 1]}
17
+ .compact
18
+ .reject {|ext| ext == name}
19
+ exts = exts & [only].flatten.map(&:to_s) if only
20
+
21
+ exts.each do |ext|
22
+ gem = RENAMES[ext.to_sym].then {|s| s || ext}
23
+ clone = "git clone --depth 1 https://github.com/xord/#{ext}.git ../#{ext}"
24
+ ver = gemspec[/add_runtime_dependency.*['"]#{gem}['"].*['"]\s*~>\s*([\d\.]+)\s*['"]/, 1]
25
+
26
+ # 'rake subtree:push' pushes all subrepos, so cloning by new tag
27
+ # often fails before tagging each new tag
28
+ sh %( #{clone} --branch v#{ver} || #{clone} )
29
+ sh %( cd ../#{ext} && rake ext )
30
+ end
31
+ end
32
+
33
+ def tag_versions()
34
+ tags = `git tag`.lines chomp: true
35
+ vers = `git log --oneline ./VERSION`
36
+ .lines(chomp: true)
37
+ .map {|line| line.split.first[/^\w+$/]}
38
+ .map {|hash| [`git cat-file -p #{hash}:./VERSION 2>/dev/null`[/[\d\.]+/], hash]}
39
+ .select {|ver, hash| ver && hash}
40
+ .reverse
41
+ .to_h
42
+
43
+ changes = File.read('ChangeLog.md')
44
+ .split(/^\s*##\s*\[\s*v([\d\.]+)\s*\].*$/)
45
+ .slice(1..-1)
46
+ .each_slice(2)
47
+ .to_h
48
+ .transform_values(&:strip!)
49
+
50
+ vers.to_a.reverse.each do |ver, hash|
51
+ tag = "v#{ver}"
52
+ break if tags.include?(tag)
53
+ sh %( git tag -a -m \"#{changes[ver]&.gsub '"', '\\"'}\" #{tag} #{hash} )
54
+ end
55
+ end
data/ChangeLog.md CHANGED
@@ -1,14 +1,26 @@
1
- # Processing for CRuby ChangeLog
1
+ # processing ChangeLog
2
2
 
3
3
 
4
- ## [0.4.0] - 2022-12-29
4
+ ## [v0.5.1] - 2023-03-01
5
+
6
+ - requiring 'rubysketch-processing' is deprecated
7
+
8
+
9
+ ## [v0.5.0] - 2023-02-09
10
+
11
+ - requiring 'processing/include' is deprecated
12
+ - require 'processing' and 'using Processing' is now required
13
+ - do not show the window if a draw block is not given
14
+
15
+
16
+ ## [v0.4.0] - 2022-12-29
5
17
 
6
18
  - renamed from rubysketch.gem to processing.gem
7
19
  - renamed from RubySketch Pod to RubyProcessing Pod
8
20
  - delete glsl mode
9
21
 
10
22
 
11
- ## [0.3.22] - 2022-11-14
23
+ ## [v0.3.22] - 2022-11-14
12
24
 
13
25
  RubySketch::Processing
14
26
  - add Shader class
@@ -22,7 +34,7 @@ RubySketch::GLSL
22
34
  - displays with pixel density 1.0
23
35
 
24
36
 
25
- ## [0.3.21] - 2022-09-05
37
+ ## [v0.3.21] - 2022-09-05
26
38
 
27
39
  - add rubysketch-glsl.rb
28
40
  - add blend(), createImage(), setTitle(), tint() and noTint()
@@ -32,7 +44,7 @@ RubySketch::GLSL
32
44
  - change initial values for strokeCap and strokeJoin to ROUND and MITER
33
45
 
34
46
 
35
- ## [0.3.20] - 2022-07-24
47
+ ## [v0.3.20] - 2022-07-24
36
48
 
37
49
  - add mouseClicked()
38
50
  - add blendMode()
@@ -41,73 +53,73 @@ RubySketch::GLSL
41
53
  - fix that resizing canvas consumes too much memory
42
54
 
43
55
 
44
- ## [0.3.19] - 2021-12-5
56
+ ## [v0.3.19] - 2021-12-5
45
57
 
46
58
  - fix runtime error
47
59
 
48
60
 
49
- ## [0.3.18] - 2021-12-5
61
+ ## [v0.3.18] - 2021-12-5
50
62
 
51
63
  - add 'mouseButton'
52
64
  - pointer cancel event calls pointer_up block
53
65
 
54
66
 
55
- ## [0.3.17] - 2021-12-5
67
+ ## [v0.3.17] - 2021-12-5
56
68
 
57
69
  - add Touch#id
58
70
 
59
71
 
60
- ## [0.3.16] - 2021-2-14
72
+ ## [v0.3.16] - 2021-2-14
61
73
 
62
74
  - add key, keyCode and keyPressed system values
63
75
  - add keyPressed(), keyReleased() and keyTyped() functions
64
76
  - add motionGravity value and motion() function
65
77
 
66
78
 
67
- ## [0.3.15] - 2020-12-12
79
+ ## [v0.3.15] - 2020-12-12
68
80
 
69
81
  - delete temporary directory on launch
70
82
 
71
83
 
72
- ## [0.3.14] - 2020-12-12
84
+ ## [v0.3.14] - 2020-12-12
73
85
 
74
86
  - fix loadImage() fails when Encoding.default_internal is not nil
75
87
 
76
88
 
77
- ## [0.3.13] - 2020-12-12
89
+ ## [v0.3.13] - 2020-12-12
78
90
 
79
91
  - size(), createCanvas(): default pixelDensity is same as current value
80
92
 
81
93
 
82
- ## [0.3.12] - 2020-12-10
94
+ ## [v0.3.12] - 2020-12-10
83
95
 
84
96
  - size() and createCanvas() take 'pixelDensity' parameter and default value is 1
85
97
 
86
98
 
87
- ## [0.3.11] - 2020-12-9
99
+ ## [v0.3.11] - 2020-12-9
88
100
 
89
101
  - add size(), createCanvas() and pixelDensity()
90
102
 
91
103
 
92
- ## [0.3.10] - 2020-12-1
104
+ ## [v0.3.10] - 2020-12-1
93
105
 
94
106
  - invert angle parameter value for arc() to fix compatibility to processing API
95
107
 
96
108
 
97
- ## [0.3.9] - 2020-11-30
109
+ ## [v0.3.9] - 2020-11-30
98
110
 
99
111
  - Graphics#beginDraw() can take block to call endDraw automatically
100
112
  - Capture#start() always returns nil
101
113
  - add delay_camera.rb
102
114
 
103
115
 
104
- ## [0.3.8] - 2020-11-27
116
+ ## [v0.3.8] - 2020-11-27
105
117
 
106
118
  - Capture#initialize() can take requestWidth, requestHeight and cameraName
107
119
  - add Capture#width and Capture#height
108
120
 
109
121
 
110
- ## [0.3.7] - 2020-11-18
122
+ ## [v0.3.7] - 2020-11-18
111
123
 
112
124
  - add Capture class
113
125
  - add log(), exp(), sqrt() and PI
@@ -116,13 +128,13 @@ RubySketch::GLSL
116
128
  - fix error on calling image()
117
129
 
118
130
 
119
- ## [0.3.6] - 2020-08-02
131
+ ## [v0.3.6] - 2020-08-02
120
132
 
121
133
  - random() can take array or nothing
122
134
  - use github actions to release gem package
123
135
 
124
136
 
125
- ## [0.3.5] - 2020-08-02
137
+ ## [v0.3.5] - 2020-08-02
126
138
 
127
139
  - add random()
128
140
  - add sin(), cos(), tan(), asin(), acos(), atan() and atan2()
@@ -130,17 +142,17 @@ RubySketch::GLSL
130
142
  - fix error on calling rotate()
131
143
 
132
144
 
133
- ## [0.3.4] - 2020-08-02
145
+ ## [v0.3.4] - 2020-08-02
134
146
 
135
147
  - delete Utility module
136
148
 
137
149
 
138
- ## [0.3.3] - 2020-08-01
150
+ ## [v0.3.3] - 2020-08-01
139
151
 
140
152
  - add Vector class
141
153
 
142
154
 
143
- ## [0.3.2] - 2020-07-22
155
+ ## [v0.3.2] - 2020-07-22
144
156
 
145
157
  - text() draws to the baseline by default
146
158
  - add textWidth(), textAscent(), textDescent() and textAlign()
@@ -148,24 +160,24 @@ RubySketch::GLSL
148
160
  - change initial background color to grayscale 0.8
149
161
 
150
162
 
151
- ## [0.3.1] - 2020-07-17
163
+ ## [v0.3.1] - 2020-07-17
152
164
 
153
165
  - add touchStarted(), touchEnded(), touchMoved() and touches()
154
166
  - make all event handler drawable
155
167
  - limit font max size to 256
156
168
 
157
169
 
158
- ## [0.3.0] - 2020-05-21
170
+ ## [v0.3.0] - 2020-05-21
159
171
 
160
172
  - add createGraphics()
161
173
 
162
174
 
163
- ## [0.2.7] - 2020-04-17
175
+ ## [v0.2.7] - 2020-04-17
164
176
 
165
177
  - add strokeCap() and strokeJoin()
166
178
 
167
179
 
168
- ## [0.2.6] - 2020-04-17
180
+ ## [v0.2.6] - 2020-04-17
169
181
 
170
182
  - push(), pushMatrix() and pushStyle() take block to automatic pop
171
183
  - refine startup process
@@ -174,7 +186,7 @@ RubySketch::GLSL
174
186
  - add loop(), noLoop() and redraw()
175
187
 
176
188
 
177
- ## [0.2.5] - 2020-03-29
189
+ ## [v0.2.5] - 2020-03-29
178
190
 
179
191
  - delete debug prints
180
192
  - show unsupported image type
data/LICENSE CHANGED
@@ -1,6 +1,6 @@
1
1
  MIT License
2
2
 
3
- Copyright (c) 2019 xord.org
3
+ Copyright (c) 2023 xord.org
4
4
 
5
5
  Permission is hereby granted, free of charge, to any person obtaining a copy
6
6
  of this software and associated documentation files (the "Software"), to deal
data/Rakefile CHANGED
@@ -1,50 +1,25 @@
1
1
  # -*- mode: ruby -*-
2
2
 
3
3
 
4
- %w[../xot ../rucy ../rays ../reflex .]
4
+ %w[../xot ../rucy ../beeps ../rays ../reflex .]
5
5
  .map {|s| File.expand_path "#{s}/lib", __dir__}
6
6
  .each {|s| $:.unshift s if !$:.include?(s) && File.directory?(s)}
7
7
 
8
8
  require 'rucy/rake'
9
9
 
10
- require 'xot/module'
11
- require 'rucy/module'
12
- require 'rays/module'
13
- require 'reflex/module'
14
- require 'processing/module'
10
+ require 'xot/extension'
11
+ require 'rucy/extension'
12
+ require 'beeps/extension'
13
+ require 'rays/extension'
14
+ require 'reflex/extension'
15
+ require 'processing/extension'
15
16
 
16
17
 
17
- MODULES = [Xot, Rucy, Rays, Reflex, Processing]
18
+ EXTENSIONS = [Xot, Rucy, Beeps, Rays, Reflex, Processing]
18
19
 
19
20
  ENV['RDOC'] = 'yardoc --no-private'
20
21
 
22
+ default_tasks
21
23
  test_ruby_extension
22
24
  generate_documents
23
25
  build_ruby_gem
24
-
25
- task :default
26
-
27
-
28
- namespace :version do
29
-
30
- namespace :bump do
31
-
32
- task :major do
33
- update_and_tag_version 0
34
- end
35
-
36
- task :minor do
37
- update_and_tag_version 1
38
- end
39
-
40
- task :patch do
41
- update_and_tag_version 2
42
- end
43
-
44
- task :build do
45
- update_and_tag_version 3
46
- end
47
-
48
- end# bump
49
-
50
- end# version
@@ -3,7 +3,7 @@
3
3
 
4
4
  Pod::Spec.new do |s|
5
5
  s.name = "RubyProcessing"
6
- s.version = File.readlines(File.expand_path 'VERSION', __dir__)[0].chomp
6
+ s.version = File.read(File.expand_path 'VERSION', __dir__)[/[\d\.]+/]
7
7
  s.summary = "Yet Another Processing implementation for Ruby"
8
8
  s.description = "Yet Another Processing implementation for Ruby"
9
9
  s.license = "MIT"
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.4.0
1
+ 0.5.1
data/examples/breakout.rb CHANGED
@@ -2,7 +2,8 @@
2
2
  .map {|s| File.expand_path "../../#{s}/lib", __dir__}
3
3
  .each {|s| $:.unshift s if !$:.include?(s) && File.directory?(s)}
4
4
 
5
- require 'processing/include'
5
+ require 'processing'
6
+ using Processing
6
7
 
7
8
 
8
9
  PADDING = 50
data/examples/camera.rb CHANGED
@@ -2,7 +2,8 @@
2
2
  .map {|s| File.expand_path "../../#{s}/lib", __dir__}
3
3
  .each {|s| $:.unshift s if !$:.include?(s) && File.directory?(s)}
4
4
 
5
- require 'processing/include'
5
+ require 'processing'
6
+ using Processing
6
7
 
7
8
 
8
9
  cam = Capture.new 300, 300
data/examples/clock.rb CHANGED
@@ -2,7 +2,9 @@
2
2
  .map {|s| File.expand_path "../../#{s}/lib", __dir__}
3
3
  .each {|s| $:.unshift s if !$:.include?(s) && File.directory?(s)}
4
4
 
5
- require 'processing/include'
5
+ require 'processing'
6
+ using Processing
7
+
6
8
 
7
9
  COLORS = %w[ #F99292 #FFBC61 #FFC679 #FFF4E0 ]
8
10
 
@@ -2,7 +2,8 @@
2
2
  .map {|s| File.expand_path "../../#{s}/lib", __dir__}
3
3
  .each {|s| $:.unshift s if !$:.include?(s) && File.directory?(s)}
4
4
 
5
- require 'processing/include'
5
+ require 'processing'
6
+ using Processing
6
7
 
7
8
 
8
9
  w, h = width, height
data/examples/hello.rb CHANGED
@@ -2,7 +2,8 @@
2
2
  .map {|s| File.expand_path "../../#{s}/lib", __dir__}
3
3
  .each {|s| $:.unshift s if !$:.include?(s) && File.directory?(s)}
4
4
 
5
- require 'processing/include'
5
+ require 'processing'
6
+ using Processing
6
7
 
7
8
 
8
9
  draw do
data/examples/image.rb CHANGED
@@ -2,7 +2,8 @@
2
2
  .map {|s| File.expand_path "../../#{s}/lib", __dir__}
3
3
  .each {|s| $:.unshift s if !$:.include?(s) && File.directory?(s)}
4
4
 
5
- require 'processing/include'
5
+ require 'processing'
6
+ using Processing
6
7
 
7
8
 
8
9
  icon = loadImage 'https://xord.org/rubysketch/images/rubysketch128.png'
data/examples/shapes.rb CHANGED
@@ -2,7 +2,8 @@
2
2
  .map {|s| File.expand_path "../../#{s}/lib", __dir__}
3
3
  .each {|s| $:.unshift s if !$:.include?(s) && File.directory?(s)}
4
4
 
5
- require 'processing/include'
5
+ require 'processing'
6
+ using Processing
6
7
 
7
8
 
8
9
  setup do
@@ -0,0 +1,20 @@
1
+ require 'set'
2
+ require 'digest/sha1'
3
+ require 'pathname'
4
+ require 'tmpdir'
5
+ require 'open-uri'
6
+ require 'reflex'
7
+
8
+ require 'processing/extension'
9
+ require 'processing/app'
10
+ require 'processing/window'
11
+
12
+ require 'processing/vector'
13
+ require 'processing/image'
14
+ require 'processing/font'
15
+ require 'processing/touch'
16
+ require 'processing/shader'
17
+ require 'processing/capture'
18
+ require 'processing/graphics_context'
19
+ require 'processing/graphics'
20
+ require 'processing/context'