home *** CD-ROM | disk | FTP | other *** search
/ Amiga ACS 1998 #6 / amigaacscoverdisc1998-061998.iso / games / descent / source / 2d / box.c < prev    next >
Text File  |  1998-06-08  |  3KB  |  141 lines

  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.  * $Source: f:/miner/source/2d/rcs/box.c $
  15.  * $Revision: 1.3 $
  16.  * $Author: john $
  17.  * $Date: 1994/11/18 22:50:19 $
  18.  *
  19.  * Graphical routines for drawing boxes.
  20.  *
  21.  * $Log: box.c $
  22.  * Revision 1.3  1994/11/18  22:50:19  john
  23.  * Changed shorts to ints in parameters.
  24.  * 
  25.  * Revision 1.2  1993/10/15  16:23:31  john
  26.  * y
  27.  * 
  28.  * Revision 1.1  1993/09/08  11:43:11  john
  29.  * Initial revision
  30.  * 
  31.  *
  32.  */
  33.  
  34. #include "mem.h"
  35.  
  36.  
  37. #include "gr.h"
  38. #include "grdef.h"
  39.  
  40. void gr_ubox0(int left,int top,int right,int bot)
  41. {
  42.     int i, d;
  43.  
  44.     unsigned char * ptr1;
  45.     unsigned char * ptr2;
  46.  
  47.     ptr1 = DATA + ROWSIZE *top+left;
  48.  
  49.     ptr2 = ptr1;
  50.     d = right - left;
  51.  
  52.     for (i=top; i<=bot; i++ )
  53.     {
  54.         ptr2[0] = COLOR;
  55.         ptr2[d] = COLOR;
  56.         ptr2 += ROWSIZE;
  57.     }
  58.  
  59.     ptr2 = ptr1;
  60.     d = (bot - top)*ROWSIZE;
  61.  
  62.     for (i=1; i<(right-left); i++ )
  63.     {
  64.         ptr2[i+0] = COLOR;
  65.         ptr2[i+d] = COLOR;
  66.     }
  67. }
  68.  
  69. void gr_box0(int left,int top,int right,int bot)
  70. {
  71.     if (top > MAXY ) return;
  72.     if (bot < MINY ) return;
  73.     if (left > MAXX ) return;
  74.     if (right < MINX ) return;
  75.     
  76.     if (top < MINY) top = MINY;
  77.     if (bot > MAXY ) bot = MAXY;
  78.     if (left < MINX) left = MINX;
  79.     if (right > MAXX ) right = MAXX;
  80.  
  81.     gr_ubox0(left,top,right,bot);
  82.  
  83. }
  84.  
  85.  
  86. void gr_ubox12(int left,int top,int right,int bot)
  87. {
  88.     int i;
  89.  
  90.     for (i=top; i<=bot; i++ )
  91.     {
  92.         gr_upixel( left, i );
  93.         gr_upixel( right, i );
  94.     }
  95.  
  96.     gr_uscanline( left, right, top );
  97.  
  98.     gr_uscanline( left, right, bot );
  99. }
  100.  
  101. void gr_box12(int left,int top,int right,int bot)
  102. {
  103.     if (top > MAXY ) return;
  104.     if (bot < MINY ) return;
  105.     if (left > MAXX ) return;
  106.     if (right < MINX ) return;
  107.     
  108.     if (top < MINY) top = MINY;
  109.     if (bot > MAXY ) bot = MAXY;
  110.     if (left < MINX) left = MINX;
  111.     if (right > MAXX ) right = MAXX;
  112.         
  113.     gr_ubox12(left, top, right, bot );
  114.     
  115. }
  116.  
  117. void gr_ubox(int left,int top,int right,int bot)
  118. {
  119.     if (TYPE==BM_LINEAR)
  120.         gr_ubox0( left, top, right, bot );
  121.  
  122.     else if ( TYPE == BM_MODEX )
  123.         gr_ubox12( left, top, right, bot );
  124.  
  125.     else
  126.         gr_ubox12( left, top, right, bot );
  127. }
  128.  
  129. void gr_box(int left,int top,int right,int bot)
  130. {
  131.     if (TYPE==BM_LINEAR)
  132.         gr_box0( left, top, right, bot );
  133.  
  134.     else if ( TYPE == BM_MODEX )
  135.         gr_box12( left, top, right, bot );
  136.     
  137.     else
  138.         gr_ubox12( left, top, right, bot );
  139. }
  140. 
  141.