Ficheiros | |
| file | ecra.C |
| Ficheiro de implementação do módulo ecras. | |
| file | caixa1.C |
| Programa que demostra o desenho de uma caixa no ecrã. | |
| file | campainha1.C |
| Este programa toca a campainha do ecrã a cada tecla premida, saindo quando se pressiona 's'. | |
| file | ecra1.C |
| Programa que demostra a utilização do ecrã de forma simples. | |
| file | ecra2.C |
| Programa que demostra a utilização do troços de ecrã e respectiva cópia e colagem. | |
| file | ecra3.C |
| Programa que permite ao utilizador deslocar o cursor através das setas do teclado, indicando em cada instante se o cursor está ou não visível. | |
| file | ecra4.C |
| Programa que demonstra que a alteração das cores do fundo do ecrã altera todas as células do ecrã que com ele tenham sido desenhadas. | |
| file | exemplo3.C |
| Programa que demostra a utilização do teclado e do ecrã de forma simples. | |
| file | justificacao1.C |
| Programa que demostra os vários tipos de justificação e o seu efeito. | |
| file | manipulador1.C |
| Programa que define um manipulador que move o cursor para uma posição arbitrária mas visível do ecrã. | |
| file | objectocor1.C |
| Programa que demostra o efeito dos objectos cor e da alterção das suas cores já depois de feitas inserções por seu intermédio. | |
| file | objectocor2.C |
| Programa que demonstra o efeito do tempo de vida sobre os objectos cor. | |
| file | objectocor3.C |
| Programa que demonstra que a alteração de um objecto cor altera todas as células do ecrã que com ele tenham sido desenhadas. | |
| file | segmentos1.C |
| Programa que demonstra a utilização de segmentos de recta horizontais e verticais. | |
| file | simbolo1.C |
| Programa que mostra os símbolos possíveis de inserir no ecrã. | |
| file | ecra.H |
| Ficheiro de interface do módulo ecras. | |
Componentes | |
| class | Posicao |
| Representa a posição de uma célula do ecrã. Mais... | |
| class | Dimensao |
| Representa uma dimensão em células do ecrã. Mais... | |
| class | Caixa |
| Representa caixas no ecrã. Mais... | |
| class | Ecra |
| Representa o ecrã. Mais... | |
| 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). Mais... | |
| class | Troco |
| Esta classe serve para representar um troço de ecrã. Mais... | |
Operadores associados ao tipo enumerado Cor | |
| std::ostream & | operator<< (std::ostream &saida, Cor const cor) |
| Insere uma cor num canal. | |
| std::istream & | operator>> (std::istream &entrada, Cor &cor) |
| Extrai uma cor de um canal. | |
| int const | numero_de_cores |
| Constante que guarda o número total de cores. | |
Manipuladores do ecrã | |
| Posicao const | cursor (int const linha, int const coluna) |
| Manipulador usado para colocar o cursor numa dada posição. | |
| Posicao const & | cursor (Posicao const &posicao) |
| Manipulador usado para colocar o cursor numa dada posição. | |
| Caixa const | caixa (int const linha, int const coluna, int const numero_de_linhas, int const numero_de_colunas) |
| Manipulador usado para desenhar uma caixa com caracteres especiais numa dada posição e com uma dada dimensão. | |
| Caixa const | caixa (Posicao const &origem=Posicao(), Dimensao const &dimensao=Dimensao()) |
| Manipulador usado para desenhar uma caixa com caracteres especiais numa dada posição e com uma dada dimensão. | |
| void | fundo (Ecra &ecra) |
| Manipulador usado para indicar que as próximas escritas devem ser realizadas usando a cor do fundo do ecrã. | |
| void | parado (Ecra &ecra) |
| Manipulador usado para manter o cursor na posição corrente durante a próxima operação de inserção no ecrã. | |
| void | sobeCursor (Ecra &ecra) |
| Manipulador usado para subir o cursor no ecrã. | |
| void | baixaCursor (Ecra &ecra) |
| Manipulador usado para baixar o cursor no ecrã. | |
| void | recuaCursor (Ecra &ecra) |
| Manipulador usado para recuar o cursor no ecrã. | |
| void | avancaCursor (Ecra &ecra) |
| Manipulador usado para avançar o cursor no ecrã. | |
| ManipuladorDaLargura | largura (int const largura) |
| Manipulador usado para indicar o número de células do ecrã a ocupar na próxima operação de inserção no ecrã. | |
| ManipuladorDeDesenhoDeSegmento | segmento_horizontal (int const largura) |
| Manipulador usado para desenhar um segmento de recta horizontal. | |
| ManipuladorDeDesenhoDeSegmento | segmento_vertical (int const altura) |
| Manipulador usado para desenhar um segmento de recta vertical. | |
| void | refresca (Ecra &ecra) |
| Manipulador usado para refrescar o ecrã. | |
| void | refresca_tudo (Ecra &ecra) |
| Manipulador usado para fazer o refrescamento total do ecrã. | |
| void | apaga (Ecra &ecra) |
| Manipulador usado para apagar o ecrã (ou seja, para o pintar com a cor do fundo). | |
| void | apaga_fim_da_linha (Ecra &ecra) |
| Manipulador usado para apagar até ao fim da linha do cursor (ou seja, para o pintar com a cor do fundo). | |
| void | apaga_fim_do_ecra (Ecra &ecra) |
| Manipulador usado para apagar desde a posição do cursor até ao fim do ecrã (ou seja, para o pintar com a cor do fundo). | |
| void | campainha (Ecra &ecra) |
| Manipulador usado para fazer soar a campainha. | |
Constantes associadas à classe Caixa | |
| Caixa const | caixa_vazia |
| Constante representando uma caixa vazia, i.e., com dimensão nula. | |
| Caixa const | caixa_universal |
| Constante representando a caixa universal (enche todo o espaço). | |
Enumerações | |
| enum | Cor { preto, primeira_cor = preto, cinza, vermelho, vermelho_brilhante, verde, verde_brilhante, castanho, amarelo, azul, azul_brilhante, magenta, magenta_brilhante, ciano, ciano_brilhante, cinzento_claro, branco, ultima_cor = branco } |
| Representa as possíveis cores do texto e do fundo de cada célula do ecrã. Mais... | |
| enum | Simbolo { diamante = '`', tijolo, ht, ff, cr, lf, grau, mais_menos, nl, vt, canto_inferior_direito, canto_superior_direito, canto_superior_esquerdo, canto_inferior_esquerdo, cruzamento, traco_topo, traco_superior, traco_horizontal, traco_inferior, traco_base, encontro_direita, encontro_esquerda, encontro_cima, encontro_baixo, traco_vertical, menor_ou_igual, maior_ou_igual, pi, diferente } |
| Representa caracteres especiais úteis para desenhar no ecrã caixas e outros símbolos pouco usuais. Mais... | |
| enum | Justificacao { ao_centro, a_esquerda, a_direita } |
| Representa os vários tipos de justificação possíveis ao escrever texto no ecrã. Mais... | |
Variáveis | |
| Ecra | ecra |
| Uma variável global representando o ecrã. | |
| std::string const | nomes_das_cores [numero_de_cores] |
| Constante global com os nomes das cores. | |
Contém ferramentas para escrever e manipular o ecrã.
|
|
Representa as possíveis cores do texto e do fundo de cada célula do ecrã. Note-se que nem todas as cores são válidas para o fundo em todos os terminais! Experimente para verificar quais funcionam bem... Ver na documentação abaixo os nomes das cores usados para inserção e extração de canais.
Definido na linha 921 do ficheiro ecra.H. Referenciado por Slang::Ecra::Ecra(), main(), Slang::Ecra::ObjectoCor::mudaCorDoFundoPara(), Slang::Ecra::ObjectoCor::mudaCorDoTextoPara(), Slang::Ecra::mudaCoresDasCelulasDoFundoPara(), Slang::Ecra::ObjectoCor::ObjectoCor() e Slang::operator>>(). |
|
|
Representa caracteres especiais úteis para desenhar no ecrã caixas e outros símbolos pouco usuais. Pode ver o aspecto destes símbolos executando o seguinte programa de exemplo:
#include <Slang++/slang.H> using namespace Slang; int main() { for(int s = int(diamante); s != int(diferente) + 1; ++s) ecra << largura(2) << Simbolo(s); ecra << refresca; teclado.leProximaTeclaDisponivel(); }
Definido na linha 979 do ficheiro ecra.H. Referenciado por main() e Slang::Ecra::operator<<(). |
|
|
Representa os vários tipos de justificação possíveis ao escrever texto no ecrã. O valor a_esquerda (que é a justificação por omissão do ecrã) faz com que as entidades inseridas no ecrã fiquem à esquerda do espaço para eles reservado. O valor a_direita alinha as entidades à direita. O valor ao_centro leva as entidades inseridas a serem colocadas ao centro do espaço para elas reservado através, por exemplo, do manipulador largura(). Se o espaço reservado for insuficiente, a entidade inserida será truncada à direita, de ambos os lados, ou à esquerda, consoante a justificação escolhida seja à esquerda, ao centro ou à direita. O programa que se segue ilustra o funcionamento destes valores enumerados, que ao serem inseridos no ecrã alteram a justificação de forma permanente:
#include <string> #include <Slang++/slang.H> using namespace std; using namespace Slang; int main() { char caractere = '*'; string cadeia("abcde"); Ecra::ObjectoCor cor(amarelo, azul); ecra << cor; ecra << parado << largura(10) << a_esquerda << caractere << baixaCursor; ecra << parado << largura(10) << ao_centro << caractere << baixaCursor; ecra << parado << largura(10) << a_direita << caractere << baixaCursor; ecra << parado << largura(10) << a_esquerda << cadeia << baixaCursor; ecra << parado << largura(10) << ao_centro << cadeia << baixaCursor; ecra << parado << largura(10) << a_direita << cadeia << baixaCursor; ecra << parado << largura(3) << a_esquerda << cadeia << baixaCursor; ecra << parado << largura(3) << ao_centro << cadeia << baixaCursor; ecra << parado << largura(3) << a_direita << cadeia << baixaCursor; ecra << refresca; teclado.leProximaTeclaDisponivel(); }
Definido na linha 1034 do ficheiro ecra.H. Referenciado por Slang::Ecra::mudaJustificacaoPara() e Slang::Ecra::operator<<(). |
|
||||||||||||
|
Insere uma cor num canal.
Definido na linha 531 do ficheiro ecra_impl.H. |
|
||||||||||||
|
Manipulador usado para colocar o cursor numa dada posição. Usar como se segue:
// Coloca cursor na linha 10 coluna 20 do ecrã:
ecra << cursor(10, 20);
// Escreve "Olá mundo!" a partir dessa posição:
ecra << "Olá mundo";
// Refresca o ecrã:
ecra << refresca;
Definido na linha 1122 do ficheiro ecra_impl.H. |
|
||||||||||||
|
Extrai uma cor de um canal.
Definido na linha 74 do ficheiro ecra.C. Referências Slang::Cor. |
|
|
Manipulador usado para colocar o cursor numa dada posição. Usar como se segue:
// Definição de uma posicão:
Posicao posicao(10, 20);
// Coloca cursor na posição do ecrã definida:
ecra << cursor(posicao);
// Escreve "Olá mundo!" a partir dessa posição:
ecra << "Olá mundo";
// Refresca o ecrã:
ecra << refresca;
embora fosse mais simples omitir a utilização do manipulador, inserindo directamente a posição no ecrã:
// Definição de uma posicão:
Posicao posicao(10, 20);
// Coloca cursor na posição do ecrã definida:
ecra << posicao;
// Escreve "Olá mundo!" a partir dessa posição:
ecra << "Olá mundo";
// Refresca o ecrã:
ecra << refresca;
que ainda pode ser simplificado para:
// Coloca cursor na posição do ecrã definida:
ecra << Posicao(10, 20);
// Escreve "Olá mundo!" a partir dessa posição:
ecra << "Olá mundo";
// Refresca o ecrã:
ecra << refresca;
Definido na linha 1127 do ficheiro ecra_impl.H. Referenciado por cursor_aleatorio() e main(). |
|
||||||||||||||||||||
|
Manipulador usado para desenhar uma caixa com caracteres especiais numa dada posição e com uma dada dimensão. Usar como se segue:
// Desenha caixa com origem na linha 10 coluna 20 com 5 linhas e 15
// colunas:
ecra << caixa(10, 20, 5, 15);
// Refresca o ecrã:
ecra << refresca;
Definido na linha 1132 do ficheiro ecra_impl.H. Referenciado por Slang::Ecra::operator<<(). |
|
||||||||||||
|
Manipulador usado para desenhar uma caixa com caracteres especiais numa dada posição e com uma dada dimensão. Usar como se segue:
// Definição de uma posição e uma dimensão para a caixa:
Posicao posicao(10, 20);
Dimensao dimensao(5, 15);
// Desenha caixa com a posição e dimensão definidas:
ecra << caixa(posicao, dimensao);
// Refresca o ecrã:
ecra << refresca;
Neste caso poder-se-ia ter omitido o manipulador, usando-se em vez dele o construtor da classe Caixa, que se pode inserir num ecrã:
// Definição de uma posição e uma dimensão para a caixa:
Posicao posicao(10, 20);
Dimensao dimensao(5, 15);
// Desenha caixa com a posição e dimensão definidas:
ecra << Caixa(posicao, dimensao);
// Refresca o ecrã:
ecra << refresca;
Definido na linha 1141 do ficheiro ecra_impl.H. Referenciado por main(). |
|
|
Manipulador usado para indicar que as próximas escritas devem ser realizadas usando a cor do fundo do ecrã. Usar como se segue:
// Coloca cursor no canto superior esquerdo do ecrã:
ecra << cursor(0, 0);
// Define objecto cor para a próxima escrita:
Ecra::ObjectoCor cor(amarelo, vermelho);
// Escreve "Olá mundo! " usando a cor indicada:
ecra << oor << "Olá mundo! ";
// Escreve "Olá mundo!" mas usando a cor do fundo:
ecra << fundo << "Olá mundo!";
// Refresca o ecrã:
ecra << refresca;
Definido na linha 1146 do ficheiro ecra_impl.H. Referências Slang::ecra. Referenciado por Slang::Ecra::cola(), Slang::CaixaDeTexto::interage(), Slang::MenuSimples::interage() e main(). |
|
|
Manipulador usado para manter o cursor na posição corrente durante a próxima operação de inserção no ecrã. Usar como se segue:
// Coloca cursor no canto superior esquerdo do ecrã:
ecra << cursor(0, 0);
// Escreve "Olá mundo!" mantendo a posição do cursor no topo superior
// esquerdo do ecrã:
ecra << parado << "Olá mundo!";
// Refresca o ecrã:
ecra << refresca;
Definido na linha 1151 do ficheiro ecra_impl.H. Referências Slang::ecra. Referenciado por main(), procedimento1() e procedimento2(). |
|
|
Manipulador usado para subir o cursor no ecrã. Usar como se segue:
// Coloca cursor a meio do ecrã, à esquerda:
ecra << cursor(ecra.dimensao().numeroDeLinhas() / 2, 0);
// Escreve "mundo!" mantendo a posição do cursor:
ecra << parado << "mundo!";
// Sobe cursor para a linha acima:
ecra << sobeCursor;
// Escreve "Olá" mantendo a posição do cursor:
ecra << parado << "Olá";
// Refresca o ecrã:
ecra << refresca;
Definido na linha 1156 do ficheiro ecra_impl.H. Referências Slang::ecra. |
|
|
Manipulador usado para baixar o cursor no ecrã. Usar como se segue:
// Coloca cursor a meio do ecrã, à esquerda:
ecra << cursor(ecra.dimensao().numeroDeLinhas() / 2, 0);
// Escreve "Olá" mantendo a posição do cursor:
ecra << parado << "Olá";
// Baixa o cursor:
ecra << sobeCursor;
// Escreve "mundo!" mantendo a posição do cursor:
ecra << parado << "mundo!";
// Refresca o ecrã:
ecra << refresca;
Definido na linha 1161 do ficheiro ecra_impl.H. Referências Slang::ecra. Referenciado por main(), procedimento1() e procedimento2(). |
|
|
Manipulador usado para recuar o cursor no ecrã. Usa-se como os manipuladores sobeCursor() e baixaCursor().
Definido na linha 1166 do ficheiro ecra_impl.H. Referências Slang::ecra. |
|
|
Manipulador usado para avançar o cursor no ecrã. Usa-se como os manipuladores sobeCursor() e baixaCursor().
Definido na linha 1171 do ficheiro ecra_impl.H. Referências Slang::ecra. |
|
|
Manipulador usado para indicar o número de células do ecrã a ocupar na próxima operação de inserção no ecrã. Usar como se segue:
// Coloca cursor no canto superior esquerdo do ecrã:
ecra << cursor(0, 0);
// Define objecto cor para a próxima escrita:
Ecra::ObjectoCor cor(amarelo, vermelho);
// Escreve "Olá mundo! " usando a cor indicada e centrados em 30
// caracteres:
ecra << oor << ao_centro << largura(30) << "Olá mundo!";
Definido na linha 1176 do ficheiro ecra_impl.H. Referências Slang::largura(). Referenciado por Slang::Ecra::desenhaSegmentoHorizontalCom(), Slang::largura(), main(), Slang::ManipuladorDaLargura::ManipuladorDaLargura() e Slang::segmento_horizontal(). |
|
|
Manipulador usado para desenhar um segmento de recta horizontal. Veja-se um exemplo de utilização no programa abaixo:
#include <Slang++/slang.H> using namespace Slang; int main() { // Guardar dimensão do ecrã: int const altura = ecra.dimensao().numeroDeLinhas(); int const largura = ecra.dimensao().numeroDeColunas(); // Desenhar segmento de recta horizontal a meio do ecrã e com meia largura // do ecrã: ecra << cursor(altura / 2, largura / 4) << segmento_horizontal(largura / 2); // Desenhar segmento de recta vertical a meio do ecrã e com meia altura do // ecrã: ecra << cursor(altura / 4, largura / 2) << segmento_vertical(altura / 2); // Refescar e esperar por tecla: ecra << refresca; teclado.leProximaTeclaDisponivel(); ecra << apaga << refresca; teclado.leProximaTeclaDisponivel(); // O mesmo, mas usando operações da classe Ecra: ecra << cursor(altura / 2, largura / 4); ecra.desenhaSegmentoHorizontalCom(largura / 2); ecra << cursor(altura / 4, largura / 2); ecra.desenhaSegmentoVerticalCom(altura / 2); // Refescar e esperar por tecla: ecra << refresca; teclado.leProximaTeclaDisponivel(); }
Definido na linha 1184 do ficheiro ecra_impl.H. Referências Slang::largura(). Referenciado por main(). |
|
|
Manipulador usado para desenhar um segmento de recta vertical. Veja-se uma exemplo de utilização na documentação do manipulador segmento_horizontal().
Definido na linha 1192 do ficheiro ecra_impl.H. Referenciado por main(). |
|
|
Manipulador usado para refrescar o ecrã. Usado como se segue:
// Coloca cursor no canto superior esquerdo do ecrã:
ecra << cursor(0, 0);
// Escreve "Olá mundo!" a partir dessa posição:
ecra << "Olá mundo";
// Refresca o ecrã:
ecra << refresca;
Definido na linha 1199 do ficheiro ecra_impl.H. Referências Slang::ecra. Referenciado por Slang::CaixaDeTexto::interage(), Slang::MenuSimples::interage(), main(), procedimento1() e procedimento2(). |
|
|
Manipulador usado para fazer o refrescamento total do ecrã. Usado como se segue:
ecra << refresca_tudo;
Definido na linha 1204 do ficheiro ecra_impl.H. Referências Slang::ecra. |
|
|
Manipulador usado para apagar o ecrã (ou seja, para o pintar com a cor do fundo). Usar como se segue:
Definido na linha 1209 do ficheiro ecra_impl.H. Referências Slang::ecra. Referenciado por main(). |
|
|
Manipulador usado para apagar até ao fim da linha do cursor (ou seja, para o pintar com a cor do fundo). Usar como se segue:
// Apaga linha 10 a partir da coluna 20:
ecra << cursor(10, 20) << apaga_fim_da_linha;
// Refresca o ecrã:
ecra << refresca;
Definido na linha 1214 do ficheiro ecra_impl.H. Referências Slang::ecra. |
|
|
Manipulador usado para apagar desde a posição do cursor até ao fim do ecrã (ou seja, para o pintar com a cor do fundo). Usar como se segue:
// Apaga ecrã a partir da coluna 20 da linha 10:
ecra << cursor(10, 20) << apaga_fim_do_ecra;
// Refresca o ecrã:
ecra << refresca;
Definido na linha 1219 do ficheiro ecra_impl.H. Referências Slang::ecra. |
|
|
Manipulador usado para fazer soar a campainha. Usar como se segue:
Definido na linha 1224 do ficheiro ecra_impl.H. Referências Slang::ecra. Referenciado por Slang::CaixaDeTexto::interage() e main(). |
|
|
Constante representando uma caixa vazia, i.e., com dimensão nula. Esta caixa tem como origem o canto superior esquerdo do ecrã. |
|
|
Uma variável global representando o ecrã. A ideia é que substitua a variável global cout usada normalmente para escrever no ecrã. É através desta variável que se procede a todas as inserções no ecrã. Definido na linha 515 do ficheiro ecra.C. Referenciado por Slang::apaga(), Slang::apaga_fim_da_linha(), Slang::apaga_fim_do_ecra(), Slang::avancaCursor(), Slang::baixaCursor(), Slang::campainha(), cursor_aleatorio(), Slang::fundo(), Slang::CaixaDeTexto::interage(), Slang::MenuSimples::interage(), main(), Slang::Ecra::ObjectoCor::mudaCorDoFundoPara(), Slang::Ecra::ObjectoCor::mudaCorDoTextoPara(), Slang::Ecra::ObjectoCor::ObjectoCor(), Slang::operator<<(), Slang::Ecra::operator<<(), Slang::parado(), procedimento1(), procedimento2(), Slang::recuaCursor(), Slang::refresca(), Slang::refresca_tudo(), Slang::sobeCursor() e Slang::Ecra::ObjectoCor::~ObjectoCor(). |
|
|
Valor inicial: {
"preto",
"cinza",
"vermelho",
"vermelho-brilhante",
"verde",
"verde-brilhante",
"castanho",
"amarelo",
"azul",
"azul-brilhante",
"magenta",
"magenta-brilhante",
"ciano",
"ciano-brilhante",
"cinzento-claro",
"branco"
}
Indexável com os valores do tipo enumerado Cor. Definido na linha 517 do ficheiro ecra.C. Referenciado por Slang::MenuDeCores::MenuDeCores(). |
|
|
Constante representando a caixa universal (enche todo o espaço).
|
|
|
Constante que guarda o número total de cores.
Definido na linha 966 do ficheiro ecra.H. Referenciado por Slang::MenuDeCores::MenuDeCores(). |
1.3-rc1