home *** CD-ROM | disk | FTP | other *** search
/ WarCraft 2000 - Nuclear Epidemic / W2000.nrg / SOURCE.War2000 / Lines.cpp < prev    next >
C/C++ Source or Header  |  1998-04-17  |  1KB  |  65 lines

  1. /* Horisontal and vertical lines,rectangles*/
  2. #include "ddini.h"
  3. #include "ResFile.h"
  4. #include "FastDraw.h"
  5. #include "mgraph.h"
  6. #include "mouse.h"
  7. #include "menu.h"
  8. #include "MapDiscr.h"
  9. void Hline(int x,int y,int xend,char c){
  10.     if(y<WindY||y>WindY1)return;
  11.     int xr;
  12.     int Lxr;
  13.     if(xend>=x){
  14.         if(x>WindX1)return;
  15.         if(x<WindX)xr=WindX; else xr=x;
  16.         if(xend>WindX1)Lxr=WindX1-xr+1;else Lxr=xend-xr+1;
  17.     }else{
  18.         if(xend>WindX1)return;
  19.         if(xend<WindX)xr=WindX; else xr=xend;
  20.         if(x>WindX1)Lxr=WindX1-xr+1;else Lxr=x-xr+1;
  21.     };
  22.     int scr=int(ScreenPtr)+xr+y*ScrWidth;
  23.     if(Lxr<=0)return;
  24.     __asm{
  25.         mov        edi,scr
  26.         mov        al,c
  27.         mov        ecx,Lxr
  28.         cld
  29.         rep        stosb
  30.     };
  31. };
  32. void Vline(int x,int y,int yend,char c){
  33.     if(x<WindX||x>WindX1)return;
  34.     int yr;
  35.     int Lyr;
  36.     if(yend>=y){
  37.         if(y>WindY1)return;
  38.         if(y<WindY)yr=WindY; else yr=y;
  39.         if(yend<WindY)return;
  40.         if(yend>WindY1)Lyr=WindY1-yr+1;else Lyr=yend-yr+1;
  41.     }else{
  42.         if(yend>WindY1)return;
  43.         if(yend<WindY)yr=WindY; else yr=yend;
  44.         if(y>WindY1)Lyr=WindY1-yr+1;else Lyr=y-yr+1;
  45.     };
  46.     int scr=int(ScreenPtr)+x+yr*ScrWidth;
  47.     if(Lyr<=0)return;
  48.     __asm{
  49.         mov        edi,scr
  50.         mov        al,c
  51.         mov        ecx,Lyr
  52.         mov        edx,ScrWidth
  53.         dec        edx
  54.         cld
  55. uuuuu:    stosb
  56.         add        edi,edx
  57.         loop    uuuuu
  58.     };
  59. };
  60. void Xbar(int x,int y,int lx,int ly,char c){
  61.     Hline(x,y,x+lx-1,c);
  62.     Hline(x,y+ly-1,x+lx-1,c);
  63.     Vline(x,y,y+ly-1,c);
  64.     Vline(x+lx-1,y,y+ly-1,c);
  65. };