sgl 0.4.0 → 1.0.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.
Files changed (94) hide show
  1. data/ChangeLog +254 -234
  2. data/History.txt +6 -0
  3. data/Manifest.txt +10 -0
  4. data/Rakefile +27 -7
  5. data/examples/cocoa1-basic.rb +14 -14
  6. data/examples/cocoa10-transparent.rb +26 -26
  7. data/examples/cocoa11-application.rb +13 -13
  8. data/examples/cocoa2-draw.rb +23 -23
  9. data/examples/cocoa3-affine.rb +29 -29
  10. data/examples/cocoa4-font.rb +24 -24
  11. data/examples/cocoa5-image.rb +22 -22
  12. data/examples/cocoa6-sound.rb +24 -24
  13. data/examples/cocoa7-movie.rb +40 -40
  14. data/examples/cocoa8-movieoverlay.rb +42 -42
  15. data/examples/cocoa9-streaming.rb +40 -40
  16. data/examples/opengl1-basic.rb +14 -14
  17. data/examples/opengl11-application.rb +13 -13
  18. data/examples/opengl2-draw.rb +23 -23
  19. data/examples/opengl3-affine.rb +29 -29
  20. data/examples/sample1.rb +11 -11
  21. data/examples/sample10.rb +16 -16
  22. data/examples/sample11.rb +22 -22
  23. data/examples/sample11a.rb +33 -33
  24. data/examples/sample12.rb +30 -30
  25. data/examples/sample12a.rb +35 -35
  26. data/examples/sample13.rb +116 -116
  27. data/examples/sample15.rb +24 -24
  28. data/examples/sample16.rb +31 -31
  29. data/examples/sample16a.rb +35 -35
  30. data/examples/sample6.rb +18 -18
  31. data/examples/sample7.rb +16 -16
  32. data/examples/sample9.rb +20 -20
  33. data/examples/testgl.rb +169 -169
  34. data/lib/sgl/bass.rb +46 -46
  35. data/lib/sgl/cocoa-app.rb +43 -43
  36. data/lib/sgl/cocoa-color.rb +65 -65
  37. data/lib/sgl/cocoa-draw.rb +72 -72
  38. data/lib/sgl/cocoa-event.rb +229 -229
  39. data/lib/sgl/cocoa-media.rb +144 -144
  40. data/lib/sgl/cocoa-notuse.rb +493 -493
  41. data/lib/sgl/cocoa-window.rb +203 -203
  42. data/lib/sgl/cocoa.rb +8 -8
  43. data/lib/sgl/opengl-app.rb +38 -38
  44. data/lib/sgl/opengl-color.rb +44 -44
  45. data/lib/sgl/opengl-draw.rb +260 -260
  46. data/lib/sgl/opengl-event.rb +325 -325
  47. data/lib/sgl/opengl-modules.rb +22 -22
  48. data/lib/sgl/opengl-window.rb +224 -224
  49. data/lib/sgl/opengl.rb +7 -7
  50. data/lib/sgl/sgl-button.rb +135 -135
  51. data/lib/sgl/sgl-client.rb +21 -21
  52. data/lib/sgl/sgl-color.rb +68 -82
  53. data/lib/sgl/sgl-connect.rb +9 -9
  54. data/lib/sgl/sgl-server.rb +58 -58
  55. data/lib/sgl/sgl-spring.rb +216 -216
  56. data/lib/sgl/version.rb +2 -2
  57. data/scripts/lib-txt2html.rb +130 -0
  58. data/scripts/txt2html +2 -63
  59. data/spec/sgl_spec.rb +13 -0
  60. data/spec/spec.opts +1 -0
  61. data/spec/spec_helper.rb +1 -0
  62. data/test/test_cocoa_app.rb +291 -291
  63. data/test/test_module_ruby16.rb +30 -30
  64. data/test/test_opengl_app.rb +147 -147
  65. data/test/test_opengl_basic.rb +22 -22
  66. data/test/test_opengl_fullscreen.rb +23 -23
  67. data/test/test_opengl_novice.rb +35 -35
  68. data/website/challenge1.html +91 -91
  69. data/website/challenge1.txt +3 -3
  70. data/website/challenge2.html +143 -144
  71. data/website/challenge2.txt +13 -14
  72. data/website/challenge3.html +66 -63
  73. data/website/challenge3.txt +7 -7
  74. data/website/cocoa.html +85 -88
  75. data/website/cocoa.txt +2 -4
  76. data/website/description.html +138 -138
  77. data/website/description.txt +1 -1
  78. data/website/exercise1.html +262 -264
  79. data/website/exercise1.txt +58 -53
  80. data/website/exercise2.html +241 -683
  81. data/website/exercise2.txt +11 -427
  82. data/website/exercise3.html +206 -0
  83. data/website/exercise3.txt +155 -0
  84. data/website/exercise4.html +198 -0
  85. data/website/exercise4.txt +151 -0
  86. data/website/exercise5.html +162 -0
  87. data/website/exercise5.txt +113 -0
  88. data/website/exhibition.html +84 -84
  89. data/website/howto.html +146 -134
  90. data/website/howto.txt +9 -0
  91. data/website/index.html +178 -178
  92. data/website/index.txt +20 -19
  93. data/website/sound.html +141 -141
  94. metadata +16 -3
