class Slang::Ecra

Esta classe é um solitão: a sua única instância representa o ecrã.

Public Classes

class ObjectoCor
Esta classe é usada para indicar a cor das células do ecrã (as células têm uma cor de texto e outra de fundo).
class Troco
Esta classe serve para representar um troço de ecrã.

Public Methods

[more]explicit Ecra(Cor texto = branco, Cor fundo = preto, bool limita_cursor = false)
Construtor da classe.
[more] ~Ecra()
Destrutor da classe.
[more]Ecra const& operator >> (Troco& troco) const
Operadores de extracção de um troço do ecrã.

Public

[more] Inspectores

[more]Dimensao dimensao() const
Devolve a dimensão corrente do ecrã.
[more]Coordenada cursor() const
Devolve as coordenadas do ecrã.
[more]bool redimensionado() const
Indica se o ecrã foi redimensionado ou não.

[more] Modificadores

[more]void atributos(Cor texto, Cor fundo)
Modifica a cor por omissão, ie, a cor das células que constituem o fundo do ecrã.
[more]void cursor(Coordenada const& posicao)
Modifica a posição do cursor.
[more]void cima()
Desloca cursor uma linha para cima.
[more]void baixo()
Desloca cursor uma linha para baixo.
[more]void esquerda()
Desloca cursor uma coluna para a esquerda.
[more]void direita()
Desloca cursor uma coluna para a direita.
[more]void desloca(Tecla const& tecla)
Desloca cursor na direcção indicada pela tecla.

[more] Métodos para cópia e cola de troços de ecrã

[more]Troco copia(Caixa const& caixa) const
Devolve uma cópia de um troço do ecrã.
[more]Troco copia() const
Devolve uma cópia do ecrã inteiro.
[more]Troco copia(Dimensao const& dimensao) const
Devolve uma cópia do troço de ecrã com um dada dimensão e com origem na posição corrente do cursor.
[more]void cola(Troco const& troco, Coordenada const& origem = Coordenada())
Cola no ecrã, na posição indicada, um troço de ecrã.

[more] Métodos para desenhar no ecrã

[more]void campainha() const
Toca a "campaínha" (normalmente o ecrã pisca).
[more]void apagaFimDaLinha()
Apaga (ie, pinta com cor do fundo) até ao fim da linha do cursor.
[more]void apagaFimDoEcra()
Apaga (ie, pinta com cor do fundo) até ao fim do ecrã a partir do cursor.
[more]void apaga()
Apaga (i.e., pinta com cor do fundo) todo o ecrã.
[more]void refresca() const
Refresca o ecrã, ou seja, reflecte no ecrã real as últimas alterações realizadas no ecrã virtual.
[more]void refrescaTudo() const
Refresca totalmente o ecrã, ou seja, reflecte no ecrã real todo o ecrã virtual.
[more]void desenhaCaixa(Caixa const& caixa)
Desenha uma caixa no ecrã, sendo a borda desenhada com caracteres especiais.

[more] Operadores de inserção no ecrã de tipos usuais

[more]Ecra& operator << (char c)
Insere um caracter na posição do cursor.
[more]Ecra& operator << (int i)
Insere um número inteiro na base 10 na posição do cursor.
[more]Ecra& operator << (string const& c)
Insere uma cadeia de caracteres na posição do cursor.

[more] Operadores de inserção de objectos especiais no ecrã

[more]Ecra& operator << (Caixa const& caixa)
Desenha uma caixa no ecrã, sendo a borda desenhada com caracteres especiais.
[more]Ecra& operator << (Troco const& troco)
Cola no ecrã, na posição do cursor, um troço de ecrã.
[more]Ecra& operator << (Coordenada const& posicao)
Altera a posição do cursor para a posição dada.
[more]Ecra& operator << (ObjectoCor const& objecto_cor)
Altera o objecto cor das próximas operações de escrita no ecrã (com excepção das colagens!).


Documentation

Esta classe é um solitão: a sua única instância representa o ecrã. Note-se que o ecrã é virtual. As alterações nele feitas só têm efeito no ecrã real depois de uma operação de refrescamento! Definida no módulo ecra (ficheiro de interface Slang/ecra.H).

O ecrã permite várias operações:

