Página principal   Módulos   Lista de namespaces   Hierarquia de classes   Lista de componentes   Lista de ficheiros   Membros do namespace   Componentes membro   Ficheiros membro   Páginas relacionadas  

Referência à classe Slang::Caixa
[Ferramentas de ecrã]

Representa caixas no ecrã. Mais...

#include <Slang++/ecra.H>

Mostrar lista completa dos membros

Membros públicos

Construtores
 Caixa (Posicao const &origem=Posicao(), Dimensao const &dimensao=Dimensao())
 Constrói uma nova caixa.

 Caixa (Posicao const &origem, Posicao const &extremo)
 Constrói uma nova caixa.

Inspectores
Posicao const & origem () const
 Devolve a origem da caixa, i.e., a posição do seu vértice superior esquerdo.

Posicao extremo () const
 Devolve o extremo da caixa, i.e., a posição do seu vértice inferior direito.

Dimensao const & dimensao () const
 Devolve a dimensao da caixa.

Predicados
bool eVazia () const
 Indica se a caixa está vazia, i.e., se a sua dimensão é nula.

bool eCanonica () const
 Indica se a caixa é canónica, i.e., se a sua dimensão é canónica.

bool contem (Posicao const &posicao) const
 Indica se uma posição se encontra sobre a caixa, quer sobre a sua borda quer sobre o seu interior.

bool bordaContem (Posicao const &posicao) const
 Indica se uma posição se encontra sobre a borda da caixa, quee existe mesmo para uma caixa vazia ou com dimensão negativa em alguma das direcções.

Modificadores
void mudaOrigemPara (Posicao const &nova_origem)
 Muda a origem da caixa para nova_origem.

void mudaExtremoPara (Posicao const &novo_extremo)
 Muda o extremo da caixa para novo_extremo.

void mudaDimensaoPara (Dimensao const &nova_dimensao)
 Muda a dimensão da caixa para nova_dimensão.

Serializadores
 Caixa (std::istream &entrada)
 Constrói uma caixa por carregamento a partir de um canal de entrada.

void carregaDe (std::istream &entrada)
 Carrega a caixa a partir de um canal.

void guardaEm (std::ostream &saida) const
 Guarda a caixa num canal.

Operadores especiais de atribuição
Caixa & operator+= (Dimensao const &deslocamento)
 Desloca a caixa de um dado deslocamento.

Caixa & operator-= (Dimensao const &deslocamento)
 Desloca a caixa de um dado deslocamento.

Caixa & operator+= (Caixa const &outra_caixa)
 Une a caixa com a caixa outra_caixa.

Caixa & operator *= (Caixa const &outra_caixa)
 Intersecta a caixa com a caixa outra_caixa.


Funções associadas

(Note que não são funções membro)

Caixa const operator+ (Caixa caixa, Dimensao const &deslocamento)
 Devolve a adição de uma caixa e de uma dimensão.

Caixa const operator- (Caixa caixa, Dimensao const &deslocamento)
 Devolve a subtracção de uma caixa e de uma dimensão.

Caixa const operator+ (Dimensao const &deslocamento, Caixa caixa)
 Devolve a adição de uma caixa e de uma dimensão.

Caixa const operator+ (Caixa uma_caixa, Caixa const &outra_caixa)
 Devolve a união de duas caixas.

Caixa const operator * (Caixa uma_caixa, Caixa const &outra_caixa)
 Devolve a intersecção de duas caixas.

bool operator== (Caixa const &uma_caixa, Caixa const &outra_caixa)
 Indica se duas caixas são iguais.

bool operator!= (Caixa const &uma_caixa, Caixa const &outra_caixa)
 Indica se duas caixas são diferentes.


Descrição detalhada

Representa caixas no ecrã.

Uma caixa é um conjunto de células formando um rectângulo de lados não oblíquos, i.e., verticais ou horizontais. Uma caixa tem uma origem e um extremo. A dimensão da caixa é a diferença entre o extremo e a origem, mas somada de Dimensao(1, 1), visto que quer a origem quer o extremo se encontram sobre a caixa. Uma caixa diz-se canónica se a sua dimensão for canónica. Uma caixa diz-se vazia se a sua dimensão for Dimensao(0, 0). As caixas podem ser inseridas no ecrã, sendo desenhado um rectângulo oco com as suas dimensões. Por exemplo, o código

#include <Slang++/slang.H>

using namespace Slang;

