src/proto2/Dimension.hh
author terom
Mon, 10 Nov 2008 16:49:09 +0000
branchno-netsession
changeset 31 d0d7489d4e8b
parent 25 af75a1894a32
child 42 eb1a93a38cde
permissions -rw-r--r--
add initial code written so far
#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