Show corner.h syntax highlighted
/***************************************************************************
corner.h - description
-------------------
begin : Thu Aug 29 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 CORNER_H_INCLUDED
#define CORNER_H_INCLUDED
#include <boost/operators.hpp>
class MapTilePos;
class Rotation;
class CL_OutputSource;
class CL_InputSource;
/**
* Defines the location of a corner of a tile.
*
* CornerID represents a particular corner location on a tile,
* though it could be used to indicate a corner of any rectangular
* surface. Valid corners are NORTH, SOUTH, EAST, and WEST.
*/
class Corner: boost::equality_comparable<Corner,
boost::multipliable2<Corner, Rotation> > {
private:
/**
* The raw corner identifier.
*/
int id;
public:
/**
* The north corner.
*/
static const Corner NORTH;
/**
* The south corner.
*/
static const Corner SOUTH;
/**
* The east corner.
*/
static const Corner EAST;
/**
* The west corner.
*/
static const Corner WEST;
/**
* Copy constructor.
*/
Corner(const Corner& c);
/**
* Creates a Corner of the given corner number.
* \p n Use 0 (NORTH), 1 (EAST), 2 (SOUTH), or 3 (WEST).
*/
explicit Corner(int n);
/**
* Returns the corner opposite to this one.
*/
Corner operator-() const;
/**
* Compare equality.
*/
bool operator==(const Corner& x) const;
/**
* Rotate the corner by \p r.
*/
Corner& operator*=(const Rotation& r);
/**
* Returns the corner number: 0 = NORTH, 1 = EAST, 2 = SOUTH, 3 = WEST.
*/
int getCornerNum() const;
/**
* Returns the corresponding MapTilePos of this corner.
*/
MapTilePos getMapTilePos() const;
/**
* Insert this into an output source.
*/
void inject(CL_OutputSource& os) const;
/**
* Read a corner from an input source.
*/
static Corner extract(CL_InputSource& is);
};
#endif /* ndef CORNER_H_INCLUDED */
See more files for this project here