// Mostra uma caixa com 1/4 da área do ecrã (metade das suas dimensões
// horizontal e vertical) centrada no ecrã.
int main()
{
    Caixa uma_caixa(Posicao(ecra.dimensao().numeroDeLinhas() / 4,
                            ecra.dimensao().numeroDeColunas() / 4),
                    Dimensao(ecra.dimensao().numeroDeLinhas() / 2,
                             ecra.dimensao().numeroDeColunas() / 2));
    
    ecra << uma_caixa << refresca;

    teclado.leProximaTeclaDisponivel();
}

escreve uma caixa centrada no ecrã e com 1/4 da sua área.

Invariante:
V.

Tarefa:
Falta implementar as operações de serialização.

Definido na linha 556 do ficheiro ecra.H.


Documentação dos Construtores & Destrutor

Slang::Caixa::Caixa Posicao const &    origem = Posicao(),
Dimensao const &    dimensao = Dimensao()
[inline, explicit]
 

Constrói uma nova caixa.

Por omissão a caixa localiza-se no canto superior esquerdo do ecrã e a sua dimensão é nula. Ao canto superior esquerdo de uma caixa chama-se a sua "origem". Ao canto oposto chama-se "extremo". Note-se que uma caixa pode ter dimensão nula ou mesmo negativa em alguma direcção.

Precondição:
V.
Poscondição:
origem() = origem e dimensao() = dimensao.

Definido na linha 293 do ficheiro ecra_impl.H.

Referenciado por carregaDe().

Slang::Caixa::Caixa Posicao const &    origem,
Posicao const &    extremo
[inline, explicit]
 

Constrói uma nova caixa.

Neste caso a construção é feita a partir das posições de dois vértices da caixa. Esses vértices são o superior esquerdo (origem) e o inferior direito (extremo). Se a origem estiver à direita ou abaixo do extremo, a caixa diz-se não-canónica.

Precondição:
V.
Poscondição:
origem() = origem e extremo() = extremo.

Definido na linha 300 do ficheiro ecra_impl.H.

Slang::Caixa::Caixa std::istream &    entrada [inline, explicit]
 

Constrói uma caixa por carregamento a partir de um canal de entrada.

Assume-se que os dados no canal têm um formato equivalente ao produzido pela operação guardaEm().

Precondição:
entrada.good().
Poscondição:
Posicao é a caixa que se encontrava no canal de entrada.
Excepções:
ErroAoCarregar é lançada se a construção por carregamento falhar.

Definido na linha 394 do ficheiro ecra_impl.H.


Documentação dos métodos

Slang::Posicao const & Slang::Caixa::origem   const [inline]
 

Devolve a origem da caixa, i.e., a posição do seu vértice superior esquerdo.

Precondição:
V.
Poscondição:
origem() = origem da caixa.

Definido na linha 308 do ficheiro ecra_impl.H.

Referenciado por bordaContem(), contem(), Slang::Ecra::desenha(), mudaExtremoPara(), operator *=(), operator+=() e Slang::Ecra::trocoDe().

Slang::Posicao Slang::Caixa::extremo   const [inline]
 

Devolve o extremo da caixa, i.e., a posição do seu vértice inferior direito.

Precondição:
V.
Poscondição:
extremo() = extremo da caixa.

Definido na linha 315 do ficheiro ecra_impl.H.

Referenciado por bordaContem(), contem(), operator *=() e operator+=().

Slang::Dimensao const & Slang::Caixa::dimensao   const [inline]
 

Devolve a dimensao da caixa.

Precondição:
V.
Poscondição:
dimensao() = dimensão da caixa.

Definido na linha 322 do ficheiro ecra_impl.H.

Referenciado por Slang::Ecra::desenha(), eCanonica(), eVazia() e Slang::Ecra::trocoDe().

bool Slang::Caixa::eVazia   const [inline]
 

Indica se a caixa está vazia, i.e., se a sua dimensão é nula.

Precondição:
V.
Poscondição:
eVazia = (dimensao() = Dimensao(0, 0)).

Definido na linha 329 do ficheiro ecra_impl.H.

Referências dimensao().

bool Slang::Caixa::eCanonica   const [inline]
 

Indica se a caixa é canónica, i.e., se a sua dimensão é canónica.

Precondição:
V.
Poscondição:
eCanonica = dimensao().eCanonica().

Definido na linha 336 do ficheiro ecra_impl.H.

Referências dimensao() e Slang::Dimensao::eCanonica().

Referenciado por Slang::Ecra::operator<<() e Slang::Ecra::trocoDe().

bool Slang::Caixa::contem Posicao const &    posicao const [inline]
 

Indica se uma posição se encontra sobre a caixa, quer sobre a sua borda quer sobre o seu interior.

Note-se que uma caixa com dimensão negativa em alguma das direcções não tem interior.

Precondição:
V.
Poscondição:
contem = posicao dentro da caixa (interior ou borda).

Definido na linha 343 do ficheiro ecra_impl.H.

