-/* === S I N F G =========================================================== */
+/* === S Y N F I G ========================================================= */
/*! \file vector.h
** \brief Various discreet type definitions
**
** $Id: vector.h,v 1.2 2005/01/23 04:03:21 darco Exp $
**
** \legal
-** Copyright (c) 2002 Robert B. Quattlebaum Jr.
+** Copyright (c) 2002-2005 Robert B. Quattlebaum Jr., Adrian Bentley
**
-** This software and associated documentation
-** are CONFIDENTIAL and PROPRIETARY property of
-** the above-mentioned copyright holder.
+** This package is free software; you can redistribute it and/or
+** modify it under the terms of the GNU General Public License as
+** published by the Free Software Foundation; either version 2 of
+** the License, or (at your option) any later version.
**
-** You may not copy, print, publish, or in any
-** other way distribute this software without
-** a prior written agreement with
-** the copyright holder.
+** This package is distributed in the hope that it will be useful,
+** but WITHOUT ANY WARRANTY; without even the implied warranty of
+** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+** General Public License for more details.
** \endlegal
*/
/* ========================================================================= */
/* === S T A R T =========================================================== */
-#ifndef __SINFG_VECTOR_H
-#define __SINFG_VECTOR_H
+#ifndef __SYNFIG_VECTOR_H
+#define __SYNFIG_VECTOR_H
/* === H E A D E R S ======================================================= */
#include "real.h"
-#include <cmath>
+#include <math.h>
/* === M A C R O S ========================================================= */
-#ifndef isnan
#ifdef WIN32
#include <float.h>
#endif
#endif
-#ifdef __APPLE__
-#define isnan __isnanf
+// For some reason isnan() isn't working on macosx any more.
+// This is a quick fix.
+#if defined(__APPLE__) && !defined(SYNFIG_ISNAN_FIX)
+#ifdef isnan
+#undef isnan
#endif
-
+inline bool isnan(double x) { return x != x; }
+inline bool isnan(float x) { return x != x; }
+#define SYNFIG_ISNAN_FIX 1
#endif
+
/* === T Y P E D E F S ===================================================== */
/* === C L A S S E S & S T R U C T S ======================================= */
-namespace sinfg {
+namespace synfig {
/*! \class Vector
** \todo writeme
-}; // END of namespace sinfg
+}; // END of namespace synfig
namespace std {
-inline sinfg::Vector::value_type
-abs(const sinfg::Vector &rhs)
+inline synfig::Vector::value_type
+abs(const synfig::Vector &rhs)
{ return rhs.mag(); }
}; // END of namespace std
_ETL_BEGIN_NAMESPACE
template <>
-class bezier_base<sinfg::Vector,float> : public std::unary_function<float,sinfg::Vector>
+class bezier_base<synfig::Vector,float> : public std::unary_function<float,synfig::Vector>
{
public:
- typedef sinfg::Vector value_type;
+ typedef synfig::Vector value_type;
typedef float time_type;
private:
- bezier_base<sinfg::Vector::value_type,time_type> bezier_x,bezier_y;
+ bezier_base<synfig::Vector::value_type,time_type> bezier_x,bezier_y;
value_type a,b,c,d;
value_type
operator()(time_type t)const
{
- return sinfg::Vector(bezier_x(t),bezier_y(t));
+ return synfig::Vector(bezier_x(t),bezier_y(t));
}
void evaluate(time_type t, value_type &f, value_type &df) const