X-Git-Url: http://shamusworld.gotdns.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Fcircle.cpp;h=af8f91f3be2c152bf4c906d4ed3dd767f2e0054c;hb=9d59b5831000704a1ed39c22a6043ba658993159;hp=8e5f6cddc7fc3937e116d25340e8af1ffc4738e0;hpb=7b7c8ec7d7f5379e09a8b7392f465f41639b0c79;p=architektonas diff --git a/src/circle.cpp b/src/circle.cpp index 8e5f6cd..af8f91f 100644 --- a/src/circle.cpp +++ b/src/circle.cpp @@ -24,10 +24,12 @@ Circle::Circle(Vector p1, double r, Object * p/*= NULL*/): Object(p1, p), radius { } + Circle::~Circle() { } + /*virtual*/ void Circle::Draw(Painter * painter) { if (state == OSSelected || hitCircle || hitCenter) @@ -52,11 +54,13 @@ Circle::~Circle() painter->DrawHandle(dragPoint); } + /*virtual*/ Vector Circle::Center(void) { return position; } + /*virtual*/ bool Circle::Collided(Vector point) { // We can assume this, since this is a mouse down event here. @@ -79,6 +83,7 @@ Circle::~Circle() return false; } + /*virtual*/ void Circle::PointerMoved(Vector point) { // Hit test tells us what we hit (if anything) through boolean variables. It @@ -95,6 +100,7 @@ Circle::~Circle() dragPoint = point; } + /*virtual*/ void Circle::PointerReleased(void) { // Mouse went up, so our dragging is done (if any *was* done, that is) @@ -107,6 +113,7 @@ Circle::~Circle() state = oldState; } + bool Circle::HitTest(Point point) { SaveState(); @@ -129,12 +136,14 @@ since we generally *don't* want those to scale with the zoom level. ;-) return StateChanged(); } + void Circle::SaveState(void) { oldHitCenter = hitCenter; oldHitCircle = hitCircle; } + bool Circle::StateChanged(void) { if ((hitCenter != oldHitCenter) || (hitCircle != oldHitCircle)) @@ -142,3 +151,10 @@ bool Circle::StateChanged(void) return false; } + + +/*virtual*/ void Circle::Enumerate(FILE * file) +{ + fprintf(file, "CIRCLE (%lf,%lf) %lf\n", position.x, position.y, radius); +} +