devil 0.1.9.5-i386-mswin32

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.
@@ -0,0 +1,122 @@
1
+ # (C) John Mair 2009, under the MIT licence
2
+
3
+ require 'texplay'
4
+ require 'devil'
5
+
6
+ # monkey patches for TexPlay module (and by proxy the Gosu::Image class)
7
+ module TexPlay
8
+
9
+ # save a Gosu::Image to +file+
10
+ # This method is only available if require 'devil/gosu' is used
11
+ def save(file)
12
+ capture {
13
+ img = to_devil
14
+ img.save(file)
15
+ img.free
16
+ }
17
+ self
18
+ end
19
+
20
+ # convert a Gosu::Image to a Devil::Image.
21
+ # This method is only available if require 'devil/gosu' is used
22
+ def to_devil
23
+ devil_img = nil
24
+ capture {
25
+ devil_img = Devil.from_blob(self.to_blob, self.width, self.height).flip
26
+ devil_img
27
+ }
28
+ devil_img
29
+ end
30
+ end
31
+
32
+ # monkey patches for Gosu::Window class
33
+ class Gosu::Window
34
+
35
+ # return a screenshot of the framebuffer as a Devil::Image.
36
+ # This method is only available if require 'devil/gosu' is used
37
+ def screenshot
38
+ require 'opengl'
39
+
40
+ img = nil
41
+ self.gl do
42
+ data = glReadPixels(0, 0, self.width, self.height, GL_RGBA, GL_UNSIGNED_BYTE)
43
+ img = Devil.from_blob(data, self.width, self.height)
44
+ end
45
+
46
+ img
47
+ end
48
+ end
49
+
50
+ class Gosu::Image
51
+ class << self
52
+ alias_method :original_new_redux, :new
53
+
54
+ # monkey patching to support multiple image formats.
55
+ # This method is only available if require 'devil/gosu' is used
56
+ def new(window, file, *args, &block)
57
+ if file.respond_to?(:to_blob) || file =~ /\.(bmp|png)$/
58
+ original_new_redux(window, file, *args, &block)
59
+ else
60
+ img = Devil.load(file).flip
61
+ begin
62
+ gosu_img = original_new_redux(window, img, *args, &block)
63
+ ensure
64
+ img.free
65
+ end
66
+
67
+ gosu_img
68
+ end
69
+ end
70
+ end
71
+ end
72
+
73
+ class Devil::Image
74
+
75
+ # convert a Devil::Image to a Gosu::Image.
76
+ # Must provide a +window+ parameter, as per Gosu::Image#new()
77
+ # This method is only available if require 'devil/gosu' is used
78
+ def to_gosu(window)
79
+ Gosu::Image.new(window, self)
80
+ end
81
+
82
+ # display the Devil images on screen utilizing the Gosu library for visualization
83
+ # if +x+ and +y+ are specified then show the image centered at this location, otherwise
84
+ # draw the image at the center of the screen
85
+ # This method is only available if require 'devil/gosu' is used
86
+ def show(x = Devil.get_options[:window_size][0] / 2,
87
+ y = Devil.get_options[:window_size][1] / 2)
88
+
89
+ if !Devil.const_defined?(:Window)
90
+ c = Class.new(Gosu::Window) do
91
+ attr_accessor :show_list
92
+
93
+ def initialize
94
+ super(Devil.get_options[:window_size][0], Devil.get_options[:window_size][1], false)
95
+ @show_list = []
96
+ end
97
+
98
+ def draw # :nodoc:
99
+ @show_list.each { |v| v[:image].draw_rot(v[:x], v[:y], 1, 0) }
100
+
101
+ exit if button_down?(Gosu::KbEscape)
102
+ end
103
+ end
104
+
105
+ Devil.const_set :Window, c
106
+ end
107
+
108
+ if !defined? @@window
109
+ @@window ||= Devil::Window.new
110
+
111
+ at_exit { @@window.show }
112
+ end
113
+
114
+ # note we dup the image so the displayed image is a snapshot taken at the time #show is invoked
115
+
116
+ img = self.dup.flip
117
+ @@window.show_list.push :image => Gosu::Image.new(@@window, img), :x => x, :y => y
118
+ img.free
119
+
120
+ self
121
+ end
122
+ end
@@ -0,0 +1,3 @@
1
+ module Devil
2
+ VERSION = "0.1.9.5"
3
+ end
Binary file
Binary file
@@ -0,0 +1,21 @@
1
+ $direc = File.dirname(__FILE__)
2
+
3
+ $LOAD_PATH.push("#{$direc}/../lib/")
4
+
5
+ require 'rubygems'
6
+ require 'devil/gosu'
7
+
8
+ Devil.create_image(500, 500, :color => [255, 255, 0, 255]) do |img|
9
+ source1 = Devil.load("texture.png").thumbnail(100)
10
+ img.blit source1, 100, 100
11
+ img.blit source1, 400, 100
12
+
13
+ source1_dup = source1.dup
14
+ img.blit source1_dup.rotate(45), 100, 300
15
+
16
+ img.show
17
+
18
+ source1.free
19
+ source1_dup.free
20
+ end
21
+
@@ -0,0 +1,21 @@
1
+ $direc = File.dirname(__FILE__)
2
+
3
+ $LOAD_PATH.push("#{$direc}/../lib/")
4
+
5
+ require 'rubygems'
6
+ require 'devil/gosu'
7
+
8
+ Devil.with_image("#{$direc}/texture.png") do |img|
9
+ img2 = Devil.load("#{$direc}/red.png")
10
+
11
+ img.blit img2, 100, 100, :crop => [0, 0, img2.width / 2, img2.height / 2]
12
+ img2.free
13
+
14
+ img.show
15
+ end
16
+
17
+
18
+
19
+
20
+
21
+
@@ -0,0 +1,28 @@
1
+ direc = File.dirname(__FILE__)
2
+
3
+ $LOAD_PATH.push("#{direc}/../lib/")
4
+
5
+ require 'rubygems'
6
+ require "devil/gosu"
7
+
8
+ img = Devil.load_image("#{direc}/texture.png")
9
+
10
+ img.crop(100,100, 200, 200)
11
+ img_dup = img.dup
12
+
13
+ img.rotate(rand(360))
14
+
15
+ img.show(200,200)
16
+ img_dup.show(450, 200)
17
+
18
+ img.free
19
+ img_dup.free
20
+
21
+
22
+
23
+
24
+
25
+
26
+
27
+
28
+
@@ -0,0 +1,23 @@
1
+ $direc = File.dirname(__FILE__)
2
+
3
+ $LOAD_PATH.push("#{$direc}/../lib/")
4
+
5
+ require 'rubygems'
6
+ require 'devil/gosu'
7
+
8
+ class W < Gosu::Window
9
+ def initialize
10
+ super(1024, 768, false, 20)
11
+
12
+ @img = Gosu::Image.new(self, "#{$direc}/texture.jpg")
13
+ end
14
+
15
+ def draw
16
+ @img.draw 100, 50,1
17
+ end
18
+
19
+ end
20
+
21
+ w = W.new
22
+ w.show
23
+
@@ -0,0 +1,29 @@
1
+ $direc = File.dirname(__FILE__)
2
+
3
+ $LOAD_PATH.push("#{$direc}/../lib/")
4
+
5
+ require 'rubygems'
6
+ require 'devil/gosu'
7
+
8
+ class W < Gosu::Window
9
+ def initialize
10
+ super(1024, 768, false, 20)
11
+
12
+ @img = Gosu::Image.new(self, "#{$direc}/texture.jpg")
13
+ dimg = @img.to_devil
14
+ @img = dimg.emboss.
15
+ rotate(45).
16
+ to_gosu(self)
17
+
18
+ dimg.free
19
+ end
20
+
21
+ def draw
22
+ @img.draw 100, 50,1
23
+ end
24
+
25
+ end
26
+
27
+ w = W.new
28
+ w.show
29
+
@@ -0,0 +1,26 @@
1
+ $direc = File.dirname(__FILE__)
2
+
3
+ $LOAD_PATH.push("#{$direc}/../lib/")
4
+
5
+ require 'rubygems'
6
+ require 'devil/gosu'
7
+
8
+ class W < Gosu::Window
9
+ def initialize
10
+ super(1024, 768, false, 20)
11
+
12
+ @img = Gosu::Image.new(self, "tank.png")
13
+ @img.circle 100, 100, 50, :color => :purple, :filled => true
14
+
15
+ @img.save("tank-modified.png")
16
+ end
17
+
18
+ def draw
19
+ @img.draw 100, 50,1
20
+ end
21
+
22
+ end
23
+
24
+ w = W.new
25
+ w.show
26
+
@@ -0,0 +1,10 @@
1
+ $direc = File.dirname(__FILE__)
2
+
3
+ $LOAD_PATH.push("#{$direc}/../lib/")
4
+
5
+ require 'rubygems'
6
+ require 'devil/gosu'
7
+
8
+ Devil.load_image("texture.png").emboss.show(512, 400)
9
+ Devil.load_image("tank.png").show(300, 400)
10
+
@@ -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
+
@@ -0,0 +1,95 @@
1
+ # this test is a hold over from the original ruby-devil bindings (by Jaroslaw Tworek)
2
+
3
+ $direc = File.dirname(__FILE__)
4
+
5
+ $LOAD_PATH.push("#{$direc}/../lib/")
6
+
7
+ require 'rubygems'
8
+ require 'glut'
9
+ require 'opengl'
10
+ require 'devil'
11
+ require 'thread'
12
+
13
+ $tex_id = 0
14
+
15
+ $idle = proc {
16
+ GLUT.PostRedisplay
17
+ }
18
+
19
+ $display = proc {
20
+ GL.Clear(GL::COLOR_BUFFER_BIT | GL::DEPTH_BUFFER_BIT)
21
+ GL.LoadIdentity
22
+ GLU.LookAt(0,0,-5,0,0,0,0,1,0)
23
+
24
+ GL.Begin GL::QUADS
25
+
26
+
27
+ GL.TexCoord(1,0)
28
+ GL.Vertex(1, 1,0)
29
+ GL.TexCoord(1,1)
30
+ GL.Vertex(1, -1,0)
31
+ GL.TexCoord(0,1)
32
+ GL.Vertex(-1, -1,0)
33
+ GL.TexCoord(0,0)
34
+ GL.Vertex(-1, 1,0)
35
+
36
+ GL.End
37
+
38
+ GLUT.SwapBuffers
39
+ }
40
+
41
+ $reshape = proc { |w,h|
42
+ GL.Viewport(0,0,w,h)
43
+ GL.MatrixMode(GL::PROJECTION)
44
+ GL.LoadIdentity
45
+ GLU.Perspective(45.0, Float(w)/h, 0.01, 100)
46
+ GL.MatrixMode(GL::MODELVIEW)
47
+ GL.LoadIdentity
48
+ }
49
+
50
+ def setup_gl
51
+ GL.ClearColor( 0,0,0,1)
52
+ IL.Init
53
+ ILUT.Renderer(ILUT::OPENGL)
54
+ GL.Enable(GL::DEPTH_TEST)
55
+ GL.DrawBuffer(GL::BACK)
56
+ GL.Disable(GL::CULL_FACE)
57
+ GL.ShadeModel(GL::FLAT)
58
+ GL.Enable(GL::TEXTURE_2D)
59
+
60
+ name = IL.GenImages(1)[0]
61
+ IL.BindImage(name)
62
+
63
+ if File.directory?("test") then
64
+ if !File.exist?("test/texture.png") then
65
+ raise RuntimeError, "File test/texture.png doesn't exist"
66
+ end
67
+ IL.LoadImage("test/texture.png")
68
+ else
69
+ if !File.exist?("texture.png") then
70
+ raise RuntimeError, "File texture.png doesn't exist"
71
+ end
72
+ IL.LoadImage("texture.png")
73
+ end
74
+
75
+ $tex_id = ILUT.GLBindMipmaps()
76
+ IL.DeleteImages([name])
77
+
78
+
79
+ end
80
+
81
+ def main
82
+ GLUT.Init
83
+ GLUT.InitDisplayMode(GLUT::DOUBLE | GLUT::RGB | GLUT::DEPTH)
84
+ GLUT.InitWindowSize(800,600)
85
+ GLUT.CreateWindow("Ruby-DevIL test")
86
+ setup_gl
87
+ GLUT.DisplayFunc($display)
88
+ GLUT.ReshapeFunc($reshape)
89
+ GLUT.IdleFunc($idle)
90
+ GLUT.MainLoop
91
+
92
+
93
+ end
94
+
95
+ main
@@ -0,0 +1,28 @@
1
+ $direc = File.dirname(__FILE__)
2
+
3
+ $LOAD_PATH.push("#{$direc}/../lib/")
4
+
5
+ require 'rubygems'
6
+ require "devil"
7
+
8
+ Devil.with_image("#{$direc}/texture.png") do |img|
9
+ img.pixelize(10)
10
+ img.save("#{$direc}/texture_blocky.png")
11
+ img.free
12
+ end
13
+
14
+ img = Devil.load_image("#{$direc}/texture.png")
15
+ bink = Devil.load_image("#{$direc}/texture.png")
16
+
17
+ img.gamma_correct(1.6)
18
+ bink.resize(50, 50)
19
+
20
+ img.save("#{$direc}/texture_gamma.png").free
21
+ bink.save("#{$direc}/texture_tiny.png").free
22
+
23
+
24
+
25
+
26
+
27
+
28
+
@@ -0,0 +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", :inprofile => "sRGB.icm", :out_profile => "AdobeRGB1998.icc").save("texture_out.png").free