texplay 0.2.700 → 0.2.710

Sign up to get free protection for your applications and to get access to all the features.
data/CHANGELOG CHANGED
@@ -1,3 +1,15 @@
1
+ 6/12/09
2
+ version 0.2.710
3
+ * fixed bug in line drawing code (wasn't drawing final pixel)
4
+ * fixed bug in filled rect code (wasn't drawing final row)
5
+ * fixed bug in flood fill (wasn't drawing on first column)
6
+ * added glDisable(GL_TEXTURE_2D) calls to cache.c, and removed 'restore previous texture binding' (i doubt there is any previous binding to restore)
7
+ * using version.rb to help manage versions
8
+
9
+ 23/11/09
10
+ * fixed bug in texplay.rb. Replaced TexPlay::TP_MAX_QUAD_SIZE - 2 with
11
+ just TexPlay::TP_MAX_QUAD_SIZE (the -2 is now built into the constant)
12
+
1
13
  16/10/09
2
14
  version 0.2.700
3
15
  * removed memory leak from Gosu::Image#to_blob, now writing directly to RSTRING_PTR
@@ -5,7 +5,7 @@
5
5
  INSTRUCTIONS
6
6
  ============
7
7
 
8
- **TexPlay version 0.2.700**
8
+ **TexPlay version 0.2.710**
9
9
 
10
10
  Gem installation:
11
11
 
data/Rakefile CHANGED
@@ -2,7 +2,8 @@ require 'rake/clean'
2
2
  require 'rake/gempackagetask'
3
3
  require 'rake/extensiontask'
4
4
 
5
- TEXPLAY_VERSION = "0.2.700"
5
+ # get the texplay version
6
+ require 'lib/texplay/version'
6
7
 
7
8
  $dlext = Config::CONFIG['DLEXT']
8
9
 
@@ -12,7 +13,7 @@ CLOBBER.include("**/*.#{$dlext}", "**/*~", "**/*#*", "**/*.log", "**/*.o")
12
13
  specification = Gem::Specification.new do |s|
13
14
  s.name = "texplay"
14
15
  s.summary = "TexPlay is a light-weight image manipulation framework for Ruby and Gosu"
15
- s.version = TEXPLAY_VERSION
16
+ s.version = TexPlay::VERSION
16
17
  s.date = Time.now.strftime '%Y-%m-%d'
17
18
  s.author = "John Mair (banisterfiend)"
18
19
  s.email = 'jrmair@gmail.com'
@@ -25,7 +26,7 @@ specification = Gem::Specification.new do |s|
25
26
 
26
27
  s.extensions = ["ext/texplay/extconf.rb"]
27
28
  s.files = ["Rakefile", "README.markdown", "CHANGELOG",
28
- "lib/texplay.rb", "lib/texplay-contrib.rb"] +
29
+ "lib/texplay.rb", "lib/texplay-contrib.rb", "lib/texplay/version.rb"] +
29
30
  FileList["ext/**/extconf.rb", "ext/**/*.h", "ext/**/*.c", "examples/*.rb",
30
31
  "examples/media/*"].to_a
31
32
  end
@@ -2,23 +2,62 @@ require 'rubygems'
2
2
  require 'common'
3
3
  require 'gosu'
4
4
  require 'texplay'
5
-
5
+ require 'devil/gosu'
6
6
 
7
7
  class W < Gosu::Window
8
8
  def initialize
9
9
  super(1024, 768, false, 20)
10
10
  @img = Gosu::Image.new(self, "#{Common::MEDIA}/sunset.png")
11
+ @x = 100
12
+ @y = 100
13
+
14
+ @x2 = 400
15
+ @y2 = 100
16
+ @rad = 50
17
+ @s = true
18
+
19
+ @copy = TexPlay.create_blank_image(self, @rad * 2 + 1, @rad * 2 + 1)
20
+ @copy2 = TexPlay.create_blank_image(self, @rad * 2 + 1, @rad * 2 + 1)
11
21
  end
12
22
 
13
23
  def draw
14
- x = (@img.width - 100/2) * rand
15
- y = (@img.height - 100/2) * rand
16
24
 
17
- @img.rect x, y, x + 50, y + 50, :fill => true,
18
- :color_control => { :mult => [0.9 , 0.3, 0.3, 1] }
19
25
 
26
+ @x += 1
27
+ @y += 1
28
+
29
+ @x2 -= 1
30
+ @y2 += 1
31
+
32
+
33
+ @copy2.splice @img, 0, 0, :crop => [@x2 - @rad, @y2 - @rad, @x2 + @rad, @y2 + @rad]
34
+ @copy.splice @img, 0, 0, :crop => [@x - @rad, @y - @rad, @x + @rad, @y + @rad]
35
+ @img.
36
+ circle @x, @y, @rad, :fill => true,
37
+ :color_control => { :mult => [1, 1, 1, 1] }
38
+
39
+ # circle @x2, @y2, @rad, :fill => true,
40
+ # :color_control => { :mult => [0.3, 0.9, 0.3, 1] }
41
+
42
+
43
+ # @img.force_sync [0,0, @img.width, @img.height]
44
+
45
+ @img.draw 10, 10,1
46
+
47
+ if button_down?(Gosu::KbEscape)
48
+ IL.Enable(IL::ORIGIN_SET)
49
+ IL.OriginFunc(IL::ORIGIN_UPPER_LEFT)
50
+ screenshot.crop(0,0, 500, 500).save("screenshot.jpg").free
51
+ exit
52
+ end
53
+
54
+ end
55
+
56
+ def update
57
+ @img.splice @copy, @x - @rad, @y - @rad if !@s
58
+ @img.splice @copy2, @x2 - @rad, @y2 - @rad if !@s
59
+ @s = nil if @s
20
60
 
21
- @img.draw 100, 50,1
22
61
  end
23
62
 
24
63
  end
@@ -0,0 +1,106 @@
1
+ require 'rubygems'
2
+ require 'common'
3
+ require 'texplay'
4
+ require 'devil/gosu'
5
+
6
+
7
+ class W < Gosu::Window
8
+ WIDTH = 1000
9
+ HEIGHT = 800
10
+ def initialize
11
+ super(1024, 768, false, 20)
12
+ @img = TexPlay::create_blank_image(self, WIDTH, HEIGHT)
13
+ @tp = Gosu::Image.new(self, "#{Common::MEDIA}/texplay.png")
14
+ @gosu = Gosu::Image.new(self, "#{Common::MEDIA}/sand1.png")
15
+
16
+
17
+ image = TexPlay::create_blank_image(self, WIDTH, HEIGHT)
18
+ image2 = TexPlay::create_blank_image(self, WIDTH, HEIGHT)
19
+
20
+ puts "..created blank!"
21
+ puts "..starting drawing!"
22
+
23
+ # now let's create the landscape
24
+ points = []
25
+ (0..WIDTH + 120).step(90) { |x|
26
+ p = TexPlay::TPPoint.new
27
+ p.x = x
28
+ p.y = HEIGHT - rand * 600
29
+ if p.y >= HEIGHT - 1
30
+ p.y = HEIGHT - 1
31
+ end
32
+ points << p
33
+ }
34
+
35
+ points.first.y = 600
36
+ points.last.x = WIDTH + 200
37
+
38
+ points.last.y = 600
39
+
40
+ mag = rand(50) + 10
41
+ rough = 2 + rand(20)
42
+ spike = 2 + rand(14)
43
+ period = 2 * rand + 0.2
44
+ image.move_to(points.first.x, points.first.y)
45
+
46
+ image.rect 200, 200, 300, 300, :color => :green, :fill => true
47
+ image.rect 300, 200, 400, 300, :color => :green, :fill => false
48
+ #image.line 200, 200, 300, 300, :color => :green, :fill => true#, :thickness => 3
49
+ # image.pixel 300,300, :color => :white
50
+ # image.line 200, 300, 300, 300, :color => :white, :sync_mode => :eager_sync
51
+
52
+ #
53
+ image.rect 0, 0, image.width - 1, image.height - 1, :color => :white
54
+ image.circle image.width, 0, 10, :color => :red, :fill => true
55
+ # image.rect 0, 400, image.width - 1, 600, :color => :green
56
+
57
+ # plain beziers are boring, so let's augment it with a randomized sine wave
58
+ image.bezier points, :color => :white, :color_control => proc { |c, t, y|
59
+ y += mag * Math::sin(t * period * Math::PI / 180)
60
+ if (t % rough == 0 ) then
61
+ image.line_to(t, y + rand * spike - (spike / 2), :texture => @gosu)
62
+ end
63
+ :none
64
+ }
65
+
66
+ #image.bezier [rand(500), 700, rand(100), 800, rand(800), 900, rand(300), 850 ], :closed => true
67
+ image.fill 300, 760, :color => :red #:texture => @gosu
68
+ image.rect 0,0, image.width - 1, image.height - 1, :fill => true, :color => :blue
69
+ image2.fill 300, 300, :color => :red
70
+
71
+ @img = image
72
+ @img2 = image2
73
+ # @img.circle 10, image.height / 2, 50, :color => :red, :fill => true
74
+ #@img.rect 0,100, 100, 200, :color => :red, :fill => true
75
+ #@img.line -1, 100, 100, 100, :color => :blue, :fill => true
76
+
77
+ # @img.line 0,100, 0, 200, :color => :red, :fill => true
78
+
79
+
80
+ # @img.force_sync [0,0, image.width, image.height]
81
+ # @img.rect -10, image.height / 2, 50, image.height / 2 + 50, :color => :red, :fill => true
82
+ # @img.line 0,0, 0, image.height - 1, :color => :red
83
+
84
+ @bunk = TexPlay.create_blank_image(self, 100, 100)
85
+ @bunk.circle 50, 50, 50, :color => :rand, :fill => true
86
+
87
+ end
88
+
89
+ def draw
90
+ @img.draw 0, 600,1
91
+ @img2.draw 50, 600, 1
92
+ @bunk.draw 500, 500, 1
93
+
94
+ if button_down?(Gosu::KbEscape)
95
+ Devil.from_blob(self.to_blob, self.width, self.height).save("hello.jpg")
96
+ #screenshot.crop(100, 100, 500, 500).save("hello.jpg")
97
+ exit
98
+ end
99
+ end
100
+
101
+ end
102
+
103
+
104
+ w = W.new
105
+ w.show
106
+
@@ -0,0 +1,40 @@
1
+ require 'rubygems'
2
+ require 'common'
3
+ require 'gosu'
4
+ require 'texplay'
5
+ require 'devil/gosu'
6
+
7
+
8
+ class W < Gosu::Window
9
+ def initialize
10
+ super(1024, 768, false, 20)
11
+ @img = Gosu::Image.new(self, "#{Common::MEDIA}/platform.png")
12
+
13
+ # each can accept a block of two types of arity:
14
+ # arity 1 - yields just the pixel color
15
+ # arity 3 - yield the pixel color, and the x and y
16
+
17
+ # max out the blue component of every pixel
18
+ @img.each { |v|
19
+ if v[0] > 0.7 && v[1] > 0.6 && v[2] < 0.6 then
20
+ v[1] = 0.0
21
+ v[2] = 0.0
22
+ end
23
+ }
24
+
25
+ #@img.save("/home/john/Desktop/red.png")
26
+
27
+
28
+ end
29
+
30
+ def draw
31
+
32
+ @img.draw 100, 50,1
33
+ end
34
+
35
+ end
36
+
37
+
38
+ w = W.new
39
+ w.show
40
+
@@ -0,0 +1,55 @@
1
+ require 'rubygems'
2
+ require 'common'
3
+ require 'texplay'
4
+
5
+
6
+ class W < Gosu::Window
7
+ NUM_WAVES = 10
8
+
9
+ def initialize
10
+ super(1024, 768, false, 20)
11
+ @img = TexPlay::create_blank_image(self, 1022, 800)
12
+ @tp = Gosu::Image.new(self, "#{Common::MEDIA}/texplay.png")
13
+ @gosu = Gosu::Image.new(self, "#{Common::MEDIA}/sand1.png")
14
+
15
+ points = []
16
+
17
+ # NOTE: TexPlay also accepts points. a 'point' is any object that responds to 'x' or y
18
+ # NOTE: current maximum points for a bezier is 13
19
+ (0..@img.width + 90).step(185) { |x|
20
+ p = TexPlay::TPPoint.new
21
+ p.x = x
22
+ p.y = @img.height * rand
23
+
24
+ points << p
25
+ }
26
+
27
+ waves = []
28
+ NUM_WAVES.times {
29
+ waves.push({ :amp => rand(100), :freq => rand(1000).to_f })
30
+ }
31
+
32
+ @img.move_to 0, 300
33
+ (0..1100).step(10) { |x|
34
+ y = 300
35
+ waves.each { |w|
36
+ y += w[:amp] * Math::sin((x / w[:freq]) * Math::PI * 2)
37
+ }
38
+ @img.line_to(x, y)
39
+ }
40
+
41
+ # NOTE: the :texture hash argument works on ALL drawing actions; not just fills
42
+ @img.fill 300, 650, :texture => @gosu
43
+
44
+ end
45
+
46
+ def draw
47
+ @img.draw 10, 10,1
48
+ end
49
+
50
+ end
51
+
52
+
53
+ w = W.new
54
+ w.show
55
+
@@ -66,6 +66,14 @@ line_do_action(int x1, int y1, int x2, int y2, texture_info * tex, VALUE hash_ar
66
66
  if(W >= H) {
67
67
  F = 2 * H - W;
68
68
  while(x != x2) {
69
+ if(thickness <= 1) {
70
+ set_pixel_color_with_style(payload, tex, x, y);
71
+ }
72
+ else {
73
+ set_hash_value(hash_arg, "fill", Qtrue);
74
+ circle_do_action(x, y, thickness / 2, tex, hash_arg, no_sync, false, payload);
75
+ }
76
+
69
77
  if(F < 0)
70
78
  F += 2 * H;
71
79
  else {
@@ -73,6 +81,11 @@ line_do_action(int x1, int y1, int x2, int y2, texture_info * tex, VALUE hash_ar
73
81
  y += yinc;
74
82
  }
75
83
  x += xinc;
84
+ }
85
+ }
86
+ else {
87
+ F = 2 * W - H;
88
+ while(y != y2 ) {
76
89
 
77
90
  if(thickness <= 1) {
78
91
  set_pixel_color_with_style(payload, tex, x, y);
@@ -81,11 +94,7 @@ line_do_action(int x1, int y1, int x2, int y2, texture_info * tex, VALUE hash_ar
81
94
  set_hash_value(hash_arg, "fill", Qtrue);
82
95
  circle_do_action(x, y, thickness / 2, tex, hash_arg, no_sync, false, payload);
83
96
  }
84
- }
85
- }
86
- else {
87
- F = 2 * W - H;
88
- while(y != y2 ) {
97
+
89
98
  if(F < 0)
90
99
  F += 2 * W;
91
100
  else {
@@ -93,18 +102,17 @@ line_do_action(int x1, int y1, int x2, int y2, texture_info * tex, VALUE hash_ar
93
102
  x += xinc;
94
103
  }
95
104
  y += yinc;
96
-
97
- if(thickness <= 1) {
98
- set_pixel_color_with_style(payload, tex, x, y);
99
- }
100
- else {
101
- set_hash_value(hash_arg, "fill", Qtrue);
102
- circle_do_action(x, y, thickness / 2, tex, hash_arg, no_sync, false, payload);
103
- }
104
-
105
105
  }
106
106
  }
107
-
107
+
108
+ if(thickness <= 1) {
109
+ set_pixel_color_with_style(payload, tex, x2, y2);
110
+ }
111
+ else {
112
+ set_hash_value(hash_arg, "fill", Qtrue);
113
+ circle_do_action(x2, y2, thickness / 2, tex, hash_arg, no_sync, false, payload);
114
+
115
+ }
108
116
  draw_epilogue(&cur, tex, primary);
109
117
  }
110
118
  /** end line **/
@@ -311,7 +319,7 @@ rect_do_action(int x1, int y1, int x2, int y2, texture_info * tex, VALUE hash_ar
311
319
  int y;
312
320
  if(y1 > y2) SWAP(y1, y2);
313
321
 
314
- for(y = y1; y < y2; y++)
322
+ for(y = y1; y <= y2; y++)
315
323
  line_do_action(x1, y, x2, y, tex, hash_arg, no_sync, false, payload);
316
324
  }
317
325
 
@@ -660,7 +668,7 @@ scan_fill_do_action(int x, int y, texture_info * tex, VALUE hash_arg,
660
668
  /* update the drawing rectangle */
661
669
  update_bounds(payload, x, y1, x, y1);
662
670
 
663
- if(!spanLeft && x > 1 && cmp_color(old_color, get_pixel_color(tex, x - 1, y1)))
671
+ if(!spanLeft && x > 0 && cmp_color(old_color, get_pixel_color(tex, x - 1, y1)))
664
672
  {
665
673
  if(!push(x - 1, y1, tex->width - 1)) return;
666
674
  spanLeft = true;
@@ -25,13 +25,9 @@ cache_entry*
25
25
  cache_create_entry(int tname) {
26
26
  float * new_array;
27
27
  int sidelength, new_element = cache.len;
28
- GLint saved_tname;
29
28
 
30
29
  if(cache.len >= CACHE_SIZE) { rb_raise(rb_eRuntimeError, "cache is full! increase CACHE_SIZE"); }
31
30
 
32
- /* save current texture binding */
33
- /* glGetIntegerv(GL_TEXTURE_BINDING_2D, &saved_tname); */
34
-
35
31
  /* opengl initialization code */
36
32
  glEnable(GL_TEXTURE_2D);
37
33
  glBindTexture(GL_TEXTURE_2D, tname);
@@ -53,12 +49,8 @@ cache_create_entry(int tname) {
53
49
  /* update size of cache */
54
50
  cache.len++;
55
51
 
56
- /* restore saved texture binding */
57
- /* glBindTexture(GL_TEXTURE_2D, saved_tname); */
58
-
59
52
  glDisable(GL_TEXTURE_2D);
60
53
 
61
-
62
54
  return &cache.entry[new_element];
63
55
  }
64
56
 
@@ -92,35 +84,27 @@ void
92
84
  cache_refresh_all(void) {
93
85
  float * tdata;
94
86
  int tname, index;
95
- GLint saved_tname;
96
87
 
97
- /* save current texture binding */
98
- glGetIntegerv(GL_TEXTURE_BINDING_2D, &saved_tname);
88
+ /* opengl initialization code */
89
+ glEnable(GL_TEXTURE_2D);
99
90
 
100
91
  for(index = 0; index < cache.len; index++) {
101
92
  tdata = cache.entry[index].tdata;
102
93
  tname = cache.entry[index].tname;
103
94
 
104
- /* opengl initialization code */
105
- glEnable(GL_TEXTURE_2D);
106
95
  glBindTexture(GL_TEXTURE_2D, tname);
107
96
 
108
97
  glGetTexImage(GL_TEXTURE_2D, 0, GL_RGBA, GL_FLOAT, (void*)(tdata));
109
98
  }
110
99
 
111
- /* restore saved texture binding */
112
- glBindTexture(GL_TEXTURE_2D, saved_tname);
100
+ glDisable(GL_TEXTURE_2D);
113
101
  }
114
102
 
115
103
  /* refresh the cache for a specific quad */
116
104
  void
117
105
  cache_refresh_entry(int tname) {
118
- GLint saved_tname;
119
106
  cache_entry * entry;
120
107
 
121
- /* save current texture binding */
122
- glGetIntegerv(GL_TEXTURE_BINDING_2D, &saved_tname);
123
-
124
108
  entry = find_in_cache(tname);
125
109
 
126
110
  /* opengl initialization code */
@@ -129,7 +113,6 @@ cache_refresh_entry(int tname) {
129
113
 
130
114
  glGetTexImage(GL_TEXTURE_2D, 0, GL_RGBA, GL_FLOAT, (void*)(entry->tdata));
131
115
 
132
- /* restore saved texture binding */
133
- glBindTexture(GL_TEXTURE_2D, saved_tname);
116
+ glDisable(GL_TEXTURE_2D);
134
117
  }
135
118
 
@@ -12,11 +12,18 @@
12
12
  #include "bindings.h"
13
13
  #include "object2module.h"
14
14
  #include "gen_eval.h"
15
+ #ifdef __APPLE__
16
+ # include <glut.h>
17
+ #else
18
+ # include <GL/glut.h>
19
+ #endif
20
+
15
21
 
16
22
  /* setup ruby bindings */
17
23
 
18
24
  /** constructor for TPPoint class **/
19
25
  static VALUE m_init_TPPoint(int argc, VALUE * argv, VALUE self);
26
+ static void monkey_patch_gosu(void);
20
27
 
21
28
  void
22
29
  Init_texplay() {
@@ -103,6 +110,7 @@ Init_texplay() {
103
110
  /* seed the random number generator */
104
111
  srand(time(NULL));
105
112
 
113
+ monkey_patch_gosu();
106
114
  /** end basic setup **/
107
115
  }
108
116
 
@@ -130,7 +138,31 @@ m_init_TPPoint(int argc, VALUE * argv, VALUE self)
130
138
  }
131
139
  /** end constructor for TPPoint **/
132
140
 
141
+
142
+ static VALUE
143
+ gosu_window_to_blob(VALUE self)
144
+ {
145
+ int width, height;
146
+ VALUE blob;
147
+
148
+ width = rb_funcall(self, rb_intern("width"), 0);
149
+ height = rb_funcall(self, rb_intern("height"), 0);
150
+
151
+ blob = rb_str_new(NULL, 4 * width * height);
152
+
153
+ glReadPixels(0, 0, width, height, GL_RGBA, GL_UNSIGNED_BYTE, RSTRING_PTR(blob));
154
+
155
+ return blob;
156
+ }
157
+
158
+ static void
159
+ monkey_patch_gosu(void)
160
+ {
161
+ VALUE Gosu = rb_const_get(rb_cObject, rb_intern("Gosu"));
162
+ VALUE GosuWindow = rb_const_get(Gosu, rb_intern("Window"));
133
163
 
164
+ rb_define_method(GosuWindow, "to_blob", gosu_window_to_blob, 0);
165
+ }
134
166
 
135
167
 
136
168
 
@@ -5,30 +5,35 @@ begin
5
5
  rescue LoadError
6
6
  end
7
7
 
8
+ direc = File.dirname(__FILE__)
9
+
8
10
  # include gosu first
9
11
  require 'rbconfig'
10
12
  require 'gosu'
13
+ require "#{direc}/texplay/version"
11
14
 
12
15
  module TexPlay
13
- TEXPLAY_VERSION = "0.2.700"
14
-
15
- def self::on_setup(&block)
16
- raise "need a block" if !block
17
-
18
- @__init_procs__ ||= []
19
- @__init_procs__.push(block)
20
- end
16
+ class << self
17
+ def on_setup(&block)
18
+ raise "need a block" if !block
19
+
20
+ @__init_procs__ ||= []
21
+ @__init_procs__.push(block)
22
+ end
21
23
 
22
- def self::setup(receiver)
23
- if @__init_procs__ then
24
- @__init_procs__.each do |init_proc|
25
- receiver.instance_eval(&init_proc)
24
+ def setup(receiver)
25
+ if @__init_procs__ then
26
+ @__init_procs__.each do |init_proc|
27
+ receiver.instance_eval(&init_proc)
28
+ end
26
29
  end
27
30
  end
28
- end
29
31
 
30
- def self::create_blank_image(window, width, height)
31
- Gosu::Image.new(window, EmptyImageStub.new(width, height))
32
+ def create_blank_image(window, width, height)
33
+ Gosu::Image.new(window, EmptyImageStub.new(width, height))
34
+ end
35
+
36
+ alias_method :create_image, :create_blank_image
32
37
  end
33
38
 
34
39
  module Colors
@@ -90,6 +95,8 @@ module Gosu
90
95
 
91
96
  # bring in the TexPlay image manipulation methods
92
97
  include TexPlay
98
+
99
+ attr_reader :__window__
93
100
 
94
101
  class << self
95
102
  alias_method :original_new, :new
@@ -100,8 +107,8 @@ module Gosu
100
107
  obj = original_new(*args, &block)
101
108
 
102
109
  # refresh the TexPlay image cache
103
- if obj.width <= (TexPlay::TP_MAX_QUAD_SIZE - 2) &&
104
- obj.height <= (TexPlay::TP_MAX_QUAD_SIZE - 2) && obj.quad_cached? then
110
+ if obj.width <= (TexPlay::TP_MAX_QUAD_SIZE) &&
111
+ obj.height <= (TexPlay::TP_MAX_QUAD_SIZE) && obj.quad_cached? then
105
112
 
106
113
  obj.refresh_cache
107
114
  end
@@ -115,10 +122,6 @@ module Gosu
115
122
  obj
116
123
  end
117
124
  end
118
-
119
- def __window__
120
- @__window__
121
- end
122
125
  end
123
126
  end
124
127
 
@@ -0,0 +1,3 @@
1
+ module TexPlay
2
+ VERSION = "0.2.710"
3
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: texplay
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.700
4
+ version: 0.2.710
5
5
  platform: ruby
6
6
  authors:
7
7
  - John Mair (banisterfiend)
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2009-10-20 00:00:00 -04:00
12
+ date: 2009-12-08 00:00:00 -05:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
@@ -36,6 +36,7 @@ files:
36
36
  - CHANGELOG
37
37
  - lib/texplay.rb
38
38
  - lib/texplay-contrib.rb
39
+ - lib/texplay/version.rb
39
40
  - ext/texplay/extconf.rb
40
41
  - ext/texplay/object2module.h
41
42
  - ext/texplay/bindings.h
@@ -55,9 +56,11 @@ files:
55
56
  - examples/example_dup.rb
56
57
  - examples/example_turtle.rb
57
58
  - examples/example_color_control.rb
59
+ - examples/example_sine.rb
58
60
  - examples/example_effect.rb
59
61
  - examples/common.rb
60
62
  - examples/example_color_transform.rb
63
+ - examples/example_fill_test.rb
61
64
  - examples/example_hash_arguments.rb
62
65
  - examples/example_gen_eval.rb
63
66
  - examples/example_polyline.rb
@@ -67,6 +70,7 @@ files:
67
70
  - examples/example_fill_old.rb
68
71
  - examples/example_blur.rb
69
72
  - examples/example_each.rb
73
+ - examples/example_modify.rb
70
74
  - examples/example_fluent.rb
71
75
  - examples/example_sync.rb
72
76
  - examples/example_splice.rb
@@ -81,6 +85,7 @@ files:
81
85
  - examples/media/texplay.png
82
86
  - examples/media/gosu.png
83
87
  - examples/media/logo.png
88
+ - examples/media/platform.png
84
89
  - examples/media/empty2.png
85
90
  has_rdoc: false
86
91
  homepage: http://banisterfiend.wordpress.com/2008/08/23/texplay-an-image-manipulation-tool-for-ruby-and-gosu/