Show rotation.h syntax highlighted
/***************************************************************************
rotation.h - description
-------------------
begin : Fri Sep 6 2002
copyright : (C) 2002 by Brendon Higgins
email : freepop-devel@lists.sourceforge.net
***************************************************************************/
/***************************************************************************
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
* the Free Software Foundation; either version 2 of the License, or *
* (at your option) any later version. *
* *
***************************************************************************/
#ifndef ROTATION_H_INCLUDED
#define ROTATION_H_INCLUDED
#include <boost/operators.hpp>
/**
* Counts the number of 90 degree rotations. Ie: 0, 1, 2, and 3. It
* automatically wraps, and can rotate itself.
*/
class Rotation: boost::equality_comparable< boost::addable<Rotation> > {
private:
/**
* Number of clockwise rotations.
*/
int n;
/**
* Set the number of clockwise rotations to \p r.
*/
Rotation(int r);
public:
/**
* 90 degrees clockwise.
*/
static const Rotation CLOCKWISE;
/**
* 90 degrees anticlockwise.
*/
static const Rotation ANTICLOCKWISE;
/**
* Constructor. 0 rotations by default.
*/
Rotation();
/**
* Copy constructor.
*/
Rotation(const Rotation& r);
/**
* Set the number of clockwise rotations to \p r.
*/
void setClock(int r);
/**
* Get the number of clockwise rotations: 0-3.
*/
int getClock() const;
/**
* Set the number of anticlockwise rotations to \p r.
*/
void setAnti(int r);
/**
* Get the number of anticlockwise rotations: 0-3.
*/
int getAnti() const;
/**
* Increment clockwise rotations by 1.
*/
Rotation& incClock();
/**
* Decrement clockwise rotations by 1.
*/
Rotation& decClock();
/**
* Increment anticlockwise rotations by 1.
*/
Rotation& incAnti();
/**
* Decrement anticlockwise rotations by 1.
*/
Rotation& decAnti();
/**
* Add two rotations together.
*/
Rotation& operator+=(const Rotation& r);
/**
* Rotate by the same amount but in the opposite direction.
*/
Rotation operator-() const;
/**
* Compare equality.
*/
bool operator==(const Rotation& x) const;
};
#endif
See more files for this project here