if descent.pig available, load d1 textures for d1 levels
[btb/d2x.git] / 2d / box.c
1 /* $Id: box.c,v 1.4 2002-07-17 21:55:19 bradleyb Exp $ */
2 /*
3 THE COMPUTER CODE CONTAINED HEREIN IS THE SOLE PROPERTY OF PARALLAX
4 SOFTWARE CORPORATION ("PARALLAX").  PARALLAX, IN DISTRIBUTING THE CODE TO
5 END-USERS, AND SUBJECT TO ALL OF THE TERMS AND CONDITIONS HEREIN, GRANTS A
6 ROYALTY-FREE, PERPETUAL LICENSE TO SUCH END-USERS FOR USE BY SUCH END-USERS
7 IN USING, DISPLAYING,  AND CREATING DERIVATIVE WORKS THEREOF, SO LONG AS
8 SUCH USE, DISPLAY OR CREATION IS FOR NON-COMMERCIAL, ROYALTY OR REVENUE
9 FREE PURPOSES.  IN NO EVENT SHALL THE END-USER USE THE COMPUTER CODE
10 CONTAINED HEREIN FOR REVENUE-BEARING PURPOSES.  THE END-USER UNDERSTANDS
11 AND AGREES TO THE TERMS HEREIN AND ACCEPTS THE SAME BY USE OF THIS FILE.  
12 COPYRIGHT 1993-1998 PARALLAX SOFTWARE CORPORATION.  ALL RIGHTS RESERVED.
13 */
14
15 #ifdef HAVE_CONFIG_H
16 #include <conf.h>
17 #endif
18
19 #include "u_mem.h"
20
21
22 #include "gr.h"
23 #include "grdef.h"
24
25 void gr_ubox0(int left,int top,int right,int bot)
26 {
27         int i, d;
28
29         unsigned char * ptr1;
30         unsigned char * ptr2;
31
32         ptr1 = DATA + ROWSIZE *top+left;
33
34         ptr2 = ptr1;
35         d = right - left;
36
37         for (i=top; i<=bot; i++ )
38         {
39                 ptr2[0] = (unsigned char) COLOR;
40                 ptr2[d] = (unsigned char) COLOR;
41                 ptr2 += ROWSIZE;
42         }
43
44         ptr2 = ptr1;
45         d = (bot - top)*ROWSIZE;
46
47         for (i=1; i<(right-left); i++ )
48         {
49                 ptr2[i+0] = (unsigned char) COLOR;
50                 ptr2[i+d] = (unsigned char) COLOR;
51         }
52 }
53
54 void gr_box0(int left,int top,int right,int bot)
55 {
56         if (top > MAXY ) return;
57     if (bot < MINY ) return;
58     if (left > MAXX ) return;
59     if (right < MINX ) return;
60     
61         if (top < MINY) top = MINY;
62     if (bot > MAXY ) bot = MAXY;
63         if (left < MINX) left = MINX;
64     if (right > MAXX ) right = MAXX;
65
66         gr_ubox0(left,top,right,bot);
67
68 }
69
70
71 void gr_ubox12(int left,int top,int right,int bot)
72 {
73         int i;
74
75         for (i=top; i<=bot; i++ )
76         {
77                 gr_upixel( left, i );
78                 gr_upixel( right, i );
79         }
80
81         gr_uscanline( left, right, top );
82
83         gr_uscanline( left, right, bot );
84 }
85
86 void gr_box12(int left,int top,int right,int bot)
87 {
88     if (top > MAXY ) return;
89     if (bot < MINY ) return;
90     if (left > MAXX ) return;
91     if (right < MINX ) return;
92     
93         if (top < MINY) top = MINY;
94     if (bot > MAXY ) bot = MAXY;
95         if (left < MINX) left = MINX;
96     if (right > MAXX ) right = MAXX;
97         
98         gr_ubox12(left, top, right, bot );
99     
100 }
101
102 void gr_ubox(int left,int top,int right,int bot)
103 {
104         if (TYPE==BM_LINEAR)
105                 gr_ubox0( left, top, right, bot );
106
107 #ifdef __DJGPP__
108         else if ( TYPE == BM_MODEX )
109                 gr_ubox12( left, top, right, bot );
110 #endif
111
112     else
113                 gr_ubox12( left, top, right, bot );
114 }
115
116 void gr_box(int left,int top,int right,int bot)
117 {
118         if (TYPE==BM_LINEAR)
119                 gr_box0( left, top, right, bot );
120
121 #ifdef __DJGPP__
122         else if ( TYPE == BM_MODEX )
123                 gr_box12( left, top, right, bot );
124 #endif
125     
126         else
127                 gr_ubox12( left, top, right, bot );
128 }