inline Quadro::Quadro(Dimensao const& dimensao, Cor fundo, double aspecto)
: dimensao_(dimensao), fundo_(fundo), aspecto_(aspecto),
pixeis(dimensao.linhas(), std::vector<Cor>(dimensao.colunas(), fundo))
{
}
inline void Quadro::pinta(Posicao const& posicao, Cor const& cor)
{
if(dentro(posicao))
pixeis[posicao.linha()][posicao.coluna()] = cor;
}
inline void Quadro::pinta(Posicao const& posicao)
{
if(dentro(posicao))
pixeis[posicao.linha()][posicao.coluna()] = contrasta(fundo());
}
inline void Quadro::limpa(Posicao const& posicao)
{
pinta(posicao, fundo());
}
inline Quadro::Cor Quadro::cor(Posicao const& posicao) const
{
return dentro(posicao) ?
pixeis[posicao.linha()][posicao.coluna()] : fundo();
}
inline bool Quadro::dentro(Posicao const& posicao) const
{
return (0 <= posicao.linha() and posicao.linha() < dimensao().linhas() and
0 <= posicao.coluna() and posicao.coluna() < dimensao().colunas());
}
inline Quadro::Cor Quadro::fundo() const
{
return fundo_;
}
inline double Quadro::aspecto() const
{
return aspecto_;
}
inline Dimensao Quadro::dimensao() const
{
return dimensao_;
}