­ì©lµ{¦¡

UDrawBox
­ì©lÀɡа_©l
#include "w_obj.h"

/*================================================================*/
void  UDrawBox(int X1,int Y1,int X2,int Y2,int attr,int clear,int shadow,int type)
{                             /* X2 ¬°³Ì¥~¤@¦æ,¦]®Ø¬°2byte,µe®É·|¥Ñ«e¤@¦æµe*/
   int i,j;
   char *l_u, *r_u, *l_d, *r_d, *h_line, *v_line;

   switch(type)
   {
      case 1:                         /* 1 line box */
         l_u =     "¢z" ;
         r_u =     "¢{" ;
         l_d =     "¢|" ;
         r_d =     "¢}" ;
         h_line =  "¢w" ;
         v_line =  "¢x" ;
         break;
      case 2:         /* 2 line box */
         l_u =     "ùÝ" ;
         r_u =     "ùß" ;
         l_d =     "ùã" ;
         r_d =     "ùå" ;
         h_line =  "ùù" ;
         v_line =  "ùø" ;
         break;
      case 3:         /* thick line box */
         l_u =     "¢~" ;
         r_u =     "¢¡" ;
         l_d =     "¢¢" ;
         r_d =     "¢£" ;
         h_line =  "ùù" ;
         v_line =  "ùø" ;
         break;
   }

   UShowS(X1  ,Y1,l_u,attr);
   UShowS(X1  ,Y2,l_d,attr);
   UShowS(X2-1,Y1,r_u,attr);
   UShowS(X2-1,Y2,r_d,attr);
   for (i=X1+2; i<X2-2; i+=2)
   {   UShowS(i,Y1,h_line,attr);
       UShowS(i,Y2,h_line,attr);
   }
   for (i=Y1+1; i<Y2; i++)
   {   UShowS(X1  ,i,v_line,attr);
       UShowS(X2-1,i,v_line,attr);
   }
   if (clear)
      UScroll(0,X1+2,Y1+1,X2-2,Y2-1,clear);
   if (shadow)
   {
      V_PTR v_ptr = video_base + (X1+1)*2 + Y2*160 + 1;   /* bottom shadow */
      for (i=0; i < X2-X1+1; i++)
      {
         *v_ptr = *v_ptr & 0x07;
         v_ptr += 2;
      }

      v_ptr = video_base + (X2)*2 + Y1*160 + 1;        /* right shadow */
      for (i=0; i < Y2-Y1; i++)
      {
         *v_ptr = *v_ptr & 0x07;
         v_ptr += 2;
         *v_ptr = *v_ptr & 0x07;
         v_ptr += 160 - 2;
      }
   }
}
­ì©lÀɡе²§ô

Byron Wey¡@¡@Oct.21.1998


¦^­º­¶¡D¢Ñ¤§«°