Página principal   Módulos   Lista de namespaces   Hierarquia de classes   Lista de componentes   Lista de ficheiros   Membros do namespace   Componentes   Declarações   Paginas relacionadas  

Referencia à classe Slang::Caixa

Representar caixas no ecrã. Mais...

#include <Slang/ecra.H>

Mostrar lista completa dos membros

Membros públicos

bool vazia () const
 Devolve true se a caixa estiver vazia, ou seja, se tiver dimensão nula. Mais...

Construtores
 Caixa (Posicao const &origem=Posicao(), Dimensao const &dimensao=Dimensao())
 Construtor da classe. Mais...

 Caixa (Posicao const &a, Posicao const &b)
 Construtor da classe. Mais...

 Caixa (std::istream &entrada)
 Construtor da classe por carregamento a partir de um canal. Mais...

Inspectores
Posicao origem () const
 Devolve a posição da célula no vértice superior esquerdo da caixa. Mais...

Posicao destino () const
 Devolve a posição da célula no vértice inferior direito da caixa. Mais...

Dimensao dimensao () const
 Devolve a dimensão da caixa. Mais...

Relações geométricas
bool contem (Posicao const &p) const
 Devolve true se a posição p estiver sobre a caixa (na borda ou no seu interior). Mais...

bool bordaContem (Posicao const &p) const
 Devolve true se a posição p estiver sobre a borda da caixa. Mais...

Modificadores
void origem (Posicao const &origem)
 Modifica a posição do vértice superior esquerdo da caixa (mas a sua dimensão mantém-se!). Mais...

void destino (Posicao const &destino)
 Modifica a posição do vértice inferior direito da caixa (não modifica a posição do vértice superior esquerdo, pelo que a sua dimensão altera-se!). Mais...

void dimensao (Dimensao const &dimensao)
 Modifica a dimensão da caixa. Mais...

Operadores
Caixa& operator+= (Posicao const &c)
 Desloca a caixa de c, que é interpretado como um vector. Mais...

Caixa& operator+= (Caixa const &c)
 "Soma" com uma caixa (resulta a caixa envolvente da união). Mais...

Caixa& operator *= (Caixa const &c)
 "Multiplica" por uma caixa (resulta a caixa de intersecção). Mais...

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

void guarda (std::ostream &saida) const
 Guarda a caixa escrevendo num canal. Mais...


Descrição detalhada

Representar caixas no ecrã.

Uma caixa é um conjunto de células formando um rectângulo de lados não oblíquos.

Definido na linha 227 do ficheiro ecra.H.


Documentação do Construtor & Destrutor

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

Construtor da classe.

Por omissão a caixa está vazia.

Parâmetros:
origem   Posicao da célula no vértice superior esquerdo da caixa.
dimensao   Dimensão da caixa.

Definido na linha 164 do ficheiro ecra_impl.H.

Referenciado por destino().

00165     : origem_(origem), dimensao_(dimensao) {
00166 }

Slang::Caixa::Caixa ( Posicao const & a,
Posicao const & b ) [inline, explicit]
 

Construtor da classe.

Recebe dois vértices opostos da caixa. Esses vértece tanto podem ser o superior esquerdo e o inferior direito como o superior direito e o inferior esquerdo, por qualquer ordem.

Parâmetros:
a   Posicao de um dos vértices da caixa.
b   Posicao do vértice oposto da caixa.

Definido na linha 168 do ficheiro ecra_impl.H.

00169     : origem_(min(a.linha(), b.linha()), min(a.coluna(), b.coluna())), 
00170       dimensao_(abs(a.linha() - b.linha()) + 1, 
00171                 abs(a.coluna() - b.coluna()) + 1) {
00172 }

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

Construtor da classe por carregamento a partir de um canal.

Assume-se que o canal está ligado a um ficheiro cujo conteúdo foi criado usando o método guarda().

Parâmetros:
entrada   O canal de onde se carrega a caixa.
Excepções:
ErroAoCarregar   é lançada se o carregamento falhar.

Definido na linha 174 do ficheiro ecra_impl.H.

00175     : origem_(entrada), dimensao_(entrada) {
00176 }


Documentação dos métodos

bool Slang::Caixa::bordaContem ( Posicao const & c ) const [inline]
 

Devolve true se a posição p estiver sobre a borda da caixa.

Definido na linha 205 do ficheiro ecra_impl.H.

00205                                                           {
00206     int const primeira_linha = origem().linha();
00207     int const primeira_coluna = origem().coluna();
00208     int const ultima_linha = destino().linha();
00209     int const ultima_coluna = destino().coluna();
00210     return ((c.linha() >= primeira_linha && c.linha() <= ultima_linha && 
00211              (c.coluna() == primeira_coluna || c.coluna() == ultima_coluna)) ||
00212             (c.coluna() >= primeira_coluna && c.coluna() <= ultima_coluna &&
00213              (c.linha() == primeira_linha || c.linha() == ultima_linha)));
00214 }

void Slang::Caixa::carrega ( std::istream & entrada )
 

Carrega a caixa a partir de um canal.

Assume-se que o canal está ligado a um ficheiro cujo conteúdo foi criado usando o método guarda().

Parâmetros:
entrada   O canal de onde se carrega a caixa.
Excepções:
ErroAoCarregar   é lançada se o carregamento falhar (nesse caso a caixa fica num estado inválido).

bool Slang::Caixa::contem ( Posicao const & c ) const [inline]
 

Devolve true se a posição p estiver sobre a caixa (na borda ou no seu interior).

Definido na linha 196 do ficheiro ecra_impl.H.

