Blame c++/vector/activepoint.h

Ivan Mahonin 2fb9fd
#ifndef ACTIVEPOINT_H
Ivan Mahonin 2fb9fd
#define ACTIVEPOINT_H
Ivan Mahonin 2fb9fd
Ivan Mahonin 2fb9fd
Ivan Mahonin 2fb9fd
#include "vector.h"
Ivan Mahonin 2fb9fd
#include "color.h"
Ivan Mahonin 2fb9fd
#include "handle.h"
Ivan Mahonin 2fb9fd
Ivan Mahonin 2fb9fd
Ivan Mahonin 2fb9fd
class ActivePoint: public Shared {
Ivan Mahonin 2fb9fd
public:
Ivan Mahonin 2fb9fd
	typedef HandleT<ActivePoint> Handle;
Ivan Mahonin 2fb9fd
Ivan Mahonin 2fb9fd
	Vector position;
Ivan Mahonin 2fb9fd
	Color color;
Ivan Mahonin 2fb9fd
	Real radius;
Ivan Mahonin 2fb9fd
	bool enabled;
Ivan Mahonin 2fb9fd
	bool visible;
Ivan Mahonin 2fb9fd
	
Ivan Mahonin 2fb9fd
	bool active;
Ivan Mahonin 2fb9fd
Ivan Mahonin 2fb9fd
private:
Ivan Mahonin 2fb9fd
	ActivePoint(const ActivePoint&): ActivePoint() { }
Ivan Mahonin 2fb9fd
	ActivePoint& operator= (const ActivePoint&) { return *this; }
Ivan Mahonin 2fb9fd
Ivan Mahonin 2fb9fd
public:
Ivan Mahonin 2fb9fd
	ActivePoint(
Ivan Mahonin 2fb9fd
		const Vector &position,
Ivan Mahonin 2fb9fd
		const Color &color,
Ivan Mahonin 2fb9fd
		const Real &radius = 5,
Ivan Mahonin 2fb9fd
		bool enabled = true,
Ivan Mahonin 2fb9fd
		bool visible = true
Ivan Mahonin 2fb9fd
	):
Ivan Mahonin 2fb9fd
		position(position),
Ivan Mahonin 2fb9fd
		color(color),
Ivan Mahonin 2fb9fd
		radius(radius),
Ivan Mahonin 2fb9fd
		enabled(enabled),
Ivan Mahonin 2fb9fd
		visible(visible),
Ivan Mahonin 2fb9fd
		active()
Ivan Mahonin 2fb9fd
	{ }
Ivan Mahonin 2fb9fd
Ivan Mahonin 2fb9fd
	explicit ActivePoint(
Ivan Mahonin 2fb9fd
		const Vector &position = Vector()
Ivan Mahonin 2fb9fd
	): ActivePoint(position, Color::white()) { }
Ivan Mahonin 2fb9fd
	
Ivan Mahonin 2fb9fd
	bool is_inside(const Vector &p) const
Ivan Mahonin 2fb9fd
		{ return lesseq((position - p).lensqr(), radius*radius); }
Ivan Mahonin 2fb9fd
};
Ivan Mahonin 2fb9fd
Ivan Mahonin 2fb9fd
Ivan Mahonin 2fb9fd
#endif