@@ -83,7 +83,7 @@ end
83
83
 
84
84
  同様に,onNoteOff(ch, note)もある.
85
85
 
86
- # ソフトサンプラー機能
86
+ # サウンド再生機能
87
87
  useSound
88
88
  sound = loadSound('sine.wav')
89
89
  sound.play(60, 100, -100) # note, vel, pan
@@ -1,264 +1,262 @@
1
- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
2
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
3
- <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
4
- <head>
5
- <link rel="stylesheet" href="stylesheets/screen.css" type="text/css" media="screen" />
6
- <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
7
- <title>
8
- 練習問題 1〜10
9
- </title>
10
- <script src="javascripts/rounded_corners_lite.inc.js" type="text/javascript"></script>
11
- <style>
12
-
13
- </style>
14
- <script type="text/javascript">
15
- window.onload = function() {
16
- settings = {
17
- tl: { radius: 10 },
18
- tr: { radius: 10 },
19
- bl: { radius: 10 },
20
- br: { radius: 10 },
21
- antiAlias: true,
22
- autoPad: true,
23
- validTags: ["div"]
24
- }
25
- var versionBox = new curvyCorners(settings, document.getElementById("version"));
26
- versionBox.applyCornersToAll();
27
- }
28
- </script>
29
- </head>
30
- <body>
31
- <div id="main">
32
-
33
- <h1>練習問題 1〜10</h1>
34
- <div id="version" class="clickable" onclick='document.location = "http://rubyforge.org/projects/sgl"; return false'>
35
- <p>Get Version</p>
36
- <a href="http://rubyforge.org/projects/sgl" class="numbers">0.4.0</a>
37
- </div>
38
- <h2>課題1 基本 (window, background, color, line)</h2>
39
-
40
-
41
- <h3>課題1A 一本の線を描くプログラムを作る</h3>
42
-
43
-
44
- <h3>課題1B ある考えの元に3本の線を描くプログラムを作る</h3>
45
-
46
-
47
- <h3>課題1C 5本以下の直線で「変化」を表現するプログラムを作る</h3>
48
-
49
-
50
- <h3>課題1D 10本以下の直線で「ハーモニー(調和)」を表現するプログラムを作る</h3>
51
-
52
-
53
- <pre syntax="ruby">
54
- require 'sgl' # プログラムの最初に必ず書く必要がある
55
- window 100, 100 # windowを開く
56
- background 0 # 背景を黒にする
57
- color 100 # 描画する色を白にする
58
- line 0, 0, 100, 100 # 左下から右上に線を描く
59
- wait # そのまま待つ
60
- </pre>
61
-
62
- <h3>半透明色の使い方</h3>
63
-
64
-
65
- <pre syntax="ruby">
66
- require 'sgl'
67
- window 100,100
68
- color 100, 0, 0 # 赤
69
- rect 10,10,70,70 # 四角
70
- color 0,0,100,50 # 半透明の青
71
- rect 30,30,90,90 # 四角を重ねてかく
72
- wait
73
- </pre>
74
-
75
- <h2>課題2A</h2>
76
-
77
-
78
- 一つの変数を使って2本の直線の構成をコントロールするプログラムを作る.
79
- <pre syntax="ruby">
80
- require 'sgl'
81
- window 100, 100
82
- a = 50
83
- line 0, 0, 50, a
84
- line 100, 0, 50, a
85
- wait
86
- </pre>
87
-
88
- <h2>課題3A 繰り返し (for a in 0..100; end)</h2>
89
-
90
-
91
- 繰り返しを使った形態を描く.
92
- <pre syntax="ruby">
93
- require 'sgl'
94
- window 100, 100
95
- for a in 20..80
96
- color a
97
- line a, 0, a, 100
98
- end
99
- wait
100
- </pre>
101
-
102
- <h2>課題4A 計算 (+ &#8211; * /)</h2>
103
-
104
-
105
- 計算を使った形態をかくプログラムを作る.
106
- <pre syntax="ruby">
107
- require 'sgl'
108
- window 100, 100
109
- for a in 20..40
110
- color a
111
- line(a, 0, a*2, 100)
112
- end
113
- wait
114
- </pre>
115
-
116
- <h2>課題6A kadai6a.rb</h2>
117
-
118
-
119
- h3. 入れ子構造 6A 格子状にひろがる形態を作る.
120
- <pre syntax="ruby">
121
- # kadai6a.rb
122
- require 'sgl'
123
- window 200,200
124
- for a in 0..10
125
- for b in 0..10
126
- color a*10, b*10, b*10
127
- rect a*20+5, b*20+5, a*20+15, b*20+15
128
- end
129
- end
130
- wait
131
- </pre>
132
-
133
- <h2>課題7A kadai7a.rb</h2>
134
-
135
-
136
- h3. 質問 (if 50 &lt; a; end) 7A 画面の左右で違う形態を描く.
137
- <pre syntax="ruby">
138
- # kadai7a.rb
139
- require 'sgl'
140
- window 200,200
141
- for a in 0..200
142
- color a/2, 50, 50
143
- if a &lt; 100
144
- line a, 50, a, 100
145
- else
146
- line a, 100, a, 150
147
- end
148
- end
149
- wait
150
- </pre>
151
-
152
- <h2>課題8A</h2>
153
-
154
-
155
- <h3>defを使って自分なりのコマンドを作り,それを用いた形態を描く.</h3>
156
-
157
-
158
- ファイル名 kadai8a.rb
159
- <pre syntax="ruby">
160
- require 'sgl'
161
- window 100,100
162
- background 100
163
-
164
- def my_rect(x1, y1, x2, y2, outline, fill)
165
- color fill
166
- rect x1, y1, x2, y2
167
- color outline
168
- line x1, y1, x2, y1
169
- line x2, y1, x2, y2
170
- line x2, y2, x1, y2
171
- line x1, y2, x1, y1
172
- end
173
-
174
- my_rect(20, 20, 40, 30, 20, 50)
175
- my_rect(60, 60, 80, 90, 70, 90)
176
- wait
177
- </pre>
178
-
179
- <p>defというコマンドで関数を定義する.自分がよく使う形,例えば枠付きの塗
180
- りつぶされた四角形を定義する.defの後に続くのが関数名である.アルファ
181
- ベットの小文字から始まっている必要がある.</p>
182
-
183
-
184
- <h2>課題9A</h2>
185
-
186
-
187
- <h3>flipを使ってアニメーションを作る.</h3>
188
-
189
-
190
- ファイル名 kadai9a.rb
191
- <pre syntax="ruby">
192
- require 'sgl'
193
- window 100,100
194
- loop do
195
- for a in 0..100
196
- line 20,a,80,a
197
- flip
198
- end
199
- end
200
- wait
201
- </pre>
202
-
203
- <p>flipというところで、ちょうど紙をめくるように次の画面を表示させている。
204
- <code>loop do 〜〜〜 end</code> で,その間を無限に繰り返す.</p>
205
-
206
-
207
- <h2>課題10A</h2>
208
-
209
-
210
- <h3><span class="caps">HSV</span>による色指定を使って,自分なりの色グラデーションを作る。</h3>
211
-
212
-
213
- <p>静止画でもアニメーションでもよい.(colorHSV, backgroundHSV)</p>
214
-
215
-
216
- ファイル名 kadai10a.rb
217
- <pre syntax="ruby">
218
- require 'sgl'
219
- window 100,100
220
- background 100
221
-
222
- loop do
223
- for h in 0..100
224
- colorHSV h, 50, 100
225
- rect 0, h, 100, h+5
226
- flip
227
- end
228
- end
229
- wait
230
- </pre>
231
-
232
- <ul>
233
- <li>colorHSV(h, s, v) → hue, saturation, value</li>
234
- <li>hue 色調</li>
235
- <li>saturation どれだけ原色に近いか</li>
236
- <li>value → 明るさ</li>
237
- </ul>
238
-
239
-
240
- <ul>
241
- <li>4番目のパラメーターを使って,透明度を設定することもできる.</li>
242
- <li>backgroundHSVというコマンドもある.</li>
243
- </ul>
244
-
245
-
246
- <h2>課題の注意点</h2>
247
-
248
-
249
- <p>課題はいずれもwindowサイズなどは自由.課題例は100,100のサイズになって
250
- いるが,より大きいwindowサイズを選択してもよい。</p>
251
-
252
-
253
- <p>ファイル名は必ず指定のものにし,Z:に保存する.指定のファイル名のファイ
254
- ルが保存されているかどうかで課題提出を判定する.ファイル名が違う場合は
255
- 提出してないことになってしまうので,注意する.</p>
256
- <p class="coda">
257
- 19th June 2007<br>
258
- </p>
259
- </div>
260
-
261
- <!-- insert site tracking codes here, like Google Urchin -->
262
-
263
- </body>
264
- </html>
1
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
2
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
3
+ <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
4
+ <head>
5
+ <link rel="stylesheet" href="stylesheets/screen.css" type="text/css" media="screen" />
6
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
7
+ <title>
8
+ 練習問題1
9
+ </title>
10
+ <script src="javascripts/rounded_corners_lite.inc.js" type="text/javascript"></script>
11
+ <style>
12
+
13
+ </style>
14
+ <script type="text/javascript">
15
+ window.onload = function() {
16
+ settings = {
17
+ tl: { radius: 10 },
18
+ tr: { radius: 10 },
19
+ bl: { radius: 10 },
20
+ br: { radius: 10 },
21
+ antiAlias: true,
22
+ autoPad: true,
23
+ validTags: ["div"]
24
+ }
25
+ var versionBox = new curvyCorners(settings, document.getElementById("version"));
26
+ versionBox.applyCornersToAll();
27
+ }
28
+ </script>
29
+ </head>
30
+ <body>
31
+ <div id="main">
32
+
33
+ <h1>練習問題1</h1>
34
+ <div id="version" class="clickable" onclick='document.location = "http://rubyforge.org/projects/sgl"; return false'>
35
+ <p>Get Version</p>
36
+ <a href="http://rubyforge.org/projects/sgl" class="numbers">1.0.0</a>
37
+ </div>
38
+ <h2>課題1: 一本の線を描く</h2>
39
+
40
+
41
+ <pre syntax="ruby">
42
+ # kadai1.rb
43
+ require 'sgl' # プログラムの最初に必ず書く必要がある
44
+ window 100, 100 # windowを開く
45
+ background 0 # 背景を黒にする
46
+ color 100 # 描画する色を白にする
47
+ line 0, 0, 100, 100 # 左下から右上に線を描く
48
+ wait # そのまま待つ
49
+ </pre>
50
+
51
+ <h2>課題2: ある考えの元に3本の線を描く</h2>
52
+
53
+
54
+ <pre syntax="ruby">
55
+ # kadai2.rb
56
+ require 'sgl'
57
+ window 100, 100
58
+ background 0
59
+ color 100
60
+ line 0, 0, 100, 100
61
+ line 0, 0, 100, 50
62
+ line 0, 0, 100, 25
63
+ wait
64
+ </pre>
65
+
66
+ <h2>課題3: 5本以下の直線で「変化」を表現する</h2>
67
+
68
+
69
+ <pre syntax="ruby">
70
+ # kadai3.rb
71
+ # 考えてみましょう.
72
+ </pre>
73
+
74
+ <h2>課題4: 10本以下の直線で「ハーモニー(調和)」を表現する</h2>
75
+
76
+
77
+ <pre syntax="ruby">
78
+ # kadai4.rb
79
+ # 考えてみましょう.
80
+ </pre>
81
+
82
+ <h2>課題5: 一つの変数を使って2本の直線の構成をコントロールする</h2>
83
+
84
+
85
+ <pre syntax="ruby">
86
+ # kadai5.rb
87
+ require 'sgl'
88
+ window 100, 100
89
+ a = 50
90
+ line 0, 0, 50, a
91
+ line 100, 0, 50, a
92
+ wait
93
+ </pre>
94
+
95
+ <h2>課題6: 繰り返しを使った形態を描く</h2>
96
+
97
+
98
+ <pre syntax="ruby">
99
+ # kadai6.rb
100
+ require 'sgl'
101
+ window 100, 100
102
+ for a in 20..80
103
+ color a
104
+ line a, 0, a, 100
105
+ end
106
+ wait
107
+ </pre>
108
+
109
+ <h2>課題7: 計算を使った形態を描く</h2>
110
+
111
+
112
+ <pre syntax="ruby">
113
+ # kadai7.rb
114
+ require 'sgl'
115
+ window 100, 100
116
+ for a in 20..40
117
+ color a
118
+ line(a, 0, a*2, 100)
119
+ end
120
+ wait
121
+ </pre>
122
+
123
+ <h2>課題8: 半透明を使った形態を描く</h2>
124
+
125
+
126
+ <pre syntax="ruby">
127
+ # kadai8.rb
128
+ require 'sgl'
129
+ window 100,100
130
+ color 100, 0, 0 # 赤
131
+ rect 10,10,70,70 # 四角
132
+ color 0,0,100,50 # 半透明の青
133
+ rect 30,30,90,90 # 四角を重ねてかく
134
+ wait
135
+ </pre>
136
+
137
+ <h2>課題9: 入れ子構造,格子状にひろがる形態を作る</h2>
138
+
139
+
140
+ <pre syntax="ruby">
141
+ # kadai9.rb
142
+ require 'sgl'
143
+ window 200,200
144
+ for a in 0..10
145
+ for b in 0..10
146
+ color a*10, b*10, b*10
147
+ rect a*20+5, b*20+5, a*20+15, b*20+15
148
+ end
149
+ end
150
+ wait
151
+ </pre>
152
+
153
+ <h2>課題10: 条件分岐,画面の左右で違う形態を描く</h2>
154
+
155
+
156
+ <pre syntax="ruby">
157
+ # kadai10.rb
158
+ require 'sgl'
159
+ window 200,200
160
+ for a in 0..200
161
+ color a/2, 50, 50
162
+ if a &lt; 100
163
+ line a, 50, a, 100
164
+ else
165
+ line a, 100, a, 150
166
+ end
167
+ end
168
+ wait
169
+ </pre>
170
+
171
+ <h2>課題11: 自分なりの命令を作り,それを用いた形態を描く</h2>
172
+
173
+
174
+ <pre syntax="ruby">
175
+ # kadai11.rb
176
+ require 'sgl'
177
+ window 100,100
178
+ background 100
179
+
180
+ def my_rect(x1, y1, x2, y2, outline, fill)
181
+ color fill
182
+ rect x1, y1, x2, y2
183
+ color outline
184
+ line x1, y1, x2, y1
185
+ line x2, y1, x2, y2
186
+ line x2, y2, x1, y2
187
+ line x1, y2, x1, y1
188
+ end
189
+
190
+ my_rect(20, 20, 40, 30, 20, 50)
191
+ my_rect(60, 60, 80, 90, 70, 90)
192
+ wait
193
+ </pre>
194
+
195
+ <p>defというコマンドで命令を定義する.ここでは,枠付きの塗りつぶされた四
196
+ 角形を定義している.defの後に続くのが命令の名前となる.アルファベット
197
+ の小文字から始まっている必要がある.</p>
198
+
199
+
200
+ <h2>課題12: flipを使ってアニメーションを作る</h2>
201
+
202
+
203
+ <pre syntax="ruby">
204
+ # kadai12.rb
205
+ require 'sgl'
206
+ window 100,100
207
+ loop do
208
+ for a in 0..100
209
+ line 20,a,80,a
210
+ flip
211
+ end
212
+ end
213
+ wait
214
+ </pre>
215
+
216
+ <p>flipというところで,ちょうど紙をめくるように次の画面を表示させている.
217
+ <code>loop do 〜〜〜 end</code> で,その間を無限に繰り返す.</p>
218
+
219
+
220
+ <h2>課題13: <span class="caps">HSV</span>による色指定を使り,自分なりの色グラデーションを作る</h2>
221
+
222
+
223
+ <p>静止画でもアニメーションでもよい.(colorHSV, backgroundHSV)</p>
224
+
225
+
226
+ <pre syntax="ruby">
227
+ # kadai13.rb
228
+ require 'sgl'
229
+ window 100,100
230
+ background 100
231
+
232
+ loop do
233
+ for h in 0..100
234
+ colorHSV h, 50, 100
235
+ rect 0, h, 100, h+5
236
+ flip
237
+ end
238
+ end
239
+ wait
240
+ </pre>
241
+
242
+ <ul>
243
+ <li>colorHSV(h, s, v) → hue, saturation, value</li>
244
+ <li>hue → 色調</li>
245
+ <li>saturation → どれだけ原色に近いか</li>
246
+ <li>value → 明るさ</li>
247
+ </ul>
248
+
249
+
250
+ <ul>
251
+ <li>4番目のパラメーターを使って,透明度を設定することもできる.</li>
252
+ <li>backgroundHSVというコマンドもある.</li>
253
+ </ul>
254
+ <p class="coda">
255
+ 30th June 2007<br>
256
+ </p>
257
+ </div>
258
+
259
+ <!-- insert site tracking codes here, like Google Urchin -->
260
+
261
+ </body>
262
+ </html>