#pragma once

#include <memory>

class DiscretePoint
{
    unsigned mX;
    unsigned mY;

public:

    DiscretePoint(unsigned x, unsigned y);

    ~DiscretePoint();

    std::shared_ptr<DiscretePoint> Create(unsigned x, unsigned y);

    unsigned GetX() const;

    unsigned GetY() const;
};

using Pixel = DiscretePoint;
using DiscretePointPtr = std::shared_ptr<DiscretePoint>;
using PixelPtr = DiscretePointPtr;
