home *** CD-ROM | disk | FTP | other *** search
- <<* GENBOX.INC *>>
- <<#pragma
-
- procedure GenBox
- logical IsDoubleBox,IsSingleBox
- integer cp,boxlen
- string box,boxtmp
-
-
- procedure GenSimpleBox( box : string )
- integer row
- string boxtmp
- begin
- if (fldwid = 0) and (flddec = 0) <<*Empty Box*>>
- GenSay( fldrow,fldcol,'■' )
- elsif (flddec = 0) <<*HOR line*>>
- GenSay( fldrow,fldcol,replicate( box[2],fldwid+1 ) )
- elsif (fldwid = 0) <<*VER line*>>
- for row := fldrow to fldrow + flddec
- GenSay( row,fldcol,box[4] )
- end
- elsif (box = space(8)) <<*Inverse Box*>>
- for row := fldrow to fldrow + flddec
- GenSay( row,fldcol,space(fldwid+1) )
- end
- else <<*BOX*>>
- boxtmp := box[1] + replicate( box[2],fldwid-1 ) + box[3]
- GenSay( fldrow,fldcol,boxtmp )
- for row := (fldrow + 1) to (fldrow + flddec - 1)
- GenSay( row,fldcol,box[4] )
- GenSay( row,fldcol+fldwid,box[5] )
- end
- boxtmp := box[6] + replicate( box[7],fldwid-1 ) + box[8]
- GenSay( fldrow+flddec,fldcol,boxtmp )
- end
- end <<*GenSimpleBox*>>
-
-
- procedure GenSingleDouble
- begin
- gen( '@ ',str(fldrow),',',str(fldcol) )
- gen( ' TO ',str(fldrow+flddec),',',str(fldcol+fldwid) )
- if IsDoubleBox
- gen( ' DOUBLE' )
- endif
- genln
- end <<*GenSingleDouble*>>
-
-
- procedure GenCharsBox
- begin
- gen( '@ ',str(fldrow),',',str(fldcol),',' )
- gen( str(fldrow+flddec),',',str(fldcol+fldwid) )
- gen( ' BOX "' )
- <<*Swap Chars*>>
- boxtmp := substr(box,1,3)+box[5]+box[8]+box[7]+box[6]+box[4]
- if isctrl( boxtmp )
- cp := 1
- boxlen := len( boxtmp )
- cp := GenCtrlSeq( boxtmp,cp,boxlen )
- else
- gen( boxtmp )
- endif
- genln( '"' )
- end <<*GenCharsBox*>>
-
-
- begin <<*GenBox*>>
- box := fldlab <<*8 bytes*>>
- if (box = space(8)) <<*Inverse Box*>>
- GenSimpleBox( box )
- else <<*BIG CASE*>>
- IsDoubleBox := (box = '╔═╗║║╚═╝')
- IsSingleBox := (box = '┌─┐││└─┘')
- if (IsSingleBox or IsDoubleBox)
- GenSingleDouble
- else
- GenCharsBox
- endif
- end
- end <<*GenBox*>>
-
- <<* EOF: GENBOX.INC *>>
- #>>