#pragma once

#include "AbstractGeometricItem.h"
#include "Point.h"

template<class T>
class Grid;

class Rectangle : public AbstractGeometricItem
{
public:

    Rectangle(const Point& bottomLeft, const Point& topRight);
    Rectangle(const Point& bottomLeft, double width, double height);

    double getHeight() const;

    double getWidth() const;

    const Point& getLocation() const override;

    Bounds getSize() const override;

    Rectangle getBounds() const;

    void sample(Grid<unsigned char>* grid) const override;

private:
    Point mBottomLeft;
    double mWidth{0};
    double mHeight{0};
};
