This commit was generated by cvs2svn to compensate for changes in r2,
[btb/d2x.git] / 2d / gpixel.c
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 #include <conf.h>
15 #include "u_mem.h"
16
17 #include "gr.h"
18 #include "grdef.h"
19 #ifdef __MSDOS__
20 #include "modex.h"
21 #include "vesa.h"
22 #endif
23
24 unsigned char gr_ugpixel( grs_bitmap * bitmap, int x, int y )
25 {
26 #ifdef __MSDOS__
27         switch(bitmap->bm_type)
28         {
29         case BM_LINEAR:
30 #endif
31                 return bitmap->bm_data[ bitmap->bm_rowsize*y + x ];
32 #ifdef __MSDOS__
33         case BM_MODEX:
34                 x += bitmap->bm_x;
35                 y += bitmap->bm_y;
36                 gr_modex_setplane( x & 3 );
37                 return gr_video_memory[(bitmap->bm_rowsize * y) + (x/4)];
38         case BM_SVGA:
39                 {
40                 unsigned int offset;
41                 offset = (unsigned int)bitmap->bm_data + (unsigned int)bitmap->bm_rowsize * y + x;
42                 gr_vesa_setpage( offset >> 16 );
43                 return gr_video_memory[offset & 0xFFFF];
44                 }
45         }
46         return 0;
47 #endif
48 }
49
50 unsigned char gr_gpixel( grs_bitmap * bitmap, int x, int y )
51 {
52         if ((x<0) || (y<0) || (x>=bitmap->bm_w) || (y>=bitmap->bm_h)) return 0;
53 #ifdef __MSDOS__
54         switch(bitmap->bm_type)
55         {
56         case BM_LINEAR:
57 #endif
58                 return bitmap->bm_data[ bitmap->bm_rowsize*y + x ];
59 #ifdef __MSDOS__
60         case BM_MODEX:
61                 x += bitmap->bm_x;
62                 y += bitmap->bm_y;
63                 gr_modex_setplane( x & 3 );
64                 return gr_video_memory[(bitmap->bm_rowsize * y) + (x/4)];
65         case BM_SVGA:
66                 {
67                 unsigned int offset;
68                 offset = (unsigned int)bitmap->bm_data + (unsigned int)bitmap->bm_rowsize * y + x;
69                 gr_vesa_setpage( offset >> 16 );
70                 return gr_video_memory[offset & 0xFFFF];
71                 }
72         }
73         return 0;
74 #endif
75 }
76