+
+/*virtual*/ Object * Object::GetParent(void)
+{
+ return parent;
+}
+
+
+/*virtual*/ void Object::Add(Object *)
+{
+}
+
+
+// This returns a pointer to the point passed in, if it coincides. Otherwise returns NULL.
+/*virtual*/ Vector * Object::GetPointAt(Vector)
+{
+ return 0;
+}
+
+
+// This is meant for writing object data to a file.
+/*virtual*/ void Object::Enumerate(FILE *)
+{
+}
+
+
+/*virtual*/ Object * Object::Copy(void)
+{
+ return new Object(position, parent);
+}
+
+
+// This returns a point on the object at 'parameter', which is between 0 and 1.
+// Default is to return the object's position.
+/*virtual*/ Vector Object::GetPointAtParameter(double)
+{
+ return position;
+}
+
+
+// Since these functions are pretty much non-object specific, we can implement
+// them here. :-)
+/*virtual*/ void Object::Connect(Object * obj, double parameter)
+{
+ // Check to see if this connection is already in our list...
+ Connection c(obj, parameter);
+ std::vector<Connection>::iterator i;
+
+ for(i=connected.begin(); i!=connected.end(); i++)
+ {
+ // Bail out if this connection is already present...
+ if (*i == c)
+ return;
+ }
+
+ // Connection is a new one, add it in...
+ connected.push_back(c);
+}
+
+
+/*virtual*/ void Object::Disconnect(Object * obj, double parameter)
+{
+ std::vector<Connection>::iterator i;
+
+ for(i=connected.begin(); i!=connected.end(); i++)
+ {
+ if (((*i).object == obj) && ((*i).t == parameter))
+ {
+ connected.erase(i);
+ return;
+ }
+ }
+}
+
+
+/*virtual*/ void Object::DisconnectAll(Object * obj)
+{
+ std::vector<Connection>::iterator i;
+
+ for(i=connected.begin(); i!=connected.end(); )
+ {
+ if ((*i).object == obj)
+ connected.erase(i);
+ else
+ i++;
+ }
+}
+
+
+/*virtual*/ QRectF Object::Extents(void)
+{
+ // Generic object returns an empty rect...
+ return QRectF();
+}
+
+
+#if 0
+/*virtual*/ ObjectType Object::Type(void)
+{
+ return OTObject;
+}
+#endif
+
+
+/*virtual*/ void Object::Translate(Vector amount)
+{
+ position += amount;
+}
+
+
+/*virtual*/ void Object::Rotate(Point, double)
+{
+}
+
+
+/*virtual*/ void Object::Scale(Point, double)
+{
+}
+
+
+/*virtual*/ void Object::Mirror(Point, Point)
+{
+}
+
+
+/*virtual*/ void Object::Save(void)
+{
+ oldPosition = position;
+}
+
+
+/*virtual*/ void Object::Restore(void)
+{
+ position = oldPosition;
+}
+
+