texplay 0.2.1-x86-mswin32-60
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 +68 -0
- data/README +21 -0
- data/README1st +9 -0
- data/Rakefile +85 -0
- data/examples/basic.rb +48 -0
- data/examples/basic2.rb +37 -0
- data/examples/benchmark.rb +299 -0
- data/examples/common.rb +8 -0
- data/examples/example_alpha_blend.rb +31 -0
- data/examples/example_bezier.rb +51 -0
- data/examples/example_color_control.rb +68 -0
- data/examples/example_color_transform.rb +29 -0
- data/examples/example_dup.rb +52 -0
- data/examples/example_each.rb +42 -0
- data/examples/example_effect.rb +35 -0
- data/examples/example_fill.rb +49 -0
- data/examples/example_fill_old.rb +49 -0
- data/examples/example_fluent.rb +31 -0
- data/examples/example_gen_eval.rb +34 -0
- data/examples/example_hash_arguments.rb +47 -0
- data/examples/example_melt.rb +27 -0
- data/examples/example_polyline.rb +43 -0
- data/examples/example_simple.rb +35 -0
- data/examples/example_sync.rb +60 -0
- data/examples/example_turtle.rb +40 -0
- data/examples/media/empty2.png +0 -0
- data/examples/media/gosu.png +0 -0
- data/examples/media/maria.png +0 -0
- data/examples/media/rose.bmp +0 -0
- data/examples/media/sand1.png +0 -0
- data/examples/media/sunset.png +0 -0
- data/examples/media/texplay.png +0 -0
- data/examples/specs.rb +240 -0
- data/examples/test.rb +70 -0
- data/examples/test2.rb +72 -0
- data/lib/ctexplay.18.so +0 -0
- data/lib/ctexplay.19.so +0 -0
- data/lib/texplay-contrib.rb +77 -0
- data/lib/texplay.rb +134 -0
- data/src/Makefile +181 -0
- data/src/TAGS +286 -0
- data/src/actions.c +1306 -0
- data/src/actions.h +52 -0
- data/src/actions.obj +0 -0
- data/src/bindings.c +1081 -0
- data/src/bindings.h +45 -0
- data/src/bindings.obj +0 -0
- data/src/cache.c +132 -0
- data/src/cache.h +24 -0
- data/src/cache.obj +0 -0
- data/src/compat.h +23 -0
- data/src/ctexplay-i386-mswin32.def +2 -0
- data/src/ctexplay-i386-mswin32.exp +0 -0
- data/src/ctexplay-i386-mswin32.lib +0 -0
- data/src/ctexplay-i386-mswin32.pdb +0 -0
- data/src/ctexplay.so +0 -0
- data/src/extconf.rb +18 -0
- data/src/gen_eval.c +209 -0
- data/src/gen_eval.h +20 -0
- data/src/gen_eval.obj +0 -0
- data/src/mkmf.log +18 -0
- data/src/object2module.c +171 -0
- data/src/object2module.h +11 -0
- data/src/object2module.obj +0 -0
- data/src/texplay.c +136 -0
- data/src/texplay.h +107 -0
- data/src/texplay.obj +0 -0
- data/src/utils.c +959 -0
- data/src/utils.h +143 -0
- data/src/utils.obj +0 -0
- data/src/vc60.pdb +0 -0
- metadata +132 -0
data/CHANGELOG
ADDED
@@ -0,0 +1,68 @@
|
|
1
|
+
2/9/09
|
2
|
+
version 0.2.1
|
3
|
+
* releasing a gem for TexPlay
|
4
|
+
* bumped version number so can add add gosu 0.7.14 dependency to github gem
|
5
|
+
* hopefully gem works on both github and rubyforge
|
6
|
+
31/8/09
|
7
|
+
version 0.2.0
|
8
|
+
* added each iterator
|
9
|
+
* added alternative to proc for :color_control proc (allowing static linear transforms to pixels)
|
10
|
+
* no longer segfaulting on windows (no idea why not)
|
11
|
+
* rewrote EmptyImageStub in ruby, using philomory's code. now alot faster.
|
12
|
+
* implemented 'shadow' in terms of static :color_control pixel transform
|
13
|
+
* added more example code demonstrating each iterator (example_each.rb) and new color_control behaviour
|
14
|
+
i.e example_color_transform.rb
|
15
|
+
* should be relatively stable now!
|
16
|
+
|
17
|
+
28/8/09
|
18
|
+
version 0.1.9.1 (still BETA)
|
19
|
+
* experimental features: Gosu::Image#dup and Gosu::Image#clone
|
20
|
+
* also TexPlay::create_blank_image(window, width, height)
|
21
|
+
* I noticed these features SEG FAULT on my setup in windows, so be warned
|
22
|
+
* This is a BETA release
|
23
|
+
|
24
|
+
14/8/09
|
25
|
+
version 0.1.9.0 (BETA)
|
26
|
+
* major rewrite. TP now supports beziers, polylines, polygons, and more
|
27
|
+
* also supports alpha_blending (though still tempermental)
|
28
|
+
* This is a BETA release
|
29
|
+
|
30
|
+
1/7/09
|
31
|
+
version 0.1.6.2
|
32
|
+
* fixed another subtle bug in constrain_local_boundaries(). Function was
|
33
|
+
unable to deal with drawing actions that were 100% outside the image
|
34
|
+
boundaries.
|
35
|
+
|
36
|
+
28/6/09
|
37
|
+
version 0.1.6
|
38
|
+
* gen_eval now working as a replacement for instance_eval in the #paint block. Allows for more user-friendly interface.
|
39
|
+
* #paint can now be called without a block; if invoked this way it executes any commands in the action queue, e.g
|
40
|
+
@img.circle 20, 20, 40
|
41
|
+
@img.pixel 30, 30
|
42
|
+
@img.paint
|
43
|
+
* above will function as if: @img.paint { circle 20, 20, 40; pixel 30, 30 }
|
44
|
+
* collected 1.8.6/1.9.1 compatibility into compat.h
|
45
|
+
|
46
|
+
16/6/09
|
47
|
+
version 0.1.4.6
|
48
|
+
* allowed arity of 0 (as well as -1) for ruby 1.9 compatibility
|
49
|
+
|
50
|
+
13/6/09
|
51
|
+
version 0.1.4.5
|
52
|
+
* major bugfix with TexPlay#splice method (segfaut). Also added new color format parameter: color [1, 1, 0, 1] (e.g purple with full alpha).
|
53
|
+
Also fixed subtle edge-case bug in constrain_local_boundaries().
|
54
|
+
|
55
|
+
9/6/09
|
56
|
+
version 0.1.4
|
57
|
+
* improved error checking. should work better with later gosu releases
|
58
|
+
|
59
|
+
20/2/09
|
60
|
+
version 0.1.1
|
61
|
+
* rerelease of this version fixing the oversized image bug for refresh_cache (i.e images over 500 x 500
|
62
|
+
|
63
|
+
version 0.1.1
|
64
|
+
* oops, bug in leftshift/rightshift functions, fixed!
|
65
|
+
|
66
|
+
version 0.1.0
|
67
|
+
* release!
|
68
|
+
|
data/README
ADDED
@@ -0,0 +1,21 @@
|
|
1
|
+
INSTRUCTIONS
|
2
|
+
|
3
|
+
TexPlay version 0.2.1
|
4
|
+
|
5
|
+
To compile TexPlay, ensure you are in the directory with the Rakefile and type:
|
6
|
+
=> rake
|
7
|
+
OR
|
8
|
+
=> rake19 (assuming this is the name of your 1.9.1 version of rake)
|
9
|
+
|
10
|
+
!!NB!! be sure to run the version of rake that corresponds to the ruby version you wish to use! on my system I use rake19 for ruby 1.9.1!!
|
11
|
+
|
12
|
+
If all goes well, run the example programs:
|
13
|
+
=> cd examples
|
14
|
+
=> ruby example_melt.rb
|
15
|
+
=> ruby example_simple.rb
|
16
|
+
=> ..etc
|
17
|
+
|
18
|
+
*like any gosu application, gosu.so must be in the current directory (or the gosu gem installed) when running the examples.
|
19
|
+
|
20
|
+
Enjoy!
|
21
|
+
(note that TexPlay has only been tested on 32 bit linux systems and WindowsXP using VS 6.0)
|
data/README1st
ADDED
@@ -0,0 +1,9 @@
|
|
1
|
+
INSTRUCTIONS
|
2
|
+
|
3
|
+
TexPlay version 0.2.1
|
4
|
+
|
5
|
+
*Ensure that ctexplay.so and gosu.so, and texplay.rb and texplay-contrib.rb are in the working directory for your project
|
6
|
+
*require 'texplay' in your ruby program to access the TexPlay module
|
7
|
+
*see example programs, for illustration of use
|
8
|
+
|
9
|
+
|
data/Rakefile
ADDED
@@ -0,0 +1,85 @@
|
|
1
|
+
require 'rake/clean'
|
2
|
+
require 'rake/gempackagetask'
|
3
|
+
|
4
|
+
$dlext = Config::CONFIG['DLEXT']
|
5
|
+
|
6
|
+
CLEAN.include("src/*.#{$dlext}", "src/*.log", "src/*.o", "src/*~", "src/*#*", "src/*.obj", "src/*.def", "src/*.pdb")
|
7
|
+
CLOBBER.include("**/*.#{$dlext}", "**/*~", "**/*#*", "**/*.log", "**/*.o")
|
8
|
+
|
9
|
+
$make_program = if RUBY_PLATFORM =~ /win/
|
10
|
+
"nmake"
|
11
|
+
else
|
12
|
+
"make"
|
13
|
+
end
|
14
|
+
|
15
|
+
task :default => [:build]
|
16
|
+
|
17
|
+
desc "Build TexPlay"
|
18
|
+
task :build => :clean do
|
19
|
+
puts "(2) building Makefile..."
|
20
|
+
chdir("./src/") do
|
21
|
+
ruby "extconf.rb"
|
22
|
+
puts "(3) building ctexplay.#{$dlext}..."
|
23
|
+
sh "#{$make_program}"
|
24
|
+
puts "(4) copying ctexplay.#{$dlext} to current directory..."
|
25
|
+
cp "ctexplay.#{$dlext}", "../lib" , :verbose => true
|
26
|
+
|
27
|
+
if RUBY_PLATFORM =~ /mswin/
|
28
|
+
if RUBY_VERSION =~ /1.9/
|
29
|
+
File.rename("../lib/ctexplay.#{$dlext}", "../lib/ctexplay.19.#{$dlext}")
|
30
|
+
else
|
31
|
+
File.rename("../lib/ctexplay.#{$dlext}", "../lib/ctexplay.18.#{$dlext}")
|
32
|
+
end
|
33
|
+
end
|
34
|
+
puts "(5) ...done!"
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
specification = Gem::Specification.new do |s|
|
39
|
+
s.name = "texplay"
|
40
|
+
s.summary = "TexPlay is a light-weight image manipulation framework for Ruby and Gosu"
|
41
|
+
s.version = "0.2.1"
|
42
|
+
s.date = "2009-09-02"
|
43
|
+
s.author = "John Mair (banisterfiend)"
|
44
|
+
s.email = 'jrmair@gmail.com'
|
45
|
+
s.description = s.summary
|
46
|
+
s.require_path = 'lib'
|
47
|
+
s.add_dependency("gosu",">=0.7.14")
|
48
|
+
s.homepage = "http://banisterfiend.wordpress.com/2008/08/23/texplay-an-image-manipulation-tool-for-ruby-and-gosu/"
|
49
|
+
s.has_rdoc = false
|
50
|
+
s.files = ["Rakefile", "README", "CHANGELOG", "README1st",
|
51
|
+
"lib/texplay.rb", "lib/texplay-contrib.rb"] +
|
52
|
+
FileList["src/*", "examples/*.rb", "examples/media/*"].to_a
|
53
|
+
|
54
|
+
if RUBY_PLATFORM =~ /mswin/
|
55
|
+
s.platform = Gem::Platform::CURRENT
|
56
|
+
s.files += ["lib/ctexplay.18.so", "lib/ctexplay.19.so"]
|
57
|
+
|
58
|
+
else
|
59
|
+
s.platform = Gem::Platform::RUBY
|
60
|
+
s.extensions = ["src/extconf.rb"]
|
61
|
+
end
|
62
|
+
end
|
63
|
+
Rake::GemPackageTask.new(specification) do |package|
|
64
|
+
package.need_zip = false
|
65
|
+
package.need_tar = false
|
66
|
+
end
|
67
|
+
|
68
|
+
SELENE = '/home/john/ruby/projects/selene'
|
69
|
+
desc "update selene's version of texplay"
|
70
|
+
task :selene => ["#{SELENE}/lib/texplay.rb", "#{SELENE}/lib/texplay-contrib.rb",
|
71
|
+
"#{SELENE}/lib/ctexplay.so"] do
|
72
|
+
puts "...done!"
|
73
|
+
end
|
74
|
+
|
75
|
+
file "#{SELENE}/lib/texplay.rb" => "texplay.rb" do |t|
|
76
|
+
cp t.prerequisites.first, t.name, :verbose => true
|
77
|
+
end
|
78
|
+
|
79
|
+
file "#{SELENE}/lib/texplay-contrib.rb" => "texplay-contrib.rb" do |t|
|
80
|
+
cp t.prerequisites.first, t.name, :verbose => true
|
81
|
+
end
|
82
|
+
|
83
|
+
file "#{SELENE}/lib/ctexplay.#{$dlext}" => "ctexplay.#{$dlext}" do |t|
|
84
|
+
cp t.prerequisites.first, t.name, :verbose => true
|
85
|
+
end
|
data/examples/basic.rb
ADDED
@@ -0,0 +1,48 @@
|
|
1
|
+
|
2
|
+
require 'rubygems'
|
3
|
+
require 'common'
|
4
|
+
|
5
|
+
require 'gosu'
|
6
|
+
require 'texplay'
|
7
|
+
|
8
|
+
class W < Gosu::Window
|
9
|
+
def initialize
|
10
|
+
super(1024, 769, false, 20)
|
11
|
+
@img = Gosu::Image.new(self, "#{Common::MEDIA}/sunset.png")
|
12
|
+
@img.rect 0,0, @img.width - 1, @img.height - 1
|
13
|
+
|
14
|
+
@img.instance_variable_set(:@horse, :love)
|
15
|
+
class << @img
|
16
|
+
def little
|
17
|
+
:little
|
18
|
+
end
|
19
|
+
end
|
20
|
+
@bunk = @img.clone
|
21
|
+
puts @bunk.instance_variable_get(:@horse)
|
22
|
+
puts @bunk.little
|
23
|
+
end
|
24
|
+
|
25
|
+
def draw
|
26
|
+
x = @img.width * rand
|
27
|
+
y = @img.height * rand
|
28
|
+
|
29
|
+
@img.
|
30
|
+
line(0, 0, 1024, 1024).
|
31
|
+
circle(20, 20, 50).
|
32
|
+
rect 30, 30, 100, 100
|
33
|
+
|
34
|
+
@img.draw 100, 50,1
|
35
|
+
@bunk.draw 500, 300,1
|
36
|
+
@bunk.line 0, 0, 1024, 1024, :color => :red
|
37
|
+
|
38
|
+
|
39
|
+
|
40
|
+
@bunk.pixel x, y, :color => :none
|
41
|
+
end
|
42
|
+
|
43
|
+
end
|
44
|
+
|
45
|
+
|
46
|
+
w = W.new
|
47
|
+
w.show
|
48
|
+
|
data/examples/basic2.rb
ADDED
@@ -0,0 +1,37 @@
|
|
1
|
+
require 'rubygems'
|
2
|
+
require 'common'
|
3
|
+
require 'gosu'
|
4
|
+
require 'texplay'
|
5
|
+
|
6
|
+
class Proc
|
7
|
+
def __context__
|
8
|
+
eval('self', self.binding)
|
9
|
+
end
|
10
|
+
end
|
11
|
+
|
12
|
+
class W < Gosu::Window
|
13
|
+
def initialize
|
14
|
+
super(1024, 769, false, 20)
|
15
|
+
@img = Gosu::Image.new(self, "#{Common::MEDIA}/texplay.png")
|
16
|
+
end
|
17
|
+
|
18
|
+
def trick
|
19
|
+
@img.dup_eval { self }
|
20
|
+
end
|
21
|
+
|
22
|
+
def draw
|
23
|
+
@img.paint {
|
24
|
+
circle -5100, -9700, 20
|
25
|
+
circle(@img.width * rand * 2 - @img.width, @img.height * rand * 2 - @img.height, 40)
|
26
|
+
}
|
27
|
+
@img.draw(100,100,1)
|
28
|
+
end
|
29
|
+
|
30
|
+
def img
|
31
|
+
@img
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
w = W.new
|
36
|
+
w.show
|
37
|
+
|
@@ -0,0 +1,299 @@
|
|
1
|
+
# TexPlay test program
|
2
|
+
|
3
|
+
begin
|
4
|
+
require 'rubygems'
|
5
|
+
rescue LoadError
|
6
|
+
|
7
|
+
end
|
8
|
+
|
9
|
+
require 'common'
|
10
|
+
require 'gosu'
|
11
|
+
require 'texplay'
|
12
|
+
require 'benchmark'
|
13
|
+
|
14
|
+
class MyWindow < Gosu::Window
|
15
|
+
|
16
|
+
# set to true for visible output
|
17
|
+
# note, benchmarks will not happen until
|
18
|
+
# viewing window is closed
|
19
|
+
SHOW = false
|
20
|
+
|
21
|
+
def initialize
|
22
|
+
super(1024, 768, false, 20)
|
23
|
+
@img = Gosu::Image.new(self,"#{Common::MEDIA}/texplay.png")
|
24
|
+
@img2 = Gosu::Image.new(self,"#{Common::MEDIA}/texplay.png")
|
25
|
+
@gosu = Gosu::Image.new(self, "#{Common::MEDIA}/gosu.png")
|
26
|
+
@empty1 = Gosu::Image.new(self, "#{Common::MEDIA}/empty2.png")
|
27
|
+
@empty2 = Gosu::Image.new(self, "#{Common::MEDIA}/empty2.png")
|
28
|
+
@empty3 = Gosu::Image.new(self, "#{Common::MEDIA}/empty2.png")
|
29
|
+
@width = @img.width
|
30
|
+
@height = @img.height
|
31
|
+
|
32
|
+
# default number of iterations
|
33
|
+
@repeat = 1000
|
34
|
+
|
35
|
+
if ARGV.first.to_i != 0 then
|
36
|
+
@repeat = ARGV.shift.to_i
|
37
|
+
end
|
38
|
+
|
39
|
+
if SHOW then
|
40
|
+
class << self
|
41
|
+
alias_method :draw, :_draw
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
def bench_all
|
47
|
+
x1 = rand @width
|
48
|
+
y1 = rand @height
|
49
|
+
x2 = rand @width
|
50
|
+
y2 = rand @height
|
51
|
+
|
52
|
+
@img.paint {
|
53
|
+
color :random
|
54
|
+
circle x1, y1, 10
|
55
|
+
line x1, y1, x2, y2
|
56
|
+
rect x1, y1, x2 + 100, y2 + 100
|
57
|
+
pixel x1, y1
|
58
|
+
}
|
59
|
+
end
|
60
|
+
|
61
|
+
def bench_clear
|
62
|
+
@img.paint {
|
63
|
+
clear
|
64
|
+
}
|
65
|
+
end
|
66
|
+
|
67
|
+
def bench_circle
|
68
|
+
x = rand @width
|
69
|
+
y = rand @height
|
70
|
+
r = 50
|
71
|
+
|
72
|
+
@img.circle x, y, r
|
73
|
+
|
74
|
+
end
|
75
|
+
|
76
|
+
def bench_pixel
|
77
|
+
@img.paint {
|
78
|
+
color :random
|
79
|
+
pixel (@img.width * rand), (@img.width * rand)
|
80
|
+
}
|
81
|
+
end
|
82
|
+
|
83
|
+
def bench_splice
|
84
|
+
@img.paint {
|
85
|
+
splice(@img2, (@img.width * rand), (@img.height * rand))
|
86
|
+
}
|
87
|
+
end
|
88
|
+
|
89
|
+
|
90
|
+
def bench_splice_same
|
91
|
+
@img.paint {
|
92
|
+
splice(@img, (@img.width * rand), (@img.height * rand))
|
93
|
+
}
|
94
|
+
end
|
95
|
+
|
96
|
+
def bench_special_pixel
|
97
|
+
@img.paint {
|
98
|
+
self[(@img.width * rand), (@img.height * rand)] = :random
|
99
|
+
}
|
100
|
+
end
|
101
|
+
|
102
|
+
def bench_line
|
103
|
+
x1 = rand @width
|
104
|
+
y1 = rand @height
|
105
|
+
x2 = rand @width
|
106
|
+
y2 = rand @height
|
107
|
+
|
108
|
+
|
109
|
+
@img.line x1, y1, x2, y2
|
110
|
+
|
111
|
+
end
|
112
|
+
|
113
|
+
def bench_pline
|
114
|
+
x1 = rand @width
|
115
|
+
y1 = rand @height
|
116
|
+
x2 = rand @width
|
117
|
+
y2 = rand @height
|
118
|
+
|
119
|
+
|
120
|
+
@img.paint {
|
121
|
+
line x1, y1, x2, y2
|
122
|
+
}
|
123
|
+
|
124
|
+
end
|
125
|
+
|
126
|
+
def bench_box
|
127
|
+
x1 = rand @width
|
128
|
+
y1 = rand @height
|
129
|
+
x2 = rand @width
|
130
|
+
y2 = rand @height
|
131
|
+
|
132
|
+
@img.paint {
|
133
|
+
rect rand(@width),rand(@width),rand(@width),rand(@width)
|
134
|
+
}
|
135
|
+
end
|
136
|
+
|
137
|
+
def bench_anti_each
|
138
|
+
0.upto(@img.width - 1) { |x|
|
139
|
+
0.upto(@img.height - 1) { |y|
|
140
|
+
clr = @img.get_pixel(x, y)
|
141
|
+
|
142
|
+
clr[0] += 1
|
143
|
+
|
144
|
+
@img.color clr
|
145
|
+
@img.pixel(x, y)
|
146
|
+
}
|
147
|
+
}
|
148
|
+
end
|
149
|
+
|
150
|
+
def bench_each
|
151
|
+
@img.each { |v| v[0] = 1}
|
152
|
+
end
|
153
|
+
|
154
|
+
def bench_each2
|
155
|
+
@img.each2 { |v| v[0] = 1}
|
156
|
+
end
|
157
|
+
|
158
|
+
def bench_image_new
|
159
|
+
Gosu::Image.new(self, "#{Common::MEDIA}/empty2.png")
|
160
|
+
end
|
161
|
+
|
162
|
+
def bench_create_blank
|
163
|
+
truck = TexPlay::create_blank_image(self, @img.width, @img.height)
|
164
|
+
truck.splice(@img, 0, 0)
|
165
|
+
|
166
|
+
end
|
167
|
+
|
168
|
+
def bench_dup
|
169
|
+
@img.dup
|
170
|
+
end
|
171
|
+
|
172
|
+
def bench_clone
|
173
|
+
@img.clone
|
174
|
+
end
|
175
|
+
|
176
|
+
def bench_composite
|
177
|
+
@img.splice @img2, 0, 0
|
178
|
+
end
|
179
|
+
|
180
|
+
def bench_rect
|
181
|
+
@img.rect 0, 0, 1024, 1024, :fill => true
|
182
|
+
end
|
183
|
+
|
184
|
+
def bench_gen_eval
|
185
|
+
@img.paint {
|
186
|
+
0.upto(1000) {
|
187
|
+
circle 100,100, 10
|
188
|
+
}
|
189
|
+
}
|
190
|
+
end
|
191
|
+
|
192
|
+
def bench_eager_sync
|
193
|
+
@img.paint(:lazy_sync => false) {
|
194
|
+
# 1.upto(1000) {
|
195
|
+
# color :blue
|
196
|
+
### circle (10), (10), 10
|
197
|
+
clear
|
198
|
+
#circle (@img.width * rand), (@img.height * rand), 10
|
199
|
+
# }
|
200
|
+
}
|
201
|
+
end
|
202
|
+
|
203
|
+
def bench_lazy_sync
|
204
|
+
@img.paint(:lazy_sync => true) {
|
205
|
+
# 1.upto(1000) {
|
206
|
+
# color :blue
|
207
|
+
# circle (10), (10), 10
|
208
|
+
clear
|
209
|
+
#circle (@img.width * rand), (@img.height * rand), 10
|
210
|
+
# }
|
211
|
+
|
212
|
+
}
|
213
|
+
end
|
214
|
+
|
215
|
+
|
216
|
+
def bench_yield
|
217
|
+
@img.paint { |c|
|
218
|
+
0.upto(1000) {
|
219
|
+
c.circle 100,100, 10
|
220
|
+
}
|
221
|
+
}
|
222
|
+
end
|
223
|
+
|
224
|
+
def bench_instance_eval
|
225
|
+
@img.instance_eval {
|
226
|
+
0.upto(1000) {
|
227
|
+
circle 100,100, 10
|
228
|
+
}
|
229
|
+
}
|
230
|
+
end
|
231
|
+
|
232
|
+
def bench_glow_fill
|
233
|
+
@empty2.fill 100,100
|
234
|
+
end
|
235
|
+
|
236
|
+
def bench_scan_fill_style
|
237
|
+
@empty2.fill 100,100, :scan => true, :style => true, :color => :random
|
238
|
+
end
|
239
|
+
|
240
|
+
def bench_scan_fill
|
241
|
+
@empty3.fill 100,100, :scan => true, :color => :random
|
242
|
+
end
|
243
|
+
|
244
|
+
def bench_iter_fill
|
245
|
+
@empty3.fill 100,100, :iter => true
|
246
|
+
end
|
247
|
+
|
248
|
+
def bench_polyline_thick
|
249
|
+
@empty2.polyline [100, 200, 0, 0, 150, 500, 500, 0], :closed => true, :texture => @tp, :thickness => 2,
|
250
|
+
:alpha_blend => true, :sync_mode => :no_sync
|
251
|
+
end
|
252
|
+
|
253
|
+
def bench_polyline
|
254
|
+
ps = []
|
255
|
+
13.times {
|
256
|
+
p = [@empty2.width * rand, @empty2.height * rand]
|
257
|
+
ps += p
|
258
|
+
}
|
259
|
+
# ps = [110, 110, 210, 210]
|
260
|
+
@empty2.polyline ps
|
261
|
+
end
|
262
|
+
|
263
|
+
def bench_bezier
|
264
|
+
ps = []
|
265
|
+
13.times {
|
266
|
+
p = [@empty2.width * rand, @empty2.height * rand]
|
267
|
+
ps += p
|
268
|
+
}
|
269
|
+
@empty2.bezier ps
|
270
|
+
end
|
271
|
+
|
272
|
+
def _draw
|
273
|
+
@img.draw(200, 200, 0)
|
274
|
+
end
|
275
|
+
|
276
|
+
def do_benchmarks
|
277
|
+
puts "performing #{@repeat} iterations..."
|
278
|
+
|
279
|
+
bench_meths = ARGV
|
280
|
+
|
281
|
+
if ARGV.empty? then
|
282
|
+
bench_meths = self.methods.select { |x| x =~ /bench/ }.map { |x| x.to_s.sub("bench_", "") }
|
283
|
+
end
|
284
|
+
|
285
|
+
Benchmark.bmbm do |v|
|
286
|
+
bench_meths.each { |meth|
|
287
|
+
v.report(meth) { @repeat.times { self.send("bench_#{meth}") } }
|
288
|
+
}
|
289
|
+
end
|
290
|
+
end
|
291
|
+
end
|
292
|
+
|
293
|
+
w = MyWindow.new
|
294
|
+
|
295
|
+
if MyWindow::SHOW
|
296
|
+
w.show
|
297
|
+
end
|
298
|
+
|
299
|
+
w.do_benchmarks
|