texplay 0.2.983pre1 → 0.2.983pre2
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 +6 -0
- data/README.markdown +1 -1
- data/examples/common.rb +0 -1
- data/examples/example_window_to_blob.rb +0 -1
- data/examples/example_window_to_texture.rb +55 -0
- data/ext/texplay/texplay.c +35 -8
- data/lib/texplay/version.rb +1 -1
- metadata +6 -5
data/CHANGELOG
CHANGED
@@ -1,6 +1,12 @@
|
|
1
|
+
*1/10/10
|
2
|
+
version 0.2.983pre2
|
3
|
+
* added Window#to_texture(...) seems to be broken! releasing pre2 so
|
4
|
+
* others can test it :)
|
5
|
+
|
1
6
|
*27/9/10
|
2
7
|
version 0.2.983pre1
|
3
8
|
* added Window#to_blob(x,y,width,height), grab a screenshot region
|
9
|
+
|
4
10
|
*24/9/10
|
5
11
|
version 0.2.982pre1
|
6
12
|
* added :default drawing mode (equivalent to :mode => nil)
|
data/README.markdown
CHANGED
data/examples/common.rb
CHANGED
@@ -0,0 +1,55 @@
|
|
1
|
+
require 'common'
|
2
|
+
require 'gosu'
|
3
|
+
require 'texplay'
|
4
|
+
|
5
|
+
|
6
|
+
class W < Gosu::Window
|
7
|
+
|
8
|
+
def render_to_texture(image, x, y)
|
9
|
+
tex_name = image.gl_tex_info.tex_name
|
10
|
+
xoffset = image.gl_tex_info.left * Gosu::MAX_TEXTURE_SIZE * Gosu::MAX_TEXTURE_SIZE
|
11
|
+
yoffset = image.gl_tex_info.top * Gosu::MAX_TEXTURE_SIZE
|
12
|
+
width = image.width
|
13
|
+
height = image.height
|
14
|
+
|
15
|
+
self.to_texture(tex_name, xoffset, yoffset, x, y, width, height)
|
16
|
+
end
|
17
|
+
|
18
|
+
def initialize
|
19
|
+
super(500, 500, false, 20)
|
20
|
+
@img = Gosu::Image.new(self, "#{Common::MEDIA}/maria.png")
|
21
|
+
@img2 = TexPlay.create_image(self, 100, 100, :color => Gosu::Color::RED)
|
22
|
+
|
23
|
+
end
|
24
|
+
|
25
|
+
def update
|
26
|
+
|
27
|
+
end
|
28
|
+
|
29
|
+
def draw
|
30
|
+
@img.draw 0, 0,1
|
31
|
+
@img2.draw rand(100), rand(100),1
|
32
|
+
@img3.draw rand(300), rand(300), 1 if @img3
|
33
|
+
|
34
|
+
if button_down?(Gosu::KbEscape)
|
35
|
+
# self.flush
|
36
|
+
@img3 = TexPlay.create_image(self, Gosu::MAX_TEXTURE_SIZE - 2, Gosu::MAX_TEXTURE_SIZE - 2, :color => :purple)
|
37
|
+
|
38
|
+
render_to_texture(@img2, 0, self.height)
|
39
|
+
|
40
|
+
|
41
|
+
|
42
|
+
# if @blob
|
43
|
+
# @img3 = TexPlay.from_blob(self, @blob,50, 50 )
|
44
|
+
# end
|
45
|
+
end
|
46
|
+
|
47
|
+
500000.times {}
|
48
|
+
end
|
49
|
+
|
50
|
+
end
|
51
|
+
|
52
|
+
|
53
|
+
w = W.new
|
54
|
+
w.show
|
55
|
+
|
data/ext/texplay/texplay.c
CHANGED
@@ -141,29 +141,56 @@ m_init_TPPoint(int argc, VALUE * argv, VALUE self)
|
|
141
141
|
|
142
142
|
|
143
143
|
static VALUE
|
144
|
-
gosu_window_to_blob(VALUE self, VALUE
|
144
|
+
gosu_window_to_blob(VALUE self, VALUE rb_x, VALUE rb_y, VALUE rb_width, VALUE rb_height)
|
145
145
|
{
|
146
|
-
int
|
147
|
-
int
|
148
|
-
int
|
149
|
-
int
|
146
|
+
int x = FIX2INT(rb_x);
|
147
|
+
int y = FIX2INT(rb_y);
|
148
|
+
int width = FIX2INT(rb_width);
|
149
|
+
int height = FIX2INT(rb_height);
|
150
150
|
int window_height = FIX2INT(rb_funcall(self, rb_intern("height"), 0));
|
151
151
|
|
152
|
-
VALUE blob = rb_str_new(NULL, 4 *
|
152
|
+
VALUE blob = rb_str_new(NULL, 4 * width * height);
|
153
153
|
|
154
|
-
glFinish();
|
155
154
|
rb_funcall(self, rb_intern("flush"), 0);
|
155
|
+
glFinish();
|
156
156
|
|
157
|
-
glReadPixels(
|
157
|
+
glReadPixels(x, y, width, window_height - y, GL_RGBA,
|
158
158
|
GL_UNSIGNED_BYTE, RSTRING_PTR(blob));
|
159
159
|
|
160
160
|
return blob;
|
161
161
|
}
|
162
162
|
|
163
|
+
static VALUE
|
164
|
+
gosu_window_to_texture(VALUE self, VALUE rb_tex_name, VALUE rb_xoffset, VALUE rb_yoffset,
|
165
|
+
VALUE rb_x, VALUE rb_y, VALUE rb_width, VALUE rb_height)
|
166
|
+
{
|
167
|
+
|
168
|
+
int tex_name = FIX2INT(rb_tex_name);
|
169
|
+
int xoffset = FIX2INT(rb_xoffset);
|
170
|
+
int yoffset = FIX2INT(rb_yoffset);
|
171
|
+
int x = FIX2INT(rb_x);
|
172
|
+
int y = FIX2INT(rb_y);
|
173
|
+
int width = FIX2INT(rb_width);
|
174
|
+
int height = FIX2INT(rb_height);
|
175
|
+
|
176
|
+
rb_funcall(self, rb_intern("flush"), 0);
|
177
|
+
glFinish();
|
178
|
+
|
179
|
+
glEnable(GL_TEXTURE_2D);
|
180
|
+
glBindTexture(GL_TEXTURE_2D, tex_name);
|
181
|
+
|
182
|
+
glCopyTexSubImage2D(GL_TEXTURE_2D, 0, xoffset, yoffset, x, y, width, height);
|
183
|
+
glDisable(GL_TEXTURE_2D);
|
184
|
+
|
185
|
+
return Qnil;
|
186
|
+
}
|
187
|
+
|
188
|
+
|
163
189
|
static void
|
164
190
|
monkey_patch_gosu(void)
|
165
191
|
{
|
166
192
|
rb_define_method(gosu_window(), "to_blob", gosu_window_to_blob, 4);
|
193
|
+
rb_define_method(gosu_window(), "to_texture", gosu_window_to_texture, 7);
|
167
194
|
}
|
168
195
|
|
169
196
|
static VALUE
|
data/lib/texplay/version.rb
CHANGED
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: texplay
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 570791623
|
5
5
|
prerelease: true
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 2
|
9
|
-
-
|
10
|
-
version: 0.2.
|
9
|
+
- 983pre2
|
10
|
+
version: 0.2.983pre2
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- John Mair (banisterfiend)
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2010-
|
18
|
+
date: 2010-10-01 00:00:00 +13:00
|
19
19
|
default_executable:
|
20
20
|
dependencies:
|
21
21
|
- !ruby/object:Gem::Dependency
|
@@ -107,6 +107,7 @@ files:
|
|
107
107
|
- examples/example_turtle.rb
|
108
108
|
- examples/example_weird.rb
|
109
109
|
- examples/example_window_to_blob.rb
|
110
|
+
- examples/example_window_to_texture.rb
|
110
111
|
- examples/media/bird.png
|
111
112
|
- examples/media/body.png
|
112
113
|
- examples/media/empty2.png
|
@@ -123,7 +124,7 @@ files:
|
|
123
124
|
- examples/media/texplay.png
|
124
125
|
- spec/image_spec.rb
|
125
126
|
- spec/texplay_spec.rb
|
126
|
-
has_rdoc:
|
127
|
+
has_rdoc: false
|
127
128
|
homepage: http://banisterfiend.wordpress.com/2008/08/23/texplay-an-image-manipulation-tool-for-ruby-and-gosu/
|
128
129
|
licenses: []
|
129
130
|
|