--------------------------------------------------------------------------------------------------------------------
-- This source code is subject to the Zlib license, see the LICENCE file in the root of this directory.
--------------------------------------------------------------------------------------------------------------------
-- SDL.Video.Pixels
--
-- Access to pixel data.
--------------------------------------------------------------------------------------------------------------------
with Interfaces;
with Interfaces.C;
with Interfaces.C.Pointers;
with SDL.Video.Palettes;
package SDL.Video.Pixels is
pragma Preelaborate;
package C renames Interfaces.C;
-- Define pixel data access. Each pixel can be of any pixel format type.
-- A bitmap returned, say from Textures.Lock is an array of pixels.
Pixels_Error : exception;
-- These give access to the pitch data returned by locking a texture.
type Pitches is new C.int with
Size => 32,
Convention => C;
-- ARGB8888 pixels.
-- These give access to a texture's/surface's (TODO??) pixel data in the above format.
type ARGB_8888 is
record
Alpha : SDL.Video.Palettes.Colour_Component;
Red : SDL.Video.Palettes.Colour_Component;
Green : SDL.Video.Palettes.Colour_Component;
Blue : SDL.Video.Palettes.Colour_Component;
end record with
Size => 32,
Convention => C;
for ARGB_8888 use
record
Blue at 0 range 0 .. 7;
Green at 0 range 8 .. 15;
Red at 0 range 16 .. 23;
Alpha at 0 range 24 .. 31;
end record;
type ARGB_8888_Array is array (SDL.Dimension range <>) of aliased ARGB_8888;
package ARGB_8888_Access is new Interfaces.C.Pointers
(Index => SDL.Dimension,
Element => ARGB_8888,
Element_Array => ARGB_8888_Array,
Default_Terminator => ARGB_8888'(others => SDL.Video.Palettes.Colour_Component'First));
generic
type Index is (<>);
type Element is private;
type Element_Array_1D is array (Index range <>) of aliased Element;
pragma Warnings (Off, """Element_Array_2D"" is not referenced"); -- This attribute is deprecated
type Element_Array_2D is array (Index range <>, Index range <>) of aliased Element;
pragma Warnings (On, """Element_Array_2D"" is not referenced"); -- This attribute is deprecated
Default_Terminator : Element;
package Texture_Data is
package Texture_Data_1D is new Interfaces.C.Pointers (Index => Index,
Element => Element,
Element_Array => Element_Array_1D,
Default_Terminator => Default_Terminator);
subtype Pointer is Texture_Data_1D.Pointer;
end Texture_Data;
end SDL.Video.Pixels;