#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+=(). |
1.2.6 escrito por Dimitri van Heesch,
© 1997-2001