Todos
os detalhes mostrados aqui deverão destar dentro da procedure
ExeLin.
.A
instrução CLS
deve, em primeiro lugar, verificar se vai ser processada na Tela
ou no Buffer, testando a flag Stb.
Feito isso, ela verifica se há parâmetro (Vs1).
Caso houver, o mesmo será usado como valor RGB da cor.
Caso contrário, a cor para limpar a tela será obtida
da variável 3:
//Limpa a tela/buffer if Cmd = 'cls' then begin if Stb then begin //limpa o buffer if Vs1 <> '' then Buf.Canvas.Brush.Color:= StrToInt(Vs1) else Buf.Canvas.Brush.Color:= Vars[3]; //paper Buf.Canvas.FillRect(rect(0,0,Buf.Width,Buf.Height)); end else begin //limpa a tela if Vs1 <>'' then Tela.Canvas.Brush.Color:= StrToInt(Vs1) else Tela.Canvas.Brush.Color:= Vars[3]; //paper Tela.Canvas.FillRect(rect(0,0,Tela.Width,Tela.Height)); end; exit; end;
|
A instrução
BUFFER é
processada segundo o parâmetro Vs1. Se
for "on" ela apenas "liga" a flag que redireciona
as impressões ou montagens:
//Liga/desliga o back buffer if Cmd = 'buffer' then begin if Vs1 = 'on' then Stb:= true else begin Stb:= false; Tela.Canvas.Draw(0,0,Buf); Tela.Repaint; end; exit; end;
|
A instrução
FIG usa uma procedure
do club TILT (DrawTrans)
para colocar a figura na tela com transparência. Se não
for preciso usar transparência, são usados os métodos
normais de trasnferência gráfica. O resto do procedimento
é parecido com a instrução CLS,
ou seja, primeiro identifica os parâmetros, depois decide
se a montagem vai para o Buffer ou Tela:
//Coloca uma figura na tela/buffer if Cmd = 'fig' then begin Fig:= TBitmap.Create; if Vs1 = '' then Vs1:= '"nome"'; Fig.LoadFromFile(copy(Vs1,2,length(Vs1)-2)+'.bmp'); if Vs2 = '' then Vs2:= '0'; if Vs2[1] = '#' then Px:= Vars[StrToInt(copy(Vs2,2,100))] else Px:= StrToInt(Vs2); if Vs3 = '' then Vs3:= '0'; if Vs3[1] = '#' then Py:= Vars[StrToInt(copy(Vs3,2,100))] else Py:= StrToInt(Vs3); if Vs4 = '' then Vs4:= '0'; if Vs4[1] = '#' then Pz:= Vars[StrToInt(copy(Vs4,2,100))] else Pz:= StrToInt(Vs4); if Pz = 0 then begin if Stb then DrawTrans(Buf.Canvas,Px,Py,Fig,0,0, Fig.Width,Fig.Height,Vars[9]) else DrawTrans(Tela.Canvas,Px,Py,Fig,0,0, Fig.Width,Fig.Height,Vars[9]); end else begin if Stb then BitBlt(Buf.Canvas.Handle,Px,Py,Fig.Width,Fig.Height, Fig.Canvas.Handle,0,0,srccopy) else Tela.Canvas.CopyRect(bounds(Px,Py,Fig.Width,Fig.Height), Fig.Canvas,bounds(0,0,Fig.Width,Fig.Height)); end; Fig.Free; exit; end;
|
A instrução
LET assume que
o primeiro parâmetro Vs1 é o índice
da variável e o segundo Vs2 o valor a
ser transferido para ele:
//Atribuição de variável if Cmd = 'let' then begin Vars[StrToInt(copy(Vs1,2,100))]:= StrToInt(Vs2); exit; end; |
|