#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<<(). |