struct Point
{
public:
int x;
int y;
public:
Point() : x(0), y(0) { }
Point(int x, int y) : x(x), y(y) { }
Point(const Point &point); //Copy constructor
~Point() { }
//A bunch of helper functions for assorted uses.
//Some of it depends on another class (Rect), so I commented it all out.
/*
//Keeps the point within 'rect'.
void KeepWithin(const Rect &rect);
//Keeps the point outside of 'rect'.
void KeepWithout(const Rect &rect);
//Snaps the point to the nearest edge of 'rect', regardless of
//whether the point is inside or outside the rectangle.
void SnapToEdge(const Rect &rect);
//Returns 'true' if 'value.x' is greater than 'min.x' and less than 'max.x', and the same for the 'y' member.
static bool IsWithin(const Point &min, const Point &value, const Point &max);
static bool IsWithin(const Point &value, const Point &max);
//Keeps 'value.x' between 'min.x' and 'max.x', with 'loops.x' being the number of times it had to loop around.
//Does the same with the 'y' member. Negative loops return a negative number.
static Point LoopInRange(const Point &min, const Point &value, const Point &max, Point &loops);
static Point LoopInRange(const Point &value, const Point &max, Point &loops);
*/
bool operator==(const Point &other) const;
bool operator!=(const Point &other) const;
Point &operator=(const Point &other); //Assignment operator
Point &operator+=(const Point &other);
Point &operator-=(const Point &other);
Point &operator*=(const Point &other);
Point &operator/=(const Point &other);
Point &operator%=(const Point &other);
Point operator+(const Point &other) const;
Point operator-(const Point &other) const;
Point operator*(const Point &other) const;
Point operator/(const Point &other) const;
Point operator%(const Point &other) const;
//Additive-inverse operator.
Point operator-() const;
//Some conversions you don't need:
/*
//Packs the Point into a Uint32, with 16 bits for x, and 16 for y. Since both x and y can be negative,
//this leaves just 15 bits for the numeral component, meaning (-32768 to 32768) in both x and y.
uint32_t ToUint32() const;
void FromUint32(uint32_t data);
//Format: "(x, y)"
std::string ToString() const;
void FromString(const std::string &str);
SFML_ONLY
(
sf::Vector2f ToSfmlVector2f() const;
void FromSfmlVector2f(sf::Vector2f vector);
)
QT_ONLY
(
QPoint ToQPoint() const;
void FromQPoint(QPoint point);
)
*/
};