sdl2_ffi 0.0.2 → 0.0.3
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.
- 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
|