#include <Slang/ecra.H>
Mostrar lista completa dos membros
Membros públicos | |
| Ecra (Cor texto=branco, Cor fundo=preto, bool limita_cursor=false) | |
| Construtor da classe. Mais... | |
| ~Ecra () | |
| Destrutor da classe. Mais... | |
| Ecra const& | operator>> (Troco &troco) const |
| Operador de extracção de um troço do ecrã. Mais... | |
| Ecra& | operator<< (Fundo const &) |
| Ecra& | operator<< (Parado const &) |
| Ecra& | operator<< (Justificacao const &) |
| Ecra& | operator<< (Largura const &) |
| Ecra& | operator<< (Linha const &) |
| Ecra& | operator<< (Refresca const &) |
| Ecra& | operator<< (RefrescaTudo const &) |
| Ecra& | operator<< (Apaga const &) |
| Ecra& | operator<< (ApagaFimDaLinha const &) |
| Ecra& | operator<< (ApagaFimDoEcra const &) |
| Ecra& | operator<< (Campainha const &) |
Inspectores | |
| Dimensao | dimensao () const |
| Devolve a dimensão corrente do ecrã. Mais... | |
| Posicao | cursor () const |
| Devolve a posição do cursor. Mais... | |
| bool | redimensionado () const |
| Indica se o ecrã foi redimensionado ou não. Mais... | |
Modificadores | |
| void | atributos (Cor texto, Cor fundo) |
| Modifica a cor por omissão, i.e., a cor das células que constituem o fundo do ecrã. Mais... | |
| void | cursor (Posicao const &posicao) |
| Modifica a posição do cursor. Mais... | |
| void | cima () |
| Desloca cursor uma linha para cima. Mais... | |
| void | baixo () |
| Desloca cursor uma linha para baixo. Mais... | |
| void | esquerda () |
| Desloca cursor uma coluna para a esquerda. Mais... | |
| void | direita () |
| Desloca cursor uma coluna para a direita. Mais... | |
| void | desloca (Tecla const &tecla) |
| Desloca cursor na direcção indicada pela tecla. Mais... | |
Métodos para cópia e cola de troços de ecrã | |
| Troco | copia (Caixa const &caixa) const |
| Devolve uma cópia de um troço do ecrã. Mais... | |
| Troco | copia () const |
| Devolve uma cópia do ecrã inteiro. Mais... | |
| 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. Mais... | |
| void | cola (Troco const &troco, Posicao const &origem=Posicao()) |
| Cola no ecrã, na posição indicada, um troço de ecrã. Mais... | |
Métodos para desenhar no ecrã | |
| void | campainha () const |
| Toca a "campaínha" (normalmente o ecrã pisca). Mais... | |
| void | apagaFimDaLinha () |
| Apaga (i.e., pinta com cor do fundo) até ao fim da linha do cursor. Mais... | |
| void | apagaFimDoEcra () |
| Apaga (i.e., pinta com cor do fundo) até ao fim do ecrã a partir do cursor. Mais... | |
| void | apaga () |
| Apaga (i.e., pinta com cor do fundo) todo o ecrã. Mais... | |
| void | refresca () const |
| Refresca o ecrã, ou seja, reflecte no ecrã real as últimas alterações realizadas no ecrã virtual. Mais... | |
| void | refrescaTudo () const |
| Refresca totalmente o ecrã, ou seja, reflecte no ecrã real todo o ecrã virtual. Mais... | |
| void | desenhaCaixa (Caixa const &caixa) |
| Desenha uma caixa no ecrã, sendo a borda desenhada com caracteres especiais. Mais... | |
Operadores de inserção no ecrã de tipos usuais | |
| Ecra& | operator<< (char c) |
| Insere um caracter na posição do cursor. Mais... | |
| Ecra& | operator<< (int i) |
| Insere um número inteiro na base 10 na posição do cursor. Mais... | |
| Ecra& | operator<< (string c) |
| Insere uma cadeia de caracteres na posição do cursor. Mais... | |
Operadores de inserção de objectos especiais no ecrã | |
| Ecra& | operator<< (Caixa const &caixa) |
| Desenha uma caixa no ecrã, sendo a borda desenhada com caracteres especiais. Mais... | |
| Ecra& | operator<< (Simbolo simbolo) |
| Desenha um símbolo especial no ecra. Mais... | |
| Ecra& | operator<< (Troco const &troco) |
| Cola no ecrã, na posição do cursor, um troço de ecrã. Mais... | |
| Ecra& | operator<< (Posicao const &posicao) |
| Altera a posição do cursor para a posição dada. Mais... | |
| Ecra& | operator<< (ObjectoCor const &objecto_cor) |
| Altera o objecto cor das próximas operações de escrita no ecrã (com excepção das colagens!). Mais... | |
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!
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(Posicao(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();
}
}
Definido na linha 540 do ficheiro ecra.H.
|
|
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
|
|
|
Destrutor da classe. Encarrega-se de finalizar o "screen management" Slang. Definido na linha 294 do ficheiro ecra_impl.H. 00294 {
00295 // Terminação do slang:
00296 SLsmg_reset_smg();
00297 }
|
|
|
Apaga (i.e., pinta com cor do fundo) todo o ecrã.
Definido na linha 411 do ficheiro ecra_impl.H. Referenciado por operator<<(). 00411 {
00412 verificaTamanho();
00413 SLsmg_cls();
00414 }
|
|
|
Apaga (i.e., pinta com cor do fundo) até ao fim da linha do cursor.
Definido na linha 401 do ficheiro ecra_impl.H. Referenciado por operator<<(). 00401 {
00402 verificaTamanho();
00403 SLsmg_erase_eol();
00404 }
|
|
|
Apaga (i.e., pinta com cor do fundo) até ao fim do ecrã a partir do cursor.
Definido na linha 406 do ficheiro ecra_impl.H. Referenciado por operator<<(). 00406 {
00407 verificaTamanho();
00408 SLsmg_erase_eos();
00409 }
|
|
|
Modifica a cor por omissão, i.e., a cor das células que constituem o fundo do ecrã.
Definido na linha 303 do ficheiro ecra_impl.H. 00303 {
00304 SLtt_set_color(0, 0, nome_de_cor[texto], nome_de_cor[fundo]);
00305 }
|
|
|
Desloca cursor uma linha para baixo.
Definido na linha 365 do ficheiro ecra_impl.H. Referenciado por desloca(). |
|
|
Toca a "campaínha" (normalmente o ecrã pisca).
Definido na linha 396 do ficheiro ecra_impl.H. Referenciado por operator<<(). 00396 {
00397 verificaTamanho();
00398 SLtt_beep();
00399 }
|
|
|
Desloca cursor uma linha para cima.
Definido na linha 361 do ficheiro ecra_impl.H. Referenciado por desloca(). |
|
|
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.
Referenciado por operator<<(). |
|
|
Devolve uma cópia do troço de ecrã com um dada dimensão e com origem na posição corrente do cursor.
Definido na linha 325 do ficheiro ecra_impl.H. |
|
|
Devolve uma cópia do ecrã inteiro.
Definido na linha 329 do ficheiro ecra_impl.H. Referenciado por copia(). |
|
|
Devolve uma cópia de um troço do ecrã.
|
|
|
Modifica a posição do cursor.
Definido na linha 333 do ficheiro ecra_impl.H. 00333 {
00334 verificaTamanho();
00335 int linha = posicao.linha();
00336 int coluna = posicao.coluna();
00337 if(limita_cursor) {
00338 if(linha >= dimensao().linhas()) linha = dimensao().linhas() - 1;
00339 else if(linha < 0) linha = 0;
00340
00341 if(coluna >= dimensao().colunas()) coluna = dimensao().colunas() - 1;
00342 else if(coluna < 0) coluna = 0;
00343 }
00344 SLsmg_gotorc(linha, coluna);
00345 }
|
|
|
Devolve a posição do cursor.
Definido na linha 312 do ficheiro ecra_impl.H. Referenciado por baixo(), cima(), copia(), desenhaCaixa(), direita(), esquerda(), e operator<<(). 00312 {
00313 return Posicao(SLsmg_get_row(), SLsmg_get_column());
00314 }
|
|
|
Desenha uma caixa no ecrã, sendo a borda desenhada com caracteres especiais.
Definido na linha 428 do ficheiro ecra_impl.H. Referenciado por operator<<(). 00429 {
00430 verificaTamanho();
00431 // Guardar cursor inicial:
00432 Posicao posicao_original_do_cursor;
00433 if(para_no_proximo)
00434 posicao_original_do_cursor = cursor();
00435
00436 SLsmg_draw_box(caixa.origem().linha(), caixa.origem().coluna(),
00437 caixa.dimensao().linhas(), caixa.dimensao().colunas());
00438
00439 // Regressar ao cursor inicial:
00440 if(para_no_proximo) {
00441 cursor(posicao_original_do_cursor);
00442 para_no_proximo = false;
00443 }
00444 }
|
|
|
Desloca cursor na direcção indicada pela tecla.
Definido na linha 377 do ficheiro ecra_impl.H. |
|
|
Devolve a dimensão corrente do ecrã.
Definido na linha 307 do ficheiro ecra_impl.H. Referenciado por copia(), cursor(), e refrescaTudo(). 00307 {
00308 verificaTamanho();
00309 return Dimensao(SLtt_Screen_Rows, SLtt_Screen_Cols);
00310 }
|
|
|
Desloca cursor uma coluna para a direita.
Definido na linha 373 do ficheiro ecra_impl.H. Referenciado por desloca(). |
|
|
Desloca cursor uma coluna para a esquerda.
Definido na linha 369 do ficheiro ecra_impl.H. Referenciado por desloca(). |
|
|
Definido na linha 539 do ficheiro ecra_impl.H. 00539 {
00540 campainha();
00541 return *this;
00542 }
|
|
|
Definido na linha 534 do ficheiro ecra_impl.H. 00534 {
00535 apagaFimDoEcra();
00536 return *this;
00537 }
|
|
|
Definido na linha 529 do ficheiro ecra_impl.H. 00529 {
00530 apagaFimDaLinha();
00531 return *this;
00532 }
|
|
|
Definido na linha 524 do ficheiro ecra_impl.H. 00524 {
00525 apaga();
00526 return *this;
00527 }
|
|
|
Definido na linha 519 do ficheiro ecra_impl.H. 00519 {
00520 refrescaTudo();
00521 return *this;
00522 }
|
|
|
Definido na linha 514 do ficheiro ecra_impl.H. 00514 {
00515 refresca();
00516 return *this;
00517 }
|
|
|
Definido na linha 505 do ficheiro ecra_impl.H. 00505 {
00506 verificaTamanho();
00507 if(linha.horizontal)
00508 SLsmg_draw_hline(linha.dimensao);
00509 else
00510 SLsmg_draw_vline(linha.dimensao);
00511 return *this;
00512 }
|
|
|
Definido na linha 499 do ficheiro ecra_impl.H. 00499 {
00500 verificaTamanho();
00501 largura_do_proximo = l.largura;
00502 return *this;
00503 }
|
|
|
Definido na linha 493 do ficheiro ecra_impl.H. 00493 {
00494 verificaTamanho();
00495 justificacao = j;
00496 return *this;
00497 }
|
|
|
Definido na linha 487 do ficheiro ecra_impl.H. 00487 {
00488 verificaTamanho();
00489 para_no_proximo = true;
00490 return *this;
00491 }
|
|
|
Definido na linha 481 do ficheiro ecra_impl.H. 00481 {
00482 verificaTamanho();
00483 SLsmg_set_color(0);
00484 return *this;
00485 }
|
|
|
Altera o objecto cor das próximas operações de escrita no ecrã (com excepção das colagens!).
Definido na linha 475 do ficheiro ecra_impl.H. 00475 {
00476 verificaTamanho();
00477 SLsmg_set_color(o.objecto);
00478 return *this;
00479 }
|
|
|
Altera a posição do cursor para a posição dada.
Definido na linha 469 do ficheiro ecra_impl.H. 00469 {
00470 verificaTamanho();
00471 cursor(posicao);
00472 return *this;
00473 }
|
|
|
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.
Definido na linha 464 do ficheiro ecra_impl.H. |
|
|
Desenha um símbolo especial no ecra.
|
|
|
Desenha uma caixa no ecrã, sendo a borda desenhada com caracteres especiais.
Definido na linha 459 do ficheiro ecra_impl.H. 00459 {
00460 desenhaCaixa(caixa);
00461 return *this;
00462 }
|
|
|
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.
|
|
|
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.
Definido na linha 452 do ficheiro ecra_impl.H. 00452 {
00453 // Afazer: usar stringstream (ainda não há em Linux).
00454 char mal_feito[30];
00455 std::sprintf(mal_feito, "%d", i);
00456 return *this << mal_feito;
00457 }
|
|
|
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.
Definido na linha 446 do ficheiro ecra_impl.H. 00446 {
00447 string s;
00448 s += c;
00449 return *this << s;
00450 }
|
|
|
Operador de extracção de um troço do ecrã. Extrai um troço a partir da posição corrente do cursor.
|
|
|
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ã. Definido na linha 316 do ficheiro ecra_impl.H. 00316 {
00317 verificaTamanho();
00318 if(redimensionado_) {
00319 redimensionado_ = false;
00320 return true;
00321 }
00322 return false;
00323 }
|
|
|
Refresca o ecrã, ou seja, reflecte no ecrã real as últimas alterações realizadas no ecrã virtual.
Definido na linha 423 do ficheiro ecra_impl.H. Referenciado por operator<<(), e refrescaTudo(). 00423 {
00424 verificaTamanho();
00425 SLsmg_refresh();
00426 }
|
|
|
Refresca totalmente o ecrã, ou seja, reflecte no ecrã real todo o ecrã virtual.
Definido na linha 416 do ficheiro ecra_impl.H. Referenciado por operator<<(). |
1.2.6 escrito por Dimitri van Heesch,
© 1997-2001