Esta classe é um solitão: a sua única instância representa o ecrã.
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:
- inspeccionar a dimensão do ecrã e a posição do cursor;
- verificar se o ecrã foi redimensionado;
- modificar a posição do cursor (de várias formas diferentes);
- copiar (copy) ou colar (paste) um troço de/para uma posição do ecrã;
- apagar várias partes do ecrã;
- refrescar o ecrã;
- desenhar uma caixa no ecrã;
- enviar para o ecrã um caractere, um inteiro, uma cadeia de caracteres, uma caixa, um troço ou um dos manipuladores definidos;
- etc.
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(); } }
~Ecra()
Inspectores
Dimensao dimensao() const
Coordenada cursor() const
bool redimensionado() const
Modificadores
void atributos(Cor texto, Cor fundo)
fundo - Nova cor do fundo para as células do fundo do ecrã.
void cursor(Coordenada const& posicao)
void cima()
void baixo()
void esquerda()
void direita()
void desloca(Tecla const& tecla)
Métodos para cópia e cola de troços de ecrã
Troco copia(Caixa const& caixa) const
Troco copia() const
Troco copia(Dimensao const& dimensao) const
void cola(Troco const& troco, Coordenada const& origem = Coordenada())
origem - Posição onde o troço deve ser colado (por omissão
cola no canto superior esquerdo do ecrã).
Métodos para desenhar no ecrã
void campainha() const
void apagaFimDaLinha()
void apagaFimDoEcra()
void apaga()
void refresca() const
void refrescaTudo() const
void desenhaCaixa(Caixa const& caixa)
Operadores de inserção no ecrã de tipos usuais
Ecra& operator << (char c)
Ecra& operator << (int i)
Ecra& operator << (string const& c)
Operadores de inserção de objectos especiais no ecrã
Ecra& operator << (Caixa const& caixa)
Ecra& operator << (Troco const& troco)
Ecra& operator << (Coordenada const& posicao)
Ecra& operator << (ObjectoCor const& objecto_cor)
Ecra const& operator >> (Troco& troco) const