]> icculus.org git repositories - btb/d2x.git/blob - 2d/box.c
use the orientation parameter of g3_draw_bitmap
[btb/d2x.git] / 2d / box.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
21
22 void gr_ubox0(int left,int top,int right,int bot)
23 {
24         int i, d;
25
26         unsigned char * ptr1;
27         unsigned char * ptr2;
28
29         ptr1 = DATA + ROWSIZE *top+left;
30
31         ptr2 = ptr1;
32         d = right - left;
33
34         for (i=top; i<=bot; i++ )
35         {
36                 ptr2[0] = (unsigned char) COLOR;
37                 ptr2[d] = (unsigned char) COLOR;
38                 ptr2 += ROWSIZE;
39         }
40
41         ptr2 = ptr1;
42         d = (bot - top)*ROWSIZE;
43
44         for (i=1; i<(right-left); i++ )
45         {
46                 ptr2[i+0] = (unsigned char) COLOR;
47                 ptr2[i+d] = (unsigned char) COLOR;
48         }
49 }
50
51 void gr_box0(int left,int top,int right,int bot)
52 {
53         if (top > MAXY ) return;
54     if (bot < MINY ) return;
55     if (left > MAXX ) return;
56     if (right < MINX ) return;
57     
58         if (top < MINY) top = MINY;
59     if (bot > MAXY ) bot = MAXY;
60         if (left < MINX) left = MINX;
61     if (right > MAXX ) right = MAXX;
62
63         gr_ubox0(left,top,right,bot);
64
65 }
66
67
68 void gr_ubox12(int left,int top,int right,int bot)
69 {
70         int i;
71
72         for (i=top; i<=bot; i++ )
73         {
74                 gr_upixel( left, i );
75                 gr_upixel( right, i );
76         }
77
78         gr_uscanline( left, right, top );
79
80         gr_uscanline( left, right, bot );
81 }
82
83 void gr_box12(int left,int top,int right,int bot)
84 {
85     if (top > MAXY ) return;
86     if (bot < MINY ) return;
87     if (left > MAXX ) return;
88     if (right < MINX ) return;
89     
90         if (top < MINY) top = MINY;
91     if (bot > MAXY ) bot = MAXY;
92         if (left < MINX) left = MINX;
93     if (right > MAXX ) right = MAXX;
94         
95         gr_ubox12(left, top, right, bot );
96     
97 }
98
99 void gr_ubox(int left,int top,int right,int bot)
100 {
101         if (TYPE==BM_LINEAR)
102                 gr_ubox0( left, top, right, bot );
103
104 #ifdef __DJGPP__
105         else if ( TYPE == BM_MODEX )
106                 gr_ubox12( left, top, right, bot );
107 #endif
108
109     else
110                 gr_ubox12( left, top, right, bot );
111 }
112
113 void gr_box(int left,int top,int right,int bot)
114 {
115         if (TYPE==BM_LINEAR)
116                 gr_box0( left, top, right, bot );
117
118 #ifdef __DJGPP__
119         else if ( TYPE == BM_MODEX )
120                 gr_box12( left, top, right, bot );
121 #endif
122     
123         else
124                 gr_ubox12( left, top, right, bot );
125 }