#ifndef DIMENSION_HH
#define DIMENSION_HH
#include <iostream>
class Dimension {
public:
uint32_t w;
uint32_t h;
Dimension (uint32_t w, uint32_t h) : w(w), h(h) { }
};
class PositionDelta {
public:
int32_t dx;
int32_t dy;
PositionDelta (int32_t dx, int32_t dy) : dx(dx), dy(dy) { }
};
class Coordinate {
public:
uint32_t x;
uint32_t y;
Coordinate (uint32_t x, uint32_t y) : x(x), y(y) { }
Coordinate &operator+= (const PositionDelta &d) {
this->x += d.dx;
this->y += d.dy;
return *this;
}
Coordinate operator+ (const PositionDelta &d) {
return Coordinate(x + d.dx, y + d.dy);
}
// Scale the coordinate so that it matches the pixel resolution
uint32_t scaledX() { return x; }
uint32_t scaledY() { return y; }
};
std::ostream& operator<< (std::ostream &s, const Coordinate &c);
std::ostream& operator<< (std::ostream &s, const PositionDelta &c);
#endif