Referências Slang::Posicao::coluna(), extremo(), Slang::Posicao::linha() e origem().

bool Slang::Caixa::bordaContem Posicao const &    posicao const [inline]
 

Indica se uma posição se encontra sobre a borda da caixa, quee existe mesmo para uma caixa vazia ou com dimensão negativa em alguma das direcções.

Precondição:
V.
Poscondição:
bordaContem = posicao na borda da caixa.

Definido na linha 353 do ficheiro ecra_impl.H.

Referências Slang::Posicao::coluna(), extremo(), Slang::Posicao::linha() e origem().

void Slang::Caixa::mudaOrigemPara Posicao const &    nova_origem [inline]
 

Muda a origem da caixa para nova_origem.

Atenção: a dimensão mantém-se, pelo que o extremo da caixa é alterado em paralelo com a sua origem!

Precondição:
dimensao() = d.
Poscondição:
origem() = nova_origem e dimensao() = d.

Definido na linha 367 do ficheiro ecra_impl.H.

Referenciado por operator *=() e operator+=().

void Slang::Caixa::mudaExtremoPara Posicao const &    novo_extremo [inline]
 

Muda o extremo da caixa para novo_extremo.

Atenção: a origem mantém-se, pelo que a dimensão da caixa é alterada, ao contrário do que acontece quando a origem é alterada directamente!

Precondição:
origem() = o.
Poscondição:
extremo() = novo_extremo e origem() = o.

Definido na linha 376 do ficheiro ecra_impl.H.

Referências origem().

Referenciado por operator *=() e operator+=().

void Slang::Caixa::mudaDimensaoPara Dimensao const &    nova_dimensao [inline]
 

Muda a dimensão da caixa para nova_dimensão.

Atenção: a origem mantém-se, pelo que o extremo da caixa é alterado em paralelo com a sua dimensão!

Precondição:
origem() = o.
Poscondição:
dimensao() = nova_dimensao e origem() = o.

Definido na linha 385 do ficheiro ecra_impl.H.

void Slang::Caixa::carregaDe std::istream &    entrada [inline]
 

Carrega a caixa a partir de um canal.

Assume-se que os dados no canal têm um formato equivalente ao produzido pela operação guardaEm().

Precondição:
entrada.good().
Poscondição:
*this é a caixa que se encontrava no canal de entrada.
Excepções:
ErroAoCarregar é lançada se o carregamento falhar. Nesse caso o canal pode ficar parcialmente lido.

Definido na linha 401 do ficheiro ecra_impl.H.

Referências Caixa().

void Slang::Caixa::guardaEm std::ostream &    saida const
 

Guarda a caixa num canal.

O formato produzido é compatível com o que o método carregaDe() espera.

Precondição:
saida.good().
Excepções:
ErroAoGuardar é lançada se a operação falhar. Nesse caso o canal pode ficar parcialmente escrito.

Definido na linha 63 do ficheiro ecra.C.

Referências Slang::Dimensao::guardaEm() e Slang::Posicao::guardaEm().

Slang::Caixa & Slang::Caixa::operator+= Dimensao const &    deslocamento [inline]
 

Desloca a caixa de um dado deslocamento.

Precondição:
origem() = o e dimensao() = d.
Poscondição:
origem() = o + deslocamento e dimensao() = d.

Definido na linha 411 do ficheiro ecra_impl.H.

Slang::Caixa & Slang::Caixa::operator-= Dimensao const &    deslocamento [inline]
 

Desloca a caixa de um dado deslocamento.

Precondição:
origem() = o e dimensao() = d.
Poscondição:
origem() = o - deslocamento e dimensao() = d.

Definido na linha 423 do ficheiro ecra_impl.H.

Slang::Caixa & Slang::Caixa::operator+= Caixa const &    outra_caixa [inline]
 

Une a caixa com a caixa outra_caixa.

A união de duas caixas é a menor caixa que as envolve.

Precondição:
origem() = o e extremo() = e.
Poscondição:
origem().linha() = min(o.linha(), outra_caixa.origem().linha()) e origem().coluna() = min(o.coluna(), outra_caixa.origem().coluna()) e extremo().linha() = max(e.linha(), outra_caixa.extremo().linha()) e extremo().coluna() = max(e.coluna(), outra_caixa.extremo().coluna()).

Definido na linha 434 do ficheiro ecra_impl.H.

Referências Slang::Posicao::coluna(), extremo(), Slang::Posicao::linha(), mudaExtremoPara(), mudaOrigemPara() e origem().

Slang::Caixa & Slang::Caixa::operator *= Caixa const &    outra_caixa [inline]
 

Intersecta a caixa com a caixa outra_caixa.

