Home   Package List   Routine Alphabetical List   Global Alphabetical List   FileMan Files List   FileMan Sub-Files List   Package Component Lists   Package-Namespace Mapping  
Routine: XGSBOX

XGSBOX.m

Go to the documentation of this file.
  1. XGSBOX ;SFISC/VYD - screen rectengular region primitives ;10/31/94 15:38 [ 04/02/2003 8:29 AM ]
  1. ;;8.0;KERNEL;**1002,1003,1004,1005,1007**;APR 1, 2003
  1. ;;8.0;KERNEL;;Jul 10, 1995
  1. FRAME(T,L,B,R,A,C) ;draw a border
  1. ;TOP,LEFT,BOTTOM,RIGHT,ATTRIBUTE,frame character
  1. N %,%L2,%R2,M,S,X,Y ;M=middle S=string
  1. N XGSAVATR
  1. I B'>T N IOBLC,IOBRC S (IOBLC,IOBRC)=IOHL ;to draw horizontal line
  1. I R'>L N IOTRC,IOBRC S (IOTRC,IOBRC)=IOVL ;to draw vertical line
  1. S M=R-L-1
  1. S %L2=L+1,%R2=R+1
  1. ;if frame character passed set frame parts to it, disable graphics
  1. S:$L($G(C)) (IOBLC,IOBRC,IOHL,IOTLC,IOTRC,IOVL)=C
  1. S XGSAVATR=XGCURATR ;save current screen attributes
  1. W $$CHG^XGSA($G(A)_$S($L($G(C)):"",1:"G1")) ;turn on gr attr & leave on
  1. S S=IOTLC_$TR($J("",M)," ",IOHL)_IOTRC
  1. S $E(XGSCRN(T,0),%L2,%R2)=S
  1. S $E(XGSCRN(T,1),%L2,%R2)=$TR($J("",(R-L+1))," ",XGCURATR)
  1. W $$IOXY^XGS(T,L)_S ;top line with corners
  1. F Y=T+1:1:B-1 D
  1. . F X=%L2,%R2 S $E(XGSCRN(Y,0),X)=IOVL,$E(XGSCRN(Y,1),X)=XGCURATR
  1. . W $$IOXY^XGS(Y,L)_IOVL_$$IOXY^XGS(Y,R)_IOVL
  1. S S=IOBLC_$TR($J("",M)," ",IOHL)_IOBRC
  1. S $E(XGSCRN(B,0),%L2,%R2)=S
  1. S $E(XGSCRN(B,1),%L2,%R2)=$TR($J("",(R-L+1))," ",XGCURATR)
  1. W $$IOXY^XGS(B,L)_S ;bottom line with corners
  1. W $$SET^XGSA(XGSAVATR) ;restore previous attributes
  1. D:$L($G(C)) GSET^%ZISS ;restore line drawing characters
  1. S $Y=B,$X=R
  1. Q
  1. ;
  1. CLEAR(T,L,B,R) ;clear a portion of the screen
  1. N %L2,%R2,I,M ;M=length of middle
  1. S %L2=L+1,%R2=R+1,M=R-L+1
  1. F I=T:1:B D
  1. . S $E(XGSCRN(I,0),%L2,%R2)=$J("",M)
  1. . S $E(XGSCRN(I,1),%L2,%R2)=$TR($J("",M)," ",XGCURATR)
  1. . W $$IOXY^XGS(I,L)_$J("",M)
  1. S $Y=B,$X=R
  1. Q