// -*- C++ -*-
/**
 * \file Box.h
 * This file is part of LyX, the document processor.
 * Licence details can be found in the file COPYING.
 *
 * \author John Levon
 *
 * Full author contact details are available in file CREDITS.
 */

#ifndef BOX_H
#define BOX_H

#include "support/strfwd.h"


namespace lyx {

/**
 * A simple class representing rectangular regions.
 * It is expected that the box be constructed in
 * normalised form, that is to say : x1,y1 is top-left,
 * x2,y2 is bottom-right.
 *
 * Negative values are allowed.
 */
class Box {
public:
	int x1;
	int x2;
	int y1;
	int y2;

	/// Zero-initialise the member variables.
	Box();
	/// Initialise the member variables.
	Box(int x1_, int x2_, int y1_, int y2_);

	/**
	 * Returns true if the given co-ordinates are within
	 * the box. Check is exclusive (point on a border
	 * returns false).
	 */
	bool contains(int x, int y) const;
};


std::ostream & operator<<(std::ostream &, Box const &);


} // namespace lyx

#endif // BOX_H
