SDL Image
SDL Image
3 November 2009
Jonathan Atkins
Copyright c 2009 Jonathan Atkins Permission is granted to distribute freely, or in a distribution of any kind. All distributions of this le must be in an unaltered state, except for corrections. The latest copy of this document can be found at http://www.jonatkins.org/SDL_image
Table of Contents
1 2 Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 Getting Started . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
2.1 2.2 Includes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 Compiling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
3.1 General . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 3.1.1 IMG Linked Version . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 3.1.2 IMG Init . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 3.1.3 IMG Quit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 3.2 Loading . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 3.2.1 IMG Load . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 3.2.2 IMG Load RW . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 3.2.3 IMG LoadTyped RW . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 3.2.4 IMG LoadCUR RW . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 3.2.5 IMG LoadICO RW . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 3.2.6 IMG LoadBMP RW . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 3.2.7 IMG LoadPNM RW . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 3.2.8 IMG LoadXPM RW . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 3.2.9 IMG LoadXCF RW . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 3.2.10 IMG LoadPCX RW . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 3.2.11 IMG LoadGIF RW . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 3.2.12 IMG LoadJPG RW . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 3.2.13 IMG LoadTIF RW . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 3.2.14 IMG LoadPNG RW . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 3.2.15 IMG LoadTGA RW . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 3.2.16 IMG LoadLBM RW . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 3.2.17 IMG LoadXV RW . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 3.2.18 IMG ReadXPMFromArray . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 3.3 Info . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 3.3.1 IMG isCUR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 3.3.2 IMG isICO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 3.3.3 IMG isBMP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 3.3.4 IMG isPNM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 3.3.5 IMG isXPM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 3.3.6 IMG isXCF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 3.3.7 IMG isPCX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 3.3.8 IMG isGIF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 3.3.9 IMG isJPG . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40 3.3.10 IMG isTIF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 3.3.11 IMG isPNG . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
ii 3.3.12 IMG isLBM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.3.13 IMG isXV . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.4 Errors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.4.1 IMG SetError . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.4.2 IMG GetError . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43 44 45 46 47
Denes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
Chapter 1: Overview
1 Overview
A Little Bit About Me I am currently, as I write this document, a programmer for Raytheon. There I do all sorts of communications, network, GUI, and other general programming tasks in C/C++ on the Solaris, Linux, and Windows Operating Systems. Feel free to contact me: [email protected] I am also usually on IRC at irc.freenode.net in the #SDL channel as LIM Why is this for you? Images provide the basic visual building blocks for any user interface. Colors and fun shapes are the stu that we as kids looked at for hours at a time while trying to shoot down big aliens and rescue pixelated princesses. Now its our turn to make the images that others will remember later in life perhaps. Now how do we get this dang images into our SDL programs, and be exible in the handling of the images so that we dont even have to worry about what various formats they may be in? This is where SDLimage makes all of our lives easier. This document doesnt help you make artwork, but it will give you the functional knowledge on how to get that art into your game. Now go forth and make your Stick Figure of Justice, someone else might ll in for your lack of artistry, at least you wont have to make much of an eort to include the new and better art into your code.
Chapter 1: Overview
This is the README, updated by me for accuracy, in the SDL image source archive.
Chapter 1: Overview
SDL_image 1.2 The latest version of this library is available from: SDL_image Homepage This is a simple library to load images of various formats as SDL surfaces. This library supports ICO(Icon)/CUR(Cursor)/BMP, PNM (PPM/PGM/PBM), XPM, LBM(IFF ILBM), PCX, GIF, JPEG, PNG, TGA, TIFF, and XV thumbnail formats. API: #include "SDL_image.h" SDL_Surface *IMG_Load(const char *file); or SDL_Surface *IMG_Load_RW(SDL_RWops *src, int freesrc); or SDL_Surface *IMG_LoadTyped_RW(SDL_RWops *src, int freesrc, char *type); where type is a string specifying the format (i.e. "PNG" or "pcx"). Note that IMG_Load_RW cannot load TGA images. To create a surface from an XPM image included in C source, use: SDL_Surface *IMG_ReadXPMFromArray(char **xpm); An example program showimage is included, with source in showimage.c JPEG support requires the JPEG library: IJG Homepage PNG support requires the PNG library: PNG Homepage and the Zlib library: Zlib Homepage TIFF support requires the TIFF library: SGI TIFF FTP Site If you have these libraries installed in non-standard places, you can try adding those paths to the configure script, e.g. sh ./configure CPPFLAGS="-I/somewhere/include" LDFLAGS="-L/somewhere/lib" If this works, you may need to add /somewhere/lib to your LD_LIBRARY_PATH so shared library loading works correctly. This library is under the GNU Library General Public License, see the file "COPYING" for details. Certain image loaders may be under a different license, see the individual image loader source files for details.
2 Getting Started
This assumes you have gotten SDL image and installed it on your system. SDL image has an README document in the source distribution to help you get it compiled and installed. Well it at least points you to locations for the source code of some of the image libraries SDL image can use. Most of the other image formats are builtin to SDL image. Generally, in UNIX-like environments, installation consists of:
SDL image supports loading and decoding images from the following formats: TGA BMP PNM TrueVision Targa (MUST have .tga) Windows Bitmap(.bmp) Portable Anymap (.pnm) .pbm = Portable BitMap (mono) .pgm = Portable GreyMap (256 greys) .ppm = Portable PixMap (full color) X11 Pixmap (.xpm) can be #included directly in code This is NOT the same as XBM(X11 Bitmap) format, which is for monocolor images. GIMP native (.xcf) (XCF = eXperimental Computing Facility?) This format is always changing, and since theres no library supplied by the GIMP project to load XCF, the loader may frequently fail to load much of any image from an XCF le. Its better to load this in GIMP and convert to a better supported image format. ZSoft IBM PC Paintbrush (.pcx) CompuServe Graphics Interchange Format (.gif) Joint Photographic Experts Group JFIF format (.jpg or .jpeg) Tagged Image File Format (.tif or .ti) Interleaved Bitmap (.lbm or .i) FORM : ILBM or PBM(packed bitmap) HAM6, HAM8, and 24bit types are not supported. Portable Network Graphics (.png)
XPM
XCF
You may also want to look at some demonstration code which may be downloaded from: http://www.jonatkins.org/SDL_image/
2.1 Includes
To use SDL image functions in a C/C++ source code le, you must use the SDL image.h include le:
#include "SDL_image.h"
2.2 Compiling
To link with SDL image you should use sdl-cong to get the required SDL compilation options. After that, compiling with SDL image is quite easy. Note: Some systems may not have the SDL image library and include le in the same place as the SDL library and includes are located, in that case you will need to add more -I and -L paths to these command lines.
Simple Example for compiling an object le: cc -c sdl-config --cflags mysource.c Simple Example for compiling an object le: cc -o myprogram mysource.o sdl-config --libs -lSDL_image Now myprogram is ready to run.
Chapter 3: Functions
3 Functions
These are the functions in the SDL image API.
Chapter 3: Functions
3.1 General
These functions query, initialize, and cleanup the SDL image library.
Chapter 3: Functions
SDL_version compile_version; const SDL_version *link_version=IMG_Linked_Version(); SDL_IMAGE_VERSION(&compile_version); printf("compiled with SDL_image version: %d.%d.%d\n", compile_version.major, compile_version.minor, compile_version.patch); printf("running with SDL_image version: %d.%d.%d\n", link_version->major, link_version->minor, link_version->patch);
Chapter 3: Functions
10
Initialize by loading support as indicated by the ags, or at least return success if support is already loaded. You may call this multiple times, which will actually require you to call IMG_Quit just once to clean up. You may call this function with a 0 to retrieve whether support was built-in or not loaded yet. Note: to load JPG, PNG, and/or TIF images you can call IMG_Init with the right IMG INIT * ags ORd together before you program gets busy, to prevent a later hiccup while it loads the library, and to check that you do have the support that you need before you try and use it. Note: No initialization is needed nor performed when using the IMG_isJPG, IMG_isPNG, and IMG_isTIF functions. Note: this function does not always set the error string, so do not depend on IMG_GetError being meaningful all the time. Returns: a bitmask of all the currently initted image loaders.
// load support for the JPG and PNG image formats int flags=IMG_INIT_JPG|IMG_INIT_PNG; int initted=IMG_Init(flags); if(initted&flags != flags) { printf("IMG_Init: Failed to init required jpg and png support!\n"); printf("IMG_Init: %s\n", IMG_GetError()); // handle error }
Chapter 3: Functions
11
Chapter 3: Functions
12
3.2 Loading
These functions create an SDL_Surface from image data either from a le, or SDL RWop, or from an array of data in memory.
Chapter 3: Functions
13
Load le for use as an image in a new surface. This actually calls IMG_LoadTyped_RW, with the le extension used as the type string. This can load all supported image les, including TGA as long as the lename ends with ".tga". It is best to call this outside of event loops, and rather keep the loaded images around until you are really done with them, as disk speed and image conversion to a surface is not that speedy. Dont forget to SDL FreeSurface the returned surface pointer when you are through with it. Note: If the image format loader requires initialization, it will attempt to do that the rst time it is needed if you have not already called IMG_Init to load support for your image format. Note: If the image format supports a transparent pixel, SDL image 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); Returns: a pointer to the image as a new SDL_Surface. NULL is returned on errors, such as no support built for the image, or a le reading error.
// load sample.png into image SDL_Surface *image; image=IMG_Load("sample.png"); if(!image) { printf("IMG_Load: %s\n", IMG_GetError()); // handle error }
See Also: Section 3.1.2 [IMG Init], page 10, Section 3.2.2 [IMG Load RW], page 14, Section 3.2.3 [IMG LoadTyped RW], page 15
Chapter 3: Functions
14
Load src for use as a surface. This can load all supported image formats, except TGA. Using SDL_RWops is not covered here, but they enable you to load from almost any source. Note: If the image format loader requires initialization, it will attempt to do that the rst time it is needed if you have not already called IMG_Init to load support for your image format. Note: If the image format supports a transparent pixel, SDL image 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); Returns: a pointer to the image as a new SDL_Surface. NULL is returned on errors.
// load sample.png in to image SDL_Surface *image; image=IMG_Load_RW(SDL_RWFromFile("sample.png", "rb"), 1); if(!image) { printf("IMG_Load_RW: %s\n", IMG_GetError()); // handle error }
See Also: Section 3.1.2 [IMG Init], page 10, Section 3.2.1 [IMG Load], page 13, Section 3.2.3 [IMG LoadTyped RW], page 15
Chapter 3: Functions
15
// load sample.tga into image SDL_Surface *image; image=IMG_LoadTyped_RW(SDL_RWFromFile("sample.tga", "rb"), 1, "TGA"); if(!image) { printf("IMG_LoadTyped_RW: %s\n", IMG_GetError()); // handle error }
See Also: Section 3.1.2 [IMG Init], page 10, Section 3.2.1 [IMG Load], page 13, Section 3.2.2 [IMG Load RW], page 14
Chapter 3: Functions
16
Load src as a Windows Cursor image for use as a surface, if BMP support is compiled into the SDL image library. The CURs mask is put into to per pixel alpha in the surface. For les with multiple images, the rst one found with the highest color count is chosen. Returns: a pointer to the image as a new SDL_Surface. NULL is returned on errors, like if BMP is not supported, or a read error.
// load sample.cur into image SDL_Surface *image; SDL_RWops *rwop; rwop=SDL_RWFromFile("sample.cur", "rb"); image=IMG_LoadCUR_RW(rwop); if(!image) { printf("IMG_LoadCUR_RW: %s\n", IMG_GetError()); // handle error }
See Also: Section 3.2.3 [IMG LoadTyped RW], page 15, Section 3.3.1 [IMG isCUR], page 32
Chapter 3: Functions
17
Load src as a Windows Icon image for use as a surface, if BMP support is compiled into the SDL image library. The ICOs mask is put into to per pixel alpha in the surface. For les with multiple images, the rst one found with the highest color count is chosen. Returns: a pointer to the image as a new SDL_Surface. NULL is returned on errors, like if BMP is not supported, or a read error.
// load sample.ico into image SDL_Surface *image; SDL_RWops *rwop; rwop=SDL_RWFromFile("sample.ico", "rb"); image=IMG_LoadICO_RW(rwop); if(!image) { printf("IMG_LoadICO_RW: %s\n", IMG_GetError()); // handle error }
See Also: Section 3.2.3 [IMG LoadTyped RW], page 15, Section 3.3.2 [IMG isICO], page 33
Chapter 3: Functions
18
Load src as a BMP image for use as a surface, if BMP support is compiled into the SDL image library. Returns: a pointer to the image as a new SDL_Surface. NULL is returned on errors, like if BMP is not supported, or a read error.
// load sample.bmp into image SDL_Surface *image; SDL_RWops *rwop; rwop=SDL_RWFromFile("sample.bmp", "rb"); image=IMG_LoadBMP_RW(rwop); if(!image) { printf("IMG_LoadBMP_RW: %s\n", IMG_GetError()); // handle error }
See Also: Section 3.2.3 [IMG LoadTyped RW], page 15, Section 3.3.3 [IMG isBMP], page 34
Chapter 3: Functions
19
Load src as a PNM image for use as a surface, if PNM support is compiled into the SDL image library. Returns: a pointer to the image as a new SDL_Surface. NULL is returned on errors, like if PNM is not supported, or a read error.
// load sample.pnm into image SDL_Surface *image; SDL_RWops *rwop; rwop=SDL_RWFromFile("sample.pnm", "rb"); image=IMG_LoadPNM_RW(rwop); if(!image) { printf("IMG_LoadPNM_RW: %s\n", IMG_GetError()); // handle error }
See Also: Section 3.2.3 [IMG LoadTyped RW], page 15, Section 3.3.4 [IMG isPNM], page 35
Chapter 3: Functions
20
Load src as a XPM image for use as a surface, if XPM support is compiled into the SDL image library. Returns: a pointer to the image as a new SDL_Surface. NULL is returned on errors, like if XPM is not supported, or a read error.
// load sample.xpm into image SDL_Surface *image; SDL_RWops *rwop; rwop=SDL_RWFromFile("sample.xpm", "rb"); image=IMG_LoadXPM_RW(rwop); if(!image) { printf("IMG_LoadXPM_RW: %s\n", IMG_GetError()); // handle error }
See Also: Section 3.2.3 [IMG LoadTyped RW], page 15, Section 3.2.18 [IMG ReadXPMFromArray], page 30, Section 3.3.5 [IMG isXPM], page 36
Chapter 3: Functions
21
Load src as a XCF image for use as a surface, if XCF support is compiled into the SDL image library. Returns: a pointer to the image as a new SDL_Surface. NULL is returned on errors, like if XCF is not supported, or a read error.
// load sample.xcf into image SDL_Surface *image; SDL_RWops *rwop; rwop=SDL_RWFromFile("sample.xcf", "rb"); image=IMG_LoadXCF_RW(rwop); if(!image) { printf("IMG_LoadXCF_RW: %s\n", IMG_GetError()); // handle error }
See Also: Section 3.2.3 [IMG LoadTyped RW], page 15, Section 3.3.6 [IMG isXCF], page 37
Chapter 3: Functions
22
Load src as a PCX image for use as a surface, if PCX support is compiled into the SDL image library. Returns: a pointer to the image as a new SDL_Surface. NULL is returned on errors, like if PCX is not supported, or a read error.
// load sample.pcx into image SDL_Surface *image; SDL_RWops *rwop; rwop=SDL_RWFromFile("sample.pcx", "rb"); image=IMG_LoadPCX_RW(rwop); if(!image) { printf("IMG_LoadPCX_RW: %s\n", IMG_GetError()); // handle error }
See Also: Section 3.2.3 [IMG LoadTyped RW], page 15, Section 3.3.7 [IMG isPCX], page 38
Chapter 3: Functions
23
Load src as a GIF image for use as a surface, if GIF support is compiled into the SDL image library. Returns: a pointer to the image as a new SDL_Surface. NULL is returned on errors, like if GIF is not supported, or a read error.
// load sample.gif into image SDL_Surface *image; SDL_RWops *rwop; rwop=SDL_RWFromFile("sample.gif", "rb"); image=IMG_LoadGIF_RW(rwop); if(!image) { printf("IMG_LoadGIF_RW: %s\n", IMG_GetError()); // handle error }
See Also: Section 3.2.3 [IMG LoadTyped RW], page 15, Section 3.3.8 [IMG isGIF], page 39
Chapter 3: Functions
24
Load src as a JPG image for use as a surface, if JPG support is compiled into the SDL image library. Note: If the image format loader requires initialization, it will attempt to do that the rst time it is needed if you have not already called IMG_Init to load support for your image format. Returns: a pointer to the image as a new SDL_Surface. NULL is returned on errors, like if JPG is not supported, or a read error.
// load sample.jpg into image SDL_Surface *image; SDL_RWops *rwop; rwop=SDL_RWFromFile("sample.jpg", "rb"); image=IMG_LoadJPG_RW(rwop); if(!image) { printf("IMG_LoadJPG_RW: %s\n", IMG_GetError()); // handle error }
See Also: Section 3.1.2 [IMG Init], page 10, Section 3.2.3 [IMG LoadTyped RW], page 15, Section 3.3.9 [IMG isJPG], page 40
Chapter 3: Functions
25
Load src as a TIF image for use as a surface, if TIF support is compiled into the SDL image library. Note: If the image format loader requires initialization, it will attempt to do that the rst time it is needed if you have not already called IMG_Init to load support for your image format. Returns: a pointer to the image as a new SDL_Surface. NULL is returned on errors, like if TIF is not supported, or a read error.
// load sample.tif into image SDL_Surface *image; SDL_RWops *rwop; rwop=SDL_RWFromFile("sample.tif", "rb"); image=IMG_LoadTIF_RW(rwop); if(!image) { printf("IMG_LoadTIF_RW: %s\n", IMG_GetError()); // handle error }
See Also: Section 3.1.2 [IMG Init], page 10, Section 3.2.3 [IMG LoadTyped RW], page 15, Section 3.3.10 [IMG isTIF], page 41
Chapter 3: Functions
26
Load src as a PNG image for use as a surface, if PNG support is compiled into the SDL image library. Note: If the image format loader requires initialization, it will attempt to do that the rst time it is needed if you have not already called IMG_Init to load support for your image format. Returns: a pointer to the image as a new SDL_Surface. NULL is returned on errors, like if PNG is not supported, or a read error.
// load sample.png into image SDL_Surface *image; SDL_RWops *rwop; rwop=SDL_RWFromFile("sample.png", "rb"); image=IMG_LoadPNG_RW(rwop); if(!image) { printf("IMG_LoadPNG_RW: %s\n", IMG_GetError()); // handle error }
See Also: Section 3.1.2 [IMG Init], page 10, Section 3.2.3 [IMG LoadTyped RW], page 15, Section 3.3.11 [IMG isPNG], page 42
Chapter 3: Functions
27
Load src as a TGA image for use as a surface, if TGA support is compiled into the SDL image library. If you try to load a non TGA image, you might succeed even when its not TGA image formatted data, this is because the TGA has no magic, which is a way of identifying a letype from a signature in its contents. So be careful with this. Returns: a pointer to the image as a new SDL_Surface. NULL is returned on errors, like if TGA is not supported, or a read error.
// load sample.tga into image SDL_Surface *image; SDL_RWops *rwop; rwop=SDL_RWFromFile("sample.tga", "rb"); image=IMG_LoadTGA_RW(rwop); if(!image) { printf("IMG_LoadTGA_RW: %s\n", IMG_GetError()); // handle error }
Chapter 3: Functions
28
Load src as a LBM image for use as a surface, if LBM support is compiled into the SDL image library. Returns: a pointer to the image as a new SDL_Surface. NULL is returned on errors, like if LBM is not supported, or a read error.
// load sample.lbm into image SDL_Surface *image; SDL_RWops *rwop; rwop=SDL_RWFromFile("sample.lbm", "rb"); image=IMG_LoadLBM_RW(rwop); if(!image) { printf("IMG_LoadLBM_RW: %s\n", IMG_GetError()); // handle error }
See Also: Section 3.2.3 [IMG LoadTyped RW], page 15, Section 3.3.12 [IMG isLBM], page 43
Chapter 3: Functions
29
Load src as a XV thumbnail image for use as a surface, if XV support is compiled into the SDL image library. Returns: a pointer to the image as a new SDL_Surface. NULL is returned on errors, like if XV is not supported, or a read error.
// load sample.xv into image SDL_Surface *image; SDL_RWops *rwop; rwop=SDL_RWFromFile("sample.xv", "rb"); image=IMG_LoadXV_RW(rwop); if(!image) { printf("IMG_LoadXV_RW: %s\n", IMG_GetError()); // handle error }
See Also: Section 3.2.3 [IMG LoadTyped RW], page 15, Section 3.3.13 [IMG isXV], page 44
Chapter 3: Functions
30
Load xpm as a XPM image for use as a surface, if XPM support is compiled into the SDL image library. Returns: a pointer to the image as a new SDL_Surface. NULL is returned on errors, like if XPM is not supported, or a read error.
// load sample.xpm into image #include "sample.xpm" SDL_Surface *image; image=IMG_ReadXPMFromArray(sample_xpm); if(!image) { printf("IMG_ReadXPMFromArray: %s\n", IMG_GetError()); // handle error }
Chapter 3: Functions
31
3.3 Info
These functions are tests for specic le formats. They also show if the format is supported in the linked SDL image library, assuming you have a valid image of that type.
Chapter 3: Functions
32
// Test sample.cur to see if it is a CUR SDL_RWops *rwop; rwop=SDL_RWFromFile("sample.cur", "rb"); if(IMG_isCUR(rwop)) printf("sample.cur is a CUR file.\n"); else printf("sample.cur is not a CUR file, or BMP support is not available.\n");
See Also: Section 3.2.4 [IMG LoadCUR RW], page 16, Section 3.2.3 [IMG LoadTyped RW], page 15
Chapter 3: Functions
33
// Test sample.ico to see if it is an ICO SDL_RWops *rwop; rwop=SDL_RWFromFile("sample.ico", "rb"); if(IMG_isICO(rwop)) printf("sample.ico is an ICO file.\n"); else printf("sample.ico is not an ICO file, or BMP support is not available.\n");
See Also: Section 3.2.5 [IMG LoadICO RW], page 17, Section 3.2.3 [IMG LoadTyped RW], page 15
Chapter 3: Functions
34
// Test sample.bmp to see if it is a BMP SDL_RWops *rwop; rwop=SDL_RWFromFile("sample.bmp", "rb"); if(IMG_isBMP(rwop)) printf("sample.bmp is a BMP file.\n"); else printf("sample.bmp is not a BMP file, or BMP support is not available.\n");
See Also: Section 3.2.6 [IMG LoadBMP RW], page 18, Section 3.2.3 [IMG LoadTyped RW], page 15
Chapter 3: Functions
35
// Test sample.pnm to see if it is a PNM SDL_RWops *rwop; rwop=SDL_RWFromFile("sample.pnm", "rb"); if(IMG_isPNM(rwop)) printf("sample.pnm is a PNM file.\n"); else printf("sample.pnm is not a PNM file, or PNM support is not available.\n");
See Also: Section 3.2.7 [IMG LoadPNM RW], page 19, Section 3.2.3 [IMG LoadTyped RW], page 15
Chapter 3: Functions
36
// Test sample.xpm to see if it is a XPM SDL_RWops *rwop; rwop=SDL_RWFromFile("sample.xpm", "rb"); if(IMG_isXPM(rwop)) printf("sample.xpm is a XPM file.\n"); else printf("sample.xpm is not a XPM file, or XPM support is not available.\n");
See Also: Section 3.2.8 [IMG LoadXPM RW], page 20, Section 3.2.3 [IMG LoadTyped RW], page 15
Chapter 3: Functions
37
// Test sample.xcf to see if it is a XCF SDL_RWops *rwop; rwop=SDL_RWFromFile("sample.xcf", "rb"); if(IMG_isXCF(rwop)) printf("sample.xcf is a XCF file.\n"); else printf("sample.xcf is not a XCF file, or XCF support is not available.\n");
See Also: Section 3.2.9 [IMG LoadXCF RW], page 21, Section 3.2.3 [IMG LoadTyped RW], page 15
Chapter 3: Functions
38
// Test sample.pcx to see if it is a PCX SDL_RWops *rwop; rwop=SDL_RWFromFile("sample.pcx", "rb"); if(IMG_isPCX(rwop)) printf("sample.pcx is a PCX file.\n"); else printf("sample.pcx is not a PCX file, or PCX support is not available.\n");
See Also: Section 3.2.10 [IMG LoadPCX RW], page 22, Section 3.2.3 [IMG LoadTyped RW], page 15
Chapter 3: Functions
39
// Test sample.gif to see if it is a GIF SDL_RWops *rwop; rwop=SDL_RWFromFile("sample.gif", "rb"); if(IMG_isGIF(rwop)) printf("sample.gif is a GIF file.\n"); else printf("sample.gif is not a GIF file, or GIF support is not available.\n");
See Also: Section 3.2.11 [IMG LoadGIF RW], page 23, Section 3.2.3 [IMG LoadTyped RW], page 15
Chapter 3: Functions
40
// Test sample.jpg to see if it is a JPG SDL_RWops *rwop; rwop=SDL_RWFromFile("sample.jpg", "rb"); if(IMG_isJPG(rwop)) printf("sample.jpg is a JPG file.\n"); else printf("sample.jpg is not a JPG file, or JPG support is not available.\n");
See Also: Section 3.2.12 [IMG LoadJPG RW], page 24, Section 3.2.3 [IMG LoadTyped RW], page 15
Chapter 3: Functions
41
// Test sample.tif to see if it is a TIF SDL_RWops *rwop; rwop=SDL_RWFromFile("sample.tif", "rb"); if(IMG_isTIF(rwop)) printf("sample.tif is a TIF file.\n"); else printf("sample.tif is not a TIF file, or TIF support is not available.\n");
See Also: Section 3.2.13 [IMG LoadTIF RW], page 25, Section 3.2.3 [IMG LoadTyped RW], page 15
Chapter 3: Functions
42
// Test sample.png to see if it is a PNG SDL_RWops *rwop; rwop=SDL_RWFromFile("sample.png", "rb"); if(IMG_isPNG(rwop)) printf("sample.png is a PNG file.\n"); else printf("sample.png is not a PNG file, or PNG support is not available.\n");
See Also: Section 3.2.14 [IMG LoadPNG RW], page 26, Section 3.2.3 [IMG LoadTyped RW], page 15
Chapter 3: Functions
43
// Test sample.lbm to see if it is a LBM SDL_RWops *rwop; rwop=SDL_RWFromFile("sample.lbm", "rb"); if(IMG_isLBM(rwop)) printf("sample.lbm is a LBM file.\n"); else printf("sample.lbm is not a LBM file, or LBM support is not available.\n");
See Also: Section 3.2.16 [IMG LoadLBM RW], page 28, Section 3.2.3 [IMG LoadTyped RW], page 15
Chapter 3: Functions
44
// Test sample.xv to see if it is an XV thumbnail SDL_RWops *rwop; rwop=SDL_RWFromFile("sample.xv", "rb"); if(IMG_isXV(rwop)) printf("sample.xv is an XV file.\n"); else printf("sample.xv is not an XV file, or XV support is not available.\n");
See Also: Section 3.2.17 [IMG LoadXV RW], page 29, Section 3.2.3 [IMG LoadTyped RW], page 15
Chapter 3: Functions
45
3.4 Errors
These functions are used for error status strings that should help the user and developer understand why a function failed.
Chapter 3: Functions
46
Chapter 3: Functions
47
Chapter 4: Denes
48
4 Denes
IMG MAJOR VERSION 1 SDL image library major number at compilation time IMG MINOR VERSION 2 SDL image library minor number at compilation time IMG PATCHLEVEL 8 SDL image library patch level at compilation time IMG INIT JPG 1 IMG Init JPG image format support ag IMG INIT PNG 2 IMG Init PNG image format support ag IMG INIT TIF 4 IMG Init TIF image format support ag
Index
49
Index
(Index is nonexistent)