Clipper - Como o Clipper grava o vídeo com a função SaveScreen


Na linguagem Clipper, existem duas funções que permitem gravar e recuperar o vídeo, total ou parcialmente: a função SaveScreen e a função RestScreen. A primeira permite armazenar em uma variável do tipo ‘character’ o conteúdo de uma região do vídeo e a segunda permite recuperar o conteúdo armazenado. Conhecer como o vídeo é armazenado em uma variável abre caminho para uma série de possibilidades, como a criação de efeitos especiais por exemplo.

Quando uma tela ou parte dela é gravada em uma variável, a função SaveScreen armazena a informação de forma seqüencial: primeira linha, segunda linha, terceira linha e assim por diante. O conteúdo de cada linha é armazenado da esquerda para a direita. Cada caractere ocupa duas posições na variável de armazenamento: a primeira posição armazena o código ASCII do caractere e a segunda posição armazena os atributos (cores de frente e de fundo).

Desta forma, uma linha de 80 colunas necessita de 160 posições para ser armazenada: 80 para o conteúdo e 80 para os atributos. Neste ponto, deve ficar claro que as posições ímpares (1,3,5,7,…) guardam os caracteres presentes na região armazenada e as posições pares (2,4,6,8,…) guardam os atributos destes caracteres.

Os atributos de um caractere indicam a suas cores. A fórmula para se calcular o valor dos atributos de um determinado caractere é a seguinte:

nAtributo := CorDeFrente + CorDeFundo * 16

Com a tela armazenada em uma variável, é possível usar as funções de manipulação de ’strings’ do Clipper para modificar a informação gravada. Ao ser usada a função RestScreen para restaurar o conteúdo da tela, estará sendo restaurada a tela modificada.

Autor/fonte: Marcos Gambeta