-- ----------------------------------------------------------------- -- -- AdaSDL_image -- -- Binding to SDL image lib -- -- Copyright (C) 2001 A.M.F.Vargas -- -- Antonio M. F. Vargas -- -- Ponta Delgada - Azores - Portugal -- -- 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. -- -- ----------------------------------------------------------------- -- -- **************************************************************** -- -- This is an Ada binding to SDL_image lib from Sam Lantinga at -- -- www.libsld.org -- -- **************************************************************** -- -- In order to help the Ada programmer, the comments in this file -- -- are, in great extent, a direct copy of the original text in the -- -- SDL mixer header files. -- -- **************************************************************** -- -- A simple library to load images of various formats as SDL surfaces with Interfaces.C.Strings; with SDL.RWops; use SDL.RWops; with SDL.Video; use SDL.Video; with SDL.Error; package SDL_Image is package V renames SDL.Video; package RW renames SDL.RWops; package C renames Interfaces.C; package CS renames Interfaces.C.Strings; -- Load an image from an SDL data source. -- The 'type' may be one of: "BMP", "GIF", "PNG", etc. -- If the image format supports a transparent pixel, SDL will set the -- colorkey for the surface. You can enable RLE acceleration on the -- surface afterwards by calling: -- SetColorKey (image, SDL_RLEACCEL, image.format.colorkey); function LoadTyped_RW (src : RW.RWops_ptr; freesrc : C.int; the_type : CS.chars_ptr) return V.Surface_ptr; pragma Import (C, LoadTyped_RW, "IMG_LoadTyped_RW"); function LoadTyped_RW (src : RW.RWops_ptr; freesrc : C.int; the_type : String) return V.Surface_ptr; pragma Inline (LoadTyped_RW); -- Convenience functions function Load (file : CS.chars_ptr) return V.Surface_ptr; pragma Import (C, Load, "IMG_Load"); function Load (file : String) return V.Surface_ptr; pragma Inline (Load); function Load_RW (src : RW.RWops_ptr; freesrc : C.int) return V.Surface_ptr; pragma Import (C, Load_RW, "IMG_Load_RW"); -- Invert the alpha of a surface for use with OpenGL -- This function is now a no-op, and only provided for backwards compatibility. function InvertAlpha (on : C.int) return C.int; pragma Import (C, InvertAlpha, "IMG_InvertAlpha"); -- Functions to detect a file type, given a seekable source */ function isBMP (src : RW.RWops_ptr) return C.int; pragma Import (C, isBMP, "IMG_isBMP"); function isPPM (src : RW.RWops_ptr) return C.int; pragma Import (C, isPPM, "IMG_isPPM"); function isPCX (src : RW.RWops_ptr) return C.int; pragma Import (C, isPCX, "IMG_isPCX"); function isGIF (src : RW.RWops_ptr) return C.int; pragma Import (C, isGIF, "IMG_isGIF"); function isJPG (src : RW.RWops_ptr) return C.int; pragma Import (C, isJPG, "IMG_isJPG"); function isTIF (src : RW.RWops_ptr) return C.int; pragma Import (C, isTIF, "IMG_isTIF"); function isPNG (src : RW.RWops_ptr) return C.int; pragma Import (C, isPNG, "IMG_isPNG"); -- Individual loading functions function LoadBMP_RW (src : RW.RWops) return V.Surface_ptr; pragma Import (C, LoadBMP_RW, "IMG_LoadBMP_RW"); function LoadPPM_RW (src : RW.RWops) return V.Surface_ptr; pragma Import (C, LoadPPM_RW, "IMG_LoadPPM_RW"); function LoadPCX_RW (src : RW.RWops) return V.Surface_ptr; pragma Import (C, LoadPCX_RW, "IMG_LoadPCX_RW"); function LoadGIF_RW (src : RW.RWops) return V.Surface_ptr; pragma Import (C, LoadGIF_RW, "IMG_LoadGIF_RW"); function LoadJPG_RW (src : RW.RWops) return V.Surface_ptr; pragma Import (C, LoadJPG_RW, "IMG_LoadJPG_RW"); function LoadTIF_RW (src : RW.RWops) return V.Surface_ptr; pragma Import (C, LoadTIF_RW, "IMG_LoadTIF_RW"); function LoadPNG_RW (src : RW.RWops) return V.Surface_ptr; pragma Import (C, LoadPNG_RW, "IMG_LoadPNG_RW"); function LoadTGA_RW (src : RW.RWops) return V.Surface_ptr; pragma Import (C, LoadTGA_RW, "IMG_LoadTGA_RW"); -- We'll use SDL for reporting errors procedure SetError (fmt : CS.chars_ptr) renames SDL.Error.SetError; procedure Set_Error (fmt : String) renames SDL.Error.Set_Error; function GetError return CS.chars_ptr renames SDL.Error.GetError; function Get_Error return String renames SDL.Error.Get_Error; end SDL_Image;