00196                                                      {
00197     int const linha = origem_.linha();
00198     int const coluna = origem_.coluna();
00199     int const linha_final = linha + dimensao_.linhas();
00200     int const coluna_final = coluna + dimensao_.colunas();
00201     return c.linha() >= linha && c.linha() < linha_final &&
00202         c.coluna() >= coluna && c.coluna() < coluna_final;
00203 }

void Slang::Caixa::destino ( Posicao const & destino ) [inline]
 

Modifica a posição do vértice inferior direito da caixa (não modifica a posição do vértice superior esquerdo, pelo que a sua dimensão altera-se!).

Definido na linha 221 do ficheiro ecra_impl.H.

00221                                                       {
00222     *this = Caixa(origem(), destino);
00223 }

Slang::Posicao Slang::Caixa::destino ( ) const [inline]
 

Devolve a posição da célula no vértice inferior direito da caixa.

Definido na linha 184 do ficheiro ecra_impl.H.

Referenciado por bordaContem().

00184                                               {
00185     return origem_ + dimensao_ - Posicao(1, 1);
00186 }

void Slang::Caixa::dimensao ( Dimensao const & dimensao ) [inline]
 

Modifica a dimensão da caixa.

Definido na linha 225 do ficheiro ecra_impl.H.

00225                                                          {
00226     dimensao_ = dimensao;
00227 }

Slang::Dimensao Slang::Caixa::dimensao ( ) const [inline]
 

Devolve a dimensão da caixa.

Definido na linha 188 do ficheiro ecra_impl.H.

Referenciado por vazia().

00188                                                 {
00189     return dimensao_;
00190 }

void Slang::Caixa::guarda ( std::ostream & saida ) const
 

Guarda a caixa escrevendo num canal.

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

Parâmetros:
saida   O canal de onde se guarda a caixa.
Excepções:
ErroAoGuardar   é lançada se a operação falhar.

Slang::Caixa & Slang::Caixa::operator *= ( Slang::Caixa const & c ) [inline]
 

"Multiplica" por uma caixa (resulta a caixa de intersecção).

Definido na linha 252 do ficheiro ecra_impl.H.

00252                                                                {
00253     if(vazia() || c.vazia())
00254         return *this = caixa_vazia;
00255     int const linha = max(origem_.linha(), c.origem_.linha());
00256     int const coluna = max(origem_.coluna(), c.origem_.coluna());
00257     int const linha_final = min(origem_.linha() + dimensao_.linhas(), 
00258                                 c.origem_.linha() + c.dimensao_.linhas());
00259     int const coluna_final = min(origem_.coluna() + dimensao_.colunas(), 
00260                                  c.origem_.coluna() + c.dimensao_.colunas());
00261     if(linha_final < linha || coluna_final < coluna)
00262         return *this = caixa_vazia;
00263     
00264     origem_.linha(linha);
00265     origem_.coluna(coluna);
00266     dimensao_.linhas(linha_final - linha);
00267     dimensao_.colunas(coluna_final - coluna);
00268 
00269     return *this;
00270 }

Slang::Caixa & Slang::Caixa::operator+= ( Slang::Caixa const & c ) [inline]
 

"Soma" com uma caixa (resulta a caixa envolvente da união).

Definido na linha 235 do ficheiro ecra_impl.H.

00235                                                                {
00236     if(vazia()) return *this = c;
00237     if(c.vazia()) return *this;
00238     int const linha = min(origem_.linha(), c.origem_.linha());
00239     int const coluna = min(origem_.coluna(), c.origem_.coluna());
00240     int const linha_final = max(origem_.linha() + dimensao_.linhas(), 
00241                                 c.origem_.linha() + c.dimensao_.linhas());
00242     int const coluna_final = max(origem_.coluna() + dimensao_.colunas(), 
00243                                  c.origem_.coluna() + c.dimensao_.colunas());
00244     origem_.linha(linha);
00245     origem_.coluna(coluna);
00246     dimensao_.linhas(linha_final - linha);
00247     dimensao_.colunas(coluna_final - coluna);
00248 
00249     return *this;
00250 }

Slang::Caixa & Slang::Caixa::operator+= ( Slang::Posicao const & c ) [inline]
 

Desloca a caixa de c, que é interpretado como um vector.

Definido na linha 230 do ficheiro ecra_impl.H.

00230                                                                  {
00231     origem(origem() + c);
00232     return *this;
00233 }

void Slang::Caixa::origem ( Posicao const & origem ) [inline]
 

Modifica a posição do vértice superior esquerdo da caixa (mas a sua dimensão mantém-se!).

Definido na linha 217 do ficheiro ecra_impl.H.

00217                                                      {
00218     origem_ = origem;
00219 }

Slang::Posicao Slang::Caixa::origem ( ) const [inline]
 

Devolve a posição da célula no vértice superior esquerdo da caixa.

Definido na linha 180 do ficheiro ecra_impl.H.

Referenciado por bordaContem(), destino(), e operator+=().

00180                                              {
00181     return origem_;
00182 }

bool Slang::Caixa::vazia ( ) const [inline]
 

Devolve true se a caixa estiver vazia, ou seja, se tiver dimensão nula.

Definido na linha 192 do ficheiro ecra_impl.H.

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

00192                                     {
00193     return dimensao().linhas() == 0 || dimensao().colunas() == 0;
00194 }


A documentação para esta classe foi gerada a partir dos seguintes ficheiros:
Gerado em Mon May 14 17:22:14 2001 para Slang++ por doxygen1.2.6 escrito por Dimitri van Heesch, © 1997-2001