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