X-Git-Url: http://shamusworld.gotdns.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Fcircle.cpp;h=77ea95a6290e5ca87dbe8ba9477bac561fce7bef;hb=89b8b0c60579d8ef0cf9a13521e7bf7c7864883f;hp=d6ed3064b175b7fd2fe2310d8a8da0a3bce7b2df;hpb=ba6723b86d8dd67ebc7b11b245de3e7ff64f06b1;p=architektonas diff --git a/src/circle.cpp b/src/circle.cpp index d6ed306..77ea95a 100644 --- a/src/circle.cpp +++ b/src/circle.cpp @@ -87,6 +87,17 @@ Circle::~Circle() /*virtual*/ void Circle::PointerMoved(Vector point) { + if (selectionInProgress) + { + // Check for whether or not the rect contains this circle + if (selection.normalized().contains(Extents())) + state = OSSelected; + else + state = OSInactive; + + return; + } + // Hit test tells us what we hit (if anything) through boolean variables. It // also tells us whether or not the state changed. needUpdate = HitTest(point); @@ -115,21 +126,7 @@ Circle::~Circle() } -/*virtual*/ QRectF Circle::Extents(void) -{ - return QRectF(QPointF(position.x - radius, position.y - radius), QPointF(position.x + radius, position.y + radius)); -} - - -#if 0 -/*virtual*/ ObjectType Circle::Type(void) -{ - return OTCircle; -} -#endif - - -bool Circle::HitTest(Point point) +/*virtual*/ bool Circle::HitTest(Point point) { SaveState(); hitCenter = hitCircle = false; @@ -162,6 +159,12 @@ pointed at length with our on screen length. } +/*virtual*/ QRectF Circle::Extents(void) +{ + return QRectF(QPointF(position.x - radius, position.y - radius), QPointF(position.x + radius, position.y + radius)); +} + + void Circle::SaveState(void) { oldHitCenter = hitCenter; @@ -183,3 +186,19 @@ bool Circle::StateChanged(void) fprintf(file, "CIRCLE (%lf,%lf) %lf\n", 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); +} +