frusdl 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,78 @@
1
+ module Frusdl
2
+ module SDL
3
+ class PixelFormat
4
+ include Frusdl::Wrap
5
+
6
+ extend Frusdl::Low::SDL
7
+ include Frusdl::Low::SDL
8
+
9
+ attr_reader :pointer
10
+
11
+ def initialize(ptr)
12
+ initialize_pointer(ptr, Frusdl::Low::SDL::SDL_PixelFormat)
13
+ end
14
+
15
+ # Map a RGB color value to a pixel format.
16
+ def map_rgb(r, g, b)
17
+ return SDL_MapRGB(@pointer, r, g, b)
18
+ end
19
+
20
+ # Map a RGBA color value to a pixel format.
21
+ def map_rgba(r, g, b, a)
22
+ return SDL_MapRGBA(@pointer, r, g, b, a)
23
+ end
24
+
25
+ # Get RGB values from a pixel in the specified pixel format.
26
+ # XXX: not implemented
27
+ def get_rgb()
28
+ return [-1, -1, -1, -1]
29
+ end
30
+
31
+
32
+ # Get RGBA values from a pixel in the specified pixel format.
33
+ # XXX: not implemented
34
+ def get_rgba()
35
+ return [-1, -1, -1, -1]
36
+ end
37
+
38
+ struct_accessor :Rmask , :rmask
39
+ struct_accessor :Gmask , :gmask
40
+ struct_accessor :Bmask , :bmask
41
+ struct_accessor :Amask , :amask
42
+ struct_accessor :Rloss , :rloss
43
+ struct_accessor :Gloss , :gloss
44
+ struct_accessor :Bloss , :bloss
45
+ struct_accessor :Aloss , :aloss
46
+ struct_accessor :Rshift , :rshift
47
+ struct_accessor :Gshift , :gshift
48
+ struct_accessor :Bshift , :bshift
49
+ struct_accessor :Ashift , :ashift
50
+ struct_accessor :colorkey , :colorkey
51
+ struct_accessor :alpha , :alpha
52
+ struct_accessor :bpp , :bitsperpixel
53
+
54
+
55
+ =begin
56
+ o SDL::PixelFormat#map_rgb -- RGB Map a RGB color value to a pixel format.
57
+ o SDL::PixelFormat#map_rgba -- Map a RGBA color value to a pixel format.
58
+ o SDL::PixelFormat#get_rgb -- Get RGB values from a pixel in the specified pixel format.
59
+ o SDL::PixelFormat#get_rgba -- Get RGBA values from a pixel in the specified pixel format.
60
+ o SDL::PixelFormat#Rmask -- Get binary mask used to retrieve red color value
61
+ o SDL::PixelFormat#Gmask -- Get binary mask used to retrieve green color value
62
+ o SDL::PixelFormat#Bmask -- Get binary mask used to retrieve blue color value
63
+ o SDL::PixelFormat#Amask -- Get binary mask used to retrieve alpla value
64
+ o SDL::PixelFormat#Rloss -- Precision loss of red component
65
+ o SDL::PixelFormat#Gloss -- Precision loss of green component
66
+ o SDL::PixelFormat#Bloss -- Precision loss of blue component
67
+ o SDL::PixelFormat#Aloss -- Precision loss of alpha component
68
+ o SDL::PixelFormat#Rshift -- Binary left shift of red component in the pixel value
69
+ o SDL::PixelFormat#Gshift -- Binary left shift of green component in the pixel value
70
+ o SDL::PixelFormat#Bshift -- Binary left shift of blue component in the pixel value
71
+ o SDL::PixelFormat#Ashift -- Binary left shift of alpha component in the pixel value
72
+ o SDL::PixelFormat#colorkey -- Pixel value of transparent pixels.
73
+ o SDL::PixelFormat#alpha -- Overall surface alpha value
74
+ o SDL::PixelFormat#bpp -- The number of bits used to represent each pixel in a surface
75
+ =end
76
+ end
77
+ end
78
+ end
@@ -0,0 +1,199 @@
1
+ module Frusdl
2
+ module SDL
3
+ class Screen
4
+ include Frusdl::Wrap
5
+ include Frusdl::Low::SDL
6
+ extend Frusdl::Low::SDL
7
+
8
+
9
+ struct_accessor :w
10
+ struct_accessor :h
11
+
12
+ attr_reader :pointer
13
+
14
+ def initialize(ptr)
15
+ initialize_pointer(ptr, Frusdl::Low::SDL::SDL_Surface)
16
+ end
17
+
18
+ # Wraps a low level ponter in a higher level struct
19
+ def self.wrap(ptr)
20
+ return Frusdl::Low::SDL::SDL_Surface.new(ptr)
21
+ end
22
+
23
+ # Returns the current display surface
24
+ def self.get
25
+ ptr = SDL_GetVideoSurface()
26
+ self.new(ptr)
27
+ end
28
+
29
+ # Returns information about the video hardware
30
+ def self.info
31
+ ptr = SDL_GetVideoInfo()
32
+ Frusdl::SDL::VideoInfo.new(ptr)
33
+ end
34
+
35
+ # Set up a video mode with the specified width, height and bits-per-pixel.
36
+ def self.open(width, height, bbp, flags)
37
+ ptr = SDL_SetVideoMode(width, height, bbp, flags)
38
+ self.new(ptr)
39
+ end
40
+
41
+ # Obtain the name of the video driver
42
+ def self.driver_name
43
+ size = 256
44
+ cstr = FFI::MemoryPointer.new(size)
45
+ SDL_VideoDriverName(cstr, size)
46
+ str = cstr.read_string
47
+ return str
48
+ end
49
+
50
+ # Check to see if a particular video mode is supported.
51
+ # Returns supported bbp, or 0 if unsupported
52
+ def self.check_mode(width, height, depth, flags)
53
+ return SDL_VideoModeOK(width, height, depth, flags)
54
+ end
55
+
56
+ # Returns an array of available screen dimensions for the given format and video flags
57
+ def self.list_modes(format, flags)
58
+ formptr = format ? format.pointer : nil
59
+ rectptrptr = SDL_ListModes(formptr, flags)
60
+ return nil if rectptrptr.null?
61
+ return true if rectptrptr.address == 4294967295
62
+ # This address means "all sizes allowed". Gotta love C! >_<
63
+ aid = rectptrptr.get_int(0)
64
+ return nil if aid == 0
65
+ return true if aid == -1
66
+ index = 0
67
+ result = []
68
+ ptrsize = FFI.type_size(:pointer)
69
+ rectptr = rectptrptr.get_pointer(index * ptrsize)
70
+ until rectptr.null? do
71
+ rect = Frusdl::Low::SDL::SDL_Rect.new(rectptr)
72
+ result << [ rect[:w], rect[:h] ]
73
+ index += 1
74
+ rectptr = rectptrptr.get_pointer(index * ptrsize)
75
+ end
76
+ return result
77
+
78
+ end
79
+
80
+ # Swaps screen buffers
81
+ def flip
82
+ SDL_Flip(@pointer)
83
+ end
84
+
85
+ # Makes sure the given area is updated on the given screen.
86
+ def update_rect(x, y, w, h)
87
+ SDL_UpdateRect(@pointer, x, y, w, h)
88
+ end
89
+
90
+ # Makes sure the given list of rectangles is updated on the given screen
91
+ def update_rects(*rects)
92
+ count = rects.size
93
+ rectptr = MemoryPointer.new(:pointer, count)
94
+ index = 0
95
+ for rect in rects do
96
+ rectptr.set_pointer(index, rect.pointer)
97
+ index += 1
98
+ end
99
+ SDL_UpdateRects(@pointer, index, rectptr)
100
+ end
101
+
102
+ # Sets the color gamma function for the display
103
+ def self.set_gamma(rgamma, ggamma, bgammma)
104
+ res = SDL_SetGamma(rgamma, ggamma, bgamma)
105
+ raise_error if res < 0
106
+ end
107
+
108
+ # Gets the color gamma lookup tables for the display
109
+ # XXX: doesn't work
110
+ def self.get_gamma_ramp
111
+ res = SDL_SetGammaRamp(rgammas, ggammas, bgammas)
112
+ raise_error if res < 0
113
+ return rgammas, ggammas, bgammas
114
+ end
115
+
116
+ # Sets the color gamma lookup tables for the display
117
+ # XXX: doesn't work like this
118
+ def self.set_gamma_ramp(rgammas, ggammas, bgammas)
119
+ res = SDL_SetGammaRamp(rgammas, ggammas, bgammas)
120
+ raise_error if res < 0
121
+ end
122
+
123
+
124
+
125
+
126
+ =begin
127
+ * Video Subsystem Outline
128
+ * SDL::Screen
129
+ * SDL::Surface
130
+ * SDL::VideoInfo
131
+ * Color, PixelFormat and Pixel value
132
+ * Methods
133
+ o SDL::PixelFormat#map_rgb -- RGB Map a RGB color value to a pixel format.
134
+ o SDL::PixelFormat#map_rgba -- Map a RGBA color value to a pixel format.
135
+ o SDL::PixelFormat#get_rgb -- Get RGB values from a pixel in the specified pixel format.
136
+ o SDL::PixelFormat#get_rgba -- Get RGBA values from a pixel in the specified pixel format.
137
+ o SDL::PixelFormat#Rmask -- Get binary mask used to retrieve red color value
138
+ o SDL::PixelFormat#Gmask -- Get binary mask used to retrieve green color value
139
+ o SDL::PixelFormat#Bmask -- Get binary mask used to retrieve blue color value
140
+ o SDL::PixelFormat#Amask -- Get binary mask used to retrieve alpla value
141
+ o SDL::PixelFormat#Rloss -- Precision loss of red component
142
+ o SDL::PixelFormat#Gloss -- Precision loss of green component
143
+ o SDL::PixelFormat#Bloss -- Precision loss of blue component
144
+ o SDL::PixelFormat#Aloss -- Precision loss of alpha component
145
+ o SDL::PixelFormat#Rshift -- Binary left shift of red component in the pixel value
146
+ o SDL::PixelFormat#Gshift -- Binary left shift of green component in the pixel value
147
+ o SDL::PixelFormat#Bshift -- Binary left shift of blue component in the pixel value
148
+ o SDL::PixelFormat#Ashift -- Binary left shift of alpha component in the pixel value
149
+ o SDL::PixelFormat#colorkey -- Pixel value of transparent pixels.
150
+ o SDL::PixelFormat#alpha -- Overall surface alpha value
151
+ o SDL::PixelFormat#bpp -- The number of bits used to represent each pixel in a surface
152
+
153
+
154
+ o SDL::Surface#set_colors -- Sets a portion of the colormap for the given 8-bit surface.
155
+ o SDL::Surface#set_palette -- Sets the colors in the palette of an 8-bit surface
156
+ o SDL::Surface.new -- Create an empty SDL::Surface
157
+ o SDL::Surface.new_from -- Create an SDL::Surface object from pixel data
158
+ o SDL::Surface#lock -- Lock a surface for directly access.
159
+ o SDL::Surface#unlock -- Unlocks a previously locked surface.
160
+ o SDL::Surface#must_lock? -- Get whether the surface require locking or not.
161
+ o SDL::Surface.load_bmp -- Load a Windows BMP file into an SDL_Surface.
162
+ o SDL::Surface.load_bmp_from_io -- Load a Windows BMP file into an Surface from IO object.
163
+ o SDL::Surface#save_bmp -- Save an SDL_Surface as a Windows BMP file.
164
+ o SDL::Surface#set_color_key -- Sets the color key (transparent pixel) in a blittable surface and RLE acceleration.
165
+ o SDL::Surface#set_alpha -- Adjust the alpha properties of a surface
166
+ o SDL::Surface#set_clip_rect -- Sets the clipping rectangle for a surface.
167
+ o SDL::Surface#get_clip_rect -- Gets the clipping rectangle for a surface.
168
+ o SDL::Surface.blit -- This performs a fast blit from the source surface to the destination surface.
169
+ o SDL::Surface#fill_rect -- This function performs a fast fill of the given rectangle with some color
170
+ o SDL::Surface#display_format -- Convert a surface to the display format
171
+ o SDL::Surface#display_format_alpha -- Convert a surface to the display format
172
+ o SDL::Surface#flags -- Get surface flags
173
+ o SDL::Surface#format -- Get surface pixel format
174
+ o SDL::Surface#w -- Get surface width
175
+ o SDL::Surface#h -- Get surface height
176
+ o SDL::Surface#pixels -- Get the actual pixel data
177
+ o SDL::Surface#colorkey -- Pixel value of transparent pixels
178
+ o SDL::Surface#alpha -- Overall surface alpha value
179
+ o SDL::Surface.load -- Load image into an surface
180
+ o SDL::Surface.load_from_io -- Load a image file into an Surface from IO object.
181
+ o SDL::Surface#put_pixel -- Writes a pixel to the specified position
182
+ o SDL::Surface#get_pixel -- Gets the color of the specified pixel.
183
+ o SDL::Surface#put -- Performs a fast blit from entire surface.
184
+ o SDL::Surface#copy_rect -- Copies a part of surface.
185
+ o SDL::Surface.auto_lock? -- Get whether surface is automatically locked
186
+ o SDL::Surface.auto_lock_on -- Switch on auto locking
187
+ o SDL::Surface.auto_lock_off -- Switch off auto locking.
188
+ o SDL::Surface.transform_draw -- Draw a rotated and scaled image.
189
+ o SDL::Surface.transform_blit -- Draw a rotated and scaled image with colorkey and blending
190
+ o SDL::Surface#draw_line -- Draw a line
191
+ o SDL::Surface#draw_rect -- Draws a rect
192
+ o SDL::Surface#draw_circle -- Draws a circle
193
+ o SDL::Surface#draw_ellipse -- Draws an ellipse.
194
+ o SDL::Surface#draw_bezier -- Draws a bezier curve
195
+ o SDL::Surface#transform_surface -- Creates an rotated an scaled surface
196
+ =end
197
+ end # class Screen
198
+ end # module SDL
199
+ end # module Frusdl
File without changes
@@ -0,0 +1,23 @@
1
+ module Frusdl
2
+ module SDL
3
+ class VideoInfo
4
+ attr_reader :pointer
5
+
6
+ include Frusdl::Wrap
7
+ include Frusdl::Low::SDL
8
+ extend Frusdl::Low::SDL
9
+
10
+ def initialize(ptr)
11
+ initialize_pointer(ptr, Frusdl::Low::SDL::SDL_VideoInfo)
12
+ end
13
+
14
+ def pixel_format
15
+ return Frusdl::SDL::PixelFormat.new(@struct[:vfmt])
16
+ end
17
+
18
+ struct_reader :video_mem
19
+ struct_reader :current_w
20
+ struct_reader :current_h
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,49 @@
1
+ module Frusdl
2
+ module Wrap
3
+ module ClassMethods
4
+ def make_struct_reader(name, sname = nil)
5
+ method_name = name.to_sym
6
+ struct_name = sname ? sname.to_sym : method_name
7
+ define_method(method_name) do
8
+ return @struct[struct_name]
9
+ end
10
+ end
11
+
12
+ def make_struct_writer(name, sname = nil)
13
+ method_name = "#{name}=".to_sym
14
+ struct_name = sname ? sname.to_sym : name.to_sym
15
+ define_method(method_name) do | value |
16
+ return @struct[struct_name] = value
17
+ end
18
+ end
19
+
20
+ def struct_accessor(name, sname = nil)
21
+ make_struct_reader name, sname
22
+ make_struct_writer name, sname
23
+ end
24
+
25
+ def struct_reader(name, sname = nil)
26
+ make_struct_reader name, sname
27
+ end
28
+ end
29
+
30
+ # From here it's instance methods
31
+
32
+ # Initializes the pointer and struct members
33
+ def initialize_pointer(ptr, klass)
34
+ @pointer = ptr
35
+ @struct = klass.new(ptr)
36
+ # define an accessor when this is called
37
+ unless self.respond_to? :pointer
38
+ self.klass.attr_reader(:pointer)
39
+ end
40
+ end
41
+
42
+ def self.included(base)
43
+ base.extend(Frusdl::Wrap::ClassMethods)
44
+ # Also extend with class methods
45
+ end
46
+
47
+
48
+ end
49
+ end
metadata ADDED
@@ -0,0 +1,79 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: frusdl
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Bjorn De Meyer
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+
12
+ date: 2008-12-05 00:00:00 +01:00
13
+ default_executable:
14
+ dependencies:
15
+ - !ruby/object:Gem::Dependency
16
+ name: ffi
17
+ type: :runtime
18
+ version_requirement:
19
+ version_requirements: !ruby/object:Gem::Requirement
20
+ requirements:
21
+ - - ">="
22
+ - !ruby/object:Gem::Version
23
+ version: 0.2.0
24
+ version:
25
+ description:
26
+ email: beoran@gmail.com
27
+ executables: []
28
+
29
+ extensions: []
30
+
31
+ extra_rdoc_files:
32
+ - README
33
+ files:
34
+ - lib/frusdl
35
+ - lib/frusdl/sdl
36
+ - lib/frusdl/sdl/pixelformat.rb
37
+ - lib/frusdl/sdl/surface.rb
38
+ - lib/frusdl/sdl/screen.rb
39
+ - lib/frusdl/sdl/videoinfo.rb
40
+ - lib/frusdl/wrap.rb
41
+ - lib/frusdl/low
42
+ - lib/frusdl/low/sge.rb
43
+ - lib/frusdl/low/ttf.rb
44
+ - lib/frusdl/low/gfx.rb
45
+ - lib/frusdl/low/mix.rb
46
+ - lib/frusdl/low/img.rb
47
+ - lib/frusdl/low/sdl.rb
48
+ - lib/frusdl/low.rb
49
+ - lib/frusdl/sdl.rb
50
+ - lib/frusdl.rb
51
+ - README
52
+ has_rdoc: true
53
+ homepage: http://frusdl.rubyforge.org
54
+ post_install_message:
55
+ rdoc_options: []
56
+
57
+ require_paths:
58
+ - lib
59
+ required_ruby_version: !ruby/object:Gem::Requirement
60
+ requirements:
61
+ - - ">="
62
+ - !ruby/object:Gem::Version
63
+ version: "0"
64
+ version:
65
+ required_rubygems_version: !ruby/object:Gem::Requirement
66
+ requirements:
67
+ - - ">="
68
+ - !ruby/object:Gem::Version
69
+ version: "0"
70
+ version:
71
+ requirements: []
72
+
73
+ rubyforge_project: frusdl
74
+ rubygems_version: 1.3.1
75
+ signing_key:
76
+ specification_version: 2
77
+ summary: FFI bindings to SDL, SDL_image, SDL_ttf, SDL_mixer, SGE and SFL_gfx
78
+ test_files: []
79
+