X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=synfig-studio%2Ftrunk%2Fsrc%2Fsynfigapp%2Ftimegather.h;h=a878d141e426651a5c8235d14f518b685e652f3a;hb=334e15ce6c4d9b1f30a168a55e7ef4d31320d568;hp=5db4afd772b4211f89059a5f2ac888773b016672;hpb=837b63e9fb829d66d43f4f169861f8979f76820d;p=synfig.git diff --git a/synfig-studio/trunk/src/synfigapp/timegather.h b/synfig-studio/trunk/src/synfigapp/timegather.h index 5db4afd..a878d14 100644 --- a/synfig-studio/trunk/src/synfigapp/timegather.h +++ b/synfig-studio/trunk/src/synfigapp/timegather.h @@ -6,6 +6,7 @@ ** ** \legal ** Copyright (c) 2004 Adrian Bentley +** Copyright (c) 2007 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 @@ -37,10 +38,13 @@ /* === C L A S S E S & S T R U C T S ======================================= */ +namespace synfig { + class Time; +} + namespace synfigapp { class ValueDesc; -class synfig::Time; struct ValueBaseTimeInfo { @@ -92,40 +96,36 @@ struct timepoints_ref //assumes they're sorted... (incremental advance) //checks the intersection of the two sets... might be something better in the stl template < typename I1, typename I2 > -bool check_intersect(I1 b1, I1 end1, I2 b2, I2 end2) +bool check_intersect(I1 b1, I1 end1, I2 b2, I2 end2, synfig::Time time_offset = 0) { if(b1 == end1 || b2 == end2) return false; for(; b1 != end1 && b2 != end2;) { - if(*b1 < *b2) ++b1; - else if(*b2 < *b1) ++b2; + if(*b1 < *b2 + time_offset) ++b1; + else if(*b2 + time_offset < *b1) ++b2; else { - assert(*b1 == *b2); + assert(*b1 == *b2 + time_offset); return true; } } return false; } -//pointer kind of a hack, gets the accurate times from a value desc -// (deals with dynamic list member correctly... i.e. gathers activepoints) -const synfig::Node::time_set *get_times_from_vdesc(const synfigapp::ValueDesc &v); - -//get's the closest time inside the set +//gets the closest time inside the set bool get_closest_time(const synfig::Node::time_set &tset, const synfig::Time &t, const synfig::Time &range, synfig::Time &out); //recursion functions based on time restrictions (can be expanded later)... //builds a list of relevant waypoints and activepoints inside the timepoints_ref structure void recurse_valuedesc(synfigapp::ValueDesc valdesc, const std::set &tlist, - timepoints_ref &vals); + timepoints_ref &vals, synfig::Time time = 0); void recurse_layer(synfig::Layer::Handle layer, const std::set &tlist, - timepoints_ref &vals); + timepoints_ref &vals, synfig::Time time = 0); void recurse_canvas(synfig::Canvas::Handle canvas, const std::set &tlist, - timepoints_ref &vals); + timepoints_ref &vals, synfig::Time time = 0);