home *** CD-ROM | disk | FTP | other *** search
/ Amiga ACS 1998 #6 / amigaacscoverdisc1998-061998.iso / games / descent / source / 2d / gpixel.c < prev    next >
Text File  |  1998-06-08  |  3KB  |  91 lines

  1. /*
  2. THE COMPUTER CODE CONTAINED HEREIN IS THE SOLE PROPERTY OF PARALLAX
  3. SOFTWARE CORPORATION ("PARALLAX").  PARALLAX, IN DISTRIBUTING THE CODE TO
  4. END-USERS, AND SUBJECT TO ALL OF THE TERMS AND CONDITIONS HEREIN, GRANTS A
  5. ROYALTY-FREE, PERPETUAL LICENSE TO SUCH END-USERS FOR USE BY SUCH END-USERS
  6. IN USING, DISPLAYING,  AND CREATING DERIVATIVE WORKS THEREOF, SO LONG AS
  7. SUCH USE, DISPLAY OR CREATION IS FOR NON-COMMERCIAL, ROYALTY OR REVENUE
  8. FREE PURPOSES.  IN NO EVENT SHALL THE END-USER USE THE COMPUTER CODE
  9. CONTAINED HEREIN FOR REVENUE-BEARING PURPOSES.  THE END-USER UNDERSTANDS
  10. AND AGREES TO THE TERMS HEREIN AND ACCEPTS THE SAME BY USE OF THIS FILE.  
  11. COPYRIGHT 1993-1998 PARALLAX SOFTWARE CORPORATION.  ALL RIGHTS RESERVED.
  12. */
  13. /*
  14.  * $Source: f:/miner/source/2d/rcs/gpixel.c $
  15.  * $Revision: 1.5 $
  16.  * $Author: john $
  17.  * $Date: 1994/11/18 22:50:20 $
  18.  *
  19.  * Graphical routines for getting a pixel's value.
  20.  *
  21.  * $Log: gpixel.c $
  22.  * Revision 1.5  1994/11/18  22:50:20  john
  23.  * Changed shorts to ints in parameters.
  24.  * 
  25.  * Revision 1.4  1994/05/06  12:50:08  john
  26.  * Added supertransparency; neatend things up; took out warnings.
  27.  * 
  28.  * Revision 1.3  1993/10/15  16:22:50  john
  29.  * y
  30.  * 
  31.  * Revision 1.2  1993/09/29  16:15:00  john
  32.  * optimized
  33.  * 
  34.  * Revision 1.1  1993/09/08  11:43:40  john
  35.  * Initial revision
  36.  * 
  37.  *
  38.  */
  39. #include "mem.h"
  40.  
  41.  
  42. #include "gr.h"
  43. #include "grdef.h"
  44.  
  45. unsigned char gr_ugpixel( grs_bitmap * bitmap, int x, int y )
  46. {
  47.     switch(bitmap->bm_type)
  48.     {
  49.     case BM_LINEAR:
  50.         return bitmap->bm_data[ bitmap->bm_rowsize*y + x ];
  51.     case BM_MODEX:
  52.         x += bitmap->bm_x;
  53.         y += bitmap->bm_y;
  54.         gr_modex_setplane( x & 3 );
  55.         return gr_video_memory[(bitmap->bm_rowsize * y) + (x/4)];
  56.     case BM_SVGA:
  57.         {
  58.         unsigned int offset;
  59.         offset = (unsigned int)bitmap->bm_data + (unsigned int)bitmap->bm_rowsize * y + x;
  60.         gr_vesa_setpage( offset >> 16 );
  61.         return gr_video_memory[offset & 0xFFFF];
  62.         }
  63.     }
  64.     return 0;
  65. }
  66.  
  67. unsigned char gr_gpixel( grs_bitmap * bitmap, int x, int y )
  68. {
  69.     if ((x<0) || (y<0) || (x>=bitmap->bm_w) || (y>=bitmap->bm_h)) return 0;
  70.  
  71.     switch(bitmap->bm_type)
  72.     {
  73.     case BM_LINEAR:
  74.         return bitmap->bm_data[ bitmap->bm_rowsize*y + x ];
  75.     case BM_MODEX:
  76.         x += bitmap->bm_x;
  77.         y += bitmap->bm_y;
  78.         gr_modex_setplane( x & 3 );
  79.         return gr_video_memory[(bitmap->bm_rowsize * y) + (x/4)];
  80.     case BM_SVGA:
  81.         {
  82.         unsigned int offset;
  83.         offset = (unsigned int)bitmap->bm_data + (unsigned int)bitmap->bm_rowsize * y + x;
  84.         gr_vesa_setpage( offset >> 16 );
  85.         return gr_video_memory[offset & 0xFFFF];
  86.         }
  87.     }
  88.     return 0;
  89. }
  90. 
  91.