X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=synfig-core%2Ftrunk%2Fsrc%2Fsynfig%2Fwaypoint.h;h=d94cf21997a33f57fe7162a4a07275789b1f33d0;hb=9459638ad6797b8139f1e9f0715c96076dbf0890;hp=63151343848d99d48d1f08e0e8a120602f45a666;hpb=e3acc0b267b14fda5db3c7bbb2f218b993ef84b3;p=synfig.git diff --git a/synfig-core/trunk/src/synfig/waypoint.h b/synfig-core/trunk/src/synfig/waypoint.h index 6315134..d94cf21 100644 --- a/synfig-core/trunk/src/synfig/waypoint.h +++ b/synfig-core/trunk/src/synfig/waypoint.h @@ -1,28 +1,31 @@ -/* === S I N F G =========================================================== */ +/* === S Y N F I G ========================================================= */ /*! \file waypoint.h ** \brief Template Header ** -** $Id: waypoint.h,v 1.1.1.1 2005/01/04 01:23:15 darco Exp $ +** $Id$ ** ** \legal -** Copyright (c) 2002 Robert B. Quattlebaum Jr. +** Copyright (c) 2002-2005 Robert B. Quattlebaum Jr., Adrian Bentley +** Copyright (c) 2008 Chris Moore +** Copyright (c) 2008 Paul Wise ** -** 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_WAYPOINT_H -#define __SINFG_WAYPOINT_H +#ifndef __SYNFIG_WAYPOINT_H +#define __SYNFIG_WAYPOINT_H /* === H E A D E R S ======================================================= */ @@ -41,12 +44,12 @@ /* === C L A S S E S & S T R U C T S ======================================= */ -namespace sinfg { +namespace synfig { class ValueNode; class GUID; - - + + /*! \class Waypoint ** \brief \writeme */ @@ -58,12 +61,12 @@ class Waypoint : public UniqueID public: - typedef sinfg::Interpolation Interpolation; + typedef synfig::Interpolation Interpolation; class Model { friend class Waypoint; - + int priority; Interpolation before; Interpolation after; @@ -71,11 +74,15 @@ public: Real continuity; Real bias; Real temporal_tension; - + bool priority_flag,before_flag,after_flag,tension_flag,continuity_flag,bias_flag,temporal_tension_flag; - + public: Model(): + // we don't need to initialise these 5, but the compiler thinks they're used uninitialised if we don't + // and this constructor isn't called often, so it's ok + priority(0), before(INTERPOLATION_NIL), after(INTERPOLATION_NIL), tension(0), continuity(0), bias(0), temporal_tension(0), + priority_flag(false), before_flag(false), after_flag(false), @@ -83,27 +90,27 @@ public: continuity_flag(false), bias_flag(false), temporal_tension_flag(false) { } - + Interpolation get_before()const { return before; } void set_before(Interpolation x) { before=x; before_flag=true;} - + Interpolation get_after()const { return after; } void set_after(Interpolation x) { after=x; after_flag=true;} - + const Real &get_tension()const { return tension; } void set_tension(const Real &x) { tension=x; tension_flag=true;} - + const Real &get_continuity()const { return continuity; } void set_continuity(const Real &x) { continuity=x; continuity_flag=true;} - + const Real &get_bias()const { return bias; } void set_bias(const Real &x) { bias=x; bias_flag=true;} const Real &get_temporal_tension()const { return temporal_tension; } void set_temporal_tension(const Real &x) { temporal_tension=x; temporal_tension_flag=true;} - + int get_priority()const { return priority; } - void set_priority(int x) { priority=x; priority_flag=true;} + void set_priority(int x) { priority=x; priority_flag=true;} #define FLAG_MACRO(x) bool get_##x##_flag()const { return x##_flag; } void set_##x##_flag(bool y) { x##_flag=y; } FLAG_MACRO(priority) @@ -114,7 +121,7 @@ public: FLAG_MACRO(bias) FLAG_MACRO(temporal_tension) #undef FLAG_MACRO - + void reset() { priority_flag=false; @@ -125,7 +132,7 @@ public: bias_flag=false; temporal_tension_flag=false; } - + bool is_trivial()const { return !( @@ -139,22 +146,29 @@ public: ); } }; - + + enum Side + { + SIDE_UNSPECIFIED, SIDE_LEFT, SIDE_RIGHT, + + SIDE_END=2 //!< \internal + }; + /* -- ** -- D A T A ------------------------------------------------------------- */ - + private: - + int priority_; etl::loose_handle parent_; Interpolation before, after; - + etl::rhandle value_node; Time time; - + // The following are for the INTERPOLATION_TCB type Real tension; Real continuity; @@ -162,10 +176,10 @@ private: // The following are for the INTERPOLATION_MANUAL type ValueBase cpoint_before,cpoint_after; - + float time_tension; - + /* -- ** -- C O N S T R U C T O R S --------------------------------------------- */ @@ -174,7 +188,7 @@ public: Waypoint(ValueBase value, Time time); Waypoint(etl::handle value_node, Time time); - + Waypoint(); /* @@ -194,10 +208,10 @@ public: ValueBase get_value()const; ValueBase get_value(const Time &t)const; void set_value(const ValueBase &x); - + const etl::rhandle &get_value_node()const { return value_node; } void set_value_node(const etl::handle &x); - + const Real &get_tension()const { return tension; } void set_tension(const Real &x) { tension=x; } @@ -215,27 +229,25 @@ public: const etl::loose_handle &get_parent_value_node()const { return parent_; } void set_parent_value_node(const etl::loose_handle &x) { parent_=x; } - + bool is_static()const; - float get_time_tension()const { return time_tension; } - void set_time_tension(const float& x) { time_tension=x; } float get_temporal_tension()const { return time_tension; } void set_temporal_tension(const float& x) { time_tension=x; } - + bool operator<(const Waypoint &rhs)const { return time(const Time &rhs)const { return time.is_more_than(rhs); } - + bool operator==(const Time &rhs)const { return time.is_equal(rhs); } bool operator!=(const Time &rhs)const { return !time.is_equal(rhs); } - + bool operator==(const UniqueID &rhs)const { return get_uid()==rhs.get_uid(); } bool operator!=(const UniqueID &rhs)const @@ -248,7 +260,7 @@ public: typedef std::vector< Waypoint > WaypointList; -}; // END of namespace sinfg +}; // END of namespace synfig /* === E N D =============================================================== */