home *** CD-ROM | disk | FTP | other *** search
/ Club Amiga de Montreal - CAM / CAM_CD_1.iso / files / 486.lha / Hi-Low_v1.0 / src / bitmaps.c < prev    next >
Encoding:
C/C++ Source or Header  |  1991-03-11  |  1.3 KB  |  65 lines

  1.  
  2. /*
  3.  *
  4.  * Module    : bitmaps.c
  5.  *
  6.  * Description    : Functions for processing my bit map files.
  7.  *
  8.  * Author    : Simon J Raybould.    (sie@fulcrum.bt.co.uk)
  9.  *
  10.  * Date        :  5th September 1990.
  11.  *
  12.  */
  13.  
  14. #include <stdio.h>
  15. #include <fcntl.h>
  16. #include <exec/types.h>
  17. #include <exec/memory.h>
  18. #include <graphics/gfx.h>
  19. #include "bitmaps.h"
  20.  
  21. static struct Remember *RememberKey = NULL;
  22.  
  23. SetUpBitMap(BitMap, Name)
  24. struct BitMap *BitMap;
  25. char *Name;
  26. {
  27.     struct BitMapHeader BMHdr;
  28.     int PSize, TSize;    /* Plane size & Total Size */
  29.     int fd;
  30.     char *MemPtr, *AllocRemember();
  31.     UBYTE Plane;
  32.  
  33.     if((fd = open(Name, O_RDONLY)) == -1) {
  34.         perror("open bitmap");
  35.         return -1;
  36.     }
  37.     if(read(fd, &BMHdr, sizeof(struct BitMapHeader)) < sizeof(struct BitMapHeader)) {
  38.         perror("read bitmap header");
  39.         return -1;
  40.     }
  41.     PSize = RASSIZE(BMHdr.Width, BMHdr.Height);    /* size of one plane */
  42.     TSize = PSize * BMHdr.Depth;    /* size of all planes */
  43.     InitBitMap(BitMap, BMHdr.Depth, BMHdr.Width, BMHdr.Height);
  44.     if(!(MemPtr = AllocRemember(&RememberKey, TSize, MEMF_CHIP))) {
  45.         fprintf(stderr, "Not enough memory for bitmaps\n");
  46.         return -1;
  47.     }
  48.     if(read(fd, MemPtr, TSize) < TSize) {
  49.         perror("read bitmap");
  50.         return -1;
  51.     }
  52.     close(fd);
  53.     for(Plane=0; Plane<BMHdr.Depth; Plane++) {
  54.         BitMap->Planes[Plane] = (PLANEPTR)MemPtr;
  55.         MemPtr += PSize;
  56.     }
  57.     return 0;
  58. }
  59.  
  60. FreeBitMaps()
  61. {
  62.     FreeRemember(&RememberKey, TRUE);
  63.     return 0;
  64. }
  65.