A intersecção de duas caixas é a maior caixa que se inclui em ambas. Note-se, no entanto, que se as duas caixas forem regulares (i.e., com dimensão positiva) e se não intersectarem geometricamente, esta operação tem como resultado uma caixa com pelo menos uma dimensão negativa ou nula.

Precondição:
origem() = o e extremo() = e.
Poscondição:
origem().linha() = max(o.linha(), outra_caixa.origem().linha()) e origem().coluna() = max(o.coluna(), outra_caixa.origem().coluna()) e extremo().linha() = min(e.linha(), outra_caixa.extremo().linha()) e extremo().coluna() = min(e.coluna(), outra_caixa.extremo().coluna()).

Definido na linha 453 do ficheiro ecra_impl.H.

Referências Slang::Posicao::coluna(), extremo(), Slang::Posicao::linha(), mudaExtremoPara(), mudaOrigemPara() e origem().


Documentação das classes amigas e funções relacionadas

Caixa const operator+ Caixa    caixa,
Dimensao const &    deslocamento
[related]
 

Devolve a adição de uma caixa e de uma dimensão.

A dimensão é interpretada como um vector de deslocamento. A caixa devolvida é igual à recebida como argumento, embora deslocada de acordo com o deslocamento dado.

Precondição:
caixa = c.
Poscondição:
operator+.dimensao() = c.dimensao() e operator+.origem() = c.origem() + deslocamento.

Caixa const operator- Caixa    caixa,
Dimensao const &    deslocamento
[related]
 

Devolve a subtracção de uma caixa e de uma dimensão.

A dimensão é interpretada como um vector de deslocamento. A caixa devolvida é igual à recebida como argumento, embora deslocada de acordo com o deslocamento dado.

Precondição:
caixa = c.
Poscondição:
operator-.dimensao() = c.dimensao() e operator-.origem() = c.origem() - deslocamento.

Caixa const operator+ Dimensao const &    deslocamento,
Caixa    caixa
[related]
 

Devolve a adição de uma caixa e de uma dimensão.

A dimensão é interpretada como um vector de deslocamento. A caixa devolvida é igual à recebida como argumento, embora deslocada de acordo com o deslocamento dado.

Precondição:
caixa = c.
Poscondição:
operator+.dimensao() = c.dimensao() e operator+.origem() = c.origem() + deslocamento.

Caixa const operator+ Caixa    uma_caixa,
Caixa const &    outra_caixa
[related]
 

Devolve a união de duas caixas.

A união de duas caixas é a menor caixa que as envolve.

Precondição:
uma_caixa = c.
Poscondição:
operator+.origem().linha() = min(c.origem().linha(), outra_caixa.origem().linha()) e operator+.origem().coluna() = min(c.origem().coluna(), outra_caixa.origem().coluna()) e operator+.extremo().linha() = max(c.extremo().linha(), outra_caixa.extremo().linha()) e operator+.extremo().coluna() = max(c.extremo().coluna(), outra_caixa.extremo().coluna()).

Caixa const operator * Caixa    uma_caixa,
Caixa const &    outra_caixa
[related]
 

Devolve a intersecção de duas caixas.

A intersecção de duas caixas é a maior caixa que se inclui em ambas. Note-se, no entanto, que se as duas caixas forem regulares (i.e., com dimensão positiva) e se não intersectarem geometricamente, esta operação tem como resultado uma caixa com pelo menos uma dimensão negativa ou nula.

Precondição:
uma_caixa = c.
Poscondição:
origem().linha() = max(c.origem().linha(), outra_caixa.origem().linha()) e origem().coluna() = max(c.origem().coluna(), outra_caixa.origem().coluna()) e extremo().linha() = min(c.extremo().linha(), outra_caixa.extremo().linha()) e extremo().coluna() = min(c.extremo().coluna(), outra_caixa.extremo().coluna()).

bool operator== Caixa const &    uma_caixa,
Caixa const &    outra_caixa
[related]
 

Indica se duas caixas são iguais.

Precondição:
V.
Poscondição:
operator== = (uma_caixa.origem() = outra_caixa.origem() e uma_caixa.dimensao() = outra_caixa.dimensao()).

bool operator!= Caixa const &    uma_caixa,
Caixa const &    outra_caixa
[related]
 

Indica se duas caixas são diferentes.

Precondição:
V.
Poscondição:
operator!= = (uma_caixa.origem() ≠ outra_caixa.origem() ou uma_caixa.dimensao() ≠ outra_caixa.dimensao()).


A documentação para esta classe foi gerada a partir dos seguintes ficheiros:
Gerado em Tue Dec 3 15:19:37 2002 para Pacotes por doxygen1.3-rc1