home *** CD-ROM | disk | FTP | other *** search
- /*
- #### # # # #
- # # # # # The FreeWare C library for
- # # ## ### # # # # ### RISC OS machines
- # # # # # # # # # # # ___________________________________
- # # #### ### ## # # # #
- # # # # # # # # # # Please refer to the accompanying
- #### ### #### # # ##### # ### documentation for conditions of use
- ________________________________________________________________________
-
- File: Sprite.LoadFile.c
- Author: Copyright © 1994 Tim Browse
- Version: 1.00 (02 Mar 1994)
- Purpose: Allocate a sprite area and load a file into it.
- */
-
- #include <stdlib.h>
-
- #include "DeskLib:Core.h"
- #include "DeskLib:File.h"
- #include "DeskLib:Sprite.h"
-
- extern sprite_area Sprite_LoadFile(char *filename)
- /*
- * This loads the given sprite file into a sprite area, and returns a pointer to
- * it. The memory is automatically allocated with malloc().
- */
- {
- int blksize;
- sprite_area sprarea;
-
- /*
- * To load file, allocate and initialise sprite area block, and call SWI to
- * load in file.
- */
-
- /* Find out how big file is */
- blksize = File_Size(filename);
-
- /* Add a bit of room for extra header info & safety padding */
- blksize += 16;
-
- /* Allocate memory for this block */
- sprarea = (sprite_area) malloc(blksize);
- if (sprarea == NULL)
- return NULL;
-
- /* Initialise sprite area */
- sprarea->areasize = blksize;
- sprarea->firstoffset = 16;
-
- Sprite_InitArea(sprarea);
-
- /* Try to load sprite file */
- if (Sprite_Load(sprarea, filename))
- {
- /* Sprite load failed; deallocate sprite area and inform caller */
- free(sprarea);
- return NULL;
- }
-
- return sprarea;
- }
-
-