X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=synfig-core%2Ftrunk%2Fsrc%2Fsynfig%2Fnode.cpp;h=652410947a8bf0131cd2a7fc8538ba1375ad6ac1;hb=9459638ad6797b8139f1e9f0715c96076dbf0890;hp=912f232b08984ef37145ae67ec037efea93de258;hpb=e8a065f2385c219c511b57dac52786120bfa097d;p=synfig.git diff --git a/synfig-core/trunk/src/synfig/node.cpp b/synfig-core/trunk/src/synfig/node.cpp index 912f232..6524109 100644 --- a/synfig-core/trunk/src/synfig/node.cpp +++ b/synfig-core/trunk/src/synfig/node.cpp @@ -2,10 +2,11 @@ /*! \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-2005 Robert B. Quattlebaum Jr., Adrian Bentley +** Copyright (c) 2007, 2008 Chris Moore ** ** This package is free software; you can redistribute it and/or ** modify it under the terms of the GNU General Public License as @@ -22,8 +23,6 @@ /* === H E A D E R S ======================================================= */ -#define HASH_MAP_H - #ifdef USING_PCH # include "pch.h" #else @@ -32,11 +31,10 @@ #endif #include "node.h" -#include "proto/nodebase.h" +// #include "nodebase.h" // this defines a bunch of sigc::slots that are never used #ifdef HASH_MAP_H #include HASH_MAP_H -using namespace __gnu_cxx; #else #include #endif @@ -83,9 +81,9 @@ 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; +typedef map GlobalNodeMap; #endif static GlobalNodeMap* global_node_map_; @@ -100,7 +98,7 @@ static GlobalNodeMap& global_node_map() /* === P R O C E D U R E S ================================================= */ synfig::Node* -synfig::find_node(const GUID& guid) +synfig::find_node(const synfig::GUID& guid) { if(global_node_map().count(guid)==0) return 0; @@ -108,7 +106,7 @@ synfig::find_node(const GUID& guid) } static void -refresh_node(synfig::Node* node, GUID old_guid) +refresh_node(synfig::Node* node, synfig::GUID old_guid) { assert(global_node_map().count(old_guid)); global_node_map().erase(old_guid); @@ -118,22 +116,30 @@ refresh_node(synfig::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 @@ -165,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 } @@ -196,25 +203,25 @@ Node::changed() //! Gets the GUID for this value node -const GUID& +const synfig::GUID& Node::get_guid()const { #ifdef BE_FRUGAL_WITH_GUIDS if(!guid_) { - const_cast(guid_).make_unique(); + const_cast(guid_).make_unique(); assert(guid_); assert(!global_node_map().count(guid_)); - global_node_map()[guid_]=const_cast(this); + global_node_map()[guid_]=const_cast(this); } #endif - + return guid_; } //! Sets the GUID for this value node void -Node::set_guid(const GUID& x) +Node::set_guid(const synfig::GUID& x) { assert(x); @@ -223,13 +230,13 @@ 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 if(guid_!=x) { - GUID oldguid(guid_); + synfig::GUID oldguid(guid_); guid_=x; refresh_node(this, oldguid); on_guid_changed(oldguid); @@ -269,7 +276,7 @@ Node::get_times() const get_times_vfunc(times); bchanged = false; } - + //set the output set... return times; } @@ -297,7 +304,7 @@ Node::on_changed() } void -Node::on_guid_changed(GUID guid) +Node::on_guid_changed(synfig::GUID guid) { signal_guid_changed()(guid); }