X-Git-Url: http://shamusworld.gotdns.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Fcircle.cpp;h=af8f91f3be2c152bf4c906d4ed3dd767f2e0054c;hb=9d59b5831000704a1ed39c22a6043ba658993159;hp=9233f3e1c281dfb46470d12ba31070a808a6db14;hpb=043ecf4d074909ba2f7f53237962f9eaa72f19c2;p=architektonas diff --git a/src/circle.cpp b/src/circle.cpp index 9233f3e..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,22 +37,30 @@ Circle::~Circle() else painter->SetPen(QPen(Qt::black, 1.0, Qt::SolidLine)); - // Draw handles (if needed) + // 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); + + // & draw handles (if needed) if (state == OSSelected || hitCenter) painter->DrawHandle(position); if (state == OSSelected && draggingEdge && objectWasDragged) painter->DrawHandle(dragPoint); - - // & finally, draw the object! - painter->DrawEllipse(position, radius, radius); } + /*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); +} +