sdl2_ffi 0.0.2 → 0.0.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Guardfile +2 -2
- data/README.md +9 -1
- data/lib/sdl2.rb +150 -25
- data/lib/sdl2/color.rb +27 -4
- data/lib/sdl2/display.rb +3 -3
- data/lib/sdl2/gem_version.rb +1 -1
- data/lib/sdl2/image.rb +68 -0
- data/lib/sdl2/image/sdl_image_module.rb +8 -0
- data/lib/sdl2/init.rb +8 -8
- data/lib/sdl2/palette.rb +64 -6
- data/lib/sdl2/pixel_format.rb +105 -17
- data/lib/sdl2/pixels.rb +241 -18
- data/lib/sdl2/render.rb +2 -2
- data/lib/sdl2/surface.rb +137 -37
- data/lib/sdl2/ttf.rb +125 -0
- data/lib/sdl2/ttf/sdl_ttf_module.rb +5 -0
- data/lib/sdl2/version.rb +6 -0
- data/lib/sdl2/window.rb +1 -1
- data/test/fixtures/color_bars.jpg +0 -0
- data/test/test_helper.rb +2 -0
- data/test/unit/sdl2/test_hints.rb +3 -3
- data/test/unit/sdl2/test_image.rb +9 -0
- data/test/unit/sdl2/test_palette.rb +26 -0
- data/test/unit/sdl2/test_pixel_format.rb +36 -0
- data/test/unit/sdl2/test_surface.rb +43 -0
- data/test/unit/sdl2/test_ttf.rb +11 -0
- data/test/unit/sdl2/test_window.rb +29 -32
- data/test/unit/test_scratch.rb +19 -0
- data/test/unit/test_sdl2.rb +2 -2
- metadata +18 -2
data/lib/sdl2/palette.rb
CHANGED
@@ -1,15 +1,73 @@
|
|
1
1
|
require 'sdl2'
|
2
2
|
|
3
3
|
module SDL2
|
4
|
+
|
4
5
|
#SDL_pixels.h:261~267
|
5
|
-
class Palette <
|
6
|
+
class Palette < Struct
|
6
7
|
layout :ncolors, :int,
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
8
|
+
:colors, :pointer,
|
9
|
+
:version, :uint32,
|
10
|
+
:refcount, :int
|
11
|
+
|
12
|
+
def self.create(num_colors)
|
13
|
+
SDL2.alloc_palette!(num_colors)
|
14
|
+
end
|
15
|
+
|
11
16
|
def self.release(pointer)
|
12
17
|
SDL2.free_palette(pointer)
|
13
|
-
end
|
18
|
+
end
|
19
|
+
|
20
|
+
# \brief Set a range of colors in a palette
|
21
|
+
# \param colors: An array of colors to copy into the palette
|
22
|
+
# - Can be a FFI::Pointer, which is passed directly to the routine.
|
23
|
+
# - Can be a ruby array, an FFI::Pointer array will be created and values
|
24
|
+
# copied:
|
25
|
+
# - Elements that are arrays are converted to SDL_Color in the FFI::Pointer
|
26
|
+
# array.
|
27
|
+
# - Elements that are Color structs are copied into the array.
|
28
|
+
# \param firstcolor: The index of the first palette entry to modify.
|
29
|
+
# \param ncolors: The number of entries to modify
|
30
|
+
# - This defaults to the length of colors if colors is a Ruby Array
|
31
|
+
def set_colors(colors, firstcolor = 0, ncolors = nil)
|
32
|
+
|
33
|
+
if colors.kind_of? Array
|
34
|
+
|
35
|
+
ncolors = colors.count if ncolors.nil?
|
36
|
+
|
37
|
+
raise "(ncolors = #{ncolors} > colors.count #{colors.count}" if ncolors > colors.count
|
38
|
+
|
39
|
+
# We must build our on colors pointer:
|
40
|
+
colors_ptr = FFI::MemoryPointer.new(Color, ncolors)
|
41
|
+
|
42
|
+
colors.each_with_index() { |color, idx|
|
43
|
+
|
44
|
+
puts "color##{idx} = #{color.inspect}"
|
45
|
+
|
46
|
+
if idx < ncolors # Skip when the array count is more than ncolors
|
47
|
+
|
48
|
+
color_ptr = Color.new(colors_ptr[idx])
|
49
|
+
|
50
|
+
if color.kind_of? Array
|
51
|
+
color_ptr.set(*color)
|
52
|
+
elsif color.kind_of? Color
|
53
|
+
color_ptr.copy_from(color)
|
54
|
+
else
|
55
|
+
raise "Invalid Array Member"
|
56
|
+
end#if color.kind_of?
|
57
|
+
|
58
|
+
end
|
59
|
+
|
60
|
+
}#colors.each_with_index
|
61
|
+
|
62
|
+
colors = colors_ptr # Replace the passed in argument with our pointer
|
63
|
+
|
64
|
+
elsif colors.kind_of? FFI::Pointer
|
65
|
+
raise "ncolors must be specified" if ncolors.nil?
|
66
|
+
# Then we can just continue using it as is below.
|
67
|
+
end# if
|
68
|
+
|
69
|
+
SDL2.set_palette_colors(self, colors, firstcolor, ncolors)
|
70
|
+
|
71
|
+
end
|
14
72
|
end
|
15
73
|
end
|
data/lib/sdl2/pixel_format.rb
CHANGED
@@ -2,27 +2,115 @@ require 'sdl2'
|
|
2
2
|
require 'sdl2/palette'
|
3
3
|
|
4
4
|
module SDL2
|
5
|
-
|
5
|
+
|
6
|
+
# SDL_pixels.h:272~293:typdef struct SDL_PixelFormat
|
7
|
+
# \note Everything in the pixel format structure is read-only.
|
6
8
|
class PixelFormat < FFI::Struct
|
9
|
+
|
10
|
+
private :[] # see note
|
11
|
+
|
7
12
|
layout :format, :pixel_format,
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
13
|
+
:palette, Palette.by_ref,
|
14
|
+
:bits_per_pixel, :uint8,
|
15
|
+
:bytes_per_pixel, :uint8,
|
16
|
+
:padding, [:uint8, 2],
|
17
|
+
:r_mask, :uint32,
|
18
|
+
:g_mask, :uint32,
|
19
|
+
:b_mask, :uint32,
|
20
|
+
:a_mask, :uint32,
|
21
|
+
:r_loss, :uint8,
|
22
|
+
:g_loss, :uint8,
|
23
|
+
:b_loss, :uint8,
|
24
|
+
:a_loss, :uint8,
|
25
|
+
:refcount, :int,
|
26
|
+
:next, PixelFormat.by_ref
|
27
|
+
|
28
|
+
# Because the struct is read-only
|
29
|
+
[:format, :palette, :bytes_per_pixel, :bits_per_pixel,
|
30
|
+
:padding, :r_mask, :g_mask, :b_mask, :a_mask,
|
31
|
+
:r_loss, :g_loss, :b_loss, :refcount, :next].each do |field|
|
32
|
+
define_method field do
|
33
|
+
self[field]
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
# Get the human readable name of a pixel format
|
38
|
+
def self.get_name(pixel_format)
|
39
|
+
SDL2.get_pixel_format_name(pixel_format)
|
40
|
+
end
|
41
|
+
|
42
|
+
# Get the human readable name of this pixel format
|
43
|
+
def get_name
|
44
|
+
self.class.get_name self.format
|
45
|
+
end
|
46
|
+
|
47
|
+
# Convert enumerated pixel value format to bpp & RGBA mask values
|
48
|
+
# TODO: Review why this is needed? Why not just read the Struct fields?
|
49
|
+
def self.to_masks(format)
|
50
|
+
p = Hash.new(){UInt32Struct.new}
|
51
|
+
p[:bpp] = IntStruct.new
|
52
|
+
SDL2.pixel_format_enum_to_masks(format, p[:bpp], p[:Rmask], p[:Bmask],p[:Amask])
|
53
|
+
result = []
|
54
|
+
p.each_value{|s|result << s[:value]}
|
55
|
+
p.each(&:free)
|
56
|
+
return result
|
57
|
+
end
|
58
|
+
|
59
|
+
# TODO Review Redundancy: Basically return the masks you could read directly anyway?
|
60
|
+
def to_masks()
|
61
|
+
self.class.to_masks(self.format)
|
62
|
+
end
|
63
|
+
|
64
|
+
# SDL_AllocFormat, renamed 'create' to follow ruby paradigms.
|
65
|
+
# Create an PixelFormat from the Enumerated format value.
|
66
|
+
def self.create(pixel_format)
|
67
|
+
SDL2.alloc_format!(pixel_format)
|
68
|
+
end
|
69
|
+
|
70
|
+
# SDL_FreeFormat, renamed 'release' to follow FFI paradigms.
|
23
71
|
def self.release(pointer)
|
24
72
|
SDL2.free_format(pointer)
|
25
73
|
end
|
74
|
+
|
75
|
+
# Set the palette
|
76
|
+
def set_palette(palette)
|
77
|
+
SDL2.set_pixel_format_palette(self, palette)
|
78
|
+
end
|
79
|
+
|
80
|
+
alias_method :palette=, :set_palette
|
81
|
+
|
82
|
+
# Maps an RGB triple (array) to an opaque pixel value
|
83
|
+
def map_rgb(rgb)
|
84
|
+
r, g, b = *rgb
|
85
|
+
SDL2.map_rgb(self, r, g, b)
|
86
|
+
end
|
87
|
+
|
88
|
+
# Maps an RGBA quadruple (array) to a pixel value
|
89
|
+
def map_rgba(rgba)
|
90
|
+
r, g, b, a = *rgba
|
91
|
+
SDL2.map_rgba(self, r, g, b, a)
|
92
|
+
end
|
93
|
+
|
94
|
+
# Get the RGB components (array) from a pixel value
|
95
|
+
def get_rgb(pixel)
|
96
|
+
ptr = Hash.new(){UInt8Struct.new}
|
97
|
+
SDL2.get_rgb(pixel, self, ptr[:r], ptr[:g], ptr[:b])
|
98
|
+
result = []
|
99
|
+
ptr.each_value{|s|result << s[:value]}
|
100
|
+
ptr.each(&:free)
|
101
|
+
return result
|
102
|
+
end
|
103
|
+
|
104
|
+
# Get the RGBA components (array) from a pixel value
|
105
|
+
def get_rgba(pixel)
|
106
|
+
ptr = Hash.new(){UInt8Struct.new}
|
107
|
+
SDL2.get_rgba(pixel, self, ptr[:r], ptr[:g], ptr[:b], ptr[:a])
|
108
|
+
result = []
|
109
|
+
ptr.each_value{|s|result << s[:value]}
|
110
|
+
ptr.each(&:free)
|
111
|
+
return result
|
112
|
+
end
|
113
|
+
|
26
114
|
end
|
27
|
-
|
115
|
+
|
28
116
|
end
|
data/lib/sdl2/pixels.rb
CHANGED
@@ -1,35 +1,258 @@
|
|
1
|
-
require 'sdl2'
|
1
|
+
require 'sdl2/error'
|
2
2
|
require 'sdl2/color'
|
3
3
|
require 'sdl2/pixel_format'
|
4
|
+
require 'yinum'
|
4
5
|
|
6
|
+
# SDL_pixels.h API
|
5
7
|
module SDL2
|
6
|
-
|
7
8
|
ALPHA_OPAQUE = 255
|
8
9
|
ALPHA_TRANSPARENT = 0
|
9
|
-
|
10
|
-
|
11
|
-
:
|
12
|
-
:
|
13
|
-
:
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
10
|
+
|
11
|
+
PIXELTYPE = Enum.new :PIXELTYPE, {
|
12
|
+
UNKNOWN: 0,
|
13
|
+
INDEX1: 1,
|
14
|
+
INDEX4: 2,
|
15
|
+
INDEX8: 3,
|
16
|
+
PACKED8: 4,
|
17
|
+
PACKED16: 5,
|
18
|
+
PACKED32: 6,
|
19
|
+
ARRAYU8: 7,
|
20
|
+
ARRAYU16: 8,
|
21
|
+
ARRAYU32: 9,
|
22
|
+
ARRAYF16: 10,
|
23
|
+
ARRAYF32: 11
|
24
|
+
}
|
25
|
+
enum :pixeltype, PIXELTYPE.by_name
|
26
|
+
|
27
|
+
BITMAPORDER = Enum.new :BITMAPORDER, {
|
28
|
+
NONE: 0,
|
29
|
+
_4321: 1,
|
30
|
+
_1234: 2
|
31
|
+
}
|
32
|
+
enum :bitmaporder, BITMAPORDER.by_name
|
33
|
+
|
34
|
+
PACKEDORDER = Enum.new :PACKEDORDER, {
|
35
|
+
NONE: 0,
|
36
|
+
XRGB: 1,
|
37
|
+
RGBX: 2,
|
38
|
+
ARGB: 3,
|
39
|
+
RGBA: 4,
|
40
|
+
XBGR: 5,
|
41
|
+
BGRX: 6,
|
42
|
+
ABGR: 7,
|
43
|
+
BGRA: 8
|
44
|
+
}
|
45
|
+
enum :packedorder, PACKEDORDER.by_name
|
46
|
+
|
47
|
+
ARRAYORDER = Enum.new :ARRAYORDER, {
|
48
|
+
NONE: 0,
|
49
|
+
RGB: 1,
|
50
|
+
RGBA: 2,
|
51
|
+
ARGB: 3,
|
52
|
+
BGR: 4,
|
53
|
+
BGRA: 5,
|
54
|
+
ABGR: 6
|
55
|
+
}
|
56
|
+
enum :arrayorder, ARRAYORDER.by_name
|
57
|
+
|
58
|
+
PACKEDLAYOUT = Enum.new :PACKEDLAYOUT, {
|
59
|
+
NONE: 0,
|
60
|
+
_332: 1,
|
61
|
+
_4444: 2,
|
62
|
+
_1555: 3,
|
63
|
+
_5551: 4,
|
64
|
+
_565: 5,
|
65
|
+
_8888: 6,
|
66
|
+
_2101010: 7,
|
67
|
+
_1010102: 8
|
68
|
+
}
|
69
|
+
enum :packedlayout, PACKEDLAYOUT.by_name
|
70
|
+
|
71
|
+
#MACRO: SDL_DEFINE_PIXELFOURCC(A, B, C, D) SDL_FOURCC(A, B, C, D)
|
72
|
+
def self.define_pixelfourcc(a,b,c,d); SDL2.fourcc(a,b,c,d); end
|
73
|
+
|
74
|
+
#MACRO: SDL_DEFINE_PIXELFORMAT(type, order, layout, bits, bytes) \
|
75
|
+
# ((1 << 28) | ((type) << 24) | ((order) << 20) | ((layout) << 16) | \
|
76
|
+
# ((bits) << 8) | ((bytes) << 0))
|
77
|
+
def self.define_pixelformat(type, order, layout, bits, bytes)
|
78
|
+
((1 << 28) | ((type) << 24) | ((order) << 20) | ((layout) << 16) | ((bits) << 8) | ((bytes) << 0))
|
79
|
+
end
|
80
|
+
|
81
|
+
#MACRO: SDL_PIXELFLAG(X) (((X) >> 28) & 0x0F)
|
82
|
+
def self.pixelflag(x); (((x) >> 28) & 0x0F); end
|
83
|
+
|
84
|
+
#MACRO: SDL_PIXELTYPE(X) (((X) >> 24) & 0x0F)
|
85
|
+
def self.pixeltype(x); (((x) >> 24) & 0x0F); end
|
86
|
+
|
87
|
+
#MACRO: SDL_PIXELORDER(X) (((X) >> 20) & 0x0F)
|
88
|
+
def self.pixelorder(x); (((x) >> 20) & 0x0F); end
|
89
|
+
|
90
|
+
#MACRO: SDL_PIXELLAYOUT(X) (((X) >> 16) & 0x0F)
|
91
|
+
def self.pixellayout(x); (((x) >> 16) & 0x0F); end
|
92
|
+
|
93
|
+
#MACRO: SDL_BITSPERPIXEL(X) (((X) >> 8) & 0xFF)
|
94
|
+
def self.bitsperpixel(x); (((x) >> 8) & 0xFF); end
|
95
|
+
|
96
|
+
#MACRO: SDL_BYTESPERPIXEL(X) \
|
97
|
+
# (SDL_ISPIXELFORMAT_FOURCC(X) ? \
|
98
|
+
# ((((X) == SDL_PIXELFORMAT_YUY2) || \
|
99
|
+
# ((X) == SDL_PIXELFORMAT_UYVY) || \
|
100
|
+
# ((X) == SDL_PIXELFORMAT_YVYU)) ? 2 : 1) : (((X) >> 0) & 0xFF))
|
101
|
+
def self.bytesperpixel(x)
|
102
|
+
(ispixelformat_fourcc(x) ?
|
103
|
+
((( x == PIXELFORMAT.YUV2 ) ||
|
104
|
+
( x == PIXELFORMAT.UYVY ) ||
|
105
|
+
( x == PIXELFORMAT.YVYU )) ? 2 : 1) : ((x >> 0) & 0xFF))
|
106
|
+
end
|
107
|
+
|
108
|
+
#MACRO: SDL_ISPIXELFORMAT_INDEXED(format) \
|
109
|
+
#(!SDL_ISPIXELFORMAT_FOURCC(format) && \
|
110
|
+
#((SDL_PIXELTYPE(format) == SDL_PIXELTYPE_INDEX1) || \
|
111
|
+
#(SDL_PIXELTYPE(format) == SDL_PIXELTYPE_INDEX4) || \
|
112
|
+
#(SDL_PIXELTYPE(format) == SDL_PIXELTYPE_INDEX8)))
|
113
|
+
def self.ispixelformat_indexed(format)
|
114
|
+
(!ispixelformat_fourcc(format) &&
|
115
|
+
((pixeltype(format) == PIXELTYPE.INDEX1) ||
|
116
|
+
(pixeltype(format) == PIXELTYPE.INDEX4) ||
|
117
|
+
(pixeltype(format) == PIXELTYPE.INDEX8)))
|
118
|
+
end
|
119
|
+
|
120
|
+
#MACRO: SDL_ISPIXELFORMAT_ALPHA(format) \
|
121
|
+
#(!SDL_ISPIXELFORMAT_FOURCC(format) && \
|
122
|
+
#((SDL_PIXELORDER(format) == SDL_PACKEDORDER_ARGB) || \
|
123
|
+
#(SDL_PIXELORDER(format) == SDL_PACKEDORDER_RGBA) || \
|
124
|
+
#(SDL_PIXELORDER(format) == SDL_PACKEDORDER_ABGR) || \
|
125
|
+
#(SDL_PIXELORDER(format) == SDL_PACKEDORDER_BGRA)))
|
126
|
+
def self.ispixelformat_alpha(format)
|
127
|
+
(!pixelformat_fourcc(format) &&
|
128
|
+
((pixelorder(format) == PACKEDORDER.ARGB) ||
|
129
|
+
(pixelorder(format) == PACKEDORDER.RGBA) ||
|
130
|
+
(pixelorder(format) == PACKEDORDER.ABGR) ||
|
131
|
+
(pixelorder(format) == PACKEDORDER.BGRA)))
|
132
|
+
end
|
133
|
+
|
134
|
+
#MACRO: SDL_ISPIXELFORMAT_FOURCC(format) \
|
135
|
+
#((format) && (SDL_PIXELFLAG(format) != 1))
|
136
|
+
def self.ispixelformat_fourcc(format)
|
137
|
+
((format) && (pixelflag(format) != 1))
|
138
|
+
end
|
139
|
+
|
140
|
+
PIXELFORMAT = Enum.new(:PIXELFORMAT, {
|
141
|
+
UNKNOWN: 0,
|
142
|
+
INDEX1LSB:
|
143
|
+
define_pixelformat(PIXELTYPE.INDEX1, BITMAPORDER._4321, 0,
|
144
|
+
1, 0),
|
145
|
+
INDEX1MSB:
|
146
|
+
define_pixelformat(PIXELTYPE.INDEX1, BITMAPORDER._1234, 0,
|
147
|
+
1, 0),
|
148
|
+
INDEX4LSB:
|
149
|
+
define_pixelformat(PIXELTYPE.INDEX4, BITMAPORDER._4321, 0,
|
150
|
+
4, 0),
|
151
|
+
INDEX4MSB:
|
152
|
+
define_pixelformat(PIXELTYPE.INDEX4, BITMAPORDER._1234, 0,
|
153
|
+
4, 0),
|
154
|
+
INDEX8:
|
155
|
+
define_pixelformat(PIXELTYPE.INDEX8, 0, 0, 8, 1),
|
156
|
+
RGB332:
|
157
|
+
define_pixelformat(PIXELTYPE.PACKED8, PACKEDORDER.XRGB,
|
158
|
+
PACKEDLAYOUT._332, 8, 1),
|
159
|
+
RGB444:
|
160
|
+
define_pixelformat(PIXELTYPE.PACKED16, PACKEDORDER.XRGB,
|
161
|
+
PACKEDLAYOUT._4444, 12, 2),
|
162
|
+
RGB555:
|
163
|
+
define_pixelformat(PIXELTYPE.PACKED16, PACKEDORDER.XRGB,
|
164
|
+
PACKEDLAYOUT._1555, 15, 2),
|
165
|
+
BGR555:
|
166
|
+
define_pixelformat(PIXELTYPE.PACKED16, PACKEDORDER.XBGR,
|
167
|
+
PACKEDLAYOUT._1555, 15, 2),
|
168
|
+
ARGB4444:
|
169
|
+
define_pixelformat(PIXELTYPE.PACKED16, PACKEDORDER.ARGB,
|
170
|
+
PACKEDLAYOUT._4444, 16, 2),
|
171
|
+
RGBA4444:
|
172
|
+
define_pixelformat(PIXELTYPE.PACKED16, PACKEDORDER.RGBA,
|
173
|
+
PACKEDLAYOUT._4444, 16, 2),
|
174
|
+
ABGR4444:
|
175
|
+
define_pixelformat(PIXELTYPE.PACKED16, PACKEDORDER.ABGR,
|
176
|
+
PACKEDLAYOUT._4444, 16, 2),
|
177
|
+
BGRA4444:
|
178
|
+
define_pixelformat(PIXELTYPE.PACKED16, PACKEDORDER.BGRA,
|
179
|
+
PACKEDLAYOUT._4444, 16, 2),
|
180
|
+
ARGB1555:
|
181
|
+
define_pixelformat(PIXELTYPE.PACKED16, PACKEDORDER.ARGB,
|
182
|
+
PACKEDLAYOUT._1555, 16, 2),
|
183
|
+
RGBA5551:
|
184
|
+
define_pixelformat(PIXELTYPE.PACKED16, PACKEDORDER.RGBA,
|
185
|
+
PACKEDLAYOUT._5551, 16, 2),
|
186
|
+
ABGR1555:
|
187
|
+
define_pixelformat(PIXELTYPE.PACKED16, PACKEDORDER.ABGR,
|
188
|
+
PACKEDLAYOUT._1555, 16, 2),
|
189
|
+
BGRA5551:
|
190
|
+
define_pixelformat(PIXELTYPE.PACKED16, PACKEDORDER.BGRA,
|
191
|
+
PACKEDLAYOUT._5551, 16, 2),
|
192
|
+
RGB565:
|
193
|
+
define_pixelformat(PIXELTYPE.PACKED16, PACKEDORDER.XRGB,
|
194
|
+
PACKEDLAYOUT._565, 16, 2),
|
195
|
+
BGR565:
|
196
|
+
define_pixelformat(PIXELTYPE.PACKED16, PACKEDORDER.XBGR,
|
197
|
+
PACKEDLAYOUT._565, 16, 2),
|
198
|
+
RGB24:
|
199
|
+
define_pixelformat(PIXELTYPE.ARRAYU8, ARRAYORDER.RGB, 0,
|
200
|
+
24, 3),
|
201
|
+
BGR24:
|
202
|
+
define_pixelformat(PIXELTYPE.ARRAYU8, ARRAYORDER.BGR, 0,
|
203
|
+
24, 3),
|
204
|
+
RGB888:
|
205
|
+
define_pixelformat(PIXELTYPE.PACKED32, PACKEDORDER.XRGB,
|
206
|
+
PACKEDLAYOUT._8888, 24, 4),
|
207
|
+
RGBX8888:
|
208
|
+
define_pixelformat(PIXELTYPE.PACKED32, PACKEDORDER.RGBX,
|
209
|
+
PACKEDLAYOUT._8888, 24, 4),
|
210
|
+
BGR888:
|
211
|
+
define_pixelformat(PIXELTYPE.PACKED32, PACKEDORDER.XBGR,
|
212
|
+
PACKEDLAYOUT._8888, 24, 4),
|
213
|
+
BGRX8888:
|
214
|
+
define_pixelformat(PIXELTYPE.PACKED32, PACKEDORDER.BGRX,
|
215
|
+
PACKEDLAYOUT._8888, 24, 4),
|
216
|
+
ARGB8888:
|
217
|
+
define_pixelformat(PIXELTYPE.PACKED32, PACKEDORDER.ARGB,
|
218
|
+
PACKEDLAYOUT._8888, 32, 4),
|
219
|
+
RGBA8888:
|
220
|
+
define_pixelformat(PIXELTYPE.PACKED32, PACKEDORDER.RGBA,
|
221
|
+
PACKEDLAYOUT._8888, 32, 4),
|
222
|
+
ABGR8888:
|
223
|
+
define_pixelformat(PIXELTYPE.PACKED32, PACKEDORDER.ABGR,
|
224
|
+
PACKEDLAYOUT._8888, 32, 4),
|
225
|
+
BGRA8888:
|
226
|
+
define_pixelformat(PIXELTYPE.PACKED32, PACKEDORDER.BGRA,
|
227
|
+
PACKEDLAYOUT._8888, 32, 4),
|
228
|
+
ARGB2101010:
|
229
|
+
define_pixelformat(PIXELTYPE.PACKED32, PACKEDORDER.ARGB,
|
230
|
+
PACKEDLAYOUT._2101010, 32, 4),
|
231
|
+
|
232
|
+
YV12:
|
233
|
+
define_pixelfourcc('Y', 'V', '1', '2'),
|
234
|
+
IYUV:
|
235
|
+
define_pixelfourcc('I', 'Y', 'U', 'V'),
|
236
|
+
YUY2:
|
237
|
+
define_pixelfourcc('Y', 'U', 'Y', '2'),
|
238
|
+
UYVY:
|
239
|
+
define_pixelfourcc('U', 'Y', 'V', 'Y'),
|
240
|
+
YVYU:
|
241
|
+
define_pixelfourcc('Y', 'V', 'Y', 'U')
|
242
|
+
})
|
243
|
+
|
20
244
|
api :SDL_GetPixelFormatName, [:pixel_format], :string
|
21
245
|
api :SDL_PixelFormatEnumToMasks, [:pixel_format, IntStruct.by_ref, UInt32Struct.by_ref, UInt32Struct.by_ref,UInt32Struct.by_ref,UInt32Struct.by_ref,], :bool
|
22
246
|
api :SDL_MasksToPixelFormatEnum, [:int, :uint32, :uint32, :uint32, :uint32], :pixel_format
|
23
|
-
api :SDL_AllocFormat, [:pixel_format], PixelFormat.auto_ptr
|
247
|
+
api :SDL_AllocFormat, [:pixel_format], PixelFormat.auto_ptr, {error: true, filter: TRUE_WHEN_NOT_NULL}
|
24
248
|
api :SDL_FreeFormat, [PixelFormat.by_ref], :void
|
25
|
-
api :SDL_AllocPalette, [:count], Palette.auto_ptr
|
249
|
+
api :SDL_AllocPalette, [:count], Palette.auto_ptr, {error: true, filter: TRUE_WHEN_NOT_NULL}
|
26
250
|
api :SDL_SetPixelFormatPalette, [PixelFormat.by_ref, Palette.by_ref], :int
|
27
|
-
api :SDL_SetPaletteColors, [Palette.by_ref,
|
251
|
+
api :SDL_SetPaletteColors, [Palette.by_ref, :pointer, :int, :count], :int
|
28
252
|
api :SDL_FreePalette, [Palette.by_ref], :void
|
29
253
|
api :SDL_MapRGB, [PixelFormat.by_ref, :uint8, :uint8, :uint8], :uint32
|
30
254
|
api :SDL_MapRGBA, [PixelFormat.by_ref, :uint8, :uint8, :uint8, :uint8], :uint32
|
31
255
|
api :SDL_GetRGB, [:uint32, PixelFormat.by_ref, UInt8Struct.by_ref,UInt8Struct.by_ref,UInt8Struct.by_ref], :void
|
32
256
|
api :SDL_GetRGBA, [:uint32, PixelFormat.by_ref, UInt8Struct.by_ref,UInt8Struct.by_ref,UInt8Struct.by_ref,UInt8Struct.by_ref], :void
|
33
|
-
|
34
|
-
|
257
|
+
|
35
258
|
end
|