sgl 0.4.0 → 1.0.0
Sign up to get free protection for your applications and to get access to all the features.
- data/ChangeLog +254 -234
- data/History.txt +6 -0
- data/Manifest.txt +10 -0
- data/Rakefile +27 -7
- data/examples/cocoa1-basic.rb +14 -14
- data/examples/cocoa10-transparent.rb +26 -26
- data/examples/cocoa11-application.rb +13 -13
- data/examples/cocoa2-draw.rb +23 -23
- data/examples/cocoa3-affine.rb +29 -29
- data/examples/cocoa4-font.rb +24 -24
- data/examples/cocoa5-image.rb +22 -22
- data/examples/cocoa6-sound.rb +24 -24
- data/examples/cocoa7-movie.rb +40 -40
- data/examples/cocoa8-movieoverlay.rb +42 -42
- data/examples/cocoa9-streaming.rb +40 -40
- data/examples/opengl1-basic.rb +14 -14
- data/examples/opengl11-application.rb +13 -13
- data/examples/opengl2-draw.rb +23 -23
- data/examples/opengl3-affine.rb +29 -29
- data/examples/sample1.rb +11 -11
- data/examples/sample10.rb +16 -16
- data/examples/sample11.rb +22 -22
- data/examples/sample11a.rb +33 -33
- data/examples/sample12.rb +30 -30
- data/examples/sample12a.rb +35 -35
- data/examples/sample13.rb +116 -116
- data/examples/sample15.rb +24 -24
- data/examples/sample16.rb +31 -31
- data/examples/sample16a.rb +35 -35
- data/examples/sample6.rb +18 -18
- data/examples/sample7.rb +16 -16
- data/examples/sample9.rb +20 -20
- data/examples/testgl.rb +169 -169
- data/lib/sgl/bass.rb +46 -46
- data/lib/sgl/cocoa-app.rb +43 -43
- data/lib/sgl/cocoa-color.rb +65 -65
- data/lib/sgl/cocoa-draw.rb +72 -72
- data/lib/sgl/cocoa-event.rb +229 -229
- data/lib/sgl/cocoa-media.rb +144 -144
- data/lib/sgl/cocoa-notuse.rb +493 -493
- data/lib/sgl/cocoa-window.rb +203 -203
- data/lib/sgl/cocoa.rb +8 -8
- data/lib/sgl/opengl-app.rb +38 -38
- data/lib/sgl/opengl-color.rb +44 -44
- data/lib/sgl/opengl-draw.rb +260 -260
- data/lib/sgl/opengl-event.rb +325 -325
- data/lib/sgl/opengl-modules.rb +22 -22
- data/lib/sgl/opengl-window.rb +224 -224
- data/lib/sgl/opengl.rb +7 -7
- data/lib/sgl/sgl-button.rb +135 -135
- data/lib/sgl/sgl-client.rb +21 -21
- data/lib/sgl/sgl-color.rb +68 -82
- data/lib/sgl/sgl-connect.rb +9 -9
- data/lib/sgl/sgl-server.rb +58 -58
- data/lib/sgl/sgl-spring.rb +216 -216
- data/lib/sgl/version.rb +2 -2
- data/scripts/lib-txt2html.rb +130 -0
- data/scripts/txt2html +2 -63
- data/spec/sgl_spec.rb +13 -0
- data/spec/spec.opts +1 -0
- data/spec/spec_helper.rb +1 -0
- data/test/test_cocoa_app.rb +291 -291
- data/test/test_module_ruby16.rb +30 -30
- data/test/test_opengl_app.rb +147 -147
- data/test/test_opengl_basic.rb +22 -22
- data/test/test_opengl_fullscreen.rb +23 -23
- data/test/test_opengl_novice.rb +35 -35
- data/website/challenge1.html +91 -91
- data/website/challenge1.txt +3 -3
- data/website/challenge2.html +143 -144
- data/website/challenge2.txt +13 -14
- data/website/challenge3.html +66 -63
- data/website/challenge3.txt +7 -7
- data/website/cocoa.html +85 -88
- data/website/cocoa.txt +2 -4
- data/website/description.html +138 -138
- data/website/description.txt +1 -1
- data/website/exercise1.html +262 -264
- data/website/exercise1.txt +58 -53
- data/website/exercise2.html +241 -683
- data/website/exercise2.txt +11 -427
- data/website/exercise3.html +206 -0
- data/website/exercise3.txt +155 -0
- data/website/exercise4.html +198 -0
- data/website/exercise4.txt +151 -0
- data/website/exercise5.html +162 -0
- data/website/exercise5.txt +113 -0
- data/website/exhibition.html +84 -84
- data/website/howto.html +146 -134
- data/website/howto.txt +9 -0
- data/website/index.html +178 -178
- data/website/index.txt +20 -19
- data/website/sound.html +141 -141
- metadata +16 -3
data/lib/sgl/bass.rb
CHANGED
@@ -1,46 +1,46 @@
|
|
1
|
-
# Copyright (C) 2004-2007 Kouichirou Eto, All rights reserved.
|
2
|
-
# License: Ruby License
|
3
|
-
|
4
|
-
require 'Win32API'
|
5
|
-
require 'singleton'
|
6
|
-
require 'sgl/bass-sample'
|
7
|
-
require 'sgl/bass-api'
|
8
|
-
|
9
|
-
module Bass
|
10
|
-
at_exit { BASS_Free.call }
|
11
|
-
|
12
|
-
class BassLib
|
13
|
-
include Singleton
|
14
|
-
|
15
|
-
def initialize
|
16
|
-
#ret = Bass::BASS_Init.call(-1, 44100, BASS_DEVICE_OGG, 0)
|
17
|
-
ret = Bass::BASS_Init.call(-1, 44100, 0, 0)
|
18
|
-
ver = Bass::BASS_GetVersion.call
|
19
|
-
ret = Bass::BASS_Start.call
|
20
|
-
@playing_channel = []
|
21
|
-
end
|
22
|
-
|
23
|
-
def add_playing_channel(ch)
|
24
|
-
@playing_channel << ch
|
25
|
-
end
|
26
|
-
|
27
|
-
def stop_all
|
28
|
-
@playing_channel.each {|ch|
|
29
|
-
ret = Bass::BASS_ChannelStop.call(ch)
|
30
|
-
}
|
31
|
-
@playing_channel = []
|
32
|
-
end
|
33
|
-
end
|
34
|
-
|
35
|
-
# class << Bass
|
36
|
-
# def init(a, b, c, d) BASS_Init.call(a, b, c, d) end
|
37
|
-
# def start() BASS_Start.call() end
|
38
|
-
# def errorGetCode() BASS_ErrorGetCode.call() end
|
39
|
-
# def getVersion() BASS_GetVersion.call() end
|
40
|
-
# def free() BASS_Free.call() end
|
41
|
-
# def sampleLoad(a, b, c, d, e, f) BASS_SampleLoad.call(a, b, c, d, e, f) end
|
42
|
-
# def samplePlay(a) BASS_SamplePlay.call(a) end
|
43
|
-
# def samplePlayEx(a, b, c, d, e, f) BASS_SamplePlayEx.call(a, b, c, d, e, f) end
|
44
|
-
# end
|
45
|
-
#at_exit { Bass.free; }
|
46
|
-
end
|
1
|
+
# Copyright (C) 2004-2007 Kouichirou Eto, All rights reserved.
|
2
|
+
# License: Ruby License
|
3
|
+
|
4
|
+
require 'Win32API'
|
5
|
+
require 'singleton'
|
6
|
+
require 'sgl/bass-sample'
|
7
|
+
require 'sgl/bass-api'
|
8
|
+
|
9
|
+
module Bass
|
10
|
+
at_exit { BASS_Free.call }
|
11
|
+
|
12
|
+
class BassLib
|
13
|
+
include Singleton
|
14
|
+
|
15
|
+
def initialize
|
16
|
+
#ret = Bass::BASS_Init.call(-1, 44100, BASS_DEVICE_OGG, 0)
|
17
|
+
ret = Bass::BASS_Init.call(-1, 44100, 0, 0)
|
18
|
+
ver = Bass::BASS_GetVersion.call
|
19
|
+
ret = Bass::BASS_Start.call
|
20
|
+
@playing_channel = []
|
21
|
+
end
|
22
|
+
|
23
|
+
def add_playing_channel(ch)
|
24
|
+
@playing_channel << ch
|
25
|
+
end
|
26
|
+
|
27
|
+
def stop_all
|
28
|
+
@playing_channel.each {|ch|
|
29
|
+
ret = Bass::BASS_ChannelStop.call(ch)
|
30
|
+
}
|
31
|
+
@playing_channel = []
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
# class << Bass
|
36
|
+
# def init(a, b, c, d) BASS_Init.call(a, b, c, d) end
|
37
|
+
# def start() BASS_Start.call() end
|
38
|
+
# def errorGetCode() BASS_ErrorGetCode.call() end
|
39
|
+
# def getVersion() BASS_GetVersion.call() end
|
40
|
+
# def free() BASS_Free.call() end
|
41
|
+
# def sampleLoad(a, b, c, d, e, f) BASS_SampleLoad.call(a, b, c, d, e, f) end
|
42
|
+
# def samplePlay(a) BASS_SamplePlay.call(a) end
|
43
|
+
# def samplePlayEx(a, b, c, d, e, f) BASS_SamplePlayEx.call(a, b, c, d, e, f) end
|
44
|
+
# end
|
45
|
+
#at_exit { Bass.free; }
|
46
|
+
end
|
data/lib/sgl/cocoa-app.rb
CHANGED
@@ -1,43 +1,43 @@
|
|
1
|
-
# Copyright (C) 2004-2007 Kouichirou Eto, All rights reserved.
|
2
|
-
# License: Ruby License
|
3
|
-
|
4
|
-
require "osx/cocoa"
|
5
|
-
require "sgl/sgl-color"
|
6
|
-
require "sgl/cocoa-event"
|
7
|
-
require "sgl/cocoa-window"
|
8
|
-
require "sgl/cocoa-draw"
|
9
|
-
require "sgl/cocoa-color"
|
10
|
-
require "sgl/cocoa-media"
|
11
|
-
|
12
|
-
module SGL
|
13
|
-
class Application
|
14
|
-
def initialize
|
15
|
-
initialize_cocoa
|
16
|
-
initialize_window
|
17
|
-
initialize_color
|
18
|
-
initialize_event
|
19
|
-
end
|
20
|
-
|
21
|
-
def initialize_cocoa
|
22
|
-
OSX.ruby_thread_switcher_start(0.001, 0.01)
|
23
|
-
Thread.abort_on_exception = true
|
24
|
-
|
25
|
-
@app = OSX::NSApplication.sharedApplication
|
26
|
-
mainmenu = OSX::NSMenu.alloc.init
|
27
|
-
@app.setMainMenu(mainmenu)
|
28
|
-
end
|
29
|
-
private :initialize_cocoa
|
30
|
-
|
31
|
-
def run
|
32
|
-
OSX.NSApp.run
|
33
|
-
OSX::NSEvent.stopPeriodicEvents
|
34
|
-
end
|
35
|
-
|
36
|
-
def stop
|
37
|
-
close_window
|
38
|
-
OSX.NSApp.stop(nil)
|
39
|
-
OSX::NSEvent.startPeriodicEventsAfterDelay(0.01, :withPeriod, 0.01)
|
40
|
-
end
|
41
|
-
end
|
42
|
-
end
|
43
|
-
|
1
|
+
# Copyright (C) 2004-2007 Kouichirou Eto, All rights reserved.
|
2
|
+
# License: Ruby License
|
3
|
+
|
4
|
+
require "osx/cocoa"
|
5
|
+
require "sgl/sgl-color"
|
6
|
+
require "sgl/cocoa-event"
|
7
|
+
require "sgl/cocoa-window"
|
8
|
+
require "sgl/cocoa-draw"
|
9
|
+
require "sgl/cocoa-color"
|
10
|
+
require "sgl/cocoa-media"
|
11
|
+
|
12
|
+
module SGL
|
13
|
+
class Application
|
14
|
+
def initialize
|
15
|
+
initialize_cocoa
|
16
|
+
initialize_window
|
17
|
+
initialize_color
|
18
|
+
initialize_event
|
19
|
+
end
|
20
|
+
|
21
|
+
def initialize_cocoa
|
22
|
+
OSX.ruby_thread_switcher_start(0.001, 0.01)
|
23
|
+
Thread.abort_on_exception = true
|
24
|
+
|
25
|
+
@app = OSX::NSApplication.sharedApplication
|
26
|
+
mainmenu = OSX::NSMenu.alloc.init
|
27
|
+
@app.setMainMenu(mainmenu)
|
28
|
+
end
|
29
|
+
private :initialize_cocoa
|
30
|
+
|
31
|
+
def run
|
32
|
+
OSX.NSApp.run
|
33
|
+
OSX::NSEvent.stopPeriodicEvents
|
34
|
+
end
|
35
|
+
|
36
|
+
def stop
|
37
|
+
close_window
|
38
|
+
OSX.NSApp.stop(nil)
|
39
|
+
OSX::NSEvent.startPeriodicEventsAfterDelay(0.01, :withPeriod, 0.01)
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
data/lib/sgl/cocoa-color.rb
CHANGED
@@ -1,65 +1,65 @@
|
|
1
|
-
# Copyright (C) 2004-2007 Kouichirou Eto, All rights reserved.
|
2
|
-
# License: Ruby License
|
3
|
-
|
4
|
-
module SGL
|
5
|
-
def background(*a) $__a__.background(*a); end
|
6
|
-
def backgroundHSV(*a) $__a__.backgroundHSV(*a); end
|
7
|
-
def color(*a) $__a__.color(*a); end
|
8
|
-
def colorHSV(*a) $__a__.colorHSV(*a); end
|
9
|
-
|
10
|
-
class Application
|
11
|
-
def initialize_color
|
12
|
-
@bg_color = @cur_color = nil
|
13
|
-
@rgb = ColorTranslatorRGB.new(100, 100, 100, 100)
|
14
|
-
@hsv = ColorTranslatorHSV.new(100, 100, 100, 100)
|
15
|
-
end
|
16
|
-
private :initialize_color
|
17
|
-
attr_reader :cur_color
|
18
|
-
|
19
|
-
def background(x, y=nil, z=nil, a=nil)
|
20
|
-
@bg_color = @rgb.norm(x,y,z,a)
|
21
|
-
end
|
22
|
-
|
23
|
-
def backgroundHSV(x, y=nil, z=nil, a=nil)
|
24
|
-
@bg_color = @hsv.norm(x,y,z,a)
|
25
|
-
end
|
26
|
-
|
27
|
-
def color(x, y=nil, z=nil, a=nil)
|
28
|
-
@cur_color = @rgb.norm(x,y,z,a)
|
29
|
-
set_cur_color
|
30
|
-
end
|
31
|
-
|
32
|
-
def colorHSV(x, y=nil, z=nil, a=nil)
|
33
|
-
@cur_color = @hsv.norm(x,y,z,a)
|
34
|
-
set_cur_color
|
35
|
-
end
|
36
|
-
|
37
|
-
# called from cocoa-media
|
38
|
-
# Since thie method called from NSFont, this should be public.
|
39
|
-
def make_cur_color
|
40
|
-
make_color(*@cur_color)
|
41
|
-
end
|
42
|
-
|
43
|
-
def get_cur_color_alpha
|
44
|
-
@cur_color[3]
|
45
|
-
end
|
46
|
-
|
47
|
-
# private
|
48
|
-
def set_cur_color
|
49
|
-
set_color(*@cur_color)
|
50
|
-
end
|
51
|
-
|
52
|
-
def set_cur_bg
|
53
|
-
set_color(*@bg_color)
|
54
|
-
end
|
55
|
-
|
56
|
-
def set_color(*a)
|
57
|
-
make_color(*a).set if @win
|
58
|
-
end
|
59
|
-
|
60
|
-
def make_color(r, g, b, a)
|
61
|
-
OSX::NSColor.colorWithDeviceRed(r, :green, g, :blue, b, :alpha, a)
|
62
|
-
end
|
63
|
-
private :set_cur_color, :set_cur_bg, :set_color, :make_color
|
64
|
-
end
|
65
|
-
end
|
1
|
+
# Copyright (C) 2004-2007 Kouichirou Eto, All rights reserved.
|
2
|
+
# License: Ruby License
|
3
|
+
|
4
|
+
module SGL
|
5
|
+
def background(*a) $__a__.background(*a); end
|
6
|
+
def backgroundHSV(*a) $__a__.backgroundHSV(*a); end
|
7
|
+
def color(*a) $__a__.color(*a); end
|
8
|
+
def colorHSV(*a) $__a__.colorHSV(*a); end
|
9
|
+
|
10
|
+
class Application
|
11
|
+
def initialize_color
|
12
|
+
@bg_color = @cur_color = nil
|
13
|
+
@rgb = ColorTranslatorRGB.new(100, 100, 100, 100)
|
14
|
+
@hsv = ColorTranslatorHSV.new(100, 100, 100, 100)
|
15
|
+
end
|
16
|
+
private :initialize_color
|
17
|
+
attr_reader :cur_color
|
18
|
+
|
19
|
+
def background(x, y=nil, z=nil, a=nil)
|
20
|
+
@bg_color = @rgb.norm(x,y,z,a)
|
21
|
+
end
|
22
|
+
|
23
|
+
def backgroundHSV(x, y=nil, z=nil, a=nil)
|
24
|
+
@bg_color = @hsv.norm(x,y,z,a)
|
25
|
+
end
|
26
|
+
|
27
|
+
def color(x, y=nil, z=nil, a=nil)
|
28
|
+
@cur_color = @rgb.norm(x,y,z,a)
|
29
|
+
set_cur_color
|
30
|
+
end
|
31
|
+
|
32
|
+
def colorHSV(x, y=nil, z=nil, a=nil)
|
33
|
+
@cur_color = @hsv.norm(x,y,z,a)
|
34
|
+
set_cur_color
|
35
|
+
end
|
36
|
+
|
37
|
+
# called from cocoa-media
|
38
|
+
# Since thie method called from NSFont, this should be public.
|
39
|
+
def make_cur_color
|
40
|
+
make_color(*@cur_color)
|
41
|
+
end
|
42
|
+
|
43
|
+
def get_cur_color_alpha
|
44
|
+
@cur_color[3]
|
45
|
+
end
|
46
|
+
|
47
|
+
# private
|
48
|
+
def set_cur_color
|
49
|
+
set_color(*@cur_color)
|
50
|
+
end
|
51
|
+
|
52
|
+
def set_cur_bg
|
53
|
+
set_color(*@bg_color)
|
54
|
+
end
|
55
|
+
|
56
|
+
def set_color(*a)
|
57
|
+
make_color(*a).set if @win
|
58
|
+
end
|
59
|
+
|
60
|
+
def make_color(r, g, b, a)
|
61
|
+
OSX::NSColor.colorWithDeviceRed(r, :green, g, :blue, b, :alpha, a)
|
62
|
+
end
|
63
|
+
private :set_cur_color, :set_cur_bg, :set_color, :make_color
|
64
|
+
end
|
65
|
+
end
|
data/lib/sgl/cocoa-draw.rb
CHANGED
@@ -1,72 +1,72 @@
|
|
1
|
-
# Copyright (C) 2004-2007 Kouichirou Eto, All rights reserved.
|
2
|
-
# License: Ruby License
|
3
|
-
|
4
|
-
module SGL
|
5
|
-
module FrameTranslator
|
6
|
-
def to_xywh(a,b,c,d)
|
7
|
-
[[a, c].min, [b, d].min, (a - c).abs, (b - d).abs]
|
8
|
-
end
|
9
|
-
private :to_xywh
|
10
|
-
end
|
11
|
-
|
12
|
-
def point(*a) $__a__.point(*a); end
|
13
|
-
def lineWidth(*a) $__a__.lineWidth(*a); end
|
14
|
-
def line(*a) $__a__.line(*a); end
|
15
|
-
def rect(*a) $__a__.rect(*a); end
|
16
|
-
def circle(*a) $__a__.circle(*a); end
|
17
|
-
def rotateZ(*a) $__a__.rotateZ(*a); end
|
18
|
-
def translate(*a) $__a__.translate(*a); end
|
19
|
-
def scale(*a) $__a__.scale(*a); end
|
20
|
-
def reset(*a) $__a__.reset(*a); end
|
21
|
-
|
22
|
-
class Application
|
23
|
-
include FrameTranslator
|
24
|
-
|
25
|
-
def point(a,b)
|
26
|
-
line(a,b,a,b)
|
27
|
-
end
|
28
|
-
|
29
|
-
def lineWidth(w)
|
30
|
-
OSX::NSBezierPath.setDefaultLineWidth(w)
|
31
|
-
end
|
32
|
-
|
33
|
-
def line(a,b,c,d)
|
34
|
-
#OSX::NSBezierPath.strokeLine({:fromPoint=>OSX::NSPoint.new(a, b),
|
35
|
-
# :toPoint=>OSX::NSPoint.new(c, d)})
|
36
|
-
OSX::NSBezierPath.strokeLineFromPoint(OSX::NSPoint.new(a, b),
|
37
|
-
:toPoint, OSX::NSPoint.new(c, d))
|
38
|
-
end
|
39
|
-
|
40
|
-
def rect(a,b,c,d)
|
41
|
-
rect = OSX::NSRect.new(*to_xywh(a, b, c, d))
|
42
|
-
OSX::NSBezierPath.bezierPathWithRect(rect).fill
|
43
|
-
end
|
44
|
-
|
45
|
-
def circle(x, y, r)
|
46
|
-
rect = OSX::NSRect.new(x - r, y - r, 2*r, 2*r)
|
47
|
-
OSX::NSBezierPath.bezierPathWithOvalInRect(rect).fill
|
48
|
-
end
|
49
|
-
|
50
|
-
def rotateZ(deg)
|
51
|
-
af = OSX::NSAffineTransform.transform
|
52
|
-
af.rotateByDegrees(deg)
|
53
|
-
af.concat
|
54
|
-
end
|
55
|
-
|
56
|
-
def translate(x, y)
|
57
|
-
af = OSX::NSAffineTransform.transform
|
58
|
-
af.translateXBy(x, :yBy, y)
|
59
|
-
af.concat
|
60
|
-
end
|
61
|
-
|
62
|
-
def scale(x, y=nil)
|
63
|
-
af = OSX::NSAffineTransform.transform
|
64
|
-
y ? af.scaleXBy(x, :yBy, y) : af.scaleBy(x)
|
65
|
-
af.concat
|
66
|
-
end
|
67
|
-
|
68
|
-
def reset
|
69
|
-
OSX::NSAffineTransform.transform.set
|
70
|
-
end
|
71
|
-
end
|
72
|
-
end
|
1
|
+
# Copyright (C) 2004-2007 Kouichirou Eto, All rights reserved.
|
2
|
+
# License: Ruby License
|
3
|
+
|
4
|
+
module SGL
|
5
|
+
module FrameTranslator
|
6
|
+
def to_xywh(a,b,c,d)
|
7
|
+
[[a, c].min, [b, d].min, (a - c).abs, (b - d).abs]
|
8
|
+
end
|
9
|
+
private :to_xywh
|
10
|
+
end
|
11
|
+
|
12
|
+
def point(*a) $__a__.point(*a); end
|
13
|
+
def lineWidth(*a) $__a__.lineWidth(*a); end
|
14
|
+
def line(*a) $__a__.line(*a); end
|
15
|
+
def rect(*a) $__a__.rect(*a); end
|
16
|
+
def circle(*a) $__a__.circle(*a); end
|
17
|
+
def rotateZ(*a) $__a__.rotateZ(*a); end
|
18
|
+
def translate(*a) $__a__.translate(*a); end
|
19
|
+
def scale(*a) $__a__.scale(*a); end
|
20
|
+
def reset(*a) $__a__.reset(*a); end
|
21
|
+
|
22
|
+
class Application
|
23
|
+
include FrameTranslator
|
24
|
+
|
25
|
+
def point(a,b)
|
26
|
+
line(a,b,a,b)
|
27
|
+
end
|
28
|
+
|
29
|
+
def lineWidth(w)
|
30
|
+
OSX::NSBezierPath.setDefaultLineWidth(w)
|
31
|
+
end
|
32
|
+
|
33
|
+
def line(a,b,c,d)
|
34
|
+
#OSX::NSBezierPath.strokeLine({:fromPoint=>OSX::NSPoint.new(a, b),
|
35
|
+
# :toPoint=>OSX::NSPoint.new(c, d)})
|
36
|
+
OSX::NSBezierPath.strokeLineFromPoint(OSX::NSPoint.new(a, b),
|
37
|
+
:toPoint, OSX::NSPoint.new(c, d))
|
38
|
+
end
|
39
|
+
|
40
|
+
def rect(a,b,c,d)
|
41
|
+
rect = OSX::NSRect.new(*to_xywh(a, b, c, d))
|
42
|
+
OSX::NSBezierPath.bezierPathWithRect(rect).fill
|
43
|
+
end
|
44
|
+
|
45
|
+
def circle(x, y, r)
|
46
|
+
rect = OSX::NSRect.new(x - r, y - r, 2*r, 2*r)
|
47
|
+
OSX::NSBezierPath.bezierPathWithOvalInRect(rect).fill
|
48
|
+
end
|
49
|
+
|
50
|
+
def rotateZ(deg)
|
51
|
+
af = OSX::NSAffineTransform.transform
|
52
|
+
af.rotateByDegrees(deg)
|
53
|
+
af.concat
|
54
|
+
end
|
55
|
+
|
56
|
+
def translate(x, y)
|
57
|
+
af = OSX::NSAffineTransform.transform
|
58
|
+
af.translateXBy(x, :yBy, y)
|
59
|
+
af.concat
|
60
|
+
end
|
61
|
+
|
62
|
+
def scale(x, y=nil)
|
63
|
+
af = OSX::NSAffineTransform.transform
|
64
|
+
y ? af.scaleXBy(x, :yBy, y) : af.scaleBy(x)
|
65
|
+
af.concat
|
66
|
+
end
|
67
|
+
|
68
|
+
def reset
|
69
|
+
OSX::NSAffineTransform.transform.set
|
70
|
+
end
|
71
|
+
end
|
72
|
+
end
|