Exemplo

	// Cria uma caixa de dimensão 10×10 com origem na posição (0,0): 
	Caixa caixa(Coordenada(0, 0), Dimensao(10, 10));  
        
	// Copia o troço de ecrã que se encontra sob a caixa:
	Ecra::Troco troco = ecra.copia(caixa); 

	// Cria um novo ObjectoCor:
	Ecra::ObjectoCor cor(vermelho, verde);
	// Move o cursor para a posição (30,30), cola o troço copiado acima
	// nessa posição, muda a cor activa e refresca o ecrã de modo a que
	// estas modificações se tornem visíveis:
        ecra << cursor(30, 30)) << troco << cor  << refresca;
	

Atenção

As alterações só são visíveis depois de chamada uma das funções de refrescamento do ecrã. Quando há um redimensionamento do ecrã deve ser chamado o procedimento refrescaTudo(). Quando são feitas pequenas alterações deve ser chamado o procedimento refresca(). Também podem ser usados os manipuladores refresca e refresca_tudo para obter o mesmo efeito.

Exemplo de utilização

Este programa escreve no ecrã todas as letras do alfabeto (maiúsculas e minúsculas) e depois, a cada pressão de uma tecla, escreve os números de zero a nove com outra cor e com largura proporcional ao número escrito.

	#include <Slang/slang.H> 
	
	using namespace Slang; 
	
	extern "C" {
	#include <unistd.h>  // para sleep()
	}
	
	int main () 
	{ 
	    for(char c = 'a'; c != 'z' + 1; ++c) { 
		ecra << c << refresca; 
		sleep(1);
	    } 
	
	    teclado.tecla(); 
	
	    Ecra::ObjectoCor cor(amarelo, azul); 
	
	    ecra << cor << cursor(0, 0); 
	    for (int c = 0; c != 10; ++c) { 
		ecra.baixo(); 
		ecra << parado << largura(c) << char('0' + c) << refresca; 
		teclado.tecla();
	    } 
	} 
	
oexplicit Ecra(Cor texto = branco, Cor fundo = preto, bool limita_cursor = false)
Construtor da classe. Tal como a biblioteca se encontra definida, este construtor não pode ser usado directamente! No entanto, numa versão futura, onde não exista variável global para representar o ecrã, o programador utilizador pode vir a usá-lo. Encarrega-se de inicializar o "screen management" Slang. Se se construir com limita_cursor true, o ecrã garantirá que o cursor se encontra dentro dos seus limites em cada instante. Por omissão essa verificação não é feita.

Parameters:
texto - Cor do texto das chamadas células de fundo, para as quais não foi indicado qualquer objecto cor (cor por omissão).
fundo - Cor do fundo das chamadas células de fundo, para as quais não foi indicado qualquer objecto cor (cor por omissão).
limita_cursor - Indica se a posição do cursor deve ser limitada à dimensão do ecrã.

o ~Ecra()
Destrutor da classe. Encarrega-se de finalizar o "screen management" Slang.

o Inspectores

oDimensao dimensao() const
Devolve a dimensão corrente do ecrã.

oCoordenada cursor() const
Devolve as coordenadas do ecrã.

obool redimensionado() const
Indica se o ecrã foi redimensionado ou não. Isto é particularmente relevante se o programa estiver a correr numa consola dentro de um ambiente de janelas. Nessas circunstâncias o utilizador pode alterar a dimensão da janela, sendo com isso alterada a dimensão do ecrã. Se isso acontecer o programa deverá redesenhar e refrescar o ecrã.

o Modificadores

ovoid atributos(Cor texto, Cor fundo)
Modifica a cor por omissão, ie, a cor das células que constituem o fundo do ecrã.
Parameters:
texto - Nova cor do texto para as células do fundo do ecrã.
fundo - Nova cor do fundo para as células do fundo do ecrã.

ovoid cursor(Coordenada const& posicao)
Modifica a posição do cursor.
Parameters:
posicao - Nova posição do cursor: limitada ou não à dimensão do ecrã consoante o modo de construção do ecrã (por omissão não há limitação).

ovoid cima()
Desloca cursor uma linha para cima.

ovoid baixo()
Desloca cursor uma linha para baixo.

ovoid esquerda()
Desloca cursor uma coluna para a esquerda.

ovoid direita()
Desloca cursor uma coluna para a direita.

ovoid desloca(Tecla const& tecla)
Desloca cursor na direcção indicada pela tecla.
Parameters:
tecla - A tecla. Se for uma seta, o cursor é deslocado. Se não for, o cursor mantém-se.

o Métodos para cópia e cola de troços de ecrã

oTroco copia(Caixa const& caixa) const
Devolve uma cópia de um troço do ecrã.
Parameters:
caixa - O troço do ecrã é o que se encontra sob esta caixa.

