#ifndef TRANS_H
# define TRANS_H

# ifndef GPK_STD_H
#  include <gpk_std.h>
# endif
# ifndef M22V2_H
#  include "m22v2.h"
# endif

/* These operators are guarenteed for any kind of transform. */

class transform	{
	public:
	virtual BOOL ok() C = 0;
	virtual vector2 inverse(C vector2& x) C = 0;
	virtual vector2 operator()(C vector2&) C = 0;
	virtual vector2 Center() C = 0;
	virtual vector2 Shift() C = 0;
	virtual void set_in_space(C vector_space *i) = 0;
	virtual void set_out_space(C vector_space *o) = 0;
	virtual ~transform();
	};
/* We also guarentee that Shift() = transform(Center()). */

#endif
