| La procedura è scritta
in Pascal:
| Essa organizza i parametri al fine
di stampare un'area ci spazi colorati con bordo scelto con tecnica
di tipo CASE .. OF |
| Sebbene non abbia senso passare le
dimensioni massime (perché verrebbe stampata una cornice senza ombra) la
procedura prevede anche questa eventualità stampando l'ultimo carattere
a basso livello con
la
STAchr,
per evitare i noti problemi di scrolling verso l’alto di una riga di tutta
l’immagine legati alla eventuale stampa in posizione [80,25]. |
| Naturalmente la stampa dell'ombra lascia
inalterato il carattere Ascii sottostante, cambiandone solo il colore con
l'aiuto della
ATTRchr. |
Codice Sorgente |
|
|
|
|
PROCEDURE
Cornice2 (rig,col,lar,alt,txt,sfo,ombP,ombS,tipo:integer);
VAR
n,m:integer;
chr:array[1..6] of char;
BEGIN
CASE tipo OF
1: chr:=('');
2: chr:=('');
3: chr:=('');
4: chr:=('');
5: chr:=('');
6: chr:=('');
end;
textcolor(txt);textbackground(sfo);
gotoxy(col,rig);
write(' ',chr[1]); {**************************}
FOR n:=1 to lar-4 do
{
}
IF (tipo=5) THEN
{Stampa il tratto
superiore}
write ('')
{della cornice
}
ELSE
{(se "lar"=4 non esegue il}
write(chr[5]);
{ loop)
}
write(chr[2],' ');
{**************************}
alt-2 do
{**************************}
begin
{Stampa il tratto centrale}
col,rig+m);
{della cornice con l'ombra}
write(' ',chr[6]);
{di 2 caratteri posti a }
FOR n:=1 to lar-4 do
{
}
write(' ');
{
}
write(chr[6],' ');
{*********
}
Attrchr(rig+m,lar+col
,ombP,ombS);{
}
Attrchr(rig+m,lar+col+1,ombP,ombS);{
}
end;
{*****************}
gotoxy(col,rig+alt-1);
{*************************}
write(' ',chr[3]);
{Stampa il tratto inferio-}
FOR n:=1 to (lar-4) do {re della cornice con }
IF (tipo=5) THEN
{l'ombra di un carattere }
write ('')
{posto
sotto
}
ELSE
{
}
write(chr[5]);
{
}
write(chr[4]);
{*************
}
STAchr(rig+alt-1,col+lar-1,txt,sfo,'
'); {
}
IF lar<80 THEN
{
}
Attrchr(rig+alt-1,lar+col
,ombP,ombS); {
}
IF lar<79 THEN
{
}
Attrchr(rig+alt-1,lar+col+1,ombP,ombS);
{************}
IF lar=79 THEN
lar:=lar-1;
{*****************}
IF lar=80 THEN
lar:=lar-2;
{Stampa l'ombra }
FOR n:=1 to (lar) do
{sottostante
}
Attrchr(rig+alt,col+n+1,ombP,ombS);{*****************}
END; |
|