devil 0.1.8.5-x86-mswin32-60 → 0.1.8.8-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 +17 -0
- data/README +1 -1
- data/Rakefile +1 -1
- data/ext/devil/ruby_il.c +9 -7
- data/lib/1.8/devil.so +0 -0
- data/lib/1.9/devil.so +0 -0
- data/lib/devil/gosu.rb +18 -6
- data/lib/devil.rb +95 -33
- data/test/test_blank.rb +7 -3
- data/test/test_blit.rb +2 -3
- data/test/test_clone_and_crop.rb +3 -0
- data/test/test_gosu_load.rb +0 -1
- data/test/test_gosu_roundtrip.rb +5 -3
- data/test/test_group.rb +18 -0
- data/test/test_new_api.rb +7 -4
- data/test/test_profile.rb +8 -8
- data/test/test_screenshot.rb +1 -1
- data/test/test_thumbnail.rb +2 -2
- metadata +3 -2
data/CHANGELOG
CHANGED
@@ -1,3 +1,20 @@
|
|
1
|
+
2009-10-29 John Mair (Banisterfiend)
|
2
|
+
* version 0.1.8.8
|
3
|
+
* added Devil.with_group (for loading multiple images into the same block)
|
4
|
+
* all images passed into block are cleaned up at end of block
|
5
|
+
* images at end of block are only free'd if they have not already been freed by user
|
6
|
+
* ruby_il.c: added IMAGE_BITS_PER_PIXEL and IMAGE_BYTES_PER_PIXEL constants
|
7
|
+
* finalizers still not implemented
|
8
|
+
|
9
|
+
2009-10-28 John Mair (Banisterfiend)
|
10
|
+
* removed finalizer and replaced with explicit call to image.free at end of block. If no block is used, user must call image.free at end of use
|
11
|
+
* above fixes memory leak.
|
12
|
+
* changed STR2CSTR() to StringValuePtr() in ruby_il.c
|
13
|
+
|
14
|
+
2009-10-28 John Mair (Banisterfiend)
|
15
|
+
* added IL::ConvertImage(IL::RGBA, IL::UNSIGNED_BYTE) to Devil#load; ensures that all image data is in the same format (image files only support RGB/UB and RGBA/UB so make them all RGBA/UB)
|
16
|
+
* changed compile-time conditional for the IL_LBM constant. now checks if IL_LBM is defined before it tries IL_ILBM
|
17
|
+
|
1
18
|
2009-10-25 John Mair (Banisterfiend)
|
2
19
|
version 0.1.8.5
|
3
20
|
* added hooks: prepare_image_hook, create_image_hook, load_image_hook
|
data/README
CHANGED
data/Rakefile
CHANGED
data/ext/devil/ruby_il.c
CHANGED
@@ -80,21 +80,21 @@ static VALUE il_DeleteImages(VALUE obj, VALUE images) {
|
|
80
80
|
}
|
81
81
|
|
82
82
|
static VALUE il_LoadImage(VALUE obj, VALUE rb_filename) {
|
83
|
-
char* filename =
|
83
|
+
char* filename = StringValuePtr(rb_filename);
|
84
84
|
ILboolean load = ilLoadImage(filename);
|
85
85
|
return load ? Qtrue : Qfalse;
|
86
86
|
}
|
87
87
|
|
88
88
|
static VALUE il_Load(VALUE obj, VALUE rb_type, VALUE rb_filename) {
|
89
89
|
ILenum type = NUM2INT(rb_type);
|
90
|
-
char* filename =
|
90
|
+
char* filename = StringValuePtr(rb_filename);
|
91
91
|
|
92
92
|
ILboolean load = ilLoad(type, filename);
|
93
93
|
return load ? Qtrue : Qfalse;
|
94
94
|
}
|
95
95
|
|
96
96
|
static VALUE il_SaveImage(VALUE obj, VALUE rb_filename) {
|
97
|
-
char* filename =
|
97
|
+
char* filename = StringValuePtr(rb_filename);
|
98
98
|
ILboolean load = ilSaveImage(filename);
|
99
99
|
|
100
100
|
return load ? Qtrue : Qfalse;
|
@@ -102,7 +102,7 @@ static VALUE il_SaveImage(VALUE obj, VALUE rb_filename) {
|
|
102
102
|
|
103
103
|
static VALUE il_Save(VALUE obj, VALUE rb_type, VALUE rb_filename) {
|
104
104
|
ILenum type = NUM2INT(rb_type);
|
105
|
-
char* filename =
|
105
|
+
char* filename = StringValuePtr(rb_filename);
|
106
106
|
ILboolean load = ilSave(type, filename);
|
107
107
|
|
108
108
|
return load ? Qtrue : Qfalse;
|
@@ -116,8 +116,8 @@ static VALUE il_TexImage(VALUE obj, VALUE rb_width, VALUE rb_height,
|
|
116
116
|
ILuint depth = NUM2INT(rb_depth);
|
117
117
|
ILubyte bpp = NUM2INT(rb_bpp);
|
118
118
|
ILenum format = NUM2INT(rb_format);
|
119
|
-
ILenum type = NUM2INT(rb_type);
|
120
|
-
|
119
|
+
ILenum type = NUM2INT(rb_type);
|
120
|
+
ILboolean flag;
|
121
121
|
|
122
122
|
/* from ILvoid */
|
123
123
|
void * data = NULL;
|
@@ -436,7 +436,7 @@ InitializeIL() {
|
|
436
436
|
rb_define_const(mIL, "JPG", INT2NUM(IL_JPG));
|
437
437
|
rb_define_const(mIL, "JFIF", INT2NUM(IL_JFIF));
|
438
438
|
|
439
|
-
#
|
439
|
+
#ifndef IL_LBM
|
440
440
|
rb_define_const(mIL, "LBM", INT2NUM(IL_ILBM));
|
441
441
|
#else
|
442
442
|
rb_define_const(mIL, "LBM", INT2NUM(IL_LBM));
|
@@ -518,6 +518,8 @@ InitializeIL() {
|
|
518
518
|
rb_define_const(mIL, "IMAGE_WIDTH", INT2NUM(IL_IMAGE_WIDTH));
|
519
519
|
rb_define_const(mIL, "IMAGE_HEIGHT", INT2NUM(IL_IMAGE_HEIGHT));
|
520
520
|
rb_define_const(mIL, "IMAGE_FORMAT", INT2NUM(IL_IMAGE_FORMAT));
|
521
|
+
rb_define_const(mIL, "IMAGE_BITS_PER_PIXEL", INT2NUM(IL_IMAGE_BITS_PER_PIXEL));
|
522
|
+
rb_define_const(mIL, "IMAGE_BYTES_PER_PIXEL", INT2NUM(IL_IMAGE_BYTES_PER_PIXEL));
|
521
523
|
rb_define_const(mIL, "FILE_OVERWRITE", INT2NUM(IL_FILE_OVERWRITE));
|
522
524
|
rb_define_const(mIL, "ORIGIN_SET", INT2NUM(IL_ORIGIN_SET));
|
523
525
|
rb_define_const(mIL, "CONV_PAL", INT2NUM(IL_CONV_PAL));
|
data/lib/1.8/devil.so
CHANGED
Binary file
|
data/lib/1.9/devil.so
CHANGED
Binary file
|
data/lib/devil/gosu.rb
CHANGED
@@ -9,8 +9,10 @@ module TexPlay
|
|
9
9
|
# save a Gosu::Image to +file+
|
10
10
|
# This method is only available if require 'devil/gosu' is used
|
11
11
|
def save(file)
|
12
|
-
capture {
|
13
|
-
to_devil
|
12
|
+
capture {
|
13
|
+
img = to_devil
|
14
|
+
img.save(file)
|
15
|
+
img.free
|
14
16
|
}
|
15
17
|
self
|
16
18
|
end
|
@@ -20,7 +22,7 @@ module TexPlay
|
|
20
22
|
def to_devil
|
21
23
|
devil_img = nil
|
22
24
|
capture {
|
23
|
-
devil_img = Devil.from_blob(self.to_blob, self.width, self.height)
|
25
|
+
devil_img = Devil.from_blob(self.to_blob, self.width, self.height).flip
|
24
26
|
devil_img
|
25
27
|
}
|
26
28
|
devil_img
|
@@ -64,8 +66,15 @@ class Gosu::Image
|
|
64
66
|
def new(window, file, *args, &block)
|
65
67
|
if file.respond_to?(:to_blob) || file =~ /\.(bmp|png)$/
|
66
68
|
original_new_redux(window, file, *args, &block)
|
67
|
-
else
|
68
|
-
|
69
|
+
else
|
70
|
+
img = Devil.load(file).flip
|
71
|
+
begin
|
72
|
+
gosu_img = original_new_redux(window, img, *args, &block)
|
73
|
+
ensure
|
74
|
+
img.free
|
75
|
+
end
|
76
|
+
|
77
|
+
gosu_img
|
69
78
|
end
|
70
79
|
end
|
71
80
|
end
|
@@ -113,8 +122,11 @@ class Devil::Image
|
|
113
122
|
end
|
114
123
|
|
115
124
|
# note we dup the image so the displayed image is a snapshot taken at the time #show is invoked
|
116
|
-
@@window.show_list.push :image => Gosu::Image.new(@@window, self.dup.flip), :x => x, :y => y
|
117
125
|
|
126
|
+
img = self.dup.flip
|
127
|
+
@@window.show_list.push :image => Gosu::Image.new(@@window, img), :x => x, :y => y
|
128
|
+
img.free
|
129
|
+
|
118
130
|
self
|
119
131
|
end
|
120
132
|
end
|
data/lib/devil.rb
CHANGED
@@ -19,7 +19,7 @@ module Devil
|
|
19
19
|
include IL
|
20
20
|
include ILU
|
21
21
|
|
22
|
-
VERSION = '0.1.8.
|
22
|
+
VERSION = '0.1.8.8'
|
23
23
|
|
24
24
|
class << self
|
25
25
|
|
@@ -27,29 +27,31 @@ module Devil
|
|
27
27
|
# Optionally accepts a block and yields the newly created image to the block.
|
28
28
|
def load_image(file, options={}, &block)
|
29
29
|
name = prepare_image
|
30
|
+
attach_image_from_file(file)
|
31
|
+
|
30
32
|
out_profile = options[:out_profile]
|
31
33
|
in_profile = options[:in_profile]
|
32
34
|
|
33
|
-
IL.LoadImage(file)
|
34
|
-
|
35
35
|
# apply a color profile if one is provided
|
36
36
|
IL.ApplyProfile(in_profile, out_profile) if out_profile
|
37
37
|
|
38
|
-
# run the
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
raise RuntimeError, "an error occured while trying to "+
|
44
|
-
"load the image #{file}. #{ILU.ErrorString(error_code)}"
|
45
|
-
end
|
46
|
-
|
38
|
+
# run the load image hook (if it exists)
|
39
|
+
check_and_run_hook(:load_image_hook)
|
40
|
+
|
41
|
+
error_check
|
42
|
+
|
47
43
|
img = Image.new(name, file)
|
48
44
|
if block
|
49
|
-
|
45
|
+
begin
|
46
|
+
block.call(img)
|
47
|
+
ensure
|
48
|
+
# don't bother freeing it if it's already free
|
49
|
+
img.free if img.name
|
50
|
+
end
|
51
|
+
else
|
52
|
+
# ObjectSpace.define_finalizer(img, proc { IL.DeleteImages([img.name]) if img.name })
|
53
|
+
img
|
50
54
|
end
|
51
|
-
|
52
|
-
img
|
53
55
|
end
|
54
56
|
|
55
57
|
alias_method :with_image, :load_image
|
@@ -66,6 +68,7 @@ module Devil
|
|
66
68
|
|
67
69
|
clear_color = options[:color]
|
68
70
|
|
71
|
+
# created image is formatted RGBA8
|
69
72
|
IL.TexImage(width, height, 1, 4, IL::RGBA, IL::UNSIGNED_BYTE, nil)
|
70
73
|
|
71
74
|
# apply a color profile if one is provided
|
@@ -75,26 +78,52 @@ module Devil
|
|
75
78
|
IL.ClearImage
|
76
79
|
IL.ClearColour(*Devil.get_options[:clear_color]) if clear_color
|
77
80
|
|
78
|
-
# run the
|
79
|
-
|
80
|
-
|
81
|
+
# run the create image hook (if it exists)
|
82
|
+
check_and_run_hook(:create_image_hook)
|
83
|
+
|
84
|
+
error_check
|
85
|
+
|
86
|
+
img = Image.new(name, nil)
|
87
|
+
if block
|
88
|
+
begin
|
89
|
+
block.call(img)
|
90
|
+
ensure
|
91
|
+
img.free if img.name
|
92
|
+
end
|
93
|
+
else
|
94
|
+
# ObjectSpace.define_finalizer(img, proc { IL.DeleteImages([img.name]) if img.name })
|
95
|
+
img
|
96
|
+
end
|
97
|
+
end
|
81
98
|
|
82
|
-
|
83
|
-
|
84
|
-
|
99
|
+
alias_method :create_blank_image, :create_image
|
100
|
+
|
101
|
+
# load multiple images and yield them to the block
|
102
|
+
# e.g Devil.with_group("hello.png", "friend.png") { |img1, img2| ... }
|
103
|
+
# all yielded images are cleaned up at end of block so you do not need to
|
104
|
+
# explictly call img1.free
|
105
|
+
def with_group(*files, &block)
|
106
|
+
images = files.map do |file|
|
107
|
+
name = prepare_image
|
108
|
+
attach_image_from_file(file)
|
109
|
+
check_and_run_hook(:load_image_hook)
|
110
|
+
error_check
|
111
|
+
|
112
|
+
Image.new(name, file)
|
85
113
|
end
|
86
114
|
|
87
|
-
img = Image.new(name, nil)
|
88
115
|
if block
|
89
|
-
|
116
|
+
begin
|
117
|
+
block.call(*images)
|
118
|
+
ensure
|
119
|
+
images.each { |img| img.free if img.name }
|
120
|
+
end
|
121
|
+
else
|
122
|
+
raise RuntimeError, "a block must be provided."
|
90
123
|
end
|
91
|
-
|
92
|
-
img
|
93
124
|
end
|
94
125
|
|
95
|
-
alias_method :
|
96
|
-
alias_method :create_blank, :create_image
|
97
|
-
alias_method :blank_image, :create_image
|
126
|
+
alias_method :with_images, :with_group
|
98
127
|
|
99
128
|
# convert an image +blob+ with +width+ and +height+
|
100
129
|
# to a bona fide image
|
@@ -130,6 +159,10 @@ module Devil
|
|
130
159
|
# :edge_filter sets the edge detection algorithm to use when invoking
|
131
160
|
# the 'edge_detect' method. (defaults to :prewitt)
|
132
161
|
# Allowed values are :prewitt and :sobel
|
162
|
+
#
|
163
|
+
# hooks:
|
164
|
+
# :prepare_image_hook, :create_image_hook, :load_image_hook
|
165
|
+
# e.g Devil.set_options :load_image_hook => proc { IL::ConvertImage(IL::RGBA, IL::UNSIGNED_BYTE) }
|
133
166
|
def set_options(options={})
|
134
167
|
@options.merge!(options)
|
135
168
|
|
@@ -186,15 +219,31 @@ module Devil
|
|
186
219
|
name = IL.GenImages(1).first
|
187
220
|
IL.BindImage(name)
|
188
221
|
|
189
|
-
# run the
|
190
|
-
|
191
|
-
prepare_image_proc.call if prepare_image_proc
|
222
|
+
# run the prepare image hook (if it exists)
|
223
|
+
check_and_run_hook(:prepare_image_hook)
|
192
224
|
|
193
225
|
name
|
194
226
|
end
|
227
|
+
|
228
|
+
def attach_image_from_file(file)
|
229
|
+
IL.LoadImage(file)
|
230
|
+
|
231
|
+
# ensure all images are formatted RGBA8
|
232
|
+
IL.ConvertImage(IL::RGBA, IL::UNSIGNED_BYTE)
|
233
|
+
end
|
234
|
+
|
235
|
+
def check_and_run_hook(hook_name)
|
236
|
+
Devil.get_options[hook_name].call if Devil.get_options[hook_name]
|
237
|
+
end
|
238
|
+
|
239
|
+
def error_check
|
240
|
+
if (error_code = IL.GetError) != IL::NO_ERROR
|
241
|
+
raise RuntimeError, "An error occured. #{ILU.ErrorString(error_code)}"
|
242
|
+
end
|
243
|
+
end
|
195
244
|
end
|
196
245
|
end
|
197
|
-
|
246
|
+
## end of Devil module
|
198
247
|
|
199
248
|
# wraps a DevIL image
|
200
249
|
class Devil::Image
|
@@ -203,9 +252,19 @@ class Devil::Image
|
|
203
252
|
def initialize(name, file)
|
204
253
|
@name = name
|
205
254
|
@file = file
|
255
|
+
end
|
206
256
|
|
207
|
-
|
257
|
+
# Frees the memory associated with the image.
|
258
|
+
# Must be called explictly if load_image or create_image is invoked without a block.
|
259
|
+
def free
|
260
|
+
raise "Error: calling 'free' on already freed image! #{self}" if !@name
|
261
|
+
IL.DeleteImages([@name])
|
262
|
+
error_check
|
263
|
+
@name = nil
|
208
264
|
end
|
265
|
+
|
266
|
+
alias_method :close, :free
|
267
|
+
alias_method :delete, :free
|
209
268
|
|
210
269
|
# returns the width of the image.
|
211
270
|
def width
|
@@ -438,6 +497,7 @@ class Devil::Image
|
|
438
497
|
private
|
439
498
|
|
440
499
|
def set_binding
|
500
|
+
raise "Error: trying to use image that has already been freed! #{self}" if !@name
|
441
501
|
IL.BindImage(@name)
|
442
502
|
end
|
443
503
|
|
@@ -455,5 +515,7 @@ class Devil::Image
|
|
455
515
|
result
|
456
516
|
end
|
457
517
|
end
|
518
|
+
## end of Devil::Image
|
458
519
|
|
520
|
+
# initialize Devil and set default config
|
459
521
|
Devil.init
|
data/test/test_blank.rb
CHANGED
@@ -5,13 +5,17 @@ $LOAD_PATH.push("#{$direc}/../lib/")
|
|
5
5
|
require 'rubygems'
|
6
6
|
require 'devil/gosu'
|
7
7
|
|
8
|
-
Devil.set_options :load_image_hook => proc { IL.ConvertImage(IL::RGBA, IL::UNSIGNED_BYTE) }
|
9
|
-
|
10
8
|
Devil.create_image(500, 500, :color => [255, 255, 0, 255]) do |img|
|
11
9
|
source1 = Devil.load("texture.png").thumbnail(100)
|
12
10
|
img.blit source1, 100, 100
|
13
11
|
img.blit source1, 400, 100
|
14
|
-
|
12
|
+
|
13
|
+
source1_dup = source1.dup
|
14
|
+
img.blit source1_dup.rotate(45), 100, 300
|
15
|
+
|
15
16
|
img.show
|
17
|
+
|
18
|
+
source1.free
|
19
|
+
source1_dup.free
|
16
20
|
end
|
17
21
|
|
data/test/test_blit.rb
CHANGED
@@ -7,10 +7,9 @@ require 'devil/gosu'
|
|
7
7
|
|
8
8
|
Devil.with_image("#{$direc}/texture.png") do |img|
|
9
9
|
img2 = Devil.load("#{$direc}/red.png")
|
10
|
-
|
11
|
-
img.show(200,200)
|
12
|
-
|
10
|
+
|
13
11
|
img.blit img2, 100, 100, :crop => [0, 0, img2.width / 2, img2.height / 2]
|
12
|
+
img2.free
|
14
13
|
|
15
14
|
img.show
|
16
15
|
end
|
data/test/test_clone_and_crop.rb
CHANGED
data/test/test_gosu_load.rb
CHANGED
data/test/test_gosu_roundtrip.rb
CHANGED
@@ -10,10 +10,12 @@ class W < Gosu::Window
|
|
10
10
|
super(1024, 768, false, 20)
|
11
11
|
|
12
12
|
@img = Gosu::Image.new(self, "#{$direc}/texture.jpg")
|
13
|
-
|
14
|
-
|
13
|
+
dimg = @img.to_devil
|
14
|
+
@img = dimg.emboss.
|
15
15
|
rotate(45).
|
16
16
|
to_gosu(self)
|
17
|
+
|
18
|
+
dimg.free
|
17
19
|
end
|
18
20
|
|
19
21
|
def draw
|
@@ -24,4 +26,4 @@ end
|
|
24
26
|
|
25
27
|
w = W.new
|
26
28
|
w.show
|
27
|
-
|
29
|
+
|
data/test/test_group.rb
ADDED
@@ -0,0 +1,18 @@
|
|
1
|
+
$direc = File.dirname(__FILE__)
|
2
|
+
|
3
|
+
$LOAD_PATH.push("#{$direc}/../lib/")
|
4
|
+
|
5
|
+
require 'rubygems'
|
6
|
+
require 'devil/gosu'
|
7
|
+
|
8
|
+
Devil.with_group("#{$direc}/texture.png", "#{$direc}/red.png") do |img, img2|
|
9
|
+
|
10
|
+
img.blit img2, 100, 100, :crop => [0, 0, img2.width / 2, img2.height / 2]
|
11
|
+
img.show
|
12
|
+
end
|
13
|
+
|
14
|
+
|
15
|
+
|
16
|
+
|
17
|
+
|
18
|
+
|
data/test/test_new_api.rb
CHANGED
@@ -6,8 +6,9 @@ require 'rubygems'
|
|
6
6
|
require "devil"
|
7
7
|
|
8
8
|
Devil.with_image("#{$direc}/texture.png") do |img|
|
9
|
-
img.
|
10
|
-
img.save("#{$direc}/
|
9
|
+
img.pixelize(10)
|
10
|
+
img.save("#{$direc}/texture_blocky.png")
|
11
|
+
img.free
|
11
12
|
end
|
12
13
|
|
13
14
|
img = Devil.load_image("#{$direc}/texture.png")
|
@@ -16,8 +17,10 @@ bink = Devil.load_image("#{$direc}/texture.png")
|
|
16
17
|
img.gamma_correct(1.6)
|
17
18
|
bink.resize(50, 50)
|
18
19
|
|
19
|
-
img.save("#{$direc}/texture_gamma.png")
|
20
|
-
bink.save("#{$direc}/texture_tiny.png")
|
20
|
+
img.save("#{$direc}/texture_gamma.png").free
|
21
|
+
bink.save("#{$direc}/texture_tiny.png").free
|
22
|
+
|
23
|
+
|
21
24
|
|
22
25
|
|
23
26
|
|
data/test/test_profile.rb
CHANGED
@@ -1,8 +1,8 @@
|
|
1
|
-
$direc = File.dirname(__FILE__)
|
2
|
-
|
3
|
-
$LOAD_PATH.push("#{$direc}/../lib/")
|
4
|
-
|
5
|
-
require 'rubygems'
|
6
|
-
require 'devil/gosu'
|
7
|
-
|
8
|
-
Devil.load("texture.png", :
|
1
|
+
$direc = File.dirname(__FILE__)
|
2
|
+
|
3
|
+
$LOAD_PATH.push("#{$direc}/../lib/")
|
4
|
+
|
5
|
+
require 'rubygems'
|
6
|
+
require 'devil/gosu'
|
7
|
+
|
8
|
+
Devil.load("texture.png", :inprofile => "sRGB.icm", :out_profile => "AdobeRGB1998.icc").save("texture_out.png").free
|
data/test/test_screenshot.rb
CHANGED
data/test/test_thumbnail.rb
CHANGED
@@ -6,7 +6,7 @@ require 'rubygems'
|
|
6
6
|
require 'devil/gosu'
|
7
7
|
|
8
8
|
Devil.load("texture.png") do |img|
|
9
|
-
img.dup.thumbnail(150, :filter => Devil::NEAREST).show(100, 300)
|
10
|
-
img.dup.thumbnail(150).show(100, 100)
|
9
|
+
img.dup.thumbnail(150, :filter => Devil::NEAREST).show(100, 300).free
|
10
|
+
img.dup.thumbnail(150).show(100, 100).free
|
11
11
|
end
|
12
12
|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: devil
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.8.
|
4
|
+
version: 0.1.8.8
|
5
5
|
platform: x86-mswin32-60
|
6
6
|
authors:
|
7
7
|
- Jaroslaw Tworek, John Mair (banisterfiend)
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2009-10-
|
12
|
+
date: 2009-10-29 00:00:00 +13:00
|
13
13
|
default_executable:
|
14
14
|
dependencies: []
|
15
15
|
|
@@ -40,6 +40,7 @@ files:
|
|
40
40
|
- test/test_gosu_roundtrip.rb
|
41
41
|
- test/test_gosu_save.rb
|
42
42
|
- test/test_gosu_show.rb
|
43
|
+
- test/test_group.rb
|
43
44
|
- test/test_new_api.rb
|
44
45
|
- test/test_profile.rb
|
45
46
|
- test/test_scale_algos.rb
|