]> Shamusworld >> Repos - architektonas/blobdiff - src/arc.cpp
Fixed incorrect rotation in Arc object.
[architektonas] / src / arc.cpp
index e4a6b6f4788de7b89f1196fa75a8018217fad421..d4d747b7df80d1a3a7dd7cb8c4e1010609e82b7a 100644 (file)
@@ -216,7 +216,7 @@ so let's do like this:
 }
 
 
-/*virtual*/ void Arc::PointerMoved(Vector point)
+/*virtual*/ bool Arc::PointerMoved(Vector point)
 {
 // one other thing to check here for is if a modifier key is being held as well,
 // to allow for multi-selection
@@ -229,7 +229,7 @@ so let's do like this:
                else
                        state = OSInactive;
 
-               return;
+               return false;
        }
 
        // The TLC will send these messages if the object is selected but not clicked on.
@@ -239,7 +239,7 @@ so let's do like this:
 //     objectWasDragged = true;
 //     needUpdate = false;
        SaveHitState();
-       HitTest(point);
+       bool hovered = HitTest(point);
        needUpdate = HitStateChanged();
        objectWasDragged = (draggingCenter | draggingEdge | draggingRotate | draggingSpan);
 
@@ -271,6 +271,7 @@ so let's do like this:
        // Why save this? For rendering code?
        oldPoint = point;
 //     needUpdate = true;
+       return hovered;
 }
 
 
@@ -302,7 +303,8 @@ This vector is already unitized, so all we need to do to get our point is to
 multiply it by radius (to get the length correct) and add it to the center
 point (to get the correct position).
 */
-       Vector v1(point, position);     // Head minus tail (vector points at "point")
+//     Vector v1(point, position);     // Head minus tail (vector points at "point")
+       Vector v1(position, point);     // Head minus tail (vector points at "point")
        Point p1(cos(startAngle), sin(startAngle));
        Point p2(cos(startAngle + angleSpan), sin(startAngle + angleSpan));
        Vector handle2 = (p1 * radius) + position;
@@ -464,7 +466,7 @@ same reference number.
        Point c2 = Geometry::RotatePointAroundPoint(angleStartPoint, point, angle);
 
        position = c1;
-       startAngle = Vector(c2, c1).Angle();
+       startAngle = Vector(c1, c2).Angle();
 }