X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=synfig-core%2Ftrunk%2Fsrc%2Fsynfig%2Fnode.cpp;h=083afe74d37145d3a8da692c39bc3feb08c05265;hb=756c0d29ac1742f231e6615f9a577e574e35a4af;hp=fdd2bfe8575ff0f2788dd59fd923f58b42cbd138;hpb=e3acc0b267b14fda5db3c7bbb2f218b993ef84b3;p=synfig.git diff --git a/synfig-core/trunk/src/synfig/node.cpp b/synfig-core/trunk/src/synfig/node.cpp index fdd2bfe..083afe7 100644 --- a/synfig-core/trunk/src/synfig/node.cpp +++ b/synfig-core/trunk/src/synfig/node.cpp @@ -1,28 +1,28 @@ -/* === S I N F G =========================================================== */ +/* === S Y N F I G ========================================================= */ /*! \file node.cpp ** \brief Template File ** -** $Id: node.cpp,v 1.5 2005/01/07 03:29:12 darco Exp $ +** $Id$ ** ** \legal -** Copyright (c) 2002 Robert B. Quattlebaum Jr. +** Copyright (c) 2002-2005 Robert B. Quattlebaum Jr., Adrian Bentley +** Copyright (c) 2007, 2008 Chris Moore ** -** 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 */ /* ========================================================================= */ /* === H E A D E R S ======================================================= */ -#define HASH_MAP_H - #ifdef USING_PCH # include "pch.h" #else @@ -31,11 +31,10 @@ #endif #include "node.h" -#include "proto/nodebase.h" +#include "nodebase.h" #ifdef HASH_MAP_H #include HASH_MAP_H -using namespace __gnu_cxx; #else #include #endif @@ -46,7 +45,7 @@ using namespace __gnu_cxx; using namespace std; using namespace etl; -using namespace sinfg; +using namespace synfig; /* === M A C R O S ========================================================= */ @@ -82,7 +81,7 @@ extern clock_t _clock(); /* === G L O B A L S ======================================================= */ #ifdef HASH_MAP_H -typedef hash_map GlobalNodeMap; +typedef HASH_MAP_CLASS GlobalNodeMap; #else typedef map GlobalNodeMap; #endif @@ -98,8 +97,8 @@ static GlobalNodeMap& global_node_map() /* === P R O C E D U R E S ================================================= */ -sinfg::Node* -sinfg::find_node(const GUID& guid) +synfig::Node* +synfig::find_node(const GUID& guid) { if(global_node_map().count(guid)==0) return 0; @@ -107,7 +106,7 @@ sinfg::find_node(const GUID& guid) } static void -refresh_node(sinfg::Node* node, GUID old_guid) +refresh_node(synfig::Node* node, GUID old_guid) { assert(global_node_map().count(old_guid)); global_node_map().erase(old_guid); @@ -117,22 +116,30 @@ refresh_node(sinfg::Node* node, GUID old_guid) /* === M E T H O D S ======================================================= */ +#ifdef _DEBUG +const char * +TimePoint::c_str()const +{ + return get_time().get_string().c_str(); +} +#endif + void TimePoint::absorb(const TimePoint& x) { if(get_guid()==x.get_guid()) return; set_guid(get_guid()^x.get_guid()); - + if(get_after()==INTERPOLATION_NIL) set_after(x.get_after()); if(get_before()==INTERPOLATION_NIL) set_before(x.get_before()); - + if(get_after()!=x.get_after() && x.get_after()!=INTERPOLATION_NIL) set_after(INTERPOLATION_UNDEFINED); if(get_before()!=x.get_before() && x.get_before()!=INTERPOLATION_NIL) - set_before(INTERPOLATION_UNDEFINED); + set_before(INTERPOLATION_UNDEFINED); } TimePointSet::iterator @@ -164,13 +171,14 @@ TimePointSet::insert(const TimePoint& x) Node::Node(): guid_(0), bchanged(true), + time_last_changed_(__sys_clock()), deleting_(false) { #ifndef BE_FRUGAL_WITH_GUIDS guid_.make_unique(); assert(guid_); assert(!global_node_map().count(guid_)); - global_node_map()[guid_]=this; + global_node_map()[guid_]=this; #endif } @@ -201,13 +209,13 @@ Node::get_guid()const #ifdef BE_FRUGAL_WITH_GUIDS if(!guid_) { - guid_.make_unique(); + const_cast(guid_).make_unique(); assert(guid_); assert(!global_node_map().count(guid_)); - global_node_map()[guid_]=this; + global_node_map()[guid_]=const_cast(this); } #endif - + return guid_; } @@ -222,7 +230,7 @@ Node::set_guid(const GUID& x) { guid_=x; assert(!global_node_map().count(guid_)); - global_node_map()[guid_]=this; + global_node_map()[guid_]=this; } else #endif @@ -268,7 +276,7 @@ Node::get_times() const get_times_vfunc(times); bchanged = false; } - + //set the output set... return times; }