#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... |
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.
|
Construtor da classe. Por omissão a caixa está vazia.
Definido na linha 164 do ficheiro ecra_impl.H. Referenciado por destino(). 00165 : origem_(origem), dimensao_(dimensao) { 00166 } |
|
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. 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 } |
|
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().
Definido na linha 174 do ficheiro ecra_impl.H. 00175 : origem_(entrada), dimensao_(entrada) { 00176 } |
|
Devolve
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 } |
|
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().
|
|
Devolve
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 } |
|
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. |
|
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 } |
|
Modifica a dimensão da caixa.
Definido na linha 225 do ficheiro ecra_impl.H. 00225 { 00226 dimensao_ = dimensao; 00227 } |
|
Devolve a dimensão da caixa.
Definido na linha 188 do ficheiro ecra_impl.H. Referenciado por vazia(). 00188 { 00189 return dimensao_; 00190 } |
|
Guarda a caixa escrevendo num canal. O formato produzido é compatível com o que o método carrega() espera.
|
|
"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 } |
|
"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 } |
|
Desloca a caixa de c, que é interpretado como um vector.
Definido na linha 230 do ficheiro ecra_impl.H. |
|
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 } |
|
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 } |
|
Devolve
Definido na linha 192 do ficheiro ecra_impl.H. Referenciado por operator *=(), e operator+=(). |