/*! \file blineconvert.h
** \brief Template Header
**
-** $Id: blineconvert.h,v 1.1.1.1 2005/01/07 03:34:37 darco Exp $
+** $Id$
**
** \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
*/
/* ========================================================================= */
/* === C L A S S E S & S T R U C T S ======================================= */
namespace synfigapp {
-
+
class BLineConverter
{
public:
int curind;
synfig::Real tangentscale;
synfig::Real error; //negative error will indicate invalid;
-
- cpindex(int ci, synfig::Real s=0, synfig::Real e=-1)
- :curind(ci), tangentscale(s), error(e)
+
+ cpindex(int ci, synfig::Real s=0, synfig::Real e=-1)
+ :curind(ci), tangentscale(s), error(e)
{}
-
+
cpindex(const cpindex & o)
- :curind(o.curind), tangentscale(o.tangentscale), error(o.error)
+ :curind(o.curind), tangentscale(o.tangentscale), error(o.error)
{}
-
+
const cpindex & operator = (const cpindex & rhs)
{
curind = rhs.curind;
error = rhs.error;
return *this;
}
-
+
bool operator < (const cpindex &rhs) const
{
- return curind < rhs.curind;
+ return curind < rhs.curind;
}
-
+
//point is obviously in[curind]
//tangent scale will get reset to the smallest (or something else depending on experimentation)
};
//temporary point storage for vector calc
std::vector<synfig::Point> ftemp;
-
- std::vector<synfig::Vector> df; //the derivative cache
+
+ std::vector<synfig::Vector> df; //the derivative cache
std::vector<synfig::Real> cvt; //the curvature cache
-
+
std::vector<int> brk; //the break point cache
-
+
std::vector<synfig::Real> di, //cumulative distance
d_i; //distance between adjacent segments
-
+
std::vector<synfig::Point> work; //the working point cache for the entire curve
std::vector<cpindex> curind;
-
+
//function parameters
void clear();
static void EnforceMinWidth(std::list<synfig::BLinePoint> &bline, synfig::Real min_pressure);
void operator ()(std::list<synfig::BLinePoint> &out, const std::list<synfig::Point> &in,const std::list<synfig::Real> &in_w);
};
-
+
}; // END of namespace synfigapp
/* === E N D =============================================================== */