+
+
+/*virtual*/ QRectF Circle::Extents(void)
+{
+ return QRectF(QPointF(position.x - radius, position.y - radius), QPointF(position.x + radius, position.y + radius));
+}
+
+
+void Circle::SaveHitState(void)
+{
+ oldHitCenter = hitCenter;
+ oldHitCircle = hitCircle;
+}
+
+
+bool Circle::HitStateChanged(void)
+{
+ if ((hitCenter != oldHitCenter) || (hitCircle != oldHitCircle))
+ return true;
+
+ return false;
+}
+
+
+/*virtual*/ void Circle::Enumerate(FILE * file)
+{
+ fprintf(file, "CIRCLE %i (%lf,%lf) %lf\n", layer, position.x, position.y, radius);
+}
+
+
+/*virtual*/ Object * Circle::Copy(void)
+{
+#warning "!!! This doesn't take care of attached Dimensions !!!"
+/*
+This is a real problem. While having a pointer in the Dimension to this line's points
+is fast & easy, it creates a huge problem when trying to replicate an object like this.
+
+Maybe a way to fix that then, is to have reference numbers instead of pointers. That
+way, if you copy them, ... you might still have problems. Because you can't be sure if
+a copy will be persistant or not, you then *definitely* do not want them to have the
+same reference number.
+*/
+ return new Circle(position, radius, parent);
+}
+
+
+/*virtual*/ void Circle::Rotate(Point point, double angle)
+{
+ Point c1 = Geometry::RotatePointAroundPoint(position, point, angle);
+ position = c1;
+}
+
+
+/*virtual*/ void Circle::Mirror(Point p1, Point p2)
+{
+ Point c1 = Geometry::MirrorPointAroundLine(position, p1, p2);
+// return new Circle(c1, radius);
+ position = c1;
+}
+
+
+/*virtual*/ void Circle::Save(void)
+{
+ Object::Save();
+ oldRadius2 = radius;
+}
+
+
+/*virtual*/ void Circle::Restore(void)
+{
+ Object::Restore();
+ radius = oldRadius2;
+}
+