FTPoint.h
Go to the documentation of this file.
/*
* FTGL - OpenGL font library
*
* Copyright (c) 2001-2004 Henry Maddocks <ftgl@opengl.geek.nz>
* Copyright (c) 2008 Sam Hocevar <sam@hocevar.net>
* Copyright (c) 2008 Sean Morrison <learner@brlcad.org>
*
* Permission is hereby granted, free of charge, to any person obtaining
* a copy of this software and associated documentation files (the
* "Software"), to deal in the Software without restriction, including
* without limitation the rights to use, copy, modify, merge, publish,
* distribute, sublicense, and/or sell copies of the Software, and to
* permit persons to whom the Software is furnished to do so, subject to
* the following conditions:
*
* The above copyright notice and this permission notice shall be
* included in all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/
#ifndef __ftgl__
# warning This header is deprecated. Please use <FTGL/ftgl.h> from now.
# include <FTGL/ftgl.h>
#endif
#ifndef __FTPoint__
#define __FTPoint__
#ifdef __cplusplus
class FTGL_EXPORT FTPoint
{
public:
inline FTPoint()
{
values[0] = 0;
values[1] = 0;
values[2] = 0;
}
inline FTPoint(const FTGL_DOUBLE x, const FTGL_DOUBLE y,
const FTGL_DOUBLE z = 0)
{
values[0] = x;
values[1] = y;
values[2] = z;
}
inline FTPoint(const FT_Vector& ft_vector)
{
values[0] = ft_vector.x;
values[1] = ft_vector.y;
values[2] = 0;
}
FTPoint Normalise();
inline FTPoint& operator += (const FTPoint& point)
{
values[0] += point.values[0];
values[1] += point.values[1];
values[2] += point.values[2];
return *this;
}
inline FTPoint operator + (const FTPoint& point) const
{
FTPoint temp;
temp.values[0] = values[0] + point.values[0];
temp.values[1] = values[1] + point.values[1];
temp.values[2] = values[2] + point.values[2];
return temp;
}
inline FTPoint& operator -= (const FTPoint& point)
{
values[0] -= point.values[0];
values[1] -= point.values[1];
values[2] -= point.values[2];
return *this;
}
inline FTPoint operator - (const FTPoint& point) const
{
FTPoint temp;
temp.values[0] = values[0] - point.values[0];
temp.values[1] = values[1] - point.values[1];
temp.values[2] = values[2] - point.values[2];
return temp;
}
inline FTPoint operator * (double multiplier) const
{
FTPoint temp;
temp.values[0] = values[0] * multiplier;
temp.values[1] = values[1] * multiplier;
temp.values[2] = values[2] * multiplier;
return temp;
}
inline friend FTPoint operator * (double multiplier, FTPoint& point)
{
return point * multiplier;
}
inline friend double operator * (FTPoint &a, FTPoint& b)
{
return a.values[0] * b.values[0]
+ a.values[1] * b.values[1]
+ a.values[2] * b.values[2];
}
inline FTPoint operator ^ (const FTPoint& point)
{
FTPoint temp;
temp.values[0] = values[1] * point.values[2]
- values[2] * point.values[1];
temp.values[1] = values[2] * point.values[0]
- values[0] * point.values[2];
temp.values[2] = values[0] * point.values[1]
- values[1] * point.values[0];
return temp;
}
friend bool operator == (const FTPoint &a, const FTPoint &b);
friend bool operator != (const FTPoint &a, const FTPoint &b);
inline operator const FTGL_DOUBLE*() const
{
return values;
}
inline void X(FTGL_DOUBLE x) { values[0] = x; };
inline void Y(FTGL_DOUBLE y) { values[1] = y; };
inline void Z(FTGL_DOUBLE z) { values[2] = z; };
inline FTGL_DOUBLE X() const { return values[0]; };
inline FTGL_DOUBLE Y() const { return values[1]; };
inline FTGL_DOUBLE Z() const { return values[2]; };
inline FTGL_FLOAT Xf() const { return static_cast<FTGL_FLOAT>(values[0]); };
inline FTGL_FLOAT Yf() const { return static_cast<FTGL_FLOAT>(values[1]); };
inline FTGL_FLOAT Zf() const { return static_cast<FTGL_FLOAT>(values[2]); };
private:
FTGL_DOUBLE values[3];
};
#endif //__cplusplus
#endif // __FTPoint__
FTPoint
FTPoint class is a basic 3-dimensional point or vector.
Definition: FTPoint.h:43
FTPoint::Y
void Y(FTGL_DOUBLE y)
Definition: FTPoint.h:250
FTPoint::Z
void Z(FTGL_DOUBLE z)
Definition: FTPoint.h:251
FTPoint::Yf
FTGL_FLOAT Yf() const
Definition: FTPoint.h:261
FTPoint::FTPoint
FTPoint(const FTGL_DOUBLE x, const FTGL_DOUBLE y, const FTGL_DOUBLE z=0)
Constructor.
Definition: FTPoint.h:62
FTPoint::Xf
FTGL_FLOAT Xf() const
Definition: FTPoint.h:260
FTPoint::FTPoint
FTPoint()
Default constructor.
Definition: FTPoint.h:48
FTPoint::X
FTGL_DOUBLE X() const
Getters.
Definition: FTPoint.h:257
FTPoint::Zf
FTGL_FLOAT Zf() const
Definition: FTPoint.h:262
FTPoint::Normalise
FTPoint Normalise()
Normalise a point's coordinates.
FTPoint::Y
FTGL_DOUBLE Y() const
Definition: FTPoint.h:258
FTPoint::FTPoint
FTPoint(const FT_Vector &ft_vector)
Constructor.
Definition: FTPoint.h:75
FTPoint::Z
FTGL_DOUBLE Z() const
Definition: FTPoint.h:259
FTPoint::X
void X(FTGL_DOUBLE x)
Setters.
Definition: FTPoint.h:249
ftgl.h
FTGL_FLOAT
float FTGL_FLOAT
Definition: ftgl.h:39
FTGL_EXPORT
#define FTGL_EXPORT
Definition: ftgl.h:134
FTGL_DOUBLE
double FTGL_DOUBLE
Definition: ftgl.h:38