home *** CD-ROM | disk | FTP | other *** search
- *********************************************
- * FUNCTIONS FOR BOXES FOR Clipper SUMMER '87
- * and Compatible with Clipper 5.0
- * ebox(), mbox(), pbox(), dbox()
- *
- * ALL box funtions return the string for restoring the screen
- * with RESTSCREEN().
- *
- * If you find these functions useful, please let me know.
- * A contribution of $5.00 would'nt hurt either. ENJOY!!
- *
- *
- * by: DAVID TESSITORE
- * 15 Teed Street
- * Huntington Station, NY 11746
- *********************************************
-
- ***********************************************
- ****EXPLODING BOX***
- ****
- **** example: ebox(5,0,20,79,"GR+/R",30,1,.T.,"Dave's Menu","R/W")
- ****
- **********************************************
- FUNCTION ebox
- **********************************************
- PARAMETERS top,left,bottom,right,color,speed,boxtype,shadow,btitle,bcolor
- PRIVATE t,b,l,r,s,oldcolor,retscr,boxframe,seed1,seed2
- retscr=boxscr(top,left,bottom,right)
- oldcolor=SETCOLOR()
- boxframe=getbox(boxtype)
- seed1=INT((bottom-top)/2)
- seed2=INT((right-left)/2)
- t=top+seed1
- l=left+seed2
- b=t
- r=l
- SETCOLOR(color)
- SET CURSOR OFF
- DO WHILE ( t > top .AND. l > left) .AND. ( b < bottom .AND. r < right)
- @ t, l, b, r BOX boxframe
- t = t - 1
- l = l - ( seed2 / seed1)
- b = b + 1
- r = r + ( seed2 / seed1)
- FOR s= 1 TO speed
- NEXT s
- ENDDO
- @ top,left,bottom,right BOX boxframe
- IF shadow
- boxshadow(top,left,bottom,right)
- ENDIF
- IF PCOUNT() > 8
- SETCOLOR(bcolor)
- lenscr=((right-left)/2)+left
- @ top,lenscr - (LEN(btitle)/2) SAY btitle
- ENDIF
- SETCOLOR(oldcolor)
- SET CURSOR ON
- RETURN (retscr)
- ********************************************
- ** MIDDLE BOX
- ** example: mbox(5,0,20,79,"GR+/R",30,1,.T.,"Dave's Menu","R/W")
- **
- FUNCTION mbox
- *********************************************
- PARAMETERS top,left,bottom,right,color,speed,boxtype,shadow,btitle,bcolor
- PRIVATE t,b,l,r,s,oldcolor,retscr,boxframe
- retscr=boxscr(top,left,bottom,right)
- oldcolor=SETCOLOR()
- boxframe=getbox(boxtype)
- t=INT(top+(bottom-top)/2)
- b=t
- l=left
- r=right
- SETCOLOR(color)
- SET CURSOR OFF
- DO WHILE t > top .AND. b < bottom
- FOR s= 1 TO speed
- NEXT s
- @ t,l,b,r BOX boxframe
- t=t-1
- b=b+1
- ENDDO
- @ top,left,bottom,right BOX boxframe
- IF shadow
- boxshadow(top,left,bottom,right)
- ENDIF
- IF PCOUNT() > 8
- SETCOLOR(bcolor)
- lenscr=((right-left)/2)+left
- @ top,lenscr - (LEN(btitle)/2) SAY btitle
- ENDIF
- SETCOLOR(oldcolor)
- SET CURSOR ON
- RETURN (retscr)
- ********************************************
- ** POP BOX
- ** example: pbox(5,0,20,79,"GR+/R",30,1,.T.,"Dave's Menu","R/W")
- **
- FUNCTION pbox
- ********************************************
- PARAMETERS top,left,bottom,right,color,speed,boxtype,shadow,btitle,bcolor
- PRIVATE t,b,l,r,s,oldcolor,retscr,boxframe
- retscr=boxscr(top,left,bottom,right)
- oldcolor=SETCOLOR()
- boxframe=getbox(boxtype)
- t=bottom
- b=t
- l=left
- r=right
- SETCOLOR(color)
- SET CURSOR OFF
- DO WHILE t >= top
- FOR s=1 TO speed
- NEXT s
- @ t,l,b,r BOX boxframe
- t=t-1
- ENDDO
- IF shadow
- boxshadow(top,left,bottom,right)
- ENDIF
- IF PCOUNT() > 8
- SETCOLOR(bcolor)
- lenscr=((right-left)/2)+left
- @ top,lenscr - (LEN(btitle)/2) SAY btitle
- ENDIF
- SETCOLOR(oldcolor)
- SET CURSOR ON
- RETURN (retscr)
- ********************************************
- ** DROP BOX
- ** example: dbox(5,0,20,79,"GR+/R",30,1,.T.,"Dave's Menu","R/W")
- **
- FUNCTION dbox
- ********************************************
- PARAMETERS top,left,bottom,right,color,speed,boxtype,shadow,btitle,bcolor
- PRIVATE t,l,b,r,s,oldcolor,retscr,boxframe
- retscr=boxscr(top,left,bottom,right)
- oldcolor=SETCOLOR()
- boxframe=getbox(boxtype)
- t=top
- b=t
- l=left
- r=right
- SETCOLOR(color)
- SET CURSOR OFF
- DO WHILE b <= bottom
- FOR s= 1 TO speed
- NEXT s
- @ t,l,b,r BOX boxframe
- b=b+1
- ENDDO
- IF shadow
- boxshadow(top,left,bottom,right)
- ENDIF
- IF PCOUNT() > 8
- SETCOLOR(bcolor)
- lenscr=((right-left)/2)+left
- @ top,lenscr - (LEN(btitle)/2) SAY btitle
- ENDIF
- SETCOLOR(oldcolor)
- SET CURSOR ON
- RETURN (retscr)
-
- **************************************
- ** BOX SHADOW- GREY ON BLACK
- ****
- FUNCTION BoxShadow
- **************************************
- PARAMETERS top,left,bottom,right
- PRIVATE stop,sleft,sbottom,sright
-
- GREY_ON_BLACK="X"+CHR(8)
- stop=bottom+1
- sbottom=stop
- sleft=left+1
- sright=right+1
-
- DO CASE
- CASE bottom < 24 .AND. right < 79
- RESTSCREEN( sbottom, sleft,sbottom,sright,;
- TRANSFORM( SAVESCREEN(stop, sleft, sbottom, sright),;
- REPLICATE(GREY_ON_BLACK, sright - sleft + 1 ) ) )
- stop = top + 1
- sleft = right + 1
- sright = sleft
- sbottom= bottom +1
- RESTSCREEN( stop, sleft,sbottom,sright,;
- TRANSFORM( SAVESCREEN(stop, sleft, sbottom, sright),;
- REPLICATE(GREY_ON_BLACK, sbottom - stop + 1 ) ) )
- CASE bottom = 24 .AND. right < 79
- stop = top + 1
- sleft = right + 1
- sright = sleft
- sbottom = bottom
- RESTSCREEN( stop, sleft,sbottom,sright,;
- TRANSFORM( SAVESCREEN(stop, sleft, sbottom, sright),;
- REPLICATE(GREY_ON_BLACK, sbottom - stop + 1) ) )
- CASE bottom < 24 .AND. right = 79
- sright=right
- RESTSCREEN( sbottom, sleft,sbottom,sright,;
- TRANSFORM( SAVESCREEN(stop, sleft, sbottom, sright),;
- REPLICATE(GREY_ON_BLACK, sright - sleft + 1 ) ) )
- ENDCASE
- RETURN (.T.)
-
- ***************
- FUNCTION boxscr
- ***************
- PARAMETERS top,left,bottom,right
- PRIVATE retval
- DO CASE
- CASE bottom < 24 .AND. right < 79
- retval=SAVESCREEN(top, left, bottom+1, right+1)
- CASE bottom = 24 .AND. right < 79
- retval=SAVESCREEN(top, left, bottom, right+1)
- CASE bottom < 24 .AND. right = 79
- retval=SAVESCREEN(top, left, bottom+1, right)
- CASE bottom = 24 .AND. right = 79
- retval=SAVESCREEN(top, left, bottom, right)
- ENDCASE
- RETURN (retval)
-
-
- **************************************
- FUNCTION getbox
- *****************************************
- * Example:
- * scrframe=getbox(1)
- ****************************************
- PARAMETERS btype
-
- ****< BOXES DEFINED > ****
-
- **< Single-line box >**
- * ┌───┐
- * │ │
- * └───┘
- B_SINGLE=( CHR(218) + CHR(196) + CHR(191) + CHR(179) + ;
- CHR(217) + CHR(196) + CHR(192) + CHR(179) + " ")
-
- **< Double-line box >**
- * ╔═══╗
- * ║ ║
- * ╚═══╝
- B_DOUBLE=( CHR(201) + CHR(205) + CHR(187) + CHR(186) + ;
- CHR(188) + CHR(205) + CHR(200) + CHR(186) + " ")
-
- **< Single-line top, double-line sides >**
- * ╓───╖
- * ║ ║
- * ╙───╜
- B_SINGLE_DOUBLE=( CHR(214) + CHR(196) + CHR(183) + CHR(186) + ;
- CHR(189) + CHR(196) + CHR(211) + CHR(186) + " ")
-
- **< Double-line top, single-line sides >**
- * ╒═══╕
- * │ │
- * ╘═══╛
- B_DOUBLE_SINGLE=( CHR(213) + CHR(205) + CHR(184) + CHR(179) + ;
- CHR(190) + CHR(205) + CHR(212) + CHR(179) + " ")
-
- **< Thick box border all around >**
- * █████
- * █ █
- * █████
- B_THICK=(REPLICATE(CHR(219),8)+" ")
-
- **< Single-top and left, double-bottom and right-side >**
- * ┌───╖
- * │ ║
- * ╘═══╝
- B_SINGLE_DOUBLE_B=( CHR(218) + CHR(196) + CHR(183) + CHR(186) + ;
- CHR(188) + CHR(205) + CHR(212) + CHR(179) + " ")
-
- **< Double-top and left-side, single-bottom and right
- * ╔═══╕
- * ║ │
- * ╙───┘
- B_DOUBLE_SINGLE_B=( CHR(201) + CHR(205) + CHR(184) + CHR(179) + ;
- CHR(217) + CHR(196) + CHR(211) + CHR(186) + " ")
-
- **< Music symbol >**
- B_MUSIC=(REPLICATE(CHR(14),8)+" ")
-
- **< Heart symbol >**
- B_HEART=(REPLICATE(CHR(3),8)+" ")
-
- **< Diamond symbol >**
- B_DIAMOND=(REPLICATE(CHR(4),8)+" ")
-
- ************************
- DO CASE
- CASE btype=1
- RETURN(B_SINGLE)
- CASE btype=2
- RETURN(B_DOUBLE)
- CASE btype=3
- RETURN(B_SINGLE_DOUBLE)
- CASE btype=4
- RETURN(B_DOUBLE_SINGLE)
- CASE btype=5
- RETURN(B_THICK)
- CASE btype=6
- RETURN(B_SINGLE_DOUBLE_B)
- CASE btype=7
- RETURN(B_DOUBLE_SINGLE_B)
- CASE btype=8
- RETURN(B_MUSIC)
- CASE btype=9
- RETURN(B_HEART)
- CASE btype=10
- RETURN(B_DIAMOND)
- ENDCASE
-
-