diff options
author | Andreas Rumpf <rumpf_a@web.de> | 2008-11-16 22:11:53 +0100 |
---|---|---|
committer | Andreas Rumpf <rumpf_a@web.de> | 2008-11-16 22:11:53 +0100 |
commit | 985113a88fe07fa18f0a34ceaa9e8c1c1e04a79b (patch) | |
tree | 6a2e56078dd24d29d9031a784917ed94696d24a8 /lib/base/sdl/sdl_image.nim | |
parent | 8b2a9401a147bd0b26cd2976ae71a1022fbde8cc (diff) | |
download | Nim-985113a88fe07fa18f0a34ceaa9e8c1c1e04a79b.tar.gz |
version 0.7.0
Diffstat (limited to 'lib/base/sdl/sdl_image.nim')
-rw-r--r-- | lib/base/sdl/sdl_image.nim | 227 |
1 files changed, 227 insertions, 0 deletions
diff --git a/lib/base/sdl/sdl_image.nim b/lib/base/sdl/sdl_image.nim new file mode 100644 index 000000000..a15afd575 --- /dev/null +++ b/lib/base/sdl/sdl_image.nim @@ -0,0 +1,227 @@ + +# +# $Id: sdl_image.pas,v 1.14 2007/05/29 21:31:13 savage Exp $ +# +# +#****************************************************************************** +# +# Borland Delphi SDL_Image - An example image loading library for use +# with SDL +# Conversion of the Simple DirectMedia Layer Image Headers +# +# Portions created by Sam Lantinga <slouken@devolution.com> are +# Copyright (C) 1997, 1998, 1999, 2000, 2001 Sam Lantinga +# 5635-34 Springhouse Dr. +# Pleasanton, CA 94588 (USA) +# +# All Rights Reserved. +# +# The original files are : SDL_image.h +# +# The initial developer of this Pascal code was : +# Matthias Thoma <ma.thoma@gmx.de> +# +# Portions created by Matthias Thoma are +# Copyright (C) 2000 - 2001 Matthias Thoma. +# +# +# Contributor(s) +# -------------- +# Dominique Louis <Dominique@SavageSoftware.com.au> +# +# Obtained through: +# Joint Endeavour of Delphi Innovators ( Project JEDI ) +# +# You may retrieve the latest version of this file at the Project +# JEDI home page, located at http://delphi-jedi.org +# +# The contents of this file are used with permission, subject to +# the Mozilla Public License Version 1.1 (the "License"); you may +# not use this file except in compliance with the License. You may +# obtain a copy of the License at +# http://www.mozilla.org/MPL/MPL-1.1.html +# +# Software distributed under the License is distributed on an +# "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or +# implied. See the License for the specific language governing +# rights and limitations under the License. +# +# Description +# ----------- +# A simple library to load images of various formats as SDL surfaces +# +# Requires +# -------- +# SDL.pas in your search path. +# +# Programming Notes +# ----------------- +# See the Aliens Demo on how to make use of this libaray +# +# Revision History +# ---------------- +# April 02 2001 - MT : Initial Translation +# +# May 08 2001 - DL : Added ExternalSym derectives and copyright header +# +# April 03 2003 - DL : Added jedi-sdl.inc include file to support more +# Pascal compilers. Initial support is now included +# for GnuPascal, VirtualPascal, TMT and obviously +# continue support for Delphi Kylix and FreePascal. +# +# April 08 2003 - MK : Aka Mr Kroket - Added Better FPC support +# +# April 24 2003 - DL : under instruction from Alexey Barkovoy, I have added +# better TMT Pascal support and under instruction +# from Prof. Abimbola Olowofoyeku (The African Chief), +# I have added better Gnu Pascal support +# +# April 30 2003 - DL : under instruction from David Mears AKA +# Jason Siletto, I have added FPC Linux support. +# This was compiled with fpc 1.1, so remember to set +# include file path. ie. -Fi/usr/share/fpcsrc/rtl/* +# +# +# $Log: sdl_image.pas,v $ +# Revision 1.14 2007/05/29 21:31:13 savage +# Changes as suggested by Almindor for 64bit compatibility. +# +# Revision 1.13 2007/05/20 20:30:54 savage +# Initial Changes to Handle 64 Bits +# +# Revision 1.12 2006/12/02 00:14:40 savage +# Updated to latest version +# +# Revision 1.11 2005/04/10 18:22:59 savage +# Changes as suggested by Michalis, thanks. +# +# Revision 1.10 2005/04/10 11:48:33 savage +# Changes as suggested by Michalis, thanks. +# +# Revision 1.9 2005/01/05 01:47:07 savage +# Changed LibName to reflect what MacOS X should have. ie libSDL*-1.2.0.dylib respectively. +# +# Revision 1.8 2005/01/04 23:14:44 savage +# Changed LibName to reflect what most Linux distros will have. ie libSDL*-1.2.so.0 respectively. +# +# Revision 1.7 2005/01/01 02:03:12 savage +# Updated to v1.2.4 +# +# Revision 1.6 2004/08/14 22:54:30 savage +# Updated so that Library name defines are correctly defined for MacOS X. +# +# Revision 1.5 2004/05/10 14:10:04 savage +# Initial MacOS X support. Fixed defines for MACOS ( Classic ) and DARWIN ( MacOS X ). +# +# Revision 1.4 2004/04/13 09:32:08 savage +# Changed Shared object names back to just the .so extension to avoid conflicts on various Linux/Unix distros. Therefore developers will need to create Symbolic links to the actual Share Objects if necessary. +# +# Revision 1.3 2004/04/01 20:53:23 savage +# Changed Linux Shared Object names so they reflect the Symbolic Links that are created when installing the RPMs from the SDL site. +# +# Revision 1.2 2004/03/30 20:23:28 savage +# Tidied up use of UNIX compiler directive. +# +# Revision 1.1 2004/02/14 23:35:42 savage +# version 1 of sdl_image, sdl_mixer and smpeg. +# +# +# +#****************************************************************************** + +import + sdl + +when defined(windows): + const SDL_ImageLibName = "SDL_Image.dll" +elif defined(macosx): + const SDL_ImageLibName = "libSDL_image-1.2.0.dylib" +else: + const SDL_ImageLibName = "libSDL_image.so" + +const + SDL_IMAGE_MAJOR_VERSION* = 1'i8 + SDL_IMAGE_MINOR_VERSION* = 2'i8 + SDL_IMAGE_PATCHLEVEL* = 5'i8 + +# This macro can be used to fill a version structure with the compile-time +# version of the SDL_image library. + +proc SDL_IMAGE_VERSION*(X: var TSDL_Version) + # This function gets the version of the dynamically linked SDL_image library. + # it should NOT be used to fill a version structure, instead you should + # use the SDL_IMAGE_VERSION() macro. + # +proc IMG_Linked_Version*(): PSDL_version{.importc, dynlib: SDL_ImageLibName.} + # 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: + # SDL_SetColorKey(image, SDL_RLEACCEL, image.format.colorkey); + # +proc IMG_LoadTyped_RW*(src: PSDL_RWops, freesrc: int, theType: cstring): PSDL_Surface{. + cdecl, importc, dynlib: SDL_ImageLibName.} + # Convenience functions +proc IMG_Load*(theFile: cstring): PSDL_Surface{.cdecl, importc, dynlib: SDL_ImageLibName.} +proc IMG_Load_RW*(src: PSDL_RWops, freesrc: int): PSDL_Surface{.cdecl, + importc, dynlib: SDL_ImageLibName.} + # Invert the alpha of a surface for use with OpenGL + # This function is now a no-op, and only provided for backwards compatibility. +proc IMG_InvertAlpha*(theOn: int): int{.cdecl, importc, dynlib: SDL_ImageLibName.} + # Functions to detect a file type, given a seekable source +proc IMG_isBMP*(src: PSDL_RWops): int{.cdecl, importc, dynlib: SDL_ImageLibName.} +proc IMG_isGIF*(src: PSDL_RWops): int{.cdecl, importc, dynlib: SDL_ImageLibName.} +proc IMG_isJPG*(src: PSDL_RWops): int{.cdecl, importc, dynlib: SDL_ImageLibName.} +proc IMG_isLBM*(src: PSDL_RWops): int{.cdecl, importc, dynlib: SDL_ImageLibName.} +proc IMG_isPCX*(src: PSDL_RWops): int{.cdecl, importc, dynlib: SDL_ImageLibName.} +proc IMG_isPNG*(src: PSDL_RWops): int{.cdecl, importc, dynlib: SDL_ImageLibName.} +proc IMG_isPNM*(src: PSDL_RWops): int{.cdecl, importc, dynlib: SDL_ImageLibName.} +proc IMG_isTIF*(src: PSDL_RWops): int{.cdecl, importc, dynlib: SDL_ImageLibName.} +proc IMG_isXCF*(src: PSDL_RWops): int{.cdecl, importc, dynlib: SDL_ImageLibName.} +proc IMG_isXPM*(src: PSDL_RWops): int{.cdecl, importc, dynlib: SDL_ImageLibName.} +proc IMG_isXV*(src: PSDL_RWops): int{.cdecl, importc, dynlib: SDL_ImageLibName.} + # Individual loading functions +proc IMG_LoadBMP_RW*(src: PSDL_RWops): PSDL_Surface{.cdecl, + importc, dynlib: SDL_ImageLibName.} +proc IMG_LoadGIF_RW*(src: PSDL_RWops): PSDL_Surface{.cdecl, + importc, dynlib: SDL_ImageLibName.} +proc IMG_LoadJPG_RW*(src: PSDL_RWops): PSDL_Surface{.cdecl, + importc, dynlib: SDL_ImageLibName.} +proc IMG_LoadLBM_RW*(src: PSDL_RWops): PSDL_Surface{.cdecl, + importc, dynlib: SDL_ImageLibName.} +proc IMG_LoadPCX_RW*(src: PSDL_RWops): PSDL_Surface{.cdecl, + importc, dynlib: SDL_ImageLibName.} +proc IMG_LoadPNM_RW*(src: PSDL_RWops): PSDL_Surface{.cdecl, + importc, dynlib: SDL_ImageLibName.} +proc IMG_LoadPNG_RW*(src: PSDL_RWops): PSDL_Surface{.cdecl, + importc, dynlib: SDL_ImageLibName.} +proc IMG_LoadTGA_RW*(src: PSDL_RWops): PSDL_Surface{.cdecl, + importc, dynlib: SDL_ImageLibName.} +proc IMG_LoadTIF_RW*(src: PSDL_RWops): PSDL_Surface{.cdecl, + importc, dynlib: SDL_ImageLibName.} +proc IMG_LoadXCF_RW*(src: PSDL_RWops): PSDL_Surface{.cdecl, + importc, dynlib: SDL_ImageLibName.} +proc IMG_LoadXPM_RW*(src: PSDL_RWops): PSDL_Surface{.cdecl, + importc, dynlib: SDL_ImageLibName.} +proc IMG_LoadXV_RW*(src: PSDL_RWops): PSDL_Surface{.cdecl, + importc, dynlib: SDL_ImageLibName.} +proc IMG_ReadXPMFromArray*(xpm: cstringArray): PSDL_Surface{.cdecl, + importc, dynlib: SDL_ImageLibName.} + # Error Macros + # We'll use SDL for reporting errors +proc IMG_SetError*(fmt: cstring) +proc IMG_GetError*(): cstring +# implementation + +proc SDL_IMAGE_VERSION(X: var TSDL_Version) = + X.major = SDL_IMAGE_MAJOR_VERSION + X.minor = SDL_IMAGE_MINOR_VERSION + X.patch = SDL_IMAGE_PATCHLEVEL + +proc IMG_SetError(fmt: cstring) = + SDL_SetError(fmt) + +proc IMG_GetError(): cstring = + result = SDL_GetError() |