-- ----------------------------------------------------------------- -- -- AdaSDL_Framebuffer -- -- Copyright (C) 2001 A.M.F.Vargas -- -- Antonio M. F. Vargas -- -- Ponta Delgada - Azores - Portugal -- -- http://www.adapower.net/~avargas -- -- E-mail: avargas@adapower.net -- -- ----------------------------------------------------------------- -- -- -- -- This library is free software; you can redistribute it and/or -- -- modify it under the terms of the GNU General Public -- -- License as published by the Free Software Foundation; either -- -- version 2 of the License, or (at your option) any later version. -- -- -- -- This library is distributed in the hope that it will be useful, -- -- but WITHOUT ANY WARRANTY; without even the implied warranty of -- -- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -- -- General Public License for more details. -- -- -- -- You should have received a copy of the GNU General Public -- -- License along with this library; if not, write to the -- -- Free Software Foundation, Inc., 59 Temple Place - Suite 330, -- -- Boston, MA 02111-1307, USA. -- -- -- -- As a special exception, if other files instantiate generics from -- -- this unit, or you link this unit with other files to produce an -- -- executable, this unit does not by itself cause the resulting -- -- executable to be covered by the GNU General Public License. This -- -- exception does not however invalidate any other reasons why the -- -- executable file might be covered by the GNU Public License. -- -- ----------------------------------------------------------------- -- -- ########################################################################## -- ### These are new extensions to the SDL API in order to improve the -- ### Ada code and to isolate the pointer arithmetic inside the library. -- ########################################################################## with System.Address_To_Access_Conversions; with Interfaces.C.Pointers; with SDL.Types; use SDL.Types; with UintN_PtrOps; with SDL.Video; use SDL.Video; with SDL_Framebuffer_Generics; use SDL_Framebuffer_Generics; package SDL_Framebuffer is package C renames Interfaces.C; procedure Copy_Colors ( Source : Surface_ptr; Dest : Color_PtrOps.Pointer; Num_Colors : Natural); pragma Inline (Copy_Colors); function Copy_Colors ( Surface : Surface_ptr; Num_Colors : Natural) return Colors_Array; pragma Inline (Copy_Colors); -- =========================================================== subtype Framebuffer_8bPointer is Uint8_Ptrs.Object_Pointer; subtype Framebuffer_16bPointer is Uint16_Ptrs.Object_Pointer; subtype Framebuffer_32bPointer is Uint32_Ptrs.Object_Pointer; -- =========================================================== function Go_XY_Unchecked is new Go_XY_Unchecked_Generic (Uint8, Uint8_Ptrs, Uint8_Array, Uint8_PtrOps); function Go_XY_8Unchecked is new Go_XY_Unchecked_Generic (Uint8, Uint8_Ptrs, Uint8_Array, Uint8_PtrOps); function Go_XY_Unchecked is new Go_XY_Unchecked_Generic (Uint16, Uint16_Ptrs, Uint16_Array, Uint16_PtrOps); function Go_XY_16Unchecked is new Go_XY_Unchecked_Generic (Uint16, Uint16_Ptrs, Uint16_Array, Uint16_PtrOps); function Go_XY_Unchecked is new Go_XY_Unchecked_Generic (Uint32, Uint32_Ptrs, Uint32_Array, Uint32_PtrOps); function Go_XY_32Unchecked is new Go_XY_Unchecked_Generic (Uint32, Uint32_Ptrs, Uint32_Array, Uint32_PtrOps); function Go_XY_24b_Unchecked ( Surface : Vd.Surface_ptr; X : Natural; Y : Natural) return Framebuffer_8bPointer; pragma Inline (Go_XY_24b_Unchecked); procedure Set_24b_Value_Unchecked ( Surface : Vd.Surface_ptr; Location : Framebuffer_8bPointer; Value : Uint32); pragma Inline (Set_24b_Value_Unchecked); -- =================================================================== function Get_Framebuffer is new Get_Framebuffer_Generic (Uint8, Uint8_Ptrs); function Get_Framebuffer is new Get_Framebuffer_Generic (Uint16, Uint16_Ptrs); function Get_Framebuffer is new Get_Framebuffer_Generic (Uint32, Uint32_Ptrs); -- =================================================================== function Goto_Line_Unchecked is new Goto_Line_Unchecked_Generic (Uint8, Uint8_Ptrs, Uint8_Array, Uint8_PtrOps); function Goto_Line_Unchecked is new Goto_Line_Unchecked_Generic (Uint16, Uint16_Ptrs, Uint16_Array, Uint16_PtrOps); function Goto_Line_Unchecked is new Goto_Line_Unchecked_Generic (Uint32, Uint32_Ptrs, Uint32_Array, Uint32_PtrOps); -- =========================================================== function Goto_Line is new Goto_Line_Generic (Uint8, Uint8_Ptrs, Uint8_Array, Uint8_PtrOps); function Goto_Line is new Goto_Line_Generic (Uint16, Uint16_Ptrs, Uint16_Array, Uint16_PtrOps); function Goto_Line is new Goto_Line_Generic (Uint32, Uint32_Ptrs, Uint32_Array, Uint32_PtrOps); -- =========================================================== function Goto_Line_End_Unchecked is new Goto_Line_End_Unchecked_Generic ( Uint8, Uint8_Ptrs, Uint8_Array, Uint8_PtrOps); function Goto_Line_End_Unchecked is new Goto_Line_End_Unchecked_Generic ( Uint16, Uint16_Ptrs, Uint16_Array, Uint16_PtrOps); function Goto_Line_End_Unchecked is new Goto_Line_End_Unchecked_Generic ( Uint32, Uint32_Ptrs, Uint32_Array, Uint32_PtrOps); -- =========================================================== function Goto_Line_End is new Goto_Line_End_Generic ( Uint8, Uint8_Ptrs, Uint8_Array, Uint8_PtrOps); function Goto_Line_End is new Goto_Line_End_Generic ( Uint16, Uint16_Ptrs, Uint16_Array, Uint16_PtrOps); function Goto_Line_End is new Goto_Line_End_Generic ( Uint32, Uint32_Ptrs, Uint32_Array, Uint32_PtrOps); -- =========================================================== function Next_Line_Unchecked is new Next_Line_Unchecked_Generic (Uint8, Uint8_Ptrs, Uint8_Array, Uint8_PtrOps); function Next_Line_Unchecked is new Next_Line_Unchecked_Generic (Uint16, Uint16_Ptrs, Uint16_Array, Uint16_PtrOps); function Next_Line_Unchecked is new Next_Line_Unchecked_Generic (Uint32, Uint32_Ptrs, Uint32_Array, Uint32_PtrOps); -- =========================================================== function Prev_Line_Unchecked is new Prev_Line_Unchecked_Generic (Uint8, Uint8_Ptrs, Uint8_Array, Uint8_PtrOps); function Prev_Line_Unchecked is new Prev_Line_Unchecked_Generic (Uint16, Uint16_Ptrs, Uint16_Array, Uint16_PtrOps); function Prev_Line_Unchecked is new Prev_Line_Unchecked_Generic (Uint32, Uint32_Ptrs, Uint32_Array, Uint32_PtrOps); -- =========================================================== function Go_Right_Unchecked is new Go_Right_Unchecked_Generic (Uint8, Uint8_Ptrs, Uint8_Array, Uint8_PtrOps); function Go_Right_Unchecked is new Go_Right_Unchecked_Generic (Uint16, Uint16_Ptrs, Uint16_Array, Uint16_PtrOps); function Go_Right_Unchecked is new Go_Right_Unchecked_Generic (Uint32, Uint32_Ptrs, Uint32_Array, Uint32_PtrOps); -- =========================================================== function Go_Left_Unchecked is new Go_Left_Unchecked_Generic (Uint8, Uint8_Ptrs, Uint8_Array, Uint8_PtrOps); function Go_Left_Unchecked is new Go_Left_Unchecked_Generic (Uint16, Uint16_Ptrs, Uint16_Array, Uint16_PtrOps); function Go_Left_Unchecked is new Go_Left_Unchecked_Generic (Uint32, Uint32_Ptrs, Uint32_Array, Uint32_PtrOps); -- =========================================================== function Go_Up_Unchecked is new Go_Up_Unchecked_Generic (Uint8, Uint8_Ptrs, Uint8_Array, Uint8_PtrOps); function Go_Up_Unchecked is new Go_Up_Unchecked_Generic (Uint16, Uint16_Ptrs, Uint16_Array, Uint16_PtrOps); function Go_Up_Unchecked is new Go_Up_Unchecked_Generic (Uint32, Uint32_Ptrs, Uint32_Array, Uint32_PtrOps); -- =================================================================== function Go_Down_Unchecked is new Go_Down_Unchecked_Generic (Uint8, Uint8_Ptrs, Uint8_Array, Uint8_PtrOps); function Go_Down_Unchecked is new Go_Down_Unchecked_Generic (Uint16, Uint16_Ptrs, Uint16_Array, Uint16_PtrOps); function Go_Down_Unchecked is new Go_Down_Unchecked_Generic (Uint32, Uint32_Ptrs, Uint32_Array, Uint32_PtrOps); -- =================================================================== function Pitch_Gap (Surface : Surface_ptr) return Uint16; pragma Inline (Pitch_Gap); -- =================================================================== procedure Paint_Line_8b is new Paint_Line_Generic (Uint8, Uint8_Ptrs); procedure Paint_Line_16b is new Paint_Line_Generic (Uint16, Uint16_Ptrs); procedure Paint_Line_32b is new Paint_Line_Generic (Uint32, Uint32_Ptrs); -- =================================================================== procedure Paint_Line_Unchecked is new Paint_Line_Unchecked_Generic (Uint8, Uint8_Ptrs); procedure Paint_Line_Unchecked is new Paint_Line_Unchecked_Generic (Uint16, Uint16_Ptrs); procedure Paint_Line_Unchecked is new Paint_Line_Unchecked_Generic (Uint32, Uint32_Ptrs); -- =================================================================== function MapRGB is new MapRGB_Generic (Uint8); function MapRGB is new MapRGB_Generic (Uint16); function MapRGB is new MapRGB_Generic (Uint32); -- =================================================================== function Get_Palette_Red ( Surface : Surface_ptr; Color_Index : Uint8) return Uint8; function Get_Palette_Green ( Surface : Surface_ptr; Color_Index : Uint8) return Uint8; function Get_Palette_Blue ( Surface : Surface_ptr; Color_Index : Uint8) return Uint8; -- ####################################################################### end SDL_Framebuffer;