]> Shamusworld >> Repos - architektonas/blobdiff - src/utils.cpp
Added line-to-circle intersection code.
[architektonas] / src / utils.cpp
index 6f3c73ae0941733bbfd8764a8ac0996cab79cbbf..12f7146ad4418ea74d145074847981b562c81651 100644 (file)
@@ -7,7 +7,7 @@
 // JLH = James Hammons <jlhamm@acm.org>
 //
 // Who  When        What
-// ---  ----------  -------------------------------------------------------------
+// ---  ----------  ------------------------------------------------------------
 // JLH  05/01/2015  Created this file
 //
 
@@ -90,6 +90,13 @@ Object * CopyObject(Object * obj)
 }
 
 
+void AddObjectsTo(std::vector<void *> & dest, std::vector<void *> & from)
+{
+       for(std::vector<void *>::iterator i=from.begin(); i!=from.end(); i++)
+               dest.push_back(*i);
+}
+
+
 void ClearSelected(std::vector<void *> & v)
 {
        std::vector<void *>::iterator i;
@@ -99,3 +106,53 @@ void ClearSelected(std::vector<void *> & v)
 }
 
 
+void DeleteSelectedObjects(std::vector<void *> & v)
+{
+       std::vector<void *>::iterator i = v.begin();
+
+       while (i != v.end())
+       {
+               Object * obj = (Object *)(*i);
+
+               if (obj->selected)
+               {
+                       delete obj;
+                       v.erase(i);
+               }
+               else
+                       i++;
+       }
+}
+
+
+void SavePointsFrom(std::vector<void *> & v, std::vector<Object> & save)
+{
+       save.clear();
+       Object o;
+
+       for(std::vector<void *>::iterator i=v.begin(); i!=v.end(); i++)
+       {
+               memcpy(&o, (*i), sizeof(Object));
+               save.push_back(o);
+       }
+}
+
+
+void RestorePointsTo(std::vector<void *> & v, std::vector<Object> & s)
+{
+       std::vector<Object>::iterator i = s.begin();
+       std::vector<void *>::iterator j = v.begin();
+
+       for(; i!=s.end(); i++, j++)
+       {
+               Object * obj2 = (Object *)(*j);
+               obj2->p[0] = (*i).p[0];
+               obj2->p[1] = (*i).p[1];
+               obj2->angle[0] = (*i).angle[0];
+               obj2->angle[1] = (*i).angle[1];
+//we don't do this because we want to keep selected & friends from changing
+//             memcpy(obj2, *j, sizeof(Object));
+       }
+}
+
+