X-Git-Url: http://shamusworld.gotdns.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Fcircle.cpp;h=af8f91f3be2c152bf4c906d4ed3dd767f2e0054c;hb=9d59b5831000704a1ed39c22a6043ba658993159;hp=5750b1f0ecabb66ac2929f68cb4b6543ea035bbf;hpb=9d5d4488ba75c407709556a7ed56b8d16e21834e;p=architektonas diff --git a/src/circle.cpp b/src/circle.cpp index 5750b1f..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) @@ -35,6 +37,12 @@ Circle::~Circle() else painter->SetPen(QPen(Qt::black, 1.0, Qt::SolidLine)); + // Hatch/Fill... +// QBrush brush(Qt::DiagCrossPattern); +// brush.setColor(QColor(255, 255, 0)); +// painter->SetBrush(brush); + painter->SetBrush(QBrush(Qt::NoBrush)); + // Draw the object... painter->DrawEllipse(position, radius, radius); @@ -46,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. @@ -73,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 @@ -89,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) @@ -101,6 +113,7 @@ Circle::~Circle() state = oldState; } + bool Circle::HitTest(Point point) { SaveState(); @@ -123,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)) @@ -136,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); +} +