#ifndef QUADRADO_H
#define QUADRADO_H

#include "forma.H"

/** Tipo específico de forma: quadrado aberto com lados paralelos aos eixos
    coordenados.  Posição é o canto superior direito. */
class Quadrado : public Forma {
public:
    /** Constrói novo quadrado dadas a posição do canto superior esquerdo
        e a dimensão do lado (em colunas do quadro). */
    Quadrado(Posicao const& posicao, int lado);

    /// Devolve dimensão do lado (em colunas do quadro).
    int lado() const;

    /** Desenha o quadrado no quadro, compensando o facto dos píxeis serem
        rectangulares. */
    virtual void desenhaEm(Quadro& quadro) const;  

private:
    // Dimensão do lado (em colunas):
    int lado_;
};

#include "quadrado_impl.H"

#endif // QUADRADO_H