root/OpenSceneGraph/trunk/include/osgAnimation/CubicBezier @ 13041

Revision 13041, 2.6 kB (checked in by robert, 3 years ago)

Ran script to remove trailing spaces and tabs

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
Line 
1/*  -*-c++-*-
2 *  Copyright (C) 2008 Cedric Pinson <cedric.pinson@plopbyte.net>
3 *
4 * This library is open source and may be redistributed and/or modified under
5 * the terms of the OpenSceneGraph Public License (OSGPL) version 0.0 or
6 * (at your option) any later version.  The full license is in LICENSE file
7 * included with this distribution, and on the openscenegraph.org website.
8 *
9 * This library is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12 * OpenSceneGraph Public License for more details.
13*/
14
15#ifndef OSGANIMATION_CUBIC_BEZIER
16#define OSGANIMATION_CUBIC_BEZIER 1
17
18#include <osg/Vec2>
19#include <osg/Vec3>
20#include <osg/Vec4>
21
22namespace osgAnimation
23{
24
25    template <class T>
26    class TemplateCubicBezier
27    {
28    public:
29        TemplateCubicBezier() {}
30
31        TemplateCubicBezier(const T& p, const T& i, const T& o) : _position(p), _controlPointIn(i), _controlPointOut(o)
32        {
33        }
34
35        // Constructor with value only
36        TemplateCubicBezier(const T& p) : _position(p), _controlPointIn(p), _controlPointOut(p)
37        {
38        }
39
40        const T& getPosition() const { return _position;}
41        const T& getControlPointIn() const { return _controlPointIn;}
42        const T& getControlPointOut() const { return _controlPointOut;}
43
44        T& getPosition() { return _position;}
45        T& getControlPointIn() { return _controlPointIn;}
46        T& getControlPointOut() { return _controlPointOut;}
47
48        void setPosition(const T& v) {_position = v;}
49        void setControlPointIn(const T& v) {_controlPointIn = v;}
50        void setControlPointOut(const T& v) {_controlPointOut = v;}
51
52        // steaming operators.
53        friend std::ostream& operator << (std::ostream& output, const TemplateCubicBezier<T>& tcb)
54        {
55            output << tcb._position << " "
56                   << tcb._controlPointIn << " "
57                   << tcb._controlPointOut;
58            return output; // to enable cascading
59        }
60
61        friend std::istream& operator >> (std::istream& input, TemplateCubicBezier<T>& tcb)
62        {
63            input >> tcb._position >> tcb._controlPointIn >> tcb._controlPointOut;
64            return input;
65        }
66
67    protected:
68        T _position, _controlPointIn, _controlPointOut;
69    };
70
71    typedef TemplateCubicBezier<float> FloatCubicBezier;
72    typedef TemplateCubicBezier<double> DoubleCubicBezier;
73    typedef TemplateCubicBezier<osg::Vec2> Vec2CubicBezier;
74    typedef TemplateCubicBezier<osg::Vec3> Vec3CubicBezier;
75    typedef TemplateCubicBezier<osg::Vec4> Vec4CubicBezier;
76
77}
78
79#endif
Note: See TracBrowser for help on using the browser.