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