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.
- 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
|