/*!ignore * \file NGeometry.h 
\brief Defines gometry primitives used in Neurotechnology components
*/

/*!ignore 
|******************************************************************************|
|*                                                                            *|
|*                          Neurotechnology Core 2.4                          *|
|*                                                                            *|
|* NGeometry.h                                                                *|
|* Geometry types definition                                                  *|
|*                                                                            *|
|* Copyright (C) 2005-2008 Neurotechnology                                    *|
|*                                                                            *|
\******************************************************************************/

#ifndef N_GEOMETRY_H_INCLUDED
#define N_GEOMETRY_H_INCLUDED

#include "NTypes.h"

#ifdef N_CPP
extern "C"
{
#endif

/*!ignore  Structure defining point coordinates in 2D space. */
typedef struct NPoint_
{
	NInt X; /*!ignore < Point coordinate on \a X axis. */
	NInt Y; /*!ignore < Point coordinate on \a Y axis. */
} NPoint;

#ifndef N_NO_FLOAT

/*!ignore  Structure defining point coordinates in 2D space. */
typedef struct NPointF_
{
	NFloat X; /*!ignore < Point coordinate on \a X axis. */
	NFloat Y; /*!ignore < Point coordinate on \a Y axis. */
} NPointF;

/*!ignore  Structure defining point coordinates in 2D space. */
typedef struct NPointD_
{
	NDouble X; /*!ignore < Point coordinate on \a X axis. */
	NDouble Y; /*!ignore < Point coordinate on \a Y axis. */
} NPointD;

#endif

/*!ignore  Structure defining rectangle size. */
typedef struct NSize_
{
	NInt Width;
	NInt Height;
} NSize;

#ifndef N_NO_FLOAT

/*!ignore  Structure defining rectangle size. */
typedef struct NSizeF_
{
	NFloat Width;
	NFloat Height;
} NSizeF;

/*!ignore  Structure defining rectangle size. */
typedef struct NSizeD_
{
	NDouble Width;
	NDouble Height;
} NSizeD;

#endif

/*!ignore  Structure defining a rectangle figure in 2D space. */
typedef struct NRect_
{
	NInt X;      /*!ignore < Upper left rectangle corner coordinate on \a X axis. */
	NInt Y;      /*!ignore < Upper left rectangle corner coordinate on \a Y axis. */
	NInt Width;  /*!ignore < Rectangle width. */
	NInt Height; /*!ignore < Rectangle height. */
} NRect;

#ifndef N_NO_FLOAT

/*!ignore  Structure defining a rectangle figure in 2D space. */
typedef struct NRectF_
{
	NFloat X;      /*!ignore < Upper left rectangle corner coordinate on \a X axis. */
	NFloat Y;      /*!ignore < Upper left rectangle corner coordinate on \a Y axis. */
	NFloat Width;  /*!ignore < Rectangle width. */
	NFloat Height; /*!ignore < Rectangle height. */
} NRectF;

/*!ignore  Structure defining a rectangle figure in 2D space. */
typedef struct NRectD_
{
	NDouble X;      /*!ignore < Upper left rectangle corner coordinate on \a X axis. */
	NDouble Y;      /*!ignore < Upper left rectangle corner coordinate on \a Y axis. */
	NDouble Width;  /*!ignore < Rectangle width. */
	NDouble Height; /*!ignore < Rectangle height. */
} NRectD;

#endif

#ifdef N_CPP
}
#endif

#endif /*!ignore  !N_GEOMETRY_H_INCLUDED */