oTroco copia() const
Devolve uma cópia do ecrã inteiro.

oTroco copia(Dimensao const& dimensao) const
Devolve uma cópia do troço de ecrã com um dada dimensão e com origem na posição corrente do cursor.
Parameters:
dimensao - A dimensão do troço.

ovoid cola(Troco const& troco, Coordenada const& origem = Coordenada())
Cola no ecrã, na posição indicada, um troço de ecrã. O cursor é deslocado para a posição imediatamente após a última coluna da última linha onde o troço foi colocado, a não ser que se tenha pedido para manter o cursor parado. Atenção! O objecto cor que estava a ser usado antes da colagem é perdido! As próximas escritas são feitas usando a cor do fundo.
Parameters:
troco - Troço a colar.
origem - Posição onde o troço deve ser colado (por omissão cola no canto superior esquerdo do ecrã).
See Also:
parado

o Métodos para desenhar no ecrã

ovoid campainha() const
Toca a "campaínha" (normalmente o ecrã pisca).

ovoid apagaFimDaLinha()
Apaga (ie, pinta com cor do fundo) até ao fim da linha do cursor.

ovoid apagaFimDoEcra()
Apaga (ie, pinta com cor do fundo) até ao fim do ecrã a partir do cursor.

ovoid apaga()
Apaga (i.e., pinta com cor do fundo) todo o ecrã.

ovoid refresca() const
Refresca o ecrã, ou seja, reflecte no ecrã real as últimas alterações realizadas no ecrã virtual.

ovoid refrescaTudo() const
Refresca totalmente o ecrã, ou seja, reflecte no ecrã real todo o ecrã virtual.

ovoid desenhaCaixa(Caixa const& caixa)
Desenha uma caixa no ecrã, sendo a borda desenhada com caracteres especiais.
Parameters:
caixa - Caixa a desenhar.

o Operadores de inserção no ecrã de tipos usuais

oEcra& operator << (char c)
Insere um caracter na posição do cursor. O cursor é deslocado uma posição para a direita, a não ser que se tenha pedido para manter o cursor parado. Se se tiver especificado uma largura antes, são acrescentados espaços até perfazer a largura indicada.
Parameters:
c - O caractere a inserir.
See Also:
parado
largura

oEcra& operator << (int i)
Insere um número inteiro na base 10 na posição do cursor. O cursor é deslocado para a posição à direita do último dígito escrito, a não ser que se tenha pedido para manter o cursor parado. Se se tiver especificado uma largura antes, são acrescentados espaços até perfazer a largura indicada. Se a largura for insuficiente para representar o inteiro, só são mostrados os primeiros dígitos.
Parameters:
i - O inteiro a inserir.
See Also:
parado
largura

oEcra& operator << (string const& c)
Insere uma cadeia de caracteres na posição do cursor. O cursor é deslocado para a posição à direita do último caractere escrito, a não ser que se tenha pedido para manter o cursor parado. Se se tiver especificado uma largura antes, são acrescentados espaços até perfazer a largura indicada. Se a cadeia for maior que a largura especificada, só são mostrados os primeiros caracteres.
Parameters:
c - A cadeia a inserir.
See Also:
parado
largura

o Operadores de inserção de objectos especiais no ecrã

oEcra& operator << (Caixa const& caixa)
Desenha uma caixa no ecrã, sendo a borda desenhada com caracteres especiais.
Parameters:
caixa - Caixa a desenhar.
See Also:
desenhaCaixa

oEcra& operator << (Troco const& troco)
Cola no ecrã, na posição do cursor, um troço de ecrã. O cursor é deslocado para a posição imediatamente após a última coluna da última linha onde o troço foi colocado, a não ser que se tenha pedido para manter o cursor parado.
Parameters:
troco - Troço a colar.
See Also:
parado
cola

oEcra& operator << (Coordenada const& posicao)
Altera a posição do cursor para a posição dada.
Parameters:
posicao - Nova posição do cursor.
See Also:
cursor

oEcra& operator << (ObjectoCor const& objecto_cor)
Altera o objecto cor das próximas operações de escrita no ecrã (com excepção das colagens!).
Parameters:
objecto_cor - Objecto cor a usar nas próximas escritas no ecrã.
See Also:
cola

oEcra const& operator >> (Troco& troco) const
Operadores de extracção de um troço do ecrã. Extrai um troço a partir da posição corrente do cursor.
Parameters:
troco - Troço a extrair (copiar).


This class